Professional Android - Reto Meier, Ian Lake

Professional Android

, (Autoren)

Buch | Softcover
928 Seiten
2018 | 4. Auflage
Wrox Press (Verlag)
978-1-118-94952-8 (ISBN)
45,80 inkl. MwSt
Studibuch Logo

...gebraucht verfügbar!

The comprehensive developer guide to the latest Android features and capabilities.
Professional Android, 4th Edition shows developers how to leverage the latest features of Android to create robust and compelling mobile apps.

This hands-on approach provides in-depth coverage through a series of projects, each introducing a new Android platform feature and highlighting the techniques and best practices that exploit its utmost functionality.

The exercises begin simply, and gradually build into advanced Android development. Clear, concise examples show you how to quickly construct real-world mobile applications.

This book is your guide to smart, efficient, effective Android development.
  • Learn the best practices that get more out of Android
  • Understand the anatomy, lifecycle, and UI metaphor of Android apps
  • Design for all mobile platforms, including tablets
  • Utilize both the Android framework and Google Play services

Reto Meier has been helping Android developers create the best applications possible for their users since the initial Android release in 2007. Reto is an experienced software developer with more than 20 years of experience in application design and development. He has spent 10 years as a Developer Advocate, contributing countless articles, online training, conference talks, and YouTube videos to the developer community.

Ian Lake has approached Android development from multiple angles over the course of the last 8 years. Ian has worked professionally on high profile Android apps as an application developer, provided outreach to the development community as a Developer Advocate, and has contributed to improving the Android framework APIs themselves as part of the Android Framework team.

INTRODUCTION xxxi


CHAPTER 1: HELLO, ANDROID 1


Android Application Development 1


A Little Background 2


The Not-So-Distant Past 3


Living in the Future 3


The Android Ecosystem 3


Pre-installed Android Applications 4


Android SDK Features 5


What Does Android Run On? 6


Why Develop for Mobile? 6


Why Develop for Android? 7


Introducing the Development Framework 7


What Comes in the Box 8


Understanding the Android Software Stack 8


The Android Run Time 10


Android Application Architecture 11


Android Libraries 12


CHAPTER 2: GETTING STARTED 13


Getting Started Developing Android Apps 14


Developing for Android 15


What You Need to Begin 15


Creating Your First Android Application 20


Getting Started Writing Android Apps Using Kotlin 35


Using the Android Support Library Package 36


Developing for Mobile and Embedded Devices 39


Hardware-Imposed Design Considerations 39


Considering the User's Environment 43


Developing for Android 44


Android Development Tools 48


Android Studio 49


The Android Virtual Device Manager 51


The Android Emulator 51


Android Profiler 52


The Android Debug Bridge 54


APK Analyzer 54


The Lint Tool 55


Monkey, Monkey Runner, and Espresso UI Testing 55


Gradle 56


CHAPTER 3: APPLICATIONS AND ACTIVITIES AND FRAGMENTS, OH MY! 57


Applications, Activities, and Fragments 58


The Components of an Android Application 58


The Android Application Life Cycle, Priority, and Process States 59


Introducing the Android Application Class 61


A Closer Look at Android Activities 61


Creating Activities 62


Using the AppCompatActivity 63


The Activity Life Cycle 64


Responding to Memory Pressure 71


Introducing Fragments 73


Creating New Fragments 73


The Fragment Life Cycle 74


Introducing the Fragment Manager 79


Adding Fragments to Activities 79


Communicating Between Fragments and Activities 85


Fragments without User Interfaces 86


Building an Earthquake Viewer Application 87


CHAPTER 4: DEFINING THE ANDROID MANIFEST AND GRADLE BUILD FILES, AND EXTERNALIZING RESOURCES 95


The Manifest, Build Files, and Resources 96


Introducing the Android Manifest 96


Configuring the Gradle Build 101


Gradle Settings File 101


Project Gradle Build File 102


Module Gradle Build Files 102


Externalizing Resources 107


Creating Resources 108


Using Resources 119


Creating Resources for Different Languages and Hardware 122


Runtime Configuration Changes 126


CHAPTER 5: BUILDING USER INTERFACES 129


Fundamental Android Design 130


Density-Independent Design 130


Android User Interface Fundamentals 131


Assigning User Interfaces to Activities 132


Introducing Layouts 132


Defining Layouts 134


Using Layouts to Create Device-Independent User Interfaces 136


Optimizing Layouts 139


The Android Widget Toolbox 143


Working with Lists and Grids 144


