===============[ Skills & achievements in Lab 3 ]=============== NOTE: In this lab, you may lose points for crashes, regressions, and for not providing an APK of your app. See "Lost Points" below. - Creating and interacting with GoogleMaps objects - Creating a GoogleMap instance and fragment - Placing markers on the map for the cats in view and your location. - Controlling the visibility of markers on the map based on the calculated distance from your location. This distance is configured in your Settings fragment. - Controlling the data shown on the panel on click of the cat marker (the cat name and image). - The distance to the selected cat from the current location should be updated in real time on the panel. - The panel should be blank when no cat is selected or if a previously selected cat goes out of view. - On click, the cat marker should change its appearance. You can use the provided resource files to switch between marker appearances. - Update and zoom to your location on the map in real time. - Extra credit (1pt): design your own markers (different from the provided resource files, be creative!) - Extra credit (1pt): Have a configurable setting in your Settings fragment that controls how frequently (the minimum time interval) you receive location updates. When you request updates from locationManager, you should use the min time from your settings fragment. - Interacting with the game server - Handling sign-in and sign-out (the latter by deleting local data) - Retrieving profile data from server and updating it on the server if edited locally. This refers to the update profile functionality. - Retrieving the Cat List and constructing JSON object representations of its element - Sending and handling the response from server to the "Pat" request. Show a Toast indicating the error if the request fails else, - Navigate to the Success! activity as shown in lab3.png if the "Pat" request succeeds. The success activity must show "Again" and "Done" buttons. The - Disable the "Pat" button for a cat that has already been patted. - Data synchronization between local storage and the server - Data on the server should be synchronized with the local profile data. When changed locally, changes should be uploaded. The server does not change the data on its own. - Local data should be deleted on sign-out and retrieved from the server on the next sign-in, completely replacing any previous data. Via this procedure, it should be possible for a player to use several accounts for independent game play or to lend the phone to another account owner without sharing any profile data. Each one of these 16 items earns 2 points if done correctly, 1 point if working but any crashes occur in the related logic in our testing, 0 if not attempted or never functional. Additional 8 points are assigned for style (2 each, as above): - use of git for source control - meaningful commenting and indentation - consistent use of Java facilities (constants, private, annotations, etc.) - modeling of data objects sent to and receive from the server with appropriate Java types and objects. Overall: 16*2 + 8 = 40 points Lost points for regressions and crashing: Up to 3 points can be subtracted if an app crashes or some of the functionality implemented in Lab 1 stops working (a regression). Specifically, 1 point will be subtracted if a crash occurs under some unusual circumstances, 2 if it occurs sporadically, and 3 if it occurs reproducibly on every launch. 2 points will be subtracted if no APK of the app is made available. Extra credit: 2 extra points for working "hard" mode 2 extra points for reporting of upload or download progress via Notifications, with a progress bar in the Notification. 2 extra credit points for the items mentioned in "Creating and interacting with GoogleMaps objects". 2 extra credit points for pre-selecting the cat closest to your location, and display information about that cat when the user opens the Map activity. PLEASE do NOT upload full-size images for your profile yet! Total: 40 + 8 = 48 maximum, BUT, TAs will assign up to 4 extra points for innovative solutions, research (e.g., of bugs), or design.