Getting Started: Partner Registration and Github
To register your partnership for both the Android and iOS Mini-App Projects and to be able to check out devices, please fill out the form here: https://goo.gl/forms/YtrBjRP9He1vbsSi2. If you change have to change partners, please contact Prof. Sherriff directly so this form can be updated.
Once you have registered your partnership, head to Github to create your repo in our classroom Github organization by going here: https://classroom.github.com/g/7whSksz_. Whoever is first of your partnership to go here should create a new team and the partner should join it.
Please use the combination of your last names with no punctuation (i.e. HortonSherriff) as the name of your team! Let us know if you have any issues!
Once you have created your repo, you should have a url that looks something like this: https://github.com/UVA-CS4720-S18/android-mini-app-LastNames.git
Android Studio has GitHub integration built in, but making a project connect to a repo that's NOT in your personal account is slightly trickier in the UI. I suggest doing the initial steps on the command line (and asking for help if needed). We do REQUIRE that your projects be in these repos for the semester.
On one person's computer, follow these steps to initialize everything (make sure you have git installed from http://git-scm.com if needed):
- Create a new Android Studio project
- Open a terminal window or the Git bash terminal on Windows and go to that root directory
git init .(with the period)
git add *
git commit -m "initial commit"
git remote add android-mini-app-LastNames https://github.com/UVA-CS4720-S18/android-mini-app-LastNames.git(replace the LastNames)
git push android-mini-app-LastNames master
Now that the repo is setup, you can do all the normal operations inside Android Studio or you can use the git tool of your choice.
Nexus 7 Device Information
- Getting a Device: Once you have registered your partnership, you can come by Sherriff's office to check out a device if you want. Teams ARE NOT REQUIRED to check out a device (in fact, the mini app is probably easier to just do on the emulator). Only one partner has to come, but that partner will sign for both people on the check out form.
- Google Accounts: You may register your own Google account for use with the device or you may create a dummy account if you so desire. However, you MUST do a factory restore on the tablet before turning it in to remove all of your data, settings, and applications.
- Google Play Store: The tablets should be used only for educational purposes and not as a personal device. You should not purchase and download any apps or games to your tablet without authorization from the course staff. If you try to install an application from the Android Market / Google Play Store, you will have to provide your own credit card information, which will then be stored with the device and/or the Google account associated with the tablet. Do not do this.
- Getting Online: Your tablet may or may not be registered through the UVa wahoo network. Follow the instructions found at http://its.virginia.edu/mobile/android.html. You may need to manually add the network under Settings > Wireless & networks > Wi-Fi settings > Add Wi-Fi network.
- Acviate Developer Mode: You will most likely have to turn on developer mode on your device when you receive it. You do this by tapping on the Android Build field in Settings 7 times. More info can be found here https://developer.android.com/studio/debug/dev-options.html
- Problems?: Contact Prof. Sherriff at firstname.lastname@example.org.
For your Android Mini App, you are going to build a simple UVa Bucket List app. Users will be able to open this app and add items to their bucket list of things that they want to do before graduation. Each item will have a name, description, latitude, longitude, and a way to record whether it has been completed or not. Since we are early in the semester and have not yet covered data storage, the app should pre-populate with just a few example items at start up and work as intended while in use, but it does not have to remember the state of the list from run to run.
Requirements and Specifications
Your app must meet the following requirements and specifications. Deviating from these will result in a reduced grade.
The app shall be made up of three activity screens - a list screen, a create new item screen, and an item information screen. More detailed information about each activity is found below.
You will (most likely) have five .java files for this assignment:
BucketListActivity.java- an Activity for your main list
AddItemActivity.java- an Activity that lets a user add an item to the list
EditItemActivity.java- an Activity that lets a user edit an item already on the list and is pre-populated on launch
BucketItem.java- the model representing a single bucket list item
BucketListAdapter.java- the adapter class that handles how a
BucketItemappears in the
You will also have the associated layout
.xml files that go with these.
- When the app starts up, the list screen should be the first one displayed.
- To make the list of bucket list items, you must use a
RecyclerView.See the example code from class on how to set this up with a data class and an adapter class.
- There should be a floating action button in the lower right corner with an icon indicating the ability to add something to the list.
- The items in the list should be in order from soonest due date to latest.
- Tapping on any item should bring up an Edit Item activity (see that Activity for more info).
- Tapping on the checkbox next to an item should flip it's done / not done status.
- Tapping on the floating action button should bring up the Add Item activity (see that Activity for more info). To launch this activity, you should use the
startActivityForResult()method. Upon completion of the Add Item activity, you should use
onActivityResult(int requestCode, int resultCode, Intent data)to parse the result and add the new item to the
ArrayListin this activity.
Add Item Activity
- The screen should have a back arrow in the upper left corner, which cancels the add. This should be done using a custom Toolbar.
- The screen should have fields for each of the parts of a bucket list item, along with a DatePicker for the due date.
- The latitude and longitude fields MUST be numeric input only.
- There should be a save button at the bottom of the screen.
- The activity should send the info from the fields back as extra data fields in the return intent.
Item Info Activity
- The screen should look the same as the Add Item activity, but with the information pre-populated with the information from the item you tapped.
- Any changes made here should be reflected back in the original item.
- If the due date changes, you should re-sort the the list.
- This class should have all the fields for a bucket list item.
- This class should have a
compareTo()so you can determine which items come before others in an
- This class should have a
createInitialBucketList()that creates the initial, hard-coded bucket list
ArrayListand returns it. This will be called in the
- Follow the example for more information on the methods you must override here.
- Handle the tapping of the item name for launching the edit item activity and tapping the checkbox here in the
Main list of items that should appear on launch:
Adding a new item:
New item added to list:
There are two sorted orders - first comes all unfinished tasked in date order, then all completed tasks in date order. It should update dynamically when something is checked off:
Editing an item looks just like adding one:
Milestone Submission - Due: Monday, January 29 @ 11:55 PM
You should have at least the main list screen appearing, with the floating action button and a pre-populated list, plus one other piece of basic functionality of your choice.
Out of 20 possible points:
- 5 pts: App can launch properly
- 5 pts: The list is pre-populated and a floating action button appears
- 5 pts: Some other basic functionality is apparent
- 5 pts: Doesn’t crash / looks reasonable
All code must be kept in the Github repo you created as a part of your partner creation process above. We will do a checkout from Github of the latest push to the repo before the 11:55 PM deadline.
Please put a built .apk in the root of your repo to make grading easier.
Final Submission - Due: Monday, February 5 @ 11:55 PM
You should have all required features completed plus a project report in PDF form that you will put in the root of your repo along with the final .apk.
Your documentation must include:
- Team member list
- Device Name
- Project/App Title
- Basic instructions on usage
- Any special info we need to run the app
- Lessons learned (at least half a page)
Android Final Build (out of 100):
/5 pts: App can launch properly and a screen with a pre-populated, sorted list appears
/10 pts: Tapping on the floating action button launches the Add New Item activity
/5 pts: The Add New Item activity has all appropriate fields
/15 pts: The new item is put into the list in the correct location after saving
/10 pts: Tapping on the check box registers the item as complete and it moves to the bottom of the list
/5 pts: Tapping on the name of an item opens the Edit Item activity
/10 pts: The Edit Item activity is pre-populated with all appropriate data
/15 pts: Changes made in the Edit Item activity are properly reflected back in the list
/10 pts: The back arrows in the upper left corner work properly for both Add New Item and Edit Item
/5 pts: App does not crash on rotate (fully resetting the entire app on rotate: -2)
/5 pts: Design / Style / Appearance / Usability
/5 pts: Documentation / Report
All code must be kept in the Github repo you created as a part of your partner creation process above. We will do a checkout from Github of the latest push to the repo before the 11:55 PM deadline. Please make sure that the latest version of your report is in PDF format in the root of your repository, along with your final .apk.
Team Member Evaluations: Please fill out this form SEPARATELY FOR EACH TEAM MEMBER on your team https://docs.google.com/forms/d/1bCwa7MUaNy9vH0g3VRTvRxJb9s8HFW_a7BSRhszUIIw/viewform