Android Wireless Application Development: Barnes & Noble Special Edition

Android Wireless Application Development: Barnes & Noble Special Edition

by Shane Conder, Lauren Darcey

NOOK Book(eBook)

$23.49 $39.99 Save 41% Current price is $23.49, Original price is $39.99. You Save 41%.
View All Available Formats & Editions

Available on Compatible NOOK Devices and the free NOOK Apps.
WANT A NOOK?  Explore Now


Android™ Wireless Application Development  Second Edition


Lauren Darcey

Shane Conder


Special Edition

Includes Bonus CD


The start-to-finish guide to Android application development: massively updated for the newest SDKs and developer techniques!


This book delivers all the up-to-date information, tested code, and best practices you need to create and market successful mobile apps with the latest versions of Android. Drawing on their extensive experience with mobile and wireless development, Lauren Darcey and Shane Conder cover every step: concept, design, coding, testing, packaging, and delivery. The authors introduce the Android platform, explain the principles of effective Android application design, and present today’s best practices for crafting effective user interfaces. Next, they offer detailed coverage of each key Android API, including data storage, networking, telephony, location-based services, multimedia, 3D graphics, and hardware.


Every chapter of this edition has been updated for the newest Android SDKs, tools, utilities, and hardware. All sample code has been overhauled and tested on leading devices from multiple companies, including HTC, Motorola, and ARCHOS. Many new examples have been added, including complete new applications. This new edition also adds


  • Nine new chapters covering web APIs, the Android NDK, extending application reach, managing users, data synchronization, backups, advanced user input, and more
  • Greatly expanded coverage of Android manifest files, content providers, app design, and testing
  • New coverage of hot topics like Bluetooth, gestures, voice recognition, App Widgets, live folders, live wallpapers, and global search
  • Updated 3D graphics programming coverage reflecting OpenGL ES 2.0
  • An all-new chapter on tackling cross-device compatibility issues, from designing for the smallest phones to the big new tablets hitting the market
  • Even more tips and tricks to help you design, develop, and test applications for different devices
  • A new appendix full of Eclipse tips and tricks


This book is an indispensable resource for every member of the Android development team: software developers with all levels of mobile experience, team leaders and project managers, testers and QA specialists, software architects, and even marketers.


About the CD-ROM The accompanying CD-ROM contains all the sample code that is presented in the book, organized by chapter, as well as a new sample application that combines many of the individual lessons learned into a single cohesive sample. This new application is referred to and discussed in Appendix G, “A Brief Walkthrough of an Android Application from Start to Finish.”



Product Details

ISBN-13: 9780132487702
Publisher: Pearson Education
Publication date: 12/16/2010
Series: Developer's Library
Sold by: Barnes & Noble
Format: NOOK Book
Pages: 780
File size: 33 MB
Note: This product may take a few minutes to download.

About the Author

Lauren Darcey is responsible for the technical leadership and direction of a small software company specializing in mobile technologies, including Android, iPhone, Blackberry, Palm Pre,BREW, and 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 copious free time traveling the world with her geeky mobile-minded husband and 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’état 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 gotten 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, iPhone,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 and 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 phone, laptop, 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 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 get 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—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.

Table of Contents

Introduction 1

Part I: An Overview of Android

Chapter 1 Introducing Android 7

A Brief History of Mobile Software Development 7

    Way Back When 7

     “The Brick” 9

    Wireless Application Protocol (WAP) 11

    Proprietary Mobile Platforms 13

The Open Handset Alliance 15

    Google Goes Wireless 15

    Forming the Open Handset Alliance 15

    Manufacturers: Designing the Android Handsets 16

    Mobile Operators: Delivering the Android Experience 17

    Content Providers: Developing Android Applications 17

    Taking Advantage of All Android Has to Offer 18

Android Platform Differences 18

    Android: A Next-Generation Platform 18

    Free and Open Source 20

    Familiar and Inexpensive Development Tools 20

    Reasonable Learning Curve for Developers 20

    Enabling Development of Powerful Applications 21

    Rich, Secure Application Integration 21

    No Costly Obstacles to Publication 21

    A “Free Market” for Applications 22

    A New and Growing Platform 22

The Android Platform 23

    Android’s Underlying Architecture 23

    Security and Permissions 25

    Developing Android Applications 26

