Author: Joseph Annuzzi Jr, Lauren Darcey & Shane Conder
Publisher: Addison Wesley
Date: November 14, 2014
Audience: Intermediate Android programmers
Reviewer: Harry Fairhead
Advanced Android is not something most books claim to cover. If you are more than a beginner, is this a good follow on?
What exactly is "advanced" Android?
Difficult to say but it is clear that any book claiming to be advanced has to cover things that aren't in beginners books.
The book is divided into eight major sections, with a ninth consisting of five appendices.
Part I is about advanced design principles but it is really just a collection of general topics - threading and asynchronous, services, SQLite, content providers, intents and notifications. Each is covered in its own chapter but they are very short chapters. Most books on Android would deal with these topics and so this is not particularly advanced information. It is true that they wouldn't normally be treated as the first topics in an Android book but simply missing out the introductory material doesn't make something advanced. Each of the chapters is very short and the examples tend to be presented as long listings following a brief discussion.
Part II is about the UI and here we learn about menus, using input including softkey boards and gestures, accessibility and best practices for tablet and Google TV. The big problem is that it makes no mention of Android Studio and how you can use its designer to build the UI, manage themes and styles and so on. It also doesn't make clear the help you can get with regionalization and working with different form factors and resolutions in Android Studio.
Part III is on the common Android APIs - Networking, Web including WebView, location based APIs, multimedia APIs, telephony, sensors, Bluetooth, USB, and WiFi. As before most of the chapters are very short and as a result the treatment isn't "in depth". Indeed if you were expecting a Bluetooth example all you get is a "how to check that Bluetooth is supported" and a brief note on how a connection might be made. The same is true for the section on USB and in fact a lot of the coverage reads more like an attempt to make you aware of what is available rather than an advanced in-depth explanation.
Part IV introduces the Google APIs - location, maps, cloud messaging, in-app billing, analytics and Play Game Services. Again the coverage is very shallow with everything other than the location and maps sections being so slight as to be more like overviews than "getting started with" and certainly not "advanced".
Part V deals with graphics. Starting from the basics of drawing on the screen using the canvas it then goes on to basic animation techniques. The coverage is only just adequate. For example, there really isn't any explanation of the Canvas coordinate transform system that lets you work in more advanced ways. In fact the transform idea is introduced only with reference to drawing bitmaps on the Canvas which is a very small part of the whole.
Then on to 3D graphics with OpenGL ES and how to make things go faster with the NDK. At best these chapters get you started on the topics - you do get as far as creating a 3D textured cube but there isn't much help on how to structure a larger application. It is a reasonable if fast and not very deep introduction. Again there is no mention of using Visual Studio with the NDK but in this case this is forgivable as it is all so new.
Part VI is titled "Maximizing Android's Unique Features" - and it might make you wonder what these are. The first unique feature is the creation of app Widgets, and working with intents. Next we have a chapter on application search, working with cloud to device messaging and finally managing user accounts and data. I'm not sure I would call these topics "unique features" but this doesn't really matter.
Part VII is "Advanced Topics In Application Publication And Distribution". The topics covered are: internationalizing your app, Google analytics and obfuscation and other app protection techniques. Not sure these are particularly advanced but they are legitimate topics.
Part VIII is a single chapter and could just as well have been tacked onto the end of Advanced Topics. It deals with preparing for future editions of Android and it mainly outlines what is coming in Android L - which turned out to be Lollipop.
The book closes with appendices, one of which is including one on Java for the Android programmer - which probably shouldn't be necessary for an advanced Android programmer.
Overall, this is not a book for the beginner because it doesn't start at the beginning. Overall there is no sense of progression within the book, it is simply a collection of topics grouped together.
It might suit the intermediate Android programmer, but only if you want an overview of a topic. In general the coverage isn't deep and you can find out as much from the documentation. The book covers mostly topics you would find in the second half of almost any book on Android and so the real advantage is that it might be slightly easier to carry about due to it being only 500 or so pages.
It does give you a taster of a lot of more advanced APIs, but the amount of explanation provided varies greatly and the topics aren't arranged in a particularly logical way. Somethings are motivated, explained and and example provided. Others are simply presented as if you already know about them and sometimes with a short example and in many cases you are simply told that they exist and what they do.
The book might serve the reader as a guide to what is available in the Android APIs before they seek out more detailed information and guidance.
Not an essential Android text.
For recommended Android titles see All About Android Books in our Programmers Bookshelf section.