Author: Sayed Hashimi, Satya Komatineni & Dave MacLean
Aimed at: Programmers with Java experience.
Pros: Informative and comprehensive
Cons: A bit dense and dry
Reviewed by: Harry Fairhead
Can a book this big be really what you need to master the Android operating system?
This is a update of an earlier edition that only described Android 2 and it isn't just a matter of adding material on Android 3. There are lots of new chapters and topics that were described in a single chapter have been broken out into separate topics. Overall the book is much bigger and much more comprehensive.
Although this book starts from the beginning it isn't a beginner's book. The reason is simply that despite documenting the process of creating an Android application through all its stages it doesn't spoon feed the reader.
It starts off with a useful and informative introduction to the Android project. This is important because it tells you things that other books often skip over so as to get you started on actual coding as quickly as possible. So if you want to learn about why the Dalvik VM is used and what the design objectives of Android were this is the place to start. The chapter ends with a complete overview of the Android development process and the development environment. This is perhaps too comprehensive for an introduction and might be off putting to the complete beginner. However if you are an experienced programmer it's all good information.
Chapter 2 is where you create your first application. Again rather than walking you though a "Hello World" application as soon as possible it explains in some detail how to get the SDK and Eclipse set up and how to use the IDE. By the end of the chapter you have learned a great deal about Android development that takes you well beyond what most books introduce along with "Hello World".
The rest of the chapters tend to keep up this pace and information density. Chapter 3, 4 and 5 are about resources, content providers and intents respectively.This represents an improvement from the earlier edition in that more space is devoted to each topic.
Chapter 6 looks at building user interfaces and using controls in detail. This takes each of the standard controls in turn and explains how they work. This is more than just a rewrite of the manual and it does succeed in saying useful things.Chapter 7 explains how to use memories and chapter 8 repeats the detailed look at user interface components but focusing on menus and dialogs.
Moving on from the UI chapter 9 deals with saving state including user preferences and chapter 10 is about security and permissions. Chapter 11 moves outside of the phone with a look at consuming services with an example of using Google translate. Chapters 12 and 13 are about exploring packages and handlers. Chapter 14 deals with the important topic of broadcast receivers and long running services and chapter 15 is on the alarm manager.
Finally we return to some slightly less "heavy" topics with 2D animation, exploring maps and location but not for long. There are chapters on the telephony API (does anyone actually use an Android phone to make a call?), media frameworks, 3D graphics with OpenGL, Live folders, home screen widgets, Android search, text to speech, touch screens, sensors and the contacts API. It is something of a surprise that touch comes so late in the book but it really isn't a problem.
The book closes with a look at how to get you application into the Android market and some chapters specifically on Android 3, fragments, ActionBar, remote views and so on. The separate treatment of Android 3 is more a reflection of the way that programmers have to work with it rather than a failing of the book. Presumably we will have to wait for Android 4 before a single coherent account is even possible.
This is a book that tells you a lot about Android development and even more than the version 2 edition. It is well written and explains things clearly but it makes no attempt to dilute the information with jokes or anecdotes - it just gets on with it. It also doesn't go in for complete examples and expects you to know what you want to do with the information. As a result this is not for the beginner and some intermediate level programmers may find its approach too dry to swallow. Personally I liked it and it really should be on the bookshelf of every serious Android programmer, even if at its present size it would strain the average shelf. This isn't a get-you-started guide, but it is a get-you-there resource.