Summary 28

References and More Information 28

Chapter 2 Setting Up Your Android Development Environment 29

Configuring Your Development Environment 29

    Configuring Your Operating System for Device Debugging 30

    Configuring Your Android Hardware for Debugging 30

    Upgrading the Android SDK 31

    Problems with the Android Software Development Kit 32

Exploring the Android SDK 32

    Understanding the Android SDK License Agreement 32

    Reading the Android SDK Documentation 33

    Exploring the Android Application Framework 35

    Getting to Know the Android Tools 35

    Exploring the Android Sample Applications 40

Summary 41

References and More Information 41

Chapter 3 Writing Your First Android Application 43

Testing Your Development Environment 43

    Adding the Snake Application to a Project in Your Eclipse Workspace 43

    Creating an Android Virtual Device (AVD) for Your Snake Project 44

    Creating a Launch Configuration for Your Snake Project 46

    Running the Snake Application in the Android Emulator 47

Building Your First Android Application 48

    Creating and Configuring a New Android Project 50

    Core Files and Directories of the Android Application 50

    Creating an AVD for Your Project 51

    Creating Launch Configurations for Your Project 52

    Running Your Android Application in the Emulator 53

    Debugging Your Android Application in the Emulator 56

    Adding Logging Support to Your Android Application 59

    Adding Some Media Support to Your Application 60

    Adding Location-Based Services to Your Application 62

    Debugging Your Application on the Hardware 65

Summary 66

References and More Information 67

Part II: Android Application Design Essentials

Chapter 4 Understanding the Anatomy of an Android Application 69

Mastering Important Android Terminology 69

Using the Application Context 70

    Retrieving the Application Context 70

    Using the Application Context 70

Performing Application Tasks with Activities 71

    The Lifecycle of an Android Activity 72

    Managing Activity Transitions with Intents 76

Working with Services 78

Receiving and Broadcasting Intents 79

Summary 80

References and More Information 80

Chapter 5 Defining Your Application Using the Android Manifest File 81

Configuring the Android Manifest File 81

    Editing the Android Manifest File 82

Managing Your Application’s Identity 86

    Versioning Your Application 86

    Setting the Application Name and Icon 87

Enforcing Application System Requirements 87

    Targeting Specific SDK Versions 87

    Enforcing Application Platform Requirements 90

    Working with External Libraries 92

Registering Activities and Other Application Components 92

    Designating a Primary Entry Point Activity for Your Application Using an Intent Filter 92

    Configuring Other Intent Filters 93

Working with Permissions 94

    Registering Permissions Your Application Requires 94

    Registering Permissions Your Application Grants to Other Applications 95

Exploring Other Manifest File Settings 96

Summary 96

References and More Information 96

Chapter 6 Managing Application Resources 97

What Are Resources? 97

    Storing Application Resources 97

    Understanding the Resource Directory Hierarchy 97

    Resource Value Types 99

    Storing Different Resource Value Types 101

    Accessing Resources Programmatically 103

Setting Simple Resource Values Using Eclipse 104

Working with Resources 107

    Working with String Resources 107

    Using String Resources as Format Strings 108

    Working with String Arrays 109

    Working with Boolean Resources 110

    Working with Integer Resources 111

    Working with Colors 111

    Working with Dimensions 112

    Working with Simple Drawables 113

    Working with Images 114

    Working with Animation 116

    Working with Menus 119

    Working with XML Files 120

    Working with Raw Files 121

    References to Resources 122

    Working with Layouts 123

    Working with Styles 127

    Working with Themes 131

Referencing System Resources 131

Summary 132

References and More Information 132

Part III: Android User Interface Design Essentials

Chapter 7 Exploring User Interface Screen Elements 133

Introducing Android Views and Layouts 133

    Introducing the Android View 133

    Introducing the Android Control 133

    Introducing the Android Layout 134

Displaying Text to Users with TextView 134

    Configuring Layout and Sizing 135

    Creating Contextual Links in Text 136

Retrieving Data from Users 137

    Retrieving Text Input Using EditText Controls 138

    Giving Users Input Choices Using Spinner Controls 142

Using Buttons, Check Boxes, and Radio Groups 144

    Using Basic Buttons 144

    Using Check Boxes and Toggle Buttons 146

    Using RadioGroups and RadioButtons 147

