Over the past couple of weeks, work has gotten very busy, even more so than usual. The little time I was still squeezing in late at night was proving to be spent mostly on trial and error within the Emulator. I made good progress, there were just a lot of test cases to run through and wiping the Emulator data every so often and rebuilding it to prevent corruption was very time consuming.
The version 1.5 update I finally posted today took as long as it did because of the time constraints and learning exercises. With most of the issues, I was able to find something that would get me 80% of the way quickly. The remaining 20% just seemed to drag on every time. However, I just kept pushing through and did end up with a really good understanding of the SQLlite and the 2.0+ contacts API interface.
In this update, The measurements can now be saved to a contact's notes field. When the app opens, it scans the phone's contacts looking for saved measurements and builds a short list for reference within the app. In addition to saving, the measurements can also be edited and deleted. Deleting is a bit of a misnomer as the measurements themselves are not actually deleted. Only the flag to indicate there are measurements to display is reset. This allows any saved measurements to persist with the contact until either new measurements are saved over the top again, or the user manually deletes the note from their contact. I also modified how I manage the advertisement display hiding the rectangle where the ads appear if there are no ads to be shown.
I am thinking about a paid version where the email could be configurable, the measurements could be stored in Metric and of course, free of advertisements. I am not sure when I will get around to that version, but it is somewhere out on the horizon.
The next steps with this application will be extending the features a little further. I want to change the way the measurements are stored within the notes field. Currently the way it is implemented, the notes field will be overwritten with the measurements. I want to change it so I can append the measurements to the existing note if one exists. I will also then need to be able to read the notes to parse out only the measurements and ignore any other text. I will also expose this as a configuration later that will allow the user to select if the measurements should be saved to notes. If not, they will be saved to a custom hidden field. I may even go as far as allowing them to select the option for using notes, as well as if it should overwrite, append and possibly which note field (1-14? that should be used)
I also want to implement a service or background task for loading the contact list and doing the more data intensive pieces. I am querying the contact database at the lowest levels possible so I am already optimized there, I just don't want any "Force Close" popups because somebody is using the application so much their contact list is huge.
Once those changes are in place, I am hoping I can then turn my focus to producing a paid version of the application. Just converting to a paid model and incorporating the Licensing API will be an experience. The first paid version may be simply the version without ads, we will just have to see.
I am going to try and follow up with a few minor tutorials exhibiting the different pieces I learned in case there are others out there looking for the same solutions I have been over the past few weeks. Hopefully it will save somebody else the time and effort I had to go through.
Here are some screenshots of the application. A couple are outdated but get the concept across: