Sei sulla pagina 1di 42

My Girl Travel App

CHAPTER 1- INTRODUCTION
Now a days, people are more inclined towards owning a smart phone. In such a scenario, mobile
application development is one of most sought after platforms. Android is one of the largest
platforms that run in most smart phones from manufacturers like Samsung, HTC. In today’s
scenario, people are using taxi booking service to commute from one location to other There are
some mobile applications present in Android and iOS which serves this purpose. Some apps such
as CabGrab and CabSense start with showing one’s current location which wastes certain
amount of useful time. The user might not want a cab from his current location. An app like
myTaxi does not mention the Drop off address. The passenger is in a dilemma if the cab would
take him/her to the requested place once he is picked up. However, the app does provide a lot of
options like saving his preferences and card details. 13Cabs is a good application which provides
many facilities like wheel chair/ scooter booking, finding points of interest and is not restricted to
just cabs. However, the app does not support horizontal orientation. TaxiMagic[5] app lists
the cab services along with their phone numbers around one’s place and the best way to
reserve one is to call them, which everyone wants to avoid. On the funny side, Taxi Hold'em[6]
is one application which makes a whistling sound when launched. Apparently, the app is to hail a
cab with a whistle on a busy road. Taxi Mojo[7] is again an app that asks the user to call the cab
service to book a cab.

My Girl Travel App is an Android phone cab reservation application which targets the residents
of the state of Uttar Pradesh. While some cab services boast about their cab being just a call
away, some other taxi services boast about the punctuality of their service. Unfortunately, at the
end of the day, the passengers are just tired of waiting at different locations for the cab that they
have just reserved to pick them up and take them home. What one needs is a reliable mobile
application which reserves a cab for him from a specific place at a certain time and which tells its
users the status of the cab in order to keep them from waiting for long hours. My Girl Travel App
serves just that purpose.

My Girl Travel App allows the users to get a cab from any location in the state of Uttar Pradesh,
even if they seem to be lost. One does not have to spend hours on phone with the cab services to
tell them where exactly one is located currently. The Global Positioning System takes care of the

CSE DEPARTMENT,SRMGPC,Lucknow. Page 1


My Girl Travel App

current location for the users.Once a user reserves a cab, she is acknowledged with a
confirmation number which she can further use to check the cab status. The user can also check
all the trips that she has made so far, from the application.

In addition to the above mentioned features, the one feature that really sets apart this application
from other cab booking services is that this cab service is designed especially for females .
Crimes against women is on a meteoric rise from the past 4 to 5 years. A big percentage of these
crimes are committed in the cabs by the cab drivers themselves.

In order to safeguard women and provide them a safe, smooth and a hassle free ride, this service
allows only females as both the taxi drivers and the passengers. The driver has to register with
her valid PAN card that verifies her identity. Only after proper verification, will the driver be
allowed to confirm a pickup request. Same goes for the passengers. Any one will be allowed to
book a ride only after their registration is complete and authentic.

ASSUMPTIONS

To implement My Girl Travel App it is necessary to make some assumptions on which running
application will be based. The assumptions concerns factors like hardware and software
limitations used to design the system.

 Matching a taxi for a customer is performed by finding the nearest, available taxi;

 Both taxis and customers act on the area of a city – it influences a database structure,
which would have to be spatial if the area extends across the whole world. It would
significantly increase complexity of the database;

 To be able to use a system the user must log in to the system using login and password.
Login must be unique for each user (customers and taxi drivers);

 One application services both a customer and a taxi driver – the application provides
functionalities for each side separately according to used login;

 Driver cannot get more than one order proposition at the same time.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 2


My Girl Travel App

CHAPTER-2 LITERATURE REVIEW

CONCEPT OF TRAVEL APPS –

A travel app provides us a hassle free way of booking cabs and managing rides whilst on the

move. Cancelling a booking, real time tracking of the cab, reviewing the ride, searching for

location-based emergency services, flexibility in payment options, saving the travel history of the

user are the few features provided by these travel apps. According to AYTM, 16% to 25%[13] of

survey respondents said that they’ve used multiple mobile travel apps at some point and 22%

have used one travel app. This has encouraged businesses to dedicate at least some of their

resources to implement mobile solutions.

MECHANISMS OF OPERATION OF TRAVEL APPS –

At its core, Travel app seeks to match passengers to drivers. The platform is able to track a user’s
GPS coordinates, even if the user does not know where she is, and within minutes, a Travel app
driver will arrive. The user is able to track the arrival of her ride, and receives a text message
confirming when the Travel app driver is arriving. From the driver’s end, the driver is able to hit
a button on his own app that says “Arriving Now” which sends the text message. The driver is
never given the user’s phone number directly, but is able to contact the user if he is unable to
find the user.

The Passenger Application Module

No cash is exchanged when using Travel app since signing up for an account requires providing
credit card information. After the ride, the user is charged electronically and a receipt is
immediately emailed, providing details of the trip. The user can then rate the driver (and the
driver can also rate the user) and check a map of the route taken. The company providing these
services “pushes the limits of the transportation industry to create a simple, more efficient, and

CSE DEPARTMENT,SRMGPC,Lucknow. Page 3


My Girl Travel App

more enjoyable car service experience. For drivers, Travel app is a revenue stream, allowing
professional drivers to make more money by turning downtime into profits.”

Travel app’s platform uses algorithms and “heat maps” to estimate how many potential users
may be in an area, which then matches with the number of drivers present in a city. Travel app is
able to analyze important statistics like the number of times the smartphone application is opened
to gauge supply and demand for taxis.

The Driver Application Module

Unlike the taxi industry, Travel app does not employ or license its drivers, but rather views them
as independent contractors. Travel app drivers do not have traditional liability insurance like taxi
drivers. In fact, Travel app drivers receive ratings of users and may receive their photographs
(users choose whether or not to upload a photograph of themselves to their account). However,
where regulations exist against taxi cab drivers discriminating against riders, they are frequently
flouted.

ROLE OF ANDROID IN DESIGN OF TRAVEL APP –

The important features that android helps with , in the travel app development is mentioned
below:

FRONTEND:-

● The first feature that comes to everyone’s mind is, real time tracking and notifications.
Building which requires optimising the code for performance, socket programming and
communicating with various Google Maps APIs.

● The app should also allows users to register using the mobile. Backed with the proper security
setup, the details a user enters will then be stored on the database designed for this application.

● To request a cab, the app utilizes Google Maps to allow users to drop a pin upon the map. As
the passenger confirms a cab request, a notification is sent out to the closest drivers. The
distance, ETA can be easily returned using Google Map APIs.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 4


My Girl Travel App

● When a cab is booked, a push notification needs to be sent out. The app’s server component
can either be custom created or can be implemented using 3rd party providers. For an app MVP
we prefer Amazon’s SNS, as it is lightweight and costs little to nothing to the startup.

● Sending Push notification also requires SSL connection, which may feel be the hardest part of
implementation.

● In order to facilitates payments via application, Paypal provides SDKs for both iOS and
Android. The PayPal Mobile SDKs enable native apps to easily accept PayPal and credit card
payments. The native libraries of the PayPal Mobile SDKs enable one to build fast, responsive
apps for the Single payments and Future payments.

BUILDING REALTIME LOCATION, DISPLAY AND TRACKING:-

To build so functionality, one needs to focus more on data extraction and optimization.

● The app frequently needs to communicate ETAs, GPS location, calculate the shortest
distances, and other information that may be required, for this it utilizes following APIs to
collect information: Google maps direction API, Distance matrix API, Geo-fencing, Google
Place API, Google Maps Geo encoding API.

● The most important part of building a real time experiences is a half-duplex-socket that could
push real time information between your servers and mobile apps.
The reason why these protocols are so important is because they help reduce the communication
overhead. In absence of sockets, a port has to be opened and closed whenever server receives a
request. Also, HTTP protocols were built to pull data, and if a server wants to push data it has to
poll.

SCHEDULING AND BOOKING RIDES:-

The ride booking or scheduling mechanism can work in two ways:

1. When an user requests a ride, the request goes out to the nearest highest rated driver. The
driver then receives a notification upon which he can choose to respond or ignore. If he chooses
to ignore, the request will go to the next nearest driver.
OR

CSE DEPARTMENT,SRMGPC,Lucknow. Page 5


My Girl Travel App

2. When an user requests a ride, the request will go out to all the drivers in the proximity.
Whoever accept first will be awarded the ride.

A simple scheduling algorithm that has been well optimized for such an app looks something
like this:

Formula: 0.7*driver’s proximity + 0.9*driver’s rating + 0.7*UPR + 0.4* route traffic[14]

PROJECTED BENEFITS OF TRAVEL APP USING ANDROID-

As times are evolving, we’re starting to see new taxi services using innovative methods, to make
the whole experience much more convenient and enjoyable. Whether people want a ride home
from office at 4am in the morning, or they want shuttling to the airport at 9pm at night, they can
easily book it through an android app on their smartphone. They are given a random driver that is
currently located nearby, and are provided with an estimation on what the final price will be. The
features of travel app using android can be mentioned as follows:-

1. Travel planning--Any travel planner app may include almost all options that are described
below. With this type of app the user can search for destinations and itineraries, set up schedules
and store e-tickets and QR codes. The good example is a Tripit app. Of course, the user can use
some different apps for every purpose (Passbook for tickets, Foursquare for advice, etc.), but it is
way more convenient to have one travel organizer app for all those objectives.