Getting Dates and Times from Users 150

Using Indicators to Display Data to Users 151

    Indicating Progress with ProgressBar 151

Adjusting Progress with SeekBar 153

    Displaying Rating Data with RatingBar 154

    Showing Time Passage with the Chronometer 155

    Displaying the Time 156

Providing Users with Options and Context Menus 157

    Enabling the Options Menu 157

    Enabling the ContextMenu 159

Handling User Events 161

    Listening for Touch Mode Changes 161

    Listening for Events on the Entire Screen 162

    Listening for Long Clicks 163

    Listening for Focus Changes 164

Working with Dialogs 165

    Exploring the Different Types of Dialogs 165

    Tracing the Lifecycle of a Dialog 166

    Working with Custom Dialogs 168

Working with Styles 168

Working with Themes 170

Summary 171

Chapter 8 Designing User Interfaces with Layouts 173

Creating User Interfaces in Android 173

    Creating Layouts Using XML Resources 173

    Creating Layouts Programmatically 175

Organizing Your User Interface 177

    Understanding View versus ViewGroup 178

Using Built-In Layout Classes 181

    Using FrameLayout 183

    Using LinearLayout 185

    Using RelativeLayout 186

    Using TableLayout 190

    Using Multiple Layouts on a Screen 192

Using Built-In View Container Classes 192

    Using Data-Driven Containers 194

    Organizing Screens with Tabs 198

    Adding Scrolling Support 201

    Exploring Other View Containers 202

Summary 203

Chapter 9 Drawing and Working with Animation 205

Drawing on the Screen 205

    Working with Canvases and Paints 205

Working with Text 210

    Using Default Fonts and Typefaces 210

    Using Custom Typefaces 211

    Measuring Text Screen Requirements 212

Working with Bitmaps 212

    Drawing Bitmap Graphics on a Canvas 213

    Scaling Bitmap Graphics 213

    Transforming Bitmaps Using Matrixes 213

Working with Shapes 214

    Defining Shape Drawables as XML Resources 214

    Defining Shape Drawables Programmatically 215

    Drawing Different Shapes 215

Working with Animation 221

    Working with Frame-by-Frame Animation 223

    Working with Tweened Animations 224

Summary 230

Part IV: Using Common Android APIs

Chapter 10 Using Android Data and Storage APIs 231

Working with Application Preferences 231

    Creating Private and Shared Preferences 232

    Searching and Reading Preferences 232

    Adding, Updating, and Deleting Preferences 233

    Finding Preferences Data on the Android File System 234

Working with Files and Directories 235

    Exploring with the Android Application Directories 235

    Working with Other Directories and Files on the Android File System 238

Storing Structured Data Using SQLite Databases 239

    Creating a SQLite Database 240

    Creating, Updating, and Deleting Database Records 242

    Querying SQLite Databases 244

    Closing and Deleting a SQLite Database 250

    Designing Persistent Databases 250

    Binding Data to the Application User Interface 253

Summary 257

References and More Information 258

Chapter 11 Sharing Data Between Applications with Content Providers 259

Exploring Android’s Content Providers 259

    Using the MediaStore Content Provider 260

    Using the CallLog Content Provider 261

    Using the Browser Content Provider 263

    Using the Contacts Content Provider 264

    Using the UserDictionary Content Provider 267

    Using the Settings Content Provider 267

Modifying Content Providers Data 267

    Adding Records 267

    Updating Records 268

    Deleting Records 269

Enhancing Applications Using Content Providers 269

    Accessing Images on the Device 270

Acting as a Content Provider 274

    Implementing a Content Provider Interface 275

    Defining the Data URI 276

    Defining Data Columns 276

    Implementing Important Content Provider Methods 276

    Updating the Manifest File 282

Working with Live Folders 282

Summary 285

References and More Information 285

Chapter 12 Using Android Networking APIs 287

Understanding Mobile Networking Fundamentals 287

Accessing the Internet (HTTP) 288

    Reading Data from the Web 288

    Using HttpURLConnection 289

    Parsing XML from the Network 290

    Processing Asynchronously 291

    Working with AsyncTask 292

    Using Threads for Network Calls 293

    Displaying Images from a Network Resource 295

    Retrieving Android Network Status 297

