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 3, but as Android 4 only added a few things the book isn't substantially different from the previous edition. Mostly the differences amount to some reorganization with topics moved around to give a more logical progression.

Although this book starts from the beginning, it isn't a beginner's book and it does merit its "Pro" title. The reason is that, despite documenting the process of creating an Android application, through all its stages it doesn't spoon-feed the reader. It also doesn't really present the topics in an order that would be appropriate for the beginner.

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. Of course if you just want to get on with coding or already know the overall structure of Android it will just get in the way. 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 menus and chapter 8 explains fragments. Chapter 9 explains dialogs from the modern perspective of fragments but it does explain the old way of doing dialogs as well. Chapter 10 rounds off the UI section with a look at the ActionBar.

Chapter 11 takes a moment or two out from looking at using the Android system and explains some of the features of advanced debugging.

Chapter 12 deals with the lifecycle of an Android app which is a bit late in the running order if you are just trying to get to grips with the system. Chatper 13 deals with the saving state including user preferences

Chapter 14 is about security and permissions, 15 describes building and consuming services and chapter 16 deals with packages. Chapters 17,18, 19 and 20deal with advanced issues of creating an app that works with different active components - threads, alarms, background workers, handlers and so on.

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, media frameworks, 3D graphics with OpenGL, 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 is a low level look at using raw input and gestures. There are also short chapters on drag-and-drop and using the sensors.

The book closes with a look at how to get you application into the Android market.

The new edition has been reorganized to take account of Android 4 and it makes for a reasonably coherent presentation. It is also reasonably well written, although the printing quality makes the code difficult to read. It 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 that you will consult when you need to implement something in particular.