Friday, 16 July 2010

Android fragmentation

In a recent blog post titled Android: write once, debug on every handset thats out there Hartmut Seichter complains about incompatibilities in the Android Camera API. As we found out last Monday when handing out our new T-Mobile Pulse phones to students taking part in the CloudBank evaluation, these issues are not limited to low-level APIs but even occur at the highest levels: the behaviour of Intents (re-usable software components in Android).

The CloudBank app uses a standard Android Intent to record audio. As this is part of the core Android API and behaves consistently on all HTC phones and SDK emulators across different Android versions, we did not even think of testing audio recording on our T-Mobile Pulse phones. Our students however jumped straight into it and found that there was no way to use a recording and go back to the CloudBank app.

Behaviour after recording: left Android standard, right T-Mobile Pulse

It turns out that either T-Mobile or Huawei, the manufacturer of the phone, have customised this Intent: Instead of showing "Use this recording" and "Discard" buttons after recording, the Pulse does not show any buttons at all but instead has options like "Share" and "Set as Ringtone" hidden in the menu. Congratulations T-Mobile/Huawei, you just have broken every app out there using the sound recorder intent on your phone!

On a technical level, the return values of the Intent were screwed up accordingly and it took us two whole days to find a work-around for Pulse phones that mimicked the standard behaviour and made sense to users! (Well, at least half of that was spent on getting the Pulse to work with the Android Debugger Bridge, but that's another story...)

No comments:

Post a Comment