Summary 298

References and More Information 299

Chapter 13 Using Android Web APIs 301

Browsing the Web with WebView 301

    Designing a Layout with a WebView Control 302

    Loading Content into a WebView Control 302

    Adding Features to the WebView Control 304

Building Web Extensions Using WebKit 307

    Browsing the WebKit APIs 307

    Extending Web Application Functionality to Android 308

Working with Flash 311

    Enabling Flash Applications 312

    Building AIR Applications for Android 313

Summary 314

References and More Information 314

Chapter 14 Using Location-Based Services (LBS) APIs 315

Using Global Positioning Services (GPS) 315

    Using GPS Features in Your Applications 316

    Finding Your Location 316

    Locating Your Emulator 318

Geocoding Locations 318

Mapping Locations 322

    Mapping Intents 322

    Mapping Views 322

    Getting Your Debug API Key 325

    Panning the Map View 326

    Zooming the Map View 327

    Marking the Spot 327

Doing More with Location-Based Services 332

Summary 333

References and More Information 333

Chapter 15 Using Android Multimedia APIs 335

Working with Multimedia 335

Working with Still Images 336

    Capturing Still Images Using the Camera 336

    Configuring Camera Mode Settings 340

    Sharing Images 341

    Assigning Images as Wallpapers 342

Working with Video 343

    Recording Video 343

    Playing Video 345

Working with Audio 346

    Recording Audio 347

    Playing Audio 348

    Sharing Audio 349

    Searching for Multimedia 350

    Working with Ringtones 351

Summary 351

References and More Information 351

Chapter 16 Using Android Telephony APIs 353

Working with Telephony Utilities 353

    Gaining Permission to Access Phone State Information 354

    Requesting Call State 354

    Requesting Service Information 356

    Monitoring Signal Strength and Data Connection Speed 356

    Working with Phone Numbers 357

Using SMS 357

    Gaining Permission to Send and Receive SMS Messages 358

    Sending an SMS 358

    Receiving an SMS 360

Making and Receiving Phone Calls 362

    Making Phone Calls 362

    Receiving Phone Calls 364

Summary 365

References and More Information 365

Chapter 17 Using Android 3D Graphics with OpenGL ES 367

Working with OpenGL ES 367

    Leveraging OpenGL ES in Android 368

    Ensuring Device Compatibility 368

Using OpenGL ES APIs in the Android SDK 369

Handling OpenGL ES Tasks Manually 369

    Creating a SurfaceView 370

    Starting Your OpenGL ES Thread 371

    Initializing EGL 373

    Initializing GL 374

    Drawing on the Screen 375

Drawing 3D Objects 376

    Drawing Your Vertices 376

    Coloring Your Vertices 377

    Drawing More Complex Objects 378

    Lighting Your Scene 379

    Texturing Your Objects 381

Interacting with Android Views and Events 383

    Enabling the OpenGL Thread to Talk to the Application Thread 384

    Enabling the Application Thread to Talk to the OpenGL Thread 386

Cleaning Up OpenGL ES 387

Using GLSurfaceView (Easy OpenGL ES) 388

Using OpenGL ES 2.0 391

    Configuring Your Application for OpenGL ES 2.0 391

    Requesting an OpenGL ES 2.0 Surface 391

Summary 395

References and More Information 396

Chapter 18 Using the Android NDK 397

Determining When to Use the Android NDK 397

Installing the Android NDK 398

Exploring the Android NDK 398

    Running an Android NDK Sample Application 399

Creating Your Own NDK Project 399

    Calling Native Code from Java 400

    Handling Parameters and Return Values 401

    Using Exceptions with Native Code 402

Improving Graphics Performance 403

Summary 405

References and More Information 405

Chapter 19 Using Android’s Optional Hardware APIs 407

Interacting with Device Hardware 407

Using the Device Sensor 408

    Working with Different Sensors 408

    Acquiring Access to a Sensor 409

    Reading Sensor Data 409

    Calibrating Sensors 410

    Determining Device Orientation 411

    Finding True North 412

Working with Wi-Fi 412

Working with Bluetooth 414

    Checking for the Existence of Bluetooth Hardware 415

    Enabling Bluetooth 415

    Querying for Paired Devices 416

    Discovering Devices 416

    Establishing Connections Between Devices 416

