1<ul id="nav"> 2 <li class="nav-section"> 3 <div class="nav-section-header"> 4 <a href="<?cs var:toroot ?>training/index.html"> 5 Getting Started 6 </a> 7 </div> 8 9 <ul> 10 <li class="nav-section"> 11 <div class="nav-section-header"> 12 <a href="<?cs var:toroot ?>training/basics/firstapp/index.html" 13 description= 14 "After you've installed the Android SDK, start with this class 15 to learn the basics about Android app development." 16 >Building Your First App</a> 17 </div> 18 <ul> 19 <li><a href="<?cs var:toroot ?>training/basics/firstapp/creating-project.html"> 20 Creating an Android Project 21 </a> 22 </li> 23 <li><a href="<?cs var:toroot ?>training/basics/firstapp/running-app.html"> 24 Running Your Application 25 </a> 26 </li> 27 <li><a href="<?cs var:toroot ?>training/basics/firstapp/building-ui.html"> 28 Building a Simple User Interface 29 </a> 30 </li> 31 <li><a href="<?cs var:toroot ?>training/basics/firstapp/starting-activity.html"> 32 Starting Another Activity 33 </a> 34 </li> 35 </ul> 36 </li> 37 38 <li class="nav-section"> 39 <div class="nav-section-header"> 40 <a href="<?cs var:toroot ?>training/basics/supporting-devices/index.html" 41 description= 42 "How to build your app with alternative resources that provide an 43 optimized user experience on multiple device form factors using a single APK." 44 >Supporting Different Devices</a> 45 </div> 46 <ul> 47 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/languages.html"> 48 Supporting Different Languages 49 </a> 50 </li> 51 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/screens.html"> 52 Supporting Different Screens 53 </a> 54 </li> 55 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/platforms.html"> 56 Supporting Different Platform Versions 57 </a> 58 </li> 59 </ul> 60 </li> 61 62 <li class="nav-section"> 63 <div class="nav-section-header"> 64 <a href="<?cs var:toroot ?>training/basics/activity-lifecycle/index.html" 65 ja-lang="アクティビティのライフサイクル 管理" 66 ko-lang="액티비티 수명 주기 관리하기" 67 pt-br-lang="Como gerenciar o ciclo de vida da atividade" 68 ru-lang="Управление жизненным циклом операций" 69 zh-cn-lang="管理活动生命周期" 70 zh-tw-lang="管理應用行為顯示生命週期" 71 description= 72 "How Android activities live and die and how to create 73 a seamless user experience by implementing lifecycle callback methods." 74 >Managing the Activity Lifecycle</a> 75 </div> 76 <ul> 77 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/starting.html" 78 ja-lang="アクティビティを開始する" 79 ko-lang="액티비티 시작하기" 80 pt-br-lang="Iniciando uma atividade" 81 ru-lang="Запуск операции" 82 zh-cn-lang="开始活动" 83 zh-tw-lang="啟動應用行為顯示"> 84 Starting an Activity 85 </a> 86 </li> 87 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html"> 88 Pausing and Resuming an Activity 89 </a> 90 </li> 91 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/stopping.html" 92 ja-lang="アクティビティの一時停止と再開" 93 ko-lang="액티비티 일시정지 및 재개하기" 94 pt-br-lang="Pausando e reiniciando uma atividade" 95 ru-lang="Приостановка и возобновление операции" 96 zh-cn-lang="暂停和继续活动" 97 zh-tw-lang="暫停並繼續應用行為顯示"> 98 Stopping and Restarting an Activity 99 </a> 100 </li> 101 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/recreating.html" 102 ja-lang="アクティビティを再作成する" 103 ko-lang="액티비티 재생성하기" 104 pt-br-lang="Recriando uma atividade" 105 ru-lang="Воссоздание операции" 106 zh-cn-lang="重新创建活动" 107 zh-tw-lang="重新建立應用行為顯示"> 108 Recreating an Activity 109 </a> 110 </li> 111 </ul> 112 </li> 113 114 <li class="nav-section"> 115 <div class="nav-section-header"> 116 <a href="<?cs var:toroot ?>training/basics/fragments/index.html" 117 description= 118 "How to build a user interface for your app that is flexible enough 119 to present multiple UI components on large screens and a more constrained set of 120 UI components on smaller screens—essential for building a single APK for both 121 phones and tablets." 122 >Building a Dynamic UI with Fragments</a> 123 </div> 124 <ul> 125 <li><a href="<?cs var:toroot ?>training/basics/fragments/creating.html"> 126 Creating a Fragment 127 </a> 128 </li> 129 <li><a href="<?cs var:toroot ?>training/basics/fragments/fragment-ui.html" zh-cn-lang="构建灵活的界面"> 130 Building a Flexible UI 131 </a> 132 </li> 133 <li><a href="<?cs var:toroot ?>training/basics/fragments/communicating.html"> 134 Communicating with Other Fragments 135 </a> 136 </li> 137 </ul> 138 </li> 139 140 <li class="nav-section"> 141 <div class="nav-section-header"><a href="<?cs var:toroot?>training/basics/data-storage/index.html" 142 ja-lang="データの保存" 143 ko-lang="데이터 저장하기" 144 pt-br-lang="Salvando dados" 145 ru-lang="Сохранение данных" 146 zh-cn-lang="保存数据" 147 zh-tw-lang="儲存資料" 148 description= 149 "How to save data on the device, whether it's temporary files, downloaded 150 app assets, user media, structured data, or something else." 151 >Saving Data</a> 152 </div> 153 <ul> 154 <li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html" 155 ja-lang="キー値セットを保存する" 156 ko-lang="키-값 세트 저장하기" 157 pt-br-lang="Salvando conjuntos de valor-chave" 158 ru-lang="Сохранение наборов "\"ключ-значение\"" 159 zh-cn-lang="保存键值集" 160 zh-tw-lang="儲存索引鍵值組"> 161 Saving Key-Value Sets 162 </a> 163 </li> 164 <li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html" 165 ja-lang="ファイルを保存する" 166 ko-lang="파일 저장하기" 167 pt-br-lang="Salvando arquivos" 168 ru-lang="Сохранение файлов" 169 zh-cn-lang="保存文件" 170 zh-tw-lang="儲存檔案"> 171 Saving Files 172 </a> 173 </li> 174 <li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html" 175 ja-lang="SQL データベースにデータを保存する" 176 ko-lang="SQL 데이터베이스에 데이터 저장하기" 177 pt-br-lang="Salvando dados em bancos de dados do SQL" 178 ru-lang="Сохранение данных в базах данных SQL" 179 zh-cn-lang="在 SQL 数据库中保存数据" 180 zh-tw-lang="在 SQL 資料庫中儲存資料"> 181 Saving Data in SQL Databases 182 </a> 183 </li> 184 </ul> 185 </li> 186 187 <li class="nav-section"> 188 <div class="nav-section-header"> 189 <a href="<?cs var:toroot ?>training/basics/intents/index.html" 190 ja-lang="他のアプリとの相互操作" 191 ko-lang="액티비티 수명 주기 관리하기" 192 pt-br-lang="Interagindo com outros aplicativos" 193 ru-lang="Взаимодействие с другими приложениями" 194 zh-cn-lang="与其他应用交互" 195 zh-tw-lang="與其他應用程式互動" 196 description= 197 "How to build a user experience that leverages other apps available 198 on the device to perform advanced user tasks, such as capture a photo or view 199 an address on a map." 200 >Interacting with Other Apps</a> 201 </div> 202 <ul> 203 <li><a href="<?cs var:toroot ?>training/basics/intents/sending.html" 204 ja-lang="別のアプリにユーザーを送る" 205 ko-lang="다른 앱으로 사용자 보내기" 206 pt-br-lang="Enviando o usuário para outro aplicativo" 207 ru-lang="Направление пользователя в другое приложение" 208 zh-cn-lang="向另一个应用发送用户" 209 zh-tw-lang="將使用者傳送至其他應用程式"> 210 Sending the User to Another App 211 </a> 212 </li> 213 <li><a href="<?cs var:toroot ?>training/basics/intents/result.html" 214 ja-lang="アクティビティから結果を取得する" 215 ko-lang="액티비티로부터 결과 가져오기" 216 pt-br-lang="Obtendo resultados de uma atividade" 217 ru-lang="Получение результата операции" 218 zh-cn-lang="获取活动的结果" 219 zh-tw-lang="從應用行為顯示取得結果"> 220 Getting a Result from the Activity 221 </a> 222 </li> 223 <li><a href="<?cs var:toroot ?>training/basics/intents/filters.html" 224 ja-lang="他のアプリからのアクティビティの開始を許可する" 225 ko-lang="다른 앱이 자신의 액티비티를 시작하도록 허용하기" 226 pt-br-lang="Permitindo que outros aplicativos iniciem sua atividade" 227 ru-lang="Разрешение другим приложениям на запуск вашей операции" 228 zh-cn-lang="允许其他应用开始您的活动" 229 zh-tw-lang="允許其他應用程式啟動您的應用行為顯示"> 230 Allowing Other Apps to Start Your Activity 231 </a> 232 </li> 233 </ul> 234 </li> 235 <li class="nav-section"> 236 <div class="nav-section-header"> 237 <a href="<?cs var:toroot ?>training/permissions/index.html" 238 description= 239 "How to declare that your app needs access to features and 240 resources outside of its 'sandbox', and how to request those 241 privileges at runtime." 242 >Working with System Permissions</a> 243 </div> 244 <ul> 245 <li><a href="<?cs var:toroot ?>training/permissions/declaring.html"> 246 Declaring Permissions 247 </a> 248 </li> 249 <li><a href="<?cs var:toroot ?>training/permissions/requesting.html"> 250 Requesting Permissions at Run Time 251 </a> 252 </li> 253 <li><a href="<?cs var:toroot ?>training/permissions/best-practices.html"> 254 Best Practices for Runtime Permissions 255 </a> 256 </li> 257 </ul> 258 </li> 259 260 </ul> 261 </li><!-- end getting started --> 262 <li class="nav-section"> 263 <div class="nav-section-header"> 264 <a href="<?cs var:toroot ?>training/building-content-sharing.html"> 265 <span class="small">Building Apps with</span><br/>Content Sharing 266 </a> 267 </div> 268 <ul> 269 <li class="nav-section"> 270 <div class="nav-section-header"> 271 <a href="<?cs var:toroot ?>training/sharing/index.html" 272 description= 273 "How to take your app interaction to the next level by sharing 274 information with other apps, receive information back, and provide a simple and 275 scalable way to perform Share actions with user content." 276 >Sharing Simple Data</a> 277 </div> 278 <ul> 279 <li> 280 <a href="<?cs var:toroot ?>training/sharing/send.html"> 281 Sending Simple Data to Other Apps 282 </a> 283 </li> 284 <li> 285 <a href="<?cs var:toroot ?>training/sharing/receive.html"> 286 Receiving Simple Data from Other Apps 287 </a> 288 </li> 289 <li> 290 <a href="<?cs var:toroot ?>training/sharing/shareaction.html"> 291 Adding an Easy Share Action 292 </a> 293 </li> 294 </ul> 295 </li> 296 <li class="nav-section"> 297 <div class="nav-section-header"> 298 <a href="<?cs var:toroot?>training/secure-file-sharing/index.html" 299 description= 300 "How to provide secure access to a file associated with your app using a content 301 URI and temporary access permissions." 302 >Sharing Files</a> 303 </div> 304 <ul> 305 <li> 306 <a href="<?cs var:toroot ?>training/secure-file-sharing/setup-sharing.html"> 307 Setting Up File Sharing 308 </a> 309 </li> 310 <li> 311 <a href="<?cs var:toroot ?>training/secure-file-sharing/share-file.html"> 312 Sharing a File 313 </a> 314 </li> 315 <li> 316 <a href="<?cs var:toroot ?>training/secure-file-sharing/request-file.html"> 317 Requesting a Shared File 318 </a> 319 </li> 320 <li> 321 <a href="<?cs var:toroot ?>training/secure-file-sharing/retrieve-info.html"> 322 Retrieving File Information 323 </a> 324 </li> 325 </ul> 326 </li> 327 <li class="nav-section"> 328 <div class="nav-section-header"> 329 <a href="<?cs var:toroot ?>training/beam-files/index.html" 330 description= 331 "How to transfer files between devices using the NFC Android Beam feature." 332 >Sharing Files with NFC</a> 333 </div> 334 <ul> 335 <li> 336 <a href="<?cs var:toroot ?>training/beam-files/send-files.html" 337 >Sending Files to Another Device</a> 338 </li> 339 <li><a href="<?cs var:toroot ?>training/beam-files/receive-files.html" 340 >Receiving Files from Another Device</a></li> 341 </ul> 342 </li> 343 </ul> 344 </li> 345 346 347 348 <li class="nav-section"> 349 <div class="nav-section-header"> 350 <a href="<?cs var:toroot ?>training/building-multimedia.html"> 351 <span class="small">Building Apps with</span><br/>Multimedia 352 </a> 353 </div> 354 <ul> 355 356 <li class="nav-section"> 357 <div class="nav-section-header"> 358 <a href="<?cs var:toroot ?>training/managing-audio/index.html" 359 description= 360 "How to respond to hardware audio key presses, request audio focus 361 when playing audio, and respond appropriately to changes in audio focus." 362 >Managing Audio Playback</a> 363 </div> 364 <ul> 365 <li><a href="<?cs var:toroot ?>training/managing-audio/volume-playback.html"> 366 Controlling Your App's Volume and Playback 367 </a> 368 </li> 369 <li><a href="<?cs var:toroot ?>training/managing-audio/audio-focus.html"> 370 Managing Audio Focus 371 </a> 372 </li> 373 <li><a href="<?cs var:toroot ?>training/managing-audio/audio-output.html"> 374 Dealing with Audio Output Hardware 375 </a> 376 </li> 377 </ul> 378 </li> 379 380 <li class="nav-section"> 381 <div class="nav-section-header"> 382 <a href="<?cs var:toroot ?>training/camera/index.html" 383 description= 384 "How to leverage existing camera apps on the user's device to capture 385 photos or control the camera hardware directly and build your own camera app." 386 >Capturing Photos</a> 387 </div> 388 <ul> 389 <li><a href="<?cs var:toroot ?>training/camera/photobasics.html"> 390 Taking Photos Simply 391 </a> 392 </li> 393 <li><a href="<?cs var:toroot ?>training/camera/videobasics.html"> 394 Recording Videos Simply 395 </a> 396 </li> 397 <li><a href="<?cs var:toroot ?>training/camera/cameradirect.html"> 398 Controlling the Camera 399 </a> 400 </li> 401 </ul> 402 </li> 403 404 <li class="nav-section"> 405 <div class="nav-section-header"> 406 <a href="<?cs var:toroot ?>training/printing/index.html" 407 description= 408 "How to print photos, HTML documents, and custom documents from your app." 409 >Printing Content</a> 410 </div> 411 <ul> 412 <li><a href="<?cs var:toroot ?>training/printing/photos.html"> 413 Photos 414 </a> 415 </li> 416 <li><a href="<?cs var:toroot ?>training/printing/html-docs.html"> 417 HTML Documents 418 </a> 419 </li> 420 <li><a href="<?cs var:toroot ?>training/printing/custom-docs.html"> 421 Custom Documents 422 </a> 423 </li> 424 </ul> 425 </li> 426 427 </ul> 428 </li> 429 <!-- End multimedia --> 430 431 432 433 <li class="nav-section"> 434 <div class="nav-section-header"> 435 <a href="<?cs var:toroot ?>training/building-graphics.html"> 436 <span class="small">Building Apps with</span><br/>Graphics & Animation 437 </a> 438 </div> 439 <ul> 440 441 <li class="nav-section"> 442 <div class="nav-section-header"> 443 <a href="<?cs var:toroot ?>training/displaying-bitmaps/index.html" 444 description= 445 "How to load and process bitmaps while keeping your user interface 446 responsive and avoid exceeding memory limits." 447 >Displaying Bitmaps Efficiently</a> 448 </div> 449 <ul> 450 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/load-bitmap.html"> 451 Loading Large Bitmaps Efficiently 452 </a> 453 </li> 454 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/process-bitmap.html"> 455 Processing Bitmaps Off the UI Thread 456 </a> 457 </li> 458 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/cache-bitmap.html"> 459 Caching Bitmaps 460 </a> 461 </li> 462 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/manage-memory.html"> 463 Managing Bitmap Memory 464 </a> 465 </li> 466 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/display-bitmap.html"> 467 Displaying Bitmaps in Your UI 468 </a></li> 469 </ul> 470 </li> 471 472 <li class="nav-section"> 473 <div class="nav-section-header"> 474 <a href="<?cs var:toroot?>training/graphics/opengl/index.html" 475 description= 476 "How to create OpenGL graphics within the Android app framework 477 and respond to touch input." 478 >Displaying Graphics with OpenGL ES</a> 479 </div> 480 <ul> 481 <li><a href="<?cs var:toroot ?>training/graphics/opengl/environment.html"> 482 Building an OpenGL ES Environment 483 </a> 484 </li> 485 <li><a href="<?cs var:toroot ?>training/graphics/opengl/shapes.html"> 486 Defining Shapes 487 </a> 488 </li> 489 <li><a href="<?cs var:toroot ?>training/graphics/opengl/draw.html"> 490 Drawing Shapes 491 </a> 492 </li> 493 <li><a href="<?cs var:toroot ?>training/graphics/opengl/projection.html"> 494 Applying Projection and Camera Views 495 </a> 496 </li> 497 <li><a href="<?cs var:toroot ?>training/graphics/opengl/motion.html"> 498 Adding Motion 499 </a> 500 </li> 501 <li><a href="<?cs var:toroot ?>training/graphics/opengl/touch.html"> 502 Responding to Touch Events 503 </a> 504 </li> 505 </ul> 506 </li> 507 508 <li class="nav-section"> 509 <div class="nav-section-header"> 510 <a href="<?cs var:toroot?>training/transitions/index.html" 511 description= 512 "How to animate state changes in a view hierarchy using transitions." 513 >Animating Views Using Scenes and Transitions</a> 514 </div> 515 <ul> 516 <li><a href="<?cs var:toroot ?>training/transitions/overview.html"> 517 The Transitions Framework 518 </a> 519 </li> 520 <li><a href="<?cs var:toroot ?>training/transitions/scenes.html"> 521 Creating a Scene 522 </a> 523 </li> 524 <li><a href="<?cs var:toroot ?>training/transitions/transitions.html"> 525 Applying a Transition 526 </a> 527 </li> 528 <li><a href="<?cs var:toroot ?>training/transitions/custom-transitions.html"> 529 Creating Custom Transitions 530 </a> 531 </li> 532 533 </ul> 534 </li> 535 536 <li class="nav-section"> 537 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/animation/index.html" 538 description= 539 "How to add transitional animations to your user interface."> 540 Adding Animations 541 </a></div> 542 <ul> 543 <li><a href="<?cs var:toroot ?>training/animation/crossfade.html"> 544 Crossfading Two Views 545 </a> 546 </li> 547 <li><a href="<?cs var:toroot ?>training/animation/screen-slide.html"> 548 Using ViewPager for Screen Slide 549 </a> 550 </li> 551 <li><a href="<?cs var:toroot ?>training/animation/cardflip.html"> 552 Displaying Card Flip Animations 553 </a> 554 </li> 555 <li><a href="<?cs var:toroot ?>training/animation/zoom.html"> 556 Zooming a View 557 </a> 558 </li> 559 <li><a href="<?cs var:toroot ?>training/animation/layout.html"> 560 Animating Layout Changes 561 </a> 562 </li> 563 </ul> 564 </li> 565 </ul> 566 </li> 567 <!-- End graphics and animation --> 568 569 570 <li class="nav-section"> 571 <div class="nav-section-header"> 572 <a href="<?cs var:toroot ?>training/building-connectivity.html"> 573 <span class="small">Building Apps with</span><br/> 574 Connectivity & the Cloud 575 </a> 576 </div> 577 <ul> 578 579 <li class="nav-section"> 580 <div class="nav-section-header"> 581 <a href="<?cs var:toroot ?>training/connect-devices-wirelessly/index.html" 582 description= 583 "How to find and connect to local devices using Network Service 584 Discovery and how to create peer-to-peer connections with Wi-Fi." 585 >Connecting Devices Wirelessly</a> 586 </div> 587 <ul> 588 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd.html"> 589 Using Network Service Discovery 590 </a> 591 </li> 592 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/wifi-direct.html"> 593 Creating P2P Connections with Wi-Fi 594 </a> 595 </li> 596 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html"> 597 Using Wi-Fi P2P for Service Discovery 598 </a> 599 </li> 600 </ul> 601 </li> 602 <li class="nav-section"> 603 <div class="nav-section-header"> 604 <a href="<?cs var:toroot ?>training/basics/network-ops/index.html" 605 description= 606 "How to create a network connection, monitor the connection for changes 607 in connectivity, and perform transactions with XML data." 608 >Performing Network Operations</a> 609 </div> 610 <ul> 611 <li><a href="<?cs var:toroot ?>training/basics/network-ops/connecting.html"> 612 Connecting to the Network 613 </a> 614 </li> 615 <li><a href="<?cs var:toroot ?>training/basics/network-ops/managing.html"> 616 Managing Network Usage 617 </a> 618 </li> 619 <li><a href="<?cs var:toroot ?>training/basics/network-ops/xml.html"> 620 Parsing XML Data 621 </a> 622 </li> 623 </ul> 624 </li> 625 <li class="nav-section"> 626 <div class="nav-section-header"> 627 <a href="<?cs var:toroot ?>training/efficient-downloads/index.html" 628 description= 629 "How to minimize your app's impact on the battery when performing downloads 630 and other network transactions." 631 >Transferring Data Without Draining the Battery</a> 632 </div> 633 <ul> 634 <li><a href="<?cs var:toroot ?>training/efficient-downloads/efficient-network-access.html"> 635 Optimizing Downloads for Efficient Network Access 636 </a> 637 </li> 638 <li><a href="<?cs var:toroot ?>training/efficient-downloads/regular_updates.html"> 639 Minimizing the Effect of Regular Updates 640 </a> 641 </li> 642 <li><a href="<?cs var:toroot ?>training/efficient-downloads/redundant_redundant.html"> 643 Redundant Downloads are Redundant 644 </a> 645 </li> 646 <li><a href="<?cs var:toroot ?>training/efficient-downloads/connectivity_patterns.html"> 647 Modifying Patterns Based on the Connectivity Type 648 </a> 649 </li> 650 </ul> 651 </li> 652 653 <li class="nav-section"> 654 <div class="nav-section-header"> 655 <a href="<?cs var:toroot ?>training/backup/index.html" 656 description= 657 "How to sync and back up app and user data to remote web services in the 658 cloud and how to restore the data back to multiple devices." 659 >Syncing to the Cloud</a> 660 </div> 661 <ul> 662 <li><a href="<?cs var:toroot ?>training/backup/autosyncapi.html"> 663 Configuring Auto Backup 664 </a> 665 </li> 666 <li><a href="<?cs var:toroot ?>training/backup/backupapi.html"> 667 Using the Backup API 668 </a> 669 </li> 670 </ul> 671 <li><a href="<?cs var:toroot ?>training/cloudsave/conflict-res.html" 672 description= 673 "How to design a robust conflict resolution strategy for apps that save data to the cloud." 674 >Resolving Cloud Save Conflicts 675 </a> 676 </li> 677 </li> 678 <li class="nav-section"> 679 <div class="nav-section-header"> 680 <a href="<?cs var:toroot ?>training/sync-adapters/index.html" 681 description="How to transfer data between the cloud and the device using the Android 682 sync adapter framework" 683 >Transferring Data Using Sync Adapters</a> 684 </div> 685 <ul> 686 <li> 687 <a href="<?cs var:toroot ?>training/sync-adapters/creating-authenticator.html"> 688 Creating a Stub Authenticator 689 </a> 690 </li> 691 <li> 692 <a href="<?cs var:toroot ?>training/sync-adapters/creating-stub-provider.html"> 693 Creating a Stub Content Provider 694 </a> 695 </li> 696 <li> 697 <a href="<?cs var:toroot ?>training/sync-adapters/creating-sync-adapter.html"> 698 Creating a Sync Adapter 699 </a> 700 </li> 701 <li> 702 <a href="<?cs var:toroot ?>training/sync-adapters/running-sync-adapter.html"> 703 Running a Sync Adapter 704 </a> 705 </li> 706 </ul> 707 </li> 708 <li class="nav-section"> 709 <div class="nav-section-header"> 710 <a href="<?cs var:toroot ?>training/volley/index.html" 711 description="How to perform fast, scalable UI operations over the network using Volley" 712 >Transmitting Network Data Using Volley</a> 713 </div> 714 <ul> 715 <li> 716 <a href="<?cs var:toroot ?>training/volley/simple.html"> 717 Sending a Simple Request 718 </a> 719 </li> 720 <li> 721 <a href="<?cs var:toroot ?>training/volley/requestqueue.html"> 722 Setting Up a RequestQueue 723 </a> 724 </li> 725 <li> 726 <a href="<?cs var:toroot ?>training/volley/request.html"> 727 Making a Standard Request 728 </a> 729 </li> 730 <li> 731 <a href="<?cs var:toroot ?>training/volley/request-custom.html"> 732 Implementing a Custom Request 733 </a> 734 </li> 735 </ul> 736 </li> 737 </ul> 738 </li> 739 <!-- End connectivity and cloud --> 740 741 742 <li class="nav-section"> 743 <div class="nav-section-header"> 744 <a href="<?cs var:toroot ?>training/building-location.html"> 745 <span class="small">Building Apps with</span><br/> 746 Location & Maps 747 </a> 748 </div> 749 <ul> 750 <li class="nav-section"> 751 <div class="nav-section-header"> 752 <a href="<?cs var:toroot ?>training/location/index.html" 753 description="How to add location-aware features to your app by getting the user's current location."> 754 Making Your App Location-Aware 755 </a> 756 </div> 757 <ul> 758 <li> 759 <a href="<?cs var:toroot ?>training/location/retrieve-current.html"> 760 Getting the Last Known Location 761 </a> 762 </li> 763 <li> 764 <a href="<?cs var:toroot ?>training/location/change-location-settings.html"> 765 Changing Location Settings 766 </a> 767 </li> 768 <li> 769 <a href="<?cs var:toroot ?>training/location/receive-location-updates.html"> 770 Receiving Location Updates 771 </a> 772 </li> 773 <li> 774 <a href="<?cs var:toroot ?>training/location/display-address.html"> 775 Displaying a Location Address 776 </a> 777 </li> 778 <li><a href="<?cs var:toroot ?>training/location/geofencing.html"> 779 Creating and Monitoring Geofences 780 </a> 781 </li> 782 </ul> 783 </li> 784 <li class="nav-section"> 785 <a href="<?cs var:toroot ?>training/maps/index.html" 786 description="How to add maps and mapping information to your app."> 787 Adding Maps 788 </a> 789 </li> 790 </ul> 791 </li> 792 <!-- End location and maps --> 793 794 795 <li class="nav-section"> 796 <div class="nav-section-header"> 797 <a href="<?cs var:toroot ?>training/building-userinfo.html"> 798 <span class="small">Building Apps with</span><br/> 799 User Info & Sign-In 800 </a> 801 </div> 802 <ul> 803 <li class="nav-section"> 804 <div class="nav-section-header"> 805 <a href="<?cs var:toroot ?>training/contacts-provider/index.html" 806 description= 807 "How to use Android's central address book, the Contacts Provider, to 808 display contacts and their details and modify contact information."> 809 Accessing Contacts Data</a> 810 </div> 811 <ul> 812 <li> 813 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-names.html"> 814 Retrieving a List of Contacts 815 </a> 816 </li> 817 <li> 818 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-details.html"> 819 Retrieving Details for a Contact 820 </a> 821 </li> 822 <li> 823 <a href="<?cs var:toroot ?>training/contacts-provider/modify-data.html"> 824 Modifying Contacts Using Intents 825 </a> 826 </li> 827 <li> 828 <a href="<?cs var:toroot ?>training/contacts-provider/display-contact-badge.html"> 829 Displaying the Quick Contact Badge 830 </a> 831 </li> 832 </ul> 833 </li> 834 <li class="nav-section"> 835 <a href="<?cs var:toroot ?>training/sign-in/index.html" 836 description="How to add user sign-in functionality to your app."> 837 Adding Sign-In 838 </a> 839 </li> 840 </ul> 841 </li> 842 <!-- End user info and sign-in --> 843 844 845 <li class="nav-section"> 846 <div class="nav-section-header"> 847 <a href="<?cs var:toroot ?>training/building-wearables.html"> 848 <span class="small">Building Apps for</span><br/> 849 Wearables 850 </a> 851 </div> 852 <ul> 853 <li class="nav-section"> 854 <div class="nav-section-header"> 855 <a href="<?cs var:toroot ?>training/wearables/notifications/index.html" 856 description="How to build handheld notifications that are synced to 857 and look great on wearables." 858 >Adding Wearable Features to Notifications</a> 859 </div> 860 <ul> 861 <li> 862 <a href="<?cs var:toroot ?>training/wearables/notifications/creating.html">Creating a Notification</a> 863 </li> 864 <li> 865 <a href="<?cs var:toroot ?>training/wearables/notifications/voice-input.html">Receiving Voice Input in a Notification</a> 866 </li> 867 <li> 868 <a href="<?cs var:toroot ?>training/wearables/notifications/pages.html">Adding Pages to a Notification</a> 869 </li> 870 <li> 871 <a href="<?cs var:toroot ?>training/wearables/notifications/stacks.html">Stacking Notifications</a> 872 </li> 873 </ul> 874 </li> 875 876 <li class="nav-section"> 877 <div class="nav-section-header"> 878 <a href="<?cs var:toroot ?>training/wearables/apps/index.html" 879 description="How to build apps that run directly on wearables." 880 >Creating Wearable Apps</a> 881 </div> 882 <ul> 883 <li> 884 <a href="<?cs var:toroot ?>training/wearables/apps/creating.html">Creating and Running a Wearable App</a> 885 </li> 886 <li> 887 <a href="<?cs var:toroot ?>training/wearables/apps/layouts.html">Creating Custom Layouts</a> 888 </li> 889 <li> 890 <a href="<?cs var:toroot ?>training/wearables/apps/always-on.html">Keeping Your App Visible</a> 891 </li> 892 <li> 893 <a href="<?cs var:toroot ?>training/wearables/apps/voice.html">Adding Voice Capabilities</a> 894 </li> 895 <li> 896 <a href="<?cs var:toroot ?>training/wearables/apps/packaging.html">Packaging Wearable Apps</a> 897 </li> 898 <li> 899 <a href="<?cs var:toroot ?>training/wearables/apps/bt-debugging.html">Debugging over Bluetooth</a> 900 </li> 901 </ul> 902 </li> 903 904 <li class="nav-section"> 905 <div class="nav-section-header"> 906 <a href="<?cs var:toroot ?>training/wearables/ui/index.html" 907 description="How to create custom user interfaces for wearable apps." 908 >Creating Custom UIs</a> 909 </div> 910 <ul> 911 <li> 912 <a href="<?cs var:toroot ?>training/wearables/ui/layouts.html">Defining Layouts</a> 913 </li> 914 <li> 915 <a href="<?cs var:toroot ?>training/wearables/ui/cards.html">Creating Cards</a> 916 </li> 917 <li> 918 <a href="<?cs var:toroot ?>training/wearables/ui/lists.html">Creating Lists</a> 919 </li> 920 <li> 921 <a href="<?cs var:toroot ?>training/wearables/ui/2d-picker.html">Creating a 2D Picker</a> 922 </li> 923 <li> 924 <a href="<?cs var:toroot ?>training/wearables/ui/confirm.html">Showing Confirmations</a> 925 </li> 926 <li> 927 <a href="<?cs var:toroot ?>training/wearables/ui/exit.html">Exiting Full-Screen Activities</a> 928 </li> 929 </ul> 930 </li> 931 932 <li class="nav-section"> 933 <div class="nav-section-header"> 934 <a href="<?cs var:toroot ?>training/wearables/data-layer/index.html" 935 description="How to sync data between handhelds and wearables." 936 >Sending and Syncing Data</a> 937 </div> 938 <ul> 939 <li> 940 <a href="<?cs var:toroot ?>training/wearables/data-layer/accessing.html">Accessing the Wearable Data Layer</a> 941 </li> 942 <li> 943 <a href="<?cs var:toroot ?>training/wearables/data-layer/data-items.html">Syncing Data Items</a> 944 </li> 945 <li> 946 <a href="<?cs var:toroot ?>training/wearables/data-layer/assets.html">Transferring Assets</a> 947 </li> 948 <li> 949 <a href="<?cs var:toroot ?>training/wearables/data-layer/messages.html">Sending and Receiving Messages</a> 950 </li> 951 <li> 952 <a href="<?cs var:toroot ?>training/wearables/data-layer/events.html">Handling Data Layer Events</a> 953 </li> 954 </ul> 955 </li> 956 957 <li class="nav-section"> 958 <div class="nav-section-header"> 959 <a href="<?cs var:toroot ?>training/wearables/watch-faces/index.html" 960 description="How to create watch faces for wearables." 961 >Creating Watch Faces</a> 962 </div> 963 <ul> 964 <li> 965 <a href="<?cs var:toroot ?>training/wearables/watch-faces/designing.html">Designing Watch Faces</a> 966 </li> 967 <li> 968 <a href="<?cs var:toroot ?>training/wearables/watch-faces/service.html">Building a Watch Face Service</a> 969 </li> 970 <li> 971 <a href="<?cs var:toroot ?>training/wearables/watch-faces/drawing.html">Drawing Watch Faces</a> 972 </li> 973 <li> 974 <a href="<?cs var:toroot ?>training/wearables/watch-faces/information.html">Showing Information in Watch Faces</a> 975 </li> 976 <li> 977 <a href="<?cs var:toroot ?>training/wearables/watch-faces/interacting.html">Creating Interactive Watch Faces</a> 978 </li> 979 <li> 980 <a href="<?cs var:toroot ?>training/wearables/watch-faces/configuration.html">Providing Configuration Activities</a> 981 </li> 982 <li> 983 <a href="<?cs var:toroot ?>training/wearables/watch-faces/issues.html">Addressing Common Issues</a> 984 </li> 985 <li> 986 <a href="<?cs var:toroot ?>training/wearables/watch-faces/performance.html">Optimizing Performance and Battery Life</a> 987 </li> 988 </ul> 989 </li> 990 991 <li> 992 <a href="<?cs var:toroot ?>training/articles/wear-location-detection.html" 993 description= 994 "How to detect location data on Android Wear devices." 995 >Detecting Location</a> 996 </li> 997 998 <li> 999 <a href="<?cs var:toroot ?>training/articles/wear-permissions.html" 1000 description= 1001 "How to request permissions on Android Wear devices." 1002 >Requesting Permissions</a> 1003 </li> 1004 1005 <li> 1006 <a href="<?cs var:toroot ?>training/wearables/wearable-sounds.html" 1007 description= 1008 "How to use the speaker on Android Wear devices." 1009 >Using the Speaker</a> 1010 </li> 1011 1012 </ul> 1013 </li> 1014 <!-- End Building for wearables --> 1015 1016 1017 <!-- Start: Building for TV --> 1018 <li class="nav-section"> 1019 <div class="nav-section-header"> 1020 <a href="<?cs var:toroot ?>training/tv/index.html"> 1021 <span class="small">Building Apps for</span><br/> 1022 TV 1023 </a> 1024 </div> 1025 <ul> 1026 1027 <li class="nav-section"> 1028 <div class="nav-section-header"> 1029 1030 <a href="<?cs var:toroot ?>training/tv/start/index.html" 1031 ja-lang="TV アプリのビルド" 1032 description="How to start building TV apps or extend your existing app to run on TV 1033 devices."> 1034 Building TV Apps</a> 1035 </div> 1036 <ul> 1037 <li> 1038 <a href="<?cs var:toroot ?>training/tv/start/start.html" 1039 ja-lang="TV アプリのビルドを開始する"> 1040 Getting Started with TV Apps</a> 1041 </li> 1042 <li> 1043 <a href="<?cs var:toroot ?>training/tv/start/hardware.html" 1044 ja-lang="TV ハードウェアを処理する"> 1045 Handling TV Hardware</a> 1046 </li> 1047 <li> 1048 <a href="<?cs var:toroot ?>training/tv/start/layouts.html" 1049 ja-lang="TV 向けレイアウトをビルドする"> 1050 Building TV Layouts</a> 1051 </li> 1052 <li> 1053 <a href="<?cs var:toroot ?>training/tv/start/navigation.html" 1054 ja-lang="TV 用のナビゲーションを作成する"> 1055 Creating TV Navigation</a> 1056 </li> 1057 </ul> 1058 </li> 1059 1060 <li class="nav-section"> 1061 <div class="nav-section-header"> 1062 <a href="<?cs var:toroot ?>training/tv/playback/index.html" 1063 ja-lang="TV 再生アプリのビルド" 1064 description="How to build apps that provide media catalogs and play content."> 1065 Building TV Playback Apps</a> 1066 </div> 1067 <ul> 1068 <li> 1069 <a href="<?cs var:toroot ?>training/tv/playback/browse.html" 1070 ja-lang="カタログ ブラウザを作成する"> 1071 Creating a Catalog Browser</a> 1072 </li> 1073 <li> 1074 <a href="<?cs var:toroot ?>training/tv/playback/card.html"> 1075 Providing a Card View</a> 1076 </li> 1077 <li> 1078 <a href="<?cs var:toroot ?>training/tv/playback/details.html" 1079 ja-lang="詳細ビューをビルドする"> 1080 Building a Details View</a> 1081 </li> 1082 <li> 1083 <a href="<?cs var:toroot ?>training/tv/playback/now-playing.html" 1084 ja-lang="再生中カードを表示する"> 1085 Displaying a Now Playing Card</a> 1086 </li> 1087 <li> 1088 <a href="<?cs var:toroot ?>training/tv/playback/guided-step.html"> 1089 Adding a Guided Step</a> 1090 </li> 1091 <li> 1092 <a href="<?cs var:toroot ?>training/tv/playback/options.html"> 1093 Enabling Background Playback</a> 1094 </li> 1095 </ul> 1096 </li> 1097 1098 <li class="nav-section"> 1099 <div class="nav-section-header"> 1100 <a href="<?cs var:toroot ?>training/tv/discovery/index.html" 1101 description="How to help users discover content from your app."> 1102 Helping Users Find Content on TV</a> 1103 </div> 1104 <ul> 1105 <li> 1106 <a href="<?cs var:toroot ?>training/tv/discovery/recommendations.html"> 1107 Recommending TV Content</a> 1108 </li> 1109 <li> 1110 <a href="<?cs var:toroot ?>training/tv/discovery/searchable.html"> 1111 Making TV Apps Searchable</a> 1112 <li> 1113 <a href="<?cs var:toroot ?>training/tv/discovery/in-app-search.html"> 1114 Searching within TV Apps</a> 1115 </li> 1116 </ul> 1117 </li> 1118 1119 <li> 1120 <a href="<?cs var:toroot ?>training/tv/games/index.html" 1121 description="How to build games for TV."> 1122 Building TV Games</a> 1123 </li> 1124 1125 <li class="nav-section"> 1126 <div class="nav-section-header"> 1127 <a href="<?cs var:toroot ?>training/tv/tif/index.html" 1128 description="How to build channels for TV."> 1129 Building TV Channels</a> 1130 </div> 1131 <ul> 1132 <li> 1133 <a href="<?cs var:toroot ?>training/tv/tif/tvinput.html"> 1134 Developing a TV Input Service</a> 1135 <li> 1136 <a href="<?cs var:toroot ?>training/tv/tif/channel.html"> 1137 Working with Channel Data</a> 1138 </li> 1139 <li> 1140 <a href="<?cs var:toroot ?>training/tv/tif/ui.html"> 1141 Managing User Interaction</a> 1142 </li> 1143 </ul> 1144 </li> 1145 1146 <li> 1147 <a href="<?cs var:toroot ?>training/tv/publishing/checklist.html" 1148 description="An itemized list of requirements for TV apps."> 1149 TV Apps Checklist</a> 1150 </li> 1151 </ul> 1152 </li> 1153 <!-- End: Building for TV --> 1154 1155 1156 <!-- Start: Building for Auto --> 1157 <li class="nav-section"> 1158 <div class="nav-section-header"> 1159 <a href="<?cs var:toroot ?>training/auto/index.html"> 1160 <span class="small">Building Apps for</span><br/> 1161 Auto 1162 </a> 1163 </div> 1164 <ul> 1165 <li> 1166 <a href="<?cs var:toroot ?>training/auto/start/index.html" 1167 description="How to start building or extending apps that work 1168 with Auto devices."> 1169 Getting Started with Auto</a> 1170 </li> 1171 <li> 1172 <a href="<?cs var:toroot ?>training/auto/audio/index.html" 1173 description="How to extend audio apps to play content on Auto devices."> 1174 Playing Audio for Auto</a> 1175 </li> 1176 <li> 1177 <a href="<?cs var:toroot ?>training/auto/messaging/index.html" 1178 description="How to extend text messaging apps to work with Auto devices."> 1179 Messaging for Auto</a> 1180 </li> 1181 <li> 1182 <a href="<?cs var:toroot ?>training/auto/testing/index.html" description= 1183 "How to run and test Auto apps."> 1184 Testing Auto Apps</a> 1185 </li> 1186 </ul> 1187 </li> 1188 <!-- End: Building for Auto --> 1189 1190 <li class="nav-section"> 1191 <div class="nav-section-header"> 1192 <a href="<?cs var:toroot ?>training/best-ux.html"> 1193 <span class="small">Best Practices for</span><br/> 1194 Interaction & Engagement 1195 </a> 1196 </div> 1197 <ul> 1198 1199 <li class="nav-section"> 1200 <div class="nav-section-header"> 1201 <a href="<?cs var:toroot ?>training/design-navigation/index.html" 1202 description= 1203 "How to plan your app's screen hierarchy and forms of navigation so users can 1204 effectively and intuitively traverse your app content using various navigation 1205 patterns." 1206 >Designing Effective Navigation</a> 1207 </div> 1208 <ul> 1209 <li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html"> 1210 Planning Screens and Their Relationships 1211 </a> 1212 </li> 1213 <li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html"> 1214 Planning for Multiple Touchscreen Sizes 1215 </a> 1216 </li> 1217 <li><a href="<?cs var:toroot ?>training/design-navigation/descendant-lateral.html"> 1218 Providing Descendant and Lateral Navigation 1219 </a> 1220 </li> 1221 <li><a href="<?cs var:toroot ?>training/design-navigation/ancestral-temporal.html"> 1222 Providing Ancestral and Temporal Navigation 1223 </a> 1224 </li> 1225 <li><a href="<?cs var:toroot ?>training/design-navigation/wireframing.html"> 1226 Putting it All Together: Wireframing the Example App 1227 </a> 1228 </li> 1229 </ul> 1230 </li> 1231 1232 <li class="nav-section"> 1233 <div class="nav-section-header"> 1234 <a href="<?cs var:toroot ?>training/implementing-navigation/index.html" 1235 description= 1236 "How to implement various navigation patterns such as swipe views, 1237 a navigation drawer, and up navigation." 1238 >Implementing Effective Navigation</a> 1239 </div> 1240 <ul> 1241 <li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html"> 1242 Creating Swipe Views with Tabs 1243 </a> 1244 </li> 1245 <li><a href="<?cs var:toroot ?>training/implementing-navigation/nav-drawer.html"> 1246 Creating a Navigation Drawer 1247 </a> 1248 </li> 1249 <li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html"> 1250 Providing Up Navigation 1251 </a> 1252 </li> 1253 <li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html"> 1254 Providing Proper Back Navigation 1255 </a> 1256 </li> 1257 <li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html"> 1258 Implementing Descendant Navigation 1259 </a> 1260 </li> 1261 </ul> 1262 </li> 1263 1264 <li class="nav-section"> 1265 <div class="nav-section-header"> 1266 <a href="<?cs var:toroot ?>training/notify-user/index.html" 1267 description= 1268 "How to display messages called notifications outside of 1269 your application's UI." 1270 >Notifying the User</a> 1271 </div> 1272 <ul> 1273 <li> 1274 <a href="<?cs var:toroot ?>training/notify-user/build-notification.html"> 1275 Building a Notification 1276 </a> 1277 </li> 1278 <li> 1279 <a href="<?cs var:toroot ?>training/notify-user/navigation.html"> 1280 Preserving Navigation when Starting an Activity 1281 </a> 1282 </li> 1283 <li> 1284 <a href="<?cs var:toroot ?>training/notify-user/managing.html"> 1285 Updating Notifications 1286 </a> 1287 </li> 1288 <li> 1289 <a href="<?cs var:toroot ?>training/notify-user/expanded.html"> 1290 Using Big View Styles 1291 </a> 1292 </li> 1293 <li> 1294 <a href="<?cs var:toroot ?>training/notify-user/display-progress.html"> 1295 Displaying Progress in a Notification 1296 </a> 1297 </li> 1298 </ul> 1299 </li> 1300 1301 1302 <li class="nav-section"> 1303 <div class="nav-section-header"> 1304 <a href="<?cs var:toroot ?>training/swipe/index.html" 1305 description= 1306 "How to modify your app's layout to support manual content updates triggered by the 1307 swipe-to-refresh gesture." 1308 >Supporting Swipe-to-Refresh</a> 1309 </div> 1310 <ul> 1311 <li> 1312 <a href="<?cs var:toroot ?>training/swipe/add-swipe-interface.html" 1313 >Adding Swipe-to-Refresh To Your App</a></li> 1314 <li> 1315 <a href="<?cs var:toroot ?>training/swipe/respond-refresh-request.html" 1316 >Responding to a Refresh Gesture</a> 1317 </li> 1318 </ul> 1319 </li> 1320 1321 1322 <li class="nav-section"> 1323 <div class="nav-section-header"> 1324 <a href="<?cs var:toroot ?>training/search/index.html" 1325 description= 1326 "How to properly add a search interface to your app and create a searchable database." 1327 >Adding Search Functionality</a> 1328 </div> 1329 <ul> 1330 <li><a href="<?cs var:toroot ?>training/search/setup.html"> 1331 Setting up the Search Interface 1332 </a> 1333 </li> 1334 <li><a href="<?cs var:toroot ?>training/search/search.html"> 1335 Storing and Searching for Data 1336 </a> 1337 </li> 1338 <li><a href="<?cs var:toroot ?>training/search/backward-compat.html"> 1339 Remaining Backward Compatible 1340 </a> 1341 </li> 1342 </ul> 1343 </li> 1344 1345 <li class="nav-section"> 1346 <div class="nav-section-header"> 1347 <a href="<?cs var:toroot ?>training/app-indexing/index.html" 1348 description= 1349 "How to enable deep linking and indexing of your application 1350content so that users can open this content directly from their mobile search 1351results." 1352 >Making Your App Content Searchable by Google</a> 1353 </div> 1354 <ul> 1355 <li><a href="<?cs var:toroot ?>training/app-indexing/deep-linking.html"> 1356 Enabling Deep Links for App Content 1357 </a> 1358 </li> 1359 <li><a href="<?cs var:toroot ?>training/app-indexing/enabling-app-indexing.html"> 1360 Specifying App Content for Indexing 1361 </a> 1362 </li> 1363 </ul> 1364 </li> 1365 1366 <li> 1367 <a href="<?cs var:toroot ?>training/articles/assistant.html" 1368 description= 1369 "Support contextually relevant actions through the Assist API." 1370 >Optimizing Content for the Assistant</a> 1371 </li> 1372 <li class="nav-section"> 1373 <div class="nav-section"> 1374 <a href="<?cs var:toroot ?>training/app-links/index.html" 1375 description= 1376 "How to enable the system to handle web requests by taking the user directly 1377 to your app instead of your website." 1378 >Handling App Links</a> 1379 </div> 1380 </li> 1381 <!-- End Interaction and Engagement --> 1382 1383</ul> 1384 1385 <li class="nav-section"> 1386 <div class="nav-section-header"> 1387 <a href="<?cs var:toroot ?>training/best-ui.html"> 1388 <span class="small">Best Practices for</span><br/> 1389 User Interface 1390 </a> 1391 </div> 1392 <ul> 1393 1394 1395 <li class="nav-section"> 1396 <div class="nav-section-header"> 1397 <a href="<?cs var:toroot ?>training/multiscreen/index.html" 1398 zh-cn-lang="针对多种屏幕进行设计" 1399 ja-lang="複数画面のデザイン" 1400 es-lang="Cómo diseñar aplicaciones para varias pantallas" 1401 description= 1402 "How to build a user interface that's flexible enough to 1403 fit perfectly on any screen and how to create different interaction 1404 patterns that are optimized for different screen sizes." 1405 >Designing for Multiple Screens</a> 1406 </div> 1407 <ul> 1408 <li><a href="<?cs var:toroot ?>training/multiscreen/screensizes.html" 1409 zh-cn-lang="支持各种屏幕尺寸" 1410 ko-lang="다양한 화면 크기 지원" 1411 ja-lang="さまざまな画面サイズのサポート" 1412 es-lang="Cómo admitir varios tamaños de pantalla" 1413 >Supporting Different Screen Sizes</a> 1414 </li> 1415 <li><a href="<?cs var:toroot ?>training/multiscreen/screendensities.html" 1416 zh-cn-lang="支持各种屏幕密度" 1417 ja-lang="さまざまな画面密度のサポート" 1418 es-lang="Cómo admitir varias densidades de pantalla" 1419 >Supporting Different Screen Densities</a> 1420 </li> 1421 <li><a href="<?cs var:toroot ?>training/multiscreen/adaptui.html" 1422 zh-cn-lang="实施自适应用户界面流程" 1423 ja-lang="順応性のある UI フローの実装" 1424 es-lang="Cómo implementar interfaces de usuario adaptables" 1425 >Implementing Adaptive UI Flows</a> 1426 </li> 1427 </ul> 1428 </li> 1429 1430 <li class="nav-section"> 1431 <div class="nav-section-header"> 1432 <a href="<?cs var:toroot ?>training/appbar/index.html" 1433 description= 1434 "How to use the support library's toolbar widget to implement an 1435 app bar that displays properly on a wide range of devices." 1436 >Adding the App Bar</a> 1437 </div> 1438 <ul> 1439 <li><a href="<?cs var:toroot ?>training/appbar/setting-up.html" 1440 >Setting Up the App Bar</a> 1441 </li> 1442 <li><a href="<?cs var:toroot ?>training/appbar/actions.html" 1443 >Adding and Handling Actions</a> 1444 </li> 1445 <li><a href="<?cs var:toroot ?>training/appbar/up-action.html" 1446 >Adding an Up Action</a> 1447 </li> 1448 <li><a href="<?cs var:toroot ?>training/appbar/action-views.html" 1449 >Action Views and Action Providers</a> 1450 </li> 1451 </ul> 1452 </li> 1453 1454 <li class="nav-section"> 1455 <div class="nav-section-header"> 1456 <a href="<?cs var:toroot ?>training/snackbar/index.html" 1457 description= 1458 "How to use the support library's Snackbar widget to display a 1459 brief pop-up message." 1460 >Showing Pop-Up Messages</a> 1461 </div> 1462 <ul> 1463 <li><a href="<?cs var:toroot ?>training/snackbar/showing.html" 1464 >Building and Displaying a Pop-Up Message</a> 1465 </li> 1466 <li><a href="<?cs var:toroot ?>training/snackbar/action.html" 1467 >Adding an Action to a Message</a> 1468 </li> 1469 </ul> 1470 </li> 1471 1472 <li class="nav-section"> 1473 <div class="nav-section-header"> 1474 <a href="<?cs var:toroot ?>training/custom-views/index.html" 1475 description= 1476 "How to build custom UI widgets that are interactive and smooth." 1477 >Creating Custom Views</a> 1478 </div> 1479 <ul> 1480 <li><a href="<?cs var:toroot ?>training/custom-views/create-view.html"> 1481 Creating a Custom View Class 1482 </a> 1483 </li> 1484 <li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html"> 1485 Implementing Custom Drawing 1486 </a> 1487 </li> 1488 <li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html"> 1489 Making the View Interactive 1490 </a> 1491 </li> 1492 <li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html"> 1493 Optimizing the View 1494 </a> 1495 </li> 1496 </ul> 1497 </li> 1498 1499 <li class="nav-section"> 1500 <div class="nav-section-header"> 1501 <a href="<?cs var:toroot ?>training/backward-compatible-ui/index.html" 1502 description= 1503 "How to use UI components and other APIs from the more recent versions of Android 1504 while remaining compatible with older versions of the platform." 1505 >Creating Backward-Compatible UIs</a> 1506 </div> 1507 <ul> 1508 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html"> 1509 Abstracting the New APIs 1510 </a> 1511 </li> 1512 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html"> 1513 Proxying to the New APIs 1514 </a> 1515 </li> 1516 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html"> 1517 Creating an Implementation with Older APIs 1518 </a> 1519 </li> 1520 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html"> 1521 Using the Version-Aware Component 1522 </a> 1523 </li> 1524 </ul> 1525 </li> 1526 1527 <li class="nav-section"> 1528 <div class="nav-section-header"> 1529 <a href="<?cs var:toroot ?>training/accessibility/index.html" 1530 description= 1531 "How to make your app accessible to users with vision 1532 impairment or other physical disabilities." 1533 >Implementing Accessibility</a> 1534 </div> 1535 <ul> 1536 <li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html"> 1537 Developing Accessible Applications 1538 </a> 1539 </li> 1540 <li><a href="<?cs var:toroot ?>training/accessibility/service.html"> 1541 Developing Accessibility Services 1542 </a> 1543 </li> 1544 <li><a href="<?cs var:toroot ?>training/accessibility/testing.html"> 1545 Accessibility Testing Checklist 1546 </a> 1547 </li> 1548 </ul> 1549 </li> 1550 1551 <li class="nav-section"> 1552 <div class="nav-section-header"> 1553 <a href="<?cs var:toroot ?>training/system-ui/index.html" 1554 description= 1555 "How to hide and show status and navigation bars across different versions of Android, 1556 while managing the display of other screen components." 1557 >Managing the System UI</a> 1558 </div> 1559 <ul> 1560 <li><a href="<?cs var:toroot ?>training/system-ui/dim.html"> 1561 Dimming the System Bars 1562 </a> 1563 </li> 1564 <li><a href="<?cs var:toroot ?>training/system-ui/status.html"> 1565 Hiding the Status Bar 1566 </a> 1567 </li> 1568 <li><a href="<?cs var:toroot ?>training/system-ui/navigation.html"> 1569 Hiding the Navigation Bar 1570 </a> 1571 </li> 1572 <li><a href="<?cs var:toroot ?>training/system-ui/immersive.html"> 1573 Using Immersive Full-Screen Mode 1574 </a> 1575 </li> 1576 <li><a href="<?cs var:toroot ?>training/system-ui/visibility.html"> 1577 Responding to UI Visibility Changes 1578 </a> 1579 </li> 1580 </ul> 1581 </li> 1582 1583 <li class="nav-section"> 1584 <div class="nav-section-header"> 1585 <a href="<?cs var:toroot ?>training/material/index.html" 1586 description= 1587 "How to implement material design on Android." 1588 zh-cn-lang="面向开发者的材料设计" 1589 zh-tw-lang="開發人員材料設計" 1590 ja-lang="マテリアル デザインでのアプリ作成" 1591 es-lang="Crear aplicaciones con Material Design" 1592 pt-br-lang="Material Design para desenvolvedores" 1593 ko-lang="개발자를 위한 머티리얼 디자인" 1594 ru-lang="Создание приложений с помощью Material Design" 1595 in-lang="Desain Bahan untuk Pengembang" 1596 vi-lang="Material Design cho Nhà phát triển" 1597 >Creating Apps with Material Design</a> 1598 </div> 1599 <ul> 1600 <li><a href="<?cs var:toroot ?>training/material/get-started.html" 1601 zh-cn-lang="入门指南" 1602 zh-tw-lang="開始使用" 1603 ja-lang="スタート ガイド" 1604 es-lang="Comencemos" 1605 pt-br-lang="Como iniciar" 1606 ko-lang="시작하기" 1607 ru-lang="Начало работы" 1608 in-lang="Memulai" 1609 vi-lang="Bắt đầu" 1610 > 1611 Getting Started 1612 </a> 1613 </li> 1614 <li><a href="<?cs var:toroot ?>training/material/theme.html" 1615 zh-cn-lang="使用材料主题" 1616 zh-tw-lang="使用材料設計風格" 1617 ja-lang="マテリアル テーマの使用" 1618 es-lang="Usar el tema Material" 1619 pt-br-lang="Como usar o tema do Material" 1620 ko-lang="머티어리얼 테마 사용" 1621 ru-lang="Использование темы Material Design" 1622 in-lang="Menggunakan Tema Bahan" 1623 vi-lang="Sử dụng Chủ đề Material" 1624 > 1625 Using the Material Theme 1626 </a> 1627 </li> 1628 <li><a href="<?cs var:toroot ?>training/material/lists-cards.html" 1629 zh-cn-lang="创建列表与卡片" 1630 zh-tw-lang="建立清單和卡片" 1631 ja-lang="リストとカードの作成" 1632 es-lang="Crear listas y tarjetas" 1633 pt-br-lang="Como criar listas e cartões" 1634 ko-lang="목록 및 카드 생성" 1635 ru-lang="Создание списков и подсказок" 1636 in-lang="Membuat Daftar dan Kartu" 1637 vi-lang="Tạo Danh sách và Thẻ" 1638 > 1639 Creating Lists and Cards 1640 </a> 1641 </li> 1642 <li><a href="<?cs var:toroot ?>training/material/shadows-clipping.html" 1643 zh-cn-lang="定义阴影与裁剪视图" 1644 zh-tw-lang="定義陰影和裁剪檢視" 1645 ja-lang="シャドウとクリッピング ビューの定義" 1646 es-lang="Definir vistas de recorte y sombras" 1647 pt-br-lang="Como definir sombras e recortar visualizações" 1648 ko-lang="그림자 정의 및 뷰 클리핑" 1649 ru-lang="Определение теней и обрезка представлений" 1650 in-lang="Mendefinisikan Bayangan dan Memangkas Tampilan" 1651 vi-lang="Định nghĩa Đổ bóng và Dạng xem Cắt hình" 1652 > 1653 Defining Shadows and Clipping Views 1654 </a> 1655 </li> 1656 <li><a href="<?cs var:toroot ?>training/material/drawables.html" 1657 zh-cn-lang="使用 Drawables" 1658 zh-tw-lang="使用可繪項目" 1659 ja-lang="ドローアブルの使用" 1660 es-lang="Trabajar con interfaces dibujables" 1661 pt-br-lang="Como trabalhar com desenháveis" 1662 ko-lang="Drawable 사용" 1663 ru-lang="Работа с элементами дизайна" 1664 in-lang="Bekerja dengan Drawable" 1665 vi-lang="Làm việc với Nội dung vẽ được" 1666 > 1667 Working with Drawables 1668 </a> 1669 </li> 1670 <li><a href="<?cs var:toroot ?>training/material/animations.html" 1671 zh-cn-lang="定义定制动画" 1672 zh-tw-lang="定義自訂動畫" 1673 ja-lang="カスタム アニメーションの定義" 1674 es-lang="Definir animaciones personalizadas" 1675 pt-br-lang="Como definir animações personalizadas" 1676 ko-lang="사용자지정 애니메이션 정의" 1677 ru-lang="Определение настраиваемой анимации" 1678 in-lang="Mendefinisikan Animasi Custom" 1679 vi-lang="Định nghĩa Hoạt hình Tùy chỉnh" 1680 > 1681 Defining Custom Animations 1682 </a> 1683 </li> 1684 <li><a href="<?cs var:toroot ?>training/material/compatibility.html" 1685 zh-cn-lang="维护兼容性" 1686 zh-tw-lang="維持相容性" 1687 ja-lang="互換性の維持" 1688 es-lang="Mantener la compatibilidad" 1689 pt-br-lang="Como manter a compatibilidade" 1690 ko-lang="호환성 유지" 1691 ru-lang="Обеспечение совместимости" 1692 in-lang="Mempertahankan Kompatibilitas" 1693 vi-lang="Duy trì Tính tương thích" 1694 > 1695 Maintaining Compatibility 1696 </a> 1697 </li> 1698 </ul> 1699 </li> 1700 1701 </ul> 1702 </li> 1703 <!-- End User Interface --> 1704 1705 1706 1707 1708 <li class="nav-section"> 1709 <div class="nav-section-header"> 1710 <a href="<?cs var:toroot ?>training/best-user-input.html"> 1711 <span class="small">Best Practices for</span><br/> 1712 User Input 1713 </a> 1714 </div> 1715 <ul> 1716 1717 <li class="nav-section"> 1718 <div class="nav-section-header"> 1719 <a href="<?cs var:toroot ?>training/gestures/index.html" 1720 description= 1721 "How to write apps that allow users to interact with the touch screen via touch gestures." 1722 >Using Touch Gestures</a> 1723 </div> 1724 <ul> 1725 <li><a href="<?cs var:toroot ?>training/gestures/detector.html"> 1726 Detecting Common Gestures 1727 </a> 1728 </li> 1729 <li><a href="<?cs var:toroot ?>training/gestures/movement.html"> 1730 Tracking Movement 1731 </a> 1732 </li> 1733 <li><a href="<?cs var:toroot ?>training/gestures/scroll.html"> 1734 Animating a Scroll Gesture 1735 </a> 1736 </li> 1737 <li><a href="<?cs var:toroot ?>training/gestures/multi.html"> 1738 Handling Multi-Touch Gestures 1739 </a> 1740 </li> 1741 <li><a href="<?cs var:toroot ?>training/gestures/scale.html"> 1742 Dragging and Scaling 1743 </a> 1744 </li> 1745 <li><a href="<?cs var:toroot ?>training/gestures/viewgroup.html"> 1746 Managing Touch Events in a ViewGroup 1747 </a> 1748 </li> 1749 </ul> 1750 </li> 1751 1752 <li class="nav-section"> 1753 <div class="nav-section-header"> 1754 <a href="<?cs var:toroot ?>training/keyboard-input/index.html" 1755 description= 1756 "How to specify the appearance and behaviors of soft input methods (such 1757 as on-screen keyboards) and how to optimize the experience with 1758 hardware keyboards." 1759 >Handling Keyboard Input</a> 1760 </div> 1761 <ul> 1762 <li><a href="<?cs var:toroot ?>training/keyboard-input/style.html"> 1763 Specifying the Input Method Type 1764 </a> 1765 </li> 1766 <li><a href="<?cs var:toroot ?>training/keyboard-input/visibility.html"> 1767 Handling Input Method Visibility 1768 </a> 1769 </li> 1770 <li><a href="<?cs var:toroot ?>training/keyboard-input/navigation.html"> 1771 Supporting Keyboard Navigation 1772 </a> 1773 </li> 1774 <li><a href="<?cs var:toroot ?>training/keyboard-input/commands.html"> 1775 Handling Keyboard Actions 1776 </a> 1777 </li> 1778 </ul> 1779 </li> 1780 1781 <li class="nav-section"> 1782 <div class="nav-section-header"> 1783 <a href="<?cs var:toroot ?>training/game-controllers/index.html" 1784 description= 1785 "How to write apps that support game controllers." 1786 >Supporting Game Controllers</a> 1787 </div> 1788 <ul> 1789 <li><a href="<?cs var:toroot ?>training/game-controllers/controller-input.html"> 1790 Handling Controller Actions 1791 </a> 1792 </li> 1793 <li><a href="<?cs var:toroot ?>training/game-controllers/compatibility.html"> 1794 Supporting Controllers Across Android Versions 1795 </a> 1796 </li> 1797 <li><a href="<?cs var:toroot ?>training/game-controllers/multiple-controllers.html"> 1798 Supporting Multiple Game Controllers 1799 </a> 1800 </li> 1801 </ul> 1802 </li> 1803 </ul> 1804 </li> <!-- end of User Input --> 1805 1806 <li class="nav-section"> 1807 <div class="nav-section-header"> 1808 <a href="<?cs var:toroot ?>training/best-background.html"> 1809 <span class="small">Best Practices for</span><br/> 1810 Background Jobs 1811 </a> 1812 </div> 1813 <ul> 1814 1815 <li class="nav-section"> 1816 <div class="nav-section-header"> 1817 <a href="<?cs var:toroot ?>training/run-background-service/index.html" 1818 description= 1819 "How to improve UI performance and responsiveness by sending work to a 1820 Service running in the background" 1821 >Running in a Background Service</a> 1822 </div> 1823 <ul> 1824 <li><a href="<?cs var:toroot ?>training/run-background-service/create-service.html"> 1825 Creating a Background Service 1826 </a> 1827 </li> 1828 <li><a href="<?cs var:toroot ?>training/run-background-service/send-request.html"> 1829 Sending Work Requests to the Background Service 1830 </a> 1831 </li> 1832 <li><a href="<?cs var:toroot ?>training/run-background-service/report-status.html"> 1833 Reporting Work Status 1834 </a> 1835 </li> 1836 </ul> 1837 </li> 1838 1839 <li class="nav-section"> 1840 <div class="nav-section-header"> 1841 <a href="<?cs var:toroot ?>training/load-data-background/index.html" 1842 description="How to use CursorLoader to query data without 1843 affecting UI responsiveness." 1844 >Loading Data in the Background</a> 1845 </div> 1846 <ul> 1847 <li><a href="<?cs var:toroot ?>training/load-data-background/setup-loader.html"> 1848 Running a Query with a CursorLoader</a> 1849 </li> 1850 <li><a href="<?cs var:toroot ?>training/load-data-background/handle-results.html"> 1851 Handling the Results</a> 1852 </li> 1853 </ul> 1854 </li> 1855 1856 <li class="nav-section"> 1857 <div class="nav-section-header"> 1858 <a href="<?cs var:toroot ?>training/scheduling/index.html" 1859 description="How to use repeating alarms and wake locks 1860 to run background jobs." 1861 >Managing Device Awake State</a> 1862 </div> 1863 <ul> 1864 <li><a href="<?cs var:toroot ?>training/scheduling/wakelock.html"> 1865 Keeping the Device Awake</a> 1866 </li> 1867 <li><a href="<?cs var:toroot ?>training/scheduling/alarms.html"> 1868 Scheduling Repeating Alarms</a> 1869 </li> 1870 </ul> 1871 </li> 1872 </ul> 1873 </li> <!-- end of Background Jobs --> 1874 1875 <li class="nav-section"> 1876 <div class="nav-section-header"> 1877 <a href="<?cs var:toroot ?>training/best-performance.html"> 1878 <span class="small">Best Practices for</span><br/> 1879 Performance 1880 </a> 1881 </div> 1882 <ul> 1883 <li> 1884 <a href="<?cs var:toroot ?>training/articles/memory.html" 1885 description= 1886 "How to keep your app's memory footprint small in order to improve performance 1887 on a variety of mobile devices." 1888 >Managing Your App's Memory</a> 1889 </li> 1890 <li> 1891 <a href="<?cs var:toroot ?>training/articles/perf-tips.html" 1892 description= 1893 "How to optimize your app's performance in various ways to improve its 1894 responsiveness and battery efficiency." 1895 >Performance Tips</a> 1896 </li> 1897 <li class="nav-section"> 1898 <div class="nav-section-header"> 1899 <a href="<?cs var:toroot ?>training/improving-layouts/index.html" 1900 description= 1901 "How to identify problems in your app's layout performance and improve the UI 1902 responsiveness." 1903 >Improving Layout Performance</a> 1904 </div> 1905 <ul> 1906 <li><a href="<?cs var:toroot ?>training/improving-layouts/optimizing-layout.html"> 1907 Optimizing Layout Hierarchies 1908 </a> 1909 </li> 1910 <li><a href="<?cs var:toroot ?>training/improving-layouts/reusing-layouts.html"> 1911 Re-using Layouts with <include/> 1912 </a> 1913 </li> 1914 <li><a href="<?cs var:toroot ?>training/improving-layouts/loading-ondemand.html"> 1915 Loading Views On Demand 1916 </a> 1917 </li> 1918 <li><a href="<?cs var:toroot ?>training/improving-layouts/smooth-scrolling.html"> 1919 Making ListView Scrolling Smooth 1920 </a> 1921 </li> 1922 </ul> 1923 </li> 1924 1925 <li class="nav-section"> 1926 <div class="nav-section-header"> 1927 <a href="<?cs var:toroot ?>training/monitoring-device-state/index.html" 1928 zh-cn-lang="优化电池使用时间" 1929 ja-lang="電池消費量の最適化" 1930 es-lang="Cómo optimizar la duración de la batería" 1931 description= 1932 "How to minimize the amount of power your app requires by adapting to current 1933 power conditions and performing power-hungry tasks at proper intervals." 1934 >Optimizing Battery Life 1935 </a> 1936 </div> 1937 <ul> 1938 1939 <li class="nav-section"> 1940 <div class="nav-section-header"> 1941 <a href="<?cs var:toroot ?>training/performance/battery/network/index.html"> 1942 Reducing Network Battery Drain 1943 </a> 1944 </div> 1945 <ul> 1946 <li><a href="<?cs var:toroot ?>training/performance/battery/network/gather-data.html"> 1947 Collecting Network Traffic Data 1948 </a> 1949 </li> 1950 <li><a href="<?cs var:toroot ?>training/performance/battery/network/analyze-data.html"> 1951 Analyzing Network Traffic Data 1952 </a> 1953 </li> 1954 <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-user-traffic.html"> 1955 Optimizing User-Initiated Network Use 1956 </a> 1957 </li> 1958 <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-app-traffic.html"> 1959 Optimizing App-Initiated Network Use 1960 </a> 1961 </li> 1962 <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-server-traffic.html"> 1963 Optimizing Server-Initiated Network Use 1964 </a> 1965 </li> 1966 <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-any-traffic.html"> 1967 Optimizing General Network Use 1968 </a> 1969 </li> 1970 </ul> 1971 </li> <!-- End of Reducing Network Battery Drain --> 1972 1973 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/doze-standby.html" 1974 >Optimizing for Doze and App Standby</a> 1975 </li> 1976 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/battery-monitoring.html" 1977 zh-cn-lang="监控电池电量和充电状态" 1978 ja-lang="電池残量と充電状態の監視" 1979 es-lang="Cómo controlar el nivel de batería y el estado de carga" 1980 >Monitoring the Battery Level and Charging State</a> 1981 </li> 1982 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/docking-monitoring.html" 1983 zh-cn-lang="确定和监控基座对接状态和类型" 1984 ja-lang="ホルダーの装着状態とタイプの特定と監視" 1985 es-lang="Cómo determinar y controlar el tipo de conector y el estado de la conexión" 1986 >Determining and Monitoring the Docking State and Type</a> 1987 </li> 1988 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/connectivity-monitoring.html" 1989 zh-cn-lang="确定和监控网络连接状态" 1990 ja-lang="接続状態の特定と監視" 1991 es-lang="Cómo determinar y controlar el estado de la conectividad" 1992 >Determining and Monitoring the Connectivity Status</a> 1993 </li> 1994 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/manifest-receivers.html" 1995 zh-cn-lang="根据需要操作广播接收器" 1996 ja-lang="オンデマンドでのブロードキャスト レシーバ操作" 1997 es-lang="Cómo manipular los receptores de emisión bajo demanda" 1998 >Manipulating Broadcast Receivers On Demand</a> 1999 </li> 2000 </ul> 2001 </li> 2002 <li class="nav-section"> 2003 <div class="nav-section-header"> 2004 <a href="<?cs var:toroot ?>training/multiple-threads/index.html" 2005 description= 2006 "How to improve the performance and scalability of long-running operations by 2007 dispatching work to multiple threads."> 2008 Sending Operations to Multiple Threads</a> 2009 </div> 2010 <ul> 2011 <li><a href="<?cs var:toroot ?>training/multiple-threads/define-runnable.html"> 2012 Specifying the Code to Run on a Thread 2013 </a> 2014 </li> 2015 <li><a href="<?cs var:toroot ?>training/multiple-threads/create-threadpool.html"> 2016 Creating a Manager for Multiple Threads 2017 </a> 2018 </li> 2019 <li><a href="<?cs var:toroot ?>training/multiple-threads/run-code.html"> 2020 Running Code on a Thread Pool Thread 2021 </a> 2022 </li> 2023 <li><a href="<?cs var:toroot ?>training/multiple-threads/communicate-ui.html"> 2024 Communicating with the UI Thread 2025 </a> 2026 </li> 2027 </ul> 2028 </li> 2029 <li> 2030 <a href="<?cs var:toroot ?>training/articles/perf-anr.html" 2031 description= 2032 "How to keep your app responsive to user interaction so the UI does not lock-up and 2033 display an "Application Not Responding" dialog." 2034 >Keeping Your App Responsive</a> 2035 </li> 2036 <li> 2037 <a href="<?cs var:toroot ?>training/articles/perf-jni.html" 2038 description= 2039 "How to efficiently use the Java Native Interface with the Android NDK." 2040 >JNI Tips</a> 2041 </li> 2042 <li> 2043 <a href="<?cs var:toroot ?>training/articles/smp.html" 2044 description= 2045 "Tips for coding Android apps on symmetric multiprocessor systems." 2046 >SMP Primer for Android</a> 2047 </li> 2048 </ul> 2049 </li> <!-- end of Performance --> 2050 2051 <li class="nav-section"> 2052 <div class="nav-section-header"> 2053 <a href="<?cs var:toroot ?>training/best-security.html"> 2054 <span class="small">Best Practices for</span><br/> 2055 Security & Privacy 2056 </a> 2057 </div> 2058 <ul> 2059 <li> 2060 <a href="<?cs var:toroot ?>training/articles/security-tips.html" 2061 description= 2062 "How to perform various tasks and keep your app's data and your user's data secure." 2063 >Security Tips</a> 2064 </li> 2065 2066 <li> 2067 <a href="<?cs var:toroot ?>training/articles/security-ssl.html" 2068 description= 2069 "How to ensure that your app is secure when performing network transactions." 2070 >Security with HTTPS and SSL</a> 2071 </li> 2072 2073 <li> 2074 <a href="<?cs var:toroot ?>training/articles/security-gms-provider.html" 2075 description= 2076 "How to use and update Google Play services security provider, to 2077 protect against SSL exploits." 2078 >Updating Your Security Provider to Protect Against SSL Exploits</a> 2079 </li> 2080 2081 <li> 2082 <a href="<?cs var:toroot ?>training/safetynet/index.html" 2083 description= 2084 "How to use the SafetyNet service to analyze a device where your app is running 2085 and get information about its compatibility with your app." 2086 >Checking Device Compatibility with SafetyNet</a> 2087 </li> 2088 2089 <li> 2090 <a href="<?cs var:toroot ?>work/device-management-policy.html" 2091 description="How to create an application that enforces security policies on devices." 2092 >Enhancing Security with Device Management Policies</a> 2093 </li> 2094 </ul> 2095 </li> 2096 <!-- End security and user info --> 2097 2098 <li class="nav-section"> 2099 <div class="nav-section-header"> 2100 <a href="<?cs var:toroot ?>training/best-permissions-ids.html"> 2101 <span class="small">Best Practices for</span><br/> 2102 Permissions & Identifiers 2103 </a> 2104 </div> 2105 <ul> 2106 <li> 2107 <a href="<?cs var:toroot ?>training/articles/user-data-overview.html" 2108 description= 2109 "Overview of app permissions on Android and how they affect your users." 2110 >Permissions and User Data</a> 2111 </li> 2112 <li> 2113 <a href="<?cs var:toroot ?>training/articles/user-data-permissions.html" 2114 description= 2115 "How to manage permissions the right way for users." 2116 >Best Practices for App Permissions</a> 2117 </li> 2118 <li> 2119 <a href="<?cs var:toroot ?>training/articles/user-data-ids.html" 2120 description= 2121 "Unique identifiers available and how to choose the right one for your use case." 2122 >Best Practices for Unique Identifiers</a> 2123 </li> 2124 </ul> 2125 </li> 2126 <!-- End Permissions and identifiers --> 2127 2128 <li class="nav-section"> 2129 <div class="nav-section-header"> 2130 <a href="<?cs var:toroot ?>training/testing/index.html"> 2131 <span class="small">Best Practices for</span><br/> 2132 Testing 2133 </a> 2134 </div> 2135 <ul> 2136 <li> 2137 <a href="<?cs var:toroot ?>training/testing/start/index.html" 2138 description="How to get started with testing your Android applications."> 2139 Getting Started with Testing 2140 </a> 2141 </li> 2142 <li class="nav-section"> 2143 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/unit-testing/index.html" 2144 description="How to build effective unit tests for Android apps."> 2145 Building Effective Unit Tests 2146 </a></div> 2147 <ul> 2148 <li><a href="<?cs var:toroot ?>training/testing/unit-testing/local-unit-tests.html"> 2149 <span class="en">Building Local Unit Tests</span> 2150 </a> 2151 </li> 2152 <li><a href="<?cs var:toroot ?>training/testing/unit-testing/instrumented-unit-tests.html"> 2153 <span class="en">Building Instrumented Unit Tests</span> 2154 </a> 2155 </li> 2156 </ul> 2157 </li> 2158 <li class="nav-section"> 2159 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/ui-testing/index.html" 2160 description="How to automate your user interface tests for Android apps."> 2161 Automating UI Tests 2162 </a></div> 2163 <ul> 2164 <li><a href="<?cs var:toroot ?>training/testing/ui-testing/espresso-testing.html"> 2165 <span class="en">Testing UI for a Single App</span> 2166 </a> 2167 </li> 2168 <li><a href="<?cs var:toroot ?>training/testing/ui-testing/uiautomator-testing.html"> 2169 <span class="en">Testing UI for Multiple Apps</span> 2170 </a> 2171 </li> 2172 </ul> 2173 </li> 2174 <li class="nav-section"> 2175 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/integration-testing/index.html" 2176 description="How to build effective integration tests for Android apps."> 2177 Testing App Component Integrations 2178 </a></div> 2179 <ul> 2180 <li><a href="<?cs var:toroot ?>training/testing/integration-testing/service-testing.html"> 2181 <span class="en">Testing Your Service</span></a></li> 2182 <li><a href="<?cs var:toroot ?>training/testing/integration-testing/content-provider-testing.html"> 2183 <span class="en">Testing Your Content Provider</span></a></li> 2184 </ul> 2185 </li> 2186 <li><a href="<?cs var:toroot ?>training/testing/performance.html" 2187 description="How to automate UI performance testing.">Testing Display Performance</a> 2188 </li> 2189 </ul> 2190 </li> 2191 <!-- End best Testing --> 2192 2193 <li class="nav-section"> 2194 <div class="nav-section-header"> 2195 <a href="<?cs var:toroot ?>training/distribute.html"> 2196 <span class="small">Using Google Play to</span><br/> 2197 Distribute & Monetize 2198 </a> 2199 </div> 2200 <ul> 2201 <li class="nav-section"> 2202 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/in-app-billing/index.html" 2203 description="How to sell in-app products from your application using In-app Billing."> 2204 Selling In-app Products 2205 </a></div> 2206 <ul> 2207 <li><a href="<?cs var:toroot ?>training/in-app-billing/preparing-iab-app.html"> 2208 <span class="en">Preparing Your App</span> 2209 </a> 2210 </li> 2211 <li><a href="<?cs var:toroot ?>training/in-app-billing/list-iab-products.html"> 2212 <span class="en">Establishing Products for Sale</span> 2213 </a> 2214 </li> 2215 <li><a href="<?cs var:toroot ?>training/in-app-billing/purchase-iab-products.html"> 2216 <span class="en">Purchasing Products</span> 2217 </a> 2218 </li> 2219 <li><a href="<?cs var:toroot ?>training/in-app-billing/test-iab-app.html"> 2220 <span class="en">Testing Your App</span> 2221 </a> 2222 </li> 2223 </ul> 2224 </li> 2225 2226 <li class="nav-section"> 2227 <div class="nav-section-header"> 2228 <a href="<?cs var:toroot ?>training/multiple-apks/index.html" 2229 description= 2230 "How to publish your app on Google Play with separate APKs that target 2231 different devices, while using a single app listing." 2232 >Maintaining Multiple APKs</a> 2233 </div> 2234 <ul> 2235 <li><a href="<?cs var:toroot ?>training/multiple-apks/api.html"> 2236 Creating Multiple APKs for Different API Levels 2237 </a> 2238 </li> 2239 <li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html"> 2240 Creating Multiple APKs for Different Screen Sizes 2241 </a> 2242 </li> 2243 <li><a href="<?cs var:toroot ?>training/multiple-apks/texture.html"> 2244 Creating Multiple APKs for Different GL Textures 2245 </a> 2246 </li> 2247 <li><a href="<?cs var:toroot ?>training/multiple-apks/multiple.html"> 2248 Creating Multiple APKs with 2+ Dimensions 2249 </a> 2250 </li> 2251 </ul> 2252 </li> 2253 </ul> 2254 </li> 2255 <!-- End best Publishing --> 2256 2257</ul><!-- nav --> 2258<script type="text/javascript"> 2259<!-- 2260 buildToggleLists(); 2261 changeNavLang(getLangPref()); 2262//--> 2263</script> 2264