Tonight I finally got the asynchronous downloads working perfectly for MM. I also coded the menu button to pop-up some of the options that we discussed at the meeting last week. I haven’t added my nice, pretty progress bar yet because I left the code on my work machine. I’ll probably stop in tomorrow to send myself that code really quick, though I’m sick (AGAIN!) so I’ll probably miss out on our lab activity 🙁
Most of my posts up until this point have avoided a real discussion of the actual code behind my Androids apps. I didn’t want to bore anybody with details they didn’t care about; but since it seems like some people do care, I’ll start sharing some Android coding tips! I also had the realization that if/when the lab has to replace me with another Android coder, that person may benefit from what I blog. Bus factor++ indeed!
Before I delve too far into things, I feel it would be worthwhile to think about some structure to this series of blog entries. For today I will blog some of my fresh discoveries, lest I forget them in typical programmer fashion! In the future, I will try to write a couple of entries a week with guides and gotchas written out for future Edwardslab (or any other) Android coders. Without further adieu, I shall explain a bunch of knowledge that just kicked my butt for the past couple of days! (See the Read More cut for random knowledge)
I’ve spent a while now working on little bits and pieces of code that I will need to eventually incorporate into Mobile Metagenomics. I’ve finally reached a point where I feel ready to move on to the next stage and start to synthesize all of these little ideas into something meaningful for MM. My goals for the next version essentially involve taking it out of a proof-of-concept stage and into a stage where it more or less ‘works’. I will probably leave the file browser and more friendly results view out, but most of the other goals from my talk should be included. I will at least establish a framework to later slot in all of the ideas that we discussed.
1. Download all 'file chunks' and display them.
2. Do this asynchronously, allowing the user to view results while work happens.
3. Split the program into a 'Search' Activity and a 'Results View' Activity.
4. Make the physical phone buttons work!
5. Eventually, code the rest of the event methods such that MM can be interrupted by a gTalk or gmail
notification and restart itself without loss of progress.
I had also been working on an app for myself after work, when I realized I was actually learning a lot of valuable things about more complex Android User Interface design. I may keep this around as a side project to work on for a few minutes here and there, when I need a quick break from MM. I think that learning some of the intricacies of Android UI will come in very handy in the future, and it will definitely help if I have a fun project as my learning platform!
Mobile Metagenomics is the name of my latest project. What I am trying to achieve with this Android application is a mobile implementation of Rob’s Real Time Metagenomics webpage. I envision several development phases for this application, but the first stage will likely play out as follows:
1. Create a suitable UI (striking some type of balance between preserving look&feel from the website, and Android-ifying things)
2. Generate a request that the CGI online will recognize
3. Receive the results and organize them in some manner
These three tasks represent a bare-bones version of the application, but there are quite a few things that should also be added. I would eventually like to add: A file browser feature, connection type detection & large file warning, poor connection detection & retry popup, efficient results display, perhaps display of results as they are downloaded to take full advantage of the ‘real-time’ aspect of Rob’s website.