Monitoring the Battery 417

Summary 420

References and More Information 421

Part V: More Android Application Design Principles

Chapter 20 Working with Notifications 423

Notifying the User 423

Notifying with the Status Bar 424

    Using the NotificationManager Service 425

    Creating a Simple Text Notification with an Icon 425

    Working with the Notification Queue 426

    Updating Notifications 427

    Clearing Notifications 428

Vibrating the Phone 429

Blinking the Lights 430

Making Noise 431

Customizing the Notification 432

Designing Useful Notifications 434

Summary 434

References and More Information 435

Chapter 21 Working with Services 437

Determining When to Use Services 437

Understanding the Service Lifecycle 438

Creating a Service 438

Controlling a Service 443

Implementing a Remote Interface 444

Implementing a Parcelable Class 446

Summary 449

References and More Information 449

Chapter 22 Extending Android Application Reach 451

Enhancing Your Applications 451

Working with App Widgets 452

    Creating an App Widget 453

    Installing an App Widget 460

    Becoming an App Widget Host 460

Working with Live Wallpapers 461

    Creating a Live Wallpaper 462

    Installing a Live Wallpaper 465

Acting as a Content Type Handler 466

Determining Intent Actions and MIME Types 467

    Implementing the Activity to Process the Intents 468

    Registering the Intent Filter 469

Making Application Content Searchable 469

    Enabling Searches Within Your Application 470

    Enabling Global Search 478

Working with Live Folders 480

    Creating Live Folders 481

    Installing a Live Folder 485

Summary 487

References and More Information 487

Chapter 23 Managing User Accounts and Synchronizing User Data 489

Managing Accounts with the Account Manager 489

    Synchronizing Data with Sync Adapters 490

Using Backup Services 491

    Choosing a Remote Backup Service 492

    Implementing a Backup Agent 492

    Backing Up and Restoring Application Data 496

Summary 497

References and More Information 497

Chapter 24 Handling Advanced User Input 499

Working with Textual Input Methods 499

    Working with Software Keyboards 499

    Working with Text Prediction and User Dictionaries 502

Exploring the Accessibility Framework 502

    Leveraging Speech Recognition Services 503

    Leveraging Text-To-Speech Services 506

Working with Gestures 508

    Detecting User Motions Within a View 509

Handling Common Single-Touch Gestures 509

    Handling Common Multi-Touch Gestures 516

    Making Gestures Look Natural 518

Working with the Trackball 519

Handling Screen Orientation Changes 519

Summary 522

References and More Information 522

Chapter 25 Targeting Different Device Configurations and Languages 523

Maximizing Application Compatibility 523

Designing User Interfaces for Compatibility 525

    Supporting Specific Screen Types 526

    Working with Nine-Patch Stretchable Graphics 526

    Using the Working Square Principle 528

Providing Alternative Application Resources 531

    Working with Alternative Resource Qualifiers 531

    Providing Resources for Different Orientations 537

    Using Alternative Resources Programmatically 538

    Organizing Application Resources Efficiently 538

Internationalizing Applications 539

    Internationalization Using Alternative Resources 540

    Implementing Locale Support Programmatically 544

Targeting Different Device Configurations 545

    Supporting Hardware Configurations 545

    Targeting Different Android SDK Versions 546

Summary 548

References and More Information 549

Part VI: Deploying Your Android Application to the World

Chapter 26 The Mobile Software Development Process 551

An Overview of the Mobile Development Process 551

Choosing a Software Methodology 552

    Understanding the Dangers of Waterfall Approaches 552

    Understanding the Value of Iteration 553

Gathering Application Requirements 553

    Determining Project Requirements 553

    Developing Use Cases for Mobile Applications 555

    Incorporating Third-Party Requirements 555

    Managing a Device Database 555

Assessing Project Risks 558

    Identifying Target Devices 558

    Acquiring Target Devices 560

    Determining Feasibility of Application Requirements 561

    Understanding Quality Assurance Risks 561

Writing Essential Project Documentation 562

    Developing Test Plans for Quality Assurance Purposes 562

    Providing Documentation Required by Third Parties 563

    Providing Documentation for Maintenance and Porting 563

Leveraging Configuration Management Systems 563

    Choosing a Source Control System 563

    Implementing an Application Version System That Works 564

