===============[ Skills & achievements in Lab 4 ]=============== 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 managing a service - Starting a service & persisting it after the app is closed - Stopping a service using a GUI button (remember that the service could be running even after the app has been stopped.) - Recognizing the status of the service (running/stopped), on app start-up; Make sure the UI components always reflect the service's running state. - Sending alerts and cancelable notifications from a service - Extra: Issuing proximity alerts for any cat in the list (not just the currently tracked one) - Notifications - Interacting with Notifications by taking an action from the notification, e.g., starting or stopping the service, or bringing up an appropriate app view - Sending and canceling Notifications - Configuring notifications to use sound and/or vibration (or none), as per user preferences set in the SettingsFragment - Actions taken by buttons and other active UI elements and information displayed by them are consistent with the app and service states - Interacting with the game server - Handling intermittent network errors and time-outs - Handling intermittent server failures (HTTP 500) - UI and game interaction - The activity backstack should be consistent with the app logic/flow (see Lab2.png for the flow scheme)[3 pts] - Displaying a list with a custom item layout that includes icons, text, and actions - Camera overlay and sensor use - Calling the provided camera overlay activity and handling interactions with it in context of the game - Extra: Using sensors to detect phone orientation & displaying orientation hints to the user while tracking the cat in the MapActivity Each one of these 13 items earns 2 points if done correctly (except for the one with 3 pts), 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: 12*2 + 3 + 8 = 35 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 Labs 1--3 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: as above, 2 extra points each item. Extra credit: implement the hard mode: change the location of cats in real time (you'll see the cats jumping around), show the orientation of the cat (3 pts) Total: 35 + 7 = 42 maximum, BUT, TAs will assign up to 4 extra points for innovative solutions, research (e.g., of bugs), or design.