Synopses & Reviews
Get thoroughly up to speed on Android programming, and learn how to create up-to-date user experiences for both handsets and tablets. With this book's extensively revised second edition, you'll focus on Android tools and programming essentials, including best practices for using Android 4 APIs. If you're experienced with Java or Objective-C, you'll gain the knowledge necessary for building well-engineered applications.
Programming Android is organized into four parts:
- Part One helps programmers with some Java or iOS experience get off to a fast start with the Android SDK and Android programming basics.
- Part Two delves into the Android framework, focusing on user interface and graphics class hierarchies, concurrency, and databases. It's a solid foundation for understanding of how the most important parts of an Android application work.
- Part Three features code skeletons and patterns for accelerating the development of apps that use web data and Android 4 user interface conventions and APIs.
- Part Four delivers practical coverage of Android's multimedia, search, location, sensor, and account APIs, plus the Native Development Kit, enabling developers to add advanced capabilities.
This updated edition of Programming Android focuses on the knowledge and developer priorities that are essential for successful Android development projects.
What does it take to build well-engineered Android applications? Explore Android's core building blocks and APIs in depth with this authoritative guide (updated to cover the Ice Cream Sandwich version of Android), and learn how to create compelling apps that work on a full range of Android devices. You'll work with proven approaches to app design and implementation—including application frameworks that you can use as a starting point for your own projects.
Delve into sensors, native development, 3D graphics, and many other topics, and discover how to build apps on the platform of your choice. If you're an intermediate to advanced programmer, you'll learn how to make great Android apps.
- Learn how to use the Android SDK with the Eclipse IDE
- Apply advanced Java concepts regardless of your experience with the language
- Create an Android user interface that's captivating and easy to navigate
- Use the Fragment API for tablet user interfaces
- Make your application compatible with Honeycomb and earlier versions
- Understand Android's unique database design issues and the role of SQLite
- Use sensors and gestures to expand your app's input beyond just tapping and scrolling
- Explore Android APIs for multimedia, location, communication, NFC, and other applications
About the Author
Zigurd Mednieks is a consultant to leading OEMs, enterprises, and entrepreneurial ventures creating Android-based systems and software. Previously he was Chief Architect at D2 Technologies, a voice-over-IP (VoIP) technology provider. There he lead engineering and product definition work for products that blended communication and social media in purpose-built embedded systems and on the Android platform.
Laird Dornin is a mobile development architect with extensive experience in Java, Android, J2ME, SavaJe, and the webkit browser library. He was a member of the J2SE development team at Sun Microsystems specializing in java.rmi and Jini technology. Laird is currently a Senior Engineer at a major wireless carrier, where he provides Android architectural guidance and Network API support to members of the carrier's developer community.
Blake Meike, Senior Software Development Engineer at Amazon, has more than 10 years of experience with Java. Hes developed applications using most of the GUI toolkits and several of the Java mobile device platforms.
With over a decade of software engineering experience, Masumi Nakamura has worked in various positions within the mobile technology arena, from building out mobile infrastructure to founding his own mobile company. He was one of the primary Android developers of the Where Android app and now is Principal Architect for the Big Data and Recommendations Group at Where, Inc. Outside of coding, he spends his time practicing Ba Gua Zhang and caring for his two cats.
Table of Contents
Preface; How This Book Is Organized; Conventions Used in This Book; Using Code Examples; Safari® Books Online; How to Contact Us; Acknowledgments; Tools and Basics; Chapter 1: Installing the Android SDK and Prerequisites; 1.1 Installing the Android SDK and Prerequisites; 1.2 Test Drive: Confirm That Your Installation Works; 1.3 Components of the SDK; 1.4 Keeping Up-to-Date; 1.5 Example Code; 1.6 On Reading Code; Chapter 2: Java for Android; 2.1 Android Is Reshaping Client-Side Java; 2.2 The Java Type System; 2.3 Scope; 2.4 Idioms of Java Programming; Chapter 3: The Ingredients of an Android Application; 3.1 Traditional Programming Models Compared to Android; 3.2 Activities, Intents, and Tasks; 3.3 Other Android Components; 3.4 Component Life Cycles; 3.5 Static Application Resources and Context; 3.6 The Android Application Runtime Environment; 3.7 Extending Android; 3.8 Concurrency in Android; 3.9 Serialization; Chapter 4: Getting Your Application into Users' Hands; 4.1 Application Signing; 4.2 Placing an Application for Distribution in the Android Market; 4.3 Alternative Distribution; 4.4 Google Maps API Keys; 4.5 Specifying API-Level Compatibility; 4.6 Compatibility with Many Kinds of Screens; Chapter 5: Eclipse for Android Software Development; 5.1 Eclipse Concepts and Terminology; 5.2 Eclipse Views and Perspectives; 5.3 Java Coding in Eclipse; 5.4 Eclipse and Android; 5.5 Preventing Bugs and Keeping Your Code Clean; 5.6 Eclipse Idiosyncrasies and Alternatives; About the Android Framework; Chapter 6: Building a View; 6.1 Android GUI Architecture; 6.2 Assembling a Graphical Interface; 6.3 Wiring Up the Controller; 6.4 The Menu and the Action Bar; 6.5 View Debugging and Optimization; Chapter 7: Fragments and Multiplatform Support; 7.1 Creating a Fragment; 7.2 Fragment Life Cycle; 7.3 The Fragment Manager; 7.4 Fragment Transactions; 7.5 The Support Package; 7.6 Fragments and Layout; Chapter 8: Drawing 2D and 3D Graphics; 8.1 Rolling Your Own Widgets; 8.2 Bling; Chapter 9: Handling and Persisting Data; 9.1 Relational Database Overview; 9.2 SQLite; 9.3 The SQL Language; 9.4 SQL and the Database-Centric Data Model for Android Applications; 9.5 The Android Database Classes; 9.6 Database Design for Android Applications; 9.7 Using the Database API: MJAndroid; A Skeleton Application for Android; Chapter 10: A Framework for a Well-Behaved Application; 10.1 Visualizing Life Cycles; 10.2 Visualizing the Fragment Life Cycle; 10.3 The Activity Class and Well-Behaved Applications; 10.4 Life Cycle Methods of the Application Class; Chapter 11: Building a User Interface; 11.1 Top-Level Design; 11.2 Visual Editing of User Interfaces; 11.3 Starting with a Blank Slate; 11.4 Laying Out the Fragments; 11.5 Folding and Unfolding a Scalable UI; 11.6 Making Activity, Fragment, Action Bar, and Multiple Layouts Work Together; 11.7 The Other Activity; Chapter 12: Using Content Providers; 12.1 Understanding Content Providers; 12.2 Defining a Provider Public API; 12.3 Writing and Integrating a Content Provider; 12.4 File Management and Binary Data; 12.5 Android MVC and Content Observation; 12.6 A Complete Content Provider: The SimpleFinchVideoContentProvider Code; 12.7 Declaring Your Content Provider; Chapter 13: A Content Provider as a Facade for a RESTful Web Service; 13.1 Developing RESTful Android Applications; 13.2 A "Network MVC"; 13.3 Summary of Benefits; 13.4 Code Example: Dynamically Listing and Caching YouTube Video Content; 13.5 Structure of the Source Code for the Finch YouTube Video Example; 13.6 Stepping Through the Search Application; 13.7 Step 1: Our UI Collects User Input; 13.8 Step 2: Our Controller Listens for Events; 13.9 Step 3: The Controller Queries the Content Provider with a managedQuery on the Content Provider/Model; 13.10 Step 4: Implementing the RESTful Request; Advanced Topics; Chapter 14: Search; 14.1 Search Interface; 14.2 Query Suggestions; Chapter 15: Location and Mapping; 15.1 Location-Based Services; 15.2 Mapping; 15.3 The Google Maps Activity; 15.4 The MapView and MapActivity; 15.5 Working with MapViews; 15.6 MapView and MyLocationOverlay Initialization; 15.7 Pausing and Resuming a MapActivity; 15.8 Controlling the Map with Menu Buttons; 15.9 Controlling the Map with the Keypad; 15.10 Location Without Maps; 15.11 StreetView; Chapter 16: Multimedia; 16.1 Audio and Video; 16.2 Playing Audio and Video; 16.3 Recording Audio and Video; 16.4 Stored Media Content; Chapter 17: Sensors, NFC, Speech, Gestures, and Accessibility; 17.1 Sensors; 17.2 Near Field Communication (NFC); 17.3 Gesture Input; 17.4 Accessibility; Chapter 18: Communication, Identity, Sync, and Social Media; 18.1 Account Contacts; 18.2 Authentication and Synchronization; 18.3 Bluetooth; Chapter 19: The Android Native Development Kit (NDK); 19.1 Native Methods and JNI Calls; 19.2 The Android NDK; 19.3 Native Libraries and Headers Provided by the NDK; 19.4 Building Your Own Custom Library Modules; 19.5 Native Activities; Colophon;