Designing Mobile Applications 564

    Understanding Mobile Device Limitations 564

    Exploring Common Mobile Application Architectures 564

    Designing for Extensibility and Maintenance 565

    Designing for Application Interoperability 566

Developing Mobile Applications 567

Testing Mobile Applications 567

Deploying Mobile Applications 568

    Determining Target Markets 568

Supporting and Maintaining Mobile Applications 568

    Track and Address Crashes Reported by Users 569

    Testing Firmware Upgrades 569

    Maintaining Adequate Application Documentation 569

    Managing Live Server Changes 569

    Identifying Low-Risk Porting Opportunities 569

Summary 570

References and More Information 570

Chapter 27 Designing and Developing Bulletproof Android Applications 571

Best Practices in Designing Bulletproof Mobile Applications 571

    Meeting Mobile Users’ Demands 572

    Designing User Interfaces for Mobile Devices 572

    Designing Stable and Responsive Mobile Applications 573

    Designing Secure Mobile Applications 574

    Designing Mobile Applications for Maximum Profit 575

    Leveraging Third-Party Standards for Android Application Design 576

    Designing Mobile Applications for Ease of Maintenance and Upgrades 576

    Leveraging Android Tools for Application Design 578

Avoiding Silly Mistakes in Android Application Design 578

Best Practices in Developing Bulletproof Mobile Applications 579

    Designing a Development Process That Works for Mobile Development 579

    Testing the Feasibility of Your Application Early and Often 579

    Using Coding Standards, Reviews, and Unit Tests to Improve Code Quality 580

    Handling Defects Occurring on a Single Device 582

    Leveraging Android Tools for Development 583

    Avoiding Silly Mistakes in Android Application Development 583

Summary 583

References and More Information 584

Chapter 28 Testing Android Applications 585

Best Practices in Testing Mobile Applications 585

    Designing a Mobile Application Defect Tracking System 585

    Managing the Testing Environment 587

    Maximizing Testing Coverage 589

    Leveraging Android Tools for Android Application Testing 595

    Avoiding Silly Mistakes in Android Application Testing 595

    Outsourcing Testing Responsibilities 596

Summary 596

References and More Information 596

Chapter 29 Selling Your Android Application 597

Choosing the Right Distribution Model 597

Packaging Your Application for Publication 598

    Preparing Your Code to Package 599

    Packing and Signing Your Application 600

    Testing the Release Version of Your

    Application Package 603

    Certifying Your Android Application 603

Distributing Your Applications 603

    Selling Your Application on the Android Market 603

    Selling Your Application on Your Own Server 609

    Selling Your Application Using Other Alternatives 610

    Protecting Your Intellectual Property 611

    Billing the User 611

Summary 612

References and More Information 612

Part VII: Appendixes

Appendix A The Android Emulator Quick-Start Guide 613

Simulating Reality: The Emulator’s Purpose 613

Working with Android Virtual Devices (AVDs) 615

    Using the Android SDK and AVD Manager 616

    Creating an AVD 616

Launching the Emulator with a Specific AVD 620

    Configuring Emulator Startup Options 621

    Launching an Emulator to Run an Application 621

    Launching an Emulator from the Android SDK and AVD Manager 623

Configuring the GPS Location of the Emulator 623

Calling Between Two Emulator Instances 625

Messaging Between Two Emulator Instances 625

Interacting with the Emulator Through the Console 628

    Using the Console to Simulate Incoming Calls 628

    Using the Console to Simulate SMS Messages 629

    Using the Console to Send GPS Coordinates 630

    Using the Console to Monitor Network Status 631

    Using the Console to Manipulate Power Settings 631

    Using Other Console Commands 632

Enjoying the Emulator 632

Understanding Emulator Limitations 632

Appendix B The Android DDMS Quick-Start Guide 635

Using DDMS with Eclipse and as a Stand-Alone Application 635

Getting Up to Speed Using Key Features of DDMS 636

Working with Processes 637

    Attaching a Debugger to an Android Application 638

    Monitoring Thread Activity of an Android Application 638

    Prompting Garbage Collection (GC) 639

    Monitoring Heap Activity 639

    Monitoring Memory Allocation 640

    Stopping a Process 640

