Home > Store

Android Programming Unleashed

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

Android Programming Unleashed

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-1/8"
  • Edition: 1st
  • eBook (Watermarked)
  • ISBN-10: 0-13-315175-1
  • ISBN-13: 978-0-13-315175-6

Android Programming Unleashed is the most comprehensive and technically sophisticated guide to best-practice Android development with today's powerful new versions of Android: 4.1 (Jelly Bean) and 4.0.3 (Ice Cream Sandwich). Offering the exceptional breadth and depth developers have come to expect from the Unleashed series, it covers everything programmers need to know to develop robust, high-performance Android apps that deliver a superior user experience.

Leading developer trainer Bintu Harwani begins with basic UI controls, then progresses to more advanced topics, finally covering how to develop feature rich Android applications that can access Internet-based services and store data. He illuminates each important SDK component through complete, self-contained code examples that show developers the most effective ways to build production-ready code. Coverage includes: understanding the modern Android platform from the developer's standpoint… using widgets, containers, resources, selection widgets, dialogs, and fragments… supporting actions and persistence… incorporating menus, ActionBars, content providers, and databases… integrating media and animations… using web, map, and other services… supporting communication via messaging, contacts, and emails… publishing Android apps, and much more.

Sample Content

Table of Contents

Introduction     1
Key Topics That This Book Covers     1
Key Benefits That This Book Provides     2
How This Book Is Organized     2
Code Examples for This Book     5

I: Fundamentals of Android Development

1  Introduction to Android     9
The Android 4.1 Jelly Bean SDK     9
Understanding the Android Software Stack     11
Installing the Android SDK     12
  Adding Platforms and Other Components     16
  Installing Eclipse     20
  Installing the Android Development Tools (ADT) Plug-in     22
  Making the ADT Plug-in Functional     24
Creating Android Virtual Devices     24
Creating the First Android Project     27
  Laying Out the Application     31
  Defining Action Code Through Java     34
  Running the Application     36
Using the TextView Control     39
  Assigning the Text Directly in the Layout File     39
  Assigning Text Through the Activity File     40
  Applying Dimensions to Controls     42
  Aligning Content with the Gravity Attribute     43
  Commonly Used Attributes     43
Using the Android Emulator     47
  Limitations of the Android Emulator     47
The Android Debug Bridge (ADB)     48
Launching Android Applications on a Handset     50
Summary     51

2  Basic Widgets     53
Understanding the Role of Android Application Components     53
Understanding the Utility of Android API     55
Overview of the Android Project Files     57
Understanding Activities     59
  Understanding the Android Activity Life Cycle     60
Role of the Android Manifest File     61
  Using the Manifest Editor     64
Creating the User Interface     64
Commonly Used Layouts and Controls    66
Event Handling     67
  Creating an Anonymous Inner Class     68
  Activity Implementing the OnClickListener Interface     71
  Declaring the Event Handler in the XML Control Definition     72
Displaying Messages Through Toast     75
Creating and Starting an Activity     76
  Describing Operations Through Intent     77
  Method Used to Start an Activity     77
  Creating Your Own Layout File     78
  Creating a New Activity     79
  Registering the New Activity     80
  Starting the Activity     81
Using the EditText Control     82
  Attributes Used to Configure the EditText Control     82
  Adding an Event Listener to the EditText Control    84
Choosing Options with CheckBox     87
Choosing Mutually Exclusive Items Using RadioButtons     91
Summary     98

II:  Building Blocks for Android Application Design

3  Laying Out Controls in Containers     101
Introduction to Layouts     101
LinearLayout     102
  Applying the orientation Attribute     102
  Applying the height and width Attributes     103
  Applying the padding Attribute     103
  Applying the weight Attribute     106
  Applying the Gravity Attribute     108
  Using the android:layout_gravity Attribute     109
RelativeLayout     111
  Layout Control Attributes     113
AbsoluteLayout     121
Using ImageView     124
FrameLayout     125
TableLayout     129
  Operations Applicable to TableLayout     129
GridLayout Layout     133
  Specifying Row and Column Position     134
  Spanning Rows and Columns     134
  Inserting Spaces in the GridLayout     134
Adapting to Screen Orientation     138
  Anchoring Controls     138
  Defining Layout for Each Mode     140
Summary     145

4  Utilizing Resources and Media     147
Resources     147
  Types of Resources     148
Creating Values Resources     150
  Dimension Resources      153
  Color Resources     156
  Styles and Themes     159
  Applying Themes     162
  Arrays     165
Using Drawable Resources     170
Switching States with Toggle Buttons     174
Creating an Image Switcher Application     179
Scrolling Through ScrollView     183
  Use of the android:fillViewport Attribute     185
Playing Audio     186
  Adding Audio to the Application     187
Playing Video     195
  Loading Video onto an SD Card     195
Displaying Progress with ProgressBar     199
Using Assets     204
Summary     207

5  Using Selection Widgets and Debugging     209
Using ListView      209
  Creating a ListView with an Activity Base Class     211
  Creating ListView by Extending ListActivity     217
Using the Spinner Control     220
  Populating a Spinner Through Resources     220
  Populating a Spinner Through ArrayAdapter     223
  AutoCompleteTextView     225
Using the GridView Control     227
  GridView Attributes     228
  Displaying Images in GridView     231
