Archive for category Android
|This week-end, I decided to upgrade my “old” Nexus One smartphone to the latest (and greatest) Android version (4.1.1 aka Jelly Bean) although Google stopped shipping upgrades for this phone with Android 2.3, aka GingerBread. So, as you guessed, it requires to “root” the phone, i.e. to bypass system protections and to allow to install new software on it.The Android developer community is very active, there are a lot of information available on the web to do so, sometime somewhat cryptic, and not really step by step instructions.I am quite used to do this on iPhone, since several years now, but I am totally new to this on Android. I am using this blog entry to remind me the steps I took and – hopefully – to help others to decrypt existing tutorials. This is by no mean a complete step-by-step tutorial for rookie, rather a complement to the tutorial you will find on the net.Jelly Bean for Nexus One is made available by TexasIce on XDA Forums. Many thanks for the great work !Existing tutorials are available (part 1 and part 2) but I followed a quite different path.|
Step #0 : be sure to have the lastest Android SDK installed.
Step #1 : Install Black Rose bootloader. Although theoretically possible, I couldn’t manage to do this from Mac OS X. Black Rose distribution provides a Linux and Windows binary to automate the process to the maximum. Just launch it as root, look at your screen, wait for a couple of reboot … done !
I lost an hour because I did not start Black Rose as root on linux and it blocked during the process on
<waiting for the device>.
Be sure to start Black Rose as root !
I used a Virtual Machine with Ubuntu Natty and attached the Nexus One USB to the Virtual Machine – worked like a charm.
Step #2 : apply a small patch to HBoot, required for Jelly Bean
adb reboot bootloader fastboot flash hboot hboot_jellybean_260-8-168.nb0 fastboot reboot-bootloader
You should see “Jelly Bean” on the second line
Step #3 : Flash Jelly Bean. I downloaded the TAR file (not the ZIP)
First wipe out everything from the device
fastboot erase userdata fastboot erase cache
Then flash the system
tar -xf <release>.tar.xz fastboot erase system fastboot flash system system.img fastboot erase boot fastboot flash boot boot.img
Step #4 : Install Google App.
At this stage, Jelly Bean should start on your Nexus. It took me a while to realize that Google Apps are not installed by default. Consequence : Contacts are not synced with your Google account and – most importantly – no Google Play ! So it is not possible to install additional applications. You’ll have to install them yourself to get access to Google Now, Google Accounts (and synchro), Maps and Google Play !
Apps are available on XDA Forums as well (GApps 7/13 at the time of this writing)
Step #4.1 : I installed GApps using a custom recovery application : ClockWork. Download and installation instructions are here.
Step #4.2 : reboot in recovery mode to access ClockWork, then
use the menu system to put the Nexus One in USB Storage mode
- Copy GApps.zip to the flash card
- Use ClockWork’s menu to install GApps
and voilà you should have Jelly Beans + Google Apps running on your Nexus One.
A few things are not working so far :
- the Camera
- the trackball button to wake up the device
But the package is alpha software, so do expect updates and improvements in the coming weeks
I upgraded with 20121113 nightly build (resuming my procedure from Step #3). I used the simplified update with
Also, clockwork do not need to be re-installed, it still lives in the recovery partition.
The system is much more responsive. The camera and trackball button work as expected.
I also used M2SD to move app to SD card. (be sure to partition the card as required)
You’ve probably already encounter QR Codes, these signs you can scan with your mobile’s camera to get some extra information about a product, a song, a TV program etc …
While there are many QR generator application available on the Net, I recently found a Business Card generator. It is able to generate either VCARD or MECARD format, as well as a contact PDF sheet ready to send to the printer. (MECARD is a special encoding of personal information, suitable for QR Code Encoding. This was popularized in Japan by NTT Docomo)
And, … it’s free
I tried it with QR Reader on the iPhone and found it particularly well integrated. In particular MECARD can directly be added or merged to your address book.
Have Fun !
|First, some disclaimers :
I am an iPhone user, fan and application developer. I am using iPhones since day #1, I first owned an iPhone 1G, then an iPhone 3G.
I am a new Android user, I had no previous experience of Android before 2.2, so I will not write about the speed boost or the best new features, just because I do not (want to) know what is new and what is not.
I rather would like to concentrate on the differences with my iPhone 3G, running iOS 4.0.
I will not comment about the hardware pieces, such as the Camera, the batteries etc … I’ve done that already.
A Google Centric World
The first big difference after power on, when I started to configure my most important applications, such as email, calendar and address book : I had to think Google. Obviously, Android is Google-centric and all its data are coming from Googles services such as email, calendar and contact.
Over the air synchronisation is great. Whatever changes in your contacts or calendar is immediately shared amongst the web and your phone. iPhones offers this as well but for an extra fee : a MobileMe subscription.
No big difference for me. A small advantage for the iPhone because no additional software installation is required (Yes – I do consider iTunes as already installed)
Overall, I found the Android general user experience less intuitive, here are a couple of examples :
There are 4 buttons on the bottom of phone : Back, Menu, Home, Search + in addition to the scroll wheel. This is 3 too much. I like the simplicity of the the one button iPhone. As a user you always have to think about which button to click on : do I have other options available through the “Menu” button ? Where the “back” button will bring me back (it is always a surprise move for me). The only button I feel comfortable with is the “Home” button, similar to what I am use to on the iPhone.
“Settings” application contains many options, it is not always clear where to find what option.
Third-party application suffers from lack of coherence and lack of “user interface guide lines” for application developers. Some of them are great (Twitter for example), some are not (no name – sorry), making the whole user experience a little bit like a box of chocolate : you never know what you gonna get.
There is less space between keyboard keys, leading to more typing mistakes, at least with my fat fingers. But I understand this is really subjective.
About the typing experience, Android displays a set of suggested words from the dictionary while typing. I first love this function as it allows users to pick a word before completely typing it. Then I realize this interrupts the typing flow and divert your mind away from the sentence you’re typing. After a couple of days I surprised myself trying to ignore these suggestions and keep my mind focusing at the task, i.e. typing.
On the other side, I really like the notifications in the task bar, it allows to have a quick view on recent events such as unread mail count, unread tweets or new Facebook notifications. This is non intrusive and always available. I miss an equivalent on the iPhone.
More advanced usages
Because Google does not try to control its platform at all cost, Android has some advanced features not available on every iPhone (although some of these are now available with the recent update to iOS 4)
The multi-taksing comes first on my list, your applications stay active in background, and continue to play music, poll network services etc … iOS 4.0 just introduces this possibility too if you own at least a 3Gs. Platforms are equivalent now in this respect.
However, Android allows a much more fine grained application control with possibilities like “Force Stop”, “Clear Cache” and check various system statistics, such as memory used etc … While this is great control for a Geek like me, I doubt this is something my grand mother can understand and will use.
3G tethering to WiFi is close to multi-tasking in my favorite advanced feature list. It allows to turn your phone into a portable hot spot, delivering wifi connection to clients, through the 3G subscription. This is the reason why I will keep the Android phone in my bag when traveling : to let my iPad / MacBook connect to the 3G network through the phone.
iPhone’s iOS 4 offers tethering through USB or bluetooth only.
The camera is not part of my day-to-day phone experience (I prefer to carry along my heavy Canon DSLR to take pictures), although the common advise : the best camera is the one you have always with you.
The Camera control application allows to zoom, control the white balance and the flash. It also allows to record movies.
As said in the introduction, I do not own an iPhone 3Gs, so these are new welcome additions for me.
Android Application Distribution, aka the Android Market
The Android market is the equivalent of Apple’s App Store. This is the place where you can find (and sometimes buy) applications for your phone.
As an end user, the thing I dislike about Android Market is that it is only available on the phone. Using a small screen is not the best browsing / buying experience ever. I’de love to have a web based Android Market where I can select and find the applications I want, then, an over the air provisioning to the phone.
As a developer, on the other side, I do love Android Market because it makes your application available to end users immediately. There is no review or approval process. While this is great to be able to quickly push updates to your users or customers, it also leads to the very variable user experience I described above.
Misc. good and bad surprises
One very bad surprises I had during these two weeks of Android utilization is the way it sometimes merged my contact information. Two contacts in my address book, with similar first or last names are merged together, bringing all the phone numbers and email address into the same contact.
I first thought about an issue in the synchronization software I was using, but after some researches on Google, I found that the is the normal behavior of Android’s Contact application and this is indeed made on purpose ! (although a bug has been filled for inappropriate merging attempts)
This leads me to the good surprise. The Android community is extremely active and vocal (probably never encumbered with NDAs neither), making problem solving and troubleshooting extremely easy, both for end users and for developers.
So, what are my conclusions after 20 days with an Android phone in my pocket and one application developed ?
Android is a powerful system, robust, fully featured and an extremely pleasant platform to develop for.
To me, it looks like a phone made by engineers. It lacks end user interface polish and user interface coherence for third party applications, it lacks simplification. I’d love a system with less functions, buttons and easier to use.
When it comes to software design – I like to remind Saint Exupery‘s thought : “Perfection is not when there’s no more to add, but when there’s no more to remove”
Power users will love Android. I am back to my iPhone.
@fmallefait pointed me to this article fromAppleInsider : “iPhone 4 and iOS vs. Android: desktop and cloud services” which perfectly complements this post.
As promised, I started looking at the Android development platform and, I must say, I am quite surprised by the results.
First, Android uses the Java programming language as language of choice, combined with a Google made class library. In this respect, my learning curve was much shorter than it was with Objective-C and Cocoa. I had to install and get used to Eclipse, but I could work over that too (although there is an Android plugin for NetBeans too)
Secondly, once we get over the basic application programming principle and life cycle, I am surprised how quickly I was able to assemble something and how few lines of code were required.
|I decided to port my Maxi80 iPhone application to Android.
I was pleasantly surprised that the Android MediaPlayer class is able to read ShoutCast stream, out of the box, starting with Android 2.2. I decided to take the quick an easy way : let Android connect and decode the stream and piggy-back maxi80.com‘s web site to get the song cover and title.
Unlike iPhone OS, Android let you run applications on the background, allowing you to enjoy the music while using your phone for other tasks. (I will update the iPhone application – as soon as iOS 4 will be released – to provide similar behavior for iPhone users)
The result is surprisingly compact : about 200 lines of code. Half of them to manage the player and the other half for the (simple) user interface.
Should you own an Android 2.2 device, the application is available on the Android Market.
|I just acquired a Nexus One. Although I am an happy iPhone 3G owner and user, I wanted to get a Google branded phone for two reasons :
First, now that Google announced they will stop selling it, it will probably become a collector piece. Secondly, I wanted to start exploring both Android user experience and Android as a development platform.
After having spent a couple of days with the Nexus One, I am pleasantly surprised both with the hardware and the software. I will write more about the software part in a separate note.
Things I like on the hardware side :
- Replaceable battery. I never needed to replace my iPhone battery, but I like the idea the option is open.
- Replaceable memory card. The MicroSD allows to increase memory capacity if needed.
- Better camera (but I am using an “old” iPhone 3G, I never tried the 3GS or 4G yet)
- Standard USB plug for charging – alleviate the need for proprietary cables in my bag
I do intent to write a more detailled note covering software and end user experience in the coming weeks.