Sunday 8 April 2012

Android is Awesome. Here's Why.

To me the most impressive feature of the Android operating system is Android intents. Looking at competing mobile operating systems trying to figure out how to integrate Twitter and Facebook to their platforms makes me smile. Android got it right. The integration is not too tight and it is fair. No social network is endorsed by the platform. Everyone is standing on equal ground.

But intents can be much more than just social network sharing or Google Play URL opening!

I've been an Android user for a long time already. Still, sometimes the OS and some apps surprise me and impress me about the capabilities of the OS. I want to share few of them here hopefully to inspire more developers to think how they could integrate their apps more tightly to others.


Context Awareness
Let's say that I have agreed to meet with my friend in a coffee shop and I have typed in the meeting into my Google Calendar. (Side note: I love how easy to use the Google Calendar is as the cloud service keeps everything up-to-date on all of my devices.)

I can tap the address to see selection of apps that can give me more info about the address. I know where the coffee shop is but what I want to know is when do I have to leave home to be there on time. I open Öffi - Public Transport Buddy, an app that know everything about public transportation timetables at least in some parts of Europe. The app does not open from an empty screen but instead has both fields, start point and end point, prefilled. The app know where I am and it knows that I very likely  opened the address with this app because I want to get there. Literally all I need to do to see all public transportation connections is to tap "Go".

It is noteworthy that neither of these apps (the Google Calendar or Öffi) need to have any specific functionality implemented in them. The Android platform takes care of everything.


Second example of an app that impressed me lately is Evernote. Let's say that I arrived to the meeting with my friend and I want to make a note. I open Evernote and tap "New note". Evernote realises that I have a calendar event that is currently ongoing. It prefills the note header with the calendar event title and location. Brilliant!



Knowing What Else Is Going On
Gigbeat is one of my favourite apps. Not only have they done brilliant work with their design (especially in the upcoming new version) but the app is aware of what else is going on in the device.

The app knows where I am and it pays attention to what I'm playing on my music player (Google Music in my case). If I happen to play a song of an artist that is coming to near me the app notifies me. Again, brilliant!


What Next?
Users still hate writing on their mobile devices. The above examples all demonstrate that utilising the system tools correctly you can help your users to achieve their goals in the best case without any writing. Integrating to other apps via the amazing intent system can make your app stand up in the crowd of app!

3 comments:

  1. Intents done wrong: The Android web browser (at least in 2.2). Every time a redirect occurs a system intent is fired, i.e. if you have more than one browser installed the intent goal popup occurs. If you set another browser as default the standard Android browser is practically useless - after the first redirect (typically a login) you are using the other browser. Not setting a default browser means constant confirmation dialogs. Setting the Android browser as default means you can use it and still manually start another browser - but you can't select the browser or set another browser as default when viewing a page from another application (e.g. Google Reader). Use case: Opera Mini as "default" browser for fast access and good mobile rendering, Android standard browser for some pages that use Javascript or are otherwise "mobile optimized". The Android browser's behaviour ruins the user experience completely.

    Solution: When the decision of the default app has been done before, respect it. The Android browser should (if it insists on using Intents internally - it could just change the properties of the Webview) call the intents explicitely by class name. If I am using one specific browser I don't need the possibilty to select for every page, which is what the system view intent expresses. If the possibility to select should still exist, it should be found in the "share" menu.

    ReplyDelete
  2. @his: Unfortunately that's one of my hugest complaints about the Chrome browser. It performs redirections internally so when I follow a shortlink to a YouTube video I'm forced to watch it in the mobile website rather than the native application. They've improved the behavior in the latest version but it's still very broken.

    Even your share solution doesn't work correctly. I usually end up sending myself an SMS from the share menu and then clicking the link for proper Intent filtering.

    ReplyDelete
  3. Android intents are a step in the right direction, but there's still room for improvement. For example, you wrote that Gigbeat app knows what is played in your music player. Have you tried using it with other music players than the standard one from Google? Does it work with all music players customized by device vendors? Finally, what would I have to do to make it work with an app I wrote myself? I'd hazard a guess that Gigbeat listens to some intents broadcasted from Google Music and maybe few other players, but it won't work with any player and it certainly won't work with a player I could write myself.

    I think that for full app interoperability we need some kind of sent intents specification, i.e. "this app will send com.android.music.trackchanged with the following extras when the track it plays is changed", but I have no idea how to enforce those specifications.

    ReplyDelete