Recycler View and Layout Managers 145


Introducing Adapters 146


Returning to the Earthquake Viewer Application 149


Introducing Data Binding 150


Enabling Data Binding 151


Variables in Data Binding 152


Data Binding for the Earthquake Viewer Application 153


Creating New Views 155


Modifying Existing Views 155


Creating Compound Controls 159


Creating Simple Compound Controls as a Layout 161


Creating Custom Views 162


Using Custom Controls 176


CHAPTER 6: INTENTS AND BROADCAST RECEIVERS 177


Using Intents and Broadcast Receivers 178


Using Intents to Launch Activities 178


Explicitly Starting New Activities 179


Implicit Intents and Late Runtime Binding 179


Determining If an Intent Will Resolve 180


Returning Results from Activities 181


Using Platform-Native Actions to Launch Activities 184


Creating Intent Filters to Receive Implicit Intents 186


Defining an Intent Filter 186


Using Intent Filters for Plug-Ins and Extensibility 194


Introducing Linkify 198


Native Linkify Link Types 198


Creating Custom Link Strings 199


Using the Match Filter 200


Using the Transform Filter 200


Using Intents to Broadcast Events 200


Broadcasting Events with Intents 201


Listening for Intent Broadcasts with Broadcast Receivers 202


Registering Broadcast Receivers in Code 203


Registering Broadcast Receivers in Your Application Manifest 204


Managing Manifest Receivers at Run Time 204


Monitoring Device State Changes through Broadcast Intents 205


Introducing the Local Broadcast Manager 207


Introducing Pending Intents 208


CHAPTER 7: USING INTERNET RESOURCES 211


Connecting to the Internet 211


Connecting, Downloading, and Parsing Internet Resources 212


Why Build a Native Internet App? 212


Connecting to an Internet Resource 213


Performing Network Operations on Background Threads Using View Models, Live Data, and Asynchronous Tasks 214


Parsing XML Using the XML Pull Parser 219


Connecting the Earthquake Viewer to the Internet 220


Parsing JSON Using the JSON Parser 228


Using the Download Manager 233


Downloading Files 233


Customizing Download Manager Notifications 235


Specifying a Download Location 237


Canceling and Removing Downloads 238


Querying the Download Manager 238


Best Practices for Downloading Data without Draining the Battery 241


An Introduction to Internet Services and Cloud Computing 242


CHAPTER 8: FILES, SAVING STATE, AND USER PREFERENCES 245


Saving Files, States, and Preferences 246


Saving and Restoring Activity and Fragment Instance


State Using the Lifecycle Handlers 246


Retaining Instance State with Headless Fragments and View Models 248


View Models and Live Data 248


Headless Fragments 251


Creating and Saving Shared Preferences 252


Retrieving Shared Preferences 253


Introducing On Shared Preference Change Listeners 254


Configuring Auto Backup of Application Files and Shared Preferences 254


Building a Preference UI 256


Using the Preference Support Library 256


Defining a Preference Screen Layout in XML 257


Introducing the Preference Fragment 260


Creating a Settings Activity for the Earthquake Monitor 261


Including Static Files as Resources 267


Working with the Filesystem 267


File-Management Tools 267


Creating Files on Application-Specifi c Internal Storage 268


Creating Files on Application-Specifi c External Storage 268


Accessing Public Directories Using Scoped Directory Access 270


Sharing Files Using File Provider 274


Creating a File Provider 274


Sharing a File Using a File Provider 275


Receiving a File from a File Provider 275


Accessing Files from Other Applications Using the Storage Access Framework 275


Requesting Temporary Access to Files 276


Requesting Persistent Access to Files 277


Requesting Access to Directories 277


Creating New Files 278


Using URI-Based Permissions 278


CHAPTER 9: CREATING AND USING DATABASES 281


Introducing Structured Data Storage in Android 282


Storing Data Using the Room Persistence Library 282


Adding the Room Persistence Library 283


Defining a Room Database 284


Persisting Complex Objects Using Type Convertors 286


Defining Room Database Interactions Using Data Access Objects 288


Performing Room Database Interactions 291


Monitoring Query Result Changes with Live Data 292


Persisting Earthquakes to a Database with Room 294


Working with SQLite Databases 298


Input Validation and SQL Injection 299


Cursors and Content Values 299


Defining a Database Contract 300


Introducing the SQLiteOpenHelper 300


Opening Databases with the SQLite Open Helper 302


Opening and Creating Databases without the SQLite Open Helper 303


Adding, Updating, and Deleting Rows 303


Querying a Database 305


Extracting Values from a Cursor 307


Introducing the Firebase Realtime Database 308


Adding Firebase to Your App 309


Defining a Firebase Database and Defining Access Rules 311


Adding, Modifying, Deleting, and Querying Data from a Firebase Realtime Database 313


CHAPTER 10: CONTENT PROVIDERS AND SEARCH 317


Introducing Content Providers 318


Why Should I Use Content Providers? 318


Creating Content Providers 319


Creating the Content Provider's Database 320


Registering Content Providers 321


Publishing Your Content Provider's URI Address 321


Implementing Content Provider Queries 322


Content Provider Transactions 325


Sharing Files Using a Content Provider 327


Adding Permission Requirements to Content Providers 328


Accessing Content Providers with Content Resolvers 330


Querying Content Providers 330


Cancelling Queries 333


Querying for Content Asynchronously with a Cursor Loader 333


Adding, Deleting, and Updating Content 336


Accessing Files Stored in Content Providers 338


Accessing Permission-Restricted Content Providers 339


Using Native Android Content Providers 341


Accessing the Call Log 341


Using the Media Store Content Provider 342


Using the Contacts Content Provider 344


Using the Calendar Content Provider 351


Adding Search to Your Application 354


Defining Your Search Metadata 354


Creating a Search Results Activity 355


Searching a Content Provider 357


Using the Search View Widget 360


Providing Search Suggestions Using a Content Provider 362


CHAPTER 11: WORKING IN THE BACKGROUND 377


Working in the Background 378


Using Background Threads 379


Using Asynchronous Tasks to Run Tasks Asynchronously 379


Manual Thread Creation Using Handler Threads 383


Scheduling Background Jobs 385


Creating a Job Service for the Job Scheduler 386


Scheduling Jobs with the Job Scheduler 388


Scheduling Jobs with the Firebase Job Dispatcher 391


Scheduling Work with the Work Manager 393


An Earthquake-Monitoring Job Service Example 396


Using Notifications to Notify Users 401


Introducing the Notification Manager 401


Working with Notification Channels 402


Creating Notifications 403


Setting a Notification's Priority 407


Adding Notification Actions 411


Adding Direct Reply Actions 412


Grouping Multiple Notifications 413


Adding Notifications to the Earthquake Monitor 414


Using Firebase Cloud Messaging 417


Triggering Notifications Remotely with Firebase Notifications 418


Receiving Data with Firebase Cloud Messaging 421


Using Alarms 422


Creating, Setting, and Canceling Alarms 423


Setting an Alarm Clock 424


Introducing Services 424


Using Bound Services 425


Creating a Started Service 427


CHAPTER 12: IMPLEMENTING THE ANDROID


DESIGN PHILOSOPHY 433


Introducing the Android Design Philosophy 434


Designing for Every Screen 434


Resolution Independence 435


Supporting and Optimizing for Different Screen Sizes 436


Creating Scalable Graphics Assets 439


Introducing Material Design 445


Thinking in Terms of Paper and Ink 446


Using Color and Keylines as Guides 447


Continuity through Motion 449


Material Design UI Elements 452


The App Bar 452


Applying Material Design to the Earthquake Monitor 455


Using Cards to Display Content 456


Floating Action Buttons 460


CHAPTER 13: IMPLEMENTING A MODERN ANDROID USER EXPERIENCE 463


The Modern Android UI 464


Creating Consistent, Modern User Interfaces


Using AppCompat 464


Creating and Applying Themes Using AppCompat 465


Creating Theme Overlays for Specific Views 466


Adding a Menu and Actions to the App Bar 467


Defining a Menu Resource 467


Adding a Menu to an Activity 468


Adding a Menu to a Fragment 469


Updating Menu Items Dynamically 469


Handling Menu Selections 470


Adding Action Views and Action Providers 470


Going Beyond the Default App Bar 472


Replacing Your App Bar with a Toolbar 472


Advanced Scrolling Techniques for the Toolbar 473


Incorporating Menus without the App Bar 476


Improving the Earthquake Monitor's App Bar 477


App Navigation Patterns 479


Navigating with Tabs 479


Implementing a Bottom Navigation Bar 482


Using a Navigation Drawer 485


Combining Navigation Patterns 491


Adding Tabs to the Earthquake Monitor 492


Choosing the Right Level of Interruption 496


Initiating a Dialog 497


Let's Make a Toast 498


Inline Interruptions with Snackbars 499


CHAPTER 14: ADVANCED CUSTOMIZATION OF YOUR USER INTERFACE 501


Expanding the User Experience 502


Supporting Accessibility 502


Supporting Navigation without a Touch Screen 502


Providing a Textual Description of Each View 503


Introducing Android Text-to-Speech 503


Using Speech Recognition 505


Using Speech Recognition for Voice Input 506


Using Speech Recognition for Search 507


Controlling Device Vibration 508


Going Full Screen 508


Working with Property Animations 510


Enhancing Your Views 513


Advanced Canvas Drawing 514


Creating Interactive Controls 530


Composite Drawable Resources 536


Transformative Drawables 536


Layer Drawables 537


State List Drawables 537


Level List Drawables 538


Copy, Paste, and the Clipboard 539


Copying Data to the Clipboard 539


Pasting Clipboard Data 539


CHAPTER 15: LOCATION, CONTEXTUAL AWARENESS,AND MAPPING 541


Adding Location, Maps, and Contextual Awareness to Your


Applications 542


Introducing Google Play Services 542


Adding Google Play Services to Your Application 543


Determining the Availability of Google Play Services 545


Finding Device Location Using Google Location Services 546


Using the Emulator to Test Location-Based Functionality 548


Finding the Last Known Location 549


"Where Am I" Example 551


Requesting Location Change Updates 555


Changing Device Location Settings 560


Updating the Location in the "Where Am I" Example 563


Best Practices When Using Location 566


Setting and Managing Geofences 567


Using the Legacy Platform Location-Based Services 571


Selecting a Location Provider 572


Finding the Last Known Location 574


Requesting Location Change Updates 575


Best Practice for Using the Legacy Location-Based Services 577


Using the Geocoder 580


Reverse Geocoding 581


Forward Geocoding 582


Geocoding Where Am I 583


Creating Map-Based Activities 585


Getting Your Maps API Key 586


Creating a Map-Based Activity 586


Configuring Google Maps 589


Changing the Camera Position with Camera Updates 590


Mapping Where Am I 592


Displaying the Current Location with the My Location Layer 596


Displaying Interactive Map Markers 596


Adding Shapes to Google Maps 599


Adding Image Overlays to Google Maps 602


Adding Markers and Shapes to Where Am I 602


Mapping the Earthquake Example 605


Adding Contextual Awareness 609


Connecting to the Google Play Services API Client and Obtaining API Keys 610


Using Awareness Snapshots 612


Setting and Monitoring Awareness Fences 613


Awareness Best Practices 617


CHAPTER 16: HARDWARE SENSORS 619


Introducing Android Sensors 620


Using the Sensor Manager 620


Understanding the Android Sensors 621


Discovering and Identifying Sensors 623


Determining Sensor Capabilities 625


Wakeup and Non-Wakeup Sensors 627


Monitoring Sensor Results 627


Interpreting Sensor Values 632


Testing Sensors with the Android Virtual Device and Emulator 635


Best Practices for Working with Sensors 637


Monitoring a Device's Movement and Orientation 637


Determining the Natural Orientation of a Device 638


Introducing Accelerometers 639


Detecting Acceleration Changes 640


Creating a Gravitational Force Meter 642


Determining a Device's Orientation 645


Creating a Compass and Artificial Horizon 650


Using the Environmental Sensors 654


Using the Barometer Sensor 654


Creating a Weather Station 655


Using Body Sensors 659


User Activity Recognition 662


CHAPTER 17: AUDIO, VIDEO, AND USING THE CAMERA 665


Playing Audio and Video, and Using the Camera 666


Playing Audio and Video 666


Introducing the Media Player 667


Using Media Player for Video Playback 669


Using ExoPlayer for Video Playback 672


Requesting and Managing Audio Focus 674


Pausing Playback When the Output Changes 676


Responding to the Volume Controls 677


Working with a Media Session 678


Using the Media Router and Cast Application Framework 682


Background Audio Playback 686


Building an Audio Playback Service 686


Using a Media Browser to Connect Your Activity to a


Media Browser Service 688


Life Cycle of a Media Browser Service 690


Playing Audio as a Foreground Service 691


Creating Media Style Notifications 693


Using the Media Recorder to Record Audio 695


Using the Camera for Taking Pictures 697


Using Intents to Take Pictures 697


Controlling the Camera Directly 699


Reading and Writing JPEG EXIF Image Details 706


Recording Video 706


Using Intents to Record Video 707


Using the Media Recorder to Record Video 707


Adding Media to the Media Store 710


Inserting Media Using the Media Scanner 710


Inserting Media Manually 711


CHAPTER 18: COMMUNICATING WITH BLUETOOTH,NFC, AND WI-FI PEER-TO-PEER 713


Networking and Peer-to-Peer Communication 713


Transferring Data Using Bluetooth 714


Managing the Local Bluetooth Device Adapter 714


Being Discoverable and Remote Device Discovery 716


Bluetooth Communications 720


Bluetooth Profiles 725


Bluetooth Low Energy 726


Transferring Data Using Wi-Fi Peer-to-Peer 728


Initializing the Wi-Fi Peer-to-Peer Framework 729


Discovering Peers 731


Connecting with Peers 732


Transferring Data between Peers 733


Using Near Field Communication 735


Reading NFC Tags 735


Using the Foreground Dispatch System 736


Using Android Beam 738


Creating Android Beam Messages 739


Assigning the Android Beam Payload 740


Receiving Android Beam Messages 742


CHAPTER 19: INVADING THE HOME SCREEN 743


Customizing the Home Screen 743


Introducing Home Screen Widgets 744


Defining the Widget Layout 745


Defining Your Widget Size and Other Metadata 746


Implementing Your Widget 748


Updating the Widget UI Using the App Widget Manager and Remote Views 749


Forcing Refreshes of Your Widget Data and UI 753


Creating and Using a Widget Configuration Activity 756


Creating an Earthquake Widget 757


Introducing Collection View Widgets 763


Creating Collection View Widget Layouts 764


Updating Collection View Items with a Remote Views Factory 765


Updating Collection View Items with a Remote Views Service 767


Populating Collection View Widgets Using a Remote Views Service 768


Adding Interactivity to the Items within a Collection View Widget 769


Refreshing Your Collection View Widgets 770


Creating an Earthquake Collection View Widget 770


Creating Live Wallpaper 777


Creating a Live Wallpaper Definition Resource 778


Creating a Wallpaper Service Engine 778


Creating a Wallpaper Service 780


Creating App Shortcuts 781


Static Shortcuts 783


Dynamic Shortcuts 784


Tracking App Shortcut Use 785


CHAPTER 20: ADVANCED ANDROID DEVELOPMENT 787


Advanced Android 788


Paranoid Android 788


Linux Kernel Security 788


Re-introducing Permissions 789


Storing Keys in the Android Keystore 792


Using the Fingerprint Sensor 792


Dealing with Different Hardware and Software Availability 793


Specifying Required Hardware 794


Confirming Hardware Availability 795


Building Backward-Compatible Applications 795


Optimizing UI Performance with Strict Mode 797


Telephony and SMS 798


Telephony 799


Sending and Receiving SMS Messages 806


CHAPTER 21: RELEASING, DISTRIBUTING, AND MONITORING APPLICATIONS 825


Preparing for Release 826


Preparing Release Support Material 826


Preparing Your Code for a Release Build 827


Updating Application Metadata in Your Application Manifest 828


Reviewing Application Installation Restrictions 828


Application Versioning 830


Signing Production Builds of Your Application 830


Creating a Keystore and Signing Key with Android Studio 832


Obtaining API Keys Based on Your Private Release Key 833


Building and Signing a Production Release 834


Distributing Your Application on the Google Play Store 835


Introducing the Google Play Store 835


Getting Started with the Google Play Store 836


Creating an Application on the Google Play Store 837


Publishing Your Application 845


Monitoring Your Application in Production 848


An Introduction to Monetizing Applications 853


Application Marketing, Promotion, and Distribution Strategies 854


Application Launch Strategies 854


Internationalization 855


Using Firebase to Monitor Your Application 856


Adding Firebase to Your Application 856


Using Firebase Analytics 857


Firebase Performance Monitoring 860


INDEX 863

Erscheint lt. Verlag 4.12.2018
Verlagsort New York
Sprache englisch
Gewicht 1559 g
Einbandart kartoniert
Themenwelt Informatik Betriebssysteme / Server Android
Mathematik / Informatik Informatik Programmiersprachen / -werkzeuge
Informatik Software Entwicklung Mobile- / App-Entwicklung
Informatik Weitere Themen Smartphones / Tablets
Schlagworte Android • Android development • App-Entwicklung • Guide • Handbuch
ISBN-10 1-118-94952-8 / 1118949528
ISBN-13 978-1-118-94952-8 / 9781118949528
Zustand Neuware
Haben Sie eine Frage zum Produkt?
Mehr entdecken
aus dem Bereich