Table of Contents
Introduction xvii 
Chapter 1: Getting Started with Android Programming 1
 What Is Android? 2
 Android Versions 2
 Features of Android 3
 Architecture of Android 4
 Android Devices in the Market 4
 The Android Market 7
 Obtaining the Required Tools 8
 Android Studio 8
 Android SDK 14
 Creating Android Virtual Devices (AVDs) 15
 The Android Developer Community 24
 Launching Your First Android Application 24
 Summary 26
 Chapter 2: Using Android Studio for Android Development 29
 Exploring the IDE 30
 Using Code Completion 38
 Debugging Your Application 39
 Setting Breakpoints 39
 Navigating Paused Code 43
 Publishing Your Application 44
 Generating a Signed APK 44
 Summary 45
 Chapter 3: Activities, Fragments, and Intents 47
 Understanding Activities 48
 Applying Styles and Themes to an Activity 53
 Hiding the Activity Title 54
 Displaying a Dialog Window 56
 Displaying a Progress Dialog 59
 Linking Activities Using Intents 61
 Returning Results from an Intent 66
 Passing Data Using an Intent Object 70
 Fragments 75
 Adding Fragments Dynamically 81
 Life Cycle of a Fragment 84
 Interactions Between Fragments 88
 Understanding the Intent Object 92
 Using Intent Filters 93
 Displaying Notifications 94
 Summary 98
 Chapter 4: Getting to Know the Android User Interface 101
 Understanding the Components of a Screen 102
 Views and ViewGroups 103
 FrameLayout 104
 LinearLayout (Horizontal) and LinearLayout (Vertical) 104
 TableLayout 114
 RelativeLayout 116
 FrameLayout 117
 ScrollView 121
 Adapting to Display Orientation 124
 Anchoring Views 125
 Managing Changes to Screen Orientation 127
 Persisting State Information During Changes in Configuration 131
 Detecting Orientation Changes 132
 Controlling the Orientation of the Activity 132
 Utilizing the Action Bar 133
 Adding Action Items to the Action Bar 136
 Creating the User Interface Programmatically 142
 Listening for UI Notifications 145
 Summary 145
 Chapter 5: Designing Your User Interface with Views 147
 Using Basic Views 148
 TextView View 148
 Button, ImageButton, EditText, CheckBox, ToggleButton, RadioButton, and RadioGroup Views 149
 ProgressBar View 158
 AutoCompleteTextView View 164
 Using Picker Views 167
 TimePicker View 167
 DatePicker View 172
 Using List Views to Display Long Lists 175
 ListView View 175
 Using the Spinner View 184
 Understanding Specialized Fragments 186
 Using a ListFragment 187
 Using a DialogFragment 191
 Using a PreferenceFragment 194
 Summary 199
 Chapter 6: Displaying Pictures and Menus with Views 203
 Using Image Views to Display Pictures 203
 ImageView View 204
 ImageSwitcher 206
 GridView 211
 Using Menus with Views 215
 Creating the Helper Methods 215
 Options Menu 217
 Context Menu 220
 Using WebView 225
 WebView 225
 Summary 228
 Chapter 7: Data Persistence 231
 Saving and Loading User Preferences 232
 Accessing Preferences Using an Activity 232
 Programmatically Retrieving and Modifying the Preferences Values 242
 Persisting Data to Files 246
 Saving to Internal Storage 246
 Saving to External Storage (SD Card) 250
 Choosing the Best Storage Option 253
 Creating and Using Databases 254
 Creating the DBAdapter Helper Class 254
 Using the Database Programmatically 260
 Summary 266
 Chapter 8: Content Providers 269
 Sharing Data in Android 270
 Using a Content Provider 271
 Predefined Query String Constants 278
 Projections 279
 Filtering 280
 Sorting 280
 Creating Your Own Content Providers 281
 Using the Content Provider 289
 Summary 294
 Chapter 9: Messaging 297
 SMS Messaging 298
 Sending SMS Messages Programmatically 298
 Sending SMS Messages Using Intent 302
 Receiving SMS Messages 302
 Caveats and Warnings 318
 Sending Email 319
 Summary 322
 Chapter 10: Location-based Services 325
 Displaying Maps 326
 Creating the Project 326
 Obtaining the Maps API Key 326
 Displaying the Map 327
 Displaying the Zoom Control 329
 Changing Views 332
 Navigating to a Specific Location 333
 Getting the Location That Was Touched 335
 Geocoding and Reverse Geocoding 337
 Getting Location Data 340
 Monitoring a Location 348
 Summary 348
 Chapter 11: Networking 351
 Consuming Web Services Using HTTP 352
 Downloading Binary Data 354
 Downloading Text Content 361
 Accessing Web Services Using the GET Method 364
 Consuming JSON Services 370
 Summary 377
 Chapter 12: Developing Android Services 381
 Creating Your Own Services 382
 Performing Long-Running Tasks in a Service 386
 Performing Repeated Tasks in a Service 391
 Executing Asynchronous Tasks on Separate Threads Using IntentService 394
 Establishing Communication Between a Service and an Activity 397
 Binding Activities to Services 401
 Understanding Threading 406
 Summary 411
 Appendix: Answers to Exercises 415
 Index 421