Archive for July, 2013

Our first Android App… a Palm Pilot Conversion

Tuesday, July 23rd, 2013

nexusA client recently asked us to develop an Android application for the Nexus 7. While we are very familiar with UI’s and had developed a few iOS apps, this was our first foray into the Android world. How different could it be from the iPhone? It’s just a different language, right?

One of the first things we noticed is the level of development required. The iPhone tool-set seems to provide more default functionality. My first try at rotating the screen on the Android tablet was a complete surprise. All my data disappeared! Saving the state for screen rotation? This was unexpected. There are lots of methods for saving state in an Android app, but it turns out in the simple case you can get the SDK to do it for you. Why wouldn’t that be the default?

Our client needed to retrieve data from legacy factory-automation hardware using a proprietary protocol over Bluetooth. The goal was to replace an obsolete Palm Pilot mimicking the Palm functionality. Changes to the custom hardware would have been prohibitively expensive.

With Palm code in hand, we set out reverse engineering the software and documenting the protocol for the interface. The first snag was the UUID. Their hardware wasn’t broadcasting service UUIDs, instead it was using the Serial Port Profile. Once that was out of the way, the Android device wanted to pair. There was no documentation available. Luckily, after a few trial passwords we found one that worked. Finally paired with the device, it was time to give the protocol a try.

Reverse engineering the protocol was actually a good thing in this case. We became familiar with both the method the protocol used and the way to handle it. Once we understood the pattern, we generalized it for most of the protocol handling. Protocol handling complete, we moved onto the user interface. While the Android Listview is the standard way of doing things, it wasn’t as straightforward as I had hoped. One of the tutorials referred to it as, “powerful but slightly complicated.” I have to agree!  We did get it working and it has a fairly standard look to it; a simple black background with list items to select.

Testing the app brought a few more items to our attention. Once resolved, we were able to deliver the app to our client. This is one area which is vastly simpler than iOS deployment! We mailed the app to our client and after a few small changes, the app was up and running on their tablet. For business applications deployed internally or on a limited basis, this certainly seems like the way to go.

With one successful Android app under our belt, we are looking forward to the next one! If you’re looking for assistance with converting an old application to a mobile platform or have a new need for a mobile application, please contact us!