Author: Sayed Hashimi, Satya Komatineni & Dave MacLean
Aimed at: Programmers with Java experience.
Pros: Very informative and comprehensive
Cons: A bit dense and dry
Reviewed by: Harry Fairhead
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 is about resources, content providers and intents. Chapter 4 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 5 repeats the detailed look at user interface components but focusing on menus and dialogs.
From this point on the book starts to look at more advanced facilities, not all of which you will use in a given application. Chapter 6 is on 2D animation, Chapter 7 location and security and Chapter 8 is on building and consuming services. From here the book moves into multimedia and advanced UI concerns - audio, video and telephone, 3D with OpenGL, organising preferences, Live folders, home screen widgets, search and text-to-speech. As you can tell the coverage is extensive and fairly detailed.
Oddly you have to wait until Chapter 16 before touch screens and gestures are discussed. Either you think this is reasonable, because leaving it to the OS is the way to go, or you think that perhaps there are still innovations to be made in multi-touch so this should be earlier and covered in more detail.
The final three chapters form a closing set of topics that lead on to other things. Chapter 17 introduces a WebKit alternative approach to building Android applications. Chapter 18 discuses the Android market and becoming a publisher, and the final chapter looks to the future and what else there is out there to help you master Android development.
This is a book that tells you a lot about Android development. 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. This isn't a get-you-started guide, but it is a get-you-there resource. Recommended.