The Busy Coder's Guide to Android Development

At over 2,700 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

  • Key Android Concepts
  • Choosing Your IDE
  • Tutorial #1 - Installing the Tools
  • Android and Projects
  • Tutorial #2 - Creating a Stub Project
  • Contents of Android Projects
  • Inside the Manifest
  • Tutorial #3 - Changing Our Manifest
  • Some Words About Resources
  • Tutorial #4 - Adjusting Our Resources
  • The Theory of Widgets
  • The Android User Interface
  • Basic Widgets
  • Debugging Crashes
  • 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
  • Options Menus and 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
  • Event Buses
  • 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
  • Introducing GridLayout
  • Dialogs and DialogFragments
  • Advanced ListViews
  • Action Bar Navigation
  • Action Modes and Context Menus
  • 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
  • Custom Drawables
  • Animators
  • Legacy Animations
  • 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
  • Encrypted Storage
  • Packaging and Distributing Data
  • 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
  • JUnit and Android
  • MonkeyRunner and the Test Monkey
  • Testing with UIAutomator
  • Introducing Gradle
  • Gradle and Legacy Projects
  • Gradle and the New Project Structure
  • Gradle and Dependencies
  • Gradle and Testing
  • Advanced Gradle for Android Tips
  • Advanced Emulator Capabilities
  • Using Lint
  • Using Hierarchy View
  • Using DDMS
  • Android Development in IntelliJ IDEA
  • Signing Your App
  • Distribution
  • 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: Barnes & Noble NOOK Tablet
  • Device Catalog: BlackBerry
  • Wrist Wearables
  • Device Catalog: Google TV
  • Amazon Fire TV
  • CWAC Libraries
  • CWAC Libraries

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

What's New

  • New chapter on the Android 4.4 printing framework
  • Updated tutorials
  • Updated chapters on BlackBerry, Fire TV, and external display support

Details

Sample Material

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