Android Wireless Application Development Volume II: Advanced Topics / Edition 3

Paperback (Print)
Buy New
Buy New from
Buy Used
Buy Used from
(Save 41%)
Item is in good condition but packaging may have signs of shelf wear/aging or torn packaging.
Condition: Used – Good details
Used and New from Other Sellers
Used and New from Other Sellers
from $16.10
Usually ships in 1-2 business days
(Save 67%)
Other sellers (Paperback)
  • All (15) from $16.10   
  • New (8) from $27.10   
  • Used (7) from $16.10   


Android Wireless Application Development has earned a reputation as the most useful real-world guide to building robust, commercial-grade Android apps. Now, authors Lauren Darcey and Shane Conder have systematically revised and updated this guide for the latest Android SDK and tools updates. To accommodate their extensive new coverage, they’ve split the book into two leaner, cleaner volumes. This Volume II focuses on advanced techniques for the entire app development cycle, including design, coding, testing, debugging, and distribution. Darcey and Conder cover hot topics ranging from tablet development to protecting against piracy and demonstrate advanced techniques for everything from data integration and UI development to in-app billing.

Every chapter has been thoroughly updated to reflect the latest SDKs, tools, and devices. The sample code has been completely overhauled and is available for download on a companion website. Drawing on decades of in-the-trenches experience as professional mobile developers, the authors also provide even more tips and best practices for highly efficient development. This new edition covers

  • Advanced app design with async processing, services, SQLite databases, content providers, intents, and notifications
  • Sophisticated UI development, including input gathering via gestures and voice recognition
  • Developing accessible and internationalized mobile apps
  • Maximizing integrated search, cloud-based services, and other exclusive Android features
  • Leveraging Android 4.0 APIs for networking, web, location services, the camera, telephony, and hardware sensors
  • Building richer apps with 2D/3D graphics (OpenGL ES and RenderScript), animation, and the Android NDK
  • Tracking app usage patterns with Google Analytics
  • Streamlining testing with the Android Debug Bridge

This book is an indispensable resource for every intermediate- to advanced-level Java developer now participating in Android development and for every seasoned mobile developer who wants to take full advantage of the newest Android platform and hardware.

Also look for: Android Wireless Application Development, Volume I: Android Essentials (ISBN: 9780321813831)

Read More Show Less

Product Details

  • ISBN-13: 9780321813848
  • Publisher: Addison-Wesley
  • Publication date: 8/7/2012
  • Series: Developer's Library Series
  • Edition number: 3
  • Pages: 528
  • Product dimensions: 8.80 (w) x 7.00 (h) x 1.20 (d)

Meet the Author

Lauren Darcey is responsible for the technical leadership and direction of a small software company specializing in mobile technologies, including Android, Apple iOS, Blackberry, Palm Pre, BREW, J2ME, and consulting services. With more than two decades of experience in professional software production, Lauren is a recognized authority in application architecture and the development of commercial-grade mobile applications. Lauren received a B.S. in computer science from the University of California, Santa Cruz.

She spends her free time traveling the world with her geeky mobile-minded husband and daughter. She is an avid nature photographer. Her work has been published in books and newspapers around the world. In South Africa, she dove with 4-meter-long great white sharks and got stuck between a herd of rampaging hippopotami and an irritated bull elephant. She’s been attacked by monkeys in Japan, gotten stuck in a ravine with two hungry lions in Kenya, gotten thirsty in Egypt, narrowly avoided a coup d’etat in Thailand, geocached her way through the Swiss Alps, drank her way through the beer halls of Germany, slept in the crumbling castles of Europe, and had her tongue stuck to an iceberg in Iceland (while being watched by a herd of suspicious wild reindeer).

Shane Conder has extensive development experience and has focused his attention on mobile and embedded development for the past decade. He has designed and developed many commercial applications for Android, iOS, BREW, Blackberry, J2ME, Palm, and Windows Mobile--some of which have been installed on millions of phones worldwide. Shane has written extensively about the mobile industry and evaluated mobile development platforms on his tech blogs. He is well-known within the blogosphere. Shane received a B.S. in computer science from the University of California. A self-admitted gadget freak, Shane always has the latest smartphone, tablet, or other mobile device. He can often be found fiddling with the latest technologies, such as cloud services and mobile platforms, and other exciting, state-of-the-art technologies that activate the creative part of his brain. He is a very hands-on geek dad. He also enjoys traveling the world with his geeky wife, even if she did make him dive with 4-meter-long great white sharks and almost got him eaten by a lion in Kenya. He admits that he has to take at least two phones with him when backpacking--even though there is no coverage--and that he snickered and whipped out his Android phone to take a picture when Laurie got her tongue stuck to that iceberg in Iceland, and that he is catching on that he should be writing his own bio.

The authors have also published several other Android books, including Android Wireless Application Development, Android Wireless Application Development Volume I: Android Essentials, Sams Teach Yourself Android Application Development, Learning Android Application Programming for the Kindle Fire, and the mini-book Introducing Android Development with Ice Cream Sandwich. Lauren and Shane have also published numerous articles on mobile software development for magazines, technical journals, and online publishers of educational content. You can find dozens of samples of their work in Linux User and Developer, Smart Developer magazine (Linux New Media),, Network World, Envato (MobileTuts+ and CodeCanyon), and InformIT, among others. They also publish articles of interest to their readers at their own Android website, can find a full list of the authors’ publications at

Read More Show Less

Table of Contents

Introduction 1

Part I: Advanced Android Application Design Principles

Chapter 1: Threading and Asynchronous Processing 9

The Importance of Processing Asynchronously 9

Working with the AsyncTask Class 10

Working with the Thread Class 13

Working with Loaders 14

Understanding StrictMode 14

Summary 15

References and More Information 15

Chapter 2: Working with Services 17

Determining When to Use Services 17

Understanding the Service Lifecycle 18

Creating a Service 18

Controlling a Service 23

Implementing a Remote Interface 24

Implementing a Parcelable Class 26

Using the IntentService Class 29

Summary 33

References and More Information 33

Chapter 3: Leveraging SQLite Application Databases 35

Storing Structured Data Using SQLite Databases 35

Creating a SQLite Database 36

Creating, Updating, and Deleting Database Records 38

Working with Transactions 40

Querying SQLite Databases 41

Closing and Deleting a SQLite Database 46

Designing Persistent Databases 47

Binding Data to the Application User Interface 50

Summary 55

References and More Information 55

Chapter 4: Building Android Content Providers 57

Acting as a Content Provider 57

Implementing a Content Provider Interface 58

Defining the Data URI 59

Defining Data Columns 59

Implementing Important Content Provider Methods 59

Updating the Manifest File 65

Enhancing Applications Using Content Providers 65

Accessing Images on the Device 66

Summary 71

References and More Information 71

Chapter 5: Broadcasting and Receiving Intents 73

Sending Broadcasts 73

Sending Basic Broadcasts 74

Sending Ordered Broadcasts 74

Receiving Broadcasts 75

Registering to Receive Broadcasts 76

Handling Incoming Broadcasts from the System 77

Securing Application Broadcasts 80

Summary 80

References and More Information 81

Chapter 6: Working with Notifications 83

Notifying the User 83

A Word on Compatibility 84

Notifying with the Status Bar 84

Using the NotificationManager Service 85

Creating a Simple Text Notification with an Icon 85

Working with the Notification Queue 86

Updating Notifications 88

Clearing Notifications 90

Vibrating the Phone 91

Blinking the Lights 92

Making Noise 93

Customizing the Notification 94

Designing Useful Notifications 96

Summary 97

References and More Information 97

Part II: Advanced Android User Interface Design Principles

Chapter 7: Designing Powerful User Interfaces 99

Following Android User Interface Guidelines 99

Working with Menus 100

Using Options Menus 100

Using Context Menus 103

Using Popup Menus 105

Enabling Action Bars 105

Building Basic Action Bars 106

Customizing Your Action Bar 110

Handling Application Icon Clicks on the Action Bar 112

Working with Screens That Do Not Require Action Bars 114

Introducing Contextual Action Mode 114

Using Advanced Action Bar Features 114

Working with Styles 114

Building Simple Styles 115

Leveraging Style Inheritance 117

Working with Themes 119

Summary 121

References and More Information 122

Chapter 8: Handling Advanced User Input 123

Working with Textual Input Methods 123

Working with Software Keyboards 123

Working with Text Prediction and User Dictionaries 126

Using the Clipboard Framework 126

Handling User Events 127

Listening for Touch Mode Changes 127

Listening for Events on the Entire Screen 128

Listening for Long Clicks 129

Listening for Focus Changes 130

Working with Gestures 131

Detecting User Motions Within a View 131

Handling Common Single-Touch Gestures 132

Handling Common Multi-Touch Gestures 139

Making Gestures Look Natural 142

Using the Drag and Drop Framework 143

Working with the Trackball 143

Handling Screen Orientation Changes 144

Summary 146

References and More Information 147

Chapter 9: Designing Accessible Applications 149

Exploring the Accessibility Framework 149

Leveraging Speech Recognition Services 151

Leveraging Text-To-Speech Services 155

Summary 158

References and More Information 158

Chapter 10: Best Practices for Tablet and Google TV Development 159

Understanding Device Diversity 159

Don’t Make Assumptions about Device Characteristics 159

Designing Flexible User Interfaces 160

Attracting New Types of Users 161

Leveraging Alternative Resources 161

Using Screen Space Effectively on Big Landscape Screens 161

Developing Applications for Tablets 162

Developing Applications for Google TV 164

Optimizing Web Applications for Google TV 165

Developing Native Android Applications for Google TV 165

Developing Apps for the Amazon Kindle Fire 166

Summary 167

References and More Information 168

Part III: Leveraging Common Android APIs

Chapter 11: Using Android Networking APIs 169

Understanding Mobile Networking Fundamentals 169

Understanding Strict Mode with Networking 170

Accessing the Internet (HTTP) 170

Reading Data from the Web 170

Using HttpURLConnection 171

Parsing XML from the Network 172

Handling Network Operations Asynchronously 174

Retrieving Android Network Status 179

Summary 181

References and More Information 181

Chapter 12: Using Android Web APIs 183

Browsing the Web with WebView 183

Designing a Layout with a WebView Control 184

Loading Content into a WebView Control 184

Adding Features to the WebView Control 186

Managing WebView State 189

Building Web Extensions Using WebKit 190

Browsing the WebKit APIs 190

Extending Web Application Functionality to Android 190

Working with Flash 195

Enabling Flash Applications 195

Building AIR Applications for Android 196

Summary 196

References and More Information 196

Chapter 13: Using Location-Based Services APIs 197

Using Global Positioning Services (GPS) 197

Using GPS Features in Your Applications 198

Determining the Location of the Device 198

Locating Your Emulator 200

Geocoding Locations 200

Mapping Locations 204

Mapping Intents 205

Mapping Views 206

Getting Your Debug API Key 207

Panning the Map View 209

Zooming the Map View 210

Marking the Spot 211

Doing More with Location-Based Services 216

Summary 217

References and More Information 217

Chapter 14: Using Android Multimedia APIs 219

Working with Multimedia 219

Working with the Camera 220

Capturing Still Images Using the Camera 220

Working with Video 229

Working with Face Detection 233

Working with Audio 233

Recording Audio 233

Playing Audio 235

Sharing Audio 236

Searching for Multimedia 236

Working with Ringtones 238

Summary 238

References and More Information 238

Chapter 15: Using Android Telephony APIs 239

Working with Telephony Utilities 239

Gaining Permission to Access Phone State Information 240

Requesting Call State 240

Requesting Service Information 242

Monitoring Signal Strength and Data Connection Speed 243

Working with Phone Numbers 243

Using SMS 244

Gaining Permission to Send and Receive SMS Messages 244

Sending an SMS 245

Receiving an SMS 247

Making and Receiving Phone Calls 248

Making Phone Calls 249

Receiving Phone Calls 251

Working with SIP 251

Summary 251

References and More Information 252

Chapter 16: Accessing Android’s Hardware Sensors 253

Interacting with Device Hardware 253

Using the Device Sensors 254

Working with Different Sensors 254

Configuring the Android Manifest File for Sensors 255

Acquiring a Reference to a Sensor 256

Reading Sensor Data 256

Calibrating Sensors 258

Determining Device Orientation 258

Finding True North 258

Monitoring the Battery 258

Summary 261

References and More Information 261

Chapter 17: Using Android’s Optional Hardware APIs 263

Working with Bluetooth 263

Checking for the Existence of Bluetooth

Hardware 264

Enabling Bluetooth 264

Querying for Paired Devices 265

Discovering Devices 265

Establishing Connections Between Devices 266

Working with USB 267

Working with USB Accessories 268

Working as a USB Host 269

Working with Android Beam 269

Enabling Android Beam Sending 270

Receiving Android Beam Messages 271

Configuring the Manifest File for Android Beam 272

Working with Wi-Fi 273

Introducing Wi-Fi Direct 273

Monitoring Wi-Fi State 274

Summary 276

References and More Information 276

Part IV: Drawing, Animations, and Graphics Programming with Android

Chapter 18: Developing Android 2D Graphics Applications 279

Drawing on the Screen 279

Working with Canvases and Paints 279

Working with Text 284

Using Default Fonts and Typefaces 284

Using Custom Typefaces 285

Measuring Text Screen Requirements 287

Working with Bitmaps 287

Drawing Bitmap Graphics on a Canvas 287

Scaling Bitmap Graphics 287

Transforming Bitmaps Using Matrixes 287

Working with Shapes 289

Defining Shape Drawables as XML Resources 289

Defining Shape Drawables Programmatically 290

Drawing Different Shapes 291

Leveraging Hardware Acceleration Features 297

Controlling Hardware Acceleration 298

Fine-Tuning Hardware Acceleration 298

Summary 299

References and More Information 299

Chapter 19: Working with Animation 301

Exploring Android’s Animation Abilities 301

Working with Frame-by-Frame Animation 302

Working with Tweened Animations 304

Working with Property Animation 309

Working with Different Interpolators 313

Summary 314

References and More Information 314

Chapter 20: Developing Android 3D Graphics Applications 315

Working with OpenGL ES 315

Leveraging OpenGL ES in Android 316

Ensuring Device Compatibility 316

Using OpenGL ES APIs in the Android SDK 317

Handling OpenGL ES Tasks Manually 318

Creating a SurfaceView 318

Starting Your OpenGL ES Thread 319

Initializing EGL 321

Initializing GL 323

Drawing on the Screen 323

Drawing 3D Objects 325

Drawing Your Vertices 325

Coloring Your Vertices 326

Drawing More Complex Objects 327

Lighting Your Scene 329

Texturing Your Objects 331

Interacting with Android Views and Events 333

Enabling the OpenGL Thread to Talk to the Application Thread 333

Enabling the Application Thread to Talk to the OpenGL Thread 335

Cleaning Up OpenGL ES 337

Using GLSurfaceView (Easy OpenGL ES) 337

Using OpenGL ES 2.0 341

Configuring Your Application for OpenGL ES 2.0 341

Requesting an OpenGL ES 2.0 Surface 341

Working with RenderScript 345

Defining RenderScript Functionality 346

Rendering to a Custom View Control 350

Summary 353

References and More Information 353

Chapter 21: Using the Android NDK 355

Determining When to Use the Android NDK 355

Installing the Android NDK 356

Exploring the Android NDK 357

Running an Android NDK Sample Application 357

Creating Your Own NDK Project 357

Calling Native Code from Java 358

Handling Parameters and Return Values 359

Using Exceptions with Native Code 360

Using Native Activities 362

Improving Graphics Performance 362

A Comparison to RenderScript 363

Summary 363

References and More Information 364

Part V: Maximizing Android’s Unique Features

Chapter 22: Extending Android Application Reach 365

Enhancing Your Applications 365

Working with App Widgets 366

Creating an App Widget 367

Installing an App Widget 374

Becoming an App Widget Host 375

Working with Live Wallpapers 375

Creating a Live Wallpaper 376

Creating a Live Wallpaper Service 376

Creating a Live Wallpaper Configuration 378

Configuring the Android Manifest File for Live Wallpapers 379

Installing a Live Wallpaper 379

Acting as a Content Type Handler 381

Determining Intent Actions and MIME Types 382

Implementing the Activity to Process the Intents 383

Registering the Intent Filter 384

Summary 384

References and More Information 384

Chapter 23: Enabling Application Search 385

Making Application Content Searchable 385

Enabling Searches in Your Application 386

Enabling Global Search 395

Summary 398

References and More Information 398

Chapter 24: Working with Cloud to Device Messaging 399

An Overview of C2DM 399

Understanding C2DM Message Flow 400

Understanding the Limitations of the C2DM Service 400

Signing Up for C2DM 401

Incorporating C2DM into Your Applications 402

Exploring the C2DM Sample Applications 403

What Alternatives to C2DM Exist? 403

Summary 404

References and More Information 404

Chapter 25: Managing User Accounts and Synchronizing User Data 405

