{"product_id":"android-application-development-all-in-one-for-dummies-isbn-9781119660453","title":"Android Application Development All-in-One For Dummies","description":"\u003cp\u003e\u003cb\u003eConquer the world of Android app development\u003c\/b\u003e \u003c\/p\u003e \u003cp\u003eAndroid has taken over the mobile and TV markets and become unstoppable! Android offers a vast stage for developers to serve millions—and rake in the profits—with diverse and wide-ranging app ideas. Whether you're a raw recruit or a veteran programmer, you can get in on the action and become a master of the Android programming universe with the new edition of \u003ci\u003eAndroid Application Development For Dummies All-in-One\u003c\/i\u003e. In addition to receiving guidance on mobile and TV development, you'll find overviews of native code, watch, car, Android wear, and other device development.\u003c\/p\u003e \u003cp\u003eThis friendly, easy-to-follow book kicks off by offering a fundamental understanding of Android's major technical ideas, including functional programming techniques. It moves on to show you how to work effectively in Studio, program cool new features, and test your app to make sure it's ready to release to a waiting world. You'll also have an opportunity to brush up on your Kotlin and develop your marketing savvy. There are millions of potential customers out there, and you want to stand out from the crowd!\u003c\/p\u003e \u003cul\u003e \u003cli\u003eUnderstand new features and enhancements\u003c\/li\u003e \u003cli\u003eGet development best-practices\u003c\/li\u003e \u003cli\u003eKnow your Android hardware\u003c\/li\u003e \u003cli\u003eAccess online materials\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003eWith a market share like Android's, the stakes couldn't be higher. \u003ci\u003eAndroid Application Development For Dummies All-in-One\u003c\/i\u003e levels the field and gives you the tools you need to take on the world.\u003c\/p\u003e \u003cp\u003e\u003cb\u003eIntroduction\u003c\/b\u003e\u003cb\u003e 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eHow to Use This Book 1\u003c\/p\u003e \u003cp\u003eConventions Used in This Book 2\u003c\/p\u003e \u003cp\u003eFoolish Assumptions 2\u003c\/p\u003e \u003cp\u003eIcons Used in This Book 3\u003c\/p\u003e \u003cp\u003eBeyond the Book 4\u003c\/p\u003e \u003cp\u003eWhere to Go from Here 4\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 1: Getting Started with Android Application Development 5\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: All about Android\u003c\/b\u003e\u003cb\u003e 7\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Consumer Perspective 8\u003c\/p\u003e \u003cp\u003eThe Versions of Android 9\u003c\/p\u003e \u003cp\u003eThe Developer Perspective 12\u003c\/p\u003e \u003cp\u003eJava and Kotlin 12\u003c\/p\u003e \u003cp\u003eXML 14\u003c\/p\u003e \u003cp\u003eLinux 16\u003c\/p\u003e \u003cp\u003eThe Business Perspective 18\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Installing the Software Tools\u003c\/b\u003e\u003cb\u003e 19\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSetting Up the Software 20\u003c\/p\u003e \u003cp\u003eConsidering the requirements 20\u003c\/p\u003e \u003cp\u003eDownloading the software 21\u003c\/p\u003e \u003cp\u003eInstalling Android Studio 23\u003c\/p\u003e \u003cp\u003eInstalling offline tools 25\u003c\/p\u003e \u003cp\u003eLaunching the Android Studio IDE 28\u003c\/p\u003e \u003cp\u003eIn Windows 29\u003c\/p\u003e \u003cp\u003eOn a Mac 29\u003c\/p\u003e \u003cp\u003eIn Linux 30\u003c\/p\u003e \u003cp\u003eIn Chrome OS 30\u003c\/p\u003e \u003cp\u003eUsing the Android Studio Setup Wizard 30\u003c\/p\u003e \u003cp\u003eFattening Up the Android SDK 32\u003c\/p\u003e \u003cp\u003eThe more things stay the same, the more they change 32\u003c\/p\u003e \u003cp\u003eInstalling new versions (and older versions) of Android 33\u003c\/p\u003e \u003cp\u003eCreating an Android virtual device 35\u003c\/p\u003e \u003cp\u003eA third-party emulator 39\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Creating an Android App\u003c\/b\u003e\u003cb\u003e 43\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCreating Your First App 43\u003c\/p\u003e \u003cp\u003eStarting the IDE and creating your first app 45\u003c\/p\u003e \u003cp\u003eLaunching your first app 50\u003c\/p\u003e \u003cp\u003eRunning Your App 52\u003c\/p\u003e \u003cp\u003eYou Can Download All the Code 55\u003c\/p\u003e \u003cp\u003eTroubleshooting Common IDE Errors 58\u003c\/p\u003e \u003cp\u003eError message: Failed to find target 58\u003c\/p\u003e \u003cp\u003eError running ‘app’: No target device found 58\u003c\/p\u003e \u003cp\u003eError message: Android Virtual Device may be incompatible with your configuration 58\u003c\/p\u003e \u003cp\u003eYou lose contact with the Android Debug Bridge (ADB) 59\u003c\/p\u003e \u003cp\u003eYou don’t like whatever AVD opens automatically 59\u003c\/p\u003e \u003cp\u003eThe emulator stalls during startup 60\u003c\/p\u003e \u003cp\u003eError message: The user data image is used by another emulator 61\u003c\/p\u003e \u003cp\u003eError message: Unknown virtual device name 63\u003c\/p\u003e \u003cp\u003eThe emulator displays a “process isn’t responding” dialog box 63\u003c\/p\u003e \u003cp\u003eChanges to your app don’t appear in the emulator 64\u003c\/p\u003e \u003cp\u003eTesting Apps on a Real Device 64\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Examining a Basic Android App\u003c\/b\u003e\u003cb\u003e 67\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eA Project’s Files 68\u003c\/p\u003e \u003cp\u003eThe MainActivity.kt file 71\u003c\/p\u003e \u003cp\u003eThe onCreate() method 72\u003c\/p\u003e \u003cp\u003eUsing other templates 73\u003c\/p\u003e \u003cp\u003eThe res Branch 76\u003c\/p\u003e \u003cp\u003eThe res\/drawable branch 77\u003c\/p\u003e \u003cp\u003eThe res\/layout branch 77\u003c\/p\u003e \u003cp\u003eThe res\/menu branch 78\u003c\/p\u003e \u003cp\u003eThe res\/mipmap branch 79\u003c\/p\u003e \u003cp\u003eThe res\/values branch 80\u003c\/p\u003e \u003cp\u003eOther Files in an Android Project 82\u003c\/p\u003e \u003cp\u003eThe build.gradle file 82\u003c\/p\u003e \u003cp\u003eThe AndroidManifest.xml file 85\u003c\/p\u003e \u003cp\u003eThe R.java file 87\u003c\/p\u003e \u003cp\u003eThe assets folder 89\u003c\/p\u003e \u003cp\u003eThe android.jar archive 90\u003c\/p\u003e \u003cp\u003eThe APK file 91\u003c\/p\u003e \u003cp\u003eWhat Did I Agree To? 93\u003c\/p\u003e \u003cp\u003eWhat’s in a name? 93\u003c\/p\u003e \u003cp\u003eChoosing a language 95\u003c\/p\u003e \u003cp\u003eYour app’s API levels 95\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Conjuring and Embellishing an Android App\u003c\/b\u003e\u003cb\u003e 101\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDragging, Dropping, and Otherwise Tweaking an App 102\u003c\/p\u003e \u003cp\u003eCreating the “look” 102\u003c\/p\u003e \u003cp\u003eCoding the behavior 112\u003c\/p\u003e \u003cp\u003eA Bit of Debugging 118\u003c\/p\u003e \u003cp\u003eTry it! 118\u003c\/p\u003e \u003cp\u003eDiscovering the secrets of Logcat 123\u003c\/p\u003e \u003cp\u003eUsing the debugger 126\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6: Improving Your App\u003c\/b\u003e\u003cb\u003e 131\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eImproving the Layout 131\u003c\/p\u003e \u003cp\u003eChanging the layout 132\u003c\/p\u003e \u003cp\u003eCreating a reusable layout 139\u003c\/p\u003e \u003cp\u003eReusing a layout 142\u003c\/p\u003e \u003cp\u003eStarting Another Activity 145\u003c\/p\u003e \u003cp\u003eLocalizing Your App 151\u003c\/p\u003e \u003cp\u003eResponding to Check Box Events 155\u003c\/p\u003e \u003cp\u003eDisplaying Images 157\u003c\/p\u003e \u003cp\u003eSending in Your Order 162\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 2: Android Background Material 167\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Using Android Studio \u003c\/b\u003e\u003cb\u003e169\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGood to Know versus Need to Know 170\u003c\/p\u003e \u003cp\u003eGetting a Feel for the Big Picture 171\u003c\/p\u003e \u003cp\u003eThe main window 173\u003c\/p\u003e \u003cp\u003eViewing modes 179\u003c\/p\u003e \u003cp\u003eThe Designer tool 181\u003c\/p\u003e \u003cp\u003eDiscovering What You Can Do 184\u003c\/p\u003e \u003cp\u003eFinding things 185\u003c\/p\u003e \u003cp\u003eFixing code 190\u003c\/p\u003e \u003cp\u003eRefactoring 199\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Kotlin for Java Programmers\u003c\/b\u003e\u003cb\u003e 203\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing Kotlin or Java for Development 204\u003c\/p\u003e \u003cp\u003eDefining the Java Issues That Kotlin Fixes 207\u003c\/p\u003e \u003cp\u003eImproving control over null references 207\u003c\/p\u003e \u003cp\u003eRemoving raw data types 210\u003c\/p\u003e \u003cp\u003eUsing invariant arrays 210\u003c\/p\u003e \u003cp\u003eWorking with proper function types 212\u003c\/p\u003e \u003cp\u003eGetting rid of the checked exceptions 213\u003c\/p\u003e \u003cp\u003eNothing’s Perfect: Kotlin is Missing Features, Too 214\u003c\/p\u003e \u003cp\u003eConsidering primitive types that are not classes 214\u003c\/p\u003e \u003cp\u003eLosing static members 214\u003c\/p\u003e \u003cp\u003eEliminating non-private fields 215\u003c\/p\u003e \u003cp\u003eReducing confusion by eliminating wildcard-types 216\u003c\/p\u003e \u003cp\u003eAbandoning the ternary-operator a ? b : c 217\u003c\/p\u003e \u003cp\u003eLooking at What Kotlin Adds to the Picture 218\u003c\/p\u003e \u003cp\u003eConsidering higher order functions and lambdas 218\u003c\/p\u003e \u003cp\u003eRefining object orientation using extension functions 218\u003c\/p\u003e \u003cp\u003eRelying on smart casts 219\u003c\/p\u003e \u003cp\u003eEmploying string templates 220\u003c\/p\u003e \u003cp\u003eUnderstanding primary constructors 221\u003c\/p\u003e \u003cp\u003eImplementing first-class delegation 221\u003c\/p\u003e \u003cp\u003eUsing ranges of values 223\u003c\/p\u003e \u003cp\u003eCreating data classes 224\u003c\/p\u003e \u003cp\u003eOverloading operators 224\u003c\/p\u003e \u003cp\u003eDeveloping asynchronous code using coroutines 225\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Kotlin for Everyone\u003c\/b\u003e\u003cb\u003e 227\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eMoving from Development to Execution with Kotlin 228\u003c\/p\u003e \u003cp\u003eWhat is a compiler? 228\u003c\/p\u003e \u003cp\u003eUnderstanding native code compiler or interpreter issues 230\u003c\/p\u003e \u003cp\u003eConsidering the Android Runtime (ART) 231\u003c\/p\u003e \u003cp\u003eGrasping Kotlin Code 235\u003c\/p\u003e \u003cp\u003eNearly everything begins with an expression 236\u003c\/p\u003e \u003cp\u003eThe Kotlin class 238\u003c\/p\u003e \u003cp\u003eClasses and objects 239\u003c\/p\u003e \u003cp\u003eKotlin types 240\u003c\/p\u003e \u003cp\u003ePerforming casts 245\u003c\/p\u003e \u003cp\u003eThe Kotlin function 249\u003c\/p\u003e \u003cp\u003eObjects and their constructors 252\u003c\/p\u003e \u003cp\u003eClasses grow on trees 254\u003c\/p\u003e \u003cp\u003eThe Kotlin package 255\u003c\/p\u003e \u003cp\u003eConsidering Kotlin visibility rules 257\u003c\/p\u003e \u003cp\u003eDefying your parent 258\u003c\/p\u003e \u003cp\u003eKotlin comments 259\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: What Kotlin Does (and When)\u003c\/b\u003e\u003cb\u003e 261\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eMaking Decisions (Kotlin if Statements) 261\u003c\/p\u003e \u003cp\u003eTesting for equality 264\u003c\/p\u003e \u003cp\u003eChoosing among many alternatives (Kotlin when statements) 266\u003c\/p\u003e \u003cp\u003eRepeating Instructions Over and Over Again 269\u003c\/p\u003e \u003cp\u003eKotlin while statements 269\u003c\/p\u003e \u003cp\u003eKotlin do statements 271\u003c\/p\u003e \u003cp\u003eArrays in Kotlin 273\u003c\/p\u003e \u003cp\u003eKotlin’s for statements 277\u003c\/p\u003e \u003cp\u003eLooping using Kotlin recursion 281\u003c\/p\u003e \u003cp\u003eWorking with break and continue 283\u003c\/p\u003e \u003cp\u003eJumping Away from Trouble 284\u003c\/p\u003e \u003cp\u003eWorking with Kotlin Collections 286\u003c\/p\u003e \u003cp\u003eConsidering the collection types 287\u003c\/p\u003e \u003cp\u003eDifferentiating between read-only and mutable collections 289\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Object-Oriented Programming in Kotlin\u003c\/b\u003e\u003cb\u003e 291\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eStatic Fields and Methods 291\u003c\/p\u003e \u003cp\u003eInterfaces and Callbacks 294\u003c\/p\u003e \u003cp\u003eEvent handling and callbacks 299\u003c\/p\u003e \u003cp\u003eAn object remembers who created it 302\u003c\/p\u003e \u003cp\u003eA less wordy way to implement an interface 303\u003c\/p\u003e \u003cp\u003eClasses That Must (and Must Not) Be Extended 305\u003c\/p\u003e \u003cp\u003eThe need to override 306\u003c\/p\u003e \u003cp\u003eJava’s final classes 306\u003c\/p\u003e \u003cp\u003eKotlin’s open classes 307\u003c\/p\u003e \u003cp\u003eKotlin extensions 307\u003c\/p\u003e \u003cp\u003eAbstract classes 308\u003c\/p\u003e \u003cp\u003eInner Classes 310\u003c\/p\u003e \u003cp\u003eNamed inner classes 310\u003c\/p\u003e \u003cp\u003eAnonymous inner classes 312\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6: Functional Programming in Kotlin\u003c\/b\u003e\u003cb\u003e 315\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDefining Functional Programming 316\u003c\/p\u003e \u003cp\u003eDifferences from other programming paradigms 316\u003c\/p\u003e \u003cp\u003eUnderstanding its goals 317\u003c\/p\u003e \u003cp\u003eUnderstanding Pure and Impure Languages 318\u003c\/p\u003e \u003cp\u003eUsing the pure approach 318\u003c\/p\u003e \u003cp\u003eUsing the impure approach 320\u003c\/p\u003e \u003cp\u003eComparing the Functional Paradigm 320\u003c\/p\u003e \u003cp\u003eUsing Kotlin for Functional Programming Needs 322\u003c\/p\u003e \u003cp\u003eDefining the Role of State 323\u003c\/p\u003e \u003cp\u003eUsing Recursion to Perform Calculations 324\u003c\/p\u003e \u003cp\u003eRelying on standard recursion 324\u003c\/p\u003e \u003cp\u003eRelying on tail recursion 326\u003c\/p\u003e \u003cp\u003eUsing Function Types 327\u003c\/p\u003e \u003cp\u003eUnderstanding Function Literals 329\u003c\/p\u003e \u003cp\u003eLambda expressions 329\u003c\/p\u003e \u003cp\u003eAnonymous functions 330\u003c\/p\u003e \u003cp\u003eDefining the Function Types 331\u003c\/p\u003e \u003cp\u003eComprehensions 331\u003c\/p\u003e \u003cp\u003eReceivers 332\u003c\/p\u003e \u003cp\u003eInline 334\u003c\/p\u003e \u003cp\u003eUtility 335\u003c\/p\u003e \u003cp\u003eUsing Functional Programming for Android Apps 336\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7: A \u003cbrief\u003e Look at XML \u003c\/brief\u003e\u003c\/b\u003e\u003cb\u003e339\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eXML Isn’t Ordinary Text 340\u003c\/p\u003e \u003cp\u003eOf tags and elements 340\u003c\/p\u003e \u003cp\u003eOther things you find in an XML document 348\u003c\/p\u003e \u003cp\u003eWhat’s in a Namespace? 350\u003c\/p\u003e \u003cp\u003eThe package attribute 353\u003c\/p\u003e \u003cp\u003eThe style attribute 354\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 3: The Building Blocks 357\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Getting an Overview of Jetpack\u003c\/b\u003e\u003cb\u003e 359\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding the Benefits of Jetpack 360\u003c\/p\u003e \u003cp\u003eEliminating boilerplate code 360\u003c\/p\u003e \u003cp\u003eManaging background tasks 361\u003c\/p\u003e \u003cp\u003eNavigating between activities and fragments 362\u003c\/p\u003e \u003cp\u003eManaging memory 364\u003c\/p\u003e \u003cp\u003ePerforming configuration changes 365\u003c\/p\u003e \u003cp\u003eConsidering the Jetpack Components 366\u003c\/p\u003e \u003cp\u003eFoundation 367\u003c\/p\u003e \u003cp\u003eArchitecture 368\u003c\/p\u003e \u003cp\u003eBehavior 370\u003c\/p\u003e \u003cp\u003eUI 372\u003c\/p\u003e \u003cp\u003eGetting an Overview of the AndroidX Package 373\u003c\/p\u003e \u003cp\u003eWorking with Lifecycle-Aware Components 374\u003c\/p\u003e \u003cp\u003eFocusing on activities 375\u003c\/p\u003e \u003cp\u003eUnderstanding events and states 376\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Building a Foundation for Your App\u003c\/b\u003e\u003cb\u003e 377\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWorking with Android KTX 378\u003c\/p\u003e \u003cp\u003eGetting a feel for KTX features 378\u003c\/p\u003e \u003cp\u003eUsing KTX in your project 381\u003c\/p\u003e \u003cp\u003eConsidering the modules 382\u003c\/p\u003e \u003cp\u003eAddressing Security Issues 389\u003c\/p\u003e \u003cp\u003eBenchmarking Your Application 392\u003c\/p\u003e \u003cp\u003eRemoving barriers to correct results 393\u003c\/p\u003e \u003cp\u003eCreating a test app 394\u003c\/p\u003e \u003cp\u003eProfiling your app 397\u003c\/p\u003e \u003cp\u003eTracing your app 398\u003c\/p\u003e \u003cp\u003eChecking for benchmarking module support 400\u003c\/p\u003e \u003cp\u003eBenchmarking the app 401\u003c\/p\u003e \u003cp\u003eTesting Application Functionality 403\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Creating an Architecture\u003c\/b\u003e\u003cb\u003e 405\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eManaging Application Activities 405\u003c\/p\u003e \u003cp\u003eDefining an activity 406\u003c\/p\u003e \u003cp\u003eGetting an overview of intent filters 407\u003c\/p\u003e \u003cp\u003eConsidering the activity lifecycle 407\u003c\/p\u003e \u003cp\u003eUnderstanding the backstack 409\u003c\/p\u003e \u003cp\u003eWorking with fragments 412\u003c\/p\u003e \u003cp\u003eConsidering the fragment lifecycle 416\u003c\/p\u003e \u003cp\u003eSeeing activities and fragments in action 417\u003c\/p\u003e \u003cp\u003eProviding for Navigational Needs 433\u003c\/p\u003e \u003cp\u003eCreating the navigational graph 434\u003c\/p\u003e \u003cp\u003eAdding a NavHostFragment to your activity 437\u003c\/p\u003e \u003cp\u003eAdding destinations 438\u003c\/p\u003e \u003cp\u003eCreating links between destinations 440\u003c\/p\u003e \u003cp\u003eCreating the required linkages 442\u003c\/p\u003e \u003cp\u003ePerforming Background Tasks Using WorkManager 446\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Defining an App’s Behavior\u003c\/b\u003e\u003cb\u003e 451\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWorking with Notifications 452\u003c\/p\u003e \u003cp\u003eUnderstanding what notifications do 452\u003c\/p\u003e \u003cp\u003eAnatomy of a notification 454\u003c\/p\u003e \u003cp\u003eAssigning a channel to your notification 456\u003c\/p\u003e \u003cp\u003eSetting the notification importance 457\u003c\/p\u003e \u003cp\u003eConsidering the notification types 458\u003c\/p\u003e \u003cp\u003eRelying on notification updates 459\u003c\/p\u003e \u003cp\u003eDo Not Disturb mode 460\u003c\/p\u003e \u003cp\u003eCreating a notification 460\u003c\/p\u003e \u003cp\u003eGetting Permission 466\u003c\/p\u003e \u003cp\u003eConsidering permission use 467\u003c\/p\u003e \u003cp\u003eConfiguring permissions in AndroidManifest.xml 468\u003c\/p\u003e \u003cp\u003eComplying with User Preferences 469\u003c\/p\u003e \u003cp\u003eDeciding on a preference set 470\u003c\/p\u003e \u003cp\u003eSetting preferences using the Preference Library 472\u003c\/p\u003e \u003cp\u003eWorking with MediaPlayer 481\u003c\/p\u003e \u003cp\u003eAdding Camera Support Using CameraX 484\u003c\/p\u003e \u003cp\u003eSharing with Others 487\u003c\/p\u003e \u003cp\u003ePerforming simple share actions with other apps 487\u003c\/p\u003e \u003cp\u003eUsing Slices 488\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Interacting with the Users\u003c\/b\u003e\u003cb\u003e 491\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCreating a Great Layout 492\u003c\/p\u003e \u003cp\u003eDefining the View and ViewGroup elements 492\u003c\/p\u003e \u003cp\u003eCreating a layout using XML 493\u003c\/p\u003e \u003cp\u003eModifying a layout at runtime 497\u003c\/p\u003e \u003cp\u003eConsidering the common layouts 498\u003c\/p\u003e \u003cp\u003eWorking with adapters 499\u003c\/p\u003e \u003cp\u003eDebugging your layout 500\u003c\/p\u003e \u003cp\u003eEmploying Color and Texture 502\u003c\/p\u003e \u003cp\u003eWorking with styles and themes 503\u003c\/p\u003e \u003cp\u003eCreating a palette 509\u003c\/p\u003e \u003cp\u003eUsing swatches to create color schemes 510\u003c\/p\u003e \u003cp\u003eUsing Animations and Transitions 510\u003c\/p\u003e \u003cp\u003eUnderstanding the need for animations 511\u003c\/p\u003e \u003cp\u003eAnimating graphics 511\u003c\/p\u003e \u003cp\u003eCommunicating with Emoji 514\u003c\/p\u003e \u003cp\u003eKeyboard emoji support 515\u003c\/p\u003e \u003cp\u003eUsing the cut-and-paste method on standard controls 516\u003c\/p\u003e \u003cp\u003eUsing the AndroidX approach 517\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 4: Programming Cool Phone Features 521\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Hungry Burds: A Simple Android Game\u003c\/b\u003e\u003cb\u003e 523\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroducing the Hungry Burds Game 523\u003c\/p\u003e \u003cp\u003eThe Hungry Burds Project’s Files 526\u003c\/p\u003e \u003cp\u003eThe Main Activity 528\u003c\/p\u003e \u003cp\u003eThe Code, All the Code, and Nothing But the Code 530\u003c\/p\u003e \u003cp\u003eSetting Up the Game 535\u003c\/p\u003e \u003cp\u003eDeclaring properties 535\u003c\/p\u003e \u003cp\u003eThe onCreate Method 537\u003c\/p\u003e \u003cp\u003eDisplaying a Burd 538\u003c\/p\u003e \u003cp\u003eCreating random values 538\u003c\/p\u003e \u003cp\u003eCreating a Burd 539\u003c\/p\u003e \u003cp\u003ePlacing a Burd on the constraint layout 540\u003c\/p\u003e \u003cp\u003eAnimating a Burd 542\u003c\/p\u003e \u003cp\u003eHandling a Touch Event 544\u003c\/p\u003e \u003cp\u003eFinishing Up 546\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: An Android Social Media App\u003c\/b\u003e\u003cb\u003e 547\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSetting Things Up on Facebook’s Developer Site 548\u003c\/p\u003e \u003cp\u003eA Minimal Facebook App 549\u003c\/p\u003e \u003cp\u003eThe build.gradle file 550\u003c\/p\u003e \u003cp\u003eThe manifest file 550\u003c\/p\u003e \u003cp\u003eA Bare-Bones Main Activity 551\u003c\/p\u003e \u003cp\u003eEnriching the Minimal App 555\u003c\/p\u003e \u003cp\u003eWorking with a radio group 559\u003c\/p\u003e \u003cp\u003eControlling the web view 562\u003c\/p\u003e \u003cp\u003eWho tests your Facebook app? 563\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Going Native\u003c\/b\u003e\u003cb\u003e 567\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Native Development Kit 567\u003c\/p\u003e \u003cp\u003eUnderstanding why you need the NDK 568\u003c\/p\u003e \u003cp\u003eKnowing what you get 569\u003c\/p\u003e \u003cp\u003eGetting the NDK 570\u003c\/p\u003e \u003cp\u003eCreating an Application 573\u003c\/p\u003e \u003cp\u003eStarting with the template 573\u003c\/p\u003e \u003cp\u003eSeeing the essential project differences 575\u003c\/p\u003e \u003cp\u003eConsidering the build.gradle (Module: app) differences 577\u003c\/p\u003e \u003cp\u003eUnderstanding the default template differences 580\u003c\/p\u003e \u003cp\u003eGetting an overview of the C++ file 582\u003c\/p\u003e \u003cp\u003eSeeing the result 583\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 5: Apps for Tablets, Watches, TV Sets, and Cars 585\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Apps for Tablets\u003c\/b\u003e\u003cb\u003e 587\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGaining Perspective 588\u003c\/p\u003e \u003cp\u003eCreating the right devices 589\u003c\/p\u003e \u003cp\u003eRunning code on multiple devices 593\u003c\/p\u003e \u003cp\u003eCopying the project 594\u003c\/p\u003e \u003cp\u003eSeeing presentation differences 596\u003c\/p\u003e \u003cp\u003eDeveloping a Nested Navigational Graph 603\u003c\/p\u003e \u003cp\u003eUnderstanding the uses for nested navigational graphs 603\u003c\/p\u003e \u003cp\u003eDeveloping an app design 604\u003c\/p\u003e \u003cp\u003eConsidering the content needs 608\u003c\/p\u003e \u003cp\u003eCreating a Responsive App 612\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Developing for Android Wear \u003c\/b\u003e\u003cb\u003e615\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSeeing Where Wearables Are Used 615\u003c\/p\u003e \u003cp\u003eSetting Up Your Testing Environment 617\u003c\/p\u003e \u003cp\u003eCreating the project 617\u003c\/p\u003e \u003cp\u003eConfiguring a wearable device emulator 620\u003c\/p\u003e \u003cp\u003eOther testing configurations 624\u003c\/p\u003e \u003cp\u003eWearable Apps: What’s the Big Deal? 625\u003c\/p\u003e \u003cp\u003eCase Study: A Watch Face 626\u003c\/p\u003e \u003cp\u003eDefining the watch face project 627\u003c\/p\u003e \u003cp\u003eTesting the watch face app 628\u003c\/p\u003e \u003cp\u003eDissecting the skeletal watch face project 631\u003c\/p\u003e \u003cp\u003eEnhancing the skeletal watch face project 634\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Developing for Android TV\u003c\/b\u003e\u003cb\u003e 637\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGetting Started 638\u003c\/p\u003e \u003cp\u003eRunning the Skeletal App 641\u003c\/p\u003e \u003cp\u003eDissecting the TV App 644\u003c\/p\u003e \u003cp\u003eAdding to the standard AndroidManifest.xml 644\u003c\/p\u003e \u003cp\u003eLooking into build.gradle (Module: app) 645\u003c\/p\u003e \u003cp\u003eDefining a layout 646\u003c\/p\u003e \u003cp\u003eThe adapter and the presenter 647\u003c\/p\u003e \u003cp\u003eUsing the Adapter class 648\u003c\/p\u003e \u003cp\u003eUsing the Presenter class 650\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Developing for Android Auto\u003c\/b\u003e\u003cb\u003e 653\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChecking Auto Compatibility 654\u003c\/p\u003e \u003cp\u003eChoosing the Google Play Services 656\u003c\/p\u003e \u003cp\u003eConsidering Notification Limits 658\u003c\/p\u003e \u003cp\u003eCreating an Emulator 660\u003c\/p\u003e \u003cp\u003eConfiguring your car for development 661\u003c\/p\u003e \u003cp\u003eDefining an emulator 662\u003c\/p\u003e \u003cp\u003eDeveloping an Android Auto App 670\u003c\/p\u003e \u003cp\u003eCreating the project 670\u003c\/p\u003e \u003cp\u003eViewing the project configuration 672\u003c\/p\u003e \u003cp\u003ePerforming required configuration tasks 674\u003c\/p\u003e \u003cp\u003eTouring the Media Service app 675\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 6: The Job Isn’t Done Until 679\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Publishing Your App to the Google Play Store\u003c\/b\u003e\u003cb\u003e 681\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCreating a Google Play Developer Account 681\u003c\/p\u003e \u003cp\u003ePreparing Your Code 682\u003c\/p\u003e \u003cp\u003eUn-testing the app 683\u003c\/p\u003e \u003cp\u003eChoosing Android versions 683\u003c\/p\u003e \u003cp\u003eSetting your app’s own version code and version name 684\u003c\/p\u003e \u003cp\u003eChoosing a package name 685\u003c\/p\u003e \u003cp\u003ePreparing Graphic Assets for the Play Store 685\u003c\/p\u003e \u003cp\u003eCreating an icon 686\u003c\/p\u003e \u003cp\u003eCreating screenshots 688\u003c\/p\u003e \u003cp\u003eProviding other visual assets 690\u003c\/p\u003e \u003cp\u003eCreating a Publishable File 691\u003c\/p\u003e \u003cp\u003eDifferences among builds 692\u003c\/p\u003e \u003cp\u003eCreating the release build 697\u003c\/p\u003e \u003cp\u003eRunning a new APK file 702\u003c\/p\u003e \u003cp\u003eRunning the app in a new AAB file 703\u003c\/p\u003e \u003cp\u003eAnother way to build and run an AAB file 705\u003c\/p\u003e \u003cp\u003ePublishing Your App 708\u003c\/p\u003e \u003cp\u003eThe App Releases page 708\u003c\/p\u003e \u003cp\u003eThe Store Listing page 710\u003c\/p\u003e \u003cp\u003eThe App Signing page 711\u003c\/p\u003e \u003cp\u003eOther pages 711\u003c\/p\u003e \u003cp\u003eLeave No Stone Unturned 714\u003c\/p\u003e \u003cp\u003ePublishing Elsewhere 714\u003c\/p\u003e \u003cp\u003eThe Amazon Appstore 714\u003c\/p\u003e \u003cp\u003eOther venues 715\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Monetizing and Marketing Your App\u003c\/b\u003e\u003cb\u003e 717\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChoosing a Revenue Model 718\u003c\/p\u003e \u003cp\u003eCharging for your app 719\u003c\/p\u003e \u003cp\u003eOffering an extended free trial 723\u003c\/p\u003e \u003cp\u003eFreemium apps 724\u003c\/p\u003e \u003cp\u003eSelling things with your app 726\u003c\/p\u003e \u003cp\u003eSubscription pricing 729\u003c\/p\u003e \u003cp\u003eEarning revenue from advertising 729\u003c\/p\u003e \u003cp\u003eVariations on in-app advertising 731\u003c\/p\u003e \u003cp\u003eDonationware 732\u003c\/p\u003e \u003cp\u003eOffering your app for free 732\u003c\/p\u003e \u003cp\u003eGetting paid to develop apps for others 732\u003c\/p\u003e \u003cp\u003eMarketing Your Application 733\u003c\/p\u003e \u003cp\u003eBrick Breaker Master: An App Marketing Case Study 734\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Creating Public Support for Your App\u003c\/b\u003e\u003cb\u003e 739\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eObtaining Support through Patreon 740\u003c\/p\u003e \u003cp\u003eDiscovering that patronage isn’t new 740\u003c\/p\u003e \u003cp\u003eConsidering crowdfunding 741\u003c\/p\u003e \u003cp\u003eDefining why you should use crowdfunding 741\u003c\/p\u003e \u003cp\u003eUnderstanding the development angle 742\u003c\/p\u003e \u003cp\u003eDetermining the trade-offs 744\u003c\/p\u003e \u003cp\u003eDeveloping Your Own Distribution Stream 744\u003c\/p\u003e \u003cp\u003eCreating podcasts 744\u003c\/p\u003e \u003cp\u003eDeveloping YouTube videos 746\u003c\/p\u003e \u003cp\u003eEmploying social media 748\u003c\/p\u003e \u003cp\u003eAnswering questions 750\u003c\/p\u003e \u003cp\u003eTaking the Personal Approach 750\u003c\/p\u003e \u003cp\u003eCreating a blog 751\u003c\/p\u003e \u003cp\u003eAnswering your email 752\u003c\/p\u003e \u003cp\u003eConsidering App Store Alternatives 754\u003c\/p\u003e \u003cp\u003eGetting Awards 756\u003c\/p\u003e \u003cp\u003eLooking for awards in all the right places 757\u003c\/p\u003e \u003cp\u003eStrutting your stuff 757\u003c\/p\u003e \u003cp\u003eIndex 759\u003c\/p\u003e  \u003cp\u003e\u003cb\u003eBarry Burd, PhD,\u003c\/b\u003e is a veteran author and educator. At the University of Illinois, he was five times elected to the university-wide List of Teachers Ranked as Excellent by their Students. He has written several books on Java and Android development. \u003cb\u003eJohn Paul Mueller\u003c\/b\u003e has produced 115 books and more than 600 articles on topics ranging from functional programming techniques to application development using C++.   \u003c\/p\u003e\u003cp\u003e\u003cb\u003eA total guide to building Android apps\u003c\/b\u003e  \u003c\/p\u003e\u003cp\u003eAndroid claims the largest shares of the smartphone and TV markets, so here's where your apps can reach the most customers! This All-in-One guide covers every step of the app development process using the Kotlin language, with self-contained minibooks that walk you through each aspect. Want to program your watch, fiddle with your car's computer, or play with your thermostat? You'll find overviews here. You'll be able to take advantage of all the newest features and enhancements, too. Don't wait another minute! \u003c\/p\u003e\u003cp\u003e\u003cb\u003eInside...\u003c\/b\u003e \u003c\/p\u003e\u003cul\u003e \u003cli\u003eDevelop apps using Kotlin\u003c\/li\u003e \u003cli\u003eUse both the OOP and functional programming paradigms\u003c\/li\u003e \u003cli\u003eUnderstand the Android app building blocks\u003c\/li\u003e \u003cli\u003eProgram cool phone features\u003c\/li\u003e \u003cli\u003eBuild apps for tablets, watches, TVs, and cars\u003c\/li\u003e \u003cli\u003eGo public with your app\u003c\/li\u003e \u003c\/ul\u003e","brand":"For Dummies","offers":[{"title":"Default Title","offer_id":47988739342565,"sku":"NP9781119660453","price":44.99,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9781119660453.jpg?v=1761781399","url":"https:\/\/k12savings.com\/products\/android-application-development-all-in-one-for-dummies-isbn-9781119660453","provider":"K12savings","version":"1.0","type":"link"}