2. Navigation & geolocation--Being at the unfamiliar area is more comfortable when you know
where you are now and how to get to the principal place. The important aspect of the travel map
app is the ability to work offline. Native app development (the custom application for every
operating system) ensures your map or itinerary app with correct performance even without wi-
fi. But let`s be honest, every app for tourism needs a geolocation feature. There are some useful
tools that your travel app development company most likely going to use. For instance, Google
Maps SDK for Android provide the applications with the map itself, Google Places and
Facebook Places APIs give access to a massive database of services and sightseeing, etc.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 6


My Girl Travel App

3.Schedule Trip--Schedule trip in advance as per preferred time, data, and convenience like
Uber app. Allow riders to book a ride in advance so that they don’t have to wait.

4.Preferred Driver--Allow riders to mark any driver as a preferred driver so that next time, the
request will go to the him if he is in the same vicinity.

5.Payment--There are two different options for riders to make payment: credit/debit card and
cash. Allow riders to make payment of the ride as per the convenience.

6.Trip History--Check complete information about trips that are completed, upcoming, and
cancelled. Even, check the pick-up and drop-off locations and fare for the specified trip.

7.Driver review--Just like Lyft taxi app, allow riders to check the reviews and feedbacks of all
the drivers. Select a right driver for the journey by considering their reviews.

Figure 2.1 : Working of Travel App

CSE DEPARTMENT,SRMGPC,Lucknow. Page 7


My Girl Travel App

LIST OF TRAVEL APPS PREVALENT IN MARKET-


S.NO NAME OF THE YEAR TOOL NUMBER OF USERS PUBLIC
APP (LOCATION) OPINION

1 Uber 2009 Android/ ios 75 million (Worldwide)[1] Success


2 Ola 2010 Android/ ios 125 million (Worldwide)[2] Success
3 Lyft 2012 Android/ ios 23 million (Worldwide)[3] Success
4 Grab 2012 Android/ios 36 million (Worldwide)[4] Success
5 Tapzo 2015 Android/ ios 5 million (Worldwide)[6] Failure
6 Mytaxi 2009 Android/ios/Windows 10 million ( Europe) Success
/Blackberry

7 Cabto Android India Failure


8 Meru Cabs 2007 Android Mumbai, Delhi, Bangalore,Pune Success
9 appTaxi Android Italy[9] Failure
10 One Way Cab 2012 Android 68000+( India) Success
11 13cabs 2013 Android/ios Australia Success
12 Amy Cab 2017 Android India Success
13 Qatar Taxi 2018 Android/ios Qatar Success
14 Rapido:Bike Taxi 2015 Android/ios 1million (India) Success
15 Voilacabs 2015 Android/ios Bangalore,India Success
16 Teo Taxi 2016 Android/ios Montreal,Canada Success
17 DG Cars 2016 Android/ios 7million (Nottingham,UK)[5] Success
18 Kakao T 2017 Android/ios South Korea Success
19 Rydo 2016 Android/ios Australia[10] Success
20 Taxify 2013 Android/ios 10 million (Worldwide) Success
21 BiTaksi 2013 Android/ios Istanbul and Ankara[7] Success
22 Unicab 2013 Android/ios South Africa Success
23 Royal Cab 2017 Android Bangalore,India Success
24 Yellow cabs 2015 Android/ios United States[8] Failure
25 Z Cars 2015 Ios Worldwide Success

Table 2.1 : List of Travel Apps prevalent in the market

CSE DEPARTMENT,SRMGPC,Lucknow. Page 8


My Girl Travel App

PROJECTED REASONS FOR FAILURE OF TRAVEL APPS:-

The performance of any travel app depends on many factors that can range from competition
to marketing budgets to sheer luck. But beyond these factors, poor research and poor poor
research and poor execution are common reasons why appsfail when launched.

1) Lack Of Originality

The truth is that the app stores are oversaturated with the same kind of travel apps. Successful
apps like Uber and Airbnb both have a strong value proposition. Competitive research will
help reveal your competition’s strengths and weaknesses in order to define your own
competitive advantage.

2) Ignoring Platforms

Android and iOS (as well as other platforms) have very intuitive interface guidelines. They
operate in different ways, using different gestures and common buttons or prompts placed in
different areas.For example, Android users are accustomed to a back button that is built into
the hardware. Apple devices don’t have this. Failing to account for platform-specific nuances
like this can severely affect user experience.When apps don’t perform well across the scope
of devices, networks, and operating systems, it becomes a major problem. Users get
frustrated when an app works on the iPhone, but not on their iPad, for example.When
developing for multiple platforms, it’s important to build with platform differences in mind.
Apps that don’t do this correctly will result in frustrated end users, and given that the average
user will decide in less than a minute whether or not your app is worth using, a little
frustration can mean a whole lot of failure.

3)Poor User Experience

If a user struggles to perform basic functions on your app and can’t figure out core
functionalities easily, the result is very poor usability. Some other examples of poor user
experience include. App performance issues (slow or lagging), long load times, long
registration processes. Features that are difficult to access. One thing to pay particular
attention to is platform-specific UI/UX best practices.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 9


My Girl Travel App

RECENT DEVELOPMENTS:

The existing travel apps have proved that so far Android has been the most suitable
mobile operating system in the design of such applications. It has successfully integrated
geo location for real time tracking of the cab, payment gateways for electronic
transactions, estimated time of arrival(ETA) of the cab, Google Maps API for displaying
a detailed map of the user’s location
The travel App should have a well-defined user guide that covers each and every aspect of
the cab booking process, making it easy for first time users to perform core tasks. Before
using the application, it is mandatory to have a registered account with the platform. The
overall process should be minimalistic keeping in mind the mobile nature, and requests
only most critical information such as – Name, Email, Password, Mobile number. For
booking a cab the app should have a search bar to enter a desired pickup location, GPS
feature to detect the current location, a detailed map to see their selected location.
User can also select and save their favorite location which can be accessed easily . After
selecting the mode of transportation, user can choose between taking the ride right away or
at a later time. If the user chooses to book a ride right away, then, they are shown a
confirmation screen which also has detailed information regarding the rate card and ride
estimate.
Following are the recent features that are incorporated in the cab booking apps nowadays:

My Rides--This feature shows the detailed list of all the bookings undertaken listing
upcoming and well as completed rides. This helps in keeping track of all the rides booked
by the user.
Invite and Earn--The travel app can offer a referral program under which riders can
invite their friends using a referral code and earn money. Users can send an invitation by
SMS, email and also through social networking platforms like Facebook and Twitter.
Emergency Contact--This feature will prove to be the most beneficial for women. The
user can add any contact as their emergency contact number and can also opt in to share
information with that number every time a ride is taken. This ensures the safety of the
passenger and provides a smooth and hassle-free ride.
Rate Card--A well detailed rate card to the consumers will help them to analyze the
standard rates chargeable to them with respect to the destination as well as mode of
transportation.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 10


My Girl Travel App

CHAPTER-3 PROPOSED METHODOLOGY

FORMULATION AND PRESENTATION OF THE PROBLEM

 PROJECT OBJECTIVES
My Girl Travel App is an Android Phone Cab Reservation application. The main objective
of the project is to provide an easy to use and handy mobile application to the
android users which enables them to reserve a cab from one location to any location
in the state of Uttar Pradesh. The application generated Confirmation Number makes the
application more reliable. The users can keep track of their reservations, the amount they
have spent for each ride and the cab's current status. Additionally, the user can also see
where she is currently located, see a route of the cab from the source to the destination
point, set reminders for a future pickup, send confirmation details to her email id and
send an SMS to her mobile phone.

The aim of this work is to design a system servicing orders for a taxi company with support
for mobile devices working on Android OS. The designed system consists of:

 a client mobile application for customers;


 a mobile application for taxi drivers
The main objective of the My Girl Travel App application is to provide an easy to use
interface for scheduling a pickup by the user and to view all the pickups that the user made
using the application. Additionally, the other main features of the app include:

 Obtaining the current location


 Showing the estimated duration, distance of the ride
 Showing the route map
 Send details to Email
 Check cab status
 Cancelling a cab

The Android application is developed using Android Studio.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 11


My Girl Travel App

SOLUTION APPROACH

 SYSTEM ARCHITECTURE
The above diagram shows the major components of the Android operating system. In the
Android architecture above, it can be observed that the software stack contains the
java applications above the Linux kernel. The platform adopts a replace and reuse
methodology, which allows the user customizability. Android is a software stack that
includes an operating system, middleware and a set of key applications.

Figure 3.1 : Android Architecture

The application runs on the Android platform present in the Android framework of the
Android device. The application interacts via the touch input of the user. When the user
touches the screen, the respective action takes place depending on where the user touches
and the user is given the next screen to be acted upon or provides any other information
to the user. The application interacts with the web service which is installed in the
mobile device currently as an administrator application. Depending upon the user
input, the availability of the cabs in checked from the administrator application. Once a
cab is available, a Confirmation Transaction is generated which is stored in the central

CSE DEPARTMENT,SRMGPC,Lucknow. Page 12


My Girl Travel App

database. The generated confirmation transactions are also stored in the local device. The
user can see only the transactions which he has generated from that device.
SQLite Database is used to store the transactions. Content Providers are used to store the
main central database. Content providers allow the data to be shared among other
applications. The local data is stored using the Data Access Objects of the SQLite.

Figure 3.2 : System Architecture

 SYSTEM DESIGN
After the requirements are gathered, the design of the system is created using UML, Unified
Modeling Language. The UML is used to visualize and document the artifacts of the system
under development. The two major diagrams of the UML are Use Case diagram and Class
diagram. In these diagrams, the major entities of the system are identified and the relation
between these entities is highlighted.

 USE CASE DIAGRAM


A Use Case diagram defines the interactions between the user and the system in order to
achieve the desired functionality of the system. This diagram identifies the sequence of
actions the user performs.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 13


My Girl Travel App

The Passenger can either schedule a pickup or view all the pickups history that he has made
through the application. After the pickup details like time, pickup place, date, and drop off
place are entered, the user is directed to the next page which shows the route the cab takes.
Then, the user is asked for his personal information like name, email id, phone number from
where the information is redirected to the Payment module. In this page, the user either pays
through the application or can select the option of paying the fare to the cab driver. If a cab is
available, the user is given a confirmation number through which he can either check cab
status or set reminder or send confirmation details to this phone or email. The user can also
view his pickup history from the home page, from where he can either check cab status or
cancel a cab.

Figure 3.3 : Use Case Diagram

CSE DEPARTMENT,SRMGPC,Lucknow. Page 14


My Girl Travel App

 ACTIVITY DIAGRAM

Figure 3.4: Activity Diagram to handle a new order

CSE DEPARTMENT,SRMGPC,Lucknow. Page 15


My Girl Travel App

 STRUCTURE
Android application structure consists of three main components: the descriptor, application
code and resources. This division provides a separate resource from application logic, which
significantly facilitates software creation and development. The most important components
of the Android project are the following:

 AndroidManifest.xml - application descriptor file. It defines all intentions and


activities, determines requirements and application privileges, as well as the ability to
access other applications using the program. The file is required for proper operation
of the application .
 src - the folder where the application code is stored. It contains all classes from which
the application is composed.
 res - the folder that contains the application resources. Includes sub-directories:
 drawable - the folder containing the program graphics. It comes in three versions,
suitable for different sizes of screen on which the application runs.
 layout - the folder that stores the application view files saved using XML (Extensible
Markup Language)
 values - stored here are other application resources, such as strings, colours. They are
written using XML files .

From technical point of view, customer application and application for taxi driver are
basically the same program while user sees it as two independent ones.

There are two basic modules of the My Girl Travel App :

 Passenger module
 User registration and verification
 Pickup/Drop location based on auto complete Google address
 Automatic fare calculation based on distance
 Option to cancel a booking
 Track driver till she gets to your pickup location after confirmation
 Driver details and contact details after confirmation
 View and edit profile details
 Driver Module
 Driver registration and verification

CSE DEPARTMENT,SRMGPC,Lucknow. Page 16


My Girl Travel App

 Receive notifications when new ride requests from passengers


 Map view of the route
 Live GPS navigation to passenger pickup location
 Accept or Reject a new request
 View Passenger details before accepting a request
 View and edit profile details

 BLOCK DIAGRAM

Figure 3.5 : Block Diagram

CSE DEPARTMENT,SRMGPC,Lucknow. Page 17


My Girl Travel App

SOFTWARE/HARDWARE REQUIREMENTS AND


SPECIFICATIONS

 HARDWARE REQUIREMENTS

For the development of this project, the following hardware requirements have been
considered.

Development end:

 Processor : Pentium IV or higher


 RAM : 4 GB (minimum), 8 GB recommended; plus 1 GB for the Android Emulator
 Space on disk : 2 GB (minimum), 4 GB recommended

Application end:

 Device : Android phone with version 6.0.1 or lower


 Space to execute : 20 MB
 SOFTWARE REQUIREMENTS

For the development of this project, the following software requirements have been
considered.

Development end:

 Operating System : Windows 7/8/10 (32 or 64 bit)


 Language : Android SDK, Java
 Database : SQLite / Firebase
 Technologies : Java, SQLite, Android, XML, Google Maps API
 Debugger : Android DDMS (Dalvik Debug Monitor Service), Android mobile device

Application end:

 Framework : Android Studio Version 3.0.1


 Network : Mobile network and Internet (cellular or Wi-Fi)

CSE DEPARTMENT,SRMGPC,Lucknow. Page 18


My Girl Travel App

IMPLEMENTATION (DESGIN & CODING)

ROLE OF ANDROID IN DESIGN OF TRAVEL APP –

The important features that android helps with , in the travel app development is mentioned
below:

 FRONTEND:-

● The first feature that comes to everyone’s mind is, real time tracking and notifications.
Building which requires optimising the code for performance, socket programming and
communicating with various Google Maps APIs.

● The app should also allows users to register using the mobile. Backed with the proper
security setup, the details a user enters will then be stored on the database designed for this
application.

● To request a cab, the app utilizes Google Maps to allow users to drop a pin upon the map.
As the passenger confirms a cab request, a notification is sent out to the closest drivers. The
distance, ETA can be easily returned using Google Map APIs.

● When a cab is booked, a push notification needs to be sent out. The app’s server
component can either be custom created or can be implemented using 3rd party providers.
For an app MVP we prefer Amazon’s SNS, as it is lightweight and costs little to nothing to
the startup.

● Sending Push notification also requires SSL connection, which may feel be the hardest part
of implementation.

● In order to facilitates payments via application, Paypal provides SDKs for both iOS and
Android. The PayPal Mobile SDKs enable native apps to easily accept PayPal and credit
card payments. The native libraries of the PayPal Mobile SDKs enable one to build fast,
responsive apps for the Single payments and Future payments.

 BUILDING REALTIME LOCATION, DISPLAY AND TRACKING:-

To build so functionality, one needs to focus more on data extraction and optimization.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 19


My Girl Travel App

● The app frequently needs to communicate ETAs, GPS location, calculate the shortest
distances, and other information that may be required, for this it utilizes following APIs to
collect information: Google maps direction API, Distance matrix API, Geo-fencing, Google
Place API, Google Maps Geo encoding API.

● The most important part of building a real time experiences is a half-duplex-socket that
could push real time information between your servers and mobile apps.
The reason why these protocols are so important is because they help reduce the
communication overhead. In absence of sockets, a port has to be opened and closed
whenever server receives a request. Also, HTTP protocols were built to pull data, and if a
server wants to push data it has to poll.

 SCHEDULING AND BOOKING RIDES:-

The ride booking or scheduling mechanism can work in two ways:

1. When an user requests a ride, the request goes out to the nearest highest rated driver. The
driver then receives a notification upon which he can choose to respond or ignore. If he
chooses to ignore, the request will go to the next nearest driver.
OR
2. When an user requests a ride, the request will go out to all the drivers in the proximity.
Whoever accept first will be awarded the ride.

 MODULES:-

JAVA CLASSES:-

 CustomerLoginActivity:-
It contains the functionality of logging in the customer. If the customer is already
registered, she needs to provide her email and password and click on the login button.
It then checks her credentials by matching the details present in the realtime database
and the customer is logged in successfully. If either the email or the password
provided by the customer is incorrect, it displays the message as ‘Login
Unsuccessful’. If the customer is not registered, she can do that by clicking on ‘Don’t
have an account?’ and then providing the details as ADHAAR ID , email and
password. There are two ADHAAR IDs that are already stored using HashMap. One
is for the customer and the other is for the driver. On entering the ADHAAR ID, it

CSE DEPARTMENT,SRMGPC,Lucknow. Page 20


My Girl Travel App

matches the key that is the ADHAAR ID, with the value which can be either male or
female. If the person is female, only then it proceeds to register the customer. If male,
it displays the message as ‘Not A Female’.

 DriverLoginActivity:-
It contains the functionality of logging in the driver. If the driver is already registered,
she needs to provide her email and password and click on the login button. It then
checks her credentials by matching the details present in the realtime database and the
driver is logged in successfully. If either the email or the password provided by the
driver is incorrect, it displays the message as ‘Login Unsuccessful’. If the driver is not
registered, she can do that by clicking on ‘Don’t have an account?’ and then providing
the details as ADHAAR ID , email and password. There are two ADHAAR IDs that
are already stored using HashMap. One is for the customer and the other is for the
driver. On entering the ADHAAR ID, it matches the key that is the ADHAAR ID,
with the value which can be either male or female. If the person is female, only then it
proceeds to register the driver. If male, it displays the message as ‘Not A Female’.

 CustomerMapActivity:-
It fetches and displays the current location of the customer. It allows the customer to
book a cab. The customer can enter her preference of a MiniAuto, Auto and AutoXL.
She can then click on the ‘CALL AUTO’ button. It displays the message as ‘Getting
Your Driver’ and displays the profile of the nearest available driver. This profile
contains the name of the driver, her phone number, the name of her car and a profile
picture as well. It also displays the latitude and longitude of the current location of
the driver. When the driver reaches the customer that is, now both of them have the
same location coordinates , it displays the message as ‘Driver’s here’. This class
imports GeoFire,GeoLocation, GeoQuery,GoogleMaps to display the current location.
It fetches the driver’s details from Firebase storage. It also provides the buttons for
Logout, Settings and History. The functionalities of all of these are implemented in
separate java classes.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 21


My Girl Travel App

 DriverMapActivity:-
Just like CustomerMapActivity, the DriverMapActivity class also fetches and displays
the current location of the driver. It provides a switch on the top left corner of the
activity. This is labelled as ‘Working’. The driver turns this switch on when she
wishes to be available and to be seen by the customers of that area. If the customer
selects that particular driver, a dialog box pops up on the driver’s screen. It displays
the customer’s name, her phone number and her profile picture. It also displays the
latitude and the longitude of the customer’s current location. When the driver reaches
the customer, she can click the button ‘Picked Customer’. After the ride is over, it
shows ‘Drive Completed’.This class also imports GeoFire, GeoQuery,GoogleMaps to
display the current location. It fetches the customer’s details from Firebase storage. It
also provides the buttons for Logout, Settings and History. The functionalities of all
of these are implemented in separate java classes.

 CustomerSettingsActivity:-
This class allows the customer to create her profile. This activity is displayed after
clicking the ‘Settings’ button as provided by the CustomerMapActivity class. The
customer can enter her name, her phone number and choose a profile picture from her
mobile phone’s gallery. After this, clicking on the ‘Confirm’ button saves her profile
to the Firebase realtime database under Customers. This is the profile that is visible to
the driver.

 DriverSettingsActivity:-
This class allows the driver to create her profile. This activity is displayed after
clicking the ‘Settings’ button as provided by the DriverMapActivity class. The driver
can enter her name, her phone number, name of her car, type of vehicle i.e. whether it
is a MiniAuto, Auto or AutoXL and choose a profile picture from her mobile phone’s
gallery. After this, clicking on the ‘Confirm’ button saves her profile to the Firebase
realtime database under Drivers. This is the profile that is visible to the customer.

 HistoryActivity:-
This activity is displayed after clicking the ‘History’ button provided by both the
DriverMapActivity class and the CustomerMapActivity class. In case of driver, it

CSE DEPARTMENT,SRMGPC,Lucknow. Page 22


My Girl Travel App

displays an Edit Text field to enter the paypal email. The driver can enter her paypal
id of choice on which she prefers to receive her payment. After this, the driver has to
click on the ‘Payout’ button. It displays the message ‘Processing your payout, please
wait’. After successful completion of the transaction, it displays the message ‘Payout
Successful’ . If an error occurs, it shows ‘Error: couldn’t complete the transaction’.
Below the Payout button, there is a recycler view which displays all the previous
successful transactions in encrypted form along with the date and time on which the
transaction was carried out. In case of Customer, this class displays just the list of
transactions. On clicking it, the customer can proceed to pay the driver online. This
functionality is provided by a separate class.

 HistorySingleAcivity:-
This activity is displayed after clicking on the successful transaction that has just
occurred. In case of the customer, it displays the map fragment below which there are
three fields. First is the From-To field which displays the destination of the journey.
Next field displays the distance travelled and the last one shows the date of the ride.
Below this, is the profile of the driver containing her name, her phone number, name
of the car, her profile picture. There is also a rating bar to give rating to the driver.
There is a button of Payment below this. On clicking this, the customer will be
directed to her paypal account. There, she can enter her paypal id and password and
the amount to pay the driver. In case of driver, it shows the same details as in case of
the customer except that after the profile of the customer there is no option of
payment. This class imports the android sdk of Paypal to link the Paypal sandbox
account.

 PayPalConfig:-
This class contains the PAYPAL_CLIENT_ID. This id is used to link the paypal
sandbox account of the developer to the application. If this id is not created,
transactions will not occur. This id enables the user to use the android sdk of Paypal
and open the Paypal account.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 23


My Girl Travel App

 onAppKilled:-
This class simply describes what action will take place if the app suddenly crashes.
The GeoFire library will be used to remove the location from the map.

 MainActivity:-
This class displays the first screen of the Application. It contaions a picture of a cab.
Below it, there are two buttons. One of them says ‘I’m a Customer’ and the other one
says ‘I’m a Driver’. Clicking on each one of them, redirects the user either to the
Customer login page or to the Driver login page respectively.

 DATABASE USED

A Database is an organized collection of data, generally stored and accessed electronically


from a computer system. Where databases are more complex they are often developed using
formal design and modeling techniques.

The database management system (DBMS) is the software that interacts with end users,
applications, and the database itself to capture and analyze the data. The DBMS software
additionally encompasses the core facilities provided to administer the database. The sum
total of the database, the DBMS and the associated applications can be referred to as a
"database system". Often the term "database" is also used to loosely refer to any of the
DBMS, the database system or an application associated with the database.

Computer scientists may classify database-management systems according to the database


models that they support. Relational databases became dominant in the 1980s. These model
data as rows and columns in a series of tables, and the vast majority use SQL for writing and
querying data. In the 2000s, non-relational databases became popular, referred to as NoSQL
because they use different query languages.

The type of database that is used in this application is a Real Time Database.

A Real-time Database is a database system which uses real-time processing to handle


workloads whose state is constantly changing. This differs from traditional databases
containing persistent data, mostly unaffected by time. For example, a stock market changes

CSE DEPARTMENT,SRMGPC,Lucknow. Page 24


My Girl Travel App

very rapidly and is dynamic. The graphs of the different markets appear to be very unstable
and yet a database has to keep track of current values for all of the markets of the New York
Stock Exchange. Real-time processing means that a transaction is processed fast enough for
the result to come back and be acted on right away. Real-time databases are useful for
accounting, banking, law, medical records, multi-media, process control, reservation systems,
and scientific data analysis.

FIREBASE

Google’s Firebase[17] is used in this application to provide storage, authentication of the


users and a real time database for storing the details of the customers and the drivers.

Firebase is a mobile and web application development platform developed by Firebase, Inc.
in 2011, then acquired by Google in 2014. As of October 2018, the Firebase platform has 18
products, which are used by 1.5 million apps.

The services provided by the Firebase are:-

 Analytics

Firebase Analytics

Firebase Analytics is a cost-free app measurement solution that provides insight into app
usage and user engagement.

 Develop

Firebase Cloud Messaging

Formerly known as Google Cloud Messaging (GCM), Firebase Cloud Messaging (FCM) is a
cross-platform solution for messages and notifications for Android, iOS, and web
applications, which as of 2016 can be used at no cost.

Firebase Auth

Firebase Auth is a service that can authenticate users using only client-side code. It supports
social login providers Facebook, GitHub, Twitter and Google (and Google Play Games).

CSE DEPARTMENT,SRMGPC,Lucknow. Page 25


My Girl Travel App

Additionally, it includes a user management system whereby developers can enable user
authentication with email and password login stored with Firebase.

Realtime database

Firebase provides a realtime database and backend as a service. The service provides
application developers an API that allows application data to be synchronized across clients
and stored on Firebase's cloud. The company provides client libraries that enable integration
with Android, iOS, JavaScript, Java, Objective-C, Swift and Node.js applications. The
database is also accessible through a REST API and bindings for several JavaScript
frameworks such as AngularJS, React, Ember.js and Backbone.js. The REST API uses the
Server-Sent Events protocol, which is an API for creating HTTP connections for receiving
push notifications from a server. Developers using the realtime database can secure their data
by using the company's server-side-enforced security rules. Cloud Firestore which is
Firebase's next generation of the Realtime Database was released for beta use.

Firebase Storage

Firebase Storage provides secure file uploads and downloads for Firebase apps, regardless of
network quality. The developer can use it to store images, audio, video, or other user-
generated content. Firebase Storage is backed by Google Cloud Storage.

Firebase Hosting

Firebase Hosting is a static and dynamic web hosting service that launched on May 13, 2014.
It supports hosting static files such as CSS, HTML, JavaScript and other files, as well as
support through Cloud Functions. The service delivers files over a content delivery network
(CDN) through HTTP Secure (HTTPS) and Secure Sockets Layer encryption (SSL). Firebase
partners with Fastly, a CDN, to provide the CDN backing Firebase Hosting. The company
states that Firebase Hosting grew out of customer requests; developers were using Firebase
for its real-time database but needed a place to host their content.

STEPS TO CONNECT FIREBASE TO ANDROID APPLICATION:

1. Create a firebase project

 Create a project by clicking on create project in the firebase console.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 26


My Girl Travel App

Figure 3.6 : Firebase Console

Fill the necessary details in the pop up window about the project. Edit the project ID if
required.

Figure 3.7 : Filling the Project details

 Click on create project to finally create it.

2. Now add this project to the android app

 Click on the Add firebase to your android app option on the starting window.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 27


My Girl Travel App

Figure 3.8 : Adding Firebase to Android App

 A prompt will open where to enter the package name of the app.
 Now the app is connected to the Firebase. Now all the cloud based as well server based
services can be easily used in the app.
 Now the app will be registered with firebase.
3. Also, the SHA1 certificate, can be given, of the app by following steps:

Go to android studio project


↳ gradle
↳ root folder
↳ Tasks
↳ Android
↳ signingReport
↳ copy paste SHA1 from console
4. Now download the google-services.json file and place it in the root directory of the
android app.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 28


My Girl Travel App

Figure 3.9 : Downloading the google-services.json file

5. Now add the following in the project.

 Adding the sdk in the project.


Add the following code to the PROJECT-LEVELbuild.gradle of the app.

buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.0.0'
}
}

 Add the following code to APP-LEVEL build.gradle of the app.

dependencies {
compile 'com.google.firebase:firebase-core:16.0.0'
}
...
// Add to the bottom of the file
apply plugin: 'com.google.gms.google-services'

Figure 3.10 : Adding the Firebase SDK

CSE DEPARTMENT,SRMGPC,Lucknow. Page 29


My Girl Travel App

 CODING:-

CustomerLoginActivity.java

package com.my.uber;

import android.app.ProgressDialog;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.HashMap;
import java.util.Map;

public class CustomerLoginActivity extends AppCompatActivity {


private Button CustomerLoginButton;
private Button CustomerRegisterButton;
private TextView CustomerRegisterLink;
private TextView CustomerStatus;
private EditText EmailCustomer;
private EditText PasswordCustomer;
private ProgressDialog loadingBar;
private FirebaseAuth mAuth;
private DatabaseReference CustomerDatabaseRef;
private String onlineCustomerID;
private EditText adhaar;

HashMap<String, String> map = new HashMap<String, String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_customer_login);
map.put("121212121212", "female");
map.put("121212121213", "female");

CSE DEPARTMENT,SRMGPC,Lucknow. Page 30


My Girl Travel App

mAuth=FirebaseAuth.getInstance();

CustomerLoginButton=(Button)findViewById(R.id.customer_login_btn);
CustomerRegisterButton=(Button)findViewById(R.id.customer_register_btn);
CustomerRegisterLink=(TextView) findViewById(R.id.register_customer_link);
CustomerStatus=(TextView)findViewById(R.id.customer_status);
EmailCustomer=(EditText)findViewById(R.id.customer_email);
PasswordCustomer=(EditText)findViewById(R.id.customer_password);
loadingBar=new ProgressDialog(this);

adhaar = findViewById(R.id.adhaar);
adhaar.setVisibility(View.INVISIBLE);
CustomerRegisterButton.setVisibility(View.INVISIBLE);
CustomerRegisterButton.setEnabled(false);
CustomerRegisterLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
adhaar.setVisibility(View.VISIBLE);
CustomerLoginButton.setVisibility(View.INVISIBLE);
CustomerRegisterLink.setVisibility(View.INVISIBLE);
CustomerStatus.setText("Register Customer");
CustomerRegisterButton.setVisibility(View.VISIBLE);
CustomerRegisterButton.setEnabled(true);
}
});

CustomerRegisterButton.setOnClickListener(new View.OnClickListener() {
String maping;

@Override
public void onClick(View view) {
String email=EmailCustomer.getText().toString();
String password=PasswordCustomer.getText().toString();
String adhaar_no = adhaar.getText().toString();
for(Map.Entry m : map.entrySet())
{
maping=m.getKey().toString();
}
if (adhaar_no.equals(maping)) {
RegisterCustomer(email, password);
}
else
{
Toast.makeText(getApplicationContext(),"Not A
Female",Toast.LENGTH_SHORT).show();

CSE DEPARTMENT,SRMGPC,Lucknow. Page 31


My Girl Travel App

}
}

});

CustomerLoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String email=EmailCustomer.getText().toString();
String password=PasswordCustomer.getText().toString();

SignInCustomer(email,password);

}
});

private void SignInCustomer(String email, String password) {

if(TextUtils.isEmpty(email))
{
Toast.makeText(CustomerLoginActivity.this,"Please write
Email...",Toast.LENGTH_SHORT).show();
}

if(TextUtils.isEmpty(password))
{
Toast.makeText(CustomerLoginActivity.this,"Please write
Password...",Toast.LENGTH_SHORT).show();
}

else

{
loadingBar.setTitle("Customer Login");
loadingBar.setMessage("Please wait..while we are checking your credentials...");
loadingBar.show();
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful())
{

Intent customerIntent=new
Intent(CustomerLoginActivity.this,CustomerMapActivity.class);

CSE DEPARTMENT,SRMGPC,Lucknow. Page 32


My Girl Travel App

startActivity(customerIntent);

Toast.makeText(CustomerLoginActivity.this,"Customer Logged in
Successfully...",Toast.LENGTH_SHORT).show();
loadingBar.dismiss();

}
else {
Toast.makeText(CustomerLoginActivity.this, "Login
Unsuccessful,Please try Again...", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
});

// aadhar card customer entry..

private void RegisterCustomer(String email, String password) {

if(TextUtils.isEmpty(email))
{
Toast.makeText(CustomerLoginActivity.this,"Please write
Email...",Toast.LENGTH_SHORT).show();
}

if(TextUtils.isEmpty(password))
{
Toast.makeText(CustomerLoginActivity.this,"Please write
Password...",Toast.LENGTH_SHORT).show();
}

else

{
loadingBar.setTitle("Customer Registration");
loadingBar.setMessage("Please wait..while we are registering your data...");
loadingBar.show();
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful())
{
onlineCustomerID=mAuth.getCurrentUser().getUid();
CustomerDatabaseRef=
FirebaseDatabase.getInstance().getReference().child("Users").child("Customers").child(on

CSE DEPARTMENT,SRMGPC,Lucknow. Page 33


My Girl Travel App

lineCustomerID);
CustomerDatabaseRef.setValue(true);
Intent driverIntent=new
Intent(CustomerLoginActivity.this,CustomerMapActivity.class);
startActivity(driverIntent);
Toast.makeText(CustomerLoginActivity.this,"Customer Registered
Successfully...",Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
else {
Toast.makeText(CustomerLoginActivity.this, "Registration
Unsuccessful,Please try Again...", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
});
}

}
}

CSE DEPARTMENT,SRMGPC,Lucknow. Page 34


My Girl Travel App

CHAPTER-4 RESULT ANALYSIS AND DISCUSSION

 MAIN SCREEN  CUSTOMER LOGIN

 CUSTOMER  CUSTOMER MAP


REGISTRATION

Figure 4.1: Screenshots of Customer


Login

CSE DEPARTMENT,SRMGPC,Lucknow. Page 35


My Girl Travel App

 LOOKING FOR THE  CUSTOMER PROFILE


DRIVER

 CUSTOMER HISTORY  CUSTOMER PAYMENT TO


DRIVER

Figure 4.2:Screenshots of Customer

CSE DEPARTMENT,SRMGPC,Lucknow. Page 36


My Girl Travel App

 CUSTOMER PAYPAL  DRIVER LOGIN


ACCOUNT LOGIN

 DRIVER REGISTRATION  DRIVER MAP

Figure 4.3: Screenshots of Driver

CSE DEPARTMENT,SRMGPC,Lucknow. Page 37


My Girl Travel App

 DRIVER PROFILE  DRIVER HISTORY

 DRIVER SETTINGS

Figure 4.4 : Screenshots of Driver Settings

CSE DEPARTMENT,SRMGPC,Lucknow. Page 38


My Girl Travel App

ADVANTAGES OF THE PROJECT

• It has the feature to track the location of the driver.

• It allows the user to rate the driver and the driving experience.

• It provides options to pay both in cash or through online payment


gateways such as paypal.

• The same app can be used to login as a customer or as a driver. No


need to install separate apps.

• It provides easy access to booking cabs online.

• As the app is accustomed to have only female user and driver, it ensures
women safety.

• It also ensures women employment rates to be increased as any women


with driving skills is employed to earn a living for themselves.

• It has an interactive user interface which lets anyone to navigate through


the app easily.

• The drivers can keep a track of their earnings as the payment history
option is available.

• The date / time option helps them to keep a track of their ride.

• The user gets to book a cab instantly and any driver in proximity is
appointed for the ride .

• The driver’s interface lets her to view any customer in the vicinity.

• The user can review their ride experience with the driver.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 39


My Girl Travel App

LIMITATIONS OF THE PROJECT

• It does not allow its users to earn money by referring the app to their
friends.

• It does not provide a rate card to its users specifying the standard rates
applicable.

• It does not allow registration through other platforms such as facebook or


google+.

• Mail and notification option is not available.

• This app can only run on android phones.

• This app requires good internet connection.

• As there is no option for the user to feed in their destination beforehand


the driver is not able to know the destination before picking up the user.

• The user is not able to call the driver on her mobile number.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 40


My Girl Travel App

CHAPTER-5 CONCLUSION
The main objective of this project is to develop a system for handling the process of ordering
taxis using mobile devices. To achieve this goal appropriate research as well as a series of
preparations and analysis has been carried out. Information presented in this synopsis shows
the specifications of the systems consisting of several elements which communicate with
each other to exchange data. The information presented herein and the conducted research for
the purpose of this project lead not only to a system that supports taxi servicing but also can
be used to create a similar system, which is based on a client-server architecture and uses
mobile applications working on Android OS.

As mentioned in the previous section, the system can be extended with further functionalities.
The prototype of the system described here provides a basic service for the client to order a
taxi from her Android based device. Though, this proposed application has its own
shortcomings, but the feature of providing women safety is unique and of dire need in the
present scenario.

The registration and verification of both the passenger and driver ensures complete safety of
both the parties. The requirements for this process have been analysed thoroughly to ensure
proper implementation of it.

The system will be developed at no cost. It will be easily accessible to everyone at no


additional cost. It will be free to download and use. No special features will be required in an
Android device to use this app.

The travel App should have a well-defined user guide that covers each and every aspect of
the cab booking process, making it easy for first time users to perform core tasks.Before
using the application, it ismandatory to have a registered account with the platform. The
overall process should be minimalistic keeping in mind the mobile nature, and requests only
most critical information such as – Name, Email, Password, Mobile number. For booking a
cab the app should have a search bar to enter a desired pickup location, GPS feature to detect
the current location, a detailed map to see their selected location.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 41


My Girl Travel App

CHAPTER-6 FUTURE SCOPE OF THE PROJECT


• Mail and notification option can be made available .

• The app can be extended to introduce ordering the taxi according to customer’s
preferences (i.e. price range, whether or not the car can be used by people with
disabilities, taxi car brand, required number of seats, etc.) and estimate time of taxi
arrival.

• Feature to call the driver on phone can be added.

• The app runs for a dummy database where we have already provided a few sample
ADHAAR numbers. It can be improved by real time linking with the official database
of the Indian Government.

• The app can be developed to work on iOS and Windows devices as well.

• The app can involve the option to feed in the destination.

• It can allow its users to earn money by referring the app to their friends.

• It can provide a rate card to its users specifying the standard rates applicable.

• It can provide the options of card payments.

• Emergency Contact--This feature willprove to be the most beneficial for women.


The user can add any contact as their emergency contact number and can also opt in
to share information with that number every time a ride is taken. This ensures the
safety of the passenger and provides a smooth and hassle-free ride.

CSE DEPARTMENT,SRMGPC,Lucknow. Page 42

Potrebbero piacerti anche