The Busy Coder's Guide to Android Development

At over 2,900 pages, this book covers everything from introductory steps all the way to very advanced topics. More importantly, this book is continuously updated to reflect changes in Android itself, with new material being added every couple of months. Since you get updates via the Warescription, you are assured of having current Android programming information at your fingertips.

Subscribe »

The Book's Structure

The book is divided into core chapters plus the trails.

The core chapters — representing ~800 pages — are set up as a typical programming guide, covering the basics of getting an Android app up and running. The book includes material on setting up your development tools, constructing a user interface, loading data from a local database or the Internet, handling the differences between phones and tablets, and much more.

The core chapters also include an integrated set of 19 tutorials, offering you step-by-step guides for creating an Android application from scratch. Hence, whether you "learn by reading" or "learn by doing", you have the material in the core chapters to accomplish your goal.

The rest of the book comprises the trails. These are linked sets of chapters covering advanced topics, organized by theme. However, while the core chapters are designed to be read in sequence, the trails are designed to be read on an as-needed basis, when you want to dive into those specific topics.

As the book is distributed in digital form, the chapters are heavily hyperlinked, both to other chapters and to Internet resources like the source code to the book's hundreds of sample apps.

Thousands of people have subscribed. Will you?

The Table of Contents

  • Table of Contents
  • Preface
  • Key Android Concepts
  • Choosing Your Development Toolchain
  • Tutorial #1 - Installing the Tools
  • Android and Projects
  • Tutorial #2 - Creating a Stub Project
  • Getting Around Android Studio
  • Contents of Android Projects
  • Inside the Manifest
  • Introducing Gradle
  • Tutorial #3 - Changing Our Manifest (and Gradle File)
  • Some Words About Resources
  • Tutorial #4 - Adjusting Our Resources
  • The Theory of Widgets
  • The Android User Interface
  • Basic Widgets
  • Debugging Your App
  • LinearLayout and the Box Model
  • Other Common Widgets and Containers
  • Tutorial #5 - Making Progress
  • GUI Building, Continued
  • AdapterViews and Adapters
  • The WebView Widget
  • Defining and Using Styles
  • JARs and Library Projects
  • Tutorial #6 - Adding a Library
  • The Action Bar
  • Tutorial #7 - Setting Up the Action Bar
  • Android’s Process Model
  • Activities and Their Lifecycles
  • Tutorial #8 - Setting Up An Activity
  • The Tactics of Fragments
  • Tutorial #9 - Starting Our Fragments
  • Swiping with ViewPager
  • Tutorial #10 - Rigging Up a ViewPager
  • Resource Sets and Configurations
  • Dealing with Threads
  • Requesting Permissions
  • Assets, Files, and Data Parsing
  • Tutorial #11 - Adding Simple Content
  • Tutorial #12 - Displaying the Book
  • Using Preferences
  • Tutorial #13 - Using Some Preferences
  • SQLite Databases
  • Tutorial #14 - Saving Notes
  • Internet Access
  • Intents, Intent Filters
  • Broadcasts and Broadcast Receivers
  • Tutorial #15 - Sharing Your Notes
  • Services and the Command Pattern
  • Tutorial #16 - Updating the Book
  • AlarmManager and the Scheduled Service Pattern
  • Tutorial #17 - Periodic Book Updates
  • Notifications
  • Tutorial #18 - Notifying the User
  • Large-Screen Strategies and Tactics
  • Tutorial #19 - Supporting Large Screens
  • Backwards Compatibility Strategies and Tactics
  • Getting Help
  • Working with Library Projects
  • Gradle and Eclipse Projects
  • Gradle and Tasks
  • Gradle and the New Project Structure
  • Gradle and Dependencies
  • Manifest Merger Rules
  • Signing Your App
  • Distribution
  • Advanced Gradle for Android Tips
  • JUnit and Android
  • MonkeyRunner and the Test Monkey
  • Testing with UIAutomator
  • Introducing GridLayout
  • Dialogs and DialogFragments
  • Advanced ListViews
  • Action Bar Navigation
  • Action Modes and Context Menus
  • ActionBarSherlock
  • AppCompat: The Official Action Bar Backport
  • Other Advanced Action Bar Techniques
  • Implementing a Navigation Drawer
  • Advanced Uses of WebView
  • The Input Method Framework
  • Fonts
  • Rich Text
  • Animators
  • Legacy Animations
  • Custom Drawables
  • Mapping with Maps V2
  • Crafting Your Own Views
  • Custom Dialogs and Preferences
  • Progress Indicators
  • Advanced Notifications
  • More Fun with Pagers
  • Focus Management and Accessibility
  • Miscellaneous UI Tricks
  • Event Buses Alternatives
  • Home Screen App Widgets
  • Adapter-Based App Widgets
  • Content Provider Theory
  • Content Provider Implementation Patterns
  • The Loader Framework
  • The ContactsContract Provider
  • The CalendarContract Provider
  • The MediaStore Provider
  • Consuming Documents
  • Providing Documents
  • Encrypted Storage
  • Packaging and Distributing Data
  • Advanced Database Techniques
  • Miscellaneous Network Capabilities
  • Audio Playback
  • Audio Recording
  • Video Playback
  • Using the Camera via 3rd-Party Apps
  • Working Directly with the Camera
  • Media Routes
  • Supporting External Displays
  • Google Cast and Chromecast
  • The “Ten-Foot UI”
  • Creating a MediaRouteProvider
  • SSL
  • Advanced Permissions
  • Restricted Profiles and UserManager
  • Tapjacking
  • Miscellaneous Security Techniques
  • Accessing Location-Based Services
  • The Fused Location Provider
  • Working with the Clipboard
  • Telephony
  • Working With SMS
  • NFC
  • Device Administration
  • PowerManager and WakeLocks
  • Push Notifications with GCM
  • Basic Use of Sensors
  • Printing and Document Generation
  • Other System Settings and Services
  • Dealing with Different Hardware
  • Responding to URLs
  • Plugin Patterns
  • PackageManager Tricks
  • Searching with SearchManager
  • Handling System Events
  • Remote Services and the Binding Pattern
  • Advanced Manifest Tips
  • Miscellaneous Integration Tips
  • Reusable Components
  • The Role of Scripting Languages
  • The Scripting Layer for Android
  • JVM Scripting Languages
  • Advanced Emulator Capabilities
  • Using Lint
  • Using Hierarchy View
  • Using DDMS
  • Issues with Speed
  • Finding CPU Bottlenecks
  • Focus On: NDK
  • Improving CPU Performance in Java
  • Finding and Eliminating Jank
  • Issues with Bandwidth
  • Focus On: TrafficStats
  • Measuring Bandwidth Consumption
  • Being Smarter About Bandwidth
  • Issues with Application Heap
  • Finding Memory Leaks with MAT
  • Issues with System RAM
  • Issues with Battery Life
  • Power Measurement Options
  • Sources of Power Drain
  • Addressing Application Size Issues
  • The Role of Alternative Environments
  • HTML5
  • PhoneGap
  • Other Alternative Environments
  • Anti-Patterns
  • Widget Catalog: AdapterViewFlipper
  • Widget Catalog: CalendarView
  • Widget Catalog: DatePicker
  • Widget Catalog: ExpandableListView
  • Widget Catalog: SeekBar
  • Widget Catalog: SlidingDrawer
  • Widget Catalog: StackView
  • Widget Catalog: TabHost and TabWidget
  • Widget Catalog: TimePicker
  • Widget Catalog: ViewFlipper
  • Device Catalog: Kindle Fire
  • Nokia X Series
  • Device Catalog: BlackBerry
  • Wrist Wearables
  • Device Catalog: Google TV
  • Amazon Fire TV
  • CWAC Libraries

The full table of contents is also available for download in PDF form.

What's New

  • Added material on notifications with Android Wear
  • Added chapters on the Storage Access Framework
  • Added material on full-text indexing and searching with SQLite
  • Upgraded to Gradle for Android 0.13
  • Upgraded to the new Play Services fused location provider API

Details

Sample Material

The Maps V2 chapter from the book is published separately and is available from Amazon for the Kindle.