代写程序接单-COIT13234 - Mobile Software Development – Project Friday (3 Jun 2022) 11:45 pm AEST, Week 12 ASSESSMENT

欢迎使用51辅导,51作业君孵化低价透明的学长辅导平台,服务保持优质,平均费用压低50%以上! 51fudao.top

COIT13234 - Mobile Software Development – Project Friday (3 Jun 2022) 11:45 pm AEST, Week 12 ASSESSMENT

 Due date: Weighting: Length: 1. 

Objective This assessment item relates to the course learning outcomes • Design a mobile application. • Build and test a mobile application. • Explore the opportunities for incorporating socially innovative features in mobile applications. 2. Introduction 3 40% As required This assessment requires you to design and implement a mobile application called PropertyWatch. The application will fetch featured properties from a remote server and display them in a list. Clicking on a list item will open a map which will display the property's location. Selecting the email button will send an email to a friend suggesting that they check out at the selected property. Note: This is an individual assessment. 3. Specifications You are to create a mobile application using Kotlin and Android Studio that contains the screens shown below. Page 1 of 7 Part A: Application Development Screens There are two screens which you are to replicate accurately, especially in regard to font size, font weight and margins. Screen 1: The main page will contain the property watch list • This is to be an activity with a fragment • The fragment is to contain a recycler view to display the property list • A data adapter and view holder are to be used with the recycler view • Fetching data from the database is to be done using a ViewModel, LiveData and an observer • See below for more details Screen 2: The Google Maps page will display the location of the property • Clicking on a list item (outside the email button) will open the map at the selected property's location • A marker will be displayed at that location which will display the property price when clicked • See below for more details Database The property details are to be stored in an SQLite database • You are to load the seed data provided (if the database is empty). See appendix for the seed data • Jetpack and Room libraries are to be used to access the database, along with a repository class • The property list is to be placed in a ViewModel (along with the repository reference) so that changes to the database are reflected in the property list • The property list is to be loaded from the database on startup and displayed in the list view • New properties are to be saved to the database when fetched from the server (covered later) Email Message When the Email button is pressed, the application is to populate an email and open it for sending • The email should not open if the property address and price are not present • Use a string resource for both strings • Invoke the Chooser to allow the user to select the send application The message is to be in the format below: Email Title: Investment Property Advice Email Message (body) Text: I would like to recommend this property at [property address] listed for $[property price] Page 2 of 7 Map When a list item is clicked the application is to open a Google Maps activity and show the location of the selected property on the map. • To add a Map Activity right click on the project • Select New => Activity => Gallery => Map Activity (there is no fragment required here) • The map is to be opened when a list item is clicked • Do not open the map if the property's location has not been set • Pass the property to the map as a serialised object using an Intent and a single extra • Centre the map at the location of the property • Add a marker at the property's location • Clicking on the marker is to display the price above the marker • Set the zoom factor to 12 HTTP • You are to fetch the current list of recommended properties from the specified URL on startup • The list will be returned as a JSON array which is to be mapped to a property object array • On receipt of new data, the database is to be updated with the new properties • Note: The server URL will be provided later General • Use string resources in place of all literal strings including labels and button text Suggested Project Structure Page 3 of 7 Part B: Application Design Word Count: 500 words with Diagrams Consider that the two property apps in the assignments are just prototypes. You are to integrate the two apps into one and redesign it as a new app to assist low income earners and the socially disadvantaged to find cheap houses for sale or rent. Redesign of the Property app • List any new features and discuss how they will assist the disadvantaged • Mockup the pages for the integration the two property apps including your new features • Use appropriate navigation components and create an effective flow between pages • You may use prototyping software or use a low fi prototype (i.e. draw the screens and navigation by hand – but keep it neat) • The layout must be practical with good user interface design Note: • You are NOT required to write any code for this section • Do not copy the text above into your document • No references required 4. Submission You MUST use File => Manage IDE => Export to zip file in Android Studio to save your project • Do Not zip your project using anything other than Android Studio You MUST name the Android project zip file: lastname-firstname-studentId.zip You must also submit a Microsoft Word design document. • The design document is to be called design.doc and must have a cover page with your name and ID • Do not zip these two files into a single zip file o i.e.Yousubmitonezipfilefortheprojectandoneworddocumentforthereport • You are required to submit your assignment electronically via the Moodle course website Page 4 of 7 5. Assessment Criteria Section Pages and Layouts Criteria Main page is an activity with a fragment. Map is a Google Map Activity Page layouts are correct String resources used in place of all literal strings Email Email opens for sending using Chooser when item email button selected Email does not open if address and price are not present Title and body use correct property details and use string resources Database Seed data saved to the database Room libraries, ViewModel and repository used Data is read from the database and displayed in list view on startup Google Maps Live data used with observer Map is displayed when property list item is selected Property is passed as a serialised object Map is centered on the location of the selected property and zoom is set Marker location is correct Price is displayed when marker is clicked HTTP Property data is fetched correctly from the remote server JSON data is decoded into a property object array Live data used with observer Data is added to the database and list view is updated Code Quality Informative variable names, code is clean and efficient, no replication App Design Consistent indenting, max one blank line between blocks of code Quality of the integrated application design Quality of socially innovative features Discussion of benefits Quality and effectiveness of screen layouts and navigation Design document is well structured and professional Deductions Marks 2 2 1 2 1 2 3 2 3 2 1 1 2 1 1 2 3 2 1 1 1 2 1 1 1 1 -1 Total 40 Submission not as specified • Zip file must be generated in android project using File/Export to zip • Two separate files must be submitted (zip and word doc) Page 5 of 7 Seed Data Appendix fun loadData() { val propertyArray: ArrayList<Property> = ArrayList() propertyArray.add(Property( address="149-153 Bunda Street, Cairns", price=200000, phone="0403404111", lat=-16.928893272553427, lon=145.77021565990813)) propertyArray.add(Property( address="197 Draper Street, Cairns", price=350000, phone="0403404222", lat=-16.928893272553427, lon=145.77021565990813)) propertyArray.add(Property( address="198 Grafton Street, Cairns", price=800000, phone="0403404333", lat=-16.916479904985984, lon=145.76987256094102)) propertyArray.add(Property( address="3 Cominos Place, Cairns", price=550000, phone="0403404444", lat=-16.922791, lon=145.745504)) propertyArray.add(Property( address="6 McGuigan Street, Earlville", price=400000, phone="0403404555", lat=-16.945571, lon=145.741207)) propertyArray.add(Property( address="6-8 Quigley Street, Manunda", price=455000, phone="0403404666", lat=-16.929026, lon=145.762279)) saveProperties(propertyArray) } Page 6 of 7 Creating a New Google Maps Key You can use the Google maps key you used in the tutorial, or you can create a new Google Maps Key but be aware you have a limit of 5 keys. To create a new Google maps key for this app. • Open google_maps_api.xml • Ctrl + click on the link at the top of the page. • Follow the same procedure we did in the tutorial. Problems with Google Maps If you have problems with Google Maps, try the following. In your Android Studio project • Uninstall the app on the phone (or wipe data and/or cold boot in the device manager) • Select Build => Clean • Select File => Invalidate Caches • Select Invalidate and Restart Page 7 of 7 

51作业君

Email:51zuoyejun

@gmail.com

添加客服微信: abby12468