My latest post on SG-GTUG
As we eagerly wait for the “imminent” next major Android release here are a few things I wish to share.
(1) At the recent MAX session, Adobe has announced Flex SDK “Hero” and Flex Builder “Burrito”. Now, developers can build mobile applications for Android and run them using the Adobe AIR runtime supported by FroYo. The FAQs on these Adobe tools can be found here. The getting started page is here. The good part is that Adobe has tried to maintain similar development paradigms across desktop, web and mobile platforms. So, it should be easy for experienced flash developers to build compelling Android applications.
(2) This one is about a month old, but many people had asked me in the SG-GTUG Android session about Augmented Reality. Qualcomm has released a QCAR SDK to develop wonderful AR applications. More details on the SDK here.
(3) Lot has been said about Android and fragmentation. While there is some truth in those statements, the fragmentation issue has been blown out of proportion. Dan Morrill – Android’s compatibility and test lead – has in this old blog post very articulately explained how Android tackles fragmentation problems at the user level and the developer level. He gives an in-depth explanation of the Android Compatibility Program and how Android’s Market application plays an important role in enforcing compatibility requirements. However, he skirts the issue of application performance across platforms with differing hardware, drivers etc.
(4) With several Android tablets announced by many vendors, reddit community is maintaining a full list here for easy tracking. Though very few Android tabs have made it to the market so far, Q1 2011 might see a real surge in these numbers. The real concern among buyers is that most of these tablets are still running Android 2.1 and below and there is no guarantee of upgrades. Probably many of them are waiting for the new Android 2.3 or 3.0 to be made available before hitting the market.
Until next time, cheers!
Twitter has made me so lazy that I rarely post on my blog these days. Also had been traveling over the last 2 months so had been a bit busy. Anyway, SG-GTUG had been kind enough to invite me to give a talk on Android at Google, Singapore on September 18, 2010. Bharathi Subramanian from SQLSTAR was the program chair for this event.
I spoke at length about the Media framework of Android. While I clearly appreciated some features such as ease of writing OpenGL-ES applications on Android (as the platform does the EGL config stuff by itself and all the developer has to do is to put together a few GL calls), I reserved my choisiest of abuses for MediaPlayer and MediaRecorder classes in android.media. This was also a result of the frustrations I had been through over the last 9 months dealing with these 2 monolithic classes.
One can argue that they simplify the playing and recording of audio/video content and a developer has to code precious little to get playing and recording of content done. Agreed, BUT there are no other classes to process video and audio content at the SDK level. As I had mentioned in the talk, the MediaPlayer.getFrame() method had been discontinued after API level 1 and MediaPlayer.snoop(), used in some live wallpapers bundled with the SDK, is annotated @hide. I had put up a feature request to expose OMXCodec.h to the NDK so that developers could build powerful media applications.
I thoroughly enjoyed speaking to a lively audience, who bombarded me with questions, some of which I couldn’t provide a clear answer to
But all in all it was time well spent. Special thanks to SPT Krishnan who runs the group and Louis Shue for organizing the event flawlessly. I am attaching my slides to this post. Feel free to use them if you find anything useful. It would always be better if you could cross-check their accuracy quotient
My new post on SG-GTUG blog. It is about Multitasking in Android OS. Would be writing more often from now on the GTUG blog. The link to the original post can be found here.
Enabling multitasking for third party mobile applications can be a tricky proposition in the best of times. Rogue applications hogging memory and draining the battery are most cited concerns – this is common knowledge. It is in this context that Android’s philosophy on multitasking is a refreshing change. Tim Bray has a great overview on Android’s multitasking functionality in his Android Developers blog post. “All applications are created equal” and “All applications run all the time” are the tenets on which the system has been designed and designed elegantly at that. Contrast this with once popular co-operative multitasking systems that depend on user applications explicitly ceding control failing which the device may become unresponsive and you will be able to appreciate the philosophy of Android better.
But the real deal on Android is not multitasking on its own, it is the overall way in which UI components, applications and background components gel together to create a fabulous user experience. Consider an example: Go to the gallery, select a picture to be uploaded to facebook. What the user sees is a Toast prompt saying something on the lines that the picture would be uploaded, further suggesting the user to look at the notification bar for the progress of the upload operation. The user can, in the meantime, select another image for upload and Android obliges. What the user doesn’t see is a upload progress bar blocking further uploads. Instead the nifty notification bar/window takes over that mantle. A background service performs the upload operation and updates the notification window leaving the main application window open for further user interaction.
What if the user chooses to switch the application after choosing to upload the picture? I know that app developers want users to stay on their application longer and may not be comfortable with the user “exiting” their application even though the operation is not fully completed. Worst still what if the operation fails? The notification window solves this problem as well. Whether the user gets an intimation that the operation has failed (say via a Toast) or the user voluntarily checks back in the notification window, clicking on the appropriate notification will lead the user back to the application. Developers even have the freedom to create a custom layout for the notification space. For example, the notification window can contain the application’s icon, action buttons or progress bars. A good starting point for exploring this functionality is RemoteService.java present in ApiDemos.
As explained above, Android spins an excellent mobile experience built around a unique philosophy on multitasking. It is not multitasking itself that makes a difference, it is how applications use the power of multitasking, not just for providing the user with advanced functionality, but offering him a hassle free experience that counts.
Until next time, cheers!
Right! Last weekend, I posted my first article on Singapore Google Technologies Users Group’s blog. Am replicating it verbatim.
Android has been the fastest growing Smart-phone OS this year. The Market has just gotten its 50000th app and its scaling these numbers quickly. Devices such as Google Nexus One and more recently HTC’s EVO 4G & Droid Incredible have raised the bar and raised it again in quick succession.
This is not without reason. Solid software components coupled with market winners such as Droid helped Android ride the tide. Add to it, a wonderful development environment for application developers to produce applications that are not merely stripped down versions of their PC counterparts, but give their PC cousins a run for their money. With the 1 GHz SnapDragon processor from Qualcomm, speed is not as big an issue with mobile devices as it was two years ago. Nexus One introduced Android to SnapDragon and HTC EVO 4G has just stretched the envelope – it is HD capable, has two cameras, boasts of a 4.3” touch screen, supports WiMAX, packs 1 GB internal memory and lastly has a HDMI out port. So, we can now leave our portable media player at home and carry Evo while on a vacation. This is the most technologically advanced phone running Android to date.
Now, the gripes. Fragmentation, I hear developers screaming in unison. Starting from 1.5 to 1.6 to 2.0 to 2.1 to 2.1 update1, too many versions of the OS are running on devices currently in market. This makes is difficult for developers to have 1 app for all these devices. As the platform has evolved quickly over the last 18 months, this is understandable. The next update would be in the near future, may be as early as in May and is titled Froyo (version 2.2). The one after Froyo is titled GingerBread. It seems Google intends to streamline the platform with these two releases and address this issue of fragmentation. Also, Andy Rubin, VP Engineering at Google, has confirmed that Froyo would have support for Flash run time which is a major differentiator for Android devices running Froyo and above.
All in all, things look promising. With 18 phones scheduled for this year, Android is going to gain traction and throw in the tablets/net-books and things look brighter. As I wind this up, I wish to quote Eduardo Cocozza, Director of Software Experiences and Ecosystems at Motorola, who will be presenting the TU201 session at the MOTODEV Summit in SP, Brazil on May 5th. Here is his advice to developers making android applications.
a) Be Relevant: great applications solve user needs and carriers problems better than other available solutions. Solve something others are not doing or doing poorly…
b) Be Cool: innovate (user interface, response speed, and social networking topics): do something that everyone will be talking about; word of mouth is still a valuable promotional tool!
c) Be Simple: provide completeness to user intent; think in having your parents as your end user when designing apps. If your parents can understand and use it, you are on to something…
Until next time, cheers!