Cover image for Android Cookbook

Book description

Jump in and build working Android apps with the help of more than 200 tested recipes. With this cookbook, you’ll find solutions for working with the user interfaces, multitouch gestures, location awareness, web services, and device features such as the phone, camera, and accelerometer. You also get useful steps on packaging your app for the Android Market.

Table of Contents

  1. Dedication
  2. Special Upgrade Offer
  3. Preface
    1. Preface
    2. Conventions Used in This Book
    3. Getting and Using the Code Examples
    4. Safari® Books Online
    5. How to Contact Us
    6. Acknowledgments
  4. 1. Getting Started
    1. 1.1. Introduction: Getting Started
    2. 1.2. Learning the Java Language
    3. 1.3. Creating a “Hello, World” Application from the Command Line
    4. 1.4. Creating a “Hello, World” Application in Eclipse
    5. 1.5. Setting Up an IDE on Windows to Develop for Android
    6. 1.6. Understanding the Android Life Cycle
    7. 1.7. Installing .apk Files onto an Emulator via the ADB
    8. 1.8. Installing Apps onto an Emulator via SlideME
    9. 1.9. Sharing Java Classes from Another Eclipse Project
    10. 1.10. Referencing Libraries to Implement External Functionality
    11. 1.11. Using SDK Samples to Help Avoid Head Scratching
    12. 1.12. Keeping the Android SDK Updated
    13. 1.13. Taking a Screenshot from the Emulator/Android Device
    14. 1.14. Program: A Simple CountDownTimer Example
    15. 1.15. Program: Tipster, a Tip Calculator for the Android OS
  5. 2. Designing a Successful Application
    1. 2.1. Introduction: Designing a Successful Android Application
    2. 2.2. Exception Handling
    3. 2.3. Accessing Android’s Application Object as a “Singleton”
    4. 2.4. Keeping Data When the User Rotates the Device
    5. 2.5. Monitoring the Battery Level of an Android Device
    6. 2.6. Creating Splash Screens in Android
    7. 2.7. Designing a Conference/Camp/Hackathon/Institution App
    8. 2.8. Using Google Analytics in an Android Application
    9. 2.9. A Simple Torch/Flashlight
    10. 2.10. Adapting an Android Phone Application to Be Used on a Tablet
    11. 2.11. Setting First-Run Preferences
    12. 2.12. Formatting the Time and Date for Display
    13. 2.13. Controlling Input with KeyListeners
    14. 2.14. Backing Up Android Application Data
    15. 2.15. Using Hints Instead of Tool Tips
  6. 3. Testing
    1. 3.1. Introduction: Testing
    2. 3.2. Doing Test-Driven Development (TDD) in Android
    3. 3.3. Setting Up an Android Virtual Device (AVD) for App Testing
    4. 3.4. Testing on a Huge Range of Devices with Cloud-based Testing
    5. 3.5. Creating and Using a Test Project
    6. 3.6. Troubleshooting Application Crashes
    7. 3.7. Debugging Using Log.d and LogCat
    8. 3.8. Getting Bug Reports from Users Automatically with BugSense
    9. 3.9. Using a Local Runtime Application Log for Analysis of Field Errors or Situations
    10. 3.10. Reproducing Activity Life-Cycle Scenarios for Testing
    11. 3.11. Keeping Your App Snappy with StrictMode
    12. 3.12. Running the Monkey Program
    13. 3.13. Sending Text Messages and Placing Calls Between AVDs
  7. 4. Inter-/Intra-Process Communication
    1. 4.1. Introduction: Inter-/Intra-Process Communication
    2. 4.2. Opening a Web Page, Phone Number, or Anything Else with an Intent
    3. 4.3. Emailing Text from a View
    4. 4.4. Sending an Email with Attachments
    5. 4.5. Pushing String Values Using Intent.putExtra()
    6. 4.6. Retrieving Data from a Subactivity Back to Your Main Activity
    7. 4.7. Keeping a Service Running While Other Apps Are on Display
    8. 4.8. Sending/Receiving a Broadcast Message
    9. 4.9. Starting a Service After Device Reboot
    10. 4.10. Creating a Responsive Application Using Threads
    11. 4.11. Using AsyncTask to Do Background Processing
    12. 4.12. Sending Messages Between Threads Using an Activity Thread Queue and Handler
    13. 4.13. Creating an Android Epoch HTML/JavaScript Calendar
  8. 5. Content Providers
    1. 5.1. Introduction: Content Providers
    2. 5.2. Retrieving Data from a Content Provider
    3. 5.3. Writing a Content Provider
    4. 5.4. Writing an Android Remote Service
  9. 6. Graphics
    1. 6.1. Introduction: Graphics
    2. 6.2. Using a Custom Font
    3. 6.3. Drawing a Spinning Cube with OpenGL ES
    4. 6.4. Adding Controls to the OpenGL Spinning Cube
    5. 6.5. Freehand Drawing Smooth Curves
    6. 6.6. Taking a Picture Using an Intent
    7. 6.7. Taking a Picture Using android.media.Camera
    8. 6.8. Scanning a Barcode or QR Code with the Google ZXing Barcode Scanner
    9. 6.9. Using AndroidPlot to Display Charts and Graphs
    10. 6.10. Using Inkscape to Create an Android Launcher Icon
    11. 6.11. Creating Easy Launcher Icons from OpenClipArt.org Using Paint.NET
    12. 6.12. Using Nine Patch Files
    13. 6.13. Creating HTML5 Charts with Android RGraph
    14. 6.14. Adding a Simple Raster Animation
    15. 6.15. Using Pinch to Zoom
  10. 7. Graphical User Interface
    1. 7.1. Introduction: GUI
    2. 7.2. Understanding and Following User Interface Guidelines
    3. 7.3. Handling Configuration Changes by Decoupling the View from the Model
    4. 7.4. Creating a Button and Its Click Event Listener
    5. 7.5. Wiring Up an Event Listener in Five Different Ways
    6. 7.6. Using CheckBoxes and RadioButtons
    7. 7.7. Enhancing UI Design Using Image Buttons
    8. 7.8. Offering a Drop-Down Chooser via the Spinner Class
    9. 7.9. Handling Long-Press/Long-Click Events
    10. 7.10. Displaying Text Fields with TextView and EditText
    11. 7.11. Constraining EditText Values with Attributes and the TextWatcher Interface
    12. 7.12. Implementing AutoCompleteTextView
    13. 7.13. Feeding AutoCompleteTextView Using an SQLite Database Query
    14. 7.14. Turning Edit Fields into Password Fields
    15. 7.15. Changing the Enter Key to “Next” on the Soft Keyboard
    16. 7.16. Processing Key-Press Events in an Activity
    17. 7.17. Let Them See Stars: Using RatingBar
    18. 7.18. Making a View Shake
    19. 7.19. Providing Haptic Feedback
    20. 7.20. Navigating Different Activities Within a TabView
    21. 7.21. Creating a Custom Title Bar
    22. 7.22. Formatting Numbers
    23. 7.23. Formatting with Correct Plurals
    24. 7.24. Starting a Second Screen from the First
    25. 7.25. Creating a Loading Screen That Will Appear Between Two Activities
    26. 7.26. Using SlidingDrawer to Overlap Other Components
    27. 7.27. Customizing the SlidingDrawer Component to Animate/Transition from the Top Down
    28. 7.28. Adding a Border with Rounded Corners to a Layout
    29. 7.29. Detecting Gestures in Android
    30. 7.30. Building a UI Using Android 3.0 Fragments in Android 1.6 and Later
    31. 7.31. Using the Android 3.0 Photo Gallery
    32. 7.32. Creating a Simple App Widget
  11. 8. GUI Alerts: Menus, Dialogs, Toasts, and Notifications
    1. 8.1. Introduction: GUI Alerts
    2. 8.2. Creating and Displaying a Menu
    3. 8.3. Handling Choice Selection in a Menu
    4. 8.4. Creating a Submenu
    5. 8.5. Creating a Pop-up/Alert Dialog
    6. 8.6. Using a Timepicker Widget
    7. 8.7. Creating an iPhone-like Wheel Picker for Selection
    8. 8.8. Creating a Tabbed Dialog
    9. 8.9. Creating a ProgressDialog
    10. 8.10. Creating a Custom Dialog with Buttons, Images, and Text
    11. 8.11. Creating a Reusable About Box Class
    12. 8.12. Customizing the Appearance of a Toast
    13. 8.13. Creating a Notification in the Status Bar
  12. 9. GUI: ListView
    1. 9.1. Introduction: ListView
    2. 9.2. Building List-Based Applications with ListView
    3. 9.3. Creating a “No Data” View for ListViews
    4. 9.4. Creating an Advanced ListView with Images and Text
    5. 9.5. Using Section Headers in ListViews
    6. 9.6. Keeping the ListView with the User’s Focus
    7. 9.7. Writing a Custom List Adapter
    8. 9.8. Handling Orientation Changes: From ListView Data Values to Landscape Charting
  13. 10. Multimedia
    1. 10.1. Introduction: Multimedia
    2. 10.2. Playing a YouTube Video
    3. 10.3. Using the Gallery with the ImageSwitcher View
    4. 10.4. Capturing Video Using MediaRecorder
    5. 10.5. Using Android’s Face Detection Capability
    6. 10.6. Playing Audio from a File
    7. 10.7. Playing Audio Without Interaction
    8. 10.8. Using Speech to Text
    9. 10.9. Making the Device Speak with Text-to-Speech
  14. 11. Data Persistence
    1. 11.1. Introduction: Data Persistence
    2. 11.2. Getting File Information
    3. 11.3. Reading a File Shipped with the App Rather Than in the Filesystem
    4. 11.4. Listing a Directory
    5. 11.5. Getting Total and Free Space Information About the SD Card
    6. 11.6. Providing User Preference Activity with Minimal Effort
    7. 11.7. Checking the Consistency of Default Shared Preferences
    8. 11.8. Performing Advanced Text Searches
    9. 11.9. Creating an SQLite Database in an Android Application
    10. 11.10. Inserting Values into an SQLite Database
    11. 11.11. Loading Values from an Existing SQLite Database
    12. 11.12. Working with Dates in SQLite
    13. 11.13. Parsing JSON Using JSONObject
    14. 11.14. Parsing an XML Document Using the DOM API
    15. 11.15. Parsing an XML Document Using an XmlPullParser
    16. 11.16. Adding a Contact
    17. 11.17. Reading Contact Data
  15. 12. Telephone Applications
    1. 12.1. Introduction: Telephone Applications
    2. 12.2. Doing Something When the Phone Rings
    3. 12.3. Processing Outgoing Phone Calls
    4. 12.4. Dialing the Phone
    5. 12.5. Sending Single-Part or Multipart SMS Messages
    6. 12.6. Receiving an SMS Message in an Android Application
    7. 12.7. Using Emulator Controls to Send SMS Messages to the Emulator
    8. 12.8. Using Android’s TelephonyManager to Obtain Device Information
  16. 13. Networked Applications
    1. 13.1. Introduction: Networking
    2. 13.2. Using a RESTful Web Service
    3. 13.3. Extracting Information from Unstructured Text Using Regular Expressions
    4. 13.4. Parsing RSS/Atom Feeds Using ROME
    5. 13.5. Using MD5 to Digest Clear Text
    6. 13.6. Converting Text into Hyperlinks
    7. 13.7. Accessing a Web Page Using WebView
    8. 13.8. Customizing a WebView
  17. 14. Gaming and Animation
    1. 14.1. Introduction: Gaming and Animation
    2. 14.2. Building an Android Game Using flixel-android
    3. 14.3. Building an Android Game Using AndEngine (Android-Engine)
    4. 14.4. Processing Timed Keyboard Input
  18. 15. Social Networking
    1. 15.1. Introduction: Social Networking
    2. 15.2. Integrating Social Networking Using HTTP
    3. 15.3. Loading a User’s Twitter Timeline Using JSON
  19. 16. Location and Map Applications
    1. 16.1. Introduction: Location-Aware Applications
    2. 16.2. Getting Location Information
    3. 16.3. Accessing GPS Information in Your Application
    4. 16.4. Mocking GPS Coordinates on a Device
    5. 16.5. Using Geocoding and Reverse Geocoding
    6. 16.6. Getting Ready for Google Maps Development
    7. 16.7. Adding a Device’s Current Location to Google Maps
    8. 16.8. Drawing a Location Marker on a Google MapView
    9. 16.9. Drawing Multiple Location Markers on a MapView
    10. 16.10. Creating Overlays for a Google MapView
    11. 16.11. Changing Modes of a Google MapView
    12. 16.12. Drawing an Overlay Icon Without Using a Drawable
    13. 16.13. Implementing Location Search on Google Maps
    14. 16.14. Placing a MapView Inside a TabView
    15. 16.15. Handling a Long-Press in a MapView
    16. 16.16. Using OpenStreetMap
    17. 16.17. Creating Overlays in OpenStreetMap Maps
    18. 16.18. Using a Scale on an OpenStreetMap Map
    19. 16.19. Handling Touch Events on an OpenStreetMap Overlay
    20. 16.20. Getting Location Updates with OpenStreetMap Maps
  20. 17. Accelerometer
    1. 17.1. Introduction: Sensors
    2. 17.2. Checking for the Presence or Absence of a Sensor
    3. 17.3. Using the Accelerometer to Detect Shaking of the Device
    4. 17.4. Checking Whether a Device Is Facing Up or Facing Down Based on Screen Orientation Using an Accelerometer
    5. 17.5. Finding the Orientation of an Android Device Using an Orientation Sensor
    6. 17.6. Reading the Temperature Sensor
  21. 18. Bluetooth
    1. 18.1. Introduction: Bluetooth
    2. 18.2. Enabling Bluetooth and Making the Device Discoverable
    3. 18.3. Connecting to a Bluetooth-Enabled Device
    4. 18.4. Listening for and Accepting Bluetooth Connection Requests
    5. 18.5. Implementing Bluetooth Device Discovery
  22. 19. System and Device Control
    1. 19.1. Introduction: System and Device Control
    2. 19.2. Accessing Phone Network/Connectivity Information
    3. 19.3. Obtaining Information from the Manifest File
    4. 19.4. Changing Incoming Call Notification to Silent, Vibrate, or Normal
    5. 19.5. Copying Text and Getting Text from the Clipboard
    6. 19.6. Using LED-Based Notifications
    7. 19.7. Making the Device Vibrate
    8. 19.8. Running Shell Commands from Your Application
    9. 19.9. Determining Whether a Given Application Is Running
  23. 20. Other Programming Languages and Frameworks
    1. 20.1. Introduction: Other Programming Languages
    2. 20.2. Running an External/Native Unix/Linux Command
    3. 20.3. Running Native C/C++ Code with JNI on the NDK
    4. 20.4. Getting Started with the Scripting Layer for Android (SL4A, Formerly Android Scripting Environment)
    5. 20.5. Creating Alerts in SL4A
    6. 20.6. Fetching Your Google Documents and Displaying Them in a ListView Using SL4A
    7. 20.7. Sharing SL4A Scripts in QR Codes
    8. 20.8. Using Native Handset Functionality from WebView via JavaScript
    9. 20.9. Creating a Platform-Independent Application Using PhoneGap/Cordova
  24. 21. Strings and Internationalization
    1. 21.1. Introduction: Internationalization
    2. 21.2. Internationalizing Application Text
    3. 21.3. Finding and Translating Strings
    4. 21.4. Handling the Nuances of strings.xml
  25. 22. Packaging, Deploying, and Distributing/Selling Your App
    1. 22.1. Introduction: Packaging, Deploying, and Distributing
    2. 22.2. Creating a Signing Certificate
    3. 22.3. Signing Your Application
    4. 22.4. Distributing Your Application via Android Play (formerly the Android Market)
    5. 22.5. Integrating AdMob into Your App
    6. 22.6. Obfuscating and Optimizing with ProGuard
    7. 22.7. Providing a Link to Other Published Apps in the Google Play Market
  26. Index
  27. About the Author
  28. Colophon
  29. Special Upgrade Offer
  30. Copyright