Chủ Nhật, 9 tháng 12, 2012
book - content
CONTENTS
INTRODUCTION xxxvii
CHAPTER 1: HELLO, ANDROID 1
A Little Background 2
The Not-So-Distant Past 2
Living in the Future 3
What Android Isn’t 3
Android: An Open Platform for Mobile Development 4
Native Android Applications 5
Android SDK Features 6
Access to Hardware, Including Camera, GPS, and Sensors 6
Data Transfers Using Wi-Fi, Bluetooth, and NFC 7
Maps, Geocoding, and Location-Based Services 7
Background Services 7
SQLite Database for Data Storage and Retrieval 8
Shared Data and Inter-Application Communication 8
Using Widgets and Live Wallpaper to Enhance the Home Screen 9
Extensive Media Support and 2D/3D Graphics 9
Cloud to Device Messaging 9
Optimized Memory and Process Management 10
Introducing the Open Handset Alliance 10
What Does Android Run On? 10
Why Develop for Mobile? 11
Why Develop for Android? 11
Factors Driving Android’s Adoption 12
What Android Has That Other Platforms Don’t Have 12
The Changing Mobile Development Landscape 13
Introducing the Development Framework 14
What Comes in the Box 14
Understanding the Android Software Stack 15
The Dalvik Virtual Machine 16
Android Application Architecture 17
Android Libraries 18
CHAPTER 2: GETTING STARTED 19
Developing for Android 20
What You Need to Begin 20
Downloading and Installing the Android SDK 21
Downloading and Installing Updates to the SDK 23
Developing with Eclipse 23
Using the Android Developer Tools Plug-In for Eclipse 24
Using the Support Package 27
Creating Your First Android Application 28
Creating a New Android Project 28
Creating an Android Virtual Device 30
Creating Launch Confi gurations 30
Running and Debugging Your Android Application 33
Understanding Hello World 33
Types of Android Applications 36
Foreground Applications 36
Background Applications 37
Intermittent Applications 37
Widgets and Live Wallpapers 37
Developing for Mobile and Embedded Devices 38
Hardware-Imposed Design Considerations 38
Be Ei cient 38
Expect Limited Capacity 39
Design for Dif erent Screens 39
Expect Low Speeds, High Latency 40
At What Cost? 41
Considering the User’s Environment 42
Developing for Android 43
Being Fast and Ei cient 43
Being Responsive 44
Ensuring Data Freshness 45
Developing Secure Applications 45
Ensuring a Seamless User Experience 46
Providing Accessibility 47
Android Development Tools 47
The Android Virtual Device Manager 48
Android SDK Manager 49
The Android Emulator 50
The Dalvik Debug Monitor Service 50
The Android Debug Bridge 51
The Hierarchy Viewer and Lint Tool 51
Monkey and Monkey Runner 52
CHAPTER 3: CREATING APPLICATIONS AND ACTIVITIES 53
What Makes an Android Application? 54
Introducing the Application Manifest File 55
A Closer Look at the Application Manifest 56
Using the Manifest Editor 63
Externalizing Resources 64
Creating Resources 65
Simple Values 65
Styles and Themes 68
Drawables 68
Layouts 69
Animations 70
Menus 73
Using Resources 74
Using Resources in Code 74
Referencing Resources Within Resources 75
Using System Resources 76
Referring to Styles in the Current Theme 76
Creating Resources for Dif erent Languages and Hardware 77
Runtime Confi guration Changes 79
The Android Application Lifecycle 81
Understanding an Application’s Priority and Its Process’ States 82
Introducing the Android Application Class 83
Extending and Using the Application Class 83
Overriding the Application Lifecycle Events 84
A Closer Look at Android Activities 86
Creating Activities 86
The Activity Lifecycle 87
Activity Stacks 88
Activity States 88
Monitoring State Changes 89
Understanding Activity Lifetimes 91
Android Activity Classes 93
CHAPTER 4: BUILDING USER INTERFACES 95
Fundamental Android UI Design 96
Android User Interface Fundamentals 97
Assigning User Interfaces to Activities 97
Introducing Layouts 98
Defi ning Layouts 99
Using Layouts to Create Device Independent User Interfaces 100
Using a Linear Layout 100
Using a Relative Layout 101
Using a Grid Layout 102
Optimizing Layouts 103
Redundant Layout Containers Are Redundant 103
Avoid Using Excessive Views 105
Using Lint to Analyze Your Layouts 106
To-Do List Example 107
Introducing Fragments 114
Creating New Fragments 115
The Fragment Lifecycle 116
Fragment-Specifi c Lifecycle Events 119
Fragment States 119
Introducing the Fragment Manager 120
Adding Fragments to Activities 120
Using Fragment Transactions 121
Adding, Removing, and Replacing Fragments 122
Using the Fragment Manager to Find Fragments 122
Populating Dynamic Activity Layouts with Fragments 123
Fragments and the Back Stack 124
Animating Fragment Transactions 125
Interfacing Between Fragments and Activities 126
Fragments Without User Interfaces 126
Android Fragment Classes 128
Using Fragments for Your To-Do List 128
The Android Widget Toolbox 132
Creating New Views 133
Modifying Existing Views 133
Customizing Your To-Do List 135
Creating Compound Controls 138
Creating Simple Compound Controls Using Layouts 141
Creating Custom Views 141
Creating a New Visual Interface 142
Handling User Interaction Events 147
Supporting Accessibility in Custom Views 148
Creating a Compass View Example 149
Using Custom Controls 155
Introducing Adapters 156
Introducing Some Native Adapters 156
Customizing the Array Adapter 156
Using Adapters to Bind Data to a View 158
Customizing the To-Do List Array Adapter 158
Using the Simple Cursor Adapter 162
CHAPTER 5: INTENTS AND BROADCAST RECEIVERS 165
Introducing Intents 166
Using Intents to Launch Activities 166
Explicitly Starting New Activities 167
Implicit Intents and Late Runtime Binding 167
Determining If an Intent Will Resolve 168
Returning Results from Activities 169
Native Android Actions 172
Introducing Linkify 174
Native Linkify Link Types 174
Creating Custom Link Strings 175
Using the Match Filter 176
Using the Transform Filter 176
Using Intents to Broadcast Events 177
Broadcasting Events with Intents 177
Listening for Broadcasts with Broadcast Receivers 178
Broadcasting Ordered Intents 180
Broadcasting Sticky Intents 181
Introducing the Local Broadcast Manager 182
Introducing Pending Intents 182
Creating Intent Filters and Broadcast Receivers 183
Using Intent Filters to Service Implicit Intents 183
How Android Resolves Intent Filters 185
Finding and Using Intents Received Within an Activity 186
Passing on Responsibility 187
Selecting a Contact Example 187
Using Intent Filters for Plug-Ins and Extensibility 193
Supplying Anonymous Actions to Applications 193
Discovering New Actions from Third-Party Intent Receivers 194
Incorporating Anonymous Actions as Menu Items 195
Listening for Native Broadcast Intents 196
Monitoring Device State Changes Using Broadcast Intents 197
Listening for Battery Changes 197
Listening for Connectivity Changes 198
Listening for Docking Changes 199
Managing Manifest Receivers at Run Time 199
CHAPTER 6: USING INTERNET RESOURCES 201
Downloading and Parsing Internet Resources 201
Connecting to an Internet Resource 202
Parsing XML Using the XML Pull Parser 203
Creating an Earthquake Viewer 205
Using the Download Manager 210
Downloading Files 211
Customizing Download Manager Notifi cations 213
Specifying a Download Location 213
Cancelling and Removing Downloads 214
Querying the Download Manager 215
Using Internet Services 217
Connecting to Google App Engine 218
Best Practices for Downloading Data Without Draining
the Battery 219
CHAPTER 7: FILES, SAVING STATE, AND PREFERENCES 221
Saving Simple Application Data 222
Creating and Saving Shared Preferences 222
Retrieving Shared Preferences 223
Creating a Settings Activity for the Earthquake Viewer 223
Introducing the Preference Framework and the
Preference Activity 231
Defi ning a Preference Screen Layout in XML 232
Native Preference Controls 234
Using Intents to Import System Preferences into Preference Screens 234
Introducing the Preference Fragment 235
Defi ning the Preference Fragment Hierarchy
Using Preference Headers 235
Introducing the Preference Activity 236
Backward Compatibility and Preference Screens 237
Finding and Using the Shared Preferences Set by Preference Screens 238
Introducing On Shared Preference Change Listeners 238
Creating a Standard Preference Activity for the Earthquake Viewer 238
Persisting the Application Instance State 242
Saving Activity State Using Shared Preferences 242
Saving and Restoring Activity Instance State
Using the Lifecycle Handlers 242
Saving and Restoring Fragment Instance State
Using the Lifecycle Handlers 243
Including Static Files as Resources 245
Working with the File System 246
File-Management Tools 246
Using Application-Specifi c Folders to Store Files 246
Creating Private Application Files 247
Using the Application File Cache 248
Storing Publicly Readable Files 248
CHAPTER 8: DATABASES AND CONTENT PROVIDERS 251
Introducing Android Databases 252
SQLite Databases 252
Content Providers 252
Introducing SQLite 253
Content Values and Cursors 253
Working with SQLite Databases 254
Introducing the SQLiteOpenHelper 255
Opening and Creating Databases Without the SQLite Open Helper 257
Android Database Design Considerations 257
Querying a Database 257
Extracting Values from a Cursor 259
Adding, Updating, and Removing Rows 260
Inserting Rows 260
Updating Rows 261
Deleting Rows 261
Creating Content Providers 262
Registering Content Providers 262
Publishing Your Content Provider’s URI Address 263
Creating the Content Provider’s Database 264
Implementing Content Provider Queries 264
Content Provider Transactions 266
Storing Files in a Content Provider 268
A Skeleton Content Provider Implementation 270
Using Content Providers 274
Introducing the Content Resolver 274
Querying Content Providers 274
Querying for Content Asynchronously Using the Cursor Loader 277
Introducing Loaders 277
Using the Cursor Loader 277
Adding, Deleting, and Updating Content 280
Inserting Content 280
Deleting Content 281
Updating Content 281
Accessing Files Stored in Content Providers 282
Creating a To-Do List Database and Content Provider 283
Adding Search to Your Application 290
Making Your Content Provider Searchable 291
Creating a Search Activity for Your Application 292
Making Your Search Activity the Default Search Provider
for Your Application 293
Performing a Search and Displaying the Results 294
Using the Search View Widget 297
Supporting Search Suggestions from a Content Provider 298
Surfacing Search Results in the Quick Search Box 301
Creating a Searchable Earthquake Content Provider 301
Creating the Content Provider 302
Using the Earthquake Provider 307
Searching the Earthquake Provider 310
Native Android Content Providers 316
Using the Media Store Content Provider 317
Using the Contacts Contract Content Provider 318
Introducing the Contacts Contract Content Provider 318
Reading Contact Details 319
Creating and Picking Contacts Using Intents 323
Modifying and Augmenting Contact Details Directly 324
Using the Calendar Content Provider 325
Querying the Calendar 325
Creating and Editing Calendar Entries Using Intents 327
Modifying Calendar Entries Directly 329
CHAPTER 9: WORKING IN THE BACKGROUND 331
Introducing Services 332
Creating and Controlling Services 332
Creating Services 332
Executing a Service and Controlling Its Restart Behavior 333
Starting and Stopping Services 335
Self-Terminating Services 336
Binding Services to Activities 336
An Earthquake-Monitoring Service Example 338
Creating Foreground Services 343
Using Background Threads 345
Using AsyncTask to Run Asynchronous Tasks 345
Creating New Asynchronous Tasks 346
Running Asynchronous Tasks 347
Introducing the Intent Service 348
Introducing Loaders 349
Manual Thread Creation and GUI Thread Synchronization 349
Using Alarms 351
Creating, Setting, and Canceling Alarms 352
Setting Repeating Alarms 353
Using Repeating Alarms to Schedule Network Refreshes 354
Using the Intent Service to Simplify the Earthquake
Update Service 357
CHAPTER 10: EXPANDING THE USER EXPERIENCE 359
Introducing the Action Bar 360
Customizing the Action Bar 362
Modifying the Icon and Title Text 362
Customizing the Background 363
Enabling the Split Action Bar Mode 364
Customizing the Action Bar to Control Application Navigation Behavior 364
Confi guring Action Bar Icon Navigation Behavior 365
Using Navigation Tabs 366
Using Drop-Down Lists for Navigation 368
Using Custom Navigation Views 370
Introducing Action Bar Actions 370
Adding an Action Bar to the Earthquake Monitor 370
Creating and Using Menus and Action Bar Action Items 377
Introducing the Android Menu System 377
Creating a Menu 379
Specifying Action Bar Actions 380
Menu Item Options 381
Adding Action Views and Action Providers 382
Adding Menu Items from Fragments 383
Defi ning Menu Hierarchies in XML 384
Updating Menu Items Dynamically 385
Handling Menu Selections 386
Introducing Submenus and Context Menus 387
Creating Submenus 387
Using Context Menus and Popup Menus 388
Refreshing the Earthquake Monitor 390
Going Full Screen 392
Introducing Dialogs 394
Creating a Dialog 395
Using the Alert Dialog Class 396
Using Specialized Input Dialogs 397
Managing and Displaying Dialogs Using Dialog Fragments 398
Managing and Displaying Dialogs Using Activity Event Handlers 400
Using Activities as Dialogs 401
Let’s Make a Toast 401
Customizing Toasts 402
Using Toasts in Worker Threads 404
Introducing Notifi cations 405
Introducing the Notifi cation Manager 406
Creating Notifi cations 407
Creating a Notifi cation and Confi guring the Status Bar Display 407
Using the Default Notifi cation Sounds, Lights, and Vibrations 408
Making Sounds 408
Vibrating the Device 409
Flashing the Lights 409
Using the Notifi cation Builder 410
Setting and Customizing the Notifi cation Tray UI 410
Using the Standard Notifi cation UI 411
Creating a Custom Notifi cation UI 412
Customizing the Ticker View 414
Confi guring Ongoing and Insistent Notifi cations 415
Triggering, Updating, and Canceling Notifi cations 416
Adding Notifi cations and Dialogs to the Earthquake Monitor 418
CHAPTER 11: ADVANCED USER EXPERIENCE 425
Designing for Every Screen Size and Density 426
Resolution Independence 426
Using Density-Independent Pixels 426
Resource Qualifi ers for Pixel Density 427
Supporting and Optimizing for Dif erent Screen Sizes 427
Creating Scalable Layouts 428
Optimizing Layouts for Dif erent Screen Types 428
Specifying Supported Screen Sizes 430
Creating Scalable Graphics Assets 431
Color Drawables 431
Shape Drawables 431
Gradient Drawables 432
NinePatch Drawables 434
Creating Optimized, Adaptive, and Dynamic Designs 434
Tes t ing, Tes t ing, Tes t ing 435
Using Emulator Skins 435
Testing for Custom Resolutions and Screen Sizes 435
Ensuring Accessibility 436
Supporting Navigation Without a Touch Screen 436
Providing a Textual Description of Each View 436
Introducing Android Text-to-Speech 437
Using Speech Recognition 439
Using Speech Recognition for Voice Input 440
Using Speech Recognition for Search 441
Controlling Device Vibration 441
Working with Animations 442
Tweened View Animations 442
Creating Tweened View Animations 443
Applying Tweened Animations 443
Using Animation Listeners 444
Animating Layouts and View Groups 444
Creating and Using Frame-by-Frame Animations 445
Interpolated Property Animations 446
Creating Property Animations 447
Creating Property Animation Sets 449
Using Animation Listeners 449
Enhancing Your Views 450
Advanced Canvas Drawing 450
What Can You Draw? 450
Getting the Most from Your Paint 451
Improving Paint Quality with Anti-Aliasing 456
Canvas Drawing Best Practice 457
Advanced Compass Face Example 458
Hardware Acceleration 466
Managing Hardware Acceleration Use in Your Applications 466
Checking If Hardware Acceleration Is Enabled 467
Introducing the Surface View 467
When to Use a Surface View 467
Creating Surface Views 468
Creating 3D Views with a Surface View 470
Creating Interactive Controls 470
Using the Touch Screen 471
Using the Device Keys, Buttons, and D-Pad 475
Using the On Key Listener 475
Using the Trackball 476
Advanced Drawable Resources 476
Composite Drawables 476
Transformative Drawables 476
Layer Drawables 477
State List Drawables 478
Level List Drawables 479
Copy, Paste, and the Clipboard 479
Copying Data to the Clipboard 479
Pasting Clipboard Data 480
CHAPTER 12: HARDWARE SENSORS 481
Using Sensors and the Sensor Manager 482
Supported Android Sensors 482
Introducing Virtual Sensors 483
Finding Sensors 484
Monitoring Sensors 485
Interpreting Sensor Values 487
Monitoring a Device’s Movement and Orientation 489
Determining the Natural Orientation of a Device 490
Introducing Accelerometers 491
Detecting Acceleration Changes 492
Creating a Gravitational Force Meter 494
Determining a Device’s Orientation 497
Understanding the Standard Reference Frame 497
Calculating Orientation Using the Accelerometer and
Magnetic Field Sensors 498
Remapping the Orientation Reference Frame 500
Determining Orientation Using the Deprecated Orientation Sensor 501
Creating a Compass and Artifi cial Horizon 502
Introducing the Gyroscope Sensor 505
Introducing the Environmental Sensors 506
Using the Barometer Sensor 506
Creating a Weather Station 508
CHAPTER 13: MAPS, GEOCODING, AND
LOCATION-BASED SERVICES 513
Using Location-Based Services 514
Using the Emulator with Location-Based Services 515
Updating Locations in Emulator Location Providers 515
Confi guring the Emulator to Test Location-Based Services 516
Selecting a Location Provider 516
Finding Location Providers 517
Finding Location Providers by Specifying Criteria 517
Determining Location Provider Capabilities 518
Finding Your Current Location 519
Location Privacy 519
Finding the Last Known Location 519
Where Am I Example 519
Refreshing the Current Location 522
Tracking Your Location in Where Am I 525
Requesting a Single Location Update 527
Best Practice for Location Updates 527
Monitoring Location Provider Status and Availability 528
Using Proximity Alerts 530
Using the Geocoder 532
Reverse Geocoding 533
Forward Geocoding 534
Geocoding Where Am I 535
Creating Map-Based Activities 536
Introducing Map View and Map Activity 537
Getting Your Maps API Key 537
Getting Your Development/Debugging MD5 Fingerprint 537
Getting your Production/Release MD5 Fingerprint 538
Creating a Map-Based Activity 538
Maps and Fragments 540
Confi guring and Using Map Views 541
Using the Map Controller 541
Mapping Where Am I 542
Creating and Using Overlays 546
Creating New Overlays 546
Introducing Projections 547
Drawing on the Overlay Canvas 547
Handling Map Tap Events 548
Adding and Removing Overlays 549
Annotating Where Am I 549
Introducing My Location Overlay 553
Introducing Itemized Overlays and Overlay Items 554
Pinning Views to the Map and Map Positions 556
Mapping Earthquakes Example 558
CHAPTER 14: INVADING THE HOME SCREEN 565
Introducing Home Screen Widgets 566
Creating App Widgets 567
Creating the Widget XML Layout Resource 567
Widget Design Guidelines 567
Supported Widget Views and Layouts 568
Defi ning Your Widget Settings 569
Creating Your Widget Intent Receiver and Adding It to the
Application Manifest 570
Introducing the App Widget Manager and Remote Views 572
Creating and Manipulating Remote Views 572
Applying Remote Views to Running App Widgets 574
Using Remote Views to Add Widget Interactivity 575
Refreshing Your Widgets 577
Using the Minimum Update Rate 577
Using Intents 578
Using Alarms 579
Creating and Using a Widget Confi guration Activity 580
Creating an Earthquake Widget 582
Introducing Collection View Widgets 587
Creating Collection View Widget Layouts 589
Creating the Remote Views Service 591
Creating a Remote Views Factory 591
Populating Collection View Widgets Using a Remote Views Service 594
Adding Interactivity to the Items Within a Collection View Widget 595
Binding Collection View Widgets to Content Providers 596
Refreshing Your Collection View Widgets 598
Creating an Earthquake Collection View Widget 598
Introducing Live Folders 605
Creating Live Folders 606
The Live Folder Content Provider 606
The Live Folder Activity 608
Creating an Earthquake Live Folder 610
Surfacing Application Search Results Using the Quick Search Box 614
Surfacing Search Results to the Quick Search Box 614
Adding the Earthquake Example Search Results to the
Quick Search Box 615
Creating Live Wallpaper 616
Creating a Live Wallpaper Defi nition Resource 616
Creating a Wallpaper Service 617
Creating a Wallpaper Service Engine 618
CHAPTER 15: AUDIO, VIDEO, AND USING THE CAMERA 621
Playing Audio and Video 622
Introducing the Media Player 623
Preparing Audio for Playback 624
Initializing Audio Content for Playback 624
Preparing Video for Playback 625
Playing Video Using the Video View 625
Creating a Surface for Video Playback 626
Controlling Media Player Playback 629
Managing Media Playback Output 631
Responding to the Volume Controls 631
Responding to the Media Playback Controls 632
Requesting and Managing Audio Focus 635
Pausing Playback When the Output Changes 637
Introducing the Remote Control Client 637
Manipulating Raw Audio 640
Recording Sound with Audio Record 640
Playing Sound with Audio Track 642
Creating a Sound Pool 643
Using Audio Ef ects 645
Using the Camera for Taking Pictures 646
Using Intents to Take Pictures 646
Controlling the Camera Directly 648
Camera Properties 648
Camera Settings and Image Parameters 649
Controlling Auto Focus, Focus Areas, and Metering Areas 650
Using the Camera Preview 651
Detecting Faces and Facial Features 653
Taking a Picture 654
Reading and Writing JPEG EXIF Image Details 655
Recording Video 656
Using Intents to Record Video 656
Using the Media Recorder to Record Video 657
Confi guring the Video Recorder 658
Previewing the Video Stream 660
Controlling the Recording 660
Creating a Time-Lapse Video 661
Using Media Ef ects 661
Adding Media to the Media Store 662
Inserting Media Using the Media Scanner 662
Inserting Media Manually 663
CHAPTER 16: BLUETOOTH, NFC, NETWORKS, AND WI-FI 665
Using Bluetooth 666
Managing the Local Bluetooth Device Adapter 666
Being Discoverable and Remote Device Discovery 669
Managing Device Discoverability 669
Discovering Remote Devices 671
Bluetooth Communications 673
Opening a Bluetooth Server Socket Listener 674
Selecting Remote Bluetooth Devices for Communications 675
Opening a Client Bluetooth Socket Connection 676
Transmitting Data Using Bluetooth Sockets 677
Managing Network and Internet Connectivity 679
Introducing the Connectivity Manager 679
Supporting User Preferences for Background Data Transfers 679
Finding and Monitoring Network Connectivity 681
Managing Wi-Fi 682
Monitoring Wi-Fi Connectivity 683
Monitoring Active Wi-Fi Connection Details 684
Scanning for Hotspots 684
Managing Wi-Fi Confi gurations 685
Creating Wi-Fi Network Confi gurations 685
Transferring Data Using Wi-Fi Direct 686
Initializing the Wi-Fi Direct Framework 686
Enabling Wi-Fi Direct and Monitoring Its Status 688
Discovering Peers 689
Connecting with Peers 690
Transferring Data Between Peers 692
Near Field Communication 693
Reading NFC Tags 693
Using the Foreground Dispatch System 695
Introducing Android Beam 697
Creating Android Beam Messages 697
Assigning the Android Beam Payload 699
Receiving Android Beam Messages 699
CHAPTER 17: TELEPHONY AND SMS 701
Hardware Support for Telephony 701
Marking Telephony as a Required Hardware Feature 702
Checking for Telephony Hardware 702
Using Telephony 702
Initiating Phone Calls 703
Replacing the Native Dialer 703
Accessing Telephony Properties and Phone State 705
Reading Phone Device Details 705
Reading Network Details 706
Reading SIM Details 707
Reading Data Connection and Transfer State Details 707
Monitoring Changes in Phone State Using the Phone State Listener 708
Monitoring Incoming Phone Calls 709
Tracking Cell Location Changes 710
Tracking Service Changes 710
Monitoring Data Connectivity and Data Transfer Status Changes 711
Using Intent Receivers to Monitor Incoming Phone Calls 712
Introducing SMS and MMS 713
Using SMS and MMS in Your Application 713
Sending SMS and MMS from Your Application Using Intents 713
Sending SMS Messages Using the SMS Manager 714
Sending Text Messages 715
Tracking and Confi rming SMS Message Delivery 715
Conforming to the Maximum SMS Message Size 717
Sending Data Messages 717
Listening for Incoming SMS Messages 717
Simulating Incoming SMS Messages in the Emulator 719
Handling Data SMS Messages 719
Emergency Responder SMS Example 720
Automating the Emergency Responder 729
Introducing SIP and VOIP 737
CHAPTER 18: ADVANCED ANDROID DEVELOPMENT 739
Paranoid Android 740
Linux Kernel Security 740
Introducing Permissions 740
Declaring and Enforcing Permissions 741
Enforcing Permissions when Broadcasting Intents 742
Introducing Cloud to Device Messaging 743
C2DM Restrictions 743
Signing Up to Use C2DM 744
Registering Devices with a C2DM Server 744
Sending C2DM Messages to Devices 748
Receiving C2DM Messages 749
Implementing Copy Protection Using the License
Verifi cation Library 750
Installing the License Verifi cation Library 750
Finding Your License Verifi cation Public Key 751
Confi guring Your License Validation Policy 751
Performing License Validation Checks 752
Introducing In-App Billing 753
In-App Billing Restrictions 754
Installing the In-App Billing Library 754
Finding Your Public Key and Defi ning Your Purchasable Items 754
Initiating In-App Billing Transactions 755
Handling In-App Billing Purchase Request Responses 756
Using Wake Locks 757
Using AIDL to Support Inter-Process Communication for Services 759
Implementing an AIDL Interface 759
Making Classes Parcelable 759
Creating an AIDL Service Defi nition 762
Implementing and Exposing the AIDL Service Defi nition 762
Dealing with Dif erent Hardware and Software Availability 765
Specifying Hardware as Required 766
Confi rming Hardware Availability 766
Building Backward-Compatible Applications 766
Parallel Activities 767
Interfaces and Fragments 768
Optimizing UI Performance with Strict Mode 769
CHAPTER 19: MONETIZING, PROMOTING, AND DISTRIBUTING
APPLICATIONS 771
Signing and Publishing Applications 772
Signing Applications Using the Export Android Application Wizard 772
Distributing Applications 774
Introducing the Google Play 774
Getting Started with Google Play 775
Publishing Applications 776
Application Reports Within the Developer Console 778
Accessing Application Error Reports 778
An Introduction to Monetizing Your Applications 779
Application Marketing, Promotion, and Distribution Strategies 780
Application Launch Strategies 781
Promotion Within Google Play 781
Internationalization 782
Analytics and Referral Tracking 783
Using Google Analytics for Mobile Applications 784
Referral Tracking with Google Analytics 786
INDEX 787
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét