Home > Store

Android Wireless Application Development Volume II: Advanced Topics, 3rd Edition

Register your product to gain access to bonus material or receive a coupon.

Android Wireless Application Development Volume II: Advanced Topics, 3rd Edition

eBook (Watermarked)

  • Your Price: $31.99
  • List Price: $39.99
  • Includes EPUB, MOBI, and PDF
  • About eBook Formats
  • This eBook includes the following formats, accessible from your Account page after purchase:

    ePub EPUB The open industry format known for its reflowable content and usability on supported mobile devices.

    MOBI MOBI The eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

    Adobe Reader PDF The popular standard, used most often with the free Adobe® Reader® software.

    This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.


  • Copyright 2013
  • Dimensions: 7" x 9"
  • Edition: 3rd
  • eBook (Watermarked)
  • ISBN-10: 0-13-290981-2
  • ISBN-13: 978-0-13-290981-5

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)

Sample Content

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


Submit Errata

More Information

Unlimited one-month access with your purchase
Free Safari Membership