SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® 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.
Master Android™ App Development for Amazon’s Bestselling Kindle Fire™—Hands-On, Step-by-Step!
In this book, bestselling Android programming authors Lauren Darcey and Shane Conder teach you every skill and technique you need to write production-quality apps for Amazon Kindle Fire, the world’s hottest Android tablet. You’ll learn the very best way: by building a complete app from start to finish. Every chapter builds on what you’ve already learned, helping you construct, expand, and extend your working app as you move through the entire development lifecycle.
Packed with fully tested, reusable sample code, this book requires absolutely no previous Android or mobile development experience. If you’ve ever written any Java code, you can dive right in and get results fast. Darcey and Conder start with the absolute basics: installing Android development tools, structuring and configuring Kindle Fire apps, and applying crucial design principles associated with high-quality software. Next, building on this strong foundation, you’ll learn how to manage application resources and build application frameworks; integrate user interfaces, logic, and support for networking and web services; test your apps; and publish on the Amazon Appstore.
Coverage includes
Introduction 1
I: Kindle Fire Fundamentals
1 Getting Started with Kindle Fire 9
Introducing Android 9
Google and the Open Handset Alliance 9
Android Makes Its Entrance 10
Cheap and Easy Development 10
Familiarizing Yourself with Eclipse 12
Creating Android Projects 13
Exploring Your Android Project Files 16
Editing Project Resources 17
Running and Debugging Applications 20
Managing Android Virtual Devices 20
Creating Debug and Run Configurations in Eclipse 22
Launching Android Applications Using the Emulator 22
Debugging Android Applications Using DDMS 25
Launching Android Applications on a Device 25
Summary 28
Exercises 28
2 Mastering the Android Development Tools 29
Using the Android Documentation 29
Debugging Applications with DDMS 31
Managing Tasks 32
Browsing the Android File System 33
Taking Screenshots of the Emulator or Device 34
Viewing Log Information 35
Working with the Android Emulator 36
Providing Input to the Emulator 36
Using Other Android Tools 36
Summary 36
3 Building Kindle Fire Applications 39
Designing an Android Application 39
Designing Application Features 40
Determining Application Activity Requirements 40
Implementing Application Functionality 41
Using the Application Context 42
Retrieving Application Resources 42
Accessing Application Preferences 42
Accessing Other Application Functionality Using Contexts 43
Working with Activities 43
Launching Activities 43
Managing Activity State 44
Shutting Down Activities 45
Working with Intents 46
Passing Information with Intents 47
Using Intents to Launch Other Applications 47
Working with Dialogs 48
Working with Fragments 49
Logging Application Information 50
Summary 51
Exercises 51
4 Managing Application Resources 53
Using Application and System Resources 53
Working with Application Resources 53
Working with System Resources 56
Working with Simple Resource Values 57
Working with Strings 57
Working with Colors 57
Working with Dimensions 58
Working with Drawable Resources 59
Working with Images 59
Working with Other Types of Drawables 60
Working with Layouts 60
Designing Layouts Using the Layout Resource Editor 61
Designing Layouts Using XML 62
Working with Files 64
Working with XML Files 64
Working with Raw Files 65
Working with Other Types of Resources 66
Summary 66
Exercises 66
5 Configuring the Android Manifest File 69
Exploring the Android Manifest File 69
Using the Manifest Tab 70
Using the Application Tab 71
Using the Permissions Tab 71
Using the Instrumentation Tab 72
Using the AndroidManifest.xml Tab 73
Configuring Basic Application Settings 73
Naming Android Packages 74
Versioning an Application 74
Setting the Minimum Android API Version 75
Naming an Application 76
Providing an Icon for an Application 76
Providing an Application Description 76
Setting Debug Information for an Application 77
Setting Other Application Attributes 77
Defining Activities 77
Registering Activities 77
Designating the Launch Activity 78
Managing Application Permissions 79
Managing Other Application Settings 81
Summary 81
Exercises 81
6 Designing an Application Framework 83
Designing an Android Trivia Game 83
Determining High-Level Game Features 83
Determining Activity Requirements 84
Determining Screen-Specific Game Features 85
Implementing an Application Prototype 90
Reviewing the Accompanying Source Code 90
Creating a New Android Project 90
Adding Project Resources 91
Implementing Application Activities 92
Creating Application Preferences 93
Running the Game Prototype 95
Creating a Debug Configuration 95
Launching the Prototype in the Emulator 95
Exploring the Prototype Installation 96
Summary 97
Exercises 97
II: Building an Application Framework
7 Implementing an Animated Splash Screen 101
Designing the Splash Screen 101
Implementing the Splash Screen Layout 102
Adding New Project Resources 103
Updating the Splash Screen Layout 106
Working with Animation 110
Adding Animation Resources 110
Animating Specific Views 112
Setting the Image Animations 113
Handling Animation Lifecycle Events 114
Summary 115
Exercises 116
8 Implementing the Main Menu Screen 117
Designing the Main Menu Screen 117
Determining Main Menu Screen Layout Requirements 118
Designing the Screen Header 118
Designing the GridView Control 118
Finishing Touches for the Main Menu Layout Design 119
Implementing the Main Menu Screen Layout 119
Adding New Project Resources 120
Updating the Main Menu Screen Layout Files 121
Working with the GridView Control 124
Filling a GridView Control 124
Listening for GridView Events 127
Working with Other Menu Types 128
Adding an Options Menu to the Game Screen 129
Summary 131
Exercises 131
9 Developing the Help and Scores Screens 133
Designing the Help Screen 133
Implementing the Help Screen Layout 135
Adding New Project Resources 135
Updating the Help Screen Layout 135
Working with Files 136
Adding Raw Resource Files 136
Accessing Raw File Resources 137
Designing the Scores Screen 138
Determining Scores Screen Layout Requirements 138
Adding the TabHost Control 139
Implementing the Scores Screen Layout 141
Adding New Project Resources 141
Updating the Scores Screen Layout 142
Building a Screen with Tabs 144
Configuring the TabHost Control 144
Adding Tabs to the TabHost Control 145
Setting the Default Tab 145
Working with XML 146
Retrieving XML Resources 146
Parsing XML Files with XmlResourceParser 146
Applying Finishing Touches to the Scores Screen 147
Summary 148
Exercises 148
10 Collecting User Input 149
Designing the Settings Screen 149
Implementing the Settings Screen Layout 151
Adding New Project Resources 151
Updating the Settings Screen Layout 154
Using Common Form Controls 155
Working with EditText Controls 156
Working with Spinner Controls 159
Saving Form Data with SharedPreferences 161
Defining SharedPreferences Entries 161
Saving Settings to SharedPreferences 161
Reading Settings from SharedPreferences 162
Summary 163
11 Using Dialogs to Collect User Input 165
Working with Activity Dialogs 165
Exploring the Different Types of Dialogs 166
Tracing the Lifecycle of a Dialog 167
Using the DatePickerDialog Class 168
Adding a DatePickerDialog to a Class 168
Initializing a DatePickerDialog 170
Launching DatePickerDialog 170
Working with Custom Dialogs 171
Adding a Custom Dialog to the Settings Screen 172
Summary 178
Exercises 178
12 Adding Application Logic 181
Designing the Game Screen 181
Implementing the Game Screen Layout 183
Adding New Project Resources 184
Updating the Game Screen Layout 185
Working with ViewSwitcher Controls 186
Initializing Switcher Controls 187
Implementing Switcher Factory Classes 187
Updating the TextSwitcher Control 189
Updating the ImageSwitcher Control 189
Wiring Up Game Logic 190
Adding Game State Settings to the SharedPreferences 191
Retrieving, Parsing, and Storing Book Data 192
Summary 197
Exercises 197
13 Adding Network Support 199
Designing Network Applications 199
Working with an Application Server 199
Managing Lengthy Network Operations 200
Informing the User of Network Activity 201
Developing Network Applications 201
Enabling Network Testing on the Emulator 202
Testing Network Applications on Kindle Fire 202
Accessing Network Services 202
Planning Have You Read That? Network Support 202
Setting Network Permissions 203
Checking Network Status 203
Using HTTP Networking 203
Indicating Network Activity with Progress Bars 204
Displaying Indeterminate Progress 204
Displaying Determinate Progress 204
Displaying Progress Dialogs 204
Running Tasks Asynchronously 206
Using AsyncTask 206
Using Threads and Handlers 207
Downloading and Displaying Score Data 207
Extending AsyncTask for Score Downloads 207
Starting the Progress Indicator with onPreExecute() 208
Clearing the Progress Indicator with onPostExecute() 209
Handling Cancellation with onCancelled() 209
Handling Processing with doInBackground() 210
Handling Progress Updates with onProgressUpdate() 211
Starting the ScoreDownloaderTask 212
Downloading and Parsing Batches of Books 213
Extending AsyncTask for Book Downloads 213
Starting the Progress Dialog with onPreExecute() 214
Dismissing the Progress Dialog with onPostExecute() 214
Handling the Background Processing 215
Starting the BookListDownloaderTask 215
Determining What Data to Send to the Server 216
Keeping Player Data in Sync 216
Uploading Settings Data to a Remote Server 217
Working with Android Services 218
Implementing UploadTask 220
Uploading Player Data with the HTTP GET Method 220
Uploading Score Data to a Remote Server 223
Downloading Friends’ Score Data 224
Summary 224
Exercises 224
14 Exploring the Amazon Web Services SDK for Android 225
The 10,000-Foot View of AWS 225
Exploring the AWS Offerings 226
Using AWS Database and Storage Services 227
Using AWS Messaging and Notification Services 227
Using AWS Infrastructure and Administrative Services 228
Summary 228
Exercises 228
III: Publishing Your Kindle Fire Application
15 Managing Alternative and Localized Resources 233
Using the Alternative Resource Hierarchy 233
Understanding How Resources Are Resolved 234
Organizing Alternative Resources with Qualifiers 234
Using Alternative Resources Programmatically 236
Organizing Application Resources Efficiently 236
Customizing the Application Experience 237
Updating the Main Screen 237
Updating the Splash Screen 238
Updating the Game Screen 239
Updating the Other Screens 240
Internationalizing Android Applications 240
How Android Localization Works 241
How the Android Operating System Handles Locale 241
How Applications Handle Locales 241
How Kindle Fire Handles Locales 243
Android Internationalization Strategies 243
Forgoing Application Internationalization 244
Limiting Application Internationalization 245
Implementing Full Application Internationalization 245
Using Localization Utilities 246
Determining System Locale 246
Formatting Strings Like Dates and Times 246
Handling Currencies 247
Summary 247
Exercises 247
16 Testing Kindle Fire Applications 249
Testing Best Practices 249
Developing Coding Standards 250
Performing Regular Versioned Builds 250
Using a Defect Tracking System 251
Developing Good Test Plans 251
Maximizing Test Coverage 252
Testing on the Emulator 252
Testing on Target Devices 253
Performing Automated Testing 253
Summary 260
Exercises 260
17 Registering as an Amazon Application Developer 261
Understanding the Release Process 261
Preparing the Release Candidate Build 263
Preparing the Android Manifest File for Release 263
Protecting Your Application from Software Pirates 264
Readying Related Services for Release 265
Testing the Application Release Candidate 265
Signing Up as an Amazon App Developer 266
Packaging and Signing an Application 267
Digitally Signing Applications 267
Exporting and Signing the Package File 267
Testing the Signed Application Package 268
Installing the Signed Application Package 269
Verifying the Signed Application 269
Summary 270
Exercises 270
18 Publishing Applications on the Amazon Appstore 271
Selling on the Amazon Appstore 271
Signing Up for a Developer Account 271
Complying with the Developer License Agreement 272
Uploading an Application 272
Understanding Amazon Appstore Royalties 273
Using Other Developer Account Benefits 273
Generating Reports 274
Summary 274
Exercises 274
IV: Appendixes
A Configuring Your Android Development Environment 279
Configuring Your Development Environment 279
Development Machine Prerequisites 280
Installing the Java Development Kit 281
Installing the Eclipse IDE 281
Installing the Android SDK 281
Installing and Configuring the Android Plug-In for Eclipse (ADT) 282
Downloading Android SDK Components 282
Upgrading the Android SDK and Tools 284
Debugging with the Amazon Kindle Fire 284
Configuring Other Android Devices for Development Purposes 286
B Eclipse IDE Tips and Tricks 289
Organizing Your Eclipse Workspace 289
Writing Code in Java 293
C Supplementary Materials 299
Using the Source Code for This Book 299
Accessing the Android Developer Website 300
Accessing the Publisher‘s Website 300
Accessing the Authors‘ Website 301
Contacting the Authors 303
Leveraging Online Android Resources 304
Index 305