Creating an Image Gallery Using the ViewPager Control     235
Using the Debugging Tool: Dalvik Debug Monitor Service (DDMS)     239
Debugging Applications     245
  Placing Breakpoints in an Application     245
Using the Debug Perspective     247
  Debug Pane     248
  Expressions Pane     249
  Breakpoints Pane     250
  Variables Pane     254
  Adding Logging Support to Android Applications     255
Summary     256

6  Displaying and Fetching Information Using Dialogs and Fragments     259
What Are Dialogs?     259
  AlertDialog     261
  Methods of the AlertDialog.Builder Subclass     261
  Getting Input via the Dialog Box     264
  DatePickerDialog     267
  TimePickerDialog     271
Selecting the Date and Time in One Application     275
Fragments     282
  The Structure of a Fragment     282
  The Life Cycle of a Fragment     282
Creating Fragments with Java Code     294
  FragmentManager     294
  Communicating Between Fragments     296
  Navigating to Previous Fragments     296
  Retrieving Content Passed Through Bundle     297
  Saving and Restoring the State of Fragments     297
Creating Special Fragments     301
  Creating a ListFragment     301
  Using a DialogFragment     305
  Using PreferenceFragment     311
Summary     319

III:  Building Menus and Storing Data

7  Creating Interactive Menus and ActionBars     323
Menus and Their Types     323
Creating Menus Through XML     324
  Creating an Options Menu     325
  Adding Submenus     332
  Creating a Context Menu     336
Creating Menus Through Coding     345
  Defining Options Menus     345
  Creating Submenus     346
  Trying It Out     349
Applying a Context Menu to a ListView     354
Using the ActionBar     358
  Enabling the ActionBar     360
  Using an Application’s Icon for Navigation     361
  Displaying Action Items     362
Replacing a Menu with the ActionBar     370
Creating a Tabbed ActionBar     377
Creating a Drop-Down List ActionBar     380
Summary     384

8  Using Databases     385
Using the SQLiteOpenHelper Class     385
  Building an SQLite Project     386
  Fetching the Desired Rows from Tables     391
  Using Cursors     392
Accessing Databases with the ADB     394
  Accessing the Database Through Menus     398
Creating a Data Entry Form     401
  Displaying Table Rows Via ListView     410
Summary     417

IV:  Advanced Android Programming: Internet, Entertainment, and Services

9  Implementing Drawing and Animation     421
Drawing on the Screen     421
  Using Canvas and Paint     421
  Using Gradients     436
Animations     445
  Understanding Frame-by-Frame Animation     446
  Understanding Tweening Animation     453
Applying Interpolators     471
Summary     472

10  Displaying Web Pages and Maps     473
Displaying Web Pages     473
  Enabling JavaScript     477
  Handling Page Navigation     477
  Adding Permission for Internet Access     478
Using the WebViewClient Class     480
Using Google Maps     483
  Obtaining a Google Maps API Key     483
  Installing the Google API     484
  AVDs for Map-Based Applications     485
  Creating a Google Maps-Based Application     486
  Using Location-Based Services     490
  Supplying Latitude and Longitude Values Through DDMS     494
  Sending GPS Locations Manually     495
  Passing Locations in GPX/KML Format     496
  Displaying Map Locations     496
  Printing the GPS Location Address     502
  Displaying Map Markers     507
  Using ItemizedOverlay    511
Summary     516

11  Communicating with SMS and Emails     517
Understanding Broadcast Receivers     517
  Broadcasting an Intent     518
  Receiving the Broadcast Intent     519
Using the Notification System     523
  Notification via the Status Bar     523
Sending SMS Messages with Java Code     531
  Getting Permission to Send SMS Messages     534
  Writing Java Code     534
Receiving SMS Messages     541
Sending Email     546
Working with the Telephony Manager    553
  Making the Outgoing Call     553
  Listening for Phone State Changes     554
Summary     558

12  Creating and Using Content Providers     559
What Is a Content Provider     559
Understanding the Android Content URI     560
Using Content Providers     561
Creating a Custom Content Provider     566
  Defining a Content Provider     566
  Defining a Database     568
  Defining the Content URI     569
  Defining MIME Types     570
  Implementing the getType, query, insert, update, and delete Methods     571
  Registering Content Providers     587
Summary     589

13  Creating and Consuming Services     591
Moving Tasks to Background Threads     591
  Using the Handler Class     592
  Using the AsyncTask Class     594
Accessing Data from the Internet     598
  Consuming SOAP Services     602
Creating a Service     607
  Interacting with the Service     611
Creating a Bound Service     614
Setting Up Alarms     619
  Setting Repeating Alarms     620
  Setting Up the Time for the Alarm     620
Using Sensors     626
Summary     631

14  Publishing Android Applications     633
Setting Versioning Information of an Application     633
Generating a Certificate, Digitally Signing the Android Applications, and Generating the APK     636
  Signing Applications Using the Export Android Application Wizard     637
Distributing Applications with Google Play     638
  Getting Started with Google Play     639
  Localizing Android Applications     641
  Monetizing Our Applications     642
Summary     642

Index     643


Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information

To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.


Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.


If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information

Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.


This site is not directed to children under the age of 13.


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information

If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information

Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents

California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure

Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact

Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice

We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020