Managing Accounts with the Account Manager 405

Synchronizing Data with Sync Adapters 406

Using Backup Services 407

Choosing a Remote Backup Service 408

Implementing a Backup Agent 409

Backing Up and Restoring Application Data 412

Summary 414

References and More Information 414

Part VI: Advanced Topics in Application Publication and Distribution

Chapter 26: Internationalizing Your Applications 415

Internationalizing Applications 415

Internationalization Using Alternative Resources 416

Implementing Locale Support Programmatically 421

Publishing Applications for Foreign Users 422

Summary 422

References and More Information 422

Chapter 27: An Overview of Third-Party In-App Billing APIs for Android 423

What Is In-App Billing? 423

Using In-App Billing 424

Leveraging Android Market In-App Billing APIs 425

Leveraging Amazon Appstore In-App Billing APIs 426

Leveraging PayPal Billing APIs 426

Leveraging Other Billing APIs 427

Summary 427

References and More Information 427

Chapter 28: Enabling Application Statistics with Google Analytics 429

Creating a Google Account for Analytics 429

Adding the Library to Your Eclipse Project 431

Collecting Data from Your Applications 432

Logging Different Events 432

Using the Google Analytics Dashboard 433

Gathering eCommerce Information 436

Logging eCommerce Events in Your Applications 436

Reviewing eCommerce Reports 437

Tracking Ad and Market Referrals 438

Gathering Statistics 438

Protecting Users’ Privacy 439

Summary 439

References and More Information 439

Chapter 29: Protecting Applications from Software Piracy 441

All Applications Are Vulnerable 441

Using Secure Coding Practices 442

Obfuscating with ProGuard 442

Configuring ProGuard for Your Android Applications 443

Dealing with Error Reports After Obfuscation 444

Leveraging the License Verification Library 444

Other Anti-Piracy Tips 445

Summary 446

References and More Information 446

Part VII: Appendices

Appendix A: The Android Debug Bridge Quick-Start Guide 447

Listing Connected Devices and Emulators 447

Directing ADB Commands to Specific Devices 448

Starting and Stopping the ADB Server 448

Stopping the ADB Server Process 448

Starting and Checking the ADB Server Process 448

Listing ADB Commands 448

Issuing Shell Commands 449

Issuing a Single Shell Command 449

Using a Shell Session 449

Using the Shell to Start and Stop the Emulator 450

Copying Files 450

Sending Files to a Device or Emulator 450

Retrieving Files from a Device or Emulator 450

Installing and Uninstalling Applications 451

Installing Applications 451

Reinstalling Applications 451

Uninstalling Applications 452

Working with LogCat Logging 452

Displaying All Log Information 452

Including Date and Time with Log Data 452

Filtering Log Information 453

Clearing the Log 454

Redirecting Log Output to a File 454

Accessing the Secondary Logs 455

Controlling the Backup Service 455

Forcing Backup Operations 455

Forcing Restore Operations 456

Wiping Archived Data 456

Generating Bug Reports 456

Using the Shell to Inspect SQLite Databases 456

Using the Shell to Stress Test Applications 456

Letting the Monkey Loose on Your Application 457

Listening to Your Monkey 457

Directing Your Monkey’s Actions 457

Training Your Monkey to Repeat His Tricks 459

Keeping the Monkey on a Leash 459

Learning More About Your Monkey 459

Installing Custom Binaries via the Shell 459

Appendix B: The SQLite Quick-Start Guide 463

Exploring Common Tasks with SQLite 463

Using the sqlite3 Command-Line Interface 464

Launching the ADB Shell 464

Connecting to a SQLite Database 464

Exploring Your Database 465

Importing and Exporting the Database and Its Data 466

Executing SQL Commands on the Command Line 468

Using Other sqlite3 Commands 469

Understanding SQLite Limitations 469

Learning by Example: A Student Grade Database 469

Designing the Student Grade Database Schema 470

Creating Simple Tables with AUTOINCREMENT 470

Inserting Data into Tables 471

Querying Tables for Results with SELECT 471

Using Foreign Keys and Composite Primary Keys 472

Altering and Updating Data in Tables 473

Querying Multiple Tables Using JOIN 474

Using Calculated Columns 474

Using Subqueries for Calculated Columns 476

Deleting Tables 476

Index 477

Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Terms of Use.
  • - Barnes & reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)