Mobile computing is everywhere. Even as an increasing population of the world are now using mobile phones, and mobile phone (or smartphone) applications, there is a growing trend in world travelling. This decade, more than in any other, people are travelling, whether for short or long term. Tourism is an increasingly growing industry, and it is not difficult to find one self in a new place. A handy mobile application is a tourist guide.
Instead of joining a real tour, one is guided around a city via an application in the hand.
The attraction of a mobile application acting as a virtual tourist guide for the user is that the user tends to carry the mobile device everywhere, and the application can tailor its behaviour to the user. The mobile is also a communication device so that a social aspect can be added to such an application, where users can collaborate about where to go or share information with friends about places they have visited. The mobile is also a personal device so that a personalized application can be more useful to the user, providing filtered or tailored information.
The aim of this assignment is to design, document and develop a JavaME mobile application, which we call CityInfo, which acts as an information provider for a tourist, (effectively) welcoming and introducing the user to a city. For this assignment, assume that the company deploying these services is CityInfo Pty. Ltd., but the company intends to provide such information services for free and earn revenue via advertising. That is, users who download and use the CityInfo application will also be shown some advertisements (via the application itself). The user can browse and obtain general information about a city, or more details about tourist spots, facilities, and even ask the application for suggestions about things to do or places to go
3. SYSTEM OVERVIEW
The CityInfo system would comprise two main components, in particular:
- the CityInfo mobile application: a client component (mobile client) containing a user interface for the user to obtain tourist information and suggestions,
- the CityInfo information server: a server-side component to store tourist
information and to handle information queries from the client component.
In this assignment, since we will not worry about the details of the server-side
component. The server-side component only needs to receive information from the mobile client and then forward suitable information and acknowledgements.
- follow mobile application design guidelines in designing your application, where applicable; also, give a name for the company, and logo
- you do not need to validate fields in the forms which allow the user to enter
information queries.you should show how the server-side component can handle information queries and send the relevant information to the mobile client; on the server-side, tourist data can be stored either in files or hardcoded into the serverside code (though in reality, such data would be stored in a database system such as MySQL Server running on the server-side, or as files in a folder, but you do not need to use a database management system in this assignment)
- you do not need to implement user account management
- document the structure of your application, as required below
- if required, state assumptions you make as you go (in the documentation)
4. YOUR TASKS AND MARKING SCHEME
Your overall task is to design and implement the CityInfo system which can be used to provide information about a city to the user (i.e., assumed to be a tourist). Your system should allow the user to
(i) obtain general information about a city including its population, weather, culture, transportation facilities, tips, key attractions2
(ii) obtain information about where to go for sightseeing (i.e., Points Of Interest (POIs)), (and roughly how to get there (not detailed instructions or navigation but a description such as which bus to take or tram to use)
(iii) obtain information about where to go for shopping, (and roughly how to get there)
(iv) obtain information about where to go to eat
(v) obtain information about major public events happening in the city
(vi) obtain information about some places to go for entertainment (e.g., cinema, art theatres, etc.)
(vii) save previously queried/acquired information on the mobile device or later use; in order to avoid needing to reissue a query (in that way, reduce network data transfers and associated costs; and increasing efficiency of accessing information by removing the need to get it again from the server)
Note that the focus of the mobile application is on providing information for someone who is already in the city, rather than someone intending to visit the city. You can choose one city which will be the focus for your assignment and that city need not be Melbourne.
For example, you might choose Tokyo,3 Leuven,4 Mumbai,5 or Rio de Janeiro6 or any other city in the world, but you should focus on providing information about one city rather than multiple cities. So, consider this question: imagine one is in the city (of your choice) for the first time, and knowing something, though little, about the city, what information (e.g., like the above) could be useful to the user, when accessed via his/her smartphone?
The mobile client should be implemented using JavaME and should have been tested at least on a device emulator (at the time of submission, it does not need to have been tested
on a real mobile device). Basically, when the user sends a query for some information via the mobile client, the query is passed to a component on the server-side in order to receive the query. The server then processes the query and forward some information (of your design), in response to the query, back to the client to be displayed to the user on his/her mobile device.
User-to-user information sharing:
A feature of the mobile application is that one can send an SMS message to tell a friend about how great a particular tourist site is. Also one can also send an SMS message to ask a friend for recommendations about places to see or things to do (the friend can then respond immediately or later, with a suggestion).
The breakdown of tasks (and marks) is as follows:
TASK 1 (ISSUING A QUERY AND BROWSING FOR INFORMATION ON A MOBILE CLIENT): [Coding] A mobile client component with user
interface (UI). It is expected that you follow general design guidelines and principles as given in the lectures (where applicable) in designing the user interface. The UI should enable the user to issue queries for information about the city, or to browse for information about the city (searching and browsing should be supported on the user interface) - the actual categories and subcategories you use in structuring your user
interface is up to your group's design, but should provide information highlighted in bold above (the points (i) to (vii)). You need to use the appropriate form elements, depending on the interface you choose to support. How expressive the UI is, that is, the range of criteria one can use to look for information should be balanced with user-friendliness.
The more expressive the UI, the better it is, but the complexity of the UI must be balanced by usability. You also need to design appropriate screen layouts. However, your UI structural design is expected to have at least five screens.
[HINT: Get the system working with a simple GUI that supports a few types of information first, and then extend the system, to add the "saving information" feature,
etc. User JavaME RMS to save information for later use. In general, the idea is to start as simple as possible, and "grow" the system. Perhaps do not implement the SMS functionality at this stage (see TASK 3). Also, you can start with hardcoding the tourist information in the GUI, instead of getting it from the server, and then, extend the system to get the tourist information from the server, instead of using the hardcoded information. Also, you can start with purely textual user interface (without images for the information) and then add images for sites, or maps.]
TASK 2 (SERVER-SIDE COMPONENT): [Coding] Server-side component(s) and information query handling. Note that the information server should provide appropriate acknowledgements when it receives the client's requests, and provide suitable information to the client on request from the client. You do NOT need to deal with multiple clients accessing the same server - just one client and one server.
[HINT: For communication between the client and server, you need to develop and document a simple protocol (format for messages) between the mobile client and the server for sending queries, and acknowledgements - for example, what is the format of strings representing queries and the format for strings representing acknowledgements, or information that is sent back from server to client?]
TASK 3 INFORMATION REQUEST AND SHARING VIA SMS FOR USERS): [Coding] As mentioned earlier, there should be a way for a user to send an SMS message (from within your mobile application) to a friend's corresponding application running on the friend's mobile device, telling the friend about how wonderful a particular tourist site might be. A friend receiving this message can view the message and then either save it or delete it. Note that you would need to extend the UI to do this -perhaps adding screens. For testing, you can run two instances of your CityInfo application, one acting as a sender and the other as a receiver. Also, there should be a way for a user to ask another user (via SMS messaging) for recommendations about things to do or places to see at a particular city.
You need to design the format of the messages exchanged between two instances of your application.
[HINT: Get TASK 1and 2 working well before extending the system for TASK ]
TASK 4 (LOCATION-AWARE INFORMATION REQUESTS): [Coding]
Extend the CityInfo mobile application to use the location API (assuming the user's device is equipped with GPS) to obtain location information, which is then sent to the server with queries, in order to obtain information specific to the user's current location.
[HINT: Use JavaME's Location API. You might need to extend both the mobile
application and the server to do TASK 4. See the CityGuide Wireless Toolkit emo for ideas. You can test your system using a simulated environment as in the CityGuide application.]
The documentation describing the system should include:
(i). an overview architectural block diagram of the system (including the mobile client(s) and server-side), (ii) a brief explanation of the architectural diagram given in (i) about how information requests from the mobile client(s) are processed in your system (use example messages and scenario(s) in your explanation) and a description of the protocol of communication
between the CityInfo mobile application and the tourist information server, and a description of the protocol of communication between two CityInfo mobile applications, (iii) a diagram with explanation describing the structure of the mobile client GUI (showing the different screens and how they are related), for the CityInfo mobile application, and (iv) a description of how context-awareness (beyond only location-awareness) might be useful in this application. As far as possible, provide rationale for your design - that is, provide reasons for why it was designed that way.