Author: Frank Ableson & Robi Sen
Publisher: Manning, 2nd Ed 2011
Aimed at: Experienced Java programmers
Pros: An advanced treatment of Android
Cons: Not suitable for the beginner
Reviewed by: Harry Fairhead
This is a book that will be appreciated by the right reader - so find out about it before you decide if it's for you.
If you are looking for a beginner's book this one isn't for you. Apart from being able to program in Java you also need a fairly mature attitude towards programming to be a candidate reader.
The book starts off with the usual and mostly unnecessary recap of what Android is and how it is set up. However the pace picks up before the first chapter is over. In section 1.4 we are introduced to the first of the architectural innovations in Android - the intent. We learn about activities, services, broadcast receivers and content providers. This is before we have met the Eclipse IDE, the simulator or written a hello world program. If you are a beginner than this might seem too abstract but it you have already dabbled in Android development this is a good way to go.
Chapter 2 discusses the SDK and the development environment and this is much the same as any introduction to Android.
Part 2 of the book is called Exercising the Android SDK for no particular logical reason. It finally does get onto the topic that most books treat early on - i.e. creating a UI. However it does so from an architectural point of view - creating an activity, working with views, resources and finally the manifest file. This is a good order to do things in if you are already fairly happy about the general approach to building a UI. Chapter 4 returns to intents and services and we have an example that implements a weather checker and similar services. Chapter 5 deals with data - the file system, database and content provider. Chapter 6 is into networking and web services and has an example of REST and a discussion of whether or not SOAP is a good idea - it isn't.
From here we move deeper into the API - telephony, notifications, alarms. graphics, animation, multimedia and location. The level is usually deeper than most books on the same topic. For example, in graphics there is a short section on using OpenGL ES.
Part 3 of the book is called Android Applications and Chapter 12 dives straight in with a more extended example of a field service application. The complete design of the app is outlined including its division into activities and services. Chapter 13 doesn't really fit the description of this part of the book because it is about creating applications in C using nothing but a suitable compiler. That is this is the creation of a raw C program to run under the Linux OS that Android is without the use of the NDK which is covered in a later chapter.
The final part of the book, The Maturing Platform, is just a collection of topics that didn't fit elsewhere. Chapter 14 is on the hardware in the form of using the Bluetooth and sensors. Chapter 15 is about Integration, i.e. using Android with web site such as LinkedIn. Chapter 16 looks at an alternative development environment, i.e. web development for the Android's WebKit browser. Chapter 17 concentrates on the AppWidget, i.e. an app that runs on the Android's home screen. Chapter 18 deals with localization and Chapter 19 explains the use of the NDK and creating C extensions for Java applications.
If you are a beginner, or even a little unsure about writing Java, keep away from this book. Its ideal reader is someone who has some idea of how Android works or who has created an app for another phone platform. If you are such a reader than this will be an essential acquisition. It is the only reasonably advanced book on Android I have discovered - so just go and buy a copy.
The 3rd Edition of the book (see Sidebar) has been revised to cover Android 3.0 and Renderscript. It has three new chapters: Chpater 20 Activity Fragments; Chapter 21 Androic 3.0 Activity Bar; Chapter 22 Drag-and-drop.