In this book, unlike other books on Android, you will not only learn how to program for Android but you will gain a thorough understanding of its architecture. Indeed, this book covers much more ground than other books on the subject and each topic is supported by source code examples that you can "fork" on GitHub and use for your own projects. This is what makes it an invaluable reference book for any programmer coming to Android from Java, C++ or other mobile platforms such as the iPhone.
This book is divided into four distinct parts:
"Part 1: Tools and Basics" where you learn to familiarize yourself with the various development tools that make up the ecosystem of Android including a quick introduction to Java.
"Part 2: About Android Framework" where you will learn the necessary foundation to build robust Android applications.
"Part 3: A Skeleton Application for Android" will teach you Android Programming in more depth. You will learn to build a GUI that can run both on a tablet or on a smaller screen, the foundation for you to connect to web services using REST and more.
Finally, "Part 4: Advanced Topics" introduces you to more advanced concepts such as the search interface, geolocation & maps, multimedia, sensors, NFC, gestures, contacts and media-social and how to use the NDK to build Android applications in C++.
I own both the first and the second editions. I've compared the contents of two editions and I can stated that the book has been completely revised by the authors to clarify the text in several places and to update the examples to Android 4. For example, Chapter 6 of the first edition (Effective Java for Android) was merged into Chapter 3 and topics such as callbacks and overrides have been added.
Here is a non-exhaustive list of the improvements between the second and the first editions:
- A section called "Alternative Distribution" has been added to Chapter 4 (Getting your application into User's Hands), which describes how to publish your application on other distribution networks than Google Market (namely Amazon and Verizon).
- Chapter 6 (Building a View) was also largely revamped with the addition of sections on multi-touch and debugging & optimizing views.
- Addition of Chapter 11 (Building a User Interface) represents the addition of over 20 pages of new material that deals with the design of graphical user interface and takes into account the tablets. Chapter 7 (Fragments and multiplatform support) has also been extended to cover tablets.
- Chapter 14 (Search) was also added. It deals with Android's search interface and how to use it in your own applications.
- A section on StreetView was added in Chapter 15 (Location and Mapping).
- In chapter 17 (Sensors, NFC, Speech, Gestures, and Accessibility), the "P2P Mode" has been revised to cover the notion of "beaming".
- A section in Chapter 19 (The Android Native Development Kit) was added to describes how to edit C++ source code in Eclipse.
In all, close to 60 pages of new material have been added for this edition!
The code examples have also been revised and updated to Android 4 and their organization was also changed. Thus, in the GitHub repository, examples are now organized by subject rather than by chapter number to facilitate the search for a particular example by the reader.
In conclusion, Android Programming 2nd Edition, is still THE book to put in the hands of programmers who want to learn not only how to program Android, but also how to make well designed and robust Android applications.