Working with the File Explorer 641

    Browsing the File System of an Emulator or Device 641

    Copying Files from the Emulator or Device 641

    Copying Files to the Emulator or Device 642

    Deleting Files on the Emulator or Device 642

Working with the Emulator Control 642

    Simulating Incoming Voice Calls 643

    Simulating Incoming SMS Messages 643

    Sending a Location Fix 643

Working with Application Logging 644

Taking Screen Captures of Emulator and Device Screens 645

Appendix C The Android Debug Bridge Quick-Start Guide 647

Listing Connected Devices and Emulators 647

Directing ADB Commands to Specific Devices 648

Starting and Stopping the ADB Server 648

    Stopping the ADB Server Process 648

    Starting and Checking the ADB Server Process 648

Issuing Shell Commands 649

    Issuing a Single Shell Command 649

    Using a Shell Session 649

    Using the Shell to Start and Stop the Emulator 649

Copying Files 650

    Sending Files to a Device or Emulator 650

    Retrieving Files from a Device or Emulator 650

Installing and Uninstalling Applications 651

    Installing Applications 651

    Reinstalling Applications 651

    Uninstalling Applications 651

Working with LogCat Logging 652

    Displaying All Log Information 652

    Including Date and Time with Log Data 652

    Filtering Log Information 652

    Clearing the Log 654

    Redirecting Log Output to a File 654

    Accessing the Secondary Logs 654

Controlling the Backup Service 654

    Forcing Backup Operations 655

    Forcing Restore Operations 655

    Wiping Archived Data 655

Generating Bug Reports 655

Using the Shell to Inspect SQLite Databases 656

Using the Shell to Stress Test Applications 656

    Letting the Monkey Loose on Your Application 656

    Listening to Your Monkey 656

    Directing Your Monkey’s Actions 657

    Training Your Monkey to Repeat His Tricks 658

    Keeping the Monkey on a Leash 658

    Learning More About Your Monkey 659

Installing Custom Binaries via the Shell 659

Exploring Other ADB Commands 660

Appendix D Eclipse IDE Tips and Tricks 661

Organizing Your Eclipse Workspace 661

    Integrating with Source Control Services 661

    Repositioning Tabs Within Perspectives 661

    Maximizing Windows 662

    Minimizing Windows 662

    Viewing Windows Side by Side 662

    Viewing Two Sections of the Same File 662

    Closing Unwanted Tabs 662

    Keeping Windows Under Control 663

    Creating Custom Log Filters 663

Writing Code in Java 663

    Using Auto-Complete 664

    Formatting Code 664

    Creating New Classes 664

    Creating New Methods 664

    Organizing Imports 664

    Renaming Almost Anything 665

    Refactoring Code 665

    Reorganizing Code 667

    Providing Javadoc-Style Documentation 667

    Resolving Mysterious Build Errors 667

Appendix E The SQLite Quick-Start Guide 669

Exploring Common Tasks with SQLite 669

Using the sqlite3 Command-Line Interface 670

    Launching the ADB Shell 670

    Connecting to a SQLite Database 670

    Exploring Your Database 671

    Importing and Exporting the Database and Its Data 672

    Executing SQL Commands on the Command Line 674

    Using Other sqlite3 Commands 675

    Understanding SQLite Limitations 675

Learning by Example: A Student Grade Database 675

    Designing the Student Grade Database Schema 676

    Creating Simple Tables with AUTOINCREMENT 676

    Inserting Data into Tables 677

    Querying Tables for Results with SELECT 677

    Using Foreign Keys and Composite Primary Keys 678

    Altering and Updating Data in Tables 679

    Querying Multiple Tables Using JOIN 680

    Using Calculated Columns 680

    Using Subqueries for Calculated Columns 682

    Deleting Tables 682

Appendix F The Android Quick-Start Guide for Beginners 683

Configuring Your Development Environment 683

    Verifying System Requirements 684

    Installing the Java Development Kit 684

    Installing the Eclipse Development Environment for Java 684

    Installing the Android SDK 685

    Installing the Android Plug-In for Eclipse (ADT) 685

    Downloading Android SDK Components 685

    Upgrading the Android Software Development Kit 686

    Problems with the Android Software Development Kit 686

    Configuring Your Android Hardware for Debugging 687

    Configuring Your Operating System for Device Debugging 687

The Android Tools at a Glance 687

Android Terms: A Whimsical Glossary 688

Ten Steps to Successful Android Applications 690

Help! I’m Stuck! 691

Appendix G A Brief Walkthrough of an Android Application from Start to Finish 693

Peak Bagging Explained 693

The PeakBagger Application Design 693

    The PeakBagger Components Explained 694



9780321749673   TOC   11/19/2010

Customer Reviews

Most Helpful Customer Reviews

See All Customer Reviews

Android Wireless Application Development: Barnes & Noble Special Edition 4 out of 5 based on 0 ratings. 3 reviews.
DrPaulT More than 1 year ago
To begin with the title, I was immediately confused by the use of the word "wireless." In fact, this book does not specialise in the radio circuitry of Android handsets but instead covers pretty much every known topic related to Android application development. So you don't just get a primer on the Android application frameworks, but there is also help on setting up Eclipse, the most commonly-used IDE, a discussion of waterfall project planning versus agile iterative methods and how to set up your Market account and deploy your applications. Now, this book has the best part of 800 pages and they are pretty jammed with descriptions of most sections of the Android frameworks with many example program snippets. There is a lot of information here but Android is a very big subject, and this leads to many sections being a bit light on detail. So the value in this book is that the authors have chosen quite carefully which bits of documentation to include in order to provide an overview of Android development to a newcomer. It is largely defect-free (which just makes the dreadful typo on page 122 stand out even more :-) ), but because many topics receive brief treatment it can be quite heavy-going sometimes, jumping around without a strong narrative. Some of the example programs are lifted (with attribution) straight from Google's online documentation so the book does have the feel of an efficient production and a harsh critic might call this a flaw, as the motivation behind why particular software patterns are used in Android is generally not discussed. I feel there is a deeper understanding which, due to space constraints, is not often communicated. Froyo is the version of Android described here, which is a good starting point, but obviously a bit dated now that we have Gingerbread and Honeycomb. It should also be noted that the book assumes at least a working knowledge of Java, which is the programming language used to write software for Android. If you don't know what an unhandled exception is, for example, it would be best to read this book in tandem with a beginner's book on Java. Although I've criticised this for being a bit dry, a by-the-numbers publication, it has been completed competently by authors who understand the subject matter. It is a bit too much for a novice programmer, but if you are coming to Android from another Java platform or maybe from the iPhone then this book should get you up to speed quickly. In this respect I think it is reasonably priced given the volume of information contained. There is also a bundled CD in this special edition to get you started straight away, so overall I give it a thumbs-up. Paul.
MartynHaigh More than 1 year ago
As a seasoned Android developer it's easy to forget the steps necessary in getting up and going with the platform - Conder and Darcey do a very good job of explaining the basics, with a small taster of the more complex stuff, with plenty of code examples to help along the way and just enough levity to keep the experience engaging (I also want to call my pet Null!) For someone new to the platform this is definitely a book you can read the first third of without skipping any, and then refer back to as a reference guide as and when needed. The middle parts of the book, where the more complex ideas come in, aren't full enough to be of any real use - the OpenGL and NDK sections could have multiple books written about each. I'm stuck between wondering if they are a nice, but brief, introduction which people will find useful to whet the pallet, or short enough, and not detailed enough, to be of no real use and to warrant not being included in the first place. The latter parts of the book include some useful guides for testing and selling you Android app, as well as some short but useful sections on Eclipse; the emulator; SQLite and ADB. I found there were a few items I would have liked to have seen some more info about (i.e. broadcast receivers receive very little attention), and there were a few small coding mistakes throughout the book. The order of the sections in the latter half of the book also looked like they could have had a little more thought applied to them. Overall this is a solid book for getting up to speed with Android development and the negative points are small enough so as to not distract from the overall learning experience. It's not a book you are going to keep forever as once you learn the basics you'll want to move on to other fuller, and more detailed, sources.
Bphouse More than 1 year ago
As an iOS developer, this book has tons of information to absorb. Almost 800 pages with CD. Even if you don't have an Android device, this book will lead you through the steps of using the desktop emulator. This is what I had to do to make my first android app. If youre already a mobile developer, this book will definitely help you transition to the Android platform. Note: This is not a beginner book though, some previous experience with programming (specifically Java) is expected.