summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.mk2
-rw-r--r--api/current.txt7
-rw-r--r--api/system-current.txt7
-rw-r--r--api/test-current.txt7
-rw-r--r--cmds/bootanimation/audioplay.cpp22
-rw-r--r--core/java/android/app/IWallpaperManager.aidl2
-rw-r--r--core/java/android/app/Notification.java2
-rw-r--r--core/java/android/app/WallpaperManager.java26
-rw-r--r--core/java/android/content/ClipData.java13
-rw-r--r--core/java/android/content/Intent.java16
-rw-r--r--core/java/android/content/pm/ShortcutInfo.java32
-rw-r--r--core/java/android/content/pm/ShortcutManager.java14
-rw-r--r--core/java/android/content/res/Resources.java7
-rw-r--r--core/java/android/hardware/location/ContextHubService.java5
-rw-r--r--core/java/android/net/NetworkRequest.java9
-rw-r--r--core/java/android/os/BatteryStats.java48
-rw-r--r--core/java/android/os/Process.java4
-rwxr-xr-xcore/java/android/provider/Settings.java44
-rw-r--r--core/java/com/android/internal/app/AlertController.java4
-rw-r--r--core/java/com/android/internal/app/IBatteryStats.aidl2
-rw-r--r--core/java/com/android/internal/app/MicroAlertController.java16
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java180
-rw-r--r--core/java/com/android/internal/view/FloatingActionMode.java9
-rw-r--r--core/java/com/android/internal/widget/FloatingToolbar.java25
-rw-r--r--core/java/com/android/internal/widget/LockPatternUtils.java4
-rw-r--r--core/java/com/android/internal/widget/ResolverDrawerLayout.java2
-rw-r--r--core/jni/android_hardware_camera2_CameraMetadata.cpp105
-rw-r--r--core/jni/android_hardware_location_ContextHubService.cpp5
-rw-r--r--core/res/AndroidManifest.xml1
-rw-r--r--core/res/res/layout-watch/alert_dialog_material.xml16
-rw-r--r--core/res/res/values-af/strings.xml3
-rw-r--r--core/res/res/values-am/strings.xml3
-rw-r--r--core/res/res/values-ar/strings.xml3
-rw-r--r--core/res/res/values-az-rAZ/strings.xml3
-rw-r--r--core/res/res/values-bg/strings.xml3
-rw-r--r--core/res/res/values-bn-rBD/strings.xml3
-rw-r--r--core/res/res/values-ca/strings.xml3
-rw-r--r--core/res/res/values-cs/strings.xml3
-rw-r--r--core/res/res/values-da/strings.xml3
-rw-r--r--core/res/res/values-de/strings.xml3
-rw-r--r--core/res/res/values-el/strings.xml3
-rw-r--r--core/res/res/values-en-rAU/strings.xml3
-rw-r--r--core/res/res/values-en-rGB/strings.xml3
-rw-r--r--core/res/res/values-en-rIN/strings.xml3
-rw-r--r--core/res/res/values-es-rUS/strings.xml3
-rw-r--r--core/res/res/values-es/strings.xml3
-rw-r--r--core/res/res/values-eu-rES/strings.xml3
-rw-r--r--core/res/res/values-fa/strings.xml3
-rw-r--r--core/res/res/values-fi/strings.xml3
-rw-r--r--core/res/res/values-fr-rCA/strings.xml3
-rw-r--r--core/res/res/values-fr/strings.xml3
-rw-r--r--core/res/res/values-gl-rES/strings.xml3
-rw-r--r--core/res/res/values-gu-rIN/strings.xml3
-rw-r--r--core/res/res/values-hi/strings.xml3
-rw-r--r--core/res/res/values-hr/strings.xml3
-rw-r--r--core/res/res/values-hy-rAM/strings.xml3
-rw-r--r--core/res/res/values-in/strings.xml3
-rw-r--r--core/res/res/values-is-rIS/strings.xml3
-rw-r--r--core/res/res/values-it/strings.xml3
-rw-r--r--core/res/res/values-iw/strings.xml3
-rw-r--r--core/res/res/values-ja/strings.xml3
-rw-r--r--core/res/res/values-ka-rGE/strings.xml3
-rw-r--r--core/res/res/values-kk-rKZ/strings.xml3
-rw-r--r--core/res/res/values-km-rKH/strings.xml3
-rw-r--r--core/res/res/values-kn-rIN/strings.xml3
-rw-r--r--core/res/res/values-ko/strings.xml3
-rw-r--r--core/res/res/values-ky-rKG/strings.xml3
-rw-r--r--core/res/res/values-lt/strings.xml3
-rw-r--r--core/res/res/values-lv/strings.xml3
-rw-r--r--core/res/res/values-mk-rMK/strings.xml3
-rw-r--r--core/res/res/values-ml-rIN/strings.xml3
-rw-r--r--core/res/res/values-mn-rMN/strings.xml3
-rw-r--r--core/res/res/values-mr-rIN/strings.xml3
-rw-r--r--core/res/res/values-ms-rMY/strings.xml3
-rw-r--r--core/res/res/values-my-rMM/strings.xml3
-rw-r--r--core/res/res/values-nb/strings.xml3
-rw-r--r--core/res/res/values-ne-rNP/strings.xml3
-rw-r--r--core/res/res/values-nl/strings.xml3
-rw-r--r--core/res/res/values-notround-watch/dimens_material.xml3
-rw-r--r--core/res/res/values-pa-rIN/strings.xml3
-rw-r--r--core/res/res/values-pl/strings.xml3
-rw-r--r--core/res/res/values-pt-rBR/strings.xml3
-rw-r--r--core/res/res/values-pt-rPT/strings.xml3
-rw-r--r--core/res/res/values-pt/strings.xml3
-rw-r--r--core/res/res/values-ro/strings.xml3
-rw-r--r--core/res/res/values-round-watch/dimens_material.xml3
-rw-r--r--core/res/res/values-ru/strings.xml3
-rw-r--r--core/res/res/values-si-rLK/strings.xml3
-rw-r--r--core/res/res/values-sk/strings.xml3
-rw-r--r--core/res/res/values-sl/strings.xml3
-rw-r--r--core/res/res/values-sq-rAL/strings.xml3
-rw-r--r--core/res/res/values-sr/strings.xml3
-rw-r--r--core/res/res/values-sv/strings.xml3
-rw-r--r--core/res/res/values-sw/strings.xml3
-rw-r--r--core/res/res/values-ta-rIN/strings.xml3
-rw-r--r--core/res/res/values-te-rIN/strings.xml3
-rw-r--r--core/res/res/values-th/strings.xml3
-rw-r--r--core/res/res/values-tl/strings.xml3
-rw-r--r--core/res/res/values-tr/strings.xml3
-rw-r--r--core/res/res/values-uk/strings.xml3
-rw-r--r--core/res/res/values-ur-rPK/strings.xml3
-rw-r--r--core/res/res/values-uz-rUZ/strings.xml23
-rw-r--r--core/res/res/values-vi/strings.xml3
-rw-r--r--core/res/res/values-watch/styles_material.xml5
-rw-r--r--core/res/res/values-zh-rCN/strings.xml3
-rw-r--r--core/res/res/values-zh-rHK/strings.xml3
-rw-r--r--core/res/res/values-zh-rTW/strings.xml3
-rw-r--r--core/res/res/values-zu/strings.xml3
-rw-r--r--core/res/res/values/styles_material.xml6
-rw-r--r--core/res/res/values/themes_device_defaults.xml6
-rw-r--r--docs/docs-preview-index.html11
-rw-r--r--docs/html-intl/intl/es/about/versions/android-5.0.jd2
-rw-r--r--docs/html-intl/intl/es/design/patterns/navigation.jd2
-rw-r--r--docs/html-intl/intl/es/design/patterns/notifications.jd18
-rw-r--r--docs/html-intl/intl/es/distribute/googleplay/about.jd2
-rw-r--r--docs/html-intl/intl/es/distribute/googleplay/auto.jd2
-rw-r--r--docs/html-intl/intl/es/distribute/googleplay/developer-console.jd6
-rw-r--r--docs/html-intl/intl/es/distribute/googleplay/families/faq.jd4
-rw-r--r--docs/html-intl/intl/es/distribute/googleplay/families/start.jd2
-rw-r--r--docs/html-intl/intl/es/distribute/googleplay/quality/auto.jd2
-rw-r--r--docs/html-intl/intl/es/distribute/googleplay/quality/core.jd6
-rw-r--r--docs/html-intl/intl/es/distribute/googleplay/quality/tablets.jd10
-rw-r--r--docs/html-intl/intl/es/distribute/googleplay/tv.jd6
-rw-r--r--docs/html-intl/intl/es/distribute/googleplay/wear.jd4
-rw-r--r--docs/html-intl/intl/es/distribute/tools/launch-checklist.jd2
-rw-r--r--docs/html-intl/intl/es/distribute/tools/localization-checklist.jd2
-rw-r--r--docs/html-intl/intl/es/google/play/filters.jd4
-rw-r--r--docs/html-intl/intl/es/preview/api-overview.jd10
-rw-r--r--docs/html-intl/intl/es/preview/behavior-changes.jd16
-rw-r--r--docs/html-intl/intl/es/preview/download-ota.jd58
-rw-r--r--docs/html-intl/intl/es/preview/download.jd71
-rw-r--r--docs/html-intl/intl/es/preview/features/afw.jd30
-rw-r--r--docs/html-intl/intl/es/preview/features/background-optimization.jd2
-rw-r--r--docs/html-intl/intl/es/preview/features/direct-boot.jd2
-rw-r--r--docs/html-intl/intl/es/preview/features/multi-window.jd6
-rw-r--r--docs/html-intl/intl/es/preview/features/notification-updates.jd2
-rw-r--r--docs/html-intl/intl/es/preview/features/picture-in-picture.jd4
-rw-r--r--docs/html-intl/intl/es/preview/features/scoped-folder-access.jd14
-rw-r--r--docs/html-intl/intl/es/preview/features/security-config.jd4
-rw-r--r--docs/html-intl/intl/es/preview/features/tv-recording-api.jd10
-rw-r--r--docs/html-intl/intl/es/preview/guide.jd2
-rw-r--r--docs/html-intl/intl/es/preview/overview.jd2
-rw-r--r--docs/html-intl/intl/es/preview/setup-sdk.jd2
-rw-r--r--docs/html-intl/intl/es/preview/support.jd18
-rw-r--r--docs/html-intl/intl/es/training/monitoring-device-state/battery-monitoring.jd22
-rw-r--r--docs/html-intl/intl/es/training/monitoring-device-state/connectivity-monitoring.jd14
-rw-r--r--docs/html-intl/intl/es/training/monitoring-device-state/docking-monitoring.jd16
-rw-r--r--docs/html-intl/intl/es/training/monitoring-device-state/index.jd16
-rw-r--r--docs/html-intl/intl/es/training/monitoring-device-state/manifest-receivers.jd10
-rw-r--r--docs/html-intl/intl/es/training/multiscreen/adaptui.jd28
-rw-r--r--docs/html-intl/intl/es/training/multiscreen/index.jd56
-rw-r--r--docs/html-intl/intl/es/training/multiscreen/screendensities.jd28
-rw-r--r--docs/html-intl/intl/es/training/multiscreen/screensizes.jd42
-rw-r--r--docs/html-intl/intl/in/design/get-started/principles.jd2
-rw-r--r--docs/html-intl/intl/in/design/patterns/navigation.jd4
-rw-r--r--docs/html-intl/intl/in/guide/components/activities.jd28
-rw-r--r--docs/html-intl/intl/in/guide/components/bound-services.jd6
-rw-r--r--docs/html-intl/intl/in/guide/components/fragments.jd168
-rw-r--r--docs/html-intl/intl/in/guide/components/fundamentals.jd84
-rw-r--r--docs/html-intl/intl/in/guide/components/index.jd10
-rw-r--r--docs/html-intl/intl/in/guide/components/loaders.jd38
-rw-r--r--docs/html-intl/intl/in/guide/components/processes-and-threads.jd180
-rw-r--r--docs/html-intl/intl/in/guide/components/recents.jd22
-rw-r--r--docs/html-intl/intl/in/guide/components/services.jd4
-rw-r--r--docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd34
-rw-r--r--docs/html-intl/intl/in/guide/topics/manifest/manifest-intro.jd342
-rw-r--r--docs/html-intl/intl/in/guide/topics/providers/calendar-provider.jd294
-rw-r--r--docs/html-intl/intl/in/guide/topics/providers/content-provider-basics.jd62
-rw-r--r--docs/html-intl/intl/in/guide/topics/providers/content-provider-creating.jd4
-rw-r--r--docs/html-intl/intl/in/guide/topics/providers/content-providers.jd2
-rw-r--r--docs/html-intl/intl/in/guide/topics/providers/document-provider.jd4
-rw-r--r--docs/html-intl/intl/in/guide/topics/resources/accessing-resources.jd8
-rw-r--r--docs/html-intl/intl/in/guide/topics/resources/overview.jd4
-rw-r--r--docs/html-intl/intl/in/guide/topics/resources/providing-resources.jd74
-rw-r--r--docs/html-intl/intl/in/guide/topics/resources/runtime-changes.jd8
-rw-r--r--docs/html-intl/intl/in/guide/topics/ui/controls.jd2
-rw-r--r--docs/html-intl/intl/in/guide/topics/ui/declaring-layout.jd10
-rw-r--r--docs/html-intl/intl/in/guide/topics/ui/dialogs.jd52
-rw-r--r--docs/html-intl/intl/in/guide/topics/ui/menus.jd38
-rw-r--r--docs/html-intl/intl/in/guide/topics/ui/notifiers/notifications.jd12
-rw-r--r--docs/html-intl/intl/in/guide/topics/ui/overview.jd4
-rw-r--r--docs/html-intl/intl/in/guide/topics/ui/settings.jd42
-rw-r--r--docs/html-intl/intl/in/guide/topics/ui/ui-events.jd68
-rw-r--r--docs/html-intl/intl/in/preview/api-overview.jd2
-rw-r--r--docs/html-intl/intl/in/preview/behavior-changes.jd4
-rw-r--r--docs/html-intl/intl/in/preview/download-ota.jd56
-rw-r--r--docs/html-intl/intl/in/preview/download.jd65
-rw-r--r--docs/html-intl/intl/in/preview/features/background-optimization.jd2
-rw-r--r--docs/html-intl/intl/in/preview/features/data-saver.jd2
-rw-r--r--docs/html-intl/intl/in/preview/features/multi-window.jd2
-rw-r--r--docs/html-intl/intl/in/preview/features/security-config.jd2
-rw-r--r--docs/html-intl/intl/in/preview/j8-jack.jd2
-rw-r--r--docs/html-intl/intl/in/preview/overview.jd6
-rw-r--r--docs/html-intl/intl/in/preview/setup-sdk.jd2
-rw-r--r--docs/html-intl/intl/in/preview/support.jd2
-rw-r--r--docs/html-intl/intl/in/training/material/drawables.jd2
-rw-r--r--docs/html-intl/intl/in/training/material/lists-cards.jd4
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/about.jd2
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/auto.jd2
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/developer-console.jd2
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/families/about.jd2
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/families/faq.jd4
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/families/start.jd4
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/guide.jd2
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/quality/auto.jd2
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/quality/core.jd8
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/quality/tablets.jd2
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/quality/wear.jd2
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/start.jd2
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/tv.jd6
-rw-r--r--docs/html-intl/intl/ja/distribute/googleplay/wear.jd2
-rw-r--r--docs/html-intl/intl/ja/distribute/tools/launch-checklist.jd2
-rw-r--r--docs/html-intl/intl/ja/distribute/tools/localization-checklist.jd4
-rw-r--r--docs/html-intl/intl/ja/google/play/filters.jd2
-rw-r--r--docs/html-intl/intl/ja/guide/components/activities.jd2
-rw-r--r--docs/html-intl/intl/ja/guide/components/fragments.jd10
-rw-r--r--docs/html-intl/intl/ja/guide/components/fundamentals.jd2
-rw-r--r--docs/html-intl/intl/ja/guide/components/index.jd6
-rw-r--r--docs/html-intl/intl/ja/guide/components/loaders.jd18
-rw-r--r--docs/html-intl/intl/ja/guide/components/processes-and-threads.jd2
-rw-r--r--docs/html-intl/intl/ja/guide/publishing/app-signing.jd14
-rw-r--r--docs/html-intl/intl/ja/guide/publishing/preparing.jd2
-rw-r--r--docs/html-intl/intl/ja/guide/publishing/versioning.jd8
-rw-r--r--docs/html-intl/intl/ja/guide/topics/fundamentals.jd132
-rw-r--r--docs/html-intl/intl/ja/guide/topics/manifest/manifest-intro.jd28
-rw-r--r--docs/html-intl/intl/ja/guide/topics/providers/calendar-provider.jd178
-rw-r--r--docs/html-intl/intl/ja/guide/topics/providers/contacts-provider.jd14
-rw-r--r--docs/html-intl/intl/ja/guide/topics/providers/content-provider-creating.jd4
-rw-r--r--docs/html-intl/intl/ja/guide/topics/resources/providing-resources.jd4
-rw-r--r--docs/html-intl/intl/ja/guide/topics/ui/controls.jd2
-rw-r--r--docs/html-intl/intl/ja/guide/topics/ui/dialogs.jd28
-rw-r--r--docs/html-intl/intl/ja/guide/topics/ui/menus.jd12
-rw-r--r--docs/html-intl/intl/ja/guide/topics/ui/notifiers/notifications.jd2
-rw-r--r--docs/html-intl/intl/ja/guide/topics/ui/overview.jd4
-rw-r--r--docs/html-intl/intl/ja/guide/topics/ui/settings.jd32
-rw-r--r--docs/html-intl/intl/ja/guide/topics/ui/ui-events.jd12
-rw-r--r--docs/html-intl/intl/ja/preview/download-ota.jd58
-rw-r--r--docs/html-intl/intl/ja/preview/download.jd65
-rw-r--r--docs/html-intl/intl/ja/preview/features/background-optimization.jd2
-rw-r--r--docs/html-intl/intl/ja/preview/features/direct-boot.jd8
-rw-r--r--docs/html-intl/intl/ja/preview/features/icu4j-framework.jd2
-rw-r--r--docs/html-intl/intl/ja/preview/features/multi-window.jd18
-rw-r--r--docs/html-intl/intl/ja/preview/features/picture-in-picture.jd12
-rw-r--r--docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd14
-rw-r--r--docs/html-intl/intl/ja/preview/setup-sdk.jd2
-rw-r--r--docs/html-intl/intl/ja/training/basics/activity-lifecycle/index.jd4
-rw-r--r--docs/html-intl/intl/ja/training/basics/activity-lifecycle/pausing.jd6
-rw-r--r--docs/html-intl/intl/ja/training/basics/activity-lifecycle/recreating.jd14
-rw-r--r--docs/html-intl/intl/ja/training/basics/activity-lifecycle/starting.jd18
-rw-r--r--docs/html-intl/intl/ja/training/basics/activity-lifecycle/stopping.jd16
-rw-r--r--docs/html-intl/intl/ja/training/basics/intents/filters.jd2
-rw-r--r--docs/html-intl/intl/ja/training/basics/intents/sending.jd2
-rw-r--r--docs/html-intl/intl/ja/training/material/animations.jd8
-rw-r--r--docs/html-intl/intl/ja/training/monitoring-device-state/battery-monitoring.jd22
-rw-r--r--docs/html-intl/intl/ja/training/monitoring-device-state/connectivity-monitoring.jd14
-rw-r--r--docs/html-intl/intl/ja/training/monitoring-device-state/docking-monitoring.jd16
-rw-r--r--docs/html-intl/intl/ja/training/monitoring-device-state/index.jd16
-rw-r--r--docs/html-intl/intl/ja/training/monitoring-device-state/manifest-receivers.jd10
-rw-r--r--docs/html-intl/intl/ja/training/multiscreen/adaptui.jd28
-rw-r--r--docs/html-intl/intl/ja/training/multiscreen/index.jd56
-rw-r--r--docs/html-intl/intl/ja/training/multiscreen/screendensities.jd28
-rw-r--r--docs/html-intl/intl/ja/training/multiscreen/screensizes.jd42
-rw-r--r--docs/html-intl/intl/ko/about/versions/android-5.0.jd4
-rw-r--r--docs/html-intl/intl/ko/design/patterns/navigation.jd2
-rw-r--r--docs/html-intl/intl/ko/distribute/googleplay/about.jd2
-rw-r--r--docs/html-intl/intl/ko/distribute/googleplay/auto.jd12
-rw-r--r--docs/html-intl/intl/ko/distribute/googleplay/developer-console.jd6
-rw-r--r--docs/html-intl/intl/ko/distribute/googleplay/families/faq.jd12
-rw-r--r--docs/html-intl/intl/ko/distribute/googleplay/families/start.jd2
-rw-r--r--docs/html-intl/intl/ko/distribute/googleplay/guide.jd2
-rw-r--r--docs/html-intl/intl/ko/distribute/googleplay/quality/core.jd14
-rw-r--r--docs/html-intl/intl/ko/distribute/googleplay/quality/tablets.jd2
-rw-r--r--docs/html-intl/intl/ko/distribute/googleplay/quality/wear.jd2
-rw-r--r--docs/html-intl/intl/ko/distribute/googleplay/start.jd2
-rw-r--r--docs/html-intl/intl/ko/distribute/googleplay/tv.jd4
-rw-r--r--docs/html-intl/intl/ko/distribute/googleplay/wear.jd2
-rw-r--r--docs/html-intl/intl/ko/distribute/tools/launch-checklist.jd4
-rw-r--r--docs/html-intl/intl/ko/distribute/tools/localization-checklist.jd2
-rw-r--r--docs/html-intl/intl/ko/guide/components/activities.jd316
-rw-r--r--docs/html-intl/intl/ko/guide/components/bound-services.jd176
-rw-r--r--docs/html-intl/intl/ko/guide/components/fragments.jd480
-rw-r--r--docs/html-intl/intl/ko/guide/components/fundamentals.jd336
-rw-r--r--docs/html-intl/intl/ko/guide/components/index.jd24
-rw-r--r--docs/html-intl/intl/ko/guide/components/loaders.jd210
-rw-r--r--docs/html-intl/intl/ko/guide/components/processes-and-threads.jd208
-rw-r--r--docs/html-intl/intl/ko/guide/components/recents.jd114
-rw-r--r--docs/html-intl/intl/ko/guide/components/services.jd422
-rw-r--r--docs/html-intl/intl/ko/guide/components/tasks-and-back-stack.jd440
-rw-r--r--docs/html-intl/intl/ko/guide/index.jd32
-rw-r--r--docs/html-intl/intl/ko/guide/topics/manifest/manifest-intro.jd346
-rw-r--r--docs/html-intl/intl/ko/guide/topics/providers/calendar-provider.jd430
-rw-r--r--docs/html-intl/intl/ko/guide/topics/providers/contacts-provider.jd1188
-rw-r--r--docs/html-intl/intl/ko/guide/topics/providers/content-provider-basics.jd298
-rw-r--r--docs/html-intl/intl/ko/guide/topics/providers/content-provider-creating.jd326
-rw-r--r--docs/html-intl/intl/ko/guide/topics/providers/content-providers.jd18
-rw-r--r--docs/html-intl/intl/ko/guide/topics/providers/document-provider.jd322
-rw-r--r--docs/html-intl/intl/ko/guide/topics/resources/accessing-resources.jd80
-rw-r--r--docs/html-intl/intl/ko/guide/topics/resources/overview.jd40
-rw-r--r--docs/html-intl/intl/ko/guide/topics/resources/providing-resources.jd460
-rw-r--r--docs/html-intl/intl/ko/guide/topics/resources/runtime-changes.jd162
-rw-r--r--docs/html-intl/intl/ko/guide/topics/ui/controls.jd12
-rw-r--r--docs/html-intl/intl/ko/guide/topics/ui/declaring-layout.jd202
-rw-r--r--docs/html-intl/intl/ko/guide/topics/ui/dialogs.jd242
-rw-r--r--docs/html-intl/intl/ko/guide/topics/ui/menus.jd196
-rw-r--r--docs/html-intl/intl/ko/guide/topics/ui/notifiers/notifications.jd300
-rw-r--r--docs/html-intl/intl/ko/guide/topics/ui/overview.jd38
-rw-r--r--docs/html-intl/intl/ko/guide/topics/ui/settings.jd452
-rw-r--r--docs/html-intl/intl/ko/guide/topics/ui/ui-events.jd198
-rw-r--r--docs/html-intl/intl/ko/preview/api-overview.jd6
-rw-r--r--docs/html-intl/intl/ko/preview/behavior-changes.jd6
-rw-r--r--docs/html-intl/intl/ko/preview/download-ota.jd58
-rw-r--r--docs/html-intl/intl/ko/preview/download.jd65
-rw-r--r--docs/html-intl/intl/ko/preview/features/direct-boot.jd4
-rw-r--r--docs/html-intl/intl/ko/preview/features/icu4j-framework.jd2
-rw-r--r--docs/html-intl/intl/ko/preview/features/tv-recording-api.jd2
-rw-r--r--docs/html-intl/intl/ko/preview/setup-sdk.jd2
-rw-r--r--docs/html-intl/intl/ko/training/basics/activity-lifecycle/index.jd8
-rw-r--r--docs/html-intl/intl/ko/training/basics/activity-lifecycle/pausing.jd8
-rw-r--r--docs/html-intl/intl/ko/training/basics/activity-lifecycle/recreating.jd12
-rw-r--r--docs/html-intl/intl/ko/training/basics/activity-lifecycle/starting.jd16
-rw-r--r--docs/html-intl/intl/ko/training/basics/activity-lifecycle/stopping.jd14
-rw-r--r--docs/html-intl/intl/ko/training/basics/data-storage/databases.jd10
-rw-r--r--docs/html-intl/intl/ko/training/material/animations.jd10
-rw-r--r--docs/html-intl/intl/ko/training/material/lists-cards.jd2
-rw-r--r--docs/html-intl/intl/ko/training/material/shadows-clipping.jd2
-rw-r--r--docs/html-intl/intl/ko/training/monitoring-device-state/battery-monitoring.jd22
-rw-r--r--docs/html-intl/intl/ko/training/monitoring-device-state/connectivity-monitoring.jd14
-rw-r--r--docs/html-intl/intl/ko/training/monitoring-device-state/docking-monitoring.jd16
-rw-r--r--docs/html-intl/intl/ko/training/monitoring-device-state/index.jd16
-rw-r--r--docs/html-intl/intl/ko/training/monitoring-device-state/manifest-receivers.jd10
-rw-r--r--docs/html-intl/intl/ko/training/multiscreen/adaptui.jd28
-rw-r--r--docs/html-intl/intl/ko/training/multiscreen/index.jd56
-rw-r--r--docs/html-intl/intl/ko/training/multiscreen/screendensities.jd28
-rw-r--r--docs/html-intl/intl/ko/training/multiscreen/screensizes.jd42
-rw-r--r--docs/html-intl/intl/pt-br/about/versions/android-5.0.jd2
-rw-r--r--docs/html-intl/intl/pt-br/design/get-started/principles.jd4
-rw-r--r--docs/html-intl/intl/pt-br/design/material/index.jd24
-rw-r--r--docs/html-intl/intl/pt-br/design/patterns/compatibility.jd2
-rw-r--r--docs/html-intl/intl/pt-br/design/patterns/navigation.jd16
-rw-r--r--docs/html-intl/intl/pt-br/design/patterns/notifications.jd74
-rw-r--r--docs/html-intl/intl/pt-br/guide/components/bound-services.jd8
-rw-r--r--docs/html-intl/intl/pt-br/guide/components/fragments.jd14
-rw-r--r--docs/html-intl/intl/pt-br/guide/components/fundamentals.jd4
-rw-r--r--docs/html-intl/intl/pt-br/guide/components/index.jd12
-rw-r--r--docs/html-intl/intl/pt-br/guide/components/loaders.jd26
-rw-r--r--docs/html-intl/intl/pt-br/guide/components/processes-and-threads.jd4
-rw-r--r--docs/html-intl/intl/pt-br/guide/components/recents.jd10
-rw-r--r--docs/html-intl/intl/pt-br/guide/components/services.jd4
-rw-r--r--docs/html-intl/intl/pt-br/guide/components/tasks-and-back-stack.jd18
-rw-r--r--docs/html-intl/intl/pt-br/guide/index.jd4
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/manifest/manifest-intro.jd232
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/providers/calendar-provider.jd218
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/providers/contacts-provider.jd34
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-basics.jd20
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-creating.jd10
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/providers/content-providers.jd12
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/providers/document-provider.jd8
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/resources/accessing-resources.jd28
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/resources/overview.jd4
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/resources/providing-resources.jd14
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/resources/runtime-changes.jd2
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/ui/controls.jd2
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/ui/declaring-layout.jd18
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/ui/dialogs.jd42
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/ui/menus.jd22
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/ui/notifiers/notifications.jd8
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/ui/overview.jd10
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/ui/settings.jd44
-rw-r--r--docs/html-intl/intl/pt-br/guide/topics/ui/ui-events.jd40
-rw-r--r--docs/html-intl/intl/pt-br/preview/api-overview.jd276
-rw-r--r--docs/html-intl/intl/pt-br/preview/behavior-changes.jd52
-rw-r--r--docs/html-intl/intl/pt-br/preview/download-ota.jd60
-rw-r--r--docs/html-intl/intl/pt-br/preview/download.jd69
-rw-r--r--docs/html-intl/intl/pt-br/preview/features/afw.jd20
-rw-r--r--docs/html-intl/intl/pt-br/preview/features/background-optimization.jd6
-rw-r--r--docs/html-intl/intl/pt-br/preview/features/data-saver.jd10
-rw-r--r--docs/html-intl/intl/pt-br/preview/features/direct-boot.jd2
-rw-r--r--docs/html-intl/intl/pt-br/preview/features/multi-window.jd4
-rw-r--r--docs/html-intl/intl/pt-br/preview/features/multilingual-support.jd4
-rw-r--r--docs/html-intl/intl/pt-br/preview/features/notification-updates.jd12
-rw-r--r--docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd14
-rw-r--r--docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd6
-rw-r--r--docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd2
-rw-r--r--docs/html-intl/intl/pt-br/preview/j8-jack.jd2
-rw-r--r--docs/html-intl/intl/pt-br/preview/overview.jd16
-rw-r--r--docs/html-intl/intl/pt-br/preview/setup-sdk.jd12
-rw-r--r--docs/html-intl/intl/pt-br/preview/support.jd18
-rw-r--r--docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/index.jd6
-rw-r--r--docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/pausing.jd12
-rw-r--r--docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/recreating.jd14
-rw-r--r--docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/starting.jd16
-rw-r--r--docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/stopping.jd14
-rw-r--r--docs/html-intl/intl/pt-br/training/basics/data-storage/databases.jd6
-rw-r--r--docs/html-intl/intl/pt-br/training/basics/intents/filters.jd2
-rw-r--r--docs/html-intl/intl/pt-br/training/basics/intents/result.jd6
-rw-r--r--docs/html-intl/intl/pt-br/training/material/drawables.jd2
-rw-r--r--docs/html-intl/intl/ru/about/versions/android-5.0.jd2
-rw-r--r--docs/html-intl/intl/ru/design/get-started/principles.jd4
-rw-r--r--docs/html-intl/intl/ru/design/material/index.jd4
-rw-r--r--docs/html-intl/intl/ru/design/patterns/navigation.jd20
-rw-r--r--docs/html-intl/intl/ru/design/patterns/notifications.jd28
-rw-r--r--docs/html-intl/intl/ru/distribute/googleplay/about.jd2
-rw-r--r--docs/html-intl/intl/ru/distribute/googleplay/auto.jd4
-rw-r--r--docs/html-intl/intl/ru/distribute/googleplay/developer-console.jd8
-rw-r--r--docs/html-intl/intl/ru/distribute/googleplay/families/faq.jd6
-rw-r--r--docs/html-intl/intl/ru/distribute/googleplay/families/start.jd2
-rw-r--r--docs/html-intl/intl/ru/distribute/googleplay/quality/core.jd18
-rw-r--r--docs/html-intl/intl/ru/distribute/googleplay/quality/tablets.jd20
-rw-r--r--docs/html-intl/intl/ru/distribute/googleplay/tv.jd12
-rw-r--r--docs/html-intl/intl/ru/distribute/googleplay/wear.jd2
-rw-r--r--docs/html-intl/intl/ru/distribute/tools/launch-checklist.jd4
-rw-r--r--docs/html-intl/intl/ru/distribute/tools/localization-checklist.jd2
-rw-r--r--docs/html-intl/intl/ru/google/play/filters.jd18
-rw-r--r--docs/html-intl/intl/ru/guide/components/activities.jd22
-rw-r--r--docs/html-intl/intl/ru/guide/components/bound-services.jd14
-rw-r--r--docs/html-intl/intl/ru/guide/components/fragments.jd32
-rw-r--r--docs/html-intl/intl/ru/guide/components/fundamentals.jd22
-rw-r--r--docs/html-intl/intl/ru/guide/components/index.jd10
-rw-r--r--docs/html-intl/intl/ru/guide/components/loaders.jd30
-rw-r--r--docs/html-intl/intl/ru/guide/components/processes-and-threads.jd8
-rw-r--r--docs/html-intl/intl/ru/guide/components/services.jd4
-rw-r--r--docs/html-intl/intl/ru/guide/components/tasks-and-back-stack.jd14
-rw-r--r--docs/html-intl/intl/ru/guide/index.jd2
-rw-r--r--docs/html-intl/intl/ru/guide/topics/manifest/manifest-intro.jd340
-rw-r--r--docs/html-intl/intl/ru/guide/topics/providers/calendar-provider.jd210
-rw-r--r--docs/html-intl/intl/ru/guide/topics/providers/contacts-provider.jd12
-rw-r--r--docs/html-intl/intl/ru/guide/topics/providers/content-provider-basics.jd4
-rw-r--r--docs/html-intl/intl/ru/guide/topics/providers/content-provider-creating.jd10
-rw-r--r--docs/html-intl/intl/ru/guide/topics/providers/document-provider.jd4
-rw-r--r--docs/html-intl/intl/ru/guide/topics/resources/accessing-resources.jd8
-rw-r--r--docs/html-intl/intl/ru/guide/topics/resources/providing-resources.jd6
-rw-r--r--docs/html-intl/intl/ru/guide/topics/resources/runtime-changes.jd4
-rw-r--r--docs/html-intl/intl/ru/guide/topics/ui/controls.jd2
-rw-r--r--docs/html-intl/intl/ru/guide/topics/ui/declaring-layout.jd6
-rw-r--r--docs/html-intl/intl/ru/guide/topics/ui/dialogs.jd48
-rw-r--r--docs/html-intl/intl/ru/guide/topics/ui/menus.jd38
-rw-r--r--docs/html-intl/intl/ru/guide/topics/ui/notifiers/notifications.jd30
-rw-r--r--docs/html-intl/intl/ru/guide/topics/ui/overview.jd4
-rw-r--r--docs/html-intl/intl/ru/guide/topics/ui/settings.jd48
-rw-r--r--docs/html-intl/intl/ru/guide/topics/ui/ui-events.jd30
-rw-r--r--docs/html-intl/intl/ru/preview/api-overview.jd2
-rw-r--r--docs/html-intl/intl/ru/preview/download.jd63
-rw-r--r--docs/html-intl/intl/ru/preview/features/direct-boot.jd4
-rw-r--r--docs/html-intl/intl/ru/preview/features/multi-window.jd2
-rw-r--r--docs/html-intl/intl/ru/preview/features/multilingual-support.jd2
-rw-r--r--docs/html-intl/intl/ru/preview/features/notification-updates.jd2
-rw-r--r--docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd2
-rw-r--r--docs/html-intl/intl/ru/preview/features/security-config.jd4
-rw-r--r--docs/html-intl/intl/ru/training/basics/activity-lifecycle/index.jd10
-rw-r--r--docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd6
-rw-r--r--docs/html-intl/intl/ru/training/basics/activity-lifecycle/recreating.jd12
-rw-r--r--docs/html-intl/intl/ru/training/basics/activity-lifecycle/starting.jd20
-rw-r--r--docs/html-intl/intl/ru/training/basics/activity-lifecycle/stopping.jd16
-rw-r--r--docs/html-intl/intl/ru/training/basics/data-storage/databases.jd6
-rw-r--r--docs/html-intl/intl/ru/training/basics/data-storage/shared-preferences.jd2
-rw-r--r--docs/html-intl/intl/ru/training/basics/intents/result.jd4
-rw-r--r--docs/html-intl/intl/ru/training/material/animations.jd16
-rw-r--r--docs/html-intl/intl/ru/training/material/drawables.jd2
-rw-r--r--docs/html-intl/intl/ru/training/material/get-started.jd2
-rw-r--r--docs/html-intl/intl/ru/training/material/index.jd6
-rw-r--r--docs/html-intl/intl/ru/training/material/lists-cards.jd4
-rw-r--r--docs/html-intl/intl/ru/training/material/shadows-clipping.jd8
-rw-r--r--docs/html-intl/intl/ru/training/material/theme.jd6
-rw-r--r--docs/html-intl/intl/ru/training/monitoring-device-state/battery-monitoring.jd22
-rw-r--r--docs/html-intl/intl/ru/training/monitoring-device-state/connectivity-monitoring.jd14
-rw-r--r--docs/html-intl/intl/ru/training/monitoring-device-state/docking-monitoring.jd16
-rw-r--r--docs/html-intl/intl/ru/training/monitoring-device-state/index.jd16
-rw-r--r--docs/html-intl/intl/ru/training/monitoring-device-state/manifest-receivers.jd10
-rw-r--r--docs/html-intl/intl/ru/training/multiscreen/adaptui.jd28
-rw-r--r--docs/html-intl/intl/ru/training/multiscreen/index.jd56
-rw-r--r--docs/html-intl/intl/ru/training/multiscreen/screendensities.jd28
-rw-r--r--docs/html-intl/intl/ru/training/multiscreen/screensizes.jd42
-rw-r--r--docs/html-intl/intl/vi/design/patterns/navigation.jd2
-rw-r--r--docs/html-intl/intl/vi/guide/components/activities.jd14
-rw-r--r--docs/html-intl/intl/vi/guide/components/bound-services.jd4
-rw-r--r--docs/html-intl/intl/vi/guide/components/fragments.jd18
-rw-r--r--docs/html-intl/intl/vi/guide/components/fundamentals.jd8
-rw-r--r--docs/html-intl/intl/vi/guide/components/index.jd10
-rw-r--r--docs/html-intl/intl/vi/guide/components/loaders.jd34
-rw-r--r--docs/html-intl/intl/vi/guide/components/processes-and-threads.jd6
-rw-r--r--docs/html-intl/intl/vi/guide/components/recents.jd4
-rw-r--r--docs/html-intl/intl/vi/guide/components/services.jd4
-rw-r--r--docs/html-intl/intl/vi/guide/components/tasks-and-back-stack.jd8
-rw-r--r--docs/html-intl/intl/vi/guide/topics/manifest/manifest-intro.jd334
-rw-r--r--docs/html-intl/intl/vi/guide/topics/providers/calendar-provider.jd298
-rw-r--r--docs/html-intl/intl/vi/guide/topics/providers/contacts-provider.jd12
-rw-r--r--docs/html-intl/intl/vi/guide/topics/providers/content-provider-basics.jd52
-rw-r--r--docs/html-intl/intl/vi/guide/topics/providers/content-provider-creating.jd8
-rw-r--r--docs/html-intl/intl/vi/guide/topics/providers/document-provider.jd4
-rw-r--r--docs/html-intl/intl/vi/guide/topics/resources/accessing-resources.jd4
-rw-r--r--docs/html-intl/intl/vi/guide/topics/resources/providing-resources.jd14
-rw-r--r--docs/html-intl/intl/vi/guide/topics/resources/runtime-changes.jd10
-rw-r--r--docs/html-intl/intl/vi/guide/topics/ui/controls.jd2
-rw-r--r--docs/html-intl/intl/vi/guide/topics/ui/declaring-layout.jd4
-rw-r--r--docs/html-intl/intl/vi/guide/topics/ui/dialogs.jd40
-rw-r--r--docs/html-intl/intl/vi/guide/topics/ui/menus.jd24
-rw-r--r--docs/html-intl/intl/vi/guide/topics/ui/notifiers/notifications.jd8
-rw-r--r--docs/html-intl/intl/vi/guide/topics/ui/overview.jd4
-rw-r--r--docs/html-intl/intl/vi/guide/topics/ui/settings.jd48
-rw-r--r--docs/html-intl/intl/vi/guide/topics/ui/ui-events.jd58
-rw-r--r--docs/html-intl/intl/vi/preview/api-overview.jd2
-rw-r--r--docs/html-intl/intl/vi/preview/behavior-changes.jd6
-rw-r--r--docs/html-intl/intl/vi/preview/download.jd73
-rw-r--r--docs/html-intl/intl/vi/preview/features/background-optimization.jd12
-rw-r--r--docs/html-intl/intl/vi/preview/features/direct-boot.jd4
-rw-r--r--docs/html-intl/intl/vi/preview/features/icu4j-framework.jd6
-rw-r--r--docs/html-intl/intl/vi/preview/features/multi-window.jd16
-rw-r--r--docs/html-intl/intl/vi/preview/features/notification-updates.jd6
-rw-r--r--docs/html-intl/intl/vi/preview/features/picture-in-picture.jd4
-rw-r--r--docs/html-intl/intl/vi/preview/overview.jd4
-rw-r--r--docs/html-intl/intl/vi/training/material/animations.jd6
-rw-r--r--docs/html-intl/intl/vi/training/material/compatibility.jd2
-rw-r--r--docs/html-intl/intl/vi/training/material/drawables.jd2
-rw-r--r--docs/html-intl/intl/vi/training/material/get-started.jd4
-rw-r--r--docs/html-intl/intl/vi/training/material/index.jd2
-rw-r--r--docs/html-intl/intl/vi/training/material/lists-cards.jd2
-rw-r--r--docs/html-intl/intl/vi/training/material/shadows-clipping.jd6
-rw-r--r--docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/design/style/writing.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/googleplay/about.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/googleplay/developer-console.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/googleplay/families/faq.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/googleplay/families/start.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/googleplay/guide.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/googleplay/quality/auto.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/googleplay/quality/core.jd10
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tablets.jd30
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tv.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/googleplay/quality/wear.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/googleplay/tv.jd6
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/googleplay/wear.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/resources.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/tools/launch-checklist.jd16
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/tools/localization-checklist.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/distribute/tools/promote/linking.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/google/play/billing/api.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/google/play/billing/billing_admin.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/google/play/filters.jd6
-rw-r--r--docs/html-intl/intl/zh-cn/guide/components/activities.jd6
-rw-r--r--docs/html-intl/intl/zh-cn/guide/components/bound-services.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/guide/components/fragments.jd10
-rw-r--r--docs/html-intl/intl/zh-cn/guide/components/fundamentals.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/guide/components/index.jd6
-rw-r--r--docs/html-intl/intl/zh-cn/guide/components/loaders.jd22
-rw-r--r--docs/html-intl/intl/zh-cn/guide/components/processes-and-threads.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/guide/components/recents.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/guide/components/services.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/guide/components/tasks-and-back-stack.jd12
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/manifest/manifest-intro.jd26
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/providers/calendar-provider.jd212
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-basics.jd8
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-creating.jd6
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/providers/document-provider.jd12
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/resources/providing-resources.jd8
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/ui/controls.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/ui/dialogs.jd30
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/ui/menus.jd12
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/ui/notifiers/notifications.jd6
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/ui/overview.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/ui/settings.jd34
-rw-r--r--docs/html-intl/intl/zh-cn/guide/topics/ui/ui-events.jd8
-rw-r--r--docs/html-intl/intl/zh-cn/preview/api-overview.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/preview/download-ota.jd56
-rw-r--r--docs/html-intl/intl/zh-cn/preview/download.jd63
-rw-r--r--docs/html-intl/intl/zh-cn/preview/features/afw.jd6
-rw-r--r--docs/html-intl/intl/zh-cn/preview/features/background-optimization.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/preview/features/security-config.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/preview/overview.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/preview/setup-sdk.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/preview/support.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/index.jd4
-rw-r--r--docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/pausing.jd6
-rw-r--r--docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/recreating.jd12
-rw-r--r--docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/starting.jd20
-rw-r--r--docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/stopping.jd14
-rw-r--r--docs/html-intl/intl/zh-cn/training/basics/data-storage/databases.jd2
-rw-r--r--docs/html-intl/intl/zh-cn/training/basics/fragments/fragment-ui.jd8
-rw-r--r--docs/html-intl/intl/zh-cn/training/monitoring-device-state/battery-monitoring.jd22
-rw-r--r--docs/html-intl/intl/zh-cn/training/monitoring-device-state/connectivity-monitoring.jd14
-rw-r--r--docs/html-intl/intl/zh-cn/training/monitoring-device-state/docking-monitoring.jd16
-rw-r--r--docs/html-intl/intl/zh-cn/training/monitoring-device-state/index.jd16
-rw-r--r--docs/html-intl/intl/zh-cn/training/monitoring-device-state/manifest-receivers.jd10
-rw-r--r--docs/html-intl/intl/zh-cn/training/multiscreen/adaptui.jd28
-rw-r--r--docs/html-intl/intl/zh-cn/training/multiscreen/index.jd56
-rw-r--r--docs/html-intl/intl/zh-cn/training/multiscreen/screendensities.jd28
-rw-r--r--docs/html-intl/intl/zh-cn/training/multiscreen/screensizes.jd44
-rw-r--r--docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/about.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/auto.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/developer-console.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/families/about.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/families/faq.jd4
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/families/start.jd4
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/guide.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/quality/auto.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/quality/core.jd8
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/quality/tablets.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/quality/wear.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/start.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/tv.jd6
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/googleplay/wear.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/tools/launch-checklist.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/distribute/tools/localization-checklist.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/google/play/filters.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/guide/components/bound-services.jd6
-rw-r--r--docs/html-intl/intl/zh-tw/guide/components/fragments.jd18
-rw-r--r--docs/html-intl/intl/zh-tw/guide/components/fundamentals.jd4
-rw-r--r--docs/html-intl/intl/zh-tw/guide/components/index.jd6
-rw-r--r--docs/html-intl/intl/zh-tw/guide/components/loaders.jd20
-rw-r--r--docs/html-intl/intl/zh-tw/guide/components/processes-and-threads.jd6
-rw-r--r--docs/html-intl/intl/zh-tw/guide/components/recents.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/guide/components/tasks-and-back-stack.jd14
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/manifest/manifest-intro.jd32
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/providers/calendar-provider.jd224
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/providers/contacts-provider.jd10
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-basics.jd46
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-creating.jd54
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/providers/document-provider.jd10
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/resources/accessing-resources.jd6
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/resources/providing-resources.jd8
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/resources/runtime-changes.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/ui/controls.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/ui/declaring-layout.jd4
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/ui/dialogs.jd26
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/ui/menus.jd16
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/ui/notifiers/notifications.jd18
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/ui/overview.jd4
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/ui/settings.jd32
-rw-r--r--docs/html-intl/intl/zh-tw/guide/topics/ui/ui-events.jd10
-rw-r--r--docs/html-intl/intl/zh-tw/preview/api-overview.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/preview/download.jd63
-rw-r--r--docs/html-intl/intl/zh-tw/preview/features/background-optimization.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/preview/features/multi-window.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd2
-rw-r--r--docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/index.jd4
-rw-r--r--docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/pausing.jd6
-rw-r--r--docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/recreating.jd12
-rw-r--r--docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/starting.jd16
-rw-r--r--docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/stopping.jd14
-rw-r--r--docs/html/_redirects.yaml50
-rw-r--r--docs/html/about/android.jd8
-rw-r--r--docs/html/about/index.jd8
-rw-r--r--docs/html/about/versions/android-1.1.jd10
-rw-r--r--docs/html/about/versions/android-1.5-highlights.jd8
-rw-r--r--docs/html/about/versions/android-1.5.jd16
-rw-r--r--docs/html/about/versions/android-1.6-highlights.jd74
-rw-r--r--docs/html/about/versions/android-2.0-highlights.jd16
-rw-r--r--docs/html/about/versions/android-2.0.1.jd14
-rw-r--r--docs/html/about/versions/android-2.0.jd30
-rw-r--r--docs/html/about/versions/android-2.1.jd4
-rw-r--r--docs/html/about/versions/android-2.3.3.jd12
-rw-r--r--docs/html/about/versions/android-2.3.4.jd2
-rw-r--r--docs/html/about/versions/android-2.3.jd4
-rw-r--r--docs/html/about/versions/android-3.0-highlights.jd4
-rw-r--r--docs/html/about/versions/android-3.0.jd44
-rw-r--r--docs/html/about/versions/android-3.1-highlights.jd4
-rw-r--r--docs/html/about/versions/android-3.1.jd6
-rw-r--r--docs/html/about/versions/android-3.2.jd6
-rw-r--r--docs/html/about/versions/android-4.0.3.jd14
-rw-r--r--docs/html/about/versions/android-4.0.jd6
-rw-r--r--docs/html/about/versions/android-4.1.jd76
-rwxr-xr-xdocs/html/about/versions/android-4.2.jd16
-rw-r--r--docs/html/about/versions/android-4.4.jd2
-rw-r--r--docs/html/about/versions/jelly-bean.jd20
-rw-r--r--docs/html/about/versions/kitkat.jd4
-rw-r--r--docs/html/auto/images/logos/auto/borgward.pngbin0 -> 20299 bytes
-rw-r--r--docs/html/auto/images/logos/auto/lada.pngbin0 -> 5108 bytes
-rw-r--r--docs/html/auto/index.jd284
-rw-r--r--docs/html/design/index.jd2
-rw-r--r--docs/html/design/patterns/help.jd2
-rw-r--r--docs/html/distribute/analyze/build-better-apps.jd2
-rw-r--r--docs/html/distribute/analyze/google-services.jd2
-rw-r--r--docs/html/distribute/analyze/improve-roi.jd2
-rw-r--r--docs/html/distribute/analyze/measure.jd2
-rw-r--r--docs/html/distribute/analyze/start.jd4
-rw-r--r--docs/html/distribute/analyze/understand-user-value.jd4
-rw-r--r--docs/html/distribute/engage/ads.jd2
-rw-r--r--docs/html/distribute/engage/analytics.jd2
-rw-r--r--docs/html/distribute/engage/deep-linking.jd2
-rw-r--r--docs/html/distribute/engage/easy-signin.jd100
-rw-r--r--docs/html/distribute/engage/gcm.jd2
-rw-r--r--docs/html/distribute/engage/intents.jd2
-rw-r--r--docs/html/distribute/engage/notifications.jd2
-rw-r--r--docs/html/distribute/engage/video.jd2
-rw-r--r--docs/html/distribute/engage/widgets.jd2
-rw-r--r--docs/html/distribute/essentials/optimizing-your-app.jd2
-rw-r--r--docs/html/distribute/essentials/quality/billions.jd566
-rw-r--r--docs/html/distribute/essentials/quality/core.jd6
-rw-r--r--docs/html/distribute/essentials/quality/tablets.jd6
-rw-r--r--docs/html/distribute/googleplay/cast.jd2
-rw-r--r--docs/html/distribute/googleplay/families/faq.jd8
-rw-r--r--docs/html/distribute/googleplay/families/start.jd2
-rw-r--r--docs/html/distribute/googleplay/tv.jd4
-rw-r--r--docs/html/distribute/tools/promote/device-art.jd2
-rw-r--r--docs/html/distribute/tools/promote/linking.jd2
-rw-r--r--docs/html/google/backup/signup.jd12
-rw-r--r--docs/html/google/index.jd2
-rw-r--r--docs/html/google/play/billing/api.jd2
-rw-r--r--docs/html/google/play/billing/billing_admin.jd11
-rw-r--r--docs/html/google/play/billing/billing_testing.jd10
-rw-r--r--docs/html/google/play/licensing/adding-licensing.jd22
-rw-r--r--docs/html/google/play/licensing/licensing-reference.jd4
-rwxr-xr-xdocs/html/google/play/licensing/overview.jd16
-rw-r--r--docs/html/google/play/publishing/multiple-apks.jd4
-rw-r--r--docs/html/guide/appendix/app-intents.jd14
-rw-r--r--docs/html/guide/appendix/g-app-intents.jd2
-rwxr-xr-xdocs/html/guide/appendix/glossary.jd50
-rw-r--r--docs/html/guide/components/activities.jd2
-rw-r--r--docs/html/guide/components/fragments.jd14
-rw-r--r--docs/html/guide/components/index.jd10
-rw-r--r--docs/html/guide/components/loaders.jd30
-rw-r--r--docs/html/guide/components/processes-and-threads.jd2
-rw-r--r--docs/html/guide/practices/index.jd14
-rw-r--r--docs/html/guide/practices/optimizing-for-3.0.jd10
-rw-r--r--docs/html/guide/practices/screen-compat-mode.jd6
-rw-r--r--docs/html/guide/practices/screens_support.jd6
-rw-r--r--docs/html/guide/practices/tablets-and-handsets.jd2
-rw-r--r--docs/html/guide/practices/ui_guidelines/activity_task_design.jd24
-rw-r--r--docs/html/guide/practices/ui_guidelines/icon_design.jd14
-rw-r--r--docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd2
-rw-r--r--docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd2
-rw-r--r--docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd2
-rw-r--r--docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd2
-rw-r--r--docs/html/guide/practices/ui_guidelines/icon_design_list.jd2
-rw-r--r--docs/html/guide/practices/ui_guidelines/icon_design_menu.jd6
-rw-r--r--docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd2
-rw-r--r--docs/html/guide/practices/ui_guidelines/icon_design_tab.jd6
-rw-r--r--docs/html/guide/practices/ui_guidelines/index.jd2
-rw-r--r--docs/html/guide/practices/ui_guidelines/menu_design.jd90
-rw-r--r--docs/html/guide/practices/ui_guidelines/widget_design.jd2
-rw-r--r--docs/html/guide/topics/admin/device-admin.jd102
-rw-r--r--docs/html/guide/topics/appwidgets/host.jd126
-rw-r--r--docs/html/guide/topics/appwidgets/index.jd240
-rw-r--r--docs/html/guide/topics/connectivity/bluetooth-le.jd2
-rw-r--r--docs/html/guide/topics/connectivity/bluetooth.jd638
-rw-r--r--docs/html/guide/topics/connectivity/nfc/index.jd8
-rwxr-xr-xdocs/html/guide/topics/connectivity/sip.jd46
-rw-r--r--docs/html/guide/topics/connectivity/usb/accessory.jd6
-rw-r--r--docs/html/guide/topics/connectivity/usb/host.jd8
-rw-r--r--docs/html/guide/topics/connectivity/wifip2p.jd6
-rw-r--r--docs/html/guide/topics/data/index.jd6
-rw-r--r--docs/html/guide/topics/graphics/index.jd6
-rw-r--r--docs/html/guide/topics/graphics/overview.jd2
-rwxr-xr-xdocs/html/guide/topics/graphics/prop-animation.jd6
-rwxr-xr-xdocs/html/guide/topics/location/strategies.jd6
-rw-r--r--docs/html/guide/topics/manifest/action-element.jd12
-rw-r--r--docs/html/guide/topics/manifest/activity-alias-element.jd70
-rw-r--r--docs/html/guide/topics/manifest/category-element.jd12
-rw-r--r--docs/html/guide/topics/manifest/grant-uri-permission-element.jd54
-rw-r--r--docs/html/guide/topics/manifest/instrumentation-element.jd20
-rw-r--r--docs/html/guide/topics/manifest/intent-filter-element.jd50
-rw-r--r--docs/html/guide/topics/manifest/meta-data-element.jd32
-rw-r--r--docs/html/guide/topics/manifest/path-permission-element.jd48
-rw-r--r--docs/html/guide/topics/manifest/permission-group-element.jd18
-rw-r--r--docs/html/guide/topics/manifest/permission-tree-element.jd28
-rw-r--r--docs/html/guide/topics/manifest/provider-element.jd208
-rw-r--r--docs/html/guide/topics/manifest/receiver-element.jd124
-rw-r--r--docs/html/guide/topics/manifest/service-element.jd128
-rw-r--r--docs/html/guide/topics/manifest/supports-gl-texture-element.jd8
-rw-r--r--docs/html/guide/topics/manifest/supports-screens-element.jd14
-rwxr-xr-xdocs/html/guide/topics/manifest/uses-feature-element.jd28
-rw-r--r--docs/html/guide/topics/manifest/uses-library-element.jd6
-rw-r--r--docs/html/guide/topics/manifest/uses-permission-element.jd20
-rw-r--r--docs/html/guide/topics/media/index.jd2
-rw-r--r--docs/html/guide/topics/media/jet/jetcreator_manual.jd30
-rw-r--r--docs/html/guide/topics/media/jetplayer.jd2
-rw-r--r--docs/html/guide/topics/processes/process-lifecycle.jd2
-rw-r--r--docs/html/guide/topics/providers/calendar-provider.jd302
-rw-r--r--docs/html/guide/topics/providers/content-provider-basics.jd50
-rwxr-xr-xdocs/html/guide/topics/providers/content-provider-creating.jd4
-rwxr-xr-xdocs/html/guide/topics/renderscript/compute.jd2
-rw-r--r--docs/html/guide/topics/resources/accessing-resources.jd4
-rw-r--r--docs/html/guide/topics/resources/animation-resource.jd42
-rw-r--r--docs/html/guide/topics/resources/more-resources.jd4
-rw-r--r--docs/html/guide/topics/resources/providing-resources.jd8
-rw-r--r--docs/html/guide/topics/resources/runtime-changes.jd10
-rw-r--r--docs/html/guide/topics/sensors/index.jd8
-rw-r--r--docs/html/guide/topics/text/index.jd2
-rw-r--r--docs/html/guide/topics/text/spell-checker-framework.jd8
-rw-r--r--docs/html/guide/topics/ui/accessibility/apps.jd2
-rw-r--r--docs/html/guide/topics/ui/binding.jd8
-rw-r--r--docs/html/guide/topics/ui/controls.jd2
-rw-r--r--docs/html/guide/topics/ui/controls/button.jd2
-rw-r--r--docs/html/guide/topics/ui/controls/checkbox.jd2
-rw-r--r--docs/html/guide/topics/ui/controls/pickers.jd16
-rw-r--r--docs/html/guide/topics/ui/controls/radiobutton.jd2
-rw-r--r--docs/html/guide/topics/ui/controls/spinner.jd6
-rw-r--r--docs/html/guide/topics/ui/controls/text.jd8
-rwxr-xr-xdocs/html/guide/topics/ui/custom-components.jd126
-rw-r--r--docs/html/guide/topics/ui/dialogs.jd40
-rw-r--r--docs/html/guide/topics/ui/drag-drop.jd2
-rw-r--r--docs/html/guide/topics/ui/how-android-draws.jd96
-rw-r--r--docs/html/guide/topics/ui/index.jd2
-rw-r--r--docs/html/guide/topics/ui/layout/grid.jd4
-rw-r--r--docs/html/guide/topics/ui/layout/linear.jd2
-rw-r--r--docs/html/guide/topics/ui/layout/listview.jd6
-rw-r--r--docs/html/guide/topics/ui/layout/relative.jd2
-rw-r--r--docs/html/guide/topics/ui/menus.jd20
-rw-r--r--docs/html/guide/topics/ui/notifiers/toasts.jd34
-rw-r--r--docs/html/guide/topics/ui/overview.jd4
-rw-r--r--docs/html/guide/topics/ui/settings.jd34
-rw-r--r--docs/html/guide/topics/ui/themes.jd14
-rw-r--r--docs/html/guide/topics/ui/ui-events.jd60
-rwxr-xr-xdocs/html/guide/webapps/debugging.jd2
-rw-r--r--docs/html/guide/webapps/targeting.jd2
-rw-r--r--docs/html/images/distribute/google-sign-in-banner.pngbin0 -> 15197 bytes
-rw-r--r--docs/html/jd_extras_en.js15
-rw-r--r--docs/html/license.jd16
-rw-r--r--docs/html/preview/api-overview.jd84
-rw-r--r--docs/html/preview/behavior-changes.jd34
-rw-r--r--docs/html/preview/download-ota.jd48
-rw-r--r--docs/html/preview/download.jd96
-rw-r--r--docs/html/preview/features/notification-updates.jd3
-rw-r--r--docs/html/preview/overview.jd8
-rw-r--r--docs/html/preview/support.jd203
-rw-r--r--docs/html/samples/index.jd4
-rw-r--r--docs/html/sdk/OLD_RELEASENOTES.jd16
-rw-r--r--docs/html/sdk/RELEASENOTES.jd102
-rw-r--r--docs/html/sdk/older_releases.jd14
-rw-r--r--docs/html/topic/libraries/data-binding/index.jd4
-rw-r--r--docs/html/topic/libraries/support-library/revisions.jd124
-rw-r--r--docs/html/topic/performance/optimizing-view-hierarchies.jd2
-rw-r--r--docs/html/topic/performance/scheduling.jd2
-rw-r--r--docs/html/training/accessibility/accessible-app.jd4
-rwxr-xr-xdocs/html/training/accessibility/service.jd2
-rw-r--r--docs/html/training/animation/screen-slide.jd2
-rw-r--r--docs/html/training/animation/zoom.jd6
-rw-r--r--docs/html/training/app-indexing/deep-linking.jd2
-rw-r--r--docs/html/training/articles/perf-anr.jd22
-rw-r--r--docs/html/training/articles/perf-jni.jd4
-rw-r--r--docs/html/training/articles/smp.jd2
-rw-r--r--docs/html/training/articles/user-data-overview.jd2
-rw-r--r--docs/html/training/articles/user-data-permissions.jd2
-rw-r--r--docs/html/training/basics/activity-lifecycle/index.jd6
-rw-r--r--docs/html/training/basics/activity-lifecycle/pausing.jd8
-rw-r--r--docs/html/training/basics/activity-lifecycle/recreating.jd12
-rw-r--r--docs/html/training/basics/activity-lifecycle/starting.jd16
-rw-r--r--docs/html/training/basics/activity-lifecycle/stopping.jd14
-rw-r--r--docs/html/training/basics/data-storage/databases.jd6
-rw-r--r--docs/html/training/basics/fragments/communicating.jd32
-rw-r--r--docs/html/training/basics/fragments/fragment-ui.jd12
-rw-r--r--docs/html/training/basics/fragments/index.jd4
-rw-r--r--docs/html/training/basics/network-ops/connecting.jd74
-rw-r--r--docs/html/training/basics/network-ops/index.jd10
-rw-r--r--docs/html/training/basics/network-ops/managing.jd172
-rw-r--r--docs/html/training/basics/network-ops/xml.jd120
-rw-r--r--docs/html/training/basics/supporting-devices/index.jd4
-rw-r--r--docs/html/training/basics/supporting-devices/languages.jd6
-rw-r--r--docs/html/training/basics/supporting-devices/platforms.jd48
-rw-r--r--docs/html/training/basics/supporting-devices/screens.jd32
-rw-r--r--docs/html/training/building-userinfo.jd4
-rw-r--r--docs/html/training/camera/cameradirect.jd22
-rw-r--r--docs/html/training/contacts-provider/display-contact-badge.jd2
-rw-r--r--docs/html/training/contacts-provider/index.jd2
-rwxr-xr-xdocs/html/training/custom-views/index.jd2
-rw-r--r--docs/html/training/displaying-bitmaps/cache-bitmap.jd2
-rw-r--r--docs/html/training/displaying-bitmaps/index.jd2
-rw-r--r--docs/html/training/displaying-bitmaps/manage-memory.jd18
-rw-r--r--docs/html/training/efficient-downloads/connectivity_patterns.jd18
-rw-r--r--docs/html/training/efficient-downloads/efficient-network-access.jd16
-rw-r--r--docs/html/training/efficient-downloads/index.jd16
-rw-r--r--docs/html/training/efficient-downloads/regular_updates.jd18
-rw-r--r--docs/html/training/gestures/detector.jd140
-rw-r--r--docs/html/training/gestures/index.jd4
-rw-r--r--docs/html/training/gestures/movement.jd28
-rw-r--r--docs/html/training/gestures/multi.jd68
-rw-r--r--docs/html/training/gestures/scale.jd156
-rw-r--r--docs/html/training/gestures/scroll.jd162
-rw-r--r--docs/html/training/gestures/viewgroup.jd116
-rw-r--r--docs/html/training/id-auth/authenticate.jd2
-rw-r--r--docs/html/training/id-auth/custom_auth.jd2
-rw-r--r--docs/html/training/id-auth/index.jd2
-rw-r--r--docs/html/training/improving-layouts/optimizing-layout.jd4
-rw-r--r--docs/html/training/in-app-billing/list-iab-products.jd12
-rw-r--r--docs/html/training/in-app-billing/purchase-iab-products.jd14
-rw-r--r--docs/html/training/in-app-billing/test-iab-app.jd2
-rw-r--r--docs/html/training/keyboard-input/index.jd10
-rw-r--r--docs/html/training/keyboard-input/style.jd2
-rw-r--r--docs/html/training/load-data-background/handle-results.jd2
-rw-r--r--docs/html/training/location/display-address.jd2
-rw-r--r--docs/html/training/location/geofencing.jd2
-rw-r--r--docs/html/training/managing-audio/audio-output.jd18
-rw-r--r--docs/html/training/managing-audio/index.jd32
-rw-r--r--docs/html/training/managing-audio/volume-playback.jd24
-rw-r--r--docs/html/training/monitoring-device-state/connectivity-monitoring.jd16
-rw-r--r--docs/html/training/monitoring-device-state/manifest-receivers.jd12
-rw-r--r--docs/html/training/multiple-threads/create-threadpool.jd2
-rw-r--r--docs/html/training/multiscreen/adaptui.jd30
-rw-r--r--docs/html/training/multiscreen/index.jd54
-rwxr-xr-xdocs/html/training/multiscreen/screensizes.jd52
-rw-r--r--docs/html/training/notify-user/build-notification.jd22
-rw-r--r--docs/html/training/notify-user/display-progress.jd14
-rw-r--r--docs/html/training/notify-user/expanded.jd18
-rw-r--r--docs/html/training/notify-user/index.jd10
-rw-r--r--docs/html/training/notify-user/navigation.jd6
-rw-r--r--docs/html/training/run-background-service/report-status.jd6
-rw-r--r--docs/html/training/sign-in/index.jd10
-rw-r--r--docs/html/wear/preview/features/ime.jd54
-rw-r--r--docs/html/wear/preview/features/notifications.jd4
-rw-r--r--docs/html/work/cosu.jd16
-rw-r--r--docs/html/work/device-management-policy.jd2
-rw-r--r--graphics/java/android/graphics/drawable/VectorDrawable.java18
-rw-r--r--keystore/java/android/security/keystore/AndroidKeyStoreProvider.java2
-rw-r--r--libs/hwui/renderthread/CanvasContext.cpp1
-rw-r--r--media/java/android/media/ImageReader.java8
-rw-r--r--packages/EasterEgg/src/com/android/egg/neko/NekoLand.java18
-rw-r--r--packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java3
-rw-r--r--packages/Keyguard/src/com/android/keyguard/NumPadKey.java12
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/HelpUtils.java7
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/TetherUtil.java7
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java5
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java7
-rw-r--r--packages/Shell/AndroidManifest.xml2
-rw-r--r--packages/Shell/res/layout/confirm_repeat.xml8
-rw-r--r--packages/Shell/res/values/strings.xml4
-rw-r--r--packages/Shell/src/com/android/shell/BugreportProgressService.java88
-rw-r--r--packages/SystemUI/res/drawable/recents_stack_action_background.xml25
-rw-r--r--packages/SystemUI/res/layout/recents_stack_action_button.xml2
-rw-r--r--packages/SystemUI/res/values-af/config.xml26
-rw-r--r--packages/SystemUI/res/values-af/strings.xml4
-rw-r--r--packages/SystemUI/res/values-am/config.xml26
-rw-r--r--packages/SystemUI/res/values-am/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ar/config.xml26
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml4
-rw-r--r--packages/SystemUI/res/values-az-rAZ/config.xml26
-rw-r--r--packages/SystemUI/res/values-az-rAZ/strings.xml8
-rw-r--r--packages/SystemUI/res/values-bg/config.xml26
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml8
-rw-r--r--packages/SystemUI/res/values-bn-rBD/config.xml26
-rw-r--r--packages/SystemUI/res/values-bn-rBD/strings.xml8
-rw-r--r--packages/SystemUI/res/values-ca/config.xml26
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml8
-rw-r--r--packages/SystemUI/res/values-cs/config.xml26
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml8
-rw-r--r--packages/SystemUI/res/values-da/config.xml26
-rw-r--r--packages/SystemUI/res/values-da/strings.xml8
-rw-r--r--packages/SystemUI/res/values-de/config.xml26
-rw-r--r--packages/SystemUI/res/values-de/strings.xml8
-rw-r--r--packages/SystemUI/res/values-el/config.xml26
-rw-r--r--packages/SystemUI/res/values-el/strings.xml8
-rw-r--r--packages/SystemUI/res/values-en-rAU/config.xml26
-rw-r--r--packages/SystemUI/res/values-en-rAU/strings.xml4
-rw-r--r--packages/SystemUI/res/values-en-rGB/config.xml26
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml4
-rw-r--r--packages/SystemUI/res/values-en-rIN/config.xml26
-rw-r--r--packages/SystemUI/res/values-en-rIN/strings.xml4
-rw-r--r--packages/SystemUI/res/values-es-rUS/config.xml26
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml8
-rw-r--r--packages/SystemUI/res/values-es/config.xml26
-rw-r--r--packages/SystemUI/res/values-es/strings.xml8
-rw-r--r--packages/SystemUI/res/values-et-rEE/config.xml26
-rw-r--r--packages/SystemUI/res/values-et-rEE/strings.xml8
-rw-r--r--packages/SystemUI/res/values-eu-rES/config.xml26
-rw-r--r--packages/SystemUI/res/values-eu-rES/strings.xml8
-rw-r--r--packages/SystemUI/res/values-fa/config.xml26
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml4
-rw-r--r--packages/SystemUI/res/values-fi/config.xml26
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml4
-rw-r--r--packages/SystemUI/res/values-fr-rCA/config.xml26
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml8
-rw-r--r--packages/SystemUI/res/values-fr/config.xml26
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml8
-rw-r--r--packages/SystemUI/res/values-gl-rES/config.xml26
-rw-r--r--packages/SystemUI/res/values-gl-rES/strings.xml8
-rw-r--r--packages/SystemUI/res/values-gu-rIN/config.xml26
-rw-r--r--packages/SystemUI/res/values-gu-rIN/strings.xml8
-rw-r--r--packages/SystemUI/res/values-hi/config.xml26
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml8
-rw-r--r--packages/SystemUI/res/values-hr/config.xml26
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml8
-rw-r--r--packages/SystemUI/res/values-hu/config.xml26
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml8
-rw-r--r--packages/SystemUI/res/values-hy-rAM/config.xml26
-rw-r--r--packages/SystemUI/res/values-hy-rAM/strings.xml8
-rw-r--r--packages/SystemUI/res/values-in/config.xml26
-rw-r--r--packages/SystemUI/res/values-in/strings.xml4
-rw-r--r--packages/SystemUI/res/values-is-rIS/config.xml26
-rw-r--r--packages/SystemUI/res/values-is-rIS/strings.xml8
-rw-r--r--packages/SystemUI/res/values-it/config.xml26
-rw-r--r--packages/SystemUI/res/values-it/strings.xml4
-rw-r--r--packages/SystemUI/res/values-iw/config.xml26
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ja/config.xml26
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml8
-rw-r--r--packages/SystemUI/res/values-ka-rGE/config.xml26
-rw-r--r--packages/SystemUI/res/values-ka-rGE/strings.xml8
-rw-r--r--packages/SystemUI/res/values-kk-rKZ/config.xml26
-rw-r--r--packages/SystemUI/res/values-kk-rKZ/strings.xml8
-rw-r--r--packages/SystemUI/res/values-km-rKH/config.xml26
-rw-r--r--packages/SystemUI/res/values-km-rKH/strings.xml8
-rw-r--r--packages/SystemUI/res/values-kn-rIN/config.xml26
-rw-r--r--packages/SystemUI/res/values-kn-rIN/strings.xml8
-rw-r--r--packages/SystemUI/res/values-ko/config.xml26
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml8
-rw-r--r--packages/SystemUI/res/values-ky-rKG/config.xml26
-rw-r--r--packages/SystemUI/res/values-ky-rKG/strings.xml8
-rw-r--r--packages/SystemUI/res/values-lo-rLA/config.xml26
-rw-r--r--packages/SystemUI/res/values-lo-rLA/strings.xml4
-rw-r--r--packages/SystemUI/res/values-lt/config.xml26
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml8
-rw-r--r--packages/SystemUI/res/values-lv/config.xml26
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml8
-rw-r--r--packages/SystemUI/res/values-mk-rMK/config.xml26
-rw-r--r--packages/SystemUI/res/values-mk-rMK/strings.xml8
-rw-r--r--packages/SystemUI/res/values-ml-rIN/config.xml26
-rw-r--r--packages/SystemUI/res/values-ml-rIN/strings.xml8
-rw-r--r--packages/SystemUI/res/values-mn-rMN/config.xml26
-rw-r--r--packages/SystemUI/res/values-mn-rMN/strings.xml8
-rw-r--r--packages/SystemUI/res/values-mr-rIN/config.xml26
-rw-r--r--packages/SystemUI/res/values-mr-rIN/strings.xml8
-rw-r--r--packages/SystemUI/res/values-ms-rMY/config.xml26
-rw-r--r--packages/SystemUI/res/values-ms-rMY/strings.xml8
-rw-r--r--packages/SystemUI/res/values-my-rMM/config.xml26
-rw-r--r--packages/SystemUI/res/values-my-rMM/strings.xml4
-rw-r--r--packages/SystemUI/res/values-nb/config.xml26
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml8
-rw-r--r--packages/SystemUI/res/values-ne-rNP/config.xml26
-rw-r--r--packages/SystemUI/res/values-ne-rNP/strings.xml4
-rw-r--r--packages/SystemUI/res/values-nl/config.xml26
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml8
-rw-r--r--packages/SystemUI/res/values-pa-rIN/config.xml26
-rw-r--r--packages/SystemUI/res/values-pa-rIN/strings.xml8
-rw-r--r--packages/SystemUI/res/values-pl/config.xml26
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml8
-rw-r--r--packages/SystemUI/res/values-pt-rBR/config.xml26
-rw-r--r--packages/SystemUI/res/values-pt-rBR/strings.xml4
-rw-r--r--packages/SystemUI/res/values-pt-rPT/config.xml26
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml4
-rw-r--r--packages/SystemUI/res/values-pt/config.xml26
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ro/config.xml26
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml8
-rw-r--r--packages/SystemUI/res/values-ru/config.xml26
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml8
-rw-r--r--packages/SystemUI/res/values-si-rLK/config.xml26
-rw-r--r--packages/SystemUI/res/values-si-rLK/strings.xml8
-rw-r--r--packages/SystemUI/res/values-sk/config.xml26
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml4
-rw-r--r--packages/SystemUI/res/values-sl/config.xml26
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml8
-rw-r--r--packages/SystemUI/res/values-sq-rAL/config.xml26
-rw-r--r--packages/SystemUI/res/values-sq-rAL/strings.xml8
-rw-r--r--packages/SystemUI/res/values-sr/config.xml26
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml8
-rw-r--r--packages/SystemUI/res/values-sv/config.xml26
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml8
-rw-r--r--packages/SystemUI/res/values-sw/config.xml26
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ta-rIN/config.xml26
-rw-r--r--packages/SystemUI/res/values-ta-rIN/strings.xml8
-rw-r--r--packages/SystemUI/res/values-te-rIN/config.xml26
-rw-r--r--packages/SystemUI/res/values-te-rIN/strings.xml8
-rw-r--r--packages/SystemUI/res/values-th/config.xml26
-rw-r--r--packages/SystemUI/res/values-th/strings.xml4
-rw-r--r--packages/SystemUI/res/values-tl/config.xml26
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml8
-rw-r--r--packages/SystemUI/res/values-tr/config.xml26
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml8
-rw-r--r--packages/SystemUI/res/values-uk/config.xml26
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml8
-rw-r--r--packages/SystemUI/res/values-ur-rPK/config.xml26
-rw-r--r--packages/SystemUI/res/values-ur-rPK/strings.xml8
-rw-r--r--packages/SystemUI/res/values-uz-rUZ/config.xml26
-rw-r--r--packages/SystemUI/res/values-uz-rUZ/strings.xml8
-rw-r--r--packages/SystemUI/res/values-vi/config.xml26
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml8
-rw-r--r--packages/SystemUI/res/values-zh-rCN/config.xml26
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml8
-rw-r--r--packages/SystemUI/res/values-zh-rHK/config.xml26
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml8
-rw-r--r--packages/SystemUI/res/values-zh-rTW/config.xml26
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml8
-rw-r--r--packages/SystemUI/res/values-zu/config.xml26
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml4
-rw-r--r--packages/SystemUI/res/values/config.xml18
-rw-r--r--packages/SystemUI/src/com/android/systemui/SystemUIApplication.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/VendorServices.java29
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeService.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSDetail.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSTile.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java38
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java117
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java25
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java10
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/phone/DozeParametersTests.java166
-rw-r--r--packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java71
-rw-r--r--services/core/java/com/android/server/ConnectivityService.java10
-rw-r--r--services/core/java/com/android/server/GestureLauncherService.java5
-rw-r--r--services/core/java/com/android/server/LockSettingsService.java7
-rw-r--r--services/core/java/com/android/server/NetworkManagementService.java2
-rw-r--r--services/core/java/com/android/server/accounts/AccountManagerService.java22
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java10
-rw-r--r--services/core/java/com/android/server/am/BatteryStatsService.java4
-rw-r--r--services/core/java/com/android/server/am/UserController.java12
-rw-r--r--services/core/java/com/android/server/clipboard/ClipboardService.java8
-rw-r--r--services/core/java/com/android/server/display/DisplayTransformManager.java83
-rw-r--r--services/core/java/com/android/server/display/NightDisplayService.java92
-rw-r--r--services/core/java/com/android/server/location/GnssLocationProvider.java46
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java10
-rw-r--r--services/core/java/com/android/server/notification/ZenModeFiltering.java43
-rw-r--r--services/core/java/com/android/server/notification/ZenModeHelper.java7
-rw-r--r--services/core/java/com/android/server/pm/AbstractStatsBase.java126
-rw-r--r--services/core/java/com/android/server/pm/CompilerStats.java295
-rw-r--r--services/core/java/com/android/server/pm/LauncherAppsService.java16
-rw-r--r--services/core/java/com/android/server/pm/OtaDexoptService.java6
-rw-r--r--services/core/java/com/android/server/pm/PackageDexOptimizer.java15
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java309
-rw-r--r--services/core/java/com/android/server/pm/PackageUsage.java199
-rw-r--r--services/core/java/com/android/server/pm/ShortcutLauncher.java11
-rw-r--r--services/core/java/com/android/server/pm/ShortcutPackage.java44
-rw-r--r--services/core/java/com/android/server/pm/ShortcutPackageItem.java9
-rw-r--r--services/core/java/com/android/server/pm/ShortcutParser.java18
-rw-r--r--services/core/java/com/android/server/pm/ShortcutService.java132
-rw-r--r--services/core/java/com/android/server/pm/ShortcutUser.java91
-rw-r--r--services/core/java/com/android/server/twilight/TwilightService.java231
-rw-r--r--services/core/java/com/android/server/twilight/TwilightState.java1
-rw-r--r--services/core/java/com/android/server/vr/EnabledComponentsObserver.java13
-rw-r--r--services/core/java/com/android/server/wallpaper/WallpaperManagerService.java14
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java4
-rw-r--r--services/net/java/android/net/ip/RouterAdvertisementDaemon.java6
-rw-r--r--services/tests/servicestests/assets/shortcut/dumpsys_expected.txt105
-rw-r--r--services/tests/servicestests/res/xml/shortcut_error_3.xml6
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java48
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java33
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java61
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest6.java317
-rw-r--r--telecomm/java/android/telecom/ConferenceParticipant.java8
-rw-r--r--telecomm/java/android/telecom/Connection.java8
-rw-r--r--telephony/java/android/telephony/CarrierConfigManager.java16
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java33
-rw-r--r--telephony/java/com/android/internal/telephony/ITelephony.aidl10
-rw-r--r--tools/aapt/Images.cpp6
-rw-r--r--tools/aapt/Resource.cpp13
-rw-r--r--tools/aapt/ResourceTable.cpp1
1138 files changed, 18841 insertions, 13668 deletions
diff --git a/Android.mk b/Android.mk
index 8c39d19a322f..fb08395dce6c 100644
--- a/Android.mk
+++ b/Android.mk
@@ -903,7 +903,7 @@ framework_docs_SDK_REL_ID:=1
framework_docs_LOCAL_DROIDDOC_OPTIONS += \
-hdf sdk.codename N \
- -hdf sdk.preview.version 2 \
+ -hdf sdk.preview.version 5 \
-hdf sdk.version $(framework_docs_SDK_VERSION) \
-hdf sdk.rel.id $(framework_docs_SDK_REL_ID) \
-hdf sdk.preview 1
diff --git a/api/current.txt b/api/current.txt
index d3ee682370b9..5263c26258df 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -10066,6 +10066,7 @@ package android.content.pm {
method public android.os.PersistableBundle getExtras();
method public java.lang.String getId();
method public android.content.Intent getIntent();
+ method public android.content.Intent getIntents();
method public long getLastChangedTimestamp();
method public java.lang.CharSequence getLongLabel();
method public java.lang.String getPackage();
@@ -10092,6 +10093,7 @@ package android.content.pm {
method public android.content.pm.ShortcutInfo.Builder setExtras(android.os.PersistableBundle);
method public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
method public android.content.pm.ShortcutInfo.Builder setIntent(android.content.Intent);
+ method public android.content.pm.ShortcutInfo.Builder setIntents(android.content.Intent[]);
method public android.content.pm.ShortcutInfo.Builder setLongLabel(java.lang.CharSequence);
method public android.content.pm.ShortcutInfo.Builder setRank(int);
method public android.content.pm.ShortcutInfo.Builder setShortLabel(java.lang.CharSequence);
@@ -10108,6 +10110,7 @@ package android.content.pm {
method public java.util.List<android.content.pm.ShortcutInfo> getManifestShortcuts();
method public int getMaxShortcutCountPerActivity();
method public java.util.List<android.content.pm.ShortcutInfo> getPinnedShortcuts();
+ method public boolean isRateLimitingActive();
method public void removeAllDynamicShortcuts();
method public void removeDynamicShortcuts(java.util.List<java.lang.String>);
method public void reportShortcutUsed(java.lang.String);
@@ -10321,7 +10324,7 @@ package android.content.res {
}
public class Resources {
- ctor public Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
+ ctor public deprecated Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
method public final void finishPreloading();
method public final void flushLayoutCache();
method public android.content.res.XmlResourceParser getAnimation(int) throws android.content.res.Resources.NotFoundException;
@@ -10372,7 +10375,7 @@ package android.content.res {
method public android.content.res.AssetFileDescriptor openRawResourceFd(int) throws android.content.res.Resources.NotFoundException;
method public void parseBundleExtra(java.lang.String, android.util.AttributeSet, android.os.Bundle) throws org.xmlpull.v1.XmlPullParserException;
method public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
+ method public deprecated void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
}
public static class Resources.NotFoundException extends java.lang.RuntimeException {
diff --git a/api/system-current.txt b/api/system-current.txt
index 13ad2d666dcb..07a88252d942 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -10491,6 +10491,7 @@ package android.content.pm {
method public android.os.PersistableBundle getExtras();
method public java.lang.String getId();
method public android.content.Intent getIntent();
+ method public android.content.Intent getIntents();
method public long getLastChangedTimestamp();
method public java.lang.CharSequence getLongLabel();
method public java.lang.String getPackage();
@@ -10517,6 +10518,7 @@ package android.content.pm {
method public android.content.pm.ShortcutInfo.Builder setExtras(android.os.PersistableBundle);
method public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
method public android.content.pm.ShortcutInfo.Builder setIntent(android.content.Intent);
+ method public android.content.pm.ShortcutInfo.Builder setIntents(android.content.Intent[]);
method public android.content.pm.ShortcutInfo.Builder setLongLabel(java.lang.CharSequence);
method public android.content.pm.ShortcutInfo.Builder setRank(int);
method public android.content.pm.ShortcutInfo.Builder setShortLabel(java.lang.CharSequence);
@@ -10533,6 +10535,7 @@ package android.content.pm {
method public java.util.List<android.content.pm.ShortcutInfo> getManifestShortcuts();
method public int getMaxShortcutCountPerActivity();
method public java.util.List<android.content.pm.ShortcutInfo> getPinnedShortcuts();
+ method public boolean isRateLimitingActive();
method public void removeAllDynamicShortcuts();
method public void removeDynamicShortcuts(java.util.List<java.lang.String>);
method public void reportShortcutUsed(java.lang.String);
@@ -10760,7 +10763,7 @@ package android.content.res {
}
public class Resources {
- ctor public Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
+ ctor public deprecated Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
method public final void finishPreloading();
method public final void flushLayoutCache();
method public android.content.res.XmlResourceParser getAnimation(int) throws android.content.res.Resources.NotFoundException;
@@ -10811,7 +10814,7 @@ package android.content.res {
method public android.content.res.AssetFileDescriptor openRawResourceFd(int) throws android.content.res.Resources.NotFoundException;
method public void parseBundleExtra(java.lang.String, android.util.AttributeSet, android.os.Bundle) throws org.xmlpull.v1.XmlPullParserException;
method public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
+ method public deprecated void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
}
public static class Resources.NotFoundException extends java.lang.RuntimeException {
diff --git a/api/test-current.txt b/api/test-current.txt
index c6359dd4d1e9..9256ba431e09 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -10079,6 +10079,7 @@ package android.content.pm {
method public android.os.PersistableBundle getExtras();
method public java.lang.String getId();
method public android.content.Intent getIntent();
+ method public android.content.Intent getIntents();
method public long getLastChangedTimestamp();
method public java.lang.CharSequence getLongLabel();
method public java.lang.String getPackage();
@@ -10105,6 +10106,7 @@ package android.content.pm {
method public android.content.pm.ShortcutInfo.Builder setExtras(android.os.PersistableBundle);
method public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
method public android.content.pm.ShortcutInfo.Builder setIntent(android.content.Intent);
+ method public android.content.pm.ShortcutInfo.Builder setIntents(android.content.Intent[]);
method public android.content.pm.ShortcutInfo.Builder setLongLabel(java.lang.CharSequence);
method public android.content.pm.ShortcutInfo.Builder setRank(int);
method public android.content.pm.ShortcutInfo.Builder setShortLabel(java.lang.CharSequence);
@@ -10122,6 +10124,7 @@ package android.content.pm {
method public java.util.List<android.content.pm.ShortcutInfo> getManifestShortcuts();
method public int getMaxShortcutCountPerActivity();
method public java.util.List<android.content.pm.ShortcutInfo> getPinnedShortcuts();
+ method public boolean isRateLimitingActive();
method public void removeAllDynamicShortcuts();
method public void removeDynamicShortcuts(java.util.List<java.lang.String>);
method public void reportShortcutUsed(java.lang.String);
@@ -10335,7 +10338,7 @@ package android.content.res {
}
public class Resources {
- ctor public Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
+ ctor public deprecated Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
method public final void finishPreloading();
method public final void flushLayoutCache();
method public android.content.res.XmlResourceParser getAnimation(int) throws android.content.res.Resources.NotFoundException;
@@ -10386,7 +10389,7 @@ package android.content.res {
method public android.content.res.AssetFileDescriptor openRawResourceFd(int) throws android.content.res.Resources.NotFoundException;
method public void parseBundleExtra(java.lang.String, android.util.AttributeSet, android.os.Bundle) throws org.xmlpull.v1.XmlPullParserException;
method public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
- method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
+ method public deprecated void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
}
public static class Resources.NotFoundException extends java.lang.RuntimeException {
diff --git a/cmds/bootanimation/audioplay.cpp b/cmds/bootanimation/audioplay.cpp
index 8a5c2c6d229c..dbb76dcd27cd 100644
--- a/cmds/bootanimation/audioplay.cpp
+++ b/cmds/bootanimation/audioplay.cpp
@@ -158,16 +158,32 @@ bool createBufferQueueAudioPlayer(const ChunkFormat* chunkFormat) {
SLDataSink audioSnk = {&loc_outmix, NULL};
// create audio player
- const SLInterfaceID ids[2] = {SL_IID_BUFFERQUEUE, SL_IID_VOLUME};
- const SLboolean req[2] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
+ const SLInterfaceID ids[3] = {SL_IID_BUFFERQUEUE, SL_IID_VOLUME, SL_IID_ANDROIDCONFIGURATION};
+ const SLboolean req[3] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
result = (*engineEngine)->CreateAudioPlayer(engineEngine, &bqPlayerObject, &audioSrc, &audioSnk,
- 2, ids, req);
+ 3, ids, req);
if (result != SL_RESULT_SUCCESS) {
ALOGE("sl CreateAudioPlayer failed with result %d", result);
return false;
}
(void)result;
+ // Use the System stream for boot sound playback.
+ SLAndroidConfigurationItf playerConfig;
+ result = (*bqPlayerObject)->GetInterface(bqPlayerObject,
+ SL_IID_ANDROIDCONFIGURATION, &playerConfig);
+ if (result != SL_RESULT_SUCCESS) {
+ ALOGE("config GetInterface failed with result %d", result);
+ return false;
+ }
+ SLint32 streamType = SL_ANDROID_STREAM_SYSTEM;
+ result = (*playerConfig)->SetConfiguration(playerConfig,
+ SL_ANDROID_KEY_STREAM_TYPE, &streamType, sizeof(SLint32));
+ if (result != SL_RESULT_SUCCESS) {
+ ALOGE("SetConfiguration failed with result %d", result);
+ return false;
+ }
+
// realize the player
result = (*bqPlayerObject)->Realize(bqPlayerObject, SL_BOOLEAN_FALSE);
if (result != SL_RESULT_SUCCESS) {
diff --git a/core/java/android/app/IWallpaperManager.aidl b/core/java/android/app/IWallpaperManager.aidl
index 9cd70e6d8366..db7d54bd40cf 100644
--- a/core/java/android/app/IWallpaperManager.aidl
+++ b/core/java/android/app/IWallpaperManager.aidl
@@ -49,7 +49,7 @@ interface IWallpaperManager {
/**
* Set the live wallpaper. This only affects the system wallpaper.
*/
- void setWallpaperComponentChecked(in ComponentName name, in String callingPackage);
+ void setWallpaperComponentChecked(in ComponentName name, in String callingPackage, int userId);
/**
* Set the live wallpaper. This only affects the system wallpaper.
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 2e37db2fef24..b12ab75a5809 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -3474,6 +3474,8 @@ public class Notification implements Parcelable
mN.mSmallIcon = Icon.createWithResource(mContext, mN.icon);
}
contentView.setImageViewIcon(R.id.icon, mN.mSmallIcon);
+ contentView.setDrawableParameters(R.id.icon, false /* targetBackground */,
+ -1 /* alpha */, -1 /* colorFilter */, null /* mode */, mN.iconLevel);
processSmallIconColor(mN.mSmallIcon, contentView);
}
diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java
index 53da4e32eb8a..20cbde176368 100644
--- a/core/java/android/app/WallpaperManager.java
+++ b/core/java/android/app/WallpaperManager.java
@@ -417,8 +417,14 @@ public class WallpaperManager {
* This is returned as an
* abstract Drawable that you can install in a View to display whatever
* wallpaper the user has currently set.
- *
- * @return Returns a Drawable object that will draw the wallpaper.
+ * <p>
+ * This method can return null if there is no system wallpaper available, if
+ * wallpapers are not supported in the current user, or if the calling app is not
+ * permitted to access the system wallpaper.
+ *
+ * @return Returns a Drawable object that will draw the system wallpaper,
+ * or {@code null} if no system wallpaper exists or if the calling application
+ * is not able to access the wallpaper.
*/
public Drawable getDrawable() {
Bitmap bm = sGlobals.peekWallpaperBitmap(mContext, true, FLAG_SYSTEM);
@@ -1404,12 +1410,26 @@ public class WallpaperManager {
*/
@SystemApi
public boolean setWallpaperComponent(ComponentName name) {
+ return setWallpaperComponent(name, UserHandle.myUserId());
+ }
+
+ /**
+ * Set the live wallpaper.
+ *
+ * This can only be called by packages with android.permission.SET_WALLPAPER_COMPONENT
+ * permission. The caller must hold the INTERACT_ACROSS_USERS_FULL permission to change
+ * another user's wallpaper.
+ *
+ * @hide
+ */
+ public boolean setWallpaperComponent(ComponentName name, int userId) {
if (sGlobals.mService == null) {
Log.w(TAG, "WallpaperService not running");
throw new RuntimeException(new DeadSystemException());
}
try {
- sGlobals.mService.setWallpaperComponentChecked(name, mContext.getOpPackageName());
+ sGlobals.mService.setWallpaperComponentChecked(name, mContext.getOpPackageName(),
+ userId);
return true;
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
diff --git a/core/java/android/content/ClipData.java b/core/java/android/content/ClipData.java
index c365e9ee9549..d9816a64db3a 100644
--- a/core/java/android/content/ClipData.java
+++ b/core/java/android/content/ClipData.java
@@ -191,6 +191,14 @@ public class ClipData implements Parcelable {
final Intent mIntent;
Uri mUri;
+ /** @hide */
+ public Item(Item other) {
+ mText = other.mText;
+ mHtmlText = other.mHtmlText;
+ mIntent = other.mIntent;
+ mUri = other.mUri;
+ }
+
/**
* Create an Item consisting of a single block of (possibly styled) text.
*/
@@ -816,6 +824,11 @@ public class ClipData implements Parcelable {
return mItems.get(index);
}
+ /** @hide */
+ public void setItemAt(int index, Item item) {
+ mItems.set(index, item);
+ }
+
/**
* Prepare this {@link ClipData} to leave an app process.
*
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index c140f1bd5ba4..4d9db98587ce 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -2219,6 +2219,22 @@ public class Intent implements Parcelable, Cloneable {
"android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE";
/**
+ * Broadcast Action: preferred activities have changed *explicitly*.
+ *
+ * <p>Note there are cases where a preferred activity is invalidated *implicitly*, e.g.
+ * when an app is installed or uninstalled, but in such cases this broadcast will *not*
+ * be sent.
+ *
+ * {@link #EXTRA_USER_HANDLE} contains the user ID in question.
+ *
+ * @hide
+ */
+ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+ public static final String ACTION_PREFERRED_ACTIVITY_CHANGED =
+ "android.intent.action.ACTION_PREFERRED_ACTIVITY_CHANGED";
+
+
+ /**
* Broadcast Action: The current system wallpaper has changed. See
* {@link android.app.WallpaperManager} for retrieving the new wallpaper.
* This should <em>only</em> be used to determine when the wallpaper
diff --git a/core/java/android/content/pm/ShortcutInfo.java b/core/java/android/content/pm/ShortcutInfo.java
index 8ea77d6428a8..54f1b7672c31 100644
--- a/core/java/android/content/pm/ShortcutInfo.java
+++ b/core/java/android/content/pm/ShortcutInfo.java
@@ -19,6 +19,7 @@ import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
+import android.app.TaskStackBuilder;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -652,7 +653,7 @@ public final class ShortcutInfo implements Parcelable {
/** @hide */
public static IllegalArgumentException getInvalidIconException() {
return new IllegalArgumentException("Unsupported icon type:"
- +" only bitmap, resource and content URI are supported");
+ +" only the bitmap and resource types are supported");
}
/**
@@ -920,6 +921,19 @@ public final class ShortcutInfo implements Parcelable {
}
/**
+ * Sets multiple intents instead of a single intent.
+ *
+ * @see Builder#setIntent(Intent)
+ * @see ShortcutInfo#getIntents()
+ * @see Context#startActivities(Intent[])
+ * @see TaskStackBuilder
+ */
+ @NonNull
+ public Builder setIntents(@NonNull Intent[] intents) {
+ throw new RuntimeException("NOT SUPPORTED YET");
+ }
+
+ /**
* "Rank" of a shortcut, which is a non-negative value that's used by the launcher app
* to sort shortcuts.
*
@@ -1084,7 +1098,7 @@ public final class ShortcutInfo implements Parcelable {
}
/**
- * Return the intent.
+ * Return the intent. (Or the last intent set with {@link Builder#setIntents(Intent[])}.
*
* <p>Launcher applications <b>cannot</b> see the intent. If a {@link ShortcutInfo} is
* obtained via {@link LauncherApps}, then this method will always return null.
@@ -1104,6 +1118,20 @@ public final class ShortcutInfo implements Parcelable {
}
/**
+ * Return the intent set with {@link Builder#setIntents(Intent[])}.
+ *
+ * <p>Launcher applications <b>cannot</b> see the intents. If a {@link ShortcutInfo} is
+ * obtained via {@link LauncherApps}, then this method will always return null.
+ * Launchers can only start a shortcut intent with {@link LauncherApps#startShortcut}.
+ *
+ * @see Builder#setIntents(Intent[])
+ */
+ @Nullable
+ public Intent getIntents() {
+ throw new RuntimeException("NOT SUPPORTED YET");
+ }
+
+ /**
* Return "raw" intent, which is the original intent without the extras.
* @hide
*/
diff --git a/core/java/android/content/pm/ShortcutManager.java b/core/java/android/content/pm/ShortcutManager.java
index f6c0be07db84..cfd3442cc07b 100644
--- a/core/java/android/content/pm/ShortcutManager.java
+++ b/core/java/android/content/pm/ShortcutManager.java
@@ -614,6 +614,20 @@ public class ShortcutManager {
}
/**
+ * Return {@code true} when rate-limiting is active for the caller application.
+ *
+ * <p>See the class level javadoc for details.
+ */
+ public boolean isRateLimitingActive() {
+ try {
+ return mService.getRemainingCallCount(mContext.getPackageName(), injectMyUserId())
+ == 0;
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
* Return the max width for icons, in pixels.
*/
public int getIconMaxWidth() {
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java
index 8d3940c99e0d..ad113075c96b 100644
--- a/core/java/android/content/res/Resources.java
+++ b/core/java/android/content/res/Resources.java
@@ -201,12 +201,16 @@ public class Resources {
* Create a new Resources object on top of an existing set of assets in an
* AssetManager.
*
+ * @deprecated Resources should not be constructed by apps.
+ * See {@link android.content.Context#createConfigurationContext(Configuration)}.
+ *
* @param assets Previously created AssetManager.
* @param metrics Current display metrics to consider when
* selecting/computing resource values.
* @param config Desired device configuration to consider when
* selecting/computing resource values (optional).
*/
+ @Deprecated
public Resources(AssetManager assets, DisplayMetrics metrics, Configuration config) {
this(null);
mResourcesImpl = new ResourcesImpl(assets, metrics, config, new DisplayAdjustments());
@@ -1762,7 +1766,10 @@ public class Resources {
/**
* Store the newly updated configuration.
+ *
+ * @deprecated See {@link android.content.Context#createConfigurationContext(Configuration)}.
*/
+ @Deprecated
public void updateConfiguration(Configuration config, DisplayMetrics metrics) {
updateConfiguration(config, metrics, null);
}
diff --git a/core/java/android/hardware/location/ContextHubService.java b/core/java/android/hardware/location/ContextHubService.java
index fcbc962f0743..062c9580c1e4 100644
--- a/core/java/android/hardware/location/ContextHubService.java
+++ b/core/java/android/hardware/location/ContextHubService.java
@@ -166,9 +166,12 @@ public class ContextHubService extends IContextHubService.Stub {
msgHeader[HEADER_FIELD_LOAD_APP_ID_LO] = (int)(appId & 0xFFFFFFFF);
msgHeader[HEADER_FIELD_LOAD_APP_ID_HI] = (int)((appId >> 32) & 0xFFFFFFFF);
- if (nativeSendMessage(msgHeader, app.getAppBinary()) != 0) {
+ int errVal = nativeSendMessage(msgHeader, app.getAppBinary());
+ if (errVal != 0) {
+ Log.e(TAG, "Send Message returns error" + contextHubHandle);
return -1;
}
+
// Do not add an entry to mNanoAppInstance Hash yet. The HAL may reject the app
return 0;
}
diff --git a/core/java/android/net/NetworkRequest.java b/core/java/android/net/NetworkRequest.java
index 847d82bbd76d..4501f7b089b9 100644
--- a/core/java/android/net/NetworkRequest.java
+++ b/core/java/android/net/NetworkRequest.java
@@ -284,6 +284,15 @@ public class NetworkRequest implements Parcelable {
};
/**
+ * Returns true iff. the contained NetworkRequest is of type LISTEN.
+ *
+ * @hide
+ */
+ public boolean isListen() {
+ return type == Type.LISTEN;
+ }
+
+ /**
* Returns true iff. the contained NetworkRequest is one that:
*
* - should be associated with at most one satisfying network
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index 4acb729b6a76..1b9e2aa3896a 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -546,6 +546,20 @@ public abstract class BatteryStats implements Parcelable {
*/
public abstract long getTimeAtCpuSpeed(int cluster, int step, int which);
+ /**
+ * Returns the number of times this UID woke up the Application Processor to
+ * process a mobile radio packet.
+ * @param which one of STATS_SINCE_CHARGED, STATS_SINCE_UNPLUGGED, or STATS_CURRENT.
+ */
+ public abstract long getMobileRadioApWakeupCount(int which);
+
+ /**
+ * Returns the number of times this UID woke up the Application Processor to
+ * process a WiFi packet.
+ * @param which one of STATS_SINCE_CHARGED, STATS_SINCE_UNPLUGGED, or STATS_CURRENT.
+ */
+ public abstract long getWifiRadioApWakeupCount(int which);
+
public static abstract class Sensor {
/*
* FIXME: it's not correct to use this magic value because it
@@ -1285,9 +1299,12 @@ public abstract class BatteryStats implements Parcelable {
public static final int EVENT_TEMP_WHITELIST = 0x0011;
// Event for the screen waking up.
public static final int EVENT_SCREEN_WAKE_UP = 0x0012;
+ // Event for the UID that woke up the application processor.
+ // Used for wakeups coming from WiFi, modem, etc.
+ public static final int EVENT_WAKEUP_AP = 0x0013;
// Number of event types.
- public static final int EVENT_COUNT = 0x0013;
+ public static final int EVENT_COUNT = 0x0014;
// Mask to extract out only the type part of the event.
public static final int EVENT_TYPE_MASK = ~(EVENT_FLAG_START|EVENT_FLAG_FINISH);
@@ -1979,13 +1996,13 @@ public abstract class BatteryStats implements Parcelable {
public static final String[] HISTORY_EVENT_NAMES = new String[] {
"null", "proc", "fg", "top", "sync", "wake_lock_in", "job", "user", "userfg", "conn",
"active", "pkginst", "pkgunin", "alarm", "stats", "inactive", "active", "tmpwhitelist",
- "screenwake",
+ "screenwake", "wakeupap"
};
public static final String[] HISTORY_EVENT_CHECKIN_NAMES = new String[] {
"Enl", "Epr", "Efg", "Etp", "Esy", "Ewl", "Ejb", "Eur", "Euf", "Ecn",
"Eac", "Epi", "Epu", "Eal", "Est", "Eai", "Eaa", "Etw",
- "Esw",
+ "Esw", "Ewa"
};
/**
@@ -3105,20 +3122,22 @@ public abstract class BatteryStats implements Parcelable {
final long mobilePacketsTx = u.getNetworkActivityPackets(NETWORK_MOBILE_TX_DATA, which);
final long mobileActiveTime = u.getMobileRadioActiveTime(which);
final int mobileActiveCount = u.getMobileRadioActiveCount(which);
+ final long mobileWakeup = u.getMobileRadioApWakeupCount(which);
final long wifiPacketsRx = u.getNetworkActivityPackets(NETWORK_WIFI_RX_DATA, which);
final long wifiPacketsTx = u.getNetworkActivityPackets(NETWORK_WIFI_TX_DATA, which);
+ final long wifiWakeup = u.getWifiRadioApWakeupCount(which);
final long btBytesRx = u.getNetworkActivityBytes(NETWORK_BT_RX_DATA, which);
final long btBytesTx = u.getNetworkActivityBytes(NETWORK_BT_TX_DATA, which);
if (mobileBytesRx > 0 || mobileBytesTx > 0 || wifiBytesRx > 0 || wifiBytesTx > 0
|| mobilePacketsRx > 0 || mobilePacketsTx > 0 || wifiPacketsRx > 0
|| wifiPacketsTx > 0 || mobileActiveTime > 0 || mobileActiveCount > 0
- || btBytesRx > 0 || btBytesTx > 0) {
+ || btBytesRx > 0 || btBytesTx > 0 || mobileWakeup > 0 || wifiWakeup > 0) {
dumpLine(pw, uid, category, NETWORK_DATA, mobileBytesRx, mobileBytesTx,
wifiBytesRx, wifiBytesTx,
mobilePacketsRx, mobilePacketsTx,
wifiPacketsRx, wifiPacketsTx,
mobileActiveTime, mobileActiveCount,
- btBytesRx, btBytesTx);
+ btBytesRx, btBytesTx, mobileWakeup, wifiWakeup);
}
// Dump modem controller data, per UID.
@@ -4125,6 +4144,9 @@ public abstract class BatteryStats implements Parcelable {
final int wifiScanCount = u.getWifiScanCount(which);
final long uidWifiRunningTime = u.getWifiRunningTime(rawRealtime, which);
+ final long mobileWakeup = u.getMobileRadioApWakeupCount(which);
+ final long wifiWakeup = u.getWifiRadioApWakeupCount(which);
+
if (mobileRxBytes > 0 || mobileTxBytes > 0
|| mobileRxPackets > 0 || mobileTxPackets > 0) {
pw.print(prefix); pw.print(" Mobile network: ");
@@ -4150,6 +4172,14 @@ public abstract class BatteryStats implements Parcelable {
pw.println(sb.toString());
}
+ if (mobileWakeup > 0) {
+ sb.setLength(0);
+ sb.append(prefix);
+ sb.append(" Mobile radio AP wakeups: ");
+ sb.append(mobileWakeup);
+ pw.println(sb.toString());
+ }
+
printControllerActivityIfInteresting(pw, sb, prefix + " ", "Modem",
u.getModemControllerActivity(), which);
@@ -4181,6 +4211,14 @@ public abstract class BatteryStats implements Parcelable {
pw.println(sb.toString());
}
+ if (wifiWakeup > 0) {
+ sb.setLength(0);
+ sb.append(prefix);
+ sb.append(" WiFi AP wakeups: ");
+ sb.append(wifiWakeup);
+ pw.println(sb.toString());
+ }
+
printControllerActivityIfInteresting(pw, sb, prefix + " ", "WiFi",
u.getWifiControllerActivity(), which);
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index 84d2c98ba93d..57b40e559ccd 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -1263,6 +1263,7 @@ public class Process {
* @hide
*/
public static final boolean isThreadInProcess(int tid, int pid) {
+ StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
try {
if (Os.access("/proc/" + tid + "/task/" + pid, OsConstants.F_OK)) {
return true;
@@ -1271,6 +1272,9 @@ public class Process {
}
} catch (Exception e) {
return false;
+ } finally {
+ StrictMode.setThreadPolicy(oldPolicy);
}
+
}
}
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 765a3a8cd9d4..72420434ec7f 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -6173,44 +6173,6 @@ public final class Settings {
public static final String NIGHT_DISPLAY_CUSTOM_END_TIME = "night_display_custom_end_time";
/**
- * Behavior of twilight on the device.
- * One of {@link #TWILIGHT_MODE_LOCKED_OFF}, {@link #TWILIGHT_MODE_LOCKED_ON}
- * or {@link #TWILIGHT_MODE_AUTO}.
- * @hide
- */
- public static final String TWILIGHT_MODE = "twilight_mode";
-
- /**
- * Twilight mode always off.
- * @hide
- */
- public static final int TWILIGHT_MODE_LOCKED_OFF = 0;
-
- /**
- * Twilight mode always on.
- * @hide
- */
- public static final int TWILIGHT_MODE_LOCKED_ON = 1;
-
- /**
- * Twilight mode auto.
- * @hide
- */
- public static final int TWILIGHT_MODE_AUTO = 2;
-
- /**
- * Twilight mode auto, temporarily overriden to on.
- * @hide
- */
- public static final int TWILIGHT_MODE_AUTO_OVERRIDE_OFF = 3;
-
- /**
- * Twilight mode auto, temporarily overriden to off.
- * @hide
- */
- public static final int TWILIGHT_MODE_AUTO_OVERRIDE_ON = 4;
-
- /**
* Whether brightness should automatically adjust based on twilight state.
* @hide
*/
@@ -6380,7 +6342,11 @@ public final class Settings {
PREFERRED_TTY_MODE,
ENHANCED_VOICE_PRIVACY_ENABLED,
TTY_MODE_ENABLED,
- INCALL_POWER_BUTTON_BEHAVIOR
+ INCALL_POWER_BUTTON_BEHAVIOR,
+ NIGHT_DISPLAY_CUSTOM_START_TIME,
+ NIGHT_DISPLAY_CUSTOM_END_TIME,
+ NIGHT_DISPLAY_AUTO_MODE,
+ NIGHT_DISPLAY_ACTIVATED
};
/**
diff --git a/core/java/com/android/internal/app/AlertController.java b/core/java/com/android/internal/app/AlertController.java
index 2a40aeb9111e..2b25b3fef9cc 100644
--- a/core/java/com/android/internal/app/AlertController.java
+++ b/core/java/com/android/internal/app/AlertController.java
@@ -618,7 +618,7 @@ public class AlertController {
}
}
- private void setupTitle(ViewGroup topPanel) {
+ protected void setupTitle(ViewGroup topPanel) {
if (mCustomTitleView != null && mShowTitle) {
// Add the custom title view directly to the topPanel layout
final LayoutParams lp = new LayoutParams(
@@ -701,7 +701,7 @@ public class AlertController {
}
}
- private void setupButtons(ViewGroup buttonPanel) {
+ protected void setupButtons(ViewGroup buttonPanel) {
int BIT_BUTTON_POSITIVE = 1;
int BIT_BUTTON_NEGATIVE = 2;
int BIT_BUTTON_NEUTRAL = 4;
diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl
index 216a4f1c9a44..ca69746784dd 100644
--- a/core/java/com/android/internal/app/IBatteryStats.aidl
+++ b/core/java/com/android/internal/app/IBatteryStats.aidl
@@ -118,7 +118,7 @@ interface IBatteryStats {
void noteWifiBatchedScanStoppedFromSource(in WorkSource ws);
void noteWifiMulticastEnabledFromSource(in WorkSource ws);
void noteWifiMulticastDisabledFromSource(in WorkSource ws);
- void noteWifiRadioPowerState(int powerState, long timestampNs);
+ void noteWifiRadioPowerState(int powerState, long timestampNs, int uid);
void noteNetworkInterfaceType(String iface, int type);
void noteNetworkStatsEnabled();
void noteDeviceIdleMode(int mode, String activeReason, int activeUid);
diff --git a/core/java/com/android/internal/app/MicroAlertController.java b/core/java/com/android/internal/app/MicroAlertController.java
index 085b2265dfee..00fcd6f42a53 100644
--- a/core/java/com/android/internal/app/MicroAlertController.java
+++ b/core/java/com/android/internal/app/MicroAlertController.java
@@ -82,4 +82,20 @@ public class MicroAlertController extends AlertController {
}
}
}
+
+ @Override
+ protected void setupTitle(ViewGroup topPanel) {
+ super.setupTitle(topPanel);
+ if (topPanel.getVisibility() == View.GONE) {
+ topPanel.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ @Override
+ protected void setupButtons(ViewGroup buttonPanel) {
+ super.setupButtons(buttonPanel);
+ if (buttonPanel.getVisibility() == View.GONE) {
+ buttonPanel.setVisibility(View.INVISIBLE);
+ }
+ }
}
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index a1df8c186982..11c1de19bb96 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -108,7 +108,7 @@ public class BatteryStatsImpl extends BatteryStats {
private static final int MAGIC = 0xBA757475; // 'BATSTATS'
// Current on-disk Parcel version
- private static final int VERSION = 147 + (USE_OLD_HISTORY ? 1000 : 0);
+ private static final int VERSION = 148 + (USE_OLD_HISTORY ? 1000 : 0);
// Maximum number of items we will record in the history.
private static final int MAX_HISTORY_ITEMS = 2000;
@@ -3554,6 +3554,14 @@ public class BatteryStatsImpl extends BatteryStats {
mNumConnectivityChange++;
}
+ private void noteMobileRadioApWakeupLocked(final long elapsedRealtimeMillis,
+ final long uptimeMillis, int uid) {
+ uid = mapUid(uid);
+ addHistoryEventLocked(elapsedRealtimeMillis, uptimeMillis, HistoryItem.EVENT_WAKEUP_AP, "",
+ uid);
+ getUidStatsLocked(uid).noteMobileRadioApWakeupLocked();
+ }
+
public void noteMobileRadioPowerState(int powerState, long timestampNs, int uid) {
final long elapsedRealtime = mClocks.elapsedRealtime();
final long uptime = mClocks.uptimeMillis();
@@ -3563,6 +3571,10 @@ public class BatteryStatsImpl extends BatteryStats {
powerState == DataConnectionRealTimeInfo.DC_POWER_STATE_MEDIUM
|| powerState == DataConnectionRealTimeInfo.DC_POWER_STATE_HIGH;
if (active) {
+ if (uid > 0) {
+ noteMobileRadioApWakeupLocked(elapsedRealtime, uptime, uid);
+ }
+
mMobileRadioActiveStartTime = realElapsedRealtimeMs = timestampNs / (1000 * 1000);
mHistoryCur.states |= HistoryItem.STATE_MOBILE_RADIO_ACTIVE_FLAG;
} else {
@@ -4239,7 +4251,15 @@ public class BatteryStatsImpl extends BatteryStats {
}
}
- public void noteWifiRadioPowerState(int powerState, long timestampNs) {
+ private void noteWifiRadioApWakeupLocked(final long elapsedRealtimeMillis,
+ final long uptimeMillis, int uid) {
+ uid = mapUid(uid);
+ addHistoryEventLocked(elapsedRealtimeMillis, uptimeMillis, HistoryItem.EVENT_WAKEUP_AP, "",
+ uid);
+ getUidStatsLocked(uid).noteWifiRadioApWakeupLocked();
+ }
+
+ public void noteWifiRadioPowerState(int powerState, long timestampNs, int uid) {
final long elapsedRealtime = mClocks.elapsedRealtime();
final long uptime = mClocks.uptimeMillis();
if (mWifiRadioPowerState != powerState) {
@@ -4247,6 +4267,9 @@ public class BatteryStatsImpl extends BatteryStats {
powerState == DataConnectionRealTimeInfo.DC_POWER_STATE_MEDIUM
|| powerState == DataConnectionRealTimeInfo.DC_POWER_STATE_HIGH;
if (active) {
+ if (uid > 0) {
+ noteWifiRadioApWakeupLocked(elapsedRealtime, uptime, uid);
+ }
mHistoryCur.states |= HistoryItem.STATE_WIFI_RADIO_ACTIVE_FLAG;
} else {
mHistoryCur.states &= ~HistoryItem.STATE_WIFI_RADIO_ACTIVE_FLAG;
@@ -4874,6 +4897,33 @@ public class BatteryStatsImpl extends BatteryStats {
return mUidStats;
}
+ private static void detachTimerIfNotNull(BatteryStatsImpl.Timer timer) {
+ if (timer != null) {
+ timer.detach();
+ }
+ }
+
+ private static boolean resetTimerIfNotNull(BatteryStatsImpl.Timer timer,
+ boolean detachIfReset) {
+ if (timer != null) {
+ return timer.reset(detachIfReset);
+ }
+ return true;
+ }
+
+ private static void detachLongCounterIfNotNull(LongSamplingCounter counter) {
+ if (counter != null) {
+ counter.detach();
+ }
+ }
+
+ private static void resetLongCounterIfNotNull(LongSamplingCounter counter,
+ boolean detachIfReset) {
+ if (counter != null) {
+ counter.reset(detachIfReset);
+ }
+ }
+
/**
* The statistics associated with a particular uid.
*/
@@ -4921,6 +4971,16 @@ public class BatteryStatsImpl extends BatteryStats {
LongSamplingCounter mMobileRadioActiveCount;
/**
+ * How many times this UID woke up the Application Processor due to a Mobile radio packet.
+ */
+ private LongSamplingCounter mMobileRadioApWakeupCount;
+
+ /**
+ * How many times this UID woke up the Application Processor due to a Wifi packet.
+ */
+ private LongSamplingCounter mWifiRadioApWakeupCount;
+
+ /**
* The amount of time this uid has kept the WiFi controller in idle, tx, and rx mode.
* Can be null if the UID has had no such activity.
*/
@@ -5629,6 +5689,36 @@ public class BatteryStatsImpl extends BatteryStats {
return 0;
}
+ public void noteMobileRadioApWakeupLocked() {
+ if (mMobileRadioApWakeupCount == null) {
+ mMobileRadioApWakeupCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase);
+ }
+ mMobileRadioApWakeupCount.addCountLocked(1);
+ }
+
+ @Override
+ public long getMobileRadioApWakeupCount(int which) {
+ if (mMobileRadioApWakeupCount != null) {
+ return mMobileRadioApWakeupCount.getCountLocked(which);
+ }
+ return 0;
+ }
+
+ public void noteWifiRadioApWakeupLocked() {
+ if (mWifiRadioApWakeupCount == null) {
+ mWifiRadioApWakeupCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase);
+ }
+ mWifiRadioApWakeupCount.addCountLocked(1);
+ }
+
+ @Override
+ public long getWifiRadioApWakeupCount(int which) {
+ if (mWifiRadioApWakeupCount != null) {
+ return mWifiRadioApWakeupCount.getCountLocked(which);
+ }
+ return 0;
+ }
+
void initNetworkActivityLocked() {
mNetworkByteActivityCounters = new LongSamplingCounter[NUM_NETWORK_ACTIVITY_TYPES];
mNetworkPacketActivityCounters = new LongSamplingCounter[NUM_NETWORK_ACTIVITY_TYPES];
@@ -5671,24 +5761,14 @@ public class BatteryStatsImpl extends BatteryStats {
active |= !mWifiMulticastTimer.reset(false);
active |= mWifiMulticastEnabled;
}
- if (mAudioTurnedOnTimer != null) {
- active |= !mAudioTurnedOnTimer.reset(false);
- }
- if (mVideoTurnedOnTimer != null) {
- active |= !mVideoTurnedOnTimer.reset(false);
- }
- if (mFlashlightTurnedOnTimer != null) {
- active |= !mFlashlightTurnedOnTimer.reset(false);
- }
- if (mCameraTurnedOnTimer != null) {
- active |= !mCameraTurnedOnTimer.reset(false);
- }
- if (mForegroundActivityTimer != null) {
- active |= !mForegroundActivityTimer.reset(false);
- }
- if (mBluetoothScanTimer != null) {
- active |= !mBluetoothScanTimer.reset(false);
- }
+
+ active |= !resetTimerIfNotNull(mAudioTurnedOnTimer, false);
+ active |= !resetTimerIfNotNull(mVideoTurnedOnTimer, false);
+ active |= !resetTimerIfNotNull(mFlashlightTurnedOnTimer, false);
+ active |= !resetTimerIfNotNull(mCameraTurnedOnTimer, false);
+ active |= !resetTimerIfNotNull(mForegroundActivityTimer, false);
+ active |= !resetTimerIfNotNull(mBluetoothScanTimer, false);
+
if (mProcessStateTimer != null) {
for (int i = 0; i < NUM_PROCESS_STATE; i++) {
if (mProcessStateTimer[i] != null) {
@@ -5749,6 +5829,9 @@ public class BatteryStatsImpl extends BatteryStats {
}
}
+ resetLongCounterIfNotNull(mMobileRadioApWakeupCount, false);
+ resetLongCounterIfNotNull(mWifiRadioApWakeupCount, false);
+
final ArrayMap<String, Wakelock> wakeStats = mWakelockStats.getMap();
for (int iw=wakeStats.size()-1; iw>=0; iw--) {
Wakelock wl = wakeStats.valueAt(iw);
@@ -5908,6 +5991,9 @@ public class BatteryStatsImpl extends BatteryStats {
}
}
}
+
+ detachLongCounterIfNotNull(mMobileRadioApWakeupCount);
+ detachLongCounterIfNotNull(mWifiRadioApWakeupCount);
}
return !active;
@@ -6114,6 +6200,20 @@ public class BatteryStatsImpl extends BatteryStats {
} else {
out.writeInt(0);
}
+
+ if (mMobileRadioApWakeupCount != null) {
+ out.writeInt(1);
+ mMobileRadioApWakeupCount.writeToParcel(out);
+ } else {
+ out.writeInt(0);
+ }
+
+ if (mWifiRadioApWakeupCount != null) {
+ out.writeInt(1);
+ mWifiRadioApWakeupCount.writeToParcel(out);
+ } else {
+ out.writeInt(0);
+ }
}
void readFromParcelLocked(TimeBase timeBase, TimeBase screenOffTimeBase, Parcel in) {
@@ -6338,6 +6438,18 @@ public class BatteryStatsImpl extends BatteryStats {
} else {
mCpuClusterSpeed = null;
}
+
+ if (in.readInt() != 0) {
+ mMobileRadioApWakeupCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in);
+ } else {
+ mMobileRadioApWakeupCount = null;
+ }
+
+ if (in.readInt() != 0) {
+ mWifiRadioApWakeupCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in);
+ } else {
+ mWifiRadioApWakeupCount = null;
+ }
}
/**
@@ -10348,6 +10460,20 @@ public class BatteryStatsImpl extends BatteryStats {
u.mCpuClusterSpeed = null;
}
+ if (in.readInt() != 0) {
+ u.mMobileRadioApWakeupCount = new LongSamplingCounter(mOnBatteryTimeBase);
+ u.mMobileRadioApWakeupCount.readSummaryFromParcelLocked(in);
+ } else {
+ u.mMobileRadioApWakeupCount = null;
+ }
+
+ if (in.readInt() != 0) {
+ u.mWifiRadioApWakeupCount = new LongSamplingCounter(mOnBatteryTimeBase);
+ u.mWifiRadioApWakeupCount.readSummaryFromParcelLocked(in);
+ } else {
+ u.mWifiRadioApWakeupCount = null;
+ }
+
int NW = in.readInt();
if (NW > 100) {
throw new ParcelFormatException("File corrupt: too many wake locks " + NW);
@@ -10708,6 +10834,20 @@ public class BatteryStatsImpl extends BatteryStats {
out.writeInt(0);
}
+ if (u.mMobileRadioApWakeupCount != null) {
+ out.writeInt(1);
+ u.mMobileRadioApWakeupCount.writeSummaryFromParcelLocked(out);
+ } else {
+ out.writeInt(0);
+ }
+
+ if (u.mWifiRadioApWakeupCount != null) {
+ out.writeInt(1);
+ u.mWifiRadioApWakeupCount.writeSummaryFromParcelLocked(out);
+ } else {
+ out.writeInt(0);
+ }
+
final ArrayMap<String, Uid.Wakelock> wakeStats = u.mWakelockStats.getMap();
int NW = wakeStats.size();
out.writeInt(NW);
diff --git a/core/java/com/android/internal/view/FloatingActionMode.java b/core/java/com/android/internal/view/FloatingActionMode.java
index 31ab26fe4eaf..831c64698453 100644
--- a/core/java/com/android/internal/view/FloatingActionMode.java
+++ b/core/java/com/android/internal/view/FloatingActionMode.java
@@ -26,6 +26,7 @@ import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewParent;
+import android.util.DisplayMetrics;
import com.android.internal.R;
import com.android.internal.util.Preconditions;
@@ -209,11 +210,9 @@ public class FloatingActionMode extends ActionMode {
}
private boolean isContentRectWithinBounds() {
- mScreenRect.set(
- 0,
- 0,
- mContext.getResources().getDisplayMetrics().widthPixels,
- mContext.getResources().getDisplayMetrics().heightPixels);
+ DisplayMetrics metrics = mContext.getApplicationContext()
+ .getResources().getDisplayMetrics();
+ mScreenRect.set(0, 0, metrics.widthPixels, metrics.heightPixels);
return intersectsClosed(mContentRectOnScreen, mScreenRect)
&& intersectsClosed(mContentRectOnScreen, mViewRectOnScreen);
diff --git a/core/java/com/android/internal/widget/FloatingToolbar.java b/core/java/com/android/internal/widget/FloatingToolbar.java
index 594581af8837..66042086e925 100644
--- a/core/java/com/android/internal/widget/FloatingToolbar.java
+++ b/core/java/com/android/internal/widget/FloatingToolbar.java
@@ -737,7 +737,7 @@ public final class FloatingToolbar {
protected void applyTransformation(float interpolatedTime, Transformation t) {
int deltaWidth = (int) (interpolatedTime * (targetWidth - startWidth));
setWidth(mContentContainer, startWidth + deltaWidth);
- if (isRTL()) {
+ if (isInRTLMode()) {
mContentContainer.setX(left);
// Lock the panels in place.
@@ -766,7 +766,7 @@ public final class FloatingToolbar {
}
};
final float overflowButtonStartX = mOverflowButton.getX();
- final float overflowButtonTargetX = isRTL() ?
+ final float overflowButtonTargetX = isInRTLMode() ?
overflowButtonStartX + targetWidth - mOverflowButton.getWidth() :
overflowButtonStartX - targetWidth + mOverflowButton.getWidth();
Animation overflowButtonAnimation = new Animation() {
@@ -774,7 +774,7 @@ public final class FloatingToolbar {
protected void applyTransformation(float interpolatedTime, Transformation t) {
float overflowButtonX = overflowButtonStartX
+ interpolatedTime * (overflowButtonTargetX - overflowButtonStartX);
- float deltaContainerWidth = isRTL() ?
+ float deltaContainerWidth = isInRTLMode() ?
0 :
mContentContainer.getWidth() - startWidth;
float actualOverflowButtonX = overflowButtonX + deltaContainerWidth;
@@ -812,7 +812,7 @@ public final class FloatingToolbar {
protected void applyTransformation(float interpolatedTime, Transformation t) {
int deltaWidth = (int) (interpolatedTime * (targetWidth - startWidth));
setWidth(mContentContainer, startWidth + deltaWidth);
- if (isRTL()) {
+ if (isInRTLMode()) {
mContentContainer.setX(left);
// Lock the panels in place.
@@ -843,7 +843,7 @@ public final class FloatingToolbar {
}
};
final float overflowButtonStartX = mOverflowButton.getX();
- final float overflowButtonTargetX = isRTL() ?
+ final float overflowButtonTargetX = isInRTLMode() ?
overflowButtonStartX - startWidth + mOverflowButton.getWidth() :
overflowButtonStartX + startWidth - mOverflowButton.getWidth();
Animation overflowButtonAnimation = new Animation() {
@@ -851,7 +851,7 @@ public final class FloatingToolbar {
protected void applyTransformation(float interpolatedTime, Transformation t) {
float overflowButtonX = overflowButtonStartX
+ interpolatedTime * (overflowButtonTargetX - overflowButtonStartX);
- float deltaContainerWidth = isRTL() ?
+ float deltaContainerWidth = isInRTLMode() ?
0 :
mContentContainer.getWidth() - startWidth;
float actualOverflowButtonX = overflowButtonX + deltaContainerWidth;
@@ -903,7 +903,7 @@ public final class FloatingToolbar {
R.string.floating_toolbar_close_overflow_description));
// Update x-coordinates depending on RTL state.
- if (isRTL()) {
+ if (isInRTLMode()) {
mContentContainer.setX(mMarginHorizontal); // align left
mMainPanel.setX(0); // align left
mOverflowButton.setX( // align right
@@ -947,7 +947,7 @@ public final class FloatingToolbar {
if (hasOverflow()) {
// Update x-coordinates depending on RTL state.
- if (isRTL()) {
+ if (isInRTLMode()) {
mContentContainer.setX(mMarginHorizontal); // align left
mMainPanel.setX(0); // align left
mOverflowButton.setX(0); // align left
@@ -1087,9 +1087,10 @@ public final class FloatingToolbar {
viewTreeObserver.addOnComputeInternalInsetsListener(mInsetsComputer);
}
- private boolean isRTL() {
- return mContext.getResources().getConfiguration().getLayoutDirection()
- == View.LAYOUT_DIRECTION_RTL;
+ private boolean isInRTLMode() {
+ return mContext.getApplicationInfo().hasRtlSupport()
+ && mContext.getResources().getConfiguration().getLayoutDirection()
+ == View.LAYOUT_DIRECTION_RTL;
}
private boolean hasOverflow() {
@@ -1203,7 +1204,7 @@ public final class FloatingToolbar {
// The positioning of contents in RTL is wrong when the view is first rendered.
// Hide the view and post a runnable to recalculate positions and render the view.
// TODO: Investigate why this happens and fix.
- if (isRTL()) {
+ if (isInRTLMode()) {
mContentContainer.setAlpha(0);
mContentContainer.post(mPreparePopupContentRTLHelper);
}
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index 0059d4df79f7..d3792ade9965 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -371,7 +371,7 @@ public class LockPatternUtils {
return false;
}
} catch (RemoteException re) {
- return true;
+ return false;
}
}
@@ -464,7 +464,7 @@ public class LockPatternUtils {
return false;
}
} catch (RemoteException re) {
- return true;
+ return false;
}
}
diff --git a/core/java/com/android/internal/widget/ResolverDrawerLayout.java b/core/java/com/android/internal/widget/ResolverDrawerLayout.java
index 8b9d5034b0c2..e84cc279b403 100644
--- a/core/java/com/android/internal/widget/ResolverDrawerLayout.java
+++ b/core/java/com/android/internal/widget/ResolverDrawerLayout.java
@@ -245,7 +245,7 @@ public class ResolverDrawerLayout extends ViewGroup {
final float y = ev.getY();
mInitialTouchX = x;
mInitialTouchY = mLastTouchY = y;
- mOpenOnClick = isListChildUnderClipped(x, y) && mCollapsibleHeight > 0;
+ mOpenOnClick = isListChildUnderClipped(x, y) && mCollapseOffset > 0;
}
break;
diff --git a/core/jni/android_hardware_camera2_CameraMetadata.cpp b/core/jni/android_hardware_camera2_CameraMetadata.cpp
index f37fd78f6bdd..48f6b49a14d7 100644
--- a/core/jni/android_hardware_camera2_CameraMetadata.cpp
+++ b/core/jni/android_hardware_camera2_CameraMetadata.cpp
@@ -787,109 +787,16 @@ static jint CameraMetadata_getTagFromKey(JNIEnv *env, jobject thiz, jstring keyN
// exception thrown by ScopedUtfChars
return 0;
}
- size_t keyLength = strlen(key);
-
ALOGV("%s (key = '%s')", __FUNCTION__, key);
- sp<VendorTagDescriptor> vTags = VendorTagDescriptor::getGlobalVendorTagDescriptor();
-
- SortedVector<String8> vendorSections;
- size_t vendorSectionCount = 0;
-
- if (vTags != NULL) {
- vendorSections = vTags->getAllSectionNames();
- vendorSectionCount = vendorSections.size();
- }
-
- // First, find the section by the longest string match
- const char *section = NULL;
- size_t sectionIndex = 0;
- size_t sectionLength = 0;
- size_t totalSectionCount = ANDROID_SECTION_COUNT + vendorSectionCount;
- for (size_t i = 0; i < totalSectionCount; ++i) {
-
- const char *str = (i < ANDROID_SECTION_COUNT) ? camera_metadata_section_names[i] :
- vendorSections[i - ANDROID_SECTION_COUNT].string();
- if (kIsDebug) {
- ALOGV("%s: Trying to match against section '%s'", __FUNCTION__, str);
- }
- if (strstr(key, str) == key) { // key begins with the section name
- size_t strLength = strlen(str);
-
- if (kIsDebug) {
- ALOGV("%s: Key begins with section name", __FUNCTION__);
- }
-
- // section name is the longest we've found so far
- if (section == NULL || sectionLength < strLength) {
- section = str;
- sectionIndex = i;
- sectionLength = strLength;
-
- if (kIsDebug) {
- ALOGV("%s: Found new best section (%s)", __FUNCTION__, section);
- }
- }
- }
- }
-
- // TODO: Make above get_camera_metadata_section_from_name ?
-
- if (section == NULL) {
- jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
- "Could not find section name for key '%s')", key);
- return 0;
- } else {
- ALOGV("%s: Found matched section '%s' (%zu)",
- __FUNCTION__, section, sectionIndex);
- }
-
- // Get the tag name component of the key
- const char *keyTagName = key + sectionLength + 1; // x.y.z -> z
- if (sectionLength + 1 >= keyLength) {
- jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
- "Key length too short for key '%s')", key);
- return 0;
- }
-
- // Match rest of name against the tag names in that section only
uint32_t tag = 0;
- if (sectionIndex < ANDROID_SECTION_COUNT) {
- // Match built-in tags (typically android.*)
- uint32_t tagBegin, tagEnd; // [tagBegin, tagEnd)
- tagBegin = camera_metadata_section_bounds[sectionIndex][0];
- tagEnd = camera_metadata_section_bounds[sectionIndex][1];
-
- for (tag = tagBegin; tag < tagEnd; ++tag) {
- const char *tagName = get_camera_metadata_tag_name(tag);
-
- if (strcmp(keyTagName, tagName) == 0) {
- ALOGV("%s: Found matched tag '%s' (%d)",
- __FUNCTION__, tagName, tag);
- break;
- }
- }
-
- if (tag == tagEnd) {
- jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
- "Could not find tag name for key '%s')", key);
- return 0;
- }
- } else if (vTags != NULL) {
- // Match vendor tags (typically com.*)
- const String8 sectionName(section);
- const String8 tagName(keyTagName);
-
- status_t res = OK;
- if ((res = vTags->lookupTag(tagName, sectionName, &tag)) != OK) {
- jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
- "%s: No vendor tag matches key '%s'", __FUNCTION__, key);
- return 0;
- }
+ sp<VendorTagDescriptor> vTags =
+ VendorTagDescriptor::getGlobalVendorTagDescriptor();
+ status_t res = CameraMetadata::getTagFromName(key, vTags.get(), &tag);
+ if (res != OK) {
+ jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
+ "Could not find tag for key '%s')", key);
}
-
- // TODO: Make above get_camera_metadata_tag_from_name ?
-
return tag;
}
diff --git a/core/jni/android_hardware_location_ContextHubService.cpp b/core/jni/android_hardware_location_ContextHubService.cpp
index 46f76de87a2f..9515a0e336aa 100644
--- a/core/jni/android_hardware_location_ContextHubService.cpp
+++ b/core/jni/android_hardware_location_ContextHubService.cpp
@@ -423,7 +423,7 @@ static int startLoadAppTxn(uint64_t appId, int hubHandle) {
txnInfo->appInfo.num_mem_ranges = 0;
txnInfo->appInfo.version = -1; // Awaited
- if (!addTxn(CONTEXT_HUB_LOAD_APP, txnInfo)) {
+ if (addTxn(CONTEXT_HUB_LOAD_APP, txnInfo) != 0) {
return_id(instanceId);
free(txnInfo);
return -1;
@@ -726,6 +726,7 @@ static int handle_os_message(uint32_t msgType, uint32_t hubHandle,
if (isValidOsStatus(msg, msgLen, &rsp)) {
rsp.result = 0;
ALOGW("Context Hub handle %d restarted", hubHandle);
+ closeTxn();
passOnOsResponse(hubHandle, msgType, &rsp, nullptr, 0);
invalidateNanoApps(hubHandle);
query_hub_for_apps(ALL_APPS, hubHandle);
@@ -1012,10 +1013,12 @@ static jint nativeSendMessage(JNIEnv *env, jobject instance, jintArray header_,
if (msgType == CONTEXT_HUB_LOAD_APP) {
if (startLoadAppTxn(appId, hubHandle) != 0) {
+ ALOGW("Cannot Start Load Transaction");
return -1;
}
} else if (msgType == CONTEXT_HUB_UNLOAD_APP) {
if (startUnloadAppTxn(appInstanceHandle) != 0) {
+ ALOGW("Cannot Start UnLoad Transaction");
return -1;
}
}
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 8388f05fd131..4b66f70dfd20 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -49,6 +49,7 @@
<protected-broadcast android:name="android.intent.action.PACKAGE_VERIFIED" />
<protected-broadcast android:name="android.intent.action.PACKAGES_SUSPENDED" />
<protected-broadcast android:name="android.intent.action.PACKAGES_UNSUSPENDED" />
+ <protected-broadcast android:name="android.intent.action.ACTION_PREFERRED_ACTIVITY_CHANGED" />
<protected-broadcast android:name="android.intent.action.UID_REMOVED" />
<protected-broadcast android:name="android.intent.action.QUERY_PACKAGE_RESTART" />
<protected-broadcast android:name="android.intent.action.CONFIGURATION_CHANGED" />
diff --git a/core/res/res/layout-watch/alert_dialog_material.xml b/core/res/res/layout-watch/alert_dialog_material.xml
index e627d42b5fb4..a8bb204a51ff 100644
--- a/core/res/res/layout-watch/alert_dialog_material.xml
+++ b/core/res/res/layout-watch/alert_dialog_material.xml
@@ -21,6 +21,7 @@
android:layout_height="match_parent">
<ScrollView
android:id="@+id/scrollView"
+ android:fillViewport="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
@@ -33,7 +34,8 @@
android:paddingRight="?dialogPreferredPadding"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:id="@+id/topPanel">
+ android:id="@+id/topPanel"
+ android:minHeight="@dimen/dialog_list_padding_top_no_title">
<include android:id="@+id/title_template"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -68,41 +70,33 @@
<!-- Button Panel -->
<FrameLayout
android:id="@+id/buttonPanel"
+ android:minHeight="@dimen/dialog_list_padding_bottom_no_buttons"
+ android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:divider="?android:attr/dividerHorizontal"
- android:showDividers="beginning"
- android:dividerPadding="0dip"
android:orientation="vertical"
android:minHeight="@dimen/alert_dialog_button_bar_height"
android:paddingBottom="?dialogPreferredPadding"
style="?android:attr/buttonBarStyle"
- android:layoutDirection="locale"
android:measureWithLargestChild="true">
<Button android:id="@+id/button1"
android:layout_gravity="start"
android:layout_weight="1"
- android:layout_marginLeft="?dialogPreferredPadding"
- android:layout_marginRight="?dialogPreferredPadding"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button android:id="@+id/button3"
android:layout_gravity="start"
android:layout_weight="1"
- android:layout_marginLeft="?dialogPreferredPadding"
- android:layout_marginRight="?dialogPreferredPadding"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button android:id="@+id/button2"
android:layout_gravity="start"
android:layout_weight="1"
- android:layout_marginLeft="?dialogPreferredPadding"
- android:layout_marginRight="?dialogPreferredPadding"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index d5c1dd89c71e..923dea192ef2 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimeer tans berging."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android gradeer tans op"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sommige programme sal dalk nie behoorlik werk voordat die opgradering voltooi is nie"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> gradeer tans op …"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimeer program <xliff:g id="NUMBER_0">%1$d</xliff:g> van <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Berei tans <xliff:g id="APPNAME">%1$s</xliff:g> voor."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Begin programme."</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index a90d0564a692..aca5cc5fa276 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"ማከማቻን በማመቻቸት ላይá¢"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android በማላቅ ላይ áŠá‹"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"አንዳንድ መተáŒá‰ áˆªá‹«á‹Žá‰½ ማላበእስኪጠናቀቅ ድረስ በአáŒá‰£á‰¡ ላይሰሩ ይችላሉ"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> በማላቅ ላይ…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"መተáŒá‰ áˆªá‹«á‹Žá‰½ በአáŒá‰£á‰¡ በመጠቀሠላይ <xliff:g id="NUMBER_0">%1$d</xliff:g> ከ <xliff:g id="NUMBER_1">%2$d</xliff:g> á¡á¡"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g>ን ማዘጋጀትá¢"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"መተáŒá‰ áˆªá‹«á‹Žá‰½áŠ• በማስጀመር ላይá¡á¡"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 10cb7c5fa75d..2d8221f3eafe 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -1116,8 +1116,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"جار٠تحسين السعة التخزينية."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"â€Ø¬Ø§Ø±Ù ترقية Android"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"قد لا تعمل بعض التطبيقات بشكل مناسب إلا بعد انتهاء الترقية"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"جار٠ترقية <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"جار٠تحسين التطبيق <xliff:g id="NUMBER_0">%1$d</xliff:g> من <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"جار٠تحضير <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"بدء التطبيقات."</string>
diff --git a/core/res/res/values-az-rAZ/strings.xml b/core/res/res/values-az-rAZ/strings.xml
index 53a238b54280..f922c7fca438 100644
--- a/core/res/res/values-az-rAZ/strings.xml
+++ b/core/res/res/values-az-rAZ/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Yaddaş optimallaşdırılır."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android təkmilləşdirilir"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Güncəllənmə tamamlanana kimi bəzi tətbiqlər düzgün işləməyə bilər"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> təkmilləşdirilir…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> əddədən <xliff:g id="NUMBER_0">%1$d</xliff:g> tətbiq optimallaşır."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> proqramının hazırlanması."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Tətbiqlər başladılır."</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 54c471004209..d80032016862 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Хранилището Ñе оптимизира."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android Ñе надÑтройва"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"ÐÑкои Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ðµ да не работÑÑ‚ правилно, докато надÑтройването не завърши"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> Ñе надÑтройва…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизира Ñе приложение <xliff:g id="NUMBER_0">%1$d</xliff:g> от <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> Ñе подготвÑ."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ПриложениÑта Ñе Ñтартират."</string>
diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml
index 292fefd42e44..79ea5864ef05 100644
--- a/core/res/res/values-bn-rBD/strings.xml
+++ b/core/res/res/values-bn-rBD/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"সঞà§à¦šà¦¯à¦¼à¦¸à§à¦¥à¦¾à¦¨ অপà§à¦Ÿà¦¿à¦®à¦¾à¦‡à¦œ করা হচà§à¦›à§‡à§·"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android আপগà§à¦°à§‡à¦¡ করা হচà§à¦›à§‡"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"আপগà§à¦°à§‡à¦¡ সমà§à¦ªà¦¨à§à¦¨ না হওয়া পরà§à¦¯à¦¨à§à¦¤ কিছৠঅà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশান সঠিকভাবে কাজ নাও করতে পারে"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> আপগà§à¦°à§‡à¦¡ করা হচà§à¦›à§‡â€¦"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>টির মধà§à¦¯à§‡ <xliff:g id="NUMBER_0">%1$d</xliff:g>টি অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশান অপà§à¦Ÿà¦¿à¦®à¦¾à¦‡à¦œ করা হচà§à¦›à§‡à§·"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> পà§à¦°à¦¸à§à¦¤à§à¦¤ করা হচà§à¦›à§‡à§·"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশানগà§à¦²à¦¿ শà§à¦°à§ করা হচà§à¦›à§‡à§·"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 789006818a31..fffcc747d51a 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"S\'està optimitzant l\'emmagatzematge."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android s\'està actualitzant"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Pot ser que algunes aplicacions no funcionin correctament fins que no es completi l\'actualització"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"S\'està actualitzant <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"S\'està optimitzant l\'aplicació <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"S\'està preparant <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"S\'estan iniciant les aplicacions."</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index f5e74ce47e7b..e7a7b60f269e 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -1070,8 +1070,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Probíhá optimalizace úložiště."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se upgraduje"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"PÅ™ed dokonÄením upgradu nemusí nÄ›které aplikace fungovat správnÄ›"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Aplikace <xliff:g id="APPLICATION">%1$s</xliff:g> se upgraduje…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimalizování aplikace <xliff:g id="NUMBER_0">%1$d</xliff:g> z <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Příprava aplikace <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Spouštění aplikací."</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 446c950cb66b..faa11be8ae13 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Lageret optimeres."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android opgraderes"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Nogle apps fungerer muligvis ikke korrekt, før opgraderingen er gennemført"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> opgraderer…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimerer app <xliff:g id="NUMBER_0">%1$d</xliff:g> ud af <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Forbereder <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ã…bner dine apps."</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 25f3912a2087..e98eda737838 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Speicher wird optimiert"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android wird aktualisiert"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Einige Apps funktionieren unter Umständen nicht richtig, bis das Upgrade abgeschlossen ist"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Für <xliff:g id="APPLICATION">%1$s</xliff:g> wird gerade ein Upgrade ausgeführt…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"App <xliff:g id="NUMBER_0">%1$d</xliff:g> von <xliff:g id="NUMBER_1">%2$d</xliff:g> wird optimiert..."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> wird vorbereitet"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps werden gestartet..."</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 3e220da2df44..2ceaa7a5bd77 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Βελτιστοποίηση Î±Ï€Î¿Î¸Î·ÎºÎµÏ…Ï„Î¹ÎºÎ¿Ï Ï‡ÏŽÏου."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Το Android αναβαθμίζεται"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"ΟÏισμένες εφαÏμογές ενδέχεται να μην λειτουÏγοÏν σωστά μέχÏι την ολοκλήÏωση της αναβάθμισης"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Η εφαÏμογή <xliff:g id="APPLICATION">%1$s</xliff:g> αναβαθμίζεται…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Βελτιστοποίηση της εφαÏμογής <xliff:g id="NUMBER_0">%1$d</xliff:g> από <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"ΠÏοετοιμασία <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ΈναÏξη εφαÏμογών."</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 60e9e86c576a..3cf327bacd7a 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimising storage."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android is upgrading"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Some apps may not work properly until the upgrade finishes"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> is upgrading…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimising app <xliff:g id="NUMBER_0">%1$d</xliff:g> of <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 60e9e86c576a..3cf327bacd7a 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimising storage."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android is upgrading"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Some apps may not work properly until the upgrade finishes"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> is upgrading…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimising app <xliff:g id="NUMBER_0">%1$d</xliff:g> of <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 60e9e86c576a..3cf327bacd7a 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimising storage."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android is upgrading"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Some apps may not work properly until the upgrade finishes"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> is upgrading…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimising app <xliff:g id="NUMBER_0">%1$d</xliff:g> of <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index c5dc2109a161..0e59e050d04c 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizando almacenamiento"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se está actualizando"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Es posible que algunas apps no funcionen correctamente hasta que termine la actualización"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Se está actualizando <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizando la aplicación <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicaciones"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 9e1859bc4df8..946a23a668b9 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizando almacenamiento."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Actualizando Android"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Es posible que algunas aplicaciones no funcionen correctamente hasta que finalice la actualización"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> se está actualizando…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizando aplicación <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>..."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicaciones"</string>
diff --git a/core/res/res/values-eu-rES/strings.xml b/core/res/res/values-eu-rES/strings.xml
index 70ee2833719c..cf3cdf7810ec 100644
--- a/core/res/res/values-eu-rES/strings.xml
+++ b/core/res/res/values-eu-rES/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Memoria optimizatzen."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android bertsioa berritzen ari gara"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Aplikazio batzuek agian ez dute behar bezala funtzionatuko bertsioa berritzen amaitu arte"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> bertsio-berritzen ari da…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g> aplikazio optimizatzen."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> prestatzen."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Aplikazioak abiarazten."</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index aa9c1484b4b2..638b49e0d4e7 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"بهینه‌سازی ÙØ¶Ø§ÛŒ ذخیره‌سازی."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"â€Android درحال ارتقا است"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"تا پایان ارتقا، ممکن است برخی از برنامه‌ها به‌درستی کار نکنند."</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> درحال ارتقا است...."</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"در حال بهینه‌سازی برنامهٔ <xliff:g id="NUMBER_0">%1$d</xliff:g> از <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"آماده‌سازی <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"در حال آغاز برنامه‌ها."</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 1aca741afdc4..75d44f5d3bc2 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimoidaan tallennustilaa."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Androidia päivitetään"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kaikki sovellukset eivät ehkä toimi oikein, ennen kuin päivitys on valmis."</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> päivittyy…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimoidaan sovellusta <xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Valmistellaan: <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Käynnistetään sovelluksia."</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 7b194a09ead6..5d4210ac2f7b 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimisation du stockage."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Installation de la m. à niveau d\'Android"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Il se peut que certaines applications ne fonctionnent pas correctement jusqu\'à ce que la mise à niveau soit terminée"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Mise à niveau de <xliff:g id="APPLICATION">%1$s</xliff:g> en cours…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimisation de l\'application <xliff:g id="NUMBER_0">%1$d</xliff:g> sur <xliff:g id="NUMBER_1">%2$d</xliff:g>…"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Préparation de <xliff:g id="APPNAME">%1$s</xliff:g> en cours…"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Lancement des applications…"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index ff0876e24b76..bbe2223f418e 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimisation du stockage en cours…"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Mise à jour d\'Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Certaines applications peuvent ne pas fonctionner correctement jusqu\'à ce que la mise à jour soit terminée."</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Mise à jour de l\'application <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimisation de l\'application <xliff:g id="NUMBER_0">%1$d</xliff:g> sur <xliff:g id="NUMBER_1">%2$d</xliff:g>…"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Préparation de <xliff:g id="APPNAME">%1$s</xliff:g> en cours…"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Lancement des applications…"</string>
diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml
index abe09ded063d..96fb37c9b7a7 100644
--- a/core/res/res/values-gl-rES/strings.xml
+++ b/core/res/res/values-gl-rES/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizando almacenamento."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Estase actualizando Android"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"É posible que algunhas aplicacións non funcionen correctamente ata que finalice o proceso de actualización"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Actualizando <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizando aplicación <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicacións."</string>
diff --git a/core/res/res/values-gu-rIN/strings.xml b/core/res/res/values-gu-rIN/strings.xml
index 1589426d4412..2982c857402d 100644
--- a/core/res/res/values-gu-rIN/strings.xml
+++ b/core/res/res/values-gu-rIN/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"સંગà«àª°àª¹ ઓપà«àªŸàª¿àª®àª¾àª‡àª કરી રહà«àª¯à«àª‚ છે."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android અપગà«àª°à«‡àª¡ થઈ રહà«àª¯à«àª‚ છે"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"અપગà«àª°à«‡àª¡ સમાપà«àª¤ ન થાય તà«àª¯àª¾àª‚ સà«àª§à«€ કેટલીક àªàªªà«àª²àª¿àª•ેશનો કદાચ યોગà«àª¯ રીતે કામ ન કરે"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> અપગà«àª°à«‡àª¡ થઈ રહી છે…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> માંથી <xliff:g id="NUMBER_0">%1$d</xliff:g> àªàªªà«àª²àª¿àª•ેશન ઓપà«àªŸàª¿àª®àª¾àª‡àª કરી રહà«àª¯à«àª‚ છે."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> તૈયાર કરી રહà«àª¯à«àª‚ છે."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"àªàªªà«àª²àª¿àª•ેશનો શરૂ કરી રહà«àª¯àª¾àª‚ છે."</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 7a81b476863f..722788042ae0 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"मेमोरी ऑपà¥â€à¤Ÿà¤¿à¤®à¤¾à¤‡à¤œà¤¼ हो रही है."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android अपगà¥à¤°à¥‡à¤¡ हो रहा है"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"जब तक अपगà¥à¤°à¥‡à¤¡ पूरा नहीं हो जाता, तब तक संभव है कि कà¥à¤› à¤à¤ªà¥à¤²à¤¿à¤•ेशन ठीक से कारà¥à¤¯ ना करें"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> अपगà¥à¤°à¥‡à¤¡ हो रहा है…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> में से <xliff:g id="NUMBER_0">%1$d</xliff:g> à¤à¤ªà¥à¤¸ अनà¥à¤•ूलित हो रहा है."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> तैयार हो रहा है."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"à¤à¤ªà¥à¤¸ पà¥à¤°à¤¾à¤°à¤‚भ होने वाले हैं"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 9ff8363156c9..71337e23b6df 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -1047,8 +1047,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimiziranje pohrane."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se nadograđuje"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Neke aplikacije možda neće funkcionirati pravilno dok nadogradnja ne završi"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Nadogradnja aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimiziranje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Pripremanje aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml
index 76bc42e8c405..94cbd8002675 100644
--- a/core/res/res/values-hy-rAM/strings.xml
+++ b/core/res/res/values-hy-rAM/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"ÕŠÕ¡Õ°Õ¥Õ½Õ¿Õ« Ö…ÕºÕ¿Õ«Õ´Õ¡Õ¬Õ¡ÖÕ¸Ö‚Õ´:"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android-Õ¨ Õ¶Õ¸Ö€Õ¡ÖÕ¾Õ¸Ö‚Õ´ Õ§"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ§Õ Õ¸Ö€Õ¸Õ· Õ°Õ¡Õ¾Õ¥Õ¬Õ¾Õ¡Õ®Õ¶Õ¥Ö€ Õ´Õ«Õ¶Õ¹Ö‡ Õ¶Õ¸Ö€Õ¡ÖÕ´Õ¡Õ¶ Õ¡Õ¾Õ¡Ö€Õ¿Õ¨ Õ³Õ«Õ·Õ¿ Õ¹Õ¡Õ·Õ­Õ¡Õ¿Õ¥Õ¶"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> Õ°Õ¡Õ¾Õ¥Õ¬Õ¾Õ¡Õ®Õ¨ Õ¶Õ¸Ö€Õ¡ÖÕ¾Õ¸Ö‚Õ´ է…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Õ•ÕºÕ¿Õ«Õ´Õ¡Õ¬Õ¡ÖÕ¾Õ¸Ö‚Õ´ Õ§ Õ°Õ¡Õ¾Õ¥Õ¬Õ¾Õ¡Õ® <xliff:g id="NUMBER_0">%1$d</xliff:g>-Õ¨ <xliff:g id="NUMBER_1">%2$d</xliff:g>-Õ«Ö:"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> Õ°Õ¡Õ¾Õ¥Õ¬Õ¾Õ¡Õ®Õ¨ ÕºÕ¡Õ¿Ö€Õ¡Õ½Õ¿Õ¾Õ¸Ö‚Õ´ Õ§:"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Õ€Õ¡Õ¾Õ¥Õ¬Õ¾Õ¡Õ®Õ¶Õ¥Ö€Õ¨ Õ´Õ¥Õ¯Õ¶Õ¡Ö€Õ¯Õ¸Ö‚Õ´ Õ¥Õ¶:"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index d780b8c66232..3686cb14b573 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Mengoptimalkan penyimpanan."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android sedang meningkatkan versi"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Beberapa aplikasi mungkin tidak berfungsi dengan baik jika peningkatan versi belum selesai"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Versi <xliff:g id="APPLICATION">%1$s</xliff:g> sedang ditingkatkan…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Mengoptimalkan aplikasi <xliff:g id="NUMBER_0">%1$d</xliff:g> dari <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Menyiapkan <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulai aplikasi."</string>
diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml
index 33b47832be3e..20a5b170bb7c 100644
--- a/core/res/res/values-is-rIS/strings.xml
+++ b/core/res/res/values-is-rIS/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Fínstillir geymslu."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android er að uppfæra"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Hugsanlega virka sum forrit ekki fyrr en uppfærslunni lýkur"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> uppfærir…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Fínstillir forrit <xliff:g id="NUMBER_0">%1$d</xliff:g> af <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Undirbýr <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ræsir forrit."</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index d03b91d69a41..d89bf1b81733 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Ottimizzazione archiviazione."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Aggiornamento di Android in corso"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alcune app potrebbero non funzionare correttamente fino al completamento dell\'upgrade"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Upgrade dell\'app <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Ottimizzazione applicazione <xliff:g id="NUMBER_0">%1$d</xliff:g> di <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> in preparazione."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Avvio applicazioni."</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 6df7a0fc3505..69077736c296 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -1070,8 +1070,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"מתבצעת ×ופטימיזציה של ×”×חסון."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"â€Android מבצע שדרוג"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"ייתכן ש×פליקציות מסוימות ×œ× ×™×¤×¢×œ×• כר×וי עד ×¡×™×•× ×”×©×“×¨×•×’"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> מבצעת שדרוג…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"מבצע ×ופטימיזציה של ×פליקציה <xliff:g id="NUMBER_0">%1$d</xliff:g> מתוך <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"מכין ×ת <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"מפעיל ×פליקציות."</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index e08520e803be..2327c7222dfb 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"ストレージを最é©åŒ–ã—ã¦ã„ã¾ã™ã€‚"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android ã®ã‚¢ãƒƒãƒ—グレード中"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"アップグレードãŒå®Œäº†ã™ã‚‹ã¾ã§ä¸€éƒ¨ã®ã‚¢ãƒ—ãƒªãŒæ­£å¸¸ã«å‹•作ã—ãªã„å¯èƒ½æ€§ãŒã‚りã¾ã™"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"「<xliff:g id="APPLICATION">%1$s</xliff:g>ã€ã‚’アップグレードã—ã¦ã„ã¾ã™â€¦"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>個中<xliff:g id="NUMBER_0">%1$d</xliff:g>個ã®ã‚¢ãƒ—リを最é©åŒ–ã—ã¦ã„ã¾ã™ã€‚"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g>をペア設定ã—ã¦ã„ã¾ã™ã€‚"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"アプリを起動ã—ã¦ã„ã¾ã™ã€‚"</string>
diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml
index 9ab0f2b20a0d..e22602a2d64e 100644
--- a/core/res/res/values-ka-rGE/strings.xml
+++ b/core/res/res/values-ka-rGE/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"მეხსიერების áƒáƒžáƒ¢áƒ˜áƒ›áƒ˜áƒ–ირებáƒ."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android áƒáƒ®áƒáƒš ვერსიáƒáƒ–ე გáƒáƒ“áƒáƒ“ის"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"áƒáƒ®áƒáƒš ვერსიáƒáƒ–ე გáƒáƒ“áƒáƒ¡áƒ•ლის დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბáƒáƒ›áƒ“ე, ზáƒáƒ’იერთმრáƒáƒžáƒ›áƒ შეიძლებრáƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒáƒ“ იმუშáƒáƒáƒ¡"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> áƒáƒ®áƒáƒš ვერსიáƒáƒ–ე გáƒáƒ“áƒáƒ“ის…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"მიმდინáƒáƒ áƒ”áƒáƒ‘ს áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბის áƒáƒžáƒ¢áƒ˜áƒ›áƒ˜áƒ–áƒáƒªáƒ˜áƒ. დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბულირ<xliff:g id="NUMBER_0">%1$d</xliff:g>, სულ <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"ემზáƒáƒ“ებრ<xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"áƒáƒžáƒ”ბის ჩáƒáƒ áƒ—ვáƒ"</string>
diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml
index 49d713919643..88c1136485b3 100644
--- a/core/res/res/values-kk-rKZ/strings.xml
+++ b/core/res/res/values-kk-rKZ/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Қойманы оңтайландыру."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android жаңартылуда"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Жаңарту аÑқталғанға дейін кейбір қолданбалар Ð´Ò±Ñ€Ñ‹Ñ Ð¶Ò±Ð¼Ñ‹Ñ Ñ–Ñтемеуі мүмкін"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> жаңартылуда…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ішінен <xliff:g id="NUMBER_0">%1$d</xliff:g> қолданба оңтайландырылуда."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> дайындалуда."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Қолданбалар Ñ–Ñке қоÑылуда."</string>
diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml
index 3ffa5612eebb..1bf6ae528e64 100644
--- a/core/res/res/values-km-rKH/strings.xml
+++ b/core/res/res/values-km-rKH/strings.xml
@@ -1026,8 +1026,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"កំពុងធ្វើឲ្យឧបករណáŸáž•្ទុកមានប្រសិទ្ធភាព។"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android កំពុងអាប់គ្រáŸáž..."</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"កម្មវិធីមួយចំនួនអាចនឹងមិនដំណើរការប្រក្រážáž¸áž“ោះទ០រហូážážŠáž›áŸ‹áž€áž¶ážšáž¢áž¶áž”់គ្រáŸážáž”ញ្ចប់"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> អាប់គ្រáŸážâ€¦"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"ធ្វើ​ឲ្យ​កម្មវិធី​ប្រសើរ​ឡើង <xliff:g id="NUMBER_0">%1$d</xliff:g> នៃ <xliff:g id="NUMBER_1">%2$d</xliff:g> ។"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"កំពុងរៀបចំ <xliff:g id="APPNAME">%1$s</xliff:g>។"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ចាប់ផ្ដើម​កម្មវិធី។"</string>
diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml
index 7960cbab7a09..99739727bee9 100644
--- a/core/res/res/values-kn-rIN/strings.xml
+++ b/core/res/res/values-kn-rIN/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"ಸಂಗà³à²°à²¹à²£à³†à²¯à²¨à³à²¨à³ ಆಪà³à²Ÿà²¿à²®à³ˆà²¸à³ ಮಾಡಲಾಗà³à²¤à³à²¤à²¿à²¦à³†."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android ಅಪà³â€Œà²—à³à²°à³‡à²¡à³â€Œ ಮಾಡಲಾಗà³à²¤à³à²¤à²¿à²¦à³†"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"ಅಪà³â€Œà²—à³à²°à³‡à²¡à³ ಮà³à²—ಿಯà³à²µ ತನಕ ಕೆಲವೠಅಪà³à²²à²¿à²•ೇಶನà³â€Œà²—ಳೠಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡದಿರಬಹà³à²¦à³"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ಅಪà³â€Œà²—à³à²°à³‡à²¡à³ ಆಗà³à²¤à³à²¤à²¿à²¦à³†..."</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ರಲà³à²²à²¿ <xliff:g id="NUMBER_0">%1$d</xliff:g> ಅಪà³à²²à²¿à²•ೇಶನà³â€Œ ಆಪà³à²Ÿà²¿à²®à³ˆà²¸à³ ಮಾಡಲಾಗà³à²¤à³à²¤à²¿à²¦à³†."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> ಸಿದà³à²§à²ªà²¡à²¿à²¸à²²à²¾à²—à³à²¤à³à²¤à²¿à²¦à³†."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ಅಪà³à²²à²¿à²•ೇಶನà³â€Œà²—ಳನà³à²¨à³ ಪà³à²°à²¾à²°à²‚ಭಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†."</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 2e58e82d899a..8392b8de458e 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"저장소 최ì í™” 중"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android 업그레ì´ë“œ 중"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"특정 ì•±ì€ ì—…ê·¸ë ˆì´ë“œê°€ ì™„ë£Œë  ë•Œê¹Œì§€ 제대로 ìž‘ë™í•˜ì§€ ì•Šì„ ìˆ˜ 있습니다."</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> 업그레ì´ë“œ 중…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"앱 <xliff:g id="NUMBER_1">%2$d</xliff:g>ê°œ 중 <xliff:g id="NUMBER_0">%1$d</xliff:g>ê°œ 최ì í™” 중"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> 준비 중..."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ì•±ì„ ì‹œìž‘í•˜ëŠ” 중입니다."</string>
diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml
index 5ba942726ba8..367652282208 100644
--- a/core/res/res/values-ky-rKG/strings.xml
+++ b/core/res/res/values-ky-rKG/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Сактагыч ыңгайлаштырылууда."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android жаңыртылууда"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Жаңыртуу аÑгына чыкмайынча айрым колдонмолор талаптагыдай иштебей калышы мүмкүн"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> жаңыртылууда..."</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ичинен <xliff:g id="NUMBER_0">%1$d</xliff:g> колдонмо ыңгайлаштырылууда."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> даÑрдалууда."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Колдонмолорду иштетип баштоо"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index c8e35329ff4b..8d67b18b6b04 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -1070,8 +1070,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizuojama saugykla."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"„Android“ naujovinama"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kai kurios programos gali tinkamai neveikti, kol naujovinimo procesas nebus baigtas"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"„<xliff:g id="APPLICATION">%1$s</xliff:g>“ naujovinama..."</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizuojama <xliff:g id="NUMBER_0">%1$d</xliff:g> progr. iš <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Ruošiama „<xliff:g id="APPNAME">%1$s</xliff:g>“."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Paleidžiamos programos."</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index e48261810dcf..d18a59b79ab7 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -1047,8 +1047,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Notiek krÄtuves optimizēšana."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Notiek Android jauninÄÅ¡ana..."</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"KamÄ“r jauninÄÅ¡ana nebÅ«s pabeigta, dažas lietotnes, iespÄ“jams, nedarbosies pareizi."</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Notiek lietotnes <xliff:g id="APPLICATION">%1$s</xliff:g> jauninÄÅ¡ana…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Tiek optimizēta <xliff:g id="NUMBER_0">%1$d</xliff:g>. lietotne no <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Notiek lietotnes <xliff:g id="APPNAME">%1$s</xliff:g> sagatavošana."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Notiek lietotņu palaišana."</string>
diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml
index 4ebd66bb1ebb..913099045810 100644
--- a/core/res/res/values-mk-rMK/strings.xml
+++ b/core/res/res/values-mk-rMK/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Оптимизирање на Ñкладирањето."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android Ñе ажурира"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Ðекои апликации може да не работат правилно додека не Ñе заврши надградбата"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> Ñе надградува…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Се оптимизира апликација <xliff:g id="NUMBER_0">%1$d</xliff:g> од <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Се подготвува <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Се Ñтартуваат апликациите."</string>
diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml
index ac9018cf9559..33764f577625 100644
--- a/core/res/res/values-ml-rIN/strings.xml
+++ b/core/res/res/values-ml-rIN/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"à´¸àµà´±àµà´±àµ‹à´±àµ‡à´œàµ à´’à´ªàµâ€Œà´±àµà´±à´¿à´®àµˆà´¸àµ ചെയàµà´¯àµà´¨àµà´¨àµ."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android à´…à´ªàµà´—àµà´°àµ‡à´¡àµà´šàµ†à´¯àµà´¯àµà´¨àµà´¨àµ"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"à´…à´ªàµâ€Œà´—àµà´°àµ‡à´¡àµ പൂർതàµà´¤à´¿à´¯à´¾à´•àµà´¨àµà´¨à´¤àµ വരെ à´šà´¿à´² ആപàµâ€Œà´¸àµ ശരിയായി à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´šàµà´šàµ‡à´•àµà´•à´¿à´²àµà´²"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> à´…à´ªàµà´—àµà´°àµ‡à´¡àµ ചെയàµà´¯àµà´¨àµà´¨àµâ€¦"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g> à´…à´ªàµà´²à´¿à´•àµà´•േഷൻ à´“à´ªàµà´±àµà´±à´¿à´®àµˆà´¸àµ ചെയàµà´¯àµà´¨àµà´¨àµ."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> തയàµà´¯à´¾à´±à´¾à´•àµà´•àµà´¨àµà´¨àµ."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"à´…à´ªàµà´²à´¿à´•àµà´•േഷനàµà´•ൾ ആരംഭികàµà´•àµà´¨àµà´¨àµ."</string>
diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml
index 0b55a7a73ff1..543f4cca8d1b 100644
--- a/core/res/res/values-mn-rMN/strings.xml
+++ b/core/res/res/values-mn-rMN/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Хадгалалтыг Ñайжруулж байна."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Ðндройдыг дÑвшүүлж байна"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"ШинÑчилж дууÑтал зарим апп Ñ…Ñвийн Ð±ÑƒÑ Ð°Ð¶Ð¸Ð»Ð»Ð°Ð¶ болзошгүй"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g>-г Ñайжруулж байна…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>-н <xliff:g id="NUMBER_0">%1$d</xliff:g> апп-г тохируулж байна."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"БÑлдÑж байна <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ðпп-г Ñхлүүлж байна."</string>
diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml
index a1269e19301f..90bbc6b3b427 100644
--- a/core/res/res/values-mr-rIN/strings.xml
+++ b/core/res/res/values-mr-rIN/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"संचयन ऑपà¥à¤Ÿà¤¿à¤®à¤¾à¤‡à¤ करत आहे."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android शà¥à¤°à¥‡à¤£à¥€à¤¸à¥à¤§à¤¾à¤°à¤¿à¤¤ होत आहे"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"शà¥à¤°à¥‡à¤£à¥€à¤¸à¥à¤§à¤¾à¤°à¤£à¤¾ पूरà¥à¤£ होईपरà¥à¤¯à¤‚त काही अॅपà¥à¤¸ योगà¥à¤¯à¤°à¤¿à¤¤à¥à¤¯à¤¾ कारà¥à¤¯ करणार नाहीत"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> शà¥à¤°à¥‡à¤£à¥€à¤¸à¥à¤§à¤¾à¤°à¤¿à¤¤ करीत आहे…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> पैकी <xliff:g id="NUMBER_0">%1$d</xliff:g> अॅप ऑपà¥à¤Ÿà¤¿à¤®à¤¾à¤‡à¤ करत आहे."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> तयार करीत आहे."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"अॅपà¥à¤¸ पà¥à¤°à¤¾à¤°à¤‚भ करत आहे."</string>
diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml
index 3f9e156ff3f0..98f00ccdd802 100644
--- a/core/res/res/values-ms-rMY/strings.xml
+++ b/core/res/res/values-ms-rMY/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Mengoptimumkan storan."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android sedang ditingkatkan"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sesetengah apl mungkin tidak berfungsi dengan betul sehingga peningkatan selesai"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> sedang ditingkatkan…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Mengoptimumkan apl <xliff:g id="NUMBER_0">%1$d</xliff:g> daripada <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Menyediakan <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulakan apl."</string>
diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml
index d7d59021ad44..e95906576c89 100644
--- a/core/res/res/values-my-rMM/strings.xml
+++ b/core/res/res/values-my-rMM/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"သိုလှောင်မှုအား ပြုပြင်á€á€¼á€„်းá‹"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android ကိုအဆင့်မြှင့်á€á€„်နေပါသည်"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"အဆင့်မြှင့်á€á€„်á€á€¼á€„်း မပြီးဆုံးသေးသá အá€á€»á€­á€¯á€·á€¡á€€á€ºá€•်များကို ကောင်းမွန်စွာအသုံးပြုနိုင်ဦးမည် မဟုá€á€ºá€•ါ"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ကို အဆင့်မြှင့်á€á€„်နေပါသည်…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> ထဲက အက်ပ်<xliff:g id="NUMBER_1">%2$d</xliff:g>ကို ဆီလျော်အောင် လုပ်နေ"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> အားပြင်ဆင်နေသည်á‹"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"အက်ပ်များကို စá€á€„်နေ"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index d2e4d7162da4..f45d26dfc6c6 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimaliser lagring."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android oppgraderes"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Noen apper fungerer kanskje ikke skikkelig før oppgraderingen er fullført"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> oppgraderes …"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimaliserer app <xliff:g id="NUMBER_0">%1$d</xliff:g> av <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Forbereder <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starter apper."</string>
diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml
index b3de0aaec8c4..d657459276e4 100644
--- a/core/res/res/values-ne-rNP/strings.xml
+++ b/core/res/res/values-ne-rNP/strings.xml
@@ -1030,8 +1030,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"भणà¥à¤¡à¤¾à¤°à¤£ अनà¥à¤•ूलन गरà¥à¤¦à¥ˆà¥¤"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android को सà¥à¤¤à¤°à¤µà¥ƒà¤¦à¥à¤§à¤¿ हà¥à¤à¤¦à¥ˆà¤›"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"सà¥à¤¤à¤°à¤µà¥ƒà¤¦à¥à¤§à¤¿ समà¥à¤ªà¤¨à¥à¤¨ नभà¤à¤¸à¤®à¥à¤® केही अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—हरू रामà¥à¤°à¤°à¥€ काम नगरà¥à¤¨ सकà¥à¤›à¤¨à¥"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> को सà¥à¤¤à¤°à¤µà¥ƒà¤¦à¥à¤§à¤¿ हà¥à¤à¤¦à¥ˆà¤›â€¦"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— अनà¥à¤•à¥à¤² हà¥à¤à¤¦à¥ˆ <xliff:g id="NUMBER_0">%1$d</xliff:g> को <xliff:g id="NUMBER_1">%2$d</xliff:g>।"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> तयारी गरà¥à¤¦à¥ˆà¥¤"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"सà¥à¤°à¥à¤µà¤¾à¤¤ अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—हरू।"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index f23d046595dc..b4d9f6e9b6e7 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Opslagruimte wordt geoptimaliseerd."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android wordt geüpgraded"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sommige apps werken mogelijk pas correct nadat de upgrade is voltooid"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> upgraden…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"App <xliff:g id="NUMBER_0">%1$d</xliff:g> van <xliff:g id="NUMBER_1">%2$d</xliff:g> optimaliseren."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> voorbereiden."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps starten."</string>
diff --git a/core/res/res/values-notround-watch/dimens_material.xml b/core/res/res/values-notround-watch/dimens_material.xml
index b02437b5eb6f..9cacb117cf7b 100644
--- a/core/res/res/values-notround-watch/dimens_material.xml
+++ b/core/res/res/values-notround-watch/dimens_material.xml
@@ -20,4 +20,7 @@
<dimen name="list_item_padding_horizontal_material">16dp</dimen>
<dimen name="list_item_padding_start_material">16dp</dimen>
<dimen name="list_item_padding_end_material">16dp</dimen>
+
+ <dimen name="dialog_list_padding_top_no_title">8dp</dimen>
+ <dimen name="dialog_list_padding_bottom_no_buttons">8dp</dimen>
</resources>
diff --git a/core/res/res/values-pa-rIN/strings.xml b/core/res/res/values-pa-rIN/strings.xml
index d96b89eb725e..c84aff7b5ca5 100644
--- a/core/res/res/values-pa-rIN/strings.xml
+++ b/core/res/res/values-pa-rIN/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"ਸਟੋਰੇਜ ਅਨà©à¨•ੂਲ ਕਰ ਰਿਹਾ ਹੈ।"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android ਅੱਪਗà©à¨°à©‡à¨¡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਕà©à¨ à¨à¨ªà¨¾à¨‚ ਅੱਪਗà©à¨°à©‡à¨¡ ਦੇ ਪੂਰੀ ਹੋਣ ਤੱਕ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਾ ਕਰਨ"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ਨੂੰ ਅੱਪਗà©à¨°à©‡à¨¡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> <xliff:g id="NUMBER_1">%2$d</xliff:g> ਦਾ à¨à¨ª ਅਨà©à¨•ੂਲ ਕਰ ਰਿਹਾ ਹੈ।"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> ਤਿਆਰ ਕਰ ਰਿਹਾ ਹੈ।"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"à¨à¨ªà¨¸ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ।"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index dcbf9d042b89..8d0f70793b19 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -1070,8 +1070,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optymalizacja pamięci."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android jest uaktualniany"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Niektóre aplikacje mogą nie działać prawidłowo, dopóki nie zakończy się aktualizacja."</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Uaktualniam aplikację <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optymalizowanie aplikacji <xliff:g id="NUMBER_0">%1$d</xliff:g> z <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"PrzygotowujÄ™ aplikacjÄ™ <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Uruchamianie aplikacji."</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 6998871d0d14..dcacac642fc2 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Otimizando o armazenamento."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"O Android está sendo atualizado"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alguns apps podem não funcionar corretamente até que a atualização seja concluída"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> está fazendo upgrade…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Otimizando app <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando apps."</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 1e96a4d28bca..3acdc91fd171 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"A otimizar o armazenamento."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"O Android está a ser atualizado"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Algumas aplicações podem não funcionar corretamente enquanto a atualização não for concluída"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"O <xliff:g id="APPLICATION">%1$s</xliff:g> está a ser atualizado…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"A otimizar a aplicação <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"A preparar o <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"A iniciar aplicações"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 6998871d0d14..dcacac642fc2 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Otimizando o armazenamento."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"O Android está sendo atualizado"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alguns apps podem não funcionar corretamente até que a atualização seja concluída"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> está fazendo upgrade…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Otimizando app <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando apps."</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 0058858484b8..fa5a188ccf79 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -1047,8 +1047,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Se optimizează stocarea."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android face upgrade"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Este posibil ca unele aplicații să nu funcționeze corespunzător până când nu se finalizează upgrade-ul"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Se face upgrade pentru <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Se optimizează aplicația <xliff:g id="NUMBER_0">%1$d</xliff:g> din <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Se pregătește <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Se pornesc aplicațiile."</string>
diff --git a/core/res/res/values-round-watch/dimens_material.xml b/core/res/res/values-round-watch/dimens_material.xml
index db1f1f34638b..f2de4e013a78 100644
--- a/core/res/res/values-round-watch/dimens_material.xml
+++ b/core/res/res/values-round-watch/dimens_material.xml
@@ -20,4 +20,7 @@
<dimen name="list_item_padding_horizontal_material">@dimen/screen_percentage_15</dimen>
<dimen name="list_item_padding_start_material">@dimen/screen_percentage_15</dimen>
<dimen name="list_item_padding_end_material">@dimen/screen_percentage_10</dimen>
+
+ <dimen name="dialog_list_padding_top_no_title">@dimen/screen_percentage_15</dimen>
+ <dimen name="dialog_list_padding_bottom_no_buttons">@dimen/screen_percentage_15</dimen>
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index e202854e5972..67cb5192590b 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -1070,8 +1070,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ð°â€¦"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Обновление Android"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹ неполадки в работе приложений."</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Обновление Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ \"<xliff:g id="APPLICATION">%1$s</xliff:g>\"…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ <xliff:g id="NUMBER_0">%1$d</xliff:g> из <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Подготовка Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ \"<xliff:g id="APPNAME">%1$s</xliff:g>\"..."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ЗапуÑк приложений."</string>
diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml
index 9240212eadcc..e68b2a712f4a 100644
--- a/core/res/res/values-si-rLK/strings.xml
+++ b/core/res/res/values-si-rLK/strings.xml
@@ -1026,8 +1026,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"ආචයනය à¶´à·Šâ€à¶»à·à·ƒà·Šà¶­à·’කරණය කිරීම."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android à¶‹à¶­à·Šà·à·Šâ€à¶»à·šà¶«à·’ කරමින්"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"à¶‹à¶­à·Šà·à·Šâ€à¶»à·šà¶«à·’ කිරීම අවසන් වන තෙක් සමහර යෙදුම් නිසි ලෙස à¶šà·Šâ€à¶»à·’ය෠නොකළ à·„à·à¶šà·’ය"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> à¶‹à¶­à·Šà·à·Šâ€à¶»à·šà¶«à·’ කරමින්…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> කින් <xliff:g id="NUMBER_0">%1$d</xliff:g> à·€à·à¶±à·’ යෙදුම à¶´à·Šâ€à¶»à·à·ƒà·Šà¶­ කරමින්."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> සූදà·à¶±à¶¸à·Š කරමින්."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"යෙදුම් ආරම්භ කරමින්."</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index e077075b0258..09401e37ccc6 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -1070,8 +1070,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimalizuje sa úložisko"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Prebieha inovácia systému Android"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Niektoré aplikácie môžu správne fungovaÅ¥ až po dokonÄení inovácie"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Aplikácia <xliff:g id="APPLICATION">%1$s</xliff:g> sa inovuje…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Prebieha optimalizácia aplikácie <xliff:g id="NUMBER_0">%1$d</xliff:g> z <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Pripravuje sa aplikácia <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Prebieha spúšťanie aplikácií."</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index e1eea815a692..e64ecbde8087 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -1070,8 +1070,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimiziranje shrambe."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Poteka nadgradnja Androida."</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Nekatere aplikacije morda ne bodo delovale pravilno, dokler ne bo dokonÄana nadgradnja."</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> se nadgrajuje …"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimiranje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Pripravljanje aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Zagon aplikacij."</string>
diff --git a/core/res/res/values-sq-rAL/strings.xml b/core/res/res/values-sq-rAL/strings.xml
index 5ad7ba4e6561..f7433a488ea3 100644
--- a/core/res/res/values-sq-rAL/strings.xml
+++ b/core/res/res/values-sq-rAL/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Po përshtat ruajtjen."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android po përmirësohet"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Disa aplikacione mund të mos funksionojnë si duhet deri sa të përfundojë përmirësimi"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> po përmirësohet…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Po përshtat aplikacionin <xliff:g id="NUMBER_0">%1$d</xliff:g> nga gjithsej <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Po përgatit <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Aplikacionet e fillimit."</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 7bfc3ddaf3cb..b68869246682 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -1047,8 +1047,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Меморија Ñе оптимизује."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android Ñе надограђује…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Ðеке апликације можда неће иÑправно функциониÑати док Ñе надоградња не доврши"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> Ñе надограђује…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизовање апликације <xliff:g id="NUMBER_0">%1$d</xliff:g> од <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Припрема Ñе <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Покретање апликација."</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 86733605a083..0fd61b7ec66a 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Lagringsutrymmet optimeras."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android uppgraderas"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"En del appar kanske inte fungerar som de ska innan uppgraderingen har slutförts"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> uppgraderas …"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimerar app <xliff:g id="NUMBER_0">%1$d</xliff:g> av <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> förbereds."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Appar startas."</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 71d9bf75e707..2bde55db4737 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -1022,8 +1022,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Inaboresha hifadhi."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Tunasasisha Android"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Huenda baadhi ya programu zisifanye kazi vizuri hadi itakapomaliza kusasisha"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> inapata toleo jipya…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Inaboresha programu <xliff:g id="NUMBER_0">%1$d</xliff:g> kutoka <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Inaandaa <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Programu zinaanza"</string>
diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml
index 823286cab455..c73e299d20f8 100644
--- a/core/res/res/values-ta-rIN/strings.xml
+++ b/core/res/res/values-ta-rIN/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"சேமிபà¯à®ªà®•தà¯à®¤à¯ˆ உகநà¯à®¤à®¤à®¾à®•à¯à®•à¯à®•ிறதà¯."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android மேமà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®•ிறதà¯"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"மேமà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à¯ à®®à¯à®Ÿà®¿à®¯à¯à®®à¯ வரை, சில பயனà¯à®ªà®¾à®Ÿà¯à®•ள௠சரியாக வேலைசெயà¯à®¯à®¾à®®à®²à¯ போககà¯à®•ூடà¯à®®à¯"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g>஠மேமà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•ிறதà¯â€¦"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g> பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ˆ à®’à®°à¯à®™à¯à®•ிணைகà¯à®•ிறதà¯."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g>à®à®¤à¯ தயாரà¯à®šà¯†à®¯à¯à®•ிறதà¯."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"பயனà¯à®ªà®¾à®Ÿà¯à®•ள௠தொடஙà¯à®•பà¯à®ªà®Ÿà¯à®•ினà¯à®±à®©."</string>
diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml
index 6218cdfeef0a..d00403216a7c 100644
--- a/core/res/res/values-te-rIN/strings.xml
+++ b/core/res/res/values-te-rIN/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"నిలà±à°µà°¨à± à°…à°¨à±à°•ూలపరà±à°¸à±à°¤à±‹à°‚ది."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android à°…à°ªà±â€Œà°—à±à°°à±‡à°¡à± à°…à°µà±à°¤à±‹à°‚ది"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"à°…à°ªà±â€Œà°—à±à°°à±‡à°¡à± పూరà±à°¤à°¯à±à°¯à±‡ వరకౠకొనà±à°¨à°¿ à°…à°¨à±à°µà°°à±à°¤à°¨à°¾à°²à± సరిగà±à°—à°¾ పని చేయకపోవచà±à°šà±"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g>ని à°…à°ªà±â€Œà°—à±à°°à±‡à°¡à± చేసà±à°¤à±‹à°‚ది…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>లో <xliff:g id="NUMBER_0">%1$d</xliff:g> à°…à°¨à±à°µà°°à±à°¤à°¨à°¾à°¨à±à°¨à°¿ à°…à°¨à±à°•ూలీకరిసà±à°¤à±‹à°‚ది."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g>ని సిదà±à°§à°‚ చేసà±à°¤à±‹à°‚ది."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"à°…à°¨à±à°µà°°à±à°¤à°¨à°¾à°²à°¨à± à°ªà±à°°à°¾à°°à°‚à°­à°¿à°¸à±à°¤à±‹à°‚ది."</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 2dfd2e7b1e59..458fc7214315 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"à¸à¸³à¸¥à¸±à¸‡à¹€à¸žà¸´à¹ˆà¸¡à¸›à¸£à¸°à¸ªà¸´à¸—ธิภาพพื้นที่จัดเà¸à¹‡à¸šà¸‚้อมูล"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android à¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸›à¹€à¸à¸£à¸”"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"à¹à¸­à¸›à¸šà¸²à¸‡à¹à¸­à¸›à¸­à¸²à¸ˆà¸—ำงานไม่ถูà¸à¸•้องจนà¸à¸§à¹ˆà¸²à¸ˆà¸°à¸­à¸±à¸›à¹€à¸à¸£à¸”เสร็จ"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"à¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸›à¹€à¸à¸£à¸” <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"à¸à¸³à¸¥à¸±à¸‡à¹€à¸žà¸´à¹ˆà¸¡à¸›à¸£à¸°à¸ªà¸´à¸—ธิภาพà¹à¸­à¸›à¸žà¸¥à¸´à¹€à¸„ชัน <xliff:g id="NUMBER_0">%1$d</xliff:g> จาภ<xliff:g id="NUMBER_1">%2$d</xliff:g> รายà¸à¸²à¸£"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"à¸à¸³à¸¥à¸±à¸‡à¹€à¸•รียม <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"à¸à¸³à¸¥à¸±à¸‡à¹€à¸£à¸´à¹ˆà¸¡à¸•้นà¹à¸­à¸›à¸žà¸¥à¸´à¹€à¸„ชัน"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 855399280406..fbf1f491578f 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Ino-optimize ang storage."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Nag-a-upgrade ang Android"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Maaaring hindi gumana nang maayos ang ilang app hangga\'t hindi pa natatapos ang pag-upgrade"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Nag-a-upgrade ang <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Ino-optimize ang app <xliff:g id="NUMBER_0">%1$d</xliff:g> ng <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Ihinahanda ang <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Sinisimulan ang apps."</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 1033e11d4610..119cd6d2e690 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Depolama optimize ediliyor."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android yeni sürüme geçiriliyor"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Yeni sürüme geçiş işlemi tamamlanana kadar bazı uygulamalar düzgün çalışmayabilir"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> yeni sürüme geçiriliyor…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g> uygulama optimize ediliyor."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> hazırlanıyor."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Uygulamalar başlatılıyor"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 21c1e3f0f1ca..f1a7a19b0d63 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -1070,8 +1070,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"ÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ð°Ð¼â€™Ñті."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android оновлюєтьÑÑ"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"ДеÑкі додатки можуть не працювати належним чином, доки не завершитьÑÑ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"Додаток <xliff:g id="APPLICATION">%1$s</xliff:g> оновлюєтьÑÑ…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"ÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ <xliff:g id="NUMBER_0">%1$d</xliff:g> з <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Підготовка додатка <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ЗапуÑк програм."</string>
diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml
index ff99fb00c491..9bf9a016fa7a 100644
--- a/core/res/res/values-ur-rPK/strings.xml
+++ b/core/res/res/values-ur-rPK/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"اسٹوریج Ú©Ùˆ Ø¨ÛØªØ±ÛŒÙ† بنایا جا Ø±ÛØ§ ÛÛ’Û”"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"â€Android اپ گریڈ ÛÙˆ Ø±ÛØ§ ÛÛ’"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"اپ گریڈ ختم Ûونے تک شاید Ú©Ú†Ú¾ ایپس ٹھیک طرح سے کام Ù†Û Ú©Ø±ÛŒÚº"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> اپ گریڈ ÛÙˆ رÛÛŒ Ûے…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"ایپ <xliff:g id="NUMBER_0">%1$d</xliff:g> از <xliff:g id="NUMBER_1">%2$d</xliff:g> Ú©Ùˆ Ø¨ÛØªØ± بنایا جا Ø±ÛØ§ ÛÛ’Û”"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> تیار ÛÙˆ رÛÛŒ ÛÛ’Û”"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ایپس شروع ÛÙˆ رÛÛŒ Ûیں۔"</string>
diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml
index 194b506ace46..f4684c799490 100644
--- a/core/res/res/values-uz-rUZ/strings.xml
+++ b/core/res/res/values-uz-rUZ/strings.xml
@@ -44,7 +44,7 @@
<string name="unknownName" msgid="6867811765370350269">"Noma’lum"</string>
<string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"Ovozli pochta"</string>
<string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string>
- <string name="mmiError" msgid="5154499457739052907">"Ulanishda xato yoki noto‘g‘ri MMI kodi."</string>
+ <string name="mmiError" msgid="5154499457739052907">"Tarmoqda xato yoki MMI kod noto‘g‘ri."</string>
<string name="mmiFdnError" msgid="5224398216385316471">"Bu amal faqat ruxsat etilgan raqamlar uchun mavjud."</string>
<string name="serviceEnabled" msgid="8147278346414714315">"Xizmat yoqildi."</string>
<string name="serviceEnabledFor" msgid="6856228140453471041">"Xizmat quyidagi uchun yoqildi:"</string>
@@ -143,7 +143,7 @@
<string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Yo‘naltirilmadi"</string>
<string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: yo‘naltirilmadi"</string>
<string name="fcComplete" msgid="3118848230966886575">"Maxsus kod bajarildi."</string>
- <string name="fcError" msgid="3327560126588500777">"Ulanishda muammo yoki maxsus kod xato."</string>
+ <string name="fcError" msgid="3327560126588500777">"Tarmoqda xato yoki maxsus kod noto‘g‘ri."</string>
<string name="httpErrorOk" msgid="1191919378083472204">"OK"</string>
<string name="httpError" msgid="7956392511146698522">"Tarmoqda xato yuz berdi."</string>
<string name="httpErrorLookup" msgid="4711687456111963163">"URL topilmadi."</string>
@@ -985,7 +985,7 @@
<string name="whichImageCaptureApplicationNamed" msgid="8619384150737825003">"%1$s yordamida suratga oling"</string>
<string name="whichImageCaptureApplicationLabel" msgid="6390303445371527066">"Suratga olish"</string>
<string name="alwaysUse" msgid="4583018368000610438">"Ushbu amaldan standart sifatida foydalanish"</string>
- <string name="use_a_different_app" msgid="8134926230585710243">"Boshqa ilovadan foydalanish"</string>
+ <string name="use_a_different_app" msgid="8134926230585710243">"Boshqa ilova"</string>
<string name="clearDefaultHintMsg" msgid="3252584689512077257">"Birlamchi sozlamalarni Tizim sozlamalari &gt; Ilovalar &gt; Yuklab olingan menyusidan tozalang."</string>
<string name="chooseActivity" msgid="7486876147751803333">"Amalni tanlash"</string>
<string name="chooseUsbActivity" msgid="6894748416073583509">"USB qurilma uchun ilovani tanlang"</string>
@@ -998,16 +998,16 @@
<string name="aerr_report" msgid="5371800241488400617">"Fikr-mulohaza yuborish"</string>
<string name="aerr_close" msgid="2991640326563991340">"Yopish"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Qurilma o‘chib yonguncha e’tiborsiz qoldirish"</string>
- <string name="aerr_wait" msgid="3199956902437040261">"Kuting"</string>
+ <string name="aerr_wait" msgid="3199956902437040261">"Kutish"</string>
<string name="aerr_close_app" msgid="3269334853724920302">"Ilovani yopish"</string>
<string name="anr_title" msgid="4351948481459135709"></string>
- <string name="anr_activity_application" msgid="8493290105678066167">"<xliff:g id="APPLICATION">%2$s</xliff:g> javob bermayapti"</string>
- <string name="anr_activity_process" msgid="1622382268908620314">"<xliff:g id="ACTIVITY">%1$s</xliff:g> javob bermayapti"</string>
- <string name="anr_application_process" msgid="6417199034861140083">"<xliff:g id="APPLICATION">%1$s</xliff:g> javob bermayapti"</string>
+ <string name="anr_activity_application" msgid="8493290105678066167">"<xliff:g id="APPLICATION">%2$s</xliff:g> ilovasi javob bermayapti"</string>
+ <string name="anr_activity_process" msgid="1622382268908620314">"<xliff:g id="ACTIVITY">%1$s</xliff:g> harakati javob bermayapti"</string>
+ <string name="anr_application_process" msgid="6417199034861140083">"<xliff:g id="APPLICATION">%1$s</xliff:g> ilovasi javob bermayapti"</string>
<string name="anr_process" msgid="6156880875555921105">"<xliff:g id="PROCESS">%1$s</xliff:g> ilovasi javob bermayapti"</string>
<string name="force_close" msgid="8346072094521265605">"OK"</string>
<string name="report" msgid="4060218260984795706">"Xabar berish"</string>
- <string name="wait" msgid="7147118217226317732">"Kuting"</string>
+ <string name="wait" msgid="7147118217226317732">"Kutish"</string>
<string name="webpage_unresponsive" msgid="3272758351138122503">"Sahifa javob bermayapti.\n\nUni yopishni xohlaysizmi?"</string>
<string name="launch_warning_title" msgid="1547997780506713581">"Ilova qayta yo‘naltirildi"</string>
<string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> hozirda ishlamoqda"</string>
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Xotira optimallashtirilmoqda."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android yangilanmoqda"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Yangilanish vaqtida ba’zi ilovalar to‘g‘ri ishlamasligi mumkin"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ilovasi yangilanmoqda…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Ilovalar optimallashtirilmoqda (<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g>)."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> tayyorlanmoqda."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ilovalar ishga tushirilmoqda."</string>
@@ -1317,7 +1316,7 @@
<string name="storage_usb_drive_label" msgid="4501418548927759953">"<xliff:g id="MANUFACTURER">%s</xliff:g> USB xotira qurilmasi"</string>
<string name="storage_usb" msgid="3017954059538517278">"USB xotira"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Tahrirlash"</string>
- <string name="data_usage_warning_title" msgid="1955638862122232342">"Ma’lumotlardan foydalanish ogohlantirilishi"</string>
+ <string name="data_usage_warning_title" msgid="1955638862122232342">"Trafik kam qoldi"</string>
<string name="data_usage_warning_body" msgid="6660692274311972007">"Trafik sarfi va sozlamalarni ko‘rish uchun bosing."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G trafik chekloviga yetdi"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G trafik chekloviga yetdi"</string>
@@ -1352,7 +1351,7 @@
<string name="launchBrowserDefault" msgid="2057951947297614725">"Brauzer ishga tushirilsinmi?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Qo‘ng‘iroqni qabul qilasizmi?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Har doim"</string>
- <string name="activity_resolver_use_once" msgid="2404644797149173758">"Bir marta"</string>
+ <string name="activity_resolver_use_once" msgid="2404644797149173758">"Faqat hozir"</string>
<string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"“%1$s†ishchi profilni qo‘llab-quvvatlamaydi"</string>
<string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Planshet"</string>
<string name="default_audio_route_name" product="tv" msgid="9158088547603019321">"TV"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 4ce86cf5c15b..6d5805450269 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Tối ưu hóa lưu trữ."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android đang nâng cấp"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Má»™t số ứng dụng có thể không hoạt động bình thưá»ng cho đến khi nâng cấp xong"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> đang nâng cấp…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Äang tối ưu hóa ứng dụng <xliff:g id="NUMBER_0">%1$d</xliff:g> trong tổng số <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Äang chuẩn bị <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Khởi động ứng dụng."</string>
diff --git a/core/res/res/values-watch/styles_material.xml b/core/res/res/values-watch/styles_material.xml
index daeeca2b050d..5c4c632ed5b5 100644
--- a/core/res/res/values-watch/styles_material.xml
+++ b/core/res/res/values-watch/styles_material.xml
@@ -61,8 +61,13 @@ please see styles_device_defaults.xml.
<item name="breakStrategy">balanced</item>
</style>
+ <style name="Widget.Material.ButtonBar" parent="Widget.Material.BaseButtonBar" />
+
<!-- Alert dialog button bar button -->
<style name="Widget.Material.Button.ButtonBar.AlertDialog" parent="Widget.Material.Button.Borderless.Small">
+ <item name="paddingStart">@dimen/list_item_padding_start_material</item>
+ <item name="paddingEnd">@dimen/list_item_padding_end_material</item>
+ <item name="drawablePadding">8dp</item>
<item name="gravity">center_vertical|left</item>
<item name="minWidth">64dp</item>
<item name="minHeight">@dimen/alert_dialog_button_bar_height</item>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 3b2abe78a544..69c3f7eff3bc 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"正在优化存储空间。"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android 正在å‡çº§"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"在å‡çº§å®Œæˆä¹‹å‰ï¼Œéƒ¨åˆ†åº”用å¯èƒ½æ— æ³•正常è¿è¡Œ"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"正在å‡çº§<xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"正在优化第<xliff:g id="NUMBER_0">%1$d</xliff:g>个应用(共<xliff:g id="NUMBER_1">%2$d</xliff:g>个)。"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"正在准备å‡çº§<xliff:g id="APPNAME">%1$s</xliff:g>。"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在å¯åŠ¨åº”ç”¨ã€‚"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 5aa4648bd048..eb9e2fbc39a0 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"正在優化儲存空間。"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"正在å‡ç´š Android"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"部分應用程å¼éœ€è¦å®Œæˆå‡ç´šæ–¹å¯æ­£å¸¸é‹ä½œ"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"「<xliff:g id="APPLICATION">%1$s</xliff:g>ã€æ­£åœ¨å‡ç´šâ€¦"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"正在優化第 <xliff:g id="NUMBER_0">%1$d</xliff:g> å€‹æ‡‰ç”¨ç¨‹å¼ (å…± <xliff:g id="NUMBER_1">%2$d</xliff:g> 個)。"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"正在準備 <xliff:g id="APPNAME">%1$s</xliff:g>。"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在啟動應用程å¼ã€‚"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index cd3ee3ab23e5..9bd200215e7d 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"正在å°å„²å­˜ç©ºé–“進行最佳化處ç†ã€‚"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"正在å‡ç´š Android"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"å‡ç´šå®Œæˆå‰ï¼Œéƒ¨åˆ†æ‡‰ç”¨ç¨‹å¼å¯èƒ½ç„¡æ³•正常é‹ä½œ"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"正在å‡ç´šã€Œ<xliff:g id="APPLICATION">%1$s</xliff:g>ã€â€¦"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"正在最佳化第 <xliff:g id="NUMBER_0">%1$d</xliff:g> å€‹æ‡‰ç”¨ç¨‹å¼ (å…± <xliff:g id="NUMBER_1">%2$d</xliff:g> 個)。"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"正在準備å‡ç´šã€Œ<xliff:g id="APPNAME">%1$s</xliff:g>ã€ã€‚"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在啟動應用程å¼ã€‚"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index b00b74584737..cdd071d48b2f 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -1024,8 +1024,7 @@
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Ikhulisa isitoreji."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"I-Android iyathuthukiswa"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Ezinye izinhlelo zokusebenza kungenzeka zingasebenzi kahle kuze kuqedwe ukuthuthukiswa"</string>
- <!-- no translation found for app_upgrading_toast (3008139776215597053) -->
- <skip />
+ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> iyathuthukisa…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Ukubeka ezingeni eliphezulu <xliff:g id="NUMBER_0">%1$d</xliff:g> uhlelo lokusebenza <xliff:g id="NUMBER_1">%2$d</xliff:g>"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Ukulungisela i-<xliff:g id="APPNAME">%1$s</xliff:g>."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Qalisa izinhlelo zokusebenza."</string>
diff --git a/core/res/res/values/styles_material.xml b/core/res/res/values/styles_material.xml
index fad3488d2915..1aae02bdeb76 100644
--- a/core/res/res/values/styles_material.xml
+++ b/core/res/res/values/styles_material.xml
@@ -543,7 +543,11 @@ please see styles_device_defaults.xml.
<item name="textOff">@string/capital_off</item>
</style>
- <style name="Widget.Material.ButtonBar">
+ <style name="Widget.Material.BaseButtonBar">
+ <item name="background">?attr/colorBackgroundFloating</item>
+ </style>
+
+ <style name="Widget.Material.ButtonBar" parent="Widget.Material.BaseButtonBar">
<item name="background">@null</item>
</style>
diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml
index 50e588dfff7b..0e98adea434a 100644
--- a/core/res/res/values/themes_device_defaults.xml
+++ b/core/res/res/values/themes_device_defaults.xml
@@ -724,6 +724,12 @@ easier.
<item name="colorAccent">@color/accent_device_default_light</item>
</style>
+ <style name="Theme.DeviceDefault.Light.Voice" parent="Theme.Material.Light.Voice">
+ <!-- Color palette -->
+ <item name="colorPrimary">@color/primary_device_default_light</item>
+ <item name="colorPrimaryDark">@color/primary_dark_device_default_light</item>
+ <item name="colorAccent">@color/accent_device_default_light</item>
+ </style>
<!-- DeviceDefault theme for a window that should look like the Settings app. -->
<style name="Theme.DeviceDefault.Settings" parent="Theme.Material.Settings">
diff --git a/docs/docs-preview-index.html b/docs/docs-preview-index.html
index e26b57c6c1eb..8d5422b79d91 100644
--- a/docs/docs-preview-index.html
+++ b/docs/docs-preview-index.html
@@ -79,19 +79,16 @@ href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
<h2>Get Started</h2>
<ul>
- <li>View the <a href="reference/packages.html">API Reference</a></li>
+ <li>View the <a href="reference/packages.html">offline API Reference</a></li>
<li>Read Diff Reports:</a>
<ul>
- <li><a href="sdk/api_diff/n-preview-1/changes.html"
- >API 23 --> Preview 1</a></li>
+ <li><a href="https://developer.android.com/sdk/api_diff/24/changes.html"
+ >API 23 --> API 24</a></li>
</ul>
</li>
- <li>Downloads and additional documentation are available at the
+ <li>For more information, visit the
<a href="http://developer.android.com/preview/index.html">
Android N Developer Preview site</a></li>
- <li>For information about Developer Preview 1, visit the
- <a href="http://developer.android.com/preview/support.html">Support</a>
- page.</li>
</ul>
diff --git a/docs/html-intl/intl/es/about/versions/android-5.0.jd b/docs/html-intl/intl/es/about/versions/android-5.0.jd
index c94a140c22d4..4d50584ac24d 100644
--- a/docs/html-intl/intl/es/about/versions/android-5.0.jd
+++ b/docs/html-intl/intl/es/about/versions/android-5.0.jd
@@ -428,7 +428,7 @@ sdk.platform.apiLevel=21
<p>Cuando el sistema detecta una red adecuada, se conecta a la red e invoca la devolución de llamada {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()}. Puedes usar el objeto {@link android.net.Network} de la devolución de llamada para obtener información adicional acerca de la red o para indicar que el tráfico use la red seleccionada.</p>
<h3 id="BluetoothBroadcasting">Bluetooth de baja energía</h3>
-<p>Android 4.3 introdujo compatibilidad de plataforma para <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">Bluetooth de baja energía</a> (<em>Bluetooth LE</em>) en el rol central. En Android 5.0, un dispositivo Android ahora puede actuar como un <em>dispositivo periférico</em> Bluetooth LE. Las aplicaciones pueden utilizar esta capacidad para que otros dispositivos cercanos detecten su presencia. Por ejemplo, puedes crear aplicaciones que permiten que un dispositivo funcione como un podómetro o un monitor de estado, y comunique sus datos a otro dispositivo Bluetooth LE.</p>
+<p>Android 4.3 introdujo compatibilidad de plataforma para <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">Bluetooth de baja energía</a> (<em>Bluetooth LE</em>) en el rol central. En Android 5.0, un dispositivo Android ahora puede actuar como un <em>dispositivo periférico</em> Bluetooth LE. Las aplicaciones pueden utilizar esta capacidad para que otros dispositivos cercanos detecten su presencia. Por ejemplo, puedes crear aplicaciones que permiten que un dispositivo funcione como un podómetro o un monitor de estado, y comunique sus datos a otro dispositivo Bluetooth LE.</p>
<p>Las nuevas API {@link android.bluetooth.le} permiten a sus aplicaciones transmitir anuncios, buscar respuestas y establecer conexiones con dispositivos Bluetooth LE cercanos. Para utilizar las nuevas funciones de anuncio y búsqueda, agrega el permiso {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} en el manifiesto. Cuando los usuarios actualizan o descargan tu aplicación desde Play Store, se les pide que concedan el siguiente permiso a tu aplicación: "Información de conexión Bluetooth: Permite que la aplicación controle Bluetooth, incluida la transmisión de información a dispositivos Bluetooth cercanos o la obtención de información sobre ellos".</p>
<p>Para comenzar el anuncio de Bluetooth LE a fin de que otros dispositivos puedan detectar tu aplicación, llama a {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} y envía una implementación de la clase {@link android.bluetooth.le.AdvertiseCallback}. El objeto de devolución de llamada recibe un informe del éxito o fracaso de la operación de anuncio.</p>
diff --git a/docs/html-intl/intl/es/design/patterns/navigation.jd b/docs/html-intl/intl/es/design/patterns/navigation.jd
index e7d73fd72fc2..4b0523973d06 100644
--- a/docs/html-intl/intl/es/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/es/design/patterns/navigation.jd
@@ -137,7 +137,7 @@ evento. En la pantalla de detalles del evento, es posible navegar con los botone
<h4>Notificaciones emergentes</h4>
-<p><em>Las notificaciones emergentes</em> omiten el panel lateral de notificaciones y aparecen directamente
+<p><em>Las notificaciones emergentes</em> omiten el panel lateral de notificaciones y aparecen directamente
frente al usuario. Estas casi nunca se utilizan, y se <strong>deben reservar para ocasiones en las que es necesario proporcionar una
respuesta oportuna y es necesario realizar una interrupción en el contexto del usuario</strong>. Por ejemplo,
en Talk se utiliza este estilo para alertar al usuario sobre una invitación de un amigo para participar en una videocharla, ya que esta
diff --git a/docs/html-intl/intl/es/design/patterns/notifications.jd b/docs/html-intl/intl/es/design/patterns/notifications.jd
index bdbc77b71f46..5499e8b3d4e1 100644
--- a/docs/html-intl/intl/es/design/patterns/notifications.jd
+++ b/docs/html-intl/intl/es/design/patterns/notifications.jd
@@ -56,7 +56,7 @@ Android, esta se omitirá
</ul>
<p class="note"><strong>Nota:</strong> El diseño de las notificaciones de esta versión de
-Android se diferencia
+Android se diferencia
de manera significativa del diseño de las versiones anteriores. Para obtener información sobre el diseño de las notificaciones en versiones
anteriores, consulte <a href="./notifications_k.html">Notificaciones en Android 4.4 y versiones anteriores</a>.</p>
@@ -189,7 +189,7 @@ que aparece en la parte superior de una
a los usuarios
durante un período breve, con un diseño expandido que expone las posibles acciones.</p>
<p> Luego de este período, la notificación se retira hacia el
-panel de notificaciones. Si la <a href="#correctly_set_and_manage_notification_priority">prioridad</a> de una notificación
+panel de notificaciones. Si la <a href="#correctly_set_and_manage_notification_priority">prioridad</a> de una notificación
se marca como Alta, Máxima o Pantalla completa, se obtiene una notificación emergente.</p>
<p><b>Buenos ejemplos de notificaciones emergentes</b></p>
@@ -291,8 +291,8 @@ Las notificaciones de alta prioridad activan la pantalla de notificaciones emerg
<p>Utilícelo para las notificaciones que desea que el usuario reciba, pero
que son menos urgentes. Las notificaciones de baja prioridad tienden a aparecer en la parte inferior de la lista,
por lo que son ideales para
-eventos como actualizaciones sociales públicas o indirectas: El usuario solicitó que se le notifiquen
-estas
+eventos como actualizaciones sociales públicas o indirectas: El usuario solicitó que se le notifiquen
+estas
actualizaciones, pero estas notificaciones nunca tendrán prioridad sobre las comunicaciones
urgentes o directas.</p>
</td>
@@ -545,7 +545,7 @@ iconos de notificaciones para
<p><strong>Lo que debe hacer</strong></p>
<p>Utilizar el <a href="/design/style/iconography.html#notification">estilo de icono de notificación</a>
- adecuado para los iconos pequeños y el
+ adecuado para los iconos pequeños y el
<a href="/design/style/iconography.html#action-bar">estilo
de icono de barra de acción</a> del diseño Material Light para los iconos
de acciones.</p>
@@ -571,7 +571,7 @@ deben ser una imagen sobre un fondo blanco o transparente.</p>
<h3 id="pulse_the_notification_led_appropriately">Pulsación adecuada del
LED de notificaciones</h3>
-<p>Muchos dispositivos con Android incluyen un LED de notificaciones, que se utiliza para mantener al
+<p>Muchos dispositivos con Android incluyen un LED de notificaciones, que se utiliza para mantener al
usuario informado sobre los
eventos cuando la pantalla está apagada. Las notificaciones con un nivel de prioridad <code>MAX</code>,
<code>HIGH</code> o <code>DEFAULT</code> deben
@@ -701,7 +701,7 @@ comentarios sobre tareas más extensas, como descargar un archivo o codificar un
eliminar las notificaciones constantes del panel lateral de notificaciones.</p>
<h3 id="ongoing_notifications">Reproducción de medios</h3>
-<p>En Android 5.0, la pantalla de bloqueo no muestra los controles de transporte para la clase
+<p>En Android 5.0, la pantalla de bloqueo no muestra los controles de transporte para la clase
{@link android.media.RemoteControlClient} obsoleta. Sin embargo, <em>sí</em> muestra las notificaciones, de modo que las notificaciones de reproducción de cada
aplicación ahora son la forma principal
en la que los usuarios controlan la reproducción desde el estado bloqueado. A través de este comportamiento, se le otorga más control
@@ -771,7 +771,7 @@ para cualquier persona que agarre el dispositivo y encienda la pantalla.</p>
<ul>
<li> En el caso de los dispositivos que posean una pantalla de bloqueo segura (PIN, patrón o contraseña), la interface está formada por
partes públicas y privadas. La interfaz pública se puede mostrar en una pantalla de bloqueo segura y,
- por ende, cualquier persona puede verla. La interfaz privada es el mundo detrás de esa pantalla de bloqueo y
+ por ende, cualquier persona puede verla. La interfaz privada es el mundo detrás de esa pantalla de bloqueo y
solo se revela cuando el usuario se registra en el dispositivo.</li>
</ul>
@@ -799,7 +799,7 @@ Se muestra todo el contenido de la notificación.
Esta es la opción predeterminada del sistema si no se especificó el grado de visibilidad.</li>
<li><code><a
href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>.
-En la pantalla de bloqueo se muestra la información básica sobre la existencia de esta notificación, incluido
+En la pantalla de bloqueo se muestra la información básica sobre la existencia de esta notificación, incluido
el icono y el nombre de la aplicación a través de la cual se publicó. No se muestra el resto de los detalles de la notificación.
A continuación, especificamos algunos puntos que se deben tener en cuenta:
<ul>
diff --git a/docs/html-intl/intl/es/distribute/googleplay/about.jd b/docs/html-intl/intl/es/distribute/googleplay/about.jd
index 96faf492a334..987b43be8f2a 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/about.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/about.jd
@@ -6,7 +6,7 @@ page.image=/distribute/images/about-play.jpg
@jd:body
- <div id="qv-wrapper">
+ <div id="qv-wrapper">
<div id="qv">
<h2>Acerca de Google Play</h2>
<ol style="list-style-type:none;">
diff --git a/docs/html-intl/intl/es/distribute/googleplay/auto.jd b/docs/html-intl/intl/es/distribute/googleplay/auto.jd
index a2a29434e8e0..d9928b5ab843 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/auto.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/auto.jd
@@ -158,7 +158,7 @@ page.metaDescription=Distribuye tus aplicaciones y contenido para Android Auto.
</p>
<p>
- Ten en cuenta que la revisión afecta la disponibilidad de tu aplicación para otros dispositivos en la
+ Ten en cuenta que la revisión afecta la disponibilidad de tu aplicación para otros dispositivos en la
Play Store de Google; por ejemplo, para teléfonos y tablets.
Si tienes una aplicación actual que incluya actualizaciones para el componente de teléfono/tablet,
el componente de Android Auto debe pasar la revisión antes de que la aplicación actualizada
diff --git a/docs/html-intl/intl/es/distribute/googleplay/developer-console.jd b/docs/html-intl/intl/es/distribute/googleplay/developer-console.jd
index fcf5e44d1b54..73cd63ea3700 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/developer-console.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/developer-console.jd
@@ -4,8 +4,8 @@ page.image=/distribute/images/developer-console.jpg
Xnonavpage=true
@jd:body
-
- <div id="qv-wrapper">
+
+ <div id="qv-wrapper">
<div id="qv">
<h2>Características de la publicación</h2>
<ol>
@@ -303,7 +303,7 @@ Xnonavpage=true
<p>
En la mayoría de los casos, todo lo que necesitas es un solo paquete de aplicaciones (APK), y generalmente es la manera
más sencilla de administrar y mantener la aplicación. Sin embargo, si necesitas
- proporcionar un APK distinto para diferentes dispositivos, Google Play te
+ proporcionar un APK distinto para diferentes dispositivos, Google Play te
permite hacerlo.
</p>
diff --git a/docs/html-intl/intl/es/distribute/googleplay/families/faq.jd b/docs/html-intl/intl/es/distribute/googleplay/families/faq.jd
index ecad47ca20fe..44da2258d3f6 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/families/faq.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@ page.metaDescription=Preguntas y respuestas acerca de Diseñado para familias
font-weight:bold;
}
</style>
-
+
<div id="qv-wrapper">
<ol id="qv">
<h2>En este documento:</h2>
@@ -141,7 +141,7 @@ page.metaDescription=Preguntas y respuestas acerca de Diseñado para familias
confirmar que es apta para familias. Suponiendo que tu aplicación cumple con todos los requisitos
del programa, prevemos que el tiempo de publicación no debería prolongarse
más allá de lo habitual; no obstante, puede haber una demora en la publicación de la aplicación si se
- rechaza durante la revisión para la inclusión en Diseñado para familias.
+ rechaza durante la revisión para la inclusión en Diseñado para familias.
</dd>
<dt>
diff --git a/docs/html-intl/intl/es/distribute/googleplay/families/start.jd b/docs/html-intl/intl/es/distribute/googleplay/families/start.jd
index 3ed1eb39a9ae..d6d6126b2d98 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/families/start.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/families/start.jd
@@ -78,7 +78,7 @@ page.metaDescription=Únete a Diseñado para familias en pocos pasos sencillos.
<p class="note">
<strong>Nota</strong>: Las aplicaciones publicadas en el programa Diseñado para familias
- también están disponibles para todos los usuarios en Google Play.
+ también están disponibles para todos los usuarios en Google Play.
</p>
<p>
diff --git a/docs/html-intl/intl/es/distribute/googleplay/quality/auto.jd b/docs/html-intl/intl/es/distribute/googleplay/quality/auto.jd
index c7cb65dc4066..2b1f40382c69 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/quality/auto.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/quality/auto.jd
@@ -477,7 +477,7 @@ data-sortorder="-timestamp" data-cardsizes="9x3" data-maxresults="6">
No. Cuando Google inicie el proceso de aprobación, tu aplicación para Auto se someterá a una revisión de
seguridad del conductor y no estará
disponible para distribución hasta que se apruebe. Dado que es el mismo APK que el
- que utilizas para teléfonos y tablets, tus actualizaciones en la Play Store para esos dispositivos no estará disponible hasta que
+ que utilizas para teléfonos y tablets, tus actualizaciones en la Play Store para esos dispositivos no estará disponible hasta que
finalice el proceso de aprobación para Auto.
</p>
diff --git a/docs/html-intl/intl/es/distribute/googleplay/quality/core.jd b/docs/html-intl/intl/es/distribute/googleplay/quality/core.jd
index 8588c6b80f79..b972949362b3 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/quality/core.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/quality/core.jd
@@ -12,7 +12,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="#listing">Google Play</a></li>
</ol>
-
+
<h2>Prueba</h2>
<ol>
<li><a href="#test-environment">Configuración de un entorno de prueba</a></li>
@@ -24,7 +24,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="{@docRoot}distribute/essentials/quality/tablets.html">Calidad de las aplicaciones para tablets</a></li>
<li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">Optimiza tu aplicación</a></li>
</ol>
-
+
</div>
</div>
@@ -84,7 +84,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<th style="width:54px;">
ID
</th>
-
+
<th>
Descripción
diff --git a/docs/html-intl/intl/es/distribute/googleplay/quality/tablets.jd b/docs/html-intl/intl/es/distribute/googleplay/quality/tablets.jd
index 62c6f8738a8a..e0049232b969 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/quality/tablets.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/quality/tablets.jd
@@ -56,7 +56,7 @@ Xnonavpage=true
<p>El primer paso en la provisión de una excelente experiencia con la aplicación en tablets es asegurarte
de que la aplicación cumpla con los <em>criterios de calidad de la aplicación principal</em> en todos los dispositivos
- y formatos a los que apunte. Para obtener información completa, consulta las <a href="{@docRoot}distribute/essentials/quality/core.html">Pautas de calidad de la aplicación principal</a>.
+ y formatos a los que apunte. Para obtener información completa, consulta las <a href="{@docRoot}distribute/essentials/quality/core.html">Pautas de calidad de la aplicación principal</a>.
</p>
<p>
@@ -119,7 +119,7 @@ style="font-weight:500;">Despídete de tu IU "estirada"</span>: En las tablets,
<li>Proporciona diseños personalizados, según sea necesario, para las pantallas <code>large</code> y
<code>xlarge</code>. También puedes proporcionar diseños que se cargarán
en función de la <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">dimensión
- más corta</a> de la pantalla o la <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">altura y el ancho
+ más corta</a> de la pantalla o la <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">altura y el ancho
mínimos disponibles</a>.
</li>
@@ -208,7 +208,7 @@ android.app.Fragment}. Esto te permite
maximizar la reutilización de códigos entre diferentes factores y pantallas que
compartan contenido.</li>
<li>Decide en qué tamaños de pantalla usarás una IU multipanel y luego proporciona los
- diferentes diseños en los depósitos para el tamaño de pantalla correspondiente (como
+ diferentes diseños en los depósitos para el tamaño de pantalla correspondiente (como
<code>large</code>/<code>xlarge</code>) o anchos mínimos de pantalla (como
<code>sw600dp</code>/<code>sw720</code>).</li>
</ul>
@@ -492,7 +492,7 @@ o simplemente centrando el icono dentro del botón transparente.</li>
<pre>&lt;uses-feature android:name="android.hardware.telephony" android:required="false" /&gt;</pre></li>
-<li>En forma similar, revisa el manifiesto para detectar elementos <a href="{@docRoot}guide/topics/manifest/permission-element.html"><code>&lt;permission&gt;</code></a> que
+<li>En forma similar, revisa el manifiesto para detectar elementos <a href="{@docRoot}guide/topics/manifest/permission-element.html"><code>&lt;permission&gt;</code></a> que
<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">impliquen requisitos
de características de hardware</a> que no sean adecuadas para tablets. Si encuentras esos
permisos, asegúrate de declarar explícitamente un elemento
@@ -735,7 +735,7 @@ o simplemente centrando el icono dentro del botón transparente.</li>
distribución. </p>
<p>Si la página de Sugerencias para la optimización indica problemas "Pendientes" que crees que no
- corresponden a tu aplicación o afectan la calidad de la aplicación en las tablets,
+ corresponden a tu aplicación o afectan la calidad de la aplicación en las tablets,
usa el <a href="https://support.google.com/googleplay/android-developer/contact/tabletq" target="_googleplay" style="white-space:nowrap">Formulario de contacto de Diseñado para tablets&raquo;</a> para comunicárnoslo. Revisaremos
tu aplicación y actualizaremos tu página de Sugerencias para la optimización
según corresponda.</p>
diff --git a/docs/html-intl/intl/es/distribute/googleplay/tv.jd b/docs/html-intl/intl/es/distribute/googleplay/tv.jd
index e3a95bc2929d..e9deacbcfb6f 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/tv.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/tv.jd
@@ -132,7 +132,7 @@ page.metaDescription=Distribuye tus aplicaciones, juegos y contenido para Androi
<ul>
<li>Cumple las pautas de Calidad de la aplicación principal
<ul>
- <li>Sigue las <a href="{@docRoot}design/index.html">pautas de
+ <li>Sigue las <a href="{@docRoot}design/index.html">pautas de
Diseño Android</a>. Presta especial atención al uso de <a href="http://www.google.com/design/spec/material-design/introduction.html">Material
Design</a> en tu aplicación.
</li>
@@ -261,7 +261,7 @@ page.metaDescription=Distribuye tus aplicaciones, juegos y contenido para Androi
los criterios, recibirás una <strong>notificación por correo electrónico enviada a tu cuenta
de desarrollador</strong> con un resumen de las áreas que debes abordar. Una vez que realices
los ajustes necesarios, puedes cargar una nueva versión de tu aplicación a la Consola para
- desarrolladores.
+ desarrolladores.
</p>
<p>
@@ -282,7 +282,7 @@ page.metaDescription=Distribuye tus aplicaciones, juegos y contenido para Androi
<li>
<em>Aprobada</em>: se revisó tu aplicación y se aprobó. La aplicación
- estará disponible de forma directa para los usuarios de Android TV.
+ estará disponible de forma directa para los usuarios de Android TV.
</li>
<li>
diff --git a/docs/html-intl/intl/es/distribute/googleplay/wear.jd b/docs/html-intl/intl/es/distribute/googleplay/wear.jd
index f23315d86495..2c8a804e90d5 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/wear.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/wear.jd
@@ -127,7 +127,7 @@ Una vez que hayas leído las pautas, el paso siguientes es desarrollar tu aplica
<ul>
<li>Cumple las pautas de Calidad de la aplicación principal.
<ul>
- <li>Sigue las <a href="{@docRoot}design/index.html">pautas de
+ <li>Sigue las <a href="{@docRoot}design/index.html">pautas de
Diseño Android</a>. Presta especial atención al uso de <a href="http://www.google.com/design/spec/material-design/introduction.html">Material
Design</a> en tu aplicación.
</li>
@@ -152,7 +152,7 @@ desarrollo de aplicaciones para Wear</a>.</li>
<p>
Una vez que hayas creado tu APK listo para el lanzamiento y lo hayas probado para asegurarte de que cumple todos los criterios de <a href="{@docRoot}distribute/essentials/quality/wear.html">Calidad de las aplicaciones para Wear</a>, cárgalo
a la Consola para desarrolladores. Actualiza el directorio de tu tienda con capturas de pantalla de tu aplicación para Wear y configura opciones
- de distribución, según sea necesario. Si no sabes cómo prepararte para el lanzamiento en Google Play, consulta la
+ de distribución, según sea necesario. Si no sabes cómo prepararte para el lanzamiento en Google Play, consulta la
<a href="{@docRoot}distribute/googleplay/publish/preparing.html">Lista de comprobación para el lanzamiento.</a>
</p>
diff --git a/docs/html-intl/intl/es/distribute/tools/launch-checklist.jd b/docs/html-intl/intl/es/distribute/tools/launch-checklist.jd
index ad42663a6f92..be23c863ae5f 100644
--- a/docs/html-intl/intl/es/distribute/tools/launch-checklist.jd
+++ b/docs/html-intl/intl/es/distribute/tools/launch-checklist.jd
@@ -870,7 +870,7 @@ data-maxresults="6">
<li>
<p>
"Dispositivos compatibles" indica que tus aplicaciones están llegando a los dispositivos
- a los que pretendías llegar. De lo contrario, deberás verificar con tu equipo de desarrollo
+ a los que pretendías llegar. De lo contrario, deberás verificar con tu equipo de desarrollo
los requisitos y las reglas de filtrado de las aplicaciones.
</p>
</li>
diff --git a/docs/html-intl/intl/es/distribute/tools/localization-checklist.jd b/docs/html-intl/intl/es/distribute/tools/localization-checklist.jd
index 7cb3ccb54b39..c06849013fa7 100644
--- a/docs/html-intl/intl/es/distribute/tools/localization-checklist.jd
+++ b/docs/html-intl/intl/es/distribute/tools/localization-checklist.jd
@@ -903,7 +903,7 @@ data-maxresults="6">
Responde las reseñas, si fuera posible. Te recomendamos que interactúes
con los usuarios internacionales en sus idiomas o en un idioma común, si fuera posible.
Si no lo es, puedes intentar utilizar herramientas de traducción, aunque es posible que no puedas
- prever los resultados. Si tu aplicación se vuelve muy popular en un idioma, considera
+ prever los resultados. Si tu aplicación se vuelve muy popular en un idioma, considera
la posibilidad de obtener ayuda por parte de hablantes nativos para brindar soporte.
</p>
</li>
diff --git a/docs/html-intl/intl/es/google/play/filters.jd b/docs/html-intl/intl/es/google/play/filters.jd
index 03565b9b175d..07238ee32751 100644
--- a/docs/html-intl/intl/es/google/play/filters.jd
+++ b/docs/html-intl/intl/es/google/play/filters.jd
@@ -81,7 +81,7 @@ Por ejemplo, si una aplicación requiere una cámara, Google Play no mostrará l
solicite específicamente la aplicación al hacer clic en un vínculo profundo que apunte directamente a la
ID de la aplicación en Google Play.</p>
-<p>Puedes usar cualquier combinación de los filtros disponibles para tu aplicación. Por ejemplo, puedes establecer un requisito
+<p>Puedes usar cualquier combinación de los filtros disponibles para tu aplicación. Por ejemplo, puedes establecer un requisito
<code>minSdkVersion</code> de <code>"4"</code> y configurar <code>smallScreens="false"</code>
en la aplicación; luego, al cargar la aplicación a Google Play, podrías apuntar a países (operadores) europeos
únicamente. De este modo, los filtros de Google Play evitarán que la aplicación esté disponible en un dispositivo
@@ -102,7 +102,7 @@ Play</a>, pueden ver todas las aplicaciones publicadas. No obstante, el sitio we
<h2 id="manifest-filters">Filtrado en función del manifiesto de la aplicación</h2>
-<p>La mayoría de los filtros son activados por elementos del archivo de manifiesto de una
+<p>La mayoría de los filtros son activados por elementos del archivo de manifiesto de una
aplicación, <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>
(aunque no todo lo que se encuentra en el archivo de manifiesto puede desencadenar el filtrado).
La tabla 1 contiene los elementos del manifiesto que debes usar para desencadenar el
diff --git a/docs/html-intl/intl/es/preview/api-overview.jd b/docs/html-intl/intl/es/preview/api-overview.jd
index f84bede97a70..7cee010dc5a7 100644
--- a/docs/html-intl/intl/es/preview/api-overview.jd
+++ b/docs/html-intl/intl/es/preview/api-overview.jd
@@ -62,7 +62,7 @@ las nuevas funciones para desarrolladores. </p>
<h2 id="multi-window_support">Compatibilidad con ventanas múltiples</h2>
-<p>En Android N, presentamos una nueva y muy solicitada función multitarea
+<p>En Android N, presentamos una nueva y muy solicitada función multitarea
en la plataforma: la compatibilidad con ventanas múltiples. </p>
<p>Los usuarios ahora pueden abrir dos aplicaciones al mismo tiempo en la pantalla. </p>
@@ -815,7 +815,7 @@ externo. Cuando se usan las nuevas API, el sistema emplea una IU de
permisos simple en la que se detallan claramente los directorios a los cuales
la aplicación solicita acceso.</p>
-<p>Para obtener más información, consulta la documentación
+<p>Para obtener más información, consulta la documentación
<a href="{@docRoot}preview/features/scoped-folder-access.html">Acceso
a directorios determinados</a> para desarrolladores.</p>
@@ -846,7 +846,7 @@ de aplicaciones que crean aplicaciones de alto rendimiento y ejecución prolonga
</p>
<p>
-Android N incluye compatibilidad opcional para un
+Android N incluye compatibilidad opcional para un
<em>modo de rendimiento sostenido</em>, que permite que los fabricantes de equipo original (OEM) arrojen datos sobre las capacidades de rendimiento del dispositivo
para las aplicaciones de ejecución prolongada. Los desarrolladores
de aplicaciones pueden usar estos datos para perfeccionar sus aplicaciones y alcanzar un nivel
@@ -854,7 +854,7 @@ uniforme y predecible de rendimiento en el dispositivo durante períodos prolong
</p>
<p>
-Los desarrolladores de aplicaciones solo pueden probar esta API nueva en la N Developer Preview instalada solo en dispositivos con
+Los desarrolladores de aplicaciones solo pueden probar esta API nueva en la N Developer Preview instalada solo en dispositivos con
Nexus 6P. Para usar esta función,
establece el indicador de rendimiento sostenido de la ventana
que deseas ejecutar en el modo de rendimiento sostenido. Establece este indicador con el método
@@ -888,7 +888,7 @@ consulta <a href="https://developers.google.com/vr/android/">Google VR SDK para
</p>
<ul>
- <li>Puedes establecer un ícono desde el id. de un recurso llamando a
+ <li>Puedes establecer un ícono desde el id. de un recurso llamando a
<code>PrinterInfo.Builder.setResourceIconId()</code>.
</li>
diff --git a/docs/html-intl/intl/es/preview/behavior-changes.jd b/docs/html-intl/intl/es/preview/behavior-changes.jd
index 5eb4966b8c34..112c1c985b1a 100644
--- a/docs/html-intl/intl/es/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/es/preview/behavior-changes.jd
@@ -88,7 +88,7 @@ determinadas intents implícitas.
determinado, se activa en este el modo Descanso y se aplica el primer subconjunto de restricciones: se
desactiva el acceso de las aplicaciones a la red y se aplazan tareas y sincronizaciones. Si el dispositivo
permanece quieto durante un tiempo determinado tras activarse el modo Descanso, el sistema aplica el
- resto de las restricciones del modo a {@link android.os.PowerManager.WakeLock},
+ resto de las restricciones del modo a {@link android.os.PowerManager.WakeLock},
alarmas de {@link android.app.AlarmManager}, GPS y análisis de Wi-Fi. Independientemente de que
se apliquen algunas o todas las restricciones del modo Descanso, el sistema activa el
dispositivo durante plazos de mantenimiento breves en los cuales las aplicaciones tienen
@@ -199,7 +199,7 @@ determinadas intents implícitas.
Los propietarios ya no pueden reducir los permisos de archivo de los archivos privados,
y un intento de hacerlo utilizando
{@link android.content.Context#MODE_WORLD_READABLE} o
- {@link android.content.Context#MODE_WORLD_WRITEABLE} activará una
+ {@link android.content.Context#MODE_WORLD_WRITEABLE} activará una
{@link java.lang.SecurityException}.
<p class="note">
<strong>Nota:</strong> Desde ahora, esta restricción no se aplica planamente.
@@ -211,7 +211,7 @@ determinadas intents implícitas.
<li>
Pasar URI <code>file://</code> fuera del dominio del paquete puede dar al
receptor una ruta de acceso inaccesible. Por lo tanto, los intentos de pasar un
- URI <code>file://</code> activan una
+ URI <code>file://</code> activan una
<code>FileUriExposedException</code>. La manera recomendada para compartir el
contenido de un archivo privado consiste en utilizar el {@link
android.support.v4.content.FileProvider}.
@@ -221,8 +221,8 @@ determinadas intents implícitas.
almacenados de manera privada por nombre de archivo. Las aplicaciones heredadas pueden terminar con una
ruta de acceso inaccesible cuando acceden a {@link
android.app.DownloadManager#COLUMN_LOCAL_FILENAME}. Las aplicaciones orientadas a
- Android N o versiones posteriores activan una {@link java.lang.SecurityException} cuando
- intentan acceder a
+ Android N o versiones posteriores activan una {@link java.lang.SecurityException} cuando
+ intentan acceder a
{@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}.
Las aplicaciones heredadas que establecen la ubicación de descarga en una ubicación pública
usando
@@ -573,7 +573,7 @@ Muchas API de la plataforma han comenzado a controlar en busca del envío de car
a través de transacciones {@link android.os.Binder}. Además, el
sistema ahora vuelve a emitir {@code TransactionTooLargeExceptions}
como {@code RuntimeExceptions}, en lugar de registrarlas o suprimirlas silenciosamente. Un
-ejemplo común es almacenar demasiados datos en
+ejemplo común es almacenar demasiados datos en
{@link android.app.Activity#onSaveInstanceState Activity.onSaveInstanceState()},
lo que hace que {@code ActivityThread.StopInfo} emita una
{@code RuntimeException} cuando la aplicación se orienta a Android N.
@@ -585,7 +585,7 @@ la {@link android.view.View}
no está anexada a una ventana, el sistema
pone en cola la tarea {@link java.lang.Runnable} con la {@link android.view.View}.
La tarea {@link java.lang.Runnable} no se ejecuta hasta que la
-{@link android.view.View} esté anexada
+{@link android.view.View} esté anexada
a una ventana. Este comportamiento soluciona los siguientes errores:
<ul>
<li>Si una aplicación publicaba una {@link android.view.View} desde un subproceso que no fuera el subproceso de la IU
@@ -600,7 +600,7 @@ a una ventana. Este comportamiento soluciona los siguientes errores:
Si una aplicación en Android N con el permiso
{@link android.Manifest.permission#DELETE_PACKAGES DELETE_PACKAGES}
intentaba borrar un paquete instalado por otra aplicación,
-el sistema solicitaba la confirmación del usuario. En este escenario, las aplicaciones debían esperar recibir el estado
+el sistema solicitaba la confirmación del usuario. En este escenario, las aplicaciones debían esperar recibir el estado
{@link android.content.pm.PackageInstaller#STATUS_PENDING_USER_ACTION STATUS_PENDING_USER_ACTION}
al invocar
{@link android.content.pm.PackageInstaller#uninstall PackageInstaller.uninstall()}.
diff --git a/docs/html-intl/intl/es/preview/download-ota.jd b/docs/html-intl/intl/es/preview/download-ota.jd
index d3e8be92f7eb..2b2bcbfbedf6 100644
--- a/docs/html-intl/intl/es/preview/download-ota.jd
+++ b/docs/html-intl/intl/es/preview/download-ota.jd
@@ -178,7 +178,7 @@ Uso de las API de Google
<ol>
<li>Descargar una imagen de dispositivo inalámbrico de la tabla que verás a continuación.</li>
<li>Reinicia el dispositivo en modo Recuperación. Para leer más información sobre cómo
- aplicar este modo en dispositivos Nexus, visita la sección
+ aplicar este modo en dispositivos Nexus, visita la sección
<a href="https://support.google.com/nexus/answer/4596836">Reset your Nexus
device to factory settings</a>.
</li>
@@ -202,65 +202,73 @@ Uso de las API de Google
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
- MD5: 15fe2eba9b01737374196bdf0a792fe9<br>
- SHA-1: 5014b2bba77f9e1a680ac3f90729621c85a14283
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-ota-npd90g-0a874807.zip</a><br>
+ MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+ SHA-1: a9920bcc8d475ce322cada097d085448512635e2
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
- MD5: e8b12f7721c53af9a450f7058928a5fc<br>
- SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-ota-npd90g-06f5d23d.zip</a><br>
+ MD5: 513570bb3a91878c2d1a5807d2340420<br>
+ SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
- MD5: 3fac09fef759dde26e57cb80b20b6477<br>
- SHA-1: 27d6caa786577d8a38b2da5bf94b33b4524a1a1c
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-ota-npd90g-5baa69c2.zip</a><br>
+ MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+ SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
- MD5: 58312c4a5971818ef5c77a3f446003da<br>
- SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-ota-npd90g-c04785e1.zip</a><br>
+ MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+ SHA-1: 31633180635b831e59271a7d904439f278586f49
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
- MD5: 92b7d1fa252f7394e70f957c72d4aac8<br>
- SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+ MD5: 0493fa79763d67bcdde8007299e1888d<br>
+ SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
- MD5: 1461622ad53ea842b2722fa7b49b8172<br>
- SHA-1: 409c061668ab270774877d7f3eae44fa48d2b931
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-ota-npd90g-3a0643ae.zip</a><br>
+ MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+ SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
- MD5: c60117f3640cc6db12386fd632289c7d<br>
- SHA-1: 87349c767c69efb4172c90ce1d88cf578c3d28b3
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-ota-npd90g-ec931914.zip</a><br>
+ MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+ SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
- MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
- SHA-1: 6f33742290eb46f2561891f38ca2e754b4e50c6a
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+ MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+ SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
</td>
</tr>
diff --git a/docs/html-intl/intl/es/preview/download.jd b/docs/html-intl/intl/es/preview/download.jd
index d4890744e766..6fa9a6ae0ab1 100644
--- a/docs/html-intl/intl/es/preview/download.jd
+++ b/docs/html-intl/intl/es/preview/download.jd
@@ -209,7 +209,7 @@ Uso de las API de Google
<h2 id="device-preview">Configurar un dispositivo de hardware</h2>
<p>
- En N Developer Preview se ofrecen actualizaciones del sistema para una variedad de dispositivos de hardware
+ En N Developer Preview se ofrecen actualizaciones del sistema para una variedad de dispositivos de hardware
que puedes usar para realizarle pruebas a tu aplicación, desde teléfonos hasta tablets y TV.
</p>
@@ -300,72 +300,73 @@ que puedes usar para realizarle pruebas a tu aplicación, desde teléfonos hasta
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
- MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
- SHA-1: 5ba4053577007d15c96472206e3a79bc80ab194c
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+ MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+ SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
- MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
- SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+ MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+ SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
- MD5: e93de7949433339856124c3729c15ebb<br>
- SHA-1: 81c341d57ef2cd139569b055d5d59e9e592a7abd
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+ MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+ SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
- MD5: 565be87ebb2d5937e2abe1a42645864b<br>
- SHA-1: 2b50e19dae2667b27f911e3c61ed64860caf43e1
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-npd90g-factory-41b55406.tgz</a><br>
+ MD5: cefa78950141da2a7c75e887717e3c8f<br>
+ SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
- MD5: a8464e15c6683fe2afa378a63e205fda<br>
- SHA-1: 2e89ebe67a46b2f3beb050746c13341cd11fa678
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-npd90g-factory-610492be.tgz</a><br>
+ MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+ SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
- MD5: c0dbb7db671f61b2785da5001cedefcb<br>
- SHA-1: 1de74874f8d83e14d642f13b5a2130fc2aa55873
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-npd90g-factory-0fe95694.tgz</a><br>
+ MD5: f4cb48f919e4c29c631de21416c612e2<br>
+ SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
- MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
- SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-npd90g-factory-f4da981c.tgz</a><br>
+ MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+ SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
- MD5: 7d34a9774fdd6e025d485ce6cfc23c4c<br>
- SHA-1: 5ab1212bc9417269d391aacf1e672fff24b4ecc5
- </td>
- </tr>
-
- <tr id="xperia">
- <td>Sony Xperia Z3 <br> (D6603 and D6653)</td>
- <td>Descarga: <a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
- Para más información, visita la sección <a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Prueba la Android N Developer Preview en Xperia Z3</a>.
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+ MD5: 0ed565c509594072822d71c65b48ec8e<br>
+ SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
</td>
</tr>
@@ -377,7 +378,7 @@ que puedes usar para realizarle pruebas a tu aplicación, desde teléfonos hasta
Si quieres desinstalar la muestra desde un dispositivo, puedes hacerlo de las
siguientes maneras: </p>
<ul>
- <li><strong>Obtener una imagen de sistema con las especificaciones de fábrica</strong> y luego actualízala de manera manual
+ <li><strong>Obtener una imagen de sistema con las especificaciones de fábrica</strong> y luego actualízala de manera manual
para el dispositivo.
<ul>
<li>Para <strong>los dispositivos Nexus y Pixel C</strong>, consulta
@@ -466,8 +467,8 @@ para la Android N Preview).
<p>
A fin de garantizar la mejor experiencia en el emulador de Android, verifica que estás utilizando
-Android Studio 2.1 o una versión superior, compatible con el <a href="http://tools.android.com/tech-docs/emulator">emulador de Android 2.0</a>,
-cuyo rendimiento es mayor si se lo compara con el emulador utilizado en
+Android Studio 2.1 o una versión superior, compatible con el <a href="http://tools.android.com/tech-docs/emulator">emulador de Android 2.0</a>,
+cuyo rendimiento es mayor si se lo compara con el emulador utilizado en
Android Studio 1.5.</p>
<p>Para obtener más información sobre la creación de dispositivos virtuales, consulta <a href="{@docRoot}tools/devices/index.html">Administración de dispositivos virtuales</a>.
diff --git a/docs/html-intl/intl/es/preview/features/afw.jd b/docs/html-intl/intl/es/preview/features/afw.jd
index 32e57c83a3d5..5e550a6d597c 100644
--- a/docs/html-intl/intl/es/preview/features/afw.jd
+++ b/docs/html-intl/intl/es/preview/features/afw.jd
@@ -35,7 +35,7 @@ page.keywords="android for work", "android N", "enterprise", "QR code"
<li><a href="#process-logging">Registros de procesos empresariales
</a></li>
- <li><a href="#bug-reports">Informes de errores remotos
+ <li><a href="#bug-reports">Informes de errores remotos
</a></li>
<li><a href="#remove-cert">Quitar un certificado de cliente
@@ -109,7 +109,7 @@ Android N.</p>
Si el propietario de un perfil envía una intent {@link
android.app.admin.DevicePolicyManager#ACTION_SET_NEW_PASSWORD}, el
sistema le pide al usuario que configure una comprobación de seguridad. El propietario del perfil también puede
- enviar una intent <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code>
+ enviar una intent <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code>
para que el usuario establezca un bloqueo de dispositivo.
</p>
@@ -133,7 +133,7 @@ Android N.</p>
</p>
<p>
- Para obtener detalles sobre los nuevos métodos y constantes, consulta la página de referencia de
+ Para obtener detalles sobre los nuevos métodos y constantes, consulta la página de referencia de
<code>DevicePolicyManager</code> en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia sobre N Preview SDK</a>.
</p>
@@ -156,7 +156,7 @@ Android N.</p>
<p>
Los lanzadores deben aplicar una IU distintiva para las aplicaciones suspendidas a fin de mostrar que las
aplicaciones no están actualmente disponibles; por ejemplo, el ícono de la aplicación puede aparecer en color
- gris. Los lanzadores pueden averiguar si una aplicación está suspendida llamando al nuevo método
+ gris. Los lanzadores pueden averiguar si una aplicación está suspendida llamando al nuevo método
<code>DevicePolicyManager.getPackageSuspended()</code>.
</p>
@@ -181,9 +181,9 @@ Android N.</p>
</p>
<p>
- Los propietarios pueden requerir el uso de una VPN llamando al nuevo método
+ Los propietarios pueden requerir el uso de una VPN llamando al nuevo método
<code>DevicePolicyManager.setAlwaysOnVpnPackage()</code>. Para averiguar
- si el propietario ha establecido un requisito de VPN, llama al nuevo método
+ si el propietario ha establecido un requisito de VPN, llama al nuevo método
<code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code>.
</p>
@@ -255,7 +255,7 @@ Android N.</p>
<p>
Los propietarios pueden reiniciar sus dispositivos de forma remota. En algunos casos, no se puede acceder al botón de encendido de los dispositivos implementados en
lugares públicos dentro de recintos. Si se debe
- reiniciar un dispositivo, los administradores pueden hacerlo utilizando el nuevo método
+ reiniciar un dispositivo, los administradores pueden hacerlo utilizando el nuevo método
<code>DevicePolicyManager.reboot()</code>.
</p>
@@ -271,7 +271,7 @@ Android N.</p>
<p>
Los propietarios de dispositivos pueden identificar actividades sospechosas mediante un rastreo remoto de la actividad del
dispositivo, incluidos inicios de aplicaciones, actividad adb y desbloqueos de pantalla. Los registros de
- procesos no requieren del consentimiento del usuario. Para recuperar registros, los propietarios de dispositivos habilitan
+ procesos no requieren del consentimiento del usuario. Para recuperar registros, los propietarios de dispositivos habilitan
los registros de dispositivos mediante <code>DevicePolicyManager.setSecurityLoggingEnabled()</code>.
</p>
@@ -402,10 +402,10 @@ Android N.</p>
<p>
El propietario del dispositivo o perfil puede habilitar otra aplicación para que administre las restricciones de
- aplicaciones mediante el nuevo método
+ aplicaciones mediante el nuevo método
<code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code>
. La aplicación nominada puede controlar si se otorgó este permiso
- llamando a
+ llamando a
<code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code>.
</p>
@@ -461,8 +461,8 @@ Android N.</p>
<p>
Los propietarios de perfiles y dispositivos pueden configurar múltiples certificados de CA para una configuración
de Wi-Fi determinada. Cuando las redes de Wi-Fi corporativas tienen CA independientes para
- diferentes puntos de acceso con el mismo SSID, los administradores de TI pueden incluir todas las
- CA relevantes en la configuración Wi-Fi utilizando el nuevo método
+ diferentes puntos de acceso con el mismo SSID, los administradores de TI pueden incluir todas las
+ CA relevantes en la configuración Wi-Fi utilizando el nuevo método
<code>setCaCertificates()</code>.
</p>
@@ -511,7 +511,7 @@ Android N.</p>
</p>
<p>
- El teléfono debe controlar el nuevo marcador
+ El teléfono debe controlar el nuevo marcador
<code>android.telecom.Call.PROPERTY_WORK_CALL</code> para determinar si una llamada es
de tipo laboral. Si se trata de una llamada laboral, el teléfono debe indicarlo
, por ejemplo, mediante el agregado de una insignia de trabajo.
@@ -524,7 +524,7 @@ Android N.</p>
usuario modifique el fondo de pantalla. Los propietarios de dispositivos o perfiles aún pueden
modificar el fondo de pantalla. Sin embargo, solo pueden hacerlo para el
usuario o perfil que controlan. Por ejemplo, el propietario de un perfil no puede modificar el
- fondo de pantalla del usuario primario,
+ fondo de pantalla del usuario primario,
pero sí pueden hacerlo el propietario de un dispositivo o el propietario de un perfil en el perfil principal. El propietario de un dispositivo o perfil que desea modificar el
fondo de pantalla debe controlar si el usuario o perfil que administra posee un
fondo de pantalla ({@link android.app.WallpaperManager#isWallpaperSupported
@@ -544,7 +544,7 @@ Android N.</p>
<h2 id="health-monitoring">Control del estado del dispositivo</h2>
<p>
- El propietario de un perfil o dispositivo puede usar la nueva interfaz
+ El propietario de un perfil o dispositivo puede usar la nueva interfaz
<code>HardwarePropertiesManager</code> para recuperar información
sobre el estado del dispositivo, como por ejemplo, las temperaturas de CPU o GPU y el uso de la CPU. La nueva interfaz
de control es especialmente útil para controlar dispositivos sin supervisión
diff --git a/docs/html-intl/intl/es/preview/features/background-optimization.jd b/docs/html-intl/intl/es/preview/features/background-optimization.jd
index fbae9b503fe6..c061a093bb29 100644
--- a/docs/html-intl/intl/es/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/es/preview/features/background-optimization.jd
@@ -274,7 +274,7 @@ public static void scheduleJob(Context context) {
</pre>
<p>
Cuando el sistema informa un cambio en el(los) URI de contenido especificado(s), tu aplicación
- recibe un callback y se pasa un objeto {@link android.app.job.JobParameters}
+ recibe un callback y se pasa un objeto {@link android.app.job.JobParameters}
al método {@link android.app.job.JobService#onStartJob onStartJob()}
en {@code MediaContentJob.class}.
</p>
diff --git a/docs/html-intl/intl/es/preview/features/direct-boot.jd b/docs/html-intl/intl/es/preview/features/direct-boot.jd
index a9cfcf099692..e1d99e9d2b0e 100644
--- a/docs/html-intl/intl/es/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/es/preview/features/direct-boot.jd
@@ -58,7 +58,7 @@ el almacenamiento encriptado por credencial.</p>
<p>Debes registrar los componentes de las aplicaciones con el sistema antes de que estas puedan
ejecutarse durante el modo de inicio directo o acceder al almacenamiento encriptado por
dispositivo. Para registrar una aplicación en el sistema, debes marcar los componentes como
-<i>"con reconocimiento de encriptación"</i>. Para marcar tu dispositivo como "con reconocimiento de encriptación", configura el atributo
+<i>"con reconocimiento de encriptación"</i>. Para marcar tu dispositivo como "con reconocimiento de encriptación", configura el atributo
<code>android:directBootAware</code> como verdadero en el manifiesto.<p>
<p>Los componentes con reconocimiento de encriptación pueden registrarse para recibir un mensaje de transmisión
diff --git a/docs/html-intl/intl/es/preview/features/multi-window.jd b/docs/html-intl/intl/es/preview/features/multi-window.jd
index 89bc3194c577..441e06af361a 100644
--- a/docs/html-intl/intl/es/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/es/preview/features/multi-window.jd
@@ -158,7 +158,7 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
si quieres que las actividades de tu aplicación admitan la visualización de ventanas múltiples. Puedes establecer
atributos en tu manifiesto para controlar el tamaño y el diseño.
La configuración de atributos de una actividad raíz se aplica a todas las actividades
- de su pila de tareas. Por ejemplo, si
+ de su pila de tareas. Por ejemplo, si
<code>android:resizeableActivity</code> está configurado en true para la actividad raíz, se puede modificar el tamaño de todas las actividades
de la pila de tareas.
</p>
@@ -474,7 +474,7 @@ android:supportsPictureInPicture=["true" | "false"]
<p>
Ya sea que actualices o no tu aplicación para Android N, debes
- verificar la forma en que se comporta en modo de ventanas múltiples en caso de que un usuario intente iniciarla
+ verificar la forma en que se comporta en modo de ventanas múltiples en caso de que un usuario intente iniciarla
en modo de ventanas múltiples en un dispositivo con Android N.
</p>
@@ -526,7 +526,7 @@ android:supportsPictureInPicture=["true" | "false"]
</li>
<li>Cambia el tamaño de tu aplicación en modo de pantalla dividida al arrastrar la línea divisoria.
- Verifica que la aplicación cambie de tamaño sin fallar y que estén visibles los elementos
+ Verifica que la aplicación cambie de tamaño sin fallar y que estén visibles los elementos
necesarios de la IU.
</li>
diff --git a/docs/html-intl/intl/es/preview/features/notification-updates.jd b/docs/html-intl/intl/es/preview/features/notification-updates.jd
index 380efcea0325..ff0635ebe10c 100644
--- a/docs/html-intl/intl/es/preview/features/notification-updates.jd
+++ b/docs/html-intl/intl/es/preview/features/notification-updates.jd
@@ -194,7 +194,7 @@ notificationManager.notify(notificationId, repliedNotification);
</ol>
<p>
- En el caso de las aplicaciones interactivas, como los chats, podría ser útil incluir
+ En el caso de las aplicaciones interactivas, como los chats, podría ser útil incluir
contexto adicional cuando se administra texto recuperado. Por ejemplo, en estas aplicaciones, se podrían mostrar
múltiples líneas de historial de chat. Cuando el usuario responde a través de {@link
android.support.v4.app.RemoteInput}, puedes actualizar el historial de respuestas
diff --git a/docs/html-intl/intl/es/preview/features/picture-in-picture.jd b/docs/html-intl/intl/es/preview/features/picture-in-picture.jd
index 0d9313aae1fe..36c0c5771912 100644
--- a/docs/html-intl/intl/es/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/es/preview/features/picture-in-picture.jd
@@ -181,7 +181,7 @@ video en la actividad de reproducción actual en modo de pantalla completa, en l
iniciar una nueva actividad que podría confundir al usuario.</p>
<p>A fin de garantizar que se utilice una única actividad para las solicitudes de reproducción de video y que esta
- ingrese en el modo PIP o salga de este cuando sea necesario, configura el
+ ingrese en el modo PIP o salga de este cuando sea necesario, configura el
<code>android:launchMode</code> de la actividad en <code>singleTask</code>, en el manifiesto:
</p>
@@ -209,5 +209,5 @@ esquina de la pantalla, debes evitar mostrar información importante en la panta
en cualquier área que pueda quedar oculta detrás de la ventana de PIP.</p>
<p>Cuando una actividad se encuentra en modo PIP, de forma predeterminada, no tiene focalización en las entradas. Para
-recibir eventos de entradas durante este modo, usa
+recibir eventos de entradas durante este modo, usa
<code>MediaSession.setMediaButtonReceiver()</code>.</p>
diff --git a/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd
index e83ca5318e35..e423e6ae3d81 100644
--- a/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd
@@ -41,17 +41,17 @@ directorio externo.</li>
<code>StorageVolume</code> correcta. Luego, crea una intent llamando al
método <code>StorageVolume.createAccessIntent()</code> de esa instancia.
Usa esta intención para acceder a directorios de almacenamiento externo. Para obtener una lista de
-todos los volúmenes disponibles, incluidos los volúmenes de medios extraíbles, usa
+todos los volúmenes disponibles, incluidos los volúmenes de medios extraíbles, usa
<code>StorageManager.getVolumesList()</code>.</p>
-<p>Si tienes información sobre un archivo específico, usa
-<code>StorageManager.getStorageVolume(File)</code> para obtener el
-<code>StorageVolume</code> que contiene el archivo. Llama a
-<code>createAccessIntent()</code> en este <code>StorageVolume</code> para acceder al
+<p>Si tienes información sobre un archivo específico, usa
+<code>StorageManager.getStorageVolume(File)</code> para obtener el
+<code>StorageVolume</code> que contiene el archivo. Llama a
+<code>createAccessIntent()</code> en este <code>StorageVolume</code> para acceder al
directorio de almacenamiento externo del archivo.</p>
<p>
-En el caso de los volúmenes secundarios, como las tarjetas SD externas, pasa un valor nulo cuando llames a
+En el caso de los volúmenes secundarios, como las tarjetas SD externas, pasa un valor nulo cuando llames a
<code>StorageVolume.createAccessIntent()</code> para solicitar acceso al volumen
completo, en lugar de un directorio específico.
<code>StorageVolume.createAccessIntent()</code> regresa un valor nulo si pasas un
@@ -140,7 +140,7 @@ de usuario. Si el usuario deniega una solicitud y la aplicación solicita acceso
<img src="{@docRoot}preview/images/scoped-folder-access-dont-ask.png" srcset="{@docRoot}preview/images/scoped-folder-access-dont-ask.png 1x,
{@docRoot}preview/images/scoped-folder-access-dont-ask_2x.png 2x" />
-<p class="img-caption"><strong>Figura 1.</strong> Una aplicación que presenta una
+<p class="img-caption"><strong>Figura 1.</strong> Una aplicación que presenta una
segunda solicitud para obtener acceso a medios extraíbles.</p>
<p>Si el usuario selecciona <b>Don't ask again</b> y deniega la solicitud, todas las
diff --git a/docs/html-intl/intl/es/preview/features/security-config.jd b/docs/html-intl/intl/es/preview/features/security-config.jd
index 39d95c8fb31e..8c3db641c577 100644
--- a/docs/html-intl/intl/es/preview/features/security-config.jd
+++ b/docs/html-intl/intl/es/preview/features/security-config.jd
@@ -171,7 +171,7 @@ page.image=images/cards/card-nyc_2x.jpg
<p>
Agrega las CA de confianza, en formato PEM o DER, a {@code res/raw/trusted_roots}.
Ten en cuenta que, si usas el formato PEM, el archivo debe incluir <em>solo</em> datos PEM
- y ningún texto adicional. También puedes brindar elementos
+ y ningún texto adicional. También puedes brindar elementos
<a href="#certificates"><code>&lt;certificates&gt;</code></a>
múltiples en lugar de solo uno.
</p>
@@ -338,7 +338,7 @@ base-config}, si no están anidados. Los valores no establecidos en la {@code ba
example.com} deben usar un conjunto personalizado de CA. Además, el tráfico de Cleartext a
estos dominios se permite <em>excepto</em> con las conexiones a {@code
secure.example.com}. Anidando la configuración para {@code
-secure.example.com} dentro de la configuración para {@code example.com},
+secure.example.com} dentro de la configuración para {@code example.com},
{@code trust-anchors} no necesita duplicación.
</p>
diff --git a/docs/html-intl/intl/es/preview/features/tv-recording-api.jd b/docs/html-intl/intl/es/preview/features/tv-recording-api.jd
index 58379753cb4d..855db8d5fffe 100644
--- a/docs/html-intl/intl/es/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/es/preview/features/tv-recording-api.jd
@@ -33,13 +33,13 @@ durante la grabación y gestionar las sesiones grabadas.</p>
<p class="note"><strong>Nota:</strong> La aplicación Live Channels todavía no
permite que los usuarios creen grabaciones ni accedan a estas. Hasta que se realicen
- cambios en la aplicación Live Channels, es posible que sea difícil probar completamente la
+ cambios en la aplicación Live Channels, es posible que sea difícil probar completamente la
experiencia de grabación para tu servicio de entrada de TV.</p>
<h2 id="supporting">Indicar la compatibilidad para la grabación</h2>
-<p>Para comunicarle al sistema que tu servicio de entrada de TV permite la grabación, configura el
-atributo <code>android:canRecord</code> de tu archivo XML de metadatos de servicio
+<p>Para comunicarle al sistema que tu servicio de entrada de TV permite la grabación, configura el
+atributo <code>android:canRecord</code> de tu archivo XML de metadatos de servicio
en <code>true</code>:
</p>
@@ -49,7 +49,7 @@ en <code>true</code>:
android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" /&gt;
</pre>
-<p>Para obtener más información sobre el archivo de metadatos de servicio, consulta
+<p>Para obtener más información sobre el archivo de metadatos de servicio, consulta
<a href="{@docRoot}training/tv/tif/tvinput.html#manifest">Declarar el servicio de entrada
de TV en el manifiesto</a>.
</p>
@@ -123,7 +123,7 @@ las aplicaciones de canal con funcionalidad de grabación en la tabla de proveed
<code>RecordedPrograms.Uri</code>. Usa API de proveedor de contenido para
leer, agregar y borrar entradas de esta tabla.</p>
-<p>Para obtener más información sobre cómo trabajar con datos del proveedor de contenido, consulta
+<p>Para obtener más información sobre cómo trabajar con datos del proveedor de contenido, consulta
<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
Conceptos básicos sobre el proveedor de contenido</a>.</p>
diff --git a/docs/html-intl/intl/es/preview/guide.jd b/docs/html-intl/intl/es/preview/guide.jd
index 9fe555ccc289..9d12b57e2b2b 100644
--- a/docs/html-intl/intl/es/preview/guide.jd
+++ b/docs/html-intl/intl/es/preview/guide.jd
@@ -18,7 +18,7 @@ page.tags="preview", "developer preview"
<p>
Android N te brinda la oportunidad de garantizar que tus aplicaciones funcionen con la próxima versión de la plataforma.
- Esta versión preliminar incluye diversas API y cambios en los comportamientos que pueden
+ Esta versión preliminar incluye diversas API y cambios en los comportamientos que pueden
tener impactos en tu aplicación, como se describe en las secciones <a href="{@docRoot}preview/api-overview.html">Información general de la API</a> y <a href="{@docRoot}preview/behavior-changes.html">Cambios en los comportamientos</a>.
Al probar tu aplicación con la versión preliminar, te debes centrar en algunos cambios específicos del sistema para garantizar que los usuarios disfruten de una buena experiencia.
diff --git a/docs/html-intl/intl/es/preview/overview.jd b/docs/html-intl/intl/es/preview/overview.jd
index 279a53649bd0..dc42175c5ba6 100644
--- a/docs/html-intl/intl/es/preview/overview.jd
+++ b/docs/html-intl/intl/es/preview/overview.jd
@@ -321,7 +321,7 @@ page.tags="preview", "developer", "android"
comportamientos</a> se indican áreas clave que debes probar.</li>
<li> Documentación de nuevas API, entre la que se incluye <a href="{@docRoot}preview/api-overview.html">Información general de API</a>, una <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia
de API</a> descargable
- y guías exhaustivas para desarrolladores que muestran, por ejemplo, soporte
+ y guías exhaustivas para desarrolladores que muestran, por ejemplo, soporte
de múltiples ventanas, notificaciones integradas, soporte de múltiples configuraciones regionales y mucho más.
<li> <a href="{@docRoot}preview/samples.html">Ejemplo de código</a>, en el que se
demuestra la manera de admitir permisos y otras funciones nuevas.
diff --git a/docs/html-intl/intl/es/preview/setup-sdk.jd b/docs/html-intl/intl/es/preview/setup-sdk.jd
index 2f8c4fa6e251..51260bb68f8b 100644
--- a/docs/html-intl/intl/es/preview/setup-sdk.jd
+++ b/docs/html-intl/intl/es/preview/setup-sdk.jd
@@ -92,7 +92,7 @@ Android N Preview SDK en Android Studio de la siguiente manera:</p>
<a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
<td width="100%">
MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
- SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
+ SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
</td>
</tr>
<table>
diff --git a/docs/html-intl/intl/es/preview/support.jd b/docs/html-intl/intl/es/preview/support.jd
index f74bae96c272..517429d61432 100644
--- a/docs/html-intl/intl/es/preview/support.jd
+++ b/docs/html-intl/intl/es/preview/support.jd
@@ -85,7 +85,7 @@ page.image=images/cards/card-n-support_2x.png
<li>Developer Preview 3 está <strong>disponible en todos los dispositivos
compatibles:</strong> Nexus 5X, Nexus 6, Nexus 6P, Nexus 9, Nexus Player, Pixel
- C, General Mobile 4G (Android One) y Sony Xperia Z3 (modelos D6603 y
+ C, General Mobile 4G (Android One) y Sony Xperia Z3 (modelos D6603 y
D6653).
</li>
@@ -123,7 +123,7 @@ page.image=images/cards/card-n-support_2x.png
<h4>Multiprocess WebView</h4>
<p>
- Desde la versión 51 de Android N, WebView ejecutará contenido web en
+ Desde la versión 51 de Android N, WebView ejecutará contenido web en
procesos individuales de espacio aislado cuando se haya habilitado
la opción "Multiprocess WebView". El equipo de WebView espera recibir comentarios sobre compatibilidad y
rendimiento de tiempo de ejecución en N antes de habilitar Multiprocess WebView en
@@ -154,7 +154,7 @@ page.image=images/cards/card-n-support_2x.png
que permite que una aplicación monitoree su rendimiento de representación de IU mediante la exposición de una
transmisión de API Pub/Sub para transferir información sobre el intervalo de los fotogramas para la ventana actual
de la aplicación. Puedes usar <code>FrameMetricsListener</code> para medir
- el rendimiento de la IU del nivel de interacción en producción con una granularidad mayor y
+ el rendimiento de la IU del nivel de interacción en producción con una granularidad mayor y
sin la necesidad de contar con conexión USB.
</p>
@@ -223,7 +223,7 @@ page.image=images/cards/card-n-support_2x.png
<dd>
Ahora, el sistema utiliza metadatos de la actividad para definir el modo de mosaico.
(Antes, el valor de devolución de
- <code>TileService.onTileAdded()</code> determinaba el modo de mosaico). Para obtener más información, consulta
+ <code>TileService.onTileAdded()</code> determinaba el modo de mosaico). Para obtener más información, consulta
<code>TileService.META_DATA_ACTIVE_TILE</code> en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API</a> descargable.
</dd>
</dl>
@@ -686,9 +686,9 @@ seguimiento de problemas</a>.</p>
<h4>OEM unlock</h4>
<ul>
- <li>En algunos dispositivos, <strong>Enable OEM unlock</strong> aparecerá inhabilitado en
+ <li>En algunos dispositivos, <strong>Enable OEM unlock</strong> aparecerá inhabilitado en
"Developer Options" al ejecutar DP2.<br>
- <strong>Método alternativo:</strong> Apúntate para
+ <strong>Método alternativo:</strong> Apúntate para
el Programa Android Beta (si aún no lo has hecho) en
<a href="https://www.google.com/android/beta" class="external-link">www.google.com/android/beta</a>. Luego, date de baja y acepta el
paso a una versión anterior (OTA). Darse de baja hará que el dispositivo pase a la versión Android 6.0. Ahora deberías
@@ -764,7 +764,7 @@ seguimiento de problemas</a>.</p>
<li>En la muestra multithreadCmdBuffer, {@code vkCmdClearColorImage()} falla cuando
se ejecuta con el controlador N-DP2.</li>
<li>Los valores de devolución de {@code vkGetPhysicalDeviceFormatProperties()} no configuran un valor
- para {@code VkFormatProperties::linearTilingFeatures} que, como resultado,
+ para {@code VkFormatProperties::linearTilingFeatures} que, como resultado,
toma el valor de 0.</li>
<li>Los anexos del búfer de fotogramas de punto flotante de Vulkan no se manejan de forma correcta.</li>
</ul>
@@ -892,7 +892,7 @@ seguimiento de problemas</a>.</p>
<h4 id="dialer">Teléfono</h4>
<ul>
- <li>La aplicación Teléfono no es compatible con el inicio directo. Este tema se abordará más adelante en
+ <li>La aplicación Teléfono no es compatible con el inicio directo. Este tema se abordará más adelante en
N Developer Preview.
</li>
@@ -1021,7 +1021,7 @@ seguimiento de problemas</a>.</p>
</li>
<li>El primer registro en un perfil de trabajo tarda varios minutos en
- completarse. Esto puede hacer que el dispositivo tarde más de lo normal en volverse
+ completarse. Esto puede hacer que el dispositivo tarde más de lo normal en volverse
visible en la API Play EMM.
</li>
diff --git a/docs/html-intl/intl/es/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/intl/es/training/monitoring-device-state/battery-monitoring.jd
index 08a42dd1f7f4..cfccdab0f628 100644
--- a/docs/html-intl/intl/es/training/monitoring-device-state/battery-monitoring.jd
+++ b/docs/html-intl/intl/es/training/monitoring-device-state/battery-monitoring.jd
@@ -7,8 +7,8 @@ next.title=Cómo determinar y controlar el tipo de conector y el estado de la co
next.link=docking-monitoring.html
@jd:body
-
-<div id="tb-wrapper">
+
+<div id="tb-wrapper">
<div id="tb">
<h2>En esta sección puedes aprender:</h2>
@@ -24,9 +24,9 @@ next.link=docking-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a>
</ul>
-</div>
</div>
-
+</div>
+
<p>Al modificar la frecuencia de las actualizaciones en segundo plano para reducir el efecto de las mismas en la duración de la batería, te recomendamos que comiences por comprobar el estado de carga y el nivel actual de la batería.</p>
<p>El impacto derivado de actualizar aplicaciones en la duración de la batería varía en función del nivel de batería y del estado de carga del dispositivo, mientras que es insignificante cuando este está conectado a la corriente. Por ello, en la mayoría de los casos, puedes maximizar la frecuencia de actualización cuando el dispositivo esté conectado a un cargador. Por el contrario, si el dispositivo está en proceso de descarga, disminuir la frecuencia de actualización te permitirá aumentar la duración de la batería.</p>
@@ -34,8 +34,8 @@ next.link=docking-monitoring.html
<p>Del mismo modo, puedes comprobar el nivel de carga de la batería y reducir la frecuencia de las actualizaciones o incluso detenerlas cuando la batería esté a punto de agotarse.</p>
-<h2 id="DetermineChargeState">Cómo determinar el estado de carga actual</h2>
-
+<h2 id="DetermineChargeState">Cómo determinar el estado de carga actual</h2>
+
<p>En primer lugar, te recomendamos que determines el estado de carga actual. {@link android.os.BatteryManager} envía los detalles de carga y de la batería en un {@link android.content.Intent} persistente que incluye el estado de carga.</p>
<p>Se trata de un intento persistente, por lo que no es necesario registrar un {@link android.content.BroadcastReceiver}. Para ello, solo tienes que ejecutar {@code registerReceiver} transmitiendo {@code null} como el receptor (como se muestra en el siguiente fragmento). A continuación, se devuelve el intento de estado actual de la batería. Puedes transmitir un objeto {@link android.content.BroadcastReceiver} real, pero hablaremos sobre las actualizaciones en otra sección, por lo que no es necesario ahora.</p>
@@ -58,7 +58,7 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
<p>Normalmente, debes maximizar la frecuencia de las actualizaciones en segundo plano si el dispositivo está conectado a un cargador de corriente alterna, disminuir esa frecuencia si se utiliza un cargador USB y reducirla aún más si la batería se está descargando.</p>
-<h2 id="MonitorChargeState">Cómo supervisar los cambios en el estado de carga</h2>
+<h2 id="MonitorChargeState">Cómo supervisar los cambios en el estado de carga</h2>
<p>Modificar el estado de carga es tan fácil como conectar el dispositivo a un enchufe o USB. Por ello, es importante que supervises el estado de carga por si se producen cambios y modifiques la frecuencia de actualización según corresponda.</p>
@@ -75,11 +75,11 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
<pre>public class PowerConnectionReceiver extends BroadcastReceiver {
&#64;Override
- public void onReceive(Context context, Intent intent) {
+ public void onReceive(Context context, Intent intent) {
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
-
+
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
@@ -87,7 +87,7 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
}</pre>
-<h2 id="CurrentLevel">Cómo determinar el nivel de batería actual</h2>
+<h2 id="CurrentLevel">Cómo determinar el nivel de batería actual</h2>
<p>En algunos casos, también es útil determinar el nivel de batería actual. Puedes disminuir la frecuencia de las actualizaciones en segundo plano si el nivel de carga de la batería es inferior a un valor determinado.</p>
@@ -99,7 +99,7 @@ int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale;</pre>
-<h2 id="MonitorLevel">Cómo supervisar cambios importantes en el nivel de batería</h2>
+<h2 id="MonitorLevel">Cómo supervisar cambios importantes en el nivel de batería</h2>
<p>No puedes controlar el estado de la batería de forma continua fácilmente, pero tampoco es necesario.</p>
diff --git a/docs/html-intl/intl/es/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/intl/es/training/monitoring-device-state/connectivity-monitoring.jd
index 2a5ff120e23d..b76b812340a7 100644
--- a/docs/html-intl/intl/es/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html-intl/intl/es/training/monitoring-device-state/connectivity-monitoring.jd
@@ -11,7 +11,7 @@ next.link=manifest-receivers.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>En esta sección puedes aprender:</h2>
@@ -27,7 +27,7 @@ next.link=manifest-receivers.html
<li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a>
</ul>
-</div>
+</div>
</div>
<p>Algunos de los usos más comunes para las alarmas con repetición y los servicios en segundo plano es programar actualizaciones regulares de los datos de aplicaciones a partir de recursos de Internet, almacenar datos en la memoria caché o ejecutar descargas a largo plazo. Sin embargo, si no estás conectado a Internet o la conexión es demasiado débil para completar la descarga, ¿para qué activar el dispositivo y programar la actualización?</p>
@@ -35,18 +35,18 @@ next.link=manifest-receivers.html
<p>Puedes utilizar {@link android.net.ConnectivityManager} para comprobar si estás conectado a Internet y, en ese caso, el tipo de conexión que estás utilizando.</p>
-<h2 id="DetermineConnection">Cómo determinar si tienes conexión a Internet</h2>
-
+<h2 id="DetermineConnection">Cómo determinar si tienes conexión a Internet</h2>
+
<p>No es necesario programar una actualización basada en un recurso de Internet si no estás conectado. En el fragmento que aparece a continuación, se muestra cómo utilizar {@link android.net.ConnectivityManager} para consultar la red activa y determinar si hay conexión a Internet.</p>
<pre>ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
-
+
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
-<h2 id="DetermineType">Cómo determinar el tipo de conexión a Internet</h2>
+<h2 id="DetermineType">Cómo determinar el tipo de conexión a Internet</h2>
<p>También puedes determinar el tipo de conexión a Internet que hay disponible.</p>
@@ -59,7 +59,7 @@ boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
<p>Cuando hayas inhabilitado las actualizaciones, es importante que detectes si se hay cambios en la conectividad para poder reanudarlas cuando se haya establecido una conexión a Internet.</p>
-<h2 id="MonitorChanges">Cómo supervisar los cambios en la conectividad</h2>
+<h2 id="MonitorChanges">Cómo supervisar los cambios en la conectividad</h2>
<p>{@link android.net.ConnectivityManager} emite la acción {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION} ({@code "android.net.conn.CONNECTIVITY_CHANGE"}) cuando se han modificado los detalles de la conectividad. Puedes registrar un receptor de emisión en el archivo de manifiesto para detectar estos cambios y reanudar (o cancelar) las actualizaciones en segundo plano según corresponda.</p>
diff --git a/docs/html-intl/intl/es/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/intl/es/training/monitoring-device-state/docking-monitoring.jd
index d6122811e422..bede4e2ba31f 100644
--- a/docs/html-intl/intl/es/training/monitoring-device-state/docking-monitoring.jd
+++ b/docs/html-intl/intl/es/training/monitoring-device-state/docking-monitoring.jd
@@ -10,7 +10,7 @@ next.link=connectivity-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>En esta sección puedes aprender:</h2>
@@ -26,7 +26,7 @@ next.link=connectivity-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a>
</ul>
-</div>
+</div>
</div>
<p>Los dispositivos Android se pueden conectar a distintos tipos de conectores. Por ejemplo, se puede utilizar conectores para coche o domésticos y tanto digitales como analógicos. Normalmente, el estado del conector está vinculado al estado de carga, ya que muchos conectores cargan el dispositivo mientras está conectado.</p>
@@ -36,8 +36,8 @@ next.link=connectivity-monitoring.html
<p>El estado del conector se emite también como un {@link android.content.Intent} persistente, lo que te permite consultar si el dispositivo está conectado o no y, si lo está, determinar el tipo de conector.</p>
-<h2 id="CurrentDockState">Cómo determinar el estado de conexión actual</h2>
-
+<h2 id="CurrentDockState">Cómo determinar el estado de conexión actual</h2>
+
<p>La información sobre el estado del conector se incluye como información adicional en una emisión persistente de la acción {@link android.content.Intent#ACTION_DOCK_EVENT}. Por ello, no es necesario registrar un {@link android.content.BroadcastReceiver}. Solo tienes que ejecutar {@link android.content.Context#registerReceiver registerReceiver()} transmitiendo {@code null} como el receptor de emisión, como se muestra en el fragmento de código que aparece a continuación.</p>
<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
@@ -49,9 +49,9 @@ Intent dockStatus = context.registerReceiver(null, ifilter);</pre>
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
-<h2 id="DockType">Cómo determinar el tipo de conector actual</h2>
+<h2 id="DockType">Cómo determinar el tipo de conector actual</h2>
-<p>Si un dispositivo está insertado en un conector, se puede conectar a cualquiera de estos cuatro tipos de conectores:
+<p>Si un dispositivo está insertado en un conector, se puede conectar a cualquiera de estos cuatro tipos de conectores:
<ul><li>coche,</li>
<li>escritorio,</li>
<li>escritorio de gama baja (analógico),</li>
@@ -60,12 +60,12 @@ boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
<p>Ten en cuenta que las últimas dos opciones se introdujeron en Android únicamente en el nivel 11 del API. Por ello, te recomendamos que compruebes las tres opciones solo cuando te interese más el tipo de conector que si se trata de un conector digital o analógico:</p>
<pre>boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
-boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
+boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
dockState == EXTRA_DOCK_STATE_LE_DESK ||
dockState == EXTRA_DOCK_STATE_HE_DESK;</pre>
-<h2 id="MonitorDockState">Cómo supervisar los cambios en el tipo de conector o en el estado del mismo</h2>
+<h2 id="MonitorDockState">Cómo supervisar los cambios en el tipo de conector o en el estado del mismo</h2>
<p>Cuando el dispositivo está conectado a un conector o desconectado del mismo, se emite la acción {@link android.content.Intent#ACTION_DOCK_EVENT}. Para controlar los cambios que se produzcan en el estado del conector del dispositivo, solo tienes que registrar un receptor de emisión en el archivo de manifiesto de la aplicación, como se muestra en el fragmento que aparece a continuación:</p>
diff --git a/docs/html-intl/intl/es/training/monitoring-device-state/index.jd b/docs/html-intl/intl/es/training/monitoring-device-state/index.jd
index bf6b1c1e7091..12fcae7a6a2b 100644
--- a/docs/html-intl/intl/es/training/monitoring-device-state/index.jd
+++ b/docs/html-intl/intl/es/training/monitoring-device-state/index.jd
@@ -7,10 +7,10 @@ next.link=battery-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
-<h2>Dependencias y requisitos previos</h2>
+<h2>Dependencias y requisitos previos</h2>
<ul>
<li>Android 2.0 (nivel 5 del API) o superior</li>
<li>Experiencia con <a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a></li>
@@ -21,19 +21,19 @@ next.link=battery-monitoring.html
<li><a href="{@docRoot}guide/components/services.html">Servicios</a>
</ul>
-</div>
+</div>
</div>
<p>Uno de los objetivos de tu aplicación debe ser limitar su impacto en la duración de la batería del dispositivo en el que esté instalada. Después de leer estas secciones, podrás desarrollar aplicaciones que optimizarán el uso de la batería en función del estado del dispositivo en el que estén instaladas.</p>
<p>Al tomar medidas como inhabilitar las actualizaciones de servicios en segundo plano o disminuir la frecuencia de dichas actualizaciones cuando el nivel de batería sea bajo, puedes garantizar que se minimice el impacto de tu aplicación en la duración de la batería sin afectar a la experiencia del usuario.</p>
-<h2>Secciones</h2>
-
+<h2>Secciones</h2>
+
<!-- Create a list of the lessons in this class along with a short description of each lesson.
These should be short and to the point. It should be clear from reading the summary whether someone
-will want to jump to a lesson or not.-->
-
+will want to jump to a lesson or not.-->
+
<dl>
<dt><b><a href="battery-monitoring.html">Cómo controlar el nivel de batería y el estado de carga</a></b></dt>
<dd>Obtén más información sobre cómo determinar y controlar el nivel de batería actual y los cambios en el estado de carga para modificar la frecuencia de actualizaciones en segundo plano de tu aplicación.</dd>
@@ -46,4 +46,4 @@ will want to jump to a lesson or not.-->
<dt><b><a href="manifest-receivers.html">Cómo manipular los receptores de emisión bajo demanda</a></b></dt>
<dd>Los receptores de emisión que declaras en el archivo de manifiesto se pueden alternar durante la ejecución para inhabilitar los que no son necesarios debido al estado actual del dispositivo. Obtén más información sobre cómo alternar y superponer receptores de cambio de estado para mejorar el rendimiento y cómo posponer acciones hasta que el dispositivo se encuentre en un estado concreto.</dd>
-</dl> \ No newline at end of file
+</dl> \ No newline at end of file
diff --git a/docs/html-intl/intl/es/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/intl/es/training/monitoring-device-state/manifest-receivers.jd
index a90468e37336..0be198cb48d7 100644
--- a/docs/html-intl/intl/es/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html-intl/intl/es/training/monitoring-device-state/manifest-receivers.jd
@@ -9,7 +9,7 @@ previous.link=connectivity-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>En esta sección puedes aprender:</h2>
@@ -23,7 +23,7 @@ previous.link=connectivity-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a>
</ul>
-</div>
+</div>
</div>
<p>La forma más sencilla de controlar los cambios en el estado del dispositivo es crear un {@link android.content.BroadcastReceiver} para cada estado que vayas a controlar y registrar cada uno de ellos en el archivo de manifiesto de tu aplicación. A continuación, en cada uno de esos receptores solo tienes que volver a programar las alarmas recurrentes en función del estado actual del dispositivo.</p>
@@ -31,10 +31,10 @@ previous.link=connectivity-monitoring.html
<p>Un efecto secundario de este método es que tu aplicación activará el dispositivo siempre que uno de los receptores se active (probablemente, con más frecuencia de la necesaria).</p>
<p>Te recomendamos que inhabilites o habilites los receptores de emisión en el momento de la ejecución. De este modo, puedes utilizar los receptores que hayas declarado en el archivo de manifiesto como alarmas pasivas que se activan mediante los eventos del sistema solo cuando es necesario.</p>
-
-<h2 id="ToggleReceivers">Cómo alternar y superponer receptores de cambio de estado para mejorar el rendimiento </h2>
-
+
+<h2 id="ToggleReceivers">Cómo alternar y superponer receptores de cambio de estado para mejorar el rendimiento </h2>
+
<p>Se puede utilizar el {@link android.content.pm.PackageManager} para alternar el estado habilitado en cualquier componente definido en el archivo de manifiesto, incluidos los receptores de emisión que quieras habilitar o inhabilitar, como se muestra en el fragmento que aparece a continuación:</p>
<pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
diff --git a/docs/html-intl/intl/es/training/multiscreen/adaptui.jd b/docs/html-intl/intl/es/training/multiscreen/adaptui.jd
index 61f0735bc409..7982ce16dac7 100644
--- a/docs/html-intl/intl/es/training/multiscreen/adaptui.jd
+++ b/docs/html-intl/intl/es/training/multiscreen/adaptui.jd
@@ -10,9 +10,9 @@ previous.link=screendensities.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
-
+<div id="tb-wrapper">
+<div id="tb">
+
<h2>En esta sección puedes aprender:</h2>
<ol>
@@ -27,17 +27,17 @@ previous.link=screendensities.html
<ul>
<li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Cómo admitir tablets y dispositivos móviles</a></li>
</ul>
-
+
<h2>¡Pruébalo!</h2>
-
+
<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Descargar la aplicación de ejemplo</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
<p>En función del diseño actual de tu aplicación, la interfaz puede variar. Por ejemplo, si tu aplicación está en modo de panel dual, haz clic en un elemento del panel izquierdo para que aparezca en el panel de la derecha. Asimismo, si está en modo de panel único, el contenido debería aparecer por sí mismo (en otra actividad).</p>
@@ -56,7 +56,7 @@ public class NewsReaderActivity extends FragmentActivity {
setContentView(R.layout.main_layout);
View articleView = findViewById(R.id.article);
- mIsDualPane = articleView != null &amp;&amp;
+ mIsDualPane = articleView != null &amp;&amp;
articleView.getVisibility() == View.VISIBLE;
}
}
@@ -116,7 +116,7 @@ public void onCreate(Bundle savedInstanceState) {
else {
/* use list navigation (spinner) */
actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
- SpinnerAdapter adap = new ArrayAdapter<String>(this,
+ SpinnerAdapter adap = new ArrayAdapter<String>(this,
R.layout.headline_item, CATEGORIES);
actionBar.setListNavigationCallbacks(adap, handler);
}
@@ -168,7 +168,7 @@ public class HeadlinesFragment extends ListFragment {
public class HeadlinesFragment extends ListFragment {
...
&#64;Override
- public void onItemClick(AdapterView&lt;?&gt; parent,
+ public void onItemClick(AdapterView&lt;?&gt; parent,
View view, int position, long id) {
if (null != mHeadlineSelectedListener) {
mHeadlineSelectedListener.onHeadlineSelected(position);
diff --git a/docs/html-intl/intl/es/training/multiscreen/index.jd b/docs/html-intl/intl/es/training/multiscreen/index.jd
index d836f962cc70..b9b591631bec 100644
--- a/docs/html-intl/intl/es/training/multiscreen/index.jd
+++ b/docs/html-intl/intl/es/training/multiscreen/index.jd
@@ -6,10 +6,10 @@ next.link=screensizes.html
@jd:body
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>Dependencias y requisitos previos</h2>
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>Dependencias y requisitos previos</h2>
<ul>
<li>Android 1.6 o superior (Android 2.1 o superior para la aplicación de ejemplo)</li>
@@ -26,17 +26,17 @@ href="{@docRoot}tools/support-library/index.html">biblioteca de compatibilidad</
<ul>
<li><a href="{@docRoot}guide/practices/screens_support.html">Cómo admitir varias pantallas</a></li>
</ul>
-
-<h2>¡Pruébalo!</h2>
-
-<div class="download-box">
+
+<h2>¡Pruébalo!</h2>
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Descargar la aplicación de ejemplo</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-</div>
-</div>
-
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
+
<p>Android se utiliza en cientos de dispositivos con diferentes tamaños de pantalla, desde pequeños teléfonos hasta enormes televisores. Por ello, es importante que diseñes tu aplicación para que sea compatible con todos los tamaños de pantalla y esté disponible para el mayor número de usuarios posible.</p>
<p>Sin embargo, no es suficiente con que tu aplicación sea compatible con diferentes dispositivos. Cada tamaño de pantalla ofrece diferentes posibilidades y retos para la interacción del usuario. Por ello, para satisfacer completamente a tus usuarios e impresionarlos, tu aplicación debe ir más allá de simplemente <em>admitir</em> varias pantallas: debe <em>optimizar</em> la experiencia de usuario para cada configuración de pantalla.</p>
@@ -47,17 +47,17 @@ href="{@docRoot}tools/support-library/index.html">biblioteca de compatibilidad</
<p class="note"><strong>Nota:</strong> en esta sección y en el ejemplo correspondiente, se utiliza la <a
href="{@docRoot}tools/support-library/index.html">biblioteca de compatibilidad</a> para poder usar las API de <PH>{@link android.app.Fragment}</PH> en versiones anteriores a Android 3.0. Debes descargar y la biblioteca y añadirla a tu aplicación para poder utilizar todas las API que se indican en esta sección.</p>
-
-
-<h2>Secciones</h2>
-
-<dl>
- <dt><b><a href="screensizes.html">Cómo admitir varios tamaños de pantalla</a></b></dt>
- <dd>En esta sección se explica cómo crear diseños que se adapten a diferentes tamaños de pantalla (mediante dimensiones flexibles para vistas, <PH>{@link android.widget.RelativeLayout}</PH>, calificadores de orientación y tamaño de pantalla, filtros de alias y mapas de bits de la clase NinePatch).</dd>
-
- <dt><b><a href="screendensities.html">Cómo admitir varias densidades de pantalla</a></b></dt>
- <dd>En esta sección se explica cómo admitir pantallas con diferentes densidades de píxeles (mediante píxeles independientes de la densidad y mapas de bits adecuados a cada densidad).</dd>
-
- <dt><b><a href="adaptui.html">Cómo implementar interfaces de usuario adaptables</a></b></dt>
- <dd>En esta sección se explica cómo implementar tu interfaz de usuario para que se adapte a varias combinaciones de densidad o de tamaño de pantalla (detección de tiempo de ejecución del diseño activo, cómo reaccionar en función del diseño actual y cómo administrar los cambios en la configuración de la pantalla).</dd>
-</dl>
+
+
+<h2>Secciones</h2>
+
+<dl>
+ <dt><b><a href="screensizes.html">Cómo admitir varios tamaños de pantalla</a></b></dt>
+ <dd>En esta sección se explica cómo crear diseños que se adapten a diferentes tamaños de pantalla (mediante dimensiones flexibles para vistas, <PH>{@link android.widget.RelativeLayout}</PH>, calificadores de orientación y tamaño de pantalla, filtros de alias y mapas de bits de la clase NinePatch).</dd>
+
+ <dt><b><a href="screendensities.html">Cómo admitir varias densidades de pantalla</a></b></dt>
+ <dd>En esta sección se explica cómo admitir pantallas con diferentes densidades de píxeles (mediante píxeles independientes de la densidad y mapas de bits adecuados a cada densidad).</dd>
+
+ <dt><b><a href="adaptui.html">Cómo implementar interfaces de usuario adaptables</a></b></dt>
+ <dd>En esta sección se explica cómo implementar tu interfaz de usuario para que se adapte a varias combinaciones de densidad o de tamaño de pantalla (detección de tiempo de ejecución del diseño activo, cómo reaccionar en función del diseño actual y cómo administrar los cambios en la configuración de la pantalla).</dd>
+</dl>
diff --git a/docs/html-intl/intl/es/training/multiscreen/screendensities.jd b/docs/html-intl/intl/es/training/multiscreen/screendensities.jd
index 0edb89fd4707..a91f5a045041 100644
--- a/docs/html-intl/intl/es/training/multiscreen/screendensities.jd
+++ b/docs/html-intl/intl/es/training/multiscreen/screendensities.jd
@@ -12,8 +12,8 @@ next.link=adaptui.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
+<div id="tb-wrapper">
+<div id="tb">
<h2>En esta sección puedes aprender:</h2>
<ol>
@@ -29,15 +29,15 @@ next.link=adaptui.html
</ul>
<h2>¡Pruébalo!</h2>
-
-<div class="download-box">
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Descargar la aplicación de ejemplo</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
<p>En esta sección se explica cómo proporcionar diferentes recursos y utilizar unidades de medida de resolución independiente para admitir diferentes densidades de pantalla.</p>
@@ -48,8 +48,8 @@ next.link=adaptui.html
<p>Por ejemplo, al especificar un espacio entre dos vistas, debes utilizar <code>dp</code> en lugar de <code>px</code>:</p>
<pre>
-&lt;Button android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+&lt;Button android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:text="&#64;string/clickme"
android:layout_marginTop="20dp" /&gt;
</pre>
@@ -57,8 +57,8 @@ next.link=adaptui.html
<p>Al especificar el tamaño de letra, debes usar siempre <code>sp</code>:</p>
<pre>
-&lt;TextView android:layout_width="match_parent"
- android:layout_height="wrap_content"
+&lt;TextView android:layout_width="match_parent"
+ android:layout_height="wrap_content"
android:textSize="20sp" /&gt;
</pre>
diff --git a/docs/html-intl/intl/es/training/multiscreen/screensizes.jd b/docs/html-intl/intl/es/training/multiscreen/screensizes.jd
index 9a971d1c000c..9af109c62ad3 100644
--- a/docs/html-intl/intl/es/training/multiscreen/screensizes.jd
+++ b/docs/html-intl/intl/es/training/multiscreen/screensizes.jd
@@ -10,8 +10,8 @@ next.link=screendensities.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
+<div id="tb-wrapper">
+<div id="tb">
<h2>En esta sección puedes aprender:</h2>
<ol>
@@ -30,26 +30,26 @@ next.link=screendensities.html
<li><a href="{@docRoot}guide/practices/screens_support.html">Cómo admitir varias pantallas</a></li>
</ul>
-<h2>¡Pruébalo!</h2>
-
-<div class="download-box">
+<h2>¡Pruébalo!</h2>
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Descargar la aplicación de ejemplo</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
<p>En esta sección se explica cómo admitir varios tamaños de pantalla. Para ello, sigue estos pasos:</p>
-<ul>
- <li>Asegúrate de que el diseño se haya ajustado correctamente al tamaño de la pantalla.</li>
- <li>Configura la pantalla con el diseño de interfaz adecuado.</li>
+<ul>
+ <li>Asegúrate de que el diseño se haya ajustado correctamente al tamaño de la pantalla.</li>
+ <li>Configura la pantalla con el diseño de interfaz adecuado.</li>
<li>Asegúrate de aplicar el diseño adecuado a la pantalla correspondiente.</li>
- <li>Utiliza el mapa de bits con la escala adecuada.</li>
-</ul>
+ <li>Utiliza el mapa de bits con la escala adecuada.</li>
+</ul>
-<h2 id="TaskUseWrapMatchPar">Cómo utilizar los valores "wrap_content" y "match_parent"</h2>
+<h2 id="TaskUseWrapMatchPar">Cómo utilizar los valores "wrap_content" y "match_parent"</h2>
<p>Para garantizar que el diseño es flexible y que se adapta a varios tamaños de pantalla, debes utilizar los valores <code>"wrap_content"</code> y <code>"match_parent"</code> para la altura y el ancho de algunos componentes de la vista. Si utilizas <code>"wrap_content"</code>, el ancho o la altura de la vista se establece en el tamaño mínimo necesario para adaptar el contenido a esta vista, mientras que <code>"match_parent"</code> (también conocido como <code>"fill_parent"</code> antes del nivel 8 del API) provoca que el componente se amplíe hasta coincidir con el tamaño de la vista principal.</p>
@@ -65,7 +65,7 @@ next.link=screendensities.html
<p class="img-caption"><strong>Figura 1.</strong> La aplicación de ejemplo News Reader en modo vertical (izquierda) y horizontal (derecha)</p>
-<h2 id="TaskUseRelativeLayout">Cómo utilizar RelativeLayout</h2>
+<h2 id="TaskUseRelativeLayout">Cómo utilizar RelativeLayout</h2>
<p>Puedes crear diseños de un cierto nivel de complejidad con instancias anidadas de <PH>{@link android.widget.LinearLayout}</PH> y combinaciones de los valores de tamaño <code>"wrap_content"</code> y <code>"match_parent"</code>. Sin embargo, <PH>{@link android.widget.LinearLayout}</PH> no te permite controlar con precisión las relaciones espaciales de las vistas secundarias; las vistas de <PH>{@link android.widget.LinearLayout}</PH> simplemente se alinean en paralelo. Si quieres orientar las vistas secundarias de una forma que no sea una línea recta, a menudo la mejor solución es utilizar <PH>{@link android.widget.RelativeLayout}</PH>que te permite especificar el diseño según las relaciones espaciales entre los componentes. Por ejemplo, puedes alinear una vista secundaria en el lateral izquierdo y otra vista en el lateral derecho de la pantalla.</p>
@@ -115,8 +115,8 @@ next.link=screendensities.html
<p>Ten en cuenta que aunque el tamaño de los componentes es diferente, las relaciones espaciales se mantienen según se ha especificado con <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH>.</p>
-
-<h2 id="TaskUseSizeQuali">Cómo utilizar calificadores de tamaño</h2>
+
+<h2 id="TaskUseSizeQuali">Cómo utilizar calificadores de tamaño</h2>
<p>Hay mucha diferencia entre un diseño flexible y un diseño relativo como el que se ha utilizado en las secciones anteriores. Aunque ambos diseños se adaptan a diferentes pantalla estirando el espacio dentro de los componentes y alrededor de los mismos, puede que no ofrezcan la mejor experiencia de usuario para cada tamaño de pantalla. Por tanto, tu aplicación no solo debe implementar los diseños flexibles, sino que también debe ofrecer varios diseños alternativos para diferentes configuraciones de pantalla. Para ello, se utilizan <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">calificadores de configuración</a>, que permiten que el tiempo de ejecución seleccione el recurso adecuado en función de la configuración actual del dispositivo (por ejemplo, un diseño diferente para diferentes tamaños de pantalla).</p>
@@ -158,7 +158,7 @@ next.link=screendensities.html
<p>No obstante, esto no funcionará en los dispositivos anteriores a Android 3.2 porque no reconocen <code>sw600dp</code> como calificador de tamaño, por lo que también tendrás que seguir utilizando el calificador <code>large</code>. Por tanto, debes tener un archivo con el nombre <code>res/layout-large/main.xml</code> idéntico a <code>res/layout-sw600dp/main.xml</code>. En la siguiente sección, obtendrás información sobre una técnica que te permite evitar que se dupliquen los archivos de diseños.</p>
-<h2 id="TaskUseAliasFilters">Cómo utilizar alias de diseño</h2>
+<h2 id="TaskUseAliasFilters">Cómo utilizar alias de diseño</h2>
<p>El calificador de ancho mínimo solo está disponible en Android 3.2 o superior. Por tanto, tendrás que seguir utilizando los contenedores de tamaño abstractos (pequeño, normal, grande y extragrande) para que sean compatibles con versiones anteriores. Por ejemplo, si quieres que tu interfaz de usuario sea de panel único en teléfonos pero multipanel en tablets de 7", televisiones y otros dispositivos grandes, tendrás que utilizar los siguientes archivos:</p>
@@ -202,7 +202,7 @@ next.link=screendensities.html
<PH>{@code large}</PH>y las televisiones y los tablets posteriores a la versión 3.2 utilizarán <code>sw600dp</code>).</p>
-<h2 id="TaskUseOriQuali">Cómo utilizar calificadores de orientación</h2>
+<h2 id="TaskUseOriQuali">Cómo utilizar calificadores de orientación</h2>
<p>Aunque algunos diseños se pueden utilizar tanto en modo horizontal como vertical, la mayoría de ellos pueden beneficiarse de los ajustes. A continuación, se indica cómo se comporta el diseño según cada tamaño y orientación de la pantalla en la aplicación de ejemplo News Reader:</p>
diff --git a/docs/html-intl/intl/in/design/get-started/principles.jd b/docs/html-intl/intl/in/design/get-started/principles.jd
index 9aed08e289d6..2a1d194b0616 100644
--- a/docs/html-intl/intl/in/design/get-started/principles.jd
+++ b/docs/html-intl/intl/in/design/get-started/principles.jd
@@ -277,7 +277,7 @@ meskipun hanya sesuatu yang sederhana.</p>
<div class="col-7">
<h4 id="do-heavy-lifting-for-me">Lakukan pekerjaan yang sulit untuk saya</h4>
-<p>Buatlah pemula merasa seperti ahli dengan memungkinkan mereka untuk melakukan hal-hal yang mereka pikir tidak akan bisa.
+<p>Buatlah pemula merasa seperti ahli dengan memungkinkan mereka untuk melakukan hal-hal yang mereka pikir tidak akan bisa.
Misalnya, pintasan yang menggabungkan beberapa efek foto dapat membuat foto amatir terlihat mengagumkan hanya
dalam beberapa langkah.</p>
diff --git a/docs/html-intl/intl/in/design/patterns/navigation.jd b/docs/html-intl/intl/in/design/patterns/navigation.jd
index a8afaaa794e0..491570030b53 100644
--- a/docs/html-intl/intl/in/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/in/design/patterns/navigation.jd
@@ -121,7 +121,7 @@ pemberitahuan tunggal yang mengarahkan pengguna ke layar antara. Layar ini meran
kejadian tersebut, dan menyediakan path bagi pengguna untuk menjelajah ke dalam aplikasi. Pemberitahuan dengan gaya seperti ini
disebut <em>pemberitahuan tidak langsung</em>.</p>
-<p>Berbeda dengan pemberitahuan standar (langsung), menekan tombol Back dari
+<p>Berbeda dengan pemberitahuan standar (langsung), menekan tombol Back dari
layar antara pada pemberitahuan tidak langsung akan mengembalikan pengguna ke titik pemicu pemberitahuan tersebut&mdash;tidak ada
layar tambahan yang disisipkan ke dalam back-stack. Setelah pengguna melanjutkan ke dalam aplikasi dari
layar antara, tombol Up dan Back akan berperilaku seperti pada pemberitahuan standar, sebagaimana dijelaskan di atas:
@@ -168,7 +168,7 @@ yang akan dibahas di bawah ini.</p>
informasi dan semua tindakan terkait yang dapat dilakukan pengguna. Aplikasi Anda adalah kumpulan
aktivitas, yang terdiri dari aktivitas yang Anda buat dan aktivitas yang Anda gunakan ulang dari aplikasi lain.</p>
-<p><strong>Tugas</strong> adalah urutan aktivitas yang diikuti pengguna untuk mencapai tujuan.
+<p><strong>Tugas</strong> adalah urutan aktivitas yang diikuti pengguna untuk mencapai tujuan.
Tugas tunggal dapat memanfaatkan aktivitas dari satu aplikasi saja, atau dapat memanfaatkan aktivitas dari sejumlah
aplikasi berbeda.</p>
diff --git a/docs/html-intl/intl/in/guide/components/activities.jd b/docs/html-intl/intl/in/guide/components/activities.jd
index 6cac69638f49..bbc061cdc8cb 100644
--- a/docs/html-intl/intl/in/guide/components/activities.jd
+++ b/docs/html-intl/intl/in/guide/components/activities.jd
@@ -53,7 +53,7 @@ jendela lain.</p>
<p> Sebuah aplikasi biasanya terdiri atas beberapa aktivitas yang terikat secara longgar
satu sama lain. Biasanya, satu aktivitas dalam aplikasi ditetapkan sebagai aktivitas "utama", yang
ditampilkan kepada pengguna saat membuka aplikasi untuk pertama kali. Tiap
-aktivitas kemudian bisa memulai aktivitas lain untuk melakukan berbagai tindakan. Tiap kali
+aktivitas kemudian bisa memulai aktivitas lain untuk melakukan berbagai tindakan. Tiap kali
aktivitas baru dimulai, aktivitas sebelumnya akan dihentikan, namun sistem mempertahankan aktivitas
dalam sebuah tumpukan ("back-stack"). Bila sebuah aktivitas baru dimulai, aktivitas itu akan didorong ke atas back-stack dan
mengambil fokus pengguna. Back-stack mematuhi mekanisme dasar tumpukan "masuk terakhir, keluar pertama",
@@ -67,7 +67,7 @@ melalui metode callback daur hidupnya.
Ada beberapa metode callback yang mungkin diterima aktivitas, karena sebuah perubahan dalam
statusnya&mdash;apakah sistem sedang membuatnya, menghentikannya, melanjutkannya, atau menghapuskannya&mdash;dan
masing-masing callback memberi Anda kesempatan melakukan pekerjaan tertentu yang
-sesuai untuk perubahan status itu. Misalnya, bila dihentikan, aktivitas Anda harus melepas
+sesuai untuk perubahan status itu. Misalnya, bila dihentikan, aktivitas Anda harus melepas
objek besar, seperti koneksi jaringan atau database. Bila aktivitas dilanjutkan, Anda bisa
memperoleh kembali sumber daya yang diperlukan dan melanjutkan tindakan yang terputus. Transisi status ini
semuanya bagian dari daur hidup aktivitas.</p>
@@ -89,7 +89,7 @@ terpenting adalah:</p>
<dl>
<dt>{@link android.app.Activity#onCreate onCreate()}</dt>
<dd>Anda harus mengimplementasikan metode ini. Sistem memanggilnya saat membuat
- aktivitas Anda. Dalam implementasi, Anda harus menginisialisasi komponen-komponen esensial
+ aktivitas Anda. Dalam implementasi, Anda harus menginisialisasi komponen-komponen esensial
aktivitas.
Yang terpenting, inilah tempat Anda harus memanggil {@link android.app.Activity#setContentView
setContentView()} untuk mendefinisikan layout untuk antarmuka pengguna aktivitas.</dd>
@@ -115,7 +115,7 @@ dalam jendela aktivitas dan bisa merespons interaksi pengguna. Misalnya, sebuah
tombol yang mengawali suatu tindakan bila pengguna menyentuhnya.</p>
<p>Android menyediakan sejumlah tampilan siap-dibuat yang bisa Anda gunakan untuk mendesain dan mengatur
-layout. "Widget" adalah tampilan yang menyediakan elemen-elemen visual (dan interaktif) untuk layar,
+layout. "Widget" adalah tampilan yang menyediakan elemen-elemen visual (dan interaktif) untuk layar,
misalnya tombol, bidang teks, kotak cek, atau sekadar sebuah gambar. "Layout" adalah tampilan yang diturunkan dari {@link
android.view.ViewGroup} yang memberikan sebuah model layout unik untuk tampilan anaknya, misalnya
layout linier, layout grid, atau layout relatif. Anda juga bisa mensubkelaskan kelas-kelas {@link android.view.View} dan
@@ -124,7 +124,7 @@ layout Anda sendiri dan menerapkannya ke layout aktivitas Anda.</p>
<p>Cara paling umum untuk mendefinisikan layout dengan menggunakan tampilan adalah dengan file layout XML yang disimpan dalam
sumber daya aplikasi Anda. Dengan cara ini, Anda bisa memelihara desain antarmuka pengguna Anda secara terpisah dari
-kode yang mendefinisikan perilaku aktivitas. Anda bisa mengatur layout sebagai UI
+kode yang mendefinisikan perilaku aktivitas. Anda bisa mengatur layout sebagai UI
aktivitas Anda dengan {@link android.app.Activity#setContentView(int) setContentView()}, dengan meneruskan
ID sumber daya untuk layout itu. Akan tetapi, Anda juga bisa membuat {@link android.view.View} baru dalam
kode aktivitas dan membuat hierarki tampilan dengan menyisipkan {@link
@@ -169,7 +169,7 @@ untuk informasi selengkapnya tentang cara mendeklarasikan aktivitas Anda dalam m
<p>Elemen <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
&lt;activity&gt;}</a> juga bisa menetapkan berbagai filter intent&mdash;dengan menggunakan elemen <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
-&lt;intent-filter&gt;}</a> &mdash;untuk mendeklarasikan cara komponen aplikasi lain
+&lt;intent-filter&gt;}</a> &mdash;untuk mendeklarasikan cara komponen aplikasi lain
mengaktifkannya.</p>
<p>Bila Anda membuat aplikasi baru dengan Android SDK Tools, aktivitas stub
@@ -251,7 +251,7 @@ startActivity(intent);
<p>Ekstra {@link android.content.Intent#EXTRA_EMAIL} yang ditambahkan ke intent adalah sebuah larik string
alamat email yang menjadi tujuan pengiriman email. Bila aplikasi email merespons intent ini,
- aplikasi itu akan membaca larik string yang disediakan dalam ekstra dan meletakkannya dalam bidang "to"
+ aplikasi itu akan membaca larik string yang disediakan dalam ekstra dan meletakkannya dalam bidang "to"
pada formulir penulisan email. Dalam situasi ini, aktivitas aplikasi email dimulai dan bila
pengguna selesai, aktivitas Anda akan dilanjutkan.</p>
@@ -297,7 +297,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
</pre>
<p>Contoh ini menunjukkan logika dasar yang harus Anda gunakan dalam metode {@link
-android.app.Activity#onActivityResult onActivityResult()} Anda untuk menangani
+android.app.Activity#onActivityResult onActivityResult()} Anda untuk menangani
hasil aktivitas. Syarat pertama memeriksa apakah permintaan berhasil&mdash;jika ya, maka
{@code resultCode} akan berupa {@link android.app.Activity#RESULT_OK}&mdash;dan apakah permintaan
yang direspons hasil ini dikenal&mdash;dalam hal ini, {@code requestCode} cocok dengan
@@ -602,19 +602,19 @@ tidak berubah. Sebagai gantinya, sistem harus membuat ulang objek {@link android
menyusuri kembali ke aktivitas tersebut. Namun, pengguna tidak menyadari
bahwa sistem memusnahkan aktivitas dan membuatnya kembali dan, karena itu, mungkin
mengharapkan aktivitas untuk sama persis dengan sebelumnya. Dalam situasi ini, Anda bisa memastikan bahwa
-informasi penting tentang status aktivitas tetap terjaga dengan mengimplementasikan
+informasi penting tentang status aktivitas tetap terjaga dengan mengimplementasikan
metode callback tambahan yang memungkinkan Anda menyimpan informasi tentang status aktivitas: {@link
android.app.Activity#onSaveInstanceState onSaveInstanceState()}.</p>
<p>Sistem memanggil {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
sebelum membuat aktivitas rawan terhadap pemusnahan. Sistem meneruskan ke metode ini
-sebuah {@link android.os.Bundle} tempat Anda bisa menyimpan
+sebuah {@link android.os.Bundle} tempat Anda bisa menyimpan
informasi status tentang aktivitas sebagai pasangan nama-nilai, dengan menggunakan metode-metode misalnya {@link
android.os.Bundle#putString putString()} dan {@link
android.os.Bundle#putInt putInt()}. Kemudian, jika sistem mematikan proses aplikasi Anda
dan pengguna menyusuri kembali ke aktivitas tersebut, sistem akan membuat kembali aktivitas dan meneruskan
{@link android.os.Bundle} ke {@link android.app.Activity#onCreate onCreate()} maupun {@link
-android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}. Dengan menggunakan salah satu
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}. Dengan menggunakan salah satu
metode ini, Anda bisa mengekstrak status tersimpan dari {@link android.os.Bundle} dan memulihkan
status aktivitas. Jika tidak ada informasi status untuk dipulihkan, maka {@link
android.os.Bundle} yang diteruskan kepada adalah Anda null (yang akan terjadi bila aktivitas dibuat untuk
@@ -639,7 +639,7 @@ onPause()}.</p>
<p>Akan tetapi, sekalipun Anda tidak melakukan apa-apa dan tidak mengimplementasikan {@link
android.app.Activity#onSaveInstanceState onSaveInstanceState()}, beberapa status aktivitas
akan dipulihkan oleh implementasi default {@link
-android.app.Activity#onSaveInstanceState onSaveInstanceState()} dalam kelas {@link android.app.Activity}. Khususnya,
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} dalam kelas {@link android.app.Activity}. Khususnya,
implementasi default akan memanggil metode {@link
android.view.View#onSaveInstanceState onSaveInstanceState()} yang sesuai untuk setiap {@link
android.view.View} dalam layout, yang memungkinkan setiap tampilan untuk memberi informasi tentang dirinya
@@ -696,7 +696,7 @@ menggunakan aplikasi.</p>
, dan bahasa). Bila terjadi perubahan demikian, Android akan membuat kembali aktivitas yang berjalan
(sistem akan memanggil {@link android.app.Activity#onDestroy}, kemudian segera memanggil {@link
android.app.Activity#onCreate onCreate()}). Perilaku ini
-didesain untuk membantu aplikasi Anda menyesuaikan diri dengan konfigurasi baru dengan cara memuat ulang
+didesain untuk membantu aplikasi Anda menyesuaikan diri dengan konfigurasi baru dengan cara memuat ulang
aplikasi Anda secara otomatis dengan sumber daya alternatif yang telah Anda sediakan (misalnya layout yang berbeda untuk
layar orientasi dan ukuran yang berbeda).</p>
@@ -722,7 +722,7 @@ Perubahan Runtime</a>.</p>
akan berhenti sementara dan berhenti sama sekali (walau tidak akan berhenti jika masih terlihat di latar belakang), saat
aktivitas lain dibuat. Jika aktivitas-aktivitas ini berbagi data yang disimpan ke disk atau di tempat lain, Anda perlu
memahami bahwa aktivitas pertama tidak dihentikan sepenuhnya sebelum aktivitas kedua dibuat.
-Sebagai gantinya, proses akan memulai aktivitas kedua secara tumpang tindih dengan proses penghentian
+Sebagai gantinya, proses akan memulai aktivitas kedua secara tumpang tindih dengan proses penghentian
aktivitas pertama.</p>
<p>Urutan callback daur hidup didefinisikan dengan baik, khususnya bila kedua aktivitas berada dalam
diff --git a/docs/html-intl/intl/in/guide/components/bound-services.jd b/docs/html-intl/intl/in/guide/components/bound-services.jd
index 5d1f65ed7c8e..6e5e65a167e8 100644
--- a/docs/html-intl/intl/in/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/in/guide/components/bound-services.jd
@@ -137,7 +137,7 @@ mendefinisikan {@link android.os.Handler} yang akan merespons aneka tipe objek {
android.os.Message}. {@link android.os.Handler}
ini adalah dasar bagi {@link android.os.Messenger} yang nanti bisa berbagi {@link android.os.IBinder}
dengan klien, sehingga memungkinkan klien mengirim perintah ke layanan dengan menggunakan objek {@link
-android.os.Message}. Selain itu, klien bisa mendefinisikan sendiri {@link android.os.Messenger}
+android.os.Message}. Selain itu, klien bisa mendefinisikan sendiri {@link android.os.Messenger}
sehingga layanan bisa mengirim balik pesan.
<p>Inilah cara termudah melakukan komunikasi antarproses (IPC), karena {@link
android.os.Messenger} akan mengantre semua permintaan ke dalam satu thread sehingga Anda tidak perlu mendesain
@@ -539,7 +539,7 @@ selengkapnya di bawah ini.)</p>
</ol>
<p>Misalnya, cuplikan berikut menghubungkan klien ke layanan yang dibuat di atas dengan
-<a href="#Binder">memperluas kelas Binder</a>, sehingga tinggal mengkonversi
+<a href="#Binder">memperluas kelas Binder</a>, sehingga tinggal mengkonversi
{@link android.os.IBinder} yang dihasilkan ke kelas {@code LocalService} dan meminta instance {@code
LocalService}:</p>
@@ -573,7 +573,7 @@ bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
</pre>
<ul>
- <li>Parameter pertama {@link android.content.Context#bindService bindService()} adalah sebuah
+ <li>Parameter pertama {@link android.content.Context#bindService bindService()} adalah sebuah
{@link android.content.Intent} yang secara eksplisit menyebutkan layanan yang akan diikat (walaupun intent
boleh implisit).</li>
<li>Parameter kedua adalah objek {@link android.content.ServiceConnection}.</li>
diff --git a/docs/html-intl/intl/in/guide/components/fragments.jd b/docs/html-intl/intl/in/guide/components/fragments.jd
index 14d4ef3eccbf..9f7199cd8a0b 100644
--- a/docs/html-intl/intl/in/guide/components/fragments.jd
+++ b/docs/html-intl/intl/in/guide/components/fragments.jd
@@ -36,7 +36,7 @@ parent.link=activities.html
<li>{@link android.app.FragmentManager}</li>
<li>{@link android.app.FragmentTransaction}</li>
</ol>
-
+
<h2>Lihat juga</h2>
<ol>
<li><a href="{@docRoot}training/basics/fragments/index.html">Membangun UI Dinamis dengan Fragmen</a></li>
@@ -47,32 +47,32 @@ dan Handset</a></li>
</div>
<p>{@link android.app.Fragment} mewakili perilaku atau bagian dari antarmuka pengguna dalam
-{@link android.app.Activity}. Anda bisa mengombinasikan beberapa fragmen dalam satu aktivitas untuk membangun UI
-multipanel dan menggunakan kembali sebuah fragmen dalam beberapa aktivitas. Anda bisa menganggap fragmen sebagai bagian
-modular dari aktivitas, yang memiliki daur hidup sendiri, menerima kejadian input sendiri, dan
-yang bisa Anda tambahkan atau hapus saat aktivitas berjalan (semacam "sub aktivitas" yang
+{@link android.app.Activity}. Anda bisa mengombinasikan beberapa fragmen dalam satu aktivitas untuk membangun UI
+multipanel dan menggunakan kembali sebuah fragmen dalam beberapa aktivitas. Anda bisa menganggap fragmen sebagai bagian
+modular dari aktivitas, yang memiliki daur hidup sendiri, menerima kejadian input sendiri, dan
+yang bisa Anda tambahkan atau hapus saat aktivitas berjalan (semacam "sub aktivitas" yang
bisa digunakan kembali dalam aktivitas berbeda).</p>
-<p>Fragmen harus selalu tertanam dalam aktivitas dan daur hidup fragmen secara langsung
+<p>Fragmen harus selalu tertanam dalam aktivitas dan daur hidup fragmen secara langsung
dipengaruhi oleh daur hidup aktivitas host-nya. Misalnya, saat aktivitas dihentikan sementara,
semua fragmen di dalamnya juga dihentikan sementara, dan bila aktivitas dimusnahkan, semua fragmen juga demikian. Akan tetapi, saat
-aktivitas berjalan (dalam <a href="{@docRoot}guide/components/activities.html#Lifecycle">status daur hidup</a> <em>dilanjutkan</em>, Anda bisa
-memanipulasi setiap fragmen secara terpisah, seperti menambah atau menghapusnya. Saat melakukan transaksi
+aktivitas berjalan (dalam <a href="{@docRoot}guide/components/activities.html#Lifecycle">status daur hidup</a> <em>dilanjutkan</em>, Anda bisa
+memanipulasi setiap fragmen secara terpisah, seperti menambah atau menghapusnya. Saat melakukan transaksi
fragmen, Anda juga bisa menambahkannya ke back-stack yang dikelola oleh aktivitas
-&mdash;setiap entri back-stack merupakan record transaksi fragmen yang
+&mdash;setiap entri back-stack merupakan record transaksi fragmen yang
terjadi. Dengan back-stack pengguna dapat membalikkan transaksi fragmen (mengarah mundur),
dengan menekan tombol <em>Back</em>.</p>
<p>Bila Anda menambahkan fragmen sebagai bagian dari layout aktivitas, fragmen itu berada dalam {@link
-android.view.ViewGroup} di hierarki tampilan aktivitas tersebut dan fragmen mendefinisikan
+android.view.ViewGroup} di hierarki tampilan aktivitas tersebut dan fragmen mendefinisikan
layout
tampilannya sendiri. Anda bisa menyisipkan fragmen ke dalam layout aktivitas dengan mendeklarasikan fragmen dalam file layout aktivitas
, sebagai elemen {@code &lt;fragment&gt;}, atau dari kode aplikasi dengan menambahkannya ke
- {@link android.view.ViewGroup} yang ada. Akan tetapi, fragmen tidak harus menjadi bagian dari
-layout aktivitas; Anda juga bisa menggunakan fragmen tanpa UI-nya sendiri sebagai pekerja tak terlihat untuk
+ {@link android.view.ViewGroup} yang ada. Akan tetapi, fragmen tidak harus menjadi bagian dari
+layout aktivitas; Anda juga bisa menggunakan fragmen tanpa UI-nya sendiri sebagai pekerja tak terlihat untuk
aktivitas tersebut.</p>
-<p>Dokumen ini menjelaskan cara membangun aplikasi menggunakan fragmen, termasuk
+<p>Dokumen ini menjelaskan cara membangun aplikasi menggunakan fragmen, termasuk
cara fragmen mempertahankan statusnya bila ditambahkan ke back-stack aktivitas, berbagi
kejadian dengan aktivitas, dan fragmen lain dalam aktivitas, berkontribusi pada action-bar
aktivitas, dan lainnya.</p>
@@ -80,45 +80,45 @@ aktivitas, dan lainnya.</p>
<h2 id="Design">Filosofi Desain</h2>
-<p>Android memperkenalkan fragmen di Android 3.0 (API level 11), terutama untuk mendukung desain UI yang lebih
-dinamis dan fleksibel pada layar besar, seperti tablet. Karena
-layar tablet jauh lebih besar daripada layar handset, maka lebih banyak ruang untuk mengombinasikan dan
-bertukar komponen UI. Fragmen memungkinkan desain seperti itu tanpa perlu mengelola perubahan
-kompleks pada hierarki tampilan. Dengan membagi layout aktivitas menjadi beberapa fragmen, Anda bisa
-mengubah penampilan aktivitas saat runtime dan mempertahankan perubahan itu di back-stack
+<p>Android memperkenalkan fragmen di Android 3.0 (API level 11), terutama untuk mendukung desain UI yang lebih
+dinamis dan fleksibel pada layar besar, seperti tablet. Karena
+layar tablet jauh lebih besar daripada layar handset, maka lebih banyak ruang untuk mengombinasikan dan
+bertukar komponen UI. Fragmen memungkinkan desain seperti itu tanpa perlu mengelola perubahan
+kompleks pada hierarki tampilan. Dengan membagi layout aktivitas menjadi beberapa fragmen, Anda bisa
+mengubah penampilan aktivitas saat runtime dan mempertahankan perubahan itu di back-stack
yang dikelola oleh aktivitas.</p>
-<p>Misalnya, aplikasi berita bisa menggunakan satu fragmen untuk menampilkan daftar artikel di
-sebelah kiri dan fragmen lainnya untuk menampilkan artikel di sebelah kanan&mdash;kedua fragmen ini muncul di satu
-aktivitas, berdampingan, dan masing-masing fragmen memiliki serangkaian metode callback daur hidup dan menangani kejadian input
+<p>Misalnya, aplikasi berita bisa menggunakan satu fragmen untuk menampilkan daftar artikel di
+sebelah kiri dan fragmen lainnya untuk menampilkan artikel di sebelah kanan&mdash;kedua fragmen ini muncul di satu
+aktivitas, berdampingan, dan masing-masing fragmen memiliki serangkaian metode callback daur hidup dan menangani kejadian input
penggunanya sendiri. Sehingga, sebagai ganti menggunakan satu aktivitas untuk memilih
-artikel dan aktivitas lainnya untuk membaca artikel, pengguna bisa memilih artikel dan membaca semuanya dalam
+artikel dan aktivitas lainnya untuk membaca artikel, pengguna bisa memilih artikel dan membaca semuanya dalam
aktivitas yang sama, sebagaimana diilustrasikan dalam layout tablet pada gambar 1.</p>
-<p>Anda harus mendesain masing-masing fragmen sebagai komponen aktivitas modular dan bisa digunakan kembali. Yakni, karena
-setiap fragmen mendefinisikan layoutnya dan perilakunya dengan callback daur hidupnya sendiri, Anda bisa memasukkan
+<p>Anda harus mendesain masing-masing fragmen sebagai komponen aktivitas modular dan bisa digunakan kembali. Yakni, karena
+setiap fragmen mendefinisikan layoutnya dan perilakunya dengan callback daur hidupnya sendiri, Anda bisa memasukkan
satu fragmen dalam banyak aktivitas, sehingga Anda harus mendesainnya untuk digunakan kembali dan mencegah
-memanipulasi satu fragmen dari fragmen lain secara langsung. Ini terutama penting karena dengan
-fragmen modular Anda bisa mengubah kombinasi fragmen untuk ukuran layar berbeda. Saat mendesain aplikasi
-untuk mendukung tablet maupun handset, Anda bisa menggunakan kembali fragmen dalam
+memanipulasi satu fragmen dari fragmen lain secara langsung. Ini terutama penting karena dengan
+fragmen modular Anda bisa mengubah kombinasi fragmen untuk ukuran layar berbeda. Saat mendesain aplikasi
+untuk mendukung tablet maupun handset, Anda bisa menggunakan kembali fragmen dalam
konfigurasi layout berbeda untuk mengoptimalkan pengalaman pengguna berdasarkan ruang layar yang tersedia. Misalnya
-, pada handset, fragmen mungkin perlu dipisahkan untuk menyediakan UI panel tunggal
+, pada handset, fragmen mungkin perlu dipisahkan untuk menyediakan UI panel tunggal
bila lebih dari satu yang tidak cocok dalam aktivitas yang sama.</p>
<img src="{@docRoot}images/fundamentals/fragments.png" alt="" />
<p class="img-caption"><strong>Gambar 1.</strong> Contoh cara dua modul UI yang didefinisikan oleh
- fragmen bisa digabungkan ke dalam satu aktivitas untuk desain tablet, namun dipisahkan untuk
+ fragmen bisa digabungkan ke dalam satu aktivitas untuk desain tablet, namun dipisahkan untuk
desain handset.</p>
<p>Misalnya&mdash;untuk melanjutkan contoh aplikasi berita&mdash; aplikasi bisa menanamkan
dua fragmen dalam <em>Aktivitas A</em>, saat berjalan pada perangkat berukuran tablet. Akan tetapi, pada
-layar berukuran handset, ruang untuk kedua fragmen tidak cukup, sehingga <em>Aktivitas A</em> hanya
-menyertakan fragmen untuk daftar artikel, dan saat pengguna memilih artikel,
-<em>Aktivitas B</em> akan dimulai, termasuk fragmen kedua untuk membaca artikel. Sehingga, aplikasi mendukung
+layar berukuran handset, ruang untuk kedua fragmen tidak cukup, sehingga <em>Aktivitas A</em> hanya
+menyertakan fragmen untuk daftar artikel, dan saat pengguna memilih artikel,
+<em>Aktivitas B</em> akan dimulai, termasuk fragmen kedua untuk membaca artikel. Sehingga, aplikasi mendukung
tablet dan handset dengan menggunakan kembali fragmen dalam kombinasi berbeda, seperti diilustrasikan dalam
gambar 1.</p>
-<p>Untuk informasi selengkapnya tentang mendesain aplikasi menggunakan kombinasi fragmen berbeda
+<p>Untuk informasi selengkapnya tentang mendesain aplikasi menggunakan kombinasi fragmen berbeda
untuk konfigurasi layar berbeda, lihat panduan untuk <a href="{@docRoot}guide/practices/tablets-and-handsets.html">Mendukung Tablet dan Handset</a>.</p>
@@ -131,26 +131,26 @@ untuk konfigurasi layar berbeda, lihat panduan untuk <a href="{@docRoot}guide/pr
aktivitasnya berjalan).</p>
</div>
-<p>Untuk membuat fragmen, Anda harus membuat subkelas {@link android.app.Fragment} (atau
-subkelasnya yang ada). Kelas {@link android.app.Fragment} memiliki kode yang mirip seperti
+<p>Untuk membuat fragmen, Anda harus membuat subkelas {@link android.app.Fragment} (atau
+subkelasnya yang ada). Kelas {@link android.app.Fragment} memiliki kode yang mirip seperti
{@link android.app.Activity}. Kelas ini memiliki metode callback yang serupa dengan aktivitas, seperti
{@link android.app.Fragment#onCreate onCreate()}, {@link android.app.Fragment#onStart onStart()},
{@link android.app.Fragment#onPause onPause()}, dan {@link android.app.Fragment#onStop onStop()}. Sebenarnya
, jika Anda mengkonversi aplikasi Android saat ini untuk menggunakan fragmen, Anda mungkin cukup memindahkan
-kode dari metode callback aktivitas ke masing-masing metode callback
+kode dari metode callback aktivitas ke masing-masing metode callback
fragmen.</p>
<p>Biasanya, Anda harus mengimplementasikan setidaknya metode daur hidup berikut ini:</p>
<dl>
<dt>{@link android.app.Fragment#onCreate onCreate()}</dt>
- <dd>Sistem akan memanggilnya saat membuat fragmen. Dalam implementasi, Anda harus
-menginisialisasi komponen penting dari fragmen yang ingin dipertahankan saat fragmen
+ <dd>Sistem akan memanggilnya saat membuat fragmen. Dalam implementasi, Anda harus
+menginisialisasi komponen penting dari fragmen yang ingin dipertahankan saat fragmen
dihentikan sementara atau dihentikan, kemudian dilanjutkan.</dd>
<dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
- <dd>Sistem akan memanggilnya saat fragmen menggambar antarmuka penggunanya
-untuk yang pertama kali. Untuk menggambar UI fragmen, Anda harus mengembalikan {@link android.view.View} dari metode
-ini yang menjadi akar layout fragmen. Hasil yang dikembalikan bisa berupa null jika
+ <dd>Sistem akan memanggilnya saat fragmen menggambar antarmuka penggunanya
+untuk yang pertama kali. Untuk menggambar UI fragmen, Anda harus mengembalikan {@link android.view.View} dari metode
+ini yang menjadi akar layout fragmen. Hasil yang dikembalikan bisa berupa null jika
fragmen tidak menyediakan UI.</dd>
<dt>{@link android.app.Activity#onPause onPause()}</dt>
<dd>Sistem akan memanggil metode ini sebagai indikasi pertama bahwa pengguna sedang meninggalkan
@@ -161,7 +161,7 @@ pengguna mungkin tidak kembali).</dd>
<p>Kebanyakan aplikasi harus mengimplementasikan setidaknya tiga metode ini untuk setiap fragmen, namun ada
beberapa metode callback lain yang juga harus Anda gunakan untuk menangani berbagai tahap
-daur hidup fragmen. Semua metode callback daur hidup akan dibahas secara lebih detail, di bagian
+daur hidup fragmen. Semua metode callback daur hidup akan dibahas secara lebih detail, di bagian
tentang <a href="#Lifecycle">Menangani Daur Hidup Fragmen</a>.</p>
@@ -171,15 +171,15 @@ android.app.Fragment}:</p>
<dl>
<dt>{@link android.app.DialogFragment}</dt>
<dd>Menampilkan dialog mengambang. Penggunaan kelas ini untuk membuat dialog merupakan alternatif yang baik dari
-penggunaan metode helper dialog di kelas {@link android.app.Activity}, karena Anda bisa
-menyatukan dialog fragmen ke dalam back-stack fragmen yang dikelola oleh aktivitas,
+penggunaan metode helper dialog di kelas {@link android.app.Activity}, karena Anda bisa
+menyatukan dialog fragmen ke dalam back-stack fragmen yang dikelola oleh aktivitas,
sehingga pengguna bisa kembali ke fragmen yang ditinggalkan.</dd>
<dt>{@link android.app.ListFragment}</dt>
<dd>Menampilkan daftar item yang dikelola oleh adaptor (seperti {@link
android.widget.SimpleCursorAdapter}), serupa dengan {@link android.app.ListActivity}. Menampilkan
beberapa metode pengelolaan daftar tampilan seperti callback {@link
-android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()} untuk
+android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()} untuk
menangani kejadian klik.</dd>
<dt>{@link android.preference.PreferenceFragment}</dt>
@@ -196,7 +196,7 @@ layoutnya sendiri ke aktivitas.</p>
<p>Untuk menyediakan layout fragmen, Anda harus mengimplementasikan metode callback {@link
android.app.Fragment#onCreateView onCreateView()}, yang dipanggil sistem Android
-bila tiba saatnya fragmen menggambar layoutnya. Implementasi Anda atas metode ini harus mengembalikan
+bila tiba saatnya fragmen menggambar layoutnya. Implementasi Anda atas metode ini harus mengembalikan
{@link android.view.View} yang menjadi akar layout fragmen.</p>
<p class="note"><strong>Catatan:</strong> Jika fragmen adalah subkelas {@link
@@ -205,7 +205,7 @@ android.app.ListFragment}, implementasi default akan mengembalikan {@link androi
<p>Untuk mengembalikan layout dari {@link
android.app.Fragment#onCreateView onCreateView()}, Anda bisa memekarkannya dari <a href="{@docRoot}guide/topics/resources/layout-resource.html">sumber daya layout</a> yang didefinisikan di XML. Untuk
-membantu melakukannya, {@link android.app.Fragment#onCreateView onCreateView()} menyediakan objek
+membantu melakukannya, {@link android.app.Fragment#onCreateView onCreateView()} menyediakan objek
{@link android.view.LayoutInflater}.</p>
<p>Misalnya, ini adalah subkelas {@link android.app.Fragment} yang memuat layout dari file
@@ -227,7 +227,7 @@ public static class ExampleFragment extends Fragment {
<h3>Membuat layout</h3>
<p>Dalam contoh di atas, {@code R.layout.example_fragment} merupakan acuan ke sumber daya layout
bernama {@code example_fragment.xml} yang tersimpan dalam sumber daya aplikasi. Untuk informasi tentang cara
-membuat layout di XML, lihat dokumentasi
+membuat layout di XML, lihat dokumentasi
<a href="{@docRoot}guide/topics/ui/index.html">Antarmuka Pengguna</a>.</p>
</div>
</div>
@@ -235,12 +235,12 @@ membuat layout di XML, lihat dokumentasi
<p>Parameter {@code container} yang diteruskan ke {@link android.app.Fragment#onCreateView
onCreateView()} adalah induk {@link android.view.ViewGroup} (dari layout aktivitas) tempat
layout fragmen
-akan disisipkan. Parameter {@code savedInstanceState} adalah {@link android.os.Bundle} yang
+akan disisipkan. Parameter {@code savedInstanceState} adalah {@link android.os.Bundle} yang
menyediakan data tentang instance fragmen sebelumnya, jika fragmen dilanjutkan
(status pemulihan dibahas selengkapnya di bagian tentang <a href="#Lifecycle">Menangani
Daur Hidup Fragmen</a>).</p>
-<p>Metode {@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()} membutuhkan
+<p>Metode {@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()} membutuhkan
tiga argumen:</p>
<ul>
<li>ID sumber daya layout yang ingin dimekarkan.</li>
@@ -260,7 +260,7 @@ fragmen ke aktivitas.</p>
<h3 id="Adding">Menambahkan fragmen ke aktivitas</h3>
-<p>Biasanya, fragmen berkontribusi pada sebagian UI ke aktivitas host, yang ditanamkan sebagai
+<p>Biasanya, fragmen berkontribusi pada sebagian UI ke aktivitas host, yang ditanamkan sebagai
bagian dari hierarki tampilan keseluruhan aktivitas. Ada dua cara untuk menambahkan fragmen ke layout
aktivitas:</p>
@@ -297,13 +297,13 @@ untuk mengambil setiap fragmen. Sistem akan menyisipkan {@link android.view.View
<div class="note">
<p><strong>Catatan:</strong> Setiap fragmen memerlukan identifier
-unik yang bisa digunakan sistem untuk memulihkan fragmen jika aktivitas dimulai kembali (dan identifier yang bisa digunakan menangkap
+unik yang bisa digunakan sistem untuk memulihkan fragmen jika aktivitas dimulai kembali (dan identifier yang bisa digunakan menangkap
fragmen untuk melakukan transaksi, seperti menghapusnya). Ada tiga cara untuk memberikan
ID bagi fragmen:</p>
<ul>
<li>Memberikan atribut {@code android:id} bersama ID unik.</li>
<li>Memberikan atribut {@code android:tag} bersama string unik.</li>
- <li>Jika Anda tidak memberikan dua hal tersebut, sistem akan menggunakan ID
+ <li>Jika Anda tidak memberikan dua hal tersebut, sistem akan menggunakan ID
tampilan kontainer.</li>
</ul>
</div>
@@ -354,15 +354,15 @@ android.app.FragmentTransaction#add(Fragment,String)} (dengan menyediakan string
dalam layout aktivitas, ini tidak akan menerima panggilan ke {@link
android.app.Fragment#onCreateView onCreateView()}. Jadi Anda tidak perlu mengimplementasikan metode itu.</p>
-<p>Menyediakan tag string untuk fragmen tidak hanya untuk fragmen non-UI&mdash;Anda juga bisa
+<p>Menyediakan tag string untuk fragmen tidak hanya untuk fragmen non-UI&mdash;Anda juga bisa
menyediakan tag string untuk fragmen yang memiliki UI&mdash;namun jika fragmen tidak memiliki UI
-, maka tag string adalah satu-satunya cara untuk mengidentifikasinya. Jika Anda ingin mendapatkan fragmen dari
+, maka tag string adalah satu-satunya cara untuk mengidentifikasinya. Jika Anda ingin mendapatkan fragmen dari
aktivitas nantinya, Anda perlu menggunakan {@link android.app.FragmentManager#findFragmentByTag
findFragmentByTag()}.</p>
<p>Untuk contoh aktivitas yang menggunakan fragmen sebagai pekerja latar belakang, tanpa UI, lihat sampel {@code
-FragmentRetainInstance.java}, yang disertakan dalam sampel SDK (tersedia melalui
-Android SDK Manager) dan terletak di sistem Anda sebagai
+FragmentRetainInstance.java}, yang disertakan dalam sampel SDK (tersedia melalui
+Android SDK Manager) dan terletak di sistem Anda sebagai
<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>.</p>
@@ -378,7 +378,7 @@ mendapatkannya, panggil {@link android.app.Activity#getFragmentManager()} dari a
<li>Dapatkan fragmen yang ada di aktivitas dengan {@link
android.app.FragmentManager#findFragmentById findFragmentById()} (untuk fragmen yang menyediakan UI dalam
layout aktivitas) atau {@link android.app.FragmentManager#findFragmentByTag
-findFragmentByTag()} (untuk fragmen yang menyediakan atau tidak menyediakan UI).</li>
+findFragmentByTag()} (untuk fragmen yang menyediakan atau tidak menyediakan UI).</li>
<li>Tarik fragmen dari back-stack, dengan {@link
android.app.FragmentManager#popBackStack()} (mensimulasikan perintah <em>Back</em> oleh pengguna).</li>
<li>Daftarkan listener untuk perubahan pada back-stack, dengan {@link
@@ -395,7 +395,7 @@ menambah dan menghapus fragmen.</p>
<h2 id="Transactions">Melakukan Transaksi Fragmen</h2>
-<p>Fitur menarik terkait penggunaan fragmen di aktivitas adalah kemampuan menambah, menghapus, mengganti,
+<p>Fitur menarik terkait penggunaan fragmen di aktivitas adalah kemampuan menambah, menghapus, mengganti,
dan melakukan tindakan lain dengannya, sebagai respons atas interaksi pengguna. Setiap set perubahan
yang Anda lakukan untuk aktivitas disebut transaksi dan Anda bisa melakukan transaksi menggunakan API di {@link
android.app.FragmentTransaction}. Anda juga bisa menyimpan setiap transaksi ke back-stack yang dikelola
@@ -423,7 +423,7 @@ android.app.FragmentTransaction#addToBackStack addToBackStack()}, untuk menambah
ke back-stack dari transaksi fragmen. Back-stack ini dikelola oleh aktivitas dan memungkinkan
pengguna kembali ke status fragmen sebelumnya, dengan menekan tombol <em>Back</em>.</p>
-<p>Misalnya, berikut ini cara mengganti satu fragmen dengan yang fragmen yang lain, dan mempertahankan
+<p>Misalnya, berikut ini cara mengganti satu fragmen dengan yang fragmen yang lain, dan mempertahankan
status sebelumnya di back-stack:</p>
<pre>
@@ -442,18 +442,18 @@ transaction.commit();
<p>Dalam contoh ini, {@code newFragment} menggantikan fragmen apa saja (jika ada) yang saat ini berada dalam
kontainer layout yang diidentifikasi oleh ID {@code R.id.fragment_container}. Dengan memanggil @link
-android.app.FragmentTransaction#addToBackStack addToBackStack()}, transaksi yang diganti
-disimpan ke back-stack sehingga pengguna bisa membalikkan transaksi dan mengembalikan fragmen
+android.app.FragmentTransaction#addToBackStack addToBackStack()}, transaksi yang diganti
+disimpan ke back-stack sehingga pengguna bisa membalikkan transaksi dan mengembalikan fragmen
sebelumnya dengan menekan tombol <em>Back</em>.</p>
<p>Jika Anda menambahkan beberapa perubahan pada transaksi (seperti {@link
android.app.FragmentTransaction#add add()} atau {@link android.app.FragmentTransaction#remove
remove()}) dan panggil {@link
-android.app.FragmentTransaction#addToBackStack addToBackStack()}, maka semua perubahan akan diterapkan
-sebelum Anda memanggil {@link android.app.FragmentTransaction#commit commit()} akan ditambahkan ke
+android.app.FragmentTransaction#addToBackStack addToBackStack()}, maka semua perubahan akan diterapkan
+sebelum Anda memanggil {@link android.app.FragmentTransaction#commit commit()} akan ditambahkan ke
back-stack sebagai satu transaksi dan tombol <em>Back</em> akan membalikannya semua.</p>
-<p>Urutan menambahkan perubahan pada {@link android.app.FragmentTransaction} tidak berpengaruh,
+<p>Urutan menambahkan perubahan pada {@link android.app.FragmentTransaction} tidak berpengaruh,
kecuali:</p>
<ul>
<li>Anda harus memanggil {@link android.app.FragmentTransaction#commit()} paling akhir</li>
@@ -462,9 +462,9 @@ urutan penambahannya akan menentukan urutan munculnya dalam hierarki tampilan</l
</ul>
<p>Jika Anda tidak memanggil {@link android.app.FragmentTransaction#addToBackStack(String)
-addToBackStack()} saat melakukan transaksi yang menghapus fragmen, maka fragmen itu
+addToBackStack()} saat melakukan transaksi yang menghapus fragmen, maka fragmen itu
akan dimusnahkan bila transaksi diikat dan pengguna tidak bisa mengarah kembali ke sana. Sedangkan, jika
-Anda memanggil {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} saat
+Anda memanggil {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} saat
menghapus fragmen, maka fragmen itu akan <em>dihentikan</em> dan akan dilanjutkan jika pengguna mengarah
kembali.</p>
@@ -473,9 +473,9 @@ transisi, dengan memanggil {@link android.app.FragmentTransaction#setTransition
mengikatnya.</p>
<p>Memanggil {@link android.app.FragmentTransaction#commit()} tidak akan langsung menjalankan
-transaksi. Namun sebuah jadwal akan dibuat untuk dijalankan pada thread UI aktivitas (thread "utama")
+transaksi. Namun sebuah jadwal akan dibuat untuk dijalankan pada thread UI aktivitas (thread "utama")
begitu thread bisa melakukannya. Akan tetapi, jika perlu Anda bisa memanggil {@link
-android.app.FragmentManager#executePendingTransactions()} dari thread UI untuk segera
+android.app.FragmentManager#executePendingTransactions()} dari thread UI untuk segera
mengeksekusi transaksi yang diserahkan oleh {@link android.app.FragmentTransaction#commit()}. Hal itu
biasanya tidak perlu kecuali jika transaksi merupakan dependensi bagi pekerjaan dalam thread lain.</p>
@@ -503,7 +503,7 @@ android.app.Fragment#getActivity()} dan dengan mudah melakukan tugas-tugas seper
View listView = {@link android.app.Fragment#getActivity()}.{@link android.app.Activity#findViewById findViewById}(R.id.list);
</pre>
-<p>Demikian pula, aktivitas Anda bisa memanggil metode di fragmen dengan meminta acuan ke
+<p>Demikian pula, aktivitas Anda bisa memanggil metode di fragmen dengan meminta acuan ke
{@link android.app.Fragment} dari {@link android.app.FragmentManager}, menggunakan {@link
android.app.FragmentManager#findFragmentById findFragmentById()} atau {@link
android.app.FragmentManager#findFragmentByTag findFragmentByTag()}. Misalnya:</p>
@@ -537,7 +537,7 @@ public static class FragmentA extends ListFragment {
</pre>
<p>Selanjutnya aktivitas yang menjadi host fragmen akan mengimplementasikan antarmuka {@code OnArticleSelectedListener}
- dan
+ dan
mengesampingkan {@code onArticleSelected()} untuk memberi tahu fragmen B mengenai kejadian dari fragmen A. Untuk memastikan
bahwa aktivitas host mengimplementasikan antarmuka ini, metode callback fragmen A {@link
android.app.Fragment#onAttach onAttach()} (yang dipanggil sistem saat menambahkan
@@ -564,7 +564,7 @@ public static class FragmentA extends ListFragment {
<p>Jika aktivitas belum mengimplementasikan antarmuka, maka fragmen akan melontarkan
{@link java.lang.ClassCastException}.
-Jika berhasil, anggota {@code mListener} yang menyimpan acuan ke implementasi aktivitas
+Jika berhasil, anggota {@code mListener} yang menyimpan acuan ke implementasi aktivitas
{@code OnArticleSelectedListener}, sehingga fragmen A bisa berbagi kejadian dengan aktivitas, dengan memanggil metode
yang didefinisikan oleh antarmuka {@code OnArticleSelectedListener}. Misalnya, jika fragmen A adalah
ekstensi dari {@link android.app.ListFragment}, maka setiap kali
@@ -654,7 +654,7 @@ seluruh layar).</dd>
<dt><i>Dihentikan</i></dt>
<dd>Fragmen tidak terlihat. Aktivitas host telah dihentikan atau
fragmen telah dihapus dari aktivitas namun ditambahkan ke back-stack. Fragmen yang dihentikan
-masih hidup (semua status dan informasi anggota masih disimpan oleh sistem). Akan tetapi, fragmen
+masih hidup (semua status dan informasi anggota masih disimpan oleh sistem). Akan tetapi, fragmen
tidak terlihat lagi oleh pengguna dan akan dimatikan jika aktivitas dimatikan.</dd>
</dl>
@@ -668,10 +668,10 @@ android.app.Fragment#onActivityCreated onActivityCreated()}. Untuk informasi sel
status, lihat dokumen <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Aktivitas</a>
.</p>
-<p>Perbedaan paling signifikan dalam daur hidup antara aktivitas dan fragmen ada
+<p>Perbedaan paling signifikan dalam daur hidup antara aktivitas dan fragmen ada
pada cara penyimpanannya dalam back-stack masing-masing. Aktivitas ditempatkan ke back-stack aktivitas
yang dikelola oleh sistem saat dihentikan, secara default (sehingga pengguna bisa mengarah kembali
-ke aktivitas dengan tombol <em>Back</em>, seperti yang dibahas dalam <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tugas dan Back-Stack</a>).
+ke aktivitas dengan tombol <em>Back</em>, seperti yang dibahas dalam <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tugas dan Back-Stack</a>).
Akan tetapi, fragmen yang ditempatkan ke back-stack dikelola oleh aktivitas host hanya saat
Anda secara eksplisit meminta agar instance disimpan dengan memanggil {@link
android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} selama transaksi yang
@@ -736,7 +736,7 @@ melalui daur hidupnya oleh aktivitas.</p>
<p>Untuk merangkum semua yang telah dibahas dalam dokumen ini, berikut ini contoh aktivitas
yang menggunakan dua fragmen untuk membuat layout dua panel. Aktivitas di bawah ini menyertakan satu fragmen untuk
menampilkan daftar putar Shakespeare dan fragmen lainnya menampilkan rangkuman pemutaran bila dipilih dari
-daftar. Aktivitas ini juga menunjukkan cara menyediakan konfigurasi fragmen berbeda,
+daftar. Aktivitas ini juga menunjukkan cara menyediakan konfigurasi fragmen berbeda,
berdasarkan konfigurasi layar.</p>
<p class="note"><strong>Catatan:</strong> Kode sumber lengkap untuk aktivitas ini tersedia di
@@ -752,7 +752,7 @@ android.app.Activity#onCreate onCreate()}:</p>
{@sample development/samples/ApiDemos/res/layout-land/fragment_layout.xml layout}
-<p>Dengan layout ini, sistem akan membuat instance {@code TitlesFragment} (yang mencantumkan
+<p>Dengan layout ini, sistem akan membuat instance {@code TitlesFragment} (yang mencantumkan
judul) segera setelah aktivitas memuat layout, sementara {@link android.widget.FrameLayout}
(lokasi penempatan fragmen untuk menampilkan rangkuman pemutaran) menempati ruang di sisi kanan
layar, namun pada awalnya masih kosong. Seperti yang akan Anda lihat di bawah ini, sampai pengguna memilih item
@@ -769,14 +769,14 @@ tersimpan di {@code res/layout/fragment_layout.xml}:</p>
<p>Layout ini hanya menyertakan {@code TitlesFragment}. Ini artinya saat perangkat berada dalam
orientasi tegak, hanya judul daftar putar yang terlihat. Jadi, saat pengguna mengklik item
-daftar dalam konfigurasi ini, aplikasi akan memulai aktivitas baru untuk menampilkan rangkuman,
+daftar dalam konfigurasi ini, aplikasi akan memulai aktivitas baru untuk menampilkan rangkuman,
sebagai ganti pemuatan fragmen kedua.</p>
<p>Berikutnya, Anda bisa melihat bagaimana hal ini dilakukan dalam kelas fragmen. Pertama adalah {@code
TitlesFragment}, yang menampilkan judul daftar putar Shakespeare. Fragmen ini membuat ekstensi {@link
android.app.ListFragment} dan mengandalkannya itu untuk menangani sebagian besar pekerjaan tampilan daftar.</p>
-<p>Saat Anda memeriksa kode ini, perhatikan bahwa ada dua kemungkinan perilaku saat pengguna mengklik
+<p>Saat Anda memeriksa kode ini, perhatikan bahwa ada dua kemungkinan perilaku saat pengguna mengklik
item daftar: bergantung pada layout mana yang aktif, bisa membuat dan menampilkan fragmen
baru untuk menampilkan detail dalam aktivitas yang sama (menambahkan fragmen ke {@link
android.widget.FrameLayout}), atau memulai aktivitas baru (tempat fragmen ditampilkan).</p>
@@ -785,11 +785,11 @@ android.widget.FrameLayout}), atau memulai aktivitas baru (tempat fragmen ditamp
<p>Fragmen kedua, {@code DetailsFragment} menampilkan rangkuman pemutaran untuk item yang dipilih dari
daftar dari {@code TitlesFragment}:</p>
-
+
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
<p>Ingatlah dari kelas {@code TitlesFragment}, bahwa, jika pengguna mengklik item daftar dan
-layout saat ini <em>tidak</em> menyertakan tampilan {@code R.id.details} (yaitu tempat
+layout saat ini <em>tidak</em> menyertakan tampilan {@code R.id.details} (yaitu tempat
{@code DetailsFragment} berada), maka aplikasi memulai aktivitas {@code DetailsActivity}
untuk menampilkan konten item.</p>
@@ -798,14 +798,14 @@ yang dipilih saat layar dalam orientasi tegak:</p>
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
details_activity}
-
+
<p>Perhatikan bahwa aktivitas ini selesai sendiri jika konfigurasi mendatar, sehingga aktivitas utama
bisa mengambil alih dan menampilkan {@code DetailsFragment} bersama {@code TitlesFragment}.
Ini bisa terjadi jika pengguna memulai {@code DetailsActivity} saat dalam orientasi tegak, namun kemudian
memutarnya menjadi mendatar (yang akan memulai lagi aktivitas saat ini).</p>
-<p>Untuk contoh lainnya mengenai penggunaan fragmen (dan file sumber lengkap untuk contoh ini),
+<p>Untuk contoh lainnya mengenai penggunaan fragmen (dan file sumber lengkap untuk contoh ini),
lihat aplikasi contoh Demo API yang tersedia di <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment">
ApiDemos</a> (bisa diunduh dari <a href="{@docRoot}resources/samples/get.html">Komponen contoh SDK</a>).</p>
diff --git a/docs/html-intl/intl/in/guide/components/fundamentals.jd b/docs/html-intl/intl/in/guide/components/fundamentals.jd
index bd9a500f77a5..2c925e98edb0 100644
--- a/docs/html-intl/intl/in/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/in/guide/components/fundamentals.jd
@@ -22,44 +22,44 @@ page.title=Dasar-Dasar Aplikasi
</div>
</div>
-<p>Aplikasi Android ditulis dalam bahasa pemrograman Java. Android SDK Tools mengkompilasi
+<p>Aplikasi Android ditulis dalam bahasa pemrograman Java. Android SDK Tools mengkompilasi
kode Anda&mdash;bersama data dan file sumber daya &mdash;ke dalam APK: <i>Paket Android</i>,
-yaitu file arsip berekstensi {@code .apk}. Satu file APK berisi semua konten
+yaitu file arsip berekstensi {@code .apk}. Satu file APK berisi semua konten
aplikasi Android dan merupakan file yang digunakan perangkat berbasis Android untuk menginstal aplikasi.</p>
<p>Setelah diinstal di perangkat, setiap aplikasi Android tinggal di sandbox keamanannya sendiri: </p>
<ul>
- <li>Sistem operasi Android merupakan sistem Linux multi-pengguna yang di dalamnya setiap
+ <li>Sistem operasi Android merupakan sistem Linux multi-pengguna yang di dalamnya setiap
aplikasi adalah pengguna berbeda.</li>
<li>Secara default, sistem menetapkan ID pengguna Linux unik kepada setiap aplikasi (ID ini hanya
digunakan oleh sistem dan tidak diketahui aplikasi). Sistem menetapkan izin
bagi semua file dalam aplikasi sehingga hanya ID pengguna yang diizinkan yang bisa mengaksesnya. </li>
-<li>Setiap proses memiliki mesin virtual (VM) sendiri, sehingga kode aplikasi yang berjalan secara terisolasi dari
+<li>Setiap proses memiliki mesin virtual (VM) sendiri, sehingga kode aplikasi yang berjalan secara terisolasi dari
aplikasi lainnya.</li>
-<li>Secara default, setiap aplikasi berjalan dalam proses Linux-nya sendiri. Android memulai proses
+<li>Secara default, setiap aplikasi berjalan dalam proses Linux-nya sendiri. Android memulai proses
bila ada komponen aplikasi yang perlu dijalankan, kemudian mematikan proses bila tidak lagi diperlukan
atau bila sistem harus memulihkan memori untuk digunakan aplikasi lain.</li>
</ul>
-<p>Dengan cara ini, sistem Android mengimplementasikan <em>prinsip privilese minim</em>. Ini berarti,
+<p>Dengan cara ini, sistem Android mengimplementasikan <em>prinsip privilese minim</em>. Ini berarti,
secara default aplikasi hanya memiliki akses ke komponen yang diperlukannya untuk melakukan pekerjaannya dan
-tidak lebih dari itu. Hal ini menghasilkan lingkungan yang sangat aman sehingga aplikasi tidak bisa mengakses bagian
+tidak lebih dari itu. Hal ini menghasilkan lingkungan yang sangat aman sehingga aplikasi tidak bisa mengakses bagian
sistem bila tidak diberi izin.</p>
<p>Akan tetapi, ada beberapa cara bagi aplikasi untuk berbagi data dengan aplikasi lain dan bagi aplikasi
untuk mengakses layanan sistem:</p>
<ul>
- <li>Dua aplikasi bisa diatur untuk menggunakan ID pengguna Linux yang sama,
+ <li>Dua aplikasi bisa diatur untuk menggunakan ID pengguna Linux yang sama,
dalam hal ini keduanya bisa saling mengakses file masing-masing. Untuk menghemat sumber daya sistem, aplikasi dengan ID
pengguna yang sama juga bisa diatur agar berjalan dalam proses Linux yang sama dan menggunakan VM yang sama (
aplikasi juga harus ditandatangani dengan sertifikat yang sama).</li>
- <li>Aplikasi bisa meminta izin akses ke data perangkat seperti kontak
-pengguna, pesan SMS, penyimpanan lepas-pasang (kartu SD), kamera, Bluetooth, dan lainnya. Semua
+ <li>Aplikasi bisa meminta izin akses ke data perangkat seperti kontak
+pengguna, pesan SMS, penyimpanan lepas-pasang (kartu SD), kamera, Bluetooth, dan lainnya. Semua
izin aplikasi harus diberikan oleh pengguna saat menginstal.</li>
</ul>
@@ -69,7 +69,7 @@ selanjutnya memperkenalkan Anda pada:</p>
<li>Komponen kerangka kerja inti yang mendefinisikan aplikasi.</li>
<li>File manifes tempat Anda mendeklarasikan komponen dan fitur yang diperlukan perangkat
untuk aplikasi.</li>
- <li>Sumber daya yang terpisah dari kode aplikasi dan memungkinkan
+ <li>Sumber daya yang terpisah dari kode aplikasi dan memungkinkan
aplikasi mengoptimalkan perilakunya untuk beragam konfigurasi perangkat.</li>
</ul>
@@ -78,8 +78,8 @@ aplikasi mengoptimalkan perilakunya untuk beragam konfigurasi perangkat.</li>
<h2 id="Components">Komponen Aplikasi</h2>
<p>Komponen aplikasi adalah blok pembangun penting dari aplikasi Android.
-Setiap komponen merupakan titik berbeda yang digunakan sistem untuk memasuki aplikasi. Tidak semua komponen
-merupakan titik masuk sebenarnya bagi pengguna dan sebagian saling bergantung, namun masing-masing komponen tersedia
+Setiap komponen merupakan titik berbeda yang digunakan sistem untuk memasuki aplikasi. Tidak semua komponen
+merupakan titik masuk sebenarnya bagi pengguna dan sebagian saling bergantung, namun masing-masing komponen tersedia
sebagai kesatuan sendiri dan memainkan peran tertentu&mdash;masing-masing merupakan
blok pembangun unik yang mendefinisikan perilaku aplikasi secara keseluruhan.</p>
@@ -93,7 +93,7 @@ dan daur hidupnya sendiri yang mendefinisikan cara komponen dibuat dan dimusnahk
<dt><b>Aktivitas</b></dt>
<dd>Sebuah <i>aktivitas</i> mewakili satu layar dengan antarmuka pengguna. Misalnya,
-aplikasi email mungkin memiliki satu aktivitas yang menampilkan daftar email
+aplikasi email mungkin memiliki satu aktivitas yang menampilkan daftar email
baru, aktivitas lain untuk menulis email, dan aktivitas satunya lagi untuk membaca email. Walaupun
semua aktivitas bekerja sama untuk membentuk pengalaman pengguna yang kohesif dalam aplikasi email,
masing-masing tidak saling bergantung. Karenanya, aplikasi berbeda bisa memulai
@@ -110,7 +110,7 @@ tentang hal ini dalam panduan pengembang <a href="{@docRoot}guide/components/act
<dd>Sebuah <i>layanan</i> adalah komponen yang berjalan di latar belakang untuk melakukan
operasi yang berjalan lama atau untuk melakukan pekerjaan bagi proses jarak jauh. Layanan
-tidak menyediakan antarmuka pengguna. Misalnya, sebuah layanan bisa memutar musik di latar belakang sementara
+tidak menyediakan antarmuka pengguna. Misalnya, sebuah layanan bisa memutar musik di latar belakang sementara
pengguna berada dalam aplikasi lain, atau layanan bisa menarik data lewat jaringan tanpa
memblokir interaksi pengguna dengan aktivitas. Komponen lain, seperti aktivitas, bisa memulai
layanan dan membiarkannya berjalan atau mengikat layanan untuk berinteraksi dengannya.
@@ -125,7 +125,7 @@ pengembang <a href="{@docRoot}guide/components/services.html">Layanan</a>.</p>
<dd>Sebuah <i>penyedia konten</i> mengelola seperangkat data-bersama aplikasi. Anda bisa menyimpan data
dalam sistem file, database SQLite, di web, atau lokasi penyimpanan permanen lainnya
-yang bisa diakses aplikasi. Melalui penyedia konten, aplikasi lain bisa melakukan query atau bahkan
+yang bisa diakses aplikasi. Melalui penyedia konten, aplikasi lain bisa melakukan query atau bahkan
memodifikasi data (jika penyedia konten mengizinkannya). Misalnya, sistem Android menyediakan penyedia
konten yang mengelola informasi kontak pengguna. Karenanya, setiap aplikasi
dengan izin yang sesuai bisa melakukan query mengenai bagian dari penyedia konten (seperti {@link
@@ -137,7 +137,7 @@ penyedia konten untuk menyimpan catatan.</p>
<p>Penyedia konten diimplementasikan sebagai subkelas {@link android.content.ContentProvider}
dan harus mengimplementasikan seperangkat standar API yang memungkinkan aplikasi
-lain melakukan transaksi. Untuk informasi selengkapnya, lihat panduan pengembang
+lain melakukan transaksi. Untuk informasi selengkapnya, lihat panduan pengembang
<a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia Konten</a>.</p>
</dd>
@@ -163,7 +163,7 @@ lihat kelas {@link android.content.BroadcastReceiver}.</p>
-<p>Aspek unik dari desain sistem Android adalah aplikasi mana pun bisa memulai
+<p>Aspek unik dari desain sistem Android adalah aplikasi mana pun bisa memulai
komponen aplikasi lain. Misalnya, jika Anda menginginkan pengguna mengambil
foto dengan kamera perangkat, bisa saja aplikasi lain yang melakukannya dan aplikasi
Anda bisa menggunakannya, sebagai ganti mengembangkan aktivitas sendiri untuk mengambil foto. Anda tidak
@@ -175,7 +175,7 @@ kamera seakan menjadi bagian dari aplikasi Anda.</p>
<p>Saat sistem memulai komponen, sistem akan memulai proses untuk aplikasi itu (jika
belum berjalan) dan membuat instance kelas yang diperlukan untuk komponen. Misalnya, jika aplikasi Anda
memulai aktivitas dalam aplikasi kamera yang mengambil foto, aktivitas itu akan
-berjalan dalam proses yang dimiliki oleh aplikasi kamera, bukan dalam proses aplikasi Anda.
+berjalan dalam proses yang dimiliki oleh aplikasi kamera, bukan dalam proses aplikasi Anda.
Karenanya, tidak seperti aplikasi di sebagian besar sistem lain, aplikasi Android tidak memiliki titik
masuk tunggal (misalnya tidak ada fungsi {@code main()}).</p>
@@ -198,13 +198,13 @@ atau milik aplikasi lain.</p>
mengaktifkan komponen tertentu atau komponen <em>tipe</em> komponen tertentu&mdash;masing-masing intent
bisa eksplisit atau implisit.</p>
-<p>Untuk aktivitas dan layanan, intent mendefinisikan tindakan yang akan dilakukan (misalnya, untuk "melihat" atau
-"mengirim" sesuatu) dan mungkin menetapkan URI data untuk ditindaklanjuti (salah satu hal yang mungkin perlu diketahui
-oleh komponen yang akan dimulai). Misalnya, intent mungkin menyampaikan permintaan suatu
+<p>Untuk aktivitas dan layanan, intent mendefinisikan tindakan yang akan dilakukan (misalnya, untuk "melihat" atau
+"mengirim" sesuatu) dan mungkin menetapkan URI data untuk ditindaklanjuti (salah satu hal yang mungkin perlu diketahui
+oleh komponen yang akan dimulai). Misalnya, intent mungkin menyampaikan permintaan suatu
aktivitas untuk menampilkan gambar atau membuka halaman web. Dalam beberapa kasus, Anda bisa memulai
-aktivitas untuk menerima hasil, dalam hal ini, aktivitas juga akan mengembalikan hasil
+aktivitas untuk menerima hasil, dalam hal ini, aktivitas juga akan mengembalikan hasil
dalam {@link android.content.Intent} (misalnya Anda bisa mengeluarkan intent agar
-pengguna bisa memilih kontak pribadi dan memintanya dikembalikan kepada Anda&mdash;intent yang dikembalikan menyertakan URI yang
+pengguna bisa memilih kontak pribadi dan memintanya dikembalikan kepada Anda&mdash;intent yang dikembalikan menyertakan URI yang
menunjuk ke kontak yang dipilih).</p>
<p>Untuk penerima siaran, intent hanya mendefinisikan
@@ -213,18 +213,18 @@ hanya menyertakan string tindakan yang menunjukkan "baterai hampir habis").</p>
<p>Tipe komponen lainnya dan penyedia konten, tidak diaktifkan oleh intent. Melainkan
diaktifkan saat ditargetkan oleh permintaan dari {@link android.content.ContentResolver}. Resolver
-konten menangani semua transaksi langsung dengan penyedia konten sehingga komponen yang melakukan
+konten menangani semua transaksi langsung dengan penyedia konten sehingga komponen yang melakukan
transaksi dengan penyedia tidak perlu dan sebagai gantinya memanggil metode pada objek {@link
android.content.ContentResolver}. Ini membuat lapisan abstraksi antara penyedia
konten dan komponen yang meminta informasi (demi keamanan).</p>
<p>Ada beberapa metode terpisah untuk mengaktifkan masing-masing tipe komponen:</p>
<ul>
- <li>Anda bisa memulai aktivitas (atau memberinya pekerjaan baru) dengan
+ <li>Anda bisa memulai aktivitas (atau memberinya pekerjaan baru) dengan
meneruskan {@link android.content.Intent} ke {@link android.content.Context#startActivity
startActivity()} atau {@link android.app.Activity#startActivityForResult startActivityForResult()}
(bila Anda ingin aktivitas mengembalikan hasil).</li>
- <li>Anda bisa memulai layanan (atau memberikan instruksi baru ke layanan yang sedang berlangsung) dengan
+ <li>Anda bisa memulai layanan (atau memberikan instruksi baru ke layanan yang sedang berlangsung) dengan
meneruskan {@link android.content.Intent} ke {@link android.content.Context#startService
startService()}. Atau Anda bisa mengikat ke layanan dengan meneruskan {@link android.content.Intent} ke
{@link android.content.Context#bindService bindService()}.</li>
@@ -237,7 +237,7 @@ android.content.ContentProvider#query query()} pada {@link android.content.Conte
</ul>
<p>Untuk informasi selengkapnya tentang menggunakan intent, lihat dokumen <a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter
- Intent</a>. Informasi selengkapnya tentang mengaktifkan komponen
+ Intent</a>. Informasi selengkapnya tentang mengaktifkan komponen
tertentu juga tersedia dalam dokumen berikut: <a href="{@docRoot}guide/components/activities.html">Aktivitas</a>, <a href="{@docRoot}guide/components/services.html">Layanan</a>, {@link
android.content.BroadcastReceiver} dan <a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia Konten</a>.</p>
@@ -245,7 +245,7 @@ android.content.BroadcastReceiver} dan <a href="{@docRoot}guide/topics/providers
<h2 id="Manifest">File Manifes</h2>
<p>Sebelum sistem Android bisa memulai komponen aplikasi, sistem harus mengetahui
-keberadaan komponen dengan membaca file {@code AndroidManifest.xml} aplikasi (file
+keberadaan komponen dengan membaca file {@code AndroidManifest.xml} aplikasi (file
"manifes"). Aplikasi Anda harus mendeklarasikan semua komponennya dalam file ini, yang harus menjadi akar
dari direktori proyek aplikasi.</p>
@@ -258,8 +258,8 @@ akses-baca ke kontak pengguna.</li>
minimum yang diperlukan aplikasi, berdasarkan API yang digunakan aplikasi.</li>
<li>Mendeklarasikan fitur perangkat keras dan perangkat lunak yang diperlukan aplikasi, seperti kamera,
layanan Bluetooth, atau layar multisentuh.</li>
- <li>Pustaka API aplikasi perlu ditautkan (selain
-API kerangka kerja Android), seperti pustaka
+ <li>Pustaka API aplikasi perlu ditautkan (selain
+API kerangka kerja Android), seperti pustaka
<a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps.</a></li>
<li>Dan lainnya</li>
</ul>
@@ -287,7 +287,7 @@ href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&
aplikasi.</p>
<p>Dalam elemen <code><a
-href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
atribut {@code android:name} menetapkan nama kelas yang sepenuhnya memenuhi syarat subkelas {@link
android.app.Activity} dan atribut {@code android:label} menetapkan string yang akan
digunakan sebagai label yang terlihat oleh pengguna untuk aktivitas tersebut.</p>
@@ -310,12 +310,12 @@ penyedia konten</li>
<p>Aktivitas, layanan, dan penyedia konten yang Anda sertakan dalam kode sumber, namun tidak
dideklarasikan dalam manifes, tidak akan terlihat pada sistem dan, akibatnya, tidak pernah bisa berjalan. Akan tetapi,
-penerima siaran
-bisa dideklarasikan dalam manifes atau dibuat secara dinamis dalam kode (sebagai objek
+penerima siaran
+bisa dideklarasikan dalam manifes atau dibuat secara dinamis dalam kode (sebagai objek
{@link android.content.BroadcastReceiver}) dan didaftarkan pada sistem dengan memanggil
{@link android.content.Context#registerReceiver registerReceiver()}.</p>
-<p>Untuk informasi selengkapnya tentang cara menstrukturkan file manifes untuk aplikasi Anda,
+<p>Untuk informasi selengkapnya tentang cara menstrukturkan file manifes untuk aplikasi Anda,
lihat dokumentasi <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">File AndroidManifest.xml</a>. </p>
@@ -379,7 +379,7 @@ membacanya, namun layanan eksternal seperti Google Play akan membacanya untuk me
penyaringan bagi pengguna saat mereka mencari aplikasi dari perangkat.</p>
<p>Misalnya, jika aplikasi memerlukan kamera dan menggunakan API yang disediakan dalam Android 2.1 (<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Level</a> 7)
-, Anda harus mendeklarasikannya sebagai kebutuhan dalam file manifes seperti ini:</p>
+, Anda harus mendeklarasikannya sebagai kebutuhan dalam file manifes seperti ini:</p>
<pre>
&lt;manifest ... >
@@ -390,10 +390,10 @@ penyaringan bagi pengguna saat mereka mencari aplikasi dari perangkat.</p>
&lt;/manifest>
</pre>
-<p>Sekarang, perangkat yang <em>tidak</em> memiliki kamera dan menggunakan
+<p>Sekarang, perangkat yang <em>tidak</em> memiliki kamera dan menggunakan
Android versi <em>lebih rendah</em> dari 2.1 tidak bisa menginstal aplikasi Anda dari Google Play.</p>
-<p>Akan tetapi, bisa juga mendeklarasikan bahwa aplikasi Anda menggunakan kamera, namun tidak
+<p>Akan tetapi, bisa juga mendeklarasikan bahwa aplikasi Anda menggunakan kamera, namun tidak
<em>mengharuskannya</em>. Dalam hal itu, aplikasi Anda harus mengatur atribut <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a>
ke {@code "false"} dan memeriksa saat runtime apakah
perangkat memiliki kamera dan menonaktifkan setiap fitur kamera yang sesuai.</p>
@@ -455,11 +455,11 @@ membuat sumber daya alternatif untuk konfigurasi perangkat berbeda, bacalah <a h
mengaktifkan komponen aplikasi, seperti aktivitas dan layanan, dan cara menyediakan komponen aplikasi
untuk digunakan oleh aplikasi lain.</dd>
<dt><a href="{@docRoot}guide/components/activities.html">Aktivitas</a></dt>
- <dd>Informasi tentang cara membuat instance kelas {@link android.app.Activity},
+ <dd>Informasi tentang cara membuat instance kelas {@link android.app.Activity},
yang menyediakan layar tersendiri dalam aplikasi bersama antarmuka pengguna.</dd>
<dt><a href="{@docRoot}guide/topics/resources/providing-resources.html">Menyediakan Sumber Daya</a></dt>
<dd>Informasi tentang cara aplikasi Android disusun untuk memisahkan sumber daya aplikasi dari
-kode aplikasi, termasuk cara Anda bisa menyediakan sumber daya alternatif untuk
+kode aplikasi, termasuk cara Anda bisa menyediakan sumber daya alternatif untuk
konfigurasi perangkat tertentu.
</dd>
</dl>
@@ -468,11 +468,11 @@ konfigurasi perangkat tertentu.
<h2 class="norule">Anda juga mungkin tertarik dengan:</h2>
<dl>
<dt><a href="{@docRoot}guide/practices/compatibility.html">Kompatibilitas Perangkat</a></dt>
- <dd>Informasi tentang cara kerja Android pada berbagai tipe perangkat dan
+ <dd>Informasi tentang cara kerja Android pada berbagai tipe perangkat dan
pengenalan mengenai cara mengoptimalkan aplikasi untuk setiap perangkat atau membatasi ketersediaan aplikasi Anda untuk
perangkat berbeda.</dd>
<dt><a href="{@docRoot}guide/topics/security/permissions.html">Izin Sistem</a></dt>
- <dd>Informasi tentang cara Android membatasi akses aplikasi pada API tertentu dengan sistem izin
+ <dd>Informasi tentang cara Android membatasi akses aplikasi pada API tertentu dengan sistem izin
yang mengharuskan persetujuan pengguna agar aplikasi dapat menggunakan API tersebut.</dd>
</dl>
</div>
diff --git a/docs/html-intl/intl/in/guide/components/index.jd b/docs/html-intl/intl/in/guide/components/index.jd
index a8dd5f8820fc..de40b22d875e 100644
--- a/docs/html-intl/intl/in/guide/components/index.jd
+++ b/docs/html-intl/intl/in/guide/components/index.jd
@@ -1,7 +1,7 @@
page.title=Komponen Aplikasi
page.landing=true
-page.landing.intro=Kerangka kerja aplikasi Android memungkinkan Anda membuat aplikasi yang kaya dan inovatif menggunakan seperangkat komponen yang dapat digunakan kembali. Bagian ini menjelaskan cara membangun komponen yang mendefinisikan blok pembangun aplikasi Anda dan cara menghubungkannya bersama menggunakan intent.
-page.metaDescription=Kerangka kerja aplikasi Android memungkinkan Anda membuat aplikasi yang kaya dan inovatif menggunakan seperangkat komponen yang dapat digunakan kembali. Bagian ini menjelaskan cara membangun komponen yang mendefinisikan blok pembangun aplikasi Anda dan cara menghubungkannya bersama menggunakan intent.
+page.landing.intro=Kerangka kerja aplikasi Android memungkinkan Anda membuat aplikasi yang kaya dan inovatif menggunakan seperangkat komponen yang dapat digunakan kembali. Bagian ini menjelaskan cara membangun komponen yang mendefinisikan blok pembangun aplikasi Anda dan cara menghubungkannya bersama menggunakan intent.
+page.metaDescription=Kerangka kerja aplikasi Android memungkinkan Anda membuat aplikasi yang kaya dan inovatif menggunakan seperangkat komponen yang dapat digunakan kembali. Bagian ini menjelaskan cara membangun komponen yang mendefinisikan blok pembangun aplikasi Anda dan cara menghubungkannya bersama menggunakan intent.
page.landing.image=images/develop/app_components.png
page.image=images/develop/app_components.png
@@ -11,7 +11,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>Artikel Blog</h3>
-
+
<a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
<h4>Menggunakan DialogFragments</h4>
<p>Dalam posting ini, saya akan menunjukkan cara menggunakan DialogFragments dengan pustaka dukungan v4 (untuk kompatibilitas mundur pada perangkat sebelum Honeycomb) untuk menunjukkan dialog edit sederhana dan mengembalikan hasil ke Aktivitas pemanggil menggunakan antarmuka.</p>
@@ -21,7 +21,7 @@ page.image=images/develop/app_components.png
<h4>Fragmen Untuk Semua</h4>
<p>Hari ini kami telah merilis pustaka statis yang memperlihatkan API Fragment yang sama (serta LoaderManager baru dan beberapa kelas lain) agar aplikasi yang kompatibel dengan Android 1.6 atau yang lebih baru bisa menggunakan fragmen untuk membuat antarmuka pengguna yang kompatibel dengan tablet. </p>
</a>
-
+
<a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
<h4>Multithreading untuk Kinerja</h4>
<p>Praktik yang baik dalam membuat aplikasi yang responsif adalah memastikan thread UI utama Anda
@@ -32,7 +32,7 @@ ditangani di thread berbeda.</p>
<div class="col-6">
<h3>Pelatihan</h3>
-
+
<a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
<h4>Mengelola Daur Hidup Aktivitas</h4>
<p>Bagian ini menjelaskan pentingnya metode callback daur hidup yang diterima setiap instance Aktivitas
diff --git a/docs/html-intl/intl/in/guide/components/loaders.jd b/docs/html-intl/intl/in/guide/components/loaders.jd
index cd0379bf1cd9..88093cc258a4 100644
--- a/docs/html-intl/intl/in/guide/components/loaders.jd
+++ b/docs/html-intl/intl/in/guide/components/loaders.jd
@@ -21,14 +21,14 @@ parent.link=activities.html
</ol>
</li>
</ol>
-
+
<h2>Kelas-kelas utama</h2>
<ol>
<li>{@link android.app.LoaderManager}</li>
<li>{@link android.content.Loader}</li>
- </ol>
-
+ </ol>
+
<h2>Contoh-contoh terkait</h2>
<ol>
<li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -51,7 +51,7 @@ konten berubah.</li>
dibuat kembali setelah perubahan konfigurasi. Karena itu, loader tidak perlu melakukan query ulang
datanya.</li>
</ul>
-
+
<h2 id="summary">Rangkuman Loader API</h2>
<p>Ada beberapa kelas dan antarmuka yang mungkin dilibatkan dalam menggunakan
@@ -64,11 +64,11 @@ loader pada aplikasi. Semuanya dirangkum dalam tabel ini:</p>
</tr>
<tr>
<td>{@link android.app.LoaderManager}</td>
- <td>Kelas abstrak yang dikaitkan dengan {@link android.app.Activity} atau
+ <td>Kelas abstrak yang dikaitkan dengan {@link android.app.Activity} atau
{@link android.app.Fragment} untuk mengelola satu atau beberapa instance {@link
android.content.Loader}. Ini membantu aplikasi mengelola
operasi berjalan lebih lama bersamaan dengan daur hidup {@link android.app.Activity}
-atau {@link android.app.Fragment}; penggunaan paling umumnya adalah dengan
+atau {@link android.app.Fragment}; penggunaan paling umumnya adalah dengan
{@link android.content.CursorLoader}, akan tetapi aplikasi bebas menulis loader-nya
sendiri untuk memuat tipe data lainnya.
<br />
@@ -97,7 +97,7 @@ baru bila konten berubah. </td>
</tr>
<tr>
<td>{@link android.content.CursorLoader}</td>
- <td>Subkelas {@link android.content.AsyncTaskLoader} yang meng-query
+ <td>Subkelas {@link android.content.AsyncTaskLoader} yang meng-query
{@link android.content.ContentResolver} dan mengembalikan {@link
android.database.Cursor}. Kelas ini mengimplementasikan protokol {@link
android.content.Loader} dengan cara standar untuk query kursor,
@@ -124,15 +124,15 @@ yang menggunakan loader biasanya berisi yang berikut ini:</p>
<li>{@link android.app.Activity} atau {@link android.app.Fragment}.</li>
<li>Instance {@link android.app.LoaderManager}.</li>
<li>{@link android.content.CursorLoader} akan memuat data yang didukung oleh {@link
-android.content.ContentProvider}. Atau, Anda dapat mengimplementasikan subkelas sendiri
+android.content.ContentProvider}. Atau, Anda dapat mengimplementasikan subkelas sendiri
dari {@link android.content.Loader} atau {@link android.content.AsyncTaskLoader} untuk
memuat data dari beberapa sumber lain.</li>
<li>Implementasi untuk {@link android.app.LoaderManager.LoaderCallbacks}.
Di sinilah Anda membuat loader baru dan mengelola acuan bagi loader
-yang ada.</li>
+yang ada.</li>
<li>Cara menampilkan data loader, seperti {@link
android.widget.SimpleCursorAdapter}.</li>
- <li>Sumber data, seperti {@link android.content.ContentProvider}, saat menggunakan
+ <li>Sumber data, seperti {@link android.content.ContentProvider}, saat menggunakan
{@link android.content.CursorLoader}.</li>
</ul>
<h3 id="starting">Memulai Loader</h3>
@@ -140,11 +140,11 @@ android.widget.SimpleCursorAdapter}.</li>
<p>{@link android.app.LoaderManager} mengelola satu atau beberapa instance {@link
android.content.Loader} dalam {@link android.app.Activity} atau
{@link android.app.Fragment}. Hanya ada satu {@link
-android.app.LoaderManager} per aktivitas atau fragmen.</p>
+android.app.LoaderManager} per aktivitas atau fragmen.</p>
<p>Anda biasanya
memulai {@link android.content.Loader} dalam metode {@link
-android.app.Activity#onCreate onCreate()} aktivitas, atau dalam metode
+android.app.Activity#onCreate onCreate()} aktivitas, atau dalam metode
{@link android.app.Fragment#onActivityCreated onActivityCreated()} fragmen. Anda
melakukannya dengan cara berikut ini:</p>
@@ -157,13 +157,13 @@ parameter berikut:</p>
<ul>
<li>ID unik yang mengidentifikasi loader. Dalam contoh ini, ID-nya adalah 0.</li>
<li>Argumen opsional untuk dipasok ke loader
-pada saat pembuatan (dalam contoh ini <code>null</code>).</li>
+pada saat pembuatan (dalam contoh ini <code>null</code>).</li>
<li>Implementasi {@link android.app.LoaderManager.LoaderCallbacks}, yang
akan dipanggil {@link android.app.LoaderManager} untuk melaporkan kejadian loader. Dalam contoh
ini, kelas lokal mengimplementasikan antarmuka {@link
android.app.LoaderManager.LoaderCallbacks}, sehingga meneruskan acuan
-ke dirinya sendiri, {@code this}.</li>
+ke dirinya sendiri, {@code this}.</li>
</ul>
<p>Panggilan {@link android.app.LoaderManager#initLoader initLoader()} memastikan bahwa loader
telah dimulai dan aktif. Ia memiliki dua kemungkinan hasil:</p>
@@ -193,7 +193,7 @@ masa hidup loader secara otomatis. {@link android.app.LoaderManager}
memulai dan menghentikan pemuatan jika perlu, dan menjaga status loader
dan konten terkaitnya. Seperti yang tersirat di sini, Anda akan jarang berinteraksi dengan loader
secara langsung (meskipun misalnya menggunakan metode loader untuk menyempurnakan perilaku
-loader, lihat contoh <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>).
+loader, lihat contoh <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>).
Anda paling sering akan menggunakan metode {@link
android.app.LoaderManager.LoaderCallbacks} untuk mengintervensi proses
pemuatan saat terjadi kejadian tertentu. Untuk diskusi selengkapnya mengenai topik ini, lihat <a href="#callback">Menggunakan Callback LoaderManager</a>.</p>
@@ -245,7 +245,7 @@ Membuat instance dan mengembalikan {@link android.content.Loader} baru untuk ID
— Dipanggil bila loader yang dibuat sebelumnya selesai dimuat.
</li></ul>
<ul>
- <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
+ <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
— Dipanggil bila loader yang dibuat sebelumnya sedang di-reset, sehingga datanya
tidak tersedia.
</li>
@@ -322,7 +322,7 @@ data tersebut karena loader memilikinya dan akan menanganinya.</p>
<p>Loader akan melepas data setelah mengetahui bahwa aplikasi tidak
lagi menggunakannya. Misalnya, jika data adalah kursor dari {@link
android.content.CursorLoader}, Anda tidak boleh memanggil {@link
-android.database.Cursor#close close()} sendiri. Jika kursor ditempatkan
+android.database.Cursor#close close()} sendiri. Jika kursor ditempatkan
dalam {@link android.widget.CursorAdapter}, Anda harus menggunakan metode {@link
android.widget.SimpleCursorAdapter#swapCursor swapCursor()} agar
{@link android.database.Cursor} lama tidak ditutup. Misalnya:</p>
@@ -343,7 +343,7 @@ public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
<p>Metode ini dipanggil bila loader yang dibuat sebelumnya sedang di-reset, sehingga datanya
tidak tersedia. Callback ini memungkinkan Anda mengetahui
kapan data akan dilepas sehingga dapat menghapus acuannya ke callback.  </p>
-<p>Implementasi ini memanggil
+<p>Implementasi ini memanggil
{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
dengan nilai <code>null</code>:</p>
@@ -366,7 +366,7 @@ public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
android.app.Fragment} yang menampilkan {@link android.widget.ListView} berisi
hasil query terhadap penyedia konten kontak. Ia menggunakan {@link
android.content.CursorLoader} untuk mengelola query pada penyedia.</p>
-
+
<p>Agar aplikasi dapat mengakses kontak pengguna, seperti yang ditampilkan dalam contoh ini,
manifesnya harus menyertakan izin
{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}.</p>
diff --git a/docs/html-intl/intl/in/guide/components/processes-and-threads.jd b/docs/html-intl/intl/in/guide/components/processes-and-threads.jd
index 44051bf492e0..cdab715bbca8 100644
--- a/docs/html-intl/intl/in/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/in/guide/components/processes-and-threads.jd
@@ -25,13 +25,13 @@ page.tags=daur hidup,latar belakang
</div>
</div>
-<p>Bila komponen aplikasi dimulai dan tidak ada komponen aplikasi lain yang
-berjalan, sistem Android akan memulai proses Linux baru untuk aplikasi dengan satu thread
-eksekusi. Secara default, semua komponen aplikasi yang sama berjalan dalam proses dan
-thread yang sama (disebut thread "utama"). Jika komponen aplikasi dimulai dan sudah ada
-proses untuk aplikasi itu (karena komponen lain dari aplikasi itu sudah ada), maka komponen
-akan dimulai dalam proses itu dan menggunakan thread eksekusi yang sama. Akan tetapi, Anda bisa
-mengatur komponen berbeda di aplikasi agar berjalan di proses terpisah, dan Anda bisa membuat thread tambahan untuk
+<p>Bila komponen aplikasi dimulai dan tidak ada komponen aplikasi lain yang
+berjalan, sistem Android akan memulai proses Linux baru untuk aplikasi dengan satu thread
+eksekusi. Secara default, semua komponen aplikasi yang sama berjalan dalam proses dan
+thread yang sama (disebut thread "utama"). Jika komponen aplikasi dimulai dan sudah ada
+proses untuk aplikasi itu (karena komponen lain dari aplikasi itu sudah ada), maka komponen
+akan dimulai dalam proses itu dan menggunakan thread eksekusi yang sama. Akan tetapi, Anda bisa
+mengatur komponen berbeda di aplikasi agar berjalan di proses terpisah, dan Anda bisa membuat thread tambahan untuk
setiap proses.</p>
<p>Dokumen ini membahas cara kerja proses dan thread di aplikasi Android.</p>
@@ -39,7 +39,7 @@ setiap proses.</p>
<h2 id="Processes">Proses</h2>
-<p>Secara default, semua komponen aplikasi yang sama berjalan dalam proses yang sama dan kebanyakan
+<p>Secara default, semua komponen aplikasi yang sama berjalan dalam proses yang sama dan kebanyakan
aplikasi tidak boleh mengubah ini. Akan tetapi, jika Anda merasa perlu mengontrol proses milik
komponen tertentu, Anda dapat melakukannya dalam file manifes.</p>
@@ -47,54 +47,54 @@ komponen tertentu, Anda dapat melakukannya dalam file manifes.</p>
&lt;activity&gt;}</a>, <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code
&lt;service&gt;}</a>, <a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code
&lt;receiver&gt;}</a>, dan <a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
-&lt;provider&gt;}</a>&mdash;mendukung atribut {@code android:process} yang bisa menetapkan
-dalam proses mana komponen harus dijalankan. Anda bisa mengatur atribut ini agar setiap komponen
+&lt;provider&gt;}</a>&mdash;mendukung atribut {@code android:process} yang bisa menetapkan
+dalam proses mana komponen harus dijalankan. Anda bisa mengatur atribut ini agar setiap komponen
berjalan dalam prosesnya sendiri atau agar beberapa komponen menggunakan proses yang sama sementara yang lainnya tidak. Anda juga bisa mengatur
{@code android:process} agar komponen aplikasi yang berbeda berjalan dalam proses yang sama
-&mdash;sepanjang aplikasi menggunakan ID Linux yang sama dan ditandatangani
+&mdash;sepanjang aplikasi menggunakan ID Linux yang sama dan ditandatangani
dengan sertifikat yang sama.</p>
<p>Elemen <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
-&lt;application&gt;}</a> juga mendukung atribut {@code android:process}, untuk mengatur
+&lt;application&gt;}</a> juga mendukung atribut {@code android:process}, untuk mengatur
nilai default yang berlaku bagi semua komponen.</p>
-<p>Android bisa memutuskan untuk mematikan proses pada waktu tertentu, bila memori tinggal sedikit dan diperlukan oleh
+<p>Android bisa memutuskan untuk mematikan proses pada waktu tertentu, bila memori tinggal sedikit dan diperlukan oleh
proses lain yang lebih mendesak untuk melayani pengguna. Komponen
-aplikasi yang berjalan dalam proses yang dimatikan maka sebagai konsekuensinya juga akan dimusnahkan. Proses dimulai
+aplikasi yang berjalan dalam proses yang dimatikan maka sebagai konsekuensinya juga akan dimusnahkan. Proses dimulai
kembali untuk komponen itu bila ada lagi pekerjaan untuk mereka lakukan.</p>
<p>Saat memutuskan proses yang akan dimatikan, sistem Android akan mempertimbangkan kepentingan relatifnya bagi
pengguna. Misalnya, sistem lebih mudah menghentikan proses yang menjadi host aktivitas yang tidak
- lagi terlihat di layar, dibandingkan dengan proses yang menjadi host aktivitas yang terlihat. Karena itu, keputusan
+ lagi terlihat di layar, dibandingkan dengan proses yang menjadi host aktivitas yang terlihat. Karena itu, keputusan
untuk menghentikan proses bergantung pada keadaan komponen yang berjalan dalam proses tersebut. Aturan
yang digunakan untuk menentukan proses yang akan dihentikan dibahas di bawah ini. </p>
<h3 id="Lifecycle">Daur hidup proses</h3>
-<p>Sistem Android mencoba mempertahankan proses aplikasi selama mungkin, namun
+<p>Sistem Android mencoba mempertahankan proses aplikasi selama mungkin, namun
pada akhirnya perlu menghapus proses lama untuk mengambil kembali memori bagi proses baru atau yang lebih penting. Untuk
menentukan proses yang akan
-dipertahankan dan yang harus dimatikan, sistem menempatkan setiap proses ke dalam "hierarki prioritas" berdasarkan
-komponen yang berjalan dalam proses dan status komponen tersebut. Proses yang memiliki
+dipertahankan dan yang harus dimatikan, sistem menempatkan setiap proses ke dalam "hierarki prioritas" berdasarkan
+komponen yang berjalan dalam proses dan status komponen tersebut. Proses yang memiliki
prioritas terendah akan dimatikan terlebih dahulu, kemudian yang terendah berikutnya, dan seterusnya, jika perlu
untuk memulihkan sumber daya sistem.</p>
-<p>Ada lima tingkatan dalam hierarki prioritas. Daftar berikut berisi beberapa
-tipe proses berdasarkan urutan prioritas (proses pertama adalah yang <em>terpenting</em> dan
+<p>Ada lima tingkatan dalam hierarki prioritas. Daftar berikut berisi beberapa
+tipe proses berdasarkan urutan prioritas (proses pertama adalah yang <em>terpenting</em> dan
<em>dimatikan terakhir</em>):</p>
<ol>
<li><b>Proses latar depan</b>
- <p>Proses yang diperlukan untuk aktivitas yang sedang dilakukan pengguna. Proses
+ <p>Proses yang diperlukan untuk aktivitas yang sedang dilakukan pengguna. Proses
dianggap berada di latar depan jika salah satu kondisi berikut terpenuhi:</p>
<ul>
<li>Proses menjadi host {@link android.app.Activity} yang berinteraksi dengan pengguna dengan metode ({@link
-android.app.Activity}{@link android.app.Activity#onResume onResume()} telah
+android.app.Activity}{@link android.app.Activity#onResume onResume()} telah
dipanggil).</li>
- <li>Proses menjadi host {@link android.app.Service} yang terikat dengan aktivitas yang sedang berinteraksi dengan
+ <li>Proses menjadi host {@link android.app.Service} yang terikat dengan aktivitas yang sedang berinteraksi dengan
pengguna.</li>
<li>Proses menjadi host {@link android.app.Service} yang berjalan "di latar depan"&mdash;
@@ -108,23 +108,23 @@ onStart()}, atau {@link android.app.Service#onDestroy onDestroy()}).</li>
android.content.BroadcastReceiver#onReceive onReceive()}-nya.</li>
</ul>
- <p>Secara umum, hanya ada beberapa proses latar depan pada waktu yang diberikan. Proses dimatikan hanya sebagai
-upaya terakhir&mdash; jika memori hampir habis sehingga semuanya tidak bisa terus berjalan. Pada umumnya, pada
-titik itu, perangkat dalam keadaan memory paging, sehingga menghentikan beberapa proses latar depan
+ <p>Secara umum, hanya ada beberapa proses latar depan pada waktu yang diberikan. Proses dimatikan hanya sebagai
+upaya terakhir&mdash; jika memori hampir habis sehingga semuanya tidak bisa terus berjalan. Pada umumnya, pada
+titik itu, perangkat dalam keadaan memory paging, sehingga menghentikan beberapa proses latar depan
diperlukan agar antarmuka pengguna tetap responsif.</p></li>
<li><b>Proses yang terlihat</b>
- <p>Proses yang tidak memiliki komponen latar depan, namun masih bisa
-memengaruhi apa yang dilihat pengguna di layar. Proses dianggap terlihat jika salah satu kondisi
+ <p>Proses yang tidak memiliki komponen latar depan, namun masih bisa
+memengaruhi apa yang dilihat pengguna di layar. Proses dianggap terlihat jika salah satu kondisi
berikut terpenuhi:</p>
<ul>
<li>Proses ini menjadi host {@link android.app.Activity} yang tidak berada di latar depan, namun masih
-terlihat oleh penggunanya (metode {@link android.app.Activity#onPause onPause()} telah dipanggil).
-Ini bisa terjadi, misalnya, jika aktivitas latar depan memulai dialog, sehingga
+terlihat oleh penggunanya (metode {@link android.app.Activity#onPause onPause()} telah dipanggil).
+Ini bisa terjadi, misalnya, jika aktivitas latar depan memulai dialog, sehingga
aktivitas sebelumnya terlihat berada di belakangnya.</li>
- <li>Proses menjadi host {@link android.app.Service} yang terikat dengan aktivitas yang terlihat (atau latar
+ <li>Proses menjadi host {@link android.app.Service} yang terikat dengan aktivitas yang terlihat (atau latar
depan)</li>
</ul>
@@ -134,53 +134,53 @@ diperlukan agar semua proses latar depan tetap berjalan. </p>
<li><b>Proses layanan</b>
<p>Proses yang menjalankan layanan yang telah dimulai dengan metode {@link
-android.content.Context#startService startService()} dan tidak termasuk dalam salah satu dari dua kategori
-yang lebih tinggi. Walaupun proses pelayanan tidak langsung terkait dengan semua yang dilihat oleh pengguna, proses ini
-umumnya melakukan hal-hal yang dipedulikan pengguna (seperti memutar musik di latar belakang
-atau mengunduh data di jaringan), jadi sistem membuat proses tetap berjalan kecuali memori tidak cukup untuk
+android.content.Context#startService startService()} dan tidak termasuk dalam salah satu dari dua kategori
+yang lebih tinggi. Walaupun proses pelayanan tidak langsung terkait dengan semua yang dilihat oleh pengguna, proses ini
+umumnya melakukan hal-hal yang dipedulikan pengguna (seperti memutar musik di latar belakang
+atau mengunduh data di jaringan), jadi sistem membuat proses tetap berjalan kecuali memori tidak cukup untuk
mempertahankannya bersama semua proses latar depan dan proses yang terlihat. </p>
</li>
<li><b>Proses latar belakang</b>
- <p>Proses yang menampung aktivitas yang saat ini tidak terlihat oleh pengguna (metode
-{@link android.app.Activity#onStop onStop()} aktivitas telah dipanggil). Proses ini tidak memiliki dampak
-langsung pada pengalaman pengguna, dan sistem bisa menghentikannya kapan saja untuk memperoleh kembali memori bagi
-proses latar depan, proses yang terlihat,
-atau proses layanan. Biasanya ada banyak proses latar belakang yang berjalan, sehingga disimpan
-dalam daftar LRU (least recently used atau paling sedikit digunakan) untuk memastikan bahwa proses dengan aktivitas yang paling baru
+ <p>Proses yang menampung aktivitas yang saat ini tidak terlihat oleh pengguna (metode
+{@link android.app.Activity#onStop onStop()} aktivitas telah dipanggil). Proses ini tidak memiliki dampak
+langsung pada pengalaman pengguna, dan sistem bisa menghentikannya kapan saja untuk memperoleh kembali memori bagi
+proses latar depan, proses yang terlihat,
+atau proses layanan. Biasanya ada banyak proses latar belakang yang berjalan, sehingga disimpan
+dalam daftar LRU (least recently used atau paling sedikit digunakan) untuk memastikan bahwa proses dengan aktivitas yang paling baru
terlihat oleh pengguna sebagai yang terakhir untuk dimatikan. Jika aktivitas mengimplementasikan metode
- daur hidupnya dengan benar, dan menyimpan statusnya saat ini, menghentikan prosesnya tidak akan memiliki efek
-yang terlihat pada pengalaman pengguna, karena ketika pengguna kembali ke aktivitas, aktivitas itu memulihkan
+ daur hidupnya dengan benar, dan menyimpan statusnya saat ini, menghentikan prosesnya tidak akan memiliki efek
+yang terlihat pada pengalaman pengguna, karena ketika pengguna kembali ke aktivitas, aktivitas itu memulihkan
semua statusnya yang terlihat. Lihat dokumen <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Aktivitas</a>
untuk mendapatkan informasi tentang menyimpan dan memulihkan status.</p>
</li>
<li><b>Proses kosong</b>
- <p>Sebuah proses yang tidak berisi komponen aplikasi aktif apa pun. Alasan satu-satunya mempertahankan proses
+ <p>Sebuah proses yang tidak berisi komponen aplikasi aktif apa pun. Alasan satu-satunya mempertahankan proses
seperti ini tetap hidup adalah untuk keperluan caching, meningkatkan waktu mulai (startup) bila
-nanti komponen perlu dijalankan di dalamnya. Sistem sering menghentikan proses ini untuk menyeimbangkan sumber
+nanti komponen perlu dijalankan di dalamnya. Sistem sering menghentikan proses ini untuk menyeimbangkan sumber
daya sistem secara keseluruhan antara proses cache dan cache kernel yang mendasarinya.</p>
</li>
</ol>
<p>Android sebisa mungkin memeringkat proses setinggi
-mungkin, berdasarkan prioritas komponen yang sedang aktif dalam proses. Misalnya, jika suatu proses menjadi host sebuah layanan dan
+mungkin, berdasarkan prioritas komponen yang sedang aktif dalam proses. Misalnya, jika suatu proses menjadi host sebuah layanan dan
aktivitas yang terlihat, proses akan diperingkat sebagai proses yang terlihat, bukan sebagai proses layanan.</p>
<p>Selain itu, peringkat proses dapat meningkat karena adanya proses lain yang bergantung padanya
-&mdash;proses yang melayani proses lain tidak bisa diperingkat lebih rendah daripada proses yang
-sedang dilayaninya. Misalnya, jika penyedia konten dalam proses A melayani klien dalam proses B, atau
-jika layanan dalam proses A terikat dengan komponen dalam proses B, proses A selalu dipertimbangkan sebagai paling rendah
+&mdash;proses yang melayani proses lain tidak bisa diperingkat lebih rendah daripada proses yang
+sedang dilayaninya. Misalnya, jika penyedia konten dalam proses A melayani klien dalam proses B, atau
+jika layanan dalam proses A terikat dengan komponen dalam proses B, proses A selalu dipertimbangkan sebagai paling rendah
prioritasnya dibandingkan dengan proses B.</p>
- <p>Karena proses yang menjalankan layanan diperingkat lebih tinggi daripada aktivitas latar belakang,
-aktivitas yang memulai operasi yang berjalan lama mungkin lebih baik memulai <a href="{@docRoot}guide/components/services.html">layanan</a> untuk operasi itu, daripada hanya
+ <p>Karena proses yang menjalankan layanan diperingkat lebih tinggi daripada aktivitas latar belakang,
+aktivitas yang memulai operasi yang berjalan lama mungkin lebih baik memulai <a href="{@docRoot}guide/components/services.html">layanan</a> untuk operasi itu, daripada hanya
membuat thread pekerja&mdash;khususnya jika operasi mungkin akan berlangsung lebih lama daripada aktivitas.
- Misalnya, aktivitas yang mengunggah gambar ke situs web harus memulai layanan
+ Misalnya, aktivitas yang mengunggah gambar ke situs web harus memulai layanan
untuk mengunggah sehingga unggahan bisa terus berjalan di latar belakang meskipun pengguna meninggalkan aktivitas tersebut.
-Menggunakan layanan akan memastikan operasi paling tidak memiliki prioritas "proses layanan",
-apa pun yang terjadi pada aktivitas. Ini menjadi alasan yang sama yang membuat penerima siaran harus
+Menggunakan layanan akan memastikan operasi paling tidak memiliki prioritas "proses layanan",
+apa pun yang terjadi pada aktivitas. Ini menjadi alasan yang sama yang membuat penerima siaran harus
menjalankan layanan daripada hanya menempatkan operasi yang menghabiskan waktu di thread.</p>
@@ -188,35 +188,35 @@ menjalankan layanan daripada hanya menempatkan operasi yang menghabiskan waktu d
<h2 id="Threads">Thread</h2>
-<p>Bila aplikasi diluncurkan, sistem akan membuat thread eksekusi untuk aplikasi tersebut, yang diberi nama,
+<p>Bila aplikasi diluncurkan, sistem akan membuat thread eksekusi untuk aplikasi tersebut, yang diberi nama,
"main". Thread ini sangat penting karena bertugas mengirim kejadian ke widget
antarmuka pengguna yang sesuai, termasuk kejadian menggambar. Ini juga merupakan thread yang
membuat aplikasi berinteraksi dengan komponen dari Android UI toolkit (komponen dari paket {@link
-android.widget} dan {@link android.view}). Karena itu, thread 'main' juga terkadang
+android.widget} dan {@link android.view}). Karena itu, thread 'main' juga terkadang
disebut thread UI.</p>
-<p>Sistem ini <em>tidak</em> membuat thread terpisah untuk setiap instance komponen. Semua
-komponen yang berjalan di proses yang sama akan dibuat instance-nya dalam thread UI, dan sistem akan memanggil
+<p>Sistem ini <em>tidak</em> membuat thread terpisah untuk setiap instance komponen. Semua
+komponen yang berjalan di proses yang sama akan dibuat instance-nya dalam thread UI, dan sistem akan memanggil
setiap komponen yang dikirim dari thread itu. Akibatnya, metode yang merespons callback sistem
(seperti {@link android.view.View#onKeyDown onKeyDown()} untuk melaporkan tindakan pengguna atau metode callback daur hidup)
selalu berjalan di thread UI proses.</p>
-<p>Misalnya saat pengguna menyentuh tombol pada layar, thread UI aplikasi akan mengirim kejadian
-sentuh ke widget, yang selanjutnya menetapkan status ditekan dan mengirim permintaan yang tidak divalidasi ke
+<p>Misalnya saat pengguna menyentuh tombol pada layar, thread UI aplikasi akan mengirim kejadian
+sentuh ke widget, yang selanjutnya menetapkan status ditekan dan mengirim permintaan yang tidak divalidasi ke
antrean kejadian. Thread UI akan menghapus antrean permintaan dan memberi tahu widget bahwa widget harus menggambar
dirinya sendiri.</p>
-<p>Saat aplikasi melakukan pekerjaan intensif sebagai respons terhadap interaksi pengguna, model
+<p>Saat aplikasi melakukan pekerjaan intensif sebagai respons terhadap interaksi pengguna, model
thread tunggal ini bisa menghasilkan kinerja yang buruk kecuali jika Anda mengimplementasikan aplikasi dengan benar. Khususnya jika
semua terjadi di thread UI, melakukan operasi yang panjang seperti akses ke jaringan atau query
database akan memblokir seluruh UI. Bila thread diblokir, tidak ada kejadian yang bisa dikirim,
-termasuk kejadian menggambar. Dari sudut pandang pengguna, aplikasi
+termasuk kejadian menggambar. Dari sudut pandang pengguna, aplikasi
tampak mogok (hang). Lebih buruk lagi, jika thread UI diblokir selama lebih dari beberapa detik
(saat ini sekitar 5 detik) pengguna akan ditampilkan dialog "<a href="http://developer.android.com/guide/practices/responsiveness.html">aplikasi tidak
-merespons</a>" (ANR) yang populer karena reputasi buruknya. Pengguna nanti bisa memutuskan untuk keluar dari aplikasi dan menghapus aplikasi
+merespons</a>" (ANR) yang populer karena reputasi buruknya. Pengguna nanti bisa memutuskan untuk keluar dari aplikasi dan menghapus aplikasi
jika mereka tidak suka.</p>
-<p>Selain itu, toolkit Android UI <em>bukan</em> thread-safe. Jadi, Anda tidak harus memanipulasi
+<p>Selain itu, toolkit Android UI <em>bukan</em> thread-safe. Jadi, Anda tidak harus memanipulasi
UI dari thread pekerja&mdash;Anda harus melakukan semua manipulasi pada antarmuka pengguna dari thread
UI. Sehingga hanya ada dua aturan untuk model thread tunggal Android:</p>
@@ -227,12 +227,12 @@ UI. Sehingga hanya ada dua aturan untuk model thread tunggal Android:</p>
<h3 id="WorkerThreads">Thread pekerja</h3>
-<p>Karena model thread tunggal yang dijelaskan di atas, Anda dilarang memblokir thread
+<p>Karena model thread tunggal yang dijelaskan di atas, Anda dilarang memblokir thread
UI demi daya respons UI aplikasi. Jika memiliki operasi untuk dijalankan
yang tidak seketika, Anda harus memastikan untuk melakukannya di thread terpisah (thread "latar belakang" atau
thread "pekerja").</p>
-<p>Misalnya, berikut ini beberapa kode untuk listener klik yang mengunduh gambar dari
+<p>Misalnya, berikut ini beberapa kode untuk listener klik yang mengunduh gambar dari
thread terpisah dan menampilkannya dalam {@link android.widget.ImageView}:</p>
<pre>
@@ -246,13 +246,13 @@ public void onClick(View v) {
}
</pre>
-<p>Awalnya hal ini tampak bekerja dengan baik, karena menciptakan thread baru untuk menangani
+<p>Awalnya hal ini tampak bekerja dengan baik, karena menciptakan thread baru untuk menangani
operasi jaringan. Akan tetapi, hal tersebut melanggar aturan kedua model thread tunggal: <em>jangan mengakses
toolkit Android UI dari luar thread UI</em>&mdash;sampel ini memodifikasi {@link
android.widget.ImageView} dari thread pekerja sebagai ganti thread UI. Ini bisa
mengakibatkan perilaku yang tidak terdefinisi dan tidak diharapkan, yang bisa menyulitkan dan menghabiskan waktu untuk melacaknya.</p>
-<p>Untuk memperbaiki masalah ini, Android menawarkan beberapa cara untuk mengakses thread UI dari
+<p>Untuk memperbaiki masalah ini, Android menawarkan beberapa cara untuk mengakses thread UI dari
thread lainnya. Berikut ini daftar metode yang bisa membantu:</p>
<ul>
@@ -284,10 +284,10 @@ public void onClick(View v) {
<p>Kini implementasi ini thread-safe: operasi jaringan dilakukan terpisah dari thread
sementara {@link android.widget.ImageView} dimanipulasi dari thread UI.</p>
-<p>Akan tetapi, karena operasi semakin kompleks, jenis kode seperti ini bisa semakin rumit
-dan sulit dipertahankan. Untuk menangani interaksi yang lebih kompleks dengan thread pekerja, Anda bisa mempertimbangkan
+<p>Akan tetapi, karena operasi semakin kompleks, jenis kode seperti ini bisa semakin rumit
+dan sulit dipertahankan. Untuk menangani interaksi yang lebih kompleks dengan thread pekerja, Anda bisa mempertimbangkan
penggunaan {@link android.os.Handler}di thread pekerja, untuk memproses pesan yang dikirim dari
- thread UI. Mungkin solusi terbaiknya adalah memperpanjang kelas {@link android.os.AsyncTask},
+ thread UI. Mungkin solusi terbaiknya adalah memperpanjang kelas {@link android.os.AsyncTask},
yang akan menyederhanakan eksekusi tugas-tugas thread pekerja yang perlu berinteraksi dengan UI.</p>
@@ -298,10 +298,10 @@ pengguna. AsyncTask memblokir operasi di thread pekerja kemudian mempublikasikan
di thread UI, tanpa mengharuskan Anda untuk menangani sendiri thread dan/atau handler sendiri.</p>
<p>Untuk menggunakannya, Anda harus menempatkan {@link android.os.AsyncTask} sebagai subkelas dan mengimplementasikan metode callback {@link
-android.os.AsyncTask#doInBackground doInBackground()} yang berjalan di kumpulan
+android.os.AsyncTask#doInBackground doInBackground()} yang berjalan di kumpulan
thread latar belakang. Untuk memperbarui UI, Anda harus mengimplementasikan {@link
android.os.AsyncTask#onPostExecute onPostExecute()}, yang memberikan hasil dari {@link
-android.os.AsyncTask#doInBackground doInBackground()} dan berjalan di thread UI, jadi Anda bisa
+android.os.AsyncTask#doInBackground doInBackground()} dan berjalan di thread UI, jadi Anda bisa
memperbarui UI dengan aman. Selanjutnya Anda bisa menjalankan tugas dengan memanggil {@link android.os.AsyncTask#execute execute()}
dari thread UI.</p>
@@ -319,7 +319,7 @@ private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
-
+
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
@@ -328,16 +328,16 @@ private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
}
</pre>
-<p>Kini UI aman dan kode jadi lebih sederhana, karena memisahkan pekerjaan ke
+<p>Kini UI aman dan kode jadi lebih sederhana, karena memisahkan pekerjaan ke
dalam bagian-bagian yang harus dilakukan pada thread pekerja dan thread UI.</p>
-<p>Anda harus membaca acuan {@link android.os.AsyncTask} untuk memahami sepenuhnya
+<p>Anda harus membaca acuan {@link android.os.AsyncTask} untuk memahami sepenuhnya
cara menggunakan kelas ini, namun berikut ini ikhtisar singkat cara kerjanya:</p>
<ul>
<li>Anda bisa menetapkan tipe parameter, nilai kemajuan, dan nilai
akhir tugas, dengan menggunakan generik</li>
-<li>Metode {@link android.os.AsyncTask#doInBackground doInBackground()} berjalan secara otomatis pada
+<li>Metode {@link android.os.AsyncTask#doInBackground doInBackground()} berjalan secara otomatis pada
thread pekerja</li>
<li>{@link android.os.AsyncTask#onPreExecute onPreExecute()}, {@link
android.os.AsyncTask#onPostExecute onPostExecute()}, dan {@link
@@ -352,23 +352,23 @@ android.os.AsyncTask#onProgressUpdate onProgressUpdate()} pada thread UI</li>
<p class="caution"><strong>Perhatian:</strong> Masalah lain yang mungkin Anda temui saat menggunakan
thread pekerja adalah restart tak terduga dalam aktivitas karena <a href="{@docRoot}guide/topics/resources/runtime-changes.html">perubahan konfigurasi runtime</a>
- (seperti saat pengguna mengubah orientasi layar), yang bisa memusnahkan thread pekerja. Untuk
-melihat cara mempertahankan tugas selama restart ini dan cara membatalkan
+ (seperti saat pengguna mengubah orientasi layar), yang bisa memusnahkan thread pekerja. Untuk
+melihat cara mempertahankan tugas selama restart ini dan cara membatalkan
tugas dengan benar saat aktivitas dimusnahkan, lihat kode sumber untuk aplikasi sampel <a href="http://code.google.com/p/shelves/">Shelves</a>.</p>
<h3 id="ThreadSafe">Metode thread-safe</h3>
-<p> Dalam beberapa situasi, metode yang Anda implementasikan bisa dipanggil dari lebih dari satu thread,
+<p> Dalam beberapa situasi, metode yang Anda implementasikan bisa dipanggil dari lebih dari satu thread,
dan karena itu harus ditulis agar menjadi thread-safe. </p>
-<p>Ini terutama terjadi untuk metode yang bisa dipanggil dari jauh &mdash;seperti metode dalam <a href="{@docRoot}guide/components/bound-services.html">layanan terikat</a>. Bila sebuah panggilan pada
-metode yang dijalankan dalam {@link android.os.IBinder} berasal dari proses yang sama di mana
+<p>Ini terutama terjadi untuk metode yang bisa dipanggil dari jauh &mdash;seperti metode dalam <a href="{@docRoot}guide/components/bound-services.html">layanan terikat</a>. Bila sebuah panggilan pada
+metode yang dijalankan dalam {@link android.os.IBinder} berasal dari proses yang sama di mana
{@link android.os.IBinder IBinder} berjalan, metode ini akan dieksekusi di thread pemanggil.
Akan tetapi, bila panggilan berasal proses lain, metode akan dieksekusi dalam thread yang dipilih dari
kumpulan (pool) thread yang dipertahankan sistem dalam proses yang sama seperti{@link android.os.IBinder
-IBinder} (tidak dieksekusi dalam thread UI proses). Misalnya, karena metode
-{@link android.app.Service#onBind onBind()} layanan akan dipanggil dari thread UI
+IBinder} (tidak dieksekusi dalam thread UI proses). Misalnya, karena metode
+{@link android.app.Service#onBind onBind()} layanan akan dipanggil dari thread UI
proses layanan, metode yang diimplementasikan dalam objek yang dikembalikan {@link android.app.Service#onBind
onBind()} (misalnya, subkelas yang mengimplementasikan metode RPC) akan dipanggil dari thread
di pool. Karena layanan bisa memiliki lebih dari satu klien, maka lebih dari satu pool thread bisa melibatkan
@@ -382,19 +382,19 @@ android.content.ContentProvider} yang merespons permintaan itu&mdash;metode {@li
android.content.ContentProvider#query query()}, {@link android.content.ContentProvider#insert
insert()}, {@link android.content.ContentProvider#delete delete()}, {@link
android.content.ContentProvider#update update()}, dan {@link android.content.ContentProvider#getType
-getType()}&mdash; dipanggil dari pool thread pada proses penyedia konten, bukan thread UI
-untuk proses tersebut. Mengingat metode ini bisa dipanggil dari thread mana pun
+getType()}&mdash; dipanggil dari pool thread pada proses penyedia konten, bukan thread UI
+untuk proses tersebut. Mengingat metode ini bisa dipanggil dari thread mana pun
sekaligus, metode-metode ini juga harus diimplementasikan sebagai thread-safe. </p>
<h2 id="IPC">Komunikasi Antarproses</h2>
<p>Android menawarkan mekanisme komunikasi antarproses (IPC) menggunakan panggilan prosedur jauh
- (RPC), yang mana metode ini dipanggil oleh aktivitas atau komponen aplikasi lain, namun dieksekusi dari
+ (RPC), yang mana metode ini dipanggil oleh aktivitas atau komponen aplikasi lain, namun dieksekusi dari
jauh (di proses lain), bersama hasil yang dikembalikan ke
-pemanggil. Ini mengharuskan penguraian panggilan metode dan datanya ke tingkat yang bisa
-dipahami sistem operasi, mentransmisikannya dari proses lokal dan ruang alamat untuk proses jauh
-dan ruang proses, kemudian merakit kembali dan menetapkannya kembali di sana. Nilai-nilai yang dikembalikan
+pemanggil. Ini mengharuskan penguraian panggilan metode dan datanya ke tingkat yang bisa
+dipahami sistem operasi, mentransmisikannya dari proses lokal dan ruang alamat untuk proses jauh
+dan ruang proses, kemudian merakit kembali dan menetapkannya kembali di sana. Nilai-nilai yang dikembalikan
akan ditransmisikan dalam arah berlawanan. Android menyediakan semua kode untuk melakukan transaksi IPC
ini, sehingga Anda bisa fokus pada pendefinisian dan implementasi antarmuka pemrograman RPC. </p>
diff --git a/docs/html-intl/intl/in/guide/components/recents.jd b/docs/html-intl/intl/in/guide/components/recents.jd
index dcfcda7a7d5f..286fdc12732e 100644
--- a/docs/html-intl/intl/in/guide/components/recents.jd
+++ b/docs/html-intl/intl/in/guide/components/recents.jd
@@ -60,23 +60,23 @@ layar ikhtisar. Selain itu, atribut <code><a href="{@docRoot}guide/topics/manife
<h2 id="adding">Menambahkan Tugas ke Layar Ikhtisar</h2>
<p>Penggunaan flag kelas {@link android.content.Intent} untuk menambahkan tugas memberi kontrol lebih besar
-atas waktu dan cara dokumen dibuka atau dibuka kembali di layar ikhtisar. Bila menggunakan atribut
+atas waktu dan cara dokumen dibuka atau dibuka kembali di layar ikhtisar. Bila menggunakan atribut
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
-, Anda dapat memilih antara selalu membuka dokumen dalam tugas baru atau menggunakan kembali tugas
+, Anda dapat memilih antara selalu membuka dokumen dalam tugas baru atau menggunakan kembali tugas
yang ada untuk dokumen tersebut.</p>
<h3 id="flag-new-doc">Menggunakan flag Intent untuk menambahkan tugas</h3>
-<p>Bila membuat dokumen baru untuk aktivitas, Anda memanggil metode
+<p>Bila membuat dokumen baru untuk aktivitas, Anda memanggil metode
{@link android.app.ActivityManager.AppTask#startActivity(android.content.Context, android.content.Intent, android.os.Bundle) startActivity()}
- dari kelas {@link android.app.ActivityManager.AppTask}, dengan meneruskannya ke intent yang
+ dari kelas {@link android.app.ActivityManager.AppTask}, dengan meneruskannya ke intent yang
menjalankan aktivitas tersebut. Untuk menyisipkan jeda logis agar sistem memperlakukan aktivitas Anda sebagai tugas
-baru di layar ikhtisar, teruskan flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+baru di layar ikhtisar, teruskan flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
dalam metode {@link android.content.Intent#addFlags(int) addFlags()} dari {@link android.content.Intent}
yang memulai aktivitas itu.</p>
<p class="note"><strong>Catatan:</strong> Flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
-menggantikan flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET},
+menggantikan flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET},
yang tidak digunakan lagi pada Android 5.0 (API level 21).</p>
<p>Jika Anda menetapkan flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} saat membuat
@@ -169,18 +169,18 @@ bila pengguna membuka dokumen dengan aplikasi:</p>
<dt>"{@code noneâ€}"</dt>
<dd>Aktivitas ini tidak membuat tugas baru untuk dokumen. Layar ikhtisar memperlakukan
- aktivitas seperti itu secara default: satu tugas ditampilkan untuk aplikasi, yang
+ aktivitas seperti itu secara default: satu tugas ditampilkan untuk aplikasi, yang
dilanjutkan dari aktivitas apa pun yang terakhir dipanggil pengguna.</dd>
<dt>"{@code never}"</dt>
<dd>Aktivitas ini tidak membuat tugas baru untuk dokumen. Mengatur nilai ini akan mengesampingkan
perilaku flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
- dan {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, jika salah satunya ditetapkan di
+ dan {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, jika salah satunya ditetapkan di
intent, dan layar ikhtisar menampilkan satu tugas untuk aplikasi, yang dilanjutkan dari
aktivitas apa pun yang terakhir dipanggil pengguna.</dd>
</dl>
-<p class="note"><strong>Catatan:</strong> Untuk nilai selain {@code none} dan {@code never},
+<p class="note"><strong>Catatan:</strong> Untuk nilai selain {@code none} dan {@code never},
aktivitas harus didefinisikan dengan {@code launchMode="standard"}. Jika atribut ini tidak ditetapkan, maka
{@code documentLaunchMode="none"} akan digunakan.</p>
@@ -219,8 +219,8 @@ public void onRemoveFromRecents(View view) {
</pre>
<p class="note"><strong>Catatan:</strong> Penggunaan metode
-{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}
-akan mengesampingkan penggunaan tag {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}, seperti
+{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}
+akan mengesampingkan penggunaan tag {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}, seperti
dibahas di bawah ini.</p>
<h3 id="#retain-finished">Mempertahankan tugas yang telah selesai</h3>
diff --git a/docs/html-intl/intl/in/guide/components/services.jd b/docs/html-intl/intl/in/guide/components/services.jd
index 7ecd8cd38db9..b36e5656b0ea 100644
--- a/docs/html-intl/intl/in/guide/components/services.jd
+++ b/docs/html-intl/intl/in/guide/components/services.jd
@@ -186,7 +186,7 @@ dari komponen aplikasi lain.</p>
aplikasi Anda.</p>
<p>Untuk mendeklarasikan layanan Anda, tambahkan sebuah elemen <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
-sebagai anak
+sebagai anak
elemen <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>. Misalnya:</p>
<pre>
@@ -539,7 +539,7 @@ layanan tersebut harus berhenti sendiri dengan memanggil {@link android.app.Serv
komponen lain bisa menghentikannya dengan memanggil {@link android.content.Context#stopService stopService()}.</p>
<p>Setelah diminta untuk berhenti dengan {@link android.app.Service#stopSelf stopSelf()} atau {@link
-android.content.Context#stopService stopService()}, sistem akan menghapus layanan
+android.content.Context#stopService stopService()}, sistem akan menghapus layanan
secepatnya.</p>
<p>Akan tetapi, bila layanan Anda menangani beberapa permintaan ke {@link
diff --git a/docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd
index 279442f2ab38..4c344ae126ae 100644
--- a/docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd
+++ b/docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd
@@ -29,7 +29,7 @@ parent.link=activities.html
<ol>
<li><a href="{@docRoot}design/patterns/navigation.html">Desain Android:
Navigasi</a></li>
- <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">Elemen manifes
+ <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">Elemen manifes
{@code &lt;activity&gt;}</a></li>
<li><a href="{@docRoot}guide/components/recents.html">Layar Ikhtisar</a></li>
</ol>
@@ -52,7 +52,7 @@ dikirim, aktivitas Anda akan dilanjutkan dan seolah-olah aktivitas email adalah
aktivitas mungkin dari aplikasi yang berbeda, Android akan tetap mempertahankan pengalaman pengguna yang mulus
dengan menjalankan kedua aktivitas dalam <em>tugas</em> yang sama.</p>
-<p>Tugas adalah kumpulan aktivitas yang berinteraksi dengan pengguna
+<p>Tugas adalah kumpulan aktivitas yang berinteraksi dengan pengguna
saat melakukan pekerjaan tertentu. Aktivitas tersebut diatur dalam tumpukan (<em>back-stack</em>), dalam
urutan membuka setiap aktivitas.</p>
@@ -93,7 +93,7 @@ tidak pernah disusun ulang, hanya didorong dan dikeluarkan dari back-stack&mdash
aktivitas saat ini dan dikeluarkan bila pengguna meninggalkannya menggunakan tombol <em>Back</em>. Dengan demikian,
back-stack
beroperasi sebagai struktur objek "masuk terakhir, keluar pertama". Gambar 1 melukiskan perilaku
-ini dengan jangka waktu yang menunjukkan kemajuan antar aktivitas beserta
+ini dengan jangka waktu yang menunjukkan kemajuan antar aktivitas beserta
back-stack pada setiap waktu.</p>
<img src="{@docRoot}images/fundamentals/diagram_backstack.png" alt="" />
@@ -148,7 +148,7 @@ pengguna untuk memulai aktivitas tertentu dari lebih dari satu aktivitas, instan
aktivitas tersebut akan dibuat dan didorong ke back-stack (bukannya memunculkan instance sebelumnya dari
aktivitas ke atas). Dengan demikian, satu aktivitas pada aplikasi Anda mungkin dibuat beberapa
kali (bahkan dari beberapa tugas), seperti yang ditampilkan dalam gambar 3. Dengan demikian, jika pengguna mengarahkan mundur
-menggunakan tombol <em>Back</em>, setiap instance aktivitas ini akan ditampilkan dalam urutan saat
+menggunakan tombol <em>Back</em>, setiap instance aktivitas ini akan ditampilkan dalam urutan saat
dibuka (masing-masing
dengan status UI sendiri). Akan tetapi, Anda bisa memodifikasi perilaku ini jika tidak ingin aktivitas
dibuat instance-nya lebih dari sekali. Caranya dibahas di bagian selanjutnya tentang <a href="#ManagingTasks">Mengelola Tugas</a>.</p>
@@ -347,7 +347,7 @@ aktivitas apa pun yang dimulai dengan ini akan dibuka di tugas yang terpisah.</d
selalu dibuka dalam tugasnya sendiri&mdash;dengan menetapkan mode pembuka {@code singleTask} dalam elemen<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.
Ini berarti bahwa jika aplikasi Anda mengeluarkan
intent untuk membuka Browser Android, aktivitasnya <em>tidak</em> akan ditempatkan dalam tugas
-yang sama seperti aplikasi Anda. Sebagai gantinya, tugas baru akan dimulai untuk Browser atau, jika Browser
+yang sama seperti aplikasi Anda. Sebagai gantinya, tugas baru akan dimulai untuk Browser atau, jika Browser
sudah memiliki tugas yang berjalan di latar belakang, tugas tersebut akan dimajukan untuk menangani intent
baru.</p>
@@ -387,13 +387,13 @@ adalah:</p>
<dd>Memulai aktivitas dalam tugas baru. Jika tugas sudah dijalankan untuk aktivitas yang sekarang
Anda mulai, tugas tersebut akan dibawa ke latar depan dengan status terakhir yang dipulihkan dan aktivitas
akan menerima intent baru dalam {@link android.app.Activity#onNewIntent onNewIntent()}.
- <p>Ini menghasilkan perilaku yang sama dengan nilai {@code "singleTask"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+ <p>Ini menghasilkan perilaku yang sama dengan nilai {@code "singleTask"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
yang dibahas di bagian sebelumnya.</p></dd>
<dt>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</dt>
<dd>Jika aktivitas yang dimulai adalah aktivitas saat ini (di bagian teratas back-stack), maka
instance yang ada akan menerima panggilan ke {@link android.app.Activity#onNewIntent onNewIntent()}
sebagai ganti membuat instance baru aktivitas.
- <p>Ini menghasilkan perilaku yang sama dengan nilai {@code "singleTop"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+ <p>Ini menghasilkan perilaku yang sama dengan nilai {@code "singleTop"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
yang dibahas di bagian sebelumnya.</p></dd>
<dt>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</dt>
<dd>Jika aktivitas yang dimulai sudah berjalan dalam tugas saat ini, maka sebagai
@@ -427,8 +427,8 @@ afinitas default untuk suatu aktivitas. Aktivitas yang didefinisikan dalam
aplikasi yang berbeda bisa berbagi afinitas, atau aktivitas yang didefinisikan dalam aplikasi yang sama bisa
diberi afinitas tugas yang berbeda.</p>
-<p>Anda bisa memodifikasi afinitas untuk setiap yang diberikan
-dengan atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+<p>Anda bisa memodifikasi afinitas untuk setiap yang diberikan
+dengan atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
elemen <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.</p>
<p>Atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
@@ -444,7 +444,7 @@ tugas default untuk aplikasi.</p>
{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
.
-<p>Aktivitas baru, secara default, diluncurkan ke dalam tugas aktivitas
+<p>Aktivitas baru, secara default, diluncurkan ke dalam tugas aktivitas
yang disebut {@link android.app.Activity#startActivity startActivity()}. Ini didorong ke back-stack
yang sama seperti caller. Akan tetapi, jika intent yang diteruskan ke
{@link android.app.Activity#startActivity startActivity()}
@@ -473,7 +473,7 @@ dimilikinya, bila tugas tersebut di bawa ke latar depan.</p>
yang didefinisikan sebagai bagian dari aplikasi perjalanan. Aktivitas memiliki afinitas yang sama dengan aktivitas lain dalam aplikasi
yang sama (afinitas aplikasi default) dan aktivitas ini memungkinkan re-parenting dengan atribut ini.
Bila salah satu aktivitas Anda memulai aktivitas laporan cuaca, awalnya aktivitas ini dimiliki oleh tugas
-yang sama dengan aktivitas Anda. Akan tetapi, bila tugas aplikasi perjalanan di bawa ke latar depan,
+yang sama dengan aktivitas Anda. Akan tetapi, bila tugas aplikasi perjalanan di bawa ke latar depan,
aktivitas laporan cuaca akan ditetapkan kembali ke tugas itu dan ditampilkan di dalamnya.</p>
</li>
</ul>
@@ -497,7 +497,7 @@ apa yang mereka kerjakan sebelum dan kembali ke tugas itu untuk memulai sesuatu
<dt><code><a
href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code>
</dt>
-<dd>Jika atribut ini ditetapkan ke {@code "true"} dalam aktivitas akar tugas,
+<dd>Jika atribut ini ditetapkan ke {@code "true"} dalam aktivitas akar tugas,
perilaku default yang baru dijelaskan tidak akan terjadi.
Tugas akan mempertahankan semua aktivitas dalam back-stack bahkan setelah sekian lama.</dd>
@@ -516,7 +516,7 @@ href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTask
<dd>Atribut ini seperti <a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">{@code clearTaskOnLaunch}</a>,
namun beroperasi pada
satu aktivitas, bukan pada seluruh tugas. Hal ini juga bisa menyebabkan aktivitas
-hilang, termasuk aktivitas akar. Bila ini diatur ke {@code "true"},
+hilang, termasuk aktivitas akar. Bila ini diatur ke {@code "true"},
aktivitas akan tetap menjadi bagian dari tugas hanya untuk sesi saat ini. Jika pengguna
keluar dan kemudian kembali ke tugas tersebut, tugas tidak akan ada lagi.</dd>
</dl>
@@ -552,14 +552,14 @@ pembuka</a> yang menandai aktivitas selalu memulai tugas, {@code "singleTask"} d
{@code "singleInstance"}, hanya boleh digunakan bila aktivitas memiliki filter
{@link android.content.Intent#ACTION_MAIN}
dan {@link android.content.Intent#CATEGORY_LAUNCHER}. Bayangkan, misalnya, apa yang akan
-terjadi jika filter tidak ada: Intent meluncurkan aktivitas{@code "singleTask"}, memulai
-tugas yang baru, dan pengguna menghabiskan lebih banyak waktu mengerjakan tugas tersebut. Pengguna kemudian menekan tombol
+terjadi jika filter tidak ada: Intent meluncurkan aktivitas{@code "singleTask"}, memulai
+tugas yang baru, dan pengguna menghabiskan lebih banyak waktu mengerjakan tugas tersebut. Pengguna kemudian menekan tombol
<em>Home</em>. Tugas kini dikirim ke latar belakang dan tidak terlihat. Sekarang pengguna tidak memiliki cara untuk kembali
ke tugas tersebut, karena tidak dinyatakan dalam launcher aplikasi.</p>
-<p>Untuk kasus-kasus di mana Anda tidak ingin pengguna bisa kembali ke aktivitas, atur dalam
+<p>Untuk kasus-kasus di mana Anda tidak ingin pengguna bisa kembali ke aktivitas, atur dalam
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
- pada
+ pada
<a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">{@code finishOnTaskLaunch}</a>
elemen ke {@code "true"} (lihat <a href="#Clearing">Menghapus back-stack</a>).</p>
diff --git a/docs/html-intl/intl/in/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/in/guide/topics/manifest/manifest-intro.jd
index 6d6a3ad252db..050abf47da02 100644
--- a/docs/html-intl/intl/in/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/in/guide/topics/manifest/manifest-intro.jd
@@ -23,7 +23,7 @@ page.title=Manifes Aplikasi
Setiap aplikasi harus memiliki file AndroidManifest.xml (bernama persis seperti ini) di direktori akar.
<span itemprop="description">File manifes
menyediakan informasi penting tentang aplikasi ke sistem Android,
- informasi yang harus dimiliki sistem agar bisa menjalankan setiap kode
+ informasi yang harus dimiliki sistem agar bisa menjalankan setiap kode
aplikasi.</span> Di antaranya, manifes melakukan hal berikut ini:
</p>
@@ -32,26 +32,26 @@ aplikasi.</span> Di antaranya, manifes melakukan hal berikut ini:
Nama paket berfungsi sebagai identifier unik untuk aplikasi.</li>
<li>Menjelaskan berbagai komponen aplikasi&mdash;aktivitas,
- layanan, penerima siaran, dan penyedia konten
-yang membentuk aplikasi. Menamai kelas yang mengimplementasikan setiap komponen dan
-mempublikasikan kemampuannya (misalnya, pesan {@link android.content.Intent
-Intent} mana yang bisa ditanganinya). Deklarasi ini memberi tahu sistem Android mengenai
+ layanan, penerima siaran, dan penyedia konten
+yang membentuk aplikasi. Menamai kelas yang mengimplementasikan setiap komponen dan
+mempublikasikan kemampuannya (misalnya, pesan {@link android.content.Intent
+Intent} mana yang bisa ditanganinya). Deklarasi ini memberi tahu sistem Android mengenai
komponennya dan dalam kondisi apa bisa diluncurkan.</li>
-<li>Menentukan proses yang akan menjadi host komponen aplikasi.</li>
+<li>Menentukan proses yang akan menjadi host komponen aplikasi.</li>
-<li>Mendeklarasikan izin aplikasi mana yang harus dimiliki untuk
-mengakses bagian yang dilindungi pada API dan berinteraksi dengan aplikasi lain.</li>
+<li>Mendeklarasikan izin aplikasi mana yang harus dimiliki untuk
+mengakses bagian yang dilindungi pada API dan berinteraksi dengan aplikasi lain.</li>
-<li>Juga mendeklarasikan izin lain yang harus dimiliki untuk
+<li>Juga mendeklarasikan izin lain yang harus dimiliki untuk
untuk berinteraksi dengan komponen aplikasi.</li>
-<li>Mencantumkan daftar kelas {@link android.app.Instrumentation} yang memberikan
-profil dan informasi lain saat aplikasi berjalan. Deklarasi ini
+<li>Mencantumkan daftar kelas {@link android.app.Instrumentation} yang memberikan
+profil dan informasi lain saat aplikasi berjalan. Deklarasi ini
hanya ada di manifes saat aplikasi dibuat dan diuji;
deklarasi dihapus sebelum aplikasi dipublikasikan.</li>
-<li>Mendeklarasikan tingkat minimum API Android yang diperlukan
+<li>Mendeklarasikan tingkat minimum API Android yang diperlukan
aplikasi.</li>
<li>Mencantumkan daftar pustaka yang harus ditautkan aplikasi.</li>
@@ -61,12 +61,12 @@ aplikasi.</li>
<h2 id="filestruct">Struktur File Manifes</h2>
<p>
-Diagram di bawah ini menampilkan struktur umum file manifes dan setiap
-elemen yang bisa ditampungnya. Setiap elemen, bersama
-atributnya, didokumentasikan secara lengkap dalam file terpisah. Untuk melihat
-informasi terperinci tentang setiap elemen, klik nama elemen dalam diagram,
-dalam daftar abjad elemen yang mengikuti diagram, atau penyebutan nama
-elemen lainnya.
+Diagram di bawah ini menampilkan struktur umum file manifes dan setiap
+elemen yang bisa ditampungnya. Setiap elemen, bersama
+atributnya, didokumentasikan secara lengkap dalam file terpisah. Untuk melihat
+informasi terperinci tentang setiap elemen, klik nama elemen dalam diagram,
+dalam daftar abjad elemen yang mengikuti diagram, atau penyebutan nama
+elemen lainnya.
</p>
<pre>
@@ -126,9 +126,9 @@ elemen lainnya.
</pre>
<p>
-Semua elemen yang bisa muncul dalam file manifes tercantum di bawah ini
-dalam urutan abjad. Ini adalah satu-satunya elemen legal; Anda tidak bisa
-menambahkan elemen atau atribut sendiri.
+Semua elemen yang bisa muncul dalam file manifes tercantum di bawah ini
+dalam urutan abjad. Ini adalah satu-satunya elemen legal; Anda tidak bisa
+menambahkan elemen atau atribut sendiri.
</p>
<p style="margin-left: 2em">
@@ -158,74 +158,74 @@ menambahkan elemen atau atribut sendiri.
</p>
-
+
<h2 id="filec">Konvensi File</h2>
<p>
-Sebagian konvensi dan aturan berlaku secara umum untuk semua elemen
+Sebagian konvensi dan aturan berlaku secara umum untuk semua elemen
dan atribut di manifes:
</p>
<dl>
<dt><b>Elemen</b></dt>
-<dd>Hanya elemen
+<dd>Hanya elemen
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> dan
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-yang diwajibkan, masing-masing harus ada dan hanya boleh terjadi sekali.
-Umumnya elemen lain bisa terjadi berkali-kali atau sama sekali tidak terjadi &mdash; meskipun
-setidaknya sebagian dari elemen itu harus ada untuk agar manifes mencapai sesuatu yang
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+yang diwajibkan, masing-masing harus ada dan hanya boleh terjadi sekali.
+Umumnya elemen lain bisa terjadi berkali-kali atau sama sekali tidak terjadi &mdash; meskipun
+setidaknya sebagian dari elemen itu harus ada untuk agar manifes mencapai sesuatu yang
berarti.
<p>
-Jika elemen tidak berisi apa pun, berarti elemen itu berisi elemen lain.
+Jika elemen tidak berisi apa pun, berarti elemen itu berisi elemen lain.
Semua nilai diatur melalui atribut, bukan sebagai data karakter dalam elemen.
</p>
<p>
-Elemen yang sama tingkatan umumnya tidak diurutkan. Misalnya, elemen
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
-<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>, dan
-<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
-bisa dicampur dalam urutan apa pun. (Elemen
+Elemen yang sama tingkatan umumnya tidak diurutkan. Misalnya, elemen
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>, dan
+<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+bisa dicampur dalam urutan apa pun. (Elemen
<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
- merupakan eksepsi untuk aturan ini: Elemen ini harus mengikuti
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ merupakan eksepsi untuk aturan ini: Elemen ini harus mengikuti
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
ini aliasnya.)
</p></dd>
<dt><b>Atribut</b></dt>
-<dd>Secara formal, semua atribut opsional. Akan tetapi, ada sebagian
-yang harus ditetapkan agar elemen bisa mencapai tujuannya. Gunakan
-dokumentasi sebagai panduan. Bagi atribut yang benar-benar opsional, ini menyebutkan
+<dd>Secara formal, semua atribut opsional. Akan tetapi, ada sebagian
+yang harus ditetapkan agar elemen bisa mencapai tujuannya. Gunakan
+dokumentasi sebagai panduan. Bagi atribut yang benar-benar opsional, ini menyebutkan
nilai default atau menyatakan apa yang terjadi jika tidak ada spesifikasi.
-<p>Selain untuk beberapa atribut elemen akar
+<p>Selain untuk beberapa atribut elemen akar
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>,
- semua nama atribut dimulai dengan awalan {@code android:} &mdash;
-misalnya, {@code android:alwaysRetainTaskState}. Karena awalan ini universal, dokumentasi umumnya meniadakannya saat mengacu atribut
+ semua nama atribut dimulai dengan awalan {@code android:} &mdash;
+misalnya, {@code android:alwaysRetainTaskState}. Karena awalan ini universal, dokumentasi umumnya meniadakannya saat mengacu atribut
dengan nama.
</p></dd>
<dt><b>Mendeklarasikan nama kelas</b></dt>
-<dd>Banyak elemen berhubungan dengan objek Java, termasuk elemen
-aplikasi itu sendiri (elemen
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-) dan aktivitas komponen &mdash; utamanya
-(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
-layanan
-(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
-penerima siaran
-(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>),
-dan penyedia konten
-(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
+<dd>Banyak elemen berhubungan dengan objek Java, termasuk elemen
+aplikasi itu sendiri (elemen
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+) dan aktivitas komponen &mdash; utamanya
+(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
+layanan
+(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
+penerima siaran
+(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>),
+dan penyedia konten
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
<p>
-Jika mendefinisikan subkelas, seperti yang selalu Anda definisikan untuk kelas komponen
-({@link android.app.Activity}, {@link android.app.Service},
-{@link android.content.BroadcastReceiver}, dan {@link android.content.ContentProvider}),
-subkelas dideklarasikan melalui atribut {@code name}. Nama harus menyertakan tujuan
-paket lengkap.
+Jika mendefinisikan subkelas, seperti yang selalu Anda definisikan untuk kelas komponen
+({@link android.app.Activity}, {@link android.app.Service},
+{@link android.content.BroadcastReceiver}, dan {@link android.content.ContentProvider}),
+subkelas dideklarasikan melalui atribut {@code name}. Nama harus menyertakan tujuan
+paket lengkap.
Misalnya, subkelas {@link android.app.Service} mungkin dideklarasikan sebagai berikut:
</p>
@@ -239,12 +239,12 @@ Misalnya, subkelas {@link android.app.Service} mungkin dideklarasikan sebagai be
&lt;/manifest&gt;</pre>
<p>
-Akan tetapi, sebagai shorthand, jika karakter pertama string adalah titik,
-string akan ditambahkan ke nama paket aplikasi (seperti yang ditetapkan dalam elemen
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
- melalui atribut
+Akan tetapi, sebagai shorthand, jika karakter pertama string adalah titik,
+string akan ditambahkan ke nama paket aplikasi (seperti yang ditetapkan dalam elemen
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+ melalui atribut
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
-). Penetapan berikut sama dengan di atas:
+). Penetapan berikut sama dengan di atas:
</p>
<pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -257,13 +257,13 @@ string akan ditambahkan ke nama paket aplikasi (seperti yang ditetapkan dalam el
&lt;/manifest&gt;</pre>
<p>
-Saat memulai komponen, Android akan membuat instance subkelas yang diberi nama.
+Saat memulai komponen, Android akan membuat instance subkelas yang diberi nama.
Jika subkelas tidak ditetapkan, maka akak dibuat instance kelas dasar.
</p></dd>
<dt><b>Banyak nilai</b></dt>
-<dd>Jika lebih dari satu nilai yang dapat ditetapkan, elemen ini hampir selalu
-diulangi, bukan menampilkan daftar banyak nilai dalam satu elemen.
+<dd>Jika lebih dari satu nilai yang dapat ditetapkan, elemen ini hampir selalu
+diulangi, bukan menampilkan daftar banyak nilai dalam satu elemen.
Misalnya, filter intent dapat mencantumkan beberapa tindakan:
<pre>&lt;intent-filter . . . &gt;
@@ -275,23 +275,23 @@ Misalnya, filter intent dapat mencantumkan beberapa tindakan:
<dt><b>Nilai sumber daya</b></dt>
<dd>Beberapa atribut memiliki nilai yang bisa ditampilkan kepada pengguna &mdash; misalnya
-, label dan ikon aktivitas. Nilai atribut ini
-harus dilokalkan dan karenanya ditetapkan dari sumber daya atau tema. Nilai sumber
+, label dan ikon aktivitas. Nilai atribut ini
+harus dilokalkan dan karenanya ditetapkan dari sumber daya atau tema. Nilai sumber
daya dinyatakan dalam format berikut,</p>
<p style="margin-left: 2em">{@code @[<i>package</i>:]<i>type</i>:<i>name</i>}</p>
<p>
-dalam hal ini nama <i>package</i> boleh dihilangkan jika sumber daya ada dalam paket yang sama dengan
-dengan aplikasi, <i>type</i> adalah tipe sumber daya &mdash; seperti "string" atau
-"drawable" &mdash; dan <i>name</i> adalah nama yang mengidentifikasi sumber daya tertentu.
+dalam hal ini nama <i>package</i> boleh dihilangkan jika sumber daya ada dalam paket yang sama dengan
+dengan aplikasi, <i>type</i> adalah tipe sumber daya &mdash; seperti "string" atau
+"drawable" &mdash; dan <i>name</i> adalah nama yang mengidentifikasi sumber daya tertentu.
Misalnya:
</p>
<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
<p>
-Nilai tema diekspresikan dengan cara yang sama, namun dengan awal '{@code ?}'
+Nilai tema diekspresikan dengan cara yang sama, namun dengan awal '{@code ?}'
dan bukan '{@code @}':
</p>
@@ -299,8 +299,8 @@ dan bukan '{@code @}':
</p></dd>
<dt><b>Nilai-nilai string</b></dt>
-<dd>Bila nilai atribut adalah string, dua garis miring kiri ('{@code \\}')
-harus digunakan untuk meninggalkan karakter &mdash; misalnya, '{@code \\n}' untuk
+<dd>Bila nilai atribut adalah string, dua garis miring kiri ('{@code \\}')
+harus digunakan untuk meninggalkan karakter &mdash; misalnya, '{@code \\n}' untuk
baris baru atau '{@code \\uxxxx}' untuk karakter Unicode.</dd>
</dl>
@@ -308,7 +308,7 @@ baris baru atau '{@code \\uxxxx}' untuk karakter Unicode.</dd>
<h2 id="filef">Fitur File</h2>
<p>
-Bagian berikut menjelaskan cara menerapkan sebagian fitur Android
+Bagian berikut menjelaskan cara menerapkan sebagian fitur Android
dalam file manifest.
</p>
@@ -316,37 +316,37 @@ dalam file manifest.
<h3 id="ifs">Filter Intent</h3>
<p>
-Komponen inti dari aplikasi (aktivitasnya, layanannya, dan penerima
-siaran) diaktifkan oleh <i>intent</i>. Intent adalah
-sekumpulan informasi (objek {@link android.content.Intent}) yang menjelaskan
-tindakan yang diinginkan &mdash; termasuk data yang akan ditindaklanjuti, kategori
-komponen yang harus melakukan tindakan, dan petunjuk terkait lainnya.
-Android mencari komponen yang sesuai untuk merespons intent, meluncurkan
-instance komponen baru jika diperlukan, dan meneruskannya ke
+Komponen inti dari aplikasi (aktivitasnya, layanannya, dan penerima
+siaran) diaktifkan oleh <i>intent</i>. Intent adalah
+sekumpulan informasi (objek {@link android.content.Intent}) yang menjelaskan
+tindakan yang diinginkan &mdash; termasuk data yang akan ditindaklanjuti, kategori
+komponen yang harus melakukan tindakan, dan petunjuk terkait lainnya.
+Android mencari komponen yang sesuai untuk merespons intent, meluncurkan
+instance komponen baru jika diperlukan, dan meneruskannya ke
objek Intent.
</p>
<p>
-Komponen mengiklankan kemampuannya &mdash; jenis intent yang bisa diresponsnya
- &mdash; melalui <i>filter intent</i>. Karena sistem Android
-harus mempelajari intent yang dapat ditangani komponen sebelum meluncurkan komponen,
-filter intent ditetapkan dalam manifes sebagai elemen
+Komponen mengiklankan kemampuannya &mdash; jenis intent yang bisa diresponsnya
+ &mdash; melalui <i>filter intent</i>. Karena sistem Android
+harus mempelajari intent yang dapat ditangani komponen sebelum meluncurkan komponen,
+filter intent ditetapkan dalam manifes sebagai elemen
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
-. Sebuah komponen dapat memiliki filter dalam jumlah berapa saja, masing-masing menjelaskan
+. Sebuah komponen dapat memiliki filter dalam jumlah berapa saja, masing-masing menjelaskan
kemampuan yang berbeda.
</p>
<p>
Intent yang secara eksplisit menamai komponen target akan mengaktifkan komponen itu;
-filter tidak berperan. Namun intent yang tidak menetapkan target
-dengan nama dapat mengaktifkan komponen hanya jika dapat melewati salah satu filter
+filter tidak berperan. Namun intent yang tidak menetapkan target
+dengan nama dapat mengaktifkan komponen hanya jika dapat melewati salah satu filter
komponen.
</p>
<p>
-Untuk informasi tentang cara objek Intent diuji terhadap filter intent,
-lihat dokumen terpisah,
-<a href="{@docRoot}guide/components/intents-filters.html">Intent
+Untuk informasi tentang cara objek Intent diuji terhadap filter intent,
+lihat dokumen terpisah,
+<a href="{@docRoot}guide/components/intents-filters.html">Intent
dan Filter Intent</a>.
</p>
@@ -354,42 +354,42 @@ dan Filter Intent</a>.
<h3 id="iconlabel">Ikon dan Label</h3>
<p>
-Sejumlah elemen memiliki atribut {@code icon} dan {@code label} untuk
-ikon kecil dan label teks yang bisa ditampilkan kepada pengguna. Sebagian ada juga yang memiliki atribut
-{@code description}untuk teks penjelasan yang lebih panjang yang juga bisa
-ditampilkan pada layar. Misalnya, elemen
+Sejumlah elemen memiliki atribut {@code icon} dan {@code label} untuk
+ikon kecil dan label teks yang bisa ditampilkan kepada pengguna. Sebagian ada juga yang memiliki atribut
+{@code description}untuk teks penjelasan yang lebih panjang yang juga bisa
+ditampilkan pada layar. Misalnya, elemen
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
- memiliki ketiga atribut ini, jadi saat pengguna ditanya apakah akan
-memberi izin bagi aplikasi yang memintanya, ikon yang mewakili
-izin, nama izin, dan keterangan yang
+ memiliki ketiga atribut ini, jadi saat pengguna ditanya apakah akan
+memberi izin bagi aplikasi yang memintanya, ikon yang mewakili
+izin, nama izin, dan keterangan yang
mengikutinya bisa ditampilkan kepada pengguna.
</p>
<p>
-Dalam setiap kasus, ikon dan label yang ditetapkan dalam elemen yang memuatnya menjadi
-{@code icon} default dan pengaturan {@code label} untuk semua subelemen kontainer ini.
-Karena itu, ikon dan label yang ditetapkan dalam elemen
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-adalah ikon dan label default untuk setiap komponen aplikasi.
-Demikian pula, ikon dan label yang ditetapkan untuk komponen &mdash; misalnya, elemen
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
-&mdash; adalah pengaturan default untuk setiap elemen komponen
+Dalam setiap kasus, ikon dan label yang ditetapkan dalam elemen yang memuatnya menjadi
+{@code icon} default dan pengaturan {@code label} untuk semua subelemen kontainer ini.
+Karena itu, ikon dan label yang ditetapkan dalam elemen
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+adalah ikon dan label default untuk setiap komponen aplikasi.
+Demikian pula, ikon dan label yang ditetapkan untuk komponen &mdash; misalnya, elemen
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+&mdash; adalah pengaturan default untuk setiap elemen komponen
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
-. Jika elemen
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-menetapkan label, namun suatu aktivitas dan filter intent-nya tidak menetapkan label,
-maka label aplikasi akan dianggap sama-sama sebagai label aktvitas dan
+. Jika elemen
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+menetapkan label, namun suatu aktivitas dan filter intent-nya tidak menetapkan label,
+maka label aplikasi akan dianggap sama-sama sebagai label aktvitas dan
filter intent.
</p>
<p>
-Ikon dan label yang ditetapkan untuk filter intent digunakan untuk mewakili komponen
-kapan saja komponen ditampilkan kepada pengguna saat memenuhi fungsi yang
-diiklankan oleh filter. Misalnya, filter dengan pengaturan
-"{@code android.intent.action.MAIN}" dan
-"{@code android.intent.category.LAUNCHER}" mengiklankan aktivitas
-sebagai aktivitas yang memulai aplikasi&mdash;, yaitu
-sebagai salah satu aktivitas yang harus ditampilkan dalam launcher aplikasi. Ikon dan label yang
+Ikon dan label yang ditetapkan untuk filter intent digunakan untuk mewakili komponen
+kapan saja komponen ditampilkan kepada pengguna saat memenuhi fungsi yang
+diiklankan oleh filter. Misalnya, filter dengan pengaturan
+"{@code android.intent.action.MAIN}" dan
+"{@code android.intent.category.LAUNCHER}" mengiklankan aktivitas
+sebagai aktivitas yang memulai aplikasi&mdash;, yaitu
+sebagai salah satu aktivitas yang harus ditampilkan dalam launcher aplikasi. Ikon dan label yang
diatur dalam filter karenanya adalah ikon dan label yang ditampilkan dalam launcher.
</p>
@@ -397,14 +397,14 @@ diatur dalam filter karenanya adalah ikon dan label yang ditampilkan dalam launc
<h3 id="perms">Izin</h3>
<p>
-Sebuah <i>izin</i> adalah pembatasan yang membatasi akses ke bagian
-kode atau ke data pada perangkat. Pembatasan diberlakukan untuk melindungi data dan kode
-penting yang bisa disalahgunakan untuk mengganggu atau merusak pengalaman pengguna.
+Sebuah <i>izin</i> adalah pembatasan yang membatasi akses ke bagian
+kode atau ke data pada perangkat. Pembatasan diberlakukan untuk melindungi data dan kode
+penting yang bisa disalahgunakan untuk mengganggu atau merusak pengalaman pengguna.
</p>
<p>
-Setiap izin diidentifikasi melalui label yang unik. Sering kali, label menunjukkan
-tindakan yang dibatasi. Misalnya, berikut ini adalah beberapa izin yang didefinisikan
+Setiap izin diidentifikasi melalui label yang unik. Sering kali, label menunjukkan
+tindakan yang dibatasi. Misalnya, berikut ini adalah beberapa izin yang didefinisikan
oleh Android:
</p>
@@ -418,25 +418,25 @@ Sebuah fitur bisa dilindungi paling banyak oleh satu izin.
</p>
<p>
-Jika aplikasi memerlukan akses ke fitur yang dilindungi oleh izin,
-aplikasi harus mendeklarasikan bahwa aplikasi memerlukan izin itu dengan elemen
+Jika aplikasi memerlukan akses ke fitur yang dilindungi oleh izin,
+aplikasi harus mendeklarasikan bahwa aplikasi memerlukan izin itu dengan elemen
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
- dalam manifes. Kemudian, bila aplikasi telah diinstal pada
-perangkat, installer akan menentukan apakah izin yang diminta akan diberikan atau tidak
-dengan memeriksa otoritas yang menandatangani
-sertifikat aplikasi dan, dalam beberapa kasus, bertanya pada pengguna.
-Jika izin diberikan, aplikasi tersebut bisa menggunakan
-fitur yang dilindungi. Jika tidak, upaya aplikasi untuk mengakses fitur tersebut akan gagal
-tanpa ada pemberitahuan apa pun kepada pengguna.
+ dalam manifes. Kemudian, bila aplikasi telah diinstal pada
+perangkat, installer akan menentukan apakah izin yang diminta akan diberikan atau tidak
+dengan memeriksa otoritas yang menandatangani
+sertifikat aplikasi dan, dalam beberapa kasus, bertanya pada pengguna.
+Jika izin diberikan, aplikasi tersebut bisa menggunakan
+fitur yang dilindungi. Jika tidak, upaya aplikasi untuk mengakses fitur tersebut akan gagal
+tanpa ada pemberitahuan apa pun kepada pengguna.
</p>
<p>
-Aplikasi juga bisa melindungi komponennya sendiri (aktivitas, layanan,
-penerima siaran, dan penyedia konten) dengan izin. Aplikasi bisa menerapkan
-izin mana pun yang didefinisikan oleh Android (tercantum dalam
-{@link android.Manifest.permission android.Manifest.permission}) atau dideklarasikan
-oleh aplikasi lain. Atau aplikasi bisa mendefinisikannya sendiri. Izin baru dideklarasikan
-dengan elemen
+Aplikasi juga bisa melindungi komponennya sendiri (aktivitas, layanan,
+penerima siaran, dan penyedia konten) dengan izin. Aplikasi bisa menerapkan
+izin mana pun yang didefinisikan oleh Android (tercantum dalam
+{@link android.Manifest.permission android.Manifest.permission}) atau dideklarasikan
+oleh aplikasi lain. Atau aplikasi bisa mendefinisikannya sendiri. Izin baru dideklarasikan
+dengan elemen
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
. Misalnya, aktivitas dapat dilindungi sebagai berikut:
</p>
@@ -457,43 +457,43 @@ dengan elemen
</pre>
<p>
-Perhatikan, dalam contoh ini izin {@code DEBIT_ACCT} tidak hanya
-dideklarasikan dengan elemen
+Perhatikan, dalam contoh ini izin {@code DEBIT_ACCT} tidak hanya
+dideklarasikan dengan elemen
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-, penggunaannya juga diminta dengan elemen
+, penggunaannya juga diminta dengan elemen
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
-. Penggunaannya harus diminta agar komponen
-aplikasi lainnya bisa menjalankan aktivitas yang dilindungi, meskipun perlindungan itu
-diberlakukan oleh aplikasi itu sendiri.
+. Penggunaannya harus diminta agar komponen
+aplikasi lainnya bisa menjalankan aktivitas yang dilindungi, meskipun perlindungan itu
+diberlakukan oleh aplikasi itu sendiri.
</p>
<p>
-Dalam contoh yang sama, jika atribut {@code permission} ditetapkan
-untuk izin yang dideklarasikan di tempat lain
-lain (seperti {@code android.permission.CALL_EMERGENCY_NUMBERS}, maka atribut
-tidak perlu mendeklarasikannya lagi dengan elemen
+Dalam contoh yang sama, jika atribut {@code permission} ditetapkan
+untuk izin yang dideklarasikan di tempat lain
+lain (seperti {@code android.permission.CALL_EMERGENCY_NUMBERS}, maka atribut
+tidak perlu mendeklarasikannya lagi dengan elemen
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-. Akan tetapi, penggunaannya masih perlu dengan
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
+. Akan tetapi, penggunaannya masih perlu dengan
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
</p>
<p>
-Elemen
-<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
-mendeklarasikan namespace untuk grup izin yang akan didefinisikan dalam
-kode. Dan
+Elemen
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+mendeklarasikan namespace untuk grup izin yang akan didefinisikan dalam
+kode. Dan
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
-mendefinisikan label untuk seperangkat izin (yang sama-sama dideklarasikan dalam manifes dengan elemen
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-dan yang dideklarasikan di tempat lain). Ini hanya memengaruhi cara izin
-dikelompokkan saat ditampilkan kepada pengguna. Elemen
+mendefinisikan label untuk seperangkat izin (yang sama-sama dideklarasikan dalam manifes dengan elemen
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+dan yang dideklarasikan di tempat lain). Ini hanya memengaruhi cara izin
+dikelompokkan saat ditampilkan kepada pengguna. Elemen
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
- tidak menetapkan izin mana dimiliki grup;
+ tidak menetapkan izin mana dimiliki grup;
elemen hanya memberi nama grup. Izin ditempatkan dalam grup
-dengan memberikan nama grup ke elemen
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
- melalui atribut
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
+dengan memberikan nama grup ke elemen
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+ melalui atribut
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
.
</p>
@@ -501,17 +501,17 @@ dengan memberikan nama grup ke elemen
<h3 id="libs">Pustaka</h3>
<p>
-Setiap aplikasi ditautkan dengan pustaka default Android, yang
-menyertakan paket dasar untuk membangun aplikasi (dengan kelas umum
-seperti Activity, Service, Intent, View, Button, Application, ContentProvider,
+Setiap aplikasi ditautkan dengan pustaka default Android, yang
+menyertakan paket dasar untuk membangun aplikasi (dengan kelas umum
+seperti Activity, Service, Intent, View, Button, Application, ContentProvider,
dan sebagainya).
</p>
<p>
-Akan tetapi, sebagian paket berada dalam pustakanya sendiri. Jika aplikasi Anda
-menggunakan kode salah satu paket ini, aplikasi secara eksplisit meminta untuk ditautkan dengan
-paket tersebut. Manifes harus berisi elemen
-<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code> yang
-terpisah untuk menamai setiap pustaka. (Nama pustaka bisa ditemukan
+Akan tetapi, sebagian paket berada dalam pustakanya sendiri. Jika aplikasi Anda
+menggunakan kode salah satu paket ini, aplikasi secara eksplisit meminta untuk ditautkan dengan
+paket tersebut. Manifes harus berisi elemen
+<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code> yang
+terpisah untuk menamai setiap pustaka. (Nama pustaka bisa ditemukan
dalam dokumentasi paket.)
</p>
diff --git a/docs/html-intl/intl/in/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/in/guide/topics/providers/calendar-provider.jd
index 76bc9915cbd7..305881536858 100644
--- a/docs/html-intl/intl/in/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/in/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@ page.title=Penyedia Kalender
<li><a href="#intent-view">Menggunakan intent untuk menampilkan data kalender</a></li>
</ol>
</li>
-
+
<li><a href="#sync-adapter">Adaptor Sinkronisasi</a></li>
</ol>
@@ -63,8 +63,8 @@ pada kalender, kejadian, peserta, pengingat, dan seterusnya.</p>
<p>API Penyedia Kalender bisa digunakan oleh aplikasi dan adaptor sinkronisasi. Aturannya
bervariasi menurut tipe program yang membuat panggilan. Dokumen ini
-terutama berfokus pada penggunaan API Penyedia Kalender sebagai sebuah aplikasi. Untuk
-pembahasan ragam adaptor sinkronisasi, lihat
+terutama berfokus pada penggunaan API Penyedia Kalender sebagai sebuah aplikasi. Untuk
+pembahasan ragam adaptor sinkronisasi, lihat
<a href="#sync-adapter">Adaptor Sinkronisasi</a>.</p>
@@ -89,7 +89,7 @@ data kalender seorang pengguna.</p>
<p>Setiap penyedia konten membuka sebuah URI publik (yang dibungkus sebagai objek
{@link android.net.Uri}
) yang mengidentifikasikan set datanya secara unik. Penyedia konten yang mengontrol
- beberapa set data (beberapa tabel) mengekspos URI terpisah untuk tiap set. Semua
+ beberapa set data (beberapa tabel) mengekspos URI terpisah untuk tiap set. Semua
URI untuk penyedia diawali dengan string "content://". String ini
mengidentifikasi data sebagai dikontrol oleh penyedia konten. Penyedia Kalender
mendefinisikan konstanta untuk URI masing-masing kelas (tabel). URI ini
@@ -113,26 +113,26 @@ tabel dan bidang utama yang saling berkaitan.</p>
</tr>
<tr>
<td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-
- <td>Tabel ini menyimpan
+
+ <td>Tabel ini menyimpan
informasi khusus kalender. Tiap baris dalam tabel ini berisi data untuk
satu kalender, seperti nama, warna, informasi sinkronisasi, dan seterusnya.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Events}</td>
-
+
<td>Tabel ini menyimpan
informasi khusus kejadian. Tiap baris dalam tabel ini berisi informasi untuk satu
kejadian&mdash;misalnya, judul kejadian, lokasi, waktu mulai, waktu
selesai, dan seterusnya. Kejadian bisa terjadi satu kali atau bisa berulang beberapa kali. Peserta,
-pengingat, dan properti perluasan disimpan dalam tabel terpisah.
-Masing-masing memiliki sebuah {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+pengingat, dan properti perluasan disimpan dalam tabel terpisah.
+Masing-masing memiliki sebuah {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
yang mengacu {@link android.provider.BaseColumns#_ID} dalam tabel Events.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances}</td>
-
+
<td>Tabel ini menyimpan
waktu mulai dan waktu selesai setiap bentuk kejadian. Tiap baris dalam tabel ini
mewakili satu bentuk kejadian. Untuk kejadian satu kali ada pemetaan 1:1
@@ -141,7 +141,7 @@ secara otomatis yang sesuai dengan beberapa kejadian itu.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Attendees}</td>
-
+
<td>Tabel ini menyimpan
informasi peserta (tamu) kejadian. Tiap baris mewakili satu tamu
kejadian. Ini menetapkan tipe tamu dan respons kehadiran tamu
@@ -149,17 +149,17 @@ untuk kejadian.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Reminders}</td>
-
+
<td>Tabel ini menyimpan
data peringatan/pemberitahuan. Tiap baris mewakili satu peringatan untuk sebuah kejadian. Sebuah
kejadian bisa memiliki beberapa pengingat. Jumlah maksimum pengingat per kejadian
-ditetapkan dalam
-{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS},
+ditetapkan dalam
+{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS},
yang diatur oleh adaptor sinkronisasi yang
memiliki kalender yang diberikan. Pengingat ditetapkan dalam menit sebelum kejadian
dan memiliki metode yang menentukan cara pengguna akan diperingatkan.</td>
</tr>
-
+
</table>
<p>API Penyedia Kalender didesain agar luwes dan tangguh. Sementara itu
@@ -178,9 +178,9 @@ Kalender</a>.</p>
<li><strong>Adaptor sinkronisasi.</strong> Adaptor sinkronisasi menyinkronkan data kalender
-pada perangkat pengguna dengan server atau sumber data lain. Dalam tabel
+pada perangkat pengguna dengan server atau sumber data lain. Dalam tabel
{@link android.provider.CalendarContract.Calendars} dan
-{@link android.provider.CalendarContract.Events},
+{@link android.provider.CalendarContract.Events},
ada kolom yang dicadangkan untuk digunakan adaptor sinkronisasi.
Penyedia dan aplikasi tidak boleh memodifikasinya. Sebenarnya, tabel-tabel itu tidak
terlihat kecuali jika diakses sebagai adaptor sinkronisasi. Untuk informasi selengkapnya tentang
@@ -211,7 +211,7 @@ untuk menghapus, menyisipkan, atau memperbarui data kalender:</p>
<p>Tabel {@link android.provider.CalendarContract.Calendars} berisi data
untuk tiap kalender. Kolom-kolom
-berikut ini bisa ditulisi oleh aplikasi maupun <a href="#sync-adapter">adaptor sinkronisasi</a>.
+berikut ini bisa ditulisi oleh aplikasi maupun <a href="#sync-adapter">adaptor sinkronisasi</a>.
Untuk mengetahui daftar lengkap bidang-bidang yang didukung, lihat
acuan {@link android.provider.CalendarContract.Calendars}.</p>
<table>
@@ -229,7 +229,7 @@ acuan {@link android.provider.CalendarContract.Calendars}.</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-
+
<td>Sebuah boolean yang menunjukkan apakah kalender dipilih untuk ditampilkan. Nilai
0 menunjukkan bahwa kejadian yang terkait dengan kalender ini tidak boleh
ditampilkan. Nilai 1 menunjukkan bahwa kejadian yang terkait dengan kalender ini harus
@@ -240,7 +240,7 @@ android.provider.CalendarContract.Instances}.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-
+
<td>Sebuah boolean yang menunjukkan apakah kalender harus disinkronkan dan apakah
kejadiannya harus disimpan pada perangkat. Nilai 0 berarti jangan menyinkronkan kalender ini atau
simpan kejadiannya pada perangkat. Nilai 1 berarti menyinkronkan kejadian untuk kalender ini
@@ -253,8 +253,8 @@ dan simpan kejadiannya pada perangkat.</td>
<p>Berikut ini adalah contoh yang menampilkan cara mendapatkan kalender yang dimiliki oleh
pengguna tertentu. Untuk memudahkan, dalam contoh ini, operasi query ditampilkan dalam
thread antarmuka pengguna ("thread utama"). Dalam praktiknya, hal ini harus dilakukan dalam
-thread asinkron, sebagai ganti pada thread utama. Untuk diskusi selengkapnya, lihat
-<a href="{@docRoot}guide/components/loaders.html">Loader</a>. Jika Anda tidak sekadar
+thread asinkron, sebagai ganti pada thread utama. Untuk diskusi selengkapnya, lihat
+<a href="{@docRoot}guide/components/loaders.html">Loader</a>. Jika Anda tidak sekadar
membaca data melainkan memodifikasinya, lihat {@link android.content.AsyncQueryHandler}.
</p>
@@ -268,18 +268,18 @@ public static final String[] EVENT_PROJECTION = new String[] {
Calendars.CALENDAR_DISPLAY_NAME, // 2
Calendars.OWNER_ACCOUNT // 3
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
-
+
<div class="sidebox-wrapper"> <div class="sidebox"> <h3>Mengapa Anda harus menyertakan
ACCOUNT_TYPE?</h3> <p>Jika Anda membuat query pada {@link
android.provider.CalendarContract.Calendars#ACCOUNT_NAME
-Calendars.ACCOUNT_NAME}, Anda juga harus menyertakan
+Calendars.ACCOUNT_NAME}, Anda juga harus menyertakan
{@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}
dalam pemilihan. Itu karena akun yang bersangkutan
hanya dianggap unik mengingat <code>ACCOUNT_NAME</code> dan
@@ -289,7 +289,7 @@ autentikator akun yang digunakan bila akun didaftarkan dengan
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} untuk kalender
yang tidak terkait dengan akun perangkat. Akun {@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} tidak
-disinkronkan.</p> </div> </div>
+disinkronkan.</p> </div> </div>
<p> Di bagian berikutnya pada contoh ini, Anda akan membuat query. Pemilihan
@@ -301,59 +301,59 @@ kalender yang memiliki <code>ACCOUNT_NAME</code>
telah ditampilkan pengguna, bukan hanya kalender yang dimiliki pengguna, hilangkan <code>OWNER_ACCOUNT</code>.
Query tersebut akan menghasilkan objek {@link android.database.Cursor}
yang bisa Anda gunakan untuk menyusuri set hasil yang dikembalikan oleh
-query database. Untuk diskusi selengkapnya tentang penggunaan query dalam penyedia konten,
+query database. Untuk diskusi selengkapnya tentang penggunaan query dalam penyedia konten,
lihat <a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia Kalender</a>.</p>
<pre>// Run query
Cursor cur = null;
ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+Uri uri = Calendars.CONTENT_URI;
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+ Calendars.ACCOUNT_TYPE + " = ?) AND ("
+ Calendars.OWNER_ACCOUNT + " = ?))";
String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
- "sampleuser@gmail.com"};
-// Submit the query and get a Cursor object back.
+ "sampleuser@gmail.com"};
+// Submit the query and get a Cursor object back.
cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
<p>Bagian berikutnya ini menggunakan kursor untuk merunut set hasil. Bagian ini menggunakan
konstanta yang disiapkan pada awal contoh ini untuk menghasilkan nilai-nilai
bagi tiap bidang.</p>
-
+
<pre>// Use the cursor to step through the returned records
while (cur.moveToNext()) {
long calID = 0;
String displayName = null;
String accountName = null;
String ownerName = null;
-
+
// Get the field values
calID = cur.getLong(PROJECTION_ID_INDEX);
displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
-
+
// Do something with the values...
...
}
</pre>
-
+
<h3 id="modify-calendar">Memodifikasi kalender</h3>
<p>Untuk melakukan pembaruan kalender, Anda bisa menyediakan {@link
android.provider.BaseColumns#_ID} kalender itu baik sebagai ID yang ditambahkan ke
-URI
+URI
-({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
atau sebagai item pemilihan pertama. Pemilihan
harus diawali dengan <code>&quot;_id=?&quot;</code>, dan
<code>selectionArg</code> pertama harus berupa {@link
-android.provider.BaseColumns#_ID} kalender.
+android.provider.BaseColumns#_ID} kalender.
Anda juga bisa melakukan pembaruan dengan menuliskan kode ID dalam URI. Contoh ini mengubah
-nama tampilan kalender dengan pendekatan
-({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+nama tampilan kalender dengan pendekatan
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
:</p>
<pre>private static final String DEBUG_TAG = "MyActivity";
@@ -375,7 +375,7 @@ perlu membuat sebuah kalender lokal, aplikasi bisa melakukannya dengan melakukan
penyisipan kalender sebagai adaptor sinkronisasi, menggunakan {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} dari {@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}.
-{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
+{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
adalah sebuah tipe akun khusus untuk kalender yang tidak
terkait dengan akun perangkat. Kalender tipe ini tidak disinkronkan dengan server. Untuk
diskusi tentang adaptor sinkronisasi, lihat <a href="#sync-adapter">Adaptor Sinkronisasi</a>.</p>
@@ -434,7 +434,7 @@ android.provider.CalendarContract.Events}.</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
-
+
<td>Durasi kejadian dalam format <a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a>.
Misalnya, nilai <code>&quot;PT1H&quot;</code> menyatakan bahwa kejadian
akan berlangsung satu jam, dan nilai <code>&quot;P2W&quot;</code> menunjukkan
@@ -444,39 +444,39 @@ durasi 2 minggu. </td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
-
+
<td>Nilai 1 menunjukkan kejadian ini memakan waktu sehari penuh, seperti yang didefinisikan oleh
zona waktu lokal. Nilai 0 menunjukkan kejadian adalah kejadian biasa yang mungkin dimulai
dan selesai pada sembarang waktu selama suatu hari.</td>
-
+
</tr>
-
-
+
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
-
+
<td>Aturan perulangan untuk format kejadian. Misalnya,
<code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>. Anda bisa menemukan
contoh selengkapnya <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">di sini</a>.</td>
-
+
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
- <td>Tanggal perulangan kejadian.
- Anda biasanya menggunakan {@link android.provider.CalendarContract.EventsColumns#RDATE}
- bersama dengan {@link android.provider.CalendarContract.EventsColumns#RRULE}
+ <td>Tanggal perulangan kejadian.
+ Anda biasanya menggunakan {@link android.provider.CalendarContract.EventsColumns#RDATE}
+ bersama dengan {@link android.provider.CalendarContract.EventsColumns#RRULE}
untuk mendefinisikan satu set agregat
kejadian berulang. Untuk diskusi selengkapnya, lihat <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">Spesifikasi RFC5545</a>.</td>
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
-
- <td>Jika kejadian ini dihitung sebagai waktu sibuk atau waktu bebas yang bisa
+
+ <td>Jika kejadian ini dihitung sebagai waktu sibuk atau waktu bebas yang bisa
dijadwalkan. </td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
@@ -514,11 +514,11 @@ java.util.TimeZone#getAvailableIDs()}. Perhatikan bahwa aturan ini tidak berlaku
Anda menyisipkan kejadian melalui Intent {@link
android.content.Intent#ACTION_INSERT INSERT}, yang dijelaskan dalam <a href="#intent-insert">Menggunakan intent untuk menyisipkan kejadian</a>&mdash;dalam
skenario itu, sebuah zona waktu default akan diberikan.</li>
-
+
<li>Untuk kejadian tidak-berulang, Anda harus menyertakan {@link
android.provider.CalendarContract.EventsColumns#DTEND}. </li>
-
-
+
+
<li>Untuk kejadian berulang, Anda harus menyertakan sebuah {@link
android.provider.CalendarContract.EventsColumns#DURATION} selain {@link
android.provider.CalendarContract.EventsColumns#RRULE} atau {@link
@@ -526,9 +526,9 @@ android.provider.CalendarContract.EventsColumns#RDATE}. Perhatikan bahwa aturan
Anda menyisipkan kejadian melalui Intent {@link
android.content.Intent#ACTION_INSERT INSERT}, yang dijelaskan dalam <a href="#intent-insert">Menggunakan intent untuk menyisipkan kejadian</a>&mdash;dalam
skenario itu, Anda bisa menggunakan {@link
-android.provider.CalendarContract.EventsColumns#RRULE} bersama {@link android.provider.CalendarContract.EventsColumns#DTSTART} dan {@link android.provider.CalendarContract.EventsColumns#DTEND}, dan aplikasi Calendar
+android.provider.CalendarContract.EventsColumns#RRULE} bersama {@link android.provider.CalendarContract.EventsColumns#DTSTART} dan {@link android.provider.CalendarContract.EventsColumns#DTEND}, dan aplikasi Calendar
akan mengubahnya menjadi durasi secara otomatis.</li>
-
+
</ul>
<p>Berikut ini adalah contoh penyisipan kejadian. Penyisipan ini dilakukan dalam thread UI
@@ -539,8 +539,8 @@ informasi selengkapnya, lihat {@link android.content.AsyncQueryHandler}.</p>
<pre>
long calID = 3;
-long startMillis = 0;
-long endMillis = 0;
+long startMillis = 0;
+long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@ Uri uri = cr.insert(Events.CONTENT_URI, values);
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
-//
+//
// ... do something with event ID
//
//</pre>
@@ -578,14 +578,14 @@ peserta atau pengingat ke kejadian.</p>
gunakan Intent {@link android.content.Intent#ACTION_EDIT EDIT}, seperti
dijelaskan dalam <a href="#intent-edit">Menggunakan intent untuk mengedit kejadian</a>.
Akan tetapi, jika perlu, Anda bisa mengedit kejadian secara langsung. Untuk melakukan pembaruan
-suatu kejadian, Anda bisa memberikan <code>_ID</code>
+suatu kejadian, Anda bisa memberikan <code>_ID</code>
kejadian itu sebagai ID yang ditambahkan ke URI ({@link
-android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
-atau sebagai item pemilihan pertama.
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+atau sebagai item pemilihan pertama.
Pemilihan harus dimulai dengan <code>&quot;_id=?&quot;</code>, dan
<code>selectionArg</code> yang pertama harus berupa <code>_ID</code> kejadian. Anda juga bisa
melakukan pembaruan dengan menggunakan pemilihan tanpa ID. Berikut ini adalah contoh pembaruan
-kejadian. Contoh ini mengubah judul kejadian dengan pendekatan
+kejadian. Contoh ini mengubah judul kejadian dengan pendekatan
{@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}
:</p>
@@ -598,7 +598,7 @@ ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
Uri updateUri = null;
// The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;);
+values.put(Events.TITLE, &quot;Kickboxing&quot;);
updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().update(updateUri, values, null, null);
Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows); </pre>
@@ -625,22 +625,22 @@ ContentValues values = new ContentValues();
Uri deleteUri = null;
deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().delete(deleteUri, null, null);
-Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
</pre>
<h2 id="attendees">Tabel Peserta</h2>
<p>Tiap baris tabel {@link android.provider.CalendarContract.Attendees}
-mewakili satu peserta atau tamu dari sebuah kejadian. Memanggil
-{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
+mewakili satu peserta atau tamu dari sebuah kejadian. Memanggil
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
akan menghasilkan daftar peserta untuk
-kejadian dengan {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} yang diberikan.
-{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} ini
+kejadian dengan {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} yang diberikan.
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} ini
harus cocok dengan {@link
-android.provider.BaseColumns#_ID} kejadian tertentu.</p>
+android.provider.BaseColumns#_ID} kejadian tertentu.</p>
<p>Tabel berikut mencantumkan
-bidang-bidang yang bisa ditulis. Saat menyisipkan peserta baru, Anda harus menyertakan semuanya
+bidang-bidang yang bisa ditulis. Saat menyisipkan peserta baru, Anda harus menyertakan semuanya
kecuali <code>ATTENDEE_NAME</code>.
</p>
@@ -698,7 +698,7 @@ kecuali <code>ATTENDEE_NAME</code>.
<h3 id="add-attendees">Menambahkan Peserta</h3>
<p>Berikut ini adalah contoh yang menambahkan satu peserta ke kejadian. Perhatikan bahwa
-{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
diperlukan:</p>
<pre>
@@ -718,17 +718,17 @@ Uri uri = cr.insert(Attendees.CONTENT_URI, values);
<h2 id="reminders">Tabel Pengingat</h2>
<p>Tiap baris tabel {@link android.provider.CalendarContract.Reminders}
-mewakili satu pengingat untuk sebuah kejadian. Memanggil
+mewakili satu pengingat untuk sebuah kejadian. Memanggil
{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} akan menghasilkan daftar pengingat untuk
-kejadian dengan
+kejadian dengan
{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} yang diberikan.</p>
<p>Tabel berikut mencantumkan bidang-bidang yang bisa ditulis untuk pengingat. Semua bidang harus
disertakan saat menyisipkan pengingat baru. Perhatikan bahwa adaptor sinkronisasi menetapkan
tipe pengingat yang didukungnya dalam tabel {@link
-android.provider.CalendarContract.Calendars}. Lihat
-{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
+android.provider.CalendarContract.Calendars}. Lihat
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
untuk detailnya.</p>
@@ -773,16 +773,16 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
<h2 id="instances">Tabel Instances</h2>
-<p>Tabel
+<p>Tabel
{@link android.provider.CalendarContract.Instances} menyimpan
waktu mulai dan waktu selesai kejadian. Tiap baris dalam tabel ini
mewakili satu bentuk kejadian. Tabel instance tidak bisa ditulis dan hanya
menyediakan sebuah cara untuk membuat query kejadian. </p>
-<p>Tabel berikut mencantumkan beberapa bidang yang bisa Anda query untuk suatu instance. Perhatikan
-bahwa zona waktu didefinisikan oleh
-{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
-dan
+<p>Tabel berikut mencantumkan beberapa bidang yang bisa Anda query untuk suatu instance. Perhatikan
+bahwa zona waktu didefinisikan oleh
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
+dan
{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}.</p>
@@ -801,18 +801,18 @@ dan
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
-
+
<td>Hari selesai Julian dari instance, relatif terhadap
-zona waktu Kalender.
-
+zona waktu Kalender.
+
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
-
+
<td>Menit selesai dari instance yang diukur dari tengah malam di zona waktu
Kalender.</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
@@ -820,16 +820,16 @@ Kalender.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
- <td>Hari mulai Julian dari instance, relatif terhadap zona waktu Kalender.
+ <td>Hari mulai Julian dari instance, relatif terhadap zona waktu Kalender.
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-
+
<td>Menit mulai dari instance yang diukur dari tengah malam, relatif terhadap
-zona waktu Kalender.
+zona waktu Kalender.
</td>
-
+
</tr>
</table>
@@ -840,7 +840,7 @@ zona waktu Kalender.
dalam URI. Dalam contoh ini, {@link android.provider.CalendarContract.Instances}
mendapatkan akses ke bidang {@link
android.provider.CalendarContract.EventsColumns#TITLE} melalui
-implementasi antarmuka {@link android.provider.CalendarContract.EventsColumns}-nya.
+implementasi antarmuka {@link android.provider.CalendarContract.EventsColumns}-nya.
Dengan kata lain, {@link
android.provider.CalendarContract.EventsColumns#TITLE} dihasilkan melalui
tampilan database, bukan melalui query terhadap tabel {@link
@@ -853,7 +853,7 @@ public static final String[] INSTANCE_PROJECTION = new String[] {
Instances.BEGIN, // 1
Instances.TITLE // 2
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_BEGIN_INDEX = 1;
@@ -868,7 +868,7 @@ long startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2011, 10, 24, 8, 0);
long endMillis = endTime.getTimeInMillis();
-
+
Cursor cur = null;
ContentResolver cr = getContentResolver();
@@ -883,28 +883,28 @@ ContentUris.appendId(builder, startMillis);
ContentUris.appendId(builder, endMillis);
// Submit the query
-cur = cr.query(builder.build(),
- INSTANCE_PROJECTION,
- selection,
- selectionArgs,
+cur = cr.query(builder.build(),
+ INSTANCE_PROJECTION,
+ selection,
+ selectionArgs,
null);
-
+
while (cur.moveToNext()) {
String title = null;
long eventID = 0;
- long beginVal = 0;
-
+ long beginVal = 0;
+
// Get the field values
eventID = cur.getLong(PROJECTION_ID_INDEX);
beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
title = cur.getString(PROJECTION_TITLE_INDEX);
-
- // Do something with the values.
- Log.i(DEBUG_TAG, "Event: " + title);
+
+ // Do something with the values.
+ Log.i(DEBUG_TAG, "Event: " + title);
Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(beginVal);
+ calendar.setTimeInMillis(beginVal);
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
- Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
+ Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
}
}</pre>
@@ -922,9 +922,9 @@ while (cur.moveToNext()) {
<td><br>
{@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
<td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
- Anda juga bisa mengacu ke URI dengan
-{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}.
-Untuk contoh yang menggunakan intent ini, lihat <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Menggunakan intent untuk menampilkan data kalender</a>.
+ Anda juga bisa mengacu ke URI dengan
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}.
+Untuk contoh yang menggunakan intent ini, lihat <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Menggunakan intent untuk menampilkan data kalender</a>.
</td>
<td>Membuka kalender pada waktu yang ditetapkan oleh <code>&lt;ms_since_epoch&gt;</code>.</td>
@@ -935,11 +935,11 @@ Untuk contoh yang menggunakan intent ini, lihat <a href="{@docRoot}guide/topics/
</td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
- Anda juga bisa mengacu ke URI dengan
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+
+ Anda juga bisa mengacu ke URI dengan
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
Untuk contoh yang menggunakan intent ini, lihat <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Menggunakan intent untuk menampilkan data kalender</a>.
-
+
</td>
<td>Menampilkan kejadian yang ditetapkan oleh <code>&lt;event_id&gt;</code>.</td>
@@ -952,12 +952,12 @@ Untuk contoh yang menggunakan intent ini, lihat <a href="{@docRoot}guide/topics/
<tr>
<td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
- Anda juga bisa mengacu ke URI dengan
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+
+ Anda juga bisa mengacu ke URI dengan
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
Untuk contoh penggunaan intent ini, lihat <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">Menggunakan intent untuk mengedit kejadian</a>.
-
-
+
+
</td>
<td>Mengedit kejadian yang ditetapkan oleh <code>&lt;event_id&gt;</code>.</td>
@@ -972,11 +972,11 @@ Untuk contoh penggunaan intent ini, lihat <a href="{@docRoot}guide/topics/provid
<br>
{@link android.content.Intent#ACTION_INSERT INSERT} </td>
<td><p><code>content://com.android.calendar/events</code></p>
-
- Anda juga bisa mengacu ke URI dengan
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+
+ Anda juga bisa mengacu ke URI dengan
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
Untuk contoh penggunaan intent ini, lihat <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">Menggunakan intent untuk menyisipkan kejadian</a>.
-
+
</td>
<td>Membuat sebuah kejadian.</td>
@@ -996,7 +996,7 @@ Untuk contoh penggunaan intent ini, lihat <a href="{@docRoot}guide/topics/provid
<td>Nama kejadian.</td>
</tr>
<tr>
-
+
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<td>Waktu mulai kejadian dalam milidetik sejak waktu patokan.</td>
@@ -1004,25 +1004,25 @@ CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME}</td>
-
+
<td>Waktu selesai kejadian dalam milidetik sejak waktu patokan.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
-
+
<td>Sebuah boolean yang menunjukkan bahwa kejadian sehari penuh. Nilai bisa
<code>true</code> atau <code>false</code>.</td> </tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
Events.EVENT_LOCATION}</td>
-
+
<td>Lokasi kejadian.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
Events.DESCRIPTION}</td>
-
+
<td>Keterangan kejadian.</td>
</tr>
<tr>
@@ -1039,16 +1039,16 @@ Events.DESCRIPTION}</td>
<td>
{@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
Events.ACCESS_LEVEL}</td>
-
+
<td>Apakah kejadian bersifat privat atau publik.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
Events.AVAILABILITY}</td>
-
+
<td>Jika kejadian ini dihitung sebagai waktu sibuk atau waktu bebas yang bisa dijadwalkan.</td>
-
-</table>
+
+</table>
<p>Bagian berikut menjelaskan cara menggunakan semua intent ini.</p>
@@ -1059,23 +1059,23 @@ akan memungkinkan aplikasi Anda menyerahkan tugas penyisipan kejadian ke Kalende
Dengan pendekatan ini, aplikasi Anda bahkan tidak perlu menyertakan izin {@link
android.Manifest.permission#WRITE_CALENDAR} dalam <a href="#manifest">file manifesnya</a>.</p>
-
+
<p>Bila pengguna menjalankan aplikasi yang menggunakan pendekatan ini, aplikasi akan mengirim
izin ke Kalender untuk menyelesaikan penambahan kejadian. Intent {@link
android.content.Intent#ACTION_INSERT INSERT} menggunakan bidang-bidang ekstra
untuk mengisi formulir lebih dahulu dengan detail kejadian dalam Kalender. Pengguna nanti bisa
membatalkan kejadian, mengedit formulir sebagaimana diperlukan, atau menyimpan kejadian ke
kalender mereka.</p>
-
+
<p>Berikut ini adalah cuplikan kode yang menjadwalkan kejadian pada tanggal 19 Januari 2012, yang berjalan
dari 7:30 pagi hingga 8:30 pagi Perhatikan hal-hal berikut tentang cuplikan kode ini:</p>
<ul>
- <li>Cuplikan kode ini menetapkan {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}
+ <li>Cuplikan kode ini menetapkan {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}
sebagai URI-nya.</li>
-
+
<li>Cuplikan kode ini menggunakan bidang-bidang ekstra {@link
android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME} dan {@link
@@ -1083,10 +1083,10 @@ android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME} untuk mengisi dahulu formulir
dengan waktu kejadian. Nilai-nilai untuk waktu ini harus dalam milidetik UTC
sejak waktu patokan.</li>
-
+
<li>Cuplikan kode ini menggunakan bidang ekstra {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
untuk memberikan daftar undangan yang dipisah koma, yang ditetapkan melalui alamat email.</li>
-
+
</ul>
<pre>
Calendar beginTime = Calendar.getInstance();
@@ -1158,18 +1158,18 @@ mengakses Penyedia Kalender:</p>
<ul>
<li>Adaptor sinkronisasi perlu menetapkan bahwa dirinya sebuah adaptor sinkronisasi dengan mengatur {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} ke <code>true</code>.</li>
-
-
+
+
<li>Adaptor sinkronisasi perlu memberikan {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} dan {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} sebagai parameter query dalam URI. </li>
-
+
<li>Adaptor sinkronisasi memiliki akses tulis ke lebih banyak kolom daripada aplikasi atau widget.
- Misalnya, aplikasi hanya bisa mengubah sedikit karakteristik kalender,
+ Misalnya, aplikasi hanya bisa mengubah sedikit karakteristik kalender,
misalnya nama, nama tampilan, pengaturan visibilitas, dan apakah kalender
disinkronkan atau tidak. Sebagai perbandingan, adaptor sinkronisasi bisa mengakses bukan hanya kolom-kolom itu, namun banyak kolom lainnya,
misalnya warna kalender, zona waktu, tingkat akses, lokasi, dan seterusnya.
-Akan tetapi, adaptor sinkronisasi dibatasi pada <code>ACCOUNT_NAME</code> dan
+Akan tetapi, adaptor sinkronisasi dibatasi pada <code>ACCOUNT_NAME</code> dan
<code>ACCOUNT_TYPE</code> yang ditetapkannya.</li> </ul>
<p>Berikut ini adalah metode pembantu yang bisa Anda gunakan untuk menghasilkan URI bagi penggunaan dengan adaptor sinkronisasi:</p>
@@ -1180,5 +1180,5 @@ Akan tetapi, adaptor sinkronisasi dibatasi pada <code>ACCOUNT_NAME</code> dan
.appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
}
</pre>
-<p>Untuk contoh implementasi adaptor sinkronisasi (yang tidak terkait secara khusus dengan Kalender), lihat
+<p>Untuk contoh implementasi adaptor sinkronisasi (yang tidak terkait secara khusus dengan Kalender), lihat
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>.
diff --git a/docs/html-intl/intl/in/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/in/guide/topics/providers/content-provider-basics.jd
index c4003caba88f..4af92771f7e1 100644
--- a/docs/html-intl/intl/in/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html-intl/intl/in/guide/topics/providers/content-provider-basics.jd
@@ -236,7 +236,7 @@ page.title=Dasar-Dasar Penyedia Konten
Misalnya, untuk mendapatkan daftar kata dan lokalnya dari Penyedia Kamus Pengguna,
Anda memanggil {@link android.content.ContentResolver#query ContentResolver.query()}.
Metode {@link android.content.ContentResolver#query query()} memanggil
- metode {@link android.content.ContentProvider#query ContentProvider.query()} yang didefinisikan oleh
+ metode {@link android.content.ContentProvider#query ContentProvider.query()} yang didefinisikan oleh
Penyedia Kamus Pengguna. Baris-baris kode berikut menunjukkan sebuah
panggilan {@link android.content.ContentResolver#query ContentResolver.query()}:
<p>
@@ -251,7 +251,7 @@ mCursor = getContentResolver().query(
</pre>
<p>
Tabel 2 menampilkan cara argumen untuk
- {@link android.content.ContentResolver#query
+ {@link android.content.ContentResolver#query
query(Uri,projection,selection,selectionArgs,sortOrder)} cocok dengan sebuah pernyataan SELECT di SQL:
</p>
<p class="table-caption">
@@ -310,7 +310,7 @@ mCursor = getContentResolver().query(
{@link android.provider.UserDictionary.Words#CONTENT_URI} mengandung URI konten dari
tabel "words" kamus pengguna. Objek {@link android.content.ContentResolver}
akan mengurai otoritas URI, dan menggunakannya untuk "mengetahui" penyedia dengan
- membandingkan otoritas tersebut dengan sebuah tabel sistem berisi penyedia yang dikenal.
+ membandingkan otoritas tersebut dengan sebuah tabel sistem berisi penyedia yang dikenal.
{@link android.content.ContentResolver} kemudian bisa mengirim argumen query ke penyedia
yang benar.
</p>
@@ -343,8 +343,8 @@ Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
salah satunya.
</p>
<p class="note">
- <strong>Catatan:</strong> Kelas-kelas {@link android.net.Uri} dan {@link android.net.Uri.Builder}
- berisi metode praktis untuk membangun objek dari string URI yang tersusun dengan baik.
+ <strong>Catatan:</strong> Kelas-kelas {@link android.net.Uri} dan {@link android.net.Uri.Builder}
+ berisi metode praktis untuk membangun objek dari string URI yang tersusun dengan baik.
{@link android.content.ContentUris} berisi metode praktis untuk menambahkan nilai ID ke
URI. Cuplikan kode sebelumnya menggunakan {@link android.content.ContentUris#withAppendedId
withAppendedId()} untuk menambahkan id ke URI konten User Dictionary.
@@ -359,8 +359,8 @@ Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
</p>
<p class="note">
Demi kejelasan, cuplikan kode di bagian ini memanggil
- {@link android.content.ContentResolver#query ContentResolver.query()} pada "UI thread"". Akan tetapi, dalam
- kode sesungguhnya, Anda harus melakukan query secara asinkron pada sebuah thread terpisah. Satu cara melakukannya
+ {@link android.content.ContentResolver#query ContentResolver.query()} pada "UI thread"". Akan tetapi, dalam
+ kode sesungguhnya, Anda harus melakukan query secara asinkron pada sebuah thread terpisah. Satu cara melakukannya
adalah menggunakan kelas {@link android.content.CursorLoader}, yang dijelaskan
lebih detail dalam panduan <a href="{@docRoot}guide/components/loaders.html">
Loader</a>. Juga, baris-baris kode tersebut hanyalah cuplikan; tidak menunjukkan sebuah aplikasi
@@ -428,7 +428,7 @@ String[] mSelectionArgs = {""};
<p>
Cuplikan berikutnya menampilkan cara menggunakan
{@link android.content.ContentResolver#query ContentResolver.query()}, dengan menggunakan Penyedia Kamus Pengguna
- sebagai contoh. Query klien penyedia serupa dengan query SQL, dan berisi satu
+ sebagai contoh. Query klien penyedia serupa dengan query SQL, dan berisi satu
set kolom yang akan dihasilkan, satu set kriteria pemilihan, dan urutan sortir.
</p>
<p>
@@ -438,8 +438,8 @@ String[] mSelectionArgs = {""};
<p>
Ekspresi yang menetapkan baris yang harus diambil dipecah menjadi klausa pemilihan dan
argumen pemilihan. Klausa pemilihan adalah kombinasi ekspresi logis dan boolean,
- nama kolom, dan nilai (variabel <code>mSelectionClause</code>). Jika Anda menetapkan
- parameter <code>?</code> yang bisa diganti, sebagai ganti nilai, metode query akan mengambil nilai
+ nama kolom, dan nilai (variabel <code>mSelectionClause</code>). Jika Anda menetapkan
+ parameter <code>?</code> yang bisa diganti, sebagai ganti nilai, metode query akan mengambil nilai
dari larik argumen pemilihan (variabel <code>mSelectionArgs</code>).
</p>
<p>
@@ -558,21 +558,21 @@ String[] selectionArgs = {""};
selectionArgs[0] = mUserInput;
</pre>
<p>
- Sebuah klausa pemilihan yang menggunakan <code>?</code> sebagai parameter yang bisa diganti dan sebuah larik
+ Sebuah klausa pemilihan yang menggunakan <code>?</code> sebagai parameter yang bisa diganti dan sebuah larik
argumen pemilihan adalah cara yang lebih disukai untuk menyebutkan pemilihan, sekalipun penyedia tidak
dibuat berdasarkan database SQL.
</p>
<!-- Displaying the results -->
<h3 id="DisplayResults">Menampilkan hasil query</h3>
<p>
- Metode klien {@link android.content.ContentResolver#query ContentResolver.query()} selalu
- menghasilkan {@link android.database.Cursor} berisi kolom-kolom yang ditetapkan oleh
+ Metode klien {@link android.content.ContentResolver#query ContentResolver.query()} selalu
+ menghasilkan {@link android.database.Cursor} berisi kolom-kolom yang ditetapkan oleh
proyeksi query untuk baris yang cocok dengan kriteria pemilihan query. Objek
- {@link android.database.Cursor} menyediakan akses baca acak ke baris dan kolom yang
- dimuatnya. Dengan metode {@link android.database.Cursor}, Anda bisa mengulang baris-baris dalam
+ {@link android.database.Cursor} menyediakan akses baca acak ke baris dan kolom yang
+ dimuatnya. Dengan metode {@link android.database.Cursor}, Anda bisa mengulang baris-baris dalam
hasil, menentukan tipe data tiap kolom, mengambil data dari kolom, dan memeriksa
- properti lain dari hasil. Beberapa implementasi {@link android.database.Cursor}
- akan memperbarui objek secara otomatis bila data penyedia berubah, atau memicu metode dalam objek pengamat
+ properti lain dari hasil. Beberapa implementasi {@link android.database.Cursor}
+ akan memperbarui objek secara otomatis bila data penyedia berubah, atau memicu metode dalam objek pengamat
bila {@link android.database.Cursor} berubah, atau keduanya.
</p>
<p class="note">
@@ -703,14 +703,14 @@ if (mCursor != null) {
<p>
Untuk mendapatkan izin yang diperlukan untuk mengakses penyedia, aplikasi memintanya dengan elemen
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
- dalam file manifesnya. Bila Android Package Manager memasang aplikasi, pengguna
- harus menyetujui semua izin yang diminta aplikasi. Jika pengguna menyetujui semuanya,
+ dalam file manifesnya. Bila Android Package Manager memasang aplikasi, pengguna
+ harus menyetujui semua izin yang diminta aplikasi. Jika pengguna menyetujui semuanya,
Package Manager akan melanjutkan instalasi; jika pengguna tidak menyetujui, Package Manager
akan membatalkan instalasi.
</p>
<p>
Elemen
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
berikut meminta akses baca ke Penyedia Kamus Pengguna:
</p>
<pre>
@@ -793,8 +793,8 @@ content://user_dictionary/words/&lt;id_value&gt;
Untuk memperbarui sebuah baris, gunakan objek {@link android.content.ContentValues} dengan
nilai-nilai yang diperbarui, persis seperti yang Anda lakukan pada penyisipan, dan kriteria pemilihan persis seperti yang Anda lakukan pada query.
Metode klien yang Anda gunakan adalah
- {@link android.content.ContentResolver#update ContentResolver.update()}. Anda hanya perlu menambahkan
- nilai-nilai ke objek {@link android.content.ContentValues} untuk kolom yang sedang Anda perbarui. Jika Anda
+ {@link android.content.ContentResolver#update ContentResolver.update()}. Anda hanya perlu menambahkan
+ nilai-nilai ke objek {@link android.content.ContentValues} untuk kolom yang sedang Anda perbarui. Jika Anda
ingin membersihkan konten kolom, aturlah nilai ke <code>null</code>.
</p>
<p>
@@ -828,7 +828,7 @@ mRowsUpdated = getContentResolver().update(
</pre>
<p>
Anda juga harus membersihkan input pengguna bila memanggil
- {@link android.content.ContentResolver#update ContentResolver.update()}. Untuk mengetahui selengkapnya tentang
+ {@link android.content.ContentResolver#update ContentResolver.update()}. Untuk mengetahui selengkapnya tentang
hal ini, bacalah bagian <a href="#Injection">Melindungi dari input merusak</a>.
</p>
<h3 id="Deleting">Menghapus data</h3>
@@ -858,7 +858,7 @@ mRowsDeleted = getContentResolver().delete(
</pre>
<p>
Anda juga harus membersihkan input pengguna bila memanggil
- {@link android.content.ContentResolver#delete ContentResolver.delete()}. Untuk mengetahui selengkapnya tentang
+ {@link android.content.ContentResolver#delete ContentResolver.delete()}. Untuk mengetahui selengkapnya tentang
hal ini, bacalah bagian <a href="#Injection">Melindungi dari input merusak</a>.
</p>
<!-- Provider Data Types -->
@@ -883,7 +883,7 @@ mRowsDeleted = getContentResolver().delete(
</ul>
<p>
Tipe data lain yang sering digunakan penyedia adalah Binary Large OBject (BLOB) yang diimplementasikan sebagai
- larik byte 64 KB. Anda bisa melihat tipe data yang tersedia dengan memperhatikan metode "get"
+ larik byte 64 KB. Anda bisa melihat tipe data yang tersedia dengan memperhatikan metode "get"
kelas {@link android.database.Cursor}.
</p>
<p>
@@ -905,7 +905,7 @@ mRowsDeleted = getContentResolver().delete(
{@link android.content.ContentResolver#getType ContentResolver.getType()}.
</p>
<p>
- Bagian <a href="#MIMETypeReference">Acuan Tipe MIME</a> menerangkan
+ Bagian <a href="#MIMETypeReference">Acuan Tipe MIME</a> menerangkan
sintaks tipe MIME baik yang standar maupun custom.
</p>
@@ -946,9 +946,9 @@ mRowsDeleted = getContentResolver().delete(
Untuk mengakses penyedia dalam "mode batch",
buat satu larik objek {@link android.content.ContentProviderOperation}, kemudian
kirim larik itu ke penyedia konten dengan
- {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. Anda meneruskan
- <em>otoritas</em> penyedia konten ke metode ini, daripada URI konten tertentu.
- Ini memungkinkan tiap objek {@link android.content.ContentProviderOperation} dalam larik untuk bekerja
+ {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. Anda meneruskan
+ <em>otoritas</em> penyedia konten ke metode ini, daripada URI konten tertentu.
+ Ini memungkinkan tiap objek {@link android.content.ContentProviderOperation} dalam larik untuk bekerja
terhadap tabel yang berbeda. Panggilan ke {@link android.content.ContentResolver#applyBatch
ContentResolver.applyBatch()} menghasilkan satu larik hasil.
</p>
@@ -1011,7 +1011,7 @@ mRowsDeleted = getContentResolver().delete(
<p>
Penyedia mendefinisikan izin URI untuk URI konten dalam manifesnya, dengan menggunakan atribut
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code>
- dari elemen
+ dari elemen
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
, serta elemen anak
<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
@@ -1184,7 +1184,7 @@ content://com.example.trains/Line2/5
vnd.android.cursor.<strong>item</strong>/vnd.example.line2
</pre>
<p>
- Kebanyakan penyedia konten mendefinisikan konstanta kelas kontrak untuk tipe MIME yang digunakannya. Kelas kontrak
+ Kebanyakan penyedia konten mendefinisikan konstanta kelas kontrak untuk tipe MIME yang digunakannya. Kelas kontrak
{@link android.provider.ContactsContract.RawContacts} pada Penyedia Kontak
misalnya, mendefinisikan konstanta
{@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE} untuk tipe MIME
diff --git a/docs/html-intl/intl/in/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/in/guide/topics/providers/content-provider-creating.jd
index fefce703c2c8..7fbc613ff79c 100644
--- a/docs/html-intl/intl/in/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html-intl/intl/in/guide/topics/providers/content-provider-creating.jd
@@ -1171,7 +1171,7 @@ metadata lain yang melekat ke penyedia. Kelas
<li>
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#label">
android:label</a></code>: Label informatif yang menjelaskan penyedia atau
- datanya, atau keduanya. Label ini muncul dalam daftar aplikasi di
+ datanya, atau keduanya. Label ini muncul dalam daftar aplikasi di
<em>Settings</em> &gt; <em>Apps</em> &gt; <em>All</em>.
</li>
</ul>
@@ -1189,7 +1189,7 @@ metadata lain yang melekat ke penyedia. Kelas
Aplikasi bisa mengakses penyedia konten secara tidak langsung dengan sebuah {@link android.content.Intent}.
Aplikasi tidak memanggil satu pun dari metode-metode {@link android.content.ContentResolver} atau
{@link android.content.ContentProvider}. Sebagai gantinya, aplikasi mengirim intent yang memulai aktivitas,
- yang sering kali merupakan bagian dari aplikasi penyedia sendiri. Aktivitas tujuan bertugas
+ yang sering kali merupakan bagian dari aplikasi penyedia sendiri. Aktivitas tujuan bertugas
mengambil dan menampilkan data dalam UI-nya. Bergantung pada tindakan dalam intent,
aktivitas tujuan juga bisa meminta pengguna untuk membuat modifikasi pada data penyedia.
Intent juga bisa berisi data "ekstra" yang menampilkan aktivitas tujuan
diff --git a/docs/html-intl/intl/in/guide/topics/providers/content-providers.jd b/docs/html-intl/intl/in/guide/topics/providers/content-providers.jd
index fc6f12b6f569..2dcd55e8fc29 100644
--- a/docs/html-intl/intl/in/guide/topics/providers/content-providers.jd
+++ b/docs/html-intl/intl/in/guide/topics/providers/content-providers.jd
@@ -69,7 +69,7 @@ menempelkan data atau file yang kompleks dari aplikasi Anda ke aplikasi lain.
<p>
Android sendiri berisi penyedia konten yang mengelola data seperti informasi audio, video, gambar, dan
kontak pribadi. Anda bisa melihat sebagian informasi ini tercantum dalam dokumentasi
- acuan untuk paket
+ acuan untuk paket
<code><a href="{@docRoot}reference/android/provider/package-summary.html">android.provider</a>
</code>. Dengan beberapa batasan, semua penyedia ini bisa diakses oleh aplikasi Android
apa saja.
diff --git a/docs/html-intl/intl/in/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/in/guide/topics/providers/document-provider.jd
index c066e85b283d..f85746753c01 100644
--- a/docs/html-intl/intl/in/guide/topics/providers/document-provider.jd
+++ b/docs/html-intl/intl/in/guide/topics/providers/document-provider.jd
@@ -96,7 +96,7 @@ walaupun cara penyedia dokumen Anda secara fisik menyimpan data adalah terserah
Platform Android terdiri dari beberapa penyedia dokumen bawaan, seperti
Downloads, Images, dan Videos.</li>
-<li><strong>Aplikasi klien</strong>&mdash;Aplikasi custom yang memanggil intent
+<li><strong>Aplikasi klien</strong>&mdash;Aplikasi custom yang memanggil intent
{@link android.content.Intent#ACTION_OPEN_DOCUMENT} dan/atau
{@link android.content.Intent#ACTION_CREATE_DOCUMENT} dan menerima
file yang dihasilkan penyedia dokumen.</li>
@@ -446,7 +446,7 @@ bisa terus menulis ke dokumen itu.</p>
<h3 id="delete">Menghapus dokumen</h3>
-<p>Jika Anda memiliki URI dokumen dan
+<p>Jika Anda memiliki URI dokumen dan
{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS Document.COLUMN_FLAGS}
dokumen berisi
{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE SUPPORTS_DELETE},
diff --git a/docs/html-intl/intl/in/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/in/guide/topics/resources/accessing-resources.jd
index e4a0bea1e36a..6774557b9e62 100644
--- a/docs/html-intl/intl/in/guide/topics/resources/accessing-resources.jd
+++ b/docs/html-intl/intl/in/guide/topics/resources/accessing-resources.jd
@@ -60,7 +60,7 @@ melihat ke sana untuk menemukan ID sumber daya. ID sumber daya selalu terdiri da
string}, {@code drawable}, dan {@code layout}. Untuk mengetahui selengkapnya tentang berbagai tipe, lihat <a href="available-resources.html">Tipe Sumber Daya</a>.
</li>
<li><em>Nama sumber daya</em>, bisa berupa: nama file,
-tidak termasuk ekstensi; atau nilai dalam atribut {@code android:name} XML, jika
+tidak termasuk ekstensi; atau nilai dalam atribut {@code android:name} XML, jika
sumber daya itu sebuah nilai sederhana (misalnya sebuah string).</li>
</ul>
@@ -259,8 +259,8 @@ mengacu sumber daya sistem, Anda perlu memasukkan nama paketnya. Misalnya:</p>
android:text=&quot;&#64;string/hello&quot; /&gt;
</pre>
-<p class="note"><strong>Catatan:</strong> Anda harus menggunakan sumber daya string sepanjang
-waktu, sehingga aplikasi Anda bisa dilokalkan untuk bahasa lain.
+<p class="note"><strong>Catatan:</strong> Anda harus menggunakan sumber daya string sepanjang
+waktu, sehingga aplikasi Anda bisa dilokalkan untuk bahasa lain.
Untuk informasi tentang cara menciptakan
sumber daya alternatif (seperti string lokal), lihat <a href="providing-resources.html#AlternativeResources">Menyediakan Sumber Daya Alternatif
</a>. Untuk panduan lengkap melokalkan aplikasi Anda ke bahasa lain,
@@ -332,6 +332,6 @@ android.widget.ArrayAdapter}&lt;String&gt;(this, <strong>android.R.layout.simple
<p>Dalam contoh ini, {@link android.R.layout#simple_list_item_1} adalah sumber daya layout yang didefinisikan oleh
platform untuk item di {@link android.widget.ListView}. Anda bisa menggunakannya sebagai ganti menciptakan
-layout sendiri untuk item daftar. Untuk informasi selengkapnya, lihat panduan pengembang
+layout sendiri untuk item daftar. Untuk informasi selengkapnya, lihat panduan pengembang
<a href="{@docRoot}guide/topics/ui/layout/listview.html">List View</a>.</p>
diff --git a/docs/html-intl/intl/in/guide/topics/resources/overview.jd b/docs/html-intl/intl/in/guide/topics/resources/overview.jd
index 966800cf7daa..def4932f4af4 100644
--- a/docs/html-intl/intl/in/guide/topics/resources/overview.jd
+++ b/docs/html-intl/intl/in/guide/topics/resources/overview.jd
@@ -24,7 +24,7 @@ aplikasi, agar Anda bisa memeliharanya secara independen. Mengeksternalkan
sumber daya juga membuat Anda dapat menyediakan sumber daya alternatif yang mendukung konfigurasi
perangkat tertentu seperti bahasa atau ukuran layar yang berbeda, yang semakin penting
seiring semakin banyak tersedianya perangkat berbasis Android dengan konfigurasi berbeda. Untuk
-memberikan kompatibilitas dengan konfigurasi berbeda, Anda harus menata sumber daya dalam
+memberikan kompatibilitas dengan konfigurasi berbeda, Anda harus menata sumber daya dalam
direktori {@code res/} proyek Anda, menggunakan berbagai subdirektori yang mengelompokkan sumber daya menurut tipe
dan konfigurasinya.</p>
@@ -46,7 +46,7 @@ ukuran layar berbeda.</p>
<em>alternatif</em> untuk aplikasi Anda:</p>
<ul>
<li>Sumber daya default adalah sumber daya yang harus digunakan apa pun
-konfigurasi perangkatnya atau jika tidak ada sumber daya alternatif yang sesuai
+konfigurasi perangkatnya atau jika tidak ada sumber daya alternatif yang sesuai
dengan konfigurasi saat ini.</li>
<li>Sumber daya alternatif adalah sumber daya yang Anda desain untuk digunakan dengan
konfigurasi tertentu. Untuk menetapkan bahwa satu kelompok sumber daya ditujukan bagi konfigurasi tertentu,
diff --git a/docs/html-intl/intl/in/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/in/guide/topics/resources/providing-resources.jd
index d6bbfc58d911..9bccd24e643a 100644
--- a/docs/html-intl/intl/in/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/in/guide/topics/resources/providing-resources.jd
@@ -176,7 +176,7 @@ string</a>.</li>
<li>styles.xml untuk <a href="style-resource.html">gaya</a>.</li>
</ul>
<p>Lihat <a href="string-resource.html">Sumber Daya String</a>,
- <a href="style-resource.html">Sumber Daya Gaya</a>, dan
+ <a href="style-resource.html">Sumber Daya Gaya</a>, dan
<a href="more-resources.html">Tipe Sumber Daya Lainnya</a>.</p>
</td>
</tr>
@@ -289,7 +289,7 @@ qualifier konfigurasi.</p>
dari kartu SIM dalam perangkat. Misalnya, <code>mcc310</code> adalah AS untuk operator mana saja,
<code>mcc310-mnc004</code> adalah AS untuk Verizon, dan <code>mcc208-mnc00</code> Prancis untuk
Orange.</p>
- <p>Jika perangkat menggunakan koneksi radio (ponsel GSM), nilai-nilai MCC dan MNC berasal
+ <p>Jika perangkat menggunakan koneksi radio (ponsel GSM), nilai-nilai MCC dan MNC berasal
dari kartu SIM.</p>
<p>Anda juga dapat menggunakan MNC saja (misalnya, untuk menyertakan sumber daya legal
spesifik untuk negara itu di aplikasi Anda). Jika Anda perlu menetapkan hanya berdasarkan bahasa, maka gunakan qualifier
@@ -312,7 +312,7 @@ dan kode jaringan seluler.</p>
dll.
</td>
<td><p>Bahasa didefinisikan oleh kode bahasa dua huruf <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
-639-1</a>, bisa juga diikuti dengan kode wilayah
+639-1</a>, bisa juga diikuti dengan kode wilayah
dua huruf <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO
3166-1-alpha-2</a> (diawali dengan huruf kecil "{@code r}").
</p><p>
@@ -428,8 +428,8 @@ berubah antara lanskap dan potret agar cocok dengan lebar sebenarnya saat ini.</
<p>Bila aplikasi Anda menyediakan beberapa direktori sumber daya dengan nilai yang berbeda
untuk konfigurasi ini, sistem akan menggunakan nilai terdekat dengan (tanpa melebihi)
lebar layar perangkat saat ini. Nilai
-di sini memperhitungkan dekorasi layar akun, jadi jika perangkat memiliki beberapa
-elemen UI persisten di tepi kiri atau kanan, layar
+di sini memperhitungkan dekorasi layar akun, jadi jika perangkat memiliki beberapa
+elemen UI persisten di tepi kiri atau kanan, layar
menggunakan nilai lebar yang lebih kecil daripada ukuran layar sebenarnya, yang memperhitungkan
elemen UI ini dan mengurangi ruang aplikasi yang tersedia.</p>
<p><em>Ditambahkan dalam API level 13.</em></p>
@@ -455,14 +455,14 @@ sumber daya &mdash;bersama nilai yang didefinisikan oleh <code>&lt;N&gt;</code>.
berubah antara lanskap dan potret agar cocok dengan tinggi sebenarnya saat ini.</p>
<p>Bila aplikasi menyediakan beberapa direktori sumber daya dengan nilai yang berbeda
untuk konfigurasi ini, sistem akan menggunakan nilai yang terdekat dengan (tanpa melebihi)
- tinggi layar perangkat saat ini. Nilai
+ tinggi layar perangkat saat ini. Nilai
di sini memperhitungkan dekorasi layar akun, jadi jika perangkat memiliki beberapa
elemen UI persisten di tepi atas atau bawah, layar akan
menggunakan nilai tinggi yang lebih kecil daripada ukuran layar sebenarnya, memperhitungkan
-elemen UI ini dan mengurangi ruang aplikasi yang tersedia. Dekorasi
-layar yang tidak tetap (misalnya baris status (status-bar) telepon yang bisa
-disembunyikan saat layar penuh) di sini <em>tidak</em> diperhitungkan, demikian pula
-dekorasi jendela seperti baris judul (title-bar)atau baris tindakan (action-bar), jadi aplikasi harus disiapkan
+elemen UI ini dan mengurangi ruang aplikasi yang tersedia. Dekorasi
+layar yang tidak tetap (misalnya baris status (status-bar) telepon yang bisa
+disembunyikan saat layar penuh) di sini <em>tidak</em> diperhitungkan, demikian pula
+dekorasi jendela seperti baris judul (title-bar)atau baris tindakan (action-bar), jadi aplikasi harus disiapkan
untuk menangani ruang yang agak lebih kecil daripada yang ditetapkan.
<p><em>Ditambahkan dalam API level 13.</em></p>
<p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#screenHeightDp}
@@ -482,35 +482,35 @@ Multi Layar</a>.</p>
</td>
<td>
<ul class="nolist">
- <li>{@code small}: Layar yang berukuran serupa dengan
-layar QVGA densitas rendah. Ukuran layout minimum untuk layar kecil
-adalah sekitar 320x426 satuan dp. Misalnya QVGA densitas rendah
+ <li>{@code small}: Layar yang berukuran serupa dengan
+layar QVGA densitas rendah. Ukuran layout minimum untuk layar kecil
+adalah sekitar 320x426 satuan dp. Misalnya QVGA densitas rendah
dan VGA densitas tinggi.</li>
- <li>{@code normal}: Layar yang berukuran serupa dengan
+ <li>{@code normal}: Layar yang berukuran serupa dengan
layar HVGA densitas sedang. Ukuran layout minimum untuk
-layar normal adalah sekitar 320x470 satuan dp. Contoh layar seperti itu adalah
+layar normal adalah sekitar 320x470 satuan dp. Contoh layar seperti itu adalah
WQVGA densitas rendah, HVGA densitas sedang, WVGA
densitas tinggi.</li>
- <li>{@code large}: Layar yang berukuran serupa dengan
+ <li>{@code large}: Layar yang berukuran serupa dengan
layar VGA densitas sedang.
Ukuran layout minimum untuk layar besar adalah sekitar 480x640 satuan dp.
Misalnya layar VGA dan WVGA densitas sedang.</li>
- <li>{@code xlarge}: Layar yang jauh lebih besar dari layar HVGA
-densitas sedang tradisional. Ukuran layout minimum untuk
-layar ekstra besar adalah sekitar 720x960 satuan dp. Perangkat dengan layar ekstra besar
+ <li>{@code xlarge}: Layar yang jauh lebih besar dari layar HVGA
+densitas sedang tradisional. Ukuran layout minimum untuk
+layar ekstra besar adalah sekitar 720x960 satuan dp. Perangkat dengan layar ekstra besar
seringkali terlalu besar untuk dibawa dalam saku dan kemungkinan besar
berupa perangkat bergaya tablet. <em>Ditambahkan dalam API level 9.</em></li>
</ul>
- <p class="note"><strong>Catatan:</strong> Menggunakan qualifier ukuran tidak berarti bahwa
+ <p class="note"><strong>Catatan:</strong> Menggunakan qualifier ukuran tidak berarti bahwa
sumber daya <em>hanya</em> untuk layar ukuran itu saja. Jika Anda tidak menyediakan sumber
daya alternatif dengan qualifier yang lebih cocok dengan konfigurasi perangkat saat ini, sistem dapat menggunakan sumber daya
mana saja yang <a href="#BestMatch">paling cocok</a>.</p>
- <p class="caution"><strong>Perhatian:</strong> Jika semua sumber daya Anda menggunakan
-qualifier yang berukuran <em>lebih besar</em> daripada layar saat ini, sistem <strong>tidak</strong> akan menggunakannya dan aplikasi
+ <p class="caution"><strong>Perhatian:</strong> Jika semua sumber daya Anda menggunakan
+qualifier yang berukuran <em>lebih besar</em> daripada layar saat ini, sistem <strong>tidak</strong> akan menggunakannya dan aplikasi
Anda akan crash saat runtime (misalnya, jika semua sumber daya layout ditandai dengan qualifier {@code
xlarge}, namun perangkat memiliki ukuran layar normal).</p>
<p><em>Ditambahkan dalam API level 4.</em></p>
-
+
<p>Lihat <a href="{@docRoot}guide/practices/screens_support.html">Mendukung Beberapa
Layar</a> untuk informasi selengkapnya.</p>
<p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#screenLayout},
@@ -552,7 +552,7 @@ tidak ada kaitannya dengan orientasi layar.</p>
<p>Ini bisa berubah selama masa pakai aplikasi Anda jika pengguna memutar
layar. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk
informasi tentang bagaimana hal ini memengaruhi aplikasi Anda selama runtime.</p>
- <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#orientation},
+ <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#orientation},
yang menunjukkan orientasi perangkat saat ini.</p>
</td>
</tr>
@@ -569,19 +569,19 @@ yang menunjukkan orientasi perangkat saat ini.</p>
<ul class="nolist">
<li>{@code car}: Perangkat sedang menampilkan di dudukan perangkat di mobil</li>
<li>{@code desk}: Perangkat sedang menampilkan di dudukan perangkat di meja</li>
- <li>{@code television}: Perangkat sedang menampilkan di televisi, yang menyediakan
+ <li>{@code television}: Perangkat sedang menampilkan di televisi, yang menyediakan
pengalaman "sepuluh kaki" dengan UI-nya pada layar besar yang berada jauh dari pengguna,
-terutama diorientasikan seputar DPAD atau
+terutama diorientasikan seputar DPAD atau
interaksi non-pointer lainnya</li>
- <li>{@code appliance}: Perangkat berlaku sebagai
+ <li>{@code appliance}: Perangkat berlaku sebagai
alat, tanpa tampilan</li>
<li>{@code watch}: Perangkat memiliki tampilan dan dikenakan di pergelangan tangan</li>
</ul>
<p><em>Ditambahkan dalam API level 8, televisi ditambahkan dalam API 13, jam ditambahkan dalam API 20.</em></p>
- <p>Untuk informasi tentang cara aplikasi merespons saat perangkat dimasukkan
+ <p>Untuk informasi tentang cara aplikasi merespons saat perangkat dimasukkan
ke dalam atau dilepaskan dari dudukannya, bacalah <a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">Menentukan
dan Memantau Kondisi dan Tipe Dudukan</a>.</p>
- <p>Ini bisa berubah selama masa pakai aplikasi jika pengguna menempatkan perangkat di
+ <p>Ini bisa berubah selama masa pakai aplikasi jika pengguna menempatkan perangkat di
dudukannya. Anda dapat mengaktifkan atau menonaktifkan sebagian mode ini menggunakan {@link
android.app.UiModeManager}. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk
informasi tentang bagaimana hal ini memengaruhi aplikasi Anda selama runtime.</p>
@@ -601,7 +601,7 @@ informasi tentang bagaimana hal ini memengaruhi aplikasi Anda selama runtime.</p
<p><em>Ditambahkan dalam API level 8.</em></p>
<p>Ini bisa berubah selama masa pakai aplikasi jika mode malam dibiarkan dalam
mode otomatis (default), dalam hal ini perubahan mode berdasarkan pada waktu hari. Anda dapat mengaktifkan
-atau menonaktifkan mode ini menggunakan {@link android.app.UiModeManager}. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk informasi tentang bagaimana hal ini memengaruhi
+atau menonaktifkan mode ini menggunakan {@link android.app.UiModeManager}. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk informasi tentang bagaimana hal ini memengaruhi
aplikasi Anda selama runtime.</p>
</td>
</tr>
@@ -627,8 +627,8 @@ aplikasi Anda selama runtime.</p>
Level 8.</em></li>
<li>{@code xxhdpi}: Layar densitas ekstra-ekstra-tinggi; sekitar 480 dpi. <em>Ditambahkan dalam API
Level 16.</em></li>
- <li>{@code xxxhdpi}: Densitas ekstra-ekstra-ekstra-tinggi (hanya ikon launcher,
-lihat <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">catatan</a>
+ <li>{@code xxxhdpi}: Densitas ekstra-ekstra-ekstra-tinggi (hanya ikon launcher,
+lihat <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">catatan</a>
dalam <em>Mendukung Beberapa Layar</em>); sekitar 640 dpi. <em>Ditambahkan dalam API
Level 18.</em></li>
<li>{@code nodpi}: Ini bisa digunakan untuk sumber daya bitmap yang tidak ingin Anda
@@ -696,7 +696,7 @@ fisik. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untu
hal ini memengaruhi aplikasi Anda selama runtime.</p>
<p>Lihat juga bidang konfigurasi {@link
android.content.res.Configuration#hardKeyboardHidden} dan {@link
-android.content.res.Configuration#keyboardHidden}, yang menunjukkan visibilitas
+android.content.res.Configuration#keyboardHidden}, yang menunjukkan visibilitas
keyboard fisik dan visibilitas segala jenis keyboard (termasuk keyboard perangkat lunak), masing-masing.</p>
</td>
</tr>
@@ -716,7 +716,7 @@ pengguna
<li>{@code 12key}: Perangkat memiliki keyboard fisik 12 tombol, baik terlihat maupun tidak
pada pengguna.</li>
</ul>
- <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#keyboard},
+ <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#keyboard},
yang menunjukkan metode utama input teks yang tersedia.</p>
</td>
</tr>
@@ -810,7 +810,7 @@ Sumber Daya</a>.</p>
<li>Anda bisa menetapkan beberapa qualifier untuk satu set sumber daya, yang dipisahkan dengan tanda hubung. Misalnya,
<code>drawable-en-rUS-land</code> berlaku untuk perangkat bahasa Inggris-AS dalam orientasi
lanskap.</li>
- <li>Qualifier harus dalam urutan seperti yang tercantum dalam <a href="#table2">tabel 2</a>.
+ <li>Qualifier harus dalam urutan seperti yang tercantum dalam <a href="#table2">tabel 2</a>.
Misalnya:
<ul>
<li>Salah: <code>drawable-hdpi-port/</code></li>
@@ -947,7 +947,7 @@ layout-land/} untuk lanskap dan {@code layout-port/} untuk potret, biarkan salah
{@code layout/} untuk lanskap dan {@code layout-port/} untuk potret.</p>
<p>Sumber daya default perlu disediakan bukan hanya karena aplikasi mungkin berjalan pada
-konfigurasi yang belum Anda antisipasi, namun juga karena versi baru Android terkadang menambahkan
+konfigurasi yang belum Anda antisipasi, namun juga karena versi baru Android terkadang menambahkan
qualifier konfigurasi yang tidak didukung oleh versi lama. Jika Anda menggunakan qualifier sumber daya baru,
namun mempertahankan kompatibilitas kode dengan versi Android yang lebih lama, maka saat versi lama
Android menjalankan aplikasi, aplikasi itu akan crash jika Anda tidak menyediakan sumber daya default, aplikasi
@@ -1058,7 +1058,7 @@ Layar</a>.</p>
</li>
<li>Kembali dan ulangi langkah 2, 3, dan 4 hingga tersisa satu direktori. Dalam contoh ini, orientasi
-layar adalah qualifier berikutnya yang memiliki kecocokan.
+layar adalah qualifier berikutnya yang memiliki kecocokan.
Jadi, sumber daya yang tidak menetapkan orientasi layar akan dihapus:
<pre class="classic no-pretty-print">
<strike>drawable-en/</strike>
diff --git a/docs/html-intl/intl/in/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/in/guide/topics/resources/runtime-changes.jd
index c9a5ead63c77..09ad60c369ff 100644
--- a/docs/html-intl/intl/in/guide/topics/resources/runtime-changes.jd
+++ b/docs/html-intl/intl/in/guide/topics/resources/runtime-changes.jd
@@ -82,12 +82,12 @@ aktivitas untuk mempertahankan objek stateful.</p>
<p>Untuk mempertahankan objek stateful dalam fragmen selama perubahan konfigurasi runtime:</p>
<ol>
- <li>Perluas kelas {@link android.app.Fragment} dan deklarasikan referensi ke objek stateful
+ <li>Perluas kelas {@link android.app.Fragment} dan deklarasikan referensi ke objek stateful
Anda.</li>
<li>Panggil {@link android.app.Fragment#setRetainInstance(boolean)} saat fragmen dibuat.
</li>
<li>Tambahkan fragmen ke aktivitas.</li>
- <li>Gunakan {@link android.app.FragmentManager} untuk mengambil fragmen saat aktivitas
+ <li>Gunakan {@link android.app.FragmentManager} untuk mengambil fragmen saat aktivitas
di-restart.</li>
</ol>
@@ -125,8 +125,8 @@ membocorkan semua tampilan dan sumber daya instance aktivitas semula. (Sumber da
berarti bahwa aplikasi Anda tetap menyimpannya dan tidak bisa dijadikan kumpulan sampah, sehingga bisa banyak
memori yang hilang.)</p>
-<p>Selanjutnya gunakan {@link android.app.FragmentManager} untuk menambahkan fragmen ke aktivitas.
-Anda bisa memperoleh objek data dari fragmen saat aktivitas memulai kembali selama perubahan
+<p>Selanjutnya gunakan {@link android.app.FragmentManager} untuk menambahkan fragmen ke aktivitas.
+Anda bisa memperoleh objek data dari fragmen saat aktivitas memulai kembali selama perubahan
konfigurasi runtime. Misalnya, definisikan aktivitas Anda sebagai berikut:</p>
<pre>
diff --git a/docs/html-intl/intl/in/guide/topics/ui/controls.jd b/docs/html-intl/intl/in/guide/topics/ui/controls.jd
index 7ee2957980a8..3ebf48b5c9d4 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@ semacam kontrol input tertentu, Anda bisa membangun <a href="{@docRoot}guide/top
<tr>
<td><a href="controls/radiobutton.html">Tombol radio</a></td>
<td>Mirip dengan kotak cek, hanya saja cuma satu opsi yang bisa dipilih dalam kumpulan tersebut.</td>
- <td>{@link android.widget.RadioGroup RadioGroup}
+ <td>{@link android.widget.RadioGroup RadioGroup}
<br>{@link android.widget.RadioButton RadioButton} </td>
</tr>
<tr>
diff --git a/docs/html-intl/intl/in/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/in/guide/topics/ui/declaring-layout.jd
index 83ff7461e7ac..1c8a0d6eccaa 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/declaring-layout.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/declaring-layout.jd
@@ -74,7 +74,7 @@ tertarik dalam membuat instance objek View saat runtime, lihat referensi kelas {
<code>EditText.setText()</code>. </p>
<p class="note"><strong>Tip:</strong> Ketahui selengkapnya berbagai tipe layout dalam <a href="{@docRoot}guide/topics/ui/layout-objects.html">Objek
-Layout Umum</a>. Ada juga sekumpulan tutorial tentang cara membangun berbagai layout dalam panduan tutorial
+Layout Umum</a>. Ada juga sekumpulan tutorial tentang cara membangun berbagai layout dalam panduan tutorial
<a href="{@docRoot}resources/tutorials/views/index.html">Hello Views</a>.</p>
<h2 id="write">Tulis XML</h2>
@@ -107,7 +107,7 @@ dalam direktori <code>res/layout/</code> proyek Android, sehingga nanti bisa dik
<h2 id="load">Muat Sumber Daya XML</h2>
-<p>Saat mengompilasi aplikasi, masing-masing file layout XML akan dikompilasi dalam sebuah sumber daya
+<p>Saat mengompilasi aplikasi, masing-masing file layout XML akan dikompilasi dalam sebuah sumber daya
{@link android.view.View}. Anda harus memuat sumber daya layout dari kode aplikasi, dalam implementasi
callback {@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()}.
Lakukan dengan memanggil <code>{@link android.app.Activity#setContentView(int) setContentView()}</code>,
@@ -367,8 +367,8 @@ kiri anak B) atau terhadap induk (disejajarkan dengan atas induknya).</p>
<h2 id="AdapterViews" style="clear:left">Membangun Layout dengan Adaptor</h2>
-<p>Bila isi layout bersifat dinamis atau tidak dipastikan sebelumnya, Anda bisa menggunakan layout yang menjadi
-subkelas {@link android.widget.AdapterView} untuk mengisi layout dengan tampilan saat runtime.
+<p>Bila isi layout bersifat dinamis atau tidak dipastikan sebelumnya, Anda bisa menggunakan layout yang menjadi
+subkelas {@link android.widget.AdapterView} untuk mengisi layout dengan tampilan saat runtime.
Subkelas dari kelas {@link android.widget.AdapterView} menggunakan {@link android.widget.Adapter} untuk
mengikat data ke layoutnya. {@link android.widget.Adapter} berfungsi sebagai penghubung antara sumber data
dan layout{@link android.widget.AdapterView}&mdash;{@link android.widget.Adapter}
@@ -445,7 +445,7 @@ harus memasukkan tampilan layout. Misalnya, jika Anda ingin untuk membuat daftar
nama orang dan nomor telepon, Anda bisa melakukan query yang menghasilkan {@link
android.database.Cursor} yang berisi satu baris untuk tiap orang dan kolom-kolom untuk nama dan
nomor. Selanjutnya Anda membuat larik string yang menentukan kolom dari {@link
-android.database.Cursor} yang Anda inginkan dalam layout untuk setiap hasil dan larik integer yang menentukan
+android.database.Cursor} yang Anda inginkan dalam layout untuk setiap hasil dan larik integer yang menentukan
tampilan yang sesuai untuk menempatkan masing-masing kolom:</p>
<pre>
String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME,
diff --git a/docs/html-intl/intl/in/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/in/guide/topics/ui/dialogs.jd
index 65714a9e4c4d..06a25ac5bcd3 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@ page.tags=alertdialog,dialogfragment
<li>{@link android.app.DialogFragment}</li>
<li>{@link android.app.AlertDialog}</li>
</ol>
-
+
<h2>Lihat juga</h2>
<ol>
<li><a href="{@docRoot}design/building-blocks/dialogs.html">Panduan desain dialog</a></li>
@@ -89,7 +89,7 @@ pada layar besar dan kecil).</p>
<p>Bagian-bagian berikutnya dalam panduan ini akan menjelaskan cara menggunakan {@link
android.support.v4.app.DialogFragment} yang dikombinasikan dengan objek {@link android.app.AlertDialog}
-. Jika Anda ingin membuat picker tanggal atau waktu, Anda harus membaca panduan
+. Jika Anda ingin membuat picker tanggal atau waktu, Anda harus membaca panduan
<a href="{@docRoot}guide/topics/ui/controls/pickers.html">Picker</a>.</p>
<p class="note"><strong>Catatan:</strong>
@@ -235,8 +235,8 @@ AlertDialog dialog = builder.create();
</pre>
<p>Metode <code>set...Button()</code> mengharuskan adanya judul bagi tombol (disediakan
-oleh suatu <a href="{@docRoot}guide/topics/resources/string-resource.html">sumber daya string</a>) dan
-{@link android.content.DialogInterface.OnClickListener} yang mendefinisikan tindakan yang diambil
+oleh suatu <a href="{@docRoot}guide/topics/resources/string-resource.html">sumber daya string</a>) dan
+{@link android.content.DialogInterface.OnClickListener} yang mendefinisikan tindakan yang diambil
bila pengguna menekan tombol.</p>
<p>Ada tiga macam tombol tindakan yang Anda bisa tambahkan:</p>
@@ -247,8 +247,8 @@ bila pengguna menekan tombol.</p>
<dd>Anda harus menggunakan tipe ini untuk membatalkan tindakan.</dd>
<dt>Netral</dt>
<dd>Anda harus menggunakan tipe ini bila pengguna mungkin tidak ingin melanjutkan tindakan,
- namun tidak ingin membatalkan. Tipe ini muncul antara tombol positif dan
-tombol negatif. Misalnya, tindakan bisa berupa "Ingatkan saya nanti".</dd>
+ namun tidak ingin membatalkan. Tipe ini muncul antara tombol positif dan
+tombol negatif. Misalnya, tindakan bisa berupa "Ingatkan saya nanti".</dd>
</dl>
<p>Anda hanya bisa menambahkan salah satu tipe tombol ke {@link
@@ -271,7 +271,7 @@ Dialog dengan satu judul dan daftar.</p>
<li>Daftar pilihan ganda persisten (kotak cek)</li>
</ul>
-<p>Untuk membuat daftar pilihan tunggal seperti dalam gambar 3,
+<p>Untuk membuat daftar pilihan tunggal seperti dalam gambar 3,
gunakan metode {@link android.app.AlertDialog.Builder#setItems setItems()}:</p>
<pre style="clear:right">
@@ -291,7 +291,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<p>Karena daftar muncul dalam area konten dialog,
dialog tidak bisa menampilkan pesan dan daftar sekaligus dan Anda harus menetapkan judul untuk
-dialog dengan {@link android.app.AlertDialog.Builder#setTitle setTitle()}.
+dialog dengan {@link android.app.AlertDialog.Builder#setTitle setTitle()}.
Untuk menentukan item daftar, panggil {@link
android.app.AlertDialog.Builder#setItems setItems()}, dengan meneruskan larik.
Atau, Anda bisa menetapkan daftar menggunakan {@link
@@ -300,7 +300,7 @@ dengan data dinamis (seperti dari database) dengan menggunakan {@link android.wi
<p>Jika Anda memilih untuk mendukung daftar dengan {@link android.widget.ListAdapter},
selalu gunakan sebuah {@link android.support.v4.content.Loader} agar konten dimuat
-secara asinkron. Hal ini dijelaskan lebih jauh dalam panduan
+secara asinkron. Hal ini dijelaskan lebih jauh dalam panduan
<a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">Membuat Layout
dengan Adaptor</a> dan <a href="{@docRoot}guide/components/loaders.html">Loader</a>
.</p>
@@ -317,11 +317,11 @@ Daftar item pilihan ganda.</p>
<h4 id="Checkboxes">Menambahkan daftar pilihan ganda atau pilihan tunggal persisten</h4>
-<p>Untuk menambahkan daftar item pilihan ganda (kotak cek) atau
-item pilihan tunggal (tombol radio), gunakan masing-masing metode
+<p>Untuk menambahkan daftar item pilihan ganda (kotak cek) atau
+item pilihan tunggal (tombol radio), gunakan masing-masing metode
{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()}, atau
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()}, atau
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()}.</p>
<p>Misalnya, berikut ini cara membuat daftar pilihan ganda seperti
@@ -346,7 +346,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
- // Else, if the item is already in the array, remove it
+ // Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
@@ -373,7 +373,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<p>Walaupun daftar tradisional maupun daftar dengan tombol radio
menyediakan tindakan "pilihan tunggal", Anda harus menggunakan {@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()} jika ingin mempertahankan pilihan pengguna.
Yakni, jika nanti membuka dialog lagi untuk menunjukkan pilihan pengguna,
maka Anda perlu membuat daftar dengan tombol radio.</p>
@@ -442,7 +442,7 @@ Anda harus mengubah keluarga font ke {@code "sans-serif"} sehingga kedua bidang
gaya font yang cocok.</p>
<p>Untuk memekarkan layout dalam {@link android.support.v4.app.DialogFragment} Anda,
-ambillah {@link android.view.LayoutInflater} dengan
+ambillah {@link android.view.LayoutInflater} dengan
{@link android.app.Activity#getLayoutInflater()} dan panggil
{@link android.view.LayoutInflater#inflate inflate()}, dengan parameter pertama
adalah ID sumber daya layout dan parameter kedua adalah tampilan induk untuk layout.
@@ -470,7 +470,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
- });
+ });
return builder.create();
}
</pre>
@@ -505,7 +505,7 @@ antarmuka yang akan digunakan untuk mengirim kembali suatu kejadian ke aktivitas
<pre>
public class NoticeDialogFragment extends DialogFragment {
-
+
/* The activity that creates an instance of this dialog fragment must
* implement this interface in order to receive event callbacks.
* Each method passes the DialogFragment in case the host needs to query it. */
@@ -513,10 +513,10 @@ public class NoticeDialogFragment extends DialogFragment {
public void onDialogPositiveClick(DialogFragment dialog);
public void onDialogNegativeClick(DialogFragment dialog);
}
-
+
// Use this instance of the interface to deliver action events
NoticeDialogListener mListener;
-
+
// Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
&#64;Override
public void onAttach(Activity activity) {
@@ -543,7 +543,7 @@ melalui implementasi antarmuka {@code NoticeDialogListener}:</p>
public class MainActivity extends FragmentActivity
implements NoticeDialogFragment.NoticeDialogListener{
...
-
+
public void showNoticeDialog() {
// Create an instance of the dialog fragment and show it
DialogFragment dialog = new NoticeDialogFragment();
@@ -638,12 +638,12 @@ android.support.v4.app.Fragment} yang bisa ditanamkan.</p>
<p>Akan tetapi, dalam hal ini Anda tidak bisa menggunakan {@link android.app.AlertDialog.Builder AlertDialog.Builder}
atau objek {@link android.app.Dialog} lain untuk membangun dialog. Jika
-Anda ingin {@link android.support.v4.app.DialogFragment}
+Anda ingin {@link android.support.v4.app.DialogFragment}
bisa ditanamkan, Anda harus mendefinisikan dialog UI dalam layout, lalu memuat layout itu dalam metode callback
{@link android.support.v4.app.DialogFragment#onCreateView
onCreateView()}.</p>
-<p>Berikut ini adalah contoh {@link android.support.v4.app.DialogFragment} yang bisa muncul sebagai
+<p>Berikut ini adalah contoh {@link android.support.v4.app.DialogFragment} yang bisa muncul sebagai
dialog maupun fragmen yang bisa ditanamkan (menggunakan layout bernama <code>purchase_items.xml</code>):</p>
<pre>
@@ -656,7 +656,7 @@ public class CustomDialogFragment extends DialogFragment {
// Inflate the layout to use as dialog or embedded fragment
return inflater.inflate(R.layout.purchase_items, container, false);
}
-
+
/** The system calls this only when creating the layout in a dialog. */
&#64;Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
@@ -678,7 +678,7 @@ atau UI layar penuh, berdasarkan ukuran layar:</p>
public void showDialog() {
FragmentManager fragmentManager = getSupportFragmentManager();
CustomDialogFragment newFragment = new CustomDialogFragment();
-
+
if (mIsLargeLayout) {
// The device is using a large layout, so show the fragment as a dialog
newFragment.show(fragmentManager, "dialog");
@@ -776,7 +776,7 @@ android.support.v4.app.DialogFragment#onDismiss onDismiss()} dalam {@link
android.support.v4.app.DialogFragment} Anda.</p>
<p>Anda juga bisa <em>membatalkan</em> dialog. Ini merupakan kejadian khusus yang menunjukkan bahwa pengguna
-secara eksplisit meninggalkan dialog tanpa menyelesaikan tugas. Hal ini terjadi jika pengguna menekan tombol
+secara eksplisit meninggalkan dialog tanpa menyelesaikan tugas. Hal ini terjadi jika pengguna menekan tombol
<em>Back</em>, menyentuh layar di luar area dialog,
atau jika Anda secara eksplisit memanggil {@link android.app.Dialog#cancel()} pada {@link
android.app.Dialog} (seperti saat merespons tombol "Cancel" dalam dialog).</p>
diff --git a/docs/html-intl/intl/in/guide/topics/ui/menus.jd b/docs/html-intl/intl/in/guide/topics/ui/menus.jd
index 2cd3e6a33aa5..1ee0244c1a9a 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/menus.jd
@@ -60,7 +60,7 @@ dan konsisten, Anda harus menggunakan API {@link android.view.Menu} untuk menyaj
tindakan dan opsi lain dalam aktivitas kepada pengguna.</p>
<p>Mulai dengan Android 3.0 (API level 11), perangkat berbasis Android tidak perlu lagi
-menyediakan tombol <em>Menu</em> tersendiri. Dengan perubahan ini, aplikasi Android harus bermigrasi dari
+menyediakan tombol <em>Menu</em> tersendiri. Dengan perubahan ini, aplikasi Android harus bermigrasi dari
dependensi pada panel menu 6 item biasa, dan sebagai ganti menyediakan action-bar untuk menyajikan
berbagai tindakan pengguna yang lazim.</p>
@@ -83,9 +83,9 @@ tidak memilikinya), sehingga Anda harus bermigrasi ke penggunaan action-bar untu
opsi lainnya.</p>
<p>Lihat bagian tentang <a href="#options-menu">Membuat Menu Opsi</a>.</p>
</dd>
-
+
<dt><strong>Menu konteks dan mode tindakan kontekstual</strong></dt>
-
+
<dd>Menu konteks adalah <a href="#FloatingContextMenu">menu mengambang</a> yang muncul saat
pengguna mengklik lama pada suatu elemen. Menu ini menyediakan tindakan yang memengaruhi konten atau
bingkai konteks yang dipilih.
@@ -94,7 +94,7 @@ item tindakan yang memengaruhi konten yang dipilih dalam baris di bagian atas la
memilih beberapa item sekaligus.</p>
<p>Lihat bagian tentang <a href="#context-menu">Membuat Menu Kontekstual</a>.</p>
</dd>
-
+
<dt><strong>Menu popup</strong></dt>
<dd>Menu popup menampilkan daftar item secara vertikal yang dipasang pada tampilan yang
memanggil menu. Ini cocok untuk menyediakan kelebihan tindakan yang terkait dengan konten tertentu atau
@@ -128,14 +128,14 @@ ukuran layar, dan konfigurasi lainnya dengan memanfaatkan kerangka kerja <a href
proyek dan buat menu dengan elemen-elemen berikut:</p>
<dl>
<dt><code>&lt;menu></code></dt>
- <dd>Mendefinisikan {@link android.view.Menu}, yang merupakan sebuah kontainer untuk item menu. Elemen
+ <dd>Mendefinisikan {@link android.view.Menu}, yang merupakan sebuah kontainer untuk item menu. Elemen
<code>&lt;menu></code> harus menjadi simpul akar untuk file dan bisa menampung salah satu atau beberapa dari elemen
<code>&lt;item></code> dan <code>&lt;group></code>.</dd>
<dt><code>&lt;item></code></dt>
<dd>Membuat {@link android.view.MenuItem}, yang mewakili satu item menu. Elemen ini
bisa berisi elemen <code>&lt;menu></code> tersarang guna untuk membuat submenu.</dd>
-
+
<dt><code>&lt;group></code></dt>
<dd>Kontainer opsional tak terlihat untuk elemen-elemen {@code &lt;item&gt;}. Kontainer ini memungkinkan Anda
mengelompokkan item menu untuk berbagi properti seperti status aktif dan visibilitas. Untuk informasi
@@ -253,7 +253,7 @@ aktivitas. Jika perlu, Anda bisa menyusun ulang item menu dengan atribut {@code
dalam setiap {@code &lt;item&gt;} yang perlu Anda pindahkan.</p>
<p>Untuk menetapkan menu opsi suatu aktivitas, kesampingkan {@link
-android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} (fragmen-fragmen menyediakan
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} (fragmen-fragmen menyediakan
callback {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()} sendiri). Dalam metode ini
, Anda bisa memekarkan sumber daya menu (<a href="#xml">yang didefinisikan dalam XML</a>) menjadi {@link
android.view.Menu} yang disediakan dalam callback. Misalnya:</p>
@@ -273,7 +273,7 @@ dengan API {@link android.view.MenuItem}.</p>
<p>Jika Anda mengembangkan aplikasi untuk Android 2.3.x dan yang lebih rendah, sistem akan memanggil {@link
android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} untuk membuat menu opsi
-bila pengguna membuka menu untuk pertama kali. Jika Anda mengembangkan aplikasi untuk Android 3.0 dan yang lebih tinggi,
+bila pengguna membuka menu untuk pertama kali. Jika Anda mengembangkan aplikasi untuk Android 3.0 dan yang lebih tinggi,
sistem akan memanggil {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} saat
memulai aktivitas, untuk menampilkan item menu pada action-bar.</p>
@@ -285,7 +285,7 @@ memulai aktivitas, untuk menampilkan item menu pada action-bar.</p>
sistem akan memanggil metode {@link android.app.Activity#onOptionsItemSelected(MenuItem)
onOptionsItemSelected()} aktivitas Anda. Metode ini meneruskan {@link android.view.MenuItem} yang dipilih. Anda
bisa mengidentifikasi item dengan memanggil {@link android.view.MenuItem#getItemId()}, yang menghasilkan
-ID unik untuk item menu itu (yang didefinisikan oleh atribut {@code android:id} dalam sumber daya menu atau dengan
+ID unik untuk item menu itu (yang didefinisikan oleh atribut {@code android:id} dalam sumber daya menu atau dengan
integer yang diberikan ke metode {@link android.view.Menu#add(int,int,int,int) add()}). Anda bisa mencocokkan
ID ini dengan item menu yang diketahui untuk melakukan tindakan yang sesuai. Misalnya:</p>
@@ -317,7 +317,7 @@ untuk setiap fragmen (sesuai dengan urutan penambahan fragmen) hingga satu fragm
{@code true} atau semua fragmen telah dipanggil.</p>
<p class="note"><strong>Tip:</strong> Android 3.0 menambahkan kemampuan mendefinisikan perilaku on-click
-untuk item menu dalam XML, dengan menggunakan atribut {@code android:onClick}. Nilai atribut
+untuk item menu dalam XML, dengan menggunakan atribut {@code android:onClick}. Nilai atribut
harus berupa nama metode yang didefinisikan aktivitas dengan menggunakan menu. Metode
harus bersifat publik dan menerima satu parameter {@link android.view.MenuItem}&mdash;bila sistem
memanggilnya, metode ini akan meneruskan item menu yang dipilih. Untuk informasi selengkapnya dan contoh, lihat dokumen <a href="{@docRoot}guide/topics/resources/menu-resource.html">Sumber Daya Menu</a>.</p>
@@ -346,7 +346,7 @@ lagi kecuali menu diinvalidkan karena suatu alasan. Akan tetapi, Anda harus meng
android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} hanya untuk membuat
status menu awal dan tidak untuk membuat perubahan selama daur hidup aktivitas.</p>
-<p>Jika Anda ingin mengubah menu opsi berdasarkan
+<p>Jika Anda ingin mengubah menu opsi berdasarkan
kejadian yang terjadi selama daur hidup aktivitas, Anda bisa melakukannya dalam metode
{@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}. Metode ini
meneruskan objek {@link android.view.Menu} sebagaimana adanya saat ini sehingga Anda bisa mengubahnya,
@@ -363,7 +363,7 @@ ditampilkan pada action-bar. Bila ada kejadian dan Anda ingin melakukan pembarua
memanggil {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()} untuk meminta
sistem memanggil {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}.</p>
-<p class="note"><strong>Catatan:</strong>
+<p class="note"><strong>Catatan:</strong>
Anda tidak boleh mengubah item dalam menu opsi berdasarkan {@link android.view.View} yang saat ini
difokus. Saat dalam mode sentuh (bila pengguna tidak sedang menggunakan trackball atau d-pad), tampilan
tidak bisa mengambil fokus, sehingga Anda tidak boleh menggunakan fokus sebagai dasar untuk mengubah
@@ -419,7 +419,7 @@ android.app.Activity#registerForContextMenu(View) registerForContextMenu()}.</p>
</li>
<li>Implementasikan metode {@link
-android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
dalam {@link android.app.Activity} atau {@link android.app.Fragment} Anda.
<p>Bila tampilan yang terdaftar menerima kejadian klik-lama, sistem akan memanggil metode {@link
android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
@@ -445,7 +445,7 @@ dimekarkan.</p>
<li>Implementasikan {@link android.app.Activity#onContextItemSelected(MenuItem)
onContextItemSelected()}.
- <p>Bila pengguna memilih item menu, sistem akan memanggil metode ini sehingga Anda bisa melakukan
+ <p>Bila pengguna memilih item menu, sistem akan memanggil metode ini sehingga Anda bisa melakukan
tindakan yang sesuai. Misalnya:</p>
<pre>
@@ -609,7 +609,7 @@ someView.setOnLongClickListener(new View.OnLongClickListener() {
<p>Bila Anda memanggil {@link android.app.Activity#startActionMode startActionMode()}, sistem akan mengembalikan
{@link android.view.ActionMode} yang dibuat. Dengan menyimpannya dalam variabel anggota, Anda bisa
-membuat perubahan ke action-bar kontekstual sebagai respons terhadap kejadian lainnya. Dalam contoh di atas,
+membuat perubahan ke action-bar kontekstual sebagai respons terhadap kejadian lainnya. Dalam contoh di atas,
{@link android.view.ActionMode} digunakan untuk memastikan bahwa instance {@link android.view.ActionMode}
tidak dibuat kembali jika sudah aktif, dengan memeriksa apakah anggota bernilai nol sebelum memulai
mode tindakan.</p>
@@ -742,8 +742,8 @@ yang menampilkan menu popup:</p>
<pre>
&lt;ImageButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:src="@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup" />
@@ -1010,7 +1010,7 @@ pertama.</p>
<p>Anda juga bisa menawarkan layanan aktivitas Anda pada aplikasi lainnya, sehingga
aplikasi Anda bisa disertakan dalam menu aplikasi lain (membalik peran yang dijelaskan di atas).</p>
-<p>Agar bisa dimasukkan dalam menu aplikasi lain, Anda perlu mendefinisikan
+<p>Agar bisa dimasukkan dalam menu aplikasi lain, Anda perlu mendefinisikan
filter intent seperti biasa, tetapi pastikan menyertakan nilai-nilai {@link android.content.Intent#CATEGORY_ALTERNATIVE}
dan/atau {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} untuk
kategori filter intent. Misalnya:</p>
@@ -1026,6 +1026,6 @@ kategori filter intent. Misalnya:</p>
<p>Baca selengkapnya tentang penulisan filter intent dalam dokumen
<a href="/guide/components/intents-filters.html">Intent dan Filter Intent</a>.</p>
-<p>Untuk contoh aplikasi yang menggunakan teknik ini, lihat contoh kode
+<p>Untuk contoh aplikasi yang menggunakan teknik ini, lihat contoh kode
<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Note
Pad</a>.</p>
diff --git a/docs/html-intl/intl/in/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/in/guide/topics/ui/notifiers/notifications.jd
index 9033b9f744f3..bb48b80a0bcc 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/notifiers/notifications.jd
@@ -147,7 +147,7 @@ pemberitahuan, Anda meneruskan objek {@link android.app.Notification} ke sistem
</p>
<p>
Dalam {@link android.app.Notification}, tindakan itu sendiri didefinisikan oleh
- {@link android.app.PendingIntent} berisi
+ {@link android.app.PendingIntent} berisi
{@link android.content.Intent} yang memulai
{@link android.app.Activity} dalam aplikasi Anda. Untuk mengaitkan
{@link android.app.PendingIntent} dengan gestur, panggil metode
@@ -174,12 +174,12 @@ pemberitahuan, Anda meneruskan objek {@link android.app.Notification} ke sistem
android.support.v4.app.NotificationCompat}. Ada
lima level prioritas, mulai dari {@link
android.support.v4.app.NotificationCompat#PRIORITY_MIN} (-2) hingga {@link
- android.support.v4.app.NotificationCompat#PRIORITY_MAX} (2); jika tidak diatur,
+ android.support.v4.app.NotificationCompat#PRIORITY_MAX} (2); jika tidak diatur,
prioritas default akan ditetapkan {@link
android.support.v4.app.NotificationCompat#PRIORITY_DEFAULT} (0).
</p>
<p> Untuk informasi tentang mengatur level prioritas, lihat "Mengatur
- dan mengelola prioritas pemberitahuan dengan benar" dalam panduan
+ dan mengelola prioritas pemberitahuan dengan benar" dalam panduan
Desain <a href="{@docRoot}design/patterns/notifications.html">Pemberitahuan</a>.
</p>
<!-- ------------------------------------------------------------------------------------------ -->
@@ -310,7 +310,7 @@ mBuilder.setStyle(inBoxStyle);
<!-- ------------------------------------------------------------------------------------------ -->
<h2 id="Managing">Mengelola Pemberitahuan</h2>
<p>
- Bila perlu mengeluarkan pemberitahuan beberapa kali untuk tipe kejadian yang sama,
+ Bila perlu mengeluarkan pemberitahuan beberapa kali untuk tipe kejadian yang sama,
hindari membuat pemberitahuan yang sama sekali baru. Sebagai gantinya, Anda harus mempertimbangkan untuk memperbarui
pemberitahuan sebelumnya, baik dengan mengubah sebagian nilainya atau dengan menambahkan nilai, atau keduanya.
</p>
@@ -506,7 +506,7 @@ numMessages = 0;
TaskStackBuilder.create()}.
</li>
<li>
- Tambahkan back-stack ke stack-builder dengan memanggil
+ Tambahkan back-stack ke stack-builder dengan memanggil
{@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}.
Untuk setiap {@link android.app.Activity} dalam hierarki yang telah Anda definisikan dalam
manifes, back-stack berisi objek {@link android.content.Intent} yang
@@ -933,7 +933,7 @@ untuk informasi selengkapnya tentang API baru untuk mengelola sesi media dan men
tampilan normal dibatasi hingga 64 dp, dan layout tampilan yang diperluas dibatasi hingga 256 dp.
</p>
<p>
- Untuk mendefinisikan layout pemberitahuan custom, mulailah dengan membuat instance
+ Untuk mendefinisikan layout pemberitahuan custom, mulailah dengan membuat instance
objek {@link android.widget.RemoteViews} yang memekarkan file layout XML. Kemudian,
sebagai ganti memanggil metode seperti
{@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()},
diff --git a/docs/html-intl/intl/in/guide/topics/ui/overview.jd b/docs/html-intl/intl/in/guide/topics/ui/overview.jd
index a0b2b0645a90..ca8b42085ac2 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@ dan elemen <code>&lt;LinearLayout&gt;</code> membuat kelompok tampilan {@link an
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
+ android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
&lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@ layout.</p>
<p>Untuk mendapatkan panduan lengkap mengenai pembuatan layout UI, lihat <a href="declaring-layout.html">Layout
XML</a>.
-
+
<h2 id="UIComponents">Komponen Antarmuka Pengguna</h2>
<p>Anda tidak harus membuat semua UI menggunakan objek {@link android.view.View} dan {link
diff --git a/docs/html-intl/intl/in/guide/topics/ui/settings.jd b/docs/html-intl/intl/in/guide/topics/ui/settings.jd
index 5ac61f928c19..89be52fc2a73 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/settings.jd
@@ -82,7 +82,7 @@ cara membangun pengaturan aplikasi Anda menggunakan API {@link android.preferenc
<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
<p class="img-caption"><strong>Gambar 1.</strong> Cuplikan layar dari pengaturan
-aplikasi Messaging Android. Memilih item yang didefinisikan oleh {@link android.preference.Preference}
+aplikasi Messaging Android. Memilih item yang didefinisikan oleh {@link android.preference.Preference}
akan membuka antarmuka untuk mengubah pengaturan.</p>
@@ -163,7 +163,7 @@ tersimpan bisa berupa tipe nilai apa pun yang didukung (tercantum di atas).</dd>
java.lang.String}.</dd>
</dl>
-<p>Lihat kelas {@link android.preference.Preference} untuk mengetahui daftar subkelas lain dan
+<p>Lihat kelas {@link android.preference.Preference} untuk mengetahui daftar subkelas lain dan
propertinya.</p>
<p>Tentu saja, kelas bawaan tidak mengakomodasi setiap kebutuhan dan aplikasi Anda mungkin memerlukan
@@ -226,7 +226,7 @@ android.preference.ListPreference}. Kedua item tersebut menyertakan tiga atribut
<dt>{@code android:key}</dt>
<dd>Atribut ini diperlukan untuk preferensi yang mempertahankan nilai data. Ini menetapkan kunci
unik (string) yang digunakan sistem saat menyimpan nilai pengaturan ini dalam {@link
-android.content.SharedPreferences}.
+android.content.SharedPreferences}.
<p>Instance satu-satunya di mana atribut ini <em>tidak diperlukan</em> adalah bila preferensi berupa
{@link android.preference.PreferenceCategory} atau {@link android.preference.PreferenceScreen}, atau
preferensi menetapkan {@link android.content.Intent} untuk dipanggil (dengan elemen <a href="#Intents">{@code &lt;intent&gt;}</a>) atau {@link android.app.Fragment} untuk ditampilkan (dengan atribut <a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
@@ -285,7 +285,7 @@ android.preference.PreferenceCategory}.</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;PreferenceCategory
+ &lt;PreferenceCategory
android:title="&#64;string/pref_sms_storage_title"
android:key="pref_key_storage_settings">
&lt;CheckBoxPreference
@@ -293,12 +293,12 @@ android.preference.PreferenceCategory}.</p>
android:summary="&#64;string/pref_summary_auto_delete"
android:title="&#64;string/pref_title_auto_delete"
android:defaultValue="false"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_sms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
android:title="&#64;string/pref_title_sms_delete"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_mms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
@@ -370,12 +370,12 @@ sebagai anak dari elemen {@code &lt;Preference&gt;} yang bersangkutan.</p>
<dl>
<dt>{@code android:action}</dt>
- <dd>Tindakan yang akan ditetapkan, sesuai metode
+ <dd>Tindakan yang akan ditetapkan, sesuai metode
{@link android.content.Intent#setAction setAction()}.</dd>
<dt>{@code android:data}</dt>
<dd>Data yang akan ditetapkan, sesuai metode {@link android.content.Intent#setData setData()}.</dd>
<dt>{@code android:mimeType}</dt>
- <dd>Tipe MIME yang akan ditetapkan, sesuai metode
+ <dd>Tipe MIME yang akan ditetapkan, sesuai metode
{@link android.content.Intent#setType setType()}.</dd>
<dt>{@code android:targetClass}</dt>
<dd>Bagian kelas dari nama komponen, sesuai metode {@link android.content.Intent#setComponent
@@ -588,11 +588,11 @@ tunggal dalam elemen {@code &lt;preference-headers&gt;} akar. Misalnya:</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
@@ -672,15 +672,15 @@ android.preference.Preference &lt;Preference&gt;} mengirimkan {@link android.con
akan dimuat.</p>
<p>Misalnya, ini adalah file XML untuk header preferensi yang menggunakan Android 3.0
-dan yang lebih tinggi ({@code res/xml/preference_headers.xml}):</p>
+dan yang lebih tinggi ({@code res/xml/preference_headers.xml}):</p>
<pre>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" />
@@ -692,18 +692,18 @@ Android 3.0 ({@code res/xml/preference_headers_legacy.xml}):</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_ONE" />
&lt;/Preference>
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_TWO" />
@@ -879,7 +879,7 @@ prefs.registerOnSharedPreferenceChangeListener(
});
</pre>
-<p>Sebagai gantinya, simpan referensi ke listener dalam bidang data instance
+<p>Sebagai gantinya, simpan referensi ke listener dalam bidang data instance
objek yang akan ada selama listener dibutuhkan:</p>
<pre>
@@ -975,11 +975,11 @@ negatif dan positif default:</p>
public class NumberPickerPreference extends DialogPreference {
public NumberPickerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
-
+
setDialogLayoutResource(R.layout.numberpicker_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
-
+
setDialogIcon(null);
}
...
@@ -1194,7 +1194,7 @@ protected void onRestoreInstanceState(Parcelable state) {
// Cast state to custom BaseSavedState and pass to superclass
SavedState myState = (SavedState) state;
super.onRestoreInstanceState(myState.getSuperState());
-
+
// Set this Preference's widget to reflect the restored state
mNumberPicker.setValue(myState.value);
}
diff --git a/docs/html-intl/intl/in/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/in/guide/topics/ui/ui-events.jd
index 5068176fccae..0307b34a85c1 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/ui-events.jd
@@ -26,11 +26,11 @@ tindakan terjadi pada objek itu. Misalnya, bila View (seperti Button/Tombol) dis
metode <code>onTouchEvent()</code> akan dipanggil pada objek itu. Akan tetapi, untuk mencegatnya, Anda harus memperluas
kelas dan mengesampingkan metode itu. Akan tetapi, memperluas setiap objek View
untuk menangani kejadian seperti itu tidaklah praktis. Karena itulah kelas View juga berisi
-sekumpulan antarmuka tersarang dengan callback yang jauh lebih mudah didefinisikan. Antarmuka ini,
+sekumpulan antarmuka tersarang dengan callback yang jauh lebih mudah didefinisikan. Antarmuka ini,
yang disebut <a href="#EventListeners">event listener</a>, merupakan tiket Anda untuk menangkap interaksi pengguna dengan UI.</p>
<p>Walaupun Anda akan lebih sering menggunakan event listener ini untuk interaksi pengguna,
-mungkin ada saatnya Anda ingin memperluas kelas View, untuk membuat komponen custom.
+mungkin ada saatnya Anda ingin memperluas kelas View, untuk membuat komponen custom.
Mungkin Anda ingin memperluas kelas {@link android.widget.Button}
untuk membuat sesuatu yang lebih menarik. Dalam hal ini, Anda akan dapat mendefinisikan perilaku kejadian default untuk kelas Anda dengan menggunakan
kelas <a href="#EventHandlers">event handler</a>.</p>
@@ -46,28 +46,28 @@ telah didaftarkan dengan listener dipicu oleh interaksi pengguna dengan item dal
<dl>
<dt><code>onClick()</code></dt>
- <dd>Dari {@link android.view.View.OnClickListener}.
+ <dd>Dari {@link android.view.View.OnClickListener}.
Ini dipanggil baik saat pengguna menyentuh item
(bila dalam mode sentuh), maupun memfokuskan pada item dengan tombol navigasi atau trackball dan
menekan tombol "enter" yang sesuai atau menekan trackball.</dd>
<dt><code>onLongClick()</code></dt>
- <dd>Dari {@link android.view.View.OnLongClickListener}.
- Ini dipanggil baik saat pengguna menyentuh dan menahan item (bila dalam mode sentuh),
+ <dd>Dari {@link android.view.View.OnLongClickListener}.
+ Ini dipanggil baik saat pengguna menyentuh dan menahan item (bila dalam mode sentuh),
maupun memfokuskan pada item dengan tombol navigasi atau trackball dan
menekan serta menahan tombol "enter" yang sesuai atau menekan dan menahan trackball (selama satu detik).</dd>
<dt><code>onFocusChange()</code></dt>
- <dd>Dari {@link android.view.View.OnFocusChangeListener}.
+ <dd>Dari {@link android.view.View.OnFocusChangeListener}.
Ini dipanggil saat pengguna menyusuri ke atau dari item, dengan menggunakan tombol navigasi atau trackball.</dd>
<dt><code>onKey()</code></dt>
- <dd>Dari {@link android.view.View.OnKeyListener}.
+ <dd>Dari {@link android.view.View.OnKeyListener}.
Ini dipanggil saat pengguna memfokuskan pada item dan menekan atau melepas tombol fisik pada perangkat.</dd>
<dt><code>onTouch()</code></dt>
- <dd>Dari {@link android.view.View.OnTouchListener}.
+ <dd>Dari {@link android.view.View.OnTouchListener}.
Ini dipanggil saat pengguna melakukan tindakan yang digolongkan sebagai kejadian sentuh, termasuk penekanan, pelepasan,
atau gerak perpindahan pada layar (dalam batasan item itu).</dd>
<dt><code>onCreateContextMenu()</code></dt>
- <dd>Dari {@link android.view.View.OnCreateContextMenuListener}.
- Ini dipanggil saat Menu Konteks sedang dibuat (akibat "klik lama" terus-menerus). Lihat diskusi
+ <dd>Dari {@link android.view.View.OnCreateContextMenuListener}.
+ Ini dipanggil saat Menu Konteks sedang dibuat (akibat "klik lama" terus-menerus). Lihat diskusi
tentang menu konteks di panduan pengembang <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Menu</a>.
</dd>
</dl>
@@ -75,8 +75,8 @@ tentang menu konteks di panduan pengembang <a href="{@docRoot}guide/topics/ui/me
<p>Metode ini satu-satunya yang menempati antarmukanya masing-masing. Untuk mendefinisikan salah satu metode ini
dan menangani kejadian Anda, implementasikan antarmuka tersarang dalam Aktivitas Anda atau definisikan sebagai kelas anonim.
Kemudian, teruskan satu
-instance implementasi Anda pada masing-masing metode <code>View.set...Listener()</code>. (Misalnya, panggil
-<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>
+instance implementasi Anda pada masing-masing metode <code>View.set...Listener()</code>. (Misalnya, panggil
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>
dan teruskan implementasi {@link android.view.View.OnClickListener OnClickListener} Anda.)</p>
<p>Contoh di bawah menunjukkan cara mendaftarkan on-click listener untuk Button. </p>
@@ -121,20 +121,20 @@ public class ExampleActivity extends Activity implements OnClickListener {
nilai hasil, namun beberapa metode event listener lainnya harus mengembalikan boolean. Sebabnya
bergantung pada kejadian. Untuk sebagian yang mengembalikan boolean, ini sebabnya:</p>
<ul>
- <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> -
- Ini mengembalikan boolean untuk menunjukkan apakah Anda telah menggunakan kejadian dan tidak boleh dibawa lebih jauh.
- Yaitu, mengembalikan <em>benar</em> untuk menunjukkan apakah Anda telah menangani kejadian dan semestinya berhenti di sini;
+ <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> -
+ Ini mengembalikan boolean untuk menunjukkan apakah Anda telah menggunakan kejadian dan tidak boleh dibawa lebih jauh.
+ Yaitu, mengembalikan <em>benar</em> untuk menunjukkan apakah Anda telah menangani kejadian dan semestinya berhenti di sini;
mengembalikan <em>salah</em> jika Anda tidak menanganinya dan/atau kejadian semestinya berlanjut ke
on-click listener lainnya.</li>
- <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> -
+ <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> -
Ini mengembalikan boolean untuk menunjukkan apakah Anda telah menggunakan kejadian dan tidak boleh dibawa lebih jauh.
- Yaitu, mengembalikan <em>benar</em> untuk menunjukkan apakah Anda telah menangani kejadian dan semestinya berhenti di sini;
+ Yaitu, mengembalikan <em>benar</em> untuk menunjukkan apakah Anda telah menangani kejadian dan semestinya berhenti di sini;
mengembalikan <em>salah</em> jika Anda tidak menanganinya dan/atau kejadian semestinya berlanjut ke
on-key listener lainnya.</li>
- <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> -
- Ini mengembalikan boolean untuk menunjukkan apakah listener Anda telah menggunakan kejadian ini. Yang penting adalah
-kejadian ini bisa memiliki beberapa tindakan yang saling mengikuti. Jadi, jika Anda mengembalikan <em>salah</em>saat
-kejadian tindakan turun diterima, itu menunjukkan bahwa Anda belum menggunakan kejadian itu dan juga
+ <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> -
+ Ini mengembalikan boolean untuk menunjukkan apakah listener Anda telah menggunakan kejadian ini. Yang penting adalah
+kejadian ini bisa memiliki beberapa tindakan yang saling mengikuti. Jadi, jika Anda mengembalikan <em>salah</em>saat
+kejadian tindakan turun diterima, itu menunjukkan bahwa Anda belum menggunakan kejadian itu dan juga
tidak tertarik dengan tindakan berikutnya dari kejadian ini. Karena itu, Anda tidak akan diminta untuk melakukan tindakan
lainnya dalam kejadian, seperti gerakan jari, atau kejadian tindakan naik yang akan terjadi.</li>
</ul>
@@ -142,12 +142,12 @@ tidak tertarik dengan tindakan berikutnya dari kejadian ini. Karena itu, Anda ti
<p>Ingatlah bahwa kejadian tombol fisik selalu disampaikan ke View yang sedang difokus. Kejadian ini dikirim mulai dari atas
hierarki View, kemudian turun hingga tujuan yang sesuai. Jika View Anda (atau anak View Anda)
saat ini sedang fokus, maka Anda dapat melihat kejadian berpindah melalui metode.<code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
-dispatchKeyEvent()}</code> Sebagai pengganti untuk menangkap kejadian penting melalui View, Anda juga dapat menerima
+dispatchKeyEvent()}</code> Sebagai pengganti untuk menangkap kejadian penting melalui View, Anda juga dapat menerima
semua kejadian dalam Aktivitas Anda dengan <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>
dan <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code>.</p>
<p>Selain itu, saat memikirkan tentang input teks aplikasi Anda, ingatlah bahwa banyak perangkat yang hanya memiliki
-metode input perangkat lunak. Metode seperti itu tidak harus berbasis tombol; sebagian mungkin menggunakan input suara, tulisan tangan, dan seterusnya. Meskipun
+metode input perangkat lunak. Metode seperti itu tidak harus berbasis tombol; sebagian mungkin menggunakan input suara, tulisan tangan, dan seterusnya. Meskipun
metode input menyajikan antarmuka seperti keyboard, itu umumnya <strong>tidak</strong> memicu keluarga kejadian
<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>. Anda sama sekali tidak boleh
membangun UI yang mengharuskan penekanan tombol tertentu dikontrol kecuali jika Anda ingin membatasi aplikasi Anda pada perangkat yang memiliki
@@ -157,14 +157,14 @@ metode input mengenai reaksi yang diharapkan aplikasi Anda, sehingga bisa mengub
tentang bagaimana metode input perangkat lunak seharusnya bekerja dan percayalah bahwa metode akan menyediakan teks yang sudah diformat bagi aplikasi Anda.</p>
<p class="note"><strong>Catatan:</strong> Android akan memanggil event handler terlebih dahulu kemudian handler
-default yang sesuai dari definisi kelas. Karena itu, mengembalikan <em>benar</em> dari event listener ini akan menghentikan
-penyebaran kejadian ke event listener lain dan juga akan memblokir callback ke
+default yang sesuai dari definisi kelas. Karena itu, mengembalikan <em>benar</em> dari event listener ini akan menghentikan
+penyebaran kejadian ke event listener lain dan juga akan memblokir callback ke
event handler default di View. Pastikan bahwa Anda ingin mengakhiri kejadian saat mengembalikan <em>true</em>.</p>
<h2 id="EventHandlers">Event Handler</h2>
-<p>Jika Anda membuat komponen custom dari View, maka Anda dapat mendefinisikan penggunaan beberapa
+<p>Jika Anda membuat komponen custom dari View, maka Anda dapat mendefinisikan penggunaan beberapa
metode callback sebagai event handler default.
Dalam dokumen tentang <a href="{@docRoot}guide/topics/ui/custom-components.html">Komponen
Custom</a>, Anda akan melihat penggunaan beberapa callback umum untuk penanganan kejadian,
@@ -176,19 +176,19 @@ termasuk:</p>
<li><code>{@link android.view.View#onTouchEvent}</code> - Dipanggil bila terjadi kejadian gerakan layar sentuh.</li>
<li><code>{@link android.view.View#onFocusChanged}</code> - Dipanggil bila View memperoleh atau kehilangan fokus.</li>
</ul>
-<p>Ada beberapa metode lain yang harus Anda ketahui, yang bukan bagian dari kelas View,
+<p>Ada beberapa metode lain yang harus Anda ketahui, yang bukan bagian dari kelas View,
namun bisa berdampak langsung pada kemampuan Anda menangani kejadian. Jadi, saat mengelola kejadian yang lebih kompleks dalam
layout, pertimbangkanlah metode-metode lain ini:</p>
<ul>
<li><code>{@link android.app.Activity#dispatchTouchEvent(MotionEvent)
- Activity.dispatchTouchEvent(MotionEvent)}</code> - Ini memungkinkan {@link
+ Activity.dispatchTouchEvent(MotionEvent)}</code> - Ini memungkinkan {@link
android.app.Activity} Anda mencegat semua kejadian sentuh sebelum dikirim ke jendela.</li>
<li><code>{@link android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - Ini memungkinkan {@link
android.view.ViewGroup} memantau kejadian saat dikirim ke View anak.</li>
<li><code>{@link android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - Panggil ini
- pada View induk untuk menunjukan larangan mencegat kejadian sentuh dengan <code>{@link
+ pada View induk untuk menunjukan larangan mencegat kejadian sentuh dengan <code>{@link
android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li>
</ul>
@@ -199,11 +199,11 @@ perlu memberikan fokus pada item tindakan (seperti tombol) agar pengguna bisa me
yang akan menerima input. Akan tetapi jika perangkat memiliki kemampuan sentuh, dan pengguna
mulai berinteraksi dengan antarmuka dengan menyentuhnya, maka Anda tidak perlu lagi
menyorot item, atau memfokuskan pada View tertentu. Karena itu, ada mode
-untuk interaksi yang bernama "mode sentuh".
+untuk interaksi yang bernama "mode sentuh".
</p>
<p>
Untuk perangkat berkemampuan sentuh, setelah pengguna menyentuh layar, perangkat
-akan masuk ke mode sentuh. Dari sini dan selanjutnya, hanya View dengan
+akan masuk ke mode sentuh. Dari sini dan selanjutnya, hanya View dengan
{@link android.view.View#isFocusableInTouchMode} benar yang akan dapat difokus, seperti widget pengedit teks.
View lain yang dapat disentuh, seperti tombol, tidak akan difokus bila disentuh; View ini akan
langsung memicu on-click listener bila ditekan.
@@ -214,7 +214,7 @@ keluar dari mode sentuh, dan mencari tampilan untuk difokuskan. Kini pengguna bi
dengan antarmuka pengguna tanpa menyentuh layar.
</p>
<p>
-Status mode sentuh dipertahankan di seluruh sistem (semua jendela dan aktivitas).
+Status mode sentuh dipertahankan di seluruh sistem (semua jendela dan aktivitas).
Untuk query status saat ini, Anda bisa memanggil
{@link android.view.View#isInTouchMode} untuk mengetahui apakah perangkat saat ini sedang dalam mode sentuh.
</p>
@@ -257,7 +257,7 @@ mana pun, tidak pula akan menyusuri ke bawah dari Button kedua. Karena sekarang
mendefinisikan Button bawah sebagai <var>nextFocusUp</var> (dan sebaliknya), fokus navigasi akan
silih berganti dari atas ke bawah dan bawah ke atas.</p>
-<p>Jika Anda ingin mendeklarasikan View sebagai dapat difokus dalam UI (bila biasanya tidak dapat difokus),
+<p>Jika Anda ingin mendeklarasikan View sebagai dapat difokus dalam UI (bila biasanya tidak dapat difokus),
tambahkan atribut XML <code>android:focusable</code> ke View, dalam deklarasi layout Anda.
Atur nilai <var>true</var>. Anda juga bisa mendeklarasikan View
sebagai dapat difokus saat dalam Mode Sentuh dengan <code>android:focusableInTouchMode</code>.</p>
@@ -282,7 +282,7 @@ sebagai dapat difokus saat dalam Mode Sentuh dengan <code>android:focusableInTou
the framework will take care of measuring, laying out, and drawing the tree
as appropriate.</li>
</ol>
-
+
<p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
the UI thread when calling any method on any View.
If you are doing work on other threads and want to update the state of a View
diff --git a/docs/html-intl/intl/in/preview/api-overview.jd b/docs/html-intl/intl/in/preview/api-overview.jd
index b0a0317ca9ad..b652dd91bb27 100644
--- a/docs/html-intl/intl/in/preview/api-overview.jd
+++ b/docs/html-intl/intl/in/preview/api-overview.jd
@@ -815,7 +815,7 @@ penyimpanan eksternal ke aplikasi Anda. Bila Anda menggunakan API baru, sistem a
sederhana yang memperinci dengan jelas direktori apa yang aksesnya diminta
oleh aplikasi.</p>
-<p>Untuk informasi selengkapnya, lihat dokumentasi pengembang
+<p>Untuk informasi selengkapnya, lihat dokumentasi pengembang
<a href="{@docRoot}preview/features/scoped-folder-access.html">Scoped
Directory Access</a>.</p>
diff --git a/docs/html-intl/intl/in/preview/behavior-changes.jd b/docs/html-intl/intl/in/preview/behavior-changes.jd
index 6e6ebae9d87a..521312eb2e90 100644
--- a/docs/html-intl/intl/in/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/in/preview/behavior-changes.jd
@@ -45,7 +45,7 @@ page.image=images/cards/card-n-changes_2x.png
<p>
Bersama fitur dan kemampuan baru, Android N
- menyertakan berbagai macam perubahan sistem dan perubahan perilaku API. Dokumen ini
+ menyertakan berbagai macam perubahan sistem dan perubahan perilaku API. Dokumen ini
menyoroti beberapa perubahan utama yang harus dipahami dan diperhitungkan
dalam aplikasi Anda.
</p>
@@ -482,7 +482,7 @@ JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
</li>
<li>Pemilik perangkat bisa mengelola pengguna tambahan lebih mudah. Bila perangkat
- berjalan dalam mode pemilik perangkat, maka pembatasan <code>DISALLOW_ADD_USER</code>
+ berjalan dalam mode pemilik perangkat, maka pembatasan <code>DISALLOW_ADD_USER</code>
secara otomatis akan ditetapkan. Ini mencegah pengguna membuat pengguna tambahan yang
tidak terkelola. Selain itu, <code>CreateUser()</code> dan
<code>createAndInitializeUser()</code> metode tidak digunakan lagi; metode
diff --git a/docs/html-intl/intl/in/preview/download-ota.jd b/docs/html-intl/intl/in/preview/download-ota.jd
index 1efe9b72815c..4adf9bbb83a4 100644
--- a/docs/html-intl/intl/in/preview/download-ota.jd
+++ b/docs/html-intl/intl/in/preview/download-ota.jd
@@ -202,65 +202,73 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
- MD5: 15fe2eba9b01737374196bdf0a792fe9<br>
- SHA-1: 5014b2bba77f9e1a680ac3f90729621c85a14283
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-ota-npd90g-0a874807.zip</a><br>
+ MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+ SHA-1: a9920bcc8d475ce322cada097d085448512635e2
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
- MD5: e8b12f7721c53af9a450f7058928a5fc<br>
- SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-ota-npd90g-06f5d23d.zip</a><br>
+ MD5: 513570bb3a91878c2d1a5807d2340420<br>
+ SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
- MD5: 3fac09fef759dde26e57cb80b20b6477<br>
- SHA-1: 27d6caa786577d8a38b2da5bf94b33b4524a1a1c
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-ota-npd90g-5baa69c2.zip</a><br>
+ MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+ SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
- MD5: 58312c4a5971818ef5c77a3f446003da<br>
- SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-ota-npd90g-c04785e1.zip</a><br>
+ MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+ SHA-1: 31633180635b831e59271a7d904439f278586f49
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
- MD5: 92b7d1fa252f7394e70f957c72d4aac8<br>
- SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+ MD5: 0493fa79763d67bcdde8007299e1888d<br>
+ SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
- MD5: 1461622ad53ea842b2722fa7b49b8172<br>
- SHA-1: 409c061668ab270774877d7f3eae44fa48d2b931
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-ota-npd90g-3a0643ae.zip</a><br>
+ MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+ SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
- MD5: c60117f3640cc6db12386fd632289c7d<br>
- SHA-1: 87349c767c69efb4172c90ce1d88cf578c3d28b3
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-ota-npd90g-ec931914.zip</a><br>
+ MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+ SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
- MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
- SHA-1: 6f33742290eb46f2561891f38ca2e754b4e50c6a
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+ MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+ SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
</td>
</tr>
diff --git a/docs/html-intl/intl/in/preview/download.jd b/docs/html-intl/intl/in/preview/download.jd
index a759a11c007f..e6714bbae1ed 100644
--- a/docs/html-intl/intl/in/preview/download.jd
+++ b/docs/html-intl/intl/in/preview/download.jd
@@ -300,72 +300,73 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
- MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
- SHA-1: 5ba4053577007d15c96472206e3a79bc80ab194c
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+ MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+ SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
- MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
- SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+ MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+ SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
- MD5: e93de7949433339856124c3729c15ebb<br>
- SHA-1: 81c341d57ef2cd139569b055d5d59e9e592a7abd
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+ MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+ SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
- MD5: 565be87ebb2d5937e2abe1a42645864b<br>
- SHA-1: 2b50e19dae2667b27f911e3c61ed64860caf43e1
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-npd90g-factory-41b55406.tgz</a><br>
+ MD5: cefa78950141da2a7c75e887717e3c8f<br>
+ SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
- MD5: a8464e15c6683fe2afa378a63e205fda<br>
- SHA-1: 2e89ebe67a46b2f3beb050746c13341cd11fa678
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-npd90g-factory-610492be.tgz</a><br>
+ MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+ SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
- MD5: c0dbb7db671f61b2785da5001cedefcb<br>
- SHA-1: 1de74874f8d83e14d642f13b5a2130fc2aa55873
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-npd90g-factory-0fe95694.tgz</a><br>
+ MD5: f4cb48f919e4c29c631de21416c612e2<br>
+ SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
- MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
- SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-npd90g-factory-f4da981c.tgz</a><br>
+ MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+ SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
- MD5: 7d34a9774fdd6e025d485ce6cfc23c4c<br>
- SHA-1: 5ab1212bc9417269d391aacf1e672fff24b4ecc5
- </td>
- </tr>
-
- <tr id="xperia">
- <td>Sony Xperia Z3 <br> (D6603 dan D6653)</td>
- <td>Unduh: <a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
- Untuk informasi selengkapnya, lihat<a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Coba Android N Developer Preview untuk Xperia Z3</a>.
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+ MD5: 0ed565c509594072822d71c65b48ec8e<br>
+ SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
</td>
</tr>
@@ -458,7 +459,7 @@ dapat menjalankan citra sistem x86_64 untuk Android N.</p>
<strong>x86</strong> ABI), kemudian klik <strong>Next</strong>.
(Hanya citra sistem x86 yang saat ini didukung dengan Android Emulator
untuk Android N Preview.)
- <li>Selesaikan konfigurasi AVD selanjutnya dan klik
+ <li>Selesaikan konfigurasi AVD selanjutnya dan klik
<strong>Finish</strong>.</li>
</ol>
diff --git a/docs/html-intl/intl/in/preview/features/background-optimization.jd b/docs/html-intl/intl/in/preview/features/background-optimization.jd
index 5712ab671059..c6bf1759393b 100644
--- a/docs/html-intl/intl/in/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/in/preview/features/background-optimization.jd
@@ -297,7 +297,7 @@ public static void scheduleJob(Context context) {
<dd>
Mengembalikan larik URL yang telah memicu pekerjaan. Ini akan berupa {@code
null} jika tidak ada URI yang memicu pekerjaan (misalnya, pekerjaan
- dipicu karena batas waktu atau alasan lainnya), atau jumlah
+ dipicu karena batas waktu atau alasan lainnya), atau jumlah
URI yang berubah lebih dari 50.
</dd>
diff --git a/docs/html-intl/intl/in/preview/features/data-saver.jd b/docs/html-intl/intl/in/preview/features/data-saver.jd
index f64609bedf66..6cd64d29ddcb 100644
--- a/docs/html-intl/intl/in/preview/features/data-saver.jd
+++ b/docs/html-intl/intl/in/preview/features/data-saver.jd
@@ -50,7 +50,7 @@ page.image=images/cards/card-nyc_2x.jpg
<p>
N Developer Preview memperluas {@link android.net.ConnectivityManager}
API untuk menyediakan cara pada aplikasi untuk <a href="#status">menerima preferensi Data Saver
- pengguna</a> dan <a href="#monitor-changes">memantau perubahan
+ pengguna</a> dan <a href="#monitor-changes">memantau perubahan
preferensi</a>. Hal ini dianggap praktik terbaik bagi aplikasi untuk memeriksa apakah
pengguna telah mengaktifkan DataSaver dan berusaha membatasi penggunaan data latar depan dan
data latar belakang.
diff --git a/docs/html-intl/intl/in/preview/features/multi-window.jd b/docs/html-intl/intl/in/preview/features/multi-window.jd
index 33399e9961c3..3f75def734a6 100644
--- a/docs/html-intl/intl/in/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/in/preview/features/multi-window.jd
@@ -325,7 +325,7 @@ android:supportsPictureInPicture=["true" | "false"]
<p class="note">
<strong>Catatan:</strong> Mode gambar-dalam-gambar adalah kasus khusus pada
mode multi-jendela. Jika <code>myActivity.isInPictureInPictureMode()</code>
- mengembalikan nilai true, maka <code>myActivity.isInMultiWindowMode()</code> juga
+ mengembalikan nilai true, maka <code>myActivity.isInMultiWindowMode()</code> juga
mengembalikan nilai true.
</p>
</dd>
diff --git a/docs/html-intl/intl/in/preview/features/security-config.jd b/docs/html-intl/intl/in/preview/features/security-config.jd
index 53f5576ec94d..7a0303e59fd7 100644
--- a/docs/html-intl/intl/in/preview/features/security-config.jd
+++ b/docs/html-intl/intl/in/preview/features/security-config.jd
@@ -739,7 +739,7 @@ Sumber sertifikat CA, bisa salah satu dari
</dt>
<dd>
- Algoritme intisari yang digunakan untuk menghasilkan pin. Saat ini, hanya
+ Algoritme intisari yang digunakan untuk menghasilkan pin. Saat ini, hanya
{@code "SHA-256"} yang didukung.
</dd>
</dl>
diff --git a/docs/html-intl/intl/in/preview/j8-jack.jd b/docs/html-intl/intl/in/preview/j8-jack.jd
index bbb16703d2bd..438918445902 100644
--- a/docs/html-intl/intl/in/preview/j8-jack.jd
+++ b/docs/html-intl/intl/in/preview/j8-jack.jd
@@ -126,7 +126,7 @@ memasang Android N Preview SDK, lihat <a href="{@docRoot}preview/setup-sdk.html"
</h2>
<p>
- Agar dapat menggunakan fitur bahasa Java 8 yang baru, Anda juga perlu menggunakan
+ Agar dapat menggunakan fitur bahasa Java 8 yang baru, Anda juga perlu menggunakan
<a class="external-link" href="https://source.android.com/source/jack.html">Jack toolchain</a> yang baru. Toolchain Android
yang baru ini mengompilasi sumber bahasa Java menjadi dex
bytecode yang bisa dibaca Android, memiliki format pustaka {@code .jack} sendiri, dan menyediakan sebagian besar fitur toolchain
diff --git a/docs/html-intl/intl/in/preview/overview.jd b/docs/html-intl/intl/in/preview/overview.jd
index c1fc0b5dabe4..c38a5796cd90 100644
--- a/docs/html-intl/intl/in/preview/overview.jd
+++ b/docs/html-intl/intl/in/preview/overview.jd
@@ -167,7 +167,7 @@ page.tags="preview", "developer", "android"
<p>
<strong>Tiga tahapan pencapaian pratinjau pertama</strong> memberikan <strong>ujian
pertama dan lingkungan pengembangan</strong> yang membantu Anda mengidentifikasi
- masalah kompatibilitas dalam aplikasi Anda saat ini dan merencanakan migrasi atau menampilkan pekerjaan
+ masalah kompatibilitas dalam aplikasi Anda saat ini dan merencanakan migrasi atau menampilkan pekerjaan
yang diperlukan untuk menargetkan platform baru. Ini adalah periode prioritas yang akan
memberi kami masukan dari Anda tentang fitur dan API serta masalah kompatibilitas file
&mdash; untuk semua ini, gunakan <a href="{@docRoot}preview/bug">Issue
@@ -314,8 +314,8 @@ page.tags="preview", "developer", "android"
</p>
<ul>
- <li> <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan Pengembangan untuk
-Android N</a> memiliki
+ <li> <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan Pengembangan untuk
+Android N</a> memiliki
petunjuk langkah demi langkah untuk memulai.</li>
<li> <a href="{@docRoot}preview/behavior-changes.html">Perubahan
Perilaku</a> akan menunjukkan kepada Anda bidang-bidang utama untuk diuji.</li>
diff --git a/docs/html-intl/intl/in/preview/setup-sdk.jd b/docs/html-intl/intl/in/preview/setup-sdk.jd
index 999970563db3..c03f388b676c 100644
--- a/docs/html-intl/intl/in/preview/setup-sdk.jd
+++ b/docs/html-intl/intl/in/preview/setup-sdk.jd
@@ -92,7 +92,7 @@ kotak centang <strong>Android N Preview</strong>.</li>
<a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
<td width="100%">
MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
- SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
+ SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
</td>
</tr>
<table>
diff --git a/docs/html-intl/intl/in/preview/support.jd b/docs/html-intl/intl/in/preview/support.jd
index 5571b11610f6..885e7c717368 100644
--- a/docs/html-intl/intl/in/preview/support.jd
+++ b/docs/html-intl/intl/in/preview/support.jd
@@ -457,7 +457,7 @@ Tracker</a>.</p>
versi aplikasi multi-APK yang didesain untuk mendukung Vulkan yang lebih rendah pada
perangkat dengan dukungan versi yang lebih tinggi. Saat ini, Google Play Store tidak
menerima unggahan aplikasi yang menggunakan penargetan versi Vulkan. Dukungan ini
- akan ditambahkan pada Google Play Store di masa mendatang dan diperbaiki dalam
+ akan ditambahkan pada Google Play Store di masa mendatang dan diperbaiki dalam
Google Play Services versi berikutnya (akan disertakan dalam rilis Developer Preview
mendatang). Perangkat N yang menggunakan Google Play Services 9.0.83 akan
tetap menerima versi Aplikasi yang menargetkan dukungan Vulkan dasar.
diff --git a/docs/html-intl/intl/in/training/material/drawables.jd b/docs/html-intl/intl/in/training/material/drawables.jd
index 56fd17fc684b..493abd46bebd 100644
--- a/docs/html-intl/intl/in/training/material/drawables.jd
+++ b/docs/html-intl/intl/in/training/material/drawables.jd
@@ -66,7 +66,7 @@ sediakan listener sebagai gantinya.</p>
<p>Anda bisa mengambil warna mencolok dari gambar dengan metode getter di kelas
<code>Palette</code>, misalnya <code>Palette.getVibrantColor</code>.</p>
-<p>Untuk menggunakan kelas {@link android.support.v7.graphics.Palette} dalam proyek Anda, tambahkan
+<p>Untuk menggunakan kelas {@link android.support.v7.graphics.Palette} dalam proyek Anda, tambahkan
<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">dependensi Gradle</a> berikut ke
modul aplikasi Anda:</p>
diff --git a/docs/html-intl/intl/in/training/material/lists-cards.jd b/docs/html-intl/intl/in/training/material/lists-cards.jd
index 358f1d17d9e2..46dd19afc4e1 100644
--- a/docs/html-intl/intl/in/training/material/lists-cards.jd
+++ b/docs/html-intl/intl/in/training/material/lists-cards.jd
@@ -83,7 +83,7 @@ android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager}
<h3>Animasi</h3>
<p>Animasi untuk menambahkan dan menghapus item diaktifkan secara default di {@link
-android.support.v7.widget.RecyclerView}. Untuk menyesuaikan animasi ini, perluas kelas
+android.support.v7.widget.RecyclerView}. Untuk menyesuaikan animasi ini, perluas kelas
{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator}dan gunakan
metode {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()}.
</p>
@@ -253,7 +253,7 @@ dalam layout:</p>
<p>Widget {@link android.support.v7.widget.RecyclerView} dan {@link android.support.v7.widget.CardView}
adalah bagian dari <a href="{@docRoot}tools/support-library/features.html#v7">v7 Support
-Library</a>. Untuk menggunakan widget dalam proyek Anda, tambahkan
+Library</a>. Untuk menggunakan widget dalam proyek Anda, tambahkan
<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">dependensi Gradle</a> ini ke
modul aplikasi Anda:</p>
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/about.jd b/docs/html-intl/intl/ja/distribute/googleplay/about.jd
index 56eaf2c6d0a7..6a58cf60e6b6 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/about.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/about.jd
@@ -6,7 +6,7 @@ page.image=/distribute/images/about-play.jpg
@jd:body
-<div id="qv-wrapper">
+<div id="qv-wrapper">
<div id="qv">
<h2>Google Play ã«ã¤ã„ã¦</h2>
<ol style="list-style-type:none;">
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/auto.jd b/docs/html-intl/intl/ja/distribute/googleplay/auto.jd
index 0cbf8b131072..bc5a01f8d0da 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/auto.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/auto.jd
@@ -160,4 +160,4 @@ page.metaDescription=アプリã¨ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’ Android Auto ã«é…布ã—ã¾
data-query="collection:autolanding"
data-cardSizes="9x6, 6x3x2"
data-maxResults="6">
- </div> \ No newline at end of file
+ </div> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/developer-console.jd b/docs/html-intl/intl/ja/distribute/googleplay/developer-console.jd
index 8dd562d79a16..29e4145a7d37 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/developer-console.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/developer-console.jd
@@ -5,7 +5,7 @@ Xnonavpage=true
@jd:body
-<div id="qv-wrapper">
+<div id="qv-wrapper">
<div id="qv">
<h2>公開機能</h2>
<ol>
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/families/about.jd b/docs/html-intl/intl/ja/distribute/googleplay/families/about.jd
index 53258de6419c..54c4f34da34b 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/families/about.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/families/about.jd
@@ -36,4 +36,4 @@ page.tags="families"
<div class="paging-links" style="padding-top:.75em;">
<a href="{@docRoot}distribute/googleplay/families/start.html" class="next-class-link">次ã®ãƒˆãƒ”ック:オプトイン</a>
-</div> \ No newline at end of file
+</div> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/families/faq.jd b/docs/html-intl/intl/ja/distribute/googleplay/families/faq.jd
index 206429c65442..da877f9a2191 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/families/faq.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@ page.metaDescription=Designed for Families ã«é–¢ã™ã‚‹è³ªå•ã¨å›žç­”
font-weight:bold;
}
</style>
-
+
<div id="qv-wrapper">
<ol id="qv">
<h2>本書ã®å†…容</h2>
@@ -106,7 +106,7 @@ page.metaDescription=Designed for Families ã«é–¢ã™ã‚‹è³ªå•ã¨å›žç­”
</dt>
<dd>
- Designed for Families プログラムã«ã‚ªãƒ—トインã™ã‚‹ã¨ã€Google Play ã¯ã‚¢ãƒ—リを審査ã—ã€ãƒ•ァミリー層ã«é©åˆ‡ã‹ã©ã†ã‹ç¢ºèªã—ã¾ã™ã€‚アプリãŒã™ã¹ã¦ã®ãƒ—ログラムè¦ä»¶ã«æº–æ‹ ã—ã¦ã„ã‚‹å ´åˆã€å…¬é–‹ã¾ã§ã®æ™‚é–“ã¯é€šå¸¸ã‚ˆã‚Šã‚‚é•·ãã‹ã‹ã‚‹ã“ã¨ã¯ãªã„ã¯ãšã§ã™ã€‚ãŸã ã—ã€Designed for Families 審査ã§å´ä¸‹ã•れãŸå ´åˆã€ã‚¢ãƒ—リã®å…¬é–‹ãŒé…れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
+ Designed for Families プログラムã«ã‚ªãƒ—トインã™ã‚‹ã¨ã€Google Play ã¯ã‚¢ãƒ—リを審査ã—ã€ãƒ•ァミリー層ã«é©åˆ‡ã‹ã©ã†ã‹ç¢ºèªã—ã¾ã™ã€‚アプリãŒã™ã¹ã¦ã®ãƒ—ログラムè¦ä»¶ã«æº–æ‹ ã—ã¦ã„ã‚‹å ´åˆã€å…¬é–‹ã¾ã§ã®æ™‚é–“ã¯é€šå¸¸ã‚ˆã‚Šã‚‚é•·ãã‹ã‹ã‚‹ã“ã¨ã¯ãªã„ã¯ãšã§ã™ã€‚ãŸã ã—ã€Designed for Families 審査ã§å´ä¸‹ã•れãŸå ´åˆã€ã‚¢ãƒ—リã®å…¬é–‹ãŒé…れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
</dd>
<dt>
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/families/start.jd b/docs/html-intl/intl/ja/distribute/googleplay/families/start.jd
index e8e9ee59af41..023e2c17e06d 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/families/start.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/families/start.jd
@@ -51,7 +51,7 @@ page.metaDescription=ã»ã‚“ã®æ•°ã‚¹ãƒ†ãƒƒãƒ—ã§ Designed for Families ã«å‚加
</p>
<p class="note">
- <strong>注:</strong> Designed for Families プログラムã§å…¬é–‹ã•れãŸã‚¢ãƒ—リ㯠Google Play ã§ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚‚利用ã§ãã¾ã™ã€‚
+ <strong>注:</strong> Designed for Families プログラムã§å…¬é–‹ã•れãŸã‚¢ãƒ—リ㯠Google Play ã§ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚‚利用ã§ãã¾ã™ã€‚
</p>
<p>
@@ -67,4 +67,4 @@ page.metaDescription=ã»ã‚“ã®æ•°ã‚¹ãƒ†ãƒƒãƒ—ã§ Designed for Families ã«å‚加
<div class="paging-links" style="padding-top:.75em;">
<a href="{@docRoot}distribute/googleplay/families/faq.html" class="next-class-link">次ã®ãƒˆãƒ”ック:よãã‚る質å•</a>
-</div> \ No newline at end of file
+</div> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/guide.jd b/docs/html-intl/intl/ja/distribute/googleplay/guide.jd
index 137c63f6cbe4..1655017efa03 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/guide.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/guide.jd
@@ -54,4 +54,4 @@ page.image=distribute/images/play_dev_guide.png
data-query="collection:play_dev_guide"
data-cardSizes="9x6"
data-maxResults="1">
- </div> \ No newline at end of file
+ </div> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/quality/auto.jd b/docs/html-intl/intl/ja/distribute/googleplay/quality/auto.jd
index eda7297741cc..2870153fe2d9 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/quality/auto.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/quality/auto.jd
@@ -431,4 +431,4 @@ data-sortorder="-timestamp" data-cardsizes="9x3" data-maxresults="6">
<p class="caution">
<strong>é‡è¦: </strong>ã“ã®åˆ¶é™ã®ãŸã‚ã€Auto サãƒãƒ¼ãƒˆã®ãƒ—ロトタイプã®ä½œæˆã«ã€å®Ÿåƒ APK を使用ã—ã¦ã¯ãªã‚Šã¾ã›ã‚“。
-</p> \ No newline at end of file
+</p> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/quality/core.jd b/docs/html-intl/intl/ja/distribute/googleplay/quality/core.jd
index 5229aa7c829f..ddf41155b082 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/quality/core.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/quality/core.jd
@@ -13,7 +13,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="#listing">Google Play</a></li>
</ol>
-
+
<h2>テスト</h2>
<ol>
<li><a href="#test-environment">テスト環境ã®è¨­å®š</a></li>
@@ -25,7 +25,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="{@docRoot}distribute/essentials/quality/tablets.html">タブレットã®ã‚¢ãƒ—リå“質</a></li>
<li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">アプリを最é©åŒ–ã™ã‚‹</a></li>
</ol>
-
+
</div>
</div>
@@ -70,7 +70,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<th style="width:54px;">
ID
</th>
-
+
<th>
説明
@@ -1011,4 +1011,4 @@ data-cardsizes="6x3,6x3,6x3,6x3,6x3,6x3" data-maxresults="6">
<p>
{@link android.os.StrictMode.ThreadPolicy.Builder#penaltyFlashScreen() penaltyFlashScreen()} を使用ã—ã¦<code>ThreadPolicy</code> ã«å¯¾ã™ã‚‹ãƒãƒªã‚·ãƒ¼é•åã®<strong>視覚通知</strong>を有効ã«ã—ã¾ã™ã€‚
-</p> \ No newline at end of file
+</p> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/quality/tablets.jd b/docs/html-intl/intl/ja/distribute/googleplay/quality/tablets.jd
index f0cc133c8bda..dbdabc21d57e 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/quality/tablets.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/quality/tablets.jd
@@ -46,7 +46,7 @@ Xnonavpage=true
<div class="headerLine"><h2 id="core-app-quality">1.タブレット アプリã®åŸºæœ¬çš„ãªå“質テスト</h2></div>
-<p>タブレット アプリã®å„ªã‚ŒãŸã‚¨ã‚¯ã‚¹ãƒšãƒªã‚¨ãƒ³ã‚¹ã‚’æä¾›ã™ã‚‹æœ€åˆã®ã‚¹ãƒ†ãƒƒãƒ—ã¯ã€ã‚¢ãƒ—リãŒã‚¿ãƒ¼ã‚²ãƒƒãƒˆã¨ã—ã¦ã„ã‚‹ã™ã¹ã¦ã®ãƒ‡ãƒã‚¤ã‚¹ã¨ãƒ•ォーム ファクタã«å¯¾ã—ã¦ã€<em>アプリã®ä¸­æ ¸å“質基準</em>ã«é©åˆã—ã¦ã„ã‚‹ã“ã¨ã‚’確èªã™ã‚‹ã“ã¨ã§ã™ã€‚詳細ã«ã¤ã„ã¦ã¯ã€<a href="{@docRoot}distribute/essentials/quality/core.html">アプリã®ä¸­æ ¸å“質ã«é–¢ã™ã‚‹ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³</a>ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
+<p>タブレット アプリã®å„ªã‚ŒãŸã‚¨ã‚¯ã‚¹ãƒšãƒªã‚¨ãƒ³ã‚¹ã‚’æä¾›ã™ã‚‹æœ€åˆã®ã‚¹ãƒ†ãƒƒãƒ—ã¯ã€ã‚¢ãƒ—リãŒã‚¿ãƒ¼ã‚²ãƒƒãƒˆã¨ã—ã¦ã„ã‚‹ã™ã¹ã¦ã®ãƒ‡ãƒã‚¤ã‚¹ã¨ãƒ•ォーム ファクタã«å¯¾ã—ã¦ã€<em>アプリã®ä¸­æ ¸å“質基準</em>ã«é©åˆã—ã¦ã„ã‚‹ã“ã¨ã‚’確èªã™ã‚‹ã“ã¨ã§ã™ã€‚詳細ã«ã¤ã„ã¦ã¯ã€<a href="{@docRoot}distribute/essentials/quality/core.html">アプリã®ä¸­æ ¸å“質ã«é–¢ã™ã‚‹ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³</a>ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
</p>
<p>
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/quality/wear.jd b/docs/html-intl/intl/ja/distribute/googleplay/quality/wear.jd
index 9fa443990011..1d92d8c4050b 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/quality/wear.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/quality/wear.jd
@@ -395,4 +395,4 @@ data-sortorder="-timestamp" data-cardsizes="6x2" data-maxresults="6">
</p>
<p>
ã¯ã„。上記ã®è¦ä»¶ã¯ã€ã‚¢ãƒ—リ㌠Google Play ã§ Android Wear アプリã¨ã—ã¦è­˜åˆ¥ã•れã€Android Wear ユーザーãŒç™ºè¦‹ã—ã‚„ã™ããªã‚‹ã‹ã©ã†ã‹ã®ã¿ã‚’判断ã™ã‚‹ã‚‚ã®ã§ã™ã€‚アプリ㌠Wear アプリã¨ã—ã¦æ‰¿èªã•れãªãã¦ã‚‚ã€é›»è©±ã‚„タブレットãªã©ã®ä»–ã®ãƒ‡ãƒã‚¤ã‚¹ タイプã§åˆ©ç”¨å¯èƒ½ã§ã™ã€‚ウェアラブル端末ã¸ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚‚å¯èƒ½ã§ã™ã€‚
-</p> \ No newline at end of file
+</p> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/start.jd b/docs/html-intl/intl/ja/distribute/googleplay/start.jd
index 3c5e548624ae..93aee136da05 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/start.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/start.jd
@@ -134,4 +134,4 @@ href="https://support.google.com/googleplay/android-developer/bin/answer.py?hl=e
data-query="collection:distribute/googleplay/gettingstarted"
data-sortOrder="-timestamp"
data-cardSizes="9x3"
- data-maxResults="6"></div> \ No newline at end of file
+ data-maxResults="6"></div> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/tv.jd b/docs/html-intl/intl/ja/distribute/googleplay/tv.jd
index 1a7558de28ab..9532bf4277e3 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/tv.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/tv.jd
@@ -173,7 +173,7 @@ page.metaDescription=アプリã€ã‚²ãƒ¼ãƒ ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’ Android TV ã«é…
<h3 id="track_review">5.å¯©æŸ»ã¨æ‰¿èªã‚’トラッキングã™ã‚‹</h3>
<p>
- アプリãŒä¸Šè¿°ã® Android TV å‘ã‘ã®æŠ€è¡“ä¸Šã®åŸºæº–ã¨å“質基準ã«é©åˆã™ã‚‹ã¨ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ãã®ã‚¢ãƒ—リを Android TV ã§æ´»ç”¨ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚アプリãŒåŸºæº–を満ãŸã—ã¦ã„ãªã„å ´åˆã€<strong>デベロッパー アカウント アドレスã«é€ã‚‰ã‚ŒãŸé€šçŸ¥ãƒ¡ãƒ¼ãƒ«</strong>ã‚’å—ã‘å–りã¾ã™ã€‚ã“ã®ãƒ¡ãƒ¼ãƒ«ã«ã¯å¯¾å‡¦ãŒå¿…è¦ãªé ˜åŸŸã®è¦ç´„ãŒè¨˜è¼‰ã•れã¦ã„ã¾ã™ã€‚å¿…è¦ãªèª¿æ•´ã‚’行ã£ãŸã‚‰ã€ãƒ‡ãƒ™ãƒ­ãƒƒãƒ‘ー コンソールã«ã‚¢ãƒ—ãƒªã®æ–°è¦ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’アップロードã§ãã¾ã™ã€‚
+ アプリãŒä¸Šè¿°ã® Android TV å‘ã‘ã®æŠ€è¡“ä¸Šã®åŸºæº–ã¨å“質基準ã«é©åˆã™ã‚‹ã¨ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ãã®ã‚¢ãƒ—リを Android TV ã§æ´»ç”¨ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚アプリãŒåŸºæº–を満ãŸã—ã¦ã„ãªã„å ´åˆã€<strong>デベロッパー アカウント アドレスã«é€ã‚‰ã‚ŒãŸé€šçŸ¥ãƒ¡ãƒ¼ãƒ«</strong>ã‚’å—ã‘å–りã¾ã™ã€‚ã“ã®ãƒ¡ãƒ¼ãƒ«ã«ã¯å¯¾å‡¦ãŒå¿…è¦ãªé ˜åŸŸã®è¦ç´„ãŒè¨˜è¼‰ã•れã¦ã„ã¾ã™ã€‚å¿…è¦ãªèª¿æ•´ã‚’行ã£ãŸã‚‰ã€ãƒ‡ãƒ™ãƒ­ãƒƒãƒ‘ー コンソールã«ã‚¢ãƒ—ãƒªã®æ–°è¦ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’アップロードã§ãã¾ã™ã€‚
</p>
<p>
@@ -190,7 +190,7 @@ page.metaDescription=アプリã€ã‚²ãƒ¼ãƒ ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’ Android TV ã«é…
</li>
<li>
- <em>承èª</em> — アプリãŒå¯©æŸ»ã•ã‚Œã€æ‰¿èªã•れã¾ã—ãŸã€‚アプリ㯠Android TV ユーザーãŒç›´æŽ¥åˆ©ç”¨ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
+ <em>承èª</em> — アプリãŒå¯©æŸ»ã•ã‚Œã€æ‰¿èªã•れã¾ã—ãŸã€‚アプリ㯠Android TV ユーザーãŒç›´æŽ¥åˆ©ç”¨ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
</li>
<li>
@@ -207,4 +207,4 @@ page.metaDescription=アプリã€ã‚²ãƒ¼ãƒ ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’ Android TV ã«é…
data-query="collection:tvlanding"
data-cardSizes="9x6, 6x3x2"
data-maxResults="6">
- </div>
+ </div>
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/wear.jd b/docs/html-intl/intl/ja/distribute/googleplay/wear.jd
index 4e0196e8a805..85cffca6d97f 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/wear.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/wear.jd
@@ -196,4 +196,4 @@ page.metaDescription=アプリã€ã‚²ãƒ¼ãƒ ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’ Android Wear ã«
data-query="collection:wearlanding"
data-cardSizes="6x2"
data-maxResults="3">
- </div> \ No newline at end of file
+ </div> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/tools/launch-checklist.jd b/docs/html-intl/intl/ja/distribute/tools/launch-checklist.jd
index b1394f8c950e..a6f1a7f8b6f2 100644
--- a/docs/html-intl/intl/ja/distribute/tools/launch-checklist.jd
+++ b/docs/html-intl/intl/ja/distribute/tools/launch-checklist.jd
@@ -789,4 +789,4 @@ data-maxresults="6">
data-query="collection:distribute/toolsreference/launchchecklist/afterlaunch"
data-sortOrder="-timestamp"
data-cardSizes="9x3,9x3,9x3,9x3,9x3,9x3"
- data-maxResults="6"></div> \ No newline at end of file
+ data-maxResults="6"></div> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/tools/localization-checklist.jd b/docs/html-intl/intl/ja/distribute/tools/localization-checklist.jd
index b2c797b437ab..5bb9fe0359a6 100644
--- a/docs/html-intl/intl/ja/distribute/tools/localization-checklist.jd
+++ b/docs/html-intl/intl/ja/distribute/tools/localization-checklist.jd
@@ -2,7 +2,7 @@ page.title=ローカライズã®ãƒã‚§ãƒƒã‚¯ãƒªã‚¹ãƒˆ
page.metaDescription=Android 㨠Google Play ã‹ã‚‰æä¾›ã•れる世界中ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’活用ã—ã¾ã™ã€‚ã“ã®ãƒã‚§ãƒƒã‚¯ãƒªã‚¹ãƒˆã‚’読んã§ã€ãŠå®¢æ§˜ã®è£½å“を世界中ã®ãƒžãƒ¼ã‚±ãƒƒãƒˆã«æä¾›ã™ã‚‹æ–¹æ³•ã®æ¦‚è¦ã‚’把æ¡ã—ã¦ãã ã•ã„。
meta.tags="localizing, publishing, disttools"
page.tags="local, l10n, translation, language"
-page.image=/distribute/images/localization-checklist.jpg
+page.image=/distribute/images/localization-checklist.jpg
@jd:body
@@ -713,4 +713,4 @@ data-maxresults="6">
data-query="collection:distribute/toolsreference/localizationchecklist/supportlaunch"
data-sortOrder="-timestamp"
data-cardSizes="9x3,9x3,6x3,9x3,9x3,9x3"
- data-maxResults="6"></div> \ No newline at end of file
+ data-maxResults="6"></div> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/google/play/filters.jd b/docs/html-intl/intl/ja/google/play/filters.jd
index 5ab6336eac65..eed069f74b97 100644
--- a/docs/html-intl/intl/ja/google/play/filters.jd
+++ b/docs/html-intl/intl/ja/google/play/filters.jd
@@ -263,4 +263,4 @@ href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-featur
<p class="caution"><strong>警告:</strong> åŒã˜ã‚¢ãƒ—リã«è¤‡æ•°ã® APK を公開ã™ã‚‹ã“ã¨ã¯æ‹¡å¼µæ©Ÿèƒ½ã¨ã¿ãªã•れã¾ã™ã€‚<strong>大部分ã®ã‚¢ãƒ—リã¯ã€åºƒç¯„囲ã®ãƒ‡ãƒã‚¤ã‚¹è¨­å®šã‚’サãƒãƒ¼ãƒˆã™ã‚‹ APK ã‚’ 1 ã¤ã ã‘公開ã™ã¹ãã§ã™</strong>。複数㮠APK を公開ã™ã‚‹å ´åˆã€ãƒ•ィルタ固有ã®ãƒ«ãƒ¼ãƒ«ã«å¾“ã†å¿…è¦ãŒã‚りã¾ã™ã€‚ã¾ãŸã€è¨­å®šã”ã¨ã«é©åˆ‡ãªã‚¢ãƒƒãƒ—デート パスを確ä¿ã™ã‚‹ãŸã‚ã€å„ APK ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ コードã«ç‰¹åˆ¥ãªæ³¨æ„を払ã†å¿…è¦ãŒã‚りã¾ã™ã€‚</p>
-<p>Google Play ã§è¤‡æ•°ã® APK を公開ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦è©³ã—ãã¯ã€<a href="{@docRoot}google/play/publishing/multiple-apks.html">複数㮠APK サãƒãƒ¼ãƒˆï¼ˆMultiple APK Support)</a>ã‚’ã”覧ãã ã•ã„。</p> \ No newline at end of file
+<p>Google Play ã§è¤‡æ•°ã® APK を公開ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦è©³ã—ãã¯ã€<a href="{@docRoot}google/play/publishing/multiple-apks.html">複数㮠APK サãƒãƒ¼ãƒˆï¼ˆMultiple APK Support)</a>ã‚’ã”覧ãã ã•ã„。</p> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/guide/components/activities.jd b/docs/html-intl/intl/ja/guide/components/activities.jd
index 9b06d2c838bb..227f7f4b4083 100644
--- a/docs/html-intl/intl/ja/guide/components/activities.jd
+++ b/docs/html-intl/intl/ja/guide/components/activities.jd
@@ -53,7 +53,7 @@ page.tags=activity,intent
<p> 通常ã€ã‚¢ãƒ—リケーションã¯è¤‡æ•°ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã§æ§‹æˆã•れã¦ãŠã‚Šã€å„アプリケーションã¯ãれãžã‚Œç·©ã‚„ã‹ã«ã¤ãªãŒã£ã¦ã„ã¾ã™ã€‚
一般的ã«ã¯ã€ã‚¢ãƒ—リケーション㮠1 ã¤ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒã€Œãƒ¡ã‚¤ãƒ³ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¨ã—ã¦æŒ‡å®šã•れã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒåˆã‚ã¦ã‚¢ãƒ—リケーションを起動ã—ãŸã¨ãã«è¡¨ç¤ºã•れるã®ãŒã“ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«ãªã‚Šã¾ã™ã€‚
ãã®å¾Œã€å„アクティビティã§åˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã—ã¦åˆ¥ã®æ“作を実行ã§ãã¾ã™ã€‚
-æ–°ã—ã„アクティビティã®é–‹å§‹æ™‚ã«ã¯ã€å‰ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯åœæ­¢ã—ã¾ã™ãŒã€ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã‚·ã‚¹ãƒ†ãƒ ã«ã‚ˆã£ã¦ã‚¹ã‚¿ãƒƒã‚¯ï¼ˆã€Œãƒãƒƒã‚¯ã‚¹ã‚¿ãƒƒã‚¯ã€ï¼‰ã«ç¶­æŒã•れã¾ã™
+æ–°ã—ã„アクティビティã®é–‹å§‹æ™‚ã«ã¯ã€å‰ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯åœæ­¢ã—ã¾ã™ãŒã€ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã‚·ã‚¹ãƒ†ãƒ ã«ã‚ˆã£ã¦ã‚¹ã‚¿ãƒƒã‚¯ï¼ˆã€Œãƒãƒƒã‚¯ã‚¹ã‚¿ãƒƒã‚¯ã€ï¼‰ã«ç¶­æŒã•れã¾ã™
æ–°ã—ã„アクティビティãŒé–‹å§‹ã™ã‚‹ã¨ã€ãれãŒãƒãƒƒã‚¯ã‚¹ã‚¿ãƒƒã‚¯ã«å…¥ã£ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«è¡¨ç¤ºã•れã¾ã™ã€‚
ãƒãƒƒã‚¯ã‚¹ã‚¿ãƒƒã‚¯ã¯ã€Œå¾Œå…¥ã‚Œå…ˆå‡ºã—ã€ã®åŸºæœ¬çš„ãªã‚¹ã‚¿ãƒƒã‚¯ メカニズムを順守ã™ã‚‹ãŸã‚ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒç¾åœ¨ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを完了ã—㦠[<em>戻る</em>] ボタンを押ã™ã¨ã€ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã‚¹ã‚¿ãƒƒã‚¯ã‹ã‚‰æ¶ˆãˆï¼ˆç ´æ£„ã•れ)ã€å‰ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå†é–‹ã—ã¾ã™ã€‚
diff --git a/docs/html-intl/intl/ja/guide/components/fragments.jd b/docs/html-intl/intl/ja/guide/components/fragments.jd
index 31fb7f5020b2..7f9096393eda 100644
--- a/docs/html-intl/intl/ja/guide/components/fragments.jd
+++ b/docs/html-intl/intl/ja/guide/components/fragments.jd
@@ -36,7 +36,7 @@ parent.link=activities.html
<li>{@link android.app.FragmentManager}</li>
<li>{@link android.app.FragmentTransaction}</li>
</ol>
-
+
<h2>関連ドキュメント</h2>
<ol>
<li><a href="{@docRoot}training/basics/fragments/index.html">Building a Dynamic UI with Fragments</a></li>
@@ -332,7 +332,7 @@ fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
</pre>
- <p>{@link android.app.FragmentTransaction#add(int,Fragment) add()} ã«æ¸¡ã•れる最åˆã®å¼•æ•°ã¯ãƒ•ラグメントをé…ç½®ã™ã‚‹ {@link android.view.ViewGroup} ã§ãƒªã‚½ãƒ¼ã‚¹ ID ã§æŒ‡å®šã•れã¦ãŠã‚Šã€2 ã¤ç›®ã®ãƒ‘ラメータã¯è¿½åŠ ã™ã‚‹ãƒ•ラグメントã§ã™ã€‚
+ <p>{@link android.app.FragmentTransaction#add(int,Fragment) add()} ã«æ¸¡ã•れる最åˆã®å¼•æ•°ã¯ãƒ•ラグメントをé…ç½®ã™ã‚‹ {@link android.view.ViewGroup} ã§ãƒªã‚½ãƒ¼ã‚¹ ID ã§æŒ‡å®šã•れã¦ãŠã‚Šã€2 ã¤ç›®ã®ãƒ‘ラメータã¯è¿½åŠ ã™ã‚‹ãƒ•ラグメントã§ã™ã€‚
</p>
<p>{@link android.app.FragmentTransaction} ã§å¤‰æ›´ã‚’加ãˆãŸã‚‰ã€{@link android.app.FragmentTransaction#commit} を呼ã³å‡ºã—ã¦å¤‰æ›´ã‚’é©ç”¨ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
@@ -378,7 +378,7 @@ FragmentRetainInstance.java} ã®ã‚µãƒ³ãƒ—ルã§ã‚·ã‚¹ãƒ†ãƒ ã« <code>&lt;sdk_roo
<li>{@link
android.app.FragmentManager#findFragmentById findFragmentById()}(アクティビティ レイアウト㧠UI ã‚’æä¾›ã™ã‚‹ãƒ•ラグメントã®å ´åˆï¼‰ã‚„ {@link android.app.FragmentManager#findFragmentByTag
findFragmentByTag()}(UI ã‚’æä¾›ã—ãªã„フラグメントã®å ´åˆï¼‰ã‚’使用ã—ã¦ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«ã‚るフラグメントをå–å¾—ã™ã‚‹ã€‚
-</li>
+</li>
<li>{@link
android.app.FragmentManager#popBackStack()} を使用ã—ã¦ãƒ•ラグメントをãƒãƒƒã‚¯ã‚¹ã‚¿ãƒƒã‚¯ã‹ã‚‰å–り出ã™ï¼ˆãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚ˆã‚‹ [<em>戻る</em>] コマンドをシミュレートã™ã‚‹ï¼‰ã€‚</li>
<li>{@link
@@ -785,7 +785,7 @@ android.widget.FrameLayout} ã«ãƒ•ラグメントを追加ã™ã‚‹ï¼‰ã€æ–°ã—ã„ã
<p>2 ã¤ç›®ã®ãƒ•ラグメントã§ã‚ã‚‹ {@code DetailsFragment} ã¯ã€{@code TitlesFragment} ã®ãƒªã‚¹ãƒˆã§é¸æŠžã•れãŸåЇã®ã‚らã™ã˜ã‚’表示ã—ã¾ã™ã€‚
</p>
-
+
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
<p>{@code TitlesFragment} クラスã§èª¬æ˜Žã—ãŸã‚ˆã†ã«ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒãƒªã‚¹ãƒˆã‚¢ã‚¤ãƒ†ãƒ ã‚’クリックã—ãŸã¨ãã«ã€ç¾åœ¨ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã«{@code R.id.details} ビュー({@code DetailsFragment} ãŒå±žã™ã‚‹å ´æ‰€ï¼‰ãŒ<em>å«ã¾ã‚Œã¦ã„ãªã„</em>å ´åˆã€ã‚¢ãƒ—リケーション㯠{@code DetailsActivity} ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã—ã¦ã‚¢ã‚¤ãƒ†ãƒ ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を表示ã—ã¾ã™ã€‚
@@ -798,7 +798,7 @@ android.widget.FrameLayout} ã«ãƒ•ラグメントを追加ã™ã‚‹ï¼‰ã€æ–°ã—ã„ã
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
details_activity}
-
+
<p>æ§‹æˆãŒæ¨ªæ–¹å‘ã®å ´åˆã¯ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯è‡ªã‚‰çµ‚了ã™ã‚‹ãŸã‚ã€ãƒ¡ã‚¤ãƒ³ アクティビティãŒå¼•ãç¶™ã„ã§ {@code DetailsFragment} ã‚’ {@code TitlesFragment} ã®æ¨ªã«è¡¨ç¤ºã§ãã¾ã™ã€‚ã“れã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒç¸¦æ–¹å‘ã®ã¨ãã« {@code DetailsActivity} ã‚’é–‹å§‹ã—ã€ãã®å¾Œæ¨ªæ–¹å‘ã«å›žè»¢ã—ãŸï¼ˆã“ã“ã§ç¾åœ¨ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå†é–‹ã•れる)ã¨ãã«èµ·ã“ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚
diff --git a/docs/html-intl/intl/ja/guide/components/fundamentals.jd b/docs/html-intl/intl/ja/guide/components/fundamentals.jd
index 46e98689a3ec..e1a26cd9c577 100644
--- a/docs/html-intl/intl/ja/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/ja/guide/components/fundamentals.jd
@@ -379,7 +379,7 @@ startActivity()} ã«æ¸¡ã™å ´åˆã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒãƒ¡ãƒ¼ãƒ«ã‚’下書ãã—ã¦é€
</p>
<p>ãŸã¨ãˆã°ã€ã‚¢ãƒ—リã§ã‚«ãƒ¡ãƒ©ã‚’使用ã™ã‚‹å¿…è¦ãŒã‚りã€Android 2.1 ã§æŽ¡ç”¨ã•れ㟠API(<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API レベル</a> 7)を使用ã™ã‚‹å ´åˆã€æ¬¡ã®ã‚ˆã†ã«ãƒžãƒ‹ãƒ•ェスト ファイルã§ãれをè¦ä»¶ã¨ã—ã¦å®£è¨€ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-</p>
+</p>
<pre>
&lt;manifest ... >
diff --git a/docs/html-intl/intl/ja/guide/components/index.jd b/docs/html-intl/intl/ja/guide/components/index.jd
index 803f99b2ebd2..f4801c945970 100644
--- a/docs/html-intl/intl/ja/guide/components/index.jd
+++ b/docs/html-intl/intl/ja/guide/components/index.jd
@@ -11,7 +11,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>ブログã®è¨˜äº‹</h3>
-
+
<a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
<h4>DialogFragments ã®ä½¿ç”¨</h4>
<p>ã“ã®æŠ•ç¨¿ã§ã¯ã€DialogFragments ã‚’ v4 サãƒãƒ¼ãƒˆ ライブラリã§ä½¿ç”¨ã—ã¦ï¼ˆHoneycomb 以å‰ã®ç«¯æœ«ã§ã®ä¸‹æ–¹äº’æ›æ€§ã®ãŸã‚)ダイアログを編集ã—ãŸã‚Šã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースを使用ã—ã¦å‘¼ã³å‡ºã—元㮠Activity ã«çµæžœã‚’è¿”ã—ãŸã‚Šã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦èª¬æ˜Žã—ã¾ã™ã€‚</p>
@@ -21,7 +21,7 @@ page.image=images/develop/app_components.png
<h4>ã™ã¹ã¦ã« Fragments ã‚’</h4>
<p>本日ã€åŒã˜ Fragments API を利用ã§ãã‚‹é™çš„ãªãƒ©ã‚¤ãƒ–ラリãŒå…¬é–‹ã•れã€Android 1.6 以é™ã§ã‚‚フラグメントを使用ã—ã¦ã‚¿ãƒ–レット対応ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ インターフェースを作æˆã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚ </p>
</a>
-
+
<a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
<h4>マルãƒã‚¹ãƒ¬ãƒƒãƒ‰ã§ãƒ‘フォーマンスå‘上</h4>
<p>応答ã®é€Ÿã„アプリケーションを作æˆã™ã‚‹ä¸Šã§é‡è¦ãªã®ã¯ã€ãƒ¡ã‚¤ãƒ³ UI ã‚¹ãƒ¬ãƒƒãƒ‰ãŒæœ€å°é™ã®ä½œæ¥­ã‚’行ã†ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã§ã™ã€‚
@@ -32,7 +32,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>トレーニング</h3>
-
+
<a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
<h4>アクティビティã®ãƒ©ã‚¤ãƒ•サイクルã®ç®¡ç†</h4>
<p>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã¯ã€å„ Activity インスタンスãŒå—ã‘å–ã‚‹é‡è¦ãªãƒ©ã‚¤ãƒ•サイクル コールãƒãƒƒã‚¯ メソッドã«ã¤ã„ã¦ã€ãれらを使用ã—ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®äºˆæœŸã™ã‚‹å†…容ã§ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを動作ã•ã›ã‚‹æ–¹æ³•ã¨ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒãれらを必è¦ã¨ã—ãªã„ã¨ãã«ã€ã‚·ã‚¹ãƒ†ãƒ ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’消費ã—ãªã„よã†ã«ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦å­¦ç¿’ã—ã¾ã™ã€‚
diff --git a/docs/html-intl/intl/ja/guide/components/loaders.jd b/docs/html-intl/intl/ja/guide/components/loaders.jd
index bc936774f721..6034717933ef 100644
--- a/docs/html-intl/intl/ja/guide/components/loaders.jd
+++ b/docs/html-intl/intl/ja/guide/components/loaders.jd
@@ -21,14 +21,14 @@ parent.link=activities.html
</ol>
</li>
</ol>
-
+
<h2>キークラス</h2>
<ol>
<li>{@link android.app.LoaderManager}</li>
<li>{@link android.content.Loader}</li>
- </ol>
-
+ </ol>
+
<h2>関連サンプル</h2>
<ol>
<li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -51,7 +51,7 @@ android.app.Fragment} ã§ä½¿ç”¨ã§ãる。</li>
å†åº¦ãƒ‡ãƒ¼ã‚¿ã‚’å•ã„åˆã‚ã›ã‚‹å¿…è¦ãŒãªã„。
</li>
</ul>
-
+
<h2 id="summary">Loader API ã®æ¦‚è¦</h2>
<p>アプリケーションã§ãƒ­ãƒ¼ãƒ€ã‚’使用ã™ã‚‹ã®ã«å¿…è¦ã«ãªã‚Šãã†ãªã‚¯ãƒ©ã‚¹ã‚„インターフェースã¯è¤‡æ•°ã‚りã¾ã™ã€‚
@@ -129,7 +129,7 @@ android.content.ContentProvider} ã§ã‚µãƒãƒ¼ãƒˆã•れã¦ã„るデータをロãƒ
</li>
<li>{@link android.app.LoaderManager.LoaderCallbacks} ã®å®Ÿè£…。ã“ã“ã§ã€æ–°ã—ã„ローダを作æˆã—ã¦æ—¢å­˜ã®ãƒ­ãƒ¼ãƒ€ã¸ã®å‚照を管ç†ã—ã¾ã™ã€‚
-</li>
+</li>
<li>{@link
android.widget.SimpleCursorAdapter} ãªã©ã®ãƒ­ãƒ¼ãƒ€ã®ãƒ‡ãƒ¼ã‚¿ã‚’表示ã™ã‚‹æ–¹æ³•。</li>
<li>{@link android.content.CursorLoader} を使用ã™ã‚‹ã¨ãã®ã€{@link android.content.ContentProvider} ãªã©ã®ãƒ‡ãƒ¼ã‚¿ ソース。
@@ -140,7 +140,7 @@ android.widget.SimpleCursorAdapter} ãªã©ã®ãƒ­ãƒ¼ãƒ€ã®ãƒ‡ãƒ¼ã‚¿ã‚’表示ã™ã‚
<p>{@link android.app.LoaderManager} 㯠1 ã¤ä»¥ä¸Šã® {@link
android.content.Loader} インスタンスを {@link android.app.Activity} ã‚„ {@link android.app.Fragment} 内ã§ç®¡ç†ã—ã¾ã™ã€‚
1 ã¤ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティやフラグメントã”ã¨ã«ã€{@link
-android.app.LoaderManager} 㯠1 ã¤ã ã‘存在ã—ã¾ã™ã€‚</p>
+android.app.LoaderManager} 㯠1 ã¤ã ã‘存在ã—ã¾ã™ã€‚</p>
<p>通常ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ㮠{@link
android.app.Activity#onCreate onCreate()} メソッドã‹ã€ãƒ•ラグメント㮠{@link android.app.Fragment#onActivityCreated onActivityCreated()} メソッド内㧠{@link android.content.Loader} ã‚’åˆæœŸåŒ–ã—ã¾ã™ã€‚
@@ -157,13 +157,13 @@ getLoaderManager().initLoader(0, null, this);</pre>
<ul>
<li>ローダを識別ã™ã‚‹ä¸€æ„ã® ID。ã“ã®ä¾‹ã§ã¯ã€ID 㯠0 ã§ã™ã€‚</li>
<li>ãƒ­ãƒ¼ãƒ€ã®æ§‹ç¯‰æ™‚ã«æä¾›ã™ã‚‹ä»»æ„ã®å¼•数(ã“ã®ä¾‹ã§ã¯ <code>null</code>)。
-</li>
+</li>
<li>{@link android.app.LoaderManager} ãŒãƒ­ãƒ¼ãƒ€ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’報告ã™ã‚‹éš›ã«å‘¼ã³å‡ºã™ {@link android.app.LoaderManager.LoaderCallbacks} ã®å®Ÿè£…。
ã“ã®ä¾‹ã§ã¯ã€ãƒ­ãƒ¼ã‚«ãƒ«ã‚¯ãƒ©ã‚¹ãŒ {@link
android.app.LoaderManager.LoaderCallbacks} インターフェースを実装ã™ã‚‹ãŸã‚ã€è‡ªèº«ã® {@code this} ã«å‚照を渡ã—ã¾ã™ã€‚
-</li>
+</li>
</ul>
<p>{@link android.app.LoaderManager#initLoader initLoader()} ã®å‘¼ã³å‡ºã—ã«ã‚ˆã£ã¦ã€ãƒ­ãƒ¼ãƒ€ãŒåˆæœŸåŒ–ã•れã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã«ãªã‚Šã¾ã™ã€‚
çµæžœã«ã¯æ¬¡ã® 2 ã¤ã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚</p>
@@ -366,7 +366,7 @@ public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
android.app.Fragment} ã®å®Œå…¨ãªå®Ÿè£…ã®ä¾‹ã§ã™ã€‚
{@link
android.content.CursorLoader} を使用ã—ã¦ãƒ—ロãƒã‚¤ãƒ€ã¸ã®ã‚¯ã‚¨ãƒªã‚’管ç†ã—ã¦ã„ã¾ã™ã€‚</p>
-
+
<p>ã“ã®ä¾‹ã«ã‚るよã†ã«ã€ã‚¢ãƒ—リケーションãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ã®é€£çµ¡å…ˆã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ã€ãƒžãƒ‹ãƒ•ェスト㫠{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS} ã®è¨±å¯ã‚’å«ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
</p>
diff --git a/docs/html-intl/intl/ja/guide/components/processes-and-threads.jd b/docs/html-intl/intl/ja/guide/components/processes-and-threads.jd
index 691a5f471880..ae364113e1e6 100644
--- a/docs/html-intl/intl/ja/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/ja/guide/components/processes-and-threads.jd
@@ -319,7 +319,7 @@ private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
-
+
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
diff --git a/docs/html-intl/intl/ja/guide/publishing/app-signing.jd b/docs/html-intl/intl/ja/guide/publishing/app-signing.jd
index 2d2acfa2f8c3..efe66f453c9f 100644
--- a/docs/html-intl/intl/ja/guide/publishing/app-signing.jd
+++ b/docs/html-intl/intl/ja/guide/publishing/app-signing.jd
@@ -53,7 +53,7 @@ page.title=アプリケーションã¸ã®ç½²å
<ul>
<li>ã™ã¹ã¦ã®ã‚¢ãƒ—リケーションã¯<em>ç½²åã•れる必è¦ãŒã‚りã¾ã™</em>。署åã•れã¦ã„ãªã„アプリケーションã¯ã‚·ã‚¹ãƒ†ãƒ ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¾ã›ã‚“。</li>
<li>アプリケーションã®ç½²åã«ã€è‡ªå·±ç½²å証明書を使用ã§ãã¾ã™ã€‚èªè¨¼æ©Ÿé–¢ã¯ä¸è¦ã§ã™ã€‚</li>
- <li>アプリケーションをエンド ユーザーã«ãƒªãƒªãƒ¼ã‚¹ã™ã‚‹æº–å‚™ãŒã§ããŸã‚‰ã€é©åˆ‡ãªç§˜å¯†éµã‚’使用ã—ã¦ã‚¢ãƒ—リケーションã«ç½²åã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚SDK ツールã§ç”Ÿæˆã•れãŸãƒ‡ãƒãƒƒã‚° キーã§ç½²åã•れãŸã‚¢ãƒ—リケーションã¯ã€å…¬é–‹ã§ãã¾ã›ã‚“。
+ <li>アプリケーションをエンド ユーザーã«ãƒªãƒªãƒ¼ã‚¹ã™ã‚‹æº–å‚™ãŒã§ããŸã‚‰ã€é©åˆ‡ãªç§˜å¯†éµã‚’使用ã—ã¦ã‚¢ãƒ—リケーションã«ç½²åã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚SDK ツールã§ç”Ÿæˆã•れãŸãƒ‡ãƒãƒƒã‚° キーã§ç½²åã•れãŸã‚¢ãƒ—リケーションã¯ã€å…¬é–‹ã§ãã¾ã›ã‚“。
</li>
<li>システムãŒç½²åè¨¼æ˜Žæ›¸ã®æœ‰åŠ¹æœŸé™ã‚’確èªã™ã‚‹ã®ã¯ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ™‚ã®ã¿ã§ã™ã€‚アプリケーションã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å¾Œã«ç½²åè€…è¨¼æ˜Žæ›¸ãŒæœŸé™åˆ‡ã‚Œã«ãªã£ãŸå ´åˆã€ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¯æ­£å¸¸ãªå‹•作を継続ã—ã¾ã™ã€‚</li>
<li>標準ツールã§ã‚ã‚‹ Keytool 㨠Jarsigner を使用ã—ã¦ã‚­ãƒ¼ã‚’生æˆã—ã€ã‚¢ãƒ—リケーション㮠.apk ファイルã«ç½²åã§ãã¾ã™ã€‚</li>
@@ -61,7 +61,7 @@ page.title=アプリケーションã¸ã®ç½²å
<p>Android システムã¯ã€é©åˆ‡ã«ç½²åã•れã¦ã„ãªã„アプリケーションをインストールã›ãšã€å®Ÿè¡Œã‚‚ã—ã¾ã›ã‚“。ã“ã®è¦å‰‡ã¯ã€å®Ÿéš›ã®ãƒ‡ãƒã‚¤ã‚¹ã§ã‚‚エミュレータã§ã‚‚ã€Android システムãŒå®Ÿè¡Œã•れるã™ã¹ã¦ã®çжæ³ã§é©ç”¨ã•れã¾ã™ã€‚ã“ã®ãŸã‚ã€ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿ã¾ãŸã¯ãƒ‡ãƒã‚¤ã‚¹ä¸Šã§å®Ÿè¡Œã¾ãŸã¯ãƒ‡ãƒãƒƒã‚°ã™ã‚‹å‰ã«ã€ã‚¢ãƒ—リケーションã®ç½²åを設定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚</p>
-<p>Android SDK ツールã¯ã€ãƒ‡ãƒãƒƒã‚°æ™‚ã®ã‚¢ãƒ—リケーション署åを支æ´ã—ã¾ã™ã€‚「ADT Plugin for Eclipseã€ã¨ã€ŒAnt ビルド ツールã€ã§ã¯ä¸¡æ–¹ã¨ã‚‚ã€<em>デãƒãƒƒã‚° モード</em>ã¨<em>リリース モード</em>ã® 2 種類ã®ç½²åモードを利用ã§ãã¾ã™ã€‚
+<p>Android SDK ツールã¯ã€ãƒ‡ãƒãƒƒã‚°æ™‚ã®ã‚¢ãƒ—リケーション署åを支æ´ã—ã¾ã™ã€‚「ADT Plugin for Eclipseã€ã¨ã€ŒAnt ビルド ツールã€ã§ã¯ä¸¡æ–¹ã¨ã‚‚ã€<em>デãƒãƒƒã‚° モード</em>ã¨<em>リリース モード</em>ã® 2 種類ã®ç½²åモードを利用ã§ãã¾ã™ã€‚
<ul>
<li>開発ãŠã‚ˆã³ãƒ†ã‚¹ãƒˆä¸­ã¯ã€ãƒ‡ãƒãƒƒã‚° モードã§ã‚³ãƒ³ãƒ‘イルã§ãã¾ã™ã€‚デãƒãƒƒã‚° モードã§ã¯ã€ãƒ“ルド ツール㯠JDK ã«ä»˜å±žã® Keytool ユーティリティを使用ã—ã¦ã€ã‚­ãƒ¼ã‚¹ãƒˆã‚¢ã¨ã‚­ãƒ¼ã‚’既知ã®ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã¨ãƒ‘スワードã§ä½œæˆã—ã¾ã™ã€‚コンパイルã®ãŸã³ã«ã€ãƒ„ールã¯ãƒ‡ãƒãƒƒã‚° キーを使用ã—ã¦ã‚¢ãƒ—リケーション㮠.apk ファイルã«ç½²åã—ã¾ã™ã€‚ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã¯æ—¢çŸ¥ã®ã‚‚ã®ãªã®ã§ã€ã‚³ãƒ³ãƒ‘イルã®ãŸã³ã«ãƒ„ールã«ã‚­ãƒ¼ã‚¹ãƒˆã‚¢/キー パスワードを入力ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。</li>
@@ -198,8 +198,8 @@ page.title=アプリケーションã¸ã®ç½²å
<ul>
<li>è‡ªåˆ†ãŒæ‰€æœ‰ã—ã¦ã„る。</li>
<li>アプリケーションã§è­˜åˆ¥ã•れるã€å€‹äººã€æ³•人ã€ã¾ãŸã¯çµ„ç¹”ã®å®Ÿä½“を表ã™ã€‚</li>
-<li>アプリケーションã¾ãŸã¯ã‚¢ãƒ—リケーション スイートã®äºˆæœŸã•れる使用期間を超ãˆã‚‹æœ‰åŠ¹æœŸé–“ã‚’æŒã£ã¦ã„る。有効期間ã¨ã—ã¦ã€25 年以上を推奨ã—ã¾ã™ã€‚
-<p>アプリケーションを Android マーケットã«å…¬é–‹ã™ã‚‹äºˆå®šã®å ´åˆã€2033 å¹´ 10 月 22 æ—¥ã¾ã§ã®æœ‰åŠ¹æœŸé–“ãŒå¿…è¦ã§ã™ã€‚有効期間ãŒã“ã®æ—¥ä»˜ä»¥å‰ã«æœŸé™åˆ‡ã‚Œã«ãªã‚‹ã‚­ãƒ¼ã§ç½²åã•れãŸã‚¢ãƒ—リケーションã¯ã€ã‚¢ãƒƒãƒ—ロードã§ãã¾ã›ã‚“。
+<li>アプリケーションã¾ãŸã¯ã‚¢ãƒ—リケーション スイートã®äºˆæœŸã•れる使用期間を超ãˆã‚‹æœ‰åŠ¹æœŸé–“ã‚’æŒã£ã¦ã„る。有効期間ã¨ã—ã¦ã€25 年以上を推奨ã—ã¾ã™ã€‚
+<p>アプリケーションを Android マーケットã«å…¬é–‹ã™ã‚‹äºˆå®šã®å ´åˆã€2033 å¹´ 10 月 22 æ—¥ã¾ã§ã®æœ‰åŠ¹æœŸé–“ãŒå¿…è¦ã§ã™ã€‚有効期間ãŒã“ã®æ—¥ä»˜ä»¥å‰ã«æœŸé™åˆ‡ã‚Œã«ãªã‚‹ã‚­ãƒ¼ã§ç½²åã•れãŸã‚¢ãƒ—リケーションã¯ã€ã‚¢ãƒƒãƒ—ロードã§ãã¾ã›ã‚“。
</p></li>
<li>Android SDK ツールã§ç”Ÿæˆã•れãŸãƒ‡ãƒãƒƒã‚° キーã§ã¯ãªã„。 </li>
</ul>
@@ -248,7 +248,7 @@ page.title=アプリケーションã¸ã®ç½²å
<p>秘密éµã‚’生æˆã™ã‚‹ Keytool コマンドã®ä¾‹ã‚’示ã—ã¾ã™ã€‚</p>
-<pre>$ keytool -genkey -v -keystore my-release-key.keystore
+<pre>$ keytool -genkey -v -keystore my-release-key.keystore
-alias alias_name -keyalg RSA -validity 10000</pre>
<p>上記ã®ã‚³ãƒžãƒ³ãƒ‰ä¾‹ã‚’実行ã™ã‚‹ã¨ã€Keytool ã‹ã‚‰ã‚­ãƒ¼ã‚¹ãƒˆã‚¢ã¨ã‚­ãƒ¼ã®ãƒ‘スワードã¨ã€ã‚­ãƒ¼ã®è­˜åˆ¥åãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®æŒ‡å®šãŒæ±‚ã‚られã¾ã™ã€‚キーストア㌠<code>my-release-key.keystore</code> ã¨ã„ã†ãƒ•ァイルã¨ã—ã¦ç”Ÿæˆã•れã¾ã™ã€‚キーストアã¨ã‚­ãƒ¼ã¯ã€å…¥åŠ›ã—ãŸãƒ‘スワードã§ä¿è­·ã•れã¾ã™ã€‚キーストアã«ã¯ 1 ã¤ã®ã‚­ãƒ¼ãŒå«ã¾ã‚Œã€10000 日間有効ã§ã™ã€‚エイリアスã¯ã€å¾Œã§ä½¿ç”¨ã™ã‚‹åå‰ã§ã€ã‚¢ãƒ—リケーションã«ç½²åã™ã‚‹ã¨ãã«ã“ã®ã‚­ãƒ¼ã‚¹ãƒˆã‚¢ã‚’å‚ç…§ã™ã‚‹åå‰ã§ã™ã€‚ </p>
@@ -282,10 +282,10 @@ href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security">http://java.sun.co
</tr>
</table>
-<p>Jarsigner を使用ã—㦠<code>my_application.apk</code> ã¨ã„ã†ã‚¢ãƒ—リケーション パッケージã«ç½²åã™ã‚‹ä¾‹ã‚’ã€ä¸Šè¨˜ã§ä½œæˆã—ãŸã‚­ãƒ¼ã‚¹ãƒˆã‚¢ã‚’使用ã—ã¦ç¤ºã—ã¾ã™ã€‚
+<p>Jarsigner を使用ã—㦠<code>my_application.apk</code> ã¨ã„ã†ã‚¢ãƒ—リケーション パッケージã«ç½²åã™ã‚‹ä¾‹ã‚’ã€ä¸Šè¨˜ã§ä½œæˆã—ãŸã‚­ãƒ¼ã‚¹ãƒˆã‚¢ã‚’使用ã—ã¦ç¤ºã—ã¾ã™ã€‚
</p>
-<pre>$ jarsigner -verbose -keystore my-release-key.keystore
+<pre>$ jarsigner -verbose -keystore my-release-key.keystore
my_application.apk alias_name</pre>
<p>上記ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã™ã‚‹ã¨ã€Jarsigner ã‹ã‚‰ã‚­ãƒ¼ã‚¹ãƒˆã‚¢ã¨ã‚­ãƒ¼ã®ãƒ‘スワードã®å…¥åŠ›ãŒæ±‚ã‚られã¾ã™ã€‚.apk ãŒãã®å ´ã§å¤‰æ›´ã•れã€.apk ã¯ç½²åã•れã¾ã™ã€‚.apk ã«åˆ¥ã®ã‚­ãƒ¼ã§è¤‡æ•°å›žç½²åã§ãã¾ã™ã€‚</p>
diff --git a/docs/html-intl/intl/ja/guide/publishing/preparing.jd b/docs/html-intl/intl/ja/guide/publishing/preparing.jd
index c7a29509aeea..a86f70ceb19c 100644
--- a/docs/html-intl/intl/ja/guide/publishing/preparing.jd
+++ b/docs/html-intl/intl/ja/guide/publishing/preparing.jd
@@ -68,7 +68,7 @@ href="{@docRoot}tools/publishing/publishing.html#market">Android マーケット
<h3 id="eula">2. アプリケーションã¸ã®ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ãƒ¼ ライセンス契約ã®è¿½åŠ ã‚’æ¤œè¨Žã™ã‚‹</h3>
-<p>個人ã€çµ„ç¹”ã€çŸ¥çš„財産をä¿è­·ã™ã‚‹ãŸã‚ã€ã‚¢ãƒ—リケーションã®ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ãƒ¼ ライセンス契約(EULA)を付加ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚
+<p>個人ã€çµ„ç¹”ã€çŸ¥çš„財産をä¿è­·ã™ã‚‹ãŸã‚ã€ã‚¢ãƒ—リケーションã®ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ãƒ¼ ライセンス契約(EULA)を付加ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚
<h3 id="iconlabel">3. アプリケーションã®ãƒžãƒ‹ãƒ•ェストã«ã‚¢ã‚¤ã‚³ãƒ³ã¨ãƒ©ãƒ™ãƒ«ã‚’指定ã™ã‚‹</h3>
diff --git a/docs/html-intl/intl/ja/guide/publishing/versioning.jd b/docs/html-intl/intl/ja/guide/publishing/versioning.jd
index 192861053499..4da05bfa41e7 100644
--- a/docs/html-intl/intl/ja/guide/publishing/versioning.jd
+++ b/docs/html-intl/intl/ja/guide/publishing/versioning.jd
@@ -48,13 +48,13 @@ page.title=アプリケーションã®ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚°
<p>アプリケーションã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を定義ã™ã‚‹ã«ã¯ã€ã‚¢ãƒ—リケーションã®ãƒžãƒ‹ãƒ•ェスト ファイルã§å±žæ€§ã‚’設定ã—ã¾ã™ã€‚2 ã¤ã®å±žæ€§ã‚’使用ã§ãã€å¸¸ã«ã“ã®ä¸¡æ–¹ã«å€¤ã‚’定義ã™ã‚‹ã“ã¨ãŒæŽ¨å¥¨ã•れã¦ã„ã¾ã™: </p>
<ul>
-<li><code>android:versionCode</code> - アプリケーション コードã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ä»–ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ç›¸å¯¾çš„ã«ç¤ºã™æ•´æ•°å€¤ã€‚
+<li><code>android:versionCode</code> - アプリケーション コードã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ä»–ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ç›¸å¯¾çš„ã«ç¤ºã™æ•´æ•°å€¤ã€‚
<p>ã“ã®å€¤ã¯æ•´æ•°ãªã®ã§ã€ãã®ä»–ã®ã‚¢ãƒ—リケーションã¯ãƒ—ログラムã§ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®å€¤ã‚’評価ã—ã¦é–¢ä¿‚を確èªã§ãã¾ã™ï¼ˆãŸã¨ãˆã°ã€ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã‚¢ãƒƒãƒ—グレードã‹ãƒ€ã‚¦ãƒ³ã‚°ãƒ¬ãƒ¼ãƒ‰ãªã®ã‹ã€ãªã©ï¼‰ã€‚ä»»æ„ã®æ•´æ•°å€¤ã‚’設定ã§ãã¾ã™ãŒã€ã‚¢ãƒ—リケーションã®å¾Œç¶šã®ãƒªãƒªãƒ¼ã‚¹ã§ã¯ã€ç¾åœ¨ã‚ˆã‚Šå¤§ããªå€¤ã‚’使用ã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。システムã§ã¯ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç®¡ç†ã®åŸºæº–を強制ã—ã¾ã›ã‚“ãŒã€å¾Œç¶™ãƒªãƒªãƒ¼ã‚¹ã®å€¤ã‚’増加ã•ã›ã‚‹ã“ã¨ã¯æ¨™æº–çš„ã§ã™ã€‚ </p>
<p>通常ã€ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã®æœ€åˆã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® versionCode ã‚’ 1 ã«è¨­å®šã—ã¦ãƒªãƒªãƒ¼ã‚¹ã—ã€ãã®å¾Œã¯å„リリースã«ã¤ã„ã¦ã€ãƒªãƒªãƒ¼ã‚¹ãŒãƒ¡ã‚¸ãƒ£ãƒ¼ リリースã§ã‚ã£ã¦ã‚‚マイナー リリースã§ã‚ã£ã¦ã‚‚ã€å€¤ã‚’å˜èª¿å¢—加ã•ã›ã¾ã™ã€‚ã“れã¯ã€<code>android:versionCode</code> ã®å€¤ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«è¡¨ç¤ºã•れるアプリケーション リリース ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨é¡žä¼¼ã—ã¦ã„ã‚‹å¿…è¦æ€§ã¯ãªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚以下㮠<code>android:versionName</code> ã‚’ã”覧ãã ã•ã„。アプリケーションã¨å…¬é–‹ã‚µãƒ¼ãƒ“スã§ã¯ã€ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®å€¤ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã¯è¡¨ç¤ºã•れã¾ã›ã‚“。</p>
</li>
-<li><code>android:versionName</code> - アプリケーション コードã®ãƒªãƒªãƒ¼ã‚¹ ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’è¡¨ã™æ–‡å­—列値ã§ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«è¡¨ç¤ºã•れる値ã§ã™ã€‚
+<li><code>android:versionName</code> - アプリケーション コードã®ãƒªãƒªãƒ¼ã‚¹ ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’è¡¨ã™æ–‡å­—列値ã§ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«è¡¨ç¤ºã•れる値ã§ã™ã€‚
<p>å€¤ã¯æ–‡å­—列ãªã®ã§ã€ã‚¢ãƒ—リケーション ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’「&lt;major&gt;.&lt;minor&gt;.&lt;point&gt;ã€ã¨ã„ã£ãŸæ–‡å­—列やã€ãã®ä»–ã®ã‚¿ã‚¤ãƒ—ã®çµ¶å¯¾çš„ã¾ãŸã¯ç›¸å¯¾çš„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ ID ã¨ã—ã¦è¨˜è¿°ã§ãã¾ã™ã€‚ </p>
<p><code>android:versionCode</code> ã®å ´åˆã¨åŒæ§˜ã«ã€ã‚·ã‚¹ãƒ†ãƒ ã§ã¯ã“ã®å€¤ã‚’アプリケーションã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«è¡¨ç¤ºã™ã‚‹ä»¥å¤–ã®ç›®çš„ã§å†…部的ã«åˆ©ç”¨ã™ã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。公開サービスã§ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«è¡¨ç¤ºã™ã‚‹ãŸã‚ã« <code>android:versionName</code> 値をå–り出ã™å¯èƒ½æ€§ã‚‚ã‚りã¾ã™ã€‚</p>
@@ -79,7 +79,7 @@ page.title=アプリケーションã®ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚°
<p>ã“ã®ä¾‹ã§ã¯ã€<code>android:versionCode</code> 値ã¯ç¾åœ¨ã® .apk ãŒã“ã®ã‚¢ãƒ—リケーション コード㮠2 番目ã®ãƒªãƒªãƒ¼ã‚¹ã‚’å«ã‚“ã§ã„ã‚‹ã“ã¨ã‚’表ã—ã€ã“れ㯠<code>android:codeName</code> 文字列ãŒç¤ºã™ã‚ˆã†ã«ãƒžã‚¤ãƒŠãƒ¼å¾Œç¶™ãƒªãƒªãƒ¼ã‚¹ã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚ </p>
-<p>Android フレームワークã«ã¯ã€ã‚¢ãƒ—リケーションãŒã‚·ã‚¹ãƒ†ãƒ ã«åˆ¥ã®ã‚¢ãƒ—リケーションã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報をå•ã„åˆã‚ã›ã‚‹ API ãŒç”¨æ„ã•れã¦ã„ã¾ã™ã€‚ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報をå–å¾—ã™ã‚‹ãŸã‚ã€ã‚¢ãƒ—リケーション㯠{@link android.content.pm.PackageManager#getPackageInfo(java.lang.String, int)}
+<p>Android フレームワークã«ã¯ã€ã‚¢ãƒ—リケーションãŒã‚·ã‚¹ãƒ†ãƒ ã«åˆ¥ã®ã‚¢ãƒ—リケーションã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報をå•ã„åˆã‚ã›ã‚‹ API ãŒç”¨æ„ã•れã¦ã„ã¾ã™ã€‚ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報をå–å¾—ã™ã‚‹ãŸã‚ã€ã‚¢ãƒ—リケーション㯠{@link android.content.pm.PackageManager#getPackageInfo(java.lang.String, int)}
method of {@link android.content.pm.PackageManager PackageManager}. </p> を使用ã—ã¾ã™ã€‚
<h2 id="minsdkversion">最å°ã‚·ã‚¹ãƒ†ãƒ  API ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®æŒ‡å®š</h2>
@@ -89,7 +89,7 @@ method of {@link android.content.pm.PackageManager PackageManager}. </p> を使ç
<p>最å°ã‚·ã‚¹ãƒ†ãƒ  ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ãƒžãƒ‹ãƒ•ã‚§ã‚¹ãƒˆã«æŒ‡å®šã™ã‚‹ã«ã¯ã€æ¬¡ã®å±žæ€§ã‚’使用ã—ã¾ã™: </p>
<ul>
-<li><code>android:minSdkVersion</code> - Android プラットフォームã®ã‚³ãƒ¼ãƒ‰ ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«å¯¾å¿œã™ã‚‹æ•´æ•°å€¤ã€‚
+<li><code>android:minSdkVersion</code> - Android プラットフォームã®ã‚³ãƒ¼ãƒ‰ ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«å¯¾å¿œã™ã‚‹æ•´æ•°å€¤ã€‚
<p>アプリケーションã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’準備ã™ã‚‹éš›ã«ã€ã‚·ã‚¹ãƒ†ãƒ ã¯ã“ã®å±žæ€§ã®å€¤ã‚’確èªã—ã¦ã€ã‚·ã‚¹ãƒ†ãƒ  ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨æ¯”較ã—ã¾ã™ã€‚<code>android:minSdkVersion</code> 値ãŒã‚·ã‚¹ãƒ†ãƒ  ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚ˆã‚Šã‚‚大ãã„å ´åˆã€ã‚·ã‚¹ãƒ†ãƒ ã¯ã‚¢ãƒ—リケーションã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’中止ã—ã¾ã™ã€‚ </p>
<p>ã“ã®å±žæ€§ã‚’ãƒžãƒ‹ãƒ•ã‚§ã‚¹ãƒˆã«æŒ‡å®šã—ãªã„å ´åˆã€ã‚·ã‚¹ãƒ†ãƒ ã§ã¯ã‚¢ãƒ—リケーションãŒã™ã¹ã¦ã®ãƒ—ラットフォーム ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨äº’æ›æ€§ãŒã‚ã‚‹ã¨ä»®å®šã—ã¾ã™ã€‚</p></li>
diff --git a/docs/html-intl/intl/ja/guide/topics/fundamentals.jd b/docs/html-intl/intl/ja/guide/topics/fundamentals.jd
index d76c92e22ed1..2517073d96c7 100644
--- a/docs/html-intl/intl/ja/guide/topics/fundamentals.jd
+++ b/docs/html-intl/intl/ja/guide/topics/fundamentals.jd
@@ -80,10 +80,10 @@ Android ã®å¤§ããªç‰¹é•·ã® 1 ã¤ã¯ã€è¨±å¯ã•れã¦ã„れã°ã€ã‚るアプ
<dl>
<dt><b>アクティビティ</b></dt>
-<dd>アクティビティã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ 1 ã¤ã®æ“作を集中的ã«è¡Œã†ãŸã‚ã®è¦–覚的ãªãƒ¦ãƒ¼ã‚¶ãƒ¼ インターフェースを表ã—ã¾ã™ã€‚<i></i>ãŸã¨ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒé¸æŠžã§ãるメニュー アイテムã®ä¸€è¦§ã‚’表示ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティやã€å†™çœŸã‚’キャプション付ãã§è¡¨ç¤ºã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãªã©ãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã€‚SMS アプリケーションãªã‚‰ã€ã‚るアクティビティã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡ã™ã‚‹é€£çµ¡å…ˆã®ä¸€è¦§ã‚’表示ã—ã€åˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§é¸æŠžã—ãŸé€£çµ¡å…ˆã¸ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’入力ã—ã€ãã®ä»–ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§å¤ã„メッセージをå‚ç…§ã—ãŸã‚Šè¨­å®šã‚’変更ã—ãŸã‚Šã§ãã¾ã™ã€‚ã“れらã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを組ã¿åˆã‚ã›ã¦å…¨ä½“ã¨ã—ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ インターフェースを形æˆã—ã¾ã™ãŒã€ãれãžã‚Œã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ç›¸äº’ã«ç‹¬ç«‹ã—ã¦ã„ã¾ã™ã€‚å„アクティビティã¯ã€{@link android.app.Activity} 基本クラスã®ã‚µãƒ–クラスã¨ã—ã¦å®Ÿè£…ã•れã¾ã™ã€‚
+<dd>アクティビティã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ 1 ã¤ã®æ“作を集中的ã«è¡Œã†ãŸã‚ã®è¦–覚的ãªãƒ¦ãƒ¼ã‚¶ãƒ¼ インターフェースを表ã—ã¾ã™ã€‚<i></i>ãŸã¨ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒé¸æŠžã§ãるメニュー アイテムã®ä¸€è¦§ã‚’表示ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティやã€å†™çœŸã‚’キャプション付ãã§è¡¨ç¤ºã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãªã©ãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã€‚SMS アプリケーションãªã‚‰ã€ã‚るアクティビティã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡ã™ã‚‹é€£çµ¡å…ˆã®ä¸€è¦§ã‚’表示ã—ã€åˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§é¸æŠžã—ãŸé€£çµ¡å…ˆã¸ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’入力ã—ã€ãã®ä»–ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§å¤ã„メッセージをå‚ç…§ã—ãŸã‚Šè¨­å®šã‚’変更ã—ãŸã‚Šã§ãã¾ã™ã€‚ã“れらã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを組ã¿åˆã‚ã›ã¦å…¨ä½“ã¨ã—ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ インターフェースを形æˆã—ã¾ã™ãŒã€ãれãžã‚Œã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ç›¸äº’ã«ç‹¬ç«‹ã—ã¦ã„ã¾ã™ã€‚å„アクティビティã¯ã€{@link android.app.Activity} 基本クラスã®ã‚µãƒ–クラスã¨ã—ã¦å®Ÿè£…ã•れã¾ã™ã€‚
<p>
-アプリケーションã¯ã€1 ã¤ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã§æ§‹æˆã™ã‚‹ã“ã¨ã‚‚ã€ä¸Šè¨˜ã®SMS アプリケーションã®ã‚ˆã†ã«è¤‡æ•°ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã§æ§‹æˆã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ã©ã®ã‚ˆã†ãªã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒã„ãã¤å¿…è¦ã«ãªã‚‹ã‹ã¯ã€ã‚¢ãƒ—リケーションやãã®è¨­è¨ˆã«å¿œã˜ã¦ç•°ãªã‚Šã¾ã™ã€‚通常ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ã†ã¡ã®ã„ãšã‚Œã‹ã‚’最åˆã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¨ã—ã¦æŒ‡å®šã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚¢ãƒ—リケーションを起動ã—ãŸã¨ãã«è¡¨ç¤ºã—ã¾ã™ã€‚ã‚るアクティビティã‹ã‚‰åˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«ç§»å‹•ã™ã‚‹ã«ã¯ã€ç¾åœ¨ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã‹ã‚‰æ¬¡ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã—ã¾ã™ã€‚
+アプリケーションã¯ã€1 ã¤ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã§æ§‹æˆã™ã‚‹ã“ã¨ã‚‚ã€ä¸Šè¨˜ã®SMS アプリケーションã®ã‚ˆã†ã«è¤‡æ•°ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã§æ§‹æˆã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ã©ã®ã‚ˆã†ãªã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒã„ãã¤å¿…è¦ã«ãªã‚‹ã‹ã¯ã€ã‚¢ãƒ—リケーションやãã®è¨­è¨ˆã«å¿œã˜ã¦ç•°ãªã‚Šã¾ã™ã€‚通常ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ã†ã¡ã®ã„ãšã‚Œã‹ã‚’最åˆã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¨ã—ã¦æŒ‡å®šã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚¢ãƒ—リケーションを起動ã—ãŸã¨ãã«è¡¨ç¤ºã—ã¾ã™ã€‚ã‚るアクティビティã‹ã‚‰åˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«ç§»å‹•ã™ã‚‹ã«ã¯ã€ç¾åœ¨ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã‹ã‚‰æ¬¡ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã—ã¾ã™ã€‚
</p>
<p>
@@ -105,7 +105,7 @@ Android ã®å¤§ããªç‰¹é•·ã® 1 ã¤ã¯ã€è¨±å¯ã•れã¦ã„れã°ã€ã‚るアプ
典型的ãªä¾‹ã¨ã—ã¦ã¯ã€ãƒ—ãƒ¬ã‚¤ãƒªã‚¹ãƒˆã®æ›²ã‚’å†ç”Ÿã™ã‚‹ãƒ¡ãƒ‡ã‚£ã‚¢ ãƒ—ãƒ¬ãƒ¼ãƒ¤ãƒ¼ãŒæŒ™ã’られã¾ã™ã€‚プレーヤー アプリケーションã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæ›²ã‚’é¸ã‚“ã§å†ç”Ÿã™ã‚‹ãŸã‚ã® 1 ã¤ä»¥ä¸Šã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã§æ§‹æˆã™ã‚‹ã“ã¨ãŒäºˆæƒ³ã•れã¾ã™ãŒã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ãƒ—レーヤーを離れã¦åˆ¥ã®æ“作ã«ç§»ã£ãŸå¾Œã‚‚曲をèžã„ã¦ã„ãŸã„ã¨è€ƒãˆã‚‰ã‚Œã‚‹ã“ã¨ã‹ã‚‰ã€æ›²ã®å†ç”Ÿè‡ªä½“をアクティビティã§å‡¦ç†ã™ã‚‹ã‚ã‘ã«ã¯ã„ãã¾ã›ã‚“。音楽ã®å†ç”Ÿã‚’ç¶šã‘ã‚‹ã«ã¯ã€ãƒ¡ãƒ‡ã‚£ã‚¢ プレーヤー アクティビティã‹ã‚‰ã€ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§å®Ÿè¡Œã™ã‚‹ã‚µãƒ¼ãƒ“スを開始ã—ã¾ã™ã€‚音楽å†ç”Ÿã‚µãƒ¼ãƒ“スã¯ã€ãれを開始ã—ãŸã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒç”»é¢ä¸Šã«è¦‹ãˆãªããªã£ãŸå¾Œã‚‚ãã®ã¾ã¾å®Ÿè¡Œã•れã¾ã™ã€‚
</p>
-<p>
+<p>
ã¾ãŸã€å®Ÿè¡Œä¸­ã®ã‚µãƒ¼ãƒ“ã‚¹ã«æŽ¥ç¶šï¼ˆãƒã‚¤ãƒ³ãƒ‰ï¼‰ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ï¼ˆå®Ÿè¡Œã•れã¦ã„ãªã„å ´åˆã¯ãã®ã‚µãƒ¼ãƒ“スを開始ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ï¼‰ã€‚接続中ã¯ã€ã‚µãƒ¼ãƒ“スãŒå…¬é–‹ã—ã¦ã„るインターフェースを使ã£ã¦ã‚µãƒ¼ãƒ“スã¨å¯¾è©±ã§ãã¾ã™ã€‚音楽å†ç”Ÿã‚µãƒ¼ãƒ“スã§ã‚れã¯ã€ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースを使ã£ã¦ä¸€æ™‚åœæ­¢ã€å·»ã戻ã—ã€åœæ­¢ã€å†ç”Ÿã®å†é–‹ãªã©ã®æ“作を実行ã§ãるよã†ã«ã—ã¾ã™ã€‚
</p>
@@ -121,11 +121,11 @@ Android ã®å¤§ããªç‰¹é•·ã® 1 ã¤ã¯ã€è¨±å¯ã•れã¦ã„れã°ã€ã‚るアプ
</p>
<p>
-ブロードキャスト レシーãƒãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ インターフェースを表示ã™ã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。ãŸã ã—ã€å—ä¿¡ã—ãŸæƒ…å ±ã¸ã®å¿œç­”ã¨ã—ã¦ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã—ãŸã‚Šã€{@link android.app.NotificationManager} を使用ã—ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚¢ãƒ©ãƒ¼ãƒˆã‚’é€ä¿¡ã—ãŸã‚Šã™ã‚‹ã“ã¨ã¯ã‚りã¾ã™ã€‚通知ã®éš›ã«ã¯ã€ãƒãƒƒã‚¯ãƒ©ã‚¤ãƒˆã‚’点滅ã•ã›ã‚‹ã€ãƒã‚¤ãƒ–レーションを起動ã™ã‚‹ã€éŸ³ã‚’鳴らã™ãªã©ã€ã•ã¾ã–ã¾ãªæ–¹æ³•ã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ³¨æ„ã‚’å–šèµ·ã§ãã¾ã™ã€‚通常ã¯ã€ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ ãƒãƒ¼ã«æ°¸ç¶šã‚¢ã‚¤ã‚³ãƒ³ã‚’表示ã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã“れを開ã„ã¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å–å¾—ã§ãるよã†ã«ã—ã¾ã™ã€‚
+ブロードキャスト レシーãƒãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ インターフェースを表示ã™ã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。ãŸã ã—ã€å—ä¿¡ã—ãŸæƒ…å ±ã¸ã®å¿œç­”ã¨ã—ã¦ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã—ãŸã‚Šã€{@link android.app.NotificationManager} を使用ã—ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚¢ãƒ©ãƒ¼ãƒˆã‚’é€ä¿¡ã—ãŸã‚Šã™ã‚‹ã“ã¨ã¯ã‚りã¾ã™ã€‚通知ã®éš›ã«ã¯ã€ãƒãƒƒã‚¯ãƒ©ã‚¤ãƒˆã‚’点滅ã•ã›ã‚‹ã€ãƒã‚¤ãƒ–レーションを起動ã™ã‚‹ã€éŸ³ã‚’鳴らã™ãªã©ã€ã•ã¾ã–ã¾ãªæ–¹æ³•ã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ³¨æ„ã‚’å–šèµ·ã§ãã¾ã™ã€‚通常ã¯ã€ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ ãƒãƒ¼ã«æ°¸ç¶šã‚¢ã‚¤ã‚³ãƒ³ã‚’表示ã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã“れを開ã„ã¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å–å¾—ã§ãるよã†ã«ã—ã¾ã™ã€‚
</p></dd>
<dt><b>コンテンツ プロãƒã‚¤ãƒ€</b></dt>
-<dd>コンテンツ プロãƒã‚¤ãƒ€ã¯ã€ã‚¢ãƒ—リケーションã®ãƒ‡ãƒ¼ã‚¿ã‚’ä»–ã®ã‚¢ãƒ—リケーションã§ã‚‚利用ã§ãるよã†ã«ã—ã¾ã™ã€‚<i></i>データã¯ã€ãƒ•ァイル システムや SQLite データベースãªã©ã€ä¸€èˆ¬ã«åˆ©ç”¨ã§ãã‚‹æ–¹æ³•ã§æ ¼ç´ã•れã¦ã„れã°ä½¿ç”¨ã§ãã¾ã™ã€‚コンテンツ プロãƒã‚¤ãƒ€ã¯ã€{@link android.content.ContentProvider} åŸºæœ¬ã‚¯ãƒ©ã‚¹ã®æ‹¡å¼µã§ã™ã€‚プロãƒã‚¤ãƒ€ãŒåˆ¶å¾¡ã™ã‚‹åž‹ã®ãƒ‡ãƒ¼ã‚¿ã‚’ã€ä»–ã®ã‚¢ãƒ—リケーションã‹ã‚‰å–å¾—ãŠã‚ˆã³æ ¼ç´ã™ã‚‹ãŸã‚ã®æ¨™æº–メソッド セットを実装ã—ã¦ã„ã¾ã™ã€‚ãŸã ã—ã€ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’アプリケーションã‹ã‚‰ç›´æŽ¥å‘¼ã³å‡ºã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。代ã‚りã«ã€{@link android.content.ContentResolver} オブジェクトã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—ã¾ã™ã€‚ContentResolver ã¯ã€ã™ã¹ã¦ã®ãƒ—ロãƒã‚¤ãƒ€ã¨é€šä¿¡ã§ãã€ãƒ—ロãƒã‚¤ãƒ€ã¨é€£æºã—ã¦é–¢ä¿‚ã®ã‚ã‚‹ã™ã¹ã¦ã®ãƒ—ロセス間通信を管ç†ã—ã¾ã™ã€‚
+<dd>コンテンツ プロãƒã‚¤ãƒ€ã¯ã€ã‚¢ãƒ—リケーションã®ãƒ‡ãƒ¼ã‚¿ã‚’ä»–ã®ã‚¢ãƒ—リケーションã§ã‚‚利用ã§ãるよã†ã«ã—ã¾ã™ã€‚<i></i>データã¯ã€ãƒ•ァイル システムや SQLite データベースãªã©ã€ä¸€èˆ¬ã«åˆ©ç”¨ã§ãã‚‹æ–¹æ³•ã§æ ¼ç´ã•れã¦ã„れã°ä½¿ç”¨ã§ãã¾ã™ã€‚コンテンツ プロãƒã‚¤ãƒ€ã¯ã€{@link android.content.ContentProvider} åŸºæœ¬ã‚¯ãƒ©ã‚¹ã®æ‹¡å¼µã§ã™ã€‚プロãƒã‚¤ãƒ€ãŒåˆ¶å¾¡ã™ã‚‹åž‹ã®ãƒ‡ãƒ¼ã‚¿ã‚’ã€ä»–ã®ã‚¢ãƒ—リケーションã‹ã‚‰å–å¾—ãŠã‚ˆã³æ ¼ç´ã™ã‚‹ãŸã‚ã®æ¨™æº–メソッド セットを実装ã—ã¦ã„ã¾ã™ã€‚ãŸã ã—ã€ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’アプリケーションã‹ã‚‰ç›´æŽ¥å‘¼ã³å‡ºã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。代ã‚りã«ã€{@link android.content.ContentResolver} オブジェクトã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—ã¾ã™ã€‚ContentResolver ã¯ã€ã™ã¹ã¦ã®ãƒ—ロãƒã‚¤ãƒ€ã¨é€šä¿¡ã§ãã€ãƒ—ロãƒã‚¤ãƒ€ã¨é€£æºã—ã¦é–¢ä¿‚ã®ã‚ã‚‹ã™ã¹ã¦ã®ãƒ—ロセス間通信を管ç†ã—ã¾ã™ã€‚
<p>
コンテンツ プロãƒã‚¤ãƒ€ã®ä½¿ç”¨æ–¹æ³•ã«ã¤ã„ã¦è©³ã—ãã¯ã€<a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’ã”覧ãã ã•ã„。
@@ -134,40 +134,40 @@ Android ã®å¤§ããªç‰¹é•·ã® 1 ã¤ã¯ã€è¨±å¯ã•れã¦ã„れã°ã€ã‚るアプ
</dl>
<p>
-Android ã§ã¯ã€ç‰¹å®šã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã§å‡¦ç†ã™ã¹ãリクエストãŒã‚ã‚‹ã¨ã€ãã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚¢ãƒ—リケーション プロセスãŒå®Ÿè¡Œä¸­ã‹ã©ã†ã‹ã‚’確èªï¼ˆå¿…è¦ã«å¿œã˜ã¦ãƒ—ロセスを開始)ã—ã€ãã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®é©åˆ‡ãªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒåˆ©ç”¨å¯èƒ½ã‹ã©ã†ã‹ã‚’確èªï¼ˆå¿…è¦ã«å¿œã˜ã¦ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆï¼‰ã—ã¾ã™ã€‚
+Android ã§ã¯ã€ç‰¹å®šã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã§å‡¦ç†ã™ã¹ãリクエストãŒã‚ã‚‹ã¨ã€ãã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚¢ãƒ—リケーション プロセスãŒå®Ÿè¡Œä¸­ã‹ã©ã†ã‹ã‚’確èªï¼ˆå¿…è¦ã«å¿œã˜ã¦ãƒ—ロセスを開始)ã—ã€ãã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®é©åˆ‡ãªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒåˆ©ç”¨å¯èƒ½ã‹ã©ã†ã‹ã‚’確èªï¼ˆå¿…è¦ã«å¿œã˜ã¦ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆï¼‰ã—ã¾ã™ã€‚
</p>
-<h3 id="actcomp">コンãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ–化: インテント</h3>
+<h3 id="actcomp">コンãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ–化: インテント</h3>
<p>
コンテンツ プロãƒã‚¤ãƒ€ã¯ã€ContentResolver ã‹ã‚‰ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®å¯¾è±¡ã«ãªã‚‹ã¨ã‚¢ã‚¯ãƒ†ã‚£ãƒ–化ã•れã¾ã™ã€‚ãれ以外㮠3 ã¤ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆï¼ˆã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã€ã‚µãƒ¼ãƒ“スã€ãƒ–ロードキャスト レシーãƒï¼‰ã¯ã€ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã¨å‘¼ã°ã‚Œã‚‹éžåŒæœŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ã‚ˆã£ã¦ã‚¢ã‚¯ãƒ†ã‚£ãƒ–化ã•れã¾ã™ã€‚<i></i>インテントã¯ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’ä¿æŒã™ã‚‹ {@link android.content.Intent} オブジェクトã§ã™ã€‚アクティビティやサービスã®å ´åˆã® Intent オブジェクトã®ä¸»ãªå½¹å‰²ã¯ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã•れã¦ã„るアクションを指åã—ã€ãã®å¯¾è±¡ã¨ãªã‚‹ãƒ‡ãƒ¼ã‚¿ã® URI を指定ã™ã‚‹ã“ã¨ã§ã™ã€‚ãŸã¨ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ç”»åƒã‚’表示ã™ã‚‹ãŸã‚ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚„ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ãƒ†ã‚­ã‚¹ãƒˆã‚’編集ã•ã›ã‚‹ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’アクティビティã«ä¼é”ã§ãã¾ã™ã€‚ブロードキャスト レシーãƒã®å ´åˆã¯ã€Intent オブジェクトãŒã“れã‹ã‚‰é€šçŸ¥ã‚’行ã†ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’指åã—ã¾ã™ã€‚ãŸã¨ãˆã°ã€ã‚«ãƒ¡ãƒ©ã®ãƒœã‚¿ãƒ³ãŒæŠ¼ã•れãŸã“ã¨ã‚’ã€é–¢ä¿‚ã®ã‚るブロードキャスト レシーãƒã«é€šçŸ¥ã§ãã¾ã™ã€‚
</p>
<p>
-以下ã«ç¤ºã™ã‚ˆã†ã«ã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚¿ã‚¤ãƒ—ã”ã¨ã«åˆ¥ã€…ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ–化メソッドãŒç”¨æ„ã•れã¦ã„ã¾ã™:
+以下ã«ç¤ºã™ã‚ˆã†ã«ã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚¿ã‚¤ãƒ—ã”ã¨ã«åˆ¥ã€…ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ–化メソッドãŒç”¨æ„ã•れã¦ã„ã¾ã™:
</p>
<ul>
-<li>アクティビティを起動ã™ã‚‹ï¼ˆã¾ãŸã¯ä½•ã‹æ–°ã—ã„処ç†ã‚’実行ã•ã›ã‚‹ï¼‰ã«ã¯ã€Intent オブジェクトを <code>{@link android.content.Context#startActivity
-Context.startActivity()}</code> ã¾ãŸã¯ <code>{@link
-android.app.Activity#startActivityForResult
-Activity.startActivityForResult()}</code> ã«æ¸¡ã—ã¾ã™ã€‚応答アクティビティ㧠<code>{@link android.app.Activity#getIntent getIntent()}</code> メソッドを呼ã³å‡ºã™ã¨ã€æœ€åˆã«ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒèµ·å‹•ã•れãŸã¨ãã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã®å†…容を確èªã§ãã¾ã™ã€‚Android ã«ã‚ˆã£ã¦ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ㮠<code>{@link
+<li>アクティビティを起動ã™ã‚‹ï¼ˆã¾ãŸã¯ä½•ã‹æ–°ã—ã„処ç†ã‚’実行ã•ã›ã‚‹ï¼‰ã«ã¯ã€Intent オブジェクトを <code>{@link android.content.Context#startActivity
+Context.startActivity()}</code> ã¾ãŸã¯ <code>{@link
+android.app.Activity#startActivityForResult
+Activity.startActivityForResult()}</code> ã«æ¸¡ã—ã¾ã™ã€‚応答アクティビティ㧠<code>{@link android.app.Activity#getIntent getIntent()}</code> メソッドを呼ã³å‡ºã™ã¨ã€æœ€åˆã«ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒèµ·å‹•ã•れãŸã¨ãã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã®å†…容を確èªã§ãã¾ã™ã€‚Android ã«ã‚ˆã£ã¦ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ㮠<code>{@link
android.app.Activity#onNewIntent onNewIntent()}</code> メソッドãŒå‘¼ã³å‡ºã•れã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå¾Œç¶šã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã«æ¸¡ã•れã¾ã™ã€‚
<p>
-多ãã®å ´åˆã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã‹ã‚‰æ¬¡ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã—ã¾ã™ã€‚é–‹å§‹ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã‹ã‚‰çµæžœãŒè¿”ã•れる場åˆã¯ã€{@code startActivity()} ã§ã¯ãªã {@code startActivityForResult()} を呼ã³å‡ºã—ã¾ã™ã€‚ãŸã¨ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å†™çœŸã‚’é¸æŠžã•ã›ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã™ã‚‹å ´åˆã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚ˆã£ã¦é¸æŠžã•れãŸå†™çœŸãŒè¿”ã•れるã‹ã‚‚ã—れã¾ã›ã‚“ã€‚çµæžœã¯ã€å‘¼ã³å‡ºã—å´ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ㮠<code>{@link android.app.Activity#onActivityResult
+多ãã®å ´åˆã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã‹ã‚‰æ¬¡ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã—ã¾ã™ã€‚é–‹å§‹ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã‹ã‚‰çµæžœãŒè¿”ã•れる場åˆã¯ã€{@code startActivity()} ã§ã¯ãªã {@code startActivityForResult()} を呼ã³å‡ºã—ã¾ã™ã€‚ãŸã¨ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å†™çœŸã‚’é¸æŠžã•ã›ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã™ã‚‹å ´åˆã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚ˆã£ã¦é¸æŠžã•れãŸå†™çœŸãŒè¿”ã•れるã‹ã‚‚ã—れã¾ã›ã‚“ã€‚çµæžœã¯ã€å‘¼ã³å‡ºã—å´ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ㮠<code>{@link android.app.Activity#onActivityResult
onActivityResult()}</code> ãƒ¡ã‚½ãƒƒãƒ‰ã«æ¸¡ã—㟠Intent オブジェクトã§è¿”ã•れã¾ã™ã€‚
</p>
</li>
-<li><p>サービスを開始ã™ã‚‹ï¼ˆã¾ãŸã¯å®Ÿè¡Œä¸­ã®ã‚µãƒ¼ãƒ“ã‚¹ã«æ–°ã—ã„æŒ‡ç¤ºã‚’与ãˆã‚‹ï¼‰ã«ã¯ã€<code>{@link
-android.content.Context#startService Context.startService()}</code> ã« Intent オブジェクトを渡ã—ã¾ã™ã€‚Android ã«ã‚ˆã‚Šã€ã‚µãƒ¼ãƒ“ス㮠<code>{@link android.app.Service#onStart
+<li><p>サービスを開始ã™ã‚‹ï¼ˆã¾ãŸã¯å®Ÿè¡Œä¸­ã®ã‚µãƒ¼ãƒ“ã‚¹ã«æ–°ã—ã„æŒ‡ç¤ºã‚’与ãˆã‚‹ï¼‰ã«ã¯ã€<code>{@link
+android.content.Context#startService Context.startService()}</code> ã« Intent オブジェクトを渡ã—ã¾ã™ã€‚Android ã«ã‚ˆã‚Šã€ã‚µãƒ¼ãƒ“ス㮠<code>{@link android.app.Service#onStart
onStart()}</code> メソッドãŒå‘¼ã³å‡ºã•れ㦠Intent ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæ¸¡ã•れã¾ã™ã€‚</p>
<p>
-åŒæ§˜ã«ã€ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã‚’ <code>{@link
+åŒæ§˜ã«ã€ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã‚’ <code>{@link
android.content.Context#bindService Context.bindService()}</code> ã«æ¸¡ã™ã¨ã€å‘¼ã³å‡ºã—å´ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¨å¯¾è±¡ã¨ãªã‚‹ã‚µãƒ¼ãƒ“スã®é–“ã®ç¶™ç¶šä¸­ã®æŽ¥ç¶šã‚’確立ã§ãã¾ã™ã€‚サービスã¯ã€<code>{@link android.app.Service#onBind onBind()}</code> 呼ã³å‡ºã—ã§ Intent オブジェクトをå—ã‘å–りã¾ã™ï¼ˆã‚µãƒ¼ãƒ“スãŒã¾ã é–‹å§‹ã•れã¦ã„ãªã„å ´åˆã¯ã€å¿…è¦ã«å¿œã˜ã¦ {@code bindService()} ã§é–‹å§‹ã§ãã¾ã™ï¼‰ã€‚ãŸã¨ãˆã°ã€ä¸Šã§ä¾‹ã«æŒ™ã’ãŸéŸ³æ¥½å†ç”Ÿã‚µãƒ¼ãƒ“スã¨ã®æŽ¥ç¶šã‚’確立ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを使用ã—ã¦ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒå†ç”Ÿã‚’æ“作ã™ã‚‹ãŸã‚ã®æ‰‹æ®µï¼ˆãƒ¦ãƒ¼ã‚¶ãƒ¼ インターフェース)をæä¾›ã§ãã¾ã™ã€‚アクティビティ㧠{@code bindService()} を呼ã³å‡ºã—ã¦æŽ¥ç¶šã‚’ç¢ºç«‹ã—ã¦ã‹ã‚‰ã€ã‚µãƒ¼ãƒ“スã«å®šç¾©ã•れã¦ã„るメソッドを呼ã³å‡ºã—ã¦å†ç”Ÿã‚’æ“作ã—ã¾ã™ã€‚
</p>
@@ -176,10 +176,10 @@ android.content.Context#bindService Context.bindService()}</code> ã«æ¸¡ã™ã¨ã€
</p>
</li>
-<li><p>アプリケーションã§ãƒ–ロードキャストを開始ã™ã‚‹ã«ã¯ã€<code>{@link
-android.content.Context#sendBroadcast(Intent) Context.sendBroadcast()}</code>ã€<code>{@link android.content.Context#sendOrderedBroadcast(Intent, String)
-Context.sendOrderedBroadcast()}</code>ã€<code>{@link
-android.content.Context#sendStickyBroadcast Context.sendStickyBroadcast()}</code> ãªã©ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®ã„ãšã‚Œã‹ã®ãƒãƒªã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã« Intent オブジェクトを渡ã—ã¾ã™ã€‚Android ã«ã‚ˆã£ã¦ <code>{@link
+<li><p>アプリケーションã§ãƒ–ロードキャストを開始ã™ã‚‹ã«ã¯ã€<code>{@link
+android.content.Context#sendBroadcast(Intent) Context.sendBroadcast()}</code>ã€<code>{@link android.content.Context#sendOrderedBroadcast(Intent, String)
+Context.sendOrderedBroadcast()}</code>ã€<code>{@link
+android.content.Context#sendStickyBroadcast Context.sendStickyBroadcast()}</code> ãªã©ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®ã„ãšã‚Œã‹ã®ãƒãƒªã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã« Intent オブジェクトを渡ã—ã¾ã™ã€‚Android ã«ã‚ˆã£ã¦ <code>{@link
android.content.BroadcastReceiver#onReceive onReceive()}</code> メソッドãŒå‘¼ã³å‡ºã•れã€é–¢ä¿‚ã®ã‚ã‚‹ã™ã¹ã¦ã®ãƒ–ロードキャスト レシーãƒã«ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆãŒé…ä¿¡ã•れã¾ã™ã€‚</p></li>
</ul>
@@ -213,7 +213,7 @@ android.content.BroadcastReceiver#onReceive onReceive()}</code> メソッドãŒå
<h3 id="manfile">マニフェスト ファイル</h3>
<p>
-アプリケーション コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’é–‹å§‹ã™ã‚‹ã«ã¯ã€Android ãŒãã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®å­˜åœ¨ã‚’èªè­˜ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚アプリケーションã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¯ã€ãƒžãƒ‹ãƒ•ェスト ファイルã§å®£è¨€ã—ã¾ã™ã€‚ã“ã®ãƒ•ァイルã¯ã€ã‚¢ãƒ—リケーションã®ã‚³ãƒ¼ãƒ‰ã€ãƒ•ァイルã€ãƒªã‚½ãƒ¼ã‚¹ãªã©ã¨ã¨ã‚‚ã« Android パッケージ({@code .apk} ファイル)ã«ãƒãƒ³ãƒ‰ãƒ«ã•れã¾ã™ã€‚
+アプリケーション コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’é–‹å§‹ã™ã‚‹ã«ã¯ã€Android ãŒãã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®å­˜åœ¨ã‚’èªè­˜ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚アプリケーションã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¯ã€ãƒžãƒ‹ãƒ•ェスト ファイルã§å®£è¨€ã—ã¾ã™ã€‚ã“ã®ãƒ•ァイルã¯ã€ã‚¢ãƒ—リケーションã®ã‚³ãƒ¼ãƒ‰ã€ãƒ•ァイルã€ãƒªã‚½ãƒ¼ã‚¹ãªã©ã¨ã¨ã‚‚ã« Android パッケージ({@code .apk} ファイル)ã«ãƒãƒ³ãƒ‰ãƒ«ã•れã¾ã™ã€‚
</p>
<p>
@@ -229,7 +229,7 @@ android.content.BroadcastReceiver#onReceive onReceive()}</code> メソッドãŒå
&lt;application . . . &gt;
&lt;activity android:name="com.example.project.FreneticActivity"
android:icon="@drawable/small_pic.png"
- android:label="@string/freneticLabel"
+ android:label="@string/freneticLabel"
. . . &gt;
&lt;/activity&gt;
. . .
@@ -260,7 +260,7 @@ Intent オブジェクトã§ã¯ã€å¯¾è±¡ã¨ã™ã‚‹ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’明示ç
&lt;application . . . &gt;
&lt;activity android:name="com.example.project.FreneticActivity"
android:icon="@drawable/small_pic.png"
- android:label="@string/freneticLabel"
+ android:label="@string/freneticLabel"
. . . &gt;
&lt;intent-filter . . . &gt;
&lt;action android:name="android.intent.action.MAIN" /&gt;
@@ -304,7 +304,7 @@ Intent オブジェクトã§ã¯ã€å¯¾è±¡ã¨ã™ã‚‹ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’明示ç
</p>
<p>
-ã“ã®å ´åˆã€ãƒžãƒƒãƒ— ビューアã¯åˆ¥ã®ã‚¢ãƒ—リケーションã§å®šç¾©ã•れã¦ãŠã‚Šã€ãã®ã‚¢ãƒ—リケーションã®ãƒ—ロセスã§å®Ÿè¡Œã•れã¦ã„ã¾ã™ãŒã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã¨ã£ã¦ã¯ãƒžãƒƒãƒ— ビューアãŒå…ƒã®ã‚¢ãƒ—リケーションã®ä¸€éƒ¨ã§ã‚ã‚‹ã‹ã®ã‚ˆã†ã«æ„Ÿã˜ã‚‰ã‚Œã¾ã™ã€‚Android ã§ã¯ã€ä¸¡æ–¹ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティをåŒã˜ã‚¿ã‚¹ã‚¯ã«çµ„ã¿è¾¼ã‚€ã“ã¨ã§ã€ã“ã®ã‚ˆã†ãªãƒ¦ãƒ¼ã‚¶ãƒ¼ エクスペリエンスを実ç¾ã§ãã¾ã™ã€‚<i></i>ç°¡å˜ã«è¨€ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ 1 ã¤ã®ã€Œã‚¢ãƒ—リケーションã€ã¨æ„Ÿã˜ã‚‹ã‚‚ã®ãŒã‚¿ã‚¹ã‚¯ã§ã™ã€‚関連ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティをスタックã«ã¾ã¨ã‚ãŸã‚‚ã®ãŒã‚¿ã‚¹ã‚¯ã§ã™ã€‚スタック内ã®ãƒ«ãƒ¼ãƒˆ アクティビティã¯ã€ã‚¿ã‚¹ã‚¯ã‚’é–‹å§‹ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§ã™ã€‚通常ã§ã‚れã°ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚¢ãƒ—リケーション ランãƒãƒ£ã§é¸æŠžã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒã“れã«ç›¸å½“ã—ã¾ã™ã€‚ã‚¹ã‚¿ãƒƒã‚¯ã®æœ€ä¸Šä½ã«ã‚るアクティビティã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã®ç„¦ç‚¹ã¨ãªã£ã¦ã„る実行中ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§ã™ã€‚ã‚るアクティビティã‹ã‚‰åˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã™ã‚‹ã¨ã€ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ãŒæ–°ãŸã«ã‚¹ã‚¿ãƒƒã‚¯ã«ãƒ—ッシュã•れã¦å®Ÿè¡Œä¸­ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«ãªã‚Šã¾ã™ã€‚1 ã¤å‰ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã‚¹ã‚¿ãƒƒã‚¯å†…ã«æ®‹ã•れã¦ã„ã¾ã™ã€‚ユーザー㌠[[]戻る] キーを押ã™ã¨ã€ç¾åœ¨ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒã‚¹ã‚¿ãƒƒã‚¯ã‹ã‚‰ãƒãƒƒãƒ—ã•れã€1 ã¤å‰ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå®Ÿè¡Œä¸­ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¨ã—ã¦å†é–‹ã•れã¾ã™ã€‚
+ã“ã®å ´åˆã€ãƒžãƒƒãƒ— ビューアã¯åˆ¥ã®ã‚¢ãƒ—リケーションã§å®šç¾©ã•れã¦ãŠã‚Šã€ãã®ã‚¢ãƒ—リケーションã®ãƒ—ロセスã§å®Ÿè¡Œã•れã¦ã„ã¾ã™ãŒã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã¨ã£ã¦ã¯ãƒžãƒƒãƒ— ビューアãŒå…ƒã®ã‚¢ãƒ—リケーションã®ä¸€éƒ¨ã§ã‚ã‚‹ã‹ã®ã‚ˆã†ã«æ„Ÿã˜ã‚‰ã‚Œã¾ã™ã€‚Android ã§ã¯ã€ä¸¡æ–¹ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティをåŒã˜ã‚¿ã‚¹ã‚¯ã«çµ„ã¿è¾¼ã‚€ã“ã¨ã§ã€ã“ã®ã‚ˆã†ãªãƒ¦ãƒ¼ã‚¶ãƒ¼ エクスペリエンスを実ç¾ã§ãã¾ã™ã€‚<i></i>ç°¡å˜ã«è¨€ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ 1 ã¤ã®ã€Œã‚¢ãƒ—リケーションã€ã¨æ„Ÿã˜ã‚‹ã‚‚ã®ãŒã‚¿ã‚¹ã‚¯ã§ã™ã€‚関連ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティをスタックã«ã¾ã¨ã‚ãŸã‚‚ã®ãŒã‚¿ã‚¹ã‚¯ã§ã™ã€‚スタック内ã®ãƒ«ãƒ¼ãƒˆ アクティビティã¯ã€ã‚¿ã‚¹ã‚¯ã‚’é–‹å§‹ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§ã™ã€‚通常ã§ã‚れã°ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚¢ãƒ—リケーション ランãƒãƒ£ã§é¸æŠžã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒã“れã«ç›¸å½“ã—ã¾ã™ã€‚ã‚¹ã‚¿ãƒƒã‚¯ã®æœ€ä¸Šä½ã«ã‚るアクティビティã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã®ç„¦ç‚¹ã¨ãªã£ã¦ã„る実行中ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§ã™ã€‚ã‚るアクティビティã‹ã‚‰åˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã™ã‚‹ã¨ã€ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ãŒæ–°ãŸã«ã‚¹ã‚¿ãƒƒã‚¯ã«ãƒ—ッシュã•れã¦å®Ÿè¡Œä¸­ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«ãªã‚Šã¾ã™ã€‚1 ã¤å‰ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã‚¹ã‚¿ãƒƒã‚¯å†…ã«æ®‹ã•れã¦ã„ã¾ã™ã€‚ユーザー㌠[[]戻る] キーを押ã™ã¨ã€ç¾åœ¨ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒã‚¹ã‚¿ãƒƒã‚¯ã‹ã‚‰ãƒãƒƒãƒ—ã•れã€1 ã¤å‰ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå®Ÿè¡Œä¸­ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¨ã—ã¦å†é–‹ã•れã¾ã™ã€‚
</p>
<p>
@@ -316,7 +316,7 @@ Intent オブジェクトã§ã¯ã€å¯¾è±¡ã¨ã™ã‚‹ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’明示ç
</p>
<p>
-タスク内ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã€1 ã¤ã®ãƒ¦ãƒ‹ãƒƒãƒˆã¨ã—ã¦ä¸€ç·’ã«ç§»å‹•ã—ã¾ã™ã€‚タスク全体(アクティビティ スタック全体)をフォアグラウンドã«ç§»å‹•ã—ãŸã‚Šã€ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã«ç§»å‹•ã—ãŸã‚Šã§ãã¾ã™ã€‚ãŸã¨ãˆã°ã€ç¾åœ¨ã®ã‚¿ã‚¹ã‚¯ã¯ 4 ã¤ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã‹ã‚‰ãªã‚‹ã‚¹ã‚¿ãƒƒã‚¯ã§ã€ç¾åœ¨ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ä¸‹ã«ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ㌠3 ã¤ã‚ã‚‹ã¨ã—ã¾ã™ã€‚ã“ã“ã§ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ [ホーム] キーを押ã—ã¦ã‚¢ãƒ—リケーション ランãƒãƒ£ã«ç§»å‹•ã—ã€æ–°ã—ã„アプリケーション(実際ã«ã¯æ–°ã—ã„ã‚¿ã‚¹ã‚¯ï¼‰ã‚’é¸æŠžã—ãŸã¨ã—ã¾ã™ã€‚<i></i>ã™ã‚‹ã¨ã€ç¾åœ¨ã®ã‚¿ã‚¹ã‚¯ã¯ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã«ç§»å‹•ã—ã€æ–°ã—ã„タスクã®ãƒ«ãƒ¼ãƒˆ アクティビティãŒè¡¨ç¤ºã•れã¾ã™ã€‚ã—ã°ã‚‰ãã—ã¦ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒãƒ›ãƒ¼ãƒ ç”»é¢ã«æˆ»ã‚Š 1 ã¤å‰ã®ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ï¼ˆã‚¿ã‚¹ã‚¯ï¼‰ã‚’é¸æŠžã™ã‚‹ã¨ã€ãã®ã‚¿ã‚¹ã‚¯ãŒã‚¹ã‚¿ãƒƒã‚¯å†…ã® 4 ã¤ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¨ã¨ã‚‚ã«ãƒ•ォアグラウンドã«ç§»å‹•ã—ã¾ã™ã€‚ã“ã“ã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ [戻る] キーを押ã—ã¦ã‚‚ã€ä¸­æ–­ã—ãŸã°ã‹ã‚Šã®ã‚¢ãƒ—リケーション(1 ã¤å‰ã®ã‚¿ã‚¹ã‚¯ã®ãƒ«ãƒ¼ãƒˆ アクティビティ)ã¯è¡¨ç¤ºã•れã¾ã›ã‚“。代ã‚りã«ã€ã‚¹ã‚¿ãƒƒã‚¯ã®æœ€ä¸Šä½ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒãƒãƒƒãƒ—ã•れã€åŒã˜ã‚¿ã‚¹ã‚¯ã® 1 ã¤å‰ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒè¡¨ç¤ºã•れã¾ã™ã€‚
+タスク内ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã€1 ã¤ã®ãƒ¦ãƒ‹ãƒƒãƒˆã¨ã—ã¦ä¸€ç·’ã«ç§»å‹•ã—ã¾ã™ã€‚タスク全体(アクティビティ スタック全体)をフォアグラウンドã«ç§»å‹•ã—ãŸã‚Šã€ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã«ç§»å‹•ã—ãŸã‚Šã§ãã¾ã™ã€‚ãŸã¨ãˆã°ã€ç¾åœ¨ã®ã‚¿ã‚¹ã‚¯ã¯ 4 ã¤ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã‹ã‚‰ãªã‚‹ã‚¹ã‚¿ãƒƒã‚¯ã§ã€ç¾åœ¨ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ä¸‹ã«ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ㌠3 ã¤ã‚ã‚‹ã¨ã—ã¾ã™ã€‚ã“ã“ã§ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ [ホーム] キーを押ã—ã¦ã‚¢ãƒ—リケーション ランãƒãƒ£ã«ç§»å‹•ã—ã€æ–°ã—ã„アプリケーション(実際ã«ã¯æ–°ã—ã„ã‚¿ã‚¹ã‚¯ï¼‰ã‚’é¸æŠžã—ãŸã¨ã—ã¾ã™ã€‚<i></i>ã™ã‚‹ã¨ã€ç¾åœ¨ã®ã‚¿ã‚¹ã‚¯ã¯ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã«ç§»å‹•ã—ã€æ–°ã—ã„タスクã®ãƒ«ãƒ¼ãƒˆ アクティビティãŒè¡¨ç¤ºã•れã¾ã™ã€‚ã—ã°ã‚‰ãã—ã¦ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒãƒ›ãƒ¼ãƒ ç”»é¢ã«æˆ»ã‚Š 1 ã¤å‰ã®ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ï¼ˆã‚¿ã‚¹ã‚¯ï¼‰ã‚’é¸æŠžã™ã‚‹ã¨ã€ãã®ã‚¿ã‚¹ã‚¯ãŒã‚¹ã‚¿ãƒƒã‚¯å†…ã® 4 ã¤ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¨ã¨ã‚‚ã«ãƒ•ォアグラウンドã«ç§»å‹•ã—ã¾ã™ã€‚ã“ã“ã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ [戻る] キーを押ã—ã¦ã‚‚ã€ä¸­æ–­ã—ãŸã°ã‹ã‚Šã®ã‚¢ãƒ—リケーション(1 ã¤å‰ã®ã‚¿ã‚¹ã‚¯ã®ãƒ«ãƒ¼ãƒˆ アクティビティ)ã¯è¡¨ç¤ºã•れã¾ã›ã‚“。代ã‚りã«ã€ã‚¹ã‚¿ãƒƒã‚¯ã®æœ€ä¸Šä½ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒãƒãƒƒãƒ—ã•れã€åŒã˜ã‚¿ã‚¹ã‚¯ã® 1 ã¤å‰ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒè¡¨ç¤ºã•れã¾ã™ã€‚
</p>
<p>
@@ -330,7 +330,7 @@ Intent オブジェクトã§ã¯ã€å¯¾è±¡ã¨ã™ã‚‹ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’明示ç
<p>
ã¾ãŸã€ä¸»ã«ä½¿ç”¨ã™ã‚‹ {@code <activity>} 属性ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã™:
-
+
<p style="margin-left: 2em">{@code taskAffinity} <br/>{@code launchMode} <br/>{@code allowTaskReparenting} <br/>{@code clearTaskOnLaunch} <br/>{@code alwaysRetainTaskState} <br/>{@code finishOnTaskLaunch}</p>
<p>
@@ -348,7 +348,7 @@ Intent オブジェクトã§ã¯ã€å¯¾è±¡ã¨ã™ã‚‹ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’明示ç
<dt><code>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</code> フラグ</dt>
<dd>æ—¢ã«èª¬æ˜Žã—ãŸã¨ãŠã‚Šã€æ–°ã—ã„アクティビティã¯ã€ãƒ‡ãƒ•ォルトã§ã¯ {@code startActivity()} を呼ã³å‡ºã—ãŸã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ã‚¿ã‚¹ã‚¯ã®ä¸€éƒ¨ã¨ã—ã¦èµ·å‹•ã—ã¾ã™ã€‚ã¤ã¾ã‚Šã€å‘¼ã³å‡ºã—å´ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¨åŒã˜ã‚¹ã‚¿ãƒƒã‚¯ã«ãƒ—ッシュã•れるã¨ã„ã†ã“ã¨ã§ã™ã€‚ã—ã‹ã—ã€{@code startActivity()} ã«æ¸¡ã•れ㟠Intent オブジェクト㫠{@code FLAG_ACTIVITY_NEW_TASK} フラグãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã€ã‚·ã‚¹ãƒ†ãƒ ã¯ãã®æ–°ã—ã„アクティビティを別ã®ã‚¿ã‚¹ã‚¯ã«åŽå®¹ã—よã†ã¨ã—ã¾ã™ã€‚フラグã®åå‰ã‹ã‚‰ã‚‚判断ã§ãã¾ã™ãŒã€ã»ã¨ã‚“ã©ã®å ´åˆã¯æ–°ã—ã„タスクãŒé–‹å§‹ã•れã¾ã™ã€‚ãŸã ã—常ã«ãã†ãªã‚‹ã¨ã¯é™ã‚Šã¾ã›ã‚“。既存ã®ã‚¿ã‚¹ã‚¯ã«æ–°ã—ã„アクティビティã¨åŒã˜è¦ªå’Œæ€§ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã‚‹å ´åˆã€ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ãã®ã‚¿ã‚¹ã‚¯ã®ä¸€éƒ¨ã¨ã—ã¦èµ·å‹•ã—ã¾ã™ã€‚ãã†ã§ãªã„å ´åˆã«ã¯ã€æ–°ã—ã„タスクãŒé–‹å§‹ã•れã¾ã™ã€‚</dd>
-<dt><code><a
+<dt><code><a
href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">allowTaskReparenting</a></code> 属性</dt>
<dd>{@code allowTaskReparenting} 属性㌠"{@code true}" ã«è¨­å®šã•れã¦ã„るアクティビティã¯ã€ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¨è¦ªå’Œæ€§ã®ã‚るタスクãŒãƒ•ォアグラウンドã«ç§»ã£ãŸã¨ãã«ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã—ãŸã‚¿ã‚¹ã‚¯ã‹ã‚‰è¦ªå’Œæ€§ã®ã‚るタスクã«ç§»å‹•ã§ãã¾ã™ã€‚ãŸã¨ãˆã°ã€æ—…行アプリケーションã®ä¸€éƒ¨ã¨ã—ã¦ã€é¸æŠžã•れãŸéƒ½å¸‚ã®å¤©æ°—予報を表示ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå®šç¾©ã•れã¦ã„ã‚‹ã¨ã—ã¾ã™ã€‚ã“ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«ã¯ã€åŒã˜ã‚¢ãƒ—リケーション内ã®ä»–ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¨åŒã˜è¦ªå’Œæ€§ï¼ˆãƒ‡ãƒ•ォルトã®è¦ªå’Œæ€§ï¼‰ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ãŒã€ãã®è¦ªã®å‰²ã‚Šå½“ã¦ã‚’変更ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ã‚るアクティビティãŒå¤©æ°—予報アクティビティを開始ã™ã‚‹ã¨ã€ãã®æ™‚点ã§ã¯é–‹å§‹å´ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¨åŒã˜ã‚¿ã‚¹ã‚¯ã«å±žã—ãŸçŠ¶æ…‹ã«ãªã‚Šã¾ã™ã€‚ã—ã‹ã—ã€æ¬¡ã«æ—…行アプリケーションãŒãƒ•ォアグラウンドã«ç§»ã‚‹ã¨ã€å¤©æ°—予報アクティビティã®å‰²ã‚Šå½“ã¦ãŒå¤‰æ›´ã•ã‚Œã€æ—…行アプリケーションã®ã‚¿ã‚¹ã‚¯ã®ä¸€éƒ¨ã¨ã—ã¦è¡¨ç¤ºã•れã¾ã™ã€‚</dd>
</dl>
@@ -372,29 +372,29 @@ href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">allowTaskR
<ul>
-<li><b>インテントã«å¿œç­”ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティをã©ã®ã‚¿ã‚¹ã‚¯ã«ä¿æŒã™ã‚‹ã‹</b>。"{@code standard}" ãŠã‚ˆã³ "{@code singleTop}" モードã®å ´åˆã¯ã€ãã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã‚’é–‹å§‹ã—ãŸï¼ˆã¤ã¾ã‚Š <code>{@link android.content.Context#startActivity startActivity()}</code> を呼ã³å‡ºã—ãŸï¼‰ã‚¿ã‚¹ã‚¯ã«ä¿æŒã•れã¾ã™ã€‚ãŸã ã—ã€Intent オブジェクト㫠<code>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</code> フラグãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€å‰ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³<a href="#afftask">è¦ªå’Œæ€§ã¨æ–°ã—ã„タスク</a>ã§èª¬æ˜Žã—ãŸã¨ãŠã‚Šã€åˆ¥ã®ã‚¿ã‚¹ã‚¯ãŒé¸æŠžã•れã¾ã™ã€‚
+<li><b>インテントã«å¿œç­”ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティをã©ã®ã‚¿ã‚¹ã‚¯ã«ä¿æŒã™ã‚‹ã‹</b>。"{@code standard}" ãŠã‚ˆã³ "{@code singleTop}" モードã®å ´åˆã¯ã€ãã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã‚’é–‹å§‹ã—ãŸï¼ˆã¤ã¾ã‚Š <code>{@link android.content.Context#startActivity startActivity()}</code> を呼ã³å‡ºã—ãŸï¼‰ã‚¿ã‚¹ã‚¯ã«ä¿æŒã•れã¾ã™ã€‚ãŸã ã—ã€Intent オブジェクト㫠<code>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</code> フラグãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€å‰ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³<a href="#afftask">è¦ªå’Œæ€§ã¨æ–°ã—ã„タスク</a>ã§èª¬æ˜Žã—ãŸã¨ãŠã‚Šã€åˆ¥ã®ã‚¿ã‚¹ã‚¯ãŒé¸æŠžã•れã¾ã™ã€‚
<p>
一方ã€"{@code singleTask}" ãŠã‚ˆã³ "{@code singleInstance}" モードã®å ´åˆã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå¸¸ã«ã‚¿ã‚¹ã‚¯ã®ãƒ«ãƒ¼ãƒˆ アクティビティã«ãªã‚Šã¾ã™ã€‚タスクã¯å®šç¾©ã•れã¦ãŠã‚Šã€ä»–ã®ã‚¿ã‚¹ã‚¯ã®ä¸€éƒ¨ã¨ã—ã¦èµ·å‹•ã•れるã“ã¨ã¯ã‚りã¾ã›ã‚“。
-</p>
+</p>
<li><p><b>アクティビティã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’複数生æˆã§ãã‚‹ã‹</b>。"{@code standard}" ã¾ãŸã¯ "{@code singleTop}" アクティビティã¯è¤‡æ•°å›žã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã§ãã¾ã™ã€‚ãれらã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’複数ã®ã‚¿ã‚¹ã‚¯ã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ã‚‚ã€ç‰¹å®šã®ã‚¿ã‚¹ã‚¯ã«åŒã˜ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®è¤‡æ•°ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’割り当ã¦ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚
-</p>
+</p>
<p>
一方ã€"{@code singleTask}" ãŠã‚ˆã³ "{@code singleInstance}" アクティビティã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ 1 ã¤ã«åˆ¶é™ã•れã¾ã™ã€‚ã“れらã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã‚¿ã‚¹ã‚¯ã®ãƒ«ãƒ¼ãƒˆã«å½“ãŸã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€ã“れらã®ã‚¿ã‚¹ã‚¯ã®è¤‡æ•°ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒãƒ‡ãƒã‚¤ã‚¹ä¸Šã«åŒæ™‚ã«å­˜åœ¨ã™ã‚‹ã“ã¨ã¯ãªã„ã¨ã„ã†ã“ã¨ã«ãªã‚Šã¾ã™ã€‚
-</p>
+</p>
<li><p><b>インスタンスã®ã‚¿ã‚¹ã‚¯ã«ä»–ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティをå«ã‚ã‚‹ã“ã¨ãŒã§ãã‚‹ã‹</b>。"{@code singleInstance}" アクティビティã¯ã€ãã®ã‚¿ã‚¹ã‚¯å†…ã®å”¯ä¸€ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¨ã—ã¦å˜ç‹¬ã§å‹•作ã—ã¾ã™ã€‚ã“ã“ã‹ã‚‰åˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã—ãŸå ´åˆã€ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯èµ·å‹•モードã«é–¢ä¿‚ãªãã€ã‚ãŸã‹ã‚‚インテント㫠{@code FLAG_ACTIVITY_NEW_TASK} フラグãŒå«ã¾ã‚Œã¦ã„ã‚‹ã‹ã®ã‚ˆã†ã«åˆ¥ã®ã‚¿ã‚¹ã‚¯ã§èµ·å‹•ã—ã¾ã™ã€‚"{@code singleInstance}" モード㨠"{@code singleTask}" モードã¯ã€ã“れ以外ã®ç‚¹ã§ã¯ã¾ã£ãŸãåŒã˜ã§ã™ã€‚</p>
<p>
-ä»–ã® 3 ã¤ã®ãƒ¢ãƒ¼ãƒ‰ã§ã¯ã€ã‚¿ã‚¹ã‚¯ã«è¤‡æ•°ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを割り当ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"{@code singleTask}" アクティビティã¯ã€å¸¸ã«ã‚¿ã‚¹ã‚¯ã®ãƒ«ãƒ¼ãƒˆ アクティビティã«ãªã‚Šã¾ã™ãŒã€åŒã˜ã‚¿ã‚¹ã‚¯ã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ã«ãªã‚‹åˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"{@code standard}" ãŠã‚ˆã³ "{@code singleTop}" アクティビティã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ã‚¹ã‚¿ãƒƒã‚¯å†…ã®ã©ã®ä½ç½®ã«ã§ã‚‚é…ç½®ã§ãã¾ã™ã€‚
+ä»–ã® 3 ã¤ã®ãƒ¢ãƒ¼ãƒ‰ã§ã¯ã€ã‚¿ã‚¹ã‚¯ã«è¤‡æ•°ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを割り当ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"{@code singleTask}" アクティビティã¯ã€å¸¸ã«ã‚¿ã‚¹ã‚¯ã®ãƒ«ãƒ¼ãƒˆ アクティビティã«ãªã‚Šã¾ã™ãŒã€åŒã˜ã‚¿ã‚¹ã‚¯ã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ã«ãªã‚‹åˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"{@code standard}" ãŠã‚ˆã³ "{@code singleTop}" アクティビティã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ã‚¹ã‚¿ãƒƒã‚¯å†…ã®ã©ã®ä½ç½®ã«ã§ã‚‚é…ç½®ã§ãã¾ã™ã€‚
</p></li>
<li><b>ã‚¯ãƒ©ã‚¹ã®æ–°ã—ã„インスタンスを起動ã—ã¦æ–°ã—ã„インテントを処ç†ã™ã‚‹ã‹ã©ã†ã‹</b>。デフォルト㮠"{@code standard}" モードã®å ´åˆã¯ã€æ–°ã—ã„インテントã«å¿œç­”ã™ã‚‹ã¨ãã«ã¯å¿…ãšæ–°ã—ã„インスタンスãŒä½œæˆã•れã¾ã™ã€‚ãれãžã‚Œã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§å‡¦ç†ã™ã‚‹ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã¯ 1 ã¤ã®ã¿ã§ã™ã€‚"{@code singleTop}" モードã®å ´åˆã¯ã€ã‚¯ãƒ©ã‚¹ã®æ—¢å­˜ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒå¯¾è±¡ã‚¿ã‚¹ã‚¯ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ ã‚¹ã‚¿ãƒƒã‚¯ã®æœ€ä¸Šä½ã«ã‚れã°ã€ãれをå†åˆ©ç”¨ã—ã¦æ–°ã—ã„インテントを処ç†ã—ã¾ã™ã€‚ã‚¹ã‚¿ãƒƒã‚¯ã®æœ€ä¸Šä½ã«ãªã„å ´åˆã¯å†åˆ©ç”¨ã•れã¾ã›ã‚“。代ã‚りã«ã€æ–°ã—ã„インスタンスãŒä½œæˆã•れã¦ã‚¹ã‚¿ãƒƒã‚¯ã«ãƒ—ッシュã•ã‚Œã€æ–°ã—ã„インテントã®å‡¦ç†ã«ä½¿ç”¨ã•れã¾ã™ã€‚
<p>
-ãŸã¨ãˆã°ã€ã‚¿ã‚¹ã‚¯ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ スタックã«ã€ãƒ«ãƒ¼ãƒˆ アクティビティ A ã¨ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ Bã€Cã€D ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã¨ã—ã¾ã™ã€‚スタック内ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®é †åºã¯ A-B-C-D ã§ D ãŒæœ€ä¸Šä½ã§ã™ã€‚ã“ã“ã«ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ã‚¿ã‚¤ãƒ—㌠D ã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆãŒå±Šãã¾ã™ã€‚D ã®èµ·å‹•モードãŒãƒ‡ãƒ•ォルト㮠"{@code standard}" ã§ã‚ã‚‹å ´åˆã¯ã€ãã®ã‚¯ãƒ©ã‚¹ã®æ–°ã—ã„インスタンスãŒèµ·å‹•ã—ã€ã‚¹ã‚¿ãƒƒã‚¯ã¯ A-B-C-D-D ã¨ãªã‚Šã¾ã™ã€‚ã—ã‹ã—ã€D ã®èµ·å‹•モード㌠"{@code singleTop}" ã§ã‚れã°ã€ã‚¹ã‚¿ãƒƒã‚¯ã®æœ€ä¸Šä½ã¯ D ãªã®ã§ã€æ–°ã—ã„ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã¯æ—¢å­˜ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ã‚ˆã£ã¦å‡¦ç†ã•れるã¯ãšã§ã™ã€‚ã—ãŸãŒã£ã¦ã€ã‚¹ã‚¿ãƒƒã‚¯ã¯ A-B-C-D ã®ã¾ã¾ã¨ãªã‚Šã¾ã™ã€‚
+ãŸã¨ãˆã°ã€ã‚¿ã‚¹ã‚¯ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ スタックã«ã€ãƒ«ãƒ¼ãƒˆ アクティビティ A ã¨ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ Bã€Cã€D ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã¨ã—ã¾ã™ã€‚スタック内ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®é †åºã¯ A-B-C-D ã§ D ãŒæœ€ä¸Šä½ã§ã™ã€‚ã“ã“ã«ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ã‚¿ã‚¤ãƒ—㌠D ã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆãŒå±Šãã¾ã™ã€‚D ã®èµ·å‹•モードãŒãƒ‡ãƒ•ォルト㮠"{@code standard}" ã§ã‚ã‚‹å ´åˆã¯ã€ãã®ã‚¯ãƒ©ã‚¹ã®æ–°ã—ã„インスタンスãŒèµ·å‹•ã—ã€ã‚¹ã‚¿ãƒƒã‚¯ã¯ A-B-C-D-D ã¨ãªã‚Šã¾ã™ã€‚ã—ã‹ã—ã€D ã®èµ·å‹•モード㌠"{@code singleTop}" ã§ã‚れã°ã€ã‚¹ã‚¿ãƒƒã‚¯ã®æœ€ä¸Šä½ã¯ D ãªã®ã§ã€æ–°ã—ã„ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã¯æ—¢å­˜ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ã‚ˆã£ã¦å‡¦ç†ã•れるã¯ãšã§ã™ã€‚ã—ãŸãŒã£ã¦ã€ã‚¹ã‚¿ãƒƒã‚¯ã¯ A-B-C-D ã®ã¾ã¾ã¨ãªã‚Šã¾ã™ã€‚
</p>
<p>
@@ -417,7 +417,7 @@ href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">allowTaskR
</p>
<p>
-起動モードã«ã¤ã„ã¦è©³ã—ãã¯ã€<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> è¦ç´ ã®èª¬æ˜Žã‚’ã”覧ãã ã•ã„。
+起動モードã«ã¤ã„ã¦è©³ã—ãã¯ã€<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> è¦ç´ ã®èª¬æ˜Žã‚’ã”覧ãã ã•ã„。
</p>
@@ -432,26 +432,26 @@ href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">allowTaskR
</p>
<dl>
-<dt><code><a
+<dt><code><a
href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code> 属性</dt>
<dd>タスクã®ãƒ«ãƒ¼ãƒˆ アクティビティã§ã“ã®å±žæ€§ã‚’ "{@code true}" ã«è¨­å®šã™ã‚‹ã¨ã€ä¸Šã§èª¬æ˜Žã—ãŸãƒ‡ãƒ•ォルトã®å‹•作ã¯ç™ºç”Ÿã—ã¾ã›ã‚“。長時間経éŽã—ã¦ã‚‚ã€ã‚¿ã‚¹ã‚¯å†…ã®ã™ã¹ã¦ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ãã®ã¾ã¾æ®‹ã•れã¾ã™ã€‚</dd>
-<dt><code><a
+<dt><code><a
href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code> 属性</dt>
<dd>タスクã®ãƒ«ãƒ¼ãƒˆ アクティビティã§ã“ã®å±žæ€§ã‚’ "{@code true}" ã«è¨­å®šã—ãŸå ´åˆã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã„ã£ãŸã‚“タスクを離れるã¨ã€æˆ»ã£ãŸã¨ãã«ã¯ãƒ«ãƒ¼ãƒˆã‚’å«ã‚€ã™ã¹ã¦ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒã‚¯ãƒªã‚¢ã•れã¦ã„ã¾ã™ã€‚ã¤ã¾ã‚Šã€{@code alwaysRetainTaskState} ã®æ­£å対ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ユーザーãŒä¸€çž¬ã§ã‚‚タスクを離れるã¨ã€æœ€åˆã®çŠ¶æ…‹ã‹ã‚‰ã‚„り直ã™ã“ã¨ã«ãªã‚Šã¾ã™ã€‚</dd>
-<dt><code><a
+<dt><code><a
href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTaskLaunch</a></code> 属性</dt>
<dd>ã“ã®å±žæ€§ã¯ {@code clearTaskOnLaunch} ã«ä¼¼ã¦ã„ã¾ã™ãŒã€ã‚¿ã‚¹ã‚¯å…¨ä½“ã§ã¯ãªãå˜ä¸€ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«ä½œç”¨ã—ã¾ã™ã€‚ã¾ãŸã€ãƒ«ãƒ¼ãƒˆ アクティビティをå«ã‚€ã©ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティもクリアã®å¯¾è±¡ã¨ãªã‚Šãˆã¾ã™ã€‚ã“ã®å±žæ€§ãŒ "{@code true}" ã«è¨­å®šã•れãŸã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã€ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®é–“ã®ã¿ã‚¿ã‚¹ã‚¯ã®ä¸€éƒ¨ã‚’å½¢æˆã—ã¾ã™ã€‚ユーザーãŒã„ã£ãŸã‚“ãã®ã‚¿ã‚¹ã‚¯ã‹ã‚‰é›¢ã‚Œã¦ã‹ã‚‰ã€å†åº¦ã‚¿ã‚¹ã‚¯ã«æˆ»ã‚‹ã¨ã€ã“ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã‚¯ãƒªã‚¢ã•れã¦ã„ã¾ã™</dd>
</dl>
<p>
-アクティビティをスタックã‹ã‚‰å‰Šé™¤ã™ã‚‹æ–¹æ³•ã¯ä»–ã«ã‚‚ã‚りã¾ã™ã€‚Intent オブジェクト㫠<code>{@link
+アクティビティをスタックã‹ã‚‰å‰Šé™¤ã™ã‚‹æ–¹æ³•ã¯ä»–ã«ã‚‚ã‚りã¾ã™ã€‚Intent オブジェクト㫠<code>{@link
android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_CLEAR_TOP}</code> フラグãŒå«ã¾ã‚Œã¦ãŠã‚Šã€ãã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã‚’処ç†ã™ã¹ãタイプã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒå¯¾è±¡ã‚¿ã‚¹ã‚¯ã®ã‚¹ã‚¿ãƒƒã‚¯å†…ã«å­˜åœ¨ã™ã‚‹å ´åˆã¯ã€ãã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã‚¹ã‚¿ãƒƒã‚¯ã®æœ€ä¸Šä½ã«ãªã£ã¦ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã«å¿œç­”ã§ãるよã†ã€ãれより上ä½ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã™ã¹ã¦ã‚¯ãƒªã‚¢ã•れã¾ã™ã€‚指定ã•れãŸã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®èµ·å‹•モード㌠"{@code standard}" ã§ã‚ã‚‹å ´åˆã¯ã€ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティもスタックã‹ã‚‰å‰Šé™¤ã•ã‚Œã€æ–°ã—ã„インスタンスãŒèµ·å‹•ã—ã¦ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã‚’処ç†ã—ã¾ã™ã€‚起動モード "{@code standard}" ã§ã¯ã€æ–°ã—ã„インテントを処ç†ã™ã‚‹éš›ã€å¸¸ã«æ–°ã—ã„インスタンスãŒä½œæˆã•れるãŸã‚ã§ã™ã€‚
</p>
<p>
-{@code FLAG_ACTIVITY_CLEAR_TOP} ã¯ã€ã»ã¨ã‚“ã©ã®å ´åˆ {@code FLAG_ACTIVITY_NEW_TASK} ã¨çµ„ã¿åˆã‚ã›ã¦ä½¿ç”¨ã—ã¾ã™ã€‚ã“れらã®ãƒ•ラグを組ã¿åˆã‚ã›ã‚‹ã¨ã€åˆ¥ã®ã‚¿ã‚¹ã‚¯ã«æ—¢ã«å­˜åœ¨ã—ã¦ã„るアクティビティを探ã—ã€ãれをインテントã«å¿œç­”ã§ãã‚‹ä½ç½®ã«é…ç½®ã§ãã¾ã™ã€‚
+{@code FLAG_ACTIVITY_CLEAR_TOP} ã¯ã€ã»ã¨ã‚“ã©ã®å ´åˆ {@code FLAG_ACTIVITY_NEW_TASK} ã¨çµ„ã¿åˆã‚ã›ã¦ä½¿ç”¨ã—ã¾ã™ã€‚ã“れらã®ãƒ•ラグを組ã¿åˆã‚ã›ã‚‹ã¨ã€åˆ¥ã®ã‚¿ã‚¹ã‚¯ã«æ—¢ã«å­˜åœ¨ã—ã¦ã„るアクティビティを探ã—ã€ãれをインテントã«å¿œç­”ã§ãã‚‹ä½ç½®ã«é…ç½®ã§ãã¾ã™ã€‚
</p>
@@ -467,7 +467,7 @@ android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_CLEAR_TOP}</code> ã
<p>
{@code FLAG_ACTIVITY_NEW_TASK} フラグã«ã‚‚ã€ã“れã¨åŒã˜ã‚ˆã†ãªé›£ã—ã•ãŒã‚りã¾ã™ã€‚ã“ã®ãƒ•ラグを指定ã—ãŸã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§ã¯ã€æ–°ã—ã„タスクを開始ã—ãŸå¾Œã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ [ホーム] キーを押ã—ã¦ãã®ã‚¿ã‚¹ã‚¯ã‚’離れãŸå ´åˆã«å‚™ãˆã€ã‚¿ã‚¹ã‚¯ã«æˆ»ã‚‹ãŸã‚ã®æ‰‹æ®µã‚’用æ„ã—ã¦ãŠãå¿…è¦ãŒã‚りã¾ã™ã€‚一部ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ï¼ˆãŸã¨ãˆã°é€šçŸ¥ãƒžãƒãƒ¼ã‚¸ãƒ£ï¼‰ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを常ã«å¤–部タスクã¨ã—ã¦é–‹å§‹ã—ã¾ã™ã€‚エンティティã®ä¸€éƒ¨ã¨ã—ã¦é–‹å§‹ã™ã‚‹ã“ã¨ã¯ãªã„ãŸã‚ã€{@code startActivity()} ã«æ¸¡ã™ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã«ã¯å¿…ãš {@code FLAG_ACTIVITY_NEW_TASK} を指定ã—ã¾ã™ã€‚外部エンティティã‹ã‚‰å‘¼ã³å‡ºã™ã“ã¨ã®ã§ãるアクティビティã§ã“ã®ãƒ•ラグãŒä½¿ç”¨ã•れã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹å ´åˆã¯ã€é–‹å§‹ã•れãŸã‚¿ã‚¹ã‚¯ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæˆ»ã‚‹ãŸã‚ã®æ‰‹æ®µã‚’別途æä¾›ã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。
-</p>
+</p>
<p>
ユーザーãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã«æˆ»ã‚‹ã“ã¨ãŒã§ãるよã†ã«ã—ãªã„å ´åˆã¯ã€{@code <activity>} è¦ç´ ã® {@code finishOnTaskLaunch} ã‚’ "{@code true}" ã«è¨­å®šã—ã¾ã™ã€‚詳ã—ãã¯ã€<a href="#clearstack">スタックã®ã‚¯ãƒªã‚¢</a>ã‚’ã”覧ãã ã•ã„。
@@ -497,7 +497,7 @@ Android ã§ã¯ã€æœ€åˆã®ã‚¢ãƒ—リケーション コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’実è¡
<p>
状æ³ã«ã‚ˆã£ã¦ã¯ã€Android ãŒãƒ—ロセスを終了ã•ã›ã‚‹ã¹ãã¨åˆ¤æ–­ã™ã‚‹å ´åˆãŒã‚りã¾ã™ã€‚ãŸã¨ãˆã°ã€ãƒ¡ãƒ¢ãƒªãŒä¸è¶³ã—ã¦ããŸå ´åˆã‚„ã€ä»–ã®ãƒ—ロセスã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã™ã°ã‚„ã応答ã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã§ã™ã€‚プロセスãŒçµ‚了ã™ã‚‹ã¨ã€ãã®ãƒ—ロセス内ã§å®Ÿè¡Œã•れã¦ã„るアプリケーション コンãƒãƒ¼ãƒãƒ³ãƒˆã¯ç ´æ£„ã•れã¾ã™ã€‚ãれらã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã§å‡¦ç†ã™ã‚‹ä½œæ¥­ãŒã‚‚ã†ä¸€åº¦ç™ºç”Ÿã™ã‚‹ã¨ã€ãã®ãŸã‚ã®ãƒ—ロセスãŒå†ã³é–‹å§‹ã•れã¾ã™ã€‚
-</p>
+</p>
<p>
Android ã§ã¯ã€ã©ã®ãƒ—ロセスを終了ã•ã›ã‚‹ã‹ã‚’判断ã™ã‚‹ãŸã‚ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã¨ã£ã¦ã®ç›¸å¯¾çš„ãªé‡è¦åº¦ã‚’é‡ã¿ä»˜ã‘ã—ã¦ç®¡ç†ã—ã¾ã™ã€‚ãŸã¨ãˆã°ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒã¾ã ç”»é¢ã«è¡¨ç¤ºã•れã¦ã„るプロセスを終了ã•ã›ã‚‹ã‚ˆã‚Šã‚‚ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒç”»é¢ã«è¡¨ç¤ºã•れã¦ã„ãªã„プロセスを終了ã•ã›ã‚‹æ–¹ãŒåˆç†çš„ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€ãƒ—ロセスを終了ã•ã›ã‚‹ã‹ã©ã†ã‹ã¯ã€ãã®ãƒ—ロセスã§å®Ÿè¡Œã•れã¦ã„るコンãƒãƒ¼ãƒãƒ³ãƒˆã®çŠ¶æ…‹ã«å¿œã˜ã¦åˆ¤æ–­ã•れるã¨ã„ã†ã“ã¨ã§ã™ã€‚コンãƒãƒ¼ãƒãƒ³ãƒˆã®çŠ¶æ…‹ã«ã¤ã„ã¦ã¯ã€å¾Œã»ã©<a href="#lcycles">コンãƒãƒ¼ãƒãƒ³ãƒˆã®ãƒ©ã‚¤ãƒ•サイクル</a>ã§è©³ã—ã説明ã—ã¾ã™ã€‚
@@ -507,7 +507,7 @@ Android ã§ã¯ã€ã©ã®ãƒ—ロセスを終了ã•ã›ã‚‹ã‹ã‚’判断ã™ã‚‹ãŸã‚ã€
<h3 id="threads">スレッド</h3>
<p>
-アプリケーションをå˜ä¸€ã®ãƒ—ロセスã«é™å®šã—ãŸã¨ã—ã¦ã‚‚ã€ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§ã®å‡¦ç†ã«ã‚¹ãƒ¬ãƒƒãƒ‰ãŒå¿…è¦ã«ãªã‚‹ã“ã¨ã¯ã‚ˆãã‚りã¾ã™ã€‚ユーザー インターフェースã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã«å¯¾ã—ã¦å¸¸ã«ã™ã°ã‚„ã応答ã§ããªã‘れã°ãªã‚‰ãªã„ãŸã‚ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティをホストã™ã‚‹ã‚¹ãƒ¬ãƒƒãƒ‰ã§ã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ ダウンロードã®ã‚ˆã†ãªæ™‚é–“ã®ã‹ã‹ã‚‹å‡¦ç†ã‚’一緒ã«ãƒ›ã‚¹ãƒˆã—ãªã„よã†ã«ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã™ãã«å®Œäº†ã—ãªã„å¯èƒ½æ€§ã®ã‚ã‚‹ã™ã¹ã¦ã®å‡¦ç†ã¯ã€åˆ¥ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«å‰²ã‚Šå½“ã¦ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。
+アプリケーションをå˜ä¸€ã®ãƒ—ロセスã«é™å®šã—ãŸã¨ã—ã¦ã‚‚ã€ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§ã®å‡¦ç†ã«ã‚¹ãƒ¬ãƒƒãƒ‰ãŒå¿…è¦ã«ãªã‚‹ã“ã¨ã¯ã‚ˆãã‚りã¾ã™ã€‚ユーザー インターフェースã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã«å¯¾ã—ã¦å¸¸ã«ã™ã°ã‚„ã応答ã§ããªã‘れã°ãªã‚‰ãªã„ãŸã‚ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティをホストã™ã‚‹ã‚¹ãƒ¬ãƒƒãƒ‰ã§ã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ ダウンロードã®ã‚ˆã†ãªæ™‚é–“ã®ã‹ã‹ã‚‹å‡¦ç†ã‚’一緒ã«ãƒ›ã‚¹ãƒˆã—ãªã„よã†ã«ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã™ãã«å®Œäº†ã—ãªã„å¯èƒ½æ€§ã®ã‚ã‚‹ã™ã¹ã¦ã®å‡¦ç†ã¯ã€åˆ¥ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«å‰²ã‚Šå½“ã¦ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。
</p>
<p>
@@ -549,19 +549,19 @@ RPC インターフェースã«å«ã‚ã‚‹ã“ã¨ãŒã§ãã‚‹ã®ã¯ãƒ¡ã‚½ãƒƒãƒ‰ã®ã
<li>サービスã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆï¼ˆãƒ­ãƒ¼ã‚«ãƒ«å´ï¼‰ã«ã¯ <code>{@link android.content.ServiceConnection#onServiceConnected
onServiceConnected()}</code> ãŠã‚ˆã³<code>{@link android.content.ServiceConnection#onServiceDisconnected
onServiceDisconnected()}</code> メソッドãŒå®Ÿè£…ã•れã¦ã„ã‚‹ãŸã‚ã€ãƒªãƒ¢ãƒ¼ãƒˆ サービスã¨ã®æŽ¥ç¶šãŒç¢ºç«‹ã•れãŸã¨ãや切断ã•れãŸã¨ãã«ã¯é€šçŸ¥ã‚’å—ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚通知ãŒã‚り次第ã€<code>{@link android.content.Context#bindService bindService()}</code> を呼ã³å‡ºã—ã¦æŽ¥ç¶šã‚’è¨­å®šã—ã¾ã™ã€‚
-</li>
+</li>
-<li>
+<li>
サービス㮠<code>{@link android.app.Service#onBind onBind()}</code> メソッドã¯ã€å—ã‘å–ã£ãŸã‚¤ãƒ³ãƒ†ãƒ³ãƒˆï¼ˆ{@code bindService()} ã«æ¸¡ã•れãŸã‚¤ãƒ³ãƒ†ãƒ³ãƒˆï¼‰ã«å¿œã˜ã¦ã€æŽ¥ç¶šã‚’承èªã¾ãŸã¯æ‹’å¦ã™ã‚‹ãŸã‚ã«å®Ÿè£…ã—ã¾ã™ã€‚æŽ¥ç¶šãŒæ‰¿èªã•れるã¨ã€æŽ¥ç¶šã‚’承èªã™ã‚‹ã®ã§ã‚れã°ã€ã‚¹ã‚¿ãƒ– サブクラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚
</li>
-<li>ã‚µãƒ¼ãƒ“ã‚¹ãŒæŽ¥ç¶šã‚’æ‰¿èªã™ã‚‹ã¨ã€Android ãŒã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã® {@code onServiceConnected()} メソッドを呼ã³å‡ºã—ã€IBinder オブジェクト(サービスãŒç®¡ç†ã™ã‚‹ã‚¹ã‚¿ãƒ– サブクラスã®ãƒ—ロキシ)を渡ã—ã¾ã™ã€‚クライアントã¯ã€ã“ã®ãƒ—ロキシを介ã—ã¦ãƒªãƒ¢ãƒ¼ãƒˆã‚µãƒ¼ãƒ“スを呼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚
+<li>ã‚µãƒ¼ãƒ“ã‚¹ãŒæŽ¥ç¶šã‚’æ‰¿èªã™ã‚‹ã¨ã€Android ãŒã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã® {@code onServiceConnected()} メソッドを呼ã³å‡ºã—ã€IBinder オブジェクト(サービスãŒç®¡ç†ã™ã‚‹ã‚¹ã‚¿ãƒ– サブクラスã®ãƒ—ロキシ)を渡ã—ã¾ã™ã€‚クライアントã¯ã€ã“ã®ãƒ—ロキシを介ã—ã¦ãƒªãƒ¢ãƒ¼ãƒˆã‚µãƒ¼ãƒ“スを呼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚
</li>
</ul>
<p>
ã“ã“ã§ã¯ã€èª¬æ˜Žã‚’ç°¡å˜ã«ã™ã‚‹ãŸã‚ã€RPC メカニズムã®ç´°ã‹ã„点ã¯çœç•¥ã—ã¦ã„ã¾ã™ã€‚詳ã—ãã¯ã€<a href="{@docRoot}guide/components/aidl.html">Designing a Remote Interface Using AIDL</a>ã€ãŠã‚ˆã³ {@link android.os.IBinder IBinder} クラスã®èª¬æ˜Žã‚’ã”覧ãã ã•ã„。
-</p>
+</p>
<h3 id="tsafe">スレッドセーフãªãƒ¡ã‚½ãƒƒãƒ‰</h3>
@@ -572,18 +572,18 @@ onServiceDisconnected()}</code> メソッドãŒå®Ÿè£…ã•れã¦ã„ã‚‹ãŸã‚ã€ãƒª
<p>
å‰ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§èª¬æ˜Žã—㟠RPC ã®ã‚ˆã†ã«ãƒ¡ã‚½ãƒƒãƒ‰ã‚’リモートã§å‘¼ã³å‡ºã™ã“ã¨ãŒã§ãã‚‹å ´åˆã¯ã€ã“ã®ã‚ˆã†ãªçжæ³ãŒç‰¹ã«ç™ºç”Ÿã—ã‚„ã™ããªã‚Šã¾ã™ã€‚IBinder オブジェクトã«å®Ÿè£…ã•れã¦ã„るメソッドを IBinder ã¨åŒã˜ãƒ—ロセスã‹ã‚‰å‘¼ã³å‡ºã™ã¨ã€ãã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯å‘¼ã³å‡ºã—å´ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã§å®Ÿè¡Œã•れã¾ã™ã€‚一方ã€åˆ¥ã®ãƒ—ロセスã‹ã‚‰ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—ãŸå ´åˆã¯ã€ãƒ—ロセスã®ãƒ¡ã‚¤ãƒ³ スレッドã§ã¯ãªãã€IBinder ã¨åŒã˜ãƒ—ロセス内ã«ä¿æŒã•れã¦ã„るスレッドã®ãƒ—ールã‹ã‚‰é¸æŠžã•れãŸã‚¹ãƒ¬ãƒƒãƒ‰ã§å®Ÿè¡Œã•れã¾ã™ã€‚ãŸã¨ãˆã°ã€ã‚µãƒ¼ãƒ“ス㮠{@code onBind()} メソッドã¯ãã®ã‚µãƒ¼ãƒ“スã®ãƒ—ロセスã®ãƒ¡ã‚¤ãƒ³ スレッドã‹ã‚‰å‘¼ã³å‡ºã•れるã®ã«å¯¾ã—ã€{@code onBind()} ã‹ã‚‰è¿”ã•れãŸã‚ªãƒ–ジェクトã«å®Ÿè£…ã•れã¦ã„るメソッド(ãŸã¨ãˆã° RPC メソッドを実装ã™ã‚‹ã‚¹ã‚¿ãƒ– サブクラス)ã¯ãƒ—ール内ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã‹ã‚‰å‘¼ã³å‡ºã•れã¾ã™ã€‚サービスã«ã¯è¤‡æ•°ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚’割り当ã¦ã‚‹ã“ã¨ãŒã§ãã‚‹ãŸã‚ã€è¤‡æ•°ã®ãƒ—ール スレッドをåŒã˜ IBinder ã«åŒæ™‚ã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€IBinder メソッドã¯ã‚¹ãƒ¬ãƒƒãƒ‰ã‚»ãƒ¼ãƒ•ã«ãªã‚‹ã‚ˆã†ã«å®Ÿè£…ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-</p>
+</p>
<p>
åŒæ§˜ã«ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ プロãƒã‚¤ãƒ€ã‚‚別ã®ãƒ—ロセスã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ リクエストをå—ã‘å–ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ContentResolver ãŠã‚ˆã³ ContentProvider クラスã¯ãƒ—ロセス間通信ã®ç®¡ç†ã®è©³ç´°ã‚’隠蔽ã—ã¾ã™ãŒã€ãれらã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«å¿œç­”ã™ã‚‹ ContentProvider メソッド(<code>{@link android.content.ContentProvider#query query()}</code>ã€<code>{@link android.content.ContentProvider#insert insert()}</code>ã€<code>{@link android.content.ContentProvider#delete delete()}</code>ã€<code>{@link android.content.ContentProvider#update update()}</code>ã€ãŠã‚ˆã³ <code>{@link android.content.ContentProvider#getType getType()}</code> メソッド)ã¯ã€ãƒ—ロセスã®ãƒ¡ã‚¤ãƒ³ スレッドã§ã¯ãªãã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ プロãƒã‚¤ãƒ€ã®ãƒ—ロセス内ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã®ãƒ—ールã‹ã‚‰å‘¼ã³å‡ºã•れã¾ã™ã€‚ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’åŒæ™‚ã«å‘¼ã³å‡ºã™ã“ã¨ã®ã§ãã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®æ•°ã«åˆ¶é™ã¯ã‚りã¾ã›ã‚“。ã—ãŸãŒã£ã¦ã€ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚‚スレッドセーフã«ãªã‚‹ã‚ˆã†ã«å®Ÿè£…ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-</p>
+</p>
<h2 id="lcycles">コンãƒãƒ¼ãƒãƒ³ãƒˆã®ãƒ©ã‚¤ãƒ•サイクル</h2>
<p>
アプリケーション コンãƒãƒ¼ãƒãƒ³ãƒˆã«ã¯ãƒ©ã‚¤ãƒ•サイクルãŒã‚りã¾ã™ã€‚ライフサイクルã¯ã€ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã¸å¿œç­”ã™ã‚‹ã“ã¨ã§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã§å§‹ã¾ã‚Šã€ãã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ç ´æ£„ã§çµ‚ã‚りã¾ã™ã€‚ã“ã®é–“ã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªã¨ãã¨ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã§ãªã„ã¨ããŒã‚りã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§ã‚れã°ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰è¦‹ãˆã‚‹ã¨ãã¨è¦‹ãˆãªã„ã¨ããŒã‚りã¾ã™ã€‚ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã€ã‚µãƒ¼ãƒ“スã€ãŠã‚ˆã³ãƒ–ロードキャスト レシーãƒã®ãƒ©ã‚¤ãƒ•サイクルã«ã¤ã„ã¦èª¬æ˜Žã—ã¾ã™ã€‚具体的ã«ã¯ã€ãれãžã‚ŒãŒãƒ©ã‚¤ãƒ•タイムã®é–“ã«å–ã‚‹ã“ã¨ã®ã§ãる状態ã€çŠ¶æ…‹ã®é·ç§»ã‚’通知ã™ã‚‹æ–¹æ³•ã€ãŠã‚ˆã³ãれらã®çŠ¶æ…‹ãŒã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’実行ã—ã¦ã„るプロセスãŒçµ‚了ã•ã›ã‚‰ã‚ŒãŸã‚Šã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒç ´æ£„ã•れãŸã‚Šã™ã‚‹å¯èƒ½æ€§ã¸ã®å½±éŸ¿ãªã©ã«ã¤ã„ã¦èª¬æ˜Žã—ã¾ã™ã€‚
-</p>
+</p>
<h3 id="actlife">アクティビティã®ãƒ©ã‚¤ãƒ•サイクル</h3>
@@ -624,12 +624,12 @@ onServiceDisconnected()}</code> メソッドãŒå®Ÿè£…ã•れã¦ã„ã‚‹ãŸã‚ã€ãƒª
. . .
}</pre>
</div>
-</div>
+</div>
<p>
-ã“れら 7 ã¤ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使用ã™ã‚‹ã¨ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ãƒ©ã‚¤ãƒ•サイクル全体を定義ã§ãã¾ã™ã€‚ã“れらを実装ã™ã‚‹ã“ã¨ã§ã€ãƒã‚¹ãƒˆã•れ㟠3 ã¤ã®ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ãªã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ãƒ©ã‚¤ãƒ•サイクルを監視ã§ãã¾ã™:
-</p>
+ã“れら 7 ã¤ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使用ã™ã‚‹ã¨ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ãƒ©ã‚¤ãƒ•サイクル全体を定義ã§ãã¾ã™ã€‚ã“れらを実装ã™ã‚‹ã“ã¨ã§ã€ãƒã‚¹ãƒˆã•れ㟠3 ã¤ã®ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ãªã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ãƒ©ã‚¤ãƒ•サイクルを監視ã§ãã¾ã™:
+</p>
<ul>
<li>アクティビティã®<b>ライフタイム全体</b>ã¯ã€<code>{@link android.app.Activity#onCreate onCreate()}</code> ãŒåˆã‚ã¦å‘¼ã³å‡ºã•れãŸã¨ãã«å§‹ã¾ã‚Šã€æœ€å¾Œã« <code>{@link android.app.Activity#onDestroy}</code> ãŒå‘¼ã³å‡ºã•れãŸã¨ãã«çµ‚了ã—ã¾ã™ã€‚アクティビティã¯ã€{@code onCreate()} ã§ã€Œå…¨ä½“çš„ã€ãªçŠ¶æ…‹ã®ã™ã¹ã¦ã®åˆæœŸè¨­å®šã‚’行ã„ã€{@code onDestroy()} 残ã£ã¦ã„ãŸãƒªã‚½ãƒ¼ã‚¹ã‚’ã™ã¹ã¦è§£æ”¾ã—ã¾ã™ã€‚ãŸã¨ãˆã°ã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§å®Ÿè¡Œã™ã‚‹ã‚¹ãƒ¬ãƒƒãƒ‰ã¯ã€{@code onCreate()} ã§ä½œæˆã•れã€{@code onDestroy()} ã§åœæ­¢ã—ã¾ã™ã€‚</li>
@@ -644,8 +644,8 @@ onServiceDisconnected()}</code> メソッドãŒå®Ÿè£…ã•れã¦ã„ã‚‹ãŸã‚ã€ãƒª
<p>
<p style="margin-left: 2em"><img src="{@docRoot}images/activity_lifecycle.png"
-alt="Android ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ ライフサイクルã®çŠ¶æ…‹é·ç§»å›³" /></p>
-
+alt="Android ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ ライフサイクルã®çŠ¶æ…‹é·ç§»å›³" /></p>
+
<p>
次ã®è¡¨ã§ã¯ã€å„メソッドã«ã¤ã„ã¦è©³ã—ã説明ã—ã€ãƒ©ã‚¤ãƒ•サイクル全体ã«ãŠã‘ã‚‹ä½ç½®ä»˜ã‘を示ã—ã¾ã™:
</p>
@@ -671,7 +671,7 @@ alt="Android ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ ライフサイクルã®çŠ¶æ…‹é·ç§»å›³"
<tr>
<td rowspan="5" style="border-left: none; border-right: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart
+ <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart
onRestart()}</code></td>
<td>アクティビティãŒåœæ­¢ã—ãŸå¾Œã€ãれをもã†ä¸€åº¦é–‹å§‹ã™ã‚‹ç›´å‰ã«å‘¼ã³å‡ºã•れã¾ã™ã€‚
<p>ã“ã®å¾Œã«ã¯ã€å¿…ãš {@code onStart()} ãŒå‘¼ã³å‡ºã•れã¾ã™ã€‚</p></td>
@@ -706,16 +706,16 @@ onRestart()}</code></td>
<tr>
<td colspan="2" align="left"><code>{@link android.app.Activity#onStop onStop()}</code></td>
- <td>アクティビティãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰è¦‹ãˆãªããªã£ãŸã¨ãã«å‘¼ã³å‡ºã•れã¾ã™ã€‚見ãˆãªããªã‚‹çжæ³ã¨ã—ã¦ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒç ´æ£„ã•れãŸå ´åˆã‚„ã€å†é–‹ã•れãŸåˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ï¼ˆæ—¢å­˜ã‹æ–°è¦ã‹ã‚’å•ã‚ãšï¼‰ã«ã‚ˆã£ã¦éš ã•れãŸå ´åˆãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã€‚
+ <td>アクティビティãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰è¦‹ãˆãªããªã£ãŸã¨ãã«å‘¼ã³å‡ºã•れã¾ã™ã€‚見ãˆãªããªã‚‹çжæ³ã¨ã—ã¦ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒç ´æ£„ã•れãŸå ´åˆã‚„ã€å†é–‹ã•れãŸåˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ï¼ˆæ—¢å­˜ã‹æ–°è¦ã‹ã‚’å•ã‚ãšï¼‰ã«ã‚ˆã£ã¦éš ã•れãŸå ´åˆãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã€‚
<p>ãã®å¾Œã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ã®å¯¾è©±ã«æˆ»ã£ãŸå ´åˆã¯ {@code onRestart()} ãŒã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå®Œå…¨ã«çµ‚了ã™ã‚‹å ´åˆã¯ {@code onDestroy()} ãŒå‘¼ã³å‡ºã•れã¾ã™ã€‚</p></td>
<td align="center"><strong style="color:#800000">å¯èƒ½</strong></td>
<td align="center">{@code onRestart()} <br/>ã¾ãŸã¯<br/>{@code onDestroy()}</td>
</tr>
<tr>
- <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
+ <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
onDestroy()}</code></td>
- <td>アクティビティãŒç ´æ£„ã•れるå‰ã«å‘¼ã³å‡ºã•れã¾ã™ã€‚ã“れãŒã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå—ã‘å–る最後ã®å‘¼ã³å‡ºã—ã¨ãªã‚Šã¾ã™ã€‚ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒå‘¼ã³å‡ºã•れる状æ³ã¨ã—ã¦ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå®Œäº†ã™ã‚‹å ´åˆï¼ˆ<code>{@link android.app.Activity#finish
+ <td>アクティビティãŒç ´æ£„ã•れるå‰ã«å‘¼ã³å‡ºã•れã¾ã™ã€‚ã“れãŒã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå—ã‘å–る最後ã®å‘¼ã³å‡ºã—ã¨ãªã‚Šã¾ã™ã€‚ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒå‘¼ã³å‡ºã•れる状æ³ã¨ã—ã¦ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå®Œäº†ã™ã‚‹å ´åˆï¼ˆ<code>{@link android.app.Activity#finish
finish()}</code> ãŒå‘¼ã³å‡ºã•れãŸã¨ã)やã€ã‚·ã‚¹ãƒ†ãƒ ãŒé ˜åŸŸã‚’確ä¿ã™ã‚‹ãŸã‚ã«ä¸€æ™‚çš„ã«ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’破棄ã™ã‚‹å ´åˆãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ã“れら㮠2 ã¤ã®çжæ³ã¯ã€<code>{@link
android.app.Activity#isFinishing isFinishing()}</code> メソッドを使用ã—ã¦è­˜åˆ¥ã§ãã¾ã™ã€‚</td>
<td align="center"><strong style="color:#800000">å¯èƒ½</strong></td>
@@ -744,8 +744,8 @@ onDestroy()}</code></td>
</p>
<p>
-アクティビティãŒå¼·åˆ¶çµ‚了ã•ã›ã‚‰ã‚Œã‚‹å‰ã®çŠ¶æ…‹ã‚’ä¿å­˜ã—ã¦ãŠããŸã„å ´åˆã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ㫠<code>{@link android.app.Activity#onSaveInstanceState
-onSaveInstanceState()}</code> メソッドを実装ã—ã¾ã™ã€‚ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒç ´æ£„ã•れやã™ã„状態ã«ãªã‚‹å‰ï¼ˆã¤ã¾ã‚Š {@code onPause()} ãŒå‘¼ã³å‡ºã•れるå‰ï¼‰ã«å‘¼ã³å‡ºã•れã¾ã™ã€‚ãã®éš›ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®å‹•çš„ãªçŠ¶æ…‹ã‚’åå‰/値ペアã¨ã—ã¦è¨˜éŒ²ã§ãã‚‹ {@link android.os.Bundle} ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæ¸¡ã•れã¾ã™ã€‚アクティビティãŒã‚‚ã†ä¸€åº¦é–‹å§‹ã•れるã¨ã€Bundle 㯠{@code onCreate()} ã ã‘ã§ãªãã€{@code onStart()} ã®å¾Œã«å‘¼ã³å‡ºã•れる <code>{@link
+アクティビティãŒå¼·åˆ¶çµ‚了ã•ã›ã‚‰ã‚Œã‚‹å‰ã®çŠ¶æ…‹ã‚’ä¿å­˜ã—ã¦ãŠããŸã„å ´åˆã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ㫠<code>{@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()}</code> メソッドを実装ã—ã¾ã™ã€‚ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒç ´æ£„ã•れやã™ã„状態ã«ãªã‚‹å‰ï¼ˆã¤ã¾ã‚Š {@code onPause()} ãŒå‘¼ã³å‡ºã•れるå‰ï¼‰ã«å‘¼ã³å‡ºã•れã¾ã™ã€‚ãã®éš›ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®å‹•çš„ãªçŠ¶æ…‹ã‚’åå‰/値ペアã¨ã—ã¦è¨˜éŒ²ã§ãã‚‹ {@link android.os.Bundle} ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæ¸¡ã•れã¾ã™ã€‚アクティビティãŒã‚‚ã†ä¸€åº¦é–‹å§‹ã•れるã¨ã€Bundle 㯠{@code onCreate()} ã ã‘ã§ãªãã€{@code onStart()} ã®å¾Œã«å‘¼ã³å‡ºã•れる <code>{@link
android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}</code> メソッドã«ã‚‚渡ã•れã€ä¿å­˜ã•れã¦ã„る状態をãã®ã©ã¡ã‚‰ã‹ã¾ãŸã¯ä¸¡æ–¹ã§å¾©å…ƒã§ãã¾ã™ã€‚
</p>
@@ -871,15 +871,15 @@ alt="サービス コールãƒãƒƒã‚¯ã®çŠ¶æ…‹é·ç§»å›³" /></p>
<li><b>フォアグラウンド プロセス</b>ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒãã®æ™‚点ã§è¡Œã£ã¦ã„る作業ã«å¿…è¦ãªãƒ—ロセスã§ã™ã€‚以下ã®ã„ãšã‚Œã‹ã®æ¡ä»¶ã‚’満ãŸã—ã¦ã„るプロセスã¯ã€ãƒ•ォアグラウンド プロセスã¨è¦‹ãªã•れã¾ã™:
<ul>
-<li>ユーザーã¨å¯¾è©±ä¸­ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを実行ã—ã¦ã„る(Activity オブジェクト㮠<code>{@link android.app.Activity#onResume
+<li>ユーザーã¨å¯¾è©±ä¸­ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを実行ã—ã¦ã„る(Activity オブジェクト㮠<code>{@link android.app.Activity#onResume
onResume()}</code> メソッドãŒå‘¼ã³å‡ºã•れã¦ã„る)。</li>
<li><p>ユーザーã¨å¯¾è©±ä¸­ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«ãƒã‚¤ãƒ³ãƒ‰ã•れã¦ã„るサービスを実行ã—ã¦ã„る。</p></li>
-<li><p>ã„ãšã‚Œã‹ã®ãƒ©ã‚¤ãƒ•サイクル コールãƒãƒƒã‚¯ï¼ˆ<code>{@link android.app.Service#onCreate
+<li><p>ã„ãšã‚Œã‹ã®ãƒ©ã‚¤ãƒ•サイクル コールãƒãƒƒã‚¯ï¼ˆ<code>{@link android.app.Service#onCreate
onCreate()}</code>ã€<code>{@link android.app.Service#onStart onStart()}</code>ã€ã¾ãŸã¯ <code>{@link android.app.Service#onDestroy onDestroy()}</code>)を実行ã—ã¦ã„ã‚‹ {@link android.app.Service} ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’ä¿æŒã—ã¦ã„る。</p></li>
-<li><p><code>{@link android.content.BroadcastReceiver#onReceive
+<li><p><code>{@link android.content.BroadcastReceiver#onReceive
onReceive()}</code> メソッドを実行ã—ã¦ã„ã‚‹ {@link android.content.BroadcastReceiver} ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’ä¿æŒã—ã¦ã„る。</p></li>
</ul>
@@ -899,10 +899,10 @@ onReceive()}</code> メソッドを実行ã—ã¦ã„ã‚‹ {@link android.content.Bro
å¯è¦–プロセスã¯ã€éžå¸¸ã«é‡è¦ãªãƒ—ロセスã¨è¦‹ãªã•れã€ã™ã¹ã¦ã®ãƒ•ォアグラウンド プロセスã®å®Ÿè¡Œã‚’ç¶­æŒã™ã‚‹ãŸã‚ã«å¿…è¦ã§ãªã„é™ã‚Šã€å¼·åˆ¶çµ‚了ã•ã›ã‚‰ã‚Œã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。
</p></li>
-<li><p><b>サービス プロセス</b>ã¯ã€<code>{@link android.content.Context#startService startService()}</code> メソッドã§é–‹å§‹ã•れãŸã‚µãƒ¼ãƒ“スを実行ã—ã¦ã„るプロセスã®ã†ã¡ã€ã‚ˆã‚Šé‡è¦åº¦ã®é«˜ã„ 2 ã¤ã®ãƒ¬ãƒ™ãƒ«ã®ã©ã¡ã‚‰ã«ã‚‚該当ã—ãªã„プロセスã§ã™ã€‚サービス プロセスã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«è¦‹ãˆã‚‹ã‚‚ã®ã¨ã®ç›´æŽ¥çš„ãªé–¢ä¿‚ã¯ã‚りã¾ã›ã‚“ãŒã€ãŸã¨ãˆã°ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§ã® MP3 ã®å†ç”Ÿã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãªã©ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæ°—ã«ã‹ã‘ã¦ã„る処ç†ã§ã‚ã‚‹ã“ã¨ãŒä¸€èˆ¬çš„ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€ã™ã¹ã¦ã®ãƒ•ォアグラウンド プロセスã¨å¯è¦–プロセスã«åŠ ãˆã€ã“れらã®ã‚µãƒ¼ãƒ“ス プロセスã®å®Ÿè¡Œã‚’ç¶­æŒã™ã‚‹ã ã‘ã®ãƒ¡ãƒ¢ãƒªãŒç¢ºä¿ã§ãã‚‹é™ã‚Šã€å¼·åˆ¶çµ‚了ã•ã›ã‚‰ã‚Œã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。
+<li><p><b>サービス プロセス</b>ã¯ã€<code>{@link android.content.Context#startService startService()}</code> メソッドã§é–‹å§‹ã•れãŸã‚µãƒ¼ãƒ“スを実行ã—ã¦ã„るプロセスã®ã†ã¡ã€ã‚ˆã‚Šé‡è¦åº¦ã®é«˜ã„ 2 ã¤ã®ãƒ¬ãƒ™ãƒ«ã®ã©ã¡ã‚‰ã«ã‚‚該当ã—ãªã„プロセスã§ã™ã€‚サービス プロセスã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«è¦‹ãˆã‚‹ã‚‚ã®ã¨ã®ç›´æŽ¥çš„ãªé–¢ä¿‚ã¯ã‚りã¾ã›ã‚“ãŒã€ãŸã¨ãˆã°ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§ã® MP3 ã®å†ç”Ÿã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãªã©ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæ°—ã«ã‹ã‘ã¦ã„る処ç†ã§ã‚ã‚‹ã“ã¨ãŒä¸€èˆ¬çš„ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€ã™ã¹ã¦ã®ãƒ•ォアグラウンド プロセスã¨å¯è¦–プロセスã«åŠ ãˆã€ã“れらã®ã‚µãƒ¼ãƒ“ス プロセスã®å®Ÿè¡Œã‚’ç¶­æŒã™ã‚‹ã ã‘ã®ãƒ¡ãƒ¢ãƒªãŒç¢ºä¿ã§ãã‚‹é™ã‚Šã€å¼·åˆ¶çµ‚了ã•ã›ã‚‰ã‚Œã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。
</p></li>
-<li><p><b>ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ プロセス</b>ã¯ã€ãã®æ™‚点ã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰è¦‹ãˆãªã„ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã‚’ä¿æŒã—ã¦ã„る(Activity オブジェクト㮠<code>{@link android.app.Activity#onStop onStop()}</code> メソッドãŒå‘¼ã³å‡ºã•れã¦ã„る)プロセスã§ã™ã€‚ã“れらã®ãƒ—ロセスã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ エクスペリエンスã«ç›´æŽ¥çš„ã«ã¯å½±éŸ¿ã—ã¦ãŠã‚‰ãšã€ãƒ•ォアグラウンドã€å¯è¦–ã€ã‚µãƒ¼ãƒ“ス プロセスã‹ã‚‰ãƒ¡ãƒ¢ãƒªãŒè¦æ±‚ã•れãŸå ´åˆã¯ã„ã¤ã§ã‚‚強制終了ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚é€šå¸¸ã¯æ•°å¤šãã®ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ プロセスãŒå®Ÿè¡Œã•れã¦ã„ã‚‹ãŸã‚ã€ãれらを LRU(least recently used)リストã«ç™»éŒ²ã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒä¸€ç•ªæœ€è¿‘見ãŸã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ãƒ—ãƒ­ã‚»ã‚¹ãŒæœ€å¾Œã«å¼·åˆ¶çµ‚了ã™ã‚‹ã‚ˆã†ãªä»•組ã¿ã«ãªã£ã¦ã„ã¾ã™ã€‚アクティビティã«ãƒ©ã‚¤ãƒ•サイクル ãƒ¡ã‚½ãƒƒãƒ‰ãŒæ­£ã—ã実装ã•れã¦ãŠã‚Šã€ç¾åœ¨ã®çŠ¶æ…‹ãŒæ­£ã—ãä¿å­˜ã•れã¦ã„れã°ã€ãƒ—ロセスを強制終了ã—ã¦ã‚‚ユーザー ã‚¨ã‚¯ã‚¹ãƒšãƒªã‚¨ãƒ³ã‚¹ã«æ‚ªå½±éŸ¿ãŒåŠã¶ã“ã¨ã¯ã‚りã¾ã›ã‚“。
+<li><p><b>ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ プロセス</b>ã¯ã€ãã®æ™‚点ã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰è¦‹ãˆãªã„ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã‚’ä¿æŒã—ã¦ã„る(Activity オブジェクト㮠<code>{@link android.app.Activity#onStop onStop()}</code> メソッドãŒå‘¼ã³å‡ºã•れã¦ã„る)プロセスã§ã™ã€‚ã“れらã®ãƒ—ロセスã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ エクスペリエンスã«ç›´æŽ¥çš„ã«ã¯å½±éŸ¿ã—ã¦ãŠã‚‰ãšã€ãƒ•ォアグラウンドã€å¯è¦–ã€ã‚µãƒ¼ãƒ“ス プロセスã‹ã‚‰ãƒ¡ãƒ¢ãƒªãŒè¦æ±‚ã•れãŸå ´åˆã¯ã„ã¤ã§ã‚‚強制終了ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚é€šå¸¸ã¯æ•°å¤šãã®ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ プロセスãŒå®Ÿè¡Œã•れã¦ã„ã‚‹ãŸã‚ã€ãれらを LRU(least recently used)リストã«ç™»éŒ²ã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒä¸€ç•ªæœ€è¿‘見ãŸã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ãƒ—ãƒ­ã‚»ã‚¹ãŒæœ€å¾Œã«å¼·åˆ¶çµ‚了ã™ã‚‹ã‚ˆã†ãªä»•組ã¿ã«ãªã£ã¦ã„ã¾ã™ã€‚アクティビティã«ãƒ©ã‚¤ãƒ•サイクル ãƒ¡ã‚½ãƒƒãƒ‰ãŒæ­£ã—ã実装ã•れã¦ãŠã‚Šã€ç¾åœ¨ã®çŠ¶æ…‹ãŒæ­£ã—ãä¿å­˜ã•れã¦ã„れã°ã€ãƒ—ロセスを強制終了ã—ã¦ã‚‚ユーザー ã‚¨ã‚¯ã‚¹ãƒšãƒªã‚¨ãƒ³ã‚¹ã«æ‚ªå½±éŸ¿ãŒåŠã¶ã“ã¨ã¯ã‚りã¾ã›ã‚“。
</p></li>
<li><p><b>空ã®ãƒ—ロセス</b>ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªã‚¢ãƒ—リケーション コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’ä¿æŒã—ã¦ã„ãªã„プロセスã§ã™ã€‚ã“ã®ã‚ˆã†ãªãƒ—ロセスを維æŒã—ã¦ãŠã唯一ã®ç†ç”±ã¯ã€ã“れをキャッシュã¨ã—ã¦ä½¿ç”¨ã—ã€æ¬¡å›žã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’実行ã™ã‚‹ã¨ãã®èµ·å‹•時間を短ãã™ã‚‹ãŸã‚ã§ã™ã€‚多ãã®å ´åˆã€ã‚·ã‚¹ãƒ†ãƒ ã¯ã“れらã®ãƒ—ロセスを強制終了ã•ã›ã¦ã€ãƒ—ロセス キャッシュã¨ãã®åŸºç¤Žã¨ãªã‚‹ã‚«ãƒ¼ãƒãƒ« キャッシュã®é–“ã§ã‚·ã‚¹ãƒ†ãƒ  リソース全体ã®ãƒãƒ©ãƒ³ã‚¹ã‚’å–りã¾ã™ã€‚</p></li>
@@ -915,7 +915,7 @@ onReceive()}</code> メソッドを実行ã—ã¦ã„ã‚‹ {@link android.content.Bro
<p>
ã¾ãŸã€ã‚るプロセスã«ä»–ã®ãƒ—ロセスãŒä¾å­˜ã—ã¦ã„ã‚‹ãŸã‚ã«ã€ãã®ãƒ—ロセスã®ãƒ©ãƒ³ã‚¯ãŒå¼•ã上ã’られるå¯èƒ½æ€§ã‚‚ã‚りã¾ã™ã€‚ä»–ã®ãƒ—ロセスã‹ã‚‰ä¾å­˜ã•れã¦ã„るプロセスãŒã€ä¾å­˜ã—ã¦ã„るプロセスよりも低ã„レベルã«ãƒ©ãƒ³ã‚¯ä»˜ã‘ã•れるã“ã¨ã¯ã‚りã¾ã›ã‚“。ãŸã¨ãˆã°ã€ãƒ—ロセス A 内ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ プロãƒã‚¤ãƒ€ã«ãƒ—ロセス B 内ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒä¾å­˜ã—ã¦ã„ã‚‹å ´åˆã‚„ã€ãƒ—ロセス A 内ã®ã‚µãƒ¼ãƒ“スãŒãƒ—ロセス B 内ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã«ãƒã‚¤ãƒ³ãƒ‰ã•れã¦ã„ã‚‹å ´åˆã€ãƒ—ロセス A ã¯å¸¸ã«ãƒ—ロセス B よりã¯é‡è¦åº¦ãŒé«˜ã„ã¨è¦‹ãªã•れã¾ã™ã€‚
-</p>
+</p>
<p>
サービスを実行ã—ã¦ã„るプロセスã¯ã€ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ アクティビティを実行ã—ã¦ã„るプロセスよりも高ãランク付ã‘ã•れã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€æ™‚é–“ã®ã‹ã‹ã‚‹å‡¦ç†ã‚’実行ã™ã‚‹å ´åˆã€ç‰¹ã«ãã®å‡¦ç†ãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティよりも長ãç¶šãよã†ãªå ´åˆã¯ã€å˜ã«ã‚¹ãƒ¬ãƒƒãƒ‰ã‚’生æˆã™ã‚‹ã®ã§ã¯ãªãã€ãã®å‡¦ç†ç”¨ã®ã‚µãƒ¼ãƒ“スを開始ã™ã‚‹ã“ã¨ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚ãŸã¨ãˆã°ã€ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§éŸ³æ¥½ã‚’å†ç”Ÿã™ã‚‹å ´åˆã‚„ã€ã‚«ãƒ¡ãƒ©ã§æ’®å½±ã—ãŸå†™çœŸã‚’ Web サイトã«ã‚¢ãƒƒãƒ—ロードã™ã‚‹å ´åˆãªã©ã¯ã“れã«å½“ãŸã‚Šã¾ã™ã€‚サービスを使用ã™ã‚‹ã“ã¨ã§ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒã©ã®ã‚ˆã†ãªçжæ³ã«ã‚ã£ã¦ã‚‚ã€å‡¦ç†ã®é‡è¦åº¦ã¨ã—ã¦ã€Œã‚µãƒ¼ãƒ“ス プロセスã€ãƒ¬ãƒ™ãƒ«ä»¥ä¸Šã‚’ç¶­æŒã§ãã¾ã™ã€‚<a href="#broadlife">ブロードキャスト レシーãƒã®ãƒ©ã‚¤ãƒ•サイクル</a>ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã‚‚説明ã—ã¾ã—ãŸãŒã€ãƒ–ロードキャスト レシーãƒã«ãŠã„ã¦ã‚‚ã“れã¨åŒã˜ç†ç”±ã§ã€å‡¦ç†ã«æ™‚é–“ãŒã‹ã‹ã‚‹å ´åˆã¯ã‚¹ãƒ¬ãƒƒãƒ‰ã§ã¯ãªãサービスを使用ã™ã‚‹ã“ã¨ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚
diff --git a/docs/html-intl/intl/ja/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/ja/guide/topics/manifest/manifest-intro.jd
index 7d9e8ac588f8..a0041de2d06a 100644
--- a/docs/html-intl/intl/ja/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/ja/guide/topics/manifest/manifest-intro.jd
@@ -38,10 +38,10 @@ page.title=アプリ マニフェスト
ã“れらã®å®£è¨€ã«ã‚ˆã£ã¦ã€Android システムã¯ã€ã©ã‚“ãªã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒã‚りã€ãれらã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒã©ã®ã‚ˆã†ãªæ¡ä»¶ã§èµ·å‹•ã•れるã®ã‹ã‚’把æ¡ã§ãã¾ã™ã€‚
</li>
-<li>アプリケーション コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’ホストã™ã‚‹ãƒ—ロセスを決定ã—ã¾ã™ã€‚</li>
+<li>アプリケーション コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’ホストã™ã‚‹ãƒ—ロセスを決定ã—ã¾ã™ã€‚</li>
<li>アプリケーション㌠API ã®ä¿è­·ã•れãŸéƒ¨åˆ†ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸã‚Šä»–ã®ã‚¢ãƒ—リケーションã¨ã‚„りå–りã—ãŸã‚Šã™ã‚‹éš›ã«å¿…è¦ã¨ãªã‚‹ãƒ‘ーミッションを宣言ã—ã¾ã™ã€‚
-</li>
+</li>
<li>ä»–ã®ã‚¢ãƒ—リケーションãŒã‚¢ãƒ—リケーションã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¨ã‚„りå–りã™ã‚‹ãŸã‚ã«å¿…è¦ãªãƒ‘ーミッションを宣言ã—ã¾ã™ã€‚
</li>
@@ -66,7 +66,7 @@ page.title=アプリ マニフェスト
エレメントã®è©³ç´°ã‚’見るã«ã¯ã€å›³ä¸­ã€å›³ã®ä¸‹ã«ã‚るアルファベット順ã®ã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆä¸€è¦§ã€ã¾ãŸã¯ãã®ä»–ã®èª¬æ˜Žæ–‡ã«è¡¨ç¤ºã•れã¦ã„るエレメントåをクリックã—ã¦ãã ã•ã„。
-
+
</p>
<pre>
@@ -128,7 +128,7 @@ page.title=アプリ マニフェスト
<p>
以下ã¯ã€ãƒžãƒ‹ãƒ•ェスト ファイルã«å«ã‚€ã“ã¨ãŒã§ãã‚‹ã™ã¹ã¦ã®ã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã‚’アルファベット順ã«ä¸¦ã¹ãŸã‚‚ã®ã§ã™ã€‚
使用ãŒè¨±å¯ã•れã¦ã„ã‚‹ã®ã¯ã“れらã®ã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã®ã¿ã§ã™ã€‚独自ã®ã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã‚„属性ã¯è¿½åŠ ã§ãã¾ã›ã‚“。
-
+
</p>
<p style="margin-left: 2em">
@@ -158,7 +158,7 @@ page.title=アプリ マニフェスト
</p>
-
+
<h2 id="filec">ファイルã®è¦å‰‡</h2>
@@ -218,7 +218,7 @@ page.title=アプリ マニフェスト
-
+
<p>
サブクラスを定義ã™ã‚‹å ´åˆã¯ã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ クラス({@link android.app.Activity}ã€{@link android.app.Service}ã€{@link android.content.BroadcastReceiver}ã€{@link android.content.ContentProvider})ã§ã„ã¤ã‚‚行ã†ã‚ˆã†ã«ã€ã‚µãƒ–クラス㯠{@code name} 属性ã§å®£è¨€ã•れã¾ã™ã€‚
@@ -244,7 +244,7 @@ page.title=アプリ マニフェスト
-以下ã¯ã€ä¸Šè¨˜ã®ã‚‚ã®ã¨åŒã˜å†…容ã§ã™ã€‚
+以下ã¯ã€ä¸Šè¨˜ã®ã‚‚ã®ã¨åŒã˜å†…容ã§ã™ã€‚
</p>
<pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -399,7 +399,7 @@ Android ã¯ã€ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã«å¯¾å¿œã™ã‚‹é©åˆ‡ãªã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’æœ
<p>
パーミッションã¯ã€ã‚³ãƒ¼ãƒ‰ã®ä¸€éƒ¨ã‚„端末上ã®ãƒ‡ãƒ¼ã‚¿ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’制é™ã™ã‚‹æ©Ÿèƒ½ã‚’æä¾›ã—ã¾ã™ã€‚<i></i>
誤用や悪用ã«ã‚ˆã£ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®åˆ©ç”¨ã‚’妨ã’ãŸã‚Šæœ‰å®³ãªä½œç”¨ã‚’ã‚‚ãŸã‚‰ã™æã‚Œã®ã‚ã‚‹é‡è¦ãªãƒ‡ãƒ¼ã‚¿ã‚„コードをä¿è­·ã—ãŸã‚Šã™ã‚‹ãŸã‚ã®åˆ¶é™ã‚’設定ã—ã¾ã™ã€‚
-
+
</p>
<p>
@@ -421,13 +421,13 @@ Android ã¯ã€ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã«å¯¾å¿œã™ã‚‹é©åˆ‡ãªã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’æœ
アプリケーションãŒãƒ‘ーミッションã«ã‚ˆã‚Šä¿è­·ã•れã¦ã„る機能ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’å¿…è¦ã¨ã—ã¦ã„ã‚‹å ´åˆã¯ã€<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> エレメントをマニフェスト ファイルã«è¨˜è¿°ã—ã€ãã®ãƒ‘ーミッションãŒå¿…è¦ã§ã‚ã‚‹ã“ã¨ã‚’宣言ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-ã“れã«ã‚ˆã£ã¦ã€ã‚¢ãƒ—リケーションãŒç«¯æœ«ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れãŸéš›ã«ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ©ãƒ¼ã¯ã€ã‚¢ãƒ—リケーションã®è¨¼æ˜Žæ›¸ã«ç½²åã—ãŸé–¢ä¿‚機関を確èªã—ã€å ´åˆã«ã‚ˆã£ã¦ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å°‹ã­ã‚‹ã“ã¨ã§ã€è¦æ±‚ã•れãŸãƒ‘ーミッションを付与ã™ã‚‹ã‹ã©ã†ã‹ã‚’決定ã—ã¾ã™ã€‚
-
-
+ã“れã«ã‚ˆã£ã¦ã€ã‚¢ãƒ—リケーションãŒç«¯æœ«ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れãŸéš›ã«ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ©ãƒ¼ã¯ã€ã‚¢ãƒ—リケーションã®è¨¼æ˜Žæ›¸ã«ç½²åã—ãŸé–¢ä¿‚機関を確èªã—ã€å ´åˆã«ã‚ˆã£ã¦ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å°‹ã­ã‚‹ã“ã¨ã§ã€è¦æ±‚ã•れãŸãƒ‘ーミッションを付与ã™ã‚‹ã‹ã©ã†ã‹ã‚’決定ã—ã¾ã™ã€‚
+
+
パーミッションãŒä»˜ä¸Žã•れるã¨ã€ã‚¢ãƒ—リケーションã¯ä¿è­·ã•ã‚ŒãŸæ©Ÿèƒ½ã‚’使用ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
パーミッションãŒä»˜ä¸Žã•れãªã‹ã£ãŸå ´åˆã¯ã€ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¯æ©Ÿèƒ½ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããšã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€šçŸ¥ãŒè¡¨ç¤ºã•れるã“ã¨ã‚‚ã‚りã¾ã›ã‚“。
-
+
</p>
<p>
@@ -464,7 +464,7 @@ Android ã«ã‚ˆã‚Šå®šç¾©ã•れã¦ã„るパーミッション({@link android.Man
アプリケーション自身ã«ã‚ˆã£ã¦ä¿è­·ãŒè¨­å®šã•れã¦ã„ã‚‹å ´åˆã§ã‚‚ã€ã‚¢ãƒ—リケーションã®ä»–ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒä¿è­·ã•れãŸã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを起動ã™ã‚‹ãŸã‚ã«ã€ãã®ä½¿ç”¨ã‚’è¦æ±‚ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-
+
</p>
<p>
@@ -474,7 +474,7 @@ Android ã«ã‚ˆã‚Šå®šç¾©ã•れã¦ã„るパーミッション({@link android.Man
ãã®å ´åˆã‚‚ <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> ã§ãã®ä½¿ç”¨ã‚’è¦æ±‚ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-
+
</p>
<p>
diff --git a/docs/html-intl/intl/ja/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/ja/guide/topics/providers/calendar-provider.jd
index 7b97c3083341..46409f9ff34e 100644
--- a/docs/html-intl/intl/ja/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/ja/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@ page.title=カレンダー プロãƒã‚¤ãƒ€
<li><a href="#intent-view">インテントを使用ã—ãŸã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ データã®å‚ç…§</a></li>
</ol>
</li>
-
+
<li><a href="#sync-adapter">åŒæœŸã‚¢ãƒ€ãƒ—ã‚¿</a></li>
</ol>
@@ -113,14 +113,14 @@ URI ã®å½¢å¼ã¯ <code><em>&lt;class&gt;</em>.CONTENT_URI</code> ã§ã™ã€‚
</tr>
<tr>
<td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-
+
<td>ã“ã®ãƒ†ãƒ¼ãƒ–ルã¯ã€è©²å½“ã™ã‚‹ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼å›ºæœ‰ã®æƒ…å ±ã‚’ä¿æŒã—ã¾ã™ã€‚
å„行ã«ã¯ã€åå‰ã€è‰²ã€åŒæœŸæƒ…å ±ãªã©ã€1 ã¤ã®ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã«é–¢ã™ã‚‹è©³ç´°ãŒæ ¼ç´ã•れã¾ã™ã€‚
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Events}</td>
-
+
<td>ã“ã®ãƒ†ãƒ¼ãƒ–ルã¯ã€è©²å½“ã™ã‚‹ã‚¤ãƒ™ãƒ³ãƒˆå›ºæœ‰ã®æƒ…å ±ã‚’ä¿æŒã—ã¾ã™ã€‚
å„行ã«ã¯ã€1 ã¤ã®ã‚¤ãƒ™ãƒ³ãƒˆã«é–¢ã™ã‚‹æƒ…å ±ãŒæ ¼ç´ã•れã¾ã™&mdash;イベントã®ã‚¿ã‚¤ãƒˆãƒ«ã€å ´æ‰€ã€é–‹å§‹æ™‚刻ã€çµ‚了時刻ãªã©ãŒè©²å½“ã—ã¾ã™ã€‚
@@ -132,7 +132,7 @@ URI ã®å½¢å¼ã¯ <code><em>&lt;class&gt;</em>.CONTENT_URI</code> ã§ã™ã€‚
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances}</td>
-
+
<td>ã“ã®ãƒ†ãƒ¼ãƒ–ルã¯ã€ã‚るイベントã®ç™ºç”Ÿã”ã¨ã®é–‹å§‹æ™‚刻ã¨çµ‚äº†æ™‚åˆ»ã‚’ä¿æŒã—ã¾ã™ã€‚
å„行ã¯ã€ã‚¤ãƒ™ãƒ³ãƒˆã®ç™ºç”Ÿ 1 回を表ã—ã¾ã™ã€‚
å˜ç™ºã‚¤ãƒ™ãƒ³ãƒˆã«ã¯ã€ã‚¤ãƒ™ãƒ³ãƒˆã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒ 1 対 1 ã§å¯¾å¿œã—ã¾ã™ã€‚
@@ -141,7 +141,7 @@ URI ã®å½¢å¼ã¯ <code><em>&lt;class&gt;</em>.CONTENT_URI</code> ã§ã™ã€‚
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Attendees}</td>
-
+
<td>ã“ã®ãƒ†ãƒ¼ãƒ–ルã¯ã€ã‚¤ãƒ™ãƒ³ãƒˆã®å‚åŠ è€…ï¼ˆã‚²ã‚¹ãƒˆï¼‰ã®æƒ…å ±ã‚’ä¿æŒã—ã¾ã™ã€‚
å„行ã¯ã€1 回ã®ã‚¤ãƒ™ãƒ³ãƒˆã® 1 人ã®ã‚²ã‚¹ãƒˆã‚’表ã—ã¾ã™ã€‚
ゲストã®ã‚¿ã‚¤ãƒ—ã¨ã€ã‚²ã‚¹ãƒˆã®ã‚¤ãƒ™ãƒ³ãƒˆã¸ã®å‡ºæ¬ ã®å›žç­”を指定ã—ã¾ã™ã€‚
@@ -149,7 +149,7 @@ URI ã®å½¢å¼ã¯ <code><em>&lt;class&gt;</em>.CONTENT_URI</code> ã§ã™ã€‚
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Reminders}</td>
-
+
<td>ã“ã®ãƒ†ãƒ¼ãƒ–ルã¯ã€ã‚¢ãƒ©ãƒ¼ãƒˆã‚„通知ã®ãƒ‡ãƒ¼ã‚¿ã‚’ä¿æŒã—ã¾ã™ã€‚
å„行ã¯ã€1 回ã®ã‚¤ãƒ™ãƒ³ãƒˆã® 1 ã¤ã®ã‚¢ãƒ©ãƒ¼ãƒˆã‚’表ã—ã¾ã™ã€‚1 ã¤ã®ã‚¤ãƒ™ãƒ³ãƒˆãŒè¤‡æ•°ã®ãƒªãƒžã‚¤ãƒ³ãƒ€ãƒ¼ã‚’æŒã¤ã“ã¨ãŒã§ãã¾ã™ã€‚
1 イベントã‚ãŸã‚Šã®æœ€å¤§ãƒªãƒžã‚¤ãƒ³ãƒ€ãƒ¼æ•°ã¯ {@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS} ã§æŒ‡å®šã•ã‚Œã€æŒ‡å®šã•れãŸã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã‚’所有ã™ã‚‹åŒæœŸã‚¢ãƒ€ãƒ—ã‚¿ã«ã‚ˆã£ã¦è¨­å®šã•れã¾ã™ã€‚
@@ -159,7 +159,7 @@ URI ã®å½¢å¼ã¯ <code><em>&lt;class&gt;</em>.CONTENT_URI</code> ã§ã™ã€‚
リマインダーã¯ã€ã‚¤ãƒ™ãƒ³ãƒˆé–‹å§‹å‰ã®åˆ†å˜ä½ã§æŒ‡å®šã•れã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«æ³¨æ„å–šèµ·ã™ã‚‹æ‰‹æ®µã‚’ç¤ºã™æƒ…å ±ã‚’ä¿æŒã—ã¾ã™ã€‚
</td>
</tr>
-
+
</table>
<p>カレンダー プロãƒã‚¤ãƒ€ API ã¯ã€æŸ”軟ã§åŠ¹æžœçš„ãªè¨­è¨ˆã«ãªã£ã¦ã„ã¾ã™ã€‚ã§ã™ãŒåŒæ™‚ã«ã€ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã¨ã£ã¦ä½¿ã„ã‚„ã™ãã™ã‚‹ã“ã¨ã‚„ã€ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã¨ãã®ãƒ‡ãƒ¼ã‚¿ã®æ•´åˆæ€§ã‚’ä¿è­·ã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚
@@ -229,7 +229,7 @@ URI ã®å½¢å¼ã¯ <code><em>&lt;class&gt;</em>.CONTENT_URI</code> ã§ã™ã€‚
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-
+
<td>カレンダーãŒè¡¨ç¤ºå¯¾è±¡ã¨ã—ã¦é¸æŠžã•れã¦ã„ã‚‹ã‹ã©ã†ã‹ã‚’示ã™ãƒ–ール値。値 0 ã¯ã€ã“ã®ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã«é–¢é€£ä»˜ã‘られã¦ã„るイベントを表示ã—ãªã„ã“ã¨ã‚’示ã—ã¾ã™ã€‚
値 1 ã¯ã€ã“ã®ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã«é–¢é€£ä»˜ã‘られã¦ã„るイベントを表示ã™ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚
@@ -240,7 +240,7 @@ URI ã®å½¢å¼ã¯ <code><em>&lt;class&gt;</em>.CONTENT_URI</code> ã§ã™ã€‚
</tr>
<tr>
<td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-
+
<td>ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã‚’åŒæœŸã—ã¦ãã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’ç«¯æœ«ã«æ ¼ç´ã™ã‚‹ã‹ã©ã†ã‹ã‚’示ã™ãƒ–ール値。
値 0 ã¯ã€ã“ã®ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã‚’åŒæœŸã›ãšã€ã‚¤ãƒ™ãƒ³ãƒˆã‚’ç«¯æœ«ã«æ ¼ç´ã—ãªã„ã“ã¨ã‚’指定ã—ã¾ã™ã€‚
値 1 ã¯ã€ã“ã®ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’åŒæœŸã—ã€ã‚¤ãƒ™ãƒ³ãƒˆã‚’ç«¯æœ«ã«æ ¼ç´ã™ã‚‹ã“ã¨ã‚’指定ã—ã¾ã™ã€‚
@@ -268,13 +268,13 @@ public static final String[] EVENT_PROJECTION = new String[] {
Calendars.CALENDAR_DISPLAY_NAME, // 2
Calendars.OWNER_ACCOUNT // 3
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
-
+
<div class="sidebox-wrapper"> <div class="sidebox"> <h3>ACCOUNT_TYPE ã‚’å«ã‚ã‚‹å¿…è¦ãŒã‚ã‚‹ç†ç”±
</h3> <p>{@link android.provider.CalendarContract.Calendars#ACCOUNT_NAME Calendars.ACCOUNT_NAME} ã«ã‚¯ã‚¨ãƒªã™ã‚‹å ´åˆã¯ã€ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã« {@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE} ã‚‚å«ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
@@ -289,7 +289,7 @@ private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
-</p> </div> </div>
+</p> </div> </div>
<p> ã“ã®ä¾‹ã®æ¬¡ã®éƒ¨åˆ†ã§ã¯ã€ã‚¯ã‚¨ãƒªã‚’作æˆã—ã¾ã™ã€‚ã‚¯ã‚¨ãƒªã®æ¡ä»¶ã¯ selection ã«æŒ‡å®šã—ã¦ã„ã¾ã™ã€‚
@@ -308,38 +308,38 @@ private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
<pre>// Run query
Cursor cur = null;
ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+Uri uri = Calendars.CONTENT_URI;
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+ Calendars.ACCOUNT_TYPE + " = ?) AND ("
+ Calendars.OWNER_ACCOUNT + " = ?))";
String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
- "sampleuser@gmail.com"};
-// Submit the query and get a Cursor object back.
+ "sampleuser@gmail.com"};
+// Submit the query and get a Cursor object back.
cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
<p>次ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ã‚«ãƒ¼ã‚½ãƒ«ã‚’使用ã—ã¦çµæžœã‚»ãƒƒãƒˆã‚’ステップå˜ä½ã§ç§»å‹•ã—ã¾ã™ã€‚例ã®å†’é ­ã§è¨­å®šã—ãŸå®šæ•°ã‚’使用ã—ã¦å„フィールドã®å€¤ã‚’è¿”ã—ã¾ã™ã€‚
</p>
-
+
<pre>// Use the cursor to step through the returned records
while (cur.moveToNext()) {
long calID = 0;
String displayName = null;
String accountName = null;
String ownerName = null;
-
+
// Get the field values
calID = cur.getLong(PROJECTION_ID_INDEX);
displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
-
+
// Do something with the values...
...
}
</pre>
-
+
<h3 id="modify-calendar">カレンダーã®å¤‰æ›´</h3>
<p>カレンダーã®ã‚¢ãƒƒãƒ—デートを実行ã™ã‚‹å ´åˆã€ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã® {@link android.provider.BaseColumns#_ID} ã‚’ã€URI({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}ï¼‰ã®æœ«å°¾ã«è¿½åŠ ã•れ㟠ID ã¨ã—ã¦ã€ã¾ãŸã¯æœ€åˆã® selection é …ç›®ã¨ã—ã¦æŒ‡å®šã§ãã¾ã™ã€‚
@@ -434,7 +434,7 @@ Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
-
+
<td><a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a> å½¢å¼ã§ã®ã‚¤ãƒ™ãƒ³ãƒˆã®æœŸé–“。ãŸã¨ãˆã°ã€<code>&quot;PT1H&quot;</code> ã¨ã„ã†å€¤ã¯ã‚¤ãƒ™ãƒ³ãƒˆãŒ 1 時間ã§ã‚ã‚‹ã“ã¨ã€<code>&quot;P2W&quot;</code> ã¨ã„ã†å€¤ã¯æœŸé–“㌠2 週間ã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚
@@ -444,24 +444,24 @@ Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
-
+
<td>値 1 ã¯ã€ãã®ã‚¤ãƒ™ãƒ³ãƒˆãŒãƒ­ãƒ¼ã‚«ãƒ«ã®ã‚¿ã‚¤ãƒ ã‚¾ãƒ¼ãƒ³ã§å®šç¾©ã•れãŸçµ‚日をå ã‚ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚
値 0 ã¯ã€1 æ—¥ã®ã©ã“ã‹ã§å§‹ã¾ã£ã¦çµ‚ã‚る定例ã®ã‚¤ãƒ™ãƒ³ãƒˆã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚
</td>
-
+
</tr>
-
-
+
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
-
+
<td>イベント形å¼ã®ç¹°ã‚Šè¿”ã—発生ルール。ãŸã¨ãˆã°ã€<code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code> ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
ãã®ä»–ã®ä¾‹ã«ã¤ã„ã¦ã¯ã€<a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">ã“ã¡ã‚‰</a>ã‚’ã”覧ãã ã•ã„。
</td>
-
+
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
<td>イベントã®ç¹°ã‚Šè¿”ã—発生日。通常ã€{@link android.provider.CalendarContract.EventsColumns#RDATE} 㯠{@link android.provider.CalendarContract.EventsColumns#RRULE} ã¨çµ„ã¿åˆã‚ã›ã¦ã€ç¹°ã‚Šè¿”ã—発生全体を定義ã™ã‚‹ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚
@@ -470,13 +470,13 @@ Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
詳細ã«ã¤ã„ã¦ã¯ã€<a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">RFC5545 ã®ä»•様</a>ã‚’ã”覧ãã ã•ã„。</td>
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
-
+
<td>ã“ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’埋ã¾ã£ã¦ã„ã‚‹æ™‚é–“ã«æ•°ãˆã‚‹ã‹ã€ãれã¨ã‚‚スケジュールã®ã‚„り直ã—ãŒåˆ©ãç©ºãæ™‚é–“ã¨ã¿ãªã™ã‹ã€‚
</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
@@ -514,11 +514,11 @@ Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
</li>
-
+
<li>繰り返ã•れãªã„イベントã«ã¯ã€{@link android.provider.CalendarContract.EventsColumns#DTEND} ã‚’å«ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
</li>
-
-
+
+
<li>繰り返ã•れるイベントã«ã¯ã€{@link android.provider.CalendarContract.EventsColumns#RRULE} 㨠{@link android.provider.CalendarContract.EventsColumns#RDATE} ã«åŠ ãˆã¦ {@link android.provider.CalendarContract.EventsColumns#DURATION} ã‚’å«ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
@@ -528,7 +528,7 @@ Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
</li>
-
+
</ul>
<p>ã‚¤ãƒ™ãƒ³ãƒˆã®æŒ¿å…¥ã®ä¾‹ã‚’次ã«ç¤ºã—ã¾ã™ã€‚ç°¡æ½”ã«ã™ã‚‹ãŸã‚ã€ã“ã®ä¾‹ã¯ UI スレッドã§å®Ÿè¡Œã•れã¦ã„ã¾ã™ã€‚
@@ -539,8 +539,8 @@ Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
<pre>
long calID = 3;
-long startMillis = 0;
-long endMillis = 0;
+long startMillis = 0;
+long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@ Uri uri = cr.insert(Events.CONTENT_URI, values);
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
-//
+//
// ... do something with event ID
//
//</pre>
@@ -598,7 +598,7 @@ ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
Uri updateUri = null;
// The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;);
+values.put(Events.TITLE, &quot;Kickboxing&quot;);
updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().update(updateUri, values, null, null);
Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows); </pre>
@@ -625,7 +625,7 @@ ContentValues values = new ContentValues();
Uri deleteUri = null;
deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().delete(deleteUri, null, null);
-Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
</pre>
<h2 id="attendees">Attendees テーブル</h2>
@@ -637,7 +637,7 @@ Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
ã“ã® {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} ã¯ç‰¹å®šã®ã‚¤ãƒ™ãƒ³ãƒˆã® {@link android.provider.BaseColumns#_ID} ã¨ä¸€è‡´ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-</p>
+</p>
<p>次ã®è¡¨ã«ã€æ›¸ãè¾¼ã¿å¯èƒ½ãªãƒ•ィールドを示ã—ã¾ã™ã€‚
æ–°ã—ã„å‚加者を挿入ã™ã‚‹éš›ã«ã¯ã€<code>ATTENDEE_NAME</code> を除ãã™ã¹ã¦ã‚’å«ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
@@ -801,18 +801,18 @@ Instances ãƒ†ãƒ¼ãƒ–ãƒ«ã¯æ›¸ãè¾¼ã¿ã§ãã¾ã›ã‚“。イベントã®ç™ºç”Ÿã‚’ã
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
-
+
<td>インスタンスã®ã€ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã®ã‚¿ã‚¤ãƒ ã‚¾ãƒ¼ãƒ³ã«ãŠã‘るユリウス暦ã§ã®çµ‚了日。
-
-
+
+
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
-
+
<td>カレンダーã®ã‚¿ã‚¤ãƒ ã‚¾ãƒ¼ãƒ³ã«ãŠã‘ã‚‹åˆå‰é›¶æ™‚を基準ã«ã—ãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®çµ‚了分。
</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
@@ -820,16 +820,16 @@ Instances ãƒ†ãƒ¼ãƒ–ãƒ«ã¯æ›¸ãè¾¼ã¿ã§ãã¾ã›ã‚“。イベントã®ç™ºç”Ÿã‚’ã
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
- <td>インスタンスã®ã€ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã®ã‚¿ã‚¤ãƒ ã‚¾ãƒ¼ãƒ³ã«ãŠã‘るユリウス暦ã§ã®é–‹å§‹æ—¥ã€‚
+ <td>インスタンスã®ã€ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã®ã‚¿ã‚¤ãƒ ã‚¾ãƒ¼ãƒ³ã«ãŠã‘るユリウス暦ã§ã®é–‹å§‹æ—¥ã€‚
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-
+
<td>カレンダーã®ã‚¿ã‚¤ãƒ ã‚¾ãƒ¼ãƒ³ã«ãŠã‘ã‚‹åˆå‰é›¶æ™‚を基準ã«ã—ãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®é–‹å§‹åˆ†ã€‚
-
+
</td>
-
+
</tr>
</table>
@@ -853,7 +853,7 @@ public static final String[] INSTANCE_PROJECTION = new String[] {
Instances.BEGIN, // 1
Instances.TITLE // 2
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_BEGIN_INDEX = 1;
@@ -868,7 +868,7 @@ long startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2011, 10, 24, 8, 0);
long endMillis = endTime.getTimeInMillis();
-
+
Cursor cur = null;
ContentResolver cr = getContentResolver();
@@ -883,28 +883,28 @@ ContentUris.appendId(builder, startMillis);
ContentUris.appendId(builder, endMillis);
// Submit the query
-cur = cr.query(builder.build(),
- INSTANCE_PROJECTION,
- selection,
- selectionArgs,
+cur = cr.query(builder.build(),
+ INSTANCE_PROJECTION,
+ selection,
+ selectionArgs,
null);
-
+
while (cur.moveToNext()) {
String title = null;
long eventID = 0;
- long beginVal = 0;
-
+ long beginVal = 0;
+
// Get the field values
eventID = cur.getLong(PROJECTION_ID_INDEX);
beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
title = cur.getString(PROJECTION_TITLE_INDEX);
-
- // Do something with the values.
- Log.i(DEBUG_TAG, "Event: " + title);
+
+ // Do something with the values.
+ Log.i(DEBUG_TAG, "Event: " + title);
Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(beginVal);
+ calendar.setTimeInMillis(beginVal);
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
- Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
+ Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
}
}</pre>
@@ -924,7 +924,7 @@ while (cur.moveToNext()) {
<td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
URI ã¯ã€{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI} を使用ã—ã¦ã‚‚å‚ç…§ã§ãã¾ã™ã€‚
ã“ã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã®ä½¿ç”¨ä¾‹ã«ã¤ã„ã¦ã¯ã€<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">インテントを使用ã—ãŸã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ データã®å‚ç…§</a>ã‚’ã”覧ãã ã•ã„。
-
+
</td>
<td><code>&lt;ms_since_epoch&gt;</code> ã«æŒ‡å®šã•ã‚ŒãŸæ™‚刻ã§ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã‚’é–‹ãã¾ã™ã€‚</td>
@@ -935,11 +935,11 @@ while (cur.moveToNext()) {
</td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
+
URI ã¯ã€{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} を使用ã—ã¦ã‚‚å‚ç…§ã§ãã¾ã™ã€‚
ã“ã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã®ä½¿ç”¨ä¾‹ã«ã¤ã„ã¦ã¯ã€<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">インテントを使用ã—ãŸã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ データã®å‚ç…§</a>ã‚’ã”覧ãã ã•ã„。
-
+
</td>
<td><code>&lt;event_id&gt;</code> ã§æŒ‡å®šã•れãŸã‚¤ãƒ™ãƒ³ãƒˆã‚’å‚ç…§ã—ã¾ã™ã€‚</td>
@@ -952,12 +952,12 @@ while (cur.moveToNext()) {
<tr>
<td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
+
URI ã¯ã€{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} を使用ã—ã¦ã‚‚å‚ç…§ã§ãã¾ã™ã€‚
ã“ã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã®ä½¿ç”¨ä¾‹ã«ã¤ã„ã¦ã¯ã€<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">インテントを使用ã—ãŸã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ データã®ç·¨é›†</a>ã‚’ã”覧ãã ã•ã„。
-
-
+
+
</td>
<td><code>&lt;event_id&gt;</code> ã§æŒ‡å®šã•れãŸã‚¤ãƒ™ãƒ³ãƒˆã‚’編集ã—ã¾ã™ã€‚</td>
@@ -972,11 +972,11 @@ while (cur.moveToNext()) {
<br>
{@link android.content.Intent#ACTION_INSERT INSERT} </td>
<td><p><code>content://com.android.calendar/events</code></p>
-
+
URI ã¯ã€{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} を使用ã—ã¦ã‚‚å‚ç…§ã§ãã¾ã™ã€‚
ã“ã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã®ä½¿ç”¨ä¾‹ã«ã¤ã„ã¦ã¯ã€<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">インテントを使用ã—ãŸã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ ãƒ‡ãƒ¼ã‚¿ã®æŒ¿å…¥</a>ã‚’ã”覧ãã ã•ã„。
-
+
</td>
<td>イベントを作æˆã—ã¾ã™ã€‚</td>
@@ -996,7 +996,7 @@ while (cur.moveToNext()) {
<td>イベントã®åå‰ã€‚</td>
</tr>
<tr>
-
+
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}
</td>
<td>イベントã®é–‹å§‹æ™‚刻(エãƒãƒƒã‚¯ã‹ã‚‰ã®ãƒŸãƒªç§’å˜ä½ï¼‰ã€‚</td>
@@ -1004,25 +1004,25 @@ while (cur.moveToNext()) {
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}
</td>
-
+
<td>イベントã®çµ‚了時刻(エãƒãƒƒã‚¯ã‹ã‚‰ã®ãƒŸãƒªç§’å˜ä½ï¼‰ã€‚</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY CalendarContract.EXTRA_EVENT_ALL_DAY}
</td>
-
+
<td>イベントãŒçµ‚æ—¥ã‹ã©ã†ã‹ã‚’示ã™ãƒ–ール値。使用ã§ãる値㯠<code>true</code> ã¾ãŸã¯ <code>false</code> ã§ã™ã€‚
</td> </tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION Events.EVENT_LOCATION}
</td>
-
+
<td>イベントã®å ´æ‰€ã€‚</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION Events.DESCRIPTION}
</td>
-
+
<td>イベントã®èª¬æ˜Žã€‚</td>
</tr>
<tr>
@@ -1039,16 +1039,16 @@ while (cur.moveToNext()) {
<td>
{@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL Events.ACCESS_LEVEL}
</td>
-
+
<td>イベントãŒå…¬é–‹ã‹éžå…¬é–‹ã‹ã€‚</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY Events.AVAILABILITY}
</td>
-
+
<td>ã“ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’埋ã¾ã£ã¦ã„ã‚‹æ™‚é–“ã«æ•°ãˆã‚‹ã‹ã€ãれã¨ã‚‚スケジュールã®ã‚„り直ã—ãŒåˆ©ãç©ºãæ™‚é–“ã¨ã¿ãªã™ã‹ã€‚</td>
-
-</table>
+
+</table>
<p>次ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ã“れらã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆä½¿ç”¨æ–¹æ³•を説明ã—ã¾ã™ã€‚</p>
@@ -1059,14 +1059,14 @@ while (cur.moveToNext()) {
</p>
-
+
<p>ã“ã®ã‚¢ãƒ—ローãƒã®ã‚¢ãƒ—リケーションをユーザーãŒå®Ÿè¡Œã™ã‚‹ã¨ã€ã‚¢ãƒ—リケーションã«ã‚ˆã£ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã«èª˜å°Žã•れイベントを追加ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
{@link android.content.Intent#ACTION_INSERT INSERT} インテントã¯ã€è¿½åŠ ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’ä½¿ç”¨ã—ã¦ã€ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã«æ ¼ç´ã•れã¦ã„る詳細情報をフォームã«è‡ªå‹•入力ã—ã¾ã™ã€‚
ãれã«å¯¾ã—ã¦ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã‚¤ãƒ™ãƒ³ãƒˆã®ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã€å¿…è¦ã«å¿œã˜ãŸã‚¤ãƒ™ãƒ³ãƒˆã®ç·¨é›†ã€ã‚¤ãƒ™ãƒ³ãƒˆã®ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã¸ã®ä¿å­˜ãŒã§ãã¾ã™ã€‚
</p>
-
+
<p>次ã«ç¤ºã™ã®ã¯ã€2012 å¹´ 1 月 19 æ—¥ã®åˆå‰ 7:30 ã‹ã‚‰ åˆå‰ 8:30 ã¾ã§ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’スケジュールã™ã‚‹ã‚³ãƒ¼ãƒ‰ スニペットã§ã™ã€‚
@@ -1075,7 +1075,7 @@ while (cur.moveToNext()) {
<ul>
<li>URI ã¨ã—㦠{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} を指定ã—ã¦ã„ã¾ã™ã€‚
</li>
-
+
<li>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME} 㨠{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME} ã®å„エクストラ フィールドを使用ã—ã¦ã€ã‚¤ãƒ™ãƒ³ãƒˆã®æ™‚間をフォームã«è‡ªå‹•入力ã—ã¦ã„ã¾ã™ã€‚
@@ -1083,10 +1083,10 @@ while (cur.moveToNext()) {
ã“れらã®å€¤ã¯ã€ã‚¨ãƒãƒƒã‚¯ã‹ã‚‰ã® UTC ミリ秒å˜ä½ã§ã‚ã‚‹ã“ã¨ãŒå¿…è¦ã§ã™ã€‚
</li>
-
+
<li>{@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL} エクストラ フィールドを使用ã—ã¦ã€å‚加者をメールアドレスã§ç¤ºã—ãŸã‚³ãƒ³ãƒžåŒºåˆ‡ã‚Šãƒªã‚¹ãƒˆã‚’指定ã—ã¦ã„ã¾ã™ã€‚
</li>
-
+
</ul>
<pre>
Calendar beginTime = Calendar.getInstance();
@@ -1158,12 +1158,12 @@ startActivity(intent);
<ul>
<li>åŒæœŸã‚¢ãƒ€ãƒ—ã‚¿ã¯ã€{@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} ã‚’ <code>true</code> ã«è¨­å®šã—ã¦ã€ãれãŒåŒæœŸã‚¢ãƒ€ãƒ—ã‚¿ã§ã‚ã‚‹ã“ã¨ã‚’示ã™å¿…è¦ãŒã‚りã¾ã™ã€‚</li>
-
-
+
+
<li>åŒæœŸã‚¢ãƒ€ãƒ—ã‚¿ã¯ã€{@link android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} 㨠{@link android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} をクエリ パラメータã¨ã—㦠URI ã«æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
</li>
-
+
<li>åŒæœŸã‚¢ãƒ€ãƒ—ã‚¿ã¯ã€ã‚¢ãƒ—リケーションやウィジェットより多ãã®åˆ—ã«æ›¸ãè¾¼ã¿ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚
ãŸã¨ãˆã°ã€ã‚¢ãƒ—リケーションã§å¤‰æ›´ã§ãã‚‹ã®ã¯ã€åå‰ã€è¡¨ç¤ºåã€å¯è¦–性ã®è¨­å®šã€ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ãŒåŒæœŸå¯¾è±¡ã‹ã©ã†ã‹ãªã©ã€ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã®ç‰¹æ€§ã®ä¸€éƒ¨ã®ã¿ã§ã™ã€‚
diff --git a/docs/html-intl/intl/ja/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/ja/guide/topics/providers/contacts-provider.jd
index e12b62f222c5..09bc249543db 100644
--- a/docs/html-intl/intl/ja/guide/topics/providers/contacts-provider.jd
+++ b/docs/html-intl/intl/ja/guide/topics/providers/contacts-provider.jd
@@ -2146,19 +2146,19 @@ startActivity(insertIntent);
viewStreamItemPhotoActivity="<em>viewphotostream_activity_name</em>"&gt;
</pre>
<p>
- <strong>å«ã¾ã‚Œã¦ã„るファイル:</strong>
+ <strong>å«ã¾ã‚Œã¦ã„るファイル:</strong>
</p>
<p>
<code>res/xml/contacts.xml</code>
</p>
<p>
- <strong>å«ã‚ã‚‹ã“ã¨ã®ã§ãã‚‹è¦ç´ :</strong>
+ <strong>å«ã‚ã‚‹ã“ã¨ã®ã§ãã‚‹è¦ç´ :</strong>
</p>
<p>
<strong><code>&lt;ContactsDataKind&gt;</code></strong>
</p>
<p>
- <strong>説明:</strong>
+ <strong>説明:</strong>
</p>
<p>
ユーザーãŒé€£çµ¡å…ˆã® 1 人をソーシャル ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚­ãƒ³ã‚°ã«æ‹›å¾…ã§ãるよã†ã«ã—ãŸã‚Šã€ã‚½ãƒ¼ã‚·ãƒ£ãƒ« ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚­ãƒ³ã‚° ストリームã®ã©ã‚Œã‹ãŒã‚¢ãƒƒãƒ—デートã•れãŸã‚‰ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€šçŸ¥ã—ãŸã‚Šã™ã‚‹ãŸã‚ã®ã€Android コンãƒãƒ¼ãƒãƒ³ãƒˆã‚„ UI ラベルを宣言ã—ã¾ã™ã€‚
@@ -2170,7 +2170,7 @@ startActivity(insertIntent);
</p>
<p>
- <strong>属性:</strong>
+ <strong>属性:</strong>
</p>
<dl>
<dt>{@code inviteContactActivity}</dt>
@@ -2248,11 +2248,11 @@ Google+ サークルã®ã©ã‚Œã‹ã‚’クリックã™ã‚‹ã¨ã€ãã®ã‚µãƒ¼ã‚¯ãƒ«ã«
android:detailColumn="<em>column_name</em>"&gt;
</pre>
<p>
- <strong>å«ã¾ã‚Œã¦ã„るファイル:</strong>
+ <strong>å«ã¾ã‚Œã¦ã„るファイル:</strong>
</p>
<code>&lt;ContactsAccountType&gt;</code>
<p>
- <strong>説明:</strong>
+ <strong>説明:</strong>
</p>
<p>
ã“ã®è¦ç´ ã¯ã€ã‚«ã‚¹ã‚¿ãƒ ãƒ‡ãƒ¼ã‚¿è¡Œã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を未加工連絡先ã®è©³ç´°ã®ä¸€éƒ¨ã¨ã—ã¦é€£çµ¡å…ˆã‚¢ãƒ—リケーションã«è¡¨ç¤ºã•ã›ã‚‹ãŸã‚ã«ä½¿ç”¨ã—ã¾ã™ã€‚
@@ -2263,7 +2263,7 @@ Google+ サークルã®ã©ã‚Œã‹ã‚’クリックã™ã‚‹ã¨ã€ãã®ã‚µãƒ¼ã‚¯ãƒ«ã«
</p>
<p>
- <strong>属性:</strong>
+ <strong>属性:</strong>
</p>
<dl>
<dt>{@code android:mimeType}</dt>
diff --git a/docs/html-intl/intl/ja/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/ja/guide/topics/providers/content-provider-creating.jd
index af2181482d33..b14174fa37c4 100644
--- a/docs/html-intl/intl/ja/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html-intl/intl/ja/guide/topics/providers/content-provider-creating.jd
@@ -377,7 +377,7 @@ BLOB 列内ã®ãƒ‡ãƒ¼ã‚¿ã®å†…容ã¯ã€MIME タイプ列ã®å€¤ã«ã‚ˆã£ã¦ç¤ºã•ã
プロãƒã‚¤ãƒ€ã®ä»»æ„ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ URI ã«ä¸€è‡´ã—ã¾ã™ã€‚
</dd>
<dt>
- <code>content://com.example.app.provider/table2/*</code>:
+ <code>content://com.example.app.provider/table2/*</code>:
</dt>
<dd>
テーブル <code>dataset1</code> 㨠<code>dataset2</code> ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ URI ã«ä¸€è‡´ã—ã¾ã™ãŒã€<code>table1</code> ã‚„ <code>table3</code> ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ URI ã«ã¯ä¸€è‡´ã—ã¾ã›ã‚“。
@@ -791,7 +791,7 @@ protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
タイプ部分: <code>vnd</code>
</li>
<li>
- サブタイプ部分:
+ サブタイプ部分:
<ul>
<li>
URI パターン㌠1 ã¤ã®è¡Œã®å ´åˆ: <code>android.cursor.<strong>item</strong>/</code>
diff --git a/docs/html-intl/intl/ja/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/ja/guide/topics/resources/providing-resources.jd
index 6729e8b6ee8a..2024d5d0bdae 100644
--- a/docs/html-intl/intl/ja/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/ja/guide/topics/resources/providing-resources.jd
@@ -110,7 +110,7 @@ MyProject/
<tr>
<td><code>drawable/</code></td>
- <td><p>ビットマップ ファイル({@code .png}ã€{@code .9.png}ã€{@code .jpg}ã€{@code .gif})ã¾ãŸã¯æ¬¡ã®ãƒ‰ãƒ­ãƒ¼ã‚¢ãƒ–ル リソース サブタイプã«ã‚³ãƒ³ãƒ‘イルã•れる XML ファイル:
+ <td><p>ビットマップ ファイル({@code .png}ã€{@code .9.png}ã€{@code .jpg}ã€{@code .gif})ã¾ãŸã¯æ¬¡ã®ãƒ‰ãƒ­ãƒ¼ã‚¢ãƒ–ル リソース サブタイプã«ã‚³ãƒ³ãƒ‘イルã•れる XML ファイル:
</p>
<ul>
<li>ビットマップ ファイル</li>
@@ -510,7 +510,7 @@ xlarge} 識別å­ã®ã‚¿ã‚°ãŒä»˜ã„ã¦ã„ã‚‹ãŒã€ç«¯æœ«ã¯é€šå¸¸ã‚µã‚¤ã‚ºã®ç”»
</p>
<p>API レベル 4 ã§è¿½åŠ ã€‚<em></em></p>
-
+
<p>詳細ã«ã¤ã„ã¦ã¯ã€ã€Œ<a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>ã€ã‚’ã”覧ãã ã•ã„。
</p>
<p>ã•らã«ã€{@link android.content.res.Configuration#screenLayout} 設定フィールドもã”覧ãã ã•ã„。ã“れã¯ã€ç”»é¢ã®ã‚µã‚¤ã‚ºãŒå°ã€ä¸­ã€å¤§ã®ã„ãšã‚Œã‹ã§ã‚ã‚‹ã‹ã‚’表ã—ã¾ã™ã€‚
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/controls.jd b/docs/html-intl/intl/ja/guide/topics/ui/controls.jd
index 0bc2063764bb..c76771fc00bc 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@ parent.link=index.html
<tr>
<td><a href="controls/radiobutton.html">ラジオボタン</a></td>
<td>グループã§é¸æŠžã§ãるオプション㯠1 ã¤ã®ã¿ã§ã‚ã‚‹ã“ã¨ã‚’除ãã€ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã¨åŒæ§˜ã§ã™ã€‚</td>
- <td>{@link android.widget.RadioGroup RadioGroup}
+ <td>{@link android.widget.RadioGroup RadioGroup}
<br>{@link android.widget.RadioButton RadioButton} </td>
</tr>
<tr>
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/ja/guide/topics/ui/dialogs.jd
index 358fc304f60a..006dc9996296 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@ page.tags=alertdialog,dialogfragment
<li>{@link android.app.DialogFragment}</li>
<li>{@link android.app.AlertDialog}</li>
</ol>
-
+
<h2>関連ドキュメント</h2>
<ol>
<li><a href="{@docRoot}design/building-blocks/dialogs.html">ダイアログ デザインã®ã‚¬ã‚¤ãƒ‰</a></li>
@@ -142,7 +142,7 @@ public class FireMissilesDialogFragment extends DialogFragment {
<div class="figure" style="width:290px;margin:0 0 0 20px">
<img src="{@docRoot}images/ui/dialog_buttons.png" alt="" />
-<p class="img-caption"><strong>図 1</strong>
+<p class="img-caption"><strong>図 1</strong>
メッセージ㨠2 ã¤ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ ボタンをå«ã‚€ãƒ€ã‚¤ã‚¢ãƒ­ã‚°</p>
</div>
@@ -248,7 +248,7 @@ AlertDialog dialog = builder.create();
<dt>Neutral</dt>
<dd>ユーザーãŒã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’ç¶šã‘ãŸããªã„å¯èƒ½æ€§ãŒã‚りã€ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã—ãŸã„ã¨ã¯é™ã‚‰ãªã„å ´åˆã«ä½¿ã„ã¾ã™ã€‚
ãƒã‚¸ãƒ†ã‚£ãƒ– ボタンã¨ãƒã‚¬ãƒ†ã‚£ãƒ– ボタンã®é–“ã«è¡¨ç¤ºã•れã¾ã™ã€‚
-ãŸã¨ãˆã°ã€ã€Œå¾Œã§é€šçŸ¥ã™ã‚‹ã€ã®ã‚ˆã†ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã®å ´åˆã§ã™ã€‚</dd>
+ãŸã¨ãˆã°ã€ã€Œå¾Œã§é€šçŸ¥ã™ã‚‹ã€ã®ã‚ˆã†ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã®å ´åˆã§ã™ã€‚</dd>
</dl>
<p>å„ボタンタイプã®ã„ãšã‚Œã‹ 1 ã¤ã®ã¿ã‚’ {@link
@@ -258,7 +258,7 @@ android.app.AlertDialog} ã«è¿½åŠ ã§ãã¾ã™ã€‚ã¤ã¾ã‚Šã€2 ã¤ä»¥ä¸Šã®ã€Œãƒ
<div class="figure" style="width:290px;margin:0 0 0 40px">
<img src="{@docRoot}images/ui/dialog_list.png" alt="" />
-<p class="img-caption"><strong>図 3</strong>
+<p class="img-caption"><strong>図 3</strong>
タイトルã¨ãƒªã‚¹ãƒˆã‚’å«ã‚€ãƒ€ã‚¤ã‚¢ãƒ­ã‚°</p>
</div>
@@ -318,7 +318,7 @@ android.app.AlertDialog.Builder#setAdapter setAdapter()} を使ã£ã¦ãƒªã‚¹ãƒˆã‚
<h4 id="Checkboxes">固定ã®è¤‡æ•°é¸æŠžã¾ãŸã¯æŽ’ä»–çš„é¸æŠžãƒªã‚¹ãƒˆã‚’è¿½åŠ ã™ã‚‹</h4>
<p>è¤‡æ•°é¸æŠžã‚¢ã‚¤ãƒ†ãƒ ï¼ˆãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ï¼‰ã¾ãŸã¯æŽ’ä»–çš„é¸æŠžã‚¢ã‚¤ãƒ†ãƒ ï¼ˆãƒ©ã‚¸ã‚ªãƒœã‚¿ãƒ³ï¼‰ã®ãƒªã‚¹ãƒˆã‚’追加ã™ã‚‹ã«ã¯ã€{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} ã¾ãŸã¯ {@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} ã¾ãŸã¯ {@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()} メソッドをãれãžã‚Œä½¿ç”¨ã—ã¾ã™ã€‚
@@ -346,7 +346,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
- // Else, if the item is already in the array, remove it
+ // Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
@@ -372,7 +372,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
</pre>
<p>従æ¥ã®ãƒªã‚¹ãƒˆã¨ãƒ©ã‚¸ã‚ªãƒœã‚¿ãƒ³ã‚’å«ã‚€ãƒªã‚¹ãƒˆã§ã¯ã€ã€ŒæŽ’ä»–çš„é¸æŠžã€ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ãŒæä¾›ã•れã¾ã™ãŒã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®é¸æŠžã‚’固定ã•ã›ãŸã„å ´åˆã¯ã€{@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()} を使用ã—ã¦ãã ã•ã„。ã¤ã¾ã‚Šã€ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’後ã§ã‚‚ã†ä¸€åº¦é–‹ãå ´åˆã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ç¾åœ¨ã®é¸æŠžã‚’表示ã—ã€ãƒ©ã‚¸ã‚ªãƒœã‚¿ãƒ³ã‚’å«ã‚€ãƒªã‚¹ãƒˆã‚’作æˆã—ã¾ã™ã€‚
@@ -470,7 +470,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
- });
+ });
return builder.create();
}
</pre>
@@ -505,7 +505,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<pre>
public class NoticeDialogFragment extends DialogFragment {
-
+
/* The activity that creates an instance of this dialog fragment must
* implement this interface in order to receive event callbacks.
* Each method passes the DialogFragment in case the host needs to query it. */
@@ -513,10 +513,10 @@ public class NoticeDialogFragment extends DialogFragment {
public void onDialogPositiveClick(DialogFragment dialog);
public void onDialogNegativeClick(DialogFragment dialog);
}
-
+
// Use this instance of the interface to deliver action events
NoticeDialogListener mListener;
-
+
// Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
&#64;Override
public void onAttach(Activity activity) {
@@ -543,7 +543,7 @@ public class NoticeDialogFragment extends DialogFragment {
public class MainActivity extends FragmentActivity
implements NoticeDialogFragment.NoticeDialogListener{
...
-
+
public void showNoticeDialog() {
// Create an instance of the dialog fragment and show it
DialogFragment dialog = new NoticeDialogFragment();
@@ -656,7 +656,7 @@ public class CustomDialogFragment extends DialogFragment {
// Inflate the layout to use as dialog or embedded fragment
return inflater.inflate(R.layout.purchase_items, container, false);
}
-
+
/** The system calls this only when creating the layout in a dialog. */
&#64;Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
@@ -678,7 +678,7 @@ public class CustomDialogFragment extends DialogFragment {
public void showDialog() {
FragmentManager fragmentManager = getSupportFragmentManager();
CustomDialogFragment newFragment = new CustomDialogFragment();
-
+
if (mIsLargeLayout) {
// The device is using a large layout, so show the fragment as a dialog
newFragment.show(fragmentManager, "dialog");
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/menus.jd b/docs/html-intl/intl/ja/guide/topics/ui/menus.jd
index 7d8090e7a0ad..53142a1b3e58 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/menus.jd
@@ -83,9 +83,9 @@ Android 3.0 ã‹ã‚‰ã¯ã€<em>Menu</em> ボタンãŒå»ƒæ­¢ã•れãŸãŸã‚(一部
</p>
<p><a href="#options-menu">オプション メニューã®ä½œæˆ</a>ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’ã”覧ãã ã•ã„。</p>
</dd>
-
+
<dt><strong>コンテキスト メニューã¨ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆ アクション モード</strong></dt>
-
+
<dd>コンテキスト メニューã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒè¦ç´ ã‚’長押ã—クリックã™ã‚‹ã¨ãã«è¡¨ç¤ºã•れる<a href="#FloatingContextMenu">フローティング メニュー</a>ã§ã™ã€‚
ã“ã“ã§ã¯ã€é¸æŠžã—ãŸã‚³ãƒ³ãƒ†ãƒ³ãƒ„やコンテキスト フレームã«å½±éŸ¿ã™ã‚‹ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ãŒæä¾›ã•れã¾ã™ã€‚
@@ -94,7 +94,7 @@ Android 3.0 ã‹ã‚‰ã¯ã€<em>Menu</em> ボタンãŒå»ƒæ­¢ã•れãŸãŸã‚(一部
</p>
<p><a href="#context-menu">コンテキスト メニューã®ä½œæˆ</a>ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’ã”覧ãã ã•ã„。</p>
</dd>
-
+
<dt><strong>ãƒãƒƒãƒ—アップ メニュー</strong></dt>
<dd>ãƒãƒƒãƒ—アップ メニューã§ã¯ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’呼ã³å‡ºã™ãƒ“ューã«å›ºå®šã•れãŸç¸¦æ–¹å‘ã®ãƒªã‚¹ãƒˆã§ã‚¢ã‚¤ãƒ†ãƒ ãŒè¡¨ç¤ºã•れã¾ã™ã€‚
特定ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã«é–¢é€£ã™ã‚‹ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã®æ¦‚è¦ã‚’表示ã—ãŸã‚Šã€ã‚³ãƒžãƒ³ãƒ‰ã® 2 番目ã®éƒ¨åˆ†ã®ã‚ªãƒ—ションを表示ã—ãŸã‚Šã™ã‚‹å ´åˆã«é©ã—ã¦ã„ã¾ã™ã€‚
@@ -135,7 +135,7 @@ Android 3.0 ã‹ã‚‰ã¯ã€<em>Menu</em> ボタンãŒå»ƒæ­¢ã•れãŸãŸã‚(一部
<dt><code>&lt;item></code></dt>
<dd>メニュー㧠1 ã¤ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’表示ã™ã‚‹ {@link android.view.MenuItem} を作æˆã—ã¾ã™ã€‚ã“ã®è¦ç´ ã«ã¯ã€ã‚µãƒ–メニューを作æˆã™ã‚‹ãŸã‚ã«ã€ãƒã‚¹ãƒˆã•れ㟠<code>&lt;menu></code> è¦ç´ ã‚’å«ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
</dd>
-
+
<dt><code>&lt;group></code></dt>
<dd>çœç•¥å¯èƒ½ãª {@code &lt;item&gt;} è¦ç´ ã®éžè¡¨ç¤ºã‚³ãƒ³ãƒ†ãƒŠã€‚メニュー アイテムã§ã‚¢ã‚¯ãƒ†ã‚£ãƒ–状態やå¯è¦–性ã®ã‚ˆã†ãªãƒ—ロパティを共有ã§ãるよã†ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ アイテムを分類ã§ãã¾ã™ã€‚
詳細ã«ã¤ã„ã¦ã¯ã€<a href="#groups">メニュー グループã®ä½œæˆ</a>ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’ã”覧ãã ã•ã„。
@@ -742,8 +742,8 @@ android.view.Menu} オブジェクトã«ãƒ¡ãƒ‹ãƒ¥ãƒ¼ リソースをインフレ
<pre>
&lt;ImageButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:src="@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup" />
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/ja/guide/topics/ui/notifiers/notifications.jd
index f341256a3225..d0f1f72f626a 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/notifiers/notifications.jd
@@ -531,7 +531,7 @@ numMessages = 0;
<li>
å¿…è¦ã«å¿œã˜ã¦ã€{@link android.support.v4.app.TaskStackBuilder#editIntentAt TaskStackBuilder.editIntentAt()} を呼ã³å‡ºã—ã€ã‚¹ã‚¿ãƒƒã‚¯ä¸Šã® {@link android.content.Intent} オブジェクトã«å¼•数を追加ã—ã¾ã™ã€‚
-ã“れã¯ã€å ´åˆã«ã‚ˆã£ã¦ã¯ã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ {@link android.app.Activity} ã«ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ
+ã“れã¯ã€å ´åˆã«ã‚ˆã£ã¦ã¯ã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ {@link android.app.Activity} ã«ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ
<i>[戻る]</i> を使ã£ã¦ç§»å‹•ã—ãŸã¨ãã«ã€é©åˆ‡ãªãƒ‡ãƒ¼ã‚¿ãŒè¡¨ç¤ºã•れるよã†ã«ã™ã‚‹ãŸã‚ã«å¿…è¦ã§ã™ã€‚
</li>
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/overview.jd b/docs/html-intl/intl/ja/guide/topics/ui/overview.jd
index 08d93560cb4e..7bc49f4f12fc 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@ android.view.View} 㨠{@link android.view.ViewGroup} オブジェクトã®éšŽå±
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
+ android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
&lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@ android.view.View} 㨠{@link android.view.ViewGroup} オブジェクトã®éšŽå±
<p>UI レイアウト作æˆã®ã‚¬ã‚¤ãƒ‰ã«ã¤ã„ã¦ã¯ã€<a href="declaring-layout.html">XML レイアウト</a>ã‚’ã”覧ãã ã•ã„。
-
+
<h2 id="UIComponents">ユーザー インターフェース コンãƒãƒ¼ãƒãƒ³ãƒˆ</h2>
<p>{@link android.view.View} 㨠{@link android.view.ViewGroup} オブジェクトを使用ã—ã¦ã™ã¹ã¦ã® UI をビルドã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/settings.jd b/docs/html-intl/intl/ja/guide/topics/ui/settings.jd
index 9e6bb9d04169..c36a01c898fe 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/settings.jd
@@ -226,7 +226,7 @@ XML ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ›´æ–°ãŒå®¹æ˜“ãªç°¡å˜ã«èª­ã‚€ã“ã¨ãŒã§ãる構造をæ
<dt>{@code android:key}</dt>
<dd>ã“ã®å±žæ€§ã¯ã€ãƒ‡ãƒ¼ã‚¿å€¤ã‚’ä¿æŒã™ã‚‹ãƒ—リファレンスã§å¿…è¦ã§ã™ã€‚設定ã®å€¤ã‚’ {@link android.content.SharedPreferences} ã«ä¿å­˜ã™ã‚‹ã¨ãã«ã‚·ã‚¹ãƒ†ãƒ ãŒä½¿ç”¨ã™ã‚‹ä¸€æ„ã®ã‚­ãƒ¼ï¼ˆæ–‡å­—列)を指定ã—ã¾ã™ã€‚
-
+
<p>プリファレンス㌠{@link android.preference.PreferenceCategory} ã¾ãŸã¯{@link android.preference.PreferenceScreen} ã®å ´åˆã€ã¾ãŸã¯ãƒ—リファレンス㌠{@link android.content.Intent} ã®å‘¼ã³å‡ºã—を指定ã—ã¦ã„ã‚‹å ´åˆï¼ˆ<a href="#Intents">{@code &lt;intent&gt;}</a> è¦ç´ ã‚’使用)ã€ã¾ãŸã¯ {@link android.app.Fragment} ã®è¡¨ç¤ºã‚’指定ã—ã¦ã„ã‚‹å ´åˆï¼ˆ<a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code android:fragment}</a> 属性を使用)ã®ã¿ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã“ã®å±žæ€§ã¯<em>å¿…è¦ã‚りã¾ã›ã‚“</em>。
@@ -285,7 +285,7 @@ XML ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ›´æ–°ãŒå®¹æ˜“ãªç°¡å˜ã«èª­ã‚€ã“ã¨ãŒã§ãる構造をæ
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;PreferenceCategory
+ &lt;PreferenceCategory
android:title="&#64;string/pref_sms_storage_title"
android:key="pref_key_storage_settings">
&lt;CheckBoxPreference
@@ -293,12 +293,12 @@ XML ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ›´æ–°ãŒå®¹æ˜“ãªç°¡å˜ã«èª­ã‚€ã“ã¨ãŒã§ãる構造をæ
android:summary="&#64;string/pref_summary_auto_delete"
android:title="&#64;string/pref_title_auto_delete"
android:defaultValue="false"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_sms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
android:title="&#64;string/pref_title_sms_delete"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_mms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
@@ -588,11 +588,11 @@ PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
@@ -672,15 +672,15 @@ public class SettingsActivity extends PreferenceActivity {
</p>
<p>ãŸã¨ãˆã°ã€ä»¥ä¸‹ã¯ Android 3.0 以é™ã§ä½¿ç”¨ã•れるプリファレンス ヘッダー㮠XML ファイル({@code res/xml/preference_headers.xml})ã§ã™ã€‚
-</p>
+</p>
<pre>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" />
@@ -692,18 +692,18 @@ public class SettingsActivity extends PreferenceActivity {
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_ONE" />
&lt;/Preference>
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_TWO" />
@@ -975,11 +975,11 @@ prefs.registerOnSharedPreferenceChangeListener(listener);
public class NumberPickerPreference extends DialogPreference {
public NumberPickerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
-
+
setDialogLayoutResource(R.layout.numberpicker_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
-
+
setDialogIcon(null);
}
...
@@ -1194,7 +1194,7 @@ protected void onRestoreInstanceState(Parcelable state) {
// Cast state to custom BaseSavedState and pass to superclass
SavedState myState = (SavedState) state;
super.onRestoreInstanceState(myState.getSuperState());
-
+
// Set this Preference's widget to reflect the restored state
mNumberPicker.setValue(myState.value);
}
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/ja/guide/topics/ui/ui-events.jd
index 1cff3f62d022..b4b3766e768a 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/ui-events.jd
@@ -187,7 +187,7 @@ dispatchKeyEvent()}</code> メソッドを介ã—ã¦ä¼ã‚ã£ã¦ã„ã‚‹ã¨åˆ¤æ–­ã
ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - {@link android.view.ViewGroup} ãŒã€ã‚¤ãƒ™ãƒ³ãƒˆãŒå­ãƒ“ューã«ãƒ‡ã‚£ã‚¹ãƒ‘ッãƒã•れãŸã¨ãã«ã‚¤ãƒ™ãƒ³ãƒˆã‚’監視ã§ãるよã†ã«ã—ã¾ã™ã€‚
</li>
<li><code>{@link android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
- ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’親ビュー上ã§å‘¼ã³å‡ºã™ã“ã¨ã§ã€<code>{@link
+ ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’親ビュー上ã§å‘¼ã³å‡ºã™ã“ã¨ã§ã€<code>{@link
android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code> ã«ã‚ˆã‚‹è¦ªãƒ“ューã®ã‚¿ãƒƒãƒ—イベントã®ã‚¤ãƒ³ã‚¿ãƒ¼ã‚»ãƒ—トを許å¯ã—ãªã„ã“ã¨ã‚’示ã™ã“ã¨ãŒã§ãã¾ã™ã€‚
</li>
</ul>
@@ -199,7 +199,7 @@ dispatchKeyEvent()}</code> メソッドを介ã—ã¦ä¼ã‚ã£ã¦ã„ã‚‹ã¨åˆ¤æ–­ã
ãŸã ã—ã€ç«¯æœ«ã«ã‚¿ãƒƒãƒæ©Ÿèƒ½ãŒã‚ã‚‹å ´åˆã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã‚¿ãƒƒãƒ—ã§ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®æ“作を開始ã™ã‚‹ãŸã‚ã€ã‚¢ã‚¤ãƒ†ãƒ ã‚’ãƒã‚¤ãƒ©ã‚¤ãƒˆã™ã‚‹ã“ã¨ã‚„ã€ç‰¹å®šã®ãƒ“ューã«ãƒ•ォーカスを与ãˆã‚‹ã“ã¨ã¯å¿…è¦ã§ã¯ãªããªã‚Šã¾ã—ãŸã€‚
ãã®ãŸã‚ã€ã€Œã‚¿ãƒƒãƒãƒ¢ãƒ¼ãƒ‰ã€ã¨å付ã‘ã‚‰ã‚ŒãŸæ“作モードãŒå­˜åœ¨ã—ã¾ã™ã€‚
-
+
</p>
<p>
タッãƒå¯èƒ½ãªç«¯æœ«ã§ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒç”»é¢ã‚’タップã™ã‚‹ã¨ã€ç«¯æœ«ãŒã‚¿ãƒƒãƒãƒ¢ãƒ¼ãƒ‰ã«ãªã‚Šã¾ã™ã€‚
@@ -233,7 +233,7 @@ dispatchKeyEvent()}</code> メソッドを介ã—ã¦ä¼ã‚ã£ã¦ã„ã‚‹ã¨åˆ¤æ–­ã
<p>フォーカスã®ç§»å‹•ã¯ã€æ‰€å®šã®æ–¹å‘ã§æœ€ã‚‚è¿‘ãã«ã‚るアイテムを見ã¤ã‘るアルゴリズムã«åŸºã¥ãã¾ã™ãŒã€
ã¾ã‚Œã«ã€ãƒ‡ãƒ•ォルトã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ãŒé–‹ç™ºè€…ã®æ„図ã™ã‚‹å‹•作ã¨ä¸€è‡´ã—ãªã„å ´åˆã‚‚ã‚りã¾ã™ã€‚
-ã“ã®å ´åˆã€ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆ ファイルã®
+ã“ã®å ´åˆã€ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆ ファイルã®
<var>nextFocusDown</var>〠<var>nextFocusLeft</var>〠<var>nextFocusRight</var>ã€
<var>nextFocusUp</var> ã®å„ XML 属性を明示的ã«ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã§ãã¾ã™ã€‚ã“れらã®å±žæ€§ã®ã„ãšã‚Œã‹ã‚’ã€ãƒ•ォーカスã®ç§»å‹•<em>å…ƒ</em>ã®ãƒ“ューã«è¿½åŠ ã—ã¾ã™ã€‚
@@ -253,11 +253,11 @@ dispatchKeyEvent()}</code> メソッドを介ã—ã¦ä¼ã‚ã£ã¦ã„ã‚‹ã¨åˆ¤æ–­ã
</pre>
<p>本æ¥ã€ä¸Šè¨˜ã®ç¸¦æ–¹å‘ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã§ã¯ã€1 番上ã®ãƒœã‚¿ãƒ³ã‹ã‚‰ä¸Šã«ç§»å‹•ã—よã†ã¨ã—ã¦ã‚‚ã€2 番目ã®ãƒœã‚¿ãƒ³ã‹ã‚‰ä¸‹ã«ç§»å‹•ã—よã†ã—ã¦ã‚‚ã€ã©ã“ã«ã‚‚フォーカスãŒç§»å‹•ã—ãªã„ã¯ãšã§ã—ãŸãŒã€ä¸Šè¨˜ã®å‡¦ç†ã«ã‚ˆã‚Šã€
-1 番上ã®ãƒœã‚¿ãƒ³ã«ã‚ˆã£ã¦ 1 番下ã®ãƒœã‚¿ãƒ³ãŒ
+1 番上ã®ãƒœã‚¿ãƒ³ã«ã‚ˆã£ã¦ 1 番下ã®ãƒœã‚¿ãƒ³ãŒ
<var>nextFocusUp</var> ã¨ã—ã¦å®šç¾©ã•れ(逆ã®å ´åˆã‚‚åŒæ§˜ï¼‰ã€ãƒ•ォーカスãŒã€ä¸Šã‹ã‚‰ä¸‹ã¨ä¸‹ã‹ã‚‰ä¸Šã«é †ç•ªã«ç§»å‹•ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
</p>
-<p>UI ã§ãƒ“ューをフォーカスå¯èƒ½ã«ã™ã‚‹å ´åˆã¯ï¼ˆå¾“æ¥ã¯ã€ãƒ“ューã¯ãƒ•ォーカスå¯èƒ½ã§ã¯ã‚りã¾ã›ã‚“)ã€ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã®å®£è¨€ã§ <code>android:focusable</code> XML 属性をビューã«è¿½åŠ ã—ã€å€¤ã‚’
+<p>UI ã§ãƒ“ューをフォーカスå¯èƒ½ã«ã™ã‚‹å ´åˆã¯ï¼ˆå¾“æ¥ã¯ã€ãƒ“ューã¯ãƒ•ォーカスå¯èƒ½ã§ã¯ã‚りã¾ã›ã‚“)ã€ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã®å®£è¨€ã§ <code>android:focusable</code> XML 属性をビューã«è¿½åŠ ã—ã€å€¤ã‚’
<var>true</var> ã«è¨­å®šã—ã¾ã™ã€‚ã¾ãŸã€<code>android:focusableInTouchMode</code> を使用ã—ã¦ã€ã‚¿ãƒƒãƒãƒ¢ãƒ¼ãƒ‰ã®ã¨ãã«ãƒ“ューをフォーカスå¯èƒ½ã«ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
</p>
@@ -282,7 +282,7 @@ dispatchKeyEvent()}</code> メソッドを介ã—ã¦ä¼ã‚ã£ã¦ã„ã‚‹ã¨åˆ¤æ–­ã
the framework will take care of measuring, laying out, and drawing the tree
as appropriate.</li>
</ol>
-
+
<p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
the UI thread when calling any method on any View.
If you are doing work on other threads and want to update the state of a View
diff --git a/docs/html-intl/intl/ja/preview/download-ota.jd b/docs/html-intl/intl/ja/preview/download-ota.jd
index 1107baf4249e..835597bf23c5 100644
--- a/docs/html-intl/intl/ja/preview/download-ota.jd
+++ b/docs/html-intl/intl/ja/preview/download-ota.jd
@@ -202,65 +202,73 @@ page.title=端末㮠OTA イメージã®é©ç”¨
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
- MD5:15fe2eba9b01737374196bdf0a792fe9<br>
- SHA-1:5014b2bba77f9e1a680ac3f90729621c85a14283
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-ota-npd90g-0a874807.zip</a><br>
+ MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+ SHA-1: a9920bcc8d475ce322cada097d085448512635e2
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
- MD5: e8b12f7721c53af9a450f7058928a5fc<br>
- SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-ota-npd90g-06f5d23d.zip</a><br>
+ MD5: 513570bb3a91878c2d1a5807d2340420<br>
+ SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
- MD5:3fac09fef759dde26e57cb80b20b6477<br>
- SHA-1:27d6caa786577d8a38b2da5bf94b33b4524a1a1c
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-ota-npd90g-5baa69c2.zip</a><br>
+ MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+ SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
- MD5:58312c4a5971818ef5c77a3f446003da<br>
- SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-ota-npd90g-c04785e1.zip</a><br>
+ MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+ SHA-1: 31633180635b831e59271a7d904439f278586f49
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
- MD5:92b7d1fa252f7394e70f957c72d4aac8<br>
- SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+ MD5: 0493fa79763d67bcdde8007299e1888d<br>
+ SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
- MD5:1461622ad53ea842b2722fa7b49b8172<br>
- SHA-1:409c061668ab270774877d7f3eae44fa48d2b931
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-ota-npd90g-3a0643ae.zip</a><br>
+ MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+ SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
- MD5: c60117f3640cc6db12386fd632289c7d<br>
- SHA-1:87349c767c69efb4172c90ce1d88cf578c3d28b3
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-ota-npd90g-ec931914.zip</a><br>
+ MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+ SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
</td>
</tr>
<tr id="seed">
- <td>General Mobile 4G(Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
- MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
- SHA-1:6f33742290eb46f2561891f38ca2e754b4e50c6a
+ <td>General Mobile 4G (Android One) <br>"seed"</td>
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+ MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+ SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
</td>
</tr>
diff --git a/docs/html-intl/intl/ja/preview/download.jd b/docs/html-intl/intl/ja/preview/download.jd
index 52c3c6c3a49d..52f7ae4dd5fb 100644
--- a/docs/html-intl/intl/ja/preview/download.jd
+++ b/docs/html-intl/intl/ja/preview/download.jd
@@ -300,72 +300,73 @@ page.image=images/cards/card-n-downloads_2x.png
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
- MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
- SHA-1:5ba4053577007d15c96472206e3a79bc80ab194c
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+ MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+ SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
- MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
- SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+ MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+ SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
- MD5: e93de7949433339856124c3729c15ebb<br>
- SHA-1:81c341d57ef2cd139569b055d5d59e9e592a7abd
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+ MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+ SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
- MD5:565be87ebb2d5937e2abe1a42645864b<br>
- SHA-1:2b50e19dae2667b27f911e3c61ed64860caf43e1
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-npd90g-factory-41b55406.tgz</a><br>
+ MD5: cefa78950141da2a7c75e887717e3c8f<br>
+ SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
- MD5: a8464e15c6683fe2afa378a63e205fda<br>
- SHA-1:2e89ebe67a46b2f3beb050746c13341cd11fa678
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-npd90g-factory-610492be.tgz</a><br>
+ MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+ SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
- MD5: c0dbb7db671f61b2785da5001cedefcb<br>
- SHA-1:1de74874f8d83e14d642f13b5a2130fc2aa55873
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-npd90g-factory-0fe95694.tgz</a><br>
+ MD5: f4cb48f919e4c29c631de21416c612e2<br>
+ SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
- MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
- SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-npd90g-factory-f4da981c.tgz</a><br>
+ MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+ SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
</td>
</tr>
<tr id="seed">
- <td>General Mobile 4G(Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
- MD5:7d34a9774fdd6e025d485ce6cfc23c4c<br>
- SHA-1:5ab1212bc9417269d391aacf1e672fff24b4ecc5
- </td>
- </tr>
-
- <tr id="xperia">
- <td>Sony Xperia Z3 <br> (D6603 ãŠã‚ˆã³ D6653)</td>
- <td>ダウンロード:<a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
- 詳細ã«ã¤ã„ã¦ã¯ã€<a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Xperia Z3 ã« Android N Developer Preview を試ã™</a>ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
+ <td>General Mobile 4G (Android One) <br>"seed"</td>
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+ MD5: 0ed565c509594072822d71c65b48ec8e<br>
+ SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
</td>
</tr>
diff --git a/docs/html-intl/intl/ja/preview/features/background-optimization.jd b/docs/html-intl/intl/ja/preview/features/background-optimization.jd
index 1ea9f2eb4765..04921c79b798 100644
--- a/docs/html-intl/intl/ja/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/ja/preview/features/background-optimization.jd
@@ -248,7 +248,7 @@ Android N ã§ã¯ã€{@link android.app.job.JobInfo} 㨠{@link
setPeriodic()} ã¾ãŸã¯ {@link android.app.job.JobInfo.Builder#setPersisted
setPersisted()} ã¨çµ„ã¿åˆã‚ã›ã¦ä½¿ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。
コンテンツã®å¤‰æ›´ã‚’継続的ã«ç›£è¦–ã™ã‚‹ã«ã¯ã€ã‚¢ãƒ—リ㮠{@link
- android.app.job.JobService} ãŒæœ€æ–°ã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ã®å‡¦ç†ã‚’完了ã™ã‚‹å‰ã«ã€æ–°ã—ã„
+ android.app.job.JobService} ãŒæœ€æ–°ã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ã®å‡¦ç†ã‚’完了ã™ã‚‹å‰ã«ã€æ–°ã—ã„
{@link android.app.job.JobInfo} をスケジュールã—ã¾ã™ã€‚
</p>
diff --git a/docs/html-intl/intl/ja/preview/features/direct-boot.jd b/docs/html-intl/intl/ja/preview/features/direct-boot.jd
index 6ba185242860..933e682c062b 100644
--- a/docs/html-intl/intl/ja/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/ja/preview/features/direct-boot.jd
@@ -58,16 +58,16 @@ page.image=images/cards/card-nyc_2x.jpg
<p>ダイレクト ブート モード中ã«ã‚¢ãƒ—リを実行ã—ãŸã‚Šã€ç«¯æœ«æš—å·åŒ–ストレージã«ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸã‚Šã™ã‚‹ã«ã¯ã€ã‚¢ãƒ—リ コンãƒãƒ¼ãƒãƒ³ãƒˆã®ç™»éŒ²ãŒå¿…è¦ã§ã™ã€‚
アプリをシステムã«ç™»éŒ²ã™ã‚‹ã«ã¯ã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒ
-<i>æš—å·åŒ–対応ã™ã‚‹ã‚ˆã†ã«æŒ‡å®šã—ã¾ã™ã€‚</i>コンãƒãƒ¼ãƒãƒ³ãƒˆãŒæš—å·åŒ–対応ã™ã‚‹ã‚ˆã†æŒ‡å®šã™ã‚‹ã«ã¯ã€ãƒžãƒ‹ãƒ•ェスト内ã§
+<i>æš—å·åŒ–対応ã™ã‚‹ã‚ˆã†ã«æŒ‡å®šã—ã¾ã™ã€‚</i>コンãƒãƒ¼ãƒãƒ³ãƒˆãŒæš—å·åŒ–対応ã™ã‚‹ã‚ˆã†æŒ‡å®šã™ã‚‹ã«ã¯ã€ãƒžãƒ‹ãƒ•ェスト内ã§
<code>android:directBootAware</code> 属性を true ã«è¨­å®šã—ã¾ã™ã€‚<p>
-<p>æš—å·åŒ–対応コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’登録ã—ã¦ãŠãã¨ã€ç«¯æœ«ã‚’å†èµ·å‹•ã—ãŸã¨ãã«ã‚·ã‚¹ãƒ†ãƒ ã‹ã‚‰
+<p>æš—å·åŒ–対応コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’登録ã—ã¦ãŠãã¨ã€ç«¯æœ«ã‚’å†èµ·å‹•ã—ãŸã¨ãã«ã‚·ã‚¹ãƒ†ãƒ ã‹ã‚‰
<code>LOCKED_BOOT_COMPLETED</code> ブロードキャスト メッセージをå—ä¿¡ã§ãã¾ã™ã€‚
ã“ã®æ™‚点ã§ç«¯æœ«æš—å·åŒ–ストレージãŒä½¿ç”¨ã§ãるよã†ã«ãªã‚Šã€ãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ ブート モード中ã«ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒå®Ÿè¡Œã—ãªã‘れã°ãªã‚‰ãªã„タスクを実行ã§ãã¾ã™ã€‚ãŸã¨ãˆã°ã€ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«ã—ãŸã‚¢ãƒ©ãƒ¼ãƒ ã®ãƒˆãƒªã‚¬ãƒ¼ãªã©ãŒè©²å½“ã—ã¾ã™ã€‚
</p>
-<p>次ã®ã‚³ãƒ¼ãƒ‰ スニペットã¯ã€ã‚¢ãƒ—リã®ãƒžãƒ‹ãƒ•ェスト内ã§
+<p>次ã®ã‚³ãƒ¼ãƒ‰ スニペットã¯ã€ã‚¢ãƒ—リã®ãƒžãƒ‹ãƒ•ェスト内ã§
{@link android.content.BroadcastReceiver} ã‚’æš—å·åŒ–対応ã¨ã—ã¦ç™»éŒ²ã—ã€<code>LOCKED_BOOT_COMPLETED</code> ã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆ フィルタを追加ã™ã‚‹æ–¹æ³•ã®ä¾‹ã‚’示ã—ã¦ã„ã¾ã™ã€‚
</p>
@@ -126,7 +126,7 @@ ACTION_BOOT_COMPLETED} メッセージをå—ä¿¡ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ã“
<p>ユーザーãŒç«¯æœ«ã‚’アップデートã—ã¦ãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ ブート モードを使用ã§ãるよã†ã«ãªã‚‹ã¨ã€æ—¢å­˜ã®ãƒ‡ãƒ¼ã‚¿ã‚’端末暗å·åŒ–ストレージã«ç§»è¡Œã—ãªã‘れã°ãªã‚‰ãªã„å ´åˆãŒã‚りã¾ã™ã€‚
-<code>Context.moveSharedPreferencesFrom()</code> ãŠã‚ˆã³
+<code>Context.moveSharedPreferencesFrom()</code> ãŠã‚ˆã³
<code>Context.moveDatabaseFrom()</code> を使用ã™ã‚‹ã¨ã€è¨­å®šãŠã‚ˆã³ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ‡ãƒ¼ã‚¿ã‚’èªè¨¼æƒ…報暗å·åŒ–ストレージã¨ç«¯æœ«æš—å·åŒ–ストレージ間ã§ç§»è¡Œã§ãã¾ã™ã€‚
</p>
diff --git a/docs/html-intl/intl/ja/preview/features/icu4j-framework.jd b/docs/html-intl/intl/ja/preview/features/icu4j-framework.jd
index cf2063f8cf8e..6a25cec0e556 100644
--- a/docs/html-intl/intl/ja/preview/features/icu4j-framework.jd
+++ b/docs/html-intl/intl/ja/preview/features/icu4j-framework.jd
@@ -49,7 +49,7 @@ Android N ã§ã¯ã€ã‚¢ãƒ—リã®ãƒ‡ãƒ™ãƒ­ãƒƒãƒ‘ーå‘ã‘ã® Android フレームã
<h2 id="relation">ICU4J ã¨ã®é–¢ä¿‚</h2>
<p>
- Android N ã§ã¯ã€<code>com.ibm.icu</code> ã§ã¯ãªã
+ Android N ã§ã¯ã€<code>com.ibm.icu</code> ã§ã¯ãªã
<code>android.icu</code> パッケージを介ã—㦠ICU4J API ã®ã‚µãƒ–セットを公開ã—ã¦ã„ã¾ã™ã€‚Android フレームワークã§ã¯ã€ã•ã¾ã–ã¾ãªç†ç”±ã«ã‚ˆã‚Š ICU4J API を公開ã—ãªã„ã¨ã„ã†é¸æŠžã‚‚考ãˆã‚‰ã‚Œã¾ã™ã€‚ãŸã¨ãˆã°ã€Android N ã§å»ƒæ­¢ã•れ㟠API を公開ã—ãªã„ãŸã‚ã€ã¾ãŸã¯ ICU ãƒãƒ¼ãƒ ã‹ã‚‰ã¾ã å®‰å®šç‰ˆã®ç™ºè¡¨ãŒãªã„ãŸã‚ã€ãªã©ã®ç†ç”±ãŒã‚りã¾ã™ã€‚
diff --git a/docs/html-intl/intl/ja/preview/features/multi-window.jd b/docs/html-intl/intl/ja/preview/features/multi-window.jd
index 4ad3d940f38c..dba58be00799 100644
--- a/docs/html-intl/intl/ja/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/ja/preview/features/multi-window.jd
@@ -146,7 +146,7 @@ TV 端末ã§ã€ã‚¢ãƒ—リãŒãƒ”クãƒãƒ£ イン ピクãƒãƒ£ モードã§å‹•ç”»ã‚
ユーザーãŒã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ã‚µã‚¤ã‚ºã‚’変更ã—ã¦ã€é«˜ã•や幅を拡大ã—ãŸå ´åˆã€ãƒ¦ãƒ¼ã‚¶ãƒ¼æ“作ã«ä¸€è‡´ã™ã‚‹ã‚ˆã†ã«ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ã‚µã‚¤ã‚ºãŒå¤‰æ›´ã•れã€å¿…è¦ã«å¿œã˜ã¦ã€<a href="{@docRoot}guide/topics/resources/runtime-changes.html">実行時ã®å¤‰æ›´</a>ãŒç™ºè¡Œã•れã¾ã™ã€‚
ã‚¢ãƒ—ãƒªã§æ–°ã—ã表示ã•れãŸé ˜åŸŸã‚’æç”»ã™ã‚‹ã¾ã§ã«æ™‚é–“ãŒã‹ã‹ã‚‹å ´åˆã€{@link
- android.R.attr#windowBackground windowBackground} 属性ã¾ãŸã¯ãƒ‡ãƒ•ォルトã®
+ android.R.attr#windowBackground windowBackground} 属性ã¾ãŸã¯ãƒ‡ãƒ•ォルトã®
<code>windowBackgroundFallback</code> システム属性ã«ã‚ˆã£ã¦æŒ‡å®šã•れãŸè‰²ã§ã“れらã®é ˜åŸŸãŒä¸€æ™‚çš„ã«å¡—りã¤ã¶ã•れã¾ã™ã€‚
</p>
@@ -158,7 +158,7 @@ TV 端末ã§ã€ã‚¢ãƒ—リãŒãƒ”クãƒãƒ£ イン ピクãƒãƒ£ モードã§å‹•ç”»ã‚
サイズã¨ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’制御ã™ã‚‹ãŸã‚ã®å±žæ€§ã‚’マニフェストã«è¨­å®šã§ãã¾ã™ã€‚
ルート アクティビティ属性ã®è¨­å®šã¯ã€ã‚¿ã‚¹ã‚¯ã‚¹ã‚¿ãƒƒã‚¯å†…ã®ã™ã¹ã¦ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«é©ç”¨ã•れã¾ã™ã€‚
-ãŸã¨ãˆã°ã€ãƒ«ãƒ¼ãƒˆ アクティビティã«ã‚ˆã‚Š
+ãŸã¨ãˆã°ã€ãƒ«ãƒ¼ãƒˆ アクティビティã«ã‚ˆã‚Š
<code>android:resizeableActivity</code> ㌠true ã«è¨­å®šã•れるã¨ã€ã‚¿ã‚¹ã‚¯ スタック内ã®ã™ã¹ã¦ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®ã‚µã‚¤ã‚ºã‚’変更ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
</p>
@@ -175,7 +175,7 @@ TV 端末ã§ã€ã‚¢ãƒ—リãŒãƒ”クãƒãƒ£ イン ピクãƒãƒ£ モードã§å‹•ç”»ã‚
<h4 id="resizeableActivity">android:resizeableActivity</h4>
<p>
- マルムウィンドウ ディスプレイを有効ã¾ãŸã¯ç„¡åйã«ã™ã‚‹ã«ã¯ã€ã“ã®å±žæ€§ã‚’マニフェスト㮠<code>&lt;activity&gt;</code> ノードã¾ãŸã¯
+ マルムウィンドウ ディスプレイを有効ã¾ãŸã¯ç„¡åйã«ã™ã‚‹ã«ã¯ã€ã“ã®å±žæ€§ã‚’マニフェスト㮠<code>&lt;activity&gt;</code> ノードã¾ãŸã¯
<code>&lt;application&gt;</code> ノードã«è¨­å®šã—ã¾ã™ã€‚
</p>
@@ -361,7 +361,7 @@ android:supportsPictureInPicture=["true" | "false"]
<h3 id="entering-pip">ピクãƒãƒ£ イン ピクãƒãƒ£ モードã«ã™ã‚‹</h3>
<p>
- アクティビティをピクãƒãƒ£ イン ピクãƒãƒ£ モードã«ã™ã‚‹ã«ã¯ã€æ–°ã—ã„メソッド
+ アクティビティをピクãƒãƒ£ イン ピクãƒãƒ£ モードã«ã™ã‚‹ã«ã¯ã€æ–°ã—ã„メソッド
<code>Activity.enterPictureInPictureMode()</code> を呼ã³å‡ºã—ã¾ã™ã€‚端末ãŒãƒ”クãƒãƒ£ イン ピクãƒãƒ£ モードをサãƒãƒ¼ãƒˆã—ãªã„å ´åˆã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®åŠ¹æžœã¯ã‚りã¾ã›ã‚“。
詳細ã«ã¤ã„ã¦ã¯ã€<a href="picture-in-picture.html">ピクãƒãƒ£ イン ピクãƒãƒ£</a>ã«é–¢ã™ã‚‹ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’ã”覧ãã ã•ã„。
@@ -371,7 +371,7 @@ android:supportsPictureInPicture=["true" | "false"]
<p>
æ–°ã—ã„アクティビティを起動ã™ã‚‹ã¨ãã«ã€å¯èƒ½ã§ã‚れã°ã€æ–°ã—ã„アクティビティをç¾åœ¨ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®éš£ã«è¡¨ç¤ºã™ã‚‹å¿…用ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’システムã«ç¤ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚
-ãã†ã™ã‚‹ã«ã¯ã€ãƒ•ラグ
+ãã†ã™ã‚‹ã«ã¯ã€ãƒ•ラグ
<code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code> を使用ã—ã¾ã™ã€‚
ã“ã®ãƒ•ラグを渡ã™ã¨ã€æ¬¡ã®å‹•作ãŒãƒªã‚¯ã‚¨ã‚¹ãƒˆã•れã¾ã™ã€‚
@@ -434,10 +434,10 @@ android:supportsPictureInPicture=["true" | "false"]
</dt>
<dd>
- {@link android.view.View#startDrag View.startDrag()} ã®æ–°ã—ã„エイリアスã§ã™ã€‚ç•°ãªã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ間ã®ãƒ‰ãƒ©ãƒƒã‚°ï¼†ãƒ‰ãƒ­ãƒƒãƒ—を有効ã«ã™ã‚‹ã«ã¯ã€æ–°ã—ã„フラグ
+ {@link android.view.View#startDrag View.startDrag()} ã®æ–°ã—ã„エイリアスã§ã™ã€‚ç•°ãªã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ間ã®ãƒ‰ãƒ©ãƒƒã‚°ï¼†ãƒ‰ãƒ­ãƒƒãƒ—を有効ã«ã™ã‚‹ã«ã¯ã€æ–°ã—ã„フラグ
<code>View.DRAG_FLAG_GLOBAL</code> を渡ã—ã¾ã™ã€‚
-URI パーミッションをå—ã‘å–ã‚‹å´ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«ä»˜ä¸Žã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã€å¿…è¦ã«å¿œã˜ã¦ã€æ–°ã—ã„フラグ
-<code>View.DRAG_FLAG_GLOBAL_URI_READ</code> ã¾ãŸã¯
+URI パーミッションをå—ã‘å–ã‚‹å´ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«ä»˜ä¸Žã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã€å¿…è¦ã«å¿œã˜ã¦ã€æ–°ã—ã„フラグ
+<code>View.DRAG_FLAG_GLOBAL_URI_READ</code> ã¾ãŸã¯
<code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code> を渡ã—ã¾ã™ã€‚
</dd>
@@ -581,7 +581,7 @@ URI パーミッションをå—ã‘å–ã‚‹å´ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«ä»˜ä¸Žã™ã
<h3 id="test-disabled-mw">マルムウィンドウã®ã‚µãƒãƒ¼ãƒˆã‚’無効ã«ã—ã¦ã„ã‚‹å ´åˆ</h3>
<p>
-
+
<code>android:resizableActivity="false"</code> を設定ã—ã¦ã€ãƒžãƒ«ãƒ ウィンドウã®ã‚µãƒãƒ¼ãƒˆã‚’無効ã«ã—ãŸå ´åˆã¯ã€Android N を実行ã—ã¦ã„る端末ã§ã‚¢ãƒ—リを起動ã—ã€ã‚¢ãƒ—リをフリーフォーム モードãŠã‚ˆã³åˆ†å‰²ç”»é¢ãƒ¢ãƒ¼ãƒ‰ã«ã™ã‚‹ã“ã¨ã‚’試ã¿ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
アプリをマルムウィンドウ モードã«ã™ã‚‹ã“ã¨ã‚’試ã¿ãŸã¨ãã€ã‚¢ãƒ—リãŒå…¨ç”»é¢ãƒ¢ãƒ¼ãƒ‰ã®ã¾ã¾ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。
diff --git a/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd b/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd
index faf63ea19f34..0bb4a75d211c 100644
--- a/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd
@@ -72,8 +72,8 @@ PIP をアプリã«è¿½åŠ ã™ã‚‹ã«ã¯ã€PIP をサãƒãƒ¼ãƒˆã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“
<h2 id="declaring">アクティビティãŒãƒ”クãƒãƒ£ イン ピクãƒãƒ£ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹ã“ã¨ã‚’宣言ã™ã‚‹</h2>
-<p>デフォルトã§ã¯ã€ã‚·ã‚¹ãƒ†ãƒ ã¯ã‚¢ãƒ—リ㮠PIP を自動的ã«ã‚µãƒãƒ¼ãƒˆã—ã¾ã›ã‚“。アプリ㧠PIP をサãƒãƒ¼ãƒˆã™ã‚‹å ´åˆã€ãƒžãƒ‹ãƒ•ェストã§
-<code>android:supportsPictureInPicture</code> ãŠã‚ˆã³
+<p>デフォルトã§ã¯ã€ã‚·ã‚¹ãƒ†ãƒ ã¯ã‚¢ãƒ—リ㮠PIP を自動的ã«ã‚µãƒãƒ¼ãƒˆã—ã¾ã›ã‚“。アプリ㧠PIP をサãƒãƒ¼ãƒˆã™ã‚‹å ´åˆã€ãƒžãƒ‹ãƒ•ェストã§
+<code>android:supportsPictureInPicture</code> ãŠã‚ˆã³
<code>android:resizeableActivity</code> ã‚’ <code>true</code> ã«è¨­å®šã—ã¦ã€å‹•画アクティビティを登録ã—ã¾ã™ã€‚
ã¾ãŸã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã®è¨­å®šå¤‰æ›´ã‚’処ç†ã™ã‚‹ã‚ˆã†ã«æŒ‡å®šã—ã¦ã€PIP モードã®é·ç§»ä¸­ã«ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆå¤‰æ›´ãŒç™ºç”Ÿã—ã¦ã‚‚ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒå†é–‹ã—ãªã„よã†ã«ã—ã¾ã™ã€‚
@@ -120,14 +120,14 @@ public void onActionClicked(Action action) {
<p class="img-caption"><strong>図 1.</strong> メディア コントロール ãƒãƒ¼ä¸Šã® [Picture-in-picture] ボタン
</p>
-<p>Android N ã«ã¯ã€æ–°ã—ã„
+<p>Android N ã«ã¯ã€æ–°ã—ã„
<code>PlaybackControlsRow.PictureInPictureAction</code> クラスãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ã“ã®ã‚¯ãƒ©ã‚¹ã¯ã€ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ« ãƒãƒ¼ã® PIP アクション㨠PIP アイコンã®ä½¿ç”¨æ–¹æ³•を定義ã—ã¾ã™ã€‚
</p>
<h2 id="handling_ui">ピクãƒãƒ£ イン ピクãƒãƒ£ã®å®Ÿè¡Œä¸­ã« UI を処ç†ã™ã‚‹</h2>
<p>アクティビティ㌠PIP モードを開始ã—ãŸã‚‰ã€å‹•ç”»ã®å†ç”Ÿã®ã¿ã‚’表示ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-アクティビティ㌠PIP ã‚’é–‹å§‹ã™ã‚‹å‰ã« UI è¦ç´ ã‚’削除ã—ã¦ã€å†ã³å…¨ç”»é¢è¡¨ç¤ºã«æˆ»ã£ãŸã‚‰ã€å‰Šé™¤ã—ãŸè¦ç´ ã‚’復元ã—ã¾ã™ã€‚<code>Activity.onPictureInPictureModeChanged()</code> ã¾ãŸã¯
+アクティビティ㌠PIP ã‚’é–‹å§‹ã™ã‚‹å‰ã« UI è¦ç´ ã‚’削除ã—ã¦ã€å†ã³å…¨ç”»é¢è¡¨ç¤ºã«æˆ»ã£ãŸã‚‰ã€å‰Šé™¤ã—ãŸè¦ç´ ã‚’復元ã—ã¾ã™ã€‚<code>Activity.onPictureInPictureModeChanged()</code> ã¾ãŸã¯
<code>Fragment.onPictureInPictureModeChanged()</code> をオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã€å¿…è¦ã«å¿œã˜ã¦ UI è¦ç´ ã‚’有効ã¾ãŸã¯ç„¡åйã«ã—ã¾ã™ã€‚次ã«ä¾‹ã‚’示ã—ã¾ã™ã€‚
@@ -152,7 +152,7 @@ public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
<p>アクティビティを PIP ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã¨ã€ã‚·ã‚¹ãƒ†ãƒ ã¯ãã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã‚’ä¸€æ™‚åœæ­¢çŠ¶æ…‹ã¨è¦‹ãªã—ã¦ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ㮠<code>onPause()</code> メソッドを呼ã³å‡ºã—ã¾ã™ã€‚
PIP モードã«ã‚ˆã£ã¦ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒä¸€æ™‚åœæ­¢ã«ãªã£ã¦ã‚‚ã€å‹•ç”»ã®å†ç”Ÿã¯ä¸€æ™‚åœæ­¢ã›ãšã€å†ç”Ÿã‚’ç¶šã‘ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-アクティビティã®
+アクティビティã®
<code>onPause()</code> メソッド㧠PIP を確èªã—ã€é©åˆ‡ã«å†ç”Ÿã‚’処ç†ã—ã¦ãã ã•ã„。次ã«ä¾‹ã‚’示ã—ã¾ã™ã€‚
</p>
@@ -180,7 +180,7 @@ public void onPause() {
</p>
-<p>å‹•ç”»å†ç”Ÿãƒªã‚¯ã‚¨ã‚¹ãƒˆã«å¯¾ã—ã¦å˜ä¸€ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒä½¿ç”¨ã•れるよã†ã«ã—ã€å¿…è¦ã«å¿œã˜ã¦ PIP モードã®åˆ‡ã‚Šæ›¿ãˆãŒè¡Œã‚れるよã†ã«ã™ã‚‹ã«ã¯ã€ãƒžãƒ‹ãƒ•ェストã§ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®
+<p>å‹•ç”»å†ç”Ÿãƒªã‚¯ã‚¨ã‚¹ãƒˆã«å¯¾ã—ã¦å˜ä¸€ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒä½¿ç”¨ã•れるよã†ã«ã—ã€å¿…è¦ã«å¿œã˜ã¦ PIP モードã®åˆ‡ã‚Šæ›¿ãˆãŒè¡Œã‚れるよã†ã«ã™ã‚‹ã«ã¯ã€ãƒžãƒ‹ãƒ•ェストã§ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®
<code>android:launchMode</code> ã‚’ <code>singleTask</code> ã«è¨­å®šã—ã¾ã™ã€‚
</p>
diff --git a/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd
index e77e4811c404..e4f9ae21769d 100644
--- a/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd
@@ -37,16 +37,16 @@ page.tags=androidn
<h2 id="accessing">外部ストレージã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®ã‚¢ã‚¯ã‚»ã‚¹</h2>
-<p><code>StorageManager</code> クラスを使用ã—ã¦ã€é©åˆ‡ãª
-<code>StorageVolume</code> インスタンスをå–å¾—ã—ã¾ã™ã€‚次ã«ã€ãã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®
+<p><code>StorageManager</code> クラスを使用ã—ã¦ã€é©åˆ‡ãª
+<code>StorageVolume</code> インスタンスをå–å¾—ã—ã¾ã™ã€‚次ã«ã€ãã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®
<code>StorageVolume.createAccessIntent()</code> メソッドを呼ã³å‡ºã—ã¦ã€ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã‚’作æˆã—ã¾ã™ã€‚ã“ã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã‚’使用ã—ã¦ã€å¤–部ストレージã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¾ã™ã€‚
リムーãƒãƒ–ル メディア ボリュームãªã©ã€ä½¿ç”¨ã§ãã‚‹ã™ã¹ã¦ã®ãƒœãƒªãƒ¥ãƒ¼ãƒ ã®ãƒªã‚¹ãƒˆã‚’å–å¾—ã™ã‚‹ã«ã¯ã€<code>StorageManager.getVolumesList()</code> を使用ã—ã¾ã™ã€‚
</p>
<p>特定ã®ãƒ•ァイルã«é–¢ã™ã‚‹æƒ…å ±ãŒã‚ã‚‹å ´åˆã¯ã€
-<code>StorageManager.getStorageVolume(File)</code> を使用ã—ã¦ã€ãã®ãƒ•ァイルをå«ã‚€
-<code>StorageVolume</code> ã‚’å–å¾—ã—ã¾ã™ã€‚ã“ã® <code>StorageVolume</code> ã§
+<code>StorageManager.getStorageVolume(File)</code> を使用ã—ã¦ã€ãã®ãƒ•ァイルをå«ã‚€
+<code>StorageVolume</code> ã‚’å–å¾—ã—ã¾ã™ã€‚ã“ã® <code>StorageVolume</code> ã§
<code>createAccessIntent()</code> を呼ã³å‡ºã—ã€ã“ã®ãƒ•ァイルã®å¤–部ストレージ ディレクトリã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¾ã™ã€‚
</p>
@@ -58,7 +58,7 @@ page.tags=androidn
</p>
-<p>次ã®ã‚³ãƒ¼ãƒ‰ スニペットã¯ã€ãƒ—ライマリ共有ストレージã®
+<p>次ã®ã‚³ãƒ¼ãƒ‰ スニペットã¯ã€ãƒ—ライマリ共有ストレージã®
<code>Pictures</code> ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’é–‹ãæ–¹æ³•ã®ä¾‹ã‚’示ã—ã¦ã„ã¾ã™ã€‚</p>
<pre>
@@ -109,7 +109,7 @@ startActivityForResult(intent, request_code);
&lt;/receiver&gt;
</pre>
-<p>ユーザー㌠SD カードãªã©ã®ãƒªãƒ ãƒ¼ãƒãƒ–ル メディアをマウントã™ã‚‹ã¨ã€ã‚·ã‚¹ãƒ†ãƒ ã¯
+<p>ユーザー㌠SD カードãªã©ã®ãƒªãƒ ãƒ¼ãƒãƒ–ル メディアをマウントã™ã‚‹ã¨ã€ã‚·ã‚¹ãƒ†ãƒ ã¯
{@link android.os.Environment#MEDIA_MOUNTED} 通知をé€ä¿¡ã—ã¾ã™ã€‚ã“ã®é€šçŸ¥ã¯ã€ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆ データ内㮠<code>StorageVolume</code> オブジェクトをæä¾›ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクトを使用ã—ã¦ã€ãƒªãƒ ãƒ¼ãƒãƒ–ル メディア上ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚
次ã®ä¾‹ã§ã¯ã€ãƒªãƒ ãƒ¼ãƒãƒ–ル メディア上㮠<code>Pictures</code> ディレクトリã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¾ã™ã€‚
@@ -127,7 +127,7 @@ startActivityForResult(intent, request_code);
<h2 id="best">ベスト プラクティス</h2>
<p>外部ディレクトリã®ã‚¢ã‚¯ã‚»ã‚¹ URI ã¯ã§ãã‚‹é™ã‚Šä¿æŒã—ã¦ãã ã•ã„。ãã†ã™ã‚Œã°ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ä½•åº¦ã‚‚ã‚¢ã‚¯ã‚»ã‚¹è¦æ±‚ã‚’ã™ã‚‹å¿…è¦ãŒãªããªã‚Šã¾ã™ã€‚
-ユーザーãŒã‚¢ã‚¯ã‚»ã‚¹ã‚’付与ã—ãŸã‚‰ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ã‚¢ã‚¯ã‚»ã‚¹ URI を指定ã—ã¦
+ユーザーãŒã‚¢ã‚¯ã‚»ã‚¹ã‚’付与ã—ãŸã‚‰ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ã‚¢ã‚¯ã‚»ã‚¹ URI を指定ã—ã¦
<code>getContentResolver().takePersistableUriPermssion()</code> を呼ã³å‡ºã—ã¾ã™ã€‚
システム㌠URI ã‚’ä¿æŒã—ã€ä»¥é™ã®ã‚¢ã‚¯ã‚»ã‚¹è¦æ±‚ã§ã¯ <code>RESULT_OK</code> ã‚’è¿”ã—ã¦ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ç¢ºèªã® UI を表示ã—ã¾ã›ã‚“。
diff --git a/docs/html-intl/intl/ja/preview/setup-sdk.jd b/docs/html-intl/intl/ja/preview/setup-sdk.jd
index 37fa08677d25..06b24ca74a26 100644
--- a/docs/html-intl/intl/ja/preview/setup-sdk.jd
+++ b/docs/html-intl/intl/ja/preview/setup-sdk.jd
@@ -92,7 +92,7 @@ page.image=images/cards/card-n-sdk_2x.png
<a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
<td width="100%">
MD5:19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
- SHA-1:9224bd4445cd7f653c4c294d362ccb195a2101e7
+ SHA-1:9224bd4445cd7f653c4c294d362ccb195a2101e7
</td>
</tr>
<table>
diff --git a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/index.jd b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/index.jd
index 837fc2bf5189..3fd3f475ed8e 100644
--- a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/index.jd
+++ b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/index.jd
@@ -55,7 +55,7 @@ android.app.Activity} インスタンスãŒå—ã‘å–ã‚‹é‡è¦ãªãƒ©ã‚¤ãƒ•サイã
</p>
<h2>レッスン</h2>
-
+
<dl>
<dt><b><a href="starting.html">アクティビティを開始ã™ã‚‹</a></b></dt>
<dd>アクティビティã®ãƒ©ã‚¤ãƒ•サイクルã«é–¢ã™ã‚‹åŸºæœ¬ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚¢ãƒ—リを起動ã™ã‚‹æ–¹æ³•ã€åŸºæœ¬çš„ãªã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ作æˆã®æ–¹æ³•ã«ã¤ã„ã¦å­¦ç¿’ã—ã¾ã™ã€‚
@@ -68,5 +68,5 @@ android.app.Activity} インスタンスãŒå—ã‘å–ã‚‹é‡è¦ãªãƒ©ã‚¤ãƒ•サイã
<dt><b><a href="recreating.html">アクティビティをå†ä½œæˆã™ã‚‹</a></b></dt>
<dd>アクティビティãŒç ´æ£„ã•れるã¨ãã®å‹•作ã¨ã€å¿…è¦ã«å¿œã˜ã¦ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã®çŠ¶æ…‹ã‚’å†æ§‹ç¯‰ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦å­¦ç¿’ã—ã¾ã™ã€‚
</dd>
-</dl>
+</dl>
diff --git a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/pausing.jd
index b837a0099592..fd21ef0714b9 100644
--- a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã®å­¦ç¿’内容</h2>
<ol>
<li><a href="#Pause">ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã‚’ä¸€æ™‚åœæ­¢ã™ã‚‹</a></li>
<li><a href="#Resume">アクティビティをå†é–‹ã™ã‚‹</a></li>
</ol>
-
+
<h2>関連ドキュメント</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">アクティビティ</a>
@@ -59,7 +59,7 @@ android.app.Activity#onPause()} ã®å‘¼ã³å‡ºã—ã‚’å—ä¿¡ã—ãŸå ´åˆã¯ã€ã‚¢ã‚¯
<h2 id="Pause">ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã‚’ä¸€æ™‚åœæ­¢ã™ã‚‹</h2>
-
+
<p>システムãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«å¯¾ã—㦠{@link android.app.Activity#onPause()} を呼ã³å‡ºã—ãŸå ´åˆã€æŠ€è¡“çš„ã«ã¯ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã¾ã éƒ¨åˆ†çš„ã«è¡¨ç¤ºã•れã¦ã„ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ãŒã€ã»ã¨ã‚“ã©ã®å ´åˆã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを離れã¦ã„ã¦ã€ã»ã©ãªãåœæ­¢çŠ¶æ…‹ã«ãªã‚‹å¾´å€™ã‚’示ã—ã¦ã„ã¾ã™ã€‚
通常ã€ä»¥ä¸‹ã‚’行ã†å ´åˆã«ã¯ã€{@link android.app.Activity#onPause()} コールãƒãƒƒã‚¯ã‚’使用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
diff --git a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/recreating.jd b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/recreating.jd
index 864737566621..5753f13ed10f 100644
--- a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã®å­¦ç¿’内容</h2>
<ol>
<li><a href="#SaveState">自分ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ状態をä¿å­˜ã™ã‚‹</a></li>
<li><a href="#RestoreState">自分ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ状態をリストアã™ã‚‹</a></li>
</ol>
-
+
<h2>関連ドキュメント</h2>
<ul>
<li><a href="{@docRoot}training/basics/supporting-devices/screens.html">ç•°ãªã‚‹ç”»é¢ã®ã‚µãƒãƒ¼ãƒˆ
@@ -73,7 +73,7 @@ onRestoreInstanceState()} 㨠{@link android.app.Activity#onCreate onCreate()}
<img src="{@docRoot}images/training/basics/basic-lifecycle-savestate.png" />
<p class="img-caption"><strong>図 2.</strong> システムãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã‚’åœæ­¢ã—å§‹ã‚ã‚‹ã¨ã€
-{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}(1)ãŒå‘¼ã³å‡ºã•れるãŸã‚ã€{@link android.app.Activity} インスタンスã®å†ä½œæˆã®å¿…è¦ãŒã‚ã‚‹å ´åˆã«å‚™ãˆã¦ã€ä¿å­˜ã™ã‚‹è¿½åŠ ã®çŠ¶æ…‹ãƒ‡ãƒ¼ã‚¿ã‚’æŒ‡å®šã§ãã¾ã™ã€‚アクティビティãŒç ´æ£„ã•れã€åŒã˜ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’å†ä½œæˆã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã€ã‚·ã‚¹ãƒ†ãƒ ã¯ï¼ˆ1)ã§å®šç¾©ã•れãŸçŠ¶æ…‹ãƒ‡ãƒ¼ã‚¿ã‚’ {@link android.app.Activity#onCreate onCreate()} メソッド(2)ã¨
+{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}(1)ãŒå‘¼ã³å‡ºã•れるãŸã‚ã€{@link android.app.Activity} インスタンスã®å†ä½œæˆã®å¿…è¦ãŒã‚ã‚‹å ´åˆã«å‚™ãˆã¦ã€ä¿å­˜ã™ã‚‹è¿½åŠ ã®çŠ¶æ…‹ãƒ‡ãƒ¼ã‚¿ã‚’æŒ‡å®šã§ãã¾ã™ã€‚アクティビティãŒç ´æ£„ã•れã€åŒã˜ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’å†ä½œæˆã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã€ã‚·ã‚¹ãƒ†ãƒ ã¯ï¼ˆ1)ã§å®šç¾©ã•れãŸçŠ¶æ…‹ãƒ‡ãƒ¼ã‚¿ã‚’ {@link android.app.Activity#onCreate onCreate()} メソッド(2)ã¨
{@link android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} メソッド(3)ã®ä¸¡æ–¹ã«æ¸¡ã—ã¾ã™ã€‚
@@ -105,7 +105,7 @@ public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-
+
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
@@ -138,7 +138,7 @@ onCreate()} ã§ã€ã„ãã¤ã‹ã®çŠ¶æ…‹ãƒ‡ãƒ¼ã‚¿ã‚’å¾©å…ƒã™ã‚‹æ–¹æ³•ã«ã¤ã„ã
&#64;Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Always call the superclass first
-
+
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore value of members from saved state
@@ -157,12 +157,12 @@ android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} ã®å®Ÿè£…ã
復元対象ã®ä¿å­˜æ¸ˆã¿ã®çŠ¶æ…‹ãŒã‚ã‚‹å ´åˆã®ã¿ {@link
android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} ãŒå‘¼ã³å‡ºã•れるãŸã‚ã€
{@link android.os.Bundle} ㌠null ã§ã‚ã‚‹ã‹ã©ã†ã‹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。</p>
-
+
<pre>
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
-
+
// Restore state members from saved instance
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/starting.jd b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/starting.jd
index 124c323b76b2..06fcf80b13c5 100644
--- a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã®å­¦ç¿’内容</h2>
<ol>
<li><a href="#lifecycle-states">ライフサイクル コールãƒãƒƒã‚¯ã‚’ç†è§£ã™ã‚‹</a></li>
@@ -17,7 +17,7 @@ trainingnavtop=true
<li><a href="#Create">æ–°ã—ã„インスタンスを作æˆã™ã‚‹</a></li>
<li><a href="#Destroy">アクティビティを破棄ã™ã‚‹</a></li>
</ol>
-
+
<h2>関連ドキュメント</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">アクティビティ</a></li>
@@ -83,7 +83,7 @@ trainingnavtop=true
</ul>
<!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
methods.</p>
<table>
<tr>
@@ -138,7 +138,7 @@ android.app.Activity#onResume()} ãŒç¶šãã¾ã™ã€‚</p>
-<h2 id="launching-activity">アプリã®ãƒ©ãƒ³ãƒãƒ£ãƒ¼ アクティビティを指定ã™ã‚‹</h2>
+<h2 id="launching-activity">アプリã®ãƒ©ãƒ³ãƒãƒ£ãƒ¼ アクティビティを指定ã™ã‚‹</h2>
<p>ユーザーãŒãƒ›ãƒ¼ãƒ ç”»é¢ã‹ã‚‰ã‚¢ãƒ—リã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’é¸æŠžã™ã‚‹ã¨ã€ã‚·ã‚¹ãƒ†ãƒ ã¯ã‚¢ãƒ—リ内ã§ã€Œãƒ©ãƒ³ãƒãƒ£ãƒ¼ã€ï¼ˆã¾ãŸã¯ã€Œãƒ¡ã‚¤ãƒ³ã€ï¼‰ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§ã‚ã‚‹ã¨å®£è¨€ã•れ㟠{@link android.app.Activity} ã«å¯¾ã—㦠{@link
android.app.Activity#onCreate onCreate()} メソッドを呼ã³å‡ºã—ã¾ã™ã€‚
@@ -151,7 +151,7 @@ android.app.Activity#onCreate onCreate()} メソッドを呼ã³å‡ºã—ã¾ã™ã€‚
<p>アプリã®ãƒ¡ã‚¤ãƒ³ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã¯ã€{@link
android.content.Intent#ACTION_MAIN MAIN} アクション㨠{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} カテゴリをå«ã‚€ <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
<intent-filter>}</a> を使用ã—ã¦ãƒžãƒ‹ãƒ•ェストã§å®£è¨€ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-次ã«ä¾‹ã‚’示ã—ã¾ã™ã€‚</p>
+次ã«ä¾‹ã‚’示ã—ã¾ã™ã€‚</p>
<pre>
&lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -180,7 +180,7 @@ android.app.Activity#onCreate onCreate()} を呼ã³å‡ºã™ã“ã¨ã«ã‚ˆã‚Šã€{@lin
</p>
-<p>アクティビティã®å­˜ç¶šæœŸé–“ã™ã¹ã¦ã«ã‚ãŸã‚Šã€ä¸€åº¦ã®ã¿ç™ºç”Ÿã™ã¹ã基本的ãªã‚¢ãƒ—リã®èµ·å‹•ロジックを実行ã™ã‚‹ãŸã‚ã®
+<p>アクティビティã®å­˜ç¶šæœŸé–“ã™ã¹ã¦ã«ã‚ãŸã‚Šã€ä¸€åº¦ã®ã¿ç™ºç”Ÿã™ã¹ã基本的ãªã‚¢ãƒ—リã®èµ·å‹•ロジックを実行ã™ã‚‹ãŸã‚ã®
{@link android.app.Activity#onCreate onCreate()} メソッドを実装ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ãŸã¨ãˆã°ã€
{@link android.app.Activity#onCreate onCreate()} ã®å®Ÿè£…ã§ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ インターフェースを定義ã—ã€å ´åˆã«ã‚ˆã£ã¦ã¯ã„ãã¤ã‹ã®ã‚¯ãƒ©ã‚¹ã‚¹ã‚³ãƒ¼ãƒ—ã®å¤‰æ•°ã‚’インスタンス化ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
</p>
@@ -200,10 +200,10 @@ public void onCreate(Bundle savedInstanceState) {
// Set the user interface layout for this Activity
// The layout file is defined in the project res/layout/main_activity.xml file
setContentView(R.layout.main_activity);
-
+
// Initialize member TextView so we can manipulate it later
mTextView = (TextView) findViewById(R.id.text_message);
-
+
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// For the main activity, make sure the app icon in the action bar
@@ -268,7 +268,7 @@ android.app.Activity#onDestroy} ã®é–“ã«ãれらを破棄ã™ã‚‹å¿…è¦ãŒã‚り
&#64;Override
public void onDestroy() {
super.onDestroy(); // Always call the superclass
-
+
// Stop method tracing that the activity started during onCreate()
android.os.Debug.stopMethodTracing();
}
diff --git a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/stopping.jd b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/stopping.jd
index 0007fe6e74e4..b267cc814514 100644
--- a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã®å­¦ç¿’内容</h2>
<ol>
<li><a href="#Stop">ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ã‚’åœæ­¢ã™ã‚‹</a></li>
<li><a href="#Start">アクティビティを開始/å†èµ·å‹•ã™ã‚‹</a></li>
</ol>
-
+
<h2>関連ドキュメント</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">アクティビティ</a>
@@ -78,7 +78,7 @@ android.app.Activity#onStop onStop()} を呼ã³å‡ºã™å‰ã«ã€å¸¸ã« {@link andr
{@link android.app.Activity#onStop()} を使用ã—ã¦ãƒ¡ãƒ¢ãƒªã®ãƒªãƒ¼ã‚¯ã‚’引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚るリソースを解放ã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚
</p>
-<p>{@link android.app.Activity#onPause onPause()} メソッドãŒ
+<p>{@link android.app.Activity#onPause onPause()} メソッドãŒ
{@link android.app.Activity#onStop()} ã®å‰ã«å‘¼ã³å‡ºã•れã¾ã™ãŒã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æƒ…報を書ã込むよã†ãªã€è¦æ¨¡ãŒå¤§ãã CPU ã«è² è·ãŒã‹ã‹ã‚‹ã‚·ãƒ£ãƒƒãƒˆãƒ€ã‚¦ãƒ³æ“作を実行ã™ã‚‹ãŸã‚ã«ã¯ {@link android.app.Activity#onStop onStop()}を使用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
</p>
@@ -152,13 +152,13 @@ android.app.Activity#onStart()} を呼ã³å‡ºã™ã‹ã‚‰ã§ã™ã€‚
&#64;Override
protected void onStart() {
super.onStart(); // Always call the superclass method first
-
+
// The activity is either being restarted or started for the first time
// so this is where we should make sure that GPS is enabled
- LocationManager locationManager =
+ LocationManager locationManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-
+
if (!gpsEnabled) {
// Create a dialog here that requests the user to enable GPS, and use an intent
// with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -169,8 +169,8 @@ protected void onStart() {
&#64;Override
protected void onRestart() {
super.onRestart(); // Always call the superclass method first
-
- // Activity being restarted from stopped state
+
+ // Activity being restarted from stopped state
}
</pre>
diff --git a/docs/html-intl/intl/ja/training/basics/intents/filters.jd b/docs/html-intl/intl/ja/training/basics/intents/filters.jd
index 1bcb26695329..3cf614d15336 100644
--- a/docs/html-intl/intl/ja/training/basics/intents/filters.jd
+++ b/docs/html-intl/intl/ja/training/basics/intents/filters.jd
@@ -152,7 +152,7 @@ android.app.Activity#startActivityForResult startActivityForResult()} メソッã
<p>アクティビティã§å®Ÿè¡Œã™ã‚‹ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’決定ã™ã‚‹ãŸã‚ã«ã€èµ·å‹•時ã«ä½¿ç”¨ã•れ㟠{@link
android.content.Intent} を読ã¿å–ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
-<p>アクティビティãŒé–‹å§‹ã•れãŸã‚‰ã€{@link android.app.Activity#getIntent()} を呼ã³å‡ºã—ã¦ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã—ãŸ
+<p>アクティビティãŒé–‹å§‹ã•れãŸã‚‰ã€{@link android.app.Activity#getIntent()} を呼ã³å‡ºã—ã¦ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティを開始ã—ãŸ
{@link android.content.Intent} ã‚’å–å¾—ã—ã¾ã™ã€‚アクティビティã®ãƒ©ã‚¤ãƒ•サイクル中ã¯ã„ã¤ã§ã‚‚ã“れを行ã†ã“ã¨ãŒã§ãã¾ã™ãŒã€é€šå¸¸ã¯ã€
{@link android.app.Activity#onCreate onCreate()} ã‚„ {@link android.app.Activity#onStart()} ãªã©ã®æ—©ã„段階ã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ã®é–“ã«è¡Œã†å¿…è¦ãŒã‚りã¾ã™ã€‚
</p>
diff --git a/docs/html-intl/intl/ja/training/basics/intents/sending.jd b/docs/html-intl/intl/ja/training/basics/intents/sending.jd
index 586bc1547a5c..d2a24f8e5331 100644
--- a/docs/html-intl/intl/ja/training/basics/intents/sending.jd
+++ b/docs/html-intl/intl/ja/training/basics/intents/sending.jd
@@ -93,7 +93,7 @@ Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);
ã•ã¾ã–ã¾ãª {@link
android.content.Intent#putExtra(String,String) putExtra()} メソッドを使用ã—ã¦ã€ç‰¹åˆ¥ãƒ‡ãƒ¼ã‚¿ã‚’ 1 ã¤ä»¥ä¸Šè¿½åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
-<p>デフォルトã§ã¯ã€ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã«å«ã¾ã‚Œã‚‹
+<p>デフォルトã§ã¯ã€ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã«å«ã¾ã‚Œã‚‹
{@link android.net.Uri} データã«åŸºã¥ã„ã¦ã€ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã«å¿…è¦ãªé©åˆ‡ãª MIME ã‚¿ã‚¤ãƒ—ã‚’ã‚·ã‚¹ãƒ†ãƒ ãŒæ±ºå®šã—ã¾ã™ã€‚インテント㫠{@link android.net.Uri} ãŒå«ã¾ã‚Œã¦ã„ãªã„å ´åˆã¯ã€é€šå¸¸ã¯ {@link android.content.Intent#setType setType()} を使用ã—ã¦ã€ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã«é–¢é€£ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã®ã‚¿ã‚¤ãƒ—を指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
MIME タイプã®è©³ç´°ãªæŒ‡å®šã«ã‚ˆã‚Šã€ã©ã®ç¨®é¡žã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒã‚¤ãƒ³ãƒ†ãƒ³ãƒˆã‚’å—ã‘å–ã‚‹ã‹ãŒæŒ‡å®šã•れã¾ã™ã€‚
diff --git a/docs/html-intl/intl/ja/training/material/animations.jd b/docs/html-intl/intl/ja/training/material/animations.jd
index 460147cb6260..06a3a56e1bfe 100644
--- a/docs/html-intl/intl/ja/training/material/animations.jd
+++ b/docs/html-intl/intl/ja/training/material/animations.jd
@@ -173,7 +173,7 @@ Enter 㨠Exit ã®é·ç§»ã‚„ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ間ã§ã® Shared elements é·
</ul>
<p>{@link android.transition.Visibility} クラスを拡張ã™ã‚‹ Transition ã¯ã™ã¹ã¦ã€EnterTransition ã¾ãŸã¯ ExitTransition ã¨ã—ã¦ã‚µãƒãƒ¼ãƒˆã•れã¾ã™ã€‚
-詳細ã«ã¤ã„ã¦ã¯ã€API リファレンスã®
+詳細ã«ã¤ã„ã¦ã¯ã€API リファレンスã®
{@link android.transition.Transition} クラスをã”覧ãã ã•ã„。</p>
<p>Android 5.0(API レベル 21)ã§ã¯ã€æ¬¡ã®å…±æœ‰è¦ç´ é·ç§»ã‚‚サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚</p>
@@ -226,7 +226,7 @@ Enter 㨠Exit ã®é·ç§»ã‚„ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ間ã§ã® Shared elements é·
&lt;/transitionSet>
</pre>
-<p><code>changeImageTransform</code> è¦ç´ ã¯
+<p><code>changeImageTransform</code> è¦ç´ ã¯
{@link android.transition.ChangeImageTransform} クラスã«å¯¾å¿œã—ã¾ã™ã€‚詳細ã«ã¤ã„ã¦ã¯ã€API リファレンス㮠{@link android.transition.Transition} ã‚’ã”覧ãã ã•ã„。
</p>
@@ -263,7 +263,7 @@ setSharedElementEnterTransition()} メソッドã¯ã€å‘¼ã³å‡ºã—å…ˆã®ã‚¢ã‚¯ãƒ†
有効ã«ã—ã¦ã„ãªã„ã¨ã€å‘¼ã³å‡ºã—å…ƒã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ㌠Exit é·ç§»ã‚’é–‹å§‹ã—ãŸã‚ã¨ã€window é·ç§»ï¼ˆã‚¹ã‚±ãƒ¼ãƒ«ã‚„フェードãªã©ï¼‰ãŒèµ·ãã¾ã™ã€‚
</p>
-<p>Enter é·ç§»ã‚’ã§ãã‚‹ã ã‘æ—©ãé–‹å§‹ã™ã‚‹ã«ã¯ã€å‘¼ã³å‡ºã—å…ˆã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§
+<p>Enter é·ç§»ã‚’ã§ãã‚‹ã ã‘æ—©ãé–‹å§‹ã™ã‚‹ã«ã¯ã€å‘¼ã³å‡ºã—å…ˆã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã§
{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
メソッドを使用ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã•らã«å°è±¡çš„㪠Enter é·ç§»ã«ãªã‚Šã¾ã™ã€‚</p>
@@ -321,7 +321,7 @@ imgContainerView.setOnClickListener(new View.OnClickListener() {
{@link android.view.View#setTransitionName View.setTransitionName()} メソッドを使用ã—ã¦ä¸¡æ–¹ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティã«å…±é€šã®è¦ç´ åを指定ã—ã¾ã™ã€‚
</p>
-<p>2 ã¤ç›®ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒçµ‚了ã—ãŸã¨ãã«ã‚·ãƒ¼ãƒ³ã®åˆ‡ã‚Šæ›¿ãˆã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’逆回転ã•ã›ã‚‹ã«ã¯ã€{@link android.app.Activity#finish Activity.finish()} ã®ä»£ã‚りã«
+<p>2 ã¤ç›®ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒçµ‚了ã—ãŸã¨ãã«ã‚·ãƒ¼ãƒ³ã®åˆ‡ã‚Šæ›¿ãˆã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’逆回転ã•ã›ã‚‹ã«ã¯ã€{@link android.app.Activity#finish Activity.finish()} ã®ä»£ã‚りã«
{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
メソッドを呼ã³å‡ºã—ã¾ã™ã€‚</p>
diff --git a/docs/html-intl/intl/ja/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/intl/ja/training/monitoring-device-state/battery-monitoring.jd
index c4aafe4ccf90..0b7d60250fe4 100644
--- a/docs/html-intl/intl/ja/training/monitoring-device-state/battery-monitoring.jd
+++ b/docs/html-intl/intl/ja/training/monitoring-device-state/battery-monitoring.jd
@@ -7,8 +7,8 @@ next.title=ホルダーã®è£…ç€çŠ¶æ…‹ã¨ã‚¿ã‚¤ãƒ—ã®ç‰¹å®šã¨ç›£è¦–
next.link=docking-monitoring.html
@jd:body
-
-<div id="tb-wrapper">
+
+<div id="tb-wrapper">
<div id="tb">
<h2>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã®å†…容</h2>
@@ -24,9 +24,9 @@ next.link=docking-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">インテントã¨ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆ フィルタ</a>
</ul>
-</div>
</div>
-
+</div>
+
<p>ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰æ›´æ–°ãŒé›»æ± æ¶ˆè²»é‡ã«åŠã¼ã™å½±éŸ¿ã‚’抑ãˆã‚‹ãŸã‚ã«æ›´æ–°ã®é »åº¦ã‚’変更ã™ã‚‹ã«ã¯ã€åˆã‚ã«ç¾åœ¨ã®é›»æ± æ®‹é‡ã¨å……電状態を調ã¹ã‚‹ã“ã¨ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚</p>
<p>ã‚¢ãƒ—ãƒªã®æ›´æ–°ãŒé›»æ± æ¶ˆè²»é‡ã«åŠã¼ã™å½±éŸ¿ã®åº¦åˆã„ã¯ã€ç«¯æœ«ã®é›»æ± æ®‹é‡ã¨å……電状態ã«ã‚ˆã£ã¦ç•°ãªã‚Šã¾ã™ã€‚AC é›»æºã‹ã‚‰ç«¯æœ«ã‚’å……é›»ã—ã¦ã„ã‚‹ã¨ãã¯ã€æ›´æ–°ã®å®Ÿè¡Œã«ã‚ˆã‚‹å½±éŸ¿ã¯ã”ãã‚ãšã‹ãªã®ã§ã€ã»ã¨ã‚“ã©ã®å ´åˆã¯ã€ç«¯æœ«ãŒ AC é›»æºã«æŽ¥ç¶šã•れã¦ã„ã‚‹é™ã‚Šã€æ›´æ–°é »åº¦ã‚’最大ã«ã—ã¦å·®ã—支ãˆã‚りã¾ã›ã‚“。逆ã«ã€ç«¯æœ«ãŒé›»æ± ã§é§†å‹•ã—ã¦ã„ã‚‹ã¨ãã¯ã€æ›´æ–°é »åº¦ã‚’下ã’ã‚‹ã¨é›»æ± æ¶ˆè²»é‡ã‚’抑ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
@@ -34,8 +34,8 @@ next.link=docking-monitoring.html
<p>åŒæ§˜ã«ã€é›»æ± æ®‹é‡ã‚’調ã¹ã‚‹ã¨ã€æ®‹é‡ãŒã”ãã‚ãšã‹ã§ã‚ã‚‹ã¨ãã«æ›´æ–°é »åº¦ã‚’下ã’ãŸã‚Šã€å ´åˆã«ã‚ˆã£ã¦ã¯åœæ­¢ã•ã›ãŸã‚Šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
-<h2 id="DetermineChargeState">ç¾åœ¨ã®å……電状態を特定ã™ã‚‹</h2>
-
+<h2 id="DetermineChargeState">ç¾åœ¨ã®å……電状態を特定ã™ã‚‹</h2>
+
<p>åˆã‚ã«ã€ç¾åœ¨ã®å……電状態を特定ã—ã¾ã™ã€‚{@link android.os.BatteryManager} ã«ã‚ˆã£ã¦é›»æ± ã¨å……電状態ã«é–¢ã™ã‚‹ã™ã¹ã¦ã®è©³ç´°æƒ…報㌠sticky {@link android.content.Intent} ã¨ã—ã¦ãƒ–ロードキャストã•れã¾ã™ãŒã€ã“ã®ä¸­ã«å……é›»çŠ¶æ…‹ãŒæ ¼ç´ã•れã¦ã„ã¾ã™ã€‚</p>
<p>ã“れ㯠sticky インテントã§ã‚ã‚‹ãŸã‚ã€{@link android.content.BroadcastReceiver} を登録ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。{@code registerReceiver} を呼ã³å‡ºã—ã€{@code null} をレシーãƒã¨ã—ã¦æ¸¡ã™ã ã‘ã§ï¼ˆæ¬¡ã®ã‚³ãƒ¼ãƒ‰ä¾‹ã‚’å‚照)ã€ç¾åœ¨ã®é›»æ± çŠ¶æ…‹ã®ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆãŒè¿”ã•れã¾ã™ã€‚ã“ã“ã§å®Ÿéš›ã® {@link android.content.BroadcastReceiver} オブジェクトを渡ã™ã“ã¨ã‚‚ã§ãã¾ã™ãŒã€ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã¯å¾Œã§æ›´æ–°ã«ã¤ã„ã¦ã®å‡¦ç†ã‚’行ã†ã®ã§ã€ã“れã¯å¿…è¦ã‚りã¾ã›ã‚“。</p>
@@ -58,7 +58,7 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
<p>一般的ã«ã¯ã€ç«¯æœ«ãŒ AC å……é›»å™¨ã«æŽ¥ç¶šã•れã¦ã„ã‚‹ã¨ãã¯ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰æ›´æ–°ã®é »åº¦ã‚’最大ã«ã—ã€USB 経由ã§å……電中ã®ã¨ãã¯é »åº¦ã‚’下ã’ã€é›»æ± ã§é§†å‹•中ã®ã¨ãã¯ã•らã«é »åº¦ã‚’下ã’ã¾ã™ã€‚</p>
-<h2 id="MonitorChargeState">充電状態ã®å¤‰åŒ–を監視ã™ã‚‹</h2>
+<h2 id="MonitorChargeState">充電状態ã®å¤‰åŒ–を監視ã™ã‚‹</h2>
<p>充電状態ã¯ã€ç«¯æœ«ãŒå……é›»å™¨ã«æŽ¥ç¶šã•れãŸã¨ãã«ã™ãã«å¤‰åŒ–ã™ã‚‹ã®ã§ã€å……電状態ã®å¤‰åŒ–を監視ã—ã€ãã®å¤‰åŒ–ã«å¿œã˜ã¦æ›´æ–°ã®é »åº¦ã‚’変更ã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚</p>
@@ -75,11 +75,11 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
<pre>public class PowerConnectionReceiver extends BroadcastReceiver {
&#64;Override
- public void onReceive(Context context, Intent intent) {
+ public void onReceive(Context context, Intent intent) {
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
-
+
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
@@ -87,7 +87,7 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
}</pre>
-<h2 id="CurrentLevel">ç¾åœ¨ã®é›»æ± æ®‹é‡ã‚’特定ã™ã‚‹</h2>
+<h2 id="CurrentLevel">ç¾åœ¨ã®é›»æ± æ®‹é‡ã‚’特定ã™ã‚‹</h2>
<p>状æ³ã«ã‚ˆã£ã¦ã¯ã€ç¾åœ¨ã®é›»æ± æ®‹é‡ãŒã‚ã‹ã‚‹ã¨ä¾¿åˆ©ãªã“ã¨ãŒã‚りã¾ã™ã€‚ãŸã¨ãˆã°ã€é›»æ± æ®‹é‡ãŒæ‰€å®šã®ãƒ¬ãƒ™ãƒ«ã‚’下回ã£ãŸå ´åˆã«ã‚¢ãƒ—リã®ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰æ›´æ–°ã®é »åº¦ã‚’下ã’ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
@@ -99,7 +99,7 @@ int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale;</pre>
-<h2 id="MonitorLevel">電池残é‡ã®å¤§ããªå¤‰åŒ–を監視ã™ã‚‹</h2>
+<h2 id="MonitorLevel">電池残é‡ã®å¤§ããªå¤‰åŒ–を監視ã™ã‚‹</h2>
<p>電池状態を継続的ã«ç›£è¦–ã™ã‚‹ã“ã¨ã¯ç°¡å˜ã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãã®å¿…è¦ã‚‚ã‚りã¾ã›ã‚“。</p>
diff --git a/docs/html-intl/intl/ja/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/intl/ja/training/monitoring-device-state/connectivity-monitoring.jd
index 82b0c6b01acb..6cead0500039 100644
--- a/docs/html-intl/intl/ja/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html-intl/intl/ja/training/monitoring-device-state/connectivity-monitoring.jd
@@ -11,7 +11,7 @@ next.link=manifest-receivers.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã®å†…容</h2>
@@ -27,7 +27,7 @@ next.link=manifest-receivers.html
<li><a href="{@docRoot}guide/components/intents-filters.html">インテントã¨ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆ フィルタ</a>
</ul>
-</div>
+</div>
</div>
<p>å復アラームã¨ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ サービスã®ç”¨é€”ã®ã†ã¡ä»£è¡¨çš„ãªã‚‚ã®ã¨ã—ã¦ã¯ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆ リソースã‹ã‚‰ã‚¢ãƒ—リã®ãƒ‡ãƒ¼ã‚¿ã‚’å®šæœŸçš„ã«æ›´æ–°ã™ã‚‹ãŸã‚ã®ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«è¨­å®šã‚„ã€ãƒ‡ãƒ¼ã‚¿ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã¸ã®æ ¼ç´ã€é•·æ™‚é–“ã«åŠã¶ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã®å®Ÿè¡Œãªã©ãŒã‚りã¾ã™ã€‚ã—ã‹ã—ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã«æŽ¥ç¶šã•れã¦ã„ãªã„ã¨ãã‚„ã€é€Ÿåº¦ãŒä½Žã™ãŽã‚‹ãŸã‚ã«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’完了ã§ããªã„å ´åˆã«ã¾ã§ã€æ›´æ–°ã‚’スケジューリングã™ã‚‹ãŸã‚ã«ç«¯æœ«ã‚’スリープ状態ã‹ã‚‰å¾©å¸°ã•ã›ã‚‹å¿…è¦ãŒã‚ã‚‹ã§ã—ょã†ã‹ã€‚</p>
@@ -35,18 +35,18 @@ next.link=manifest-receivers.html
<p>{@link android.net.ConnectivityManager} を使用ã™ã‚‹ã¨ã€ç«¯æœ«ãŒå®Ÿéš›ã«ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã«æŽ¥ç¶šã•れã¦ã„ã‚‹ã‹ã©ã†ã‹ã¨ã€æŽ¥ç¶šã•れã¦ã„ã‚‹å ´åˆã®æŽ¥ç¶šã‚¿ã‚¤ãƒ—を調ã¹ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
-<h2 id="DetermineConnection">インターãƒãƒƒãƒˆæŽ¥ç¶šã®æœ‰ç„¡ã‚’特定ã™ã‚‹</h2>
-
+<h2 id="DetermineConnection">インターãƒãƒƒãƒˆæŽ¥ç¶šã®æœ‰ç„¡ã‚’特定ã™ã‚‹</h2>
+
<p>端末ãŒã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã«æŽ¥ç¶šã•れã¦ã„ãªã„å ´åˆã¯ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆ リソースã«åŸºã¥ã更新をスケジューリングã™ã‚‹å¿…è¦æ€§ã¯ã‚りã¾ã›ã‚“。次ã®ã‚¹ãƒ‹ãƒšãƒƒãƒˆã¯ã€{@link android.net.ConnectivityManager} を使用ã—ã¦ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚’å•ã„åˆã‚ã›ã¦ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã«æŽ¥ç¶šã—ã¦ã„ã‚‹ã‹ã©ã†ã‹ã‚’特定ã™ã‚‹æ–¹æ³•を示ã™ã‚‚ã®ã§ã™ã€‚</p>
<pre>ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
-
+
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
-<h2 id="DetermineType">インターãƒãƒƒãƒˆæŽ¥ç¶šã®ã‚¿ã‚¤ãƒ—を特定ã™ã‚‹</h2>
+<h2 id="DetermineType">インターãƒãƒƒãƒˆæŽ¥ç¶šã®ã‚¿ã‚¤ãƒ—を特定ã™ã‚‹</h2>
<p>ç¾åœ¨ä½¿ç”¨å¯èƒ½ãªã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆæŽ¥ç¶šã®ã‚¿ã‚¤ãƒ—も調ã¹ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
@@ -59,7 +59,7 @@ boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
<p>æ›´æ–°ã‚’åœæ­¢ã—ãŸå ´åˆã¯ã€æŽ¥ç¶šçŠ¶æ…‹ã®å¤‰åŒ–ã‚’å—ä¿¡ã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚インターãƒãƒƒãƒˆæŽ¥ç¶šãŒç¢ºç«‹ã•れãŸã‚‰æ›´æ–°ã‚’å†é–‹ã§ãるよã†ã«ã™ã‚‹ãŸã‚ã§ã™ã€‚</p>
-<h2 id="MonitorChanges">接続状態ã®å¤‰åŒ–を監視ã™ã‚‹</h2>
+<h2 id="MonitorChanges">接続状態ã®å¤‰åŒ–を監視ã™ã‚‹</h2>
<p>接続状態ã®è©³ç´°ãŒå¤‰åŒ–ã™ã‚‹ã¨ã€{@link android.net.ConnectivityManager} ã«ã‚ˆã£ã¦ {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}({@code "android.net.conn.CONNECTIVITY_CHANGE"})アクションãŒãƒ–ロードキャストã•れã¾ã™ã€‚アプリã®ãƒžãƒ‹ãƒ•ェスト内ã§ãƒ–ロードキャスト レシーãƒã‚’登録ã—ã€ã“ã®ã‚ˆã†ãªå¤‰åŒ–を検出ã™ã‚‹ã“ã¨ã§ã€ãれã«å¿œã˜ã¦ã‚¢ãƒ—リã®ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰æ›´æ–°ã‚’å†é–‹ï¼ˆã¾ãŸã¯åœæ­¢ï¼‰ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
diff --git a/docs/html-intl/intl/ja/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/intl/ja/training/monitoring-device-state/docking-monitoring.jd
index 9c0e05435cd4..7d227dfc38b0 100644
--- a/docs/html-intl/intl/ja/training/monitoring-device-state/docking-monitoring.jd
+++ b/docs/html-intl/intl/ja/training/monitoring-device-state/docking-monitoring.jd
@@ -10,7 +10,7 @@ next.link=connectivity-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã®å†…容</h2>
@@ -26,7 +26,7 @@ next.link=connectivity-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">インテントã¨ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆ フィルタ</a>
</ul>
-</div>
+</div>
</div>
<p>Android æ­è¼‰ç«¯æœ«ã‚’装ç€ã§ãるホルダーã®ç¨®é¡žã«ã¯ã€ã•ã¾ã–ã¾ãªã‚‚ã®ãŒã‚りã¾ã™ã€‚ãŸã¨ãˆã°ã€è»Šè¼‰ç”¨ã‚„家庭用ã®ãƒ›ãƒ«ãƒ€ãƒ¼ãŒã‚りã€ãƒ‡ã‚¸ã‚¿ãƒ«ã‹ã‚¢ãƒŠãƒ­ã‚°ã‹ã¨ã„ã†åŒºåˆ¥ã‚‚ã‚りã¾ã™ã€‚ホルダー装ç€çŠ¶æ…‹ã¯ä¸€èˆ¬çš„ã«ã€å……電状態ã¨å¯†æŽ¥ã«ãƒªãƒ³ã‚¯ã—ã¦ã„ã¾ã™ã€‚多ãã®ãƒ›ãƒ«ãƒ€ãƒ¼ã¯ã€è£…ç€ã•れã¦ã„る端末ã«é›»åŠ›ã‚’ä¾›çµ¦ã—ã¦ã„ã‚‹ã‹ã‚‰ã§ã™ã€‚</p>
@@ -36,8 +36,8 @@ next.link=connectivity-monitoring.html
<p>ホルダー装ç€çŠ¶æ…‹ã‚‚ sticky {@link android.content.Intent} ã¨ã—ã¦ãƒ–ロードキャストã•れるã®ã§ã€ç«¯æœ«ãŒãƒ›ãƒ«ãƒ€ãƒ¼ã«è£…ç€ã•れã¦ã„ã‚‹ã‹ã©ã†ã‹ã¨ã€è£…ç€ã•れã¦ã„ã‚‹å ´åˆã®ãƒ›ãƒ«ãƒ€ãƒ¼ã®ã‚¿ã‚¤ãƒ—ã‚’å•ã„åˆã‚ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
-<h2 id="CurrentDockState">ç¾åœ¨ã®ãƒ›ãƒ«ãƒ€ãƒ¼è£…ç€çŠ¶æ…‹ã‚’ç‰¹å®šã™ã‚‹</h2>
-
+<h2 id="CurrentDockState">ç¾åœ¨ã®ãƒ›ãƒ«ãƒ€ãƒ¼è£…ç€çŠ¶æ…‹ã‚’ç‰¹å®šã™ã‚‹</h2>
+
<p>ホルダー装ç€çŠ¶æ…‹ã®è©³ç´°ã¯ã€{@link android.content.Intent#ACTION_DOCK_EVENT} アクション㮠sticky ブロードキャストã«ã‚¨ã‚¯ã‚¹ãƒˆãƒ©ã¨ã—ã¦å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ã“れ㯠sticky ã§ã‚ã‚‹ãŸã‚ã€{@link android.content.BroadcastReceiver} を登録ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。次ã®ã‚³ãƒ¼ãƒ‰ä¾‹ã«ç¤ºã™ã‚ˆã†ã«ã€{@link android.content.Context#registerReceiver registerReceiver()} を呼ã³å‡ºã—ã€{@code null} をブロードキャスト レシーãƒã¨ã—ã¦æ¸¡ã—ã¾ã™ã€‚</p>
<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
@@ -49,9 +49,9 @@ Intent dockStatus = context.registerReceiver(null, ifilter);</pre>
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
-<h2 id="DockType">ç¾åœ¨ã®ãƒ›ãƒ«ãƒ€ãƒ¼ã®ã‚¿ã‚¤ãƒ—を特定ã™ã‚‹</h2>
+<h2 id="DockType">ç¾åœ¨ã®ãƒ›ãƒ«ãƒ€ãƒ¼ã®ã‚¿ã‚¤ãƒ—を特定ã™ã‚‹</h2>
-<p>端末ãŒãƒ›ãƒ«ãƒ€ãƒ¼ã«è£…ç€ã•れã¦ã„ã‚‹å ´åˆã®ãƒ›ãƒ«ãƒ€ãƒ¼ã®ã‚¿ã‚¤ãƒ—ã¯ã€æ¬¡ã® 4 ã¤ã®ã„ãšã‚Œã‹ã§ã™ã€‚
+<p>端末ãŒãƒ›ãƒ«ãƒ€ãƒ¼ã«è£…ç€ã•れã¦ã„ã‚‹å ´åˆã®ãƒ›ãƒ«ãƒ€ãƒ¼ã®ã‚¿ã‚¤ãƒ—ã¯ã€æ¬¡ã® 4 ã¤ã®ã„ãšã‚Œã‹ã§ã™ã€‚
<ul><li>カー</li>
<li>å“上</li>
<li>ローエンド(アナログ)å“上</li>
@@ -60,12 +60,12 @@ boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
<p>最後㮠2 ã¤ã¯ã€Android API レベル 11 ã§è¿½åŠ ã•れãŸã‚‚ã®ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€ãƒ›ãƒ«ãƒ€ãƒ¼ã®ã‚¿ã‚¤ãƒ—ã ã‘ãŒã‚ã‹ã‚Œã°ã‚ˆãã€ãƒ‡ã‚¸ã‚¿ãƒ«ã¨ã‚¢ãƒŠãƒ­ã‚°ã®åŒºåˆ¥ã¯å•ã‚ãªã„ã¨ã„ã†å ´åˆã¯ã€æ¬¡ã®ã‚ˆã†ã« 3 ã¤ã™ã¹ã¦ã«ã¤ã„ã¦èª¿ã¹ã‚‹ã¨ã‚ˆã„ã§ã—ょã†ã€‚</p>
<pre>boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
-boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
+boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
dockState == EXTRA_DOCK_STATE_LE_DESK ||
dockState == EXTRA_DOCK_STATE_HE_DESK;</pre>
-<h2 id="MonitorDockState">ホルダーã®è£…ç€çŠ¶æ…‹ã¾ãŸã¯ã‚¿ã‚¤ãƒ—ã®å¤‰åŒ–を監視ã™ã‚‹</h2>
+<h2 id="MonitorDockState">ホルダーã®è£…ç€çŠ¶æ…‹ã¾ãŸã¯ã‚¿ã‚¤ãƒ—ã®å¤‰åŒ–を監視ã™ã‚‹</h2>
<p>端末ãŒãƒ›ãƒ«ãƒ€ãƒ¼ã«è£…ç€ã•れãŸã‚Šã€è£…ç€ãŒè§£é™¤ã•れãŸã‚Šã™ã‚‹ãŸã³ã«ã€{@link android.content.Intent#ACTION_DOCK_EVENT} アクションãŒãƒ–ロードキャストã•れã¾ã™ã€‚端末ã®ãƒ›ãƒ«ãƒ€ãƒ¼è£…ç€çŠ¶æ…‹ã®å¤‰åŒ–を監視ã™ã‚‹ã«ã¯ã€æ¬¡ã®ã‚³ãƒ¼ãƒ‰ä¾‹ã«ç¤ºã™ã‚ˆã†ã«ã€ã‚¢ãƒ—リã®ãƒžãƒ‹ãƒ•ェスト内ã§ãƒ–ロードキャスト レシーãƒã‚’登録ã—ã¾ã™ã€‚</p>
diff --git a/docs/html-intl/intl/ja/training/monitoring-device-state/index.jd b/docs/html-intl/intl/ja/training/monitoring-device-state/index.jd
index 07897b1f0280..9a983e9a0438 100644
--- a/docs/html-intl/intl/ja/training/monitoring-device-state/index.jd
+++ b/docs/html-intl/intl/ja/training/monitoring-device-state/index.jd
@@ -7,10 +7,10 @@ next.link=battery-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
-<h2>ä¾å­˜é–¢ä¿‚ã¨å‰ææ¡ä»¶</h2>
+<h2>ä¾å­˜é–¢ä¿‚ã¨å‰ææ¡ä»¶</h2>
<ul>
<li>Android 2.0(API レベル 5)以上</li>
<li>「<a href="{@docRoot}guide/components/intents-filters.html">インテントã¨ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆ フィルタ</a>ã€ã‚’読ã¿çµ‚ãˆã¦ã„ã‚‹ã“ã¨</li>
@@ -21,19 +21,19 @@ next.link=battery-monitoring.html
<li><a href="{@docRoot}guide/components/services.html">サービス</a>
</ul>
-</div>
+</div>
</div>
<p>アプリを開発ã™ã‚‹ã¨ãã¯ã€ãƒ›ã‚¹ãƒˆç«¯æœ«ã®é›»æ± æ¶ˆè²»é‡ã¸ã®å½±éŸ¿ã‚’抑ãˆã‚‹ã‚ˆã†å¿ƒãŒã‘ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã“ã®ã‚¯ãƒ©ã‚¹ã‚’修了ã™ã‚‹ã¨ã€é–‹ç™ºã™ã‚‹ã‚¢ãƒ—リã®ä¸­ã§ãƒ›ã‚¹ãƒˆç«¯æœ«ã®çŠ¶æ…‹ã‚’ç›£è¦–ã—ã€ãれã«åŸºã¥ã„ã¦æ©Ÿèƒ½ã‚„動作を変更ã™ã‚‹ã“ã¨ãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚</p>
<p>接続ãŒå¤±ã‚れãŸã¨ãã¯ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ ã‚µãƒ¼ãƒ“ã‚¹ã®æ›´æ–°ã‚’åœæ­¢ã™ã‚‹ã€é›»æ± æ®‹é‡ãŒä½Žä¸‹ã—ãŸã¨ãã¯æ›´æ–°ã®é »åº¦ã‚’下ã’ã‚‹ã¨ã„ã£ãŸå¯¾ç­–を講ã˜ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ エクスペリエンスをæãªã†ã“ã¨ãªãã€ã‚¢ãƒ—リãŒé›»æ± æ¶ˆè²»é‡ã«åŠã¼ã™å½±éŸ¿ã‚’最å°é™ã«æŠ‘ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
-<h2>レッスン</h2>
-
+<h2>レッスン</h2>
+
<!-- Create a list of the lessons in this class along with a short description of each lesson.
These should be short and to the point. It should be clear from reading the summary whether someone
-will want to jump to a lesson or not.-->
-
+will want to jump to a lesson or not.-->
+
<dl>
<dt><b><a href="battery-monitoring.html">電池残é‡ã¨å……電状態ã®ç›£è¦–</a></b></dt>
<dd>ã‚¢ãƒ—ãƒªã®æ›´æ–°é »åº¦ã‚’変更ã™ã‚‹ãŸã‚ã«ç¾åœ¨ã®é›»æ± æ®‹é‡ã‚„充電状態ã®å¤‰åŒ–を特定ãŠã‚ˆã³ç›£è¦–ã™ã‚‹æ–¹æ³•を学習ã—ã¾ã™ã€‚</dd>
@@ -46,4 +46,4 @@ will want to jump to a lesson or not.-->
<dt><b><a href="manifest-receivers.html">オンデマンドã§ã®ãƒ–ロードキャスト ãƒ¬ã‚·ãƒ¼ãƒæ“作</a></b></dt>
<dd>マニフェスト内ã§å®£è¨€ã—ãŸãƒ–ロードキャスト レシーãƒã®ã‚ªãƒ³ã¨ã‚ªãƒ•を実行時ã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚端末ã®çŠ¶æ…‹ã«å¿œã˜ã¦ã€ä¸è¦ãªãƒ¬ã‚·ãƒ¼ãƒã‚’無効ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚効率を上ã’ã‚‹ãŸã‚ã«ã€çŠ¶æ…‹å¤‰åŒ–ãƒ¬ã‚·ãƒ¼ãƒã®ã‚ªãƒ³ã¨ã‚ªãƒ•を切り替ãˆã‚‹æ–¹æ³•ã‚„ã€ç«¯æœ«ãŒç‰¹å®šã®çŠ¶æ…‹ã«ãªã‚‹ã¾ã§ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’延期ã™ã‚‹æ–¹æ³•を学習ã—ã¾ã™ã€‚</dd>
-</dl> \ No newline at end of file
+</dl> \ No newline at end of file
diff --git a/docs/html-intl/intl/ja/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/intl/ja/training/monitoring-device-state/manifest-receivers.jd
index 7635d9f87c02..eff1221514dc 100644
--- a/docs/html-intl/intl/ja/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html-intl/intl/ja/training/monitoring-device-state/manifest-receivers.jd
@@ -9,7 +9,7 @@ previous.link=connectivity-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã®å†…容</h2>
@@ -23,7 +23,7 @@ previous.link=connectivity-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">インテントã¨ã‚¤ãƒ³ãƒ†ãƒ³ãƒˆ フィルタ</a>
</ul>
-</div>
+</div>
</div>
<p>端末ã®çŠ¶æ…‹å¤‰åŒ–ã‚’ç›£è¦–ã™ã‚‹æœ€ã‚‚å˜ç´”ãªæ–¹æ³•ã¯ã€ç›£è¦–対象ã¨ã™ã‚‹çŠ¶æ…‹ã”ã¨ã« {@link android.content.BroadcastReceiver} を作æˆã—ã€ãれãžã‚Œã‚’アプリã®ãƒžãƒ‹ãƒ•ェスト内ã§ç™»éŒ²ã™ã‚‹ã¨ã„ã†ã‚‚ã®ã§ã™ã€‚ã“れらã®å„レシーãƒå†…ã§ã€ç«¯æœ«ã®ç¾åœ¨ã®çŠ¶æ…‹ã«åŸºã¥ã„ã¦å復アラームã®ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’å†è¨­å®šã—ã¾ã™ã€‚</p>
@@ -31,10 +31,10 @@ previous.link=connectivity-monitoring.html
<p>ã“ã®æ–¹æ³•ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆã¯ã€ã“れらã®ãƒ¬ã‚·ãƒ¼ãƒã®ã„ãšã‚Œã‹ãŒãƒˆãƒªã‚¬ã•れるãŸã³ã«ç«¯æœ«ãŒã‚¹ãƒªãƒ¼ãƒ—ã‹ã‚‰å¾©å¸°ã™ã‚‹ã“ã¨ã§ã™ãŒã€ã“ã®ã“ã¨ã¯å¿…è¦ä»¥ä¸Šã«é »ç¹ã«ç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚</p>
<p>ã“ã‚Œã‚ˆã‚Šã‚‚è‰¯ã„æ–¹æ³•ã¯ã€å®Ÿè¡Œæ™‚ã«ãƒ–ロードキャスト レシーãƒã‚’オンã¾ãŸã¯ã‚ªãƒ•ã«ã™ã‚‹ã¨ã„ã†ã‚‚ã®ã§ã™ã€‚ã“ã®ã‚ˆã†ã«ã™ã‚Œã°ã€ãƒžãƒ‹ãƒ•ェスト内ã§å®£è¨€ã—ãŸãƒ¬ã‚·ãƒ¼ãƒã‚’å—動的アラームã¨ã—ã¦ä½¿ç”¨ã§ãã¾ã™ã€‚ã¤ã¾ã‚Šã€ã“ã®ã‚¢ãƒ©ãƒ¼ãƒ ã¯ã€å¿…è¦ãªã¨ãã«ã ã‘システム イベントã«ã‚ˆã£ã¦å‘¼ã³å‡ºã•れã¾ã™ã€‚</p>
-
-<h2 id="ToggleReceivers">効率を上ã’ã‚‹ãŸã‚ã«çŠ¶æ…‹å¤‰åŒ–ãƒ¬ã‚·ãƒ¼ãƒã®ã‚ªãƒ³ã¨ã‚ªãƒ•を切り替ãˆã‚‹ </h2>
-
+
+<h2 id="ToggleReceivers">効率を上ã’ã‚‹ãŸã‚ã«çŠ¶æ…‹å¤‰åŒ–ãƒ¬ã‚·ãƒ¼ãƒã®ã‚ªãƒ³ã¨ã‚ªãƒ•を切り替ãˆã‚‹ </h2>
+
<p>{@link android.content.pm.PackageManager} を使用ã™ã‚‹ã¨ã€ãƒžãƒ‹ãƒ•ェスト内ã§å®šç¾©ã•れã¦ã„るコンãƒãƒ¼ãƒãƒ³ãƒˆã®æœ‰åŠ¹åŒ–çŠ¶æ…‹ã‚’åˆ‡ã‚Šæ›¿ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã«ã¯ãƒ–ロードキャスト レシーãƒã‚‚該当ã™ã‚‹ã®ã§ã€æ¬¡ã«ç¤ºã™ã‚ˆã†ã«ã‚ªãƒ³ã¨ã‚ªãƒ•を切り替ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
<pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
diff --git a/docs/html-intl/intl/ja/training/multiscreen/adaptui.jd b/docs/html-intl/intl/ja/training/multiscreen/adaptui.jd
index 8b1e6acdee05..c738d3955dd8 100644
--- a/docs/html-intl/intl/ja/training/multiscreen/adaptui.jd
+++ b/docs/html-intl/intl/ja/training/multiscreen/adaptui.jd
@@ -10,9 +10,9 @@ previous.link=screendensities.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
-
+<div id="tb-wrapper">
+<div id="tb">
+
<h2>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã®å­¦ç¿’内容</h2>
<ol>
@@ -27,17 +27,17 @@ previous.link=screendensities.html
<ul>
<li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">ã‚¿ãƒ–ãƒ¬ãƒƒãƒˆã¨æºå¸¯ç«¯æœ«ã®ã‚µãƒãƒ¼ãƒˆ</a></li>
</ul>
-
+
<h2>試ã—ã¦ã¿ã‚‹</h2>
-
+
<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">サンプル アプリã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
<p>アプリãŒç¾åœ¨è¡¨ç¤ºã—ã¦ã„るレイアウトã«ã‚ˆã£ã¦ã€UI フローãŒç•°ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ãŸã¨ãˆã°ã€ã‚¢ãƒ—リãŒãƒ‡ãƒ¥ã‚¢ãƒ«ãƒšã‚¤ãƒ³ モードã§ã‚れã°ã€å·¦ãƒšã‚¤ãƒ³ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’クリックã™ã‚‹ã¨ã€å˜ã«å³ãƒšã‚¤ãƒ³ã«ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒè¡¨ç¤ºã•れるã ã‘ã§ã™ãŒã€ã‚·ãƒ³ã‚°ãƒ«ãƒšã‚¤ãƒ³ モードã§ã‚れã°ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯ï¼ˆåˆ¥ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティ内ã®ï¼‰ã‚³ãƒ³ãƒ†ãƒ³ãƒ„専用ã®ãƒšã‚¤ãƒ³ã«è¡¨ç¤ºã•れる必è¦ãŒã‚りã¾ã™ã€‚</p>
@@ -56,7 +56,7 @@ public class NewsReaderActivity extends FragmentActivity {
setContentView(R.layout.main_layout);
View articleView = findViewById(R.id.article);
- mIsDualPane = articleView != null &amp;&amp;
+ mIsDualPane = articleView != null &amp;&amp;
articleView.getVisibility() == View.VISIBLE;
}
}
@@ -116,7 +116,7 @@ public void onCreate(Bundle savedInstanceState) {
else {
/* use list navigation (spinner) */
actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
- SpinnerAdapter adap = new ArrayAdapter<String>(this,
+ SpinnerAdapter adap = new ArrayAdapter<String>(this,
R.layout.headline_item, CATEGORIES);
actionBar.setListNavigationCallbacks(adap, handler);
}
@@ -168,7 +168,7 @@ public class HeadlinesFragment extends ListFragment {
public class HeadlinesFragment extends ListFragment {
...
&#64;Override
- public void onItemClick(AdapterView&lt;?&gt; parent,
+ public void onItemClick(AdapterView&lt;?&gt; parent,
View view, int position, long id) {
if (null != mHeadlineSelectedListener) {
mHeadlineSelectedListener.onHeadlineSelected(position);
diff --git a/docs/html-intl/intl/ja/training/multiscreen/index.jd b/docs/html-intl/intl/ja/training/multiscreen/index.jd
index 9e0158401d45..f1ee24aefbe3 100644
--- a/docs/html-intl/intl/ja/training/multiscreen/index.jd
+++ b/docs/html-intl/intl/ja/training/multiscreen/index.jd
@@ -7,10 +7,10 @@ next.link=screensizes.html
@jd:body
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>å¿…è¦ãªçŸ¥è­˜ã¨å‰ææ¡ä»¶</h2>
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>å¿…è¦ãªçŸ¥è­˜ã¨å‰ææ¡ä»¶</h2>
<ul>
<li>Android 1.6 以上(サンプル アプリを使用ã™ã‚‹ã«ã¯ 2.1 以上)</li>
@@ -27,17 +27,17 @@ href="{@docRoot}tools/support-library/index.html">サãƒãƒ¼ãƒˆ ライブラリ</
<ul>
<li><a href="{@docRoot}guide/practices/screens_support.html">複数画é¢ã®ã‚µãƒãƒ¼ãƒˆ</a></li>
</ul>
-
-<h2>試ã—ã¦ã¿ã‚‹</h2>
-
-<div class="download-box">
+
+<h2>試ã—ã¦ã¿ã‚‹</h2>
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">サンプル アプリã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-</div>
-</div>
-
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
+
<p>Android ã¯ã€å°ã•ãªæºå¸¯é›»è©±ã‹ã‚‰å¤§ããªãƒ†ãƒ¬ãƒ“ã¾ã§ã€ç”»é¢ã‚µã‚¤ã‚ºã‚‚種類もã•ã¾ã–ã¾ãªãƒ‡ãƒã‚¤ã‚¹ã«æ­è¼‰ã§ãã¾ã™ã€‚ãã®ãŸã‚ã€ã§ãã‚‹é™ã‚Šå¤šãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒä½¿ç”¨ã§ãるよã†ã«ã€ã™ã¹ã¦ã®ç”»é¢ã‚µã‚¤ã‚ºã«å¯¾å¿œã§ãるよã†ã‚¢ãƒ—リを設計ã™ã‚‹ã“ã¨ãŒé‡è¦ã«ãªã‚Šã¾ã™ã€‚</p>
<p>ã—ã‹ã—ã€ã•ã¾ã–ã¾ãªç¨®é¡žã®ãƒ‡ãƒã‚¤ã‚¹ã«å¯¾å¿œã§ãã‚‹ã ã‘ã§ã¯å分ã§ã¯ã‚りã¾ã›ã‚“。画é¢ã‚µã‚¤ã‚ºã«ã‚ˆã£ã¦ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæ“作ã§ãã‚‹ã“ã¨ãŒæ±ºã¾ã£ã¦ãã‚‹ãŸã‚ã€æœ¬å½“ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’満足ã•ã›ã¦ã‚ˆã„å°è±¡ã‚’æŒã£ã¦ã‚‚らã†ãŸã‚ã«ã¯ã€ã‚¢ãƒ—リãŒå˜ã«è¤‡æ•°ã®ç”»é¢ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ã ã‘ã§ã¯ä¸å分ã§ã™: ç”»é¢è¨­å®šã”ã¨ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ エクスペリエンスを最é©åŒ–ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚<em></em><em></em></p>
@@ -48,17 +48,17 @@ href="{@docRoot}tools/support-library/index.html">サãƒãƒ¼ãƒˆ ライブラリ</
<p class="note"><strong>注:</strong> ã“ã®ã‚¯ãƒ©ã‚¹ã¨é–¢é€£ã‚µãƒ³ãƒ—ルã§ã¯ã€<a
href="{@docRoot}tools/support-library/index.html">サãƒãƒ¼ãƒˆ ライブラリ</a>を使用ã—ã¾ã™ã€‚ç†ç”±ã¯ã€Android 3.0 未満ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ <PH>{@link android.app.Fragment}</PH> API を使用ã™ã‚‹ãŸã‚ã§ã™ã€‚ã“ã®ã‚¯ãƒ©ã‚¹ã®ã™ã¹ã¦ã® API を使用ã™ã‚‹ã«ã¯ã€ãƒ©ã‚¤ãƒ–ラリをダウンロードã—ã¦ã€ã‚¢ãƒ—リã«è¿½åŠ ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚</p>
-
-
-<h2>レッスン</h2>
-
-<dl>
- <dt><b><a href="screensizes.html">ã•ã¾ã–ã¾ãªç”»é¢ã‚µã‚¤ã‚ºã®ã‚µãƒãƒ¼ãƒˆ</a></b></dt>
- <dd>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã¯ã€ã•ã¾ã–ã¾ãªç”»é¢ã‚µã‚¤ã‚ºã«é©ã—ãŸãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’(柔軟ãªãƒ“ュー サイズ〠<PH>{@link android.widget.RelativeLayout}</PH>ã€ç”»é¢ã‚µã‚¤ã‚ºã¨ç”»é¢ã®å‘ãã®ä¿®é£¾å­ã€ã‚¨ã‚¤ãƒªã‚¢ã‚¹ フィルタã€ãƒŠã‚¤ãƒ³ãƒ‘ッムビットマップを使用ã—ã¦ï¼‰è¨­è¨ˆã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦å­¦ç¿’ã—ã¾ã™ã€‚</dd>
-
- <dt><b><a href="screendensities.html">ã•ã¾ã–ã¾ãªç”»é¢å¯†åº¦ã®ã‚µãƒãƒ¼ãƒˆ</a></b></dt>
- <dd>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã¯ã€ï¼ˆå¯†åº¦éžä¾å­˜ãƒ”クセルを使用ã—ã€å„密度ã«é©ã—ãŸãƒ“ットマップをæä¾›ã—ã¦ï¼‰ãƒ”クセル密度ãŒç•°ãªã‚‹ç”»é¢ã‚’サãƒãƒ¼ãƒˆã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦å­¦ç¿’ã—ã¾ã™ã€‚</dd>
-
- <dt><b><a href="adaptui.html">順応性ã®ã‚ã‚‹ UI フローã®å®Ÿè£…</a></b></dt>
- <dd>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã¯ã€ã„ãã¤ã‹ã®ç”»é¢ã‚µã‚¤ã‚º/密度ã®çµ„ã¿åˆã‚ã›ã«é©ã—ãŸæ–¹æ³•(実行時ã«ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’検出ã™ã‚‹æ–¹æ³•ã€ç¾åœ¨ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã«åˆã‚ã›ã¦å¿œç­”ã™ã‚‹æ–¹æ³•ã€ç”»é¢è¨­å®šã®å¤‰æ›´ã‚’処ç†ã™ã‚‹æ–¹æ³•)㧠UI を実装ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦å­¦ç¿’ã—ã¾ã™ã€‚</dd>
-</dl>
+
+
+<h2>レッスン</h2>
+
+<dl>
+ <dt><b><a href="screensizes.html">ã•ã¾ã–ã¾ãªç”»é¢ã‚µã‚¤ã‚ºã®ã‚µãƒãƒ¼ãƒˆ</a></b></dt>
+ <dd>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã¯ã€ã•ã¾ã–ã¾ãªç”»é¢ã‚µã‚¤ã‚ºã«é©ã—ãŸãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’(柔軟ãªãƒ“ュー サイズ〠<PH>{@link android.widget.RelativeLayout}</PH>ã€ç”»é¢ã‚µã‚¤ã‚ºã¨ç”»é¢ã®å‘ãã®ä¿®é£¾å­ã€ã‚¨ã‚¤ãƒªã‚¢ã‚¹ フィルタã€ãƒŠã‚¤ãƒ³ãƒ‘ッムビットマップを使用ã—ã¦ï¼‰è¨­è¨ˆã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦å­¦ç¿’ã—ã¾ã™ã€‚</dd>
+
+ <dt><b><a href="screendensities.html">ã•ã¾ã–ã¾ãªç”»é¢å¯†åº¦ã®ã‚µãƒãƒ¼ãƒˆ</a></b></dt>
+ <dd>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã¯ã€ï¼ˆå¯†åº¦éžä¾å­˜ãƒ”クセルを使用ã—ã€å„密度ã«é©ã—ãŸãƒ“ットマップをæä¾›ã—ã¦ï¼‰ãƒ”クセル密度ãŒç•°ãªã‚‹ç”»é¢ã‚’サãƒãƒ¼ãƒˆã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦å­¦ç¿’ã—ã¾ã™ã€‚</dd>
+
+ <dt><b><a href="adaptui.html">順応性ã®ã‚ã‚‹ UI フローã®å®Ÿè£…</a></b></dt>
+ <dd>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã¯ã€ã„ãã¤ã‹ã®ç”»é¢ã‚µã‚¤ã‚º/密度ã®çµ„ã¿åˆã‚ã›ã«é©ã—ãŸæ–¹æ³•(実行時ã«ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’検出ã™ã‚‹æ–¹æ³•ã€ç¾åœ¨ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã«åˆã‚ã›ã¦å¿œç­”ã™ã‚‹æ–¹æ³•ã€ç”»é¢è¨­å®šã®å¤‰æ›´ã‚’処ç†ã™ã‚‹æ–¹æ³•)㧠UI を実装ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦å­¦ç¿’ã—ã¾ã™ã€‚</dd>
+</dl>
diff --git a/docs/html-intl/intl/ja/training/multiscreen/screendensities.jd b/docs/html-intl/intl/ja/training/multiscreen/screendensities.jd
index 3482d5c5117e..6f9136cc6124 100644
--- a/docs/html-intl/intl/ja/training/multiscreen/screendensities.jd
+++ b/docs/html-intl/intl/ja/training/multiscreen/screendensities.jd
@@ -12,8 +12,8 @@ next.link=adaptui.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
+<div id="tb-wrapper">
+<div id="tb">
<h2>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã®å­¦ç¿’内容</h2>
<ol>
@@ -29,15 +29,15 @@ next.link=adaptui.html
</ul>
<h2>試ã—ã¦ã¿ã‚‹</h2>
-
-<div class="download-box">
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">サンプル アプリã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
<p>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã¯ã€ç•°ãªã‚‹ãƒªã‚½ãƒ¼ã‚¹ã‚’生æˆã—ã€ã‹ã¤è§£åƒåº¦éžä¾å­˜å˜ä½ã‚’使用ã—ã¦ã€ç•°ãªã‚‹ç”»é¢å¯†åº¦ã‚’サãƒãƒ¼ãƒˆã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦å­¦ç¿’ã—ã¾ã™ã€‚</p>
@@ -48,8 +48,8 @@ next.link=adaptui.html
<p>ãŸã¨ãˆã°ã€2 ã¤ã®ãƒ“ューã®é–“ã«ã‚¹ãƒšãƒ¼ã‚¹ã‚’挿入ã™ã‚‹å ´åˆã¯ã€<code>px</code> ã§ã¯ãªã㦠<code>dp</code> を使用ã—ã¾ã™:</p>
<pre>
-&lt;Button android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+&lt;Button android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:text="&#64;string/clickme"
android:layout_marginTop="20dp" /&gt;
</pre>
@@ -57,8 +57,8 @@ next.link=adaptui.html
<p>テキスト サイズを指定ã™ã‚‹å ´åˆã¯ã€å¸¸ã« <code>sp</code> を使用ã—ã¾ã™:</p>
<pre>
-&lt;TextView android:layout_width="match_parent"
- android:layout_height="wrap_content"
+&lt;TextView android:layout_width="match_parent"
+ android:layout_height="wrap_content"
android:textSize="20sp" /&gt;
</pre>
diff --git a/docs/html-intl/intl/ja/training/multiscreen/screensizes.jd b/docs/html-intl/intl/ja/training/multiscreen/screensizes.jd
index 3655a33be2b9..49c179361c3e 100644
--- a/docs/html-intl/intl/ja/training/multiscreen/screensizes.jd
+++ b/docs/html-intl/intl/ja/training/multiscreen/screensizes.jd
@@ -10,8 +10,8 @@ next.link=screendensities.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
+<div id="tb-wrapper">
+<div id="tb">
<h2>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã®å­¦ç¿’内容</h2>
<ol>
@@ -30,26 +30,26 @@ next.link=screendensities.html
<li><a href="{@docRoot}guide/practices/screens_support.html">複数画é¢ã®ã‚µãƒãƒ¼ãƒˆ</a></li>
</ul>
-<h2>試ã—ã¦ã¿ã‚‹</h2>
-
-<div class="download-box">
+<h2>試ã—ã¦ã¿ã‚‹</h2>
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">サンプル アプリã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
<p>ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ã¯ã€ç•°ãªã‚‹ç”»é¢ã‚µã‚¤ã‚ºã‚’以下ã®ã‚ˆã†ãªæ–¹æ³•ã§ã‚µãƒãƒ¼ãƒˆã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦å­¦ç¿’ã—ã¾ã™:</p>
-<ul>
- <li>ç”»é¢ã«åŽã¾ã‚‹ã‚ˆã†ã«ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆ サイズをé©åˆ‡ã«å¤‰æ›´ã™ã‚‹</li>
- <li>ç”»é¢è¨­å®šã«åŸºã¥ã„ã¦é©åˆ‡ãª UI レイアウトを表示ã™ã‚‹</li>
+<ul>
+ <li>ç”»é¢ã«åŽã¾ã‚‹ã‚ˆã†ã«ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆ サイズをé©åˆ‡ã«å¤‰æ›´ã™ã‚‹</li>
+ <li>ç”»é¢è¨­å®šã«åŸºã¥ã„ã¦é©åˆ‡ãª UI レイアウトを表示ã™ã‚‹</li>
<li>é©åˆ‡ãªç”»é¢ã«é©åˆ‡ãªãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’é©ç”¨ã™ã‚‹</li>
- <li>é©åˆ‡ã«ã‚µã‚¤ã‚ºèª¿æ•´ã—ãŸãƒ“ットマップを表示ã™ã‚‹</li>
-</ul>
+ <li>é©åˆ‡ã«ã‚µã‚¤ã‚ºèª¿æ•´ã—ãŸãƒ“ットマップを表示ã™ã‚‹</li>
+</ul>
-<h2 id="TaskUseWrapMatchPar">「wrap_contentã€ã¨ã€Œmatch_parentã€ã‚’使用ã™ã‚‹</h2>
+<h2 id="TaskUseWrapMatchPar">「wrap_contentã€ã¨ã€Œmatch_parentã€ã‚’使用ã™ã‚‹</h2>
<p>レイアウトをã•ã¾ã–ã¾ãªç”»é¢ã‚µã‚¤ã‚ºã«æŸ”軟ã«å¯¾å¿œã•ã›ã‚‹ã«ã¯ã€ä¸€éƒ¨ã®ãƒ“ュー コンãƒãƒ¼ãƒãƒ³ãƒˆã®å¹…ã¨é«˜ã•ã« <code>"wrap_content"</code> 㨠<code>"match_parent"</code> を使用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚<code>"wrap_content"</code> を使用ã™ã‚‹ã¨ã€ãƒ“ューã®å¹…や高ã•ãŒãã®ãƒ“ュー内ã«ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒåŽã¾ã‚‹ã®ã«å¿…è¦ãªæœ€å°ã‚µã‚¤ã‚ºã«è¨­å®šã•れã¾ã™ã€‚一方ã€<code>"match_parent"</code>(API レベル 8 よりå‰ã®å称㯠<code>"fill_parent"</code>)を使用ã™ã‚‹ã¨ã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒãã®è¦ªãƒ“ューã®ã‚µã‚¤ã‚ºã«ä¸€è‡´ã™ã‚‹ã¾ã§æ‹¡å¤§ã•れã¾ã™ã€‚</p>
@@ -65,7 +65,7 @@ next.link=screendensities.html
<p class="img-caption"><strong>図 1.</strong> News Reader サンプル アプリã®ç¸¦è¡¨ç¤ºï¼ˆå·¦ï¼‰ã¨æ¨ªè¡¨ç¤ºï¼ˆå³ï¼‰</p>
-<h2 id="TaskUseRelativeLayout">RelativeLayout を使用ã™ã‚‹</h2>
+<h2 id="TaskUseRelativeLayout">RelativeLayout を使用ã™ã‚‹</h2>
<p>ãƒã‚¹ãƒˆã•れ㟠<PH>{@link android.widget.LinearLayout} インスタンスやã€</PH> <code>"wrap_content"</code> 㨠<code>"match_parent"</code> ã®ã‚µã‚¤ã‚ºã®çµ„ã¿åˆã‚ã›ã‚’使用ã™ã‚‹ã¨ã€ã‹ãªã‚Šè¤‡é›‘ãªãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’作æˆã§ãã¾ã™ã€‚ã—ã‹ã—〠<PH>{@link android.widget.LinearLayout}</PH> ã§ã¯ã€å­ãƒ“ューã®ç©ºé–“çš„ãªä½ç½®é–¢ä¿‚を正確ã«åˆ¶å¾¡ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 <PH>{@link android.widget.LinearLayout} ã®ãƒ“ューã¯ã€</PH> å˜ã«ä¸€åˆ—ã«ä¸¦ã¶ã ã‘ã§ã™ã€‚å­ãƒ“ューã«å¯¾ã—ã¦ç›´ç·šä»¥å¤–ã®ã•ã¾ã–ã¾ãªé…置を実ç¾ã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã¯ã€ <PH>{@link android.widget.RelativeLayout}</PH>を使用ã™ã‚‹ã“ã¨ã§ã†ã¾ãã„ãã“ã¨ãŒã‚ˆãã‚りã¾ã™ã€‚ãŸã¨ãˆã°ã€1 ã¤ã®å­ãƒ“ューを画é¢ã®å·¦å´ã«é…ç½®ã—ã€ã‚‚ㆠ1 ã¤ã®å­ãƒ“ューをå³å´ã«é…ç½®ã§ãã¾ã™ã€‚</p>
@@ -115,8 +115,8 @@ next.link=screendensities.html
<p>コンãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚µã‚¤ã‚ºãŒå¤‰æ›´ã•れã¦ã‚‚〠<PH>{@link android.widget.RelativeLayout.LayoutParams}</PH>ã§æŒ‡å®šã•れãŸã¨ãŠã‚Šã«ç©ºé–“çš„ãªä½ç½®é–¢ä¿‚ãŒç¶­æŒã•れã¦ã„ã‚‹ã“ã¨ãŒã‚ã‹ã‚Šã¾ã™ã€‚</p>
-
-<h2 id="TaskUseSizeQuali">サイズ修飾å­ã‚’使用ã™ã‚‹</h2>
+
+<h2 id="TaskUseSizeQuali">サイズ修飾å­ã‚’使用ã™ã‚‹</h2>
<p>柔軟ãªãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚„相対的ãªãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‹ã‚‰å¾—ã‚‰ã‚Œã‚‹æ©æµã¯ã€å‰ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§èª¬æ˜Žã—ãŸã“ã¨ãらã„ã§ã™ã€‚ã“れらã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®å†…部や周囲ã®ã‚¹ãƒšãƒ¼ã‚¹ã‚’引ãå»¶ã°ã™ã“ã¨ã§ã•ã¾ã–ã¾ãªç”»é¢ã«å¯¾å¿œã—ã¾ã™ãŒã€ãれãžã‚Œã®ç”»é¢ã‚µã‚¤ã‚ºã«åˆã£ãŸæœ€é«˜ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ エクスペリエンスを実ç¾ã—ã¦ã„ãªã„å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€ã‚¢ãƒ—リã§ã¯ã€æŸ”軟ãªãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã®å®Ÿè£…ã ã‘ã§ã¯ãªãã€ã•ã¾ã–ã¾ãªç”»é¢è¨­å®šã«åˆã‚ã›ãŸè¤‡æ•°ã®ä»£æ›¿ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚‚å¿…è¦ã«ãªã‚Šã¾ã™ã€‚ã“れã¯ã€<a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">設定修飾å­</a>を使用ã™ã‚‹ã“ã¨ã§å®Ÿç¾å¯èƒ½ã§ã™ã€‚設定修飾å­ã«ã‚ˆã‚Šã€ãƒ©ãƒ³ã‚¿ã‚¤ãƒ ãŒç¾åœ¨ã®ãƒ‡ãƒã‚¤ã‚¹ã®è¨­å®šã«åŸºã¥ã„ã¦é©åˆ‡ãªãƒªã‚½ãƒ¼ã‚¹ï¼ˆç”»é¢ã‚µã‚¤ã‚ºåˆ¥ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆ デザインãªã©ï¼‰ã‚’自動的ã«é¸æŠžã§ãã¾ã™ã€‚</p>
@@ -158,7 +158,7 @@ next.link=screendensities.html
<p>ãŸã ã—ã€Android 3.2 未満ã®ãƒ‡ãƒã‚¤ã‚¹ã§ã¯ã“ã®ä¿®é£¾å­ã¯æ©Ÿèƒ½ã—ã¾ã›ã‚“。ã“れ㯠<code>sw600dp</code> をサイズ修飾å­ã¨ã—ã¦èªè­˜ã§ããªã„ãŸã‚ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€å¼•ãç¶šã <code>large</code> 修飾å­ã‚‚使用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ãã“ã§ã€<code>res/layout-sw600dp/main.xml</code> ã¨åŒã˜å†…容㮠<code>res/layout-large/main.xml</code> ã¨ã„ã†åå‰ã®ãƒ•ァイルも必è¦ã«ãªã‚Šã¾ã™ã€‚次ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ã“ã®ã‚ˆã†ã«ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆ ファイルã®é‡è¤‡ã‚’é¿ã‘ã‚‹ãŸã‚ã®ãƒ†ã‚¯ãƒ‹ãƒƒã‚¯ã«ã¤ã„ã¦å­¦ç¿’ã—ã¾ã™ã€‚</p>
-<h2 id="TaskUseAliasFilters">レイアウト エイリアスを使用ã™ã‚‹</h2>
+<h2 id="TaskUseAliasFilters">レイアウト エイリアスを使用ã™ã‚‹</h2>
<p>最å°å¹…修飾å­ã¯ã€Android 3.2 以上ã§ã—ã‹åˆ©ç”¨ã§ãã¾ã›ã‚“。ã—ãŸãŒã£ã¦ã€æ—§ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ã®äº’æ›æ€§ã‚’ç¶­æŒã™ã‚‹ãŸã‚ã«ã€ã‚ã„ã¾ã„ãªã‚µã‚¤ã‚ºåˆ†é¡žï¼ˆsmallã€normalã€largeã€xlarge)も併用ã™ã‚‹ã“ã¨ãŒå¿…è¦ã§ã™ã€‚ãŸã¨ãˆã°ã€æºå¸¯ç«¯æœ«ã§ã¯ã‚·ãƒ³ã‚°ãƒ«ãƒšã‚¤ãƒ³ UIã€7 インムタブレットやテレビãªã©ã®å¤§ããªãƒ‡ãƒã‚¤ã‚¹ã§ã¯ãƒžãƒ«ãƒãƒšã‚¤ãƒ³ UI を表示ã™ã‚‹ã‚ˆã† UI を設計ã™ã‚‹å ´åˆã€ä»¥ä¸‹ã®ã‚ˆã†ãªãƒ•ァイルãŒå¿…è¦ã«ãªã‚Šã¾ã™:</p>
@@ -202,7 +202,7 @@ next.link=screendensities.html
<PH>Android 3.2 未満ã®ã‚¿ãƒ–レット/テレビ㯠{@code large} ã«ä¸€è‡´ã—ã€</PH>Android 3.2 以上ã®ã‚¿ãƒ–レット/テレビ㯠<code>sw600dp</code> ã«ä¸€è‡´ã—ã¾ã™ï¼‰ã‚¿ãƒ–レット/テレビã«é©ç”¨ã•れã¾ã™ã€‚</p>
-<h2 id="TaskUseOriQuali">ç”»é¢ã®å‘ãã®ä¿®é£¾å­ã‚’使用ã™ã‚‹</h2>
+<h2 id="TaskUseOriQuali">ç”»é¢ã®å‘ãã®ä¿®é£¾å­ã‚’使用ã™ã‚‹</h2>
<p>横表示ã¨ç¸¦è¡¨ç¤ºãŒä¸¡æ–¹ã¨ã‚‚æ­£ã—ã表示ã•れるレイアウトもã‚りã¾ã™ãŒã€ã»ã¨ã‚“ã©ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã¯èª¿æ•´ãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚以下ã«ã€News Reader サンプル アプリã®å„ç”»é¢ã®ã‚µã‚¤ã‚ºã¨å‘ãã§ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆãŒã©ã®ã‚ˆã†ã«è¡¨ç¤ºã•れるã‹ã‚’示ã—ã¾ã™:</p>
diff --git a/docs/html-intl/intl/ko/about/versions/android-5.0.jd b/docs/html-intl/intl/ko/about/versions/android-5.0.jd
index 48d542ef5f64..b4217c6dde80 100644
--- a/docs/html-intl/intl/ko/about/versions/android-5.0.jd
+++ b/docs/html-intl/intl/ko/about/versions/android-5.0.jd
@@ -381,7 +381,7 @@ sdk.platform.apiLevel=21
<h3 id="AudioPlayback">오디오 재ìƒ</h3>
<p>ì´ ì¶œì‹œ 버전ì—는 다ìŒê³¼ ê°™ì€ {@link android.media.AudioTrack}ì— ëŒ€í•œ ë³€ê²½ì‚¬í•­ì´ í¬í•¨ë˜ì–´ 있습니다.</p>
<ul>
- <li>ì´ì œ 앱ì—서 ë¶€ë™ ì†Œìˆ˜ì  í˜•ì‹({@link android.media.AudioFormat#ENCODING_PCM_FLOAT ENCODING_PCM_FLOAT})으로 오디오 ë°ì´í„°ë¥¼ 제공할 수 있습니다. ì´ë¥¼ 통해 ë” í° ìŒëŸ‰ë¹„, ë” ì¼ê´€ëœ ì •ë°€ë„ ë° ë” í° í—¤ë“œë£¸ì´ ê°€ëŠ¥í•´ì¡ŒìŠµë‹ˆë‹¤. ë¶€ë™ ì†Œìˆ˜ì  ì—°ì‚°ì€ ì¤‘ê°„ 과정 ê³„ì‚°ì— íŠ¹ížˆ 유용합니다. ìž¬ìƒ ì—”ë“œí¬ì¸íŠ¸ëŠ” 오디오 ë°ì´í„°ì— ë‚®ì€ ë¹„íŠ¸ 심ë„로 정수 형ì‹ì„ 사용합니다 (Android 5.0ì—서 ì¼ë¶€ ë‚´ë¶€ 파ì´í”„ë¼ì¸ì€ ì•„ì§ ë¶€ë™ ì†Œìˆ˜ì ì´ 아님).
+ <li>ì´ì œ 앱ì—서 ë¶€ë™ ì†Œìˆ˜ì  í˜•ì‹({@link android.media.AudioFormat#ENCODING_PCM_FLOAT ENCODING_PCM_FLOAT})으로 오디오 ë°ì´í„°ë¥¼ 제공할 수 있습니다. ì´ë¥¼ 통해 ë” í° ìŒëŸ‰ë¹„, ë” ì¼ê´€ëœ ì •ë°€ë„ ë° ë” í° í—¤ë“œë£¸ì´ ê°€ëŠ¥í•´ì¡ŒìŠµë‹ˆë‹¤. ë¶€ë™ ì†Œìˆ˜ì  ì—°ì‚°ì€ ì¤‘ê°„ 과정 ê³„ì‚°ì— íŠ¹ížˆ 유용합니다. ìž¬ìƒ ì—”ë“œí¬ì¸íŠ¸ëŠ” 오디오 ë°ì´í„°ì— ë‚®ì€ ë¹„íŠ¸ 심ë„로 정수 형ì‹ì„ 사용합니다 (Android 5.0ì—서 ì¼ë¶€ ë‚´ë¶€ 파ì´í”„ë¼ì¸ì€ ì•„ì§ ë¶€ë™ ì†Œìˆ˜ì ì´ 아님).
<li>ì´ì œ 앱ì—서 오디오 ë°ì´í„°ë¥¼ {@link android.media.MediaCodec}ì—서 제공하는 것과 ê°™ì€ í˜•ì‹ì¸ {@link java.nio.ByteBuffer}로 제공할 수 있습니다.
<li>{@link android.media.AudioTrack#WRITE_NON_BLOCKING WRITE_NON_BLOCKING} ì˜µì…˜ì€ ì¼ë¶€ 앱ì—서 버í¼ë§ ë° ë©€í‹°ìŠ¤ë ˆë”©ì„ ë‹¨ìˆœí™”í•  수 있습니다.
</ul>
@@ -429,7 +429,7 @@ sdk.platform.apiLevel=21
<p>시스템ì—서 ì ì ˆí•œ 네트워í¬ë¥¼ ê°ì§€í•˜ë©´ ê°ì§€í•œ 네트워í¬ì— 연결하고 {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()} ì½œë°±ì„ í˜¸ì¶œí•©ë‹ˆë‹¤. ì½œë°±ì˜ {@link android.net.Network} 개체를 사용하여 네트워í¬ì— 대한 추가 정보를 가져오거나, íŠ¸ëž˜í”½ì´ ì„ íƒí•œ 네트워í¬ë¥¼ 사용하ë„ë¡ ìœ ë„합니다.</p>
<h3 id="BluetoothBroadcasting">저전력 블루투스</h3>
-<p>Android 4.3ì—서는 <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">저전력 블루투스</a>(<em>블루투스 LE</em>)ì— ëŒ€í•œ í”Œëž«í¼ ì§€ì›ì´ ë„ìž…ë˜ì—ˆìŠµë‹ˆë‹¤. Android 5.0ì—서는 Android 기기가 블루투스 LE <em>주변기기</em>로 ìž‘ë™í•  수 있습니다. 앱ì—서 ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ì—¬ 주변 ê¸°ê¸°ì— ë¸”ë£¨íˆ¬ìŠ¤ë¡œ ì—°ê²°í•  수 있ìŒì„ 알릴 수 있습니다. 예를 들어 기기가 만보계나 ê±´ê°• ëª¨ë‹ˆí„°ë§ ê¸°ê¸°ë¡œ ìž‘ë™í•˜ë©´ì„œ 다른 블루투스 LE 기기와 ë°ì´í„°ë¥¼ 통신할 수 있ë„ë¡ í•˜ëŠ” ì•±ì„ ì œìž‘í•  수 있습니다.</p>
+<p>Android 4.3ì—서는 <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">저전력 블루투스</a>(<em>블루투스 LE</em>)ì— ëŒ€í•œ í”Œëž«í¼ ì§€ì›ì´ ë„ìž…ë˜ì—ˆìŠµë‹ˆë‹¤. Android 5.0ì—서는 Android 기기가 블루투스 LE <em>주변기기</em>로 ìž‘ë™í•  수 있습니다. 앱ì—서 ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ì—¬ 주변 ê¸°ê¸°ì— ë¸”ë£¨íˆ¬ìŠ¤ë¡œ ì—°ê²°í•  수 있ìŒì„ 알릴 수 있습니다. 예를 들어 기기가 만보계나 ê±´ê°• ëª¨ë‹ˆí„°ë§ ê¸°ê¸°ë¡œ ìž‘ë™í•˜ë©´ì„œ 다른 블루투스 LE 기기와 ë°ì´í„°ë¥¼ 통신할 수 있ë„ë¡ í•˜ëŠ” ì•±ì„ ì œìž‘í•  수 있습니다.</p>
<p>새 {@link android.bluetooth.le} API를 사용하면 앱ì—서 광고를 브로드ìºìŠ¤íŒ…í•˜ê³ , ì‘ë‹µì„ ìŠ¤ìº”í•˜ë©°, ì£¼ë³€ì˜ ë¸”ë£¨íˆ¬ìŠ¤ LE 기기와 ì—°ê²°ì„ ì„¤ì •í•˜ë„ë¡ í•  수 있습니다. 새 ê´‘ê³  ë° ìŠ¤ìº” ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë ¤ë©´ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} ê¶Œí•œì„ ì¶”ê°€í•©ë‹ˆë‹¤. 사용ìžê°€ Play 스토어ì—서 ì•±ì„ ì—…ë°ì´íŠ¸í•˜ê±°ë‚˜ 다운로드할 때 사용ìžì—게 ì•±ì— ê¶Œí•œì„ ë¶€ì—¬í•  것ì¸ì§€ 묻는 메시지('블루투스 ì—°ê²° ì •ë³´: ì£¼ë³€ì˜ ë¸”ë£¨íˆ¬ìŠ¤ ê¸°ê¸°ì— ë¸Œë¡œë“œìºìŠ¤íŒ…í•˜ê±°ë‚˜ ì´ëŸ¬í•œ ê¸°ê¸°ì— ëŒ€í•œ ì •ë³´ 수집하는 등 앱ì—서 블루투스를 제어하ë„ë¡ í—ˆìš©í•©ë‹ˆë‹¤.')ê°€ 표시ë©ë‹ˆë‹¤.</p>
<p>다른 앱ì—서 ë‚´ ì•±ì„ ì°¾ì„ ìˆ˜ 있ë„ë¡ ë¸”ë£¨íˆ¬ìŠ¤ LE 광고를 시작하려면 {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()}ì„ í˜¸ì¶œí•˜ê³  ì´ë¥¼ {@link android.bluetooth.le.AdvertiseCallback} í´ëž˜ìФ êµ¬í˜„ì— ì „ë‹¬í•©ë‹ˆë‹¤. 콜백 개체는 ê´‘ê³  ìž‘ì—…ì˜ ì„±ê³µ ë˜ëŠ” ì‹¤íŒ¨ì— ëŒ€í•œ 보고서를 수신합니다.</p>
diff --git a/docs/html-intl/intl/ko/design/patterns/navigation.jd b/docs/html-intl/intl/ko/design/patterns/navigation.jd
index 5f335d55408f..91d1dcc4769c 100644
--- a/docs/html-intl/intl/ko/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/ko/design/patterns/navigation.jd
@@ -152,7 +152,7 @@ Talk는 친구가 í™”ìƒ ì±„íŒ…ì— ì°¸ì—¬í•˜ë„ë¡ ë³´ë‚¸
<h2 id="between-apps">앱 ê°„ íƒìƒ‰</h2>
-<p>Android ì‹œìŠ¤í…œì˜ ë³¸ì§ˆì ì¸ ê°•ì  ì¤‘ 하나는 앱ì´
+<p>Android ì‹œìŠ¤í…œì˜ ë³¸ì§ˆì ì¸ ê°•ì  ì¤‘ 하나는 앱ì´
다른 ì•±ì„ ì‹¤í–‰í•  수 있다는 ì ì´ë©°, ì´ë¡œ ì¸í•´ 사용ìžëŠ” 한 앱ì—서 다른 앱으로 ì§ì ‘ ì´ë™í•  수 있습니다. 예를 들어,
ì‚¬ì§„ì„ ìº¡ì²˜í•´ì•¼ 하는 ì•±ì€ ì¹´ë©”ë¼ ì•±ì„ ìž‘ë™ì‹œí‚¬ 수 있으며, ì¹´ë©”ë¼ ì•±ì€ ì‚¬ì§„ì„
해당 앱으로 ëŒë ¤ì¤ë‹ˆë‹¤. ì´ëŸ¬í•œ ê¸°ëŠ¥ì€ ê°œë°œìžì™€ ì‚¬ìš©ìž ëª¨ë‘ì—게 매우 유용합니다.
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/about.jd b/docs/html-intl/intl/ko/distribute/googleplay/about.jd
index 57b5226cf293..2968ed4989f1 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/about.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/about.jd
@@ -6,7 +6,7 @@ page.image=/distribute/images/about-play.jpg
@jd:body
- <div id="qv-wrapper">
+ <div id="qv-wrapper">
<div id="qv">
<h2>Google Play ì •ë³´</h2>
<ol style="list-style-type:none;">
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/auto.jd b/docs/html-intl/intl/ko/distribute/googleplay/auto.jd
index 6536f1a562c2..5b93b6b27262 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/auto.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/auto.jd
@@ -32,7 +32,7 @@ page.metaDescription=Android Autoì— ì•± ë° ì½˜í…츠를 ë°°í¬í•©ë‹ˆë‹¤.
<p>
시작하려면 ì´ ë¬¸ì„œë¥¼ 참조하여 Google Play를 통해 사용ìžì—게 Auto ì•±ì„ ë°°í¬í•˜ëŠ” ë°©ë²•ì„ ë°°ìš°ì‹­ì‹œì˜¤.
- ì•±ì´ ì¶©ì¡±í•´ì•¼ 하는 유용성, 품질 ë° ì•ˆì „ 관련 ê°€ì´ë“œë¼ì¸ì— 대한 ë‚´ìš©ì€
+ ì•±ì´ ì¶©ì¡±í•´ì•¼ 하는 유용성, 품질 ë° ì•ˆì „ 관련 ê°€ì´ë“œë¼ì¸ì— 대한 ë‚´ìš©ì€
<a href="{@docRoot}distribute/essentials/quality/auto.html">Auto 앱 품질</a>
ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
ì•±ì´ ì¤€ë¹„ë˜ë©´ ê°œë°œìž ì½˜ì†”ì˜ ì•½ê´€ì— ë™ì˜í•˜ê³  검토용 APK를 업로드할 수 있습니다.
@@ -98,7 +98,7 @@ page.metaDescription=Android Autoì— ì•± ë° ì½˜í…츠를 ë°°í¬í•©ë‹ˆë‹¤.
Auto ì•±ì€ ìž˜ ìž‘ë™í•˜ê³  ì°¨ 안ì—서 멋있게 ë³´ì´ê³  ìµœê³ ì˜ ì‚¬ìš©ìž ê²½í—˜ì„ ì œê³µí•˜ë„ë¡ ë””ìžì¸í•´ì•¼ 합니다.
Google Play는 사용ìžê°€ Google Playì—서 쉽게 검색할 수 있ë„ë¡ ì„ ì •ëœ ê³ í’ˆì§ˆ Auto ì•±ì„ ì†Œê°œí•©ë‹ˆë‹¤.
다ìŒê³¼ ê°™ì€ ë°©ë²•ìœ¼ë¡œ 참여하여 사용ìžì—게 ë©‹ì§„ Android Auto ì•±ì„ ì œê³µí•  수 있습니다.
-
+
</p>
<ul>
@@ -127,7 +127,7 @@ page.metaDescription=Android Autoì— ì•± ë° ì½˜í…츠를 ë°°í¬í•©ë‹ˆë‹¤.
<p>
ì•½ê´€ì— ë™ì˜í•œ 후ì—ë§Œ Auto ì•±ì„ ì—…ë¡œë“œí•  수 있습니다. 다ìŒì€ Auto ì•±ì„ ì§€ì •í•˜ëŠ” ê¸°ì¤€ì— ëŒ€í•œ 설명입니다.
-
+
</p>
<ul>
@@ -159,10 +159,10 @@ page.metaDescription=Android Autoì— ì•± ë° ì½˜í…츠를 ë°°í¬í•©ë‹ˆë‹¤.
<p>
검토는 휴대í°ì´ë‚˜ 태블릿 등 Google Play ìŠ¤í† ì–´ì˜ ë‹¤ë¥¸ 장치ì—서 ì•±ì˜ ì‚¬ìš© ê°€ëŠ¥ì„±ì„ ê²°ì •í•©ë‹ˆë‹¤.
-
+
휴대í°/태블릿 구성요소 ì—…ë°ì´íŠ¸ë¥¼ í¬í•¨í•œ 기존 ì•±ì´ ìžˆëŠ” 경우, Android Auto 구성요소가 검토를 통과해야 Google Play 스토어ì—서 ì—…ë°ì´íŠ¸ëœ ì•±ì„ ì‚¬ìš©í•  수 있습니다.
-
+
</p>
<p>
@@ -209,7 +209,7 @@ page.metaDescription=Android Autoì— ì•± ë° ì½˜í…츠를 ë°°í¬í•©ë‹ˆë‹¤.
<p>ì•±ì´ ìŠ¹ì¸ë˜ì§€ 않으면 개발ìžëŠ” 해결해야 í•  ë¬¸ì œì— ëŒ€í•œ ìš”ì•½ì´ í¬í•¨ëœ <strong>알림 ì´ë©”ì¼ì„ ê°œë°œìž ê³„ì • 주소</strong>로 받게 ë©ë‹ˆë‹¤.
필요한 ì¡°ì •ì„ ê±°ì¹œ í›„ì— ìƒˆë¡œìš´ 앱 ë²„ì „ì„ ê°œë°œìž ì½˜ì†”ì— ì—…ë¡œë“œí•  수 있습니다.
-
+
</p>
<p>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/developer-console.jd b/docs/html-intl/intl/ko/distribute/googleplay/developer-console.jd
index b2dc6d56297a..fca59e89a46b 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/developer-console.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/developer-console.jd
@@ -4,8 +4,8 @@ page.image=/distribute/images/developer-console.jpg
Xnonavpage=true
@jd:body
-
- <div id="qv-wrapper">
+
+ <div id="qv-wrapper">
<div id="qv">
<h2>게시 기능</h2>
<ol>
@@ -420,7 +420,7 @@ Xnonavpage=true
<li>ê°€ê²©ì„ ì±…ì •í•©ë‹ˆë‹¤.
</li>
- <li>ì•±ì„ í¬í•¨í•œ ì œí’ˆì„ ê²Œì‹œí•˜ê±°ë‚˜, 사용하지 않는 ì œí’ˆì„ íšŒìˆ˜í•©ë‹ˆë‹¤.
+ <li>ì•±ì„ í¬í•¨í•œ ì œí’ˆì„ ê²Œì‹œí•˜ê±°ë‚˜, 사용하지 않는 ì œí’ˆì„ íšŒìˆ˜í•©ë‹ˆë‹¤.
</li>
</ul>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/families/faq.jd b/docs/html-intl/intl/ko/distribute/googleplay/families/faq.jd
index 92dbcf0b9724..8bf330d61424 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/families/faq.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@ Designed for Familiesì— ëŒ€í•œ 질문과page.metaDescription= 대답
font-weight:bold;
}
</style>
-
+
<div id="qv-wrapper">
<ol id="qv">
<h2>ì´ ë¬¸ì„œì˜ ë‚´ìš©</h2>
@@ -141,7 +141,7 @@ Designed for Familiesì— ëŒ€í•œ 질문과page.metaDescription= 대답
ì•±ì´ ëª¨ë“  프로그램 ìš”êµ¬ì‚¬í•­ì„ ì¤€ìˆ˜í•  경우 게시 ì‹œê°„ì´ í‰ì†Œë³´ë‹¤ 오래 걸리지 않습니다. 하지만 Designed for Families 검토 ì¤‘ì— ì•±ì´ ê±°ë¶€ë˜ë©´ 게시가 ì§€ì—°ë  ìˆ˜ 있습니다.
-
+
</dd>
<dt>
@@ -163,7 +163,7 @@ Designed for Familiesì— ëŒ€í•œ 질문과page.metaDescription= 대답
<dt>
ì•±ì„ ê²Œì‹œí•œ í›„ì— Designed for Families 프로그램 ìš”êµ¬ì‚¬í•­ì„ ì¤€ìˆ˜í•˜ì§€ 않는 것으로 확ì¸ë˜ë©´ 어떻게 ë©ë‹ˆê¹Œ?
-
+
</dt>
<dd>
@@ -185,7 +185,7 @@ Designed for Familiesì— ëŒ€í•œ 질문과page.metaDescription= 대답
<dt>
Designed for Families 프로그램ì—서 승ì¸ëœ ì•±ì„ ì—…ë°ì´íŠ¸í•˜ë©´ 어떻게 ë©ë‹ˆê¹Œ?
-
+
</dt>
<dd>
@@ -265,7 +265,7 @@ Designed for Familiesì— ëŒ€í•œ 질문과page.metaDescription= 대답
ì¸ì•± 광고를 í¬í•¨í•œ ì „ë°˜ì ì¸ ì‚¬ìš©ìž ê²½í—˜ì´ <a href="https://support.google.com/googleplay/android-developer/answer/6184502">Designed for Families 프로그램 요구사항</a>ì„ ì¶©ì¡±í•˜ë„ë¡ ë³´ìž¥í•˜ëŠ” ê²ƒì€ ê°œë°œìžì˜ 책임입니다.
-
+
</dd>
<dt>
@@ -297,7 +297,7 @@ Designed for Familiesì— ëŒ€í•œ 질문과page.metaDescription= 대답
</dt>
<dd>
- 당사는 부모와 보호ìžê°€ Google Play 스토어ì—서 신뢰할 수 있는 브랜드와 개발ìžê°€ 제작한 우수한 ì•„ë™ ë° ê°€ì¡±ìš© ì•±ì„ ì°¾ì„ ìˆ˜ 있ë„ë¡ í•˜ëŠ” ê²ƒì„ ëª©í‘œë¡œ 합니다.
+ 당사는 부모와 보호ìžê°€ Google Play 스토어ì—서 신뢰할 수 있는 브랜드와 개발ìžê°€ 제작한 우수한 ì•„ë™ ë° ê°€ì¡±ìš© ì•±ì„ ì°¾ì„ ìˆ˜ 있ë„ë¡ í•˜ëŠ” ê²ƒì„ ëª©í‘œë¡œ 합니다.
</dd>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/families/start.jd b/docs/html-intl/intl/ko/distribute/googleplay/families/start.jd
index 06f76b5c4589..4a93b564ec2e 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/families/start.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/families/start.jd
@@ -78,7 +78,7 @@ page.metaDescription=간단한 몇 단계로 Designed for Familiesì— ê°€ìž…í•©ë
<p class="note">
<strong>참고:</strong> Designed for Families í”„ë¡œê·¸ëž¨ì— ê²Œì‹œëœ ì•±ì€ Google Playì˜ ëª¨ë“  사용ìžë„ 사용할 수 있습니다.
-
+
</p>
<p>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/guide.jd b/docs/html-intl/intl/ko/distribute/googleplay/guide.jd
index e8d25ff2a3d6..2a622b728cd4 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/guide.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/guide.jd
@@ -34,7 +34,7 @@ page.image=distribute/images/play_dev_guide.png
<li>
<strong>ì‚¬ìš©ìž í™•ë³´ ë° ìœ ì§€</strong> &mdash; ì•±ì„ ì„¤ì¹˜í•œ ì‚¬ëžŒì„ ì‹¤ì œ 사용ìžë¡œ 확보하고 해당 사용ìžë¥¼ 효율ì ìœ¼ë¡œ 유지하는 ë°©ë²•ì„ ì•ˆë‚´í•©ë‹ˆë‹¤.
-
+
</li>
<li>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/quality/core.jd b/docs/html-intl/intl/ko/distribute/googleplay/quality/core.jd
index c914aab02de1..cec3dc6730bc 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/quality/core.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/quality/core.jd
@@ -12,7 +12,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="#listing">Google Play</a></li>
</ol>
-
+
<h2>테스트</h2>
<ol>
<li><a href="#test-environment">테스트 환경 설정</a></li>
@@ -24,7 +24,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="{@docRoot}distribute/essentials/quality/tablets.html">태블릿 앱 품질</a></li>
<li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">앱 최ì í™”</a></li>
</ol>
-
+
</div>
</div>
@@ -59,7 +59,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
-
+
</p>
<div class="headerLine">
@@ -84,7 +84,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<th style="width:54px;">
ID
</th>
-
+
<th>
설명
@@ -166,7 +166,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
</td>
<td>
어디서든지 홈 ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ ìž¥ì¹˜ì˜ í™ˆ 화면으로 ì´ë™í•©ë‹ˆë‹¤.
-
+
</td>
<td>
<a href="#core">CR-1</a>
@@ -292,7 +292,7 @@ data-maxresults="6">
ì•±ì´ í•µì‹¬ 기능과 관련ë˜ì§€ ì•Šì€ ê²½ìš° 사용ìžê°€ ë¹„ìš©ì„ ì§€ë¶ˆí•  수 있는 서비스(예: ì „í™” 걸기 ë˜ëŠ” SMS) ë˜ëŠ” 민ê°í•œ ë°ì´í„°(예: ì—°ë½ì²˜ ë˜ëŠ” 시스템 로그)ì— ëŒ€í•œ 액세스 ê¶Œí•œì„ ìš”ì²­í•˜ì§€ 않습니다.
-
+
</p>
</td>
</tr>
@@ -594,7 +594,7 @@ data-sortorder="-timestamp" data-cardsizes="6x3" data-maxresults="6">
</td>
<td>
ì •ìƒì ì¸ 앱 사용 ë° ë¡œë“œ 시 ìŒì•… ë° ë™ì˜ìƒ 재ìƒì´ 매ë„럽고 잔금, 버벅거림 ë˜ëŠ” 기타 아티팩트가 없습니다.
-
+
</td>
<td>
<a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a>, <a href="#HA-1">HA-1</a>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/quality/tablets.jd b/docs/html-intl/intl/ko/distribute/googleplay/quality/tablets.jd
index 6cf38c3371a1..23ddbcb128b9 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/quality/tablets.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/quality/tablets.jd
@@ -56,7 +56,7 @@ Xnonavpage=true
<p>뛰어난 태블릿 앱 ê²½í—˜ì„ ì œê³µí•˜ëŠ” 첫 번째 단계는 ì•±ì´ ëŒ€ìƒìœ¼ë¡œ ì‚¼ì€ ëª¨ë“  장치 ë° í¼ íŒ©í„°ì— ëŒ€í•œ <em>핵심 앱 품질 기준</em>ì„ ì¶©ì¡±í•˜ëŠ”ì§€ 확ì¸í•˜ëŠ” 것입니다.
- ìžì„¸í•œ ë‚´ìš©ì€ <a href="{@docRoot}distribute/essentials/quality/core.html">핵심 앱 품질 ê°€ì´ë“œë¼ì¸</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
+ ìžì„¸í•œ ë‚´ìš©ì€ <a href="{@docRoot}distribute/essentials/quality/core.html">핵심 앱 품질 ê°€ì´ë“œë¼ì¸</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
</p>
<p>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/quality/wear.jd b/docs/html-intl/intl/ko/distribute/googleplay/quality/wear.jd
index 7ab936731b02..e35e566f267d 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/quality/wear.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/quality/wear.jd
@@ -331,7 +331,7 @@ data-sortorder="-timestamp" data-cardsizes="6x2" data-maxresults="6">
</td>
<td>
<p style="margin-bottom:.5em;">
- ì•±ì´ í•„ìš”í•œ 경우 í™•ì¸ ì• ë‹ˆë©”ì´ì…˜ì„ 표시합니다.
+ ì•±ì´ í•„ìš”í•œ 경우 í™•ì¸ ì• ë‹ˆë©”ì´ì…˜ì„ 표시합니다.
(<a href="{@docRoot}design/wear/patterns.html#Countdown">방법 알아보기</a>)
</p>
</td>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/start.jd b/docs/html-intl/intl/ko/distribute/googleplay/start.jd
index f5dd1b3fd510..495df80c513f 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/start.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/start.jd
@@ -75,7 +75,7 @@ page.image=/distribute/images/getting-started.jpg
<li>해당 êµ­ê°€ ë˜ëŠ” ì§€ì—­ì˜ <strong>ê°œë°œìž ë°°í¬ ê³„ì•½</strong>ì„ ì½ê³  ë™ì˜í•©ë‹ˆë‹¤.
Google Playì— ê²Œì‹œí•˜ëŠ” 앱 ë° ìŠ¤í† ì–´ 목ë¡ì€ ê°œë°œìž í”„ë¡œê·¸ëž¨ ì •ì±… ë° ë¯¸êµ­ 수출 법규를 준수해야 합니다.
-
+
</li>
<li>Google Walletì„ ì‚¬ìš©í•˜ì—¬ <strong>ë“±ë¡ ìˆ˜ìˆ˜ë£Œë¡œ 미화 25달러</strong>를 지불합니다. Google Wallet ê³„ì •ì´ ì—†ëŠ” 경우 프로세스 ì§„í–‰ ì¤‘ì— ê³„ì •ì„ ì„¤ì •í•  수 있습니다.
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/tv.jd b/docs/html-intl/intl/ko/distribute/googleplay/tv.jd
index 58f4c2e01ee4..3efa93bdbaf1 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/tv.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/tv.jd
@@ -261,7 +261,7 @@ page.metaDescription=앱, 게임 ë° ì½˜í…츠를 Android TVì— ë°°í¬í•©ë‹ˆë‹¤.
필요한 ì¡°ì •ì„ ê±°ì¹œ í›„ì— ìƒˆë¡œìš´ 앱 ë²„ì „ì„ ê°œë°œìž ì½˜ì†”ì— ì—…ë¡œë“œí•  수 있습니다.
-
+
</p>
<p>
@@ -282,7 +282,7 @@ page.metaDescription=앱, 게임 ë° ì½˜í…츠를 Android TVì— ë°°í¬í•©ë‹ˆë‹¤.
<li>
<em>승ì¸ë¨</em> — ì•±ì´ ê²€í†  í›„ì— ìŠ¹ì¸ë˜ì—ˆìŠµë‹ˆë‹¤. Android TV 사용ìžê°€ ì•±ì„ ë°”ë¡œ 사용할 수 있습니다.
-
+
</li>
<li>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/wear.jd b/docs/html-intl/intl/ko/distribute/googleplay/wear.jd
index 864f668ecd3d..1f916c2f08a9 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/wear.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/wear.jd
@@ -121,7 +121,7 @@ page.metaDescription=Android Wearì— ì•±, 게임 ë° ì½˜í…츠를 ë°°í¬í•©ë‹ˆë‹
Wear ì•±ì€ ìž˜ ìž‘ë™í•˜ê³  Android Wearì—서 멋있게 ë³´ì´ê³  ìµœê³ ì˜ ì‚¬ìš©ìž ê²½í—˜ì„ ì œê³µí•˜ë„ë¡ ë””ìžì¸í•´ì•¼ 합니다.
Google Play는 사용ìžê°€ 쉽게 검색할 수 있ë„ë¡ ì„ ì •ëœ ê³ í’ˆì§ˆ Wear ì•±ì„ ì†Œê°œí•©ë‹ˆë‹¤.
다ìŒê³¼ ê°™ì€ ë°©ë²•ìœ¼ë¡œ 참여하여 사용ìžì—게 ë©‹ì§„ Android Wear ì•±ì„ ì œê³µí•  수 있습니다.
-
+
</p>
<ul>
diff --git a/docs/html-intl/intl/ko/distribute/tools/launch-checklist.jd b/docs/html-intl/intl/ko/distribute/tools/launch-checklist.jd
index a8a2dcdc0bd6..623c129fcba8 100644
--- a/docs/html-intl/intl/ko/distribute/tools/launch-checklist.jd
+++ b/docs/html-intl/intl/ko/distribute/tools/launch-checklist.jd
@@ -197,7 +197,7 @@ data-maxresults="6">
<p>
Android 장치ì—서 Android 사용ìžëŠ” ê²€ìƒ‰ì— ì‚¬ìš©í•  완성ë„를 설정할 수 있습니다.
Google Play는 ì„¤ì •ì— ë”°ë¼ ì•±ì„ í•„í„°ë§í•˜ë¯€ë¡œ ì„ íƒí•œ 콘í…츠 ë“±ê¸‰ì€ ì‚¬ìš©ìžì—게 ì•±ì„ ë°°í¬í•˜ëŠ” ë° ì˜í–¥ì„ 줄 수 있습니다.
- 앱 ë°”ì´ë„ˆë¦¬ë¥¼ 변경할 í•„ìš” ì—†ì´ ê°œë°œìž ì½˜ì†”ì—서 ì•±ì˜ ì½˜í…츠 ë“±ê¸‰ì„ í• ë‹¹(ë˜ëŠ” 변경)í•  수 있습니다.
+ 앱 ë°”ì´ë„ˆë¦¬ë¥¼ 변경할 í•„ìš” ì—†ì´ ê°œë°œìž ì½˜ì†”ì—서 ì•±ì˜ ì½˜í…츠 ë“±ê¸‰ì„ í• ë‹¹(ë˜ëŠ” 변경)í•  수 있습니다.
</p>
@@ -764,7 +764,7 @@ See how you can facilitate testing with Google Play.</td>
<p>
ê°œë°œìž ì½˜ì†”ì—서 ì•±ì˜ ëŒ€ìƒ ì§€ì—­ì„ ì„¤ì •í•œ í›„ì— ì§€ì›í•˜ëŠ” 모든 ì–¸ì–´ì— ëŒ€í•´ í˜„ì§€í™”ëœ ìŠ¤í† ì–´ 목ë¡, í™ë³´ 그래픽 ë“±ì„ ì¶”ê°€í•˜ì‹­ì‹œì˜¤.
-
+
</p>
diff --git a/docs/html-intl/intl/ko/distribute/tools/localization-checklist.jd b/docs/html-intl/intl/ko/distribute/tools/localization-checklist.jd
index cf4648183a6f..4cc973542117 100644
--- a/docs/html-intl/intl/ko/distribute/tools/localization-checklist.jd
+++ b/docs/html-intl/intl/ko/distribute/tools/localization-checklist.jd
@@ -187,7 +187,7 @@ data-sortorder="-timestamp" data-cardsizes="9x3," data-maxresults="6">
-
+
</p>
<p>
diff --git a/docs/html-intl/intl/ko/guide/components/activities.jd b/docs/html-intl/intl/ko/guide/components/activities.jd
index 001982f6f63c..255a11119e96 100644
--- a/docs/html-intl/intl/ko/guide/components/activities.jd
+++ b/docs/html-intl/intl/ko/guide/components/activities.jd
@@ -44,31 +44,31 @@ page.tags=activity,intent
-<p>{@link android.app.Activity}는 ì¼ì¢…ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ 구성 요소로서,
-사용ìžì™€ ìƒí˜¸ìž‘용할 수 있는 í™”ë©´ì„ ì œê³µí•˜ì—¬ ì „í™” 걸기, 사진 ì°ê¸°, ì´ë©”ì¼ ë³´ë‚´ê¸° ë˜ëŠ” ì§€ë„ ë³´ê¸° ë“±ì˜ ì¼ì„ í•  수
-있습니다. 액티비티마다 ì°½ì´ í•˜ë‚˜ì”© 주어져 ì´ê³³ì— ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ëŒì–´ì˜¬ 수 있습니다. ì´ ì°½ì€
-ì¼ë°˜ì ìœ¼ë¡œ í™”ë©´ì„ ê°€ë“ ì±„ìš°ì§€ë§Œ, ìž‘ì€ ì°½ìœ¼ë¡œ 만들어 다른 ì°½ ìœ„ì— ë„울 수ë„
+<p>{@link android.app.Activity}는 ì¼ì¢…ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ 구성 요소로서,
+사용ìžì™€ ìƒí˜¸ìž‘용할 수 있는 í™”ë©´ì„ ì œê³µí•˜ì—¬ ì „í™” 걸기, 사진 ì°ê¸°, ì´ë©”ì¼ ë³´ë‚´ê¸° ë˜ëŠ” ì§€ë„ ë³´ê¸° ë“±ì˜ ì¼ì„ í•  수
+있습니다. 액티비티마다 ì°½ì´ í•˜ë‚˜ì”© 주어져 ì´ê³³ì— ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ëŒì–´ì˜¬ 수 있습니다. ì´ ì°½ì€
+ì¼ë°˜ì ìœ¼ë¡œ í™”ë©´ì„ ê°€ë“ ì±„ìš°ì§€ë§Œ, ìž‘ì€ ì°½ìœ¼ë¡œ 만들어 다른 ì°½ ìœ„ì— ë„울 수ë„
있습니다.</p>
-<p> í•˜ë‚˜ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì€ 보통 여러 ê°œì˜ ì•¡í‹°ë¹„í‹°ê°€ ëŠìŠ¨í•˜ê²Œ 서로 묶여 있는 형태로
-구성ë©ë‹ˆë‹¤. í†µìƒ í•œ 애플리케ì´ì…˜ ë‚´ì—서 í•˜ë‚˜ì˜ ì•¡í‹°ë¹„í‹°ê°€ "주요" 액티비티로 지정ë˜ë©°,
-사용ìžê°€ ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ ì²˜ìŒ ì‹¤í–‰í•  때 ì´ ì•¡í‹°ë¹„í‹°ê°€ 사용ìžì—게 표시ë©ë‹ˆë‹¤. 그런 후
+<p> í•˜ë‚˜ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì€ 보통 여러 ê°œì˜ ì•¡í‹°ë¹„í‹°ê°€ ëŠìŠ¨í•˜ê²Œ 서로 묶여 있는 형태로
+구성ë©ë‹ˆë‹¤. í†µìƒ í•œ 애플리케ì´ì…˜ ë‚´ì—서 í•˜ë‚˜ì˜ ì•¡í‹°ë¹„í‹°ê°€ "주요" 액티비티로 지정ë˜ë©°,
+사용ìžê°€ ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ ì²˜ìŒ ì‹¤í–‰í•  때 ì´ ì•¡í‹°ë¹„í‹°ê°€ 사용ìžì—게 표시ë©ë‹ˆë‹¤. 그런 후
ê°ê°ì˜ 액티비티는 여러 가지 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê¸° 위해 ë˜ ë‹¤ë¥¸ 액티비티를 시작할 수 있습니다. 새로운
액티비티가 ì‹œìž‘ë  ë•Œë§ˆë‹¤ ì´ì „ 액티비티는 중단ë˜ì§€ë§Œ ì‹œìŠ¤í…œì€ í•´ë‹¹ 액티비티를
-스íƒ("ë°± 스íƒ")ì— ë³´ì¡´í•©ë‹ˆë‹¤. 새로운 액티비티가 시작ë˜ë©´, ì´ê²ƒì´ ë°± ìŠ¤íƒ ìœ„ë¡œ 밀려와 사용ìžì˜
-ì‹œì„ ì„ ë•니다. ë°± 스íƒì€ 기본ì ì¸ "후입선출" ë°©ì‹ì„ 지키므로,
-사용ìžê°€ 현재 액티비티를 ëë‚´ê³  <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ 해당 액티비티가
+스íƒ("ë°± 스íƒ")ì— ë³´ì¡´í•©ë‹ˆë‹¤. 새로운 액티비티가 시작ë˜ë©´, ì´ê²ƒì´ ë°± ìŠ¤íƒ ìœ„ë¡œ 밀려와 사용ìžì˜
+ì‹œì„ ì„ ë•니다. ë°± 스íƒì€ 기본ì ì¸ "후입선출" ë°©ì‹ì„ 지키므로,
+사용ìžê°€ 현재 액티비티를 ëë‚´ê³  <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ 해당 액티비티가
스íƒì—서 튀어나와(소멸ë˜ê³ ) ì´ì „ 액티비티를 재개합니다 (ë°± 스íƒì€
<a href="{@docRoot}guide/components/tasks-and-back-stack.html">작업
ë° ë°± 스íƒ</a> 문서ì—서 ìƒì„¸í•˜ê²Œ ë…¼ì˜í•©ë‹ˆë‹¤).</p>
<p>한 액티비티가 새로운 ì•¡í‹°ë¹„í‹°ì˜ ì‹œìž‘ìœ¼ë¡œ ì¸í•´ ì¤‘ë‹¨ëœ ê²½ìš°, ì´ ìƒíƒœ 변경ì€
-ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기 콜백 메서드를 통해 알려집니다.
+ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기 콜백 메서드를 통해 알려집니다.
액티비티가 시스템 액티비티를 ìƒì„±, 중단, 재시작, 제거하는 ë“±ì˜ ìƒíƒœ 변화로 ì¸í•´ ë°›ì„ ìˆ˜ 있는 콜백 메서드는 여러 가지가 있습니다.
ê° ì½œë°±ì€ ìƒíƒœ ë³€í™”ì— ì•Œë§žì€ íŠ¹ì • ìž‘ì—…ì„ ìˆ˜í–‰í•  기회를 제공합니다.
- 예를 들어 액티비티가 중단ë˜ë©´ ë„¤íŠ¸ì›Œí¬ ë˜ëŠ” ë°ì´í„°ë² ì´ìФ ì—°ê²°ê³¼ ê°™ì´
-í° ê°œì²´ëŠ” ëª¨ë‘ í•´ì œí•´ì•¼ 합니다. 액티비티가 재개ë˜ë©´, 필요한 리소스를
+ 예를 들어 액티비티가 중단ë˜ë©´ ë„¤íŠ¸ì›Œí¬ ë˜ëŠ” ë°ì´í„°ë² ì´ìФ ì—°ê²°ê³¼ ê°™ì´
+í° ê°œì²´ëŠ” ëª¨ë‘ í•´ì œí•´ì•¼ 합니다. 액티비티가 재개ë˜ë©´, 필요한 리소스를
다시 íšë“하여 ì¤‘ë‹¨ëœ ìž‘ì—…ì„ ìž¬ê°œí•  수 있습니다. ì´ëŸ¬í•œ ìƒíƒœ 전환ì€
ëª¨ë‘ ì•¡í‹°ë¹„í‹° 수명 ì£¼ê¸°ì˜ ì¼ë¶€ìž…니다.</p>
@@ -83,52 +83,52 @@ page.tags=activity,intent
<p>액티비티를 ìƒì„±í•˜ë ¤ë©´ {@link android.app.Activity}ì˜ í•˜ìœ„ í´ëž˜ìФ(ë˜ëŠ” ì´ì˜
기존 하위 í´ëž˜ìФ)를 ìƒì„±í•´ì•¼ 합니다. 하위 í´ëž˜ìФì—서는
액티비티 ìƒì„±, 중단, 재개, 소멸 시기 등과 ê°™ì€
-수명 ì£¼ê¸°ì˜ ë‹¤ì–‘í•œ ìƒíƒœ ê°„ 액티비티가 ì „í™˜ë  ë•Œ ì‹œìŠ¤í…œì´ í˜¸ì¶œí•˜ëŠ” 콜백 메서드를 구현해야 합니다. 가장 중요한 ë‘ ê°€ì§€ 콜백 메서드는
+수명 ì£¼ê¸°ì˜ ë‹¤ì–‘í•œ ìƒíƒœ ê°„ 액티비티가 ì „í™˜ë  ë•Œ ì‹œìŠ¤í…œì´ í˜¸ì¶œí•˜ëŠ” 콜백 메서드를 구현해야 합니다. 가장 중요한 ë‘ ê°€ì§€ 콜백 메서드는
다ìŒê³¼ 같습니다.</p>
<dl>
<dt>{@link android.app.Activity#onCreate onCreate()}</dt>
<dd>ì´ ë©”ì„œë“œëŠ” 반드시 구현해야 합니다. ì‹œìŠ¤í…œì€ ì•¡í‹°ë¹„í‹°ë¥¼ ìƒì„±í•  때 ì´ê²ƒì„ 호출합니다.
- 구현하는 ì¤‘ì— ì•¡í‹°ë¹„í‹°ì˜ í•„ìˆ˜ 구성 요소를 초기화해야
+ 구현하는 ì¤‘ì— ì•¡í‹°ë¹„í‹°ì˜ í•„ìˆ˜ 구성 요소를 초기화해야
합니다.
ë¬´ì—‡ë³´ë‹¤ë„ ì¤‘ìš”í•œ ì ì€, 바로 여기서 {@link android.app.Activity#setContentView
setContentView()}를 호출해야 ì•¡í‹°ë¹„í‹°ì˜ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ ë ˆì´ì•„ì›ƒì„ ì •ì˜í•  수 있다는 ì ìž…니다.</dd>
<dt>{@link android.app.Activity#onPause onPause()}</dt>
- <dd>ì‹œìŠ¤í…œì´ ì´ ë©”ì„œë“œë¥¼ 호출하는 ê²ƒì€ ì‚¬ìš©ìžê°€ 액티비티를 떠난다는
-첫 번째 신호입니다(다만 ì´ê²ƒì´ í•­ìƒ ì•¡í‹°ë¹„í‹°ê°€ 소멸 중ì´ë¼ëŠ” ëœ»ì€ ì•„ë‹™ë‹ˆë‹¤). 현재 ì‚¬ìš©ìž ì„¸ì…˜ì„ ë„˜ì–´ì„œ
-ì§€ì†ë˜ì–´ì•¼ 하는 변경 ì‚¬í•­ì„ ì»¤ë°‹í•˜ë ¤ë©´ 보통 ì´ê³³ì—서 í•´ì•„ 합니다(사용ìžê°€
+ <dd>ì‹œìŠ¤í…œì´ ì´ ë©”ì„œë“œë¥¼ 호출하는 ê²ƒì€ ì‚¬ìš©ìžê°€ 액티비티를 떠난다는
+첫 번째 신호입니다(다만 ì´ê²ƒì´ í•­ìƒ ì•¡í‹°ë¹„í‹°ê°€ 소멸 중ì´ë¼ëŠ” ëœ»ì€ ì•„ë‹™ë‹ˆë‹¤). 현재 ì‚¬ìš©ìž ì„¸ì…˜ì„ ë„˜ì–´ì„œ
+ì§€ì†ë˜ì–´ì•¼ 하는 변경 ì‚¬í•­ì„ ì»¤ë°‹í•˜ë ¤ë©´ 보통 ì´ê³³ì—서 í•´ì•„ 합니다(사용ìžê°€
ëŒì•„오지 ì•Šì„ ìˆ˜ 있기 때문입니다).</dd>
</dl>
-<p>여러 액티비티 사ì´ì—서 ì›í™œí•œ ì‚¬ìš©ìž ê²½í—˜ì„ ì œê³µí•˜ê³ , 액티비티 중단ì´ë‚˜ 심지어
-ì†Œë©¸ì„ ì´ˆëž˜í•  ìˆ˜ë„ ìžˆëŠ” 예ìƒì¹˜ 못한 ê°„ì„­ì„ ì²˜ë¦¬í•˜ê¸° 위해 사용해야 하는 다른 수명 주기
-콜백 ë©”ì„œë“œë„ ì—¬ëŸ¬ 가지 있습니다. 모든 수명 주기 콜백 메서드는 나중ì—
+<p>여러 액티비티 사ì´ì—서 ì›í™œí•œ ì‚¬ìš©ìž ê²½í—˜ì„ ì œê³µí•˜ê³ , 액티비티 중단ì´ë‚˜ 심지어
+ì†Œë©¸ì„ ì´ˆëž˜í•  ìˆ˜ë„ ìžˆëŠ” 예ìƒì¹˜ 못한 ê°„ì„­ì„ ì²˜ë¦¬í•˜ê¸° 위해 사용해야 하는 다른 수명 주기
+콜백 ë©”ì„œë“œë„ ì—¬ëŸ¬ 가지 있습니다. 모든 수명 주기 콜백 메서드는 나중ì—
<a href="#Lifecycle">액티비티 수명 주기 관리</a> 섹션ì—서 ìžì„¸ížˆ ë…¼ì˜í•  것입니다.</p>
<h3 id="UI">ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ 구현하기</h3>
-<p> 한 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ëŠ” 보기 계층&mdash;즉,
+<p> 한 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ëŠ” 보기 계층&mdash;즉,
{@link android.view.View} í´ëž˜ìФì—서 파ìƒëœ 개체가 제공합니다. ê° ë³´ê¸°ëŠ” 액티비티 ì°½ ì•ˆì˜ íŠ¹ì •í•œ ì§ì‚¬ê°í˜• 공간ì„
- 제어하며 ì‚¬ìš©ìž ìƒí˜¸ ìž‘ìš©ì— ëŒ€ì‘í•  수 있습니다. 예를 들어, ì–´ë–¤ 보기는 사용ìžê°€ 터치하면
+ 제어하며 ì‚¬ìš©ìž ìƒí˜¸ ìž‘ìš©ì— ëŒ€ì‘í•  수 있습니다. 예를 들어, ì–´ë–¤ 보기는 사용ìžê°€ 터치하면
ìž‘ì—…ì„ ì‹œìž‘í•˜ëŠ” ë²„íŠ¼ì¼ ìˆ˜ 있습니다.</p>
-<p>Android는 ë ˆì´ì•„ì›ƒì„ ë””ìžì¸í•˜ê³  정리하는 ë° ì‚¬ìš©í•  수 있ë„ë¡ ì—¬ëŸ¬ 가지 보기를 미리 만들어
-제공합니다. "위젯"ì´ëž€ í™”ë©´ì— ì‹œê°ì (ì´ìž 대화형) 요소를 제공하는 보기입니다. 예를 들어
+<p>Android는 ë ˆì´ì•„ì›ƒì„ ë””ìžì¸í•˜ê³  정리하는 ë° ì‚¬ìš©í•  수 있ë„ë¡ ì—¬ëŸ¬ 가지 보기를 미리 만들어
+제공합니다. "위젯"ì´ëž€ í™”ë©´ì— ì‹œê°ì (ì´ìž 대화형) 요소를 제공하는 보기입니다. 예를 들어
버튼, í…스트 필드, 확ì¸ëž€ì´ë‚˜ 그저 í•˜ë‚˜ì˜ ì´ë¯¸ì§€ì¼ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. "ë ˆì´ì•„웃"ì€ ì„ í˜• ë ˆì´ì•„웃, 격ìží˜• ë ˆì´ì•„웃, ìƒëŒ€ì  ë ˆì´ì•„웃과 ê°™ì´ í•˜ìœ„ ë ˆì´ì•„ì›ƒì— ëŒ€í•´ ë…특한 ë ˆì´ì•„웃 모ë¸ì„ 제공하는 {@link
android.view.ViewGroup}ì—서 파ìƒëœ
보기입니다. ë˜í•œ, {@link android.view.View}와
{@link android.view.ViewGroup} í´ëž˜ìФ(ë˜ëŠ” 기존 하위 í´ëž˜ìФ)ì˜ ì•„ëž˜ë¡œ 내려가서 위젯과 ë ˆì´ì•„ì›ƒì„ ìƒì„±í•˜ê³ 
ì´ë¥¼ 액티비티 ë ˆì´ì•„ì›ƒì— ì ìš©í•  수 있습니다.</p>
-<p>보기를 사용하여 ë ˆì´ì•„ì›ƒì„ ì •ì˜í•˜ëŠ” 가장 보편ì ì¸ ë°©ì‹ì€ 애플리케ì´ì…˜ ë¦¬ì†ŒìŠ¤ì— ì €ìž¥ëœ
+<p>보기를 사용하여 ë ˆì´ì•„ì›ƒì„ ì •ì˜í•˜ëŠ” 가장 보편ì ì¸ ë°©ì‹ì€ 애플리케ì´ì…˜ ë¦¬ì†ŒìŠ¤ì— ì €ìž¥ëœ
XML ë ˆì´ì•„웃 파ì¼ì„ 사용하는 것입니다. ì´ë ‡ê²Œ 하면 ì•¡í‹°ë¹„í‹°ì˜ ë™ìž‘ì„ ì •ì˜í•˜ëŠ”
-소스 코드와 별개로 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ ë””ìžì¸ì„ 유지할 수 있습니다.
+소스 코드와 별개로 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ ë””ìžì¸ì„ 유지할 수 있습니다.
{@link android.app.Activity#setContentView(int) setContentView()}로 ì•¡í‹°ë¹„í‹°ì˜ UI로서 ë ˆì´ì•„ì›ƒì„ ì„¤ì •í•˜ê³ ,
해당 ë ˆì´ì•„ì›ƒì˜ ë¦¬ì†ŒìŠ¤ ID를 전달할 수 있습니다. 그러나 액티비티 ì½”ë“œì— ìƒˆë¡œìš´ {@link android.view.View}를 ìƒì„±í•˜ê³ 
새로운 {@link
-android.view.View}를 {@link android.view.ViewGroup}ì— ì‚½ìž…í•˜ì—¬ 보기 ê³„ì¸µì„ êµ¬ì¶•í•œ ë’¤ 루트
+android.view.View}를 {@link android.view.ViewGroup}ì— ì‚½ìž…í•˜ì—¬ 보기 ê³„ì¸µì„ êµ¬ì¶•í•œ ë’¤ 루트
{@link android.view.ViewGroup}ì„ {@link android.app.Activity#setContentView(View)
setContentView()}ì— ì „ë‹¬í•´ë„ í•´ë‹¹ ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•  수 있습니다.</p>
@@ -138,7 +138,7 @@ setContentView()}ì— ì „ë‹¬í•´ë„ í•´ë‹¹ ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•  수 있습니
<h3 id="Declaring">매니페스트ì—서 액티비티 선언하기</h3>
-<p>시스템ì—서 ì•¡í‹°ë¹„í‹°ì— ì•¡ì„¸ìŠ¤í•  수 있게 하려면 ì´ë¥¼ 매니페스트 파ì¼ì—서
+<p>시스템ì—서 ì•¡í‹°ë¹„í‹°ì— ì•¡ì„¸ìŠ¤í•  수 있게 하려면 ì´ë¥¼ 매니페스트 파ì¼ì—서
선언해야만 합니다. 액티비티를 선언하려면 매니페스트 파ì¼ì„ ì—´ê³  <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 요소를
<a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
ìš”ì†Œì˜ í•˜ìœ„ 항목으로 추가합니다. 예:</p>
@@ -169,12 +169,12 @@ setContentView()}ì— ì „ë‹¬í•´ë„ í•´ë‹¹ ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•  수 있습니
<p><a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
&lt;activity&gt;}</a> 요소 ë˜í•œ 여러 가지 ì¸í…트 필터를 지정할 수 있습니다. 다른 애플리케ì´ì…˜ 구성 요소가 ì´ë¥¼ 활성화하는 ë°©ë²•ì„ ì„ ì–¸í•˜ê¸° 위해 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
-&lt;intent-filter&gt;}</a>를 사용하는
+&lt;intent-filter&gt;}</a>를 사용하는
것입니다.</p>
-<p>Android SDK ë„구를 사용하여 새 애플리케ì´ì…˜ì„ ìƒì„±í•˜ëŠ” 경우, 개발ìžë¥¼ 위해
-ìƒì„±ë˜ì–´ 있는 ìŠ¤í… ì•¡í‹°ë¹„í‹°ì— ìžë™ìœ¼ë¡œ ì¸í…트 í•„í„°ê°€ í¬í•¨ë˜ì–´ 있어 "주요" ë™ìž‘ì—
-ì‘답하는 액티비티를 선언하며, ì´ëŠ” "시작 관리ìž" ë²”ì£¼ì— ë°°ì¹˜í•´ì•¼ 합니다. ì¸í…트 필터는 다ìŒê³¼
+<p>Android SDK ë„구를 사용하여 새 애플리케ì´ì…˜ì„ ìƒì„±í•˜ëŠ” 경우, 개발ìžë¥¼ 위해
+ìƒì„±ë˜ì–´ 있는 ìŠ¤í… ì•¡í‹°ë¹„í‹°ì— ìžë™ìœ¼ë¡œ ì¸í…트 í•„í„°ê°€ í¬í•¨ë˜ì–´ 있어 "주요" ë™ìž‘ì—
+ì‘답하는 액티비티를 선언하며, ì´ëŠ” "시작 관리ìž" ë²”ì£¼ì— ë°°ì¹˜í•´ì•¼ 합니다. ì¸í…트 필터는 다ìŒê³¼
ê°™ì€ í˜•íƒœë¥¼ ë±ë‹ˆë‹¤.</p>
<pre>
@@ -188,23 +188,23 @@ setContentView()}ì— ì „ë‹¬í•´ë„ í•´ë‹¹ ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•  수 있습니
<p><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
&lt;action&gt;}</a> 요소는 ì´ê²ƒì´ 애플리케ì´ì…˜ìœ¼ë¡œ 가는 "주요" ì§„ìž… ì§€ì ì´ë¼ëŠ” ê²ƒì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
-&lt;category&gt;}</a> 요소는 ì´ ì•¡í‹°ë¹„í‹°ê°€ 시스템ì˜
+&lt;category&gt;}</a> 요소는 ì´ ì•¡í‹°ë¹„í‹°ê°€ 시스템ì˜
애플리케ì´ì…˜ 시작 관리ìžì— 목ë¡ìœ¼ë¡œ 나열ë˜ì–´ì•¼ 한다는 ê²ƒì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤(사용ìžê°€ ì´ ì•¡í‹°ë¹„í‹°ë¥¼ 시작할 수 있ë„ë¡ í•´ì¤Œ).</p>
-<p>애플리케ì´ì…˜ì´ ìžì²´ í¬í•¨ ë°©ì‹ì´ê¸°ë¥¼ ì›í•˜ê³  다른 애플리케ì´ì…˜ì´ ì´
-애플리케ì´ì…˜ì˜ 액티비티를 활성화하ë„ë¡ í—ˆìš©í•˜ì§€ ì•Šê³ ìž í•˜ë©´, 달리 ì¸í…트 í•„í„°ê°€ ë” í•„ìš”í•˜ì§€ 않습니다. "주요" ë™ìž‘ê³¼ "시작 관리ìž" 범주가 있는
-액티비티는 하나ë¿ì´ì–´ì•¼ 합니다(ì´ì „ 예시 참조). 다른 애플리케ì´ì…˜ì—서
-사용할 수 없게 í•˜ê³ ìž í•˜ëŠ” 액티비티ì—는 ì¸í…트 í•„í„°ê°€ 있으면 안 ë©ë‹ˆë‹¤.
+<p>애플리케ì´ì…˜ì´ ìžì²´ í¬í•¨ ë°©ì‹ì´ê¸°ë¥¼ ì›í•˜ê³  다른 애플리케ì´ì…˜ì´ ì´
+애플리케ì´ì…˜ì˜ 액티비티를 활성화하ë„ë¡ í—ˆìš©í•˜ì§€ ì•Šê³ ìž í•˜ë©´, 달리 ì¸í…트 í•„í„°ê°€ ë” í•„ìš”í•˜ì§€ 않습니다. "주요" ë™ìž‘ê³¼ "시작 관리ìž" 범주가 있는
+액티비티는 하나ë¿ì´ì–´ì•¼ 합니다(ì´ì „ 예시 참조). 다른 애플리케ì´ì…˜ì—서
+사용할 수 없게 í•˜ê³ ìž í•˜ëŠ” 액티비티ì—는 ì¸í…트 í•„í„°ê°€ 있으면 안 ë©ë‹ˆë‹¤.
ì´ëŸ¬í•œ 액티비티는 명시ì ì¸ ì¸í…트를 사용해 ì§ì ‘ 시작할 수 있습니다(ì´ ë‚´ìš©ì€ ë‹¤ìŒ ì„¹ì…˜ì—서 ë…¼ì˜).</p>
-<p>그러나, 액티비티가 다른 애플리케ì´ì…˜(ë° ë³¸ì¸ì˜ 애플리케ì´ì…˜)ì—서
-ì „ë‹¬ëœ ì•”ì‹œì  ì¸í…íŠ¸ì— ì‘답하ë„ë¡ í•˜ë ¤ë©´ ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€ë¡œ ì¸í…트 필터를 ì •ì˜í•´ì•¼ë§Œ
-합니다. ì‘답하게 í•˜ê³ ìž í•˜ëŠ” ê° ì¸í…트 유형별로
+<p>그러나, 액티비티가 다른 애플리케ì´ì…˜(ë° ë³¸ì¸ì˜ 애플리케ì´ì…˜)ì—서
+ì „ë‹¬ëœ ì•”ì‹œì  ì¸í…íŠ¸ì— ì‘답하ë„ë¡ í•˜ë ¤ë©´ ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€ë¡œ ì¸í…트 필터를 ì •ì˜í•´ì•¼ë§Œ
+합니다. ì‘답하게 í•˜ê³ ìž í•˜ëŠ” ê° ì¸í…트 유형별로
<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
&lt;action&gt;}</a> 요소를 í¬í•¨í•˜ëŠ” <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
&lt;intent-filter&gt;}</a>를 하나씩 í¬í•¨ì‹œì¼œì•¼ 하며, ì„ íƒ ì‚¬í•­ìœ¼ë¡œ <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
&lt;category&gt;}</a> 요소 ë°/ë˜ëŠ” <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
-&lt;data&gt;}</a> 요소를 í¬í•¨ì‹œí‚¬ 수 있습니다. ì´ì™€ ê°™ì€ ìš”ì†ŒëŠ” 액티비티가 ì‘답할 수 있는 ì¸í…íŠ¸ì˜ ìœ í˜•ì„
+&lt;data&gt;}</a> 요소를 í¬í•¨ì‹œí‚¬ 수 있습니다. ì´ì™€ ê°™ì€ ìš”ì†ŒëŠ” 액티비티가 ì‘답할 수 있는 ì¸í…íŠ¸ì˜ ìœ í˜•ì„
나타냅니다.</p>
<p>액티비티가 ì¸í…íŠ¸ì— ì‘답하는 ë°©ì‹ì— 관한 ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트 ë° ì¸í…트 í•„í„°</a>
@@ -215,15 +215,15 @@ setContentView()}ì— ì „ë‹¬í•´ë„ í•´ë‹¹ ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•  수 있습니
<h2 id="StartingAnActivity">액티비티 시작하기</h2>
<p>다른 액티비티를 시작하려면 {@link android.app.Activity#startActivity
- startActivity()}를 호출한 ë‹¤ìŒ ì´ì— ì‹œìž‘í•˜ê³ ìž í•˜ëŠ” 액티비티를 설명하는 {@link android.content.Intent}를
-전달하면 ë©ë‹ˆë‹¤. ì¸í…트는 ì‹œìž‘í•˜ê³ ìž í•˜ëŠ” 액티비티를 정확히 나타내거나, ìˆ˜í–‰í•˜ê³ ìž í•˜ëŠ” 작업ì˜
-ìœ í˜•ì„ ì„¤ëª…í•˜ëŠ” 것입니다(ì‹œìŠ¤í…œì´ ì ì ˆí•œ 액티비티를 ì„ íƒí•˜ë©°,
+ startActivity()}를 호출한 ë‹¤ìŒ ì´ì— ì‹œìž‘í•˜ê³ ìž í•˜ëŠ” 액티비티를 설명하는 {@link android.content.Intent}를
+전달하면 ë©ë‹ˆë‹¤. ì¸í…트는 ì‹œìž‘í•˜ê³ ìž í•˜ëŠ” 액티비티를 정확히 나타내거나, ìˆ˜í–‰í•˜ê³ ìž í•˜ëŠ” 작업ì˜
+ìœ í˜•ì„ ì„¤ëª…í•˜ëŠ” 것입니다(ì‹œìŠ¤í…œì´ ì ì ˆí•œ 액티비티를 ì„ íƒí•˜ë©°,
ì´ëŠ”
다른 애플리케ì´ì…˜ì—서 가져온 ê²ƒì¼ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤). ì¸í…트는 ì†ŒëŸ‰ì˜ ë°ì´í„°ë¥¼ 운반하여 ì‹œìž‘ëœ ì•¡í‹°ë¹„í‹°ì—서
사용할 수 있습니다.</p>
<p>본ì¸ì˜ 애플리케ì´ì…˜ 안ì—서 작업하는 경우ì—는, 알려진 액티비티를 시작하기만 하면 ë˜ëŠ” 경우가 잦습니다.
- ì´ë ‡ê²Œ 하려면 ì‹œìž‘í•˜ê³ ìž í•˜ëŠ” 액티비티를 명시ì ìœ¼ë¡œ ì •ì˜í•˜ëŠ” ì¸í…트를 í´ëž˜ìФ ì´ë¦„ì„
+ ì´ë ‡ê²Œ 하려면 ì‹œìž‘í•˜ê³ ìž í•˜ëŠ” 액티비티를 명시ì ìœ¼ë¡œ ì •ì˜í•˜ëŠ” ì¸í…트를 í´ëž˜ìФ ì´ë¦„ì„
사용하여 ìƒì„±í•˜ë©´ ë©ë‹ˆë‹¤. 예를 들어, 다ìŒì€ 한 액티비티가 {@code
SignInActivity}ë¼ëŠ” ì´ë¦„ì˜ ë‹¤ë¥¸ 액티비티를 시작하는 방법입니다.</p>
@@ -232,15 +232,15 @@ Intent intent = new Intent(this, SignInActivity.class);
startActivity(intent);
</pre>
-<p>그러나, 애플리케ì´ì…˜ì´ 다른 몇 가지 ë™ìž‘ì„ ìˆ˜í–‰í•˜ê³ ìž í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어 ì´ë©”ì¼ ë³´ë‚´ê¸°, 문ìž
-메시지 보내기 ë˜ëŠ” ìƒíƒœ ì—…ë°ì´íЏ ë“±ì„ ì•¡í‹°ë¹„í‹°ì˜ ë°ì´í„°ë¥¼ 사용하여 수행하는 것입니다. ì´ ê²½ìš°, 본ì¸ì˜ 애플리케ì´ì…˜ì—
-그러한 ë™ìž‘ì„ ìˆ˜í–‰í•  ìžì²´ 액티비티가 ì—†ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ë”°ë¼ì„œ ê¸°ê¸°ì— ìžˆëŠ” 다른 애플리케ì´ì…˜ì´
-제공하는 액티비티를 대신 활용하여 ë™ìž‘ì„ ìˆ˜í–‰í•˜ë„ë¡ í•  수 있습니다. 바로 ì´ ë¶€ë¶„ì—서
-ì¸í…íŠ¸ì˜ ì§„ê°€ê°€ 발휘ë©ë‹ˆë‹¤. ìˆ˜í–‰í•˜ê³ ìž í•˜ëŠ” ë™ìž‘ì„ ì„¤ëª…í•˜ëŠ” ì¸í…트를 ìƒì„±í•˜ë©´
+<p>그러나, 애플리케ì´ì…˜ì´ 다른 몇 가지 ë™ìž‘ì„ ìˆ˜í–‰í•˜ê³ ìž í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어 ì´ë©”ì¼ ë³´ë‚´ê¸°, 문ìž
+메시지 보내기 ë˜ëŠ” ìƒíƒœ ì—…ë°ì´íЏ ë“±ì„ ì•¡í‹°ë¹„í‹°ì˜ ë°ì´í„°ë¥¼ 사용하여 수행하는 것입니다. ì´ ê²½ìš°, 본ì¸ì˜ 애플리케ì´ì…˜ì—
+그러한 ë™ìž‘ì„ ìˆ˜í–‰í•  ìžì²´ 액티비티가 ì—†ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ë”°ë¼ì„œ ê¸°ê¸°ì— ìžˆëŠ” 다른 애플리케ì´ì…˜ì´
+제공하는 액티비티를 대신 활용하여 ë™ìž‘ì„ ìˆ˜í–‰í•˜ë„ë¡ í•  수 있습니다. 바로 ì´ ë¶€ë¶„ì—서
+ì¸í…íŠ¸ì˜ ì§„ê°€ê°€ 발휘ë©ë‹ˆë‹¤. ìˆ˜í–‰í•˜ê³ ìž í•˜ëŠ” ë™ìž‘ì„ ì„¤ëª…í•˜ëŠ” ì¸í…트를 ìƒì„±í•˜ë©´
ì‹œìŠ¤í…œì´ ì ì ˆí•œ 액티비티를
다른 애플리케ì´ì…˜ì—서 시작하는 것입니다. 해당 ì¸í…트를
처리할 수 있는 액티비티가 여러 ê°œ 있는 경우, 사용ìžê°€ ì–´ëŠ ê²ƒì„ ì‚¬ìš©í• ì§€ ì„ íƒí•©ë‹ˆë‹¤. 예를
- 들어 사용ìžê°€ ì´ë©”ì¼ ë©”ì‹œì§€ë¥¼ 보낼 수 있게 하려면, 다ìŒê³¼ ê°™ì€ ì¸í…트를
+ 들어 사용ìžê°€ ì´ë©”ì¼ ë©”ì‹œì§€ë¥¼ 보낼 수 있게 하려면, 다ìŒê³¼ ê°™ì€ ì¸í…트를
ìƒì„±í•˜ë©´ ë©ë‹ˆë‹¤.</p>
<pre>
@@ -250,7 +250,7 @@ startActivity(intent);
</pre>
<p>ì¸í…íŠ¸ì— ì¶”ê°€ëœ {@link android.content.Intent#EXTRA_EMAIL} 추가 ì‚¬í•­ì€ ì´ë©”ì¼ì´ 전송ë˜ì–´ì•¼ í•  ì´ë©”ì¼ ì£¼ì†Œì˜
- 문ìžì—´ 배열입니다. ì´ë©”ì¼ ì• í”Œë¦¬ì¼€ì´ì…˜ì´ ì´ ì¸í…트ì—
+ 문ìžì—´ 배열입니다. ì´ë©”ì¼ ì• í”Œë¦¬ì¼€ì´ì…˜ì´ ì´ ì¸í…트ì—
ì‘답하면, 애플리케ì´ì…˜ì€ 추가 ì‚¬í•­ì´ ì œê³µí•œ 문ìžì—´ ë°°ì—´ì„ ì½ì–´ë‚¸ ë‹¤ìŒ ì´ë¥¼ ì´ë©”ì¼ ìž‘ì„± ì–‘ì‹ì˜
"수신" í•„ë“œì— ë°°ì¹˜í•©ë‹ˆë‹¤. ì´ ìƒí™©ì—서 ì´ë©”ì¼ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 액티비티가 시작ë˜ê³  사용ìžê°€
ìž‘ì—…ì„ ëë‚´ë©´ 본ì¸ì˜ 액티비티가 재개ë˜ëŠ” 것입니다.</p>
@@ -263,14 +263,14 @@ startActivity(intent);
<p>때로는 시작한 액티비티ì—서 결과를 받고 ì‹¶ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 그런 경우,
({@link android.app.Activity#startActivity
startActivity()} 대신) {@link android.app.Activity#startActivityForResult
- startActivityForResult()}를 호출해서 액티비티를 시작합니다. 그런 ë‹¤ìŒ í›„ì† ì•¡í‹°ë¹„í‹°ì—서 결과를
+ startActivityForResult()}를 호출해서 액티비티를 시작합니다. 그런 ë‹¤ìŒ í›„ì† ì•¡í‹°ë¹„í‹°ì—서 결과를
받으려면, {@link android.app.Activity#onActivityResult onActivityResult()} 콜백
메서드를 구현합니다. 해당 í›„ì† ì•¡í‹°ë¹„í‹°ê°€ 완료ë˜ë©´, ì´ê²ƒì´ {@link
android.content.Intent} 형ì‹ìœ¼ë¡œ 결과를 {@link android.app.Activity#onActivityResult onActivityResult()}
ë©”ì„œë“œì— ë°˜í™˜í•©ë‹ˆë‹¤.</p>
-<p>예를 들어 사용ìžê°€ ì—°ë½ì²˜ 중ì—서 하나를 고를 수 있ë„ë¡ í•˜ê³  ì‹¶ì„ ìˆ˜ 있습니다.
-즉 ì—¬ëŸ¬ë¶„ì˜ ì•¡í‹°ë¹„í‹°ê°€ 해당 ì—°ë½ì²˜ì˜ 정보로 무언가 í•  수 있ë„ë¡ í•˜ëŠ” 것입니다. 그와 ê°™ì€ ì¸í…트를 ìƒì„±í•˜ê³  결과를 처리하려면
+<p>예를 들어 사용ìžê°€ ì—°ë½ì²˜ 중ì—서 하나를 고를 수 있ë„ë¡ í•˜ê³  ì‹¶ì„ ìˆ˜ 있습니다.
+즉 ì—¬ëŸ¬ë¶„ì˜ ì•¡í‹°ë¹„í‹°ê°€ 해당 ì—°ë½ì²˜ì˜ 정보로 무언가 í•  수 있ë„ë¡ í•˜ëŠ” 것입니다. 그와 ê°™ì€ ì¸í…트를 ìƒì„±í•˜ê³  결과를 처리하려면
다ìŒê³¼ ê°™ì´ í•˜ë©´ ë©ë‹ˆë‹¤.</p>
<pre>
@@ -299,7 +299,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
<p>ì´ ì˜ˆì‹œëŠ” 액티비티 결과를 처리하기 위해 {@link
android.app.Activity#onActivityResult onActivityResult()} 메서드ì—서 사용해야 í•  기본 논리를
나타낸 것입니다. 첫 번째 ì¡°ê±´ì€ ìš”ì²­ì´ ì„±ê³µì ì¸ì§€ 확ì¸í•©ë‹ˆë‹¤. ìš”ì²­ì— ì„±ê³µí–ˆë‹¤ë©´
-{@code resultCode}ê°€ {@link android.app.Activity#RESULT_OK}ê°€ ë©ë‹ˆë‹¤. ë˜í•œ, ì´ ê²°ê³¼ê°€ ì‘답하는 요청ì´
+{@code resultCode}ê°€ {@link android.app.Activity#RESULT_OK}ê°€ ë©ë‹ˆë‹¤. ë˜í•œ, ì´ ê²°ê³¼ê°€ ì‘답하는 요청ì´
알려져 ìžˆëŠ”ì§€ë„ í™•ì¸í•©ë‹ˆë‹¤. ì´ ê²½ìš°ì—는 {@code requestCode}ê°€
{@link android.app.Activity#startActivityForResult
startActivityForResult()}와 함께 ì „ì†¡ëœ ë‘ ë²ˆì§¸ 매개변수와 ì¼ì¹˜í•©ë‹ˆë‹¤. 여기서부터 코드가
@@ -317,58 +317,58 @@ android.content.ContentResolver}ê°€ 콘í…츠 제공ìžì— 대한 쿼리를 수í
<h2 id="ShuttingDown">액티비티 종료하기</h2>
<p>액티비티를 종료하려면 해당 ì•¡í‹°ë¹„í‹°ì˜ {@link android.app.Activity#finish
-finish()} 메서드를 호출하면 ë©ë‹ˆë‹¤.
+finish()} 메서드를 호출하면 ë©ë‹ˆë‹¤.
{@link android.app.Activity#finishActivity finishActivity()}를 호출하여 ì´ì „ì— ì‹œìž‘í•œ 별ë„ì˜ ì•¡í‹°ë¹„í‹°ë¥¼ 종료할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
-<p class="note"><strong>참고:</strong> ëŒ€ë¶€ë¶„ì˜ ê²½ìš°, ì´ì™€ ê°™ì€ ë©”ì„œë“œë¥¼ 사용하여 액티비티를 명시ì ìœ¼ë¡œ
-종료해서는 안 ë©ë‹ˆë‹¤. ë‹¤ìŒ ì„¹ì…˜ì—서 액티비티 수명 ì£¼ê¸°ì— ê´€í•´ ë…¼ì˜í•œ 바와 ê°™ì´,
-Android ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª…ì„ ëŒ€ì‹  관리해주므로 ì§ì ‘ 액티비티를 종료하지
-ì•Šì•„ë„ ë©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ ë©”ì„œë“œë¥¼ 호출하면 예ìƒë˜ëŠ” 사용ìž
-í™˜ê²½ì— ë¶€ì •ì ì¸ ì˜í–¥ì„ 미칠 수 있으며, ë”°ë¼ì„œ 사용ìžê°€ ì•¡í‹°ë¹„í‹°ì˜ ì´ ì¸ìŠ¤í„´ìŠ¤ì— ëŒì•„오는 ê²ƒì„ ì ˆëŒ€ ë°”ë¼ì§€ 않는 경우ì—ë§Œ
+<p class="note"><strong>참고:</strong> ëŒ€ë¶€ë¶„ì˜ ê²½ìš°, ì´ì™€ ê°™ì€ ë©”ì„œë“œë¥¼ 사용하여 액티비티를 명시ì ìœ¼ë¡œ
+종료해서는 안 ë©ë‹ˆë‹¤. ë‹¤ìŒ ì„¹ì…˜ì—서 액티비티 수명 ì£¼ê¸°ì— ê´€í•´ ë…¼ì˜í•œ 바와 ê°™ì´,
+Android ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª…ì„ ëŒ€ì‹  관리해주므로 ì§ì ‘ 액티비티를 종료하지
+ì•Šì•„ë„ ë©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ ë©”ì„œë“œë¥¼ 호출하면 예ìƒë˜ëŠ” 사용ìž
+í™˜ê²½ì— ë¶€ì •ì ì¸ ì˜í–¥ì„ 미칠 수 있으며, ë”°ë¼ì„œ 사용ìžê°€ ì•¡í‹°ë¹„í‹°ì˜ ì´ ì¸ìŠ¤í„´ìŠ¤ì— ëŒì•„오는 ê²ƒì„ ì ˆëŒ€ ë°”ë¼ì§€ 않는 경우ì—ë§Œ
사용해야 합니다.</p>
<h2 id="Lifecycle">액티비티 수명 주기 관리하기</h2>
-<p>콜백 메서드를 구현하여 ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기를 관리하는 것ì€
-강력하고 유연한 애플리케ì´ì…˜ 개발ì—
-대단히 중요한 ì—­í• ì„ í•©ë‹ˆë‹¤. ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기는 다른 ì•¡í‹°ë¹„í‹°ì™€ì˜ ê´€ê³„,
+<p>콜백 메서드를 구현하여 ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기를 관리하는 것ì€
+강력하고 유연한 애플리케ì´ì…˜ 개발ì—
+대단히 중요한 ì—­í• ì„ í•©ë‹ˆë‹¤. ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기는 다른 ì•¡í‹°ë¹„í‹°ì™€ì˜ ê´€ê³„,
ì•¡í‹°ë¹„í‹°ì˜ ìž‘ì—…ê³¼ ë°± ìŠ¤íƒ ë“±ì— ì§ì ‘ì ìœ¼ë¡œ ì˜í–¥ì„ 받습니다.</p>
<p>액티비티는 기본ì ìœ¼ë¡œ 세 가지 ìƒíƒœë¡œ 존재할 수 있습니다.</p>
<dl>
<dt><i>재개ë¨</i></dt>
- <dd>액티비티가 화면 ì „ê²½ì— ìžˆìœ¼ë©° 사용ìžì˜ ì´ˆì ì´ ë§žì¶°ì ¸ 있습니다 (ì´ ìƒíƒœë¥¼ 때로는
+ <dd>액티비티가 화면 ì „ê²½ì— ìžˆìœ¼ë©° 사용ìžì˜ ì´ˆì ì´ ë§žì¶°ì ¸ 있습니다 (ì´ ìƒíƒœë¥¼ 때로는
"실행 중"ì´ë¼ê³  ì¼ì»«ê¸°ë„ 합니다).</dd>
<dt><i>ì¼ì‹œì •ì§€ë¨</i></dt>
<dd>다른 액티비티가 ì „ê²½ì— ë‚˜ì™€ 있고 사용ìžì˜ ì‹œì„ ì„ ì§‘ì¤‘ì‹œí‚¤ê³  있지만, ì´ ì•¡í‹°ë¹„í‹°ë„ ì—¬ì „ížˆ 표시ë˜ì–´ 있습니다. 다시 ë§í•´,
-다른 액티비티가 ì´ ì•¡í‹°ë¹„í‹° ìœ„ì— í‘œì‹œë˜ì–´ 있으며 해당 액티비티는 부분ì ìœ¼ë¡œ 투명하거나
+다른 액티비티가 ì´ ì•¡í‹°ë¹„í‹° ìœ„ì— í‘œì‹œë˜ì–´ 있으며 해당 액티비티는 부분ì ìœ¼ë¡œ 투명하거나
ì „ì²´ í™”ë©´ì„ ë®ì§€ 않는 ìƒíƒœë¼ëŠ” 뜻입니다. ì¼ì‹œì •ì§€ëœ ì•¡í‹°ë¹„í‹°ëŠ” 완전히 살아있지만({@link android.app.Activity}
-개체가 ë©”ëª¨ë¦¬ì— ë³´ê´€ë˜ì–´ 있고, 모든 ìƒíƒœ ë° êµ¬ì„±ì› ì •ë³´ë¥¼ 유지하며,
+개체가 ë©”ëª¨ë¦¬ì— ë³´ê´€ë˜ì–´ 있고, 모든 ìƒíƒœ ë° êµ¬ì„±ì› ì •ë³´ë¥¼ 유지하며,
ì°½ 관리ìžì— 붙어 있는 ìƒíƒœë¡œ 유지ë¨), 메모리가 극히 부족한 경우 ì‹œìŠ¤í…œì´ ì¤‘ë‹¨ì‹œí‚¬ 수 있습니다.</dd>
<dt><i>ì •ì§€ë¨</i></dt>
- <dd>ì´ ì•¡í‹°ë¹„í‹°ê°€ 다른 ì•¡í‹°ë¹„í‹°ì— ì™„ì „ížˆ 가려진 ìƒíƒœìž…니다(액티비티가 ì´ì œ
+ <dd>ì´ ì•¡í‹°ë¹„í‹°ê°€ 다른 ì•¡í‹°ë¹„í‹°ì— ì™„ì „ížˆ 가려진 ìƒíƒœìž…니다(액티비티가 ì´ì œ
"ë°°ê²½"ì— ìœ„ì¹˜í•¨). ì¤‘ë‹¨ëœ ì•¡í‹°ë¹„í‹°ë„ ì—¬ì „ížˆ ì‚´ì•„ 있기는 마찬가지입니다({@link android.app.Activity}
개체가 ë©”ëª¨ë¦¬ì— ë³´ê´€ë˜ì–´ 있고, 모든 ìƒíƒœì™€ êµ¬ì„±ì› ì •ë³´ë¥¼ 유지하시만 ì°½ 관리ìžì— 붙어 있지 <em>않ìŒ</em>
-). 그러나, ì´ëŠ” ë” ì´ìƒ 사용ìžì—게 표시ë˜ì§€ 않으며
+). 그러나, ì´ëŠ” ë” ì´ìƒ 사용ìžì—게 표시ë˜ì§€ 않으며
다른 ê³³ì— ë©”ëª¨ë¦¬ê°€ 필요하면 ì‹œìŠ¤í…œì´ ì¢…ë£Œì‹œí‚¬ 수 있습니다.</dd>
</dl>
-<p>액티비티가 ì¼ì‹œì •ì§€ ë˜ëŠ” ì¤‘ë‹¨ëœ ìƒíƒœì´ë©´, ì‹œìŠ¤í…œì´ ì´ë¥¼ 메모리ì—서 삭제할 수 있습니다. ì´ëŸ¬ê¸° 위해서는
-종료를 요청하거나({@link android.app.Activity#finish finish()} 메서드를 호출) 단순히 ì´ ì•¡í‹°ë¹„í‹°ì˜ í”„ë¡œì„¸ìŠ¤ë¥¼ 중단시키면
-ë©ë‹ˆë‹¤. 액티비티가 다시 열릴 때ì—는(종료 ë˜ëŠ” ì¤‘ë‹¨ëœ í›„ì—) 처ìŒë¶€í„° 다시 ìƒì„±í•´ì•¼
+<p>액티비티가 ì¼ì‹œì •ì§€ ë˜ëŠ” ì¤‘ë‹¨ëœ ìƒíƒœì´ë©´, ì‹œìŠ¤í…œì´ ì´ë¥¼ 메모리ì—서 삭제할 수 있습니다. ì´ëŸ¬ê¸° 위해서는
+종료를 요청하거나({@link android.app.Activity#finish finish()} 메서드를 호출) 단순히 ì´ ì•¡í‹°ë¹„í‹°ì˜ í”„ë¡œì„¸ìŠ¤ë¥¼ 중단시키면
+ë©ë‹ˆë‹¤. 액티비티가 다시 열릴 때ì—는(종료 ë˜ëŠ” ì¤‘ë‹¨ëœ í›„ì—) 처ìŒë¶€í„° 다시 ìƒì„±í•´ì•¼
합니다.</p>
<h3 id="ImplementingLifecycleCallbacks">수명 주기 콜백 구현하기</h3>
-<p>위ì—서 설명한 바와 ê°™ì´ ì•¡í‹°ë¹„í‹°ê°€ 여러 가지 ìƒíƒœë¥¼ 오가며 전환ë˜ë©´, ì´ì™€ ê°™ì€ ë‚´ìš©ì´
-여러 가지 콜백 메서드를 통해 통지ë©ë‹ˆë‹¤. 콜백 메서드는 ëª¨ë‘ í›„í¬ë¡œì„œ,
-액티비티 ìƒíƒœê°€ ë³€ê²½ë  ë•Œ ì ì ˆí•œ ìž‘ì—…ì„ í•˜ê¸° 위해 ì´ë¥¼ 재정ì˜í•  수 있습니다. 다ìŒì˜ 골격
+<p>위ì—서 설명한 바와 ê°™ì´ ì•¡í‹°ë¹„í‹°ê°€ 여러 가지 ìƒíƒœë¥¼ 오가며 전환ë˜ë©´, ì´ì™€ ê°™ì€ ë‚´ìš©ì´
+여러 가지 콜백 메서드를 통해 통지ë©ë‹ˆë‹¤. 콜백 메서드는 ëª¨ë‘ í›„í¬ë¡œì„œ,
+액티비티 ìƒíƒœê°€ ë³€ê²½ë  ë•Œ ì ì ˆí•œ ìž‘ì—…ì„ í•˜ê¸° 위해 ì´ë¥¼ 재정ì˜í•  수 있습니다. 다ìŒì˜ 골격
액티비티ì—는 기본 수명 주기 메서드가 ê°ê° 하나씩 í¬í•¨ë˜ì–´ 있습니다.</p>
@@ -410,51 +410,51 @@ public class ExampleActivity extends Activity {
<p class="note"><strong>참고:</strong> ì´ì™€ ê°™ì€ ìˆ˜ëª… 주기 메서드를 구현하려면, í•­ìƒ
슈í¼í´ëž˜ìФ êµ¬í˜„ì„ í˜¸ì¶œí•œ 다ìŒì—ë§Œ 다른 ìž‘ì—…ì„ ì‹œìž‘í•  수 있습니다(ìœ„ì˜ ì˜ˆì‹œ 참조).</p>
-<p>ì´ì™€ ê°™ì€ ë©”ì„œë“œë¥¼ ëª¨ë‘ í•©ì³ í•œ ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기 전체를 ì •ì˜í•©ë‹ˆë‹¤. ì´ëŸ¬í•œ 메서드를 구현함으로ì¨
+<p>ì´ì™€ ê°™ì€ ë©”ì„œë“œë¥¼ ëª¨ë‘ í•©ì³ í•œ ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기 전체를 ì •ì˜í•©ë‹ˆë‹¤. ì´ëŸ¬í•œ 메서드를 구현함으로ì¨
액티비티 수명 주기 ë‚´ì˜ ì„¸ 가지 ì¤‘ì²©ëœ ë£¨í”„ë¥¼ 모니터ë§í•  수 있습니다. </p>
<ul>
<li>한 ì•¡í‹°ë¹„í‹°ì˜ <b>ì „ì²´ 수명</b>ì€ {@link
android.app.Activity#onCreate onCreate()} 호출과 {@link
-android.app.Activity#onDestroy} 호출 사ì´ë¥¼ ë§í•©ë‹ˆë‹¤. 액티비티는 {@link android.app.Activity#onCreate onCreate()}ì—서
-"ì „ì²´" ìƒíƒœ(ë ˆì´ì•„웃 ì •ì˜ ë“±)ì˜ ì„¤ì •ì„ ìˆ˜í–‰í•œ ë‹¤ìŒ ë‚˜ë¨¸ì§€ 리소스를
-ëª¨ë‘ {@link android.app.Activity#onDestroy}ì— í•´ì œí•´ì•¼ 합니다. 예를 들어,
-ì•¡í‹°ë¹„í‹°ì— ë„¤íŠ¸ì›Œí¬ì—서 ë°ì´í„°ë¥¼ 다운로드하기 위해 ë°°ê²½ì—서 실행 ì¤‘ì¸ ìŠ¤ë ˆë“œê°€ 있는 경우, ì´ëŠ”
+android.app.Activity#onDestroy} 호출 사ì´ë¥¼ ë§í•©ë‹ˆë‹¤. 액티비티는 {@link android.app.Activity#onCreate onCreate()}ì—서
+"ì „ì²´" ìƒíƒœ(ë ˆì´ì•„웃 ì •ì˜ ë“±)ì˜ ì„¤ì •ì„ ìˆ˜í–‰í•œ ë‹¤ìŒ ë‚˜ë¨¸ì§€ 리소스를
+ëª¨ë‘ {@link android.app.Activity#onDestroy}ì— í•´ì œí•´ì•¼ 합니다. 예를 들어,
+ì•¡í‹°ë¹„í‹°ì— ë„¤íŠ¸ì›Œí¬ì—서 ë°ì´í„°ë¥¼ 다운로드하기 위해 ë°°ê²½ì—서 실행 ì¤‘ì¸ ìŠ¤ë ˆë“œê°€ 있는 경우, ì´ëŠ”
해당 스레드를 {@link android.app.Activity#onCreate onCreate()}ì—서 ìƒì„±í•œ ë‹¤ìŒ {@link
android.app.Activity#onDestroy}ì—서 ê·¸ 스레드를 중단할 수 있습니다.</li>
<li><p>ì•¡í‹°ë¹„í‹°ì˜ <b>ê°€ì‹œì  ìˆ˜ëª…</b>ì€ {@link
android.app.Activity#onStart onStart()} 호출ì—서 {@link
-android.app.Activity#onStop onStop()} 호출 사ì´ë¥¼ ë§í•©ë‹ˆë‹¤. ì´ ê¸°ê°„ 중ì—는 사용ìžê°€ 액티비티를 화면ì—서 ë³´ê³  ì´ì™€
+android.app.Activity#onStop onStop()} 호출 사ì´ë¥¼ ë§í•©ë‹ˆë‹¤. ì´ ê¸°ê°„ 중ì—는 사용ìžê°€ 액티비티를 화면ì—서 ë³´ê³  ì´ì™€
ìƒí˜¸ìž‘용할 수 있습니다. 예컨대 {@link android.app.Activity#onStop onStop()}ì´ í˜¸ì¶œë˜ì–´
- 새 액티비티가 시작ë˜ë©´ ì´ ì•¡í‹°ë¹„í‹°ëŠ” ë” ì´ìƒ 표시ë˜ì§€ 않게 ë©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ ë‘ ê°€ì§€ 메서드 중ì—서
+ 새 액티비티가 시작ë˜ë©´ ì´ ì•¡í‹°ë¹„í‹°ëŠ” ë” ì´ìƒ 표시ë˜ì§€ 않게 ë©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ ë‘ ê°€ì§€ 메서드 중ì—서
사용ìžì—게 액티비티를 표시하는 ë° í•„ìš”í•œ 리소스를 유지하면 ë©ë‹ˆë‹¤. 예를 들어,
{@link
android.app.Activity#onStart onStart()}ì—서 {@link android.content.BroadcastReceiver}를 등ë¡í•˜ê³  UIì— ì˜í–¥ì„ 미치는 변화를 모니터ë§í•˜ê³ 
-{@link android.app.Activity#onStop onStop()}ì—서 등ë¡ì„ 해제하면 사용ìžëŠ” ì—¬ëŸ¬ë¶„ì´ ë¬´ì—‡ì„ í‘œì‹œí•˜ê³  있는지 ë” ì´ìƒ ë³¼ 수
+{@link android.app.Activity#onStop onStop()}ì—서 등ë¡ì„ 해제하면 사용ìžëŠ” ì—¬ëŸ¬ë¶„ì´ ë¬´ì—‡ì„ í‘œì‹œí•˜ê³  있는지 ë” ì´ìƒ ë³¼ 수
없게 ë©ë‹ˆë‹¤. ì‹œìŠ¤í…œì€ ì•¡í‹°ë¹„í‹°ì˜ ì „ì²´ 수명 ë‚´ë‚´ {@link android.app.Activity#onStart onStart()} ë° {@link
-android.app.Activity#onStop onStop()}ì„ ì—¬ëŸ¬ 번 호출할 수 있으며, ì´ë•Œ
+android.app.Activity#onStop onStop()}ì„ ì—¬ëŸ¬ 번 호출할 수 있으며, ì´ë•Œ
액티비티는 사용ìžì—게 표시ë˜ì—ˆë‹¤ 숨겨지는 ìƒíƒœë¥¼ 오가게 ë©ë‹ˆë‹¤.</p></li>
<li><p>ì•¡í‹°ë¹„í‹°ì˜ <b>ì „ê²½ 수명</b>ì€ {@link
android.app.Activity#onResume onResume()} 호출ì—서 {@link android.app.Activity#onPause
-onPause()} 호출 사ì´ë¥¼ ë§í•©ë‹ˆë‹¤. ì´ ê¸°ê°„ 중ì—는 ì´ ì•¡í‹°ë¹„í‹°ê°€ 화면ì—서 다른 모든 액티비티 ì•žì— í‘œì‹œë˜ë©° ì‚¬ìš©ìž ìž…ë ¥ë„
+onPause()} 호출 사ì´ë¥¼ ë§í•©ë‹ˆë‹¤. ì´ ê¸°ê°„ 중ì—는 ì´ ì•¡í‹°ë¹„í‹°ê°€ 화면ì—서 다른 모든 액티비티 ì•žì— í‘œì‹œë˜ë©° ì‚¬ìš©ìž ìž…ë ¥ë„
ì—¬ê¸°ì— ì§‘ì¤‘ë©ë‹ˆë‹¤. 액티비티는 ì „ê²½ì— ë‚˜íƒ€ë‚¬ë‹¤ 숨겨지는 ì „í™˜ì„ ìžì£¼ 반복할 수 있습니다. 예를 들어
-, 기기가 절전 ëª¨ë“œì— ë“¤ì–´ê°€ê±°ë‚˜ 대화 ìƒìžê°€
-나타나면 {@link android.app.Activity#onPause onPause()}ê°€ 호출ë©ë‹ˆë‹¤. ì´ ìƒíƒœëŠ” ìžì£¼ ì „í™˜ë  ìˆ˜ 있으므로, ì´ ë‘ ê°€ì§€ ë©”ì„œë“œì˜ ì½”ë“œëŠ”
+, 기기가 절전 ëª¨ë“œì— ë“¤ì–´ê°€ê±°ë‚˜ 대화 ìƒìžê°€
+나타나면 {@link android.app.Activity#onPause onPause()}ê°€ 호출ë©ë‹ˆë‹¤. ì´ ìƒíƒœëŠ” ìžì£¼ ì „í™˜ë  ìˆ˜ 있으므로, ì´ ë‘ ê°€ì§€ ë©”ì„œë“œì˜ ì½”ë“œëŠ”
ìƒë‹¹ížˆ 가벼워야 합니다. 그래야 ì „í™˜ì´ ëŠë ¤ 사용ìžë¥¼ 기다리게 하는 ì¼ì„ 피할 수 있습니다.</p></li>
</ul>
<p>그림 1ì€ ì•¡í‹°ë¹„í‹°ê°€ ìƒíƒœ 사ì´ì—서 취할 수 있는 ì´ì™€ ê°™ì€ ë£¨í”„ì™€ 경로를 나타낸 것입니다.
-ì§ì‚¬ê°í˜•ì´ ì•¡í‹°ë¹„í‹°ê°€ 여러 ìƒíƒœ 사ì´ë¥¼ 전환할 때 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë„ë¡
+ì§ì‚¬ê°í˜•ì´ ì•¡í‹°ë¹„í‹°ê°€ 여러 ìƒíƒœ 사ì´ë¥¼ 전환할 때 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë„ë¡
구현할 수 있는 콜백 메서드를 나타냅니다. <p>
<img src="{@docRoot}images/activity_lifecycle.png" alt="" />
<p class="img-caption"><strong>그림 1.</strong> 액티비티 수명 주기입니다.</p>
-<p>ê°™ì€ ìˆ˜ëª… 주기 콜백 메서드가 표 1ì— ë‚˜ì—´ë˜ì–´ 있으며, ì´ í‘œëŠ” ê° ì½œë°±
-메서드를 ë”ìš± ìƒì„¸í•˜ê²Œ 설명하며 ì•¡í‹°ë¹„í‹°ì˜ ì „ë°˜ì ì¸
-수명 주기 ë‚´ì—서 ê° ë©”ì„œë“œì˜ ìœ„ì¹˜ë¥¼ ë‚˜íƒ€ë‚´ê¸°ë„ í•©ë‹ˆë‹¤. 여기ì—는 콜백 메서드가 ì™„ë£Œëœ ë‹¤ìŒ
+<p>ê°™ì€ ìˆ˜ëª… 주기 콜백 메서드가 표 1ì— ë‚˜ì—´ë˜ì–´ 있으며, ì´ í‘œëŠ” ê° ì½œë°±
+메서드를 ë”ìš± ìƒì„¸í•˜ê²Œ 설명하며 ì•¡í‹°ë¹„í‹°ì˜ ì „ë°˜ì ì¸
+수명 주기 ë‚´ì—서 ê° ë©”ì„œë“œì˜ ìœ„ì¹˜ë¥¼ ë‚˜íƒ€ë‚´ê¸°ë„ í•©ë‹ˆë‹¤. 여기ì—는 콜백 메서드가 ì™„ë£Œëœ ë‹¤ìŒ
ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ë¥¼ 중단시킬 수 있는지 ì—¬ë¶€ë„ í¬í•¨ë˜ì–´ 있습니다.</p>
<p class="table-caption"><strong>표 1.</strong> 액티비티 수명 주기
@@ -474,9 +474,9 @@ onPause()} 호출 사ì´ë¥¼ ë§í•©ë‹ˆë‹¤. ì´ ê¸°ê°„ 중ì—는 ì´ ì•¡í‹°ë¹„í‹°ê
<tr>
<td colspan="3" align="left"><code>{@link android.app.Activity#onCreate onCreate()}</code></td>
<td>액티비티가 ì²˜ìŒ ìƒì„±ë˜ì—ˆì„ 때 호출ë©ë‹ˆë‹¤.
- ì´ê³³ì—서 ì¼ë°˜ì ì¸ ì •ì  ì„¤ì •ì„ ëª¨ë‘ ìˆ˜í–‰í•´ì•¼ 합니다.
-즉 보기 ìƒì„±, 목ë¡ì— ë°ì´í„° ë°”ì¸ë”©í•˜ê¸° ë“±ì„ ë§í•©ë‹ˆë‹¤. ì´ ë©”ì„œë“œì—는
-ì•¡í‹°ë¹„í‹°ì˜ ì´ì „ ìƒíƒœê°€ ìº¡ì²˜ëœ ê²½ìš° 해당 ìƒíƒœë¥¼ í¬í•¨í•œ
+ ì´ê³³ì—서 ì¼ë°˜ì ì¸ ì •ì  ì„¤ì •ì„ ëª¨ë‘ ìˆ˜í–‰í•´ì•¼ 합니다.
+즉 보기 ìƒì„±, 목ë¡ì— ë°ì´í„° ë°”ì¸ë”©í•˜ê¸° ë“±ì„ ë§í•©ë‹ˆë‹¤. ì´ ë©”ì„œë“œì—는
+ì•¡í‹°ë¹„í‹°ì˜ ì´ì „ ìƒíƒœê°€ ìº¡ì²˜ëœ ê²½ìš° 해당 ìƒíƒœë¥¼ í¬í•¨í•œ
번들 개체가 전달ë©ë‹ˆë‹¤(ì´ ë¬¸ì„œ ë‚˜ì¤‘ì— ë‚˜ì˜¤ëŠ” <a href="#actstate">액티비티 ìƒíƒœ 저장하기</a>를 참조하십시오
).
<p>ì´ ë’¤ì—는 í•­ìƒ {@code onStart()}ê°€ ë”°ë¼ì˜µë‹ˆë‹¤.</p></td>
@@ -508,7 +508,7 @@ onRestart()}</code></td>
<td rowspan="2" style="border-left: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td align="left"><code>{@link android.app.Activity#onResume onResume()}</code></td>
<td>액티비티가 시작ë˜ê³  사용ìžì™€ ìƒí˜¸ 작용하기 ì§ì „ì—
-호출ë©ë‹ˆë‹¤. ì´ ì‹œì ì—서 액티비티는 액티비티
+호출ë©ë‹ˆë‹¤. ì´ ì‹œì ì—서 액티비티는 액티비티
스íƒì˜ 맨 ìœ„ì— ìžˆìœ¼ë©°, ì‚¬ìš©ìž ìž…ë ¥ì´ ìž…ë ¥ë˜ê³  있습니다.
<p>ì´ ë’¤ì—는 í•­ìƒ {@code onPause()}ê°€ ë”°ë¼ì˜µë‹ˆë‹¤.</p></td>
<td align="center">아니요</td>
@@ -517,10 +517,10 @@ onRestart()}</code></td>
<tr>
<td align="left"><code>{@link android.app.Activity#onPause onPause()}</code></td>
- <td>ì‹œìŠ¤í…œì´ ë‹¤ë¥¸ 액티비티를 재개하기 ì§ì „ì—
-호출ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ” ì¼ë°˜ì ìœ¼ë¡œ ë°ì´í„°ë¥¼ 유지하기 위해 저장ë˜ì§€ ì•Šì€ ë³€ê²½ 사항ì„
-커밋하는 ë°, 애니메ì´ì…˜ì„ 비롯하여 CPU를 소모하는 기타 ìž‘ì—…ì„ ì¤‘ë‹¨í•˜ëŠ” 등
-여러 가지 ìš©ë„ì— ì‚¬ìš©ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ” 무슨 ì¼ì„ 하든 매우 빨리 ë내야 합니다.
+ <td>ì‹œìŠ¤í…œì´ ë‹¤ë¥¸ 액티비티를 재개하기 ì§ì „ì—
+호출ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ” ì¼ë°˜ì ìœ¼ë¡œ ë°ì´í„°ë¥¼ 유지하기 위해 저장ë˜ì§€ ì•Šì€ ë³€ê²½ 사항ì„
+커밋하는 ë°, 애니메ì´ì…˜ì„ 비롯하여 CPU를 소모하는 기타 ìž‘ì—…ì„ ì¤‘ë‹¨í•˜ëŠ” 등
+여러 가지 ìš©ë„ì— ì‚¬ìš©ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ” 무슨 ì¼ì„ 하든 매우 빨리 ë내야 합니다.
ì´ê²ƒì´ ë°˜í™˜ë  ë•Œê¹Œì§€ ë‹¤ìŒ ì•¡í‹°ë¹„í‹°ê°€ 재개ë˜ì§€ 않기 때문입니다.
<p>액티비티가 다시 전경으로 ëŒì•„오면 {@code onResume()}ì´ ë’¤ì— ë”°ë¼ì˜¤ê³ 
액티비티가 사용ìžì—게 ë³´ì´ì§€ 않게 ë˜ë©´{@code onStop()}ì´ ë’¤ì— ë”°ë¼ì˜µë‹ˆë‹¤.
@@ -544,11 +544,11 @@ onRestart()}</code></td>
<tr>
<td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
onDestroy()}</code></td>
- <td>액티비티가 소멸ë˜ê¸° ì „ì— í˜¸ì¶œë©ë‹ˆë‹¤. ì´ê²ƒì´ 액티비티가 받는
-마지막 호출입니다. ì´ê²ƒì´ í˜¸ì¶œë  ìˆ˜ 있는 경우는 액티비티가
+ <td>액티비티가 소멸ë˜ê¸° ì „ì— í˜¸ì¶œë©ë‹ˆë‹¤. ì´ê²ƒì´ 액티비티가 받는
+마지막 호출입니다. ì´ê²ƒì´ í˜¸ì¶œë  ìˆ˜ 있는 경우는 액티비티가
완료ë˜ëŠ” 중ì´ë¼ì„œ(누군가가 ì—¬ê¸°ì— <code>{@link android.app.Activity#finish
- finish()}</code>를 호출해서)ì¼ ìˆ˜ë„ ìžˆê³ , ì‹œìŠ¤í…œì´ ê³µê°„ì„ ì ˆì•½í•˜ê¸° 위해 ì•¡í‹°ë¹„í‹°ì˜ ì´ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ì¼ì‹œì ìœ¼ë¡œ 소멸시키는
-중ì´ê¸° ë•Œë¬¸ì¼ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ì™€ ê°™ì€
+ finish()}</code>를 호출해서)ì¼ ìˆ˜ë„ ìžˆê³ , ì‹œìŠ¤í…œì´ ê³µê°„ì„ ì ˆì•½í•˜ê¸° 위해 ì•¡í‹°ë¹„í‹°ì˜ ì´ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ì¼ì‹œì ìœ¼ë¡œ 소멸시키는
+중ì´ê¸° ë•Œë¬¸ì¼ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ì™€ ê°™ì€
ë‘ ê°€ì§€ 시나리오는 <code>{@link
android.app.Activity#isFinishing isFinishing()}</code> 메서드로 구분할 수 있습니다.</td>
<td align="center"><strong style="color:#800000">예</strong></td>
@@ -558,49 +558,49 @@ onDestroy()}</code></td>
</table>
<p>"완료 후 중단 가능?"ì´ë¼ëŠ” ë ˆì´ë¸”ì´ ë¶™ì€ ì—´ì€
- ì‹œìŠ¤í…œì´ <em>메서드가 ë°˜í™˜ëœ í›„</em> 액티비티 ì½”ë“œì˜ ë‹¤ë¥¸ ì¤„ì„ ì‹¤í–‰í•˜ì§€ 않고ë„
+ ì‹œìŠ¤í…œì´ <em>메서드가 ë°˜í™˜ëœ í›„</em> 액티비티 ì½”ë“œì˜ ë‹¤ë¥¸ ì¤„ì„ ì‹¤í–‰í•˜ì§€ 않고ë„
언제든 ì´ ì•¡í‹°ë¹„í‹°ë¥¼ 호스팅하는 프로세스를 중단시킬 수 있는지 여부를 나타냅니다. ë‹¤ìŒ ì„¸ 가지 메서드가 "예"로 표시ë˜ì–´ 있습니다({@link
android.app.Activity#onPause
onPause()}, {@link android.app.Activity#onStop onStop()} ë° {@link android.app.Activity#onDestroy
onDestroy()}). {@link android.app.Activity#onPause onPause()}ê°€ 세 가지 메서드 중ì—서
첫 번째ì´ë¯€ë¡œ, 액티비티가 ìƒì„±ë˜ë©´ {@link android.app.Activity#onPause onPause()}는 프로세스가 <em>지워지기 ì „ì—</em>
-반드시 호출ë˜ëŠ” 마지막 메서드입니다.
+반드시 호출ë˜ëŠ” 마지막 메서드입니다.
ì‹œìŠ¤í…œì´ ë¹„ìƒ ì‹œì— ë©”ëª¨ë¦¬ë¥¼ 복구해야 í•  경우, {@link
android.app.Activity#onStop onStop()}와 {@link android.app.Activity#onDestroy onDestroy()}는
-호출ë˜ì§€ ì•Šì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ë”°ë¼ì„œ, 중요한 ì˜êµ¬ì  ë°ì´í„°(ì‚¬ìš©ìž íŽ¸ì§‘ 등)를 보관하기 위해 작성하는 경우ì—는 {@link android.app.Activity#onPause onPause()}를 사용해야
-합니다. 그러나, {@link android.app.Activity#onPause onPause()} 중ì—
-ì–´ëŠ ì •ë³´ë¥¼ 유지해야 할지는 조심해서 ì„ íƒí•´ì•¼ 합니다. ì´ ë©”ì„œë“œì— ì°¨ë‹¨ 절차가 있으면
-ë‹¤ìŒ ì•¡í‹°ë¹„í‹°ë¡œì˜ ì „í™˜ì„ ì°¨ë‹¨í•˜ê³  ì‚¬ìš©ìž ê²½í—˜ì„ ëŠë ¤ì§€ê²Œ í•  수 있기
+호출ë˜ì§€ ì•Šì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ë”°ë¼ì„œ, 중요한 ì˜êµ¬ì  ë°ì´í„°(ì‚¬ìš©ìž íŽ¸ì§‘ 등)를 보관하기 위해 작성하는 경우ì—는 {@link android.app.Activity#onPause onPause()}를 사용해야
+합니다. 그러나, {@link android.app.Activity#onPause onPause()} 중ì—
+ì–´ëŠ ì •ë³´ë¥¼ 유지해야 할지는 조심해서 ì„ íƒí•´ì•¼ 합니다. ì´ ë©”ì„œë“œì— ì°¨ë‹¨ 절차가 있으면
+ë‹¤ìŒ ì•¡í‹°ë¹„í‹°ë¡œì˜ ì „í™˜ì„ ì°¨ë‹¨í•˜ê³  ì‚¬ìš©ìž ê²½í—˜ì„ ëŠë ¤ì§€ê²Œ í•  수 있기
때문입니다.</p>
-<p> <b>중단 가능한</b> ì—´ì— "아니요"로 í‘œì‹œëœ ë©”ì„œë“œëŠ” 액티비티를 호스팅하는 프로세스를
-보호하여 í˜¸ì¶œëœ ì¦‰ì‹œ 중단ë˜ì§€ 않ë„ë¡ ë°©ì§€í•©ë‹ˆë‹¤. ë”°ë¼ì„œ 액티비티는
-{@link android.app.Activity#onPause onPause()}ê°€ 반환ë˜ëŠ” 시기부터
-{@link android.app.Activity#onResume onResume()}ì´ í˜¸ì¶œë˜ëŠ” 시기 사ì´ì— 중단시킬 수 있습니다. 다시 중단시킬 수 있는 ìƒíƒœê°€ ë˜ë ¤ë©´
+<p> <b>중단 가능한</b> ì—´ì— "아니요"로 í‘œì‹œëœ ë©”ì„œë“œëŠ” 액티비티를 호스팅하는 프로세스를
+보호하여 í˜¸ì¶œëœ ì¦‰ì‹œ 중단ë˜ì§€ 않ë„ë¡ ë°©ì§€í•©ë‹ˆë‹¤. ë”°ë¼ì„œ 액티비티는
+{@link android.app.Activity#onPause onPause()}ê°€ 반환ë˜ëŠ” 시기부터
+{@link android.app.Activity#onResume onResume()}ì´ í˜¸ì¶œë˜ëŠ” 시기 사ì´ì— 중단시킬 수 있습니다. 다시 중단시킬 수 있는 ìƒíƒœê°€ ë˜ë ¤ë©´
{@link android.app.Activity#onPause onPause()}ê°€ 다시 호출ë˜ì–´ 반환ë˜ì–´ì•¼ 합니다. </p>
-<p class="note"><strong>참고:</strong> 표 1ì— ë‚˜íƒ€ë‚œ ì´ëŸ° ì •ì˜ì—
-따르면 엄밀히 ë§í•´ "중단 가능한" ê²ƒì´ ì•„ë‹Œ 액티비티ë¼ë„ ì‹œìŠ¤í…œì´ ì¤‘ë‹¨ì‹œí‚¬ 수는 있습니다. 다만 ì´ê²ƒì€ 다른 리소스가 없는
-극단ì ì¸ ìƒí™©ì—서만 ë°œìƒí•©ë‹ˆë‹¤. 액티비티가 ì¤‘ë‹¨ë  ìˆ˜ 있는 시기가
+<p class="note"><strong>참고:</strong> 표 1ì— ë‚˜íƒ€ë‚œ ì´ëŸ° ì •ì˜ì—
+따르면 엄밀히 ë§í•´ "중단 가능한" ê²ƒì´ ì•„ë‹Œ 액티비티ë¼ë„ ì‹œìŠ¤í…œì´ ì¤‘ë‹¨ì‹œí‚¬ 수는 있습니다. 다만 ì´ê²ƒì€ 다른 리소스가 없는
+극단ì ì¸ ìƒí™©ì—서만 ë°œìƒí•©ë‹ˆë‹¤. 액티비티가 ì¤‘ë‹¨ë  ìˆ˜ 있는 시기가
언제ì¸ì§€ëŠ” <a href="{@docRoot}guide/components/processes-and-threads.html">프로세스 ë°
스레딩</a> 문서ì—서 보다 ìžì„¸ížˆ ë…¼ì˜í•©ë‹ˆë‹¤.</p>
<h3 id="SavingActivityState">액티비티 ìƒíƒœ 저장하기</h3>
-<p><a href="#Lifecycle">액티비티 수명 주기 관리하기</a> ë„ìž…ë¶€ì—서는 액티비티가
-ì¼ì‹œì¤‘ì§€ë˜ê±°ë‚˜
-중단ë˜ì—ˆë”ë¼ë„ ì•¡í‹°ë¹„í‹°ì˜ ìƒíƒœëŠ” 그대로 유지ëœë‹¤ê³  잠시 언급한 ë°” 있습니다. ì´ê²ƒì€
-{@link android.app.Activity} 개체가 ì¼ì‹œì¤‘ì§€ë˜ê±°ë‚˜ ì¤‘ë‹¨ëœ ê²½ìš°ì—ë„
-메모리 ì•ˆì— ê·¸ëŒ€ë¡œ ë³´ê´€ë˜ì—ˆê¸° ë•Œë¬¸ì— ê°€ëŠ¥í•©ë‹ˆë‹¤. 즉 ì´ ì•¡í‹°ë¹„í‹°ì˜ êµ¬ì„±ì›ê³¼ 현재 ìƒíƒœì— 대한 모든 ì •ë³´ê°€ ì•„ì§ ì‚´ì•„ 있다는 뜻입니다. ë”°ë¼ì„œ, 사용ìžê°€
-액티비티 ë‚´ì—서 변경한 모든 ë‚´ìš©ë„ ê·¸ëŒ€ë¡œ 유지ë˜ì–´ 액티비티가 전경으로
+<p><a href="#Lifecycle">액티비티 수명 주기 관리하기</a> ë„ìž…ë¶€ì—서는 액티비티가
+ì¼ì‹œì¤‘ì§€ë˜ê±°ë‚˜
+중단ë˜ì—ˆë”ë¼ë„ ì•¡í‹°ë¹„í‹°ì˜ ìƒíƒœëŠ” 그대로 유지ëœë‹¤ê³  잠시 언급한 ë°” 있습니다. ì´ê²ƒì€
+{@link android.app.Activity} 개체가 ì¼ì‹œì¤‘ì§€ë˜ê±°ë‚˜ ì¤‘ë‹¨ëœ ê²½ìš°ì—ë„
+메모리 ì•ˆì— ê·¸ëŒ€ë¡œ ë³´ê´€ë˜ì—ˆê¸° ë•Œë¬¸ì— ê°€ëŠ¥í•©ë‹ˆë‹¤. 즉 ì´ ì•¡í‹°ë¹„í‹°ì˜ êµ¬ì„±ì›ê³¼ 현재 ìƒíƒœì— 대한 모든 ì •ë³´ê°€ ì•„ì§ ì‚´ì•„ 있다는 뜻입니다. ë”°ë¼ì„œ, 사용ìžê°€
+액티비티 ë‚´ì—서 변경한 모든 ë‚´ìš©ë„ ê·¸ëŒ€ë¡œ 유지ë˜ì–´ 액티비티가 전경으로
ëŒì•„ê°ˆ 때("재개"ë  ë•Œ) 그와 ê°™ì€ ë³€ê²½ ì‚¬í•­ë„ ê·¸ëŒ€ë¡œ 존재하게 ë©ë‹ˆë‹¤.</p>
<p>그러나 ì‹œìŠ¤í…œì´ ë©”ëª¨ë¦¬ë¥¼ 복구하기 위해 액티비티를 소멸시키는 경우ì—는 {@link
-android.app.Activity} 개체가 소멸ë˜ë¯€ë¡œ ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ì˜ ìƒíƒœë¥¼ 온전히 유지한 채로 간단하게 재개할 수 없게
-ë©ë‹ˆë‹¤. 대신, 사용ìžê°€ 다시 ì´ ì•¡í‹°ë¹„í‹°ë¡œ ì´ë™í•´ 오면 ì‹œìŠ¤í…œì´ {@link android.app.Activity} 개체를
-다시 ìƒì„±í•´ì•¼ 합니다. 하지만, 사용ìžëŠ” 시스템ì´
-해당 액티비티를 소멸시켰다가 다시 ìƒì„±í–ˆë‹¤ëŠ” ê²ƒì„ ëª¨ë¦…ë‹ˆë‹¤.
+android.app.Activity} 개체가 소멸ë˜ë¯€ë¡œ ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ì˜ ìƒíƒœë¥¼ 온전히 유지한 채로 간단하게 재개할 수 없게
+ë©ë‹ˆë‹¤. 대신, 사용ìžê°€ 다시 ì´ ì•¡í‹°ë¹„í‹°ë¡œ ì´ë™í•´ 오면 ì‹œìŠ¤í…œì´ {@link android.app.Activity} 개체를
+다시 ìƒì„±í•´ì•¼ 합니다. 하지만, 사용ìžëŠ” 시스템ì´
+해당 액티비티를 소멸시켰다가 다시 ìƒì„±í–ˆë‹¤ëŠ” ê²ƒì„ ëª¨ë¦…ë‹ˆë‹¤.
ë”°ë¼ì„œ 액티비티가 예전과 ë˜‘ê°™ì„ ê²ƒì´ë¼ê³  예ìƒí•  것입니다. ì´ëŸ° ìƒí™©ì—서는
액티비티 ìƒíƒœì— 관한 정보를 저장할 수 있는 추가 콜백 메서드
{@link
@@ -617,19 +617,19 @@ android.os.Bundle#putInt putInt()} ê°™ì€ ë©”ì„œë“œë¥¼ 사용하여, ì´ ë©”ì„œë
android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}ì—게 전달합니다. ì´ë“¤ 메서드 중
하나를 사용하여 {@link android.os.Bundle}ì—서 ì €ìž¥ëœ ìƒíƒœë¥¼ 추출하고 액티비티 ìƒíƒœ
를 ë³µì›í•  수 있습니다. 복구할 ìƒíƒœ ì •ë³´ê°€ 없는 경우, 여러분ì—게 전달ë˜ëŠ” {@link
-android.os.Bundle}ì€ null입니다(액티비티가 ì²˜ìŒ ìƒì„±ë˜ì—ˆì„ 때 ì´ëŸ° 경우가
+android.os.Bundle}ì€ null입니다(액티비티가 ì²˜ìŒ ìƒì„±ë˜ì—ˆì„ 때 ì´ëŸ° 경우가
ë°œìƒí•©ë‹ˆë‹¤).</p>
<img src="{@docRoot}images/fundamentals/restore_instance.png" alt="" />
-<p class="img-caption"><strong>그림 2.</strong> ì•¡í‹°ë¹„í‹°ì˜ ìƒíƒœê°€ 온전한 채로 사용ìžì˜
-ì´ˆì ì— 다시 ëŒì•„오는 ë°ì—는 ë‘ ê°€ì§€ ë°©ì‹ì´ 있습니다. 하나는 액티비티가 소멸ë˜ì—ˆë‹¤ê°€ 다시 ìƒì„±ë˜ì–´ 액티비티가
-ì´ì „ì— ì €ìž¥ëœ ìƒíƒœë¥¼ 복구해야 하는 경우, 다른 하나는 액티비티가 중단ë˜ì—ˆë‹¤ê°€ 재개ë˜ì—ˆìœ¼ë©°
+<p class="img-caption"><strong>그림 2.</strong> ì•¡í‹°ë¹„í‹°ì˜ ìƒíƒœê°€ 온전한 채로 사용ìžì˜
+ì´ˆì ì— 다시 ëŒì•„오는 ë°ì—는 ë‘ ê°€ì§€ ë°©ì‹ì´ 있습니다. 하나는 액티비티가 소멸ë˜ì—ˆë‹¤ê°€ 다시 ìƒì„±ë˜ì–´ 액티비티가
+ì´ì „ì— ì €ìž¥ëœ ìƒíƒœë¥¼ 복구해야 하는 경우, 다른 하나는 액티비티가 중단ë˜ì—ˆë‹¤ê°€ 재개ë˜ì—ˆìœ¼ë©°
액티비티 ìƒíƒœê°€ 온전히 ìœ ì§€ëœ ê²½ìš°ìž…ë‹ˆë‹¤.</p>
<p class="note"><strong>참고:</strong> ìƒíƒœë¥¼ 저장할 필요가 없는 ê²½ìš°ë„ ìžˆìœ¼ë¯€ë¡œ 액티비티가 소멸ë˜ê¸° ì „ì— {@link
android.app.Activity#onSaveInstanceState onSaveInstanceState()}ê°€ 호출ëœë‹¤ëŠ” ë³´ìž¥ì€ ì—†ìŠµë‹ˆë‹¤
-(예컨대 사용ìžê°€
+(예컨대 사용ìžê°€
명시ì ìœ¼ë¡œ
액티비티를 닫기 위해 <em>뒤로</em> ë²„íŠ¼ì„ ëˆŒëŸ¬ì„œ 액티비티를 ë– ë‚  때가 ì´ì— 해당합니다). ì‹œìŠ¤í…œì´ {@link android.app.Activity#onSaveInstanceState
onSaveInstanceState()}를 호출하는 경우, {@link
@@ -642,9 +642,9 @@ android.app.Activity#onSaveInstanceState onSaveInstanceState()}를 구현하지
android.app.Activity#onSaveInstanceState onSaveInstanceState()}ê°€ ì¼ë¶€ 액티비티 ìƒíƒœë¥¼ 복구합니다. 특히, 기본
êµ¬í˜„ì€ ë ˆì´ì•„웃ì—서 {@link
android.view.View}가 나올 때마다 해당하는 {@link
-android.view.View#onSaveInstanceState onSaveInstanceState()} 메서드를 호출하고, ì´ ë•Œë¬¸ì— ê° ë³´ê¸°ê°€ 저장해야 하는 ìžì²´ 관련 정보를 제공할 수
-있게 í•´ì¤ë‹ˆë‹¤. Android 프레임워í¬ë¥¼ 사용하는 ìœ„ì ¯ì€ ê±°ì˜ ëŒ€ë¶€ë¶„ ì´ ë©”ì„œë“œë¥¼
-í•„ìš”ì— ë”°ë¼ êµ¬í˜„í•˜ë¯€ë¡œ, UIì— ëˆˆì— ë³´ì´ëŠ” ë³€ê²½ì´ ìžˆìœ¼ë©´ ëª¨ë‘ ìžë™ìœ¼ë¡œ 저장ë˜ë©° 액티비티를 다시
+android.view.View#onSaveInstanceState onSaveInstanceState()} 메서드를 호출하고, ì´ ë•Œë¬¸ì— ê° ë³´ê¸°ê°€ 저장해야 하는 ìžì²´ 관련 정보를 제공할 수
+있게 í•´ì¤ë‹ˆë‹¤. Android 프레임워í¬ë¥¼ 사용하는 ìœ„ì ¯ì€ ê±°ì˜ ëŒ€ë¶€ë¶„ ì´ ë©”ì„œë“œë¥¼
+í•„ìš”ì— ë”°ë¼ êµ¬í˜„í•˜ë¯€ë¡œ, UIì— ëˆˆì— ë³´ì´ëŠ” ë³€ê²½ì´ ìžˆìœ¼ë©´ ëª¨ë‘ ìžë™ìœ¼ë¡œ 저장ë˜ë©° 액티비티를 다시
ìƒì„±í•˜ë©´ 복구ë©ë‹ˆë‹¤. 예를 들어, {@link android.widget.EditText} ìœ„ì ¯ì€ ì‚¬ìš©ìžê°€ 입력한 모든 í…스트
를 저장하고 {@link android.widget.CheckBox} ìœ„ì ¯ì€ í™•ì¸ ì—¬ë¶€ë¥¼ 저장합니다.
ì—¬ëŸ¬ë¶„ì´ í•´ì•¼ í•  유ì¼í•œ ìž‘ì—…ì€ ìƒíƒœë¥¼ ì €ìž¥í•˜ê³ ìž í•˜ëŠ” ê° ìœ„ì ¯ì— ê³ ìœ  ID(<a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">{@code android:id}</a>
@@ -653,9 +653,9 @@ android.view.View#onSaveInstanceState onSaveInstanceState()} 메서드를 호출
<div class="sidebox-wrapper">
<div class="sidebox">
-<p>ë˜í•œ,
-{@link android.R.attr#saveEnabled android:saveEnabled} ì†ì„±ì„ {@code "false"}로 설정하거나
-{@link android.view.View#setSaveEnabled setSaveEnabled()} 메서드를 호출해서 ë ˆì´ì•„ì›ƒì˜ ë³´ê¸°ê°€ ìƒíƒœë¥¼ 저장하지 못하ë„ë¡ ëª…ì‹œì ìœ¼ë¡œ ë§‰ì„ ìˆ˜ 있습니다. ë³´í†µì€ ì´ê²ƒì„ 비활성화해서는
+<p>ë˜í•œ,
+{@link android.R.attr#saveEnabled android:saveEnabled} ì†ì„±ì„ {@code "false"}로 설정하거나
+{@link android.view.View#setSaveEnabled setSaveEnabled()} 메서드를 호출해서 ë ˆì´ì•„ì›ƒì˜ ë³´ê¸°ê°€ ìƒíƒœë¥¼ 저장하지 못하ë„ë¡ ëª…ì‹œì ìœ¼ë¡œ ë§‰ì„ ìˆ˜ 있습니다. ë³´í†µì€ ì´ê²ƒì„ 비활성화해서는
안 ë˜ì§€ë§Œ, 액티비티 UIì˜ ìƒíƒœë¥¼ 다르게 ë³µêµ¬í•˜ê³ ìž í•˜ëŠ” 경우 그렇게 í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
</div>
</div>
@@ -668,25 +668,25 @@ UIì—서 ë³µêµ¬ëœ ê°’ê³¼ ìƒê´€ê´€ê³„ê°€ ìžˆì„ ìˆ˜ 있지만 ì´ëŸ° UI ê°’ì„
).</p>
<p>{@link
-android.app.Activity#onSaveInstanceState onSaveInstanceState()}ì˜ ê¸°ë³¸ êµ¬í˜„ì´ UI ìƒíƒœë¥¼ 저장하는 ë° ë„ì›€ì´ ë˜ê¸° 때문ì—,
-추가 ìƒíƒœ 정보를 저장하기 위해 ì´ ë©”ì„œë“œë¥¼ 재정ì˜í•˜ë ¤ë©´
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}ì˜ ê¸°ë³¸ êµ¬í˜„ì´ UI ìƒíƒœë¥¼ 저장하는 ë° ë„ì›€ì´ ë˜ê¸° 때문ì—,
+추가 ìƒíƒœ 정보를 저장하기 위해 ì´ ë©”ì„œë“œë¥¼ 재정ì˜í•˜ë ¤ë©´
ìž‘ì—…ì„ í•˜ê¸° ì „ì— í•­ìƒ{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}ì˜ ìŠˆí¼í´ëž˜ìФ 구현
ì„ í˜¸ì¶œí•´ì•¼ 합니다. ì´ì™€ 마찬가지로 {@link
-android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}를 재정ì˜í•˜ëŠ” 경우, ì´ê²ƒì˜ 슈í¼í´ëž˜ìФ êµ¬í˜„ì„ í˜¸ì¶œí•´ì•¼ í•˜ê¸°ë„ í•©ë‹ˆë‹¤.
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}를 재정ì˜í•˜ëŠ” 경우, ì´ê²ƒì˜ 슈í¼í´ëž˜ìФ êµ¬í˜„ì„ í˜¸ì¶œí•´ì•¼ í•˜ê¸°ë„ í•©ë‹ˆë‹¤.
ì´ë ‡ê²Œ 해야 기본 êµ¬í˜„ì´ ë³´ê¸° ìƒíƒœë¥¼ 복구할 수 있습니다.</p>
<p class="note"><strong>참고:</strong> {@link android.app.Activity#onSaveInstanceState
onSaveInstanceState()}ì˜ í˜¸ì¶œì´ ë³´ìž¥ë˜ì§€ 않으므로
ì´ê²ƒì€ ì•¡í‹°ë¹„í‹°ì˜ ì¼ì‹œì  ìƒíƒœ(UIì˜ ìƒíƒœ
-)를 기ë¡í•˜ëŠ” ë°ì—ë§Œ 사용하고, ì˜êµ¬ ë°ì´í„°ë¥¼ 보관하는 ë° ì‚¬ìš©í•´ì„œëŠ” 안 ë©ë‹ˆë‹¤. 대신, 사용ìžê°€ 액티비티를 ë– ë‚  때 ì˜êµ¬ì ì¸ ë°ì´í„°(ë°ì´í„°ë² ì´ìŠ¤ì— ì €ìž¥ë˜ì–´ì•¼
+)를 기ë¡í•˜ëŠ” ë°ì—ë§Œ 사용하고, ì˜êµ¬ ë°ì´í„°ë¥¼ 보관하는 ë° ì‚¬ìš©í•´ì„œëŠ” 안 ë©ë‹ˆë‹¤. 대신, 사용ìžê°€ 액티비티를 ë– ë‚  때 ì˜êµ¬ì ì¸ ë°ì´í„°(ë°ì´í„°ë² ì´ìŠ¤ì— ì €ìž¥ë˜ì–´ì•¼
하는 ë°ì´í„° 등)를 저장하려면 {@link
android.app.Activity#onPause onPause()}를 사용해야 합니다.</p>
<p>애플리케ì´ì…˜ì˜ ìƒíƒœ 저장 ê¸°ëŠ¥ì„ ì‹œí—˜í•˜ëŠ” ì¢‹ì€ ë°©ë²•ì€ ê¸°ê¸°ë¥¼ 회전해보고 화면 ë°©í–¥ì´
-바뀌는지 확ì¸í•˜ëŠ” 것입니다. 화면 ë°©í–¥ì´ ë°”ë€Œë©´ ì‹œìŠ¤í…œì€ ì•¡í‹°ë¹„í‹°ë¥¼
-소멸시켰다가 다시 ìƒì„±í•˜ì—¬ 새 화면 구성ì—서 ì´ìš©í•  수 있ì„ì§€ 모르는 대체
-리소스를 ì ìš©í•©ë‹ˆë‹¤. ì´ ì´ìœ  í•˜ë‚˜ë§Œìœ¼ë¡œë„ ì•¡í‹°ë¹„í‹°ê°€ 다시 ìƒì„±ë˜ì—ˆì„ 때 ìƒíƒœë¥¼
-완전히 복구할 수 있어야 한다는 ì ì´ 대단히 중요합니다. 사용ìžëŠ” 애플리케ì´ì…˜ì„ 사용하면서 화면ì„
+바뀌는지 확ì¸í•˜ëŠ” 것입니다. 화면 ë°©í–¥ì´ ë°”ë€Œë©´ ì‹œìŠ¤í…œì€ ì•¡í‹°ë¹„í‹°ë¥¼
+소멸시켰다가 다시 ìƒì„±í•˜ì—¬ 새 화면 구성ì—서 ì´ìš©í•  수 있ì„ì§€ 모르는 대체
+리소스를 ì ìš©í•©ë‹ˆë‹¤. ì´ ì´ìœ  í•˜ë‚˜ë§Œìœ¼ë¡œë„ ì•¡í‹°ë¹„í‹°ê°€ 다시 ìƒì„±ë˜ì—ˆì„ 때 ìƒíƒœë¥¼
+완전히 복구할 수 있어야 한다는 ì ì´ 대단히 중요합니다. 사용ìžëŠ” 애플리케ì´ì…˜ì„ 사용하면서 화면ì„
ìžì£¼ ëŒë¦¬ê¸° 때문입니다.</p>
@@ -700,8 +700,8 @@ android.app.Activity#onCreate onCreate()}를 호출합니다). ì´ëŸ° ë™ìž‘ì€
설계ë˜ì—ˆìŠµë‹ˆë‹¤
(예: 다양한 화면 방향과 í¬ê¸°ì— 대한 다양한 ë ˆì´ì•„웃).</p>
-<p>액티비티를 ì ì ˆížˆ 설계하여 화면 ë°©í–¥ 변경으로 ì¸í•œ ìž¬ì‹œìž‘ì„ ê°ë‹¹í•  수 있으며
-ìœ„ì— ì„¤ëª…í•œ 것처럼 액티비티 ìƒíƒœë¥¼ 복구할 수 있ë„ë¡ í•˜ë©´, 애플리케ì´ì…˜ì´ 액티비티 수명 주기ì—서
+<p>액티비티를 ì ì ˆížˆ 설계하여 화면 ë°©í–¥ 변경으로 ì¸í•œ ìž¬ì‹œìž‘ì„ ê°ë‹¹í•  수 있으며
+ìœ„ì— ì„¤ëª…í•œ 것처럼 액티비티 ìƒíƒœë¥¼ 복구할 수 있ë„ë¡ í•˜ë©´, 애플리케ì´ì…˜ì´ 액티비티 수명 주기ì—서
예기치 못한 ì´ë²¤íŠ¸ê°€ ì¼ì–´ë‚˜ë„ ë”ìš± 탄력ì ìœ¼ë¡œ ë³µêµ¬ë  ìˆ˜ 있습니다.</p>
<p>ì´ëŸ¬í•œ ìž¬ì‹œìž‘ì„ ì²˜ë¦¬í•˜ëŠ” 가장 ì¢‹ì€ ë°©ë²•ì€ ì´ì „ 섹션ì—서 ë…¼ì˜í•œ 바와 ê°™ì´
@@ -710,22 +710,22 @@ android.app.Activity#onCreate onCreate()}를 호출합니다). ì´ëŸ° ë™ìž‘ì€
android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}(ë˜ëŠ” {@link
android.app.Activity#onCreate onCreate()})를 사용하여 액티비티 ìƒíƒœë¥¼ 저장하고 복구하는 것입니다.</p>
-<p>ëŸ°íƒ€ìž„ì— ë°œìƒí•˜ëŠ” 구성 변경과 ê·¸ 처리 ë°©ë²•ì— ëŒ€í•œ ìžì„¸í•œ 정보는
-<a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경
+<p>ëŸ°íƒ€ìž„ì— ë°œìƒí•˜ëŠ” 구성 변경과 ê·¸ 처리 ë°©ë²•ì— ëŒ€í•œ ìžì„¸í•œ 정보는
+<a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경
처리하기</a>ì— ëŒ€í•œ ê°€ì´ë“œë¥¼ ì½ì–´ë³´ì‹­ì‹œì˜¤.</p>
<h3 id="CoordinatingActivities">액티비티 조정하기</h3>
- <p>한 액티비티가 다른 액티비티를 시작하면, 둘 ëª¨ë‘ ìˆ˜ëª… 주기 ì „í™˜ì„ ê²ªìŠµë‹ˆë‹¤. 첫 번째 액티비티는
-ì¼ì‹œì¤‘지하고 중단ë˜ëŠ” 반면(ë°°ê²½ì—서 ê³„ì† ë³´ì´ëŠ” 경우ì—는 중단ë˜ì§€ 않습니다만), 다른 액티비티는
-ìƒì„±ë˜ëŠ” 것입니다. ì´ì™€ ê°™ì€ ì•¡í‹°ë¹„í‹°ê°€ ë””ìŠ¤í¬ ë˜ëŠ” 다른 ì†ì— ì €ìž¥ëœ ë°ì´í„°ë¥¼ 공유하는 경우,
-첫 번째 액티비티는 ë‘ ë²ˆì§¸ 액티비티가 ìƒì„±ë˜ê¸° ì „ì— ì™„ì „ížˆ 중단ë˜ì§€ 않는다는 ì ì„ ì´í•´í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤.
+ <p>한 액티비티가 다른 액티비티를 시작하면, 둘 ëª¨ë‘ ìˆ˜ëª… 주기 ì „í™˜ì„ ê²ªìŠµë‹ˆë‹¤. 첫 번째 액티비티는
+ì¼ì‹œì¤‘지하고 중단ë˜ëŠ” 반면(ë°°ê²½ì—서 ê³„ì† ë³´ì´ëŠ” 경우ì—는 중단ë˜ì§€ 않습니다만), 다른 액티비티는
+ìƒì„±ë˜ëŠ” 것입니다. ì´ì™€ ê°™ì€ ì•¡í‹°ë¹„í‹°ê°€ ë””ìŠ¤í¬ ë˜ëŠ” 다른 ì†ì— ì €ìž¥ëœ ë°ì´í„°ë¥¼ 공유하는 경우,
+첫 번째 액티비티는 ë‘ ë²ˆì§¸ 액티비티가 ìƒì„±ë˜ê¸° ì „ì— ì™„ì „ížˆ 중단ë˜ì§€ 않는다는 ì ì„ ì´í•´í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤.
그렇다기보다는, ë‘ ë²ˆì§¸ ì•¡í‹°ë¹„í‹°ì˜ ì‹œìž‘ ê³¼ì •ì´ ì²« 번째 액티비티 중단 과정과 ê²¹ì³ ì¼ì–´ë‚©ë‹ˆë‹¤.
</p>
-<p>수명 주기 ì½œë°±ì€ ë¶„ëª…ížˆ ì •ì˜ëœ 순서가 있으며 특히 ë‘ ê°œì˜ ì•¡í‹°ë¹„í‹°ê°€
+<p>수명 주기 ì½œë°±ì€ ë¶„ëª…ížˆ ì •ì˜ëœ 순서가 있으며 특히 ë‘ ê°œì˜ ì•¡í‹°ë¹„í‹°ê°€
ê°™ì€ í”„ë¡œì„¸ìŠ¤ ì•ˆì— ìžˆìœ¼ë©´ì„œ 하나가 다른 하나를 시작하는 경우 순서가 ë”ìš± 확실합니다. 다ìŒì€ 액티비티 Aê°€
액티비티 B를 시작할 때 ë°œìƒí•˜ëŠ” 작업 순서입니다. </p>
@@ -741,8 +741,8 @@ android.app.Activity#onStop onStop()} 메서드가 실행ë©ë‹ˆë‹¤.</li>
</ol>
<p>ì´ì²˜ëŸ¼ 수명 주기 ì½œë°±ì˜ ìˆœì„œë¥¼ 예측할 수 있기 ë•Œë¬¸ì— í•œ 액티비티ì—서 다른 액티비티로 전환ë˜ëŠ”
- 정보를 관리할 수 있습니다. 예를 들어 첫 번째 액티비티가 ì¤‘ë‹¨ë  ë•Œ ë°ì´í„°ë² ì´ìФì—
-ë‚´ìš©ì„ ìž‘ì„±í•´ì„œ ë‹¤ìŒ ì•¡í‹°ë¹„í‹°ê°€ ê·¸ ë‚´ìš©ì„ ì½ì„ 수 있ë„ë¡ í•˜ë ¤ë©´, ë°ì´í„°ë² ì´ìФì—는
+ 정보를 관리할 수 있습니다. 예를 들어 첫 번째 액티비티가 ì¤‘ë‹¨ë  ë•Œ ë°ì´í„°ë² ì´ìФì—
+ë‚´ìš©ì„ ìž‘ì„±í•´ì„œ ë‹¤ìŒ ì•¡í‹°ë¹„í‹°ê°€ ê·¸ ë‚´ìš©ì„ ì½ì„ 수 있ë„ë¡ í•˜ë ¤ë©´, ë°ì´í„°ë² ì´ìФì—는
{@link android.app.Activity#onPause onPause()} 중ì—({@link
android.app.Activity#onStop onStop()} ì¤‘ì´ ì•„ë‹ˆë¼) 쓰기 ìž‘ì—…ì„ í•´ì•¼ 합니다.</p>
diff --git a/docs/html-intl/intl/ko/guide/components/bound-services.jd b/docs/html-intl/intl/ko/guide/components/bound-services.jd
index bf97b260a7da..276ff24111bb 100644
--- a/docs/html-intl/intl/ko/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/ko/guide/components/bound-services.jd
@@ -41,22 +41,22 @@ parent.link=services.html
</div>
-<p>ë°”ì¸ë”©ëœ 서비스란 í´ë¼ì´ì–¸íЏ 서버 ì¸í„°íŽ˜ì´ìФ ì•ˆì˜ ì„œë²„ë¥¼ ë§í•©ë‹ˆë‹¤. ë°”ì¸ë”©ëœ 서비스를 사용하면 구성 요소(í™œë™ ë“±)를
-ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ë˜ê²Œ 하거나, ìš”ì²­ì„ ë³´ë‚´ê³  ì‘ë‹µì„ ìˆ˜ì‹ í•˜ë©° 심지어는
+<p>ë°”ì¸ë”©ëœ 서비스란 í´ë¼ì´ì–¸íЏ 서버 ì¸í„°íŽ˜ì´ìФ ì•ˆì˜ ì„œë²„ë¥¼ ë§í•©ë‹ˆë‹¤. ë°”ì¸ë”©ëœ 서비스를 사용하면 구성 요소(í™œë™ ë“±)를
+ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ë˜ê²Œ 하거나, ìš”ì²­ì„ ë³´ë‚´ê³  ì‘ë‹µì„ ìˆ˜ì‹ í•˜ë©° 심지어는
프로세스간 통신(IPC)까지 수행할 수 있게 ë©ë‹ˆë‹¤. ì¼ë°˜ì ìœ¼ë¡œ ë°”ì¸ë”©ëœ 서비스는 다른 애플리케ì´ì…˜
구성 요소를 ë„울 때까지만 ì‚´ê³  ë°°ê²½ì—서 무한히 실행ë˜ì§€ 않습니다.</p>
<p>ì´ ë¬¸ì„œëŠ” 다른 애플리케ì´ì…˜ 구성 요소ì˜
-ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ëŠ” ë°©ë²•ì„ í¬í•¨í•˜ì—¬ ë°”ì¸ë”©ëœ 서비스를 만드는 ë°©ë²•ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 하지만 ì¼ë°˜ì ì¸ ì„œë¹„ìŠ¤ì— ê´€í•œ ì •ë³´ë„ ì•Œì•„ë‘는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
-서비스ì—서 ì•Œë¦¼ì„ ì „ë‹¬í•˜ëŠ” 방법ì´ë‚˜ 서비스를 ì „ê²½ì—서 실행ë˜ë„ë¡ ì„¤ì •í•˜ëŠ” 방법 등 여러 가지
+ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ëŠ” ë°©ë²•ì„ í¬í•¨í•˜ì—¬ ë°”ì¸ë”©ëœ 서비스를 만드는 ë°©ë²•ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 하지만 ì¼ë°˜ì ì¸ ì„œë¹„ìŠ¤ì— ê´€í•œ ì •ë³´ë„ ì•Œì•„ë‘는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
+서비스ì—서 ì•Œë¦¼ì„ ì „ë‹¬í•˜ëŠ” 방법ì´ë‚˜ 서비스를 ì „ê²½ì—서 실행ë˜ë„ë¡ ì„¤ì •í•˜ëŠ” 방법 등 여러 가지
추가 정보를 알아보려면 <a href="{@docRoot}guide/components/services.html">서비스</a> 문서를 참조하십시오.</p>
<h2 id="Basics">기본 정보</h2>
-<p>ë°”ì¸ë”©ëœ 서비스란 ì¼ì¢…ì˜ {@link android.app.Service} í´ëž˜ìФ 구현으로,
-ì´ë¥¼ 통해 다른 애플리케ì´ì…˜ì´ ì´ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ì—¬ ìƒí˜¸ 작용할 수 있ë„ë¡ í•´ì£¼ëŠ” 것입니다. 한 ì„œë¹„ìŠ¤ì— ëŒ€í•œ ë°”ì¸ë”©ì„ 제공하려면,
-{@link android.app.Service#onBind onBind()} 콜백 메서드를 구현해야 합니다.
+<p>ë°”ì¸ë”©ëœ 서비스란 ì¼ì¢…ì˜ {@link android.app.Service} í´ëž˜ìФ 구현으로,
+ì´ë¥¼ 통해 다른 애플리케ì´ì…˜ì´ ì´ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ì—¬ ìƒí˜¸ 작용할 수 있ë„ë¡ í•´ì£¼ëŠ” 것입니다. 한 ì„œë¹„ìŠ¤ì— ëŒ€í•œ ë°”ì¸ë”©ì„ 제공하려면,
+{@link android.app.Service#onBind onBind()} 콜백 메서드를 구현해야 합니다.
ì´ ë©”ì„œë“œëŠ” í´ë¼ì´ì–¸íŠ¸ê°€ 서비스와 ìƒí˜¸ 작용하는 ë° ì‚¬ìš©í•˜ëŠ” í”„ë¡œê·¸ëž˜ë° ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” {@link android.os.IBinder} 개체를
반환합니다.</p>
@@ -65,24 +65,24 @@ parent.link=services.html
<h3>ì‹œìž‘ëœ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©</h3>
<p><a href="{@docRoot}guide/components/services.html">서비스</a>
-문서ì—서 ë…¼ì˜ëœ 바와 ê°™ì´, 시작ë˜ì—ˆìœ¼ë©´ì„œë„ ë°”ì¸ë”©ëœ 서비스를 만들 수 있습니다. 다시 ë§í•´,
-{@link android.content.Context#startService startService()}를 호출하여 서비스를 시작할 수 있으며
+문서ì—서 ë…¼ì˜ëœ 바와 ê°™ì´, 시작ë˜ì—ˆìœ¼ë©´ì„œë„ ë°”ì¸ë”©ëœ 서비스를 만들 수 있습니다. 다시 ë§í•´,
+{@link android.content.Context#startService startService()}를 호출하여 서비스를 시작할 수 있으며
ì´ë¥¼ 통해 서비스가 무한히 실행ë˜ë„ë¡ í•  수 있으며, {@link
android.content.Context#bindService bindService()}를 호출하면 í´ë¼ì´ì–¸íŠ¸ê°€ 해당 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ë˜ë„ë¡ í•  수 있다는 것입니다.
- <p>서비스를 시작ë˜ê³  ë°”ì¸ë”©ë˜ë„ë¡ í—ˆìš©í•œ ë‹¤ìŒ ì„œë¹„ìŠ¤ê°€ 시작ë˜ë©´
-ì‹œìŠ¤í…œì€ í´ë¼ì´ì–¸íŠ¸ê°€ ëª¨ë‘ ë°”ì¸ë”©ì„ í•´ì œí•´ë„ ì„œë¹„ìŠ¤ë¥¼ 소멸시키지 <em>않습니다</em>. 대신,
+ <p>서비스를 시작ë˜ê³  ë°”ì¸ë”©ë˜ë„ë¡ í—ˆìš©í•œ ë‹¤ìŒ ì„œë¹„ìŠ¤ê°€ 시작ë˜ë©´
+ì‹œìŠ¤í…œì€ í´ë¼ì´ì–¸íŠ¸ê°€ ëª¨ë‘ ë°”ì¸ë”©ì„ í•´ì œí•´ë„ ì„œë¹„ìŠ¤ë¥¼ 소멸시키지 <em>않습니다</em>. 대신,
ì§ì ‘ 서비스를 확실히 중단시켜야 합니다. 그러려면 {@link android.app.Service#stopSelf stopSelf()} ë˜ëŠ” {@link
android.content.Context#stopService stopService()}를 호출하면 ë©ë‹ˆë‹¤.</p>
<p>ë³´í†µì€ {@link android.app.Service#onBind onBind()}
<em>ë˜ëŠ”</em> {@link android.app.Service#onStartCommand onStartCommand()}
-중 한 가지만 구현하지만, 둘 ëª¨ë‘ êµ¬í˜„í•´ì•¼ í•  ë•Œë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어, ìŒì•… 플레ì´ì–´ì˜ 경우 서비스를 무한히 실행하면서
-ë°”ì¸ë”©ë„ 제공하ë„ë¡ í—ˆìš©í•˜ëŠ” ê²ƒì´ ìœ ìš©í•˜ë‹¤ëŠ” ê²°ë¡ ì„ ë‚´ë¦´ 수 있습니다. ì´ë ‡ê²Œ 하면, 한 액티비티가 서비스로 하여금 ìŒì•…ì„ ìž¬ìƒí•˜ë„ë¡
-시작한 ë‹¤ìŒ ì‚¬ìš©ìžê°€ 애플리케ì´ì…˜ì„ 떠나ë”ë¼ë„ ìŒì•…ì„ ê³„ì† ìž¬ìƒí•˜ë„ë¡ í•  수 있습니다. 그런 다ìŒ, 사용ìžê°€ 애플리케ì´ì…˜ìœ¼ë¡œ
+중 한 가지만 구현하지만, 둘 ëª¨ë‘ êµ¬í˜„í•´ì•¼ í•  ë•Œë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어, ìŒì•… 플레ì´ì–´ì˜ 경우 서비스를 무한히 실행하면서
+ë°”ì¸ë”©ë„ 제공하ë„ë¡ í—ˆìš©í•˜ëŠ” ê²ƒì´ ìœ ìš©í•˜ë‹¤ëŠ” ê²°ë¡ ì„ ë‚´ë¦´ 수 있습니다. ì´ë ‡ê²Œ 하면, 한 액티비티가 서비스로 하여금 ìŒì•…ì„ ìž¬ìƒí•˜ë„ë¡
+시작한 ë‹¤ìŒ ì‚¬ìš©ìžê°€ 애플리케ì´ì…˜ì„ 떠나ë”ë¼ë„ ìŒì•…ì„ ê³„ì† ìž¬ìƒí•˜ë„ë¡ í•  수 있습니다. 그런 다ìŒ, 사용ìžê°€ 애플리케ì´ì…˜ìœ¼ë¡œ
다시 ëŒì•„오면 ì´ ì•¡í‹°ë¹„í‹°ê°€ 서비스를 ë°”ì¸ë”©í•˜ì—¬ ìž¬ìƒ ì œì–´ê¶Œì„ ë‹¤ì‹œ íšë“í•  수 있습니다.</p>
<p><a href="#Lifecycle">ë°”ì¸ë”©ëœ 서비스 수명 주기 관리
-</a> 관련 ì„¹ì…˜ì„ ê¼­ ì½ì–´ë³´ì‹­ì‹œì˜¤. ì‹œìž‘ëœ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ì„
+</a> 관련 ì„¹ì…˜ì„ ê¼­ ì½ì–´ë³´ì‹­ì‹œì˜¤. ì‹œìž‘ëœ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ì„
추가할 때 서비스 수명 ì£¼ê¸°ì— ê´€í•œ ìžì„¸í•œ 정보를 ì–»ì„ ìˆ˜ 있습니다.</p>
</div>
</div>
@@ -90,23 +90,23 @@ android.content.Context#stopService stopService()}를 호출하면 ë©ë‹ˆë‹¤.</p
<p>í´ë¼ì´ì–¸íŠ¸ê°€ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ë ¤ë©´ {@link android.content.Context#bindService
bindService()}를 호출하면 ë©ë‹ˆë‹¤. ì´ ë•Œ, 반드시 {@link
android.content.ServiceConnection}ì˜ êµ¬í˜„ì„ ì œê³µí•´ì•¼ 하며 ì´ê²ƒì´ ì„œë¹„ìŠ¤ì™€ì˜ ì—°ê²°ì„ ëª¨ë‹ˆí„°ë§í•©ë‹ˆë‹¤. {@link
-android.content.Context#bindService bindService()} 메서드는 ê°’ ì—†ì´ ì¦‰ì‹œ 반환ë©ë‹ˆë‹¤.
-그러나 Android ì‹œìŠ¤í…œì´ í´ë¼ì´ì–¸íŠ¸ì™€ 서비스 사ì´ì˜
+android.content.Context#bindService bindService()} 메서드는 ê°’ ì—†ì´ ì¦‰ì‹œ 반환ë©ë‹ˆë‹¤.
+그러나 Android ì‹œìŠ¤í…œì´ í´ë¼ì´ì–¸íŠ¸ì™€ 서비스 사ì´ì˜
ì—°ê²°ì„ ë§Œë“œëŠ” 경우, ì‹œìŠ¤í…œì€ {@link
android.content.ServiceConnection#onServiceConnected onServiceConnected()}를 {@link
-android.content.ServiceConnection}ì—서 호출하여 í´ë¼ì´ì–¸íŠ¸ê°€ 서비스와 통신하는 ë° ì‚¬ìš©í•  수 있ë„ë¡ {@link android.os.IBinder}를
+android.content.ServiceConnection}ì—서 호출하여 í´ë¼ì´ì–¸íŠ¸ê°€ 서비스와 통신하는 ë° ì‚¬ìš©í•  수 있ë„ë¡ {@link android.os.IBinder}를
전달하게 ë©ë‹ˆë‹¤.</p>
-<p>여러 í´ë¼ì´ì–¸íŠ¸ê°€ 한 ë²ˆì— ì„œë¹„ìŠ¤ì— ì—°ê²°ë  ìˆ˜ 있습니다. 그러나, ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ì˜
-{@link android.app.Service#onBind onBind()} 메서드를 호출하여 {@link android.os.IBinder}를 검색하는 경우는 첫 번째 í´ë¼ì´ì–¸íŠ¸ê°€
-ë°”ì¸ë”©ë˜ëŠ” 경우ë¿ìž…니다. ì‹œìŠ¤í…œì€ ê·¸ 후 ê°™ì€ {@link android.os.IBinder}를 ë°”ì¸ë”©ë˜ëŠ” 추가
+<p>여러 í´ë¼ì´ì–¸íŠ¸ê°€ 한 ë²ˆì— ì„œë¹„ìŠ¤ì— ì—°ê²°ë  ìˆ˜ 있습니다. 그러나, ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ì˜
+{@link android.app.Service#onBind onBind()} 메서드를 호출하여 {@link android.os.IBinder}를 검색하는 경우는 첫 번째 í´ë¼ì´ì–¸íŠ¸ê°€
+ë°”ì¸ë”©ë˜ëŠ” 경우ë¿ìž…니다. ì‹œìŠ¤í…œì€ ê·¸ 후 ê°™ì€ {@link android.os.IBinder}를 ë°”ì¸ë”©ë˜ëŠ” 추가
í´ë¼ì´ì–¸íЏ 모ë‘ì— ì „ë‹¬í•˜ë©° ì´ë•ŒëŠ” {@link android.app.Service#onBind onBind()}를 다시 호출하지 않습니다.</p>
<p>마지막 í´ë¼ì´ì–¸íŠ¸ê°€ 서비스ì—서 ë°”ì¸ë”©ì„ 해제하면 ì‹œìŠ¤í…œì€ ì„œë¹„ìŠ¤ë¥¼ 소멸시킵니다(
{@link android.content.Context#startService startService()}ê°€ 서비스를 ì‹œìž‘í–ˆì„ ê²½ìš° 제외).</p>
<p>ë°”ì¸ë”©ëœ 서비스를 구현할 때 가장 중요한 부분ì€
-{@link android.app.Service#onBind onBind()} 콜백 메서드가 반환하는 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” 것입니다.
+{@link android.app.Service#onBind onBind()} 콜백 메서드가 반환하는 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” 것입니다.
ì„œë¹„ìŠ¤ì˜ {@link android.os.IBinder} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” 방법ì—는 몇 가지가 있고, 다ìŒ
섹션ì—서는 ê° ê¸°ë²•ì— ê´€í•´ ë…¼ì˜í•©ë‹ˆë‹¤.</p>
@@ -115,42 +115,42 @@ android.content.ServiceConnection}ì—서 호출하여 í´ë¼ì´ì–¸íŠ¸ê°€ 서비ì
<h2 id="Creating">ë°”ì¸ë”©ëœ 서비스 ìƒì„±</h2>
<p>ë°”ì¸ë”©ì„ 제공하는 서비스를 ìƒì„±í•  때는 í´ë¼ì´ì–¸íŠ¸ê°€ 서비스와 ìƒí˜¸ 작용하는 ë° ì‚¬ìš©í•  수 있는 í”„ë¡œê·¸ëž˜ë° ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하는 {@link android.os.IBinder}
-를 제공해야 합니다.
+를 제공해야 합니다.
ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” ë°©ë²•ì€ ì„¸ 가지가 있습니다.</p>
<dl>
<dt><a href="#Binder">ë°”ì¸ë” í´ëž˜ìФ 확장</a></dt>
- <dd>서비스가 본ì¸ì˜ 애플리케ì´ì…˜ ì „ìš©ì´ë©° í´ë¼ì´ì–¸íŠ¸ì™€ ê°™ì€ ê³¼ì •ìœ¼ë¡œ 실행ë˜ëŠ”
+ <dd>서비스가 본ì¸ì˜ 애플리케ì´ì…˜ ì „ìš©ì´ë©° í´ë¼ì´ì–¸íŠ¸ì™€ ê°™ì€ ê³¼ì •ìœ¼ë¡œ 실행ë˜ëŠ”
경우(ì´ëŸ° 경우가 í”함), ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ìƒì„±í•  때 {@link android.os.Binder} í´ëž˜ìŠ¤ë¥¼
- 확장하고 ê·¸ ì¸ìŠ¤í„´ìŠ¤ë¥¼
-{@link android.app.Service#onBind onBind()}ì—서 반환하는 ë°©ì‹ì„ 사용해야 합니다. í´ë¼ì´ì–¸íŠ¸ê°€ {@link android.os.Binder}를 받으며,
-ì´ë¥¼ 사용하여 {@link android.os.Binder} 구현 ë˜ëŠ” 심지어 {@link android.app.Service}ì—서
+ 확장하고 ê·¸ ì¸ìŠ¤í„´ìŠ¤ë¥¼
+{@link android.app.Service#onBind onBind()}ì—서 반환하는 ë°©ì‹ì„ 사용해야 합니다. í´ë¼ì´ì–¸íŠ¸ê°€ {@link android.os.Binder}를 받으며,
+ì´ë¥¼ 사용하여 {@link android.os.Binder} 구현 ë˜ëŠ” 심지어 {@link android.app.Service}ì—서
사용할 수 있는 공개 ë©”ì„œë“œì— ì§ì ‘ 액세스할 수 있습니다.
- <p>ì´ê²ƒì€ 서비스가 본ì¸ì˜ 애플리케ì´ì…˜ì„ 위해 단순히 ë°°ê²½ì—서 ìž‘ë™í•˜ëŠ” ìš”ì†Œì— ê·¸ì¹˜ëŠ” 경우
-선호ë˜ëŠ” 기법입니다. ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ìƒì„±í•  때 ì´ ë°©ì‹ì„ 사용하지 않는 유ì¼í•œ ì´ìœ ëŠ”
+ <p>ì´ê²ƒì€ 서비스가 본ì¸ì˜ 애플리케ì´ì…˜ì„ 위해 단순히 ë°°ê²½ì—서 ìž‘ë™í•˜ëŠ” ìš”ì†Œì— ê·¸ì¹˜ëŠ” 경우
+선호ë˜ëŠ” 기법입니다. ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ìƒì„±í•  때 ì´ ë°©ì‹ì„ 사용하지 않는 유ì¼í•œ ì´ìœ ëŠ”
서비스를 다른 애플리케ì´ì…˜ì—서나 별ë„ì˜ í”„ë¡œì„¸ìŠ¤ì— ê±¸ì³ ì‚¬ìš©í•˜ê³  있는 경우ë¿ìž…니다.</dd>
<dt><a href="#Messenger">메신저 사용</a></dt>
- <dd>ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 여러 í”„ë¡œì„¸ìŠ¤ì— ê±¸ì³ ì ìš©ë˜ë„ë¡ í•´ì•¼ 하는 경우, ì„œë¹„ìŠ¤ì— ëŒ€í•œ
-ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ {@link android.os.Messenger}로 ìƒì„±í•  수 있습니다.
+ <dd>ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 여러 í”„ë¡œì„¸ìŠ¤ì— ê±¸ì³ ì ìš©ë˜ë„ë¡ í•´ì•¼ 하는 경우, ì„œë¹„ìŠ¤ì— ëŒ€í•œ
+ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ {@link android.os.Messenger}로 ìƒì„±í•  수 있습니다.
ì´ ë°©ì‹ì„ 사용하면 서비스가 여러 가지 ìœ í˜•ì˜ {@link
android.os.Message} ê°œì²´ì— ì‘답하는 {@link android.os.Handler}를 ì •ì˜í•©ë‹ˆë‹¤. ì´ {@link android.os.Handler}
ê°€ {@link android.os.Messenger}ì˜ ê¸°ì´ˆì´ë©°, ì´ë¥¼ 통해 í´ë¼ì´ì–¸íŠ¸ì™€ 함께 {@link android.os.IBinder}
를 공유할 수 있게 ë˜ì–´ í´ë¼ì´ì–¸íŠ¸ê°€ {@link
-android.os.Message} 개체를 사용해 ì„œë¹„ìŠ¤ì— ëª…ë ¹ì„ ë³´ë‚¼ 수 있게 í•´ì¤ë‹ˆë‹¤. ì´ì™¸ì—ë„, í´ë¼ì´ì–¸íŠ¸ê°€ ìžì²´ì ìœ¼ë¡œ {@link android.os.Messenger}를
+android.os.Message} 개체를 사용해 ì„œë¹„ìŠ¤ì— ëª…ë ¹ì„ ë³´ë‚¼ 수 있게 í•´ì¤ë‹ˆë‹¤. ì´ì™¸ì—ë„, í´ë¼ì´ì–¸íŠ¸ê°€ ìžì²´ì ìœ¼ë¡œ {@link android.os.Messenger}를
ì •ì˜í•˜ì—¬ 서비스가 메시지를 ëŒë ¤ë³´ë‚¼ 수 있ë„ë¡ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
<p>ì´ê²ƒì´ 프로세스간 통신(IPC)ì„ ìˆ˜í–‰í•˜ëŠ” 가장 간단한 방법입니다. {@link
-android.os.Messenger}ê°€ 모든 ìš”ì²­ì„ ë‹¨ì¼ ìŠ¤ë ˆë“œì— ëŒ€ê¸°í•˜ê²Œ 해서, 서비스를 스레드로부터 안전하게
+android.os.Messenger}ê°€ 모든 ìš”ì²­ì„ ë‹¨ì¼ ìŠ¤ë ˆë“œì— ëŒ€ê¸°í•˜ê²Œ 해서, 서비스를 스레드로부터 안전하게
설계하지 ì•Šì•„ë„ ë˜ê¸° 때문입니다.</p>
</dd>
<dt>AIDL 사용하기</dt>
- <dd>AIDL(Android Interface Definition Language)ì€ ê°œì²´ë¥¼ ìš´ì˜ ì²´ì œê°€ ì´í•´í•  수 있는
-ì›ì‹œ ë°ì´í„°ë¡œ 구성 해제한 ë‹¤ìŒ ì—¬ëŸ¬ í”„ë¡œì„¸ìŠ¤ì— ê±¸ì³ ì§‘ê²°í•˜ì—¬ IPC를 수행하기 위해
-필요한 모든 ìž‘ì—…ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. ì´ì „ ê¸°ë²•ì€ {@link android.os.Messenger}를 사용했는ë°,
+ <dd>AIDL(Android Interface Definition Language)ì€ ê°œì²´ë¥¼ ìš´ì˜ ì²´ì œê°€ ì´í•´í•  수 있는
+ì›ì‹œ ë°ì´í„°ë¡œ 구성 해제한 ë‹¤ìŒ ì—¬ëŸ¬ í”„ë¡œì„¸ìŠ¤ì— ê±¸ì³ ì§‘ê²°í•˜ì—¬ IPC를 수행하기 위해
+필요한 모든 ìž‘ì—…ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. ì´ì „ ê¸°ë²•ì€ {@link android.os.Messenger}를 사용했는ë°,
사실 ê·¸ 기본 구조가 AIDLì„ ê¸°ë°˜ìœ¼ë¡œ 하고 있는 것입니다. 위ì—서 언급한 바와 ê°™ì´ {@link android.os.Messenger}는 ë‹¨ì¼ ìŠ¤ë ˆë“œì— ëª¨ë“  í´ë¼ì´ì–¸íЏ 요청
-ëŒ€ê¸°ì—´ì„ ìƒì„±í•˜ë¯€ë¡œ 서비스는 한 ë²ˆì— ìš”ì²­ì„ í•˜ë‚˜ì”© 수신합니다. 그러나,
-서비스가 ë™ì‹œì— 여러 ìš”ì²­ì„ ì²˜ë¦¬í•˜ë„ë¡ í•˜ê³  ì‹¶ì€ ê²½ìš°ì—는 AIDLì„ ì§ì ‘ 사용해ë„
+ëŒ€ê¸°ì—´ì„ ìƒì„±í•˜ë¯€ë¡œ 서비스는 한 ë²ˆì— ìš”ì²­ì„ í•˜ë‚˜ì”© 수신합니다. 그러나,
+서비스가 ë™ì‹œì— 여러 ìš”ì²­ì„ ì²˜ë¦¬í•˜ë„ë¡ í•˜ê³  ì‹¶ì€ ê²½ìš°ì—는 AIDLì„ ì§ì ‘ 사용해ë„
ë©ë‹ˆë‹¤. ì´ ê²½ìš°, 서비스가 다중 ìŠ¤ë ˆë”©ì„ í•  수 있어야 하며 스레드로부터 안전하게 구축ë˜ì—ˆì–´ì•¼ 합니다.
<p>AIDLì„ ì§ì ‘ 사용하려면
í”„ë¡œê·¸ëž˜ë° ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” {@code .aidl} 파ì¼ì„ ìƒì„±í•´ì•¼ 합니다. Android SDK ë„구는
@@ -159,10 +159,10 @@ android.os.Messenger}ê°€ 모든 ìš”ì²­ì„ ë‹¨ì¼ ìŠ¤ë ˆë“œì— ëŒ€ê¸°í•˜ê²Œ í•´ì„
</dd>
</dl>
- <p class="note"><strong>참고:</strong> ëŒ€ë¶€ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 경우,
-ë°”ì¸ë”©ëœ 서비스를 ìƒì„±í•˜ê¸° 위해 AIDL를 사용해서는 <strong>안 ë©ë‹ˆë‹¤</strong>.
-그러려면 다중 스레딩 ê¸°ëŠ¥ì´ í•„ìš”í•  수 있고, ë”°ë¼ì„œ ë” ë³µìž¡í•œ êµ¬í˜„ì„ ì´ˆëž˜í•  수 있기 때문입니다. ë”°ë¼ì„œ AIDLì€
-ëŒ€ë¶€ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì— ì í•©í•˜ì§€ 않으므로 ì´ ë¬¸ì„œì—서는 ì—¬ëŸ¬ë¶„ì˜ ì„œë¹„ìŠ¤ì— ì´ë¥¼ ì´ìš©í•˜ëŠ” ë°©ë²•ì— ëŒ€í•´ 다루지 않습니다. AIDLì„ ì§ì ‘ 사용해야 한다는 í™•ì‹ ì´ ë“œëŠ” 경우,
+ <p class="note"><strong>참고:</strong> ëŒ€ë¶€ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 경우,
+ë°”ì¸ë”©ëœ 서비스를 ìƒì„±í•˜ê¸° 위해 AIDL를 사용해서는 <strong>안 ë©ë‹ˆë‹¤</strong>.
+그러려면 다중 스레딩 ê¸°ëŠ¥ì´ í•„ìš”í•  수 있고, ë”°ë¼ì„œ ë” ë³µìž¡í•œ êµ¬í˜„ì„ ì´ˆëž˜í•  수 있기 때문입니다. ë”°ë¼ì„œ AIDLì€
+ëŒ€ë¶€ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì— ì í•©í•˜ì§€ 않으므로 ì´ ë¬¸ì„œì—서는 ì—¬ëŸ¬ë¶„ì˜ ì„œë¹„ìŠ¤ì— ì´ë¥¼ ì´ìš©í•˜ëŠ” ë°©ë²•ì— ëŒ€í•´ 다루지 않습니다. AIDLì„ ì§ì ‘ 사용해야 한다는 í™•ì‹ ì´ ë“œëŠ” 경우,
<a href="{@docRoot}guide/components/aidl.html">AIDL</a> 문서를 참조하십시오.
</p>
@@ -172,12 +172,12 @@ android.os.Messenger}ê°€ 모든 ìš”ì²­ì„ ë‹¨ì¼ ìŠ¤ë ˆë“œì— ëŒ€ê¸°í•˜ê²Œ í•´ì„
<h3 id="Binder">ë°”ì¸ë” í´ëž˜ìФ 확장</h3>
<p>서비스를 사용하는 ê²ƒì´ ë¡œì»¬ 애플리케ì´ì…˜ë¿ì´ê³  여러 í”„ë¡œì„¸ìŠ¤ì— ê±¸ì³ ìž‘ë™í•  필요가 없는 경우,
-ë‚˜ë¦„ì˜ {@link android.os.Binder} í´ëž˜ìŠ¤ë¥¼ 구현하여
+ë‚˜ë¦„ì˜ {@link android.os.Binder} í´ëž˜ìŠ¤ë¥¼ 구현하여
í´ë¼ì´ì–¸íŠ¸ë¡œ 하여금 서비스 ë‚´ì˜ ê³µê°œ ë©”ì„œë“œì— ì§ì ‘ 액세스할 수 있ë„ë¡ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
-<p class="note"><strong>참고:</strong> ì´ê²ƒì€ í´ë¼ì´ì–¸íŠ¸ì™€ 서비스가
-ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ ë° í”„ë¡œì„¸ìŠ¤ì— ìžˆëŠ” 경우ì—ë§Œ 통하며, ì´ ê²½ìš°ê°€ 가장 보편ì ìž…니다. ì´ ë°©ì‹ì´ 잘 통하는 경우를 예로 들면,
-ìŒì•… 애플리케ì´ì…˜ì—서 ìžì²´ ì„œë¹„ìŠ¤ì— ì•¡í‹°ë¹„í‹°ë¥¼ ë°”ì¸ë”©í•˜ì—¬ ë°°ê²½ì—서 ìŒì•…ì„ ìž¬ìƒí•˜ë„ë¡ í•´ì•¼ 하는
+<p class="note"><strong>참고:</strong> ì´ê²ƒì€ í´ë¼ì´ì–¸íŠ¸ì™€ 서비스가
+ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ ë° í”„ë¡œì„¸ìŠ¤ì— ìžˆëŠ” 경우ì—ë§Œ 통하며, ì´ ê²½ìš°ê°€ 가장 보편ì ìž…니다. ì´ ë°©ì‹ì´ 잘 통하는 경우를 예로 들면,
+ìŒì•… 애플리케ì´ì…˜ì—서 ìžì²´ ì„œë¹„ìŠ¤ì— ì•¡í‹°ë¹„í‹°ë¥¼ ë°”ì¸ë”©í•˜ì—¬ ë°°ê²½ì—서 ìŒì•…ì„ ìž¬ìƒí•˜ë„ë¡ í•´ì•¼ 하는
경우가 있습니다.</p>
<p>ì´ë ‡ê²Œ 설정하는 ë°©ë²•ì€ ë‹¤ìŒê³¼ 같습니다.</p>
@@ -185,7 +185,7 @@ android.os.Messenger}ê°€ 모든 ìš”ì²­ì„ ë‹¨ì¼ ìŠ¤ë ˆë“œì— ëŒ€ê¸°í•˜ê²Œ í•´ì„
<li>서비스ì—서 ë‹¤ìŒ ì¤‘ 한 ê°€ì§€ì— í•´ë‹¹í•˜ëŠ” {@link android.os.Binder}ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í•©ë‹ˆë‹¤.
<ul>
<li>í´ë¼ì´ì–¸íŠ¸ê°€ 호출할 수 있는 공개 메서드 í¬í•¨</li>
- <li>í´ë¼ì´ì–¸íŠ¸ê°€ 호출할 수 있는 공개 메서드가 있는 현재{@link android.app.Service}
+ <li>í´ë¼ì´ì–¸íŠ¸ê°€ 호출할 수 있는 공개 메서드가 있는 현재{@link android.app.Service}
ì¸ìŠ¤í„´ìŠ¤ë¥¼ 반환</li>
<li>í´ë¼ì´ì–¸íŠ¸ê°€ 호출할 수 있는 공개 메서드가 í¬í•¨ëœ 서비스가 호스팅하는 다른 í´ëž˜ìŠ¤ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 반환
</li>
@@ -193,16 +193,16 @@ android.os.Messenger}ê°€ 모든 ìš”ì²­ì„ ë‹¨ì¼ ìŠ¤ë ˆë“œì— ëŒ€ê¸°í•˜ê²Œ í•´ì„
<li>{@link
android.app.Service#onBind onBind()} 콜백 메서드ì—서 ì´ {@link android.os.Binder}ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 반환합니다.</li>
<li>í´ë¼ì´ì–¸íŠ¸ì˜ ê²½ìš°, {@link android.os.Binder}를 {@link
-android.content.ServiceConnection#onServiceConnected onServiceConnected()}
+android.content.ServiceConnection#onServiceConnected onServiceConnected()}
콜백 메서드ì—서 받아 ì œê³µëœ ë©”ì„œë“œë¥¼ 사용해 서비스를 ë°”ì¸ë”©í•˜ê¸° 위해 호출합니다.</li>
</ol>
-<p class="note"><strong>참고:</strong> 서비스와 í´ë¼ì´ì–¸íŠ¸ê°€ ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì—
-있어야 하는 ê²ƒì€ ê·¸ëž˜ì•¼ë§Œ í´ë¼ì´ì–¸íŠ¸ê°€ ë°˜í™˜ëœ ê°œì²´ë¥¼ ìºìŠ¤íŒ…í•˜ì—¬ 해당 API를 ì ì ˆí•˜ê²Œ 호출할 수 있기 때문입니다. ë˜í•œ
-서비스와 í´ë¼ì´ì–¸íŠ¸ëŠ” ê°™ì€ í”„ë¡œì„¸ìŠ¤ì— ìžˆì–´ì•¼ í•˜ê¸°ë„ í•©ë‹ˆë‹¤. ì´ ê¸°ë²•ì—서는
+<p class="note"><strong>참고:</strong> 서비스와 í´ë¼ì´ì–¸íŠ¸ê°€ ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì—
+있어야 하는 ê²ƒì€ ê·¸ëž˜ì•¼ë§Œ í´ë¼ì´ì–¸íŠ¸ê°€ ë°˜í™˜ëœ ê°œì²´ë¥¼ ìºìŠ¤íŒ…í•˜ì—¬ 해당 API를 ì ì ˆí•˜ê²Œ 호출할 수 있기 때문입니다. ë˜í•œ
+서비스와 í´ë¼ì´ì–¸íŠ¸ëŠ” ê°™ì€ í”„ë¡œì„¸ìŠ¤ì— ìžˆì–´ì•¼ í•˜ê¸°ë„ í•©ë‹ˆë‹¤. ì´ ê¸°ë²•ì—서는
여러 í”„ë¡œì„¸ìŠ¤ì— ê±¸ì¹œ ì§‘ê²° ìž‘ì—…ì„ ì „í˜€ 수행하지 않기 때문입니다.</p>
-<p>예컨대, ì–´ë–¤ 서비스가 í´ë¼ì´ì–¸íЏì—게 {@link android.os.Binder} êµ¬í˜„ì„ í†µí•´ 서비스 ë‚´ì˜
+<p>예컨대, ì–´ë–¤ 서비스가 í´ë¼ì´ì–¸íЏì—게 {@link android.os.Binder} êµ¬í˜„ì„ í†µí•´ 서비스 ë‚´ì˜
ë©”ì„œë“œì— ì•¡ì„¸ìŠ¤í•  수 있ë„ë¡ í•œë‹¤ê³  합시다.</p>
<pre>
@@ -303,12 +303,12 @@ public class BindingActivity extends Activity {
}
</pre>
-<p>위 예시는 í´ë¼ì´ì–¸íŠ¸ê°€
+<p>위 예시는 í´ë¼ì´ì–¸íŠ¸ê°€
{@link android.content.ServiceConnection} 구현과 {@link
-android.content.ServiceConnection#onServiceConnected onServiceConnected()} ì½œë°±ì„ ì‚¬ìš©í•˜ì—¬ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ëŠ” ë°©ë²•ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 다ìŒ
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} ì½œë°±ì„ ì‚¬ìš©í•˜ì—¬ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ëŠ” ë°©ë²•ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 다ìŒ
섹션ì—서는 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ëŠ” ì´ëŸ¬í•œ ê³¼ì •ì— ëŒ€í•´ 좀 ë” ìžì„¸í•œ 정보를 제공합니다.</p>
-<p class="note"><strong>참고:</strong> 위 예시ì—서는 서비스ì—서 분명히 ë°”ì¸ë”©ì„ 해제하지는 않습니다.
+<p class="note"><strong>참고:</strong> 위 예시ì—서는 서비스ì—서 분명히 ë°”ì¸ë”©ì„ 해제하지는 않습니다.
그러나 모든 í´ë¼ì´ì–¸íŠ¸ëŠ” ì ì ˆí•œ 시ì ì— ë°”ì¸ë”©ì„ 해제해야 합니다(액티비티가 ì¼ì‹œ ì¤‘ì§€ë  ë•Œ 등).</p>
<p>ë” ë§Žì€ ìƒ˜í”Œ 코드를 보려면 <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a>ì—서 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
@@ -326,26 +326,26 @@ LocalServiceActivities.java}</a> í´ëž˜ìŠ¤ë¥¼ 참조하십시오.</p>
<h4>AIDLê³¼ 비êµ</h4>
<p>IPC를 수행해야 í•  경우, ì¸í„°íŽ˜ì´ìŠ¤ì— ëŒ€í•´ {@link android.os.Messenger}를 사용하는 것ì´
AIDL로 구현하는 것보다 간단합니다. 왜ëƒí•˜ë©´ {@link android.os.Messenger}는
-모든 í˜¸ì¶œì„ ì„œë¹„ìŠ¤ì— ëŒ€ê¸°ì‹œí‚¤ì§€ë§Œ 순수한 AIDL ì¸í„°íŽ˜ì´ìŠ¤ëŠ”
+모든 í˜¸ì¶œì„ ì„œë¹„ìŠ¤ì— ëŒ€ê¸°ì‹œí‚¤ì§€ë§Œ 순수한 AIDL ì¸í„°íŽ˜ì´ìŠ¤ëŠ”
ì„œë¹„ìŠ¤ì— ë™ì‹œì— ìš”ì²­ì„ ì „ì†¡í•˜ì—¬ 다중 ìŠ¤ë ˆë”©ì„ ì²˜ë¦¬í•´ì•¼ 하기 때문입니다.</p>
<p>ëŒ€ë¶€ë¶„ì˜ ì• í”Œë¦¬ì´ì…˜ì—서는 서비스가 다중 ìŠ¤ë ˆë”©ì„ ìˆ˜í–‰í•  필요가 없으므로 {@link
-android.os.Messenger}를 사용하면 í˜¸ì¶œì„ í•œ ë²ˆì— í•˜ë‚˜ì”© 처리할 수 있습니다. 서비스가
+android.os.Messenger}를 사용하면 í˜¸ì¶œì„ í•œ ë²ˆì— í•˜ë‚˜ì”© 처리할 수 있습니다. 서비스가
다중 스레딩ë˜ëŠ” ê²ƒì´ ì¤‘ìš”í•œ 경우, ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” ë° <a href="{@docRoot}guide/components/aidl.html">AIDL</a>ì„ ì‚¬ìš©í•´ì•¼ 합니다.</p>
</div>
</div>
-<p>서비스가 ì›ê²© 프로세스와 통신해야 한다면 ì„œë¹„ìŠ¤ì— ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하는 ë°
-{@link android.os.Messenger}를 사용하면 ë©ë‹ˆë‹¤. ì´ ê¸°ë²•ì„ ì‚¬ìš©í•˜ë©´
+<p>서비스가 ì›ê²© 프로세스와 통신해야 한다면 ì„œë¹„ìŠ¤ì— ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하는 ë°
+{@link android.os.Messenger}를 사용하면 ë©ë‹ˆë‹¤. ì´ ê¸°ë²•ì„ ì‚¬ìš©í•˜ë©´
AIDLì„ ì“°ì§€ ì•Šê³ ë„ í”„ë¡œì„¸ìŠ¤ê°„ 통신(IPC)ì„ ìˆ˜í–‰í•  수 있게 í•´ì¤ë‹ˆë‹¤.</p>
<p>다ìŒì€ {@link android.os.Messenger} 사용 ë°©ë²•ì„ ê°„ëžµí•˜ê²Œ 요약한 것입니다.</p>
<ul>
- <li>서비스가 í´ë¼ì´ì–¸íŠ¸ë¡œë¶€í„° ê° í˜¸ì¶œì— ëŒ€í•´ ì½œë°±ì„ ë°›ëŠ” {@link android.os.Handler}를
+ <li>서비스가 í´ë¼ì´ì–¸íŠ¸ë¡œë¶€í„° ê° í˜¸ì¶œì— ëŒ€í•´ ì½œë°±ì„ ë°›ëŠ” {@link android.os.Handler}를
구현합니다.</li>
<li>{@link android.os.Handler}를 사용하여 {@link android.os.Messenger} 개체를 ìƒì„±í•©ë‹ˆë‹¤
(ì´ê²ƒì€ {@link android.os.Handler}ì— ëŒ€í•œ 참조입니다).</li>
- <li>{@link android.os.Messenger}ê°€ {@link android.os.IBinder}를 ìƒì„±í•˜ì—¬ 서비스가
+ <li>{@link android.os.Messenger}ê°€ {@link android.os.IBinder}를 ìƒì„±í•˜ì—¬ 서비스가
{@link android.app.Service#onBind onBind()}로부터 í´ë¼ì´ì–¸íЏì—게 반환하ë„ë¡ í•©ë‹ˆë‹¤.</li>
<li>í´ë¼ì´ì–¸íŠ¸ëŠ” {@link android.os.IBinder}를 사용하여 {@link android.os.Messenger}
(ì„œë¹„ìŠ¤ì˜ {@link android.os.Handler}를 참조)를 ì¸ìŠ¤í„´íŠ¸í™”í•˜ê³ , ì´ë¥¼ ì´ìš©í•˜ì—¬
@@ -356,8 +356,8 @@ handleMessage()} 메서드를 사용합니다.</li>
</ul>
-<p>ì´ë ‡ê²Œ 하면, í´ë¼ì´ì–¸íŠ¸ê°€ 서비스ì—서 호출할 "메서드"ê°€ 없습니다. 대신 í´ë¼ì´ì–¸íŠ¸ëŠ”
-"메시지"({@link android.os.Message} 개체)를 전달하여 서비스가
+<p>ì´ë ‡ê²Œ 하면, í´ë¼ì´ì–¸íŠ¸ê°€ 서비스ì—서 호출할 "메서드"ê°€ 없습니다. 대신 í´ë¼ì´ì–¸íŠ¸ëŠ”
+"메시지"({@link android.os.Message} 개체)를 전달하여 서비스가
{@link android.os.Handler}로 ë°›ì„ ìˆ˜ 있ë„ë¡ í•©ë‹ˆë‹¤.</p>
<p>다ìŒì€ {@link android.os.Messenger} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 사용하는 간단한 예시 서비스입니다.</p>
@@ -406,7 +406,7 @@ public class MessengerService extends Service {
<p>í´ë¼ì´ì–¸íŠ¸ëŠ” 서비스가 반환한 {@link
android.os.IBinder}ì— ê¸°ì´ˆí•˜ì—¬ {@link android.os.Messenger}를 ìƒì„±í•˜ê³  {@link
-android.os.Messenger#send send()}로 메시지를 전송하기만 하면 ë©ë‹ˆë‹¤. 예를 들어, 다ìŒì€
+android.os.Messenger#send send()}로 메시지를 전송하기만 하면 ë©ë‹ˆë‹¤. 예를 들어, 다ìŒì€
ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ì—¬ {@code MSG_SAY_HELLO} 메시지를 ì„œë¹„ìŠ¤ì— ì „ë‹¬í•˜ëŠ” 간단한 액티비티입니다.</p>
<pre>
@@ -477,7 +477,7 @@ public class ActivityMessenger extends Activity {
</pre>
<p>ì´ ì˜ˆì‹œì—는 서비스가 í´ë¼ì´ì–¸íŠ¸ì— ì‘답하는 ë°©ì‹ì´ 나타나 있지 않다는 ê²ƒì„ ìœ ë…하십시오. 서비스가 ì‘답하게 하려면
- í´ë¼ì´ì–¸íЏì—ë„ {@link android.os.Messenger}를 ìƒì„±í•´ì•¼ 합니다.
+ í´ë¼ì´ì–¸íЏì—ë„ {@link android.os.Messenger}를 ìƒì„±í•´ì•¼ 합니다.
í´ë¼ì´ì–¸íŠ¸ê°€ {@link android.content.ServiceConnection#onServiceConnected
onServiceConnected()} ì½œë°±ì„ ë°›ìœ¼ë©´ {@link android.os.Messenger#send send()}ë©”ì„œë“œì˜ {@link android.os.Message#replyTo} 매개변수ì—서 í´ë¼ì´ì–¸íŠ¸ì˜ {@link android.os.Messenger}를 í¬í•¨í•˜ëŠ” {@link android.os.Message}를
ì„œë¹„ìŠ¤ì— ì „ì†¡í•©ë‹ˆë‹¤.
@@ -493,7 +493,7 @@ MessengerServiceActivities.java}</a>(í´ë¼ì´ì–¸íЏ) 예시를 참조하십시ì
<h2 id="Binding">ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©</h2>
-<p>애플리케ì´ì…˜ 구성 요소(í´ë¼ì´ì–¸íЏ)를 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ë ¤ë©´
+<p>애플리케ì´ì…˜ 구성 요소(í´ë¼ì´ì–¸íЏ)를 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ë ¤ë©´
{@link android.content.Context#bindService bindService()}를 호출하면 ë©ë‹ˆë‹¤. 그러면 Android
systemì´ ì„œë¹„ìŠ¤ì˜ {@link android.app.Service#onBind
onBind()} 메서드를 호출하고, ì´ëŠ” ì„œë¹„ìŠ¤ì™€ì˜ ìƒí˜¸ ìž‘ìš©ì„ ìœ„í•´ {@link android.os.IBinder}를 반환합니다.</p>
@@ -505,7 +505,7 @@ android.content.ServiceConnection}ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í•˜ì—¬ ì´ë¥¼ {@link
bindService()}ì— ì „ë‹¬í•´ì•¼ 합니다. {@link android.content.ServiceConnection}ì—는
{@link android.os.IBinder}를 전달하기 위해 ì‹œìŠ¤í…œì´ í˜¸ì¶œí•˜ëŠ” 콜백 메서드가 í¬í•¨ë©ë‹ˆë‹¤.</p>
-<p class="note"><strong>참고:</strong> ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•  수 있는 ê²ƒì€ ì•¡í‹°ë¹„í‹°, 서비스 ë°
+<p class="note"><strong>참고:</strong> ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•  수 있는 ê²ƒì€ ì•¡í‹°ë¹„í‹°, 서비스 ë°
콘í…츠 제공ìžë¿ìž…니다. 브로드ìºìŠ¤íŠ¸ 수신ìžë¡œë¶€í„°ëŠ” ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•  수 <strong>없습니다</strong>.</p>
<p>ë”°ë¼ì„œ, í´ë¼ì´ì–¸íŠ¸ë¡œë¶€í„° ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ë ¤ë©´ 다ìŒê³¼ ê°™ì´ í•´ì•¼ 합니다. </p>
@@ -514,12 +514,12 @@ bindService()}ì— ì „ë‹¬í•´ì•¼ 합니다. {@link android.content.ServiceConnecti
<p>ì´ êµ¬í˜„ìœ¼ë¡œ ë‘ ê°€ì§€ 콜백 메서드를 재정ì˜í•´ì•¼ 합니다.</p>
<dl>
<dt>{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}</dt>
- <dd>ì‹œìŠ¤í…œì´ ì´ê²ƒì„ 호출하여 서비스ì˜
+ <dd>ì‹œìŠ¤í…œì´ ì´ê²ƒì„ 호출하여 서비스ì˜
{@link android.app.Service#onBind onBind()} 메서드가 반환한 {@link android.os.IBinder}를 전달합니다.</dd>
<dt>{@link android.content.ServiceConnection#onServiceDisconnected
onServiceDisconnected()}</dt>
- <dd>Android ì‹œìŠ¤í…œì´ ì´ê²ƒì„ 호출하는 경우는 ì„œë¹„ìŠ¤ë¡œì˜ ì—°ê²°ì´
-예기치 못하게 ëŠì–´ì¡Œì„ 때, 즉 서비스가 ì¶©ëŒí–ˆê±°ë‚˜ 중단ë˜ì—ˆì„ 때 등입니다.
+ <dd>Android ì‹œìŠ¤í…œì´ ì´ê²ƒì„ 호출하는 경우는 ì„œë¹„ìŠ¤ë¡œì˜ ì—°ê²°ì´
+예기치 못하게 ëŠì–´ì¡Œì„ 때, 즉 서비스가 ì¶©ëŒí–ˆê±°ë‚˜ 중단ë˜ì—ˆì„ 때 등입니다.
í´ë¼ì´ì–¸íŠ¸ê°€ ë°”ì¸ë”©ì„ 해제한다고 ì´ê²ƒì´ 호출ë˜ì§€ëŠ” <em>않습니다</em>.</dd>
</dl>
</li>
@@ -527,19 +527,19 @@ onServiceDisconnected()}</dt>
android.content.Context#bindService bindService()}를 호출하고 {@link
android.content.ServiceConnection} êµ¬í˜„ì„ ì „ë‹¬í•©ë‹ˆë‹¤. </li>
<li>ì‹œìŠ¤í…œì´ {@link android.content.ServiceConnection#onServiceConnected
-onServiceConnected()} 콜백 메서드를 호출하면, ì¸í„°íŽ˜ì´ìŠ¤ê°€ ì •ì˜í•œ 메서드를 사용하여
+onServiceConnected()} 콜백 메서드를 호출하면, ì¸í„°íŽ˜ì´ìŠ¤ê°€ ì •ì˜í•œ 메서드를 사용하여
ì„œë¹„ìŠ¤ì— í˜¸ì¶œì„ ì‹œìž‘í•´ë„ ë©ë‹ˆë‹¤.</li>
<li>서비스로부터 ì—°ê²°ì„ í•´ì œí•˜ë ¤ë©´ {@link
android.content.Context#unbindService unbindService()}를 호출합니다.
- <p>í´ë¼ì´ì–¸íŠ¸ê°€ 소멸ë˜ë©´ ì´ëŠ” 서비스ì—서 ë°”ì¸ë”©ì„ 해제하게 ë˜ì§€ë§Œ,
-서비스와 ìƒí˜¸ ìž‘ìš©ì„ ë§ˆì³¤ì„ ë•Œ ë˜ëŠ” 액티비티가 ì¼ì‹œ 중지ë˜ì—ˆì„ 때ì—는 í•­ìƒ ë°”ì¸ë”©ì„ 해제해야 합니다.
-ì´ë ‡ê²Œ 해야 서비스가 사용 ì¤‘ì´ ì•„ë‹ ë•Œì—는 중지할 수 있습니다
+ <p>í´ë¼ì´ì–¸íŠ¸ê°€ 소멸ë˜ë©´ ì´ëŠ” 서비스ì—서 ë°”ì¸ë”©ì„ 해제하게 ë˜ì§€ë§Œ,
+서비스와 ìƒí˜¸ ìž‘ìš©ì„ ë§ˆì³¤ì„ ë•Œ ë˜ëŠ” 액티비티가 ì¼ì‹œ 중지ë˜ì—ˆì„ 때ì—는 í•­ìƒ ë°”ì¸ë”©ì„ 해제해야 합니다.
+ì´ë ‡ê²Œ 해야 서비스가 사용 ì¤‘ì´ ì•„ë‹ ë•Œì—는 중지할 수 있습니다
(ë°”ì¸ë”©ê³¼ ë°”ì¸ë”© í•´ì œì˜ ì ì ˆí•œ 시기는 아래ì—서 좀 ë” ë…¼ì˜í•©ë‹ˆë‹¤).</p>
</li>
</ol>
-<p>예를 들어, ë‹¤ìŒ ì½”ë“œ ì¡°ê°ì€ 위와 ê°™ì´
-<a href="#Binder">ë°”ì¸ë” í´ëž˜ìŠ¤ë¥¼ 확장해서</a> ìƒì„±í•œ 서비스와 í´ë¼ì´ì–¸íŠ¸ë¥¼ 연결합니다. 그러므로 ì´ê²ƒì´ 해야 하는 ì¼ì€ 반환ëœ
+<p>예를 들어, ë‹¤ìŒ ì½”ë“œ ì¡°ê°ì€ 위와 ê°™ì´
+<a href="#Binder">ë°”ì¸ë” í´ëž˜ìŠ¤ë¥¼ 확장해서</a> ìƒì„±í•œ 서비스와 í´ë¼ì´ì–¸íŠ¸ë¥¼ 연결합니다. 그러므로 ì´ê²ƒì´ 해야 하는 ì¼ì€ 반환ëœ
{@link android.os.IBinder}를 {@code LocalService} í´ëž˜ìŠ¤ì— ìºìŠ¤íŒ…í•˜ê³  {@code
LocalService} ì¸ìŠ¤í„´ìŠ¤ë¥¼ 요청하는 것ë¿ìž…니다.</p>
@@ -564,7 +564,7 @@ private ServiceConnection mConnection = new ServiceConnection() {
};
</pre>
-<p>ì´ {@link android.content.ServiceConnection}ì´ ìžˆìœ¼ë©´ í´ë¼ì´ì–¸íŠ¸ëŠ”
+<p>ì´ {@link android.content.ServiceConnection}ì´ ìžˆìœ¼ë©´ í´ë¼ì´ì–¸íŠ¸ëŠ”
ì´ê²ƒì„ {@link android.content.Context#bindService bindService()}ì— ì „ë‹¬í•˜ì—¬ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•  수 있습니다. 예:</p>
<pre>
@@ -573,12 +573,12 @@ bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
</pre>
<ul>
- <li>{@link android.content.Context#bindService bindService()}ì˜ ì²« 번째 매개변수는 ë°”ì¸ë”©í•  서비스를 명시ì ìœ¼ë¡œ 명명하는
-{@link android.content.Intent}입니다(ì¸í…트는
+ <li>{@link android.content.Context#bindService bindService()}ì˜ ì²« 번째 매개변수는 ë°”ì¸ë”©í•  서비스를 명시ì ìœ¼ë¡œ 명명하는
+{@link android.content.Intent}입니다(ì¸í…트는
암시ì ì¼ 수 있ìŒ).</li>
<li>ë‘ ë²ˆì§¸ 매개변수는 {@link android.content.ServiceConnection} 개체입니다.</li>
<li>세 번째 매개변수는 ë°”ì¸ë”© ì˜µì…˜ì„ ë‚˜íƒ€ë‚´ëŠ” 플래그입니다. 서비스를 ìƒì„±í•˜ê¸° 위해 ë³´í†µì€ {@link
-android.content.Context#BIND_AUTO_CREATE}를 사용합니다(ì´ë¯¸ ì‚´ì•„ 있는 ìƒíƒœê°€ 아닌 경우).
+android.content.Context#BIND_AUTO_CREATE}를 사용합니다(ì´ë¯¸ ì‚´ì•„ 있는 ìƒíƒœê°€ 아닌 경우).
가능한 기타 ê°’ì€ {@link android.content.Context#BIND_DEBUG_UNBIND}
ë° {@link android.content.Context#BIND_NOT_FOREGROUND}, ë˜ëŠ” ê°’ì´ ì—†ëŠ” 경우 {@code 0}입니다.</li>
</ul>
@@ -588,27 +588,27 @@ android.content.Context#BIND_AUTO_CREATE}를 사용합니다(ì´ë¯¸ ì‚´ì•„ 있ëŠ
<p>다ìŒì€ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ëŠ” ë° ê´€í•œ 몇 가지 중요한 참고 사항입니다.</p>
<ul>
- <li>í•­ìƒ {@link android.os.DeadObjectException} 예외를 트래핑해야 합니다.
+ <li>í•­ìƒ {@link android.os.DeadObjectException} 예외를 트래핑해야 합니다.
ì´ê²ƒì€ ì—°ê²°ì´ ëŠì–´ì§€ë©´ ë°œìƒí•©ë‹ˆë‹¤. ì›ê²© ë©”ì„œë“œì— ì˜í•´ ë°œìƒí•˜ëŠ” 예외는 ì´ê²ƒë¿ìž…니다.</li>
<li>개체는 여러 í”„ë¡œì„¸ìŠ¤ì— ê±¸ì³ ê°ì•ˆëœ 참조입니다. </li>
<li>ì¼ë°˜ì ìœ¼ë¡œ, í´ë¼ì´ì–¸íŠ¸ì˜ ìˆ˜ëª… 주기를
결합하고 분해하는 ìˆœê°„ì„ ì¼ì¹˜ì‹œí‚¤ë©´ì„œ ë°”ì¸ë”©ê³¼ ë°”ì¸ë”© 해제를 페어ë§í•´ì•¼ 합니다. 예:
<ul>
- <li>액티비티가 ëˆˆì— ë³´ì´ëŠ” ë™ì•ˆì—ë§Œ 서비스와 ìƒí˜¸ 작용해야 한다면
+ <li>액티비티가 ëˆˆì— ë³´ì´ëŠ” ë™ì•ˆì—ë§Œ 서비스와 ìƒí˜¸ 작용해야 한다면
{@link android.app.Activity#onStart onStart()}ì—는 ë°”ì¸ë”©í•˜ê³  {@link
android.app.Activity#onStop onStop()}ì—는 ë°”ì¸ë”©ì„ 해제해야 합니다.</li>
<li>
ë°°ê²½ì—서 중단ë˜ì—ˆì„ ë•Œë„ ì•¡í‹°ë¹„í‹°ê°€ ì‘ë‹µì„ ë°›ê²Œ 하고 싶다면 {@link android.app.Activity#onCreate onCreate()}ì—는 ë°”ì¸ë”©í•˜ê³ 
-{@link android.app.Activity#onDestroy onDestroy()} 중ì—는 ë°”ì¸ë”©ì„ 해제합니다.
-ì´ë•Œ, 사용ìžì˜ 액티비티가 서비스가 실행ë˜ëŠ” 시간 ì „ì²´ì—서(ë°°ê²½ì—서ë¼ë„) 서비스를 사용한다는 ê²ƒì„ ìœ ë…해야 합니다.
+{@link android.app.Activity#onDestroy onDestroy()} 중ì—는 ë°”ì¸ë”©ì„ 해제합니다.
+ì´ë•Œ, 사용ìžì˜ 액티비티가 서비스가 실행ë˜ëŠ” 시간 ì „ì²´ì—서(ë°°ê²½ì—서ë¼ë„) 서비스를 사용한다는 ê²ƒì„ ìœ ë…해야 합니다.
서비스가 다른 í”„ë¡œì„¸ìŠ¤ì— ìžˆì„ ê²½ìš°, 사용ìžê°€ í”„ë¡œì„¸ìŠ¤ì˜ ê°€ì¤‘ì¹˜ë¥¼ 높ì´ë©´ 시스템ì´
ì´ë¥¼ 중단할 ê°€ëŠ¥ì„±ì´ ë†’ì•„ì§‘ë‹ˆë‹¤.</li>
</ul>
<p class="note"><strong>참고:</strong> ì¼ë°˜ì ìœ¼ë¡œëŠ”, ì•¡í‹°ë¹„í‹°ì˜ {@link android.app.Activity#onResume onResume()}와 {@link
android.app.Activity#onPause onPause()}ì—는 ë°”ì¸ë”©í•˜ê±°ë‚˜ ë°”ì¸ë”©ì„ 해제하지 <strong>ë§ì•„야</strong> 합니다. ì´ëŸ¬í•œ ì½œë°±ì€ ëª¨ë“  수명 주기 전환ì—서 ë°œìƒí•˜ê³ 
ì´ëŸ° 전환ì—서 ë°œìƒí•˜ëŠ” 처리는
-최소한으로 유지해야 하기 때문입니다. ë˜í•œ,
-ì‚¬ìš©ìž ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 여러 액티비티가 ë™ì¼í•œ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ë˜ì—ˆê³ 
+최소한으로 유지해야 하기 때문입니다. ë˜í•œ,
+ì‚¬ìš©ìž ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 여러 액티비티가 ë™ì¼í•œ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ë˜ì—ˆê³ 
ë‘ ì•¡í‹°ë¹„í‹° 사ì´ì— ì „í™˜ì´ ìžˆì„ ê²½ìš°, 현재 ì•¡í‹°ë¹„í‹°ì˜ ë°”ì¸ë”©ì´ í•´ì œëœ í›„(ì¼ì‹œì¤‘ì§€ 중) ë‹¤ìŒ ì•¡í‹°ë¹„í‹°ê°€ ë°”ì¸ë”©í•˜ê¸° ì „(재개 중)ì—
서비스가 제거ë˜ì—ˆë‹¤ê°€ 다시 ìƒì„±ë  수 있습니다 (수명 주기를 조절하기 위한 ì´ëŸ¬í•œ 액티비티 전환ì€
<a href="{@docRoot}guide/components/activities.html#CoordinatingActivities">액티비티</a>
@@ -624,8 +624,8 @@ RemoteService.java}</a> í´ëž˜ìŠ¤ë¥¼ 참조하십시오.</p>
<h2 id="Lifecycle">ë°”ì¸ë”©ëœ 서비스 수명 주기 관리</h2>
-<p>서비스가 모든 í´ë¼ì´ì–¸íŠ¸ë¡œë¶€í„° ë°”ì¸ë”© í•´ì œë˜ë©´, Android ì‹œìŠ¤í…œì´ ì´ë¥¼ 소멸시킵니다(다만
-{@link android.app.Service#onStartCommand onStartCommand()}ì™€ë„ í•¨ê»˜ ì‹œìž‘ëœ ê²½ìš°ëŠ” 예외).
+<p>서비스가 모든 í´ë¼ì´ì–¸íŠ¸ë¡œë¶€í„° ë°”ì¸ë”© í•´ì œë˜ë©´, Android ì‹œìŠ¤í…œì´ ì´ë¥¼ 소멸시킵니다(다만
+{@link android.app.Service#onStartCommand onStartCommand()}ì™€ë„ í•¨ê»˜ ì‹œìž‘ëœ ê²½ìš°ëŠ” 예외).
ë”°ë¼ì„œ, 서비스가 순전히 ë°”ì¸ë”©ëœ ì„œë¹„ìŠ¤ì¼ ê²½ìš°ì—는 해당 ì„œë¹„ìŠ¤ì˜ ìˆ˜ëª… 주기를 관리하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤.
í´ë¼ì´ì–¸íŠ¸ì— ë°”ì¸ë”©ë˜ì—ˆëŠ”ì§€ë¥¼ 근거로 Android ì‹œìŠ¤í…œì´ ëŒ€ì‹  관리해주기 때문입니다.</p>
diff --git a/docs/html-intl/intl/ko/guide/components/fragments.jd b/docs/html-intl/intl/ko/guide/components/fragments.jd
index a41250c38d9f..96bf7a197649 100644
--- a/docs/html-intl/intl/ko/guide/components/fragments.jd
+++ b/docs/html-intl/intl/ko/guide/components/fragments.jd
@@ -36,7 +36,7 @@ parent.link=activities.html
<li>{@link android.app.FragmentManager}</li>
<li>{@link android.app.FragmentTransaction}</li>
</ol>
-
+
<h2>참고 항목</h2>
<ol>
<li><a href="{@docRoot}training/basics/fragments/index.html">프래그먼트로 ë™ì  UI 구축하기</a></li>
@@ -46,79 +46,79 @@ parent.link=activities.html
</div>
</div>
-<p>{@link android.app.Fragment}는 ë™ìž‘ ë˜ëŠ”
-{@link android.app.Activity} ë‚´ì—서 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì˜ ì¼ë¶€ë¥¼ 나타냅니다. 여러 ê°œì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ í•˜ë‚˜ì˜ ì•¡í‹°ë¹„í‹°ì—
-조합하여 ì°½ì´ ì—¬ëŸ¬ ê°œì¸ UI를 구축할 수 있으며, í•˜ë‚˜ì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 여러 액티비티ì—서 재사용할 수 있습니다. 프래그먼트는 ìžì²´ 수명 주기를 가지고, ìžì²´ ìž…ë ¥ ì´ë²¤íŠ¸ë¥¼ 받으며,
-액티비티 실행 ì¤‘ì— ì¶”ê°€ ë° ì œê±°ê°€ 가능한 ì•¡í‹°ë¹„í‹°ì˜ ëª¨ë“ˆì‹ ì„¹ì…˜ì´ë¼ê³ 
-ìƒê°í•˜ë©´ ë©ë‹ˆë‹¤(다른 액티비티ì—
+<p>{@link android.app.Fragment}는 ë™ìž‘ ë˜ëŠ”
+{@link android.app.Activity} ë‚´ì—서 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì˜ ì¼ë¶€ë¥¼ 나타냅니다. 여러 ê°œì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ í•˜ë‚˜ì˜ ì•¡í‹°ë¹„í‹°ì—
+조합하여 ì°½ì´ ì—¬ëŸ¬ ê°œì¸ UI를 구축할 수 있으며, í•˜ë‚˜ì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 여러 액티비티ì—서 재사용할 수 있습니다. 프래그먼트는 ìžì²´ 수명 주기를 가지고, ìžì²´ ìž…ë ¥ ì´ë²¤íŠ¸ë¥¼ 받으며,
+액티비티 실행 ì¤‘ì— ì¶”ê°€ ë° ì œê±°ê°€ 가능한 ì•¡í‹°ë¹„í‹°ì˜ ëª¨ë“ˆì‹ ì„¹ì…˜ì´ë¼ê³ 
+ìƒê°í•˜ë©´ ë©ë‹ˆë‹¤(다른 액티비티ì—
재사용할 수 있는 "하위 액티비티"와 ê°™ì€ ê°œë…).</p>
-<p>프래그먼트는 í•­ìƒ ì•¡í‹°ë¹„í‹° ë‚´ì— í¬í•¨ë˜ì–´ 있어야 하며 해당 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìˆ˜ëª… 주기는
-호스트 ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… ì£¼ê¸°ì— ì§ì ‘ì ìœ¼ë¡œ ì˜í–¥ì„ 받습니다. 예를 들어 액티비티가 ì¼ì‹œì •ì§€ë˜ëŠ” 경우, ê·¸ ì•ˆì˜ ëª¨ë“  프래그먼트ë„
-ì¼ì‹œì •ì§€ë˜ë©° 액티비티가 소멸ë˜ë©´ 모든 í”„ëž˜ê·¸ë¨¼íŠ¸ë„ ë§ˆì°¬ê°€ì§€ë¡œ 소멸ë©ë‹ˆë‹¤. 그러나 액티비티가 실행 중ì¸
-ë™ì•ˆì—는(<em>재개ë¨</em> <a href="{@docRoot}guide/components/activities.html#Lifecycle">수명 주기 ìƒíƒœ</a>ì— ìžˆì„ ë•Œë¥¼ ë§í•©ë‹ˆë‹¤)
-ê° í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 추가 ë˜ëŠ” 제거하는 등 개별ì ìœ¼ë¡œ 조작할 수 있습니다. 그와 ê°™ì€ í”„ëž˜ê·¸ë¨¼íŠ¸ 트랜잭션ì„
-수행할 때ì—는 ì´ë¥¼ 액티비티가 관리하는 ë°± 스íƒì—ë„
-추가할 수 있습니다. ê° ë°± ìŠ¤íƒ í•­ëª©ì´ ë°œìƒí•œ 프래그먼트 트랜잭션ì˜
+<p>프래그먼트는 í•­ìƒ ì•¡í‹°ë¹„í‹° ë‚´ì— í¬í•¨ë˜ì–´ 있어야 하며 해당 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìˆ˜ëª… 주기는
+호스트 ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… ì£¼ê¸°ì— ì§ì ‘ì ìœ¼ë¡œ ì˜í–¥ì„ 받습니다. 예를 들어 액티비티가 ì¼ì‹œì •ì§€ë˜ëŠ” 경우, ê·¸ ì•ˆì˜ ëª¨ë“  프래그먼트ë„
+ì¼ì‹œì •ì§€ë˜ë©° 액티비티가 소멸ë˜ë©´ 모든 í”„ëž˜ê·¸ë¨¼íŠ¸ë„ ë§ˆì°¬ê°€ì§€ë¡œ 소멸ë©ë‹ˆë‹¤. 그러나 액티비티가 실행 중ì¸
+ë™ì•ˆì—는(<em>재개ë¨</em> <a href="{@docRoot}guide/components/activities.html#Lifecycle">수명 주기 ìƒíƒœ</a>ì— ìžˆì„ ë•Œë¥¼ ë§í•©ë‹ˆë‹¤)
+ê° í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 추가 ë˜ëŠ” 제거하는 등 개별ì ìœ¼ë¡œ 조작할 수 있습니다. 그와 ê°™ì€ í”„ëž˜ê·¸ë¨¼íŠ¸ 트랜잭션ì„
+수행할 때ì—는 ì´ë¥¼ 액티비티가 관리하는 ë°± 스íƒì—ë„
+추가할 수 있습니다. ê° ë°± ìŠ¤íƒ í•­ëª©ì´ ë°œìƒí•œ 프래그먼트 트랜잭션ì˜
기ë¡ì´ ë©ë‹ˆë‹¤. ì´ ë°± 스íƒì„ 사용하면 사용ìžê°€ 프래그먼트 íŠ¸ëžœìž­ì…˜ì„ ê±°ê¾¸ë¡œ ëŒë¦´ 수 있습니다(뒤로 ì´ë™).
ì´ë•Œ <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ ë©ë‹ˆë‹¤.</p>
<p>프래그먼트를 액티비티 ë ˆì´ì•„ì›ƒì˜ ì¼ë¶€ë¡œ 추가하는 경우, ì´ëŠ” ì•¡í‹°ë¹„í‹°ì˜ ë³´ê¸° 계층 ë‚´ë¶€ì˜ {@link
-android.view.ViewGroup} ì•ˆì— ì‚´ë©°, 해당 프래그먼트가 ìžì‹ ì˜ 보기
+android.view.ViewGroup} ì•ˆì— ì‚´ë©°, 해당 프래그먼트가 ìžì‹ ì˜ 보기
ë ˆì´ì•„ì›ƒì„ ì •ì˜í•©ë‹ˆë‹¤.
-프래그먼트를 액티비티 ë ˆì´ì•„ì›ƒì— ì‚½ìž…í•˜ë ¤ë©´ 해당 프래그먼트를
-ì•¡í‹°ë¹„í‹°ì˜ ë ˆì´ì•„웃 파ì¼ì—서 {@code &lt;fragment&gt;} 요소로 선언하거나, 애플리케ì´ì…˜ 코드ì—서 ì´ë¥¼
-ê¸°ì¡´ì˜ {@link android.view.ViewGroup}ì— ì¶”ê°€í•˜ë©´ ë©ë‹ˆë‹¤. 그러나 프래그먼트가
-액티비티 ë ˆì´ì•„ì›ƒì˜ ì¼ë¶€ë¶„ì´ì–´ì•¼ë§Œ 하는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. ë‚˜ë¦„ì˜ UIê°€ 없는 í”„ëž˜ê·¸ë¨¼íŠ¸ë„ ì•¡í‹°ë¹„í‹°ë¥¼ 위한
+프래그먼트를 액티비티 ë ˆì´ì•„ì›ƒì— ì‚½ìž…í•˜ë ¤ë©´ 해당 프래그먼트를
+ì•¡í‹°ë¹„í‹°ì˜ ë ˆì´ì•„웃 파ì¼ì—서 {@code &lt;fragment&gt;} 요소로 선언하거나, 애플리케ì´ì…˜ 코드ì—서 ì´ë¥¼
+ê¸°ì¡´ì˜ {@link android.view.ViewGroup}ì— ì¶”ê°€í•˜ë©´ ë©ë‹ˆë‹¤. 그러나 프래그먼트가
+액티비티 ë ˆì´ì•„ì›ƒì˜ ì¼ë¶€ë¶„ì´ì–´ì•¼ë§Œ 하는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. ë‚˜ë¦„ì˜ UIê°€ 없는 í”„ëž˜ê·¸ë¨¼íŠ¸ë„ ì•¡í‹°ë¹„í‹°ë¥¼ 위한
ë³´ì´ì§€ 않는 작업ìžë¡œ 사용할 수 있습니다.</p>
-<p>ì´ ë¬¸ì„œì—서는 프래그먼트를 사용하ë„ë¡ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ 구축하는 법ì„
-설명합니다. 그중ì—는 프래그먼트를 ì•¡í‹°ë¹„í‹°ì˜ ë°± 스íƒì— ì¶”ê°€í–ˆì„ ë•Œ 프래그먼트가 ìžì‹ ì˜ ìƒíƒœë¥¼ 유지하는 방법,
-액티비티 ë° ì•¡í‹°ë¹„í‹° ë‚´ì˜ ë‹¤ë¥¸ 프래그먼트와 ì´ë²¤íŠ¸ë¥¼ 공유하는 방법과 액티비티ì˜
+<p>ì´ ë¬¸ì„œì—서는 프래그먼트를 사용하ë„ë¡ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ 구축하는 법ì„
+설명합니다. 그중ì—는 프래그먼트를 ì•¡í‹°ë¹„í‹°ì˜ ë°± 스íƒì— ì¶”ê°€í–ˆì„ ë•Œ 프래그먼트가 ìžì‹ ì˜ ìƒíƒœë¥¼ 유지하는 방법,
+액티비티 ë° ì•¡í‹°ë¹„í‹° ë‚´ì˜ ë‹¤ë¥¸ 프래그먼트와 ì´ë²¤íŠ¸ë¥¼ 공유하는 방법과 액티비티ì˜
작업 모ìŒì— 참가하는 법 등등 여러 가지가 í¬í•¨ë©ë‹ˆë‹¤.</p>
<h2 id="Design">ë””ìžì¸ ì² í•™</h2>
-<p>Androidê°€ 프래그먼트를 ì²˜ìŒ ë„입한 ê²ƒì€ Android 3.0(API 레벨 11)부터입니다. 기본ì ìœ¼ë¡œ
-태블릿과 ê°™ì€ í° í™”ë©´ì—서 보다 ì—­ë™ì ì´ê³  유연한 UI ë””ìžì¸ì„ ì§€ì›í•˜ëŠ” ê²ƒì´ ëª©ì ì´ì—ˆìŠµë‹ˆë‹¤. íƒœë¸”ë¦¿ì˜ í™”ë©´ì€
-핸드셋 화면보다 훨씬 í¬ê¸° ë•Œë¬¸ì— UI 구성 요소를 조합하고 ìƒí˜¸ êµí™˜í•  공간ì´
-ë” ë§ŽìŠµë‹ˆë‹¤. 프래그먼트는 개발ìžê°€ 보기 ê³„ì¸µì— ë³µìž¡í•œ 변경 ë‚´ìš©ì„ ê´€ë¦¬í•˜ì§€ 않아ë„
-그러한 ë””ìžì¸ì„ 사용할 수 있ë„ë¡ í•´ì£¼ëŠ” 것입니다. 한 ì•¡í‹°ë¹„í‹°ì˜ ë ˆì´ì•„ì›ƒì„ ì—¬ëŸ¬ 프래그먼트로 나누면
-ëŸ°íƒ€ìž„ì— ì•¡í‹°ë¹„í‹°ì˜ ì™¸ê´€ì„ ìˆ˜ì •í•  ìˆ˜ë„ ìžˆê³  그러한 변경 ë‚´ìš©ì„ í•´ë‹¹ 액티비티가 관리하는
+<p>Androidê°€ 프래그먼트를 ì²˜ìŒ ë„입한 ê²ƒì€ Android 3.0(API 레벨 11)부터입니다. 기본ì ìœ¼ë¡œ
+태블릿과 ê°™ì€ í° í™”ë©´ì—서 보다 ì—­ë™ì ì´ê³  유연한 UI ë””ìžì¸ì„ ì§€ì›í•˜ëŠ” ê²ƒì´ ëª©ì ì´ì—ˆìŠµë‹ˆë‹¤. íƒœë¸”ë¦¿ì˜ í™”ë©´ì€
+핸드셋 화면보다 훨씬 í¬ê¸° ë•Œë¬¸ì— UI 구성 요소를 조합하고 ìƒí˜¸ êµí™˜í•  공간ì´
+ë” ë§ŽìŠµë‹ˆë‹¤. 프래그먼트는 개발ìžê°€ 보기 ê³„ì¸µì— ë³µìž¡í•œ 변경 ë‚´ìš©ì„ ê´€ë¦¬í•˜ì§€ 않아ë„
+그러한 ë””ìžì¸ì„ 사용할 수 있ë„ë¡ í•´ì£¼ëŠ” 것입니다. 한 ì•¡í‹°ë¹„í‹°ì˜ ë ˆì´ì•„ì›ƒì„ ì—¬ëŸ¬ 프래그먼트로 나누면
+ëŸ°íƒ€ìž„ì— ì•¡í‹°ë¹„í‹°ì˜ ì™¸ê´€ì„ ìˆ˜ì •í•  ìˆ˜ë„ ìžˆê³  그러한 변경 ë‚´ìš©ì„ í•´ë‹¹ 액티비티가 관리하는
ë°± 스íƒì— ë³´ì¡´í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
-<p>예를 들어 뉴스 애플리케ì´ì…˜ì´ë¼ë©´ í•˜ë‚˜ì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 사용하여
-ì™¼ìª½ì— ê¸°ì‚¬ 목ë¡ì„ 표시하ë„ë¡ í•˜ê³  ë˜ ë‹¤ë¥¸ 프래그먼트로 ì˜¤ë¥¸ìª½ì— ê¸°ì‚¬ ë‚´ìš©ì„ í‘œì‹œí•˜ë„ë¡ í•  수 있습니다. ë‘ í”„ëž˜ê·¸ë¨¼íŠ¸ 모ë‘
-한 액티비티ì—서 양쪽으로 나란히 나타나며, ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì— ë‚˜ë¦„ì˜ ìˆ˜ëª… 주기 콜백 메서드가 있고
-ê°ìž ì‚¬ìš©ìž ìž…ë ¥ ì´ë²¤íŠ¸ë¥¼ 따로 처리하게 ë©ë‹ˆë‹¤. ë”°ë¼ì„œ, 사용ìžëŠ” 기사를 ì„ íƒí•˜ëŠ” ë° í•œ 액티비티를 ì“°ê³ 
-기사를 ì½ëŠ” ë° ë˜ ë‹¤ë¥¸ 액티비티를 ì„ íƒí•˜ëŠ” ëŒ€ì‹ ì— ê°™ì€ ì•¡í‹°ë¹„í‹° 안ì—서 기사를 ì„ íƒí•˜ê³  ì½ëŠ” 과정ì„
+<p>예를 들어 뉴스 애플리케ì´ì…˜ì´ë¼ë©´ í•˜ë‚˜ì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 사용하여
+ì™¼ìª½ì— ê¸°ì‚¬ 목ë¡ì„ 표시하ë„ë¡ í•˜ê³  ë˜ ë‹¤ë¥¸ 프래그먼트로 ì˜¤ë¥¸ìª½ì— ê¸°ì‚¬ ë‚´ìš©ì„ í‘œì‹œí•˜ë„ë¡ í•  수 있습니다. ë‘ í”„ëž˜ê·¸ë¨¼íŠ¸ 모ë‘
+한 액티비티ì—서 양쪽으로 나란히 나타나며, ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì— ë‚˜ë¦„ì˜ ìˆ˜ëª… 주기 콜백 메서드가 있고
+ê°ìž ì‚¬ìš©ìž ìž…ë ¥ ì´ë²¤íŠ¸ë¥¼ 따로 처리하게 ë©ë‹ˆë‹¤. ë”°ë¼ì„œ, 사용ìžëŠ” 기사를 ì„ íƒí•˜ëŠ” ë° í•œ 액티비티를 ì“°ê³ 
+기사를 ì½ëŠ” ë° ë˜ ë‹¤ë¥¸ 액티비티를 ì„ íƒí•˜ëŠ” ëŒ€ì‹ ì— ê°™ì€ ì•¡í‹°ë¹„í‹° 안ì—서 기사를 ì„ íƒí•˜ê³  ì½ëŠ” 과정ì„
ëª¨ë‘ ë낼 수 있는 것입니다. ì´ê²ƒì€ 그림 1ì— ë‚˜íƒ€ë‚¸ 태블릿 ë ˆì´ì•„웃과 같습니다.</p>
-<p>프래그먼트를 ë””ìžì¸í•  때ì—는 ê° í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 모듈ì‹ì´ë©° 재사용 가능한 액티비티 구성 요소로 만들어야 합니다.
-다시 ë§í•´, ê° í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ë‚˜ë¦„ì˜ ë ˆì´ì•„ì›ƒì„ ë”°ë¡œ ì •ì˜í•˜ê³  ìžê¸°ë§Œì˜ 수명 주기 콜백으로 ìžê¸° ë‚˜ë¦„ì˜ ë™ìž‘ì„ ì •ì˜í•˜ê¸° 때문ì—
-한 프래그먼트를 여러 ì•¡í‹°ë¹„í‹°ì— í¬í•¨ì‹œí‚¬ 수 있습니다. 그러므로 ìž¬ì‚¬ìš©ì„ ì—¼ë‘ì— ë‘ê³  ë””ìžì¸í•˜ë©°
-한 프래그먼트를 ë˜ ë‹¤ë¥¸ 프래그먼트로부터 ì§ì ‘ 조작하는 ê²ƒì€ ì‚¼ê°€ì•¼ 합니다. ì´ê²ƒì€ 특히 ëª¨ë“ˆì‹ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 사용하면
-프래그먼트 ì¡°í•©ì„ ì—¬ëŸ¬ 가지 화면 í¬ê¸°ì— ë§žì¶° 변경할 수 있ë„ë¡ í•´ì£¼ê¸° ë•Œë¬¸ì— ì¤‘ìš”í•œ ìš”ì ìž…니다. 태블릿과 í•¸ë“œì…‹ì„ ëª¨ë‘ ì§€ì›í•˜ëŠ”
-애플리케ì´ì…˜ì„ ë””ìžì¸í•˜ëŠ” 경우, 사용 가능한 화면 ê³µê°„ì„ í† ëŒ€ë¡œ ì‚¬ìš©ìž ê²½í—˜ì„ ìµœì í™”하ë„ë¡ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼
-여러 ë ˆì´ì•„웃 êµ¬ì„±ì— ìž¬ì‚¬ìš©í•  수 있습니다. 예를 들어 핸드셋ì—ì„œì˜ ê²½ìš°
-프래그먼트를 분리해서 ë‹¨ì¼ ì°½ UI를 제공하ë„ë¡ í•´ì•¼í•  수 있습니다. ê°™ì€ ì•¡í‹°ë¹„í‹° ì•ˆì— í•˜ë‚˜ ì´ìƒì´ 들어가지 ì•Šì„ ìˆ˜
+<p>프래그먼트를 ë””ìžì¸í•  때ì—는 ê° í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 모듈ì‹ì´ë©° 재사용 가능한 액티비티 구성 요소로 만들어야 합니다.
+다시 ë§í•´, ê° í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ë‚˜ë¦„ì˜ ë ˆì´ì•„ì›ƒì„ ë”°ë¡œ ì •ì˜í•˜ê³  ìžê¸°ë§Œì˜ 수명 주기 콜백으로 ìžê¸° ë‚˜ë¦„ì˜ ë™ìž‘ì„ ì •ì˜í•˜ê¸° 때문ì—
+한 프래그먼트를 여러 ì•¡í‹°ë¹„í‹°ì— í¬í•¨ì‹œí‚¬ 수 있습니다. 그러므로 ìž¬ì‚¬ìš©ì„ ì—¼ë‘ì— ë‘ê³  ë””ìžì¸í•˜ë©°
+한 프래그먼트를 ë˜ ë‹¤ë¥¸ 프래그먼트로부터 ì§ì ‘ 조작하는 ê²ƒì€ ì‚¼ê°€ì•¼ 합니다. ì´ê²ƒì€ 특히 ëª¨ë“ˆì‹ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 사용하면
+프래그먼트 ì¡°í•©ì„ ì—¬ëŸ¬ 가지 화면 í¬ê¸°ì— ë§žì¶° 변경할 수 있ë„ë¡ í•´ì£¼ê¸° ë•Œë¬¸ì— ì¤‘ìš”í•œ ìš”ì ìž…니다. 태블릿과 í•¸ë“œì…‹ì„ ëª¨ë‘ ì§€ì›í•˜ëŠ”
+애플리케ì´ì…˜ì„ ë””ìžì¸í•˜ëŠ” 경우, 사용 가능한 화면 ê³µê°„ì„ í† ëŒ€ë¡œ ì‚¬ìš©ìž ê²½í—˜ì„ ìµœì í™”하ë„ë¡ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼
+여러 ë ˆì´ì•„웃 êµ¬ì„±ì— ìž¬ì‚¬ìš©í•  수 있습니다. 예를 들어 핸드셋ì—ì„œì˜ ê²½ìš°
+프래그먼트를 분리해서 ë‹¨ì¼ ì°½ UI를 제공하ë„ë¡ í•´ì•¼í•  수 있습니다. ê°™ì€ ì•¡í‹°ë¹„í‹° ì•ˆì— í•˜ë‚˜ ì´ìƒì´ 들어가지 ì•Šì„ ìˆ˜
있기 때문입니다.</p>
<img src="{@docRoot}images/fundamentals/fragments.png" alt="" />
-<p class="img-caption"><strong>그림 1.</strong> 프래그먼트가 ì •ì˜í•œ ë‘ ê°€ì§€ UI 모듈ì´
-태블릿 ë””ìžì¸ì—서는 í•˜ë‚˜ì˜ ì•¡í‹°ë¹„í‹°ë¡œ ì¡°í•©ë  ìˆ˜ 있는 반면 핸드셋 ë””ìžì¸ì—서는 ë¶„ë¦¬ë  ìˆ˜ 있다는 것ì„
+<p class="img-caption"><strong>그림 1.</strong> 프래그먼트가 ì •ì˜í•œ ë‘ ê°€ì§€ UI 모듈ì´
+태블릿 ë””ìžì¸ì—서는 í•˜ë‚˜ì˜ ì•¡í‹°ë¹„í‹°ë¡œ ì¡°í•©ë  ìˆ˜ 있는 반면 핸드셋 ë””ìžì¸ì—서는 ë¶„ë¦¬ë  ìˆ˜ 있다는 것ì„
예시로 나타낸 것입니다.</p>
-<p>예를 들어&mdash;뉴스 애플리케ì´ì…˜ 예시를 ê³„ì† ì‚¬ìš©í•˜ê² ìŠµë‹ˆë‹¤&mdash;ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ 태블릿 í¬ê¸°ì˜ 기기ì—서 실행하는 경우,
-애플리케ì´ì…˜ ë‚´ì˜ <em>액티비티 A</em> ì•ˆì— ë‘ ê°œì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ í¬í•¨ì‹œí‚¬ 수 있습니다. 그러나
-핸드셋 í¬ê¸°ì˜ 화면ì—서ë¼ë©´ ë‘ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ ëª¨ë‘ ì“¸ ë§Œí¼ ê³µê°„ì´ ì¶©ë¶„ì¹˜ 않습니다.
-ë”°ë¼ì„œ <em>액티비티 A</em>ì—는 기사 목ë¡ì— 해당ë˜ëŠ” 프래그먼트만 í¬í•¨í•˜ê³ , 사용ìžê°€ 기사를 하나 ì„ íƒí•˜ë©´ ì´ê²ƒì´
-<em>액티비티 B</em>를 시작합니다. ì—¬ê¸°ì— ê¸°ì‚¬ë¥¼ ì½ì„ ë‘ ë²ˆì§¸ 프래그먼트가 í¬í•¨ë˜ì–´ 있습니다. ë”°ë¼ì„œ ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì€
-서로 다른 조합으로 프래그먼트를 ìž¬ì‚¬ìš©í•¨ìœ¼ë¡œì¨ íƒœë¸”ë¦¿ê³¼ í•¸ë“œì…‹ì„ ë‘˜ 다 ì§€ì›í•˜ëŠ”
+<p>예를 들어&mdash;뉴스 애플리케ì´ì…˜ 예시를 ê³„ì† ì‚¬ìš©í•˜ê² ìŠµë‹ˆë‹¤&mdash;ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ 태블릿 í¬ê¸°ì˜ 기기ì—서 실행하는 경우,
+애플리케ì´ì…˜ ë‚´ì˜ <em>액티비티 A</em> ì•ˆì— ë‘ ê°œì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ í¬í•¨ì‹œí‚¬ 수 있습니다. 그러나
+핸드셋 í¬ê¸°ì˜ 화면ì—서ë¼ë©´ ë‘ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ ëª¨ë‘ ì“¸ ë§Œí¼ ê³µê°„ì´ ì¶©ë¶„ì¹˜ 않습니다.
+ë”°ë¼ì„œ <em>액티비티 A</em>ì—는 기사 목ë¡ì— 해당ë˜ëŠ” 프래그먼트만 í¬í•¨í•˜ê³ , 사용ìžê°€ 기사를 하나 ì„ íƒí•˜ë©´ ì´ê²ƒì´
+<em>액티비티 B</em>를 시작합니다. ì—¬ê¸°ì— ê¸°ì‚¬ë¥¼ ì½ì„ ë‘ ë²ˆì§¸ 프래그먼트가 í¬í•¨ë˜ì–´ 있습니다. ë”°ë¼ì„œ ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì€
+서로 다른 조합으로 프래그먼트를 ìž¬ì‚¬ìš©í•¨ìœ¼ë¡œì¨ íƒœë¸”ë¦¿ê³¼ í•¸ë“œì…‹ì„ ë‘˜ 다 ì§€ì›í•˜ëŠ”
것입니다(그림 1 참조).</p>
-<p>여러 가지 화면 êµ¬ì„±ì— ë§žê²Œ 여러 가지 프래그먼트 조합으로 애플리케ì´ì…˜ì„ ë””ìžì¸í•˜ëŠ” ë²•ì— ëŒ€í•œ ìžì„¸í•œ 정보는
+<p>여러 가지 화면 êµ¬ì„±ì— ë§žê²Œ 여러 가지 프래그먼트 조합으로 애플리케ì´ì…˜ì„ ë””ìžì¸í•˜ëŠ” ë²•ì— ëŒ€í•œ ìžì„¸í•œ 정보는
<a href="{@docRoot}guide/practices/tablets-and-handsets.html">태블릿 ë° í•¸ë“œì…‹ ì§€ì›</a>ì— ëŒ€í•œ ê°€ì´ë“œë¥¼ 참조하십시오.</p>
@@ -132,36 +132,36 @@ android.view.ViewGroup} ì•ˆì— ì‚´ë©°, 해당 프래그먼트가 ìžì‹ ì˜ ë³´ê¸
</div>
<p>프래그먼트를 ìƒì„±í•˜ë ¤ë©´ {@link android.app.Fragment}ì˜ í•˜ìœ„ í´ëž˜ìФ(ë˜ëŠ” ì´ì˜ 기존
-하위 í´ëž˜ìФ)를 ìƒì„±í•´ì•¼ 합니다. {@link android.app.Fragment} í´ëž˜ìФì—는
-{@link android.app.Activity}와 아주 유사해 ë³´ì´ëŠ” 코드가 있습니다. 여기ì—는 액티비티와 비슷한 콜백 메서드가 들어 있습니다.
+하위 í´ëž˜ìФ)를 ìƒì„±í•´ì•¼ 합니다. {@link android.app.Fragment} í´ëž˜ìФì—는
+{@link android.app.Activity}와 아주 유사해 ë³´ì´ëŠ” 코드가 있습니다. 여기ì—는 액티비티와 비슷한 콜백 메서드가 들어 있습니다.
예를 들어 {@link android.app.Fragment#onCreate onCreate()}, {@link android.app.Fragment#onStart onStart()},
-{@link android.app.Fragment#onPause onPause()} ë° {@link android.app.Fragment#onStop onStop()} 등입니다. 사실,
-기존 Android 애플리케ì´ì…˜ì„ 변환하여 프래그먼트를 사용하ë„ë¡ í•˜ë ¤ë©´ 그저
-ì•¡í‹°ë¹„í‹°ì˜ ì½œë°± 메서드ì—서 í”„ëž˜ê·¸ë¨¼íŠ¸ì— í•´ë‹¹ë˜ëŠ” 콜백 메서드로 코드를 옮기기만 하면
+{@link android.app.Fragment#onPause onPause()} ë° {@link android.app.Fragment#onStop onStop()} 등입니다. 사실,
+기존 Android 애플리케ì´ì…˜ì„ 변환하여 프래그먼트를 사용하ë„ë¡ í•˜ë ¤ë©´ 그저
+ì•¡í‹°ë¹„í‹°ì˜ ì½œë°± 메서드ì—서 í”„ëž˜ê·¸ë¨¼íŠ¸ì— í•´ë‹¹ë˜ëŠ” 콜백 메서드로 코드를 옮기기만 하면
ë  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
<p>ë³´í†µì€ ìµœì†Œí•œ 다ìŒê³¼ ê°™ì€ ìˆ˜ëª… 주기 메서드를 구현해야 합니다.</p>
<dl>
<dt>{@link android.app.Fragment#onCreate onCreate()}</dt>
- <dd>ì‹œìŠ¤í…œì€ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ ìƒì„±í•  때 ì´ê²ƒì„ 호출합니다. 구현 ë‚´ì—서 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ê¸°ë³¸ 구성 요소 중
-프래그먼트가 ì¼ì‹œì •ì§€ë˜ê±°ë‚˜ 중단ë˜ì—ˆë‹¤ê°€ 재개ë˜ì—ˆì„ 때 ìœ ì§€í•˜ê³ ìž í•˜ëŠ” 것ì„
+ <dd>ì‹œìŠ¤í…œì€ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ ìƒì„±í•  때 ì´ê²ƒì„ 호출합니다. 구현 ë‚´ì—서 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ê¸°ë³¸ 구성 요소 중
+프래그먼트가 ì¼ì‹œì •ì§€ë˜ê±°ë‚˜ 중단ë˜ì—ˆë‹¤ê°€ 재개ë˜ì—ˆì„ 때 ìœ ì§€í•˜ê³ ìž í•˜ëŠ” 것ì„
초기화해야 합니다.</dd>
<dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
- <dd>ì‹œìŠ¤í…œì€ í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ìžì‹ ì˜ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 처ìŒìœ¼ë¡œ 그릴 ì‹œê°„ì´ ë˜ë©´
-ì´ê²ƒì„ 호출합니다. í”„ëž˜ê·¸ë¨¼íŠ¸ì— ë§žëŠ” UI를 그리려면 메서드ì—서 {@link android.view.View}를 반환해야 합니다.
-ì´ ë©”ì„œë“œëŠ” 프래그먼트 ë ˆì´ì•„ì›ƒì˜ ë£¨íŠ¸ìž…ë‹ˆë‹¤. 프래그먼트가 UI를 제공하지 않는 경우 nullì„ ë°˜í™˜í•˜ë©´
+ <dd>ì‹œìŠ¤í…œì€ í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ìžì‹ ì˜ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 처ìŒìœ¼ë¡œ 그릴 ì‹œê°„ì´ ë˜ë©´
+ì´ê²ƒì„ 호출합니다. í”„ëž˜ê·¸ë¨¼íŠ¸ì— ë§žëŠ” UI를 그리려면 메서드ì—서 {@link android.view.View}를 반환해야 합니다.
+ì´ ë©”ì„œë“œëŠ” 프래그먼트 ë ˆì´ì•„ì›ƒì˜ ë£¨íŠ¸ìž…ë‹ˆë‹¤. 프래그먼트가 UI를 제공하지 않는 경우 nullì„ ë°˜í™˜í•˜ë©´
ë©ë‹ˆë‹¤.</dd>
<dt>{@link android.app.Activity#onPause onPause()}</dt>
- <dd>ì‹œìŠ¤í…œì´ ì´ ë©”ì„œë“œë¥¼ 호출하는 ê²ƒì€ ì‚¬ìš©ìžê°€ 프래그먼트를 떠난다는
-첫 번째 신호입니다(다만 ì´ê²ƒì´ í•­ìƒ í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ 소멸 중ì´ë¼ëŠ” ëœ»ì€ ì•„ë‹™ë‹ˆë‹¤). 현재 ì‚¬ìš©ìž ì„¸ì…˜ì„ ë„˜ì–´ì„œ
-ì§€ì†ë˜ì–´ì•¼ 하는 변경 ì‚¬í•­ì„ ì»¤ë°‹í•˜ë ¤ë©´ 보통 ì´ê³³ì—서 í•´ì•„ 합니다(사용ìžê°€
+ <dd>ì‹œìŠ¤í…œì´ ì´ ë©”ì„œë“œë¥¼ 호출하는 ê²ƒì€ ì‚¬ìš©ìžê°€ 프래그먼트를 떠난다는
+첫 번째 신호입니다(다만 ì´ê²ƒì´ í•­ìƒ í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ 소멸 중ì´ë¼ëŠ” ëœ»ì€ ì•„ë‹™ë‹ˆë‹¤). 현재 ì‚¬ìš©ìž ì„¸ì…˜ì„ ë„˜ì–´ì„œ
+ì§€ì†ë˜ì–´ì•¼ 하는 변경 ì‚¬í•­ì„ ì»¤ë°‹í•˜ë ¤ë©´ 보통 ì´ê³³ì—서 í•´ì•„ 합니다(사용ìžê°€
ëŒì•„오지 ì•Šì„ ìˆ˜ 있기 때문입니다).</dd>
</dl>
-<p>ëŒ€ë¶€ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì€ ê°ê°ì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ì— ì´ì™€ ê°™ì€ ë©”ì„œë“œë¥¼ 최소한 세 개씩
-구현해야 하지만, 프래그먼트 수명 ì£¼ê¸°ì˜ ì—¬ëŸ¬ 단계를 처리하려면 사용해야 하는 다른 콜백 메서드ë„
-ë§Žì´ ìžˆìŠµë‹ˆë‹¤. 모든 수명 주기 콜백 메서드는 나중ì—
+<p>ëŒ€ë¶€ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì€ ê°ê°ì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ì— ì´ì™€ ê°™ì€ ë©”ì„œë“œë¥¼ 최소한 세 개씩
+구현해야 하지만, 프래그먼트 수명 ì£¼ê¸°ì˜ ì—¬ëŸ¬ 단계를 처리하려면 사용해야 하는 다른 콜백 메서드ë„
+ë§Žì´ ìžˆìŠµë‹ˆë‹¤. 모든 수명 주기 콜백 메서드는 나중ì—
<a href="#Lifecycle">프래그먼트 수명 주기 처리</a> 섹션ì—서 ë”ìš± ìƒì„¸ížˆ ë…¼ì˜í•  것입니다.</p>
@@ -170,45 +170,45 @@ android.app.Fragment} í´ëž˜ìФ 대신 í™•ìž¥í•˜ê³ ìž í•˜ëŠ” 하위 í´ëž˜ìФë
<dl>
<dt>{@link android.app.DialogFragment}</dt>
- <dd>ë¶€ë™ ëŒ€í™” ì°½ì„ í‘œì‹œí•©ë‹ˆë‹¤. ì´ í´ëž˜ìŠ¤ë¥¼ 사용하여 대화를 ìƒì„±í•˜ë©´
-{@link android.app.Activity} í´ëž˜ìŠ¤ì˜ ëŒ€í™” ë„우미 메서드를 사용하는 것ì˜
-ì¢‹ì€ ëŒ€ì•ˆì±…ì´ ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 프래그먼트 대화를 액티비티가 관리하는 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ë°± 스íƒì— 통합시킬 수 있어,
+ <dd>ë¶€ë™ ëŒ€í™” ì°½ì„ í‘œì‹œí•©ë‹ˆë‹¤. ì´ í´ëž˜ìŠ¤ë¥¼ 사용하여 대화를 ìƒì„±í•˜ë©´
+{@link android.app.Activity} í´ëž˜ìŠ¤ì˜ ëŒ€í™” ë„우미 메서드를 사용하는 것ì˜
+ì¢‹ì€ ëŒ€ì•ˆì±…ì´ ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 프래그먼트 대화를 액티비티가 관리하는 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ë°± 스íƒì— 통합시킬 수 있어,
사용ìžê°€ ë¬´ì‹œëœ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 반환할 수 있ë„ë¡ í•´ì£¼ê¸° 때문입니다.</dd>
<dt>{@link android.app.ListFragment}</dt>
<dd>어댑터가 관리하는 í•­ëª©ì˜ ëª©ë¡(예: {@link
-android.widget.SimpleCursorAdapter})ì„ í‘œì‹œí•˜ë©°, {@link android.app.ListActivity}와 비슷합니다.
+android.widget.SimpleCursorAdapter})ì„ í‘œì‹œí•˜ë©°, {@link android.app.ListActivity}와 비슷합니다.
ì´ê²ƒì€ ëª©ë¡ ë³´ê¸°ë¥¼ 관리하는 ë° ì“°ëŠ” 몇 가지 메서드를 제공합니다. 예를 들어 {@link
-android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()} 콜백ì„
+android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()} 콜백ì„
제공하여 í´ë¦­ ì´ë²¤íŠ¸ë¥¼ 처리하는 것 등입니다.</dd>
<dt>{@link android.preference.PreferenceFragment}</dt>
- <dd>{@link android.preference.Preference} ê°ì²´ì˜ ê³„ì¸µì„ ëª©ë¡ìœ¼ë¡œ 표시하며,
-{@link android.preference.PreferenceActivity}와 비슷합니다. ì´ê²ƒì€
+ <dd>{@link android.preference.Preference} ê°ì²´ì˜ ê³„ì¸µì„ ëª©ë¡ìœ¼ë¡œ 표시하며,
+{@link android.preference.PreferenceActivity}와 비슷합니다. ì´ê²ƒì€
애플리케ì´ì…˜ì— 대한 "설정" 액티비티를 ìƒì„±í•  때 유용합니다.</dd>
</dl>
<h3 id="UI">ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ 추가하기</h3>
-<p>프래그먼트는 ì¼ë°˜ì ìœ¼ë¡œ ì•¡í‹°ë¹„í‹°ì— ì†í•œ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì˜ ì¼ë¶€ë¶„으로 사용ë˜ë©°
+<p>프래그먼트는 ì¼ë°˜ì ìœ¼ë¡œ ì•¡í‹°ë¹„í‹°ì— ì†í•œ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì˜ ì¼ë¶€ë¶„으로 사용ë˜ë©°
ìžê¸° ë‚˜ë¦„ì˜ ë ˆì´ì•„웃으로 ì•¡í‹°ë¹„í‹°ì— ì°¸ê°€í•©ë‹ˆë‹¤.</p>
<p>í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•´ ë ˆì´ì•„ì›ƒì„ ì œê³µí•˜ë ¤ë©´ 반드시 {@link
-android.app.Fragment#onCreateView onCreateView()} 콜백 메서드를 구현해야 합니다.
-ì´ê²ƒì€ 프래그먼트가 ìžì‹ ì˜ ë ˆì´ì•„ì›ƒì„ ê·¸ë¦´ 때가 ë˜ë©´ Android ì‹œìŠ¤í…œì´ í˜¸ì¶œí•˜ëŠ” 것입니다. ì´ ë©”ì„œë“œì˜ êµ¬í˜„ì€ ë°˜ë“œì‹œ
+android.app.Fragment#onCreateView onCreateView()} 콜백 메서드를 구현해야 합니다.
+ì´ê²ƒì€ 프래그먼트가 ìžì‹ ì˜ ë ˆì´ì•„ì›ƒì„ ê·¸ë¦´ 때가 ë˜ë©´ Android ì‹œìŠ¤í…œì´ í˜¸ì¶œí•˜ëŠ” 것입니다. ì´ ë©”ì„œë“œì˜ êµ¬í˜„ì€ ë°˜ë“œì‹œ
{@link android.view.View}를 반환해야 합니다. ì´ê²ƒì€ 프래그먼트 ë ˆì´ì•„ì›ƒì˜ ë£¨íŠ¸ìž…ë‹ˆë‹¤.</p>
<p class="note"><strong>참고:</strong> 프래그먼트가 {@link
-android.app.ListFragment}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ì¸ ê²½ìš°, 기본 구현ì´
+android.app.ListFragment}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ì¸ ê²½ìš°, 기본 구현ì´
{@link android.app.Fragment#onCreateView onCreateView()}로부터 {@link android.widget.ListView}를 반환하므로 ì´ë¥¼ 구현하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤.</p>
<p>{@link
-android.app.Fragment#onCreateView onCreateView()}로부터 ë ˆì´ì•„ì›ƒì„ ë°˜í™˜í•˜ë ¤ë©´ ì´ë¥¼ XMLì—서 ì •ì˜ëœ <a href="{@docRoot}guide/topics/resources/layout-resource.html">ë ˆì´ì•„웃 리소스</a>로부터 팽창시키면 ë©ë‹ˆë‹¤. ì´ë¥¼ ë•기 위해
-{@link android.app.Fragment#onCreateView onCreateView()}ê°€
+android.app.Fragment#onCreateView onCreateView()}로부터 ë ˆì´ì•„ì›ƒì„ ë°˜í™˜í•˜ë ¤ë©´ ì´ë¥¼ XMLì—서 ì •ì˜ëœ <a href="{@docRoot}guide/topics/resources/layout-resource.html">ë ˆì´ì•„웃 리소스</a>로부터 팽창시키면 ë©ë‹ˆë‹¤. ì´ë¥¼ ë•기 위해
+{@link android.app.Fragment#onCreateView onCreateView()}ê°€
{@link android.view.LayoutInflater} ê°ì²´ë¥¼ 제공합니다.</p>
-<p>예를 들어 다ìŒì€ {@link android.app.Fragment}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. ì´ê²ƒì´
+<p>예를 들어 다ìŒì€ {@link android.app.Fragment}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. ì´ê²ƒì´
{@code example_fragment.xml} 파ì¼ë¡œë¶€í„° ë ˆì´ì•„ì›ƒì„ ë¡œë”©í•©ë‹ˆë‹¤.</p>
<pre>
@@ -225,49 +225,49 @@ public static class ExampleFragment extends Fragment {
<div class="sidebox-wrapper">
<div class="sidebox">
<h3>ë ˆì´ì•„웃 ìƒì„±</h3>
- <p>ìœ„ì˜ ìƒ˜í”Œì—서 {@code R.layout.example_fragment}는
-애플리케ì´ì…˜ ë¦¬ì†ŒìŠ¤ì— ì €ìž¥ëœ {@code example_fragment.xml}ì´ë¼ëŠ” ë ˆì´ì•„웃 ë¦¬ì†ŒìŠ¤ì— ëŒ€í•œ 참조입니다. ë ˆì´ì•„웃ì„
+ <p>ìœ„ì˜ ìƒ˜í”Œì—서 {@code R.layout.example_fragment}는
+애플리케ì´ì…˜ ë¦¬ì†ŒìŠ¤ì— ì €ìž¥ëœ {@code example_fragment.xml}ì´ë¼ëŠ” ë ˆì´ì•„웃 ë¦¬ì†ŒìŠ¤ì— ëŒ€í•œ 참조입니다. ë ˆì´ì•„웃ì„
XML로 ìƒì„±í•˜ëŠ” ë°©ë²•ì— ëŒ€í•œ 정보는 <a href="{@docRoot}guide/topics/ui/index.html">ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ</a>
문서를 참조하십시오.</p>
</div>
</div>
<p>{@link android.app.Fragment#onCreateView
-onCreateView()}로 ì „ë‹¬ëœ {@code container} 매개변수가 ìƒìœ„ {@link android.view.ViewGroup}ì´ë©°(ì•¡í‹°ë¹„í‹°ì˜ ë ˆì´ì•„웃으로부터),
+onCreateView()}로 ì „ë‹¬ëœ {@code container} 매개변수가 ìƒìœ„ {@link android.view.ViewGroup}ì´ë©°(ì•¡í‹°ë¹„í‹°ì˜ ë ˆì´ì•„웃으로부터),
ì´ ì•ˆì— í”„ëž˜ê·¸ë¨¼íŠ¸ ë ˆì´ì•„ì›ƒì´ ì‚½ìž…ë©ë‹ˆë‹¤.
- {@code savedInstanceState} 매개변수는 ì¼ì¢…ì˜ {@link android.os.Bundle}로,
-ì´ê²ƒì€ 프래그먼트가 재개ë˜ëŠ” ì¤‘ì¸ ê²½ìš° í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ì´ì „ ì¸ìŠ¤í„´ìŠ¤ì— ëŒ€í•œ ë°ì´í„°ë¥¼
-제공합니다(ìƒíƒœë¥¼ ë³µì›í•˜ëŠ” ê²ƒì€ <a href="#Lifecycle">프래그먼트 수명 주기
+ {@code savedInstanceState} 매개변수는 ì¼ì¢…ì˜ {@link android.os.Bundle}로,
+ì´ê²ƒì€ 프래그먼트가 재개ë˜ëŠ” ì¤‘ì¸ ê²½ìš° í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ì´ì „ ì¸ìŠ¤í„´ìŠ¤ì— ëŒ€í•œ ë°ì´í„°ë¥¼
+제공합니다(ìƒíƒœë¥¼ ë³µì›í•˜ëŠ” ê²ƒì€ <a href="#Lifecycle">프래그먼트 수명 주기
처리</a>ì—서 좀 ë” ë…¼ì˜í•©ë‹ˆë‹¤).</p>
-<p>{@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()} 메서드는
+<p>{@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()} 메서드는
다ìŒê³¼ ê°™ì€ ì„¸ ê°œì˜ ì¸ìˆ˜ë¥¼ 취합니다.</p>
<ul>
<li>íŒ½ì°½ì‹œí‚¤ê³ ìž í•˜ëŠ” ë ˆì´ì•„ì›ƒì˜ ë¦¬ì†ŒìŠ¤ ID.</li>
<li>íŒ½ì°½ëœ ë ˆì´ì•„ì›ƒì˜ ìƒìœ„ê°€ ë  {@link android.view.ViewGroup}. {@code
-container}를 전달해야 ì‹œìŠ¤í…œì´ ë ˆì´ì•„웃 매개변수를 íŒ½ì°½ëœ ë ˆì´ì•„ì›ƒì˜ ë£¨íŠ¸ ë³´ê¸°ì— ì‹¤í–‰ ì¤‘ì¸ ìƒìœ„ 보기ì—서 지정한 것과 ê°™ì´
+container}를 전달해야 ì‹œìŠ¤í…œì´ ë ˆì´ì•„웃 매개변수를 íŒ½ì°½ëœ ë ˆì´ì•„ì›ƒì˜ ë£¨íŠ¸ ë³´ê¸°ì— ì‹¤í–‰ ì¤‘ì¸ ìƒìœ„ 보기ì—서 지정한 것과 ê°™ì´
ì ìš©í•  수 있으므로 ì´ëŠ” 중요한 부분입니다.</li>
<li>íŒ½ì°½ëœ ë ˆì´ì•„ì›ƒì´ íŒ½ì°½ ì¤‘ì— {@link
-android.view.ViewGroup}(ë‘ ë²ˆì§¸ 매개변수)ì— ì²¨ë¶€ë˜ì–´ì•¼ 하는지를 나타내는 부울 ê°’ (ì´ ê²½ìš°,
+android.view.ViewGroup}(ë‘ ë²ˆì§¸ 매개변수)ì— ì²¨ë¶€ë˜ì–´ì•¼ 하는지를 나타내는 부울 ê°’ (ì´ ê²½ìš°,
ì´ê²ƒì€ 거짓입니다. ì‹œìŠ¤í…œì´ ì´ë¯¸ íŒ½ì°½ëœ ë ˆì´ì•„ì›ƒì„ {@code
container} ì•ˆì— ì‚½ìž…í•˜ê³  있기 때문입니다. ì°¸ì„ ì „ë‹¬í•˜ë©´ 최종 ë ˆì´ì•„ì›ƒì— ì¤‘ë³µëœ ë³´ê¸° ê·¸ë£¹ì„ ìƒì„±í•˜ê²Œ ë©ë‹ˆë‹¤).</li>
</ul>
-<p>ì´ì œ ë ˆì´ì•„ì›ƒì„ ì œê³µí•˜ëŠ” 프래그먼트 ìƒì„±í•˜ëŠ” ë²•ì„ ì•Œê²Œ ë˜ì…¨ìŠµë‹ˆë‹¤. 다ìŒì€ 프래그먼트를
+<p>ì´ì œ ë ˆì´ì•„ì›ƒì„ ì œê³µí•˜ëŠ” 프래그먼트 ìƒì„±í•˜ëŠ” ë²•ì„ ì•Œê²Œ ë˜ì…¨ìŠµë‹ˆë‹¤. 다ìŒì€ 프래그먼트를
ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•´ì•¼ 합니다.</p>
<h3 id="Adding">ì•¡í‹°ë¹„í‹°ì— í”„ëž˜ê·¸ë¨¼íŠ¸ 추가</h3>
-<p>프래그먼트는 보통 UIì˜ ì¼ë¶€ë¶„으로 호스트 ì•¡í‹°ë¹„í‹°ì— ì°¸ê°€í•©ë‹ˆë‹¤. ì´ëŠ” 해당 액티비티ì˜
-ì „ë°˜ì ì¸ 보기 ê³„ì¸µì˜ ì¼ë¶€ë¶„으로 í¬í•¨ë˜ê²Œ ë©ë‹ˆë‹¤. 프래그먼트를 액티비티 ë ˆì´ì•„ì›ƒì— ì¶”ê°€í•˜ëŠ” ë°ì—는 ë‘ ê°€ì§€ 방법ì´
+<p>프래그먼트는 보통 UIì˜ ì¼ë¶€ë¶„으로 호스트 ì•¡í‹°ë¹„í‹°ì— ì°¸ê°€í•©ë‹ˆë‹¤. ì´ëŠ” 해당 액티비티ì˜
+ì „ë°˜ì ì¸ 보기 ê³„ì¸µì˜ ì¼ë¶€ë¶„으로 í¬í•¨ë˜ê²Œ ë©ë‹ˆë‹¤. 프래그먼트를 액티비티 ë ˆì´ì•„ì›ƒì— ì¶”ê°€í•˜ëŠ” ë°ì—는 ë‘ ê°€ì§€ 방법ì´
있습니다.</p>
<ul>
<li><b>프래그먼트를 ì•¡í‹°ë¹„í‹°ì˜ ë ˆì´ì•„웃 íŒŒì¼ ì•ˆì—서 선언합니다.</b>
-<p>ì´ ê²½ìš°, í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•œ ë ˆì´ì•„웃 ì†ì„±ì„ 마치
-ë³´ê¸°ì¸ ê²ƒì²˜ëŸ¼ 나타낼 수 있습니다. 예를 들어 다ìŒì€ 프래그먼트가 ë‘ ê°œ 있는
+<p>ì´ ê²½ìš°, í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•œ ë ˆì´ì•„웃 ì†ì„±ì„ 마치
+ë³´ê¸°ì¸ ê²ƒì²˜ëŸ¼ 나타낼 수 있습니다. 예를 들어 다ìŒì€ 프래그먼트가 ë‘ ê°œ 있는
한 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ë ˆì´ì•„웃 파ì¼ì„ 나타낸 것입니다.</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
@@ -290,31 +290,31 @@ container} ì•ˆì— ì‚½ìž…í•˜ê³  있기 때문입니다. ì°¸ì„ ì „ë‹¬í•˜ë©´ 최ì¢
<p>{@code &lt;fragment&gt;} ì•ˆì˜ {@code android:name} ì†ì„±ì´ ë ˆì´ì•„웃 안ì—서 ì¸ìŠ¤í„´íŠ¸í™”í•  {@link
android.app.Fragment} í´ëž˜ìŠ¤ë¥¼ 나타냅니다.</p>
-<p>ì‹œìŠ¤í…œì€ ì´ ì•¡í‹°ë¹„í‹° ë ˆì´ì•„ì›ƒì„ ìƒì„±í•  때 ë ˆì´ì•„웃ì—서 ì§€ì •ëœ ê° í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•˜ë©° ê°ê°ì— 대해
-{@link android.app.Fragment#onCreateView onCreateView()} 메서드를
-호출하여 ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ë ˆì´ì•„ì›ƒì„ ê²€ìƒ‰í•©ë‹ˆë‹¤. ì‹œìŠ¤í…œì€ í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ 반환한 {@link android.view.View}를
+<p>ì‹œìŠ¤í…œì€ ì´ ì•¡í‹°ë¹„í‹° ë ˆì´ì•„ì›ƒì„ ìƒì„±í•  때 ë ˆì´ì•„웃ì—서 ì§€ì •ëœ ê° í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•˜ë©° ê°ê°ì— 대해
+{@link android.app.Fragment#onCreateView onCreateView()} 메서드를
+호출하여 ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ë ˆì´ì•„ì›ƒì„ ê²€ìƒ‰í•©ë‹ˆë‹¤. ì‹œìŠ¤í…œì€ í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ 반환한 {@link android.view.View}를
{@code &lt;fragment&gt;} 요소 ìžë¦¬ì— 곧바로 삽입합니다.</p>
<div class="note">
- <p><strong>참고:</strong> ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì—는 액티비티가 재시작ë˜ëŠ” 경우
-프래그먼트를 복구하기 위해 ì‹œìŠ¤í…œì´ ì‚¬ìš©í•  수 있는 고유한 ì‹ë³„ìžê°€ 필요합니다(그리고, 개발ìžëŠ” ì´ê²ƒì„ 사용하여 프래그먼트를 캡처해
-ì´ë¥¼ 제거하는 등 여러 가지 íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•  수 있습니다). í”„ëž˜ê·¸ë¨¼íŠ¸ì— ID를 제공하는 ë°ì—는
+ <p><strong>참고:</strong> ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì—는 액티비티가 재시작ë˜ëŠ” 경우
+프래그먼트를 복구하기 위해 ì‹œìŠ¤í…œì´ ì‚¬ìš©í•  수 있는 고유한 ì‹ë³„ìžê°€ 필요합니다(그리고, 개발ìžëŠ” ì´ê²ƒì„ 사용하여 프래그먼트를 캡처해
+ì´ë¥¼ 제거하는 등 여러 가지 íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•  수 있습니다). í”„ëž˜ê·¸ë¨¼íŠ¸ì— ID를 제공하는 ë°ì—는
다ìŒê³¼ ê°™ì€ ì„¸ 가지 ë°©ë²•ì´ ìžˆìŠµë‹ˆë‹¤.</p>
<ul>
<li>고유한 ID와 함께 {@code android:id} ì†ì„±ì„ 제공합니다.</li>
<li>고유한 문ìžì—´ê³¼ 함께 {@code android:tag} ì†ì„±ì„ 제공합니다.</li>
- <li>ìœ„ì˜ ë‘ ê°€ì§€ 중 ì–´ëŠ ê²ƒë„ ì œê³µí•˜ì§€ 않으면, ì‹œìŠ¤í…œì€ ì»¨í…Œì´ë„ˆ ë³´ê¸°ì˜ ID를
+ <li>ìœ„ì˜ ë‘ ê°€ì§€ 중 ì–´ëŠ ê²ƒë„ ì œê³µí•˜ì§€ 않으면, ì‹œìŠ¤í…œì€ ì»¨í…Œì´ë„ˆ ë³´ê¸°ì˜ ID를
사용합니다.</li>
</ul>
</div>
</li>
<li><b>ë˜ëŠ”, í”„ë¡œê·¸ëž˜ë° ë°©ì‹ìœ¼ë¡œ 프래그먼트를 ê¸°ì¡´ì˜ {@link android.view.ViewGroup}ì— ì¶”ê°€í•©ë‹ˆë‹¤.</b>
-<p>액티비티가 실행 ì¤‘ì¸ ë™ì•ˆì—는 언제든 액티비티 ë ˆì´ì•„ì›ƒì— í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 추가할 수 있습니다. 그저 프래그먼트를 배치할
+<p>액티비티가 실행 ì¤‘ì¸ ë™ì•ˆì—는 언제든 액티비티 ë ˆì´ì•„ì›ƒì— í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 추가할 수 있습니다. 그저 프래그먼트를 배치할
{@link
android.view.ViewGroup}를 지정하기만 하면 ë©ë‹ˆë‹¤.</p>
- <p>액티비티 ë‚´ì—서 프래그먼트 íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•˜ë ¤ë©´(프래그먼트 추가, 제거 ë˜ëŠ”
-êµì²´ 등), {@link android.app.FragmentTransaction}ì—서 가져온 API를 사용해야 합니다.
+ <p>액티비티 ë‚´ì—서 프래그먼트 íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•˜ë ¤ë©´(프래그먼트 추가, 제거 ë˜ëŠ”
+êµì²´ 등), {@link android.app.FragmentTransaction}ì—서 가져온 API를 사용해야 합니다.
{@link android.app.FragmentTransaction}ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ {@link android.app.Activity}ì—서 가져오는 ë°©ë²•ì€ ë‹¤ìŒê³¼ 같습니다.</p>
<pre>
@@ -323,7 +323,7 @@ FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.Fra
</pre>
<p>그런 ë‹¤ìŒ {@link
-android.app.FragmentTransaction#add(int,Fragment) add()} 메서드를 사용하여 프래그먼트를 추가하고, 추가할 프래그먼트와 ì´ë¥¼ 삽입할
+android.app.FragmentTransaction#add(int,Fragment) add()} 메서드를 사용하여 프래그먼트를 추가하고, 추가할 프래그먼트와 ì´ë¥¼ 삽입할
보기를 지정하면 ë©ë‹ˆë‹¤. 예:</p>
<pre>
@@ -332,11 +332,11 @@ fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
</pre>
- <p>{@link android.app.FragmentTransaction#add(int,Fragment) add()}ì—
-전달ë˜ëŠ” 첫 ì¸ìˆ˜ê°€ {@link android.view.ViewGroup}입니다.
+ <p>{@link android.app.FragmentTransaction#add(int,Fragment) add()}ì—
+전달ë˜ëŠ” 첫 ì¸ìˆ˜ê°€ {@link android.view.ViewGroup}입니다.
ì—¬ê¸°ì— í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ 리소스 IDê°€ 지정한 바와 ê°™ì´ ë°°ì¹˜ë˜ì–´ì•¼ 하며, ë‘ ë²ˆì§¸ 매개변수는 추가할 프래그먼트입니다.</p>
<p>
-{@link android.app.FragmentTransaction}ì„ ë³€ê²½í•˜ê³  나면, 반드시
+{@link android.app.FragmentTransaction}ì„ ë³€ê²½í•˜ê³  나면, 반드시
{@link android.app.FragmentTransaction#commit}ì„ í˜¸ì¶œí•´ì•¼ 변경 ë‚´ìš©ì´ ì ìš©ë©ë‹ˆë‹¤.</p>
</li>
</ul>
@@ -344,41 +344,41 @@ fragmentTransaction.commit();
<h4 id="AddingWithoutUI">UI ì—†ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ 추가</h4>
-<p>ìœ„ì˜ ì˜ˆì‹œì—서는 UI를 제공하기 위해 프래그먼트를 ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•˜ëŠ” ë°©ë²•ì„ ë³´ì—¬ë“œë ¸ìŠµë‹ˆë‹¤. 하지만
-추가로 UI를 제시하지 않고 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ë°°ê²½ ë™ìž‘ì„ ì œê³µí•˜ëŠ” ë°ì—ë„ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 사용할 수
+<p>ìœ„ì˜ ì˜ˆì‹œì—서는 UI를 제공하기 위해 프래그먼트를 ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•˜ëŠ” ë°©ë²•ì„ ë³´ì—¬ë“œë ¸ìŠµë‹ˆë‹¤. 하지만
+추가로 UI를 제시하지 않고 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ë°°ê²½ ë™ìž‘ì„ ì œê³µí•˜ëŠ” ë°ì—ë„ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 사용할 수
있습니다.</p>
<p>UI ì—†ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 추가하려면 액티비티로부터 가져온 프래그먼트를 {@link
-android.app.FragmentTransaction#add(Fragment,String)}ì„ ì‚¬ìš©í•˜ì—¬ 추가합니다(ì´ë•Œ, í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•´
-보기 ID보다는 고유한 문ìžì—´ "태그"를 제공합니다). ì´ë ‡ê²Œ 하면 프래그먼트가 추가ë˜ì§€ë§Œ,
+android.app.FragmentTransaction#add(Fragment,String)}ì„ ì‚¬ìš©í•˜ì—¬ 추가합니다(ì´ë•Œ, í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•´
+보기 ID보다는 고유한 문ìžì—´ "태그"를 제공합니다). ì´ë ‡ê²Œ 하면 프래그먼트가 추가ë˜ì§€ë§Œ,
ì´ê²ƒì€ 액티비티 ë ˆì´ì•„웃 ì•ˆì— ìžˆëŠ” 보기와 ì—°ê´€ë˜ì–´ 있지 않기 ë•Œë¬¸ì— {@link
android.app.Fragment#onCreateView onCreateView()}ë¡œì˜ í˜¸ì¶œì€ ë°›ì§€ 않습니다. ë”°ë¼ì„œ ê·¸ 메서드는 구현하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤.</p>
-<p>í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•´ 문ìžì—´ 태그를 제공하는 ê²ƒì€ ì—„ë°€ížˆ ë§í•´ 비 UI 프래그먼트ì—ë§Œ 해당ë˜ëŠ” ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. UIê°€ 있는
-프래그먼트ì—ë„ ë¬¸ìžì—´ 태그를 제공할 수 있습니다. 하지만 프래그먼트ì—
-UIê°€ 없는 경우ë¼ë©´ ì´ë¥¼ ì‹ë³„í•  ë°©ë²•ì€ ë¬¸ìžì—´ 태그ë¿ìž…니다. 액티비티ì—서 나중ì—
+<p>í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•´ 문ìžì—´ 태그를 제공하는 ê²ƒì€ ì—„ë°€ížˆ ë§í•´ 비 UI 프래그먼트ì—ë§Œ 해당ë˜ëŠ” ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. UIê°€ 있는
+프래그먼트ì—ë„ ë¬¸ìžì—´ 태그를 제공할 수 있습니다. 하지만 프래그먼트ì—
+UIê°€ 없는 경우ë¼ë©´ ì´ë¥¼ ì‹ë³„í•  ë°©ë²•ì€ ë¬¸ìžì—´ 태그ë¿ìž…니다. 액티비티ì—서 나중ì—
프래그먼트를 ê°€ì ¸ì˜¤ê³ ìž í•˜ëŠ” 경우, {@link android.app.FragmentManager#findFragmentByTag
findFragmentByTag()}를 사용해야 합니다.</p>
<p>예를 들어 ì–´ë–¤ 액티비티ì—서 UI ì—†ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ ë°°ê²½ 작업ìžë¡œ 사용한다고 가정해봅시다. ì´ê²ƒì˜ 예로 {@code
-FragmentRetainInstance.java} ìƒ˜í”Œì„ ë“¤ 수 있으며
-ì´ëŠ” SDK ìƒ˜í”Œì— í¬í•¨ë˜ì–´ 있고(Android SDK Manager를 통해 ì´ìš© 가능), 시스템ì—는
+FragmentRetainInstance.java} ìƒ˜í”Œì„ ë“¤ 수 있으며
+ì´ëŠ” SDK ìƒ˜í”Œì— í¬í•¨ë˜ì–´ 있고(Android SDK Manager를 통해 ì´ìš© 가능), 시스템ì—는
<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>로 ì°¾ì„ ìˆ˜ 있습니다.</p>
<h2 id="Managing">프래그먼트 관리</h2>
-<p>액티비티 ë‚´ì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 관리하려면 {@link android.app.FragmentManager}를 사용해야 합니다. ì´ê²ƒì„
+<p>액티비티 ë‚´ì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 관리하려면 {@link android.app.FragmentManager}를 사용해야 합니다. ì´ê²ƒì„
가져오려면 액티비티ì—서 {@link android.app.Activity#getFragmentManager()}를 호출하십시오.</p>
<p>{@link android.app.FragmentManager}를 가지고 í•  수 있는 여러 가지 ì¼ ì¤‘ì— ì˜ˆë¥¼ 들면 다ìŒê³¼ 같습니다.</p>
<ul>
<li>액티비티 ë‚´ì— ì¡´ìž¬í•˜ëŠ” 프래그먼트를 {@link
-android.app.FragmentManager#findFragmentById findFragmentById()}로 가져오기(액티비티 ë ˆì´ì•„웃 ë‚´ì—서
+android.app.FragmentManager#findFragmentById findFragmentById()}로 가져오기(액티비티 ë ˆì´ì•„웃 ë‚´ì—서
UI를 제공하는 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ê²½ìš°) ë˜ëŠ” {@link android.app.FragmentManager#findFragmentByTag
-findFragmentByTag()}로 가져오기(UI를 제공하거나 하지 않는 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ê²½ìš°).</li>
+findFragmentByTag()}로 가져오기(UI를 제공하거나 하지 않는 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ê²½ìš°).</li>
<li>ë°± 스íƒì—서 프래그먼트를 {@link
android.app.FragmentManager#popBackStack()}ì„ ì‚¬ìš©í•˜ì—¬ 튀어나오게 하기(사용ìžê°€ 내린 <em>뒤로</em> ëª…ë ¹ì„ ì‹œë®¬ë ˆì´íŠ¸í•¨).</li>
<li>ë°± 스íƒì— 변경 ë‚´ìš©ì´ ìžˆëŠ”ì§€ 알아보기 위해 {@link
@@ -388,18 +388,18 @@ android.app.FragmentManager#addOnBackStackChangedListener addOnBackStackChangedL
<p>ì´ì™€ ê°™ì€ ë©”ì„œë“œì™€ ê·¸ 외 다른 ë©”ì„œë“œì— ëŒ€í•œ ìžì„¸í•œ 정보는 {@link
android.app.FragmentManager} í´ëž˜ìФ 관련 문서를 참조하십시오.</p>
-<p>ì´ì „ 섹션ì—서 설명한 바와 ê°™ì´ {@link android.app.FragmentManager}를
+<p>ì´ì „ 섹션ì—서 설명한 바와 ê°™ì´ {@link android.app.FragmentManager}를
ì‚¬ìš©í•´ì„œë„ {@link android.app.FragmentTransaction}
ì„ ì—´ 수 있습니다. ì´ë ‡ê²Œ 하면 프래그먼트 추가 ë° ì œê±° 등 íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•  수 있게 í•´ì¤ë‹ˆë‹¤.</p>
<h2 id="Transactions">프래그먼트 트랜잭션 수행</h2>
-<p>액티비티ì—서 프래그먼트를 사용하는 경우 특히 유용한 ì ì€ ì‚¬ìš©ìž ìƒí˜¸ ìž‘ìš©ì— ì‘답하여 추가,
-제거, êµì²´ ë° ë‹¤ë¥¸ ìž‘ì—…ì„ ìˆ˜í–‰í•  수 있다는 것입니다. ì•¡í‹°ë¹„í‹°ì— ì ìš©í•œ
+<p>액티비티ì—서 프래그먼트를 사용하는 경우 특히 유용한 ì ì€ ì‚¬ìš©ìž ìƒí˜¸ ìž‘ìš©ì— ì‘답하여 추가,
+제거, êµì²´ ë° ë‹¤ë¥¸ ìž‘ì—…ì„ ìˆ˜í–‰í•  수 있다는 것입니다. ì•¡í‹°ë¹„í‹°ì— ì ìš©í•œ
변경 ë‚´ìš©ì˜ ì§‘í•©ì„ í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ì´ë¼ 칭합니다. ì´ê²ƒì„ 수행하려면 {@link
-android.app.FragmentTransaction} ë‚´ì˜ API를 사용하면 ë©ë‹ˆë‹¤. 해당 액티비티가 관리하는 ë°± 스íƒì— 행해진 ê° íŠ¸ëžœìž­ì…˜ì„
-저장할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 사용ìžê°€ 프래그먼트 변경 ë‚´ì—­ì„ ê±°ì³ ë’¤ë¡œ íƒìƒ‰í•  수 있습니다(액티비티를 통과해
+android.app.FragmentTransaction} ë‚´ì˜ API를 사용하면 ë©ë‹ˆë‹¤. 해당 액티비티가 관리하는 ë°± 스íƒì— 행해진 ê° íŠ¸ëžœìž­ì…˜ì„
+저장할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 사용ìžê°€ 프래그먼트 변경 ë‚´ì—­ì„ ê±°ì³ ë’¤ë¡œ íƒìƒ‰í•  수 있습니다(액티비티를 통과해
뒤로 íƒìƒ‰í•˜ëŠ” 것과 비슷합니다).</p>
<p>{@link android.app.FragmentTransaction}ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ {@link
@@ -410,20 +410,20 @@ FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager
FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
</pre>
-<p>ê° íŠ¸ëžœìž­ì…˜ì€ ë™ì‹œì— ìˆ˜í–‰í•˜ê³ ìž í•˜ëŠ” 여러 ë³€ê²½ì„ ì§‘í•©ì ìœ¼ë¡œ ì¼ì»«ëŠ” ë§ìž…니다. 주어진
+<p>ê° íŠ¸ëžœìž­ì…˜ì€ ë™ì‹œì— ìˆ˜í–‰í•˜ê³ ìž í•˜ëŠ” 여러 ë³€ê²½ì„ ì§‘í•©ì ìœ¼ë¡œ ì¼ì»«ëŠ” ë§ìž…니다. 주어진
íŠ¸ëžœìž­ì…˜ì— ëŒ€í•´ ìˆ˜í–‰í•˜ê³ ìž í•˜ëŠ” 모든 변경 ì‚¬í•­ì„ ì„¤ì •í•˜ë ¤ë©´ {@link
android.app.FragmentTransaction#add add()}, {@link android.app.FragmentTransaction#remove remove()},
-ë° {@link android.app.FragmentTransaction#replace replace()}와 ê°™ì€ ë©”ì„œë“œë¥¼ 사용하면 ë©ë‹ˆë‹¤. 그런 다ìŒ,
+ë° {@link android.app.FragmentTransaction#replace replace()}와 ê°™ì€ ë©”ì„œë“œë¥¼ 사용하면 ë©ë‹ˆë‹¤. 그런 다ìŒ,
íŠ¸ëžœìž­ì…˜ì„ ì•¡í‹°ë¹„í‹°ì— ì ìš©í•˜ë ¤ë©´ 반드시 {@link android.app.FragmentTransaction#commit()}ì„ í˜¸ì¶œí•´ì•¼ 합니다.</p>
</dl>
<p>하지만 {@link
android.app.FragmentTransaction#commit()}ì„ í˜¸ì¶œí•˜ê¸° ì „ì— ë¨¼ì € 호출해야 í•  ê²ƒì´ ìžˆìŠµë‹ˆë‹¤. 바로 {@link
-android.app.FragmentTransaction#addToBackStack addToBackStack()}입니다.
-ì´ë ‡ê²Œ 해야 íŠ¸ëžœìž­ì…˜ì„ í”„ëž˜ê·¸ë¨¼íŠ¸ íŠ¸ëžœìž­ì…˜ì˜ ë°± 스íƒì— 추가할 수 있습니다. ì´ ë°± 스íƒì„ 액티비티가 관리하며,
+android.app.FragmentTransaction#addToBackStack addToBackStack()}입니다.
+ì´ë ‡ê²Œ 해야 íŠ¸ëžœìž­ì…˜ì„ í”„ëž˜ê·¸ë¨¼íŠ¸ íŠ¸ëžœìž­ì…˜ì˜ ë°± 스íƒì— 추가할 수 있습니다. ì´ ë°± 스íƒì„ 액티비티가 관리하며,
ì´ë¥¼ 통해 사용ìžê°€ ì´ì „ 프래그먼트 ìƒíƒœë¡œ ë˜ëŒì•„ê°ˆ 수 있습니다. ì´ë•Œ <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ ë©ë‹ˆë‹¤.</p>
-<p>예를 들어 다ìŒì€ 한 프래그먼트를 다른 것으로 êµì²´í•˜ê³  ì´ì „ ìƒíƒœë¥¼ ë°± 스íƒì— 보존하는 법ì„
+<p>예를 들어 다ìŒì€ 한 프래그먼트를 다른 것으로 êµì²´í•˜ê³  ì´ì „ ìƒíƒœë¥¼ ë°± 스íƒì— 보존하는 법ì„
나타낸 것입니다.</p>
<pre>
@@ -440,49 +440,49 @@ transaction.addToBackStack(null);
transaction.commit();
</pre>
-<p>ì´ ì˜ˆì‹œì—서 {@code newFragment}ê°€ 현재 ë ˆì´ì•„웃 컨테ì´ë„ˆì— 있는
+<p>ì´ ì˜ˆì‹œì—서 {@code newFragment}ê°€ 현재 ë ˆì´ì•„웃 컨테ì´ë„ˆì— 있는
프래그먼트(있는 경우)를 êµì²´í•©ë‹ˆë‹¤. ì´ëŠ” {@code R.id.fragment_container} ID로 ì‹ë³„í•  수 있습니다. {@link
-android.app.FragmentTransaction#addToBackStack addToBackStack()}를 호출하면 êµì²´ 트랜잭션ì´
-ë°± 스íƒì— 저장ë˜ê³ , ë”°ë¼ì„œ 사용ìžê°€ íŠ¸ëžœìž­ì…˜ì„ ê±°ê¾¸ë¡œ 수행하여
+android.app.FragmentTransaction#addToBackStack addToBackStack()}를 호출하면 êµì²´ 트랜잭션ì´
+ë°± 스íƒì— 저장ë˜ê³ , ë”°ë¼ì„œ 사용ìžê°€ íŠ¸ëžœìž­ì…˜ì„ ê±°ê¾¸ë¡œ 수행하여
ì´ì „ 프래그먼트를 ë„로 가져올 수 있습니다. <em>뒤로</em> ë²„íŠ¼ì„ ì‚¬ìš©í•˜ë©´ ë©ë‹ˆë‹¤.</p>
<p>íŠ¸ëžœìž­ì…˜ì— ì—¬ëŸ¬ ê°œì˜ ë³€ê²½ì„ ì¶”ê°€í•˜ê³ (예를 들어 ë˜ ë‹¤ë¥¸ {@link
android.app.FragmentTransaction#add add()} ë˜ëŠ” {@link android.app.FragmentTransaction#remove
remove()}) {@link
-android.app.FragmentTransaction#addToBackStack addToBackStack()}ì„ í˜¸ì¶œí•˜ë©´, {@link android.app.FragmentTransaction#commit commit()}ì„ í˜¸ì¶œí•˜ê¸° ì „ì— ì ìš©ëœ 모든 변경 ë‚´ìš©ì´
-ë°± 스íƒì— í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ìœ¼ë¡œ 추가ë˜ë©°, <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´
+android.app.FragmentTransaction#addToBackStack addToBackStack()}ì„ í˜¸ì¶œí•˜ë©´, {@link android.app.FragmentTransaction#commit commit()}ì„ í˜¸ì¶œí•˜ê¸° ì „ì— ì ìš©ëœ 모든 변경 ë‚´ìš©ì´
+ë°± 스íƒì— í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ìœ¼ë¡œ 추가ë˜ë©°, <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´
ëª¨ë‘ í•œêº¼ë²ˆì— ì—­í–‰í•˜ê²Œ ë©ë‹ˆë‹¤.</p>
-<p>{@link android.app.FragmentTransaction}ì— ë³€ê²½ ë‚´ìš©ì„ ì¶”ê°€í•˜ëŠ” 순서는 중요하지 않습니다.
+<p>{@link android.app.FragmentTransaction}ì— ë³€ê²½ ë‚´ìš©ì„ ì¶”ê°€í•˜ëŠ” 순서는 중요하지 않습니다.
다만 다ìŒê³¼ ê°™ì€ ì˜ˆì™¸ê°€ 있습니다.</p>
<ul>
<li>{@link android.app.FragmentTransaction#commit()}ì„ ë§ˆì§€ë§‰ìœ¼ë¡œ 호출해야만 합니다.</li>
- <li>ê°™ì€ ì»¨í…Œì´ë„ˆì— 여러 ê°œì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 추가하는 경우, ì´ë¥¼ 추가하는 순서가 ì´ë“¤ì´
+ <li>ê°™ì€ ì»¨í…Œì´ë„ˆì— 여러 ê°œì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 추가하는 경우, ì´ë¥¼ 추가하는 순서가 ì´ë“¤ì´
보기 ê³„ì¸µì— ë‚˜íƒ€ë‚˜ëŠ” 순서를 ê²°ì • 짓습니다.</li>
</ul>
<p>프래그먼트를 제거하는 íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•˜ë©´ì„œ {@link android.app.FragmentTransaction#addToBackStack(String)
-addToBackStack()}ì„ í˜¸ì¶œí•˜ì§€ 않는 경우,
-해당 프래그먼트는 íŠ¸ëžœìž­ì…˜ì´ ì ìš©ë˜ë©´ 소멸ë˜ê³  사용ìžê°€ ì´ë¥¼ ë˜ì§šì–´ íƒìƒ‰í•  수 없게 ë©ë‹ˆë‹¤. 반면ì—
-프래그먼트를 제거하면서 {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()}ì„ í˜¸ì¶œí•˜ë©´,
-해당 프래그먼트는 <em>중단</em>ë˜ê³  사용ìžê°€ 뒤로 íƒìƒ‰í•˜ë©´
+addToBackStack()}ì„ í˜¸ì¶œí•˜ì§€ 않는 경우,
+해당 프래그먼트는 íŠ¸ëžœìž­ì…˜ì´ ì ìš©ë˜ë©´ 소멸ë˜ê³  사용ìžê°€ ì´ë¥¼ ë˜ì§šì–´ íƒìƒ‰í•  수 없게 ë©ë‹ˆë‹¤. 반면ì—
+프래그먼트를 제거하면서 {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()}ì„ í˜¸ì¶œí•˜ë©´,
+해당 프래그먼트는 <em>중단</em>ë˜ê³  사용ìžê°€ 뒤로 íƒìƒ‰í•˜ë©´
재개ë©ë‹ˆë‹¤.</p>
-<p class="note"><strong>íŒ:</strong> ê° í”„ëž˜ê·¸ë¨¼íŠ¸ íŠ¸ëžœìž­ì…˜ì— ëŒ€í•´ 전환 애니메ì´ì…˜ì„ ì ìš©í•˜ë ¤ë©´
-커밋하기 ì „ì— {@link android.app.FragmentTransaction#setTransition setTransition()}ì„
+<p class="note"><strong>íŒ:</strong> ê° í”„ëž˜ê·¸ë¨¼íŠ¸ íŠ¸ëžœìž­ì…˜ì— ëŒ€í•´ 전환 애니메ì´ì…˜ì„ ì ìš©í•˜ë ¤ë©´
+커밋하기 ì „ì— {@link android.app.FragmentTransaction#setTransition setTransition()}ì„
호출하면 ë©ë‹ˆë‹¤.</p>
-<p>{@link android.app.FragmentTransaction#commit()}ì„ í˜¸ì¶œí•´ë„ ê·¸ 즉시 íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•˜ì§€ëŠ”
-않습니다. 그보다는, ì•¡í‹°ë¹„í‹°ì˜ UI 스레드("주요" 스레드)를 스레드가 í•  수 있는 한 빨리
+<p>{@link android.app.FragmentTransaction#commit()}ì„ í˜¸ì¶œí•´ë„ ê·¸ 즉시 íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•˜ì§€ëŠ”
+않습니다. 그보다는, ì•¡í‹°ë¹„í‹°ì˜ UI 스레드("주요" 스레드)를 스레드가 í•  수 있는 한 빨리
ì´ íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•˜ë„ë¡ ì¼ì •ì„ ì˜ˆì•½í•˜ëŠ” ê²ƒì— ê°€ê¹ìŠµë‹ˆë‹¤. 하지만 필요한 경우 UI 스레드로부터 {@link
-android.app.FragmentManager#executePendingTransactions()}를 호출하면
-{@link android.app.FragmentTransaction#commit()}ì´ ì œì¶œí•œ íŠ¸ëžœìž­ì…˜ì„ ì¦‰ì‹œ 실행할 수 있습니다. 트랜잭션ì´
+android.app.FragmentManager#executePendingTransactions()}를 호출하면
+{@link android.app.FragmentTransaction#commit()}ì´ ì œì¶œí•œ íŠ¸ëžœìž­ì…˜ì„ ì¦‰ì‹œ 실행할 수 있습니다. 트랜잭션ì´
다른 ìŠ¤ë ˆë“œì˜ ìž‘ì—…ì— ëŒ€í•œ 종ì†ì„±ì´ 아니ë¼ë©´ êµ³ì´ ì´ë ‡ê²Œ 해야만 하는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤.</p>
<p class="caution"><strong>주ì˜:</strong> íŠ¸ëžœìž­ì…˜ì„ ì ìš©í•  때 {@link
-android.app.FragmentTransaction#commit commit()}ì„ ì‚¬ìš©í•´ë„ ë˜ëŠ” ê²ƒì€ ì•¡í‹°ë¹„í‹°ê°€ <a href="{@docRoot}guide/components/activities.html#SavingActivityState">ê·¸ ìƒíƒœë¥¼
-저장</a>하기 ì „ë¿ìž…니다(사용ìžê°€ 액티비티를 ë– ë‚  때). ê·¸ ì‹œì  ì´í›„ì— ì ìš©í•˜ë ¤ê³  하면 예외가
-ë°œìƒí•©ë‹ˆë‹¤. ì´ê²ƒì€ 액티비티를 ë³µì›í•´ì•¼ 하는 경우 ì ìš© ì´í›„ì˜ ìƒíƒœê°€ ì†ì‹¤ë  수
+android.app.FragmentTransaction#commit commit()}ì„ ì‚¬ìš©í•´ë„ ë˜ëŠ” ê²ƒì€ ì•¡í‹°ë¹„í‹°ê°€ <a href="{@docRoot}guide/components/activities.html#SavingActivityState">ê·¸ ìƒíƒœë¥¼
+저장</a>하기 ì „ë¿ìž…니다(사용ìžê°€ 액티비티를 ë– ë‚  때). ê·¸ ì‹œì  ì´í›„ì— ì ìš©í•˜ë ¤ê³  하면 예외가
+ë°œìƒí•©ë‹ˆë‹¤. ì´ê²ƒì€ 액티비티를 ë³µì›í•´ì•¼ 하는 경우 ì ìš© ì´í›„ì˜ ìƒíƒœê°€ ì†ì‹¤ë  수
있기 때문입니다. ì ìš©ì´ ì†ì‹¤ë˜ì–´ë„ ê´œì°®ì€ ìƒí™©ì´ë¼ë©´, {@link
android.app.FragmentTransaction#commitAllowingStateLoss()}를 사용하십시오.</p>
@@ -491,19 +491,19 @@ android.app.FragmentTransaction#commitAllowingStateLoss()}를 사용하십시오
<h2 id="CommunicatingWithActivity">액티비티와 통신</h2>
-<p>{@link android.app.Fragment}는
-{@link android.app.Activity}로부터 ë…립ì ì¸ ê°ì²´ë¡œ 구현ë˜ì—ˆê³  여러 ê°œì˜ ì•¡í‹°ë¹„í‹° 안ì—서 사용할 수 있는 ê²ƒì´ ì‚¬ì‹¤ì´ì§€ë§Œ,
+<p>{@link android.app.Fragment}는
+{@link android.app.Activity}로부터 ë…립ì ì¸ ê°ì²´ë¡œ 구현ë˜ì—ˆê³  여러 ê°œì˜ ì•¡í‹°ë¹„í‹° 안ì—서 사용할 수 있는 ê²ƒì´ ì‚¬ì‹¤ì´ì§€ë§Œ,
í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ì£¼ì–´ì§„ ì¸ìŠ¤í„´ìŠ¤ëŠ” ê·¸ê²ƒì„ í¬í•¨í•˜ê³  있는 ì•¡í‹°ë¹„í‹°ì— ì§ì ‘ì ìœ¼ë¡œ ì—°ê²°ë˜ì–´ 있습니다.</p>
<p>구체ì ìœ¼ë¡œ ë§í•˜ë©´, ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ëŠ” {@link
-android.app.Fragment#getActivity()}를 사용하여 {@link android.app.Activity} ì¸ìŠ¤í„´ìŠ¤ì— ì•¡ì„¸ìŠ¤í•˜ì—¬
+android.app.Fragment#getActivity()}를 사용하여 {@link android.app.Activity} ì¸ìŠ¤í„´ìŠ¤ì— ì•¡ì„¸ìŠ¤í•˜ì—¬
액티비티 ë ˆì´ì•„웃ì—서 보기를 찾는 것과 ê°™ì€ ìž‘ì—…ì„ ì†ì‰½ê²Œ 수행할 수 있습니다.</p>
<pre>
View listView = {@link android.app.Fragment#getActivity()}.{@link android.app.Activity#findViewById findViewById}(R.id.list);
</pre>
-<p>ì´ì™€ 마찬가지로, ì•¡í‹°ë¹„í‹°ë„ í”„ëž˜ê·¸ë¨¼íŠ¸ ì•ˆì˜ ë©”ì„œë“œë¥¼ 호출할 수 있습니다. 그러려면 {@link android.app.FragmentManager}로부터ì˜
+<p>ì´ì™€ 마찬가지로, ì•¡í‹°ë¹„í‹°ë„ í”„ëž˜ê·¸ë¨¼íŠ¸ ì•ˆì˜ ë©”ì„œë“œë¥¼ 호출할 수 있습니다. 그러려면 {@link android.app.FragmentManager}로부터ì˜
{@link android.app.Fragment}ì— ëŒ€í•œ 참조를 가져와야 하며, ì´ë•Œ {@link
android.app.FragmentManager#findFragmentById findFragmentById()} ë˜ëŠ” {@link
android.app.FragmentManager#findFragmentByTag findFragmentByTag()}를 사용합니다. 예:</p>
@@ -515,14 +515,14 @@ ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentBy
<h3 id="EventCallbacks">ì•¡í‹°ë¹„í‹°ë¡œì˜ ì´ë²¤íЏ 콜백 ìƒì„±</h3>
-<p>ì–´ë–¤ 경우ì—는 프래그먼트로 하여금 액티비티와 ì´ë²¤íŠ¸ë¥¼ 공유하게 해야 í•  수 있습니다. ì´ë ‡ê²Œ 하기 위한
-한 가지 ì¢‹ì€ ë°©ë²•ì€ í”„ëž˜ê·¸ë¨¼íŠ¸ ë‚´ë¶€ì˜ ì½œë°± ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•œ ë‹¤ìŒ í•´ë‹¹ 호스트 액티비티가 ì´ë¥¼ 구현하ë„ë¡
-하는 것입니다. 액티비티가 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 통해 ì½œë°±ì„ ìˆ˜ì‹ í•˜ë©´, í•„ìš”ì— ë”°ë¼ ê·¸ 정보를 ë ˆì´ì•„웃 ë‚´ì˜
+<p>ì–´ë–¤ 경우ì—는 프래그먼트로 하여금 액티비티와 ì´ë²¤íŠ¸ë¥¼ 공유하게 해야 í•  수 있습니다. ì´ë ‡ê²Œ 하기 위한
+한 가지 ì¢‹ì€ ë°©ë²•ì€ í”„ëž˜ê·¸ë¨¼íŠ¸ ë‚´ë¶€ì˜ ì½œë°± ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•œ ë‹¤ìŒ í•´ë‹¹ 호스트 액티비티가 ì´ë¥¼ 구현하ë„ë¡
+하는 것입니다. 액티비티가 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 통해 ì½œë°±ì„ ìˆ˜ì‹ í•˜ë©´, í•„ìš”ì— ë”°ë¼ ê·¸ 정보를 ë ˆì´ì•„웃 ë‚´ì˜
다른 프래그먼트와 공유할 수 있습니다.</p>
-<p>예를 들어 ì–´ë–¤ 뉴스 애플리케ì´ì…˜ì—서 액티비티 í•˜ë‚˜ì— í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ë‘ ê°œ 있습니다.
- 하나는 기사 목ë¡ì„ 표시(프래그먼트 A)하고 다른 하나는 기사 하나를 표시(프래그먼트 B)하는 경우 ëª©ë¡ í•­ëª©ì´ ì„ íƒë˜ë©´
-프래그먼트 Aê°€ ì•¡í‹°ë¹„í‹°ì— ì•Œë ¤ì•¼ 프래그먼트 Bì— í•´ë‹¹ 기사를 표시하ë¼ê³  알릴 수 있습니다. ì´ ê²½ìš°,
+<p>예를 들어 ì–´ë–¤ 뉴스 애플리케ì´ì…˜ì—서 액티비티 í•˜ë‚˜ì— í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ë‘ ê°œ 있습니다.
+ 하나는 기사 목ë¡ì„ 표시(프래그먼트 A)하고 다른 하나는 기사 하나를 표시(프래그먼트 B)하는 경우 ëª©ë¡ í•­ëª©ì´ ì„ íƒë˜ë©´
+프래그먼트 Aê°€ ì•¡í‹°ë¹„í‹°ì— ì•Œë ¤ì•¼ 프래그먼트 Bì— í•´ë‹¹ 기사를 표시하ë¼ê³  알릴 수 있습니다. ì´ ê²½ìš°,
{@code OnArticleSelectedListener} ì¸í„°íŽ˜ì´ìŠ¤ëŠ” 프래그먼트 A ë‚´ë¶€ì— ì„ ì–¸ë©ë‹ˆë‹¤.</p>
<pre>
@@ -537,12 +537,12 @@ public static class FragmentA extends ListFragment {
</pre>
<p>그러면 프래그먼트를 호스팅하는 액티비티가 {@code OnArticleSelectedListener}
- ì¸í„°íŽ˜ì´ìŠ¤ë¥¼
-구현하고 {@code onArticleSelected()}를 재정ì˜í•˜ì—¬ 프래그먼트 A로부터 ì¼ì–´ë‚œ ì´ë²¤íŠ¸ë¥¼
-프래그먼트 Bì— ì•Œë¦½ë‹ˆë‹¤. 호스트 액티비티가 ì´ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하ë„ë¡
+ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼
+구현하고 {@code onArticleSelected()}를 재정ì˜í•˜ì—¬ 프래그먼트 A로부터 ì¼ì–´ë‚œ ì´ë²¤íŠ¸ë¥¼
+프래그먼트 Bì— ì•Œë¦½ë‹ˆë‹¤. 호스트 액티비티가 ì´ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하ë„ë¡
확실히 하려면 프래그먼트 Aì˜ {@link
android.app.Fragment#onAttach onAttach()} 콜백 메서드(프래그먼트를 ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•  때 ì‹œìŠ¤í…œì´ í˜¸ì¶œí•˜ëŠ” 것)ê°€ {@code OnArticleSelectedListener}ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•´ì•¼ 합니다. ì´ë•Œ {@link android.app.Fragment#onAttach
-onAttach()} 안으로 ì „ë‹¬ëœ {@link android.app.Activity}를
+onAttach()} 안으로 ì „ë‹¬ëœ {@link android.app.Activity}를
ìºìŠ¤íŒ…í•˜ëŠ” ë°©ë²•ì„ ì”니다.</p>
<pre>
@@ -562,14 +562,14 @@ public static class FragmentA extends ListFragment {
}
</pre>
-<p>액티비티가 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하지 ì•Šì€ ê²½ìš°, 프래그먼트가
-{@link java.lang.ClassCastException}ì„ ë°œìƒì‹œí‚µë‹ˆë‹¤.
-성공 시, {@code mListener} 구성ì›ì´ 액티비티ì˜
-{@code OnArticleSelectedListener} êµ¬í˜„ì— ëŒ€í•œ 참조를 보유하므로, 프래그먼트 Aê°€ 액티비티와 ì´ë²¤íŠ¸ë¥¼ 공유할 수 있습니다.
-ì´ë•Œ {@code OnArticleSelectedListener} ì¸í„°íŽ˜ì´ìŠ¤ê°€ ì •ì˜í•œ 메서드를 호출하는 ë°©ë²•ì„ ì”니다. 예를 들어 프래그먼트 Aê°€
-{@link android.app.ListFragment}ì˜ í™•ìž¥ì¸ ê²½ìš°,
+<p>액티비티가 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하지 ì•Šì€ ê²½ìš°, 프래그먼트가
+{@link java.lang.ClassCastException}ì„ ë°œìƒì‹œí‚µë‹ˆë‹¤.
+성공 시, {@code mListener} 구성ì›ì´ 액티비티ì˜
+{@code OnArticleSelectedListener} êµ¬í˜„ì— ëŒ€í•œ 참조를 보유하므로, 프래그먼트 Aê°€ 액티비티와 ì´ë²¤íŠ¸ë¥¼ 공유할 수 있습니다.
+ì´ë•Œ {@code OnArticleSelectedListener} ì¸í„°íŽ˜ì´ìŠ¤ê°€ ì •ì˜í•œ 메서드를 호출하는 ë°©ë²•ì„ ì”니다. 예를 들어 프래그먼트 Aê°€
+{@link android.app.ListFragment}ì˜ í™•ìž¥ì¸ ê²½ìš°,
사용ìžê°€ ëª©ë¡ í•­ëª©ì„ í´ë¦­í•  때마다 ì‹œìŠ¤í…œì´ í”„ëž˜ê·¸ë¨¼íŠ¸ ì•ˆì˜ {@link android.app.ListFragment#onListItemClick
-onListItemClick()}ì„ í˜¸ì¶œí•˜ê³ , 그러면 ì´ê²ƒì´ {@code onArticleSelected()}를 호출하여
+onListItemClick()}ì„ í˜¸ì¶œí•˜ê³ , 그러면 ì´ê²ƒì´ {@code onArticleSelected()}를 호출하여
해당 ì´ë²¤íŠ¸ë¥¼ 액티비티와 공유하는 것입니다.</p>
<pre>
@@ -588,42 +588,42 @@ public static class FragmentA extends ListFragment {
</pre>
<p>{@link
-android.app.ListFragment#onListItemClick onListItemClick()}ì— ì „ë‹¬ëœ {@code id} 매개변수가 í´ë¦­í•œ í•­ëª©ì˜ í–‰ IDì´ë©°,
+android.app.ListFragment#onListItemClick onListItemClick()}ì— ì „ë‹¬ëœ {@code id} 매개변수가 í´ë¦­í•œ í•­ëª©ì˜ í–‰ IDì´ë©°,
액티비티(ë˜ëŠ” 다른 프래그먼트)ê°€ ì´ê²ƒì„ 사용해 애플리케ì´ì…˜ì˜ {@link
android.content.ContentProvider}ì—서 기사를 가져옵니다.</p>
<p><!--To see a complete implementation of this kind of callback interface, see the <a
-href="{@docRoot}resources/samples/NotePad/index.html">NotePad sample</a>. -->콘í…츠 ì œê³µìž ì‚¬ìš©ë²•ì— ëŒ€í•œ ìžì„¸í•œ 정보는
+href="{@docRoot}resources/samples/NotePad/index.html">NotePad sample</a>. -->콘í…츠 ì œê³µìž ì‚¬ìš©ë²•ì— ëŒ€í•œ ìžì„¸í•œ 정보는
<a href="{@docRoot}guide/topics/providers/content-providers.html">콘í…츠 제공ìž</a> 문서ì—서 ì´ìš©í•˜ì‹¤ 수 있습니다.</p>
<h3 id="ActionBar">작업 모ìŒì— 항목 추가</h3>
-<p>프래그먼트는 ì•¡í‹°ë¹„í‹°ì˜ <a href="{@docRoot}guide/topics/ui/menus.html#options-menu">옵션 메뉴</a>ì—(ê²°ê³¼ì ìœ¼ë¡œ <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모ìŒ</a>ì—ë„) 메뉴 항목으로 참가할 수 있습니다. ì´ë•Œ
-{@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()}를 구현하는 ë°©ë²•ì„ ì”니다. ì´ ë©”ì„œë“œê°€
+<p>프래그먼트는 ì•¡í‹°ë¹„í‹°ì˜ <a href="{@docRoot}guide/topics/ui/menus.html#options-menu">옵션 메뉴</a>ì—(ê²°ê³¼ì ìœ¼ë¡œ <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모ìŒ</a>ì—ë„) 메뉴 항목으로 참가할 수 있습니다. ì´ë•Œ
+{@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()}를 구현하는 ë°©ë²•ì„ ì”니다. ì´ ë©”ì„œë“œê°€
í˜¸ì¶œì„ ìˆ˜ì‹ í•˜ë„ë¡ í•˜ë ¤ë©´, {@link
android.app.Fragment#onCreate(Bundle) onCreate()} ì¤‘ì— {@link
-android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()}를 호출하여 프래그먼트가
-옵션 ë©”ë‰´ì— í•­ëª©ì„ ì¶”ê°€í•˜ê³ ìž í•œë‹¤ëŠ” ê²ƒì„ ë‚˜íƒ€ë‚´ì•¼ 합니다(그렇지 않으면 해당 프래그먼트가
+android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()}를 호출하여 프래그먼트가
+옵션 ë©”ë‰´ì— í•­ëª©ì„ ì¶”ê°€í•˜ê³ ìž í•œë‹¤ëŠ” ê²ƒì„ ë‚˜íƒ€ë‚´ì•¼ 합니다(그렇지 않으면 해당 프래그먼트가
{@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()}ë¡œì˜ í˜¸ì¶œì„ ë°›ì§€ 못하게 ë©ë‹ˆë‹¤).</p>
-<p>그런 ë‹¤ìŒ í”„ëž˜ê·¸ë¨¼íŠ¸ë¡œë¶€í„° 옵션 ë©”ë‰´ì— ì¶”ê°€í•˜ëŠ” 모든 í•­ëª©ì€ ê¸°ì¡´ì˜ ë©”ë‰´ 항목ì—
+<p>그런 ë‹¤ìŒ í”„ëž˜ê·¸ë¨¼íŠ¸ë¡œë¶€í„° 옵션 ë©”ë‰´ì— ì¶”ê°€í•˜ëŠ” 모든 í•­ëª©ì€ ê¸°ì¡´ì˜ ë©”ë‰´ 항목ì—
추가ë©ë‹ˆë‹¤. 해당 프래그먼트는 메뉴 í•­ëª©ì„ ì„ íƒí•˜ë©´ {@link
-android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}ë¡œì˜ ì½œë°±ë„
+android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}ë¡œì˜ ì½œë°±ë„
수신하게 ë©ë‹ˆë‹¤.</p>
<p>ë˜í•œ 프래그먼트 ë ˆì´ì•„ì›ƒì— ë³´ê¸°ë¥¼ 등ë¡í•˜ì—¬ 컨í…스트 메뉴를 제공하ë„ë¡ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ë•Œ {@link
-android.app.Fragment#registerForContextMenu(View) registerForContextMenu()}를 호출하면 ë©ë‹ˆë‹¤. 사용ìžê°€ 컨í…스트 메뉴를 ì—´ë©´,
+android.app.Fragment#registerForContextMenu(View) registerForContextMenu()}를 호출하면 ë©ë‹ˆë‹¤. 사용ìžê°€ 컨í…스트 메뉴를 ì—´ë©´,
해당 프래그먼트가 {@link
android.app.Fragment#onCreateContextMenu(ContextMenu,View,ContextMenu.ContextMenuInfo)
onCreateContextMenu()}ë¡œì˜ í˜¸ì¶œì„ ë°›ìŠµë‹ˆë‹¤. 사용ìžê°€ í•­ëª©ì„ í•˜ë‚˜ ì„ íƒí•˜ë©´, 해당 프래그먼트는 {@link
android.app.Fragment#onContextItemSelected(MenuItem) onContextItemSelected()}ë¡œì˜ í˜¸ì¶œì„ ë°›ìŠµë‹ˆë‹¤.</p>
-<p class="note"><strong>참고:</strong> 프래그먼트는 추가한 ê° ë©”ë‰´ í•­ëª©ì— ëŒ€í•´ '항목 ì„ íƒë¨' 콜백ì„
-하나씩 받게 ë˜ì§€ë§Œ, 사용ìžê°€ 메뉴 í•­ëª©ì„ ì„ íƒí•  때 ê·¸ì— ìƒì‘하는 ì½œë°±ì„ ê°€ìž¥ ì²˜ìŒ ë°›ëŠ” 것ì€
-액티비티입니다. 액티비티가 구현한 '항목 ì„ íƒë¨' ì½œë°±ì´ ì„ íƒëœ í•­ëª©ì„ ë‹¤ë£¨ì§€ 않는 경우,
-해당 ì´ë²¤íŠ¸ëŠ” í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ì½œë°±ìœ¼ë¡œ 전달ë©ë‹ˆë‹¤. ì´ê²ƒì€
+<p class="note"><strong>참고:</strong> 프래그먼트는 추가한 ê° ë©”ë‰´ í•­ëª©ì— ëŒ€í•´ '항목 ì„ íƒë¨' 콜백ì„
+하나씩 받게 ë˜ì§€ë§Œ, 사용ìžê°€ 메뉴 í•­ëª©ì„ ì„ íƒí•  때 ê·¸ì— ìƒì‘하는 ì½œë°±ì„ ê°€ìž¥ ì²˜ìŒ ë°›ëŠ” 것ì€
+액티비티입니다. 액티비티가 구현한 '항목 ì„ íƒë¨' ì½œë°±ì´ ì„ íƒëœ í•­ëª©ì„ ë‹¤ë£¨ì§€ 않는 경우,
+해당 ì´ë²¤íŠ¸ëŠ” í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ì½œë°±ìœ¼ë¡œ 전달ë©ë‹ˆë‹¤. ì´ê²ƒì€
옵션 메뉴와 컨í…스트 ë©”ë‰´ì— ëª¨ë‘ ì°¸ìž…ë‹ˆë‹¤.</p>
<p>ë©”ë‰´ì— ëŒ€í•œ ë” ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/topics/ui/menus.html">메뉴</a> ë° <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모ìŒ</a> ê°œë°œìž ê°€ì´ë“œë¥¼ 참조하십시오.</p>
@@ -635,11 +635,11 @@ android.app.Fragment#onContextItemSelected(MenuItem) onContextItemSelected()}로
<div class="figure" style="width:350px">
<img src="{@docRoot}images/activity_fragment_lifecycle.png" alt="" />
-<p class="img-caption"><strong>그림 3.</strong> 액티비티 수명 주기가 프래그먼트 수명 ì£¼ê¸°ì— ë¯¸ì¹˜ëŠ”
+<p class="img-caption"><strong>그림 3.</strong> 액티비티 수명 주기가 프래그먼트 수명 ì£¼ê¸°ì— ë¯¸ì¹˜ëŠ”
ì˜í–¥ìž…니다.</p>
</div>
-<p>í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìˆ˜ëª… 주기를 관리하는 ê²ƒì€ ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기를 관리하는 것과 매우 비슷합니다. 액티비티와 마찬가지로
+<p>í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìˆ˜ëª… 주기를 관리하는 ê²ƒì€ ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기를 관리하는 것과 매우 비슷합니다. 액티비티와 마찬가지로
프래그먼트는 세 가지 ìƒíƒœë¡œ 존재할 수 있습니다.</p>
<dl>
@@ -647,57 +647,57 @@ android.app.Fragment#onContextItemSelected(MenuItem) onContextItemSelected()}로
<dd>프래그먼트가 실행 ì¤‘ì¸ ì•¡í‹°ë¹„í‹°ì— í‘œì‹œë©ë‹ˆë‹¤.</dd>
<dt><i>ì¼ì‹œì •ì§€ë¨</i></dt>
- <dd>ë˜ ë‹¤ë¥¸ 액티비티가 ì „ê²½ì— ë‚˜ì™€ 있고 사용ìžê°€ ì´ì— ì´ˆì ì„ 맞추고 있지만,
-ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ 있는 ì•¡í‹°ë¹„í‹°ë„ ì—¬ì „ížˆ 표시ë˜ì–´ 있습니다(ì „ê²½ì˜ ì•¡í‹°ë¹„í‹°ê°€ 부분ì ìœ¼ë¡œ 투명하거나
+ <dd>ë˜ ë‹¤ë¥¸ 액티비티가 ì „ê²½ì— ë‚˜ì™€ 있고 사용ìžê°€ ì´ì— ì´ˆì ì„ 맞추고 있지만,
+ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ 있는 ì•¡í‹°ë¹„í‹°ë„ ì—¬ì „ížˆ 표시ë˜ì–´ 있습니다(ì „ê²½ì˜ ì•¡í‹°ë¹„í‹°ê°€ 부분ì ìœ¼ë¡œ 투명하거나
ì „ì²´ í™”ë©´ì„ ë’¤ë®ì§€ 않습니다).</dd>
<dt><i>ì •ì§€ë¨</i></dt>
- <dd>프래그먼트가 표시ë˜ì§€ 않습니다. 호스트 액티비티가 ì •ì§€ë˜ì—ˆê±°ë‚˜
-프래그먼트가 액티비티ì—서 제거ë˜ì—ˆì§€ë§Œ ë°± 스íƒì— 추가ë˜ì—ˆìŠµë‹ˆë‹¤. ì •ì§€ëœ í”„ëž˜ê·¸ë¨¼íŠ¸ë„
-여전히 표시는 ë©ë‹ˆë‹¤(모든 ìƒíƒœ ë° êµ¬ì„±ì› ì •ë³´ë¥¼ ì‹œìŠ¤í…œì´ ë³´ì¡´í•©ë‹ˆë‹¤). 하지만, 사용ìžì—게는
+ <dd>프래그먼트가 표시ë˜ì§€ 않습니다. 호스트 액티비티가 ì •ì§€ë˜ì—ˆê±°ë‚˜
+프래그먼트가 액티비티ì—서 제거ë˜ì—ˆì§€ë§Œ ë°± 스íƒì— 추가ë˜ì—ˆìŠµë‹ˆë‹¤. ì •ì§€ëœ í”„ëž˜ê·¸ë¨¼íŠ¸ë„
+여전히 표시는 ë©ë‹ˆë‹¤(모든 ìƒíƒœ ë° êµ¬ì„±ì› ì •ë³´ë¥¼ ì‹œìŠ¤í…œì´ ë³´ì¡´í•©ë‹ˆë‹¤). 하지만, 사용ìžì—게는
ë” ì´ìƒ 표시ë˜ì§€ 않으며 액티비티를 종료하면 ì´ê²ƒë„ 종료ë©ë‹ˆë‹¤.</dd>
</dl>
<p>ì´ë²ˆì—ë„ ì•¡í‹°ë¹„í‹°ì™€ 마찬가지로, í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìƒíƒœë¥¼ 보존하려면 {@link
-android.os.Bundle}ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ëŠ” 혹시나 ì•¡í‹°ë¹„í‹°ì˜ í”„ë¡œì„¸ìŠ¤ê°€ 종료ë˜ê³  액티비티를
+android.os.Bundle}ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ëŠ” 혹시나 ì•¡í‹°ë¹„í‹°ì˜ í”„ë¡œì„¸ìŠ¤ê°€ 종료ë˜ê³  액티비티를
다시 만들 때 해당 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìƒíƒœë¥¼ 복구해야 í•  필요가 ìžˆì„ ë•Œë¥¼ 대비하는 것입니다. ìƒíƒœë¥¼ 저장하려면 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ {@link
-android.app.Fragment#onSaveInstanceState onSaveInstanceState()} 콜백 ì¤‘ì— ì €ìž¥í•  수 있고, 복구는
+android.app.Fragment#onSaveInstanceState onSaveInstanceState()} 콜백 ì¤‘ì— ì €ìž¥í•  수 있고, 복구는
{@link android.app.Fragment#onCreate onCreate()}, {@link
android.app.Fragment#onCreateView onCreateView()} ë˜ëŠ” {@link
-android.app.Fragment#onActivityCreated onActivityCreated()} 중 한 가지가 ì§„í–‰ë˜ëŠ” ë™ì•ˆ í•  수 있습니다. ìƒíƒœ ì €ìž¥ì— ê´€í•œ ìžì„¸í•œ 정보는
+android.app.Fragment#onActivityCreated onActivityCreated()} 중 한 가지가 ì§„í–‰ë˜ëŠ” ë™ì•ˆ í•  수 있습니다. ìƒíƒœ ì €ìž¥ì— ê´€í•œ ìžì„¸í•œ 정보는
<a href="{@docRoot}guide/components/activities.html#SavingActivityState">액티비티</a>
문서를 참조하십시오.</p>
-<p>액티비티와 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìˆ˜ëª… 주기ì—서 가장 중대한 ì°¨ì´ì ì€
-해당ë˜ëŠ” ë°± 스íƒì— 저장ë˜ëŠ” 방법입니다. 액티비티는 중단ë˜ì—ˆì„ 때 ì‹œìŠ¤í…œì´ ê´€ë¦¬í•˜ëŠ”
-액티비티 ë°± ìŠ¤íƒ ì•ˆì— ë°°ì¹˜ë˜ëŠ” ê²ƒì´ ê¸°ë³¸ìž…ë‹ˆë‹¤(ë”°ë¼ì„œ 사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ì‚¬ìš©í•˜ì—¬ 다시 ì´ ì•¡í‹°ë¹„í‹°ë¡œ
-뒤로 íƒìƒ‰í•  수 있습니다. ì´ ë‚´ìš©ì€ <a href="{@docRoot}guide/components/tasks-and-back-stack.html">작업 ë° ë°± 스íƒ</a>ì—서 설명하였습니다).
-하지만, 프래그먼트가 호스트 액티비티가 관리하는 ë°± ìŠ¤íƒ ì•ˆì— ë°°ì¹˜ë˜ëŠ” ê²ƒì€ í•´ë‹¹ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 저장하ë¼ê³  명시ì ìœ¼ë¡œ 요청하는 경우ë¿ìž…니다.
+<p>액티비티와 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìˆ˜ëª… 주기ì—서 가장 중대한 ì°¨ì´ì ì€
+해당ë˜ëŠ” ë°± 스íƒì— 저장ë˜ëŠ” 방법입니다. 액티비티는 중단ë˜ì—ˆì„ 때 ì‹œìŠ¤í…œì´ ê´€ë¦¬í•˜ëŠ”
+액티비티 ë°± ìŠ¤íƒ ì•ˆì— ë°°ì¹˜ë˜ëŠ” ê²ƒì´ ê¸°ë³¸ìž…ë‹ˆë‹¤(ë”°ë¼ì„œ 사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ì‚¬ìš©í•˜ì—¬ 다시 ì´ ì•¡í‹°ë¹„í‹°ë¡œ
+뒤로 íƒìƒ‰í•  수 있습니다. ì´ ë‚´ìš©ì€ <a href="{@docRoot}guide/components/tasks-and-back-stack.html">작업 ë° ë°± 스íƒ</a>ì—서 설명하였습니다).
+하지만, 프래그먼트가 호스트 액티비티가 관리하는 ë°± ìŠ¤íƒ ì•ˆì— ë°°ì¹˜ë˜ëŠ” ê²ƒì€ í•´ë‹¹ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 저장하ë¼ê³  명시ì ìœ¼ë¡œ 요청하는 경우ë¿ìž…니다.
ì´ë•Œ 프래그먼트를 제거하는 트랜잭션 중 {@link
-android.app.FragmentTransaction#addToBackStack(String) addToBackStack()}ì„
+android.app.FragmentTransaction#addToBackStack(String) addToBackStack()}ì„
호출합니다.</p>
-<p>ì´ê²ƒë§Œ 제외하면, 프래그먼트 수명 주기를 관리하는 ê²ƒì€ ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기를 관리하는 것과
-아주 비슷합니다. ë”°ë¼ì„œ, <a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티
-수명 주기 관리</a>ì— ì“°ì´ëŠ” 실례가 프래그먼트ì—ë„ ë˜‘ê°™ì´ ì ìš©ë˜ëŠ” 것입니다. 하지만 ë˜ í•œ 가지 ì´í•´í•´ë‘어야 하는 ê²ƒì´ ìžˆìŠµë‹ˆë‹¤. 즉,
+<p>ì´ê²ƒë§Œ 제외하면, 프래그먼트 수명 주기를 관리하는 ê²ƒì€ ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기를 관리하는 것과
+아주 비슷합니다. ë”°ë¼ì„œ, <a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티
+수명 주기 관리</a>ì— ì“°ì´ëŠ” 실례가 프래그먼트ì—ë„ ë˜‘ê°™ì´ ì ìš©ë˜ëŠ” 것입니다. 하지만 ë˜ í•œ 가지 ì´í•´í•´ë‘어야 하는 ê²ƒì´ ìžˆìŠµë‹ˆë‹¤. 즉,
ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª…ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìˆ˜ëª…ì— ì–´ë–¤ ì˜í–¥ì„ 미치는지를 알아ë‘어야 합니다.</p>
-<p class="caution"><strong>주ì˜:</strong> {@link android.app.Fragment} ë‚´ì—서 {@link android.content.Context}
-ê°ì²´ê°€ 필요한 경우, {@link android.app.Fragment#getActivity()}를 호출하면 ë©ë‹ˆë‹¤.
+<p class="caution"><strong>주ì˜:</strong> {@link android.app.Fragment} ë‚´ì—서 {@link android.content.Context}
+ê°ì²´ê°€ 필요한 경우, {@link android.app.Fragment#getActivity()}를 호출하면 ë©ë‹ˆë‹¤.
그러나 {@link android.app.Fragment#getActivity()}를 호출하는 ê²ƒì€ í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ 액티비티ì—
- 첨부ë˜ì–´ 있는 경우ë¿ì´ë‹ˆ 유ì˜í•˜ì‹­ì‹œì˜¤. 프래그먼트가 ì•„ì§ ì²¨ë¶€ë˜ì§€ 않았거나 수명 주기가 ëë‚  무렵 ë¶„ë¦¬ëœ ê²½ìš°,
+ 첨부ë˜ì–´ 있는 경우ë¿ì´ë‹ˆ 유ì˜í•˜ì‹­ì‹œì˜¤. 프래그먼트가 ì•„ì§ ì²¨ë¶€ë˜ì§€ 않았거나 수명 주기가 ëë‚  무렵 ë¶„ë¦¬ëœ ê²½ìš°,
{@link android.app.Fragment#getActivity()}ê°€ nullì„ ë°˜í™˜í•©ë‹ˆë‹¤.</p>
<h3 id="CoordinatingWithActivity">액티비티 수명 주기와 조화</h3>
-<p>프래그먼트가 있는 ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기는 해당 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìˆ˜ëª… ì£¼ê¸°ì— ì§ì ‘ì ì¸
-ì˜í–¥ì„ 미칩니다. ë”°ë¼ì„œ ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ê° ìˆ˜ëª… 주기 ì½œë°±ì´ ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•œ 비슷한 콜백ì„
-유발합니다. 예를 들어 액티비티가 {@link android.app.Activity#onPause}를 받으면,
+<p>프래그먼트가 있는 ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기는 해당 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìˆ˜ëª… ì£¼ê¸°ì— ì§ì ‘ì ì¸
+ì˜í–¥ì„ 미칩니다. ë”°ë¼ì„œ ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ê° ìˆ˜ëª… 주기 ì½œë°±ì´ ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•œ 비슷한 콜백ì„
+유발합니다. 예를 들어 액티비티가 {@link android.app.Activity#onPause}를 받으면,
해당 액티비티 ë‚´ì˜ ê° í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ {@link android.app.Fragment#onPause}를 받습니다.</p>
-<p>하지만 프래그먼트ì—는 몇 가지 수명 주기 ì½œë°±ì´ ë” ìžˆìŠµë‹ˆë‹¤. ì´ê²ƒì€ 액티비티와ì˜
-고유한 ìƒí˜¸ ìž‘ìš©ì„ ë‹¤ë£¨ì–´ í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ UI를 구축하고 소멸시키는 것과 ê°™ì€
+<p>하지만 프래그먼트ì—는 몇 가지 수명 주기 ì½œë°±ì´ ë” ìžˆìŠµë‹ˆë‹¤. ì´ê²ƒì€ 액티비티와ì˜
+고유한 ìƒí˜¸ ìž‘ìš©ì„ ë‹¤ë£¨ì–´ í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ UI를 구축하고 소멸시키는 것과 ê°™ì€
ìž‘ì—…ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. ì´ëŸ¬í•œ 추가ì ì¸ 콜백 메서드를 예로 들면 다ìŒê³¼ 같습니다.</p>
<dl>
@@ -715,17 +715,17 @@ onCreate()} 메서드가 반환ë˜ë©´ 호출ë©ë‹ˆë‹¤.</dd>
<dd>프래그먼트가 액티비티와 ì—°ê²°ì´ ëŠì–´ì§€ëŠ” ì¤‘ì¼ ë•Œ 호출ë©ë‹ˆë‹¤.</dd>
</dl>
-<p>호스트 ì•¡í‹°ë¹„í‹°ì˜ ì˜í–¥ì„ ë°›ì„ í”„ëž˜ê·¸ë¨¼íŠ¸ 수명 ì£¼ê¸°ì˜ íë¦„ì€ ê·¸ë¦¼ 3ì—서
-확ì¸í•˜ì‹­ì‹œì˜¤. ì´ ê·¸ë¦¼ì„ ë³´ë©´ ì•¡í‹°ë¹„í‹°ì˜ ê° ì—°ì†ëœ ìƒíƒœê°€ 프래그먼트가 ì–´ëŠ
+<p>호스트 ì•¡í‹°ë¹„í‹°ì˜ ì˜í–¥ì„ ë°›ì„ í”„ëž˜ê·¸ë¨¼íŠ¸ 수명 ì£¼ê¸°ì˜ íë¦„ì€ ê·¸ë¦¼ 3ì—서
+확ì¸í•˜ì‹­ì‹œì˜¤. ì´ ê·¸ë¦¼ì„ ë³´ë©´ ì•¡í‹°ë¹„í‹°ì˜ ê° ì—°ì†ëœ ìƒíƒœê°€ 프래그먼트가 ì–´ëŠ
콜백 메서드를 받게 ë˜ëŠ”ì§€ ê²°ì • 짓는다는 ê²ƒì„ ë³¼ 수 있습니다. 예를 들어 액티비티가 ìžì‹ ì˜ {@link
-android.app.Activity#onCreate onCreate()} ì½œë°±ì„ ë°›ì€ ê²½ìš°, 해당 액티비티 ì•ˆì— ìžˆëŠ” 프래그먼트는
+android.app.Activity#onCreate onCreate()} ì½œë°±ì„ ë°›ì€ ê²½ìš°, 해당 액티비티 ì•ˆì— ìžˆëŠ” 프래그먼트는
{@link android.app.Fragment#onActivityCreated onActivityCreated()} ì½œë°±ì„ ë°›ì„ ë¿ìž…니다.</p>
-<p>액티비티가 ìž¬ê°œëœ ìƒíƒœì— ë„달하면 ìžìœ ìžìž¬ë¡œ 프래그먼트를 ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•˜ê±°ë‚˜ 액티비티ì—서
-ì œê±°í•´ë„ ë©ë‹ˆë‹¤. ë”°ë¼ì„œ, 액티비티가 ìž¬ê°œëœ ìƒíƒœì— 있는 ë™ì•ˆì—ë§Œ í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìˆ˜ëª… 주기를
+<p>액티비티가 ìž¬ê°œëœ ìƒíƒœì— ë„달하면 ìžìœ ìžìž¬ë¡œ 프래그먼트를 ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•˜ê±°ë‚˜ 액티비티ì—서
+ì œê±°í•´ë„ ë©ë‹ˆë‹¤. ë”°ë¼ì„œ, 액티비티가 ìž¬ê°œëœ ìƒíƒœì— 있는 ë™ì•ˆì—ë§Œ í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìˆ˜ëª… 주기를
ë…립ì ìœ¼ë¡œ 변경할 수 있는 것입니다.</p>
-<p>그러나 액티비티가 ìž¬ê°œëœ ìƒíƒœë¥¼ 떠나면 액티비티는 다시 프래그먼트를 ê·¸ 수명 주기 안으로
+<p>그러나 액티비티가 ìž¬ê°œëœ ìƒíƒœë¥¼ 떠나면 액티비티는 다시 프래그먼트를 ê·¸ 수명 주기 안으로
밀어넣습니다.</p>
@@ -733,13 +733,13 @@ android.app.Activity#onCreate onCreate()} ì½œë°±ì„ ë°›ì€ ê²½ìš°, 해당 ì•¡í‹°
<h2 id="Example">예</h2>
-<p>ì´ ë¬¸ì„œì—서 ë…¼ì˜í•œ 모든 ê²ƒì„ í•œ ë²ˆì— ëª¨ì•„ 보기 위해, 다ìŒì€ ë‘ ê°œì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 사용하여
-ì°½ì´ ë‘ ê°œì¸ ë ˆì´ì•„ì›ƒì„ ìƒì„±í•˜ëŠ” 액티비티를 예시로 나타낸 것입니다. ì•„ëž˜ì˜ ì•¡í‹°ë¹„í‹°ì— í¬í•¨ëœ
-한 프래그먼트는 ì…°ìµìŠ¤í”¼ì–´ í¬ê³¡ 제목 목ë¡ì„ 표시하고, ë˜ ë‹¤ë¥¸ 하나는 목ë¡ì—서 ì„ íƒí–ˆì„ 때
-해당 í¬ê³¡ì˜ ìš”ì•½ì„ í‘œì‹œí•©ë‹ˆë‹¤. ë˜í•œ 화면 êµ¬ì„±ì„ ê·¼ê±°ë¡œ 프래그먼트를 여러 가지로 구성하여 제공하는 방법ë„
+<p>ì´ ë¬¸ì„œì—서 ë…¼ì˜í•œ 모든 ê²ƒì„ í•œ ë²ˆì— ëª¨ì•„ 보기 위해, 다ìŒì€ ë‘ ê°œì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ 사용하여
+ì°½ì´ ë‘ ê°œì¸ ë ˆì´ì•„ì›ƒì„ ìƒì„±í•˜ëŠ” 액티비티를 예시로 나타낸 것입니다. ì•„ëž˜ì˜ ì•¡í‹°ë¹„í‹°ì— í¬í•¨ëœ
+한 프래그먼트는 ì…°ìµìŠ¤í”¼ì–´ í¬ê³¡ 제목 목ë¡ì„ 표시하고, ë˜ ë‹¤ë¥¸ 하나는 목ë¡ì—서 ì„ íƒí–ˆì„ 때
+해당 í¬ê³¡ì˜ ìš”ì•½ì„ í‘œì‹œí•©ë‹ˆë‹¤. ë˜í•œ 화면 êµ¬ì„±ì„ ê·¼ê±°ë¡œ 프래그먼트를 여러 가지로 구성하여 제공하는 방법ë„
ë³´ì—¬ì¤ë‹ˆë‹¤.</p>
-<p class="note"><strong>참고:</strong> ì´ ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ 완전한 소스 코드는
+<p class="note"><strong>참고:</strong> ì´ ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ 완전한 소스 코드는
<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html">{@code
FragmentLayout.java}</a>ì—서 ì´ìš©í•˜ì‹¤ 수 있습니다.</p>
@@ -752,44 +752,44 @@ android.app.Activity#onCreate onCreate()} ì¤‘ì— ì¼ë°˜ì ì¸ ë°©ì‹ìœ¼ë¡œ ë ˆì
{@sample development/samples/ApiDemos/res/layout-land/fragment_layout.xml layout}
-<p>ì‹œìŠ¤í…œì€ ì´ ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•˜ì—¬ 액티비티가 ë ˆì´ì•„ì›ƒì„ ë¡œë”©í•˜ìžë§ˆìž {@code TitlesFragment}를 초기화합니다(ì´ê²ƒì´ í¬ê³¡ 제목ì„
+<p>ì‹œìŠ¤í…œì€ ì´ ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•˜ì—¬ 액티비티가 ë ˆì´ì•„ì›ƒì„ ë¡œë”©í•˜ìžë§ˆìž {@code TitlesFragment}를 초기화합니다(ì´ê²ƒì´ í¬ê³¡ 제목ì„
목ë¡ìœ¼ë¡œ 나열합니다). 반면 {@link android.widget.FrameLayout}
-(í¬ê³¡ ìš”ì•½ì„ í‘œì‹œí•˜ëŠ” 프래그먼트가 ë°°ì¹˜ë  ê³³)ì€ í™”ë©´ ì˜¤ë¥¸ìª½ì— ìžˆëŠ”
-ê³µê°„ì„ ì°¨ì§€í•˜ê¸°ëŠ” 하지만 처ìŒì—는 í…… 빈 ìƒíƒœë¡œ 유지ë©ë‹ˆë‹¤. 아래ì—서 ë³¼ 수 있듯ì´, 사용ìžê°€ 해당 목ë¡ì—서
+(í¬ê³¡ ìš”ì•½ì„ í‘œì‹œí•˜ëŠ” 프래그먼트가 ë°°ì¹˜ë  ê³³)ì€ í™”ë©´ ì˜¤ë¥¸ìª½ì— ìžˆëŠ”
+ê³µê°„ì„ ì°¨ì§€í•˜ê¸°ëŠ” 하지만 처ìŒì—는 í…… 빈 ìƒíƒœë¡œ 유지ë©ë‹ˆë‹¤. 아래ì—서 ë³¼ 수 있듯ì´, 사용ìžê°€ 해당 목ë¡ì—서
í•­ëª©ì„ í•˜ë‚˜ ì„ íƒí•´ì•¼ë§Œ 프래그먼트가 {@link android.widget.FrameLayout} ì•ˆì— ë°°ì¹˜ë©ë‹ˆë‹¤.</p>
-<p>그러나 í¬ê³¡ 목ë¡ê³¼ ìš”ì•½ì„ ë‘˜ 다 나란히 표시할 ë§Œí¼ ë„ˆë¹„ê°€ ë„“ì§€ 않ì€
-화면 êµ¬ì„±ë„ ìžˆìŠµë‹ˆë‹¤. ë”°ë¼ì„œ ìœ„ì˜ ë ˆì´ì•„ì›ƒì€ ê°€ë¡œ ë°©í–¥ 화면 구성ì—ë§Œ 사용ë˜ë©°,
+<p>그러나 í¬ê³¡ 목ë¡ê³¼ ìš”ì•½ì„ ë‘˜ 다 나란히 표시할 ë§Œí¼ ë„ˆë¹„ê°€ ë„“ì§€ 않ì€
+화면 êµ¬ì„±ë„ ìžˆìŠµë‹ˆë‹¤. ë”°ë¼ì„œ ìœ„ì˜ ë ˆì´ì•„ì›ƒì€ ê°€ë¡œ ë°©í–¥ 화면 구성ì—ë§Œ 사용ë˜ë©°,
ì´ë¥¼ {@code res/layout-land/fragment_layout.xml}ì— ì €ìž¥í•˜ì—¬ ì”니다.</p>
-<p>그러므로 í™”ë©´ì´ ì„¸ë¡œ 방향으로 êµ¬ì„±ëœ ê²½ìš°, ì‹œìŠ¤í…œì€ ë‹¤ìŒ ë ˆì´ì•„ì›ƒì„ ì ìš©í•©ë‹ˆë‹¤. ì´ê²ƒì€
+<p>그러므로 í™”ë©´ì´ ì„¸ë¡œ 방향으로 êµ¬ì„±ëœ ê²½ìš°, ì‹œìŠ¤í…œì€ ë‹¤ìŒ ë ˆì´ì•„ì›ƒì„ ì ìš©í•©ë‹ˆë‹¤. ì´ê²ƒì€
{@code res/layout/fragment_layout.xml}ì— ì €ìž¥ë˜ì–´ 있습니다.</p>
{@sample development/samples/ApiDemos/res/layout/fragment_layout.xml layout}
-<p>ì´ ë ˆì´ì•„웃ì—는 {@code TitlesFragment}ë§Œ í¬í•¨ë˜ì–´ 있습니다. ì´ëŠ” 다시 ë§í•´ 기기가 세로 ë°©í–¥ì¸ ê²½ìš°ì—는
-í¬ê³¡ 제목 목ë¡ë§Œ 표시ëœë‹¤ëŠ” 뜻입니다. ë”°ë¼ì„œ 사용ìžê°€ ì´ êµ¬ì„±ì—서 ëª©ë¡ í•­ëª©ì„ í•˜ë‚˜ í´ë¦­í•˜ë©´,
-애플리케ì´ì…˜ì´ ë‘ ë²ˆì§¸ 프래그먼트를 로딩하는 대신 새 액티비티를 시작하여 요약ì„
+<p>ì´ ë ˆì´ì•„웃ì—는 {@code TitlesFragment}ë§Œ í¬í•¨ë˜ì–´ 있습니다. ì´ëŠ” 다시 ë§í•´ 기기가 세로 ë°©í–¥ì¸ ê²½ìš°ì—는
+í¬ê³¡ 제목 목ë¡ë§Œ 표시ëœë‹¤ëŠ” 뜻입니다. ë”°ë¼ì„œ 사용ìžê°€ ì´ êµ¬ì„±ì—서 ëª©ë¡ í•­ëª©ì„ í•˜ë‚˜ í´ë¦­í•˜ë©´,
+애플리케ì´ì…˜ì´ ë‘ ë²ˆì§¸ 프래그먼트를 로딩하는 대신 새 액티비티를 시작하여 요약ì„
표시하게 ë©ë‹ˆë‹¤.</p>
<p>다ìŒìœ¼ë¡œ, 프래그먼트 í´ëž˜ìФì—서 ì´ê²ƒì„ 달성하는 ë°©ë²•ì„ ë³´ì‹œê² ìŠµë‹ˆë‹¤. 첫 번째가 {@code
TitlesFragment}로, ì…°ìµìŠ¤í”¼ì–´ í¬ê³¡ 제목 목ë¡ì„ 표시하는 것입니다. ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ëŠ” {@link
android.app.ListFragment}를 확장하며 ëª©ë¡ ë³´ê¸° ìž‘ì—…ì˜ ëŒ€ë¶€ë¶„ì„ ì²˜ë¦¬í•˜ê¸° 위해 ì—¬ê¸°ì— ì˜ì¡´í•©ë‹ˆë‹¤.</p>
-<p>ì´ ì½”ë“œë¥¼ 살펴보면서 사용ìžê°€ ëª©ë¡ í•­ëª©ì„ í´ë¦­í•˜ë©´ ì¼ì–´ë‚  수 있는 ë‘ ê°€ì§€ ë™ìž‘ì´
-있다는 ì ì„ 눈여겨 보십시오. ë‘ ë ˆì´ì•„웃 중 ì–´ëŠ ê²ƒì´ í™œì„±í™” ìƒíƒœì¸ì§€ì— ë”°ë¼
+<p>ì´ ì½”ë“œë¥¼ 살펴보면서 사용ìžê°€ ëª©ë¡ í•­ëª©ì„ í´ë¦­í•˜ë©´ ì¼ì–´ë‚  수 있는 ë‘ ê°€ì§€ ë™ìž‘ì´
+있다는 ì ì„ 눈여겨 보십시오. ë‘ ë ˆì´ì•„웃 중 ì–´ëŠ ê²ƒì´ í™œì„±í™” ìƒíƒœì¸ì§€ì— ë”°ë¼
ê°™ì€ ì•¡í‹°ë¹„í‹° ë‚´ì—서 세부 ì‚¬í•­ì„ í‘œì‹œí•˜ê¸° 위해 새 프래그먼트를 ìƒì„±í•˜ê±°ë‚˜ 표시할 ìˆ˜ë„ ìžˆê³ (프래그먼트를 {@link
android.widget.FrameLayout}ì— ì¶”ê°€í•¨ìœ¼ë¡œì¨), 새 액티비티를 시작할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(프래그먼트를 표시할 수 있는 ê³³).</p>
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java titles}
-<p>ë‘ ë²ˆì§¸ í”„ëž˜ê·¸ë¨¼íŠ¸ì¸ {@code DetailsFragment}는 {@code TitlesFragment}ì—서 가져온 목ë¡ì—서 ì„ íƒí•œ í•­ëª©ì— ëŒ€í•œ í¬ê³¡ 요약ì„
+<p>ë‘ ë²ˆì§¸ í”„ëž˜ê·¸ë¨¼íŠ¸ì¸ {@code DetailsFragment}는 {@code TitlesFragment}ì—서 가져온 목ë¡ì—서 ì„ íƒí•œ í•­ëª©ì— ëŒ€í•œ í¬ê³¡ 요약ì„
표시하는 것입니다.</p>
-
+
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
-<p>{@code TitlesFragment} í´ëž˜ìФì—서 다룬 ê²ƒì„ ë˜ì‚´ë ¤ ë³´ë©´, 사용ìžê°€ ëª©ë¡ í•­ëª©ì„ í´ë¦­í•˜ê³ 
-현재 ë ˆì´ì•„ì›ƒì´ {@code R.id.details} 보기를 í¬í•¨í•˜ì§€ <em>않는</em> 경우(ì´ ë³´ê¸°ê°€
+<p>{@code TitlesFragment} í´ëž˜ìФì—서 다룬 ê²ƒì„ ë˜ì‚´ë ¤ ë³´ë©´, 사용ìžê°€ ëª©ë¡ í•­ëª©ì„ í´ë¦­í•˜ê³ 
+현재 ë ˆì´ì•„ì›ƒì´ {@code R.id.details} 보기를 í¬í•¨í•˜ì§€ <em>않는</em> 경우(ì´ ë³´ê¸°ê°€
{@code DetailsFragment}ê°€ ì†í•˜ëŠ” 곳임), 애플리케ì´ì…˜ì€ í•­ëª©ì˜ ë‚´ìš©ì„ í‘œì‹œí•˜ê¸° 위해 {@code DetailsActivity}
액티비티를 시작하게 ë©ë‹ˆë‹¤.</p>
@@ -798,14 +798,14 @@ android.widget.FrameLayout}ì— ì¶”ê°€í•¨ìœ¼ë¡œì¨), 새 액티비티를 시작í•
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
details_activity}
-
-<p>ì´ ì•¡í‹°ë¹„í‹°ëŠ” êµ¬ì„±ì´ ê°€ë¡œ ë°©í–¥ì¸ ê²½ìš° 알아서 종료한다는 ì ì„ 눈여겨 보십시오. ë”°ë¼ì„œ
+
+<p>ì´ ì•¡í‹°ë¹„í‹°ëŠ” êµ¬ì„±ì´ ê°€ë¡œ ë°©í–¥ì¸ ê²½ìš° 알아서 종료한다는 ì ì„ 눈여겨 보십시오. ë”°ë¼ì„œ
주요 액티비티가 ìž‘ì—…ì„ ì¸ê³„ 받아 {@code DetailsFragment}를 {@code TitlesFragment}와 함께 표시할 수 있는 것입니다.
-ì´ê²ƒì€ 사용ìžê°€ 세로 ë°©í–¥ 구성ì—서 {@code DetailsActivity}를 시작했지만
+ì´ê²ƒì€ 사용ìžê°€ 세로 ë°©í–¥ 구성ì—서 {@code DetailsActivity}를 시작했지만
그런 ë‹¤ìŒ ê°€ë¡œ 방향으로 ëŒë¦¬ëŠ” 경우(현재 액티비티를 다시 시작함) ì¼ì–´ë‚  수 있습니다.</p>
-<p>프래그먼트 ì‚¬ìš©ì— ëŒ€í•œ ë” ë§Žì€ ìƒ˜í”Œ(ë° ì´ ì˜ˆì‹œì— ëŒ€í•œ 완전한 소스 파ì¼)ì„ ë³´ì‹œë ¤ë©´
+<p>프래그먼트 ì‚¬ìš©ì— ëŒ€í•œ ë” ë§Žì€ ìƒ˜í”Œ(ë° ì´ ì˜ˆì‹œì— ëŒ€í•œ 완전한 소스 파ì¼)ì„ ë³´ì‹œë ¤ë©´
<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment">
ApiDemos</a>ì—서 ì´ìš©í•  수 있는 API Demos 샘플 ì•±ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤(<a href="{@docRoot}resources/samples/get.html">샘플 SDK 구성 요소</a>ì—서 다운로드할 수 있습니다).</p>
diff --git a/docs/html-intl/intl/ko/guide/components/fundamentals.jd b/docs/html-intl/intl/ko/guide/components/fundamentals.jd
index 608b5a2cba1b..6bb5a9f7ba55 100644
--- a/docs/html-intl/intl/ko/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/ko/guide/components/fundamentals.jd
@@ -22,54 +22,54 @@ page.title=애플리케ì´ì…˜ 기본 항목
</div>
</div>
-<p>Android ì•±ì€ Java í”„ë¡œê·¸ëž˜ë° ì–¸ì–´ë¡œ 작성ë©ë‹ˆë‹¤. Android SDK ë„구는
+<p>Android ì•±ì€ Java í”„ë¡œê·¸ëž˜ë° ì–¸ì–´ë¡œ 작성ë©ë‹ˆë‹¤. Android SDK ë„구는
코드를 컴파ì¼ë§í•˜ì—¬ 모든 ë°ì´í„° ë° ë¦¬ì†ŒìŠ¤ 파ì¼ê³¼ 함께 í•˜ë‚˜ì˜ APK로 만듭니다. ì´ê²ƒì€ 즉, <i>Android 패키지</i>
-를 뜻하며, ì´ëŠ” ì¼ì¢…ì˜ {@code .apk} 접미사가 있는 ì•„ì¹´ì´ë¸Œ 파ì¼ìž…니다. 한 ê°œì˜ APK 파ì¼ì—는
+를 뜻하며, ì´ëŠ” ì¼ì¢…ì˜ {@code .apk} 접미사가 있는 ì•„ì¹´ì´ë¸Œ 파ì¼ìž…니다. 한 ê°œì˜ APK 파ì¼ì—는
Android ì•±ì˜ ëª¨ë“  콘í…츠가 들어 있으며 ì´ íŒŒì¼ì´ 바로 Android로 구ë™í•˜ëŠ” 기기가 ì•±ì„ ì„¤ì¹˜í•  때 사용하는 파ì¼ìž…니다.</p>
<p>Android ì•±ì€ ì¼ë‹¨ ê¸°ê¸°ì— ì„¤ì¹˜ë˜ê³  나면 ê°ìž ë‚˜ë¦„ì˜ ë³´ì•ˆ 샌드박스 ì•ˆì— ì‚´ê²Œ ë©ë‹ˆë‹¤. </p>
<ul>
- <li>Android ìš´ì˜ ì²´ì œëŠ” 멀티 ì‚¬ìš©ìž Linux 시스템으로, 여기서 ê° ì•±ì€ ê°ê¸° 다른 사용ìžì™€
+ <li>Android ìš´ì˜ ì²´ì œëŠ” 멀티 ì‚¬ìš©ìž Linux 시스템으로, 여기서 ê° ì•±ì€ ê°ê¸° 다른 사용ìžì™€
같습니다.</li>
-<li>기본ì ìœ¼ë¡œ ì‹œìŠ¤í…œì´ ê° ì•±ì— ê³ ìœ í•œ Linux ID를 할당합니다(ì´ ID는 시스템만
-사용할 수 있으며 ì•±ì€ ì´ê²ƒì„ 알지 못합니다). ì‹œìŠ¤í…œì€ ì•± ì•ˆì˜ ëª¨ë“  파ì¼ì— 대해 ê¶Œí•œì„ ì„¤ì •í•˜ì—¬
+<li>기본ì ìœ¼ë¡œ ì‹œìŠ¤í…œì´ ê° ì•±ì— ê³ ìœ í•œ Linux ID를 할당합니다(ì´ ID는 시스템만
+사용할 수 있으며 ì•±ì€ ì´ê²ƒì„ 알지 못합니다). ì‹œìŠ¤í…œì€ ì•± ì•ˆì˜ ëª¨ë“  파ì¼ì— 대해 ê¶Œí•œì„ ì„¤ì •í•˜ì—¬
해당 ì•±ì— í• ë‹¹ëœ ì‚¬ìš©ìž IDë§Œ ì´ì— 액세스할 수 있ë„ë¡ í•©ë‹ˆë‹¤. </li>
-<li>ê° í”„ë¡œì„¸ìŠ¤ì—는 ë‚˜ë¦„ì˜ ê°€ìƒ ë¨¸ì‹ (VM)ì´ ìžˆê³ , 그렇기 ë•Œë¬¸ì— í•œ ì•±ì˜ ì½”ë“œê°€ 다른 여러 앱과는 ê²©ë¦¬ëœ ìƒíƒœë¡œ
+<li>ê° í”„ë¡œì„¸ìŠ¤ì—는 ë‚˜ë¦„ì˜ ê°€ìƒ ë¨¸ì‹ (VM)ì´ ìžˆê³ , 그렇기 ë•Œë¬¸ì— í•œ ì•±ì˜ ì½”ë“œê°€ 다른 여러 앱과는 ê²©ë¦¬ëœ ìƒíƒœë¡œ
실행ë©ë‹ˆë‹¤.</li>
-<li>기본ì ìœ¼ë¡œ 모든 ì•±ì´ ë‚˜ë¦„ì˜ Linux 프로세스ì—서 실행ë©ë‹ˆë‹¤. Android는 ì•±ì˜ êµ¬ì„± 요소 중
-ì–´ëŠ ê²ƒì´ë¼ë„ 실행해야 하는 경우 프로세스를 시작하고, ì´ê²ƒì´ ë” ì´ìƒ í•„ìš” 없어지거나 ì‹œìŠ¤í…œì´ ë‹¤ë¥¸ ì•±ì„ ìœ„í•´
+<li>기본ì ìœ¼ë¡œ 모든 ì•±ì´ ë‚˜ë¦„ì˜ Linux 프로세스ì—서 실행ë©ë‹ˆë‹¤. Android는 ì•±ì˜ êµ¬ì„± 요소 중
+ì–´ëŠ ê²ƒì´ë¼ë„ 실행해야 하는 경우 프로세스를 시작하고, ì´ê²ƒì´ ë” ì´ìƒ í•„ìš” 없어지거나 ì‹œìŠ¤í…œì´ ë‹¤ë¥¸ ì•±ì„ ìœ„í•´
메모리를 회복해야 하는 경우 해당 프로세스를 종료합니다.</li>
</ul>
-<p>Android ì‹œìŠ¤í…œì€ ì´ëŸ° ë°©ì‹ìœ¼ë¡œ <em>최소 íŠ¹ê¶Œì˜ ì›ë¦¬</em>를 구현하는 것입니다. 다시 ë§í•´,
-ê° ì•±ì€ ê¸°ë³¸ì ìœ¼ë¡œ ìžì‹ ì˜ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê¸° 위해 필요한 구성 요소ì—ë§Œ 액세스 ê¶Œí•œì„ ê°€ì§€ê³ 
-ê·¸ ì´ìƒì€ 허용ë˜ì§€ 않습니다. ì´ë ‡ê²Œ 하면 대단히 안전한 í™˜ê²½ì´ ë§Œë“¤ì–´ì ¸ ì•±ì´ ì‹œìŠ¤í…œì—서
+<p>Android ì‹œìŠ¤í…œì€ ì´ëŸ° ë°©ì‹ìœ¼ë¡œ <em>최소 íŠ¹ê¶Œì˜ ì›ë¦¬</em>를 구현하는 것입니다. 다시 ë§í•´,
+ê° ì•±ì€ ê¸°ë³¸ì ìœ¼ë¡œ ìžì‹ ì˜ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê¸° 위해 필요한 구성 요소ì—ë§Œ 액세스 ê¶Œí•œì„ ê°€ì§€ê³ 
+ê·¸ ì´ìƒì€ 허용ë˜ì§€ 않습니다. ì´ë ‡ê²Œ 하면 대단히 안전한 í™˜ê²½ì´ ë§Œë“¤ì–´ì ¸ ì•±ì´ ì‹œìŠ¤í…œì—서
ìžì‹ ì´ ê¶Œí•œì„ ë¶€ì—¬ 받지 못한 부분ì—는 액세스할 수 없게 ë©ë‹ˆë‹¤.</p>
-<p>그러나, ì•±ì´ ë‹¤ë¥¸ 여러 앱과 ë°ì´í„°ë¥¼ 공유하는 것과 ì•±ì´ ì‹œìŠ¤í…œ ì„œë¹„ìŠ¤ì— ì•¡ì„¸ìŠ¤í•˜ëŠ” ë°ì—는
+<p>그러나, ì•±ì´ ë‹¤ë¥¸ 여러 앱과 ë°ì´í„°ë¥¼ 공유하는 것과 ì•±ì´ ì‹œìŠ¤í…œ ì„œë¹„ìŠ¤ì— ì•¡ì„¸ìŠ¤í•˜ëŠ” ë°ì—는
여러 가지 ë°©ë²•ì´ ìžˆìŠµë‹ˆë‹¤.</p>
<ul>
- <li>ë‘ ê°œì˜ ì•±ì´ ê°™ì€ Linux ì‚¬ìš©ìž ID를 공유하ë„ë¡ ì„¤ì •í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ ê²½ìš°
-ë‘ ì•±ì€ ì„œë¡œì˜ íŒŒì¼ì— 액세스할 수 있게 ë©ë‹ˆë‹¤. 시스템 리소스를 절약하려면, ê°™ì€ ì‚¬ìš©ìž ID를 가진 앱ì´
-ê°™ì€ Linux 프로세스ì—서 실행ë˜ë„ë¡ ì„¤ì •í•˜ê³  ê°™ì€ VMì„ ê³µìœ í•˜ë„ë¡ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(ì´ë“¤ ì•±ì€ ê°™ì€ ì¸ì¦ì„œë¡œ
+ <li>ë‘ ê°œì˜ ì•±ì´ ê°™ì€ Linux ì‚¬ìš©ìž ID를 공유하ë„ë¡ ì„¤ì •í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ ê²½ìš°
+ë‘ ì•±ì€ ì„œë¡œì˜ íŒŒì¼ì— 액세스할 수 있게 ë©ë‹ˆë‹¤. 시스템 리소스를 절약하려면, ê°™ì€ ì‚¬ìš©ìž ID를 가진 앱ì´
+ê°™ì€ Linux 프로세스ì—서 실행ë˜ë„ë¡ ì„¤ì •í•˜ê³  ê°™ì€ VMì„ ê³µìœ í•˜ë„ë¡ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(ì´ë“¤ ì•±ì€ ê°™ì€ ì¸ì¦ì„œë¡œ
서명해야 합니다).</li>
- <li>ì•±ì€ ì‚¬ìš©ìžì˜ ì—°ë½ì²˜, SMS 메시지, 마운트 가능한 저장소(SD 카드),
-ì¹´ë©”ë¼, Bluetooth를 비롯하여 ì´ì™¸ì—ë„ ì—¬ëŸ¬ 가지 기기 ë°ì´í„°ì— 액세스할 ê¶Œí•œì„ ìš”ì²­í•  수 있습니다. 모든
+ <li>ì•±ì€ ì‚¬ìš©ìžì˜ ì—°ë½ì²˜, SMS 메시지, 마운트 가능한 저장소(SD 카드),
+ì¹´ë©”ë¼, Bluetooth를 비롯하여 ì´ì™¸ì—ë„ ì—¬ëŸ¬ 가지 기기 ë°ì´í„°ì— 액세스할 ê¶Œí•œì„ ìš”ì²­í•  수 있습니다. 모든
앱 ê¶Œí•œì€ ì„¤ì¹˜ 시ì ì— 사용ìžê°€ 허용해야 합니다.</li>
</ul>
-<p>ì´ë ‡ê²Œ 해서 Android ì•±ì´ ì‹œìŠ¤í…œ ë‚´ì— ì–´ë–¤ ì‹ìœ¼ë¡œ 존재하는지 기본 정보를 알아보았습니다. ì´ ë¬¸ì„œì˜
+<p>ì´ë ‡ê²Œ 해서 Android ì•±ì´ ì‹œìŠ¤í…œ ë‚´ì— ì–´ë–¤ ì‹ìœ¼ë¡œ 존재하는지 기본 정보를 알아보았습니다. ì´ ë¬¸ì„œì˜
나머지 부분ì—서 ì†Œê°œë  ë‚´ìš©ì€ ë‹¤ìŒê³¼ 같습니다.</p>
<ul>
<li>ì•±ì„ ì •ì˜í•˜ëŠ” 핵심 í”„ë ˆìž„ì›Œí¬ êµ¬ì„± 요소.</li>
- <li>구성 요소를 선언하고 ì•±ì— ë§žëŠ” 필수 기기 íŠ¹ì§•ì„ ì„ ì–¸í•  수 있는 매니페스트
+ <li>구성 요소를 선언하고 ì•±ì— ë§žëŠ” 필수 기기 íŠ¹ì§•ì„ ì„ ì–¸í•  수 있는 매니페스트
파ì¼.</li>
- <li>앱 코드로부터 별ë„로 분리ë˜ì–´ 있으며 ì•±ì´ ë‹¤ì–‘í•œ 기기 êµ¬ì„±ì— ë§žê²Œ ìžì‹ ì˜ í–‰ë™ì„
+ <li>앱 코드로부터 별ë„로 분리ë˜ì–´ 있으며 ì•±ì´ ë‹¤ì–‘í•œ 기기 êµ¬ì„±ì— ë§žê²Œ ìžì‹ ì˜ í–‰ë™ì„
안정ì ìœ¼ë¡œ 최ì í™”í•  수 있ë„ë¡ í•´ì£¼ëŠ” 리소스.</li>
</ul>
@@ -77,13 +77,13 @@ Android ì•±ì˜ ëª¨ë“  콘í…츠가 들어 있으며 ì´ íŒŒì¼ì´ 바로 Android
<h2 id="Components">앱 구성 요소</h2>
-<p>앱 구성 요소는 Android ì•±ì„ ì´ë£¨ëŠ” 가장 기본ì ì¸ 구성 단위입니다. ê°
-구성 요소는 ì‹œìŠ¤í…œì´ ì•±ìœ¼ë¡œ 들어올 수 있는 ê°ê¸° 다른 통과 ì§€ì ì„ 나타냅니다. 구성 요소 중ì—는
-실제 사용ìžê°€ 쓸 수 있는 ì§„ìž… ì§€ì ì´ 아닌 ê²ƒë„ ìžˆê³ , ì¼ë¶€ëŠ” 서로ì—게 ì˜ì¡´í•˜ì§€ë§Œ,
-ê°ê°ì˜ 구성 요소는 따로 떨어진 엔티티로서 존재하며 ê°ê¸° 특정한 ì—­í• ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. 즉 하나하나가
+<p>앱 구성 요소는 Android ì•±ì„ ì´ë£¨ëŠ” 가장 기본ì ì¸ 구성 단위입니다. ê°
+구성 요소는 ì‹œìŠ¤í…œì´ ì•±ìœ¼ë¡œ 들어올 수 있는 ê°ê¸° 다른 통과 ì§€ì ì„ 나타냅니다. 구성 요소 중ì—는
+실제 사용ìžê°€ 쓸 수 있는 ì§„ìž… ì§€ì ì´ 아닌 ê²ƒë„ ìžˆê³ , ì¼ë¶€ëŠ” 서로ì—게 ì˜ì¡´í•˜ì§€ë§Œ,
+ê°ê°ì˜ 구성 요소는 따로 떨어진 엔티티로서 존재하며 ê°ê¸° 특정한 ì—­í• ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. 즉 하나하나가
ì•±ì˜ ì „ë°˜ì ì¸ í–‰ë™ì„ ì •ì˜í•˜ëŠ” ë° ìœ ìš©í•œ 고유한 구성 ë‹¨ìœ„ì¸ ê²ƒìž…ë‹ˆë‹¤.</p>
-<p>앱 구성 요소ì—는 네 가지 서로 다른 ìœ í˜•ì´ ìžˆìŠµë‹ˆë‹¤. ê° ìœ í˜•ì´ ëšœë ·í•œ 목ì ì„ 가지고 있으며
+<p>앱 구성 요소ì—는 네 가지 서로 다른 ìœ í˜•ì´ ìžˆìŠµë‹ˆë‹¤. ê° ìœ í˜•ì´ ëšœë ·í•œ 목ì ì„ 가지고 있으며
ê°ìž ë‚˜ë¦„ì˜ ìˆ˜ëª… 주기가 있어 구성 ìš”ì†Œì˜ ìƒì„± ë° ì†Œë©¸ ë°©ì‹ì„ ì •ì˜í•©ë‹ˆë‹¤.</p>
<p>다ìŒì€ 네 가지 ìœ í˜•ì˜ ì•± 구성 요소를 나타낸 것입니다.</p>
@@ -92,15 +92,15 @@ Android ì•±ì˜ ëª¨ë“  콘í…츠가 들어 있으며 ì´ íŒŒì¼ì´ 바로 Android
<dt><b>액티비티</b></dt>
-<dd>í†µìƒ <i>액티비티</i> ë¼ê³  하면, ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ê°€ 있는 화면 하나를 나타냅니다. 예를 들어
-ì´ë©”ì¼ ì•±ì´ë¼ë©´ 새 ì´ë©”ì¼ ëª©ë¡ì„ 표시하는 액티비티가 하나 있고,
-ì´ë©”ì¼ì„ 작성하는 액티비티가 ë˜ í•˜ë‚˜, 그리고 ì´ë©”ì¼ì„ ì½ëŠ” ë° ì“°ëŠ” 액티비티가 ë˜ í•˜ë‚˜ ìžˆì„ ìˆ˜ 있습니다. 여러
-액티비티가 함께 ìž‘ë™í•˜ì—¬ 해당 ì´ë©”ì¼ ì•±ì—서 짜임새 있는 ì‚¬ìš©ìž í™˜ê²½ì„ í˜•ì„±í•˜ëŠ” ê²ƒì€ ì‚¬ì‹¤ì´ì§€ë§Œ, ê°ìž 서로와는
-ë…립ì ì¸ 형태입니다. ë”°ë¼ì„œ, 다른 ì•±ì´ ì´ì™€ ê°™ì€ ì•¡í‹°ë¹„í‹° 중 ì–´ëŠ ê²ƒì´ë¼ë„ 하나만
-시작할 수 있습니다(ì´ë©”ì¼ ì•±ì´ ê·¸ë ‡ê²Œ 하ë„ë¡ í—ˆìš©í•˜ëŠ” 경우). 예를 들어, ì¹´ë©”ë¼ ì•±ì´ë¼ë©´ ì´ë©”ì¼ ì•± 안ì˜
+<dd>í†µìƒ <i>액티비티</i> ë¼ê³  하면, ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ê°€ 있는 화면 하나를 나타냅니다. 예를 들어
+ì´ë©”ì¼ ì•±ì´ë¼ë©´ 새 ì´ë©”ì¼ ëª©ë¡ì„ 표시하는 액티비티가 하나 있고,
+ì´ë©”ì¼ì„ 작성하는 액티비티가 ë˜ í•˜ë‚˜, 그리고 ì´ë©”ì¼ì„ ì½ëŠ” ë° ì“°ëŠ” 액티비티가 ë˜ í•˜ë‚˜ ìžˆì„ ìˆ˜ 있습니다. 여러
+액티비티가 함께 ìž‘ë™í•˜ì—¬ 해당 ì´ë©”ì¼ ì•±ì—서 짜임새 있는 ì‚¬ìš©ìž í™˜ê²½ì„ í˜•ì„±í•˜ëŠ” ê²ƒì€ ì‚¬ì‹¤ì´ì§€ë§Œ, ê°ìž 서로와는
+ë…립ì ì¸ 형태입니다. ë”°ë¼ì„œ, 다른 ì•±ì´ ì´ì™€ ê°™ì€ ì•¡í‹°ë¹„í‹° 중 ì–´ëŠ ê²ƒì´ë¼ë„ 하나만
+시작할 수 있습니다(ì´ë©”ì¼ ì•±ì´ ê·¸ë ‡ê²Œ 하ë„ë¡ í—ˆìš©í•˜ëŠ” 경우). 예를 들어, ì¹´ë©”ë¼ ì•±ì´ë¼ë©´ ì´ë©”ì¼ ì•± 안ì˜
액티비티를 시작하여 새 ë©”ì¼ì„ 작성하ë„ë¡ í•´ì„œ 사용ìžê°€ ì‚¬ì§„ì„ ê³µìœ í•˜ë„ë¡ í•  수 있습니다.
-<p>액티비티는 {@link android.app.Activity}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¡œ 구현ë˜ë©° ì´ì— 대한 ë” ìžì„¸í•œ ë‚´ìš©ì€
+<p>액티비티는 {@link android.app.Activity}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¡œ 구현ë˜ë©° ì´ì— 대한 ë” ìžì„¸í•œ ë‚´ìš©ì€
<a href="{@docRoot}guide/components/activities.html">액티비티</a>
ê°œë°œìž ê°€ì´ë“œì—서 확ì¸í•˜ì‹¤ 수 있습니다.</p>
</dd>
@@ -108,14 +108,14 @@ Android ì•±ì˜ ëª¨ë“  콘í…츠가 들어 있으며 ì´ íŒŒì¼ì´ 바로 Android
<dt><b>서비스</b></dt>
-<dd>í†µìƒ <i>서비스</i> ë¼ê³  하면 ë°°ê²½ì—서 실행ë˜ëŠ” 구성 요소로, 오랫ë™ì•ˆ 실행ë˜ëŠ”
-ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê±°ë‚˜ ì›ê²© 프로세스를 위한 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 것입니다. 서비스는
-ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하지 않습니다. 예를 들어 서비스는 사용ìžê°€ 다른 ì•±ì— ìžˆëŠ” ë™ì•ˆì— ë°°ê²½ì—서 ìŒì•…ì„ ìž¬ìƒí•  ìˆ˜ë„ ìžˆê³ ,
-아니면 사용ìžì™€ 액티비티 사ì´ì˜ ìƒí˜¸ ìž‘ìš©ì„ ì°¨ë‹¨í•˜ì§€ 않고 네트워í¬ë¥¼ 가로질러
-ë°ì´í„°ë¥¼ 가져올 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ë˜ ë‹¤ë¥¸ 구성 요소(예: 액티비티)ê°€ 서비스를 시작한 다ìŒ
+<dd>í†µìƒ <i>서비스</i> ë¼ê³  하면 ë°°ê²½ì—서 실행ë˜ëŠ” 구성 요소로, 오랫ë™ì•ˆ 실행ë˜ëŠ”
+ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê±°ë‚˜ ì›ê²© 프로세스를 위한 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 것입니다. 서비스는
+ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하지 않습니다. 예를 들어 서비스는 사용ìžê°€ 다른 ì•±ì— ìžˆëŠ” ë™ì•ˆì— ë°°ê²½ì—서 ìŒì•…ì„ ìž¬ìƒí•  ìˆ˜ë„ ìžˆê³ ,
+아니면 사용ìžì™€ 액티비티 사ì´ì˜ ìƒí˜¸ ìž‘ìš©ì„ ì°¨ë‹¨í•˜ì§€ 않고 네트워í¬ë¥¼ 가로질러
+ë°ì´í„°ë¥¼ 가져올 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ë˜ ë‹¤ë¥¸ 구성 요소(예: 액티비티)ê°€ 서비스를 시작한 다ìŒ
실행ë˜ë„ë¡ ë‘거나 ìžì‹ ì—게 ë°”ì¸ë”©í•˜ì—¬ ìƒí˜¸ 작용하ë„ë¡ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
-<p>서비스는 {@link android.app.Service}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¡œ 구현ë˜ë©° ì´ì— 대한 ë” ìžì„¸í•œ ë‚´ìš©ì€
+<p>서비스는 {@link android.app.Service}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¡œ 구현ë˜ë©° ì´ì— 대한 ë” ìžì„¸í•œ ë‚´ìš©ì€
<a href="{@docRoot}guide/components/services.html">서비스</a>
ê°œë°œìž ê°€ì´ë“œì—서 확ì¸í•˜ì‹¤ 수 있습니다.</p>
</dd>
@@ -123,20 +123,20 @@ Android ì•±ì˜ ëª¨ë“  콘í…츠가 들어 있으며 ì´ íŒŒì¼ì´ 바로 Android
<dt><b>콘í…츠 제공ìž</b></dt>
-<dd>í†µìƒ <i>콘í…츠 제공ìž</i> 는 ê³µìœ ëœ ì•± ë°ì´í„° ì§‘í•©ì„ ê´€ë¦¬í•©ë‹ˆë‹¤. ë°ì´í„°ëŠ” íŒŒì¼ ì‹œìŠ¤í…œì´ë‚˜ SQLite ë°ì´í„°ë² ì´ìФ,
-ë˜ëŠ” 웹ì´ë‚˜ 기타 ì˜êµ¬ì ì¸ 저장소 위치 중 ì•±ì´ ì•¡ì„¸ìŠ¤í•  수 있는 ê³³ì´ë¼ë©´ ì–´ë””ì—ë“  저장할 수
-있습니다. 다른 여러 ì•±ì€ ì½˜í…츠 제공ìžë¥¼ 통해 해당 ë°ì´í„°ë¥¼ 쿼리하거나, 심지어는 수정할 수ë„
-있습니다(콘í…츠 제공ìžê°€ 그렇게 하ë„ë¡ í—ˆìš©í•˜ëŠ” 경우). 예를 들어, Android ì‹œìŠ¤í…œì€ ì‚¬ìš©ìžì˜ ì—°ë½ì²˜ 정보를
-관리하는 콘í…츠 제공ìžë¥¼ 제공합니다. ë”°ë¼ì„œ, ì ì ˆí•œ ê¶Œí•œì„ ê°€ì§„ 앱ì´ë¼ë©´
+<dd>í†µìƒ <i>콘í…츠 제공ìž</i> 는 ê³µìœ ëœ ì•± ë°ì´í„° ì§‘í•©ì„ ê´€ë¦¬í•©ë‹ˆë‹¤. ë°ì´í„°ëŠ” íŒŒì¼ ì‹œìŠ¤í…œì´ë‚˜ SQLite ë°ì´í„°ë² ì´ìФ,
+ë˜ëŠ” 웹ì´ë‚˜ 기타 ì˜êµ¬ì ì¸ 저장소 위치 중 ì•±ì´ ì•¡ì„¸ìŠ¤í•  수 있는 ê³³ì´ë¼ë©´ ì–´ë””ì—ë“  저장할 수
+있습니다. 다른 여러 ì•±ì€ ì½˜í…츠 제공ìžë¥¼ 통해 해당 ë°ì´í„°ë¥¼ 쿼리하거나, 심지어는 수정할 수ë„
+있습니다(콘í…츠 제공ìžê°€ 그렇게 하ë„ë¡ í—ˆìš©í•˜ëŠ” 경우). 예를 들어, Android ì‹œìŠ¤í…œì€ ì‚¬ìš©ìžì˜ ì—°ë½ì²˜ 정보를
+관리하는 콘í…츠 제공ìžë¥¼ 제공합니다. ë”°ë¼ì„œ, ì ì ˆí•œ ê¶Œí•œì„ ê°€ì§„ 앱ì´ë¼ë©´
ì–´ë–¤ 것ì´ë“  해당 콘í…츠 제공ìžì˜ ì¼ë¶€ë¥¼ 쿼리하여(예를 들어 {@link
android.provider.ContactsContract.Data} 등) 특정한 ì‚¬ëžŒì— ëŒ€í•œ 정보를 ì½ê³  쓸 수 있습니다.
-<p>콘í…츠 제공ìžëŠ” 앱ì—서 비공개ì´ë©° 공유ë˜ì§€ 않는 ë°ì´í„°ë¥¼ ì½ê³  쓰는 ë°ì—ë„
-유용합니다. 예를 들어 <a href="{@docRoot}resources/samples/NotePad/index.html">메모장</a> 샘플 ì•±ì€ ë©”ëª¨í•œ ë‚´ìš©ì„ ì €ìž¥í•˜ëŠ” ë°
+<p>콘í…츠 제공ìžëŠ” 앱ì—서 비공개ì´ë©° 공유ë˜ì§€ 않는 ë°ì´í„°ë¥¼ ì½ê³  쓰는 ë°ì—ë„
+유용합니다. 예를 들어 <a href="{@docRoot}resources/samples/NotePad/index.html">메모장</a> 샘플 ì•±ì€ ë©”ëª¨í•œ ë‚´ìš©ì„ ì €ìž¥í•˜ëŠ” ë°
콘í…츠 제공ìžë¥¼ 사용합니다.</p>
<p>콘í…츠 제공ìžëŠ” {@link android.content.ContentProvider}ì˜
-하위 í´ëž˜ìŠ¤ë¡œ 구현ë˜ë©°, 다른 ì•±ì´ íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•  수 있ë„ë¡ í™œì„±í™”í•˜ëŠ” 표준 API ì§‘í•©ì„
+하위 í´ëž˜ìŠ¤ë¡œ 구현ë˜ë©°, 다른 ì•±ì´ íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•  수 있ë„ë¡ í™œì„±í™”í•˜ëŠ” 표준 API ì§‘í•©ì„
구현해야 합니다. ìžì„¸í•œ ë‚´ìš©ì€ <a href="{@docRoot}guide/topics/providers/content-providers.html">콘í…츠 제공ìž</a> 개발ìž
ê°€ì´ë“œë¥¼ 참조하십시오.</p>
</dd>
@@ -144,18 +144,18 @@ android.provider.ContactsContract.Data} 등) 특정한 ì‚¬ëžŒì— ëŒ€í•œ ì •ë³´ë¥
<dt><b>브로드ìºìŠ¤íŠ¸ 수신기</b></dt>
-<dd>í†µìƒ <i>브로드ìºìŠ¤íŠ¸ 수신기</i> 는 시스템 ì „ì²´ì— ëŒ€í•œ 브로드ìºìŠ¤íŠ¸ ê³µì§€ì— ì‘답하는 구성 요소를
-ë§í•©ë‹ˆë‹¤. ëŒ€ë‹¤ìˆ˜ì˜ ë¸Œë¡œë“œìºìŠ¤íŠ¸ëŠ” 시스템ì—서 시작합니다. 예를 들어, í™”ë©´ì´ êº¼ì¡Œë‹¤ê±°ë‚˜
+<dd>í†µìƒ <i>브로드ìºìŠ¤íŠ¸ 수신기</i> 는 시스템 ì „ì²´ì— ëŒ€í•œ 브로드ìºìŠ¤íŠ¸ ê³µì§€ì— ì‘답하는 구성 요소를
+ë§í•©ë‹ˆë‹¤. ëŒ€ë‹¤ìˆ˜ì˜ ë¸Œë¡œë“œìºìŠ¤íŠ¸ëŠ” 시스템ì—서 시작합니다. 예를 들어, í™”ë©´ì´ êº¼ì¡Œë‹¤ê±°ë‚˜
배터리 ìž”ëŸ‰ì´ ë¶€ì¡±í•˜ë‹¤ê±°ë‚˜, ì‚¬ì§„ì„ ìº¡ì²˜í–ˆë‹¤ëŠ” ê²ƒì„ ì•Œë¦¬ëŠ” 브로드ìºìŠ¤íŠ¸ê°€ 있습니다.
-ì•±ë„ ë¸Œë¡œë“œìºìŠ¤íŠ¸ë¥¼ 시작합니다. 예를 들어, ê¸°ê¸°ì— ëª‡ 가지 ë°ì´í„°ë¥¼ 다운로드하여 다른 ì•±ë„ ì‚¬ìš©í•  수 있다는
-ì‚¬ì‹¤ì„ ë‹¤ë¥¸ 여러 앱ì—게 알리는 것입니다. 브로드ìºìŠ¤íŠ¸ 수신기는 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 표시하지 않지만,
-<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">ìƒíƒœ 표시줄 ì•Œë¦¼ì„ ìƒì„±</a>하여
-사용ìžì—게 브로드ìºìŠ¤íŠ¸ ì´ë²¤íŠ¸ê°€ ë°œìƒí–ˆë‹¤ê³  알릴 수 있습니다. 다만 브로드ìºìŠ¤íŠ¸ 수신기는
-그저 다른 구성 ìš”ì†Œë¡œì˜ "게ì´íŠ¸ì›¨ì´"ì¸ ê²½ìš°ê°€ ë” ë³´íŽ¸ì ì´ê³ , ê·¹ì†ŒëŸ‰ì˜ ìž‘ì—…ë§Œ 수행하ë„ë¡ ë§Œë“¤ì–´ì§„ 경우가 많습니다. 예컨대
+ì•±ë„ ë¸Œë¡œë“œìºìŠ¤íŠ¸ë¥¼ 시작합니다. 예를 들어, ê¸°ê¸°ì— ëª‡ 가지 ë°ì´í„°ë¥¼ 다운로드하여 다른 ì•±ë„ ì‚¬ìš©í•  수 있다는
+ì‚¬ì‹¤ì„ ë‹¤ë¥¸ 여러 앱ì—게 알리는 것입니다. 브로드ìºìŠ¤íŠ¸ 수신기는 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 표시하지 않지만,
+<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">ìƒíƒœ 표시줄 ì•Œë¦¼ì„ ìƒì„±</a>하여
+사용ìžì—게 브로드ìºìŠ¤íŠ¸ ì´ë²¤íŠ¸ê°€ ë°œìƒí–ˆë‹¤ê³  알릴 수 있습니다. 다만 브로드ìºìŠ¤íŠ¸ 수신기는
+그저 다른 구성 ìš”ì†Œë¡œì˜ "게ì´íŠ¸ì›¨ì´"ì¸ ê²½ìš°ê°€ ë” ë³´íŽ¸ì ì´ê³ , ê·¹ì†ŒëŸ‰ì˜ ìž‘ì—…ë§Œ 수행하ë„ë¡ ë§Œë“¤ì–´ì§„ 경우가 많습니다. 예컨대
서비스를 시작하여 ì´ë²¤íŠ¸ë¥¼ 근거로 한 ì–´ë–¤ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë„ë¡ í•  수 있습니다.
-<p>브로드ìºìŠ¤íŠ¸ 수신기는 {@link android.content.BroadcastReceiver}ì˜
-하위 í´ëž˜ìŠ¤ë¡œ 구현ë˜ë©° ê° ë¸Œë¡œë“œìºìŠ¤íŠ¸ëŠ” {@link android.content.Intent} ê°ì²´ë¡œ 전달ë©ë‹ˆë‹¤. ìžì„¸í•œ 정보는
+<p>브로드ìºìŠ¤íŠ¸ 수신기는 {@link android.content.BroadcastReceiver}ì˜
+하위 í´ëž˜ìŠ¤ë¡œ 구현ë˜ë©° ê° ë¸Œë¡œë“œìºìŠ¤íŠ¸ëŠ” {@link android.content.Intent} ê°ì²´ë¡œ 전달ë©ë‹ˆë‹¤. ìžì„¸í•œ 정보는
{@link android.content.BroadcastReceiver} í´ëž˜ìŠ¤ë¥¼ 참조하십시오.</p>
</dd>
@@ -163,72 +163,72 @@ android.provider.ContactsContract.Data} 등) 특정한 ì‚¬ëžŒì— ëŒ€í•œ ì •ë³´ë¥
-<p>Android 시스템 ë””ìžì¸ì˜ ë…특한 ì ìœ¼ë¡œ ì–´ë–¤ 앱ì´ë“  다른 ì•±ì˜ êµ¬ì„± 요소를 시작할 수 있다는 ì ì„
-들 수 있습니다. 예를 들어 사용ìžê°€ 기기 ì¹´ë©”ë¼ë¡œ ì‚¬ì§„ì„ ìº¡ì²˜í•˜ê¸°ë¥¼ ë°”ë¼ëŠ” 경우,
-그런 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” ë˜ ë‹¤ë¥¸ ì•±ì´ ìžˆì„ ê°€ëŠ¥ì„±ì´ ë†’ìŠµë‹ˆë‹¤. 그러면 ì‚¬ì§„ì„ ìº¡ì²˜í•˜ëŠ” 액티비티를 ì§ì ‘ 개발하는 대신
-ì—¬ëŸ¬ë¶„ì˜ ì•±ì´ ê·¸ ì•±ì„ ì‚¬ìš©í•˜ë„ë¡ í•˜ë©´ ë©ë‹ˆë‹¤. ì¹´ë©”ë¼ ì•±ì—
+<p>Android 시스템 ë””ìžì¸ì˜ ë…특한 ì ìœ¼ë¡œ ì–´ë–¤ 앱ì´ë“  다른 ì•±ì˜ êµ¬ì„± 요소를 시작할 수 있다는 ì ì„
+들 수 있습니다. 예를 들어 사용ìžê°€ 기기 ì¹´ë©”ë¼ë¡œ ì‚¬ì§„ì„ ìº¡ì²˜í•˜ê¸°ë¥¼ ë°”ë¼ëŠ” 경우,
+그런 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” ë˜ ë‹¤ë¥¸ ì•±ì´ ìžˆì„ ê°€ëŠ¥ì„±ì´ ë†’ìŠµë‹ˆë‹¤. 그러면 ì‚¬ì§„ì„ ìº¡ì²˜í•˜ëŠ” 액티비티를 ì§ì ‘ 개발하는 대신
+ì—¬ëŸ¬ë¶„ì˜ ì•±ì´ ê·¸ ì•±ì„ ì‚¬ìš©í•˜ë„ë¡ í•˜ë©´ ë©ë‹ˆë‹¤. ì¹´ë©”ë¼ ì•±ì—
통합하기는커녕 ì¹´ë©”ë¼ ì•±ì˜ ì½”ë“œì— ì—°ê²°ì‹œí‚¬ í•„ìš”ì¡°ì°¨ë„ ì—†ìŠµë‹ˆë‹¤.
-ê·¸ 대신, 그저 ì‚¬ì§„ì„ ìº¡ì²˜í•˜ëŠ” ì¹´ë©”ë¼ ì•± ì•ˆì˜ í•´ë‹¹ 액티비티를 시작하기만 하면
-ë©ë‹ˆë‹¤. ìž‘ì—…ì´ ì™„ë£Œë˜ë©´ ì‚¬ì§„ì´ ì•±ìœ¼ë¡œ 반환ë˜ê¸°ê¹Œì§€ 하여 바로 사용할 수 있습니다. 사용ìžì—게는,
+ê·¸ 대신, 그저 ì‚¬ì§„ì„ ìº¡ì²˜í•˜ëŠ” ì¹´ë©”ë¼ ì•± ì•ˆì˜ í•´ë‹¹ 액티비티를 시작하기만 하면
+ë©ë‹ˆë‹¤. ìž‘ì—…ì´ ì™„ë£Œë˜ë©´ ì‚¬ì§„ì´ ì•±ìœ¼ë¡œ 반환ë˜ê¸°ê¹Œì§€ 하여 바로 사용할 수 있습니다. 사용ìžì—게는,
마치 ì¹´ë©”ë¼ê°€ ì—¬ëŸ¬ë¶„ì˜ ì•±ì˜ ì¼ë¶€ë¶„ì¸ ê²ƒì²˜ëŸ¼ 보입니다.</p>
-<p>ì‹œìŠ¤í…œì´ êµ¬ì„± 요소를 시작하는 경우, ê·¸ ì•±ì— ëŒ€í•œ 프로세스를 시작하는 것ì´ë©°(ì´ë¯¸
-실행 중ì´ì§€ ì•Šì€ ê²½ìš°), 해당 구성 ìš”ì†Œì— í•„ìš”í•œ í´ëž˜ìŠ¤ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•˜ëŠ” 것입니다. 예를 들어 ì—¬ëŸ¬ë¶„ì˜ ì•±ì´
-ì¹´ë©”ë¼ ì•± ë‚´ì—서 ì‚¬ì§„ì„ ìº¡ì²˜í•˜ëŠ” 액티비티를 시작한다고 하면, 해당 액티비티는
-여러분 ì•±ì˜ í”„ë¡œì„¸ìŠ¤ê°€ ì•„ë‹ˆë¼ ì¹´ë©”ë¼ ì•±ì— ì†í•œ 프로세스ì—서 실행ë©ë‹ˆë‹¤.
-ë”°ë¼ì„œ ëŒ€ë¶€ë¶„ì˜ ë‹¤ë¥¸ 시스템ì—서와는 달리 Android 앱ì—는 단ì¼í•œ ì§„ìž…
+<p>ì‹œìŠ¤í…œì´ êµ¬ì„± 요소를 시작하는 경우, ê·¸ ì•±ì— ëŒ€í•œ 프로세스를 시작하는 것ì´ë©°(ì´ë¯¸
+실행 중ì´ì§€ ì•Šì€ ê²½ìš°), 해당 구성 ìš”ì†Œì— í•„ìš”í•œ í´ëž˜ìŠ¤ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•˜ëŠ” 것입니다. 예를 들어 ì—¬ëŸ¬ë¶„ì˜ ì•±ì´
+ì¹´ë©”ë¼ ì•± ë‚´ì—서 ì‚¬ì§„ì„ ìº¡ì²˜í•˜ëŠ” 액티비티를 시작한다고 하면, 해당 액티비티는
+여러분 ì•±ì˜ í”„ë¡œì„¸ìŠ¤ê°€ ì•„ë‹ˆë¼ ì¹´ë©”ë¼ ì•±ì— ì†í•œ 프로세스ì—서 실행ë©ë‹ˆë‹¤.
+ë”°ë¼ì„œ ëŒ€ë¶€ë¶„ì˜ ë‹¤ë¥¸ 시스템ì—서와는 달리 Android 앱ì—는 단ì¼í•œ ì§„ìž…
ì§€ì ì´ 없습니다(예를 들어 {@code main()} ê¸°ëŠ¥ì´ ì—†ìŠµë‹ˆë‹¤).</p>
-<p>ì‹œìŠ¤í…œì´ ê° ì•±ì„ ë³„ë„ì˜ í”„ë¡œì„¸ìŠ¤ì—서 실행하며 다른 ì•±ì— ëŒ€í•œ 액세스를 제한하는
-íŒŒì¼ ê¶Œí•œì„ ê°€ì§€ê³  실행하기 ë•Œë¬¸ì— ì—¬ëŸ¬ë¶„ì˜ ì•±ì€ ë˜ ë‹¤ë¥¸ 앱ì—서 곧바로 구성 요소를
-활성화할 수는 없습니다. 하지만 Android ì‹œìŠ¤í…œì€ í•  수 있습니다. 그래서 ë˜ ë‹¤ë¥¸ ì•±ì— ìžˆëŠ”
-구성 요소를 활성화하려면 ì‹œìŠ¤í…œì— ë©”ì‹œì§€ë¥¼ 전달하여 특정 구성 요소를 ì‹œìž‘í•˜ê³ ìž í•˜ëŠ” <em>ì¸í…트</em>를
+<p>ì‹œìŠ¤í…œì´ ê° ì•±ì„ ë³„ë„ì˜ í”„ë¡œì„¸ìŠ¤ì—서 실행하며 다른 ì•±ì— ëŒ€í•œ 액세스를 제한하는
+íŒŒì¼ ê¶Œí•œì„ ê°€ì§€ê³  실행하기 ë•Œë¬¸ì— ì—¬ëŸ¬ë¶„ì˜ ì•±ì€ ë˜ ë‹¤ë¥¸ 앱ì—서 곧바로 구성 요소를
+활성화할 수는 없습니다. 하지만 Android ì‹œìŠ¤í…œì€ í•  수 있습니다. 그래서 ë˜ ë‹¤ë¥¸ ì•±ì— ìžˆëŠ”
+구성 요소를 활성화하려면 ì‹œìŠ¤í…œì— ë©”ì‹œì§€ë¥¼ 전달하여 특정 구성 요소를 ì‹œìž‘í•˜ê³ ìž í•˜ëŠ” <em>ì¸í…트</em>를
ë°í˜€ì•¼ 합니다. 그러면 ì‹œìŠ¤í…œì´ ëŒ€ì‹  해당 구성 요소를 활성화해ì¤ë‹ˆë‹¤.</p>
<h3 id="ActivatingComponents">구성 요소 활성화</h3>
-<p>네 가지 구성 요소 중 세 가지&mdash;액티비티, 서비스 ë°
+<p>네 가지 구성 요소 중 세 가지&mdash;액티비티, 서비스 ë°
브로드ìºìŠ¤íŠ¸ 수신기&mdash;는 ì¼ëª… <em>ì¸í…트</em>ë¼ê³  하는 비ë™ê¸°ì‹ 메시지가 활성화합니다.
-ì¸í…트는 ê°ê°ì˜ 구성 요소를 ëŸ°íƒ€ìž„ì— ì„œë¡œ ë°”ì¸ë”©í•˜ë©°(다른 구성 요소로부터 ìž‘ì—…ì„ ìš”ì²­í•˜ëŠ”
-ì¼ì¢…ì˜ ë©”ì‹ ì €ë¡œ ìƒê°í•˜ë©´ ë©ë‹ˆë‹¤), ì´ëŠ” 구성 요소가 ì—¬ëŸ¬ë¶„ì˜ ì•±ì— ì†í•˜ë“  아니든
+ì¸í…트는 ê°ê°ì˜ 구성 요소를 ëŸ°íƒ€ìž„ì— ì„œë¡œ ë°”ì¸ë”©í•˜ë©°(다른 구성 요소로부터 ìž‘ì—…ì„ ìš”ì²­í•˜ëŠ”
+ì¼ì¢…ì˜ ë©”ì‹ ì €ë¡œ ìƒê°í•˜ë©´ ë©ë‹ˆë‹¤), ì´ëŠ” 구성 요소가 ì—¬ëŸ¬ë¶„ì˜ ì•±ì— ì†í•˜ë“  아니든
무관합니다.</p>
-<p>ì¸í…트는 {@link android.content.Intent} ê°ì²´ë¡œ ìƒì„±ë˜ë©°, ì´ê²ƒì´
-특정 구성 요소를 활성화할지 아니면 구성 ìš”ì†Œì˜ íŠ¹ì • <em>유형</em>ì„ í™œì„±í™”í• ì§€ë¥¼ 나타내는 메시지를 ì •ì˜í•©ë‹ˆë‹¤. ì¸í…트는
+<p>ì¸í…트는 {@link android.content.Intent} ê°ì²´ë¡œ ìƒì„±ë˜ë©°, ì´ê²ƒì´
+특정 구성 요소를 활성화할지 아니면 구성 ìš”ì†Œì˜ íŠ¹ì • <em>유형</em>ì„ í™œì„±í™”í• ì§€ë¥¼ 나타내는 메시지를 ì •ì˜í•©ë‹ˆë‹¤. ì¸í…트는
ê°ê° 명시ì ì´ê±°ë‚˜ 암시ì ì¼ 수 있습니다.</p>
-<p>액티비티와 ì„œë¹„ìŠ¤ì˜ ê²½ìš°, ì¸í…트는 수행할 ìž‘ì—…ì„ ì •ì˜í•˜ë©°(예를 들어 무언가를 '보기" ë˜ëŠ”
-"보내기"), ìž‘ì—…ì„ ìˆ˜í–‰í•  ë°ì´í„°ì˜ URI를 나타낼 수 있습니다(시작ë˜ëŠ” 구성 요소가 알아야 í•  것ì€
-ì´ì™¸ì—ë„ ë§Žì´ ìžˆìŠµë‹ˆë‹¤). 예를 들어, ì¸í…트는 ì•¡í‹°ë¹„í‹°ì— ì´ë¯¸ì§€ë¥¼ 표시하거나 웹 페ì´ì§€ë¥¼ ì—´ë¼ëŠ” 요청ì„
-전달할 수 있습니다. ì–´ë–¤ 경우ì—는 액티비티를 시작하여
-결과를 받아오ë„ë¡ í•  수 있습니다. ì´ëŸ° 경우 ì´ ì•¡í‹°ë¹„í‹°ëŠ”
-{@link android.content.Intent}로 결과를 ë°˜í™˜í•˜ê¸°ë„ í•©ë‹ˆë‹¤(예를 들어, 사용ìžê°€
-ê°œì¸ì ì¸ ì—°ë½ì²˜ë¥¼ ì„ íƒí•˜ë„ë¡ í•œ ë‹¤ìŒ ê·¸ê²ƒì„ ë°˜í™˜í•˜ë„ë¡ í•˜ëŠ” ì¸í…트를 발행할 수 있습니다&mdash;반환 ì¸í…트ì—
+<p>액티비티와 ì„œë¹„ìŠ¤ì˜ ê²½ìš°, ì¸í…트는 수행할 ìž‘ì—…ì„ ì •ì˜í•˜ë©°(예를 들어 무언가를 '보기" ë˜ëŠ”
+"보내기"), ìž‘ì—…ì„ ìˆ˜í–‰í•  ë°ì´í„°ì˜ URI를 나타낼 수 있습니다(시작ë˜ëŠ” 구성 요소가 알아야 í•  것ì€
+ì´ì™¸ì—ë„ ë§Žì´ ìžˆìŠµë‹ˆë‹¤). 예를 들어, ì¸í…트는 ì•¡í‹°ë¹„í‹°ì— ì´ë¯¸ì§€ë¥¼ 표시하거나 웹 페ì´ì§€ë¥¼ ì—´ë¼ëŠ” 요청ì„
+전달할 수 있습니다. ì–´ë–¤ 경우ì—는 액티비티를 시작하여
+결과를 받아오ë„ë¡ í•  수 있습니다. ì´ëŸ° 경우 ì´ ì•¡í‹°ë¹„í‹°ëŠ”
+{@link android.content.Intent}로 결과를 ë°˜í™˜í•˜ê¸°ë„ í•©ë‹ˆë‹¤(예를 들어, 사용ìžê°€
+ê°œì¸ì ì¸ ì—°ë½ì²˜ë¥¼ ì„ íƒí•˜ë„ë¡ í•œ ë‹¤ìŒ ê·¸ê²ƒì„ ë°˜í™˜í•˜ë„ë¡ í•˜ëŠ” ì¸í…트를 발행할 수 있습니다&mdash;반환 ì¸í…트ì—
ì„ íƒí•œ ì—°ë½ì²˜ë¥¼ 가리키는 URIê°€ í¬í•¨ë©ë‹ˆë‹¤).</p>
-<p>브로드ìºìŠ¤íŠ¸ ìˆ˜ì‹ ê¸°ì˜ ê²½ìš°, ì¸í…트는 단순히 브로드ìºìŠ¤íŠ¸ë  ì•Œë¦¼ì„
-ì •ì˜í•  ë¿ìž…니다(예를 들어, 기기 배터리 ìž”ëŸ‰ì´ ë‚®ë‹¤ëŠ” ê²ƒì„ ë‚˜íƒ€ë‚´ëŠ” 브로드ìºìŠ¤íŠ¸ì—는
+<p>브로드ìºìŠ¤íŠ¸ ìˆ˜ì‹ ê¸°ì˜ ê²½ìš°, ì¸í…트는 단순히 브로드ìºìŠ¤íŠ¸ë  ì•Œë¦¼ì„
+ì •ì˜í•  ë¿ìž…니다(예를 들어, 기기 배터리 ìž”ëŸ‰ì´ ë‚®ë‹¤ëŠ” ê²ƒì„ ë‚˜íƒ€ë‚´ëŠ” 브로드ìºìŠ¤íŠ¸ì—는
"배터리 부족"ì„ ë‚˜íƒ€ë‚´ëŠ” 알려진 작업 문ìžì—´ë§Œ í¬í•¨ë©ë‹ˆë‹¤).</p>
-<p>ë‚¨ì€ í•˜ë‚˜ì˜ êµ¬ì„± 요소 유형, 즉 콘í…츠 제공ìžëŠ” ì¸í…트가 활성화하지 않습니다. 그보다는
-{@link android.content.ContentResolver}ë¡œë¶€í„°ì˜ ìš”ì²­ìœ¼ë¡œ 지정ë˜ë©´ 활성화ë©ë‹ˆë‹¤. 콘í…츠
-확ì¸ìžëŠ” 콘í…츠 제공ìžì™€ì˜ 모든 ì§ì ‘ì ì¸ íŠ¸ëžœìž­ì…˜ì„ ì²˜ë¦¬í•˜ì—¬
+<p>ë‚¨ì€ í•˜ë‚˜ì˜ êµ¬ì„± 요소 유형, 즉 콘í…츠 제공ìžëŠ” ì¸í…트가 활성화하지 않습니다. 그보다는
+{@link android.content.ContentResolver}ë¡œë¶€í„°ì˜ ìš”ì²­ìœ¼ë¡œ 지정ë˜ë©´ 활성화ë©ë‹ˆë‹¤. 콘í…츠
+확ì¸ìžëŠ” 콘í…츠 제공ìžì™€ì˜ 모든 ì§ì ‘ì ì¸ íŠ¸ëžœìž­ì…˜ì„ ì²˜ë¦¬í•˜ì—¬
제공ìžì™€ì˜ íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•˜ëŠ” 구성 요소가 그런 ì¼ì„ 하지 ì•Šì•„ë„ ë˜ê²Œ 하고, ê·¸ 대신 {@link
-android.content.ContentResolver} ê°ì²´ì—서 메서드를 호출합니다. ì´ë ‡ê²Œ ë˜ë©´ 콘í…츠 제공ìžì™€
+android.content.ContentResolver} ê°ì²´ì—서 메서드를 호출합니다. ì´ë ‡ê²Œ ë˜ë©´ 콘í…츠 제공ìžì™€
정보를 요청하는 구성 요소 사ì´ì— ì¶”ìƒí™” ê³„ì¸µì´ í•˜ë‚˜ 남습니다(보안 목ì ).</p>
<p>ê° ìœ í˜•ì˜ êµ¬ì„± 요소를 활성화하는 ë°ì—는 ê°ê¸° 별ë„ì˜ ë©”ì„œë“œê°€ 있습니다.</p>
<ul>
- <li>액티비티를 시작하려면(아니면 무언가 새로운 í•  ì¼ì„ 주려면)
+ <li>액티비티를 시작하려면(아니면 무언가 새로운 í•  ì¼ì„ 주려면)
{@link android.content.Intent}를 {@link android.content.Context#startActivity
-startActivity()} ë˜ëŠ” {@link android.app.Activity#startActivityForResult startActivityForResult()}ì—
+startActivity()} ë˜ëŠ” {@link android.app.Activity#startActivityForResult startActivityForResult()}ì—
전달하면 ë©ë‹ˆë‹¤(액티비티가 결과를 반환하기를 ì›í•˜ëŠ” 경우).</li>
- <li>서비스를 시작하려면(ë˜ëŠ” ì§„í–‰ ì¤‘ì¸ ì„œë¹„ìŠ¤ì— ìƒˆë¡œìš´ ì§€ì¹¨ì„ ì£¼ë ¤ë©´)
+ <li>서비스를 시작하려면(ë˜ëŠ” ì§„í–‰ ì¤‘ì¸ ì„œë¹„ìŠ¤ì— ìƒˆë¡œìš´ ì§€ì¹¨ì„ ì£¼ë ¤ë©´)
{@link android.content.Intent}를 {@link android.content.Context#startService
-startService()}ì— ì „ë‹¬í•˜ë©´ ë©ë‹ˆë‹¤. 아니면 {@link android.content.Intent}를
+startService()}ì— ì „ë‹¬í•˜ë©´ ë©ë‹ˆë‹¤. 아니면 {@link android.content.Intent}를
{@link android.content.Context#bindService bindService()}ì— ì „ë‹¬í•˜ì—¬ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</li>
- <li>브로드ìºìŠ¤íŠ¸ë¥¼ 시작하려면 {@link android.content.Intent}를
+ <li>브로드ìºìŠ¤íŠ¸ë¥¼ 시작하려면 {@link android.content.Intent}를
{@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}, {@link
android.content.Context#sendOrderedBroadcast(Intent, String) sendOrderedBroadcast()} ë˜ëŠ” {@link
android.content.Context#sendStickyBroadcast sendStickyBroadcast()}와 ê°™ì€ ë©”ì„œë“œì— ì „ë‹¬í•˜ë©´ ë©ë‹ˆë‹¤.</li>
@@ -236,29 +236,29 @@ android.content.Context#sendStickyBroadcast sendStickyBroadcast()}와 ê°™ì€ ë©”
android.content.ContentProvider#query query()}를 호출하면 ë©ë‹ˆë‹¤.</li>
</ul>
-<p>ì¸í…트 ì‚¬ìš©ì— ê´€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트 ë°
-ì¸í…트 í•„í„°</a>문서를 참조하십시오. 특정 구성 요소를 활성화하는 ë° ê´€í•œ ìžì„¸í•œ ì •ë³´ ë˜í•œ ë‹¤ìŒ ë¬¸ì„œì—
+<p>ì¸í…트 ì‚¬ìš©ì— ê´€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트 ë°
+ì¸í…트 í•„í„°</a>문서를 참조하십시오. 특정 구성 요소를 활성화하는 ë° ê´€í•œ ìžì„¸í•œ ì •ë³´ ë˜í•œ ë‹¤ìŒ ë¬¸ì„œì—
제공ë˜ì–´ 있습니다. <a href="{@docRoot}guide/components/activities.html">액티비티</a>, <a href="{@docRoot}guide/components/services.html">서비스</a>, {@link
android.content.BroadcastReceiver} ë° <a href="{@docRoot}guide/topics/providers/content-providers.html">콘í…츠 제공ìž</a>.</p>
<h2 id="Manifest">매니페스트 파ì¼</h2>
-<p>Android ì‹œìŠ¤í…œì´ ì•± 구성 요소를 시작하려면 ì‹œìŠ¤í…œì€ ìš°ì„  해당 구성 요소가
+<p>Android ì‹œìŠ¤í…œì´ ì•± 구성 요소를 시작하려면 ì‹œìŠ¤í…œì€ ìš°ì„  해당 구성 요소가
존재하는지 알아야 합니다. 그러기 위해 ì•±ì˜ {@code AndroidManifest.xml} 파ì¼ì„ ì½ìŠµë‹ˆë‹¤(즉 "매니페스트"
-파ì¼). ì•±ì€ ì´ íŒŒì¼ ì•ˆì— ëª¨ë“  구성 요소를 선언해야 하며, ì´ íŒŒì¼ì€ 앱 프로ì íЏ ë””ë ‰í„°ë¦¬ì˜ ë£¨íŠ¸ì—
+파ì¼). ì•±ì€ ì´ íŒŒì¼ ì•ˆì— ëª¨ë“  구성 요소를 선언해야 하며, ì´ íŒŒì¼ì€ 앱 프로ì íЏ ë””ë ‰í„°ë¦¬ì˜ ë£¨íŠ¸ì—
있어야 합니다.</p>
<p>매니페스트는 ì•±ì˜ êµ¬ì„± 요소를 선언하는 것 ì´ì™¸ì—ë„ ìˆ˜ë§Žì€ ì—­í• ì„ í•©ë‹ˆë‹¤.
예를 들면 다ìŒê³¼ 같습니다.</p>
<ul>
- <li>ì•±ì´ ìš”êµ¬í•˜ëŠ” 모든 ì‚¬ìš©ìž ê¶Œí•œ ì‹ë³„(예: ì¸í„°ë„· 액세스 ë˜ëŠ” 사용ìžì˜ ì—°ë½ì²˜ë¡œì˜
+ <li>ì•±ì´ ìš”êµ¬í•˜ëŠ” 모든 ì‚¬ìš©ìž ê¶Œí•œ ì‹ë³„(예: ì¸í„°ë„· 액세스 ë˜ëŠ” 사용ìžì˜ ì—°ë½ì²˜ë¡œì˜
ì½ê¸° 액세스)</li>
<li>ì•±ì´ ì–´ëŠ API를 사용하는지를 근거로 하여 앱ì—서 요구하는 최소 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API 레벨</a>
ì„ ì–¸</li>
- <li>앱ì—서 사용하거나 필요로 하는 하드웨어 ë° ì†Œí”„íŠ¸ì›¨ì–´ 기능 ì„ ì–¸(예: ì¹´ë©”ë¼,
+ <li>앱ì—서 사용하거나 필요로 하는 하드웨어 ë° ì†Œí”„íŠ¸ì›¨ì–´ 기능 ì„ ì–¸(예: ì¹´ë©”ë¼,
블루투스 서비스 ë˜ëŠ” 멀티터치 화면 등)</li>
- <li>ì•±ì´ ë§í¬ë˜ì–´ì•¼ 하는 API ë¼ì´ë¸ŒëŸ¬ë¦¬(Android 프레임워í¬
+ <li>ì•±ì´ ë§í¬ë˜ì–´ì•¼ 하는 API ë¼ì´ë¸ŒëŸ¬ë¦¬(Android 프레임워í¬
API 제외)(예: <a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps
ë¼ì´ë¸ŒëŸ¬ë¦¬</a>)</li>
<li>그 외 기타 등등</li>
@@ -267,7 +267,7 @@ API 제외)(예: <a href="http://code.google.com/android/add-ons/google-apis/map
<h3 id="DeclaringComponents">구성 요소 선언</h3>
-<p>ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì˜ ì£¼ìš” ìž‘ì—…ì€ ì‹œìŠ¤í…œì— ì•±ì˜ êµ¬ì„± ìš”ì†Œì— ëŒ€í•´ 알리는 것입니다. 예를 들어
+<p>ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì˜ ì£¼ìš” ìž‘ì—…ì€ ì‹œìŠ¤í…œì— ì•±ì˜ êµ¬ì„± ìš”ì†Œì— ëŒ€í•´ 알리는 것입니다. 예를 들어
매니페스트 파ì¼ì€ 액티비티를 다ìŒê³¼ ê°™ì´ ì„ ì–¸í•  수 있습니다. </p>
<pre>
@@ -283,36 +283,36 @@ API 제외)(예: <a href="http://code.google.com/android/add-ons/google-apis/map
<p><code><a
href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-요소ì—서 {@code android:icon} ì†ì„±ì€ ì•±ì„ ì‹ë³„하는 ì•„ì´ì½˜ì— 대한 리소스를
+요소ì—서 {@code android:icon} ì†ì„±ì€ ì•±ì„ ì‹ë³„하는 ì•„ì´ì½˜ì— 대한 리소스를
가리킵니다.</p>
<p><code><a
-href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 요소ì—서는,
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 요소ì—서는,
{@code android:name} ì†ì„±ì´ {@link
-android.app.Activity} 하위 í´ëž˜ìŠ¤ì˜ ì™„ì „ížˆ ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„ì„ ë‚˜íƒ€ë‚´ë©° {@code android:label} ì†ì„±ì€ 액티비티ì˜
+android.app.Activity} 하위 í´ëž˜ìŠ¤ì˜ ì™„ì „ížˆ ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„ì„ ë‚˜íƒ€ë‚´ë©° {@code android:label} ì†ì„±ì€ 액티비티ì˜
사용ìžì—게 표시ë˜ëŠ” ë ˆì´ë¸”로 사용할 문ìžì—´ì„ 나타냅니다.</p>
<p>모든 앱 구성 요소를 ì´ë ‡ê²Œ 선언해야 합니다.</p>
<ul>
- <li>액티비티는
+ <li>액티비티는
<code><a
href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 요소</li>
- <li>서비스는
+ <li>서비스는
<code><a
href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> 요소</li>
- <li>브로드ìºìŠ¤íŠ¸ 수신기는
+ <li>브로드ìºìŠ¤íŠ¸ 수신기는
<code><a
href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code> 요소</li>
- <li>콘í…츠 제공ìžëŠ”
+ <li>콘í…츠 제공ìžëŠ”
<code><a
href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 요소</li>
</ul>
-<p>액티비티, 서비스를 비롯하여 소스ì—는 í¬í•¨ì‹œí‚¤ì§€ë§Œ 매니페스트ì—서는 선언하지 않는
-콘í…츠 제공ìžëŠ” ì‹œìŠ¤í…œì— í‘œì‹œë˜ì§€ 않으며, ë”°ë¼ì„œ ì‹¤í–‰ë  ìˆ˜ 없습니다. 그러나
+<p>액티비티, 서비스를 비롯하여 소스ì—는 í¬í•¨ì‹œí‚¤ì§€ë§Œ 매니페스트ì—서는 선언하지 않는
+콘í…츠 제공ìžëŠ” ì‹œìŠ¤í…œì— í‘œì‹œë˜ì§€ 않으며, ë”°ë¼ì„œ ì‹¤í–‰ë  ìˆ˜ 없습니다. 그러나
브로드ìºìŠ¤íŠ¸
수신기는 매니페스트ì—서 ì„ ì–¸í•´ë„ ë˜ê³  코드를 사용해(
-{@link android.content.BroadcastReceiver} ê°ì²´ë¡œ) ë™ì ìœ¼ë¡œ ìƒì„±í•œ ë‹¤ìŒ ì‹œìŠ¤í…œì— ë“±ë¡í•´ë„ ë©ë‹ˆë‹¤. ì´ë•Œ
+{@link android.content.BroadcastReceiver} ê°ì²´ë¡œ) ë™ì ìœ¼ë¡œ ìƒì„±í•œ ë‹¤ìŒ ì‹œìŠ¤í…œì— ë“±ë¡í•´ë„ ë©ë‹ˆë‹¤. ì´ë•Œ
{@link android.content.Context#registerReceiver registerReceiver()}를 호출하는 ë°©ë²•ì„ ì”니다.</p>
<p>ì•±ì— ë§žëŠ” 매니페스트 파ì¼ì„ 구성하는 ë°©ë²•ì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€ <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml 파ì¼</a>ì„
@@ -322,26 +322,26 @@ href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a
<h3 id="DeclaringComponentCapabilities">구성 요소 기능 선언</h3>
-<p>위ì—서 논한 바와 ê°™ì´, <a href="#ActivatingComponents">활성화 ìƒíƒœì˜ 구성 요소</a>ì—서는
-{@link android.content.Intent}를 사용하여 액티비티, 서비스 ë° ë¸Œë¡œë“œìºìŠ¤íŠ¸ 수신기를 시작할 수 있습니다. 그렇게 하려면
-ëŒ€ìƒ êµ¬ì„± 요소를 ì¸í…트 ë‚´ì—서 명시ì ìœ¼ë¡œ 명명하면 ë©ë‹ˆë‹¤(구성 요소 í´ëž˜ìФ ì´ë¦„ì„ ì‚¬ìš©). 그러나,
-ì¸í…íŠ¸ì˜ ì§„ì •í•œ íž˜ì€ <em>ì•”ì‹œì  ì¸í…트</em>ì˜ ê°œë…ì—서 발휘ë©ë‹ˆë‹¤. ì•”ì‹œì  ì¸í…트는
-그저 수행할 ìž‘ì—…ì˜ ìœ í˜•ì„ ì„¤ëª…í•  ë¿ì´ë©°(ë˜í•œ, ì„ íƒ ì‚¬í•­ìœ¼ë¡œ, 해당 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê³ ìž í•˜ëŠ”
-ë°ì´í„° 위치ë„) ì‹œìŠ¤í…œì— ê¸°ê¸°ì—서 ìž‘ì—…ì„ ìˆ˜í–‰í•  수 있는 구성 요소를 찾아
-시작하ë„ë¡ í•´ì¤ë‹ˆë‹¤. ì¸í…트가 설명한 ìž‘ì—…ì„ ìˆ˜í–‰í•  수 있는 구성 요소가 여러 ê°œì¸ ê²½ìš°,
+<p>위ì—서 논한 바와 ê°™ì´, <a href="#ActivatingComponents">활성화 ìƒíƒœì˜ 구성 요소</a>ì—서는
+{@link android.content.Intent}를 사용하여 액티비티, 서비스 ë° ë¸Œë¡œë“œìºìŠ¤íŠ¸ 수신기를 시작할 수 있습니다. 그렇게 하려면
+ëŒ€ìƒ êµ¬ì„± 요소를 ì¸í…트 ë‚´ì—서 명시ì ìœ¼ë¡œ 명명하면 ë©ë‹ˆë‹¤(구성 요소 í´ëž˜ìФ ì´ë¦„ì„ ì‚¬ìš©). 그러나,
+ì¸í…íŠ¸ì˜ ì§„ì •í•œ íž˜ì€ <em>ì•”ì‹œì  ì¸í…트</em>ì˜ ê°œë…ì—서 발휘ë©ë‹ˆë‹¤. ì•”ì‹œì  ì¸í…트는
+그저 수행할 ìž‘ì—…ì˜ ìœ í˜•ì„ ì„¤ëª…í•  ë¿ì´ë©°(ë˜í•œ, ì„ íƒ ì‚¬í•­ìœ¼ë¡œ, 해당 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê³ ìž í•˜ëŠ”
+ë°ì´í„° 위치ë„) ì‹œìŠ¤í…œì— ê¸°ê¸°ì—서 ìž‘ì—…ì„ ìˆ˜í–‰í•  수 있는 구성 요소를 찾아
+시작하ë„ë¡ í•´ì¤ë‹ˆë‹¤. ì¸í…트가 설명한 ìž‘ì—…ì„ ìˆ˜í–‰í•  수 있는 구성 요소가 여러 ê°œì¸ ê²½ìš°,
ì–´ëŠ ê²ƒì„ ì‚¬ìš©í• ì§€ 사용ìžê°€ ì„ íƒí•©ë‹ˆë‹¤.</p>
-<p>ì‹œìŠ¤í…œì´ ì¸í…íŠ¸ì— ì‘답할 수 있는 구성 요소를 ì‹ë³„하는 ë°©ë²•ì€ ìˆ˜ì‹ í•œ ì¸í…트를
- <i>ì¸í…트 í•„í„°</i> 와 비êµí•˜ëŠ” 것입니다. ì´ ì¸í…트 필터는 ê¸°ê¸°ì˜ ë‹¤ë¥¸ 여러 ì•±ì˜ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸
+<p>ì‹œìŠ¤í…œì´ ì¸í…íŠ¸ì— ì‘답할 수 있는 구성 요소를 ì‹ë³„하는 ë°©ë²•ì€ ìˆ˜ì‹ í•œ ì¸í…트를
+ <i>ì¸í…트 í•„í„°</i> 와 비êµí•˜ëŠ” 것입니다. ì´ ì¸í…트 필터는 ê¸°ê¸°ì˜ ë‹¤ë¥¸ 여러 ì•±ì˜ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸
파ì¼ì´ 제공합니다.</p>
-<p>ì•±ì˜ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì—서 액티비티를 선언하는 경우, ì„ íƒ ì‚¬í•­ìœ¼ë¡œ
-해당 ì•¡í‹°ë¹„í‹°ì˜ ê¸°ëŠ¥ì„ ì„ ì–¸í•˜ëŠ” ì¸í…트 필터를 í¬í•¨ì‹œì¼œì„œ 다른 ì•±ìœ¼ë¡œë¶€í„°ì˜ ì¸í…트ì—
-ì‘답할 수 있ë„ë¡ í•  수 있습니다. 구성 ìš”ì†Œì— ëŒ€í•œ ì¸í…트 필터를 선언하려면
+<p>ì•±ì˜ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì—서 액티비티를 선언하는 경우, ì„ íƒ ì‚¬í•­ìœ¼ë¡œ
+해당 ì•¡í‹°ë¹„í‹°ì˜ ê¸°ëŠ¥ì„ ì„ ì–¸í•˜ëŠ” ì¸í…트 필터를 í¬í•¨ì‹œì¼œì„œ 다른 ì•±ìœ¼ë¡œë¶€í„°ì˜ ì¸í…트ì—
+ì‘답할 수 있ë„ë¡ í•  수 있습니다. 구성 ìš”ì†Œì— ëŒ€í•œ ì¸í…트 필터를 선언하려면
<a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
&lt;intent-filter&gt;}</a> 요소를 해당 구성 ìš”ì†Œì˜ ì„ ì–¸ 요소 하위로 추가하면 ë©ë‹ˆë‹¤.</p>
-<p>예를 들어, 새 ì´ë©”ì¼ì„ 작성하는 ë° ì“°ëŠ” 액티비티가 있는 ì´ë©”ì¼ ì•±ì„ êµ¬ì¶•í–ˆë‹¤ê³  가정합시다. ì´ë•Œ "전송" ì¸í…트ì—
+<p>예를 들어, 새 ì´ë©”ì¼ì„ 작성하는 ë° ì“°ëŠ” 액티비티가 있는 ì´ë©”ì¼ ì•±ì„ êµ¬ì¶•í–ˆë‹¤ê³  가정합시다. ì´ë•Œ "전송" ì¸í…트ì—
ì‘답하는 ì¸í…트 필터를 선언하려면(새 ì´ë©”ì¼ì„ 전송하기 위해) 다ìŒê³¼ ê°™ì´ í•˜ë©´ ë©ë‹ˆë‹¤.</p>
<pre>
&lt;manifest ... >
@@ -360,7 +360,7 @@ href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a
<p>그런 다ìŒ, 다른 ì•±ì´ {@link
android.content.Intent#ACTION_SEND} ìž‘ì—…ì„ ê°€ì§„ ì¸í…트를 ìƒì„±í•˜ì—¬ ê·¸ê²ƒì„ {@link android.app.Activity#startActivity
-startActivity()}로 전달하면 ì‹œìŠ¤í…œì´ ì—¬ëŸ¬ë¶„ì˜ ì•¡í‹°ë¹„í‹°ë¥¼ 시작하여 사용ìžê°€ ì´ë©”ì¼ì„ 임시 보관하고 전송할 수
+startActivity()}로 전달하면 ì‹œìŠ¤í…œì´ ì—¬ëŸ¬ë¶„ì˜ ì•¡í‹°ë¹„í‹°ë¥¼ 시작하여 사용ìžê°€ ì´ë©”ì¼ì„ 임시 보관하고 전송할 수
있습니다.</p>
<p>ì¸í…트 í•„í„° ìƒì„±ì— 관한 ìžì„¸í•œ ë‚´ìš©ì€ <a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트 ë° ì¸í…트 í•„í„°</a> 문서를 참조하십시오.
@@ -370,16 +370,16 @@ startActivity()}로 전달하면 ì‹œìŠ¤í…œì´ ì—¬ëŸ¬ë¶„ì˜ ì•¡í‹°ë¹„í‹°ë¥¼ 시ìž
<h3 id="DeclaringRequirements">앱 요구 사항 선언</h3>
-<p>Android로 구ë™ë˜ëŠ” 기기는 ìˆ˜ì—†ì´ ë§Žì§€ë§Œ ëª¨ë‘ ë˜‘ê°™ì€ íŠ¹ì§•ì„ ê°–ê³  ê°™ì€
-ê¸°ëŠ¥ì„ ì œê³µí•˜ëŠ” ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. ì•±ì´ í•„ìš”ë¡œ 하는 ê¸°ëŠ¥ì´ ë¶€ì¡±í•œ ê¸°ê¸°ì— ì•±ì„ ì„¤ì¹˜í•˜ê²Œ ë˜ëŠ” 불ìƒì‚¬ë¥¼ 방지하려면,
-ì•±ì´ ì§€ì›í•˜ëŠ” 기기 ìœ í˜•ì— ëŒ€í•œ í”„ë¡œí•„ì„ ëª…í™•í•˜ê²Œ ì •ì˜í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤.
-그러려면 매니페스트 파ì¼ì— 기기와 소프트웨어 요구 사항ì„
-선언하면 ë©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ ì„ ì–¸ì€ ëŒ€ë¶€ë¶„ ì •ë³´ì„±ì¼ ë¿ì´ë©° ì‹œìŠ¤í…œì€ ì´ë¥¼ ì½ì§€ 않는 ê²ƒì´ ì¼ë°˜ì ì´ì§€ë§Œ,
-Google Play와 ê°™ì€ ì™¸ë¶€ 서비스는 사용ìžê°€ 본ì¸ì˜ 기기ì—서 ì•±ì„ ê²€ìƒ‰í•  때 í•„í„°ë§ì„ 제공하기 위해
+<p>Android로 구ë™ë˜ëŠ” 기기는 ìˆ˜ì—†ì´ ë§Žì§€ë§Œ ëª¨ë‘ ë˜‘ê°™ì€ íŠ¹ì§•ì„ ê°–ê³  ê°™ì€
+ê¸°ëŠ¥ì„ ì œê³µí•˜ëŠ” ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. ì•±ì´ í•„ìš”ë¡œ 하는 ê¸°ëŠ¥ì´ ë¶€ì¡±í•œ ê¸°ê¸°ì— ì•±ì„ ì„¤ì¹˜í•˜ê²Œ ë˜ëŠ” 불ìƒì‚¬ë¥¼ 방지하려면,
+ì•±ì´ ì§€ì›í•˜ëŠ” 기기 ìœ í˜•ì— ëŒ€í•œ í”„ë¡œí•„ì„ ëª…í™•í•˜ê²Œ ì •ì˜í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤.
+그러려면 매니페스트 파ì¼ì— 기기와 소프트웨어 요구 사항ì„
+선언하면 ë©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ ì„ ì–¸ì€ ëŒ€ë¶€ë¶„ ì •ë³´ì„±ì¼ ë¿ì´ë©° ì‹œìŠ¤í…œì€ ì´ë¥¼ ì½ì§€ 않는 ê²ƒì´ ì¼ë°˜ì ì´ì§€ë§Œ,
+Google Play와 ê°™ì€ ì™¸ë¶€ 서비스는 사용ìžê°€ 본ì¸ì˜ 기기ì—서 ì•±ì„ ê²€ìƒ‰í•  때 í•„í„°ë§ì„ 제공하기 위해
ì´ì™€ ê°™ì€ ì„ ì–¸ë„ ì½ìŠµë‹ˆë‹¤.</p>
-<p>예를 들어, ì•±ì— ì¹´ë©”ë¼ê°€ 필요하고 Android 2.1부터 ë„ìž…ëœ API를 사용하는 경우(<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API 레벨</a> 7)
-ì´ê³¼ ê°™ì€ ë‚´ìš©ì„ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ 파ì¼ì— 요구 사항으로 선언하려면 다ìŒê³¼ ê°™ì´ í•©ë‹ˆë‹¤.</p>
+<p>예를 들어, ì•±ì— ì¹´ë©”ë¼ê°€ 필요하고 Android 2.1부터 ë„ìž…ëœ API를 사용하는 경우(<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API 레벨</a> 7)
+ì´ê³¼ ê°™ì€ ë‚´ìš©ì„ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ 파ì¼ì— 요구 사항으로 선언하려면 다ìŒê³¼ ê°™ì´ í•©ë‹ˆë‹¤.</p>
<pre>
&lt;manifest ... >
@@ -390,15 +390,15 @@ Google Play와 ê°™ì€ ì™¸ë¶€ 서비스는 사용ìžê°€ 본ì¸ì˜ 기기ì—서 ì•
&lt;/manifest>
</pre>
-<p>ì´ì œ ì¹´ë©”ë¼ê°€ <em>없고</em> Android ë²„ì „ì´ 2.1 <em>ì´í•˜</em>ì¸ ê¸°ê¸°ëŠ”
+<p>ì´ì œ ì¹´ë©”ë¼ê°€ <em>없고</em> Android ë²„ì „ì´ 2.1 <em>ì´í•˜</em>ì¸ ê¸°ê¸°ëŠ”
Google Playì—서 ì—¬ëŸ¬ë¶„ì˜ ì•±ì„ ì„¤ì¹˜í•  수 없습니다.</p>
-<p>그러나, ì•±ì´ ì¹´ë©”ë¼ë¥¼ 사용하기는 하지만 ê¼­
+<p>그러나, ì•±ì´ ì¹´ë©”ë¼ë¥¼ 사용하기는 하지만 ê¼­
<em>필요한</em> ê²ƒì€ ì•„ë‹ˆë¼ê³  선언할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ ê²½ìš°ì—는, ì•±ì´ <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a>
- ì†ì„±ì„ {@code "false"}ì— ì„¤ì •í•˜ê³  ëŸ°íƒ€ìž„ì„ í™•ì¸í•˜ì—¬
+ ì†ì„±ì„ {@code "false"}ì— ì„¤ì •í•˜ê³  ëŸ°íƒ€ìž„ì„ í™•ì¸í•˜ì—¬
해당 ê¸°ê¸°ì— ì¹´ë©”ë¼ê°€ 있는지, ê²½ìš°ì— ë”°ë¼ ëª¨ë“  ì¹´ë©”ë¼ ê¸°ëŠ¥ì„ ë¹„í™œì„±í™”í•  수 있는지 알아봅니다.</p>
-<p>여러 가지 기기와 ì•±ì˜ í˜¸í™˜ì„±ì„ ê´€ë¦¬í•˜ëŠ” ë°©ë²•ì— ëŒ€í•œ ìžì„¸í•œ 정보는
+<p>여러 가지 기기와 ì•±ì˜ í˜¸í™˜ì„±ì„ ê´€ë¦¬í•˜ëŠ” ë°©ë²•ì— ëŒ€í•œ ìžì„¸í•œ 정보는
<a href="{@docRoot}guide/practices/compatibility.html">기기 호환성</a>
문서를 참조하십시오.</p>
@@ -407,40 +407,40 @@ Google Playì—서 ì—¬ëŸ¬ë¶„ì˜ ì•±ì„ ì„¤ì¹˜í•  수 없습니다.</p>
<h2 id="Resources">앱 리소스</h2>
<p>Android ì•±ì„ ì´ë£¨ëŠ” ê²ƒì€ ì½”ë“œë§Œì´ ì•„ë‹™ë‹ˆë‹¤. 소스 코드와는 ë³„ê°œì¸ ì—¬ëŸ¬ 리소스가 필요합니다.
-예를 들어 ì´ë¯¸ì§€, 오디오 파ì¼ê³¼ ì•±ì„ ì‹œê°ì ìœ¼ë¡œ 표현하는 것과 ê´€ë ¨ëœ ëª¨ë“  ê²ƒë“¤ì´ ìžˆìŠµë‹ˆë‹¤.
-예컨대 애니메ì´ì…˜, 메뉴, 스타ì¼, 색ìƒê³¼ 액티비티 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì˜ ë ˆì´ì•„ì›ƒì„ XML 파ì¼ë¡œ
-ì •ì˜í•´ì•¼ 합니다. 앱 리소스를 사용하면 ì•±ì˜ ë‹¤ì–‘í•œ 특성ì„
-쉽게 ì—…ë°ì´íŠ¸í•  수 있으며 코드를 수정하지 ì•Šì•„ë„ ë˜ê³  ì¼ë ¨ì˜ 대체 리소스를
-ì œê³µí•¨ìœ¼ë¡œì¨ ë‹¤ì–‘í•œ 기기 êµ¬ì„±ì— ë§žê²Œ 앱ì„
+예를 들어 ì´ë¯¸ì§€, 오디오 파ì¼ê³¼ ì•±ì„ ì‹œê°ì ìœ¼ë¡œ 표현하는 것과 ê´€ë ¨ëœ ëª¨ë“  ê²ƒë“¤ì´ ìžˆìŠµë‹ˆë‹¤.
+예컨대 애니메ì´ì…˜, 메뉴, 스타ì¼, 색ìƒê³¼ 액티비티 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì˜ ë ˆì´ì•„ì›ƒì„ XML 파ì¼ë¡œ
+ì •ì˜í•´ì•¼ 합니다. 앱 리소스를 사용하면 ì•±ì˜ ë‹¤ì–‘í•œ 특성ì„
+쉽게 ì—…ë°ì´íŠ¸í•  수 있으며 코드를 수정하지 ì•Šì•„ë„ ë˜ê³  ì¼ë ¨ì˜ 대체 리소스를
+ì œê³µí•¨ìœ¼ë¡œì¨ ë‹¤ì–‘í•œ 기기 êµ¬ì„±ì— ë§žê²Œ 앱ì„
최ì í™”í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(예: 여러 가지 언어 ë° í™”ë©´ í¬ê¸°).</p>
-<p>Android 프로ì íŠ¸ì— í¬í•¨ì‹œí‚¤ëŠ” 리소스마다 SDK 빌드 ë„구가 고유한
-정수 ID를 ì •ì˜í•˜ë¯€ë¡œ, ì´ë¥¼ 사용하여 앱 코드ì—ì„œì˜ ë¦¬ì†ŒìŠ¤ë‚˜ XML로 ì •ì˜ëœ
+<p>Android 프로ì íŠ¸ì— í¬í•¨ì‹œí‚¤ëŠ” 리소스마다 SDK 빌드 ë„구가 고유한
+정수 ID를 ì •ì˜í•˜ë¯€ë¡œ, ì´ë¥¼ 사용하여 앱 코드ì—ì„œì˜ ë¦¬ì†ŒìŠ¤ë‚˜ XML로 ì •ì˜ëœ
다른 리소스ì—서 참조할 수 있습니다. 예를 들어 ì•±ì— {@code
-logo.png}ë¼ëŠ” ì´ë¦„ì˜ ì´ë¯¸ì§€ 파ì¼ì´ 들어 있다고 하면({@code res/drawable/} ë””ë ‰í„°ë¦¬ì— ì €ìž¥ë¨) SDK ë„구가
-{@code R.drawable.logo}ë¼ëŠ” 리소스 ID를 ìƒì„±í•©ë‹ˆë‹¤. ì´ê²ƒì„ 사용하여 ì´ë¯¸ì§€ë¥¼ 참조하고 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФì—
+logo.png}ë¼ëŠ” ì´ë¦„ì˜ ì´ë¯¸ì§€ 파ì¼ì´ 들어 있다고 하면({@code res/drawable/} ë””ë ‰í„°ë¦¬ì— ì €ìž¥ë¨) SDK ë„구가
+{@code R.drawable.logo}ë¼ëŠ” 리소스 ID를 ìƒì„±í•©ë‹ˆë‹¤. ì´ê²ƒì„ 사용하여 ì´ë¯¸ì§€ë¥¼ 참조하고 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФì—
삽입할 수 있습니다.</p>
-<p>소스 코드와는 별개로 리소스를 제공하는 ê²ƒì˜ ê°€ìž¥ 중요한 측면 중 하나는
-여러 가지 기기 êµ¬ì„±ì— ë§žê²Œ 대체 리소스를 제공할 ëŠ¥ë ¥ì„ ê°–ì¶”ê²Œ
-ë©ë‹ˆë‹¤. 예를 들어 UI 문ìžì—´ì„ XML로 ì •ì˜í•˜ë©´ ì´ëŸ¬í•œ 문ìžì—´ì„ 다른 언어로 변환한 ë’¤
+<p>소스 코드와는 별개로 리소스를 제공하는 ê²ƒì˜ ê°€ìž¥ 중요한 측면 중 하나는
+여러 가지 기기 êµ¬ì„±ì— ë§žê²Œ 대체 리소스를 제공할 ëŠ¥ë ¥ì„ ê°–ì¶”ê²Œ
+ë©ë‹ˆë‹¤. 예를 들어 UI 문ìžì—´ì„ XML로 ì •ì˜í•˜ë©´ ì´ëŸ¬í•œ 문ìžì—´ì„ 다른 언어로 변환한 ë’¤
그러한 문ìžì—´ì„ ë³„ê°œì˜ íŒŒì¼ì— 저장할 수 있습니다. 그런 다ìŒ, 리소스 디렉터리 ì´ë¦„ì— ì¶”ê°€í•œ 언어 <em>한정ìž</em>
-(예를 들어 프랑스어 문ìžì—´ ê°’ì˜ ê²½ìš° {@code res/values-fr/}) ë°
-사용ìžì˜ 언어 ì„¤ì •ì„ ê·¼ê±°ë¡œ 하여 Android ì‹œìŠ¤í…œì´ ì ì ˆí•œ 언어 문ìžì—´ì„ UIì—
+(예를 들어 프랑스어 문ìžì—´ ê°’ì˜ ê²½ìš° {@code res/values-fr/}) ë°
+사용ìžì˜ 언어 ì„¤ì •ì„ ê·¼ê±°ë¡œ 하여 Android ì‹œìŠ¤í…œì´ ì ì ˆí•œ 언어 문ìžì—´ì„ UIì—
ì ìš©í•˜ëŠ” 것입니다.</p>
<p>Android는 대체 ë¦¬ì†ŒìŠ¤ì— ëŒ€í•´ 다양한 <em>한정ìž</em>를 ì§€ì›í•©ë‹ˆë‹¤. 한정ìžëž€
- 리소스 ë””ë ‰í„°ë¦¬ì˜ ì´ë¦„ì— í¬í•¨ì‹œí‚¤ëŠ” ì§§ì€ ë¬¸ìžì—´ë¡œ, ì´ë¥¼ 사용해 해당 리소스를 사용할 기기 구성ì„
-ì •ì˜í•©ë‹ˆë‹¤. ë˜ ë‹¤ë¥¸ 예를 들ìžë©´,
-ê¸°ê¸°ì˜ í™”ë©´ 방향과 í¬ê¸°ì— ë”°ë¼ ì•¡í‹°ë¹„í‹°ì— ì—¬ëŸ¬ 가지 ë ˆì´ì•„ì›ƒì„ ìƒì„±í•´ì•¼ í•  때가
-많습니다. 예를 들어 기기 í™”ë©´ì´ ì„¸ë¡œ
-ë°©í–¥(키가 í¼)ì¸ ê²½ìš°, ë²„íŠ¼ì´ ì„¸ë¡œ 방향으로 ë˜ì–´ 있는 ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•˜ëŠ” ê²ƒì´ ì¢‹ì§€ë§Œ 화면ì´
-가로 ë°©í–¥(í­ì´ ë„“ìŒ)ì¸ ê²½ìš°, ë²„íŠ¼ì´ ê°€ë¡œ 방향으로 ì •ë ¬ë˜ì–´ì•¼ 합니다. ë°©í–¥ì— ë”°ë¼ ë ˆì´ì•„ì›ƒì„ ë³€ê²½í•˜ë ¤ë©´,
-서로 다른 ë‘ ê°€ì§€ ë ˆì´ì•„ì›ƒì„ ì •ì˜í•˜ì—¬ ì ì ˆí•œ 한정ìžë¥¼ ê°ê°ì˜ ë ˆì´ì•„ì›ƒì˜ ë””ë ‰í„°ë¦¬ ì´ë¦„ì—
-ì ìš©í•˜ë©´ ë©ë‹ˆë‹¤. 그러면 ì‹œìŠ¤í…œì´ í˜„ìž¬ 기기 ë°©í–¥ì— ë”°ë¼ ì ì ˆí•œ ë ˆì´ì•„웃ì„
+ 리소스 ë””ë ‰í„°ë¦¬ì˜ ì´ë¦„ì— í¬í•¨ì‹œí‚¤ëŠ” ì§§ì€ ë¬¸ìžì—´ë¡œ, ì´ë¥¼ 사용해 해당 리소스를 사용할 기기 구성ì„
+ì •ì˜í•©ë‹ˆë‹¤. ë˜ ë‹¤ë¥¸ 예를 들ìžë©´,
+ê¸°ê¸°ì˜ í™”ë©´ 방향과 í¬ê¸°ì— ë”°ë¼ ì•¡í‹°ë¹„í‹°ì— ì—¬ëŸ¬ 가지 ë ˆì´ì•„ì›ƒì„ ìƒì„±í•´ì•¼ í•  때가
+많습니다. 예를 들어 기기 í™”ë©´ì´ ì„¸ë¡œ
+ë°©í–¥(키가 í¼)ì¸ ê²½ìš°, ë²„íŠ¼ì´ ì„¸ë¡œ 방향으로 ë˜ì–´ 있는 ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•˜ëŠ” ê²ƒì´ ì¢‹ì§€ë§Œ 화면ì´
+가로 ë°©í–¥(í­ì´ ë„“ìŒ)ì¸ ê²½ìš°, ë²„íŠ¼ì´ ê°€ë¡œ 방향으로 ì •ë ¬ë˜ì–´ì•¼ 합니다. ë°©í–¥ì— ë”°ë¼ ë ˆì´ì•„ì›ƒì„ ë³€ê²½í•˜ë ¤ë©´,
+서로 다른 ë‘ ê°€ì§€ ë ˆì´ì•„ì›ƒì„ ì •ì˜í•˜ì—¬ ì ì ˆí•œ 한정ìžë¥¼ ê°ê°ì˜ ë ˆì´ì•„ì›ƒì˜ ë””ë ‰í„°ë¦¬ ì´ë¦„ì—
+ì ìš©í•˜ë©´ ë©ë‹ˆë‹¤. 그러면 ì‹œìŠ¤í…œì´ í˜„ìž¬ 기기 ë°©í–¥ì— ë”°ë¼ ì ì ˆí•œ ë ˆì´ì•„웃ì„
ìžë™ìœ¼ë¡œ ì ìš©í•©ë‹ˆë‹¤.</p>
-<p>애플리케ì´ì…˜ì— í¬í•¨í•  수 있는 여러 가지 ì¢…ë¥˜ì˜ ë¦¬ì†ŒìŠ¤ì™€, ê°ê¸° 다른 기기 êµ¬ì„±ì— ë”°ë¼
+<p>애플리케ì´ì…˜ì— í¬í•¨í•  수 있는 여러 가지 ì¢…ë¥˜ì˜ ë¦¬ì†ŒìŠ¤ì™€, ê°ê¸° 다른 기기 êµ¬ì„±ì— ë”°ë¼
대체 리소스를 ìƒì„±í•˜ëŠ” ë°©ë²•ì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€ <a href="{@docRoot}guide/topics/resources/providing-resources.html">리소스 제공</a>ì„ ì½ì–´ë³´ì‹­ì‹œì˜¤.</p>
@@ -451,15 +451,15 @@ logo.png}ë¼ëŠ” ì´ë¦„ì˜ ì´ë¯¸ì§€ 파ì¼ì´ 들어 있다고 하면({@code res
<dl>
<dt><a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트 ë° ì¸í…트 í•„í„°</a>
</dt>
- <dd>{@link android.content.Intent} API를 사용하여
-앱 구성 요소(예: 액티비티 ë° ì„œë¹„ìŠ¤ 등)를 활성화하는 방법, 앱 구성 요소를 다른 여러 ì•±ì´ ì‚¬ìš©í•  수 있ë„ë¡ í•˜ëŠ” 방법
+ <dd>{@link android.content.Intent} API를 사용하여
+앱 구성 요소(예: 액티비티 ë° ì„œë¹„ìŠ¤ 등)를 활성화하는 방법, 앱 구성 요소를 다른 여러 ì•±ì´ ì‚¬ìš©í•  수 있ë„ë¡ í•˜ëŠ” 방법
ë“±ì— ê´€í•œ 정보입니다.</dd>
<dt><a href="{@docRoot}guide/components/activities.html">액티비티</a></dt>
- <dd>{@link android.app.Activity} í´ëž˜ìŠ¤ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í•˜ëŠ” ë°©ë²•ì— ê´€í•œ 정보로,
+ <dd>{@link android.app.Activity} í´ëž˜ìŠ¤ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í•˜ëŠ” ë°©ë²•ì— ê´€í•œ 정보로,
애플리케ì´ì…˜ì— ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ê°€ 있는 ë…특한 í™”ë©´ì„ ì œê³µí•©ë‹ˆë‹¤.</dd>
<dt><a href="{@docRoot}guide/topics/resources/providing-resources.html">리소스 제공</a></dt>
- <dd>Android ì•±ì´ ì•± 코드와는 ë³„ê°œì˜ ì•± ë¦¬ì†ŒìŠ¤ì— ëŒ€í•´ êµ¬ì¡°í™”ëœ ë°©ì‹ì— 관한 정보로,
-특정 기기 êµ¬ì„±ì— ë§žê²Œ 대체 리소스를 제공하는 ë°©ë²•ë„ í¬í•¨ë˜ì–´
+ <dd>Android ì•±ì´ ì•± 코드와는 ë³„ê°œì˜ ì•± ë¦¬ì†ŒìŠ¤ì— ëŒ€í•´ êµ¬ì¡°í™”ëœ ë°©ì‹ì— 관한 정보로,
+특정 기기 êµ¬ì„±ì— ë§žê²Œ 대체 리소스를 제공하는 ë°©ë²•ë„ í¬í•¨ë˜ì–´
있습니다.
</dd>
</dl>
@@ -468,11 +468,11 @@ logo.png}ë¼ëŠ” ì´ë¦„ì˜ ì´ë¯¸ì§€ 파ì¼ì´ 들어 있다고 하면({@code res
<h2 class="norule">혹시 다ìŒê³¼ ê°™ì€ ë‚´ìš©ì—ë„ í¥ë¯¸ê°€ 있으신가요?</h2>
<dl>
<dt><a href="{@docRoot}guide/practices/compatibility.html">기기 호환성</a></dt>
- <dd>여러 가지 ìœ í˜•ì˜ ê¸°ê¸°ì—서 Androidì˜ ìž‘ë™ ë°©ì‹ê³¼ ì•±ì„ ê° ê¸°ê¸°ì— ë§žì¶° 최ì í™”하는 방법
-ë˜ëŠ” 여러 가지 ê¸°ê¸°ì— ëŒ€í•´ ì•±ì˜ ê°€ìš©ì„±ì„ ì œí•œí•˜ëŠ” 방법 ë“±ì— ê´€í•œ
+ <dd>여러 가지 ìœ í˜•ì˜ ê¸°ê¸°ì—서 Androidì˜ ìž‘ë™ ë°©ì‹ê³¼ ì•±ì„ ê° ê¸°ê¸°ì— ë§žì¶° 최ì í™”하는 방법
+ë˜ëŠ” 여러 가지 ê¸°ê¸°ì— ëŒ€í•´ ì•±ì˜ ê°€ìš©ì„±ì„ ì œí•œí•˜ëŠ” 방법 ë“±ì— ê´€í•œ
정보입니다.</dd>
<dt><a href="{@docRoot}guide/topics/security/permissions.html">시스템 권한</a></dt>
- <dd>Androidê°€ 특정 APIì— ëŒ€í•œ ì•±ì˜ ì•¡ì„¸ìŠ¤ë¥¼ 제한하기 위해 권한 시스템ì„
+ <dd>Androidê°€ 특정 APIì— ëŒ€í•œ ì•±ì˜ ì•¡ì„¸ìŠ¤ë¥¼ 제한하기 위해 권한 시스템ì„
사용하는 방법으로, 그러한 API를 사용하려면 ì•±ì— ëŒ€í•´ 사용ìžì˜ 승ì¸ì´ 필요합니다.</dd>
</dl>
</div>
diff --git a/docs/html-intl/intl/ko/guide/components/index.jd b/docs/html-intl/intl/ko/guide/components/index.jd
index 36626324e817..a860c0f5349f 100644
--- a/docs/html-intl/intl/ko/guide/components/index.jd
+++ b/docs/html-intl/intl/ko/guide/components/index.jd
@@ -1,7 +1,7 @@
page.title=앱 구성 요소
page.landing=true
-page.landing.intro=Androidì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ 프레임워í¬ëŠ” ì¼ë ¨ì˜ 재사용 가능한 구성 요소를 사용하여 í’성하고 í˜ì‹ ì ì¸ ì•±ì„ ìƒì„±í•  수 있습니다. ì´ ì„¹ì…˜ì—서는 ì•±ì˜ êµ¬ì„± 단위를 ì •ì˜ ë‚´ë¦¬ëŠ” 구성 요소를 구축하는 방법과 ì¸í…트를 사용하여 ì´ì™€ ê°™ì€ êµ¬ì„± 요소를 연결시키는 ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.
-page.metaDescription=Androidì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ 프레임워í¬ëŠ” ì¼ë ¨ì˜ 재사용 가능한 구성 요소를 사용하여 í’성하고 í˜ì‹ ì ì¸ ì•±ì„ ìƒì„±í•  수 있습니다. ì´ ì„¹ì…˜ì—서는 ì•±ì˜ êµ¬ì„± 단위를 ì •ì˜ ë‚´ë¦¬ëŠ” 구성 요소를 구축하는 방법과 ì¸í…트를 사용하여 ì´ì™€ ê°™ì€ êµ¬ì„± 요소를 연결시키는 ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.
+page.landing.intro=Androidì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ 프레임워í¬ëŠ” ì¼ë ¨ì˜ 재사용 가능한 구성 요소를 사용하여 í’성하고 í˜ì‹ ì ì¸ ì•±ì„ ìƒì„±í•  수 있습니다. ì´ ì„¹ì…˜ì—서는 ì•±ì˜ êµ¬ì„± 단위를 ì •ì˜ ë‚´ë¦¬ëŠ” 구성 요소를 구축하는 방법과 ì¸í…트를 사용하여 ì´ì™€ ê°™ì€ êµ¬ì„± 요소를 연결시키는 ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.
+page.metaDescription=Androidì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ 프레임워í¬ëŠ” ì¼ë ¨ì˜ 재사용 가능한 구성 요소를 사용하여 í’성하고 í˜ì‹ ì ì¸ ì•±ì„ ìƒì„±í•  수 있습니다. ì´ ì„¹ì…˜ì—서는 ì•±ì˜ êµ¬ì„± 단위를 ì •ì˜ ë‚´ë¦¬ëŠ” 구성 요소를 구축하는 방법과 ì¸í…트를 사용하여 ì´ì™€ ê°™ì€ êµ¬ì„± 요소를 연결시키는 ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.
page.landing.image=images/develop/app_components.png
page.image=images/develop/app_components.png
@@ -11,7 +11,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>블로그 문서</h3>
-
+
<a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
<h4>DialogFragment 사용하기</h4>
<p>ì´ í¬ìŠ¤íŠ¸ì—서는 v4 ì§€ì› ë¼ì´ë¸ŒëŸ¬ë¦¬ì™€ 함께 DialogFragment를 사용하여(Honeycomb ì´ì „ 기기ì—서 ì´ì „ ë²„ì „ê³¼ì˜ í˜¸í™˜ì„±ì„ ìœ„í•´) 간단한 편집 대화를 표시하고 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 사용하여 호출 ì¤‘ì¸ ì•¡í‹°ë¹„í‹°ì— ê²°ê³¼ë¥¼ 반환하는 ë²•ì„ ë³´ì—¬ë“œë¦½ë‹ˆë‹¤.</p>
@@ -21,35 +21,35 @@ page.image=images/develop/app_components.png
<h4>모ë‘를 위한 프래그먼트</h4>
<p>Googleì—서는 오늘 ê°™ì€ í”„ëž˜ê·¸ë¨¼íŠ¸ API를 노출하는 ì •ì  ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 출시했습니다(새로운 LoaderManager와 몇 가지 다른 í´ëž˜ìŠ¤ë„ í¬í•¨). ì´ ë•ë¶„ì— Android 1.6 ì´í›„ 버전과 호환ë˜ëŠ” 애플리케ì´ì…˜ì´ 프래그먼트를 사용하여 태블릿과 호환ë˜ëŠ” ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ìƒì„±í•  수 있게 ë˜ì—ˆìŠµë‹ˆë‹¤. </p>
</a>
-
+
<a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
<h4>ì„±ëŠ¥ì„ ìœ„í•œ 다중 스레딩</h4>
- <p>ë°˜ì‘형 애플리케ì´ì…˜ì„ ìƒì„±í•  때ì—는 주요 UI 스레드가 ìµœì†Œí•œì˜ ìž‘ì—…ë§Œ
-하ë„ë¡ í•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 애플리케ì´ì…˜ì„ 중단시킬 수 있는,
+ <p>ë°˜ì‘형 애플리케ì´ì…˜ì„ ìƒì„±í•  때ì—는 주요 UI 스레드가 ìµœì†Œí•œì˜ ìž‘ì—…ë§Œ
+하ë„ë¡ í•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 애플리케ì´ì…˜ì„ 중단시킬 수 있는,
길어질 수 있는 ìž‘ì—…ì€ ëª¨ë‘ ë‹¤ë¥¸ 스레드ì—서 처리해야 합니다.</p>
</a>
</div>
<div class="col-6">
<h3>êµìœ¡</h3>
-
+
<a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
<h4>액티비티 수명 주기 관리하기</h4>
- <p>ì´ í´ëž˜ìФì—서는 ê°ê°ì˜ 액티비티
-ì¸ìŠ¤í„´ìŠ¤ê°€ 수신하는 중요한 수명 주기 콜백 메서드를 설명합니다. ë˜í•œ ì´ëŸ¬í•œ 콜백 메서드를 사용하여 액티비티가
+ <p>ì´ í´ëž˜ìФì—서는 ê°ê°ì˜ 액티비티
+ì¸ìŠ¤í„´ìŠ¤ê°€ 수신하는 중요한 수명 주기 콜백 메서드를 설명합니다. ë˜í•œ ì´ëŸ¬í•œ 콜백 메서드를 사용하여 액티비티가
사용ìžê°€ ì›í•˜ëŠ” ìž‘ì—…ì„ í•˜ê³ , 액티비티가 필요로 하지 ì•Šì„ ë•Œ 시스템 리소스 ì‚¬ìš©ì„ ë°©ì§€í•˜ëŠ” ë°©ë²•ì— ëŒ€í•´ì„œë„ ì„¤ëª…í•©ë‹ˆë‹¤.</p>
</a>
<a href="http://developer.android.com/training/basics/fragments/index.html">
<h4>프래그먼트로 ë™ì  UI 구축하기</h4>
- <p>ì´ í´ëž˜ìФì—서는 Android 1.6ë§Œí¼ ì˜¤ëž˜ëœ ë²„ì „ì„ ì‹¤í–‰í•˜ëŠ” 기기ë„
-ê³„ì† ì§€ì›í•˜ë©´ì„œ 프래그먼트로 ë™ì  ì‚¬ìš©ìž ê²½í—˜ì„ ìƒì„±í•˜ê³ , ê¸°ê¸°ì˜ í™”ë©´ í¬ê¸°ì— ë”°ë¼ ì•±ì˜ ì‚¬ìš©ìž í™˜ê²½ì„
+ <p>ì´ í´ëž˜ìФì—서는 Android 1.6ë§Œí¼ ì˜¤ëž˜ëœ ë²„ì „ì„ ì‹¤í–‰í•˜ëŠ” 기기ë„
+ê³„ì† ì§€ì›í•˜ë©´ì„œ 프래그먼트로 ë™ì  ì‚¬ìš©ìž ê²½í—˜ì„ ìƒì„±í•˜ê³ , ê¸°ê¸°ì˜ í™”ë©´ í¬ê¸°ì— ë”°ë¼ ì•±ì˜ ì‚¬ìš©ìž í™˜ê²½ì„
최ì í™”í•  수 있는 ë°©ë²•ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.</p>
</a>
<a href="http://developer.android.com/training/sharing/index.html">
<h4>콘í…츠 공유하기</h4>
- <p>ì´ í´ëž˜ìŠ¤ëŠ” ì¸í…트 API와 ActionProvider ê°ì²´ë¥¼ 사용하여 여러 애플리케ì´ì…˜ 사ì´ì—서
+ <p>ì´ í´ëž˜ìŠ¤ëŠ” ì¸í…트 API와 ActionProvider ê°ì²´ë¥¼ 사용하여 여러 애플리케ì´ì…˜ 사ì´ì—서
콘í…츠를 전송하고 수신하는 몇 가지 보편ì ì¸ ë°©ë²•ì„ ë‹¤ë£¹ë‹ˆë‹¤.</p>
</a>
</div>
diff --git a/docs/html-intl/intl/ko/guide/components/loaders.jd b/docs/html-intl/intl/ko/guide/components/loaders.jd
index cfbbb9133ed4..dd02e117f7c7 100644
--- a/docs/html-intl/intl/ko/guide/components/loaders.jd
+++ b/docs/html-intl/intl/ko/guide/components/loaders.jd
@@ -21,14 +21,14 @@ parent.link=activities.html
</ol>
</li>
</ol>
-
+
<h2>Key í´ëž˜ìФ</h2>
<ol>
<li>{@link android.app.LoaderManager}</li>
<li>{@link android.content.Loader}</li>
- </ol>
-
+ </ol>
+
<h2>관련 샘플</h2>
<ol>
<li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -39,22 +39,22 @@ LoaderThrottle</a></li>
</div>
</div>
-<p>로ë”는 Android 3.0부터 ë„ìž…ëœ ê²ƒìœ¼ë¡œ, 액티비티 ë˜ëŠ” 프래그먼트ì—서 비ë™ê¸°ì‹ìœ¼ë¡œ ë°ì´í„°ë¥¼ 쉽게
+<p>로ë”는 Android 3.0부터 ë„ìž…ëœ ê²ƒìœ¼ë¡œ, 액티비티 ë˜ëŠ” 프래그먼트ì—서 비ë™ê¸°ì‹ìœ¼ë¡œ ë°ì´í„°ë¥¼ 쉽게
로딩할 수 있게 합니다. 로ë”ì˜ íŠ¹ì„±ì€ ë‹¤ìŒê³¼ 같습니다.</p>
<ul>
<li>모든 {@link android.app.Activity}와 {@link
android.app.Fragment}ì— ì‚¬ìš©í•  수 있습니다.</li>
<li>ë°ì´í„°ì˜ 비ë™ê¸°ì‹ ë¡œë”©ì„ ì œê³µí•©ë‹ˆë‹¤.</li>
- <li>ë°ì´í„°ì˜ 출처를 모니터ë§í•˜ì—¬ ê·¸ 콘í…츠가 변경ë˜ë©´ 새 결과를
+ <li>ë°ì´í„°ì˜ 출처를 모니터ë§í•˜ì—¬ ê·¸ 콘í…츠가 변경ë˜ë©´ 새 결과를
전달합니다.</li>
- <li>구성 변경 í›„ì— ìž¬ìƒì„±ëœ 경우, 마지막 로ë”ì˜ ì»¤ì„œë¡œ ìžë™ìœ¼ë¡œ
-다시 ì—°ê²°ë©ë‹ˆë‹¤. ë”°ë¼ì„œ ë°ì´í„°ë¥¼ 다시 쿼리하지 않아ë„
+ <li>구성 변경 í›„ì— ìž¬ìƒì„±ëœ 경우, 마지막 로ë”ì˜ ì»¤ì„œë¡œ ìžë™ìœ¼ë¡œ
+다시 ì—°ê²°ë©ë‹ˆë‹¤. ë”°ë¼ì„œ ë°ì´í„°ë¥¼ 다시 쿼리하지 않아ë„
ë©ë‹ˆë‹¤.</li>
</ul>
-
+
<h2 id="summary">ë¡œë” API 요약</h2>
-<p>애플리케ì´ì…˜ 안ì—서 로ë”를 사용하는 ë° ê´€ë ¨ëœ í´ëž˜ìŠ¤ì™€ ì¸í„°íŽ˜ì´ìŠ¤ëŠ”
+<p>애플리케ì´ì…˜ 안ì—서 로ë”를 사용하는 ë° ê´€ë ¨ëœ í´ëž˜ìŠ¤ì™€ ì¸í„°íŽ˜ì´ìŠ¤ëŠ”
여러 가지가 있습니다. ë‹¤ìŒ í‘œì—서 요약ë˜ì–´ 있습니다.</p>
<table>
@@ -64,16 +64,16 @@ android.app.Fragment}ì— ì‚¬ìš©í•  수 있습니다.</li>
</tr>
<tr>
<td>{@link android.app.LoaderManager}</td>
- <td>{@link android.app.Activity} ë˜ëŠ”
+ <td>{@link android.app.Activity} ë˜ëŠ”
{@link android.app.Fragment}와 ì—°ê´€ëœ ì¶”ìƒ í´ëž˜ìŠ¤ë¡œ, 하나 ì´ìƒì˜ {@link
-android.content.Loader} ì¸ìŠ¤í„´ìŠ¤ë¥¼ 관리하는 ë° ì“°ìž…ë‹ˆë‹¤. ì´ê²ƒì„ 사용하면 애플리케ì´ì…˜ì´
+android.content.Loader} ì¸ìŠ¤í„´ìŠ¤ë¥¼ 관리하는 ë° ì“°ìž…ë‹ˆë‹¤. ì´ê²ƒì„ 사용하면 애플리케ì´ì…˜ì´
{@link android.app.Activity}
- ë˜ëŠ” {@link android.app.Fragment} 수명 주기와 함께 실행 ì‹œê°„ì´ ê¸´ ìž‘ì—…ì„ ê´€ë¦¬í•˜ëŠ” ë° ë„ì›€ì´ ë©ë‹ˆë‹¤. ì´ê²ƒì˜ 가장 보편ì ì¸ 용법ì€
-{@link android.content.CursorLoader}와 함께 사용하는 것ì´ì§€ë§Œ,
+ ë˜ëŠ” {@link android.app.Fragment} 수명 주기와 함께 실행 ì‹œê°„ì´ ê¸´ ìž‘ì—…ì„ ê´€ë¦¬í•˜ëŠ” ë° ë„ì›€ì´ ë©ë‹ˆë‹¤. ì´ê²ƒì˜ 가장 보편ì ì¸ 용법ì€
+{@link android.content.CursorLoader}와 함께 사용하는 것ì´ì§€ë§Œ,
다른 ìœ í˜•ì˜ ë°ì´í„°ë¥¼ 로드하기 위해 애플리케ì´ì…˜ì´ ìžì²´ 로ë”를 작성하는 ê²ƒë„ ì–¼ë§ˆë“ ì§€ 가능합니다.
<br />
<br />
- 액티비티 ë˜ëŠ” 프래그먼트당 {@link android.app.LoaderManager}는 í•˜ë‚˜ì”©ë°–ì— ì—†ìŠµë‹ˆë‹¤. 하지만 {@link android.app.LoaderManager}ì—는 로ë”ê°€ 여러 ê°œ 있어ë„
+ 액티비티 ë˜ëŠ” 프래그먼트당 {@link android.app.LoaderManager}는 í•˜ë‚˜ì”©ë°–ì— ì—†ìŠµë‹ˆë‹¤. 하지만 {@link android.app.LoaderManager}ì—는 로ë”ê°€ 여러 ê°œ 있어ë„
ë©ë‹ˆë‹¤.</td>
</tr>
<tr>
@@ -85,10 +85,10 @@ android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
</tr>
<tr>
<td>{@link android.content.Loader}</td>
- <td>ë°ì´í„°ì˜ 비ë™ê¸°ì‹ ë¡œë”©ì„ ìˆ˜í–‰í•˜ëŠ” ì¶”ìƒ í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. ì´ê²ƒì´ 로ë”ì˜ ê¸°ë³¸
+ <td>ë°ì´í„°ì˜ 비ë™ê¸°ì‹ ë¡œë”©ì„ ìˆ˜í–‰í•˜ëŠ” ì¶”ìƒ í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. ì´ê²ƒì´ 로ë”ì˜ ê¸°ë³¸
í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. ë³´í†µì€ {@link
-android.content.CursorLoader}를 사용하기 마련ì´ì§€ë§Œ, ìžì‹ ë§Œì˜ 하위 í´ëž˜ìŠ¤ë¥¼ êµ¬í˜„í•´ë„ ë©ë‹ˆë‹¤. 로ë”ê°€ 활성 ìƒíƒœì¸ ë™ì•ˆì—는
-ì†Œì† ë°ì´í„°ì˜ 출처를 모니터ë§í•˜ê³  콘í…츠가 변경ë˜ë©´ 새 결과를
+android.content.CursorLoader}를 사용하기 마련ì´ì§€ë§Œ, ìžì‹ ë§Œì˜ 하위 í´ëž˜ìŠ¤ë¥¼ êµ¬í˜„í•´ë„ ë©ë‹ˆë‹¤. 로ë”ê°€ 활성 ìƒíƒœì¸ ë™ì•ˆì—는
+ì†Œì† ë°ì´í„°ì˜ 출처를 모니터ë§í•˜ê³  콘í…츠가 변경ë˜ë©´ 새 결과를
전달하는 ê²ƒì´ ì •ìƒìž…니다. </td>
</tr>
<tr>
@@ -97,118 +97,118 @@ android.content.CursorLoader}를 사용하기 마련ì´ì§€ë§Œ, ìžì‹ ë§Œì˜ 하ì
</tr>
<tr>
<td>{@link android.content.CursorLoader}</td>
- <td>{@link android.content.AsyncTaskLoader}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¡œ, ì´ê²ƒì´
+ <td>{@link android.content.AsyncTaskLoader}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¡œ, ì´ê²ƒì´
{@link android.content.ContentResolver}를 쿼리하고 {@link
android.database.Cursor}를 반환합니다. ì´ í´ëž˜ìŠ¤ëŠ” 커서 ì¿¼ë¦¬ì— ëŒ€í•œ 표준 ë°©ì‹ìœ¼ë¡œ {@link
-android.content.Loader} í”„ë¡œí† ì½œì„ êµ¬í˜„í•˜ë©°,
-{@link android.content.AsyncTaskLoader}ì— êµ¬ì¶•ë˜ì–´
-ë°°ê²½ 스레드ì—서 커서 쿼리를 수행하므로 애플리케ì´ì…˜ì˜ UI를 차단하지 않습니다.
+android.content.Loader} í”„ë¡œí† ì½œì„ êµ¬í˜„í•˜ë©°,
+{@link android.content.AsyncTaskLoader}ì— êµ¬ì¶•ë˜ì–´
+ë°°ê²½ 스레드ì—서 커서 쿼리를 수행하므로 애플리케ì´ì…˜ì˜ UI를 차단하지 않습니다.
ì´ ë¡œë”를 사용하는 ê²ƒì´ í”„ëž˜ê·¸ë¨¼íŠ¸ë‚˜ ì•¡í‹°ë¹„í‹°ì˜ API를 통해 ê´€ë¦¬ëœ ì¿¼ë¦¬ë¥¼ 수행하는 대신 {@link
-android.content.ContentProvider}ì—서
+android.content.ContentProvider}ì—서
비ë™ê¸°ì‹ìœ¼ë¡œ ë°ì´í„°ë¥¼ 로딩하는 ìµœì„ ì˜ ë°©ë²•ìž…ë‹ˆë‹¤.</td>
</tr>
</table>
-<p>ìœ„ì˜ í‘œì— ë‚˜ì—´ëœ í´ëž˜ìŠ¤ì™€ ì¸í„°íŽ˜ì´ìŠ¤ê°€ 애플리케ì´ì…˜ ë‚´ì—서 로ë”를 구현하는 ë°
-사용할 기본ì ì¸ 구성 요소입니다. ìƒì„±í•˜ëŠ” 로ë”마다
+<p>ìœ„ì˜ í‘œì— ë‚˜ì—´ëœ í´ëž˜ìŠ¤ì™€ ì¸í„°íŽ˜ì´ìŠ¤ê°€ 애플리케ì´ì…˜ ë‚´ì—서 로ë”를 구현하는 ë°
+사용할 기본ì ì¸ 구성 요소입니다. ìƒì„±í•˜ëŠ” 로ë”마다
ì´ ëª¨ë“  ê²ƒì´ ë‹¤ 필요한 ê²ƒì€ ì•„ë‹ˆì§€ë§Œ, 로ë”를 초기화하려면 í•­ìƒ {@link
android.app.LoaderManager}를 참조해야 하고 {@link
-android.content.CursorLoader}와 ê°™ì€ {@link android.content.Loader}
-í´ëž˜ìŠ¤ë„ êµ¬í˜„í•´ì•¼ 합니다. ë‹¤ìŒ ëª‡ 섹션ì—서는 애플리케ì´ì…˜ 안ì—서 ì´ì™€ ê°™ì€
+android.content.CursorLoader}와 ê°™ì€ {@link android.content.Loader}
+í´ëž˜ìŠ¤ë„ êµ¬í˜„í•´ì•¼ 합니다. ë‹¤ìŒ ëª‡ 섹션ì—서는 애플리케ì´ì…˜ 안ì—서 ì´ì™€ ê°™ì€
í´ëž˜ìŠ¤ì™€ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 사용하는 ë²•ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.</p>
<h2 id ="app">애플리케ì´ì…˜ 안ì—서 ë¡œë” ì‚¬ìš©í•˜ê¸°</h2>
-<p>ì´ ì„¹ì…˜ì—서는 Android 애플리케ì´ì…˜ ë‚´ì—서 로ë”를 사용하는 ë°©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤. 로ë”를
+<p>ì´ ì„¹ì…˜ì—서는 Android 애플리케ì´ì…˜ ë‚´ì—서 로ë”를 사용하는 ë°©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤. 로ë”를
사용하는 애플리케ì´ì…˜ì—는 보통 다ìŒì´ í¬í•¨ë˜ì–´ 있습니다.</p>
<ul>
<li>{@link android.app.Activity} ë˜ëŠ” {@link android.app.Fragment}.</li>
<li>{@link android.app.LoaderManager}ì˜ ì¸ìŠ¤í„´ìŠ¤.</li>
<li>{@link
-android.content.ContentProvider}ê°€ ì§€ì›í•˜ëŠ” ë°ì´í„°ë¥¼ 로딩할 {@link android.content.CursorLoader}. 아니면, ê°œë°œìž ë‚˜ë¦„ì˜
-{@link android.content.Loader} ë˜ëŠ” {@link android.content.AsyncTaskLoader} 하위 í´ëž˜ìŠ¤ë¥¼ 구현하여
+android.content.ContentProvider}ê°€ ì§€ì›í•˜ëŠ” ë°ì´í„°ë¥¼ 로딩할 {@link android.content.CursorLoader}. 아니면, ê°œë°œìž ë‚˜ë¦„ì˜
+{@link android.content.Loader} ë˜ëŠ” {@link android.content.AsyncTaskLoader} 하위 í´ëž˜ìŠ¤ë¥¼ 구현하여
다른 출처ì—서 ë°ì´í„°ë¥¼ ë¡œë”©í•´ë„ ë©ë‹ˆë‹¤.</li>
<li>{@link android.app.LoaderManager.LoaderCallbacks}ì˜ êµ¬í˜„.
-여기ì—서 새 로ë”를 ìƒì„±í•˜ê³  기존 로ë”ì— ëŒ€í•œ 참조를
-관리합니다.</li>
+여기ì—서 새 로ë”를 ìƒì„±í•˜ê³  기존 로ë”ì— ëŒ€í•œ 참조를
+관리합니다.</li>
<li>로ë”ì˜ ë°ì´í„°ë¥¼ 표시하는 방법(예: {@link
android.widget.SimpleCursorAdapter})</li>
- <li>{@link android.content.ContentProvider}와 ê°™ì€ ë°ì´í„° 출처로,
+ <li>{@link android.content.ContentProvider}와 ê°™ì€ ë°ì´í„° 출처로,
{@link android.content.CursorLoader}를 사용하는 ê²½ìš°ì— í•´ë‹¹.</li>
</ul>
<h3 id="starting">ë¡œë” ì‹œìž‘</h3>
-<p>{@link android.app.LoaderManager}는 {@link android.app.Activity} ë˜ëŠ”
+<p>{@link android.app.LoaderManager}는 {@link android.app.Activity} ë˜ëŠ”
{@link android.app.Fragment} ë‚´ì—서 하나 ì´ìƒì˜ {@link
android.content.Loader} ì¸ìŠ¤í„´ìŠ¤ë¥¼ 관리합니다. 액티비티 ë˜ëŠ” 프래그먼트당 {@link
-android.app.LoaderManager}는 í•˜ë‚˜ì”©ë°–ì— ì—†ìŠµë‹ˆë‹¤.</p>
+android.app.LoaderManager}는 í•˜ë‚˜ì”©ë°–ì— ì—†ìŠµë‹ˆë‹¤.</p>
-<p>보통ì€
+<p>보통ì€
ì•¡í‹°ë¹„í‹°ì˜ {@link
-android.app.Activity#onCreate onCreate()} 메서드 ë‚´ì—서, ë˜ëŠ” 프래그먼트ì˜
-{@link android.app.Fragment#onActivityCreated onActivityCreated()} 메서드 ë‚´ì—서 {@link android.content.Loader}를 초기화합니다. ì´ë ‡ê²Œ 하려면
+android.app.Activity#onCreate onCreate()} 메서드 ë‚´ì—서, ë˜ëŠ” 프래그먼트ì˜
+{@link android.app.Fragment#onActivityCreated onActivityCreated()} 메서드 ë‚´ì—서 {@link android.content.Loader}를 초기화합니다. ì´ë ‡ê²Œ 하려면
다ìŒê³¼ ê°™ì€ ë°©ë²•ì„ ë”°ë¦…ë‹ˆë‹¤.</p>
<pre>// Prepare the loader. Either re-connect with an existing one,
// or start a new one.
getLoaderManager().initLoader(0, null, this);</pre>
-<p>{@link android.app.LoaderManager#initLoader initLoader()} 메서드는
+<p>{@link android.app.LoaderManager#initLoader initLoader()} 메서드는
다ìŒê³¼ ê°™ì€ ì¸ìˆ˜ë¥¼ 취합니다.</p>
<ul>
<li>로ë”를 ì‹ë³„하는 고유한 ID. ì´ ì˜ˆì‹œì—서 ID는 0입니다.</li>
<li>ìƒì„± 시 로ë”ì— ì œê³µí•  ì„ íƒì  ì¸ìˆ˜
-(ì´ ì˜ˆì‹œì—서는 <code>null</code>).</li>
+(ì´ ì˜ˆì‹œì—서는 <code>null</code>).</li>
-<li>{@link android.app.LoaderManager.LoaderCallbacks} 구현. ë¡œë” ì´ë²¤íŠ¸ë¥¼ 보고하기 위해
+<li>{@link android.app.LoaderManager.LoaderCallbacks} 구현. ë¡œë” ì´ë²¤íŠ¸ë¥¼ 보고하기 위해
{@link android.app.LoaderManager}ê°€ ì´ê²ƒì„ 호출합니다. ì´ ì˜ˆì‹œì—서는
로컬 í´ëž˜ìŠ¤ê°€ {@link
-android.app.LoaderManager.LoaderCallbacks} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하여 ìžì‹ ì— 대한 참조ì¸
-{@code this}를 통과합니다.</li>
+android.app.LoaderManager.LoaderCallbacks} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하여 ìžì‹ ì— 대한 참조ì¸
+{@code this}를 통과합니다.</li>
</ul>
-<p>{@link android.app.LoaderManager#initLoader initLoader()} 호출로 로ë”ê°€ 초기화ë˜ì—ˆê³  활성 ìƒíƒœì´ë„ë¡
+<p>{@link android.app.LoaderManager#initLoader initLoader()} 호출로 로ë”ê°€ 초기화ë˜ì—ˆê³  활성 ìƒíƒœì´ë„ë¡
확실히 합니다. ì´ë¡œì¨ ë°œìƒí•  수 있는 결과가 ë‘ ê°€ì§€ 있습니다.</p>
<ul>
- <li>IDê°€ 지정한 로ë”ê°€ ì´ë¯¸ 존재하는 경우, 마지막으로 ìƒì„±ëœ 로ë”를
+ <li>IDê°€ 지정한 로ë”ê°€ ì´ë¯¸ 존재하는 경우, 마지막으로 ìƒì„±ëœ 로ë”를
재사용합니다.</li>
- <li>IDê°€ 지정한 로ë”ê°€ 존재하지 <em>않는</em> 경우,
-{@link android.app.LoaderManager#initLoader initLoader()}ê°€
-{@link android.app.LoaderManager.LoaderCallbacks} 메서드 {@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}를 ë°œìƒì‹œí‚µë‹ˆë‹¤.
+ <li>IDê°€ 지정한 로ë”ê°€ 존재하지 <em>않는</em> 경우,
+{@link android.app.LoaderManager#initLoader initLoader()}ê°€
+{@link android.app.LoaderManager.LoaderCallbacks} 메서드 {@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}를 ë°œìƒì‹œí‚µë‹ˆë‹¤.
여기ì—서 ì¸ìŠ¤í„´íŠ¸í™”í•  코드를 구현하고 새 로ë”를 반환합니다.
ìžì„¸í•œ ë…¼ì˜ëŠ” <a href="#onCreateLoader">onCreateLoader</a> ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</li>
</ul>
<p>ì–´ë–¤ 경우ì—ë“  주어진 {@link android.app.LoaderManager.LoaderCallbacks}
-êµ¬í˜„ì€ í•´ë‹¹ 로ë”와 ì—°ê´€ë˜ì–´ 있으며, ë¡œë” ìƒíƒœê°€ 변경ë˜ë©´
-ì´ê²ƒì´ 호출ë©ë‹ˆë‹¤. ì´ í˜¸ì¶œì˜ ê·¸ëŸ¬í•œ 시ì ì—서 발신ìžê°€
-ì‹œìž‘ëœ ìƒíƒœì— 있으며 요청한 로ë”ê°€ ì´ë¯¸ 존재하고 ìžì‹ ì˜ ë°ì´í„°ë¥¼
+êµ¬í˜„ì€ í•´ë‹¹ 로ë”와 ì—°ê´€ë˜ì–´ 있으며, ë¡œë” ìƒíƒœê°€ 변경ë˜ë©´
+ì´ê²ƒì´ 호출ë©ë‹ˆë‹¤. ì´ í˜¸ì¶œì˜ ê·¸ëŸ¬í•œ 시ì ì—서 발신ìžê°€
+ì‹œìž‘ëœ ìƒíƒœì— 있으며 요청한 로ë”ê°€ ì´ë¯¸ 존재하고 ìžì‹ ì˜ ë°ì´í„°ë¥¼
ìƒì„±í•´ ë†“ì€ ê²½ìš°, ì‹œìŠ¤í…œì€ ì¦‰ì‹œ {@link
-android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}를
-호출합니다({@link android.app.LoaderManager#initLoader initLoader()} ë„중).
+android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}를
+호출합니다({@link android.app.LoaderManager#initLoader initLoader()} ë„중).
ë”°ë¼ì„œ ì´ëŸ° ì¼ì´ ë°œìƒí•  ê²ƒì— ëŒ€ë¹„í•´ë‘어야만 합니다. ì´ ì½œë°±ì— ëŒ€í•œ ìžì„¸í•œ ë…¼ì˜ëŠ” <a href="#onLoadFinished">
onLoadFinished</a>를 참조하십시오.</p>
<p>{@link android.app.LoaderManager#initLoader initLoader()}
-메서드는 ìƒì„±ëœ {@link android.content.Loader}를 반환하지만, ì´ì— 대한 참조를 캡처하지 ì•Šì•„ë„ ëœë‹¤ëŠ” ì ì„
-유ì˜í•˜ì‹­ì‹œì˜¤. {@link android.app.LoaderManager}는 로ë”ì˜ ìˆ˜ëª…ì„
-ìžë™ìœ¼ë¡œ 관리합니다. {@link android.app.LoaderManager}는
-í•„ìš”ì— ë”°ë¼ ë¡œë”©ì„ ì‹œìž‘í•˜ê³  중단하며, 로ë”와 ê·¸ì— ì—°ê´€ëœ ì½˜í…ì¸ ì˜ ìƒíƒœë¥¼
-유지관리합니다. ì´ê²ƒì´ 시사하는 바와 ê°™ì´, 로ë”와 ì§ì ‘ì ìœ¼ë¡œ
-ìƒí˜¸ 작용하는 경우는 극히 드뭅니다(다만, 로ë”ì˜ í–‰ë™ì„ 미세하게 조정하기 위해 ë¡œë” ë©”ì„œë“œë¥¼ 사용하는 사례를 알아보려면
-<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> ìƒ˜í”Œì„ ì°¸ì¡°í•˜ë©´ 좋습니다).
+메서드는 ìƒì„±ëœ {@link android.content.Loader}를 반환하지만, ì´ì— 대한 참조를 캡처하지 ì•Šì•„ë„ ëœë‹¤ëŠ” ì ì„
+유ì˜í•˜ì‹­ì‹œì˜¤. {@link android.app.LoaderManager}는 로ë”ì˜ ìˆ˜ëª…ì„
+ìžë™ìœ¼ë¡œ 관리합니다. {@link android.app.LoaderManager}는
+í•„ìš”ì— ë”°ë¼ ë¡œë”©ì„ ì‹œìž‘í•˜ê³  중단하며, 로ë”와 ê·¸ì— ì—°ê´€ëœ ì½˜í…ì¸ ì˜ ìƒíƒœë¥¼
+유지관리합니다. ì´ê²ƒì´ 시사하는 바와 ê°™ì´, 로ë”와 ì§ì ‘ì ìœ¼ë¡œ
+ìƒí˜¸ 작용하는 경우는 극히 드뭅니다(다만, 로ë”ì˜ í–‰ë™ì„ 미세하게 조정하기 위해 ë¡œë” ë©”ì„œë“œë¥¼ 사용하는 사례를 알아보려면
+<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> ìƒ˜í”Œì„ ì°¸ì¡°í•˜ë©´ 좋습니다).
가장 보편ì ìœ¼ë¡œ 사용ë˜ëŠ” 메서드는 {@link
-android.app.LoaderManager.LoaderCallbacks}로, ì´ë¥¼ 사용해 특정한 ì´ë²¤íŠ¸ê°€ ì¼ì–´ë‚¬ì„ 때
+android.app.LoaderManager.LoaderCallbacks}로, ì´ë¥¼ 사용해 특정한 ì´ë²¤íŠ¸ê°€ ì¼ì–´ë‚¬ì„ 때
로딩 í”„ë¡œì„¸ìŠ¤ì— ê°œìž…í•˜ê²Œ ë©ë‹ˆë‹¤. ì´ ì£¼ì œì— ëŒ€í•œ ìžì„¸í•œ ë…¼ì˜ëŠ” <a href="#callback">LoaderManager 콜백 사용하기</a>를 참조하십시오.</p>
<h3 id="restarting">ë¡œë” ë‹¤ì‹œ 시작</h3>
-<p>위ì—서 나타난 것과 ê°™ì´ {@link android.app.LoaderManager#initLoader initLoader()}를 사용하는 경우,
-ì´ê²ƒì€ ì§€ì •ëœ IDì— í•´ë‹¹ë˜ëŠ” 기존 로ë”ê°€ 있으면 ê·¸ê²ƒì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
-없으면, 하나 ìƒì„±í•©ë‹ˆë‹¤. 하지만 때로는 ì˜¤ëž˜ëœ ë°ì´í„°ë¥¼ í기하고 새로 시작하고 ì‹¶ì„ ë•Œê°€
+<p>위ì—서 나타난 것과 ê°™ì´ {@link android.app.LoaderManager#initLoader initLoader()}를 사용하는 경우,
+ì´ê²ƒì€ ì§€ì •ëœ IDì— í•´ë‹¹ë˜ëŠ” 기존 로ë”ê°€ 있으면 ê·¸ê²ƒì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
+없으면, 하나 ìƒì„±í•©ë‹ˆë‹¤. 하지만 때로는 ì˜¤ëž˜ëœ ë°ì´í„°ë¥¼ í기하고 새로 시작하고 ì‹¶ì„ ë•Œê°€
있습니다.</p>
<p>ì˜¤ëž˜ëœ ë°ì´í„°ë¥¼ í기하려면 {@link
-android.app.LoaderManager#restartLoader restartLoader()}를 사용합니다. 예를 들어, 다ìŒì˜
-{@link android.widget.SearchView.OnQueryTextListener} 구현ì€
-사용ìžì˜ 쿼리가 변경ë˜ë©´ 로ë”를 다시 시작합니다. 로ë”를 다시 시작해야 ìˆ˜ì •ëœ ê²€ìƒ‰ 필터를 사용하여
+android.app.LoaderManager#restartLoader restartLoader()}를 사용합니다. 예를 들어, 다ìŒì˜
+{@link android.widget.SearchView.OnQueryTextListener} 구현ì€
+사용ìžì˜ 쿼리가 변경ë˜ë©´ 로ë”를 다시 시작합니다. 로ë”를 다시 시작해야 ìˆ˜ì •ëœ ê²€ìƒ‰ 필터를 사용하여
새 쿼리를 수행할 수 있습니다.</p>
<pre>
@@ -223,18 +223,18 @@ public boolean onQueryTextChanged(String newText) {
<h3 id="callback">LoaderManager 콜백 사용하기</h3>
-<p>{@link android.app.LoaderManager.LoaderCallbacks}는 í´ë¼ì´ì–¸íŠ¸ê°€
+<p>{@link android.app.LoaderManager.LoaderCallbacks}는 í´ë¼ì´ì–¸íŠ¸ê°€
{@link android.app.LoaderManager}와 ìƒí˜¸ 작용할 수 있게 해주는 콜백 ì¸í„°íŽ˜ì´ìŠ¤ìž…ë‹ˆë‹¤. </p>
-<p>로ë”, 특히 {@link android.content.CursorLoader}는 ì¤‘ë‹¨ëœ í›„ì—ë„
-ìžì‹ ì˜ ë°ì´í„°ë¥¼ 유지할 것으로 기대ë©ë‹ˆë‹¤. ì´ ë•Œë¬¸ì— ì• í”Œë¦¬ì¼€ì´ì…˜ì´
+<p>로ë”, 특히 {@link android.content.CursorLoader}는 ì¤‘ë‹¨ëœ í›„ì—ë„
+ìžì‹ ì˜ ë°ì´í„°ë¥¼ 유지할 것으로 기대ë©ë‹ˆë‹¤. ì´ ë•Œë¬¸ì— ì• í”Œë¦¬ì¼€ì´ì…˜ì´
액티비티 ë˜ëŠ” í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ @link android.app.Activity#onStop
-onStop()} ë° {@link android.app.Activity#onStart onStart()}를 가로질러 ë°ì´í„°ë¥¼ 유지할 수 있고,
-ë”°ë¼ì„œ 사용ìžê°€ 애플리케ì´ì…˜ì— ë˜ëŒì•„오면 ë°ì´í„°ê°€ 다시 로딩ë˜ê¸°ë¥¼ 기다리지
-ì•Šì•„ë„ ë©ë‹ˆë‹¤. 새 로ë”를 언제 ìƒì„±í•´ì•¼ í• ì§€ 알아보려면 {@link android.app.LoaderManager.LoaderCallbacks}
-메서드를 사용합니다. ë˜í•œ 로ë”ì˜ ë°ì´í„° ì‚¬ìš©ì„ ì¤‘ë‹¨í•  때가 ë˜ë©´
+onStop()} ë° {@link android.app.Activity#onStart onStart()}를 가로질러 ë°ì´í„°ë¥¼ 유지할 수 있고,
+ë”°ë¼ì„œ 사용ìžê°€ 애플리케ì´ì…˜ì— ë˜ëŒì•„오면 ë°ì´í„°ê°€ 다시 로딩ë˜ê¸°ë¥¼ 기다리지
+ì•Šì•„ë„ ë©ë‹ˆë‹¤. 새 로ë”를 언제 ìƒì„±í•´ì•¼ í• ì§€ 알아보려면 {@link android.app.LoaderManager.LoaderCallbacks}
+메서드를 사용합니다. ë˜í•œ 로ë”ì˜ ë°ì´í„° ì‚¬ìš©ì„ ì¤‘ë‹¨í•  때가 ë˜ë©´
ì´ë¥¼ 애플리케ì´ì…˜ì— 알리는 ë°ì—ë„ ì´ê²ƒì„ 사용할 수 있습니다.</p>
-<p>{@link android.app.LoaderManager.LoaderCallbacks}ì—는 다ìŒê³¼ ê°™ì€ ë©”ì„œë“œê°€
+<p>{@link android.app.LoaderManager.LoaderCallbacks}ì—는 다ìŒê³¼ ê°™ì€ ë©”ì„œë“œê°€
í¬í•¨ë©ë‹ˆë‹¤.</p>
<ul>
<li>{@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()} -
@@ -246,7 +246,7 @@ onStop()} ë° {@link android.app.Activity#onStart onStart()}를 가로질러 ë°
</li></ul>
<ul>
<li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
-- ì´ì „ì— ìƒì„±ëœ 로ë”ê°€ íœ´ì‹ ì¤‘ì´ë¼ì„œ 해당ë˜ëŠ” ë°ì´í„°ë¥¼ 사용할 수 ì—†ì„ ê²½ìš°
+- ì´ì „ì— ìƒì„±ëœ 로ë”ê°€ íœ´ì‹ ì¤‘ì´ë¼ì„œ 해당ë˜ëŠ” ë°ì´í„°ë¥¼ 사용할 수 ì—†ì„ ê²½ìš°
호출ë©ë‹ˆë‹¤.
</li>
</ul>
@@ -255,32 +255,32 @@ onStop()} ë° {@link android.app.Activity#onStart onStart()}를 가로질러 ë°
<h4 id ="onCreateLoader">onCreateLoader</h4>
<p>로ë”ì— ì•¡ì„¸ìŠ¤í•˜ë ¤ 시ë„하는 경우(예를 들어 {@link
-android.app.LoaderManager#initLoader initLoader()}를 통해), 로ë”는 해당 IDê°€ 지정하는 로ë”ê°€ 존재하는지
+android.app.LoaderManager#initLoader initLoader()}를 통해), 로ë”는 해당 IDê°€ 지정하는 로ë”ê°€ 존재하는지
여부를 확ì¸í•©ë‹ˆë‹¤. 그런 로ë”ê°€ 없으면, {@link
android.app.LoaderManager.LoaderCallbacks} 메서드 {@link
-android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}를 ë°œìƒì‹œí‚µë‹ˆë‹¤. 여기ì—서
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}를 ë°œìƒì‹œí‚µë‹ˆë‹¤. 여기ì—서
새 로ë”를 ìƒì„±í•©ë‹ˆë‹¤. ì´ê²ƒì€ 보통 {@link
android.content.CursorLoader}ì´ì§€ë§Œ, ê°œë°œìž ë‚˜ë¦„ëŒ€ë¡œ {@link
android.content.Loader} 하위 í´ëž˜ìŠ¤ë¥¼ êµ¬í˜„í•´ë„ ë©ë‹ˆë‹¤. </p>
<p>ì´ ì˜ˆì‹œì—서는, {@link
android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
- 콜백 메서드가 {@link android.content.CursorLoader}를 ìƒì„±í•©ë‹ˆë‹¤.
-{@link android.content.CursorLoader}를 ìžì²´ ìƒì„±ìž 메서드를 사용하여 구축해야 합니다. ì´ê²ƒì€
+ 콜백 메서드가 {@link android.content.CursorLoader}를 ìƒì„±í•©ë‹ˆë‹¤.
+{@link android.content.CursorLoader}를 ìžì²´ ìƒì„±ìž 메서드를 사용하여 구축해야 합니다. ì´ê²ƒì€
{@link
android.content.ContentProvider}로 쿼리를 수행하기 위해 필요한 모든 ì •ë³´ ì§‘í•©ì„ í•„ìš”ë¡œ 합니다. 구체ì ìœ¼ë¡œ 필요한 ê²ƒì€ ë‹¤ìŒê³¼ 같습니다.</p>
<ul>
<li><em>uri</em> — 검색할 콘í…ì¸ ì˜ URI입니다. </li>
- <li><em>예측</em> — 반환할 ì—´ 목ë¡ìž…니다.
+ <li><em>예측</em> — 반환할 ì—´ 목ë¡ìž…니다.
<code>null</code>ì„ ì „ë‹¬í•˜ë©´ 모든 ì—´ì„ ë°˜í™˜í•˜ë©°, ì´ëŠ” 비효율ì ìž…니다. </li>
- <li><em>ì„ íƒ</em> — 반환할 í–‰ì„ ì„ ì–¸í•˜ëŠ” 필터로,
-SQL WHERE 절로 형ì‹ì´ 설정ë©ë‹ˆë‹¤(WHERE ìžì²´ëŠ” 제외).
+ <li><em>ì„ íƒ</em> — 반환할 í–‰ì„ ì„ ì–¸í•˜ëŠ” 필터로,
+SQL WHERE 절로 형ì‹ì´ 설정ë©ë‹ˆë‹¤(WHERE ìžì²´ëŠ” 제외).
<code>null</code>ì„ ë°˜í™˜í•˜ë©´ 주어진 URIì— ëŒ€í•œ 모든 í–‰ì„ ë°˜í™˜í•©ë‹ˆë‹¤. </li>
- <li><em>selectionArgs</em> — ì„ íƒì— ?를 í¬í•¨í•´ë„ ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면
-ì´ê²ƒì´ <em>selectionArgs</em>ì—서 가져온 값으로 êµì²´ë˜ë©°, ì´ë•Œ ì„ íƒì— 표시ë˜ëŠ”
+ <li><em>selectionArgs</em> — ì„ íƒì— ?를 í¬í•¨í•´ë„ ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면
+ì´ê²ƒì´ <em>selectionArgs</em>ì—서 가져온 값으로 êµì²´ë˜ë©°, ì´ë•Œ ì„ íƒì— 표시ë˜ëŠ”
순서를 따릅니다. ê°’ì€ ë¬¸ìžì—´ë¡œ ë°”ì¸ë”©ë©ë‹ˆë‹¤. </li>
- <li><em>sortOrder</em> — SQL ORDER BY ì ˆ 형ì‹ìœ¼ë¡œ 설정ëœ
-í–‰ì˜ ìˆœì„œ 지정 방법입니다(ORDER BY ìžì²´ëŠ” 제외). <code>null</code>ì„
+ <li><em>sortOrder</em> — SQL ORDER BY ì ˆ 형ì‹ìœ¼ë¡œ 설정ëœ
+í–‰ì˜ ìˆœì„œ 지정 방법입니다(ORDER BY ìžì²´ëŠ” 제외). <code>null</code>ì„
전달하면 기본 ì •ë ¬ 순서를 사용하는ë°, ì´ëŠ” 순서가 없습니다.</li>
</ul>
<p>예:</p>
@@ -312,19 +312,19 @@ public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
}</pre>
<h4 id="onLoadFinished">onLoadFinished</h4>
-<p>ì´ ë©”ì„œë“œëŠ” ì´ì „ì— ìƒì„±ëœ 로ë”ê°€ ë¡œë”©ì„ ì™„ë£Œí•˜ë©´ 호출ë©ë‹ˆë‹¤.
-ì´ ë¡œë”ì— ëŒ€í•´ ì œê³µëœ ë§ˆì§€ë§‰ ë°ì´í„°ê°€ 릴리스ë˜ê¸° ì „ì— í‹€ë¦¼ì—†ì´
-ì´ ë©”ì„œë“œê°€ 호출ë©ë‹ˆë‹¤. ì´ ì‹œì ì—서 ì˜¤ëž˜ëœ ë°ì´í„°ì˜
-사용 ë‚´ìš©ì„ ëª¨ë‘ ì œê±°í•´ì•¼ 하지만(ê³§ ë¦´ë¦¬ìŠ¤ë  ê²ƒì´ë¯€ë¡œ), ë°ì´í„° 릴리스를 ì§ì ‘ 수행해서는 안 ë©ë‹ˆë‹¤. 해당 ë°ì´í„°ëŠ”
+<p>ì´ ë©”ì„œë“œëŠ” ì´ì „ì— ìƒì„±ëœ 로ë”ê°€ ë¡œë”©ì„ ì™„ë£Œí•˜ë©´ 호출ë©ë‹ˆë‹¤.
+ì´ ë¡œë”ì— ëŒ€í•´ ì œê³µëœ ë§ˆì§€ë§‰ ë°ì´í„°ê°€ 릴리스ë˜ê¸° ì „ì— í‹€ë¦¼ì—†ì´
+ì´ ë©”ì„œë“œê°€ 호출ë©ë‹ˆë‹¤. ì´ ì‹œì ì—서 ì˜¤ëž˜ëœ ë°ì´í„°ì˜
+사용 ë‚´ìš©ì„ ëª¨ë‘ ì œê±°í•´ì•¼ 하지만(ê³§ ë¦´ë¦¬ìŠ¤ë  ê²ƒì´ë¯€ë¡œ), ë°ì´í„° 릴리스를 ì§ì ‘ 수행해서는 안 ë©ë‹ˆë‹¤. 해당 ë°ì´í„°ëŠ”
로ë”ì˜ ì†Œìœ ì´ë©°, 로ë”ê°€ 알아서 처리할 것ì´ê¸° 때문입니다.</p>
-<p>로ë”는 애플리케ì´ì…˜ì´ ë°ì´í„°ë¥¼ ë” ì´ìƒ 사용하지 않는다는 ì‚¬ì‹¤ì„ ì•Œê²Œ ë˜ë©´ 곧바로 해당 ë°ì´í„°ë¥¼
+<p>로ë”는 애플리케ì´ì…˜ì´ ë°ì´í„°ë¥¼ ë” ì´ìƒ 사용하지 않는다는 ì‚¬ì‹¤ì„ ì•Œê²Œ ë˜ë©´ 곧바로 해당 ë°ì´í„°ë¥¼
릴리스할 것입니다. 예를 들어 ë°ì´í„°ê°€ {@link
android.content.CursorLoader}ì˜ ì»¤ì„œì¸ ê²½ìš°, 거기ì—서 ì§ì ‘ {@link
-android.database.Cursor#close close()}를 호출하면 안 ë©ë‹ˆë‹¤. 커서가
+android.database.Cursor#close close()}를 호출하면 안 ë©ë‹ˆë‹¤. 커서가
{@link android.widget.CursorAdapter}ì— ë°°ì¹˜ë˜ëŠ” 경우, {@link
-android.widget.SimpleCursorAdapter#swapCursor swapCursor()} 메서드를 사용해야 합니다. 그래야
+android.widget.SimpleCursorAdapter#swapCursor swapCursor()} 메서드를 사용해야 합니다. 그래야
ì˜¤ëž˜ëœ {@link android.database.Cursor}ê°€ 종료ë˜ì§€ 않습니다. 예:</p>
<pre>
@@ -340,11 +340,11 @@ public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
<h4 id="onLoaderReset">onLoaderReset</h4>
-<p>ì´ ë©”ì„œë“œëŠ” ì´ì „ì— ìƒì„±ëœ 로ë”ê°€ íœ´ì‹ ì¤‘ì´ë¼ì„œ 해당ë˜ëŠ” ë°ì´í„°ë¥¼ 사용할 수 없는 경우
-호출ë©ë‹ˆë‹¤. ì´ ì½œë°±ì„ ì‚¬ìš©í•˜ë©´ ë°ì´í„°ê°€ 언제 릴리스ë ì§€ 알아낼 수 있어
+<p>ì´ ë©”ì„œë“œëŠ” ì´ì „ì— ìƒì„±ëœ 로ë”ê°€ íœ´ì‹ ì¤‘ì´ë¼ì„œ 해당ë˜ëŠ” ë°ì´í„°ë¥¼ 사용할 수 없는 경우
+호출ë©ë‹ˆë‹¤. ì´ ì½œë°±ì„ ì‚¬ìš©í•˜ë©´ ë°ì´í„°ê°€ 언제 릴리스ë ì§€ 알아낼 수 있어
ì´ì— 대한 참조를 ì§ì ‘ 제거할 수 있습니다.  </p>
-<p>ì´ êµ¬í˜„ì€
-{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}를 호출하며,
+<p>ì´ êµ¬í˜„ì€
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}를 호출하며,
ì´ë•Œ ê°’ì€ <code>null</code>ì„ ì”니다.</p>
<pre>
@@ -363,12 +363,12 @@ public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
<h2 id="example">예</h2>
<p>ì¼ë¡€ë¥¼ 제시하기 위해 ì•„ëž˜ì— {@link android.widget.ListView}를 표시하는 {@link
-android.app.Fragment}ì˜ ì „ì²´ êµ¬í˜„ì„ ë‚˜íƒ€ë‚´ì—ˆìŠµë‹ˆë‹¤. 여기ì—는
+android.app.Fragment}ì˜ ì „ì²´ êµ¬í˜„ì„ ë‚˜íƒ€ë‚´ì—ˆìŠµë‹ˆë‹¤. 여기ì—는
ì—°ë½ì²˜ 콘í…츠 제공ìžì— 대한 쿼리 결과가 들어 있습니다. ì´ê²ƒì€ {@link
android.content.CursorLoader}를 사용하여 제공ìžì— 대한 쿼리를 관리합니다.</p>
-
-<p>ì´ ì˜ˆì‹œì—서 나타낸 바와 ê°™ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì´ 사용ìžì˜ ì—°ë½ì²˜ì— 액세스하려면
-애플리케ì´ì…˜ì˜ 매니페스트ì—
+
+<p>ì´ ì˜ˆì‹œì—서 나타낸 바와 ê°™ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì´ 사용ìžì˜ ì—°ë½ì²˜ì— 액세스하려면
+애플리케ì´ì…˜ì˜ 매니페스트ì—
{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS} ê¶Œí•œì´ í¬í•¨ë˜ì–´ 있어야 합니다.</p>
<pre>
@@ -479,16 +479,16 @@ public static class CursorLoaderListFragment extends ListFragment
}</pre>
<h3 id="more_examples">추가 예</h3>
-<p>로ë”를 사용하는 ë²•ì„ ë³´ì—¬ì£¼ëŠ” 몇 가지 다른 예가 <strong>ApiDemos</strong>ì—
+<p>로ë”를 사용하는 ë²•ì„ ë³´ì—¬ì£¼ëŠ” 몇 가지 다른 예가 <strong>ApiDemos</strong>ì—
소개ë˜ì–´ 있습니다.</p>
<ul>
<li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
-LoaderCursor</a> — ìœ„ì— í‘œì‹œëœ ì½”ë“œ ì¡°ê°ì˜ 완전한
+LoaderCursor</a> — ìœ„ì— í‘œì‹œëœ ì½”ë“œ ì¡°ê°ì˜ 완전한
버전입니다.</li>
- <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> — ë°ì´í„°ê°€ ë³€ê²½ë  ë•Œ 콘í…츠 제공ìžê°€
+ <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> — ë°ì´í„°ê°€ ë³€ê²½ë  ë•Œ 콘í…츠 제공ìžê°€
수행하는 ì¿¼ë¦¬ì˜ ìˆ˜ë¥¼ 줄ì´ê¸° 위해 ì œí•œì„ ì‚¬ìš©í•˜ëŠ” ë°©ë²•ì„ ì˜ˆì‹œë¡œ 나타낸 것입니다.</li>
</ul>
-<p>SDK ìƒ˜í”Œì„ ë‹¤ìš´ë¡œë“œí•˜ê³  설치하는 ë° ëŒ€í•œ 정보는 <a href="http://developer.android.com/resources/samples/get.html">샘플
+<p>SDK ìƒ˜í”Œì„ ë‹¤ìš´ë¡œë“œí•˜ê³  설치하는 ë° ëŒ€í•œ 정보는 <a href="http://developer.android.com/resources/samples/get.html">샘플
가져오기</a>를 참조하십시오. </p>
diff --git a/docs/html-intl/intl/ko/guide/components/processes-and-threads.jd b/docs/html-intl/intl/ko/guide/components/processes-and-threads.jd
index 850d55cf9c71..cad4917a8c43 100644
--- a/docs/html-intl/intl/ko/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/ko/guide/components/processes-and-threads.jd
@@ -28,10 +28,10 @@ page.tags=수명 주기, 배경
<p>애플리케ì´ì…˜ 구성 요소가 시작ë˜ê³  애플리케ì´ì…˜ì— 실행 ì¤‘ì¸ ë‹¤ë¥¸ 구성 요소가 없으면
Android ì‹œìŠ¤í…œì€ í•˜ë‚˜ì˜ ì‹¤í–‰ 스레드로 애플리케ì´ì…˜ì˜ Linux 프로세스를
시작합니다. 기본ì ìœ¼ë¡œ ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 모든 구성 요소는 ê°™ì€ í”„ë¡œì„¸ìŠ¤ì™€ 스레드ì—서 실행ë©ë‹ˆë‹¤
-("기본" 스레드ë¼ê³  합니다). 애플리케ì´ì…˜ 구성 요소가 시작ë˜ê³  (애플리케ì´ì…˜ì˜ 다른 구성 요소가 존재해서)
+("기본" 스레드ë¼ê³  합니다). 애플리케ì´ì…˜ 구성 요소가 시작ë˜ê³  (애플리케ì´ì…˜ì˜ 다른 구성 요소가 존재해서)
해당 애플리케ì´ì…˜ì˜ 프로세스가 ì´ë¯¸ 존재하면 해당 구성 요소는
-프로세스 ë‚´ì—서 시작ë˜ê³  ê°™ì€ ì‹¤í–‰ 스레드를 사용합니다. 하지만 애플리케ì´ì…˜ ë‚´ì˜
-여러 가지 구성 요소가 ê°ìž 별ë„ì˜ í”„ë¡œì„¸ìŠ¤ì—서 실행ë˜ë„ë¡ í•  ìˆ˜ë„ ìžˆê³ , ì–´ëŠ í”„ë¡œì„¸ìŠ¤ì—ë“  추가 스레드를
+프로세스 ë‚´ì—서 시작ë˜ê³  ê°™ì€ ì‹¤í–‰ 스레드를 사용합니다. 하지만 애플리케ì´ì…˜ ë‚´ì˜
+여러 가지 구성 요소가 ê°ìž 별ë„ì˜ í”„ë¡œì„¸ìŠ¤ì—서 실행ë˜ë„ë¡ í•  ìˆ˜ë„ ìžˆê³ , ì–´ëŠ í”„ë¡œì„¸ìŠ¤ì—ë“  추가 스레드를
만들 수 있습니다.</p>
<p>ì´ ë¬¸ì„œëŠ” 프로세스와 스레드가 Android 애플리케ì´ì…˜ì—서 ìž‘ë™í•˜ëŠ” ë°©ì‹ì„ 설명합니다.</p>
@@ -48,8 +48,8 @@ Android ì‹œìŠ¤í…œì€ í•˜ë‚˜ì˜ ì‹¤í–‰ 스레드로 애플리케ì´ì…˜ì˜ Linux í
&lt;service&gt;}</a>, <a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code
&lt;receiver&gt;}</a> ë° <a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
&lt;provider&gt;}</a>&mdash;ì˜ ê° ìœ í˜•ì— ëŒ€í•œ 매니페스트 í•­ëª©ì€ êµ¬ì„± 요소를 실행할 프로세스를 지정하는 {@code android:process} ì†ì„±ì„ ì§€ì›í•©ë‹ˆë‹¤.
- ì´ëŸ¬í•œ ì†ì„±ì„ 설정하여 ê° êµ¬ì„± 요소를 ìžì²´ 프로세스ì—서 실행시키거나
-다른 구성 요소를 제외한 ì¼ë¶€ 구성 요소만 프로세스를 공유하게 í•  수 있습니다 ë˜í•œ,
+ ì´ëŸ¬í•œ ì†ì„±ì„ 설정하여 ê° êµ¬ì„± 요소를 ìžì²´ 프로세스ì—서 실행시키거나
+다른 구성 요소를 제외한 ì¼ë¶€ 구성 요소만 프로세스를 공유하게 í•  수 있습니다 ë˜í•œ,
{@code android:process}를 설정하여 다른 애플리케ì´ì…˜ì˜ 구성 요소를 ê°™ì€ í”„ë¡œì„¸ìŠ¤ì—서 실행시킬 수 있습니다.
단, ì´ëŠ” 애플리케ì´ì…˜ì´ ê°™ì€ Linux ì‚¬ìš©ìž ID를 공유하고 ê°™ì€ ì¸ì¦ì„œì—
서명ë˜ì—ˆì„ ê²½ìš°ì— í•œí•©ë‹ˆë‹¤.</p>
@@ -58,35 +58,35 @@ Android ì‹œìŠ¤í…œì€ í•˜ë‚˜ì˜ ì‹¤í–‰ 스레드로 애플리케ì´ì…˜ì˜ Linux í
&lt;application&gt;}</a> ìš”ì†Œë„ {@code android:process} ì†ì„±ì„ ì§€ì›í•˜ì—¬,
모든 구성 ìš”ì†Œì— ì ìš©ë˜ëŠ” ê¸°ë³¸ê°’ì„ ì„¤ì •í•©ë‹ˆë‹¤.</p>
-<p>Android는 ì–´ëŠ ì‹œì ì—”ê°€ 프로세스를 종료하기로 ê²°ì •í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 즉 메모리가 부족하거나, 사용ìžì—게 ë”ìš± 즉ê°ì ì¸ 서비스를 제공하는
-다른 프로세스가 ì´ í”„ë¡œì„¸ìŠ¤ì˜ ì¤‘ë‹¨ì„ í•„ìš”ë¡œ 하는 경우 등입니다. 그러면 중단ëœ
-프로세스ì—서 실행ë˜ê³  ìžˆë˜ ì• í”Œë¦¬ì¼€ì´ì…˜ 구성 ìš”ì†Œë„ ë”°ë¼ì„œ 소멸ë©ë‹ˆë‹¤. 그와 ê°™ì€ êµ¬ì„± 요소가 í•  ìž‘ì—…ì´ ë‹¤ì‹œ ìƒê¸°ë©´
+<p>Android는 ì–´ëŠ ì‹œì ì—”ê°€ 프로세스를 종료하기로 ê²°ì •í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 즉 메모리가 부족하거나, 사용ìžì—게 ë”ìš± 즉ê°ì ì¸ 서비스를 제공하는
+다른 프로세스가 ì´ í”„ë¡œì„¸ìŠ¤ì˜ ì¤‘ë‹¨ì„ í•„ìš”ë¡œ 하는 경우 등입니다. 그러면 중단ëœ
+프로세스ì—서 실행ë˜ê³  ìžˆë˜ ì• í”Œë¦¬ì¼€ì´ì…˜ 구성 ìš”ì†Œë„ ë”°ë¼ì„œ 소멸ë©ë‹ˆë‹¤. 그와 ê°™ì€ êµ¬ì„± 요소가 í•  ìž‘ì—…ì´ ë‹¤ì‹œ ìƒê¸°ë©´
ê·¸ì— ëŒ€í•œ í”„ë¡œì„¸ìŠ¤ë„ ë‹¤ì‹œ 시작ë©ë‹ˆë‹¤.</p>
-<p>ì–´ëŠ í”„ë¡œì„¸ìŠ¤ë¥¼ 삭제할지 ê²°ì •í•  때, Android 시스템ì€
-사용ìžì— 대한 ì´ë“¤ì˜ ìƒëŒ€ì  ì¤‘ìš”ì„±ì„ ê°€ëŠ í•©ë‹ˆë‹¤. 예를 들어, ëˆˆì— ë³´ì´ëŠ” 액티비티를 호스팅하는 프로세스와 비êµí•˜ì—¬
-í™”ë©´ì— ë³´ì´ì§€ 않는 액티비티를 호스팅하는 프로세스를 쉽게 종료할 수 있습니다. 프로세스 종료 ê²°ì •ì€
-해당 프로세스ì—서 실행ë˜ëŠ” 구성 ìš”ì†Œì˜ ìƒíƒœì— ë”°ë¼ ë‹¬ë¼ì§‘니다. 종료할
+<p>ì–´ëŠ í”„ë¡œì„¸ìŠ¤ë¥¼ 삭제할지 ê²°ì •í•  때, Android 시스템ì€
+사용ìžì— 대한 ì´ë“¤ì˜ ìƒëŒ€ì  ì¤‘ìš”ì„±ì„ ê°€ëŠ í•©ë‹ˆë‹¤. 예를 들어, ëˆˆì— ë³´ì´ëŠ” 액티비티를 호스팅하는 프로세스와 비êµí•˜ì—¬
+í™”ë©´ì— ë³´ì´ì§€ 않는 액티비티를 호스팅하는 프로세스를 쉽게 종료할 수 있습니다. 프로세스 종료 ê²°ì •ì€
+해당 프로세스ì—서 실행ë˜ëŠ” 구성 ìš”ì†Œì˜ ìƒíƒœì— ë”°ë¼ ë‹¬ë¼ì§‘니다. 종료할
프로세스를 결정하는 ë° ì‚¬ìš©í•˜ëŠ” ê·œì¹™ì€ ì•„ëž˜ì— ì„¤ëª…ë˜ì–´ 있습니다. </p>
<h3 id="Lifecycle">프로세스 수명 주기</h3>
<p>Android ì‹œìŠ¤í…œì€ ìµœëŒ€í•œ 오래 애플리케ì´ì…˜ 프로세스를 유지하려고 시ë„하지만,
-ê²°êµ­ ì˜¤ëž˜ëœ í”„ë¡œì„¸ìŠ¤ë¥¼ 제거하고 새 프로세스나 ë” ì¤‘ìš”í•œ í”„ë¡œì„¸ìŠ¤ì— ì‚¬ìš©í•  메모리를 확보해야 합니다. 유지할
+ê²°êµ­ ì˜¤ëž˜ëœ í”„ë¡œì„¸ìŠ¤ë¥¼ 제거하고 새 프로세스나 ë” ì¤‘ìš”í•œ í”„ë¡œì„¸ìŠ¤ì— ì‚¬ìš©í•  메모리를 확보해야 합니다. 유지할
프로세스와 종료할 프로세스를 결정하기 위해
-ì‹œìŠ¤í…œì€ í”„ë¡œì„¸ìŠ¤ì—서 실행ë˜ëŠ” 구성 요소와 해당 구성 ìš”ì†Œì˜ ìƒíƒœì— 기초하여 ê° í”„ë¡œì„¸ìŠ¤ì—
-"중요 계층"ì„ ë¶€ì—¬í•©ë‹ˆë‹¤. 중요ë„ê°€ ë‚®ì€
+ì‹œìŠ¤í…œì€ í”„ë¡œì„¸ìŠ¤ì—서 실행ë˜ëŠ” 구성 요소와 해당 구성 ìš”ì†Œì˜ ìƒíƒœì— 기초하여 ê° í”„ë¡œì„¸ìŠ¤ì—
+"중요 계층"ì„ ë¶€ì—¬í•©ë‹ˆë‹¤. 중요ë„ê°€ ë‚®ì€
프로세스가 먼저 제거ë˜ê³ , ê·¸ 다ìŒìœ¼ë¡œ 중요ë„ê°€ ë‚®ì€ í”„ë¡œì„¸ìŠ¤ë¥¼ 제거하는 ì‹ìœ¼ë¡œ
í•„ìš”ì— ë”°ë¼ ì‹œìŠ¤í…œ 리소스를 회복하는 것입니다.</p>
-<p>중요 계층ì—는 다섯 가지 단계가 있습니다. ë‹¤ìŒ ëª©ë¡ì€
-ì¤‘ìš”ë„ ìˆœì„œì— ë”°ë¥¸ 프로세스 ìœ í˜•ì„ ë‚˜íƒ€ë‚¸ 것입니다(첫 번째 프로세스가 <em>가장 중요하고</em>
+<p>중요 계층ì—는 다섯 가지 단계가 있습니다. ë‹¤ìŒ ëª©ë¡ì€
+ì¤‘ìš”ë„ ìˆœì„œì— ë”°ë¥¸ 프로세스 ìœ í˜•ì„ ë‚˜íƒ€ë‚¸ 것입니다(첫 번째 프로세스가 <em>가장 중요하고</em>
<em>마지막으로 종료ë©ë‹ˆë‹¤)</em>.</p>
<ol>
<li><b>전경 프로세스</b>
- <p>사용ìžê°€ 현재 진행하는 ìž‘ì—…ì— í•„ìš”í•œ 프로세스입니다. ë‹¤ìŒ ì¡°ê±´ 중
+ <p>사용ìžê°€ 현재 진행하는 ìž‘ì—…ì— í•„ìš”í•œ 프로세스입니다. ë‹¤ìŒ ì¡°ê±´ 중
하나가 ì°¸ì¼ ê²½ìš° 프로세스가 ì „ê²½ì— ìžˆëŠ” 것으로 간주합니다.</p>
<ul>
@@ -108,19 +108,19 @@ onStart()} ë˜ëŠ” {@link android.app.Service#onDestroy onDestroy()}).</li>
android.content.BroadcastReceiver#onReceive onReceive()} 메서드를 실행하는 {@link android.content.BroadcastReceiver}를 호스팅할 경우.</li>
</ul>
- <p>ì¼ë°˜ì ìœ¼ë¡œ, 주어진 ì‹œê°„ì— ì¡´ìž¬í•˜ëŠ” ì „ê²½ 프로세스는 몇 ê°œë°–ì— ë˜ì§€ 않습니다. ì´ë“¤ì€ 최후ì˜
-수단으로서만 종료ë©ë‹ˆë‹¤. 즉, 메모리가 너무 부족해 ê³„ì† ì‹¤í–‰í•  수 없는 경우를 ë§í•©ë‹ˆë‹¤. ì¼ë°˜ì ìœ¼ë¡œ ê·¸ 시ì ì´ ë˜ë©´
-기기가 메모리 페ì´ì§• ìƒíƒœì— ë„달한 것ì´ë¯€ë¡œ ì „ê²½ 프로세스 몇 개를 중단해야만
+ <p>ì¼ë°˜ì ìœ¼ë¡œ, 주어진 ì‹œê°„ì— ì¡´ìž¬í•˜ëŠ” ì „ê²½ 프로세스는 몇 ê°œë°–ì— ë˜ì§€ 않습니다. ì´ë“¤ì€ 최후ì˜
+수단으로서만 종료ë©ë‹ˆë‹¤. 즉, 메모리가 너무 부족해 ê³„ì† ì‹¤í–‰í•  수 없는 경우를 ë§í•©ë‹ˆë‹¤. ì¼ë°˜ì ìœ¼ë¡œ ê·¸ 시ì ì´ ë˜ë©´
+기기가 메모리 페ì´ì§• ìƒíƒœì— ë„달한 것ì´ë¯€ë¡œ ì „ê²½ 프로세스 몇 개를 중단해야만
ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì˜ ë°˜ì‘ì„±ì„ ìœ ì§€í•  수 있습니다.</p></li>
<li><b>ê°€ì‹œì  í”„ë¡œì„¸ìŠ¤</b>
- <p>전경 구성 요소는 없지만
-사용ìžê°€ 화면ì—서 보는 ê²ƒì— ì˜í–¥ì„ 미칠 수 있는 프로세스입니다. ë‹¤ìŒ ì¡°ê±´ 중 하나가 ì°¸ì´ë©´
+ <p>전경 구성 요소는 없지만
+사용ìžê°€ 화면ì—서 보는 ê²ƒì— ì˜í–¥ì„ 미칠 수 있는 프로세스입니다. ë‹¤ìŒ ì¡°ê±´ 중 하나가 ì°¸ì´ë©´
ê°€ì‹œì  í”„ë¡œì„¸ìŠ¤ë¡œ 간주합니다.</p>
<ul>
<li>ì „ê²½ì— ìžˆì§€ëŠ” 않지만 사용ìžì—게 ë³´ì´ëŠ” {@link android.app.Activity}를 호스팅할 경우
-({@link android.app.Activity#onPause onPause()} 메서드가 호출ë˜ì—ˆì„ 경우).
+({@link android.app.Activity#onPause onPause()} 메서드가 호출ë˜ì—ˆì„ 경우).
예를 들어 ì´ê²ƒì€ ì „ê²½ 액티비티가 대화를 시작하여 ì´ì „ 액티비티가 ê·¸ ë’¤ì— ë³´ì¼ ê²½ìš°
ë°œìƒí•©ë‹ˆë‹¤.</li>
@@ -128,59 +128,59 @@ android.content.BroadcastReceiver#onReceive onReceive()} 메서드를 실행하ë
</li>
</ul>
- <p>가시ì ì¸ 프로세스는 매우 중요ë„ê°€ ë†’ì€ ê²ƒìœ¼ë¡œ 취급하고 모든 ì „ê²½ 프로세스를 실행하는 ë° í•„ìš”í•  경우ì—ë§Œ
+ <p>가시ì ì¸ 프로세스는 매우 중요ë„ê°€ ë†’ì€ ê²ƒìœ¼ë¡œ 취급하고 모든 ì „ê²½ 프로세스를 실행하는 ë° í•„ìš”í•  경우ì—ë§Œ
종료ë©ë‹ˆë‹¤. </p>
</li>
<li><b>서비스 프로세스</b>
<p>{@link
-android.content.Context#startService startService()} 메서드로 시작ë˜ì—ˆì§€ë§Œ ë‘ ê°œì˜ ìƒìœ„ 계층 분류ì—
-들어가지 않는 서비스를 실행하는 프로세스입니다. 서비스 프로세스는 사용ìžê°€ 보는 것과 ì§ì ‘ ì—°ê²°ë˜ì–´ 있지는 않지만,
-ì¼ë°˜ì ìœ¼ë¡œ 사용ìžê°€ ì‹ ê²½ 쓰는 ìž‘ì—…ì„ í•˜ë¯€ë¡œ(ë°°ê²½ì—서 ìŒì•… ìž¬ìƒ ë˜ëŠ” 네트워í¬ì—서 ë°ì´í„° 다운로드)
-ì‹œìŠ¤í…œì€ ëª¨ë“  ì „ê²½ ë° ê°€ì‹œì  í”„ë¡œì„¸ìŠ¤ì™€ 함께 실행할 ë§Œí¼ ë©”ëª¨ë¦¬ê°€ 충분하지 ì•Šì„ ê²½ìš°ì—ë§Œ
+android.content.Context#startService startService()} 메서드로 시작ë˜ì—ˆì§€ë§Œ ë‘ ê°œì˜ ìƒìœ„ 계층 분류ì—
+들어가지 않는 서비스를 실행하는 프로세스입니다. 서비스 프로세스는 사용ìžê°€ 보는 것과 ì§ì ‘ ì—°ê²°ë˜ì–´ 있지는 않지만,
+ì¼ë°˜ì ìœ¼ë¡œ 사용ìžê°€ ì‹ ê²½ 쓰는 ìž‘ì—…ì„ í•˜ë¯€ë¡œ(ë°°ê²½ì—서 ìŒì•… ìž¬ìƒ ë˜ëŠ” 네트워í¬ì—서 ë°ì´í„° 다운로드)
+ì‹œìŠ¤í…œì€ ëª¨ë“  ì „ê²½ ë° ê°€ì‹œì  í”„ë¡œì„¸ìŠ¤ì™€ 함께 실행할 ë§Œí¼ ë©”ëª¨ë¦¬ê°€ 충분하지 ì•Šì„ ê²½ìš°ì—ë§Œ
프로세스를 중단합니다. </p>
</li>
<li><b>배경 프로세스</b>
- <p>현재 사용ìžì—게 ë³´ì´ì§€ 않는 액티비티를 보유한 프로세스입니다(액티비티ì˜
-{@link android.app.Activity#onStop onStop()} 메서드가 호출ë˜ì—ˆìŠµë‹ˆë‹¤). ì´ì™€ ê°™ì€ í”„ë¡œì„¸ìŠ¤ëŠ”
-ì‚¬ìš©ìž í™˜ê²½ì— ì§ì ‘ì  ì˜í–¥ì„ 미치지 않고, ì‹œìŠ¤í…œì€ ì–¸ì œë“  ì´ í”„ë¡œì„¸ìŠ¤ë¥¼ 중단시켜
+ <p>현재 사용ìžì—게 ë³´ì´ì§€ 않는 액티비티를 보유한 프로세스입니다(액티비티ì˜
+{@link android.app.Activity#onStop onStop()} 메서드가 호출ë˜ì—ˆìŠµë‹ˆë‹¤). ì´ì™€ ê°™ì€ í”„ë¡œì„¸ìŠ¤ëŠ”
+ì‚¬ìš©ìž í™˜ê²½ì— ì§ì ‘ì  ì˜í–¥ì„ 미치지 않고, ì‹œìŠ¤í…œì€ ì–¸ì œë“  ì´ í”„ë¡œì„¸ìŠ¤ë¥¼ 중단시켜
ì „ê²½,
-ê°€ì‹œì  ë˜ëŠ” 서비스 프로세스를 위한 메모리를 확보할 수 있습니다. 보통 í•œë²ˆì— ì‹¤í–‰ ì¤‘ì¸ ë°°ê²½ 프로세스가 ë§Žì€ íŽ¸ì´ë¯€ë¡œ ì´ë“¤ì€
-LRU(최저 사용 빈ë„) 목ë¡ì— 보관하여 사용ìžê°€ 가장 ìµœê·¼ì— ë³¸ 액티비티가 있는
-프로세스가 가장 ë§ˆì§€ë§‰ì— ì¤‘ë‹¨ë˜ë„ë¡ í•©ë‹ˆë‹¤. 액티비티가 수명 주기 메서드를 올바르게 구현하고
-ìžì‹ ì˜ 현재 ìƒíƒœë¥¼ 저장할 경우, 사용ìžê°€ 액티비티로 다시 ì´ë™í•  때 액티비티가 모든 ê°€ì‹œì  ìƒíƒœë¥¼
-ë³µì›í•˜ë¯€ë¡œ 프로세스를 중단시키ë”ë¼ë„ ì‚¬ìš©ìž í™˜ê²½ì—는 ëˆˆì— ë„게 ì˜í–¥ì„ 미치지
+ê°€ì‹œì  ë˜ëŠ” 서비스 프로세스를 위한 메모리를 확보할 수 있습니다. 보통 í•œë²ˆì— ì‹¤í–‰ ì¤‘ì¸ ë°°ê²½ 프로세스가 ë§Žì€ íŽ¸ì´ë¯€ë¡œ ì´ë“¤ì€
+LRU(최저 사용 빈ë„) 목ë¡ì— 보관하여 사용ìžê°€ 가장 ìµœê·¼ì— ë³¸ 액티비티가 있는
+프로세스가 가장 ë§ˆì§€ë§‰ì— ì¤‘ë‹¨ë˜ë„ë¡ í•©ë‹ˆë‹¤. 액티비티가 수명 주기 메서드를 올바르게 구현하고
+ìžì‹ ì˜ 현재 ìƒíƒœë¥¼ 저장할 경우, 사용ìžê°€ 액티비티로 다시 ì´ë™í•  때 액티비티가 모든 ê°€ì‹œì  ìƒíƒœë¥¼
+ë³µì›í•˜ë¯€ë¡œ 프로세스를 중단시키ë”ë¼ë„ ì‚¬ìš©ìž í™˜ê²½ì—는 ëˆˆì— ë„게 ì˜í–¥ì„ 미치지
않습니다. ìƒíƒœ 저장과 ë³µì›ì— 관한 정보는 <a href="{@docRoot}guide/components/activities.html#SavingActivityState">액티비티</a>
문서를 참조하십시오.</p>
</li>
<li><b>빈 프로세스</b>
- <p>활성 애플리케ì´ì…˜ 구성 요소를 보유하지 ì•Šì€ í”„ë¡œì„¸ìŠ¤ìž…ë‹ˆë‹¤. ì´ëŸ° 프로세스를
-유지하는 유ì¼í•œ ì´ìœ ëŠ” 다ìŒì— ë‚´ë¶€ 구성 요소를 실행할 때 시작 ì‹œê°„ì„ ì ˆì•½í•˜ê¸° 위한 ìºì‹±
+ <p>활성 애플리케ì´ì…˜ 구성 요소를 보유하지 ì•Šì€ í”„ë¡œì„¸ìŠ¤ìž…ë‹ˆë‹¤. ì´ëŸ° 프로세스를
+유지하는 유ì¼í•œ ì´ìœ ëŠ” 다ìŒì— ë‚´ë¶€ 구성 요소를 실행할 때 시작 ì‹œê°„ì„ ì ˆì•½í•˜ê¸° 위한 ìºì‹±
때문입니다. ì‹œìŠ¤í…œì€ í”„ë¡œì„¸ìŠ¤ ìºì‹œì™€ 기본 ì»¤ë„ ìºì‹œ 사ì´ì—서 ì „ë°˜ì ì¸ 시스템 ë¦¬ì†ŒìŠ¤ì˜ ê· í˜•ì„ ë§žì¶”ê¸° 위해
ì´ í”„ë¡œì„¸ìŠ¤ë¥¼ 중단시키는 경우가 많습니다.</p>
</li>
</ol>
- <p>Android는 프로세스ì—서 현재 활성 ìƒíƒœì¸ 구성 ìš”ì†Œì˜ ì¤‘ìš”ë„ì— ë”°ë¼
-í”„ë¡œì„¸ìŠ¤ì— ê°€ìž¥ ë†’ì€ ìˆ˜ì¤€ì„ ë¶€ì—¬í•©ë‹ˆë‹¤. 예를 들어, 프로세스가 서비스와 ê°€ì‹œì  ì•¡í‹°ë¹„í‹°ë¥¼ 호스팅할 경우,
+ <p>Android는 프로세스ì—서 현재 활성 ìƒíƒœì¸ 구성 ìš”ì†Œì˜ ì¤‘ìš”ë„ì— ë”°ë¼
+í”„ë¡œì„¸ìŠ¤ì— ê°€ìž¥ ë†’ì€ ìˆ˜ì¤€ì„ ë¶€ì—¬í•©ë‹ˆë‹¤. 예를 들어, 프로세스가 서비스와 ê°€ì‹œì  ì•¡í‹°ë¹„í‹°ë¥¼ 호스팅할 경우,
해당 프로세스는 서비스 프로세스가 ì•„ë‹ˆë¼ ê°€ì‹œì  í”„ë¡œì„¸ìŠ¤ ë“±ê¸‰ì´ ë¶€ì—¬ë©ë‹ˆë‹¤.</p>
<p>ë˜í•œ, í”„ë¡œì„¸ìŠ¤ì˜ ë“±ê¸‰ì€ ë‹¤ë¥¸ 프로세스가 ì´ì— ì˜ì¡´í•  경우 ìƒìŠ¹í•  수 있습니다.
-즉, 다른 í”„ë¡œì„¸ìŠ¤ì— ì„œë¹„ìŠ¤ë¥¼ 제공하는 프로세스가 서비스 제공 ëŒ€ìƒ í”„ë¡œì„¸ìŠ¤ë³´ë‹¤
-ë“±ê¸‰ì´ ë‚®ì€ ê²½ìš°ëŠ” ìžˆì„ ìˆ˜ 없습니다. 예를 들어 프로세스 Aì˜ ì½˜í…츠 제공ìžê°€ 프로세스 Bì˜ í´ë¼ì´ì–¸íŠ¸ì— ì„œë¹„ìŠ¤ë¥¼ 제공하거나
-프로세스 Aì˜ ì„œë¹„ìŠ¤ê°€ 프로세스 Bì˜ êµ¬ì„± ìš”ì†Œì— ë°”ì¸ë”©ë˜ì–´ ìžˆì„ ê²½ìš° 프로세스 A는 í•­ìƒ ì¤‘ìš”ë„ê°€
+즉, 다른 í”„ë¡œì„¸ìŠ¤ì— ì„œë¹„ìŠ¤ë¥¼ 제공하는 프로세스가 서비스 제공 ëŒ€ìƒ í”„ë¡œì„¸ìŠ¤ë³´ë‹¤
+ë“±ê¸‰ì´ ë‚®ì€ ê²½ìš°ëŠ” ìžˆì„ ìˆ˜ 없습니다. 예를 들어 프로세스 Aì˜ ì½˜í…츠 제공ìžê°€ 프로세스 Bì˜ í´ë¼ì´ì–¸íŠ¸ì— ì„œë¹„ìŠ¤ë¥¼ 제공하거나
+프로세스 Aì˜ ì„œë¹„ìŠ¤ê°€ 프로세스 Bì˜ êµ¬ì„± ìš”ì†Œì— ë°”ì¸ë”©ë˜ì–´ ìžˆì„ ê²½ìš° 프로세스 A는 í•­ìƒ ì¤‘ìš”ë„ê°€
프로세스 B와 같거나 그보다 높습니다.</p>
- <p>서비스를 실행하는 프로세스가 ë°°ê²½ 액티비티가 í¬í•¨ëœ 프로세스보다 높으므로,
+ <p>서비스를 실행하는 프로세스가 ë°°ê²½ 액티비티가 í¬í•¨ëœ 프로세스보다 높으므로,
장기 ìž‘ì—…ì„ ì‹œìž‘í•˜ëŠ” 액티비티는 ìž‘ì—…ìž ìŠ¤ë ˆë“œë§Œ ìƒì„±í•˜ê¸°ë³´ë‹¤ëŠ” 해당 ìž‘ì—…ì— ëŒ€í•œ <a href="{@docRoot}guide/components/services.html">서비스</a>를 시작하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
-ì´ëŠ” 특히 ìž‘ì—…ì´ í•´ë‹¹ 액티비티보다 오래 ì§€ì†ë  경우 ë”ìš± 중요합니다.
-예를 들어, 웹사ì´íŠ¸ì— ì‚¬ì§„ì„ ì—…ë¡œë“œí•˜ëŠ” 액티비티가 업로드를 수행하는 서비스를 시작해야
-사용ìžê°€ 액티비티를 떠나ë”ë¼ë„ ë°°ê²½ì—서 업로드를 ì§€ì†í•  수 있습니다.
-서비스를 사용하면 ì•¡í‹°ë¹„í‹°ì— ì–´ë–¤ ì¼ì´ ë°œìƒí•˜ë“  해당 ìž‘ì—…ì— ë°˜ë“œì‹œ
-"서비스 프로세스" ìš°ì„  순위 ì´ìƒì´ 부여ë©ë‹ˆë‹¤. ì´ê²ƒì´ 브로드ìºìŠ¤íŠ¸ 수신기가 ì‹œê°„ì´ ì˜¤ëž˜ 걸리는 작업ì„
+ì´ëŠ” 특히 ìž‘ì—…ì´ í•´ë‹¹ 액티비티보다 오래 ì§€ì†ë  경우 ë”ìš± 중요합니다.
+예를 들어, 웹사ì´íŠ¸ì— ì‚¬ì§„ì„ ì—…ë¡œë“œí•˜ëŠ” 액티비티가 업로드를 수행하는 서비스를 시작해야
+사용ìžê°€ 액티비티를 떠나ë”ë¼ë„ ë°°ê²½ì—서 업로드를 ì§€ì†í•  수 있습니다.
+서비스를 사용하면 ì•¡í‹°ë¹„í‹°ì— ì–´ë–¤ ì¼ì´ ë°œìƒí•˜ë“  해당 ìž‘ì—…ì— ë°˜ë“œì‹œ
+"서비스 프로세스" ìš°ì„  순위 ì´ìƒì´ 부여ë©ë‹ˆë‹¤. ì´ê²ƒì´ 브로드ìºìŠ¤íŠ¸ 수신기가 ì‹œê°„ì´ ì˜¤ëž˜ 걸리는 작업ì„
ìŠ¤ë ˆë“œì— ë„£ê¸°ë³´ë‹¤ëŠ” 서비스를 사용해야 하는 것과 ê°™ì€ ì´ìœ ìž…니다.</p>
@@ -188,36 +188,36 @@ LRU(최저 사용 빈ë„) 목ë¡ì— 보관하여 사용ìžê°€ 가장 ìµœê·¼ì— ë
<h2 id="Threads">스레드</h2>
-<p> 애플리케ì´ì…˜ì´ 시작ë˜ë©´ ì‹œìŠ¤í…œì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì— 대한 ì‹¤í–‰ì˜ ìŠ¤ë ˆë“œë¥¼ ìƒì„±í•˜ë©°, ì´ë¥¼
-"기본"ì´ë¼ê³  합니다. ì´ ìŠ¤ë ˆë“œëŠ” 드로어블 ì´ë²¤íŠ¸ë¥¼ í¬í•¨í•˜ì—¬ ì ì ˆí•œ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ 위젯ì—
+<p> 애플리케ì´ì…˜ì´ 시작ë˜ë©´ ì‹œìŠ¤í…œì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì— 대한 ì‹¤í–‰ì˜ ìŠ¤ë ˆë“œë¥¼ ìƒì„±í•˜ë©°, ì´ë¥¼
+"기본"ì´ë¼ê³  합니다. ì´ ìŠ¤ë ˆë“œëŠ” 드로어블 ì´ë²¤íŠ¸ë¥¼ í¬í•¨í•˜ì—¬ ì ì ˆí•œ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ 위젯ì—
ì´ë²¤íŠ¸ë¥¼ 발송하는 ì—­í• ì„ ë§¡ê¸° ë•Œë¬¸ì— ì¤‘ìš”í•©ë‹ˆë‹¤. ì´ê²ƒì€ Android UI ë„구 í‚¤íŠ¸ì˜ êµ¬ì„± 요소({@link
android.widget}ê³¼ {@link android.view} íŒ¨í‚¤ì§€ì˜ êµ¬ì„± 요소)와 개발ìžì˜ 애플리케ì´ì…˜ì´
-ìƒí˜¸ 작용하는 스레드ì´ê¸°ë„ 합니다. ë”°ë¼ì„œ 기본 스레드는
+ìƒí˜¸ 작용하는 스레드ì´ê¸°ë„ 합니다. ë”°ë¼ì„œ 기본 스레드는
UI 스레드ë¼ê³  불릴 ë•Œë„ ìžˆìŠµë‹ˆë‹¤.</p>
-<p>ì‹œìŠ¤í…œì€ êµ¬ì„± ìš”ì†Œì˜ ê° ì¸ìŠ¤í„´ìŠ¤ì— ëŒ€í•´ 별ë„ì˜ ìŠ¤ë ˆë“œë¥¼ ìƒì„±í•˜ì§€ <em>않습니다</em>. ê°™ì€
+<p>ì‹œìŠ¤í…œì€ êµ¬ì„± ìš”ì†Œì˜ ê° ì¸ìŠ¤í„´ìŠ¤ì— ëŒ€í•´ 별ë„ì˜ ìŠ¤ë ˆë“œë¥¼ ìƒì„±í•˜ì§€ <em>않습니다</em>. ê°™ì€
프로세스ì—서 실행ë˜ëŠ” 모든 구성 요소는 UI 스레드ì—서 시작ë˜ê³ , ê° êµ¬ì„± 요소를 호출하는 시스템ì´
-해당 스레드ì—서 발송ë©ë‹ˆë‹¤. ë”°ë¼ì„œ
-시스템 ì½œë°±ì— ì‘답하는 메서드(ì‚¬ìš©ìž ìž‘ì—…ì„ ë³´ê³ í•˜ëŠ” {@link android.view.View#onKeyDown onKeyDown()} ë˜ëŠ”
+해당 스레드ì—서 발송ë©ë‹ˆë‹¤. ë”°ë¼ì„œ
+시스템 ì½œë°±ì— ì‘답하는 메서드(ì‚¬ìš©ìž ìž‘ì—…ì„ ë³´ê³ í•˜ëŠ” {@link android.view.View#onKeyDown onKeyDown()} ë˜ëŠ”
수명 주기 콜백 메서드)는 í•­ìƒ í”„ë¡œì„¸ìŠ¤ì˜ UI 스레드ì—서 실행ë©ë‹ˆë‹¤.</p>
<p>예를 들어, 사용ìžê°€ í™”ë©´ì˜ ë²„íŠ¼ì„ í„°ì¹˜í•˜ë©´, 앱 UI 스레드가 ìœ„ì ¯ì— í„°ì¹˜ ì´ë²¤íŠ¸ë¥¼ 발송하고,
-ìœ„ì ¯ì€ ëˆŒë¦° ìƒíƒœë¥¼ 설정하고 ì´ë²¤íЏ 대기열ì—
-무효화 ìš”ì²­ì„ ê²Œì‹œí•©ë‹ˆë‹¤. UI 스레드가 ì´ ìš”ì²­ì„ ëŒ€ê¸°ì—´ì—서 해제하고 ìœ„ì ¯ì— ìŠ¤ìŠ¤ë¡œë¥¼ 다시
+ìœ„ì ¯ì€ ëˆŒë¦° ìƒíƒœë¥¼ 설정하고 ì´ë²¤íЏ 대기열ì—
+무효화 ìš”ì²­ì„ ê²Œì‹œí•©ë‹ˆë‹¤. UI 스레드가 ì´ ìš”ì²­ì„ ëŒ€ê¸°ì—´ì—서 해제하고 ìœ„ì ¯ì— ìŠ¤ìŠ¤ë¡œë¥¼ 다시
그려야 한다고 알립니다.</p>
<p>ì•±ì´ ì‚¬ìš©ìž ìƒí˜¸ìž‘ìš©ì— ì‘답하여 집약ì ì¸ ìž‘ì—…ì„ ìˆ˜í–‰í•  때는 ì´ ë‹¨ì¼ ìŠ¤ë ˆë“œ 모ë¸ì€
애플리케ì´ì…˜ì„ 제대로 구현하지 않으면 ë‚®ì€ ì„±ëŠ¥ì„ ë³´ì¼ ìˆ˜ 있습니다. 특히,
-모든 ê²ƒì´ UI 스레드ì—서 ë°œìƒí•˜ê³  ë„¤íŠ¸ì›Œí¬ ì•¡ì„¸ìŠ¤ë‚˜ ë°ì´í„° ë² ì´ìФ 쿼리 ë“±ì˜ ê¸´ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë©´
-UIê°€ 통째로 차단ë©ë‹ˆë‹¤. 스레드가 차단ë˜ë©´ 드로잉 ì´ë²¤íŠ¸ë¥¼ í¬í•¨í•˜ì—¬
-모든 ì´ë²¤íŠ¸ê°€ 발송ë˜ì§€ 않습니다. 사용ìžê°€ 보기ì—는 애플리케ì´ì…˜ì´
+모든 ê²ƒì´ UI 스레드ì—서 ë°œìƒí•˜ê³  ë„¤íŠ¸ì›Œí¬ ì•¡ì„¸ìŠ¤ë‚˜ ë°ì´í„° ë² ì´ìФ 쿼리 ë“±ì˜ ê¸´ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë©´
+UIê°€ 통째로 차단ë©ë‹ˆë‹¤. 스레드가 차단ë˜ë©´ 드로잉 ì´ë²¤íŠ¸ë¥¼ í¬í•¨í•˜ì—¬
+모든 ì´ë²¤íŠ¸ê°€ 발송ë˜ì§€ 않습니다. 사용ìžê°€ 보기ì—는 애플리케ì´ì…˜ì´
ì¤‘ë‹¨ëœ ê²ƒì²˜ëŸ¼ 보입니다. ë” ë‚˜ìœ ê²½ìš°, UI 스레드가 몇 ì´ˆ ì´ìƒ 차단ë˜ì–´ 있으면
-(현재 약 5ì´ˆ) 사용ìžì—게 악명 ë†’ì€ "<a href="http://developer.android.com/guide/practices/responsiveness.html">애플리케ì´ì…˜ì´ ì‘답하지
-않습니다</a>"(ANR) 대화가 표시ë©ë‹ˆë‹¤. 그러면 사용ìžê°€ ì—¬ëŸ¬ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ 종료 í•  ìˆ˜ë„ ìžˆê³ , 불만족한 경우 앱ì„
+(현재 약 5ì´ˆ) 사용ìžì—게 악명 ë†’ì€ "<a href="http://developer.android.com/guide/practices/responsiveness.html">애플리케ì´ì…˜ì´ ì‘답하지
+않습니다</a>"(ANR) 대화가 표시ë©ë‹ˆë‹¤. 그러면 사용ìžê°€ ì—¬ëŸ¬ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ 종료 í•  ìˆ˜ë„ ìžˆê³ , 불만족한 경우 앱ì„
제거할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
-<p>ë˜í•œ, Andoid UI ë„구 키트는 스레드로부터 안전하지 <em>않습니다</em>. ë”°ë¼ì„œ UI를
-ìž‘ì—…ìž ìŠ¤ë ˆë“œì—서 조작해서는 안 ë©ë‹ˆë‹¤. ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ ì¡°ìž‘ ìž‘ì—…ì€ ëª¨ë‘ UI
+<p>ë˜í•œ, Andoid UI ë„구 키트는 스레드로부터 안전하지 <em>않습니다</em>. ë”°ë¼ì„œ UI를
+ìž‘ì—…ìž ìŠ¤ë ˆë“œì—서 조작해서는 안 ë©ë‹ˆë‹¤. ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ ì¡°ìž‘ ìž‘ì—…ì€ ëª¨ë‘ UI
스레드ì—서 해야만 합니다. ê²°ë¡ ì ìœ¼ë¡œ, Androidì˜ ë‹¨ì¼ ìŠ¤ë ˆë“œ 모ë¸ì—는 ë‘ ê°€ì§€ 단순한 ê·œì¹™ì´ ìžˆìŠµë‹ˆë‹¤.</p>
<ol>
@@ -227,12 +227,12 @@ UIê°€ 통째로 차단ë©ë‹ˆë‹¤. 스레드가 차단ë˜ë©´ 드로잉 ì´ë²¤íЏë¥
<h3 id="WorkerThreads">ìž‘ì—…ìž ìŠ¤ë ˆë“œ</h3>
-<p>ìœ„ì— ì„¤ëª…í•œ ë‹¨ì¼ ìŠ¤ë ˆë“œ 모ë¸ë¡œ ì¸í•´, 애플리케ì´ì…˜ UIì˜ ë°˜ì‘ì„±ì„ ìœ„í•´ì„œëŠ”
-UI 스레드를 차단하지 않는 ê²ƒì´ ë§¤ìš° 중요합니다. 수행해야 í•  ìž‘ì—…ì´ ìžˆëŠ”ë°
-ì´ë“¤ì´ 즉ê°ì ì¸ 조치를 요하지 않는 경우, ì´ëŸ° ìž‘ì—…ì€ ë°˜ë“œì‹œ 별ë„ì˜ ìŠ¤ë ˆë“œì—서 수행해야 합니다("ë°°ê²½" ë˜ëŠ”
+<p>ìœ„ì— ì„¤ëª…í•œ ë‹¨ì¼ ìŠ¤ë ˆë“œ 모ë¸ë¡œ ì¸í•´, 애플리케ì´ì…˜ UIì˜ ë°˜ì‘ì„±ì„ ìœ„í•´ì„œëŠ”
+UI 스레드를 차단하지 않는 ê²ƒì´ ë§¤ìš° 중요합니다. 수행해야 í•  ìž‘ì—…ì´ ìžˆëŠ”ë°
+ì´ë“¤ì´ 즉ê°ì ì¸ 조치를 요하지 않는 경우, ì´ëŸ° ìž‘ì—…ì€ ë°˜ë“œì‹œ 별ë„ì˜ ìŠ¤ë ˆë“œì—서 수행해야 합니다("ë°°ê²½" ë˜ëŠ”
"작업ìž" 스레드).</p>
-<p>예를 들어, 아래는 별ë„ì˜ ìŠ¤ë ˆë“œì—서 ì´ë¯¸ì§€ë¥¼ 다운로드하고 ì´ë¥¼
+<p>예를 들어, 아래는 별ë„ì˜ ìŠ¤ë ˆë“œì—서 ì´ë¯¸ì§€ë¥¼ 다운로드하고 ì´ë¥¼
{@link android.widget.ImageView}ì— í‘œì‹œí•˜ëŠ” í´ë¦­ ìˆ˜ì‹ ê¸°ì— ëŒ€í•œ 몇 가지 코드입니다.</p>
<pre>
@@ -246,10 +246,10 @@ public void onClick(View v) {
}
</pre>
-<p>처ìŒì—는 ë„¤íŠ¸ì›Œí¬ ìž‘ì—…ì„ ì²˜ë¦¬í•˜ê¸° 위한 새 스레드를 ìƒì„±í•˜ë¯€ë¡œ
-아무 문제 ì—†ì´ ìž‘ë™í•˜ëŠ” 것처럼 보입니다. 하지만, ì´ê²ƒì€ ë‹¨ì¼ ìŠ¤ë ˆë“œëœ ëª¨ë¸ì˜ ë‘ ë²ˆì§¸ 규칙 즉, '<em>UI 스레드 외부ì—서
+<p>처ìŒì—는 ë„¤íŠ¸ì›Œí¬ ìž‘ì—…ì„ ì²˜ë¦¬í•˜ê¸° 위한 새 스레드를 ìƒì„±í•˜ë¯€ë¡œ
+아무 문제 ì—†ì´ ìž‘ë™í•˜ëŠ” 것처럼 보입니다. 하지만, ì´ê²ƒì€ ë‹¨ì¼ ìŠ¤ë ˆë“œëœ ëª¨ë¸ì˜ ë‘ ë²ˆì§¸ 규칙 즉, '<em>UI 스레드 외부ì—서
Android UI ë„구 í‚¤íŠ¸ì— ì•¡ì„¸ìŠ¤í•˜ì§€ 마세요.</em>'를 위반합니다. ì´ ìƒ˜í”Œì€ UI 스레드 대신 ìž‘ì—…ìž ìŠ¤ë ˆë“œì—서 {@link
-android.widget.ImageView}를 수정합니다. ì´ë ‡ê²Œ ë˜ë©´
+android.widget.ImageView}를 수정합니다. ì´ë ‡ê²Œ ë˜ë©´
ì •ì˜ë˜ì§€ 않고 예기치 못한 ë™ìž‘ì´ ë°œìƒí•˜ëŠ” 결과를 초래할 수 있고, ì´ëŠ” ì¶”ì í•˜ê¸° 어려워 ì‹œê°„ë„ ì˜¤ëž˜ 걸립니다.</p>
<p>ì´ ë¬¸ì œë¥¼ 해결하기 위해 Android는 다른 스레드ì—서 UI ìŠ¤ë ˆë“œì— ì•¡ì„¸ìŠ¤í•˜ëŠ” 여러 가지 ë°©ì‹ì„
@@ -281,28 +281,28 @@ public void onClick(View v) {
}
</pre>
-<p>ì´ êµ¬í˜„ì€ ì´ì œ 스레드로부터 안전합니다. ë„¤íŠ¸ì›Œí¬ ìž‘ì—…ì€ ë³„ë„ì˜ ìŠ¤ë ˆë“œì—서 ìˆ˜í–‰ëœ ë°˜ë©´
+<p>ì´ êµ¬í˜„ì€ ì´ì œ 스레드로부터 안전합니다. ë„¤íŠ¸ì›Œí¬ ìž‘ì—…ì€ ë³„ë„ì˜ ìŠ¤ë ˆë“œì—서 ìˆ˜í–‰ëœ ë°˜ë©´
{@link android.widget.ImageView}는 UI 스레드ì—서 ì¡°ìž‘ë˜ì—ˆê¸° 때문입니다.</p>
-<p>그러나, ìž‘ì—…ì´ ë³µìž¡í•´ì§ˆìˆ˜ë¡ ì´ëŸ° ì¢…ë¥˜ì˜ ì½”ë“œê°€ ë” ë³µìž¡í•´ì§ˆ 수 있고 유지 관리하기
-까다로워질 수 있습니다. ë” ë³µìž¡í•œ ìƒí˜¸ ìž‘ìš©ì„ ìž‘ì—…ìž ìŠ¤ë ˆë“œë¡œ 처리하려면, ìž‘ì—…ìž ìŠ¤ë ˆë“œì—서
-{@link android.os.Handler}를 사용하여 UI 스레드ì—서 전달 ë°›ì€ ë©”ì‹œì§€ë¥¼ 처리하는 방안ì„
-고려해보십시오. 하지만 ìµœì„ ì˜ í•´ê²°ì±…ì€ {@link android.os.AsyncTask} í´ëž˜ìŠ¤ë¥¼ 확장하는 ë°©ë²•ì¼ ê²ƒìž…ë‹ˆë‹¤.
+<p>그러나, ìž‘ì—…ì´ ë³µìž¡í•´ì§ˆìˆ˜ë¡ ì´ëŸ° ì¢…ë¥˜ì˜ ì½”ë“œê°€ ë” ë³µìž¡í•´ì§ˆ 수 있고 유지 관리하기
+까다로워질 수 있습니다. ë” ë³µìž¡í•œ ìƒí˜¸ ìž‘ìš©ì„ ìž‘ì—…ìž ìŠ¤ë ˆë“œë¡œ 처리하려면, ìž‘ì—…ìž ìŠ¤ë ˆë“œì—서
+{@link android.os.Handler}를 사용하여 UI 스레드ì—서 전달 ë°›ì€ ë©”ì‹œì§€ë¥¼ 처리하는 방안ì„
+고려해보십시오. 하지만 ìµœì„ ì˜ í•´ê²°ì±…ì€ {@link android.os.AsyncTask} í´ëž˜ìŠ¤ë¥¼ 확장하는 ë°©ë²•ì¼ ê²ƒìž…ë‹ˆë‹¤.
ì´ê²ƒì€ UI와 ìƒí˜¸ 작용해야 하는 ìž‘ì—…ìž ìŠ¤ë ˆë“œ ìž‘ì—…ì˜ ì‹¤í–‰ì„ ë‹¨ìˆœí™”í•©ë‹ˆë‹¤.</p>
<h4 id="AsyncTask">AsyncTask 사용</h4>
-<p>{@link android.os.AsyncTask}를 사용하면 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФì—서 비ë™ê¸°ì‹ ìž‘ì—…ì„ ìˆ˜í–‰í•  수
-있게 í•´ì¤ë‹ˆë‹¤. ì´ê²ƒì€ ìž‘ì—…ìž ìŠ¤ë ˆë“œì—서 차단 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê³  그런 ë‹¤ìŒ ê·¸ 결과를 UI 스레드ì—
+<p>{@link android.os.AsyncTask}를 사용하면 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФì—서 비ë™ê¸°ì‹ ìž‘ì—…ì„ ìˆ˜í–‰í•  수
+있게 í•´ì¤ë‹ˆë‹¤. ì´ê²ƒì€ ìž‘ì—…ìž ìŠ¤ë ˆë“œì—서 차단 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê³  그런 ë‹¤ìŒ ê·¸ 결과를 UI 스레드ì—
게시하며, 개발ìžê°€ ì§ì ‘ 스레드 ë°/ë˜ëŠ” 처리기를 처리할 필요가 없습니다.</p>
<p>ì´ë¥¼ 사용하려면 ìš°ì„  {@link android.os.AsyncTask}를 하위 í´ëž˜ìŠ¤ë¡œ 한 ë‹¤ìŒ {@link
-android.os.AsyncTask#doInBackground doInBackground()} 콜백 메서드를 구현해야 합니다. ì´ê²ƒì€ 여러 가지
+android.os.AsyncTask#doInBackground doInBackground()} 콜백 메서드를 구현해야 합니다. ì´ê²ƒì€ 여러 가지
ë°°ê²½ 스레드ì—서 실행ë©ë‹ˆë‹¤. UI를 ì—…ë°ì´íŠ¸í•˜ë ¤ë©´ {@link
android.os.AsyncTask#onPostExecute onPostExecute()}를 구현해야 합니다. ì´ëŠ” {@link
-android.os.AsyncTask#doInBackground doInBackground()}ë¡œë¶€í„°ì˜ ê²°ê³¼ë¥¼ 전달하며 UI 스레드ì—서 실행ë˜ë¯€ë¡œ,
-안전하게 UI를 ì—…ë°ì´íŠ¸í•  수 있습니다. 그런 ë‹¤ìŒ UI 스레드ì—서 {@link android.os.AsyncTask#execute execute()}를
+android.os.AsyncTask#doInBackground doInBackground()}ë¡œë¶€í„°ì˜ ê²°ê³¼ë¥¼ 전달하며 UI 스레드ì—서 실행ë˜ë¯€ë¡œ,
+안전하게 UI를 ì—…ë°ì´íŠ¸í•  수 있습니다. 그런 ë‹¤ìŒ UI 스레드ì—서 {@link android.os.AsyncTask#execute execute()}를
호출하여 해당 ìž‘ì—…ì„ ì‹¤í–‰í•˜ë©´ ë©ë‹ˆë‹¤.</p>
<p>예를 들어, ì´ëŸ° ë°©ì‹ìœ¼ë¡œ {@link android.os.AsyncTask}를 사용하여
@@ -319,7 +319,7 @@ private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
-
+
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
@@ -328,21 +328,21 @@ private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
}
</pre>
-<p>ì´ì œ UI는 안전하고 코드는 ë”ìš± 단순해졌습니다. ìž‘ì—…ì„ ìž‘ì—…ìž ìŠ¤ë ˆë“œì—서 수행ë˜ì–´ì•¼ 하는
+<p>ì´ì œ UI는 안전하고 코드는 ë”ìš± 단순해졌습니다. ìž‘ì—…ì„ ìž‘ì—…ìž ìŠ¤ë ˆë“œì—서 수행ë˜ì–´ì•¼ 하는
부분과 UI 스레드ì—서 수행ë˜ì–´ì•¼ 하는 부분으로 구분하기 때문입니다.</p>
-<p>ì´ í´ëž˜ìŠ¤ë¥¼ 사용하는 ë²•ì„ ì™„ì „ížˆ 숙지하려면 {@link android.os.AsyncTask} 참조를
+<p>ì´ í´ëž˜ìŠ¤ë¥¼ 사용하는 ë²•ì„ ì™„ì „ížˆ 숙지하려면 {@link android.os.AsyncTask} 참조를
ì½ì–´ë³´ì‹œëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 개괄ì ì¸ ìž‘ë™ ë°©ì‹ì€ ì•„ëž˜ì— ê°„ëžµížˆ 소개해 놓았습니다.</p>
<ul>
-<li>매개 ë³€ìˆ˜ì˜ ìœ í˜•, 진행률 ê°’ê³¼ ìž‘ì—…ì˜ ìµœì¢… ê°’ì„ ì œë„¤ë¦­ì„ ì‚¬ìš©í•˜ì—¬
+<li>매개 ë³€ìˆ˜ì˜ ìœ í˜•, 진행률 ê°’ê³¼ ìž‘ì—…ì˜ ìµœì¢… ê°’ì„ ì œë„¤ë¦­ì„ ì‚¬ìš©í•˜ì—¬
지정할 수 있습니다.</li>
<li>메서드 {@link android.os.AsyncTask#doInBackground doInBackground()}는 ìž‘ì—…ìž ìŠ¤ë ˆë“œì—서 ìžë™ìœ¼ë¡œ
실행ë©ë‹ˆë‹¤.</li>
<li>{@link android.os.AsyncTask#onPreExecute onPreExecute()}, {@link
android.os.AsyncTask#onPostExecute onPostExecute()} ë° {@link
android.os.AsyncTask#onProgressUpdate onProgressUpdate()}는 ëª¨ë‘ UI 스레드ì—서 호출ë©ë‹ˆë‹¤.</li>
-<li>{@link android.os.AsyncTask#doInBackground doInBackground()}ê°€ 반환한 ê°’ì´
+<li>{@link android.os.AsyncTask#doInBackground doInBackground()}ê°€ 반환한 ê°’ì´
{@link android.os.AsyncTask#onPostExecute onPostExecute()}로 전송ë©ë‹ˆë‹¤.</li>
<li>언제든 {@link android.os.AsyncTask#publishProgress publishProgress()}를 {@link
android.os.AsyncTask#doInBackground doInBackground()}ì—서 호출하여 UI 스레드ì—서 {@link
@@ -350,27 +350,27 @@ android.os.AsyncTask#onProgressUpdate onProgressUpdate()}를 실행하ë„ë¡ í• 
<li>모든 스레드ì—서 언제든 ìž‘ì—…ì„ ì·¨ì†Œí•  수 있습니다.</li>
</ul>
-<p class="caution"><strong>주ì˜:</strong> ìž‘ì—…ìž ìŠ¤ë ˆë“œë¥¼ 사용할 때 마주칠 수 있는 ë˜ í•œ 가지 문제는
+<p class="caution"><strong>주ì˜:</strong> ìž‘ì—…ìž ìŠ¤ë ˆë“œë¥¼ 사용할 때 마주칠 수 있는 ë˜ í•œ 가지 문제는
<a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 구성 변경</a>으로 ì¸í•´ 액티비티가 예기치 못하게 다시 시작ë˜ëŠ” 것입니다
-(예를 들어 사용ìžê°€ 화면 ë°©í–¥ì„ ë°”ê¾¸ëŠ” 경우). ì´ ê²½ìš° ìž‘ì—…ìž ìŠ¤ë ˆë“œë¥¼ 소멸시킬 수 있습니다.
+(예를 들어 사용ìžê°€ 화면 ë°©í–¥ì„ ë°”ê¾¸ëŠ” 경우). ì´ ê²½ìš° ìž‘ì—…ìž ìŠ¤ë ˆë“œë¥¼ 소멸시킬 수 있습니다.
스레드가 ìž¬ì‹œìž‘ë  ë•Œ ìž‘ì—…ì„ ì§€ì†í•˜ëŠ” 방법과 액티비티가 제거ë˜ì—ˆì„ 때 ìž‘ì—…ì„ ì ì ˆížˆ 취소하는 방법ì€
<a href="http://code.google.com/p/shelves/">Shelves</a> 샘플 애플리케ì´ì…˜ì˜ 소스 코드를 참조하십시오.</p>
<h3 id="ThreadSafe">스레드로부터 안전한 메서드</h3>
-<p> ì–´ë–¤ 경우ì—는 구현하는 메서드가 하나 ì´ìƒì˜ 스레드ì—서 호출ë˜ëŠ” ì¼ë„ 있습니다. ë”°ë¼ì„œ
+<p> ì–´ë–¤ 경우ì—는 구현하는 메서드가 하나 ì´ìƒì˜ 스레드ì—서 호출ë˜ëŠ” ì¼ë„ 있습니다. ë”°ë¼ì„œ
ì´ë¥¼ 스레드로부터 안전하게 작성해야만 합니다. </p>
-<p>ì´ê²ƒì€ 주로 ì›ê²©ìœ¼ë¡œ 호출할 수 있는 ë©”ì„œë“œì— ëŒ€í•´ 참입니다. 예를 들어 <a href="{@docRoot}guide/components/bound-services.html">ë°”ì¸ë”©ëœ 서비스</a> ë‚´ì˜ ë©”ì„œë“œ ë“±ì´ í•´ë‹¹ë©ë‹ˆë‹¤.
-{@link android.os.IBinder}ì—서 êµ¬í˜„ëœ ë©”ì„œë“œê°€
-{@link android.os.IBinder IBinder}ê°€ 실행ë˜ëŠ” 프로세스ì—서 í˜¸ì¶œë  ê²½ìš°, 해당 메서드는 발신ìžì˜ 스레드ì—서 실행ë©ë‹ˆë‹¤.
-그러나 í˜¸ì¶œì´ ë‹¤ë¥¸ 프로세스ì—서 ë°œìƒí•˜ë©´, 해당 메서드는 시스템ì´
+<p>ì´ê²ƒì€ 주로 ì›ê²©ìœ¼ë¡œ 호출할 수 있는 ë©”ì„œë“œì— ëŒ€í•´ 참입니다. 예를 들어 <a href="{@docRoot}guide/components/bound-services.html">ë°”ì¸ë”©ëœ 서비스</a> ë‚´ì˜ ë©”ì„œë“œ ë“±ì´ í•´ë‹¹ë©ë‹ˆë‹¤.
+{@link android.os.IBinder}ì—서 êµ¬í˜„ëœ ë©”ì„œë“œê°€
+{@link android.os.IBinder IBinder}ê°€ 실행ë˜ëŠ” 프로세스ì—서 í˜¸ì¶œë  ê²½ìš°, 해당 메서드는 발신ìžì˜ 스레드ì—서 실행ë©ë‹ˆë‹¤.
+그러나 í˜¸ì¶œì´ ë‹¤ë¥¸ 프로세스ì—서 ë°œìƒí•˜ë©´, 해당 메서드는 시스템ì´
{@link android.os.IBinder
-IBinder}와 ê°™ì€ í”„ë¡œì„¸ìŠ¤ì— ìœ ì§€í•˜ëŠ” 스레드 í’€ì—서 ì„ íƒëœ 스레드ì—서 실행ë©ë‹ˆë‹¤(í”„ë¡œì„¸ìŠ¤ì˜ UI 스레드ì—서 실행ë˜ì§€ 않습니다). 예를 들어, ì–´ëŠ ì„œë¹„ìŠ¤ì˜
-{@link android.app.Service#onBind onBind()} 메서드는 해당 서비스
+IBinder}와 ê°™ì€ í”„ë¡œì„¸ìŠ¤ì— ìœ ì§€í•˜ëŠ” 스레드 í’€ì—서 ì„ íƒëœ 스레드ì—서 실행ë©ë‹ˆë‹¤(í”„ë¡œì„¸ìŠ¤ì˜ UI 스레드ì—서 실행ë˜ì§€ 않습니다). 예를 들어, ì–´ëŠ ì„œë¹„ìŠ¤ì˜
+{@link android.app.Service#onBind onBind()} 메서드는 해당 서비스
í”„ë¡œì„¸ìŠ¤ì˜ UI 스레드ì—서 호출ë˜ê³ , {@link android.app.Service#onBind
-onBind()}ê°€ 반환하는 ê°ì²´ì—서 êµ¬í˜„ëœ ë©”ì„œë“œëŠ”(예: RPC 메서드를 구현하는 하위 í´ëž˜ìФ) 해당 í’€ ì•ˆì˜ ì—¬ëŸ¬ 스레드ì—서
+onBind()}ê°€ 반환하는 ê°ì²´ì—서 êµ¬í˜„ëœ ë©”ì„œë“œëŠ”(예: RPC 메서드를 구현하는 하위 í´ëž˜ìФ) 해당 í’€ ì•ˆì˜ ì—¬ëŸ¬ 스레드ì—서
호출ë˜ê²Œ ë©ë‹ˆë‹¤. ì„œë¹„ìŠ¤ì— í´ë¼ì´ì–¸íŠ¸ê°€ 하나 ì´ìƒ ìžˆì„ ìˆ˜ 있으므로, 하나 ì´ìƒì˜ í’€ì´
ë™ì‹œì— ê°™ì€ {@link android.os.IBinder IBinder} ë©”ì„œë“œì— ì°¸ì—¬í•  수 있습니다. 그러므로 {@link android.os.IBinder
IBinder} 메서드는 스레드로부터 안전하게 구현ë˜ì–´ì•¼ 합니다.</p>
@@ -389,13 +389,13 @@ getType()} 메서드&mdash;)ê°€ í”„ë¡œì„¸ìŠ¤ì˜ UI 스레드가 아니ë¼
<h2 id="IPC">프로세스 간 통신</h2>
-<p>Android는 ì›ê²© 프로시저 호출(RPC)ì„ ì‚¬ìš©í•œ 프로세스 ê°„ 통신(IPC) ë©”ì»¤ë‹ˆì¦˜ì„ ì œê³µí•©ë‹ˆë‹¤.
-여기서 메서드는 액티비티나 다른 애플리케ì´ì…˜ 구성 ìš”ì†Œì— í˜¸ì¶œë˜ì§€ë§Œ
-ì›ê²©ìœ¼ë¡œ (ë˜ ë‹¤ë¥¸ 프로세스ì—서) 실행ë˜ê³ , 결과는 ëª¨ë‘ ë°œì‹ ìžì—게 ë˜ëŒë ¤
-보냅니다. 메서드 호출과 ë©”ì„œë“œì˜ ë°ì´í„°ëŠ” ìš´ì˜ ì²´ì œê°€ ì´í•´í•  수 있는 수준으로 ë¶„í•´ë˜ê³ ,
-로컬 프로세스와 주소 공간ì—서 ì›ê²© 프로세스와 주소 공간으로 ì „ì†¡ëœ ë‹¤ìŒ
-다시 ê²°í•©ë˜ì–´ 여기서 í˜¸ì¶œì— ë‹¤ì‹œ ì‘답합니다. 그런 ë‹¤ìŒ ë°˜í™˜ ê°’ì´
-반대 방향으로 전송ë©ë‹ˆë‹¤. Androidê°€ ì´ì™€ ê°™ì€ IPC íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•˜ëŠ” ë° í•„ìš”í•œ
+<p>Android는 ì›ê²© 프로시저 호출(RPC)ì„ ì‚¬ìš©í•œ 프로세스 ê°„ 통신(IPC) ë©”ì»¤ë‹ˆì¦˜ì„ ì œê³µí•©ë‹ˆë‹¤.
+여기서 메서드는 액티비티나 다른 애플리케ì´ì…˜ 구성 ìš”ì†Œì— í˜¸ì¶œë˜ì§€ë§Œ
+ì›ê²©ìœ¼ë¡œ (ë˜ ë‹¤ë¥¸ 프로세스ì—서) 실행ë˜ê³ , 결과는 ëª¨ë‘ ë°œì‹ ìžì—게 ë˜ëŒë ¤
+보냅니다. 메서드 호출과 ë©”ì„œë“œì˜ ë°ì´í„°ëŠ” ìš´ì˜ ì²´ì œê°€ ì´í•´í•  수 있는 수준으로 ë¶„í•´ë˜ê³ ,
+로컬 프로세스와 주소 공간ì—서 ì›ê²© 프로세스와 주소 공간으로 ì „ì†¡ëœ ë‹¤ìŒ
+다시 ê²°í•©ë˜ì–´ 여기서 í˜¸ì¶œì— ë‹¤ì‹œ ì‘답합니다. 그런 ë‹¤ìŒ ë°˜í™˜ ê°’ì´
+반대 방향으로 전송ë©ë‹ˆë‹¤. Androidê°€ ì´ì™€ ê°™ì€ IPC íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•˜ëŠ” ë° í•„ìš”í•œ
모든 코드를 제공하므로, 개발ìžëŠ” 그저 RPC í”„ë¡œê·¸ëž˜ë° ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ê³  구현하는 ë°ì—ë§Œ 집중하면 ë©ë‹ˆë‹¤. </p>
<p>IPC를 수행하려면 애플리케ì´ì…˜ì´ 반드시 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ë˜ì–´ì•¼ë§Œ 하며, ì´ë•Œ {@link
diff --git a/docs/html-intl/intl/ko/guide/components/recents.jd b/docs/html-intl/intl/ko/guide/components/recents.jd
index cba3c45da3da..28b3c681f5a2 100644
--- a/docs/html-intl/intl/ko/guide/components/recents.jd
+++ b/docs/html-intl/intl/ko/guide/components/recents.jd
@@ -38,50 +38,50 @@ page.tags="recents","overview"
<p>개요 화면(다른 ë§ë¡œ 최근 사용 화면, 최근 작업 ëª©ë¡ ë˜ëŠ” 최근 앱ì´ë¼ê³ ë„ 함)ì€
시스템 수준 UI로, ìµœê·¼ì— ì•¡ì„¸ìŠ¤í•œ <a href="{@docRoot}guide/components/activities.html">
-액티비티</a> ë° <a href="{@docRoot}guide/components/tasks-and-back-stack.html">작업</a>ì„ ëª©ë¡ìœ¼ë¡œ 나열한 것입니다. 사용ìžëŠ”
-목ë¡ì„ 가로질러 ì´ë™í•˜ë©° ìž‘ì—…ì„ ì„ íƒí•´ì„œ 재개할 ìˆ˜ë„ ìžˆê³ , 아니면
-목ë¡ì—서 한 ìž‘ì—…ì„ ìŠ¤ì™€ì´í”„하여 밀어내어 목ë¡ì—서 제거할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. Android 5.0 릴리스(API 레벨 21)ì˜ ê²½ìš°, ê°™ì€ ì•¡í‹°ë¹„í‹°ì˜ ì—¬ëŸ¬ ì¸ìŠ¤í„´ìŠ¤ì—
-ê°ê¸° 다른 문서가 담겨 있는 경우 ì´ë“¤ì´ 개요 í™”ë©´ì— ìž‘ì—…ìœ¼ë¡œ 나타날 수 있습니다. 예를 들어
-Google Driveì— ì—¬ëŸ¬ ê°œì˜ Google 문서 ê°ê°ì— 대한 ìž‘ì—…ì´ ìžˆì„ ìˆ˜ 있습니다. ê° ë¬¸ì„œëŠ” 개요 í™”ë©´ì— í•˜ë‚˜ì˜
+액티비티</a> ë° <a href="{@docRoot}guide/components/tasks-and-back-stack.html">작업</a>ì„ ëª©ë¡ìœ¼ë¡œ 나열한 것입니다. 사용ìžëŠ”
+목ë¡ì„ 가로질러 ì´ë™í•˜ë©° ìž‘ì—…ì„ ì„ íƒí•´ì„œ 재개할 ìˆ˜ë„ ìžˆê³ , 아니면
+목ë¡ì—서 한 ìž‘ì—…ì„ ìŠ¤ì™€ì´í”„하여 밀어내어 목ë¡ì—서 제거할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. Android 5.0 릴리스(API 레벨 21)ì˜ ê²½ìš°, ê°™ì€ ì•¡í‹°ë¹„í‹°ì˜ ì—¬ëŸ¬ ì¸ìŠ¤í„´ìŠ¤ì—
+ê°ê¸° 다른 문서가 담겨 있는 경우 ì´ë“¤ì´ 개요 í™”ë©´ì— ìž‘ì—…ìœ¼ë¡œ 나타날 수 있습니다. 예를 들어
+Google Driveì— ì—¬ëŸ¬ ê°œì˜ Google 문서 ê°ê°ì— 대한 ìž‘ì—…ì´ ìžˆì„ ìˆ˜ 있습니다. ê° ë¬¸ì„œëŠ” 개요 í™”ë©´ì— í•˜ë‚˜ì˜
작업으로 나타납니다.</p>
<img src="{@docRoot}images/components/recents.png" alt="" width="284" />
-<p class="img-caption"><strong>그림 1.</strong> 세 ê°œì˜ Google Drive 문서가 ê°ê¸° 별ë„ì˜
+<p class="img-caption"><strong>그림 1.</strong> 세 ê°œì˜ Google Drive 문서가 ê°ê¸° 별ë„ì˜
ìž‘ì—…ì„ ë‚˜íƒ€ë‚´ëŠ” ëª¨ìŠµì„ í‘œì‹œí•œ 개요 화면입니다.</p>
-<p>ë³´í†µì€ ê°œìš” í™”ë©´ì— ìž‘ì—…ê³¼ 액티비티가 어떻게 표현ë ì§€ëŠ” 시스템ì´
-ì •ì˜í•˜ë„ë¡ ë‘어야 합니다. ì´ í–‰ë™ì„ 개발ìžê°€ 수정할 í•„ìš”ë„ ì—†ìŠµë‹ˆë‹¤.
-하지만, 개요 í™”ë©´ì— ì•¡í‹°ë¹„í‹°ê°€ 언제, 어떻게 나타날지는 ì•±ì´ ê²°ì •í•  수 있습니다.
-{@link android.app.ActivityManager.AppTask} í´ëž˜ìŠ¤ë¥¼ 사용하면 ìž‘ì—…ì„ ê´€ë¦¬í•  수 있게 해주고,
-{@link android.content.Intent} í´ëž˜ìŠ¤ì˜ ì•¡í‹°ë¹„í‹° 플래그를 사용하면 개요 화면ì—서 액티비티가 추가ë˜ê±°ë‚˜ 제거ë˜ëŠ” 시ì ì„
+<p>ë³´í†µì€ ê°œìš” í™”ë©´ì— ìž‘ì—…ê³¼ 액티비티가 어떻게 표현ë ì§€ëŠ” 시스템ì´
+ì •ì˜í•˜ë„ë¡ ë‘어야 합니다. ì´ í–‰ë™ì„ 개발ìžê°€ 수정할 í•„ìš”ë„ ì—†ìŠµë‹ˆë‹¤.
+하지만, 개요 í™”ë©´ì— ì•¡í‹°ë¹„í‹°ê°€ 언제, 어떻게 나타날지는 ì•±ì´ ê²°ì •í•  수 있습니다.
+{@link android.app.ActivityManager.AppTask} í´ëž˜ìŠ¤ë¥¼ 사용하면 ìž‘ì—…ì„ ê´€ë¦¬í•  수 있게 해주고,
+{@link android.content.Intent} í´ëž˜ìŠ¤ì˜ ì•¡í‹°ë¹„í‹° 플래그를 사용하면 개요 화면ì—서 액티비티가 추가ë˜ê±°ë‚˜ 제거ë˜ëŠ” 시ì ì„
지정할 수 있습니다. ë˜í•œ, <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
&lt;activity&gt;</a></code> íŠ¹ì„±ì„ ì‚¬ìš©í•˜ë©´ 매니페스트ì—ì„œì˜ ë™ìž‘ì„ ì„¤ì •í•  수 있습니다.</p>
<h2 id="adding">개요 í™”ë©´ì— ìž‘ì—… 추가</h2>
-<p>{@link android.content.Intent} í´ëž˜ìŠ¤ì˜ í”Œëž˜ê·¸ë¥¼ 사용하여 ìž‘ì—…ì„ ì¶”ê°€í•˜ë©´
-개요 화면ì—서 문서가 열리거나 다시 열리는 시ì ê³¼ ë°©ë²•ì„ ë³´ë‹¤ 철저히 통제할 수 있습니다.
+<p>{@link android.content.Intent} í´ëž˜ìŠ¤ì˜ í”Œëž˜ê·¸ë¥¼ 사용하여 ìž‘ì—…ì„ ì¶”ê°€í•˜ë©´
+개요 화면ì—서 문서가 열리거나 다시 열리는 시ì ê³¼ ë°©ë²•ì„ ë³´ë‹¤ 철저히 통제할 수 있습니다.
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
- íŠ¹ì„±ì„ ì‚¬ìš©í•˜ëŠ” 경우, 문서를 í•­ìƒ ìƒˆ 작업ì—서 여는 방법과 기존 ìž‘ì—…ì„ í•´ë‹¹ ë¬¸ì„œì— ë‹¤ì‹œ 사용하는 방법 중ì—서
+ íŠ¹ì„±ì„ ì‚¬ìš©í•˜ëŠ” 경우, 문서를 í•­ìƒ ìƒˆ 작업ì—서 여는 방법과 기존 ìž‘ì—…ì„ í•´ë‹¹ ë¬¸ì„œì— ë‹¤ì‹œ 사용하는 방법 중ì—서
ì„ íƒí•  수 있습니다.</p>
<h3 id="flag-new-doc">작업 ì¶”ê°€ì— ì¸í…트 플래그 사용</h3>
-<p>액티비티를 위해 새 문서를 ìƒì„±í•˜ëŠ” 경우,
-{@link android.app.ActivityManager.AppTask} í´ëž˜ìФì˜
+<p>액티비티를 위해 새 문서를 ìƒì„±í•˜ëŠ” 경우,
+{@link android.app.ActivityManager.AppTask} í´ëž˜ìФì˜
{@link android.app.ActivityManager.AppTask#startActivity(android.content.Context, android.content.Intent, android.os.Bundle) startActivity()}
- 메서드를 호출하고, ì´ê²ƒì„ 액티비티를 시작하는 ì¸í…íŠ¸ì— ì „ë‹¬í•˜ë©´ ë©ë‹ˆë‹¤. 논리ì ì¸ ì¤‘ë‹¨ì„ ì‚½ìž…í•˜ì—¬ ì‹œìŠ¤í…œì´ ê°œìš” 화면ì—서 액티비티를
-새 작업으로 처리하ë„ë¡ í•˜ë ¤ë©´, {@link android.content.Intent}ì˜
-{@link android.content.Intent#addFlags(int) addFlags()} ë©”ì„œë“œì— ìžˆëŠ” {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+ 메서드를 호출하고, ì´ê²ƒì„ 액티비티를 시작하는 ì¸í…íŠ¸ì— ì „ë‹¬í•˜ë©´ ë©ë‹ˆë‹¤. 논리ì ì¸ ì¤‘ë‹¨ì„ ì‚½ìž…í•˜ì—¬ ì‹œìŠ¤í…œì´ ê°œìš” 화면ì—서 액티비티를
+새 작업으로 처리하ë„ë¡ í•˜ë ¤ë©´, {@link android.content.Intent}ì˜
+{@link android.content.Intent#addFlags(int) addFlags()} ë©”ì„œë“œì— ìžˆëŠ” {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
플래그를 전달하여 액티비티를 시작하ë„ë¡ í•©ë‹ˆë‹¤.</p>
<p class="note"><strong>참고:</strong> {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
-플래그가 {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET} 플래그를
+플래그가 {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET} 플래그를
대체합니다. ì´ê²ƒì€ Android 5.0(API 레벨 21)부터 ì‚¬ìš©ì´ ì¤‘ë‹¨ë˜ì—ˆìŠµë‹ˆë‹¤.</p>
-<p>새 문서를 ìƒì„±í•˜ë©´ì„œ {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그를 설정하는 경우,
-ì‹œìŠ¤í…œì€ í•­ìƒ ëŒ€ìƒ ì•¡í‹°ë¹„í‹°ë¥¼ 루트로 하여 새 ìž‘ì—…ì„ ë§Œë“­ë‹ˆë‹¤.
-ì´ë ‡ê²Œ 설정하면 ê°™ì€ ë¬¸ì„œë¥¼ 하나 ì´ìƒì˜ 작업ì—서 ì—´ 수 있습니다. ë‹¤ìŒ ì½”ë“œëŠ” 기본 액티비티가 ì´ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 방법ì„
+<p>새 문서를 ìƒì„±í•˜ë©´ì„œ {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그를 설정하는 경우,
+ì‹œìŠ¤í…œì€ í•­ìƒ ëŒ€ìƒ ì•¡í‹°ë¹„í‹°ë¥¼ 루트로 하여 새 ìž‘ì—…ì„ ë§Œë“­ë‹ˆë‹¤.
+ì´ë ‡ê²Œ 설정하면 ê°™ì€ ë¬¸ì„œë¥¼ 하나 ì´ìƒì˜ 작업ì—서 ì—´ 수 있습니다. ë‹¤ìŒ ì½”ë“œëŠ” 기본 액티비티가 ì´ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 방법ì„
ë³´ì—¬ì¤ë‹ˆë‹¤.</p>
<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
@@ -111,15 +111,15 @@ public void createNewDocument(View view) {
</pre>
<p class="note"><strong>참고:</strong> {@code FLAG_ACTIVITY_NEW_DOCUMENT}
- 플래그로 ì‹œìž‘ëœ ì•¡í‹°ë¹„í‹°ì˜ ê²½ìš°, 반드시 ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— {@code android:launchMode="standard"} 특성 ê°’(기본)ì´ ì„¤ì •ë˜ì–´
+ 플래그로 ì‹œìž‘ëœ ì•¡í‹°ë¹„í‹°ì˜ ê²½ìš°, 반드시 ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— {@code android:launchMode="standard"} 특성 ê°’(기본)ì´ ì„¤ì •ë˜ì–´
있어야 합니다.</p>
-<p>기본 액티비티가 새 액티비티를 시작하면 ì‹œìŠ¤í…œì€ ê¸°ì¡´ì˜ ìž‘ì—…ì„ ê²€ìƒ‰í•˜ì—¬ ê·¸ 중
-해당 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ì¸í…트 구성 요소 ì´ë¦„ê³¼ ì¸í…트 ë°ì´í„°ì™€ ì¼ì¹˜í•˜ëŠ” ì¸í…트를 가진 ìž‘ì—…ì„ ì°¾ìŠµë‹ˆë‹¤. 그러한 작업ì„
+<p>기본 액티비티가 새 액티비티를 시작하면 ì‹œìŠ¤í…œì€ ê¸°ì¡´ì˜ ìž‘ì—…ì„ ê²€ìƒ‰í•˜ì—¬ ê·¸ 중
+해당 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ì¸í…트 구성 요소 ì´ë¦„ê³¼ ì¸í…트 ë°ì´í„°ì™€ ì¼ì¹˜í•˜ëŠ” ì¸í…트를 가진 ìž‘ì—…ì„ ì°¾ìŠµë‹ˆë‹¤. 그러한 작업ì„
ì°¾ì„ ìˆ˜ 없거나 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}
- í”Œëž˜ê·¸ì— ë“¤ì–´ 있는 ì¸í…트를 ì°¾ì„ ìˆ˜ 없는 경우, 해당 액티비티를 루트로 하여 새 ìž‘ì—…ì´ ìƒì„±ë©ë‹ˆë‹¤. ì›í•˜ëŠ” í•­ëª©ì„ ì°¾ìœ¼ë©´, ì‹œìŠ¤í…œì€ í•´ë‹¹ ìž‘ì—…ì„ ì „ê²½ìœ¼ë¡œ 가지고 와
-새 ì¸í…트를 {@link android.app.Activity#onNewIntent onNewIntent()}ì— ì „ë‹¬í•©ë‹ˆë‹¤.
-새 액티비티가 ì¸í…트를 받아 개요 화면ì—서 새 문서를 ìƒì„±í•˜ë©°, ì´ëŠ” ë‹¤ìŒ ì˜ˆì‹œì— ë‚˜íƒ€ë‚¸
+ í”Œëž˜ê·¸ì— ë“¤ì–´ 있는 ì¸í…트를 ì°¾ì„ ìˆ˜ 없는 경우, 해당 액티비티를 루트로 하여 새 ìž‘ì—…ì´ ìƒì„±ë©ë‹ˆë‹¤. ì›í•˜ëŠ” í•­ëª©ì„ ì°¾ìœ¼ë©´, ì‹œìŠ¤í…œì€ í•´ë‹¹ ìž‘ì—…ì„ ì „ê²½ìœ¼ë¡œ 가지고 와
+새 ì¸í…트를 {@link android.app.Activity#onNewIntent onNewIntent()}ì— ì „ë‹¬í•©ë‹ˆë‹¤.
+새 액티비티가 ì¸í…트를 받아 개요 화면ì—서 새 문서를 ìƒì„±í•˜ë©°, ì´ëŠ” ë‹¤ìŒ ì˜ˆì‹œì— ë‚˜íƒ€ë‚¸
것과 같습니다.</p>
<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
@@ -149,64 +149,64 @@ protected void onNewIntent(Intent intent) {
<h3 id="#attr-doclaunch">작업 ì¶”ê°€ì— ì•¡í‹°ë¹„í‹° 특성 사용</h3>
-<p>액티비티는 ìžì‹ ì˜ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ìƒˆ ìž‘ì—…ì„ ì‹œìž‘í•  때는 í•­ìƒ
+<p>액티비티는 ìžì‹ ì˜ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ìƒˆ ìž‘ì—…ì„ ì‹œìž‘í•  때는 í•­ìƒ
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
특성, <a href="{@docRoot}guide/topics/manifest/activity-element.html#dlmode">
-{@code android:documentLaunchMode}</a>를 사용한다고 나타낼 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ íŠ¹ì„±ì—는 네 가지 ê°’ì´ ìžˆì–´ 사용ìžê°€ 애플리케ì´ì…˜ìœ¼ë¡œ 문서를 ì—´ë©´
+{@code android:documentLaunchMode}</a>를 사용한다고 나타낼 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ íŠ¹ì„±ì—는 네 가지 ê°’ì´ ìžˆì–´ 사용ìžê°€ 애플리케ì´ì…˜ìœ¼ë¡œ 문서를 ì—´ë©´
다ìŒê³¼ ê°™ì€ íš¨ê³¼ë¥¼ ë°œìƒì‹œí‚µë‹ˆë‹¤.</p>
<dl>
<dt>"{@code intoExisting}"</dt>
- <dd>액티비티가 ë¬¸ì„œì— ëŒ€í•´ ê¸°ì¡´ì˜ ìž‘ì—…ì„ ìž¬ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ê²ƒì€
-{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 플래그를 설정할 때
-{@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그 <em>ì—†ì´</em> 설정하는 것과 같습니다.
+ <dd>액티비티가 ë¬¸ì„œì— ëŒ€í•´ ê¸°ì¡´ì˜ ìž‘ì—…ì„ ìž¬ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ê²ƒì€
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 플래그를 설정할 때
+{@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그 <em>ì—†ì´</em> 설정하는 것과 같습니다.
ì´ëŠ” ìœ„ì˜ <a href="#flag-new-doc">작업 ì¶”ê°€ì— ì¸í…트 플래그 사용</a>ì—서 설명한 것과 같습니다.</dd>
<dt>"{@code always}"</dt>
- <dd>액티비티가 ë¬¸ì„œì— ëŒ€í•´ 새 ìž‘ì—…ì„ ìƒì„±í•˜ë©°, ì´ëŠ” 문서가 ì´ë¯¸ ì—´ë ¤ 있는 경우ë¼ë„ 마찬가지입니다. ì´ ê°’ì„
+ <dd>액티비티가 ë¬¸ì„œì— ëŒ€í•´ 새 ìž‘ì—…ì„ ìƒì„±í•˜ë©°, ì´ëŠ” 문서가 ì´ë¯¸ ì—´ë ¤ 있는 경우ë¼ë„ 마찬가지입니다. ì´ ê°’ì„
사용하는 ê²ƒì€ {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
ë° {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그를 둘 다 설정하는 것과 같습니다.</dd>
<dt>"{@code noneâ€}"</dt>
- <dd>액티비티가 ë¬¸ì„œì— ëŒ€í•´ 새 ìž‘ì—…ì„ ìƒì„±í•˜ì§€ 않습니다. 개요 í™”ë©´ì€ ì•¡í‹°ë¹„í‹°ë¥¼ 기본 ìƒíƒœì—서와
-ê°™ì´ ë‹¤ë£¹ë‹ˆë‹¤. 즉 ì•±ì— ëŒ€í•œ í•˜ë‚˜ì˜ ìž‘ì—…ì„ í‘œì‹œí•˜ë©°, ì´ë•Œ 사용ìžê°€
+ <dd>액티비티가 ë¬¸ì„œì— ëŒ€í•´ 새 ìž‘ì—…ì„ ìƒì„±í•˜ì§€ 않습니다. 개요 í™”ë©´ì€ ì•¡í‹°ë¹„í‹°ë¥¼ 기본 ìƒíƒœì—서와
+ê°™ì´ ë‹¤ë£¹ë‹ˆë‹¤. 즉 ì•±ì— ëŒ€í•œ í•˜ë‚˜ì˜ ìž‘ì—…ì„ í‘œì‹œí•˜ë©°, ì´ë•Œ 사용ìžê°€
마지막으로 호출한 ìž‘ì—…ì´ ë¬´ì—‡ì´ë“  관계 ì—†ì´ ê·¸ 작업ì—서부터 재개합니다.</dd>
<dt>"{@code never}"</dt>
- <dd>액티비티가 ë¬¸ì„œì— ëŒ€í•´ 새 ìž‘ì—…ì„ ìƒì„±í•˜ì§€ 않습니다. ì´ ê°’ì„ ì„¤ì •í•˜ë©´
+ <dd>액티비티가 ë¬¸ì„œì— ëŒ€í•´ 새 ìž‘ì—…ì„ ìƒì„±í•˜ì§€ 않습니다. ì´ ê°’ì„ ì„¤ì •í•˜ë©´
{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
- ë° {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} í”Œëž˜ê·¸ì˜ í–‰ë™ì„
-재정ì˜í•©ë‹ˆë‹¤(ì´ë“¤ 중 하나가 ì¸í…트ì—서 설정ë˜ì–´ 있는 경우). 개요 í™”ë©´ì€ ì•±ì— ëŒ€í•œ í•˜ë‚˜ì˜ ìž‘ì—…ì„ í‘œì‹œí•˜ê³ ,
+ ë° {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} í”Œëž˜ê·¸ì˜ í–‰ë™ì„
+재정ì˜í•©ë‹ˆë‹¤(ì´ë“¤ 중 하나가 ì¸í…트ì—서 설정ë˜ì–´ 있는 경우). 개요 í™”ë©´ì€ ì•±ì— ëŒ€í•œ í•˜ë‚˜ì˜ ìž‘ì—…ì„ í‘œì‹œí•˜ê³ ,
ì´ê²ƒì´ 사용ìžê°€ 마지막으로 호출한 액티비티가 무엇ì´ë“  그것부터 재개합니다.</dd>
</dl>
-<p class="note"><strong>참고:</strong> {@code none} ë° {@code never}를 제외한 다른 ê°’ì˜ ê²½ìš°,
-액티비티를 {@code launchMode="standard"}로 ì •ì˜í•´ì•¼ 합니다. ì´ íŠ¹ì„±ì„ ì§€ì •í•˜ì§€ 않으면
+<p class="note"><strong>참고:</strong> {@code none} ë° {@code never}를 제외한 다른 ê°’ì˜ ê²½ìš°,
+액티비티를 {@code launchMode="standard"}로 ì •ì˜í•´ì•¼ 합니다. ì´ íŠ¹ì„±ì„ ì§€ì •í•˜ì§€ 않으면
{@code documentLaunchMode="none"}ì´ ì‚¬ìš©ë©ë‹ˆë‹¤.</p>
<h2 id="removing">작업 제거</h2>
-<p>기본ì ìœ¼ë¡œ 문서 ìž‘ì—…ì€ í•´ë‹¹ë˜ëŠ” 액티비티가 완료ë˜ë©´ ìžë™ìœ¼ë¡œ 개요 화면ì—서
-제거ë©ë‹ˆë‹¤. ì´ í–‰ë™ì„ 재정ì˜í•˜ë ¤ë©´ {@link android.app.ActivityManager.AppTask} í´ëž˜ìŠ¤ë¥¼ 사용합니다. ì´ë•Œ
+<p>기본ì ìœ¼ë¡œ 문서 ìž‘ì—…ì€ í•´ë‹¹ë˜ëŠ” 액티비티가 완료ë˜ë©´ ìžë™ìœ¼ë¡œ 개요 화면ì—서
+제거ë©ë‹ˆë‹¤. ì´ í–‰ë™ì„ 재정ì˜í•˜ë ¤ë©´ {@link android.app.ActivityManager.AppTask} í´ëž˜ìŠ¤ë¥¼ 사용합니다. ì´ë•Œ
{@link android.content.Intent} 플래그 ë˜ëŠ” <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
&lt;activity&gt;</a></code> íŠ¹ì„±ì„ í•¨ê»˜ 사용하십시오.</p>
-<p>개요 화면ì—서 ìž‘ì—…ì„ ì™„ì „ížˆ 제외하려면 언제든
+<p>개요 화면ì—서 ìž‘ì—…ì„ ì™„ì „ížˆ 제외하려면 언제든
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
특성, <a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">
{@code android:excludeFromRecents}</a>를 {@code true}로 설정합니다.</p>
-<p>개요 화면ì—서 ì•±ì´ í¬í•¨í•  수 있는 ìž‘ì—…ì˜ ìµœëŒ€ 개수를 설정하려면
+<p>개요 화면ì—서 ì•±ì´ í¬í•¨í•  수 있는 ìž‘ì—…ì˜ ìµœëŒ€ 개수를 설정하려면
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
특성 <a href="{@docRoot}guide/topics/manifest/activity-element.html#maxrecents">{@code android:maxRecents}
-</a>를 정수 값으로 설정합니다. ê¸°ë³¸ì€ 16개입니다. ìž‘ì—…ì˜ ìµœëŒ€ ëŒ€ìˆ˜ì— ë„달하면 가장 ì˜ˆì „ì— ì‚¬ìš©ëœ ìž‘ì—…ì´ ê°œìš” 화면ì—서
-제거ë©ë‹ˆë‹¤. {@code android:maxRecents} 최대값ì€
+</a>를 정수 값으로 설정합니다. ê¸°ë³¸ì€ 16개입니다. ìž‘ì—…ì˜ ìµœëŒ€ ëŒ€ìˆ˜ì— ë„달하면 가장 ì˜ˆì „ì— ì‚¬ìš©ëœ ìž‘ì—…ì´ ê°œìš” 화면ì—서
+제거ë©ë‹ˆë‹¤. {@code android:maxRecents} 최대값ì€
50입니다(메모리 ìš©ëŸ‰ì´ ì ì€ 기기ì—서는 25). 1 ë¯¸ë§Œì˜ ê°’ì€ ìœ íš¨í•˜ì§€ 않습니다.</p>
<h3 id="#apptask-remove">작업 ì œê±°ì— AppTask í´ëž˜ìФ 사용</h3>
-<p>개요 화면ì—서 새 ìž‘ì—…ì„ ìƒì„±í•˜ëŠ” 액티비티ì—서는 ìž‘ì—…ì„ ì–¸ì œ 제거할 것ì¸ì§€ì™€
-그와 ê´€ë ¨ëœ ëª¨ë“  액티비티를 언제 완료할 것ì¸ì§€ 지정할 수 있습니다.
+<p>개요 화면ì—서 새 ìž‘ì—…ì„ ìƒì„±í•˜ëŠ” 액티비티ì—서는 ìž‘ì—…ì„ ì–¸ì œ 제거할 것ì¸ì§€ì™€
+그와 ê´€ë ¨ëœ ëª¨ë“  액티비티를 언제 완료할 것ì¸ì§€ 지정할 수 있습니다.
{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} 메서드를 호출하면 ë©ë‹ˆë‹¤.</p>
<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
@@ -218,15 +218,15 @@ public void onRemoveFromRecents(View view) {
}
</pre>
-<p class="note"><strong>참고:</strong>
-{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} 메서드를
-사용하면 {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 태그 ì‚¬ìš©ì„ ìž¬ì •ì˜í•©ë‹ˆë‹¤.
+<p class="note"><strong>참고:</strong>
+{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} 메서드를
+사용하면 {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 태그 ì‚¬ìš©ì„ ìž¬ì •ì˜í•©ë‹ˆë‹¤.
ì´ ë‚´ìš©ì€ ì•„ëž˜ì—서 설명합니다.</p>
<h3 id="#retain-finished">ì™„ë£Œëœ ìž‘ì—… ë³´ì¡´</h3>
-<p>ìž‘ì—…ì„ ê°œìš” í™”ë©´ì— ë³´ì¡´í•˜ë ¤ë©´(액티비티가 완료ë˜ì—ˆë”ë¼ë„),
-액티비티를 시작하는 ì¸í…íŠ¸ì˜ {@link android.content.Intent#addFlags(int) addFlags()} ë©”ì„œë“œì— ìžˆëŠ”
+<p>ìž‘ì—…ì„ ê°œìš” í™”ë©´ì— ë³´ì¡´í•˜ë ¤ë©´(액티비티가 완료ë˜ì—ˆë”ë¼ë„),
+액티비티를 시작하는 ì¸í…íŠ¸ì˜ {@link android.content.Intent#addFlags(int) addFlags()} ë©”ì„œë“œì— ìžˆëŠ”
{@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 플래그를 전달합니다.</p>
<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
@@ -241,11 +241,11 @@ private Intent newDocumentIntent() {
}
</pre>
-<p>ê°™ì€ íš¨ê³¼ë¥¼ 얻기 위해
+<p>ê°™ì€ íš¨ê³¼ë¥¼ 얻기 위해
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
특성 <a href="{@docRoot}guide/topics/manifest/activity-element.html#autoremrecents">
{@code android:autoRemoveFromRecents}</a>를 {@code false}로 ì„¤ì •í•´ë„ ë©ë‹ˆë‹¤. 기본 ê°’ì€ ë¬¸ì„œ ì•¡í‹°ë¹„í‹°ì˜ ê²½ìš° {@code true}
-ì´ê³ , ì¼ë°˜ ì•¡í‹°ë¹„í‹°ì˜ ê²½ìš° {@code false}입니다. ì´ íŠ¹ì„±ì„ ì‚¬ìš©í•˜ë©´ ì´ì „ì— ë…¼í•œ 것과 ê°™ì´
+ì´ê³ , ì¼ë°˜ ì•¡í‹°ë¹„í‹°ì˜ ê²½ìš° {@code false}입니다. ì´ íŠ¹ì„±ì„ ì‚¬ìš©í•˜ë©´ ì´ì „ì— ë…¼í•œ 것과 ê°™ì´
{@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 플래그를 재정ì˜í•˜ê²Œ ë©ë‹ˆë‹¤.</p>
diff --git a/docs/html-intl/intl/ko/guide/components/services.jd b/docs/html-intl/intl/ko/guide/components/services.jd
index fb95ea5ed0fa..71c2b50424e8 100644
--- a/docs/html-intl/intl/ko/guide/components/services.jd
+++ b/docs/html-intl/intl/ko/guide/components/services.jd
@@ -49,52 +49,52 @@ page.title=서비스
</div>
-<p>{@link android.app.Service}는 ë°°ê²½ì—서 오래 실행ë˜ëŠ” 작업ì„
-수행할 수 있는 애플리케ì´ì…˜ 구성 요소ì´ë©° ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하지 않습니다. ë˜ ë‹¤ë¥¸
-애플리케ì´ì…˜ 구성 요소가 서비스를 시작할 수 있으며, ì´ëŠ” 사용ìžê°€ ë˜ ë‹¤ë¥¸
-애플리케ì´ì…˜ìœ¼ë¡œ 전환하ë”ë¼ë„ ë°°ê²½ì—서 계ì†í•´ì„œ 실행ë©ë‹ˆë‹¤. ì´ì™¸ì—ë„, 구성 요소를 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ì—¬
-서비스와 ìƒí˜¸ 작용할 수 있으며, 심지어는 프로세스 ê°„ 통신(IPC)ë„ ìˆ˜í–‰í•  수 있습니다. 예를 들어 한 서비스는
-ë„¤íŠ¸ì›Œí¬ íŠ¸ëžœìž­ì…˜ì„ ì²˜ë¦¬í•˜ê³ , ìŒì•…ì„ ìž¬ìƒí•˜ê³  íŒŒì¼ I/O를 수행하거나 콘í…츠 제공ìžì™€ ìƒí˜¸ 작용할 수 있으며
+<p>{@link android.app.Service}는 ë°°ê²½ì—서 오래 실행ë˜ëŠ” 작업ì„
+수행할 수 있는 애플리케ì´ì…˜ 구성 요소ì´ë©° ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하지 않습니다. ë˜ ë‹¤ë¥¸
+애플리케ì´ì…˜ 구성 요소가 서비스를 시작할 수 있으며, ì´ëŠ” 사용ìžê°€ ë˜ ë‹¤ë¥¸
+애플리케ì´ì…˜ìœ¼ë¡œ 전환하ë”ë¼ë„ ë°°ê²½ì—서 계ì†í•´ì„œ 실행ë©ë‹ˆë‹¤. ì´ì™¸ì—ë„, 구성 요소를 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•˜ì—¬
+서비스와 ìƒí˜¸ 작용할 수 있으며, 심지어는 프로세스 ê°„ 통신(IPC)ë„ ìˆ˜í–‰í•  수 있습니다. 예를 들어 한 서비스는
+ë„¤íŠ¸ì›Œí¬ íŠ¸ëžœìž­ì…˜ì„ ì²˜ë¦¬í•˜ê³ , ìŒì•…ì„ ìž¬ìƒí•˜ê³  íŒŒì¼ I/O를 수행하거나 콘í…츠 제공ìžì™€ ìƒí˜¸ 작용할 수 있으며
ì´ ëª¨ë“  ê²ƒì„ ë°°ê²½ì—서 수행할 수 있습니다.</p>
<p>서비스는 본질ì ìœ¼ë¡œ ë‘ ê°€ì§€ 형ì‹ì„ 취합니다.</p>
<dl>
<dt>시작ë¨</dt>
- <dd>서비스가 "시작ëœ" ìƒíƒœê°€ ë˜ë ¤ë©´ 애플리케ì´ì…˜ 구성 요소(예: 액티비티)ê°€
-{@link android.content.Context#startService startService()}를 호출하여 시작하면 ë©ë‹ˆë‹¤. 서비스는 한 번 시작ë˜ê³  나면
-ë°°ê²½ì—서 무기한으로 ì‹¤í–‰ë  ìˆ˜ 있으며, ì´ëŠ” 해당 서비스를 시작한 구성 요소가 소멸ë˜ì—ˆë”ë¼ë„ 무관합니다. 보통,
+ <dd>서비스가 "시작ëœ" ìƒíƒœê°€ ë˜ë ¤ë©´ 애플리케ì´ì…˜ 구성 요소(예: 액티비티)ê°€
+{@link android.content.Context#startService startService()}를 호출하여 시작하면 ë©ë‹ˆë‹¤. 서비스는 한 번 시작ë˜ê³  나면
+ë°°ê²½ì—서 무기한으로 ì‹¤í–‰ë  ìˆ˜ 있으며, ì´ëŠ” 해당 서비스를 시작한 구성 요소가 소멸ë˜ì—ˆë”ë¼ë„ 무관합니다. 보통,
ì‹œìž‘ëœ ì„œë¹„ìŠ¤ëŠ” 한 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê³  결과를 발신ìžì—게 반환하지 않습니다.
-예를 들어 네트워í¬ì—서 파ì¼ì„ 다운로드하거나 업로드할 수 있습니다. ìž‘ì—…ì„ ì™„ë£Œí•˜ë©´, 해당 서비스는
+예를 들어 네트워í¬ì—서 파ì¼ì„ 다운로드하거나 업로드할 수 있습니다. ìž‘ì—…ì„ ì™„ë£Œí•˜ë©´, 해당 서비스는
알아서 중단ë˜ëŠ” ê²ƒì´ ì •ìƒìž…니다.</dd>
<dt>ë°”ì¸ë”©ë¨</dt>
<dd>서비스가 "ë°”ì¸ë”©ëœ" ìƒíƒœê°€ ë˜ë ¤ë©´ 애플리케ì´ì…˜ 구성 요소가 {@link
-android.content.Context#bindService bindService()}를 사용하여 해당 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ë˜ë©´ ë©ë‹ˆë‹¤. ë°”ì¸ë”©ëœ 서비스는 í´ë¼ì´ì–¸íЏ-서버
-ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하여 구성 요소가 서비스와 ìƒí˜¸ 작용할 수 있ë„ë¡ í•´ì£¼ë©°, 결과를 가져올 ìˆ˜ë„ ìžˆê³  심지어
-ì´ì™€ ê°™ì€ ìž‘ì—…ì„ ì—¬ëŸ¬ í”„ë¡œì„¸ìŠ¤ì— ê±¸ì³ í”„ë¡œì„¸ìŠ¤ ê°„ 통신(IPC)으로 수행할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ë°”ì¸ë”©ëœ 서비스는 ë˜ ë‹¤ë¥¸ 애플리케ì´ì…˜ 구성 요소가
-ì´ì— ë°”ì¸ë”©ë˜ì–´ 있는 경우ì—ë§Œ 실행ë©ë‹ˆë‹¤. 여러 ê°œì˜ êµ¬ì„± 요소가 ì„œë¹„ìŠ¤ì— í•œêº¼ë²ˆì— ë°”ì¸ë”©ë  수 있지만,
+android.content.Context#bindService bindService()}를 사용하여 해당 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ë˜ë©´ ë©ë‹ˆë‹¤. ë°”ì¸ë”©ëœ 서비스는 í´ë¼ì´ì–¸íЏ-서버
+ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하여 구성 요소가 서비스와 ìƒí˜¸ 작용할 수 있ë„ë¡ í•´ì£¼ë©°, 결과를 가져올 ìˆ˜ë„ ìžˆê³  심지어
+ì´ì™€ ê°™ì€ ìž‘ì—…ì„ ì—¬ëŸ¬ í”„ë¡œì„¸ìŠ¤ì— ê±¸ì³ í”„ë¡œì„¸ìŠ¤ ê°„ 통신(IPC)으로 수행할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ë°”ì¸ë”©ëœ 서비스는 ë˜ ë‹¤ë¥¸ 애플리케ì´ì…˜ 구성 요소가
+ì´ì— ë°”ì¸ë”©ë˜ì–´ 있는 경우ì—ë§Œ 실행ë©ë‹ˆë‹¤. 여러 ê°œì˜ êµ¬ì„± 요소가 ì„œë¹„ìŠ¤ì— í•œêº¼ë²ˆì— ë°”ì¸ë”©ë  수 있지만,
ì´ ëª¨ë“  ê²ƒì´ ë°”ì¸ë”©ì„ 해제하면 해당 서비스는 소멸ë©ë‹ˆë‹¤.</dd>
</dl>
-<p>ì´ ë¬¸ì„œëŠ” 주로 ì´ëŸ¬í•œ ë‘ ê°€ì§€ ìœ í˜•ì˜ ì„œë¹„ìŠ¤ë¥¼ 따로따로 논하지만, 서비스는
+<p>ì´ ë¬¸ì„œëŠ” 주로 ì´ëŸ¬í•œ ë‘ ê°€ì§€ ìœ í˜•ì˜ ì„œë¹„ìŠ¤ë¥¼ 따로따로 논하지만, 서비스는
ë‘ ê°€ì§€ ë°©ì‹ ëª¨ë‘로 ìž‘ë™í•  수 있습니다. 즉 서비스가 ì‹œìž‘ë  ìˆ˜ë„ ìžˆê³ (나아가 무기한으로 실행ë˜ê³ ) ë°”ì¸ë”©ë„ 허용할 수 있다는 뜻입니다.
ì´ëŠ” 그저 ë‘ì–´ 가지 콜백 ë©”ì„œë“œì˜ êµ¬í˜„ ì—¬ë¶€ì— ë‹¬ë¦° 문제입니다. {@link
android.app.Service#onStartCommand onStartCommand()}를 사용하면 구성 요소가 서비스를 시작할 수 있게 허용하고, {@link
android.app.Service#onBind onBind()}를 사용하면 ë°”ì¸ë”©ì„ 허용합니다.</p>
<p>애플리케ì´ì…˜ì´ 시작ë˜ì—ˆë“ , ë°”ì¸ë”©ë˜ì—ˆë“  아니면 양쪽 모ë‘ì´ë“  모든 애플리케ì´ì…˜ 구성 요소가
-해당 서비스를 사용할 수 있으며(별ë„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì—서ë¼ë„), ì´ëŠ” ì–´ëŠ êµ¬ì„± 요소든 액티비티를
-사용할 수 있는 것과 같습니다. ì´ë¥¼ {@link android.content.Intent}로 시작하면 ë©ë‹ˆë‹¤. 그러나,
-매니페스트ì—서 서비스를 비공개로 선언하고 다른 애플리케ì´ì…˜ìœ¼ë¡œë¶€í„°ì˜ 액세스를 차단할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ê²ƒì€
-<a href="#Declaring">매니페스트ì—서 서비스
+해당 서비스를 사용할 수 있으며(별ë„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì—서ë¼ë„), ì´ëŠ” ì–´ëŠ êµ¬ì„± 요소든 액티비티를
+사용할 수 있는 것과 같습니다. ì´ë¥¼ {@link android.content.Intent}로 시작하면 ë©ë‹ˆë‹¤. 그러나,
+매니페스트ì—서 서비스를 비공개로 선언하고 다른 애플리케ì´ì…˜ìœ¼ë¡œë¶€í„°ì˜ 액세스를 차단할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ê²ƒì€
+<a href="#Declaring">매니페스트ì—서 서비스
선언하기</a>ì— ê´€í•œ 섹션ì—서 ë” ìžì„¸ížˆ ì´ì•¼ê¸°í•©ë‹ˆë‹¤.</p>
-<p class="caution"><strong>주ì˜:</strong> 서비스는 ìžì‹ ì˜ 호스팅 프로세스ì˜
-기본 스레드ì—서 실행ë©ë‹ˆë‹¤. 서비스는 ìžì‹ ì˜ 스레드를 ì§ì ‘ ìƒì„±í•˜ì§€ <strong>않으며</strong>,
-별ë„ì˜ í”„ë¡œì„¸ìŠ¤ì—서 실행ë˜ì§€ë„ <strong>않습니다</strong>(별ë„로 지정하는 경우는 예외). ì´ê²ƒì€ 즉,
-서비스가 CPU 집약ì ì¸ ìž‘ì—…ì„ ìˆ˜í–‰í•  예정ì´ê±°ë‚˜ 차단ì ì¸ ìž‘ì—…ì„ ìˆ˜í–‰í•  ì˜ˆì •ì¸ ê²½ìš°(예를 들어 MP3
-ìž¬ìƒ ë˜ëŠ” 네트워킹 등), 서비스 ë‚´ì— ìƒˆ 스레드를 ìƒì„±í•˜ì—¬ 해당 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë„ë¡ í•´ì•¼ 한다는 뜻입니다. 별ë„ì˜ ìŠ¤ë ˆë“œë¥¼ 사용하면
-'애플리케ì´ì…˜ì´ ì‘답하지 않습니다(ANR)' 오류가 ì¼ì–´ë‚  ìœ„í—˜ì„ ì¤„ì¼ ìˆ˜ 있으며
+<p class="caution"><strong>주ì˜:</strong> 서비스는 ìžì‹ ì˜ 호스팅 프로세스ì˜
+기본 스레드ì—서 실행ë©ë‹ˆë‹¤. 서비스는 ìžì‹ ì˜ 스레드를 ì§ì ‘ ìƒì„±í•˜ì§€ <strong>않으며</strong>,
+별ë„ì˜ í”„ë¡œì„¸ìŠ¤ì—서 실행ë˜ì§€ë„ <strong>않습니다</strong>(별ë„로 지정하는 경우는 예외). ì´ê²ƒì€ 즉,
+서비스가 CPU 집약ì ì¸ ìž‘ì—…ì„ ìˆ˜í–‰í•  예정ì´ê±°ë‚˜ 차단ì ì¸ ìž‘ì—…ì„ ìˆ˜í–‰í•  ì˜ˆì •ì¸ ê²½ìš°(예를 들어 MP3
+ìž¬ìƒ ë˜ëŠ” 네트워킹 등), 서비스 ë‚´ì— ìƒˆ 스레드를 ìƒì„±í•˜ì—¬ 해당 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë„ë¡ í•´ì•¼ 한다는 뜻입니다. 별ë„ì˜ ìŠ¤ë ˆë“œë¥¼ 사용하면
+'애플리케ì´ì…˜ì´ ì‘답하지 않습니다(ANR)' 오류가 ì¼ì–´ë‚  ìœ„í—˜ì„ ì¤„ì¼ ìˆ˜ 있으며
애플리케ì´ì…˜ì˜ 기본 스레드는 액티비티와 ì‚¬ìš©ìž ìƒí˜¸ 작용 전용으로 ìœ ì§€ë  ìˆ˜ 있습니다.</p>
@@ -103,89 +103,89 @@ android.app.Service#onBind onBind()}를 사용하면 ë°”ì¸ë”©ì„ 허용합니ë‹
<div class="sidebox-wrapper">
<div class="sidebox">
<h3>서비스와 스레드 중 ì–´ëŠ ê²ƒì„ ì‚¬ìš©í•´ì•¼ 할까요?</h3>
- <p>서비스는 그저 ë°°ê²½ì—서 ì‹¤í–‰ë  ìˆ˜ 있는 구성 ìš”ì†Œì¼ ë¿ìž…니다. ì´ëŠ” 사용ìžê°€
-애플리케ì´ì…˜ê³¼ ìƒí˜¸ 작용하지 ì•Šì•„ë„ ê´€ê³„ ì—†ì´ í•´ë‹¹ë©ë‹ˆë‹¤. ë”°ë¼ì„œ, 서비스를 ìƒì„±í•˜ëŠ” ê²ƒì€ ê¼­ ê·¸ê²ƒì´ í•„ìš”í•  때만으로 국한ë˜ì–´ì•¼
+ <p>서비스는 그저 ë°°ê²½ì—서 ì‹¤í–‰ë  ìˆ˜ 있는 구성 ìš”ì†Œì¼ ë¿ìž…니다. ì´ëŠ” 사용ìžê°€
+애플리케ì´ì…˜ê³¼ ìƒí˜¸ 작용하지 ì•Šì•„ë„ ê´€ê³„ ì—†ì´ í•´ë‹¹ë©ë‹ˆë‹¤. ë”°ë¼ì„œ, 서비스를 ìƒì„±í•˜ëŠ” ê²ƒì€ ê¼­ ê·¸ê²ƒì´ í•„ìš”í•  때만으로 국한ë˜ì–´ì•¼
합니다.</p>
- <p>기본 스레드 외부ì—서 ìž‘ì—…ì„ ìˆ˜í–‰í•´ì•¼ 하지만 사용ìžê°€ 애플리케ì´ì…˜ê³¼ ìƒí˜¸ 작용 중ì¸
-ë™ì•ˆì—ë§Œ 수행하면 ë˜ëŠ” 경우ë¼ë©´, 서비스가 ì•„ë‹ˆë¼ ê·¸ 대신 새 스레드를 ìƒì„±í•´ì•¼ 합니다. 예를 들어
-액티비티가 실행ë˜ëŠ” 중ì—ë§Œ ìŒì•…ì„ ìž¬ìƒí•˜ê³ ìž 하는 경우,
+ <p>기본 스레드 외부ì—서 ìž‘ì—…ì„ ìˆ˜í–‰í•´ì•¼ 하지만 사용ìžê°€ 애플리케ì´ì…˜ê³¼ ìƒí˜¸ 작용 중ì¸
+ë™ì•ˆì—ë§Œ 수행하면 ë˜ëŠ” 경우ë¼ë©´, 서비스가 ì•„ë‹ˆë¼ ê·¸ 대신 새 스레드를 ìƒì„±í•´ì•¼ 합니다. 예를 들어
+액티비티가 실행ë˜ëŠ” 중ì—ë§Œ ìŒì•…ì„ ìž¬ìƒí•˜ê³ ìž 하는 경우,
{@link android.app.Activity#onCreate onCreate()} ì•ˆì— ìŠ¤ë ˆë“œë¥¼ ìƒì„±í•˜ê³  ì´ë¥¼ {@link
android.app.Activity#onStart onStart()}ì—서 실행하기 시작한 ë‹¤ìŒ {@link android.app.Activity#onStop
-onStop()}ì—서 중단하면 ë©ë‹ˆë‹¤. ë˜í•œ, ê¸°ì¡´ì˜ {@link java.lang.Thread} í´ëž˜ìФ 대신
-{@link android.os.AsyncTask} ë˜ëŠ” {@link android.os.HandlerThread}를 사용하는 ë°©ì•ˆë„ ê³ ë ¤í•˜ì‹­ì‹œì˜¤. ìŠ¤ë ˆë“œì— ê´€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/components/processes-and-threads.html#Threads">프로세스 ë°
+onStop()}ì—서 중단하면 ë©ë‹ˆë‹¤. ë˜í•œ, ê¸°ì¡´ì˜ {@link java.lang.Thread} í´ëž˜ìФ 대신
+{@link android.os.AsyncTask} ë˜ëŠ” {@link android.os.HandlerThread}를 사용하는 ë°©ì•ˆë„ ê³ ë ¤í•˜ì‹­ì‹œì˜¤. ìŠ¤ë ˆë“œì— ê´€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/components/processes-and-threads.html#Threads">프로세스 ë°
스레딩</a> 문서를 참조하십시오.</p>
- <p>서비스를 사용하는 경우 기본ì ìœ¼ë¡œ 애플리케ì´ì…˜ì˜ 기본 스레드ì—서
-ê³„ì† ì‹¤í–‰ë˜ë¯€ë¡œ 서비스가 집약ì ì´ê±°ë‚˜ 차단ì ì¸ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 경우 여전히 서비스 ë‚´ì—
+ <p>서비스를 사용하는 경우 기본ì ìœ¼ë¡œ 애플리케ì´ì…˜ì˜ 기본 스레드ì—서
+ê³„ì† ì‹¤í–‰ë˜ë¯€ë¡œ 서비스가 집약ì ì´ê±°ë‚˜ 차단ì ì¸ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 경우 여전히 서비스 ë‚´ì—
새 스레드를 ìƒì„±í•´ì•¼ 한다는 ì ì„ 명심하십시오.</p>
</div>
</div>
-<p>서비스를 ìƒì„±í•˜ë ¤ë©´ {@link android.app.Service}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¥¼ ìƒì„±í•´ì•¼ 합니다(아니면 ì´ì˜
-기존 하위 í´ëž˜ìФ 중 하나). 구현ì—서는 서비스 수명 ì£¼ê¸°ì˜ ì£¼ìš” ì¸¡ë©´ì„ ì²˜ë¦¬í•˜ëŠ” 콜백 메서드를
-몇 가지 재정ì˜í•´ì•¼ 하며 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•  구성 ìš”ì†Œì— ëŒ€í•œ 메커니즘ì„
+<p>서비스를 ìƒì„±í•˜ë ¤ë©´ {@link android.app.Service}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¥¼ ìƒì„±í•´ì•¼ 합니다(아니면 ì´ì˜
+기존 하위 í´ëž˜ìФ 중 하나). 구현ì—서는 서비스 수명 ì£¼ê¸°ì˜ ì£¼ìš” ì¸¡ë©´ì„ ì²˜ë¦¬í•˜ëŠ” 콜백 메서드를
+몇 가지 재정ì˜í•´ì•¼ 하며 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•  구성 ìš”ì†Œì— ëŒ€í•œ 메커니즘ì„
제공해야 합니다(해당ë˜ëŠ” 경우). 재정ì˜í•´ì•¼ 하는 가장 중요한 콜백 메서드는 다ìŒê³¼ 같습니다.</p>
<dl>
<dt>{@link android.app.Service#onStartCommand onStartCommand()}</dt>
- <dd>ì‹œìŠ¤í…œì´ ì´ ë©”ì„œë“œë¥¼ 호출하는 ê²ƒì€ ë˜ ë‹¤ë¥¸ 구성 요소(예: 액티비티)ê°€ 서비스를
+ <dd>ì‹œìŠ¤í…œì´ ì´ ë©”ì„œë“œë¥¼ 호출하는 ê²ƒì€ ë˜ ë‹¤ë¥¸ 구성 요소(예: 액티비티)ê°€ 서비스를
시작하ë„ë¡ ìš”ì²­í•˜ëŠ” 경우입니다. ì´ë•Œ {@link android.content.Context#startService
-startService()}를 호출하는 ë°©ë²•ì„ ì”니다. ì´ ë©”ì„œë“œê°€ 실행ë˜ë©´ 서비스가 시작ë˜ê³  ë°°ê²½ì—서 무기한으로 ì‹¤í–‰ë  ìˆ˜
-있습니다. ì´ê²ƒì„ 구성하면 ì„œë¹„ìŠ¤ì˜ ìž‘ì—…ì´ ì™„ë£Œë˜ì—ˆì„ 때 해당 서비스를 중단하는 것ì€
+startService()}를 호출하는 ë°©ë²•ì„ ì”니다. ì´ ë©”ì„œë“œê°€ 실행ë˜ë©´ 서비스가 시작ë˜ê³  ë°°ê²½ì—서 무기한으로 ì‹¤í–‰ë  ìˆ˜
+있습니다. ì´ê²ƒì„ 구성하면 ì„œë¹„ìŠ¤ì˜ ìž‘ì—…ì´ ì™„ë£Œë˜ì—ˆì„ 때 해당 서비스를 중단하는 것ì€
ê°œë°œìž ë³¸ì¸ì˜ 책임입니다. ì´ë•Œ {@link android.app.Service#stopSelf stopSelf()} ë˜ëŠ” {@link
-android.content.Context#stopService stopService()}를 호출하면 ë©ë‹ˆë‹¤ (ë°”ì¸ë”©ë§Œ ì œê³µí•˜ê³ ìž í•˜ëŠ” 경우, ì´ ë©”ì„œë“œë¥¼ 구현하지
+android.content.Context#stopService stopService()}를 호출하면 ë©ë‹ˆë‹¤ (ë°”ì¸ë”©ë§Œ ì œê³µí•˜ê³ ìž í•˜ëŠ” 경우, ì´ ë©”ì„œë“œë¥¼ 구현하지
ì•Šì•„ë„ ë©ë‹ˆë‹¤).</dd>
<dt>{@link android.app.Service#onBind onBind()}</dt>
<dd>ì‹œìŠ¤í…œì´ ì´ ë©”ì„œë“œë¥¼ 호출하는 ê²ƒì€ ë˜ ë‹¤ë¥¸ 구성 요소가 해당 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ë˜ê³ ìž 하는 경우
(예를 들어 RPC를 수행하기 위해)입니다. ì´ë•Œ {@link android.content.Context#bindService
-bindService()}를 호출하는 ë°©ë²•ì„ ì”니다. ì´ ë©”ì„œë“œë¥¼ 구현할 때ì—는 í´ë¼ì´ì–¸íŠ¸ê°€ 서비스와 í†µì‹ ì„ ì£¼ê³ ë°›ê¸° 위해 사용할
-ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공해야 합니다. ì´ë•Œ {@link android.os.IBinder}를 반환하면 ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ” í•­ìƒ
+bindService()}를 호출하는 ë°©ë²•ì„ ì”니다. ì´ ë©”ì„œë“œë¥¼ 구현할 때ì—는 í´ë¼ì´ì–¸íŠ¸ê°€ 서비스와 í†µì‹ ì„ ì£¼ê³ ë°›ê¸° 위해 사용할
+ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공해야 합니다. ì´ë•Œ {@link android.os.IBinder}를 반환하면 ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ” í•­ìƒ
구현해야 하지만, ë°”ì¸ë”©ì„ 허용하지 ì•Šê³ ìž í•˜ë©´ nullì„ ë°˜í™˜í•´ì•¼ 합니다.</dd>
<dt>{@link android.app.Service#onCreate()}</dt>
- <dd>ì‹œìŠ¤í…œì´ ì´ ë©”ì„œë“œë¥¼ 호출하는 ê²ƒì€ ì„œë¹„ìŠ¤ê°€ ì²˜ìŒ ìƒì„±ë˜ì–´ ì¼íšŒì„± 설정
-절차를 수행하는 경우입니다({@link android.app.Service#onStartCommand onStartCommand()} ë˜ëŠ”
-{@link android.app.Service#onBind onBind()}를 호출하기 ì „ì—). 서비스가 ì´ë¯¸ 실행 ì¤‘ì¸ ê²½ìš°, ì´ ë©”ì„œë“œëŠ” 호출ë˜ì§€
+ <dd>ì‹œìŠ¤í…œì´ ì´ ë©”ì„œë“œë¥¼ 호출하는 ê²ƒì€ ì„œë¹„ìŠ¤ê°€ ì²˜ìŒ ìƒì„±ë˜ì–´ ì¼íšŒì„± 설정
+절차를 수행하는 경우입니다({@link android.app.Service#onStartCommand onStartCommand()} ë˜ëŠ”
+{@link android.app.Service#onBind onBind()}를 호출하기 ì „ì—). 서비스가 ì´ë¯¸ 실행 ì¤‘ì¸ ê²½ìš°, ì´ ë©”ì„œë“œëŠ” 호출ë˜ì§€
않습니다.</dd>
<dt>{@link android.app.Service#onDestroy()}</dt>
- <dd>ì‹œìŠ¤í…œì´ ì´ ë©”ì„œë“œë¥¼ 호출하는 ê²ƒì€ í•´ë‹¹ 서비스를 ë” ì´ìƒ 사용하지 않고 소멸시키는 경우입니다.
-ì„œë¹„ìŠ¤ì— ì´ê²ƒì„ 구현해야 스레드, 등ë¡ëœ ê°ì¢… 수신기(listener, receiver) 등
+ <dd>ì‹œìŠ¤í…œì´ ì´ ë©”ì„œë“œë¥¼ 호출하는 ê²ƒì€ í•´ë‹¹ 서비스를 ë” ì´ìƒ 사용하지 않고 소멸시키는 경우입니다.
+ì„œë¹„ìŠ¤ì— ì´ê²ƒì„ 구현해야 스레드, 등ë¡ëœ ê°ì¢… 수신기(listener, receiver) 등
모든 리소스를 정리할 수 있습니다. ì´ê²ƒì´ 서비스가 수신하는 마지막 호출입니다.</dd>
</dl>
<p>한 구성 요소가 {@link
android.content.Context#startService startService()}를 호출하여 서비스를 시작하면({@link
-android.app.Service#onStartCommand onStartCommand()}ë¡œì˜ í˜¸ì¶œì„ ì´ˆëž˜í•¨), 해당 서비스는
-알아서 {@link android.app.Service#stopSelf()}로 스스로를 중단할 때까지 ë˜ëŠ”
+android.app.Service#onStartCommand onStartCommand()}ë¡œì˜ í˜¸ì¶œì„ ì´ˆëž˜í•¨), 해당 서비스는
+알아서 {@link android.app.Service#stopSelf()}로 스스로를 중단할 때까지 ë˜ëŠ”
ë˜ ë‹¤ë¥¸ 구성 요소가 {@link android.content.Context#stopService stopService()}를 호출하여 서비스를 중단시킬 때까지 실행 ì¤‘ì¸ ìƒíƒœë¡œ 유지ë©ë‹ˆë‹¤.</p>
-<p>한 구성 요소가
+<p>한 구성 요소가
{@link android.content.Context#bindService bindService()}를 호출하여 서비스를 ìƒì„±í•˜ëŠ” 경우(그리고 {@link
-android.app.Service#onStartCommand onStartCommand()}를 호출하지 <em>않ì€</em> 경우), 해당 서비스는
-해당 구성 요소가 ë°”ì¸ë”©ë˜ì–´ 있는 경우ì—ë§Œ 실행ë©ë‹ˆë‹¤. 서비스가 모든 í´ë¼ì´ì–¸íŠ¸ë¡œë¶€í„° ë°”ì¸ë”© í•´ì œë˜ë©´ ì‹œìŠ¤í…œì´ ì´ë¥¼
+android.app.Service#onStartCommand onStartCommand()}를 호출하지 <em>않ì€</em> 경우), 해당 서비스는
+해당 구성 요소가 ë°”ì¸ë”©ë˜ì–´ 있는 경우ì—ë§Œ 실행ë©ë‹ˆë‹¤. 서비스가 모든 í´ë¼ì´ì–¸íŠ¸ë¡œë¶€í„° ë°”ì¸ë”© í•´ì œë˜ë©´ ì‹œìŠ¤í…œì´ ì´ë¥¼
소멸시킵니다.</p>
-<p>Android ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼ ê°•ì œ 중단시키는 ê²ƒì€ ë©”ëª¨ë¦¬ê°€ 부족하여 사용ìžê°€ ì´ˆì ì„ 집중하고 있는
-액티비티를 위해 시스템 리소스를 회복해야만 하는 경우로만 국한ë©ë‹ˆë‹¤. 해당 서비스가 사용ìžì˜ 주목ì„
-ëŒê³  있는 ì•¡í‹°ë¹„í‹°ì— ë°”ì¸ë”©ë˜ì–´ 있다면 ì¤‘ë‹¨ë  ê°€ëŠ¥ì„±ì´ ë‚®ê³ , 서비스가 <a href="#Foreground">ì „ê²½ì—서 실행</a>ëœë‹¤ê³  ì„ ì–¸ëœ ê²½ìš°(ë‚˜ì¤‘ì— ìžì„¸ížˆ 논함), ê±°ì˜ ì ˆëŒ€ 중단ë˜ì§€ 않습니다.
-그렇지 않으면, 서비스가 시작ë˜ì—ˆê³  오랫ë™ì•ˆ 실행ë˜ëŠ” 경우
-ì‹œê°„ì´ ì§€ë‚˜ë©´ì„œ ì‹œìŠ¤í…œì´ ë°°ê²½ 작업 목ë¡ì—ì„œì˜ ì´ ì„œë¹„ìŠ¤ì˜ ìœ„ì¹˜ë¥¼ ì ì  낮추고
-서비스는 중단ë˜ê¸° 매우 쉬워집니다. 서비스가 시작ë˜ì—ˆë‹¤ë©´ ì´ë¥¼ ì‹œìŠ¤í…œì— ì˜í•œ ìž¬ì‹œìž‘ì„ ì •ìƒì ìœ¼ë¡œ
-처리하ë„ë¡ ë””ìžì¸í•´ì•¼ 합니다. ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼ 중단시키는 경우, 리소스를 다시 사용할 수 있게 ë˜ë©´
+<p>Android ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼ ê°•ì œ 중단시키는 ê²ƒì€ ë©”ëª¨ë¦¬ê°€ 부족하여 사용ìžê°€ ì´ˆì ì„ 집중하고 있는
+액티비티를 위해 시스템 리소스를 회복해야만 하는 경우로만 국한ë©ë‹ˆë‹¤. 해당 서비스가 사용ìžì˜ 주목ì„
+ëŒê³  있는 ì•¡í‹°ë¹„í‹°ì— ë°”ì¸ë”©ë˜ì–´ 있다면 ì¤‘ë‹¨ë  ê°€ëŠ¥ì„±ì´ ë‚®ê³ , 서비스가 <a href="#Foreground">ì „ê²½ì—서 실행</a>ëœë‹¤ê³  ì„ ì–¸ëœ ê²½ìš°(ë‚˜ì¤‘ì— ìžì„¸ížˆ 논함), ê±°ì˜ ì ˆëŒ€ 중단ë˜ì§€ 않습니다.
+그렇지 않으면, 서비스가 시작ë˜ì—ˆê³  오랫ë™ì•ˆ 실행ë˜ëŠ” 경우
+ì‹œê°„ì´ ì§€ë‚˜ë©´ì„œ ì‹œìŠ¤í…œì´ ë°°ê²½ 작업 목ë¡ì—ì„œì˜ ì´ ì„œë¹„ìŠ¤ì˜ ìœ„ì¹˜ë¥¼ ì ì  낮추고
+서비스는 중단ë˜ê¸° 매우 쉬워집니다. 서비스가 시작ë˜ì—ˆë‹¤ë©´ ì´ë¥¼ ì‹œìŠ¤í…œì— ì˜í•œ ìž¬ì‹œìž‘ì„ ì •ìƒì ìœ¼ë¡œ
+처리하ë„ë¡ ë””ìžì¸í•´ì•¼ 합니다. ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼ 중단시키는 경우, 리소스를 다시 사용할 수 있게 ë˜ë©´
ì‹œìŠ¤í…œì´ ê°€ëŠ¥í•œ 한 빨리 ì´ë¥¼ 다시 시작합니다(다만 ì´ê²ƒì€ 개발ìžê°€ {@link
-android.app.Service#onStartCommand onStartCommand()}ì—서 반환하는 ê°’ì—ë„ ì¢Œìš°ë©ë‹ˆë‹¤. ì´ ë‚´ìš©ì€ ë‚˜ì¤‘ì— ë…¼í•©ë‹ˆë‹¤). ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼
+android.app.Service#onStartCommand onStartCommand()}ì—서 반환하는 ê°’ì—ë„ ì¢Œìš°ë©ë‹ˆë‹¤. ì´ ë‚´ìš©ì€ ë‚˜ì¤‘ì— ë…¼í•©ë‹ˆë‹¤). ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼
소멸시킬 수 있는 ê²½ìš°ì— ëŒ€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/components/processes-and-threads.html">프로세스 ë° ìŠ¤ë ˆë”©</a>
문서를 참조하십시오.</p>
-<p>ë‹¤ìŒ ì„¹ì…˜ì—서는 ê° ìœ í˜•ì˜ ì„œë¹„ìŠ¤ë¥¼ ìƒì„±í•˜ëŠ” 방법과 다른 애플리케ì´ì…˜ 구성 요소ì—서
+<p>ë‹¤ìŒ ì„¹ì…˜ì—서는 ê° ìœ í˜•ì˜ ì„œë¹„ìŠ¤ë¥¼ ìƒì„±í•˜ëŠ” 방법과 다른 애플리케ì´ì…˜ 구성 요소ì—서
ì´ë¥¼ 사용하는 ë°©ë²•ì„ ë°°ìš°ê²Œ ë©ë‹ˆë‹¤.</p>
<h3 id="Declaring">매니페스트ì—서 서비스 선언하기</h3>
-<p>액티비티(ë° ë‹¤ë¥¸ 구성 요소)와 마찬가지로, 서비스는 ëª¨ë‘ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 매니페스트
+<p>액티비티(ë° ë‹¤ë¥¸ 구성 요소)와 마찬가지로, 서비스는 ëª¨ë‘ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 매니페스트
파ì¼ì—서 선언해야 합니다.</p>
-<p>서비스를 선언하려면 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 요소를
+<p>서비스를 선언하려면 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 요소를
<a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
ìš”ì†Œì˜ í•˜ìœ„ë¡œ 추가하면 ë©ë‹ˆë‹¤. 예:</p>
@@ -199,28 +199,28 @@ android.app.Service#onStartCommand onStartCommand()}ì—서 반환하는 ê°’ì—ë
&lt;/manifest&gt;
</pre>
-<p>매니페스트ì—서 서비스를 선언하는 ë° ëŒ€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
+<p>매니페스트ì—서 서비스를 선언하는 ë° ëŒ€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
요소 참조를 확ì¸í•˜ì‹­ì‹œì˜¤.</p>
-<p><a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> ìš”ì†Œì— í¬í•¨ì‹œí‚¬ 수 있는 다른 ì†ì„±ë„ 있습니다.
-ì´ë¥¼ í¬í•¨ì‹œì¼œ 서비스를 시작하는 ë° í•„ìš”í•œ 권한과 서비스가 실행ë˜ì–´ì•¼ 하는 프로세스 등ì˜
+<p><a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> ìš”ì†Œì— í¬í•¨ì‹œí‚¬ 수 있는 다른 ì†ì„±ë„ 있습니다.
+ì´ë¥¼ í¬í•¨ì‹œì¼œ 서비스를 시작하는 ë° í•„ìš”í•œ 권한과 서비스가 실행ë˜ì–´ì•¼ 하는 프로세스 등ì˜
ì†ì„±ì„ ì •ì˜í•  수 있습니다. <a href="{@docRoot}guide/topics/manifest/service-element.html#nm">{@code android:name}</a>
-ì†ì„±ì´ 유ì¼í•œ 필수 ì†ì„±ìž…니다. ì´ê²ƒì€ ì„œë¹„ìŠ¤ì˜ í´ëž˜ìФ ì´ë¦„ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. ì¼ë‹¨ 애플리케ì´ì…˜ì„
-게시하고 나면 ì´ ì´ë¦„ì„ ë³€ê²½í•´ì„œëŠ” 안 ë©ë‹ˆë‹¤. ì´ë¦„ì„ ë³€ê²½í•˜ë©´
+ì†ì„±ì´ 유ì¼í•œ 필수 ì†ì„±ìž…니다. ì´ê²ƒì€ ì„œë¹„ìŠ¤ì˜ í´ëž˜ìФ ì´ë¦„ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. ì¼ë‹¨ 애플리케ì´ì…˜ì„
+게시하고 나면 ì´ ì´ë¦„ì„ ë³€ê²½í•´ì„œëŠ” 안 ë©ë‹ˆë‹¤. ì´ë¦„ì„ ë³€ê²½í•˜ë©´
서비스를 시작하거나 ë°”ì¸ë”©í•  ëª…ì‹œì  ì¸í…íŠ¸ì— ëŒ€í•œ 종ì†ì„±ìœ¼ë¡œ ì¸í•´ 코드를 단절시킬 ìœ„í—˜ì´ ìžˆê¸° 때문입니다(블로그 ê²Œì‹œë¬¼ì˜ <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">
바꿀 수 없는 항목</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤).
<p>ì•±ì˜ ë³´ì•ˆì„ ë³´ìž¥í•˜ë ¤ë©´ <strong>
-{@link android.app.Service}ì„ ì‹œìž‘í•˜ê±°ë‚˜ ë°”ì¸ë”©í•  때 í•­ìƒ ëª…ì‹œì  ì¸í…트를 사용하고</strong> ì„œë¹„ìŠ¤ì— ëŒ€í•œ ì¸í…트 필터는 선언하지 마십시오. ì–´ëŠ
-서비스를 시작할지 ì–´ëŠ ì •ë„ ëª¨í˜¸ì„±ì„ í—ˆìš©í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•œ 경우, ì„œë¹„ìŠ¤ì— ëŒ€í•´
+{@link android.app.Service}ì„ ì‹œìž‘í•˜ê±°ë‚˜ ë°”ì¸ë”©í•  때 í•­ìƒ ëª…ì‹œì  ì¸í…트를 사용하고</strong> ì„œë¹„ìŠ¤ì— ëŒ€í•œ ì¸í…트 필터는 선언하지 마십시오. ì–´ëŠ
+서비스를 시작할지 ì–´ëŠ ì •ë„ ëª¨í˜¸ì„±ì„ í—ˆìš©í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•œ 경우, ì„œë¹„ìŠ¤ì— ëŒ€í•´
ì¸í…트 필터를 제공하고 구성 요소 ì´ë¦„ì„ {@link
android.content.Intent}ì—서 배제할 수 있지만, 그러면 해당 ì¸í…íŠ¸ì— ëŒ€í•œ 패키지를 {@link
-android.content.Intent#setPackage setPackage()}로 설정하여 ëŒ€ìƒ ì„œë¹„ìŠ¤ì— ëŒ€í•´ 충분한 명확화를
+android.content.Intent#setPackage setPackage()}로 설정하여 ëŒ€ìƒ ì„œë¹„ìŠ¤ì— ëŒ€í•´ 충분한 명확화를
제공하ë„ë¡ í•´ì•¼ 합니다.</p>
-<p>ì´ì™¸ì—ë„ ì„œë¹„ìŠ¤ë¥¼ 본ì¸ì˜ 앱ì—ë§Œ 사용 가능하ë„ë¡ ë³´ìž¥í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
+<p>ì´ì™¸ì—ë„ ì„œë¹„ìŠ¤ë¥¼ 본ì¸ì˜ 앱ì—ë§Œ 사용 가능하ë„ë¡ ë³´ìž¥í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
<a href="{@docRoot}guide/topics/manifest/service-element.html#exported">{@code android:exported}</a>
- ì†ì„±ì„ í¬í•¨ì‹œí‚¨ ë’¤ ì´ë¥¼ {@code "false"}로 설정하면 ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 다른 ì•±ì´ ì—¬ëŸ¬ë¶„ì˜ ì„œë¹„ìŠ¤ë¥¼ 시작하지 못하ë„ë¡ íš¨ê³¼ì ìœ¼ë¡œ 방지해주며,
+ ì†ì„±ì„ í¬í•¨ì‹œí‚¨ ë’¤ ì´ë¥¼ {@code "false"}로 설정하면 ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 다른 ì•±ì´ ì—¬ëŸ¬ë¶„ì˜ ì„œë¹„ìŠ¤ë¥¼ 시작하지 못하ë„ë¡ íš¨ê³¼ì ìœ¼ë¡œ 방지해주며,
ì´ëŠ” ëª…ì‹œì  ì¸í…트를 사용하는 경우ì—ë„ ë¬¸ì œ ì—†ì´ ì ìš©ë©ë‹ˆë‹¤.</p>
@@ -229,71 +229,71 @@ android.content.Intent#setPackage setPackage()}로 설정하여 ëŒ€ìƒ ì„œë¹„ìŠ¤
<h2 id="CreatingStartedService">ì‹œìž‘ëœ ì„œë¹„ìŠ¤ ìƒì„±í•˜ê¸°</h2>
<p>ì‹œìž‘ëœ ì„œë¹„ìŠ¤ëž€ 다른 구성 요소가 {@link
-android.content.Context#startService startService()}를 호출하여 시작하고, ê·¸ ê²°ê³¼ 서비스ì˜
+android.content.Context#startService startService()}를 호출하여 시작하고, ê·¸ ê²°ê³¼ 서비스ì˜
{@link android.app.Service#onStartCommand onStartCommand()} 메서드를 호출하는 결과를 초래한 ê²ƒì„ ë§í•©ë‹ˆë‹¤.</p>
-<p>서비스가 시작ë˜ë©´ ì´ë¥¼ 시작한 구성 요소와 ë…ë¦½ëœ ìžì‹ ë§Œì˜
-수명 주기를 가지며 해당 서비스는 ë°°ê²½ì—서 무기한으로 ì‹¤í–‰ë  ìˆ˜ 있습니다. ì´ëŠ” 해당 서비스를
-시작한 구성 요소가 소멸ë˜ì—ˆë”ë¼ë„ 무관합니다. ë”°ë¼ì„œ, 서비스는 ìž‘ì—…ì´ ì™„ë£Œë˜ë©´
-{@link android.app.Service#stopSelf stopSelf()}를 호출하여 스스로 알아서 중단ë˜ëŠ” ê²ƒì´ ì •ìƒì´ë©° 아니면 다른 구성 요소가
+<p>서비스가 시작ë˜ë©´ ì´ë¥¼ 시작한 구성 요소와 ë…ë¦½ëœ ìžì‹ ë§Œì˜
+수명 주기를 가지며 해당 서비스는 ë°°ê²½ì—서 무기한으로 ì‹¤í–‰ë  ìˆ˜ 있습니다. ì´ëŠ” 해당 서비스를
+시작한 구성 요소가 소멸ë˜ì—ˆë”ë¼ë„ 무관합니다. ë”°ë¼ì„œ, 서비스는 ìž‘ì—…ì´ ì™„ë£Œë˜ë©´
+{@link android.app.Service#stopSelf stopSelf()}를 호출하여 스스로 알아서 중단ë˜ëŠ” ê²ƒì´ ì •ìƒì´ë©° 아니면 다른 구성 요소가
{@link android.content.Context#stopService stopService()}를 호출하여 중단시킬 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
<p>애플리케ì´ì…˜ 구성 요소(예: 액티비티)ê°€ 서비스를 시작하려면 {@link
-android.content.Context#startService startService()}를 호출하고, {@link android.content.Intent}를
-전달하면 ë©ë‹ˆë‹¤. ì´ê²ƒì€ 서비스를 나타내고 서비스가 사용할 모든 ë°ì´í„°ë¥¼ í¬í•¨í•©ë‹ˆë‹¤. 서비스는 ì´
+android.content.Context#startService startService()}를 호출하고, {@link android.content.Intent}를
+전달하면 ë©ë‹ˆë‹¤. ì´ê²ƒì€ 서비스를 나타내고 서비스가 사용할 모든 ë°ì´í„°ë¥¼ í¬í•¨í•©ë‹ˆë‹¤. 서비스는 ì´
{@link android.content.Intent}를 {@link android.app.Service#onStartCommand
onStartCommand()} 메서드ì—서 수신합니다.</p>
-<p>예를 들어 ì–´ëŠ ì•¡í‹°ë¹„í‹°ê°€ 온ë¼ì¸ ë°ì´í„°ë² ì´ìŠ¤ì— ë°ì´í„°ë¥¼ 약간 저장해야 한다고 가정합니다. 액티비티가
+<p>예를 들어 ì–´ëŠ ì•¡í‹°ë¹„í‹°ê°€ 온ë¼ì¸ ë°ì´í„°ë² ì´ìŠ¤ì— ë°ì´í„°ë¥¼ 약간 저장해야 한다고 가정합니다. 액티비티가
ë™ë°˜ìž 서비스를 시작하여 저장할 ë°ì´í„°ë¥¼ ì´ì— 전달할 수 있습니다. ì´ë•Œ ì¸í…트를 {@link
android.content.Context#startService startService()}ì— ì „ë‹¬í•˜ë©´ ë©ë‹ˆë‹¤. 서비스는 ì´ ì¸í…트를 {@link
-android.app.Service#onStartCommand onStartCommand()}ì—서 수신하고 ì¸í„°ë„·ì— 연결한 ë‹¤ìŒ ë°ì´í„°ë² ì´ìФ
-íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. ìž‘ì—…ì„ ì™„ë£Œí•˜ë©´, 해당 서비스는 알아서 스스로 중단ë˜ê³ 
+android.app.Service#onStartCommand onStartCommand()}ì—서 수신하고 ì¸í„°ë„·ì— 연결한 ë‹¤ìŒ ë°ì´í„°ë² ì´ìФ
+íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. ìž‘ì—…ì„ ì™„ë£Œí•˜ë©´, 해당 서비스는 알아서 스스로 중단ë˜ê³ 
소멸ë©ë‹ˆë‹¤.</p>
-<p class="caution"><strong>주ì˜:</strong> 서비스는 기본ì ìœ¼ë¡œ ìžì‹ ì´ ì„ ì–¸ëœ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ ê°™ì€
-프로세스ì—서 실행ë˜ê¸°ë„ 하고 해당 애플리케ì´ì…˜ì˜ 기본 스레드ì—서 실행ë˜ê¸°ë„ 합니다. ë”°ë¼ì„œ, 사용ìžê°€
-ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 액티비티와 ìƒí˜¸ 작용하는 ë™ì•ˆ 서비스가 집약ì ì´ê±°ë‚˜ 차단ì ì¸ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 경우,
-해당 서비스 ë•Œë¬¸ì— ì•¡í‹°ë¹„í‹° ì„±ëŠ¥ì´ ëŠë ¤ì§€ê²Œ ë©ë‹ˆë‹¤. 애플리케ì´ì…˜ ì„±ëŠ¥ì— ì˜í–¥ì„ 미치는 ê²ƒì„ ë°©ì§€í•˜ë ¤ë©´,
+<p class="caution"><strong>주ì˜:</strong> 서비스는 기본ì ìœ¼ë¡œ ìžì‹ ì´ ì„ ì–¸ëœ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ ê°™ì€
+프로세스ì—서 실행ë˜ê¸°ë„ 하고 해당 애플리케ì´ì…˜ì˜ 기본 스레드ì—서 실행ë˜ê¸°ë„ 합니다. ë”°ë¼ì„œ, 사용ìžê°€
+ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 액티비티와 ìƒí˜¸ 작용하는 ë™ì•ˆ 서비스가 집약ì ì´ê±°ë‚˜ 차단ì ì¸ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 경우,
+해당 서비스 ë•Œë¬¸ì— ì•¡í‹°ë¹„í‹° ì„±ëŠ¥ì´ ëŠë ¤ì§€ê²Œ ë©ë‹ˆë‹¤. 애플리케ì´ì…˜ ì„±ëŠ¥ì— ì˜í–¥ì„ 미치는 ê²ƒì„ ë°©ì§€í•˜ë ¤ë©´,
서비스 ë‚´ì—서 새 스레드를 시작해야 합니다.</p>
<p>기존ì—는 ì‹œìž‘ëœ ì„œë¹„ìŠ¤ë¥¼ ìƒì„±í•˜ê¸° 위해 확장할 수 있는 í´ëž˜ìŠ¤ê°€ ë‘ ê°œ 있었습니다.</p>
<dl>
<dt>{@link android.app.Service}</dt>
- <dd>ì´ê²ƒì´ 모든 ì„œë¹„ìŠ¤ì˜ ê¸°ë³¸ í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. ì´ í´ëž˜ìŠ¤ë¥¼ 확장하는 경우, ì„œë¹„ìŠ¤ì˜ ëª¨ë“  ìž‘ì—…ì„ ìˆ˜í–‰í• 
-새 스레드를 만드는 ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤. 서비스가 기본ì ìœ¼ë¡œ 애플리케ì´ì…˜ì˜ 기본 스레드를 사용하기
-때문ì¸ë°, ì´ë¡œ ì¸í•´ 애플리케ì´ì…˜ì´ 실행 ì¤‘ì¸ ëª¨ë“  ì•¡í‹°ë¹„í‹°ì˜ ì„±ëŠ¥ì´
+ <dd>ì´ê²ƒì´ 모든 ì„œë¹„ìŠ¤ì˜ ê¸°ë³¸ í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. ì´ í´ëž˜ìŠ¤ë¥¼ 확장하는 경우, ì„œë¹„ìŠ¤ì˜ ëª¨ë“  ìž‘ì—…ì„ ìˆ˜í–‰í• 
+새 스레드를 만드는 ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤. 서비스가 기본ì ìœ¼ë¡œ 애플리케ì´ì…˜ì˜ 기본 스레드를 사용하기
+때문ì¸ë°, ì´ë¡œ ì¸í•´ 애플리케ì´ì…˜ì´ 실행 ì¤‘ì¸ ëª¨ë“  ì•¡í‹°ë¹„í‹°ì˜ ì„±ëŠ¥ì´
ëŠë ¤ì§ˆ 수 있기 때문입니다.</dd>
<dt>{@link android.app.IntentService}</dt>
- <dd>ì´ê²ƒì€ {@link android.app.Service}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¡œ, ìž‘ì—…ìž ìŠ¤ë ˆë“œë¥¼
-사용하여 모든 시작 ìš”ì²­ì„ ì²˜ë¦¬í•˜ë˜ í•œ ë²ˆì— í•˜ë‚˜ì”© 처리합니다. 서비스가 여러 ê°œì˜ ìš”ì²­ì„
+ <dd>ì´ê²ƒì€ {@link android.app.Service}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¡œ, ìž‘ì—…ìž ìŠ¤ë ˆë“œë¥¼
+사용하여 모든 시작 ìš”ì²­ì„ ì²˜ë¦¬í•˜ë˜ í•œ ë²ˆì— í•˜ë‚˜ì”© 처리합니다. 서비스가 여러 ê°œì˜ ìš”ì²­ì„
ë™ì‹œì— 처리하지 ì•Šì•„ë„ ë˜ëŠ” 경우 ì´ê²ƒì´ ìµœì„ ì˜ ì˜µì…˜ìž…ë‹ˆë‹¤. 해야 í•  ì¼ì€ {@link
-android.app.IntentService#onHandleIntent onHandleIntent()}를 구현하는 것ë¿ìœ¼ë¡œ, ì´ê²ƒì´ ê° ì‹œìž‘ ìš”ì²­ì— ëŒ€í•œ ì¸í…트를 수신하여
+android.app.IntentService#onHandleIntent onHandleIntent()}를 구현하는 것ë¿ìœ¼ë¡œ, ì´ê²ƒì´ ê° ì‹œìž‘ ìš”ì²­ì— ëŒ€í•œ ì¸í…트를 수신하여
개발ìžëŠ” ë°°ê²½ ìž‘ì—…ì„ ìˆ˜í–‰í•  수 있습니다.</dd>
</dl>
-<p>ë‹¤ìŒ ì„¹ì…˜ì—서는 ì´ì™€ ê°™ì€ í´ëž˜ìФ 중 하나를 사용하여 서비스를 구현하는 방법ì„
+<p>ë‹¤ìŒ ì„¹ì…˜ì—서는 ì´ì™€ ê°™ì€ í´ëž˜ìФ 중 하나를 사용하여 서비스를 구현하는 방법ì„
설명합니다.</p>
<h3 id="ExtendingIntentService">IntentService í´ëž˜ìФ 확장하기</h3>
<p>ëŒ€ë¶€ë¶„ì˜ ì‹œìž‘ëœ ì„œë¹„ìŠ¤ëŠ” 여러 ê°œì˜ ìš”ì²­ì„ ë™ì‹œì— 처리하지 ì•Šì•„ë„ ë˜ê¸° 때문ì—
-(ì´ëŠ” 사실 위험한 다중 스레딩 ì‹œë‚˜ë¦¬ì˜¤ì¼ ìˆ˜ 있습니다), 서비스를 구현할 때ì—는
+(ì´ëŠ” 사실 위험한 다중 스레딩 ì‹œë‚˜ë¦¬ì˜¤ì¼ ìˆ˜ 있습니다), 서비스를 구현할 때ì—는
{@link android.app.IntentService} í´ëž˜ìŠ¤ë¥¼ 사용하는 ê²ƒì´ ìµœì„ ì˜ ë°©ì•ˆì¼ ê²ƒìž…ë‹ˆë‹¤.</p>
<p>{@link android.app.IntentService}는 다ìŒê³¼ ê°™ì€ ìž‘ì—…ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤.</p>
<ul>
<li>애플리케ì´ì…˜ì˜ 기본 스레드와는 별ë„로 {@link
-android.app.Service#onStartCommand onStartCommand()}ì— ì „ë‹¬ëœ ëª¨ë“  ì¸í…트를 실행하는 기본 ìž‘ì—…ìž ìŠ¤ë ˆë“œë¥¼
+android.app.Service#onStartCommand onStartCommand()}ì— ì „ë‹¬ëœ ëª¨ë“  ì¸í…트를 실행하는 기본 ìž‘ì—…ìž ìŠ¤ë ˆë“œë¥¼
ìƒì„±í•©ë‹ˆë‹¤.</li>
<li>한 ë²ˆì— ì¸í…트를 하나씩 {@link
-android.app.IntentService#onHandleIntent onHandleIntent()} êµ¬í˜„ì— ì „ë‹¬í•˜ëŠ” 작업 ëŒ€ê¸°ì—´ì„ ìƒì„±í•˜ë¯€ë¡œ 다중 ìŠ¤ë ˆë”©ì— ëŒ€í•´ 염려할 필요가
+android.app.IntentService#onHandleIntent onHandleIntent()} êµ¬í˜„ì— ì „ë‹¬í•˜ëŠ” 작업 ëŒ€ê¸°ì—´ì„ ìƒì„±í•˜ë¯€ë¡œ 다중 ìŠ¤ë ˆë”©ì— ëŒ€í•´ 염려할 필요가
전혀 없습니다.</li>
- <li>시작 ìš”ì²­ì´ ëª¨ë‘ ì²˜ë¦¬ëœ í›„ 서비스를 중단하므로 개발ìžê°€
+ <li>시작 ìš”ì²­ì´ ëª¨ë‘ ì²˜ë¦¬ëœ í›„ 서비스를 중단하므로 개발ìžê°€
{@link android.app.Service#stopSelf}를 호출할 필요가 전혀 없습니다.</li>
- <li>{@link android.app.IntentService#onBind onBind()}ì˜ ê¸°ë³¸ êµ¬í˜„ì„ ì œê³µí•˜ì—¬ nullì„
+ <li>{@link android.app.IntentService#onBind onBind()}ì˜ ê¸°ë³¸ êµ¬í˜„ì„ ì œê³µí•˜ì—¬ nullì„
반환하ë„ë¡ í•©ë‹ˆë‹¤.</li>
<li>{@link android.app.IntentService#onStartCommand
onStartCommand()}ì˜ ê¸°ë³¸ êµ¬í˜„ì„ ì œê³µí•˜ì—¬ ì¸í…트를 작업 ëŒ€ê¸°ì—´ì— ë³´ë‚´ê³ , 다ìŒìœ¼ë¡œ {@link
@@ -301,7 +301,7 @@ android.app.IntentService#onHandleIntent onHandleIntent()} êµ¬í˜„ì— ë³´ë‚´ë„ë¡
</ul>
<p>ì´ ëª¨ë“  ê²ƒì€ ê²°ë¡ ì ìœ¼ë¡œ 개발ìžê°€ ì§ì ‘ í•  ì¼ì€ í´ë¼ì´ì–¸íŠ¸ê°€ 제공한 ìž‘ì—…ì„ ìˆ˜í–‰í•  {@link
-android.app.IntentService#onHandleIntent onHandleIntent()}를 구현하는 것ë¿ì´ë¼ëŠ” 사실로
+android.app.IntentService#onHandleIntent onHandleIntent()}를 구현하는 것ë¿ì´ë¼ëŠ” 사실로
ì´ì–´ì§‘니다. (다만, ì„œë¹„ìŠ¤ì— ëŒ€í•´ ìž‘ì€ ìƒì„±ìžë¥¼ 제공해야 í•˜ê¸°ë„ í•©ë‹ˆë‹¤.)</p>
<p>다ìŒì€ {@link android.app.IntentService}ì˜ êµ¬í˜„ì„ ì˜ˆì‹œë¡œ 나타낸 것입니다.</p>
@@ -345,10 +345,10 @@ android.app.IntentService#onHandleIntent onHandleIntent()} 구현ë¿ì´ì£ .</p>
<p>다른 콜백 ë©”ì„œë“œë„ ìž¬ì •ì˜í•˜ê¸°ë¡œ 결정하는 경우-예를 들어 {@link
android.app.IntentService#onCreate onCreate()}, {@link
android.app.IntentService#onStartCommand onStartCommand()} ë˜ëŠ” {@link
-android.app.IntentService#onDestroy onDestroy()}-ìŠˆí¼ êµ¬í˜„ì„ ê¼­ 호출해야 합니다.
+android.app.IntentService#onDestroy onDestroy()}-ìŠˆí¼ êµ¬í˜„ì„ ê¼­ 호출해야 합니다.
그래야 {@link android.app.IntentService}ê°€ ìž‘ì—…ìž ìŠ¤ë ˆë“œì˜ ìˆ˜ëª…ì„ ì ì ˆí•˜ê²Œ 처리할 수 있습니다.</p>
-<p>예를 들어 {@link android.app.IntentService#onStartCommand onStartCommand()}는 반드시
+<p>예를 들어 {@link android.app.IntentService#onStartCommand onStartCommand()}는 반드시
기본 êµ¬í˜„ì„ ë°˜í™˜í•´ì•¼ 합니다(ì´ë¡œì¨ ì¸í…트가 {@link
android.app.IntentService#onHandleIntent onHandleIntent()}로 전달ë˜ëŠ” 것입니다).</p>
@@ -360,25 +360,25 @@ public int onStartCommand(Intent intent, int flags, int startId) {
}
</pre>
-<p>{@link android.app.IntentService#onHandleIntent onHandleIntent()} ì™¸ì— ìŠˆí¼ í´ëž˜ìŠ¤ë¥¼
+<p>{@link android.app.IntentService#onHandleIntent onHandleIntent()} ì™¸ì— ìŠˆí¼ í´ëž˜ìŠ¤ë¥¼
호출하지 ì•Šì•„ë„ ë˜ëŠ” 유ì¼í•œ 메서드는 {@link android.app.IntentService#onBind
onBind()}입니다(다만 ì´ë¥¼ 구현하는 ê²ƒì€ ì„œë¹„ìŠ¤ê°€ ë°”ì¸ë”©ì„ 허용할 때ì—ë§Œ 필요합니다).</p>
-<p>ë‹¤ìŒ ì„¹ì…˜ì—서는 기본 {@link android.app.Service}
-í´ëž˜ìŠ¤ë¥¼ 확장할 때 ê°™ì€ ì¢…ë¥˜ì˜ ì„œë¹„ìŠ¤ë¥¼ 구현하는 ë°©ë²•ì„ ë°°ìš°ê²Œ ë©ë‹ˆë‹¤. ì´ë•Œì—는 코드가 훨씬 ë§Žì´ í•„ìš”í•˜ì§€ë§Œ,
+<p>ë‹¤ìŒ ì„¹ì…˜ì—서는 기본 {@link android.app.Service}
+í´ëž˜ìŠ¤ë¥¼ 확장할 때 ê°™ì€ ì¢…ë¥˜ì˜ ì„œë¹„ìŠ¤ë¥¼ 구현하는 ë°©ë²•ì„ ë°°ìš°ê²Œ ë©ë‹ˆë‹¤. ì´ë•Œì—는 코드가 훨씬 ë§Žì´ í•„ìš”í•˜ì§€ë§Œ,
ë™ì‹œ 시작 ìš”ì²­ì„ ì²˜ë¦¬í•´ì•¼ 하는 경우 ì´ê²ƒì´ ì ì ˆí•  수 있습니다.</p>
<h3 id="ExtendingService">서비스 í´ëž˜ìФ 확장하기</h3>
-<p>ì´ì „ 섹션ì—서 본 것과 ê°™ì´ {@link android.app.IntentService}를 사용하면
-ì‹œìž‘ëœ ì„œë¹„ìŠ¤ êµ¬í˜„ì´ ë§¤ìš° 단순해집니다. 하지만 서비스가 다중 스레딩ì„
-수행해야 하는 경우(작업 ëŒ€ê¸°ì—´ì„ í†µí•´ 시작 ìš”ì²­ì„ ì²˜ë¦¬í•˜ëŠ” 대신), 그때는
+<p>ì´ì „ 섹션ì—서 본 것과 ê°™ì´ {@link android.app.IntentService}를 사용하면
+ì‹œìž‘ëœ ì„œë¹„ìŠ¤ êµ¬í˜„ì´ ë§¤ìš° 단순해집니다. 하지만 서비스가 다중 스레딩ì„
+수행해야 하는 경우(작업 ëŒ€ê¸°ì—´ì„ í†µí•´ 시작 ìš”ì²­ì„ ì²˜ë¦¬í•˜ëŠ” 대신), 그때는
{@link android.app.Service} í´ëž˜ìŠ¤ë¥¼ 확장하여 ê° ì¸í…트를 처리하게 í•  수 있습니다.</p>
<p>비êµë¥¼ 위해 ë‹¤ìŒ ì˜ˆì‹œì˜ ì½”ë“œë¥¼ 보겠습니다. ì´ëŠ” {@link
android.app.Service} í´ëž˜ìŠ¤ì˜ êµ¬í˜„ìœ¼ë¡œ, ìœ„ì˜ ì˜ˆì‹œì—서 {@link
-android.app.IntentService}를 사용하여 수행한 것과 ë˜‘ê°™ì€ ìž‘ì—…ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. 바꿔 ë§í•˜ë©´ ê° ì‹œìž‘ ìš”ì²­ì— ëŒ€í•´
+android.app.IntentService}를 사용하여 수행한 것과 ë˜‘ê°™ì€ ìž‘ì—…ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. 바꿔 ë§í•˜ë©´ ê° ì‹œìž‘ ìš”ì²­ì— ëŒ€í•´
ìž‘ì—…ìž ìŠ¤ë ˆë“œë¥¼ 사용하여 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê³  한 ë²ˆì— ìš”ì²­ì„ í•˜ë‚˜ì”©ë§Œ 처리한다는 뜻입니다.</p>
<pre>
@@ -455,46 +455,46 @@ public class HelloService extends Service {
<p>보시다시피 {@link android.app.IntentService}를 사용할 때보다 훨씬 ì†ì´ ë§Žì´ ê°‘ë‹ˆë‹¤.</p>
<p>그러나, ê° í˜¸ì¶œì„ {@link android.app.Service#onStartCommand
-onStartCommand()}로 ì§ì ‘ 처리할 수 있기 ë•Œë¬¸ì— ì—¬ëŸ¬ ê°œì˜ ìš”ì²­ì„ ë™ì‹œì— 수행할 수 있습니다. ì´ ì˜ˆì‹œëŠ” 그것ì„
-보여주는 ê²ƒì€ ì•„ë‹ˆì§€ë§Œ, 그런 ìž‘ì—…ì„ ì›í•˜ëŠ” 경우 ê° ìš”ì²­ì— ëŒ€í•´ 새 스레드를
+onStartCommand()}로 ì§ì ‘ 처리할 수 있기 ë•Œë¬¸ì— ì—¬ëŸ¬ ê°œì˜ ìš”ì²­ì„ ë™ì‹œì— 수행할 수 있습니다. ì´ ì˜ˆì‹œëŠ” 그것ì„
+보여주는 ê²ƒì€ ì•„ë‹ˆì§€ë§Œ, 그런 ìž‘ì—…ì„ ì›í•˜ëŠ” 경우 ê° ìš”ì²­ì— ëŒ€í•´ 새 스레드를
하나씩 ìƒì„±í•œ ë‹¤ìŒ ê³§ë°”ë¡œ 실행하면 ë©ë‹ˆë‹¤(ì´ì „ ìš”ì²­ì´ ëë‚  때까지 기다리는 대신).</p>
-<p>{@link android.app.Service#onStartCommand onStartCommand()} 메서드가 반드시
-정수를 반환해야 한다는 ì‚¬ì‹¤ì„ ìœ ì˜í•˜ì‹­ì‹œì˜¤. 정수는 ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼ 중단시킨 경우 ì‹œìŠ¤í…œì´ í•´ë‹¹ 서비스를
+<p>{@link android.app.Service#onStartCommand onStartCommand()} 메서드가 반드시
+정수를 반환해야 한다는 ì‚¬ì‹¤ì„ ìœ ì˜í•˜ì‹­ì‹œì˜¤. 정수는 ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼ 중단시킨 경우 ì‹œìŠ¤í…œì´ í•´ë‹¹ 서비스를
계ì†í•˜ëŠ” ë°©ë²•ì— ëŒ€í•´ 설명하는 값입니다(위ì—서 논한 바와 ê°™ì´ {@link
-android.app.IntentService}ì˜ ê¸°ë³¸ êµ¬í˜„ì´ ì´ê²ƒì„ ê°œë°œìž ëŒ€ì‹  처리해ì¤ë‹ˆë‹¤. 개발ìžê°€ ì´ë¥¼ 수정할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤).
-{@link android.app.Service#onStartCommand onStartCommand()}ë¡œë¶€í„°ì˜ ë°˜í™˜ ê°’ì€ ë°˜ë“œì‹œ
+android.app.IntentService}ì˜ ê¸°ë³¸ êµ¬í˜„ì´ ì´ê²ƒì„ ê°œë°œìž ëŒ€ì‹  처리해ì¤ë‹ˆë‹¤. 개발ìžê°€ ì´ë¥¼ 수정할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤).
+{@link android.app.Service#onStartCommand onStartCommand()}ë¡œë¶€í„°ì˜ ë°˜í™˜ ê°’ì€ ë°˜ë“œì‹œ
ë‹¤ìŒ ìƒìˆ˜ 중 하나여야 합니다.</p>
<dl>
<dt>{@link android.app.Service#START_NOT_STICKY}</dt>
<dd>ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼ {@link android.app.Service#onStartCommand
-onStartCommand()} 반환 í›„ì— ì¤‘ë‹¨ì‹œí‚¤ë©´ 서비스를 재ìƒì„±í•˜ë©´ <em>안 ë©ë‹ˆë‹¤.</em> 다만 전달할
-보류 ì¸í…트가 있는 경우는 예외입니다. ì´ê²ƒì€ 서비스가 불필요하게 실행ë˜ëŠ” ì¼ì„ 피할 수 있는 가장 안전한 옵션ì´ë©°,
+onStartCommand()} 반환 í›„ì— ì¤‘ë‹¨ì‹œí‚¤ë©´ 서비스를 재ìƒì„±í•˜ë©´ <em>안 ë©ë‹ˆë‹¤.</em> 다만 전달할
+보류 ì¸í…트가 있는 경우는 예외입니다. ì´ê²ƒì€ 서비스가 불필요하게 실행ë˜ëŠ” ì¼ì„ 피할 수 있는 가장 안전한 옵션ì´ë©°,
애플리케ì´ì…˜ì´ 완료ë˜ì§€ ì•Šì€ ëª¨ë“  ìž‘ì—…ì„ ë‹¨ìˆœížˆ 재시작할 수 ìžˆì„ ë•Œ 좋습니다.</dd>
<dt>{@link android.app.Service#START_STICKY}</dt>
<dd>ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼ {@link android.app.Service#onStartCommand
onStartCommand()} 반환 í›„ì— ì¤‘ë‹¨ì‹œí‚¤ëŠ” 경우, 서비스를 재ìƒì„±í•˜ê³  {@link
-android.app.Service#onStartCommand onStartCommand()}를 í˜¸ì¶œí•˜ë˜ ë§ˆì§€ë§‰ ì¸í…트를 다시 전달하지는 <em>마십시오.</em>
-ê·¸ 대신, ì‹œìŠ¤í…œì´ null ì¸í…트로 {@link android.app.Service#onStartCommand onStartCommand()}를
-호출합니다. 다만 서비스를 시작할 보류 ì¸í…트가 있는 ê²½ìš°ë§Œì€ ì˜ˆì™¸ì´ë©°, ì´ëŸ´ 때ì—는
-그러한 ì¸í…트를 전달합니다. ì´ê²ƒì€ ëª…ë ¹ì„ ì‹¤í–‰í•˜ì§€ëŠ” 않지만 무기한으로 실행 중ì´ë©° ìž‘ì—…ì„ ê¸°ë‹¤ë¦¬ê³  있는
+android.app.Service#onStartCommand onStartCommand()}를 í˜¸ì¶œí•˜ë˜ ë§ˆì§€ë§‰ ì¸í…트를 다시 전달하지는 <em>마십시오.</em>
+ê·¸ 대신, ì‹œìŠ¤í…œì´ null ì¸í…트로 {@link android.app.Service#onStartCommand onStartCommand()}를
+호출합니다. 다만 서비스를 시작할 보류 ì¸í…트가 있는 ê²½ìš°ë§Œì€ ì˜ˆì™¸ì´ë©°, ì´ëŸ´ 때ì—는
+그러한 ì¸í…트를 전달합니다. ì´ê²ƒì€ ëª…ë ¹ì„ ì‹¤í–‰í•˜ì§€ëŠ” 않지만 무기한으로 실행 중ì´ë©° ìž‘ì—…ì„ ê¸°ë‹¤ë¦¬ê³  있는
미디어 플레ì´ì–´(ë˜ëŠ” 그와 비슷한 서비스)ì— ì í•©í•©ë‹ˆë‹¤.</dd>
<dt>{@link android.app.Service#START_REDELIVER_INTENT}</dt>
<dd>ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼ {@link android.app.Service#onStartCommand
onStartCommand()} 반환 í›„ì— ì¤‘ë‹¨ì‹œí‚¤ëŠ” 경우, 서비스를 재ìƒì„±í•˜ê³  ì„œë¹„ìŠ¤ì— ì „ë‹¬ëœ ë§ˆì§€ë§‰ ì¸í…트로 {@link
-android.app.Service#onStartCommand onStartCommand()}를
-호출하십시오. 모든 보류 ì¸í…트가 차례로 전달ë©ë‹ˆë‹¤. ì´ê²ƒì€ 즉시 재개ë˜ì–´ì•¼ 하는 작업ì„
+android.app.Service#onStartCommand onStartCommand()}를
+호출하십시오. 모든 보류 ì¸í…트가 차례로 전달ë©ë‹ˆë‹¤. ì´ê²ƒì€ 즉시 재개ë˜ì–´ì•¼ 하는 작업ì„
능ë™ì ìœ¼ë¡œ 수행 ì¤‘ì¸ ì„œë¹„ìŠ¤(예를 들어 íŒŒì¼ ë‹¤ìš´ë¡œë“œ 등)ì— ì í•©í•©ë‹ˆë‹¤.</dd>
</dl>
-<p>ì´ëŸ¬í•œ 반환 ê°’ì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€ ê° ìƒìˆ˜ì— 대해 ë§í¬ë¡œ ì—°ê²°ëœ ì°¸ì¡° 문서를
+<p>ì´ëŸ¬í•œ 반환 ê°’ì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€ ê° ìƒìˆ˜ì— 대해 ë§í¬ë¡œ ì—°ê²°ëœ ì°¸ì¡° 문서를
확ì¸í•˜ì‹­ì‹œì˜¤.</p>
<h3 id="StartingAService">서비스 시작</h3>
-<p>액티비티나 다른 구성 요소ì—서 서비스를 시작하려면
+<p>액티비티나 다른 구성 요소ì—서 서비스를 시작하려면
{@link android.content.Intent}를(시작할 서비스를 나타냄) {@link
android.content.Context#startService startService()}ì— ì „ë‹¬í•˜ë©´ ë©ë‹ˆë‹¤. Android ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ì˜ {@link
android.app.Service#onStartCommand onStartCommand()} 메서드를 호출하여 ì—¬ê¸°ì— {@link
@@ -510,53 +510,53 @@ Intent intent = new Intent(this, HelloService.class);
startService(intent);
</pre>
-<p>{@link android.content.Context#startService startService()} 메서드가 즉시 반환ë˜ë©°
+<p>{@link android.content.Context#startService startService()} 메서드가 즉시 반환ë˜ë©°
Android ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ì˜ {@link android.app.Service#onStartCommand
onStartCommand()} 메서드를 호출합니다. 서비스가 ì´ë¯¸ 실행 중ì´ì§€ ì•Šì€ ê²½ìš°, ì‹œìŠ¤í…œì€ ìš°ì„  {@link
android.app.Service#onCreate onCreate()}를 호출하고, 다ìŒìœ¼ë¡œ {@link android.app.Service#onStartCommand
onStartCommand()}를 호출합니다.</p>
<p>서비스가 ë°”ì¸ë”©ë„ 제공하지 않는 경우, {@link
-android.content.Context#startService startService()}와 함께 ì „ë‹¬ëœ ì¸í…트가 애플리케ì´ì…˜ 구성 요소와 서비스 사ì´ì˜
-유ì¼í•œ 통신 방법입니다. 그러나 서비스가 결과를 ëŒë ¤ë³´ë‚´ê¸°ë¥¼ ì›í•˜ëŠ” 경우, 서비스를 시작한
-í´ë¼ì´ì–¸íŠ¸ê°€ 브로드ìºìŠ¤íŠ¸ë¥¼ 위해 {@link android.app.PendingIntent}를
-만들 수 있고({@link android.app.PendingIntent#getBroadcast getBroadcast()} 사용) ì´ë¥¼ 서비스를 시작한
-{@link android.content.Intent} ë‚´ì˜ ì„œë¹„ìŠ¤ì— ì „ë‹¬í•  수 있습니다. 그러면 서비스가
+android.content.Context#startService startService()}와 함께 ì „ë‹¬ëœ ì¸í…트가 애플리케ì´ì…˜ 구성 요소와 서비스 사ì´ì˜
+유ì¼í•œ 통신 방법입니다. 그러나 서비스가 결과를 ëŒë ¤ë³´ë‚´ê¸°ë¥¼ ì›í•˜ëŠ” 경우, 서비스를 시작한
+í´ë¼ì´ì–¸íŠ¸ê°€ 브로드ìºìŠ¤íŠ¸ë¥¼ 위해 {@link android.app.PendingIntent}를
+만들 수 있고({@link android.app.PendingIntent#getBroadcast getBroadcast()} 사용) ì´ë¥¼ 서비스를 시작한
+{@link android.content.Intent} ë‚´ì˜ ì„œë¹„ìŠ¤ì— ì „ë‹¬í•  수 있습니다. 그러면 서비스가
ì´ ë¸Œë¡œë“œìºìŠ¤íŠ¸ë¥¼ 사용하여 결과를 전달할 수 있게 ë©ë‹ˆë‹¤.</p>
-<p>서비스를 시작하기 위한 여러 ê°œì˜ ìš”ì²­ì€ ì„œë¹„ìŠ¤ì˜
-{@link android.app.Service#onStartCommand onStartCommand()}ë¡œì˜ ìƒì‘하는 여러 ê°œì˜ í˜¸ì¶œì´ë¼ëŠ” 결과를 낳습니다. 하지만, 서비스를 중단하려면
+<p>서비스를 시작하기 위한 여러 ê°œì˜ ìš”ì²­ì€ ì„œë¹„ìŠ¤ì˜
+{@link android.app.Service#onStartCommand onStartCommand()}ë¡œì˜ ìƒì‘하는 여러 ê°œì˜ í˜¸ì¶œì´ë¼ëŠ” 결과를 낳습니다. 하지만, 서비스를 중단하려면
ì´ë¥¼ 중단하ë¼ëŠ” 요청 하나({@link android.app.Service#stopSelf stopSelf()} ë˜ëŠ” {@link
android.content.Context#stopService stopService()} 사용)ë§Œ 있으면 ë©ë‹ˆë‹¤.</p>
<h3 id="Stopping">서비스 중단</h3>
-<p>ì‹œìž‘ëœ ì„œë¹„ìŠ¤ëŠ” ìžì‹ ë§Œì˜ 수명 주기를 ì§ì ‘ 관리해야 합니다. 다시 ë§í•´, 시스템ì´
-서비스를 중단하거나 소멸시키지 않는다는 뜻입니다. 다만 시스템 메모리를 회복해야 하고 서비스가
-{@link android.app.Service#onStartCommand onStartCommand()} 반환 후ì—ë„ ê³„ì† ì‹¤í–‰ë˜ëŠ” 경우는 예외입니다. ë”°ë¼ì„œ,
-서비스는 {@link android.app.Service#stopSelf stopSelf()}를 호출하여 스스로 중단시켜야 하고, 아니면
+<p>ì‹œìž‘ëœ ì„œë¹„ìŠ¤ëŠ” ìžì‹ ë§Œì˜ 수명 주기를 ì§ì ‘ 관리해야 합니다. 다시 ë§í•´, 시스템ì´
+서비스를 중단하거나 소멸시키지 않는다는 뜻입니다. 다만 시스템 메모리를 회복해야 하고 서비스가
+{@link android.app.Service#onStartCommand onStartCommand()} 반환 후ì—ë„ ê³„ì† ì‹¤í–‰ë˜ëŠ” 경우는 예외입니다. ë”°ë¼ì„œ,
+서비스는 {@link android.app.Service#stopSelf stopSelf()}를 호출하여 스스로 중단시켜야 하고, 아니면
다른 구성 요소가 {@link android.content.Context#stopService stopService()}를 호출하여 ì´ë¥¼ 중단시킬 수 있습니다.</p>
<p>ì¼ë‹¨ {@link android.app.Service#stopSelf stopSelf()} ë˜ëŠ” {@link
-android.content.Context#stopService stopService()}로 중단하기를 요청하고 나면 ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼ 가능한 한 빨리
+android.content.Context#stopService stopService()}로 중단하기를 요청하고 나면 ì‹œìŠ¤í…œì´ ì„œë¹„ìŠ¤ë¥¼ 가능한 한 빨리
소멸시킵니다.</p>
<p>그러나, 서비스가 {@link
-android.app.Service#onStartCommand onStartCommand()}ë¡œì˜ ìš”ì²­ì„ ë™ì‹œì— 여러 ê°œ 처리하기를 ë°”ë¼ëŠ” 경우ë¼ë©´ 시작 요청 처리를 완료한 ë’¤ì—ë„
-서비스를 중단하면 안 ë©ë‹ˆë‹¤. ê·¸ ì´í›„ 새 시작 ìš”ì²­ì„ ë°›ì•˜ì„ ìˆ˜ 있기
-때문입니다(첫 요청 종료 ì‹œì— ì¤‘ë‹¨í•˜ë©´ ë‘ ë²ˆì§¸ ìš”ì²­ì„ ì¢…ë£Œì‹œí‚µë‹ˆë‹¤). ì´ ë¬¸ì œë¥¼
-피하려면, {@link android.app.Service#stopSelf(int)}를 사용하여 서비스를
+android.app.Service#onStartCommand onStartCommand()}ë¡œì˜ ìš”ì²­ì„ ë™ì‹œì— 여러 ê°œ 처리하기를 ë°”ë¼ëŠ” 경우ë¼ë©´ 시작 요청 처리를 완료한 ë’¤ì—ë„
+서비스를 중단하면 안 ë©ë‹ˆë‹¤. ê·¸ ì´í›„ 새 시작 ìš”ì²­ì„ ë°›ì•˜ì„ ìˆ˜ 있기
+때문입니다(첫 요청 종료 ì‹œì— ì¤‘ë‹¨í•˜ë©´ ë‘ ë²ˆì§¸ ìš”ì²­ì„ ì¢…ë£Œì‹œí‚µë‹ˆë‹¤). ì´ ë¬¸ì œë¥¼
+피하려면, {@link android.app.Service#stopSelf(int)}를 사용하여 서비스를
중단시키ë¼ëŠ” 개발ìžì˜ ìš”ì²­ì´ í•­ìƒ ìµœì‹  시작 ìš”ì²­ì— ê¸°ë°˜í•˜ë„ë¡ í•´ì•¼ 합니다. 다시 ë§í•´, {@link
-android.app.Service#stopSelf(int)}를 호출할 때면 시작 ìš”ì²­ì˜ ID({@link android.app.Service#onStartCommand onStartCommand()}ì— ì „ë‹¬ëœ
-<code>startId</code>)를 전달하게 ë©ë‹ˆë‹¤. ì—¬ê¸°ì— ì¤‘ë‹¨ 요청ì´
+android.app.Service#stopSelf(int)}를 호출할 때면 시작 ìš”ì²­ì˜ ID({@link android.app.Service#onStartCommand onStartCommand()}ì— ì „ë‹¬ëœ
+<code>startId</code>)를 전달하게 ë©ë‹ˆë‹¤. ì—¬ê¸°ì— ì¤‘ë‹¨ 요청ì´
부합ë©ë‹ˆë‹¤. 그런 ë‹¤ìŒ ê°œë°œìžê°€ {@link
android.app.Service#stopSelf(int)}를 호출할 수 있기 ì „ì— ì„œë¹„ìŠ¤ê°€ 새 시작 ìš”ì²­ì„ ë°›ì€ ê²½ìš°, IDê°€ ì¼ì¹˜í•˜ì§€ 않게 ë˜ê³  서비스는 중단ë˜ì§€ 않습니다.</p>
-<p class="caution"><strong>주ì˜:</strong> 서비스가 ìž‘ì—…ì„ ì™„ë£Œí•œ ë‹¤ìŒ ì• í”Œë¦¬ì¼€ì´ì…˜ì´
-ì†Œì† ì„œë¹„ìŠ¤ë¥¼ 중단할 수 있어야 한다는 ì ì´ 중요합니다. 그래야 시스템 리소스 낭비를 피하고 배터리 ì „ë ¥ 소모를 ì¤„ì¼ ìˆ˜ 있습니다. 필요한 경우
+<p class="caution"><strong>주ì˜:</strong> 서비스가 ìž‘ì—…ì„ ì™„ë£Œí•œ ë‹¤ìŒ ì• í”Œë¦¬ì¼€ì´ì…˜ì´
+ì†Œì† ì„œë¹„ìŠ¤ë¥¼ 중단할 수 있어야 한다는 ì ì´ 중요합니다. 그래야 시스템 리소스 낭비를 피하고 배터리 ì „ë ¥ 소모를 ì¤„ì¼ ìˆ˜ 있습니다. 필요한 경우
다른 구성 ìš”ì†Œë„ ì„œë¹„ìŠ¤ë¥¼ 중단시킬 수 있습니다. {@link
-android.content.Context#stopService stopService()}를 호출하면 ë©ë‹ˆë‹¤. ì„œë¹„ìŠ¤ì— ëŒ€í•´ ë°”ì¸ë”©ì„ 활성화하ë”ë¼ë„,
+android.content.Context#stopService stopService()}를 호출하면 ë©ë‹ˆë‹¤. ì„œë¹„ìŠ¤ì— ëŒ€í•´ ë°”ì¸ë”©ì„ 활성화하ë”ë¼ë„,
서비스가 {@link
android.app.Service#onStartCommand onStartCommand()}ë¡œì˜ í˜¸ì¶œì„ í•œ 번ì´ë¼ë„ 받았으면 í•­ìƒ ì„œë¹„ìŠ¤ë¥¼ ì§ì ‘ 중단시켜야 합니다.</p>
@@ -571,32 +571,32 @@ android.content.Context#bindService bindService()}를 호출하여 오래 ì§€ì†
(ë˜í•œ ë³´í†µì€ êµ¬ì„± 요소가 {@link
android.content.Context#startService startService()}를 호출하여 서비스를 <em>시작</em>하는 ê²ƒì„ í—ˆìš©í•˜ì§€ 않습니다).</p>
-<p>액티비티와 애플리케ì´ì…˜ì˜ 다른 구성 요소ì—서 서비스와 ìƒí˜¸ 작용하기를 ì›í•˜ëŠ” 경우
-ë°”ì¸ë”©ëœ 서비스를 ìƒì„±í•´ì•¼ 합니다. 아니면 애플리케ì´ì…˜ì˜ 기능 몇 가지를 프로세스 ê°„ 통신(IPC)ì„ í†µí•´
+<p>액티비티와 애플리케ì´ì…˜ì˜ 다른 구성 요소ì—서 서비스와 ìƒí˜¸ 작용하기를 ì›í•˜ëŠ” 경우
+ë°”ì¸ë”©ëœ 서비스를 ìƒì„±í•´ì•¼ 합니다. 아니면 애플리케ì´ì…˜ì˜ 기능 몇 가지를 프로세스 ê°„ 통신(IPC)ì„ í†µí•´
다른 애플리케ì´ì…˜ì— ë…¸ì¶œí•˜ê³ ìž í•˜ëŠ” 경우ì—ë„ ì¢‹ìŠµë‹ˆë‹¤.</p>
<p>ë°”ì¸ë”©ëœ 서비스를 ìƒì„±í•˜ë ¤ë©´ {@link
-android.app.Service#onBind onBind()} 콜백 메서드를 구현하여 ì„œë¹„ìŠ¤ì™€ì˜ í†µì‹ ì„ ìœ„í•œ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ”
-{@link android.os.IBinder}를 반환하ë„ë¡ í•´ì•¼ 합니다. 그러면 다른 애플리케ì´ì…˜ 구성 요소가
-{@link android.content.Context#bindService bindService()}를 호출하여 해당 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 검색하고, ì„œë¹„ìŠ¤ì— ìžˆëŠ” 메서드를
-호출하기 시작할 수 있습니다. 서비스는 ìžì‹ ì—게 ë°”ì¸ë”©ëœ 애플리케ì´ì…˜ 구성 요소ì—게 ë„ì›€ì´ ë˜ê¸° 위해서만
-존재하는 것ì´ë¯€ë¡œ, ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ëœ 구성 요소가 없으면 ì‹œìŠ¤í…œì´ ì´ë¥¼ 소멸시킵니다(ë°”ì¸ë”©ëœ 서비스는 ì‹œìž‘ëœ ì„œë¹„ìŠ¤ì²˜ëŸ¼
-{@link android.app.Service#onStartCommand onStartCommand()}를 통해
+android.app.Service#onBind onBind()} 콜백 메서드를 구현하여 ì„œë¹„ìŠ¤ì™€ì˜ í†µì‹ ì„ ìœ„í•œ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ”
+{@link android.os.IBinder}를 반환하ë„ë¡ í•´ì•¼ 합니다. 그러면 다른 애플리케ì´ì…˜ 구성 요소가
+{@link android.content.Context#bindService bindService()}를 호출하여 해당 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 검색하고, ì„œë¹„ìŠ¤ì— ìžˆëŠ” 메서드를
+호출하기 시작할 수 있습니다. 서비스는 ìžì‹ ì—게 ë°”ì¸ë”©ëœ 애플리케ì´ì…˜ 구성 요소ì—게 ë„ì›€ì´ ë˜ê¸° 위해서만
+존재하는 것ì´ë¯€ë¡œ, ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ëœ 구성 요소가 없으면 ì‹œìŠ¤í…œì´ ì´ë¥¼ 소멸시킵니다(ë°”ì¸ë”©ëœ 서비스는 ì‹œìž‘ëœ ì„œë¹„ìŠ¤ì²˜ëŸ¼
+{@link android.app.Service#onStartCommand onStartCommand()}를 통해
중단시키지 <em>않아ë„</em> ë©ë‹ˆë‹¤).</p>
-<p>ë°”ì¸ë”©ëœ 서비스를 ìƒì„±í•˜ë ¤ë©´ 가장 먼저 해야 í•  ì¼ì€ í´ë¼ì´ì–¸íŠ¸ê°€ 서비스와
-통신할 수 있는 ë°©ë²•ì„ ë‚˜íƒ€ë‚´ëŠ” ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” 것입니다. 서비스와 í´ë¼ì´ì–¸íЏ 사ì´ì—서 ì“°ì´ëŠ” ì´ ì¸í„°íŽ˜ì´ìŠ¤ëŠ”
-반드시 {@link android.os.IBinder}ì˜ êµ¬í˜„ì´ì–´ì•¼ 하며 ì´ë¥¼
+<p>ë°”ì¸ë”©ëœ 서비스를 ìƒì„±í•˜ë ¤ë©´ 가장 먼저 해야 í•  ì¼ì€ í´ë¼ì´ì–¸íŠ¸ê°€ 서비스와
+통신할 수 있는 ë°©ë²•ì„ ë‚˜íƒ€ë‚´ëŠ” ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” 것입니다. 서비스와 í´ë¼ì´ì–¸íЏ 사ì´ì—서 ì“°ì´ëŠ” ì´ ì¸í„°íŽ˜ì´ìŠ¤ëŠ”
+반드시 {@link android.os.IBinder}ì˜ êµ¬í˜„ì´ì–´ì•¼ 하며 ì´ë¥¼
서비스가 {@link android.app.Service#onBind
-onBind()} 콜백 메서드ì—서 반환해야 합니다. í´ë¼ì´ì–¸íŠ¸ê°€ {@link android.os.IBinder}를 수신하면 해당 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 통해 서비스와
+onBind()} 콜백 메서드ì—서 반환해야 합니다. í´ë¼ì´ì–¸íŠ¸ê°€ {@link android.os.IBinder}를 수신하면 해당 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 통해 서비스와
ìƒí˜¸ ìž‘ìš©ì„ ì‹œìž‘í•  수 있습니다.</p>
-<p>여러 í´ë¼ì´ì–¸íŠ¸ê°€ ì„œë¹„ìŠ¤ì— í•œêº¼ë²ˆì— ë°”ì¸ë”©ë  수 있습니다. í´ë¼ì´ì–¸íŠ¸ê°€ ì„œë¹„ìŠ¤ì™€ì˜ ìƒí˜¸ ìž‘ìš©ì„ ì™„ë£Œí•˜ë©´ ì´ëŠ”
-{@link android.content.Context#unbindService unbindService()}를 호출하여 ë°”ì¸ë”©ì„ 해제합니다. 서비스ì—
+<p>여러 í´ë¼ì´ì–¸íŠ¸ê°€ ì„œë¹„ìŠ¤ì— í•œêº¼ë²ˆì— ë°”ì¸ë”©ë  수 있습니다. í´ë¼ì´ì–¸íŠ¸ê°€ ì„œë¹„ìŠ¤ì™€ì˜ ìƒí˜¸ ìž‘ìš©ì„ ì™„ë£Œí•˜ë©´ ì´ëŠ”
+{@link android.content.Context#unbindService unbindService()}를 호출하여 ë°”ì¸ë”©ì„ 해제합니다. 서비스ì—
ë°”ì¸ë”©ëœ í´ë¼ì´ì–¸íŠ¸ê°€ í•˜ë‚˜ë„ ì—†ìœ¼ë©´ ì‹œìŠ¤í…œì´ í•´ë‹¹ 서비스를 소멸시킵니다.</p>
-<p>ë°”ì¸ë”©ëœ 서비스를 구현하는 ë°ì—는 여러 가지 ë°©ë²•ì´ ìžˆìœ¼ë©° 그러한 êµ¬í˜„ì€ ì‹œìž‘ëœ ì„œë¹„ìŠ¤ë³´ë‹¤
-훨씬 복잡합니다. ë”°ë¼ì„œ ë°”ì¸ë”©ëœ 서비스 ë…¼ì˜ëŠ”
+<p>ë°”ì¸ë”©ëœ 서비스를 구현하는 ë°ì—는 여러 가지 ë°©ë²•ì´ ìžˆìœ¼ë©° 그러한 êµ¬í˜„ì€ ì‹œìž‘ëœ ì„œë¹„ìŠ¤ë³´ë‹¤
+훨씬 복잡합니다. ë”°ë¼ì„œ ë°”ì¸ë”©ëœ 서비스 ë…¼ì˜ëŠ”
<a href="{@docRoot}guide/components/bound-services.html">ë°”ì¸ë”©ëœ 서비스</a>ì— ê´€í•œ 별ë„ì˜ ë¬¸ì„œì—서 다룹니다.</p>
@@ -605,13 +605,13 @@ onBind()} 콜백 메서드ì—서 반환해야 합니다. í´ë¼ì´ì–¸íŠ¸ê°€ {@li
<p>서비스는 ì¼ë‹¨ 실행ë˜ê³  나면 사용ìžì—게 <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">알림 메시지</a> ë˜ëŠ” <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">ìƒíƒœ 표시줄 알림</a> ë“±ì„ ì‚¬ìš©í•´ ì´ë²¤íŠ¸ë¥¼ 알릴 수 있습니다.</p>
-<p>알림 메시지란 현재 ì°½ì˜ í‘œë©´ì— ìž ì‹œ 나타났다가 사ë¼ì§€ëŠ” 메시지ì´ê³ ,
-ìƒíƒœ 표시줄 ì•Œë¦¼ì€ ìƒíƒœ í‘œì‹œì¤„ì— ë©”ì‹œì§€ê°€ 담긴 ì•„ì´ì½˜ì„ 제공하여 사용ìžê°€ ì´ë¥¼ ì„ íƒí•˜ì—¬
+<p>알림 메시지란 현재 ì°½ì˜ í‘œë©´ì— ìž ì‹œ 나타났다가 사ë¼ì§€ëŠ” 메시지ì´ê³ ,
+ìƒíƒœ 표시줄 ì•Œë¦¼ì€ ìƒíƒœ í‘œì‹œì¤„ì— ë©”ì‹œì§€ê°€ 담긴 ì•„ì´ì½˜ì„ 제공하여 사용ìžê°€ ì´ë¥¼ ì„ íƒí•˜ì—¬
조치를 취할 수 있게 하는 것입니다(예: 액티비티 시작).</p>
<p>보통, ì¼ì¢…ì˜ ë°°ê²½ ìž‘ì—…ì´ ì™„ë£Œë˜ì—ˆê³ 
-(예: íŒŒì¼ ë‹¤ìš´ë¡œë“œ 완료) ì´ì œ 사용ìžê°€ ê·¸ì— ëŒ€í•´ 조치를 취할 수 있는 경우 ìƒíƒœ 표시줄 알림ì´
-ìµœì„ ì˜ ê¸°ë²•ìž…ë‹ˆë‹¤. 사용ìžê°€ í™•ìž¥ëœ ë³´ê¸°ì—서 ì•Œë¦¼ì„ ì„ íƒí•˜ë©´,
+(예: íŒŒì¼ ë‹¤ìš´ë¡œë“œ 완료) ì´ì œ 사용ìžê°€ ê·¸ì— ëŒ€í•´ 조치를 취할 수 있는 경우 ìƒíƒœ 표시줄 알림ì´
+ìµœì„ ì˜ ê¸°ë²•ìž…ë‹ˆë‹¤. 사용ìžê°€ í™•ìž¥ëœ ë³´ê¸°ì—서 ì•Œë¦¼ì„ ì„ íƒí•˜ë©´,
해당 ì•Œë¦¼ì´ ì•¡í‹°ë¹„í‹°ë¥¼ 시작할 수 있습니다(예: 다운로드한 íŒŒì¼ ë³´ê¸°).</p>
<p>ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">알림 메시지</a> ë˜ëŠ” <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">ìƒíƒœ 표시줄 알림</a>
@@ -621,19 +621,19 @@ onBind()} 콜백 메서드ì—서 반환해야 합니다. í´ë¼ì´ì–¸íŠ¸ê°€ {@li
<h2 id="Foreground">ì „ê²½ì—서 서비스 실행하기</h2>
-<p>ì „ê²½ 서비스는 사용ìžê°€ 능ë™ì ìœ¼ë¡œ ì¸ì‹í•˜ê³  있으므로 메모리 부족 시ì—ë„
-ì‹œìŠ¤í…œì´ ì¤‘ë‹¨í•  후보로 ê³ ë ¤ë˜ì§€ 않는 서비스를 ë§í•©ë‹ˆë‹¤. ì „ê²½
-서비스는 ìƒíƒœ í‘œì‹œì¤„ì— ëŒ€í•œ ì•Œë¦¼ì„ ì œê³µí•´ì•¼ 합니다. ì´ê²ƒì€
-"ì§„í–‰ 중" 제목 ì•„ëž˜ì— ë°°ì¹˜ë˜ë©°, ì´ëŠ” ê³§ 해당 ì•Œë¦¼ì€ ì„œë¹„ìŠ¤ê°€ 중단ë˜ì—ˆê±°ë‚˜
+<p>ì „ê²½ 서비스는 사용ìžê°€ 능ë™ì ìœ¼ë¡œ ì¸ì‹í•˜ê³  있으므로 메모리 부족 시ì—ë„
+ì‹œìŠ¤í…œì´ ì¤‘ë‹¨í•  후보로 ê³ ë ¤ë˜ì§€ 않는 서비스를 ë§í•©ë‹ˆë‹¤. ì „ê²½
+서비스는 ìƒíƒœ í‘œì‹œì¤„ì— ëŒ€í•œ ì•Œë¦¼ì„ ì œê³µí•´ì•¼ 합니다. ì´ê²ƒì€
+"ì§„í–‰ 중" 제목 ì•„ëž˜ì— ë°°ì¹˜ë˜ë©°, ì´ëŠ” ê³§ 해당 ì•Œë¦¼ì€ ì„œë¹„ìŠ¤ê°€ 중단ë˜ì—ˆê±°ë‚˜
ì „ê²½ì—서 제거ë˜ì§€ ì•Šì€ ì´ìƒ 무시할 수 없다는 뜻입니다.</p>
-<p>예를 들어 서비스ì—서 ìŒì•…ì„ ìž¬ìƒí•˜ëŠ” ìŒì•… 플레ì´ì–´ëŠ” ì „ê²½ì—서
-실행ë˜ë„ë¡ ì„¤ì •í•´ì•¼ 합니다. 사용ìžê°€ ì´ê²ƒì˜ ìž‘ë™ì„ 분명히 ì¸ì‹í•˜ê³  있기
-때문입니다. ìƒíƒœ í‘œì‹œì¤„ì— ìžˆëŠ” ì•Œë¦¼ì€ í˜„ìž¬ 노래를 나타내고
+<p>예를 들어 서비스ì—서 ìŒì•…ì„ ìž¬ìƒí•˜ëŠ” ìŒì•… 플레ì´ì–´ëŠ” ì „ê²½ì—서
+실행ë˜ë„ë¡ ì„¤ì •í•´ì•¼ 합니다. 사용ìžê°€ ì´ê²ƒì˜ ìž‘ë™ì„ 분명히 ì¸ì‹í•˜ê³  있기
+때문입니다. ìƒíƒœ í‘œì‹œì¤„ì— ìžˆëŠ” ì•Œë¦¼ì€ í˜„ìž¬ 노래를 나타내고
사용ìžë¡œ 하여금 ìŒì•… 플레ì´ì–´ì™€ ìƒí˜¸ 작용할 액티비티를 시작하게 해줄 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
<p>서비스가 ì „ê²½ì—서 실행ë˜ë„ë¡ ìš”ì²­í•˜ë ¤ë©´ {@link
-android.app.Service#startForeground startForeground()}를 호출하면 ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ” ë‘ ê°œì˜ ë§¤ê°œë³€ìˆ˜ë¥¼ 취합니다.
+android.app.Service#startForeground startForeground()}를 호출하면 ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ” ë‘ ê°œì˜ ë§¤ê°œë³€ìˆ˜ë¥¼ 취합니다.
ê·¸ 중 하나는 해당 ì•Œë¦¼ì„ ê³ ìœ í•˜ê²Œ ì‹ë³„하는 정수ì´ê³  다른 하나는 ìƒíƒœ í‘œì‹œì¤„ì— í•´ë‹¹ë˜ëŠ” {@link
android.app.Notification}입니다. 예:</p>
@@ -652,48 +652,48 @@ android.app.Service#startForeground startForeground()}ì— ë¶€ì—¬í•˜ëŠ” 정수 ID
<p>서비스를 ì „ê²½ì—서 제거하려면 {@link
-android.app.Service#stopForeground stopForeground()}를 호출하면 ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ” 부울 ê°’ì„ ì·¨í•˜ë©°, ì´ê²ƒì´
+android.app.Service#stopForeground stopForeground()}를 호출하면 ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ” 부울 ê°’ì„ ì·¨í•˜ë©°, ì´ê²ƒì´
ìƒíƒœ 표시줄 ì•Œë¦¼ë„ ì œê±°í• ì§€ 여부를 나타냅니다. ì´ ë©”ì„œë“œëŠ” 서비스를 중단시키지 <em>않습니다</em>.
- 그러나, 서비스가 ì „ê²½ì—서 실행 ì¤‘ì¸ ë™ì•ˆ 서비스를 중단시키면
+ 그러나, 서비스가 ì „ê²½ì—서 실행 ì¤‘ì¸ ë™ì•ˆ 서비스를 중단시키면
ì•Œë¦¼ë„ ë§ˆì°¬ê°€ì§€ë¡œ 제거ë©ë‹ˆë‹¤.</p>
-<p>ì•Œë¦¼ì— ëŒ€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">ìƒíƒœ 표시줄
+<p>ì•Œë¦¼ì— ëŒ€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">ìƒíƒœ 표시줄
알림 ìƒì„±</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
<h2 id="Lifecycle">서비스 수명 주기 관리</h2>
-<p>ì„œë¹„ìŠ¤ì˜ ìˆ˜ëª… 주기는 ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기보다 훨씬 간단합니다. 하지만, 서비스를 ìƒì„±í•˜ê³ 
-소멸시키는 ë°©ë²•ì— íŠ¹ížˆ 주ì˜ë¥¼ 기울여야 한다는 ë©´ì—서 중요ë„는 ì´ìª½ì´ ë” ë†’ìŠµë‹ˆë‹¤. 서비스는 사용ìžê°€ 모르는 채로
+<p>ì„œë¹„ìŠ¤ì˜ ìˆ˜ëª… 주기는 ì•¡í‹°ë¹„í‹°ì˜ ìˆ˜ëª… 주기보다 훨씬 간단합니다. 하지만, 서비스를 ìƒì„±í•˜ê³ 
+소멸시키는 ë°©ë²•ì— íŠ¹ížˆ 주ì˜ë¥¼ 기울여야 한다는 ë©´ì—서 중요ë„는 ì´ìª½ì´ ë” ë†’ìŠµë‹ˆë‹¤. 서비스는 사용ìžê°€ 모르는 채로
ë°°ê²½ì—서 ì‹¤í–‰ë  ìˆ˜ 있기 때문입니다.</p>
-<p>서비스 수명 주기&mdash;ìƒì„±ë˜ì—ˆì„ 때부터 ì†Œë©¸ë  ë•Œê¹Œì§€&mdash;는 ë‘ ê°€ì§€ 서로 다른 경로를
+<p>서비스 수명 주기&mdash;ìƒì„±ë˜ì—ˆì„ 때부터 ì†Œë©¸ë  ë•Œê¹Œì§€&mdash;는 ë‘ ê°€ì§€ 서로 다른 경로를
따를 수 있습니다.</p>
<ul>
<li>ì‹œìž‘ëœ ì„œë¹„ìŠ¤
<p>서비스는 ë˜ ë‹¤ë¥¸ 구성 요소가 {@link
-android.content.Context#startService startService()}를 호출하면 ìƒì„±ë©ë‹ˆë‹¤. 그러면 서비스가 무기한으로 ì‹¤í–‰ë  ìˆ˜ 있으며
+android.content.Context#startService startService()}를 호출하면 ìƒì„±ë©ë‹ˆë‹¤. 그러면 서비스가 무기한으로 ì‹¤í–‰ë  ìˆ˜ 있으며
스스로 알아서 중단ë˜ì–´ì•¼ 합니다. ì´ë•Œ {@link
-android.app.Service#stopSelf() stopSelf()}를 호출하는 ë°©ë²•ì„ ì”니다. ë˜ ë‹¤ë¥¸ 구성 ìš”ì†Œë„ ì„œë¹„ìŠ¤ë¥¼ 중단시킬 수
+android.app.Service#stopSelf() stopSelf()}를 호출하는 ë°©ë²•ì„ ì”니다. ë˜ ë‹¤ë¥¸ 구성 ìš”ì†Œë„ ì„œë¹„ìŠ¤ë¥¼ 중단시킬 수
있습니다. {@link android.content.Context#stopService
stopService()}를 호출하면 ë©ë‹ˆë‹¤. 서비스가 중단ë˜ë©´ ì‹œìŠ¤í…œì´ ì´ë¥¼ 소멸시킵니다.</p></li>
<li>ë°”ì¸ë”©ëœ 서비스
<p>서비스는 ë˜ ë‹¤ë¥¸ 구성 요소(í´ë¼ì´ì–¸íЏ)ê°€ {@link
-android.content.Context#bindService bindService()}를 호출하면 ìƒì„±ë©ë‹ˆë‹¤. 그러면 í´ë¼ì´ì–¸íŠ¸ê°€
-{@link android.os.IBinder} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 통해 서비스와 í†µì‹ ì„ ì£¼ê³ ë°›ì„ ìˆ˜ 있습니다. í´ë¼ì´ì–¸íŠ¸ê°€ ì—°ê²°ì„ ì¢…ë£Œí•˜ë ¤ë©´
-{@link android.content.Context#unbindService unbindService()}를 호출하면 ë©ë‹ˆë‹¤. 여러 í´ë¼ì´ì–¸íŠ¸ê°€ ê°™ì€ ì„œë¹„ìŠ¤ì—
-ë°”ì¸ë”©ë  수 있으며, ì´ ëª¨ë‘ê°€ ë°”ì¸ë”©ì„ 해제하면 ì‹œìŠ¤í…œì´ í•´ë‹¹ 서비스를 소멸시킵니다 (서비스가 스스로를 중단시키지
+android.content.Context#bindService bindService()}를 호출하면 ìƒì„±ë©ë‹ˆë‹¤. 그러면 í´ë¼ì´ì–¸íŠ¸ê°€
+{@link android.os.IBinder} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 통해 서비스와 í†µì‹ ì„ ì£¼ê³ ë°›ì„ ìˆ˜ 있습니다. í´ë¼ì´ì–¸íŠ¸ê°€ ì—°ê²°ì„ ì¢…ë£Œí•˜ë ¤ë©´
+{@link android.content.Context#unbindService unbindService()}를 호출하면 ë©ë‹ˆë‹¤. 여러 í´ë¼ì´ì–¸íŠ¸ê°€ ê°™ì€ ì„œë¹„ìŠ¤ì—
+ë°”ì¸ë”©ë  수 있으며, ì´ ëª¨ë‘ê°€ ë°”ì¸ë”©ì„ 해제하면 ì‹œìŠ¤í…œì´ í•´ë‹¹ 서비스를 소멸시킵니다 (서비스가 스스로를 중단시키지
<em>않아ë„</em> ë©ë‹ˆë‹¤).</p></li>
</ul>
-<p>ì´ì™€ ê°™ì€ ë‘ ê°€ì§€ 경로는 완전히 ë³„ê°œì˜ ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. 다시 ë§í•´, ì´ë¯¸
-{@link android.content.Context#startService startService()}로 ì‹œìž‘ëœ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•  ìˆ˜ë„ ìžˆë‹¤ëŠ” 뜻입니다. 예를
+<p>ì´ì™€ ê°™ì€ ë‘ ê°€ì§€ 경로는 완전히 ë³„ê°œì˜ ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. 다시 ë§í•´, ì´ë¯¸
+{@link android.content.Context#startService startService()}로 ì‹œìž‘ëœ ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©í•  ìˆ˜ë„ ìžˆë‹¤ëŠ” 뜻입니다. 예를
들어, ë°°ê²½ ìŒì•… 서비스를 시작하려면 {@link android.content.Context#startService
-startService()}를 í˜¸ì¶œí•˜ë˜ ìž¬ìƒí•  ìŒì•…ì„ ì‹ë³„하는 {@link android.content.Intent}를 사용하면 ë©ë‹ˆë‹¤. 나중ì—,
-ì•„ë§ˆë„ ì‚¬ìš©ìžê°€ 플레ì´ì–´ì— 좀 ë” ë§Žì€ í†µì œê¶Œì„ ë°œíœ˜í•˜ê³ ìž í•˜ê±°ë‚˜
+startService()}를 í˜¸ì¶œí•˜ë˜ ìž¬ìƒí•  ìŒì•…ì„ ì‹ë³„하는 {@link android.content.Intent}를 사용하면 ë©ë‹ˆë‹¤. 나중ì—,
+ì•„ë§ˆë„ ì‚¬ìš©ìžê°€ 플레ì´ì–´ì— 좀 ë” ë§Žì€ í†µì œê¶Œì„ ë°œíœ˜í•˜ê³ ìž í•˜ê±°ë‚˜
현재 ë…¸ëž˜ì— ëŒ€í•œ 정보를 ì–»ê³ ìž í•  때, 액티비티가 ì„œë¹„ìŠ¤ì— ë°”ì¸ë”©ë  수 있습니다. {@link
android.content.Context#bindService bindService()}를 사용하면 ë©ë‹ˆë‹¤. ì´ëŸ° 경우ì—는 {@link
android.content.Context#stopService stopService()} ë˜ëŠ” {@link android.app.Service#stopSelf
@@ -702,8 +702,8 @@ stopSelf()}ë„ í´ë¼ì´ì–¸íŠ¸ê°€ ëª¨ë‘ ë°”ì¸ë”© í•´ì œë  ë•Œê¹Œì§€ 실제로
<h3 id="LifecycleCallbacks">수명 주기 콜백 구현하기</h3>
-<p>액티비티와 마찬가지로 서비스ì—ë„ ìˆ˜ëª… 주기 콜백 메서드가 있어 ì´ë¥¼ 구현하면 서비스ì˜
-ìƒíƒœ 변경 ë‚´ìš©ì„ ëª¨ë‹ˆí„°ë§í•  수 있고 ì ì ˆí•œ ì‹œê¸°ì— ìž‘ì—…ì„ ìˆ˜í–‰í•  수 있습니다. 다ìŒì˜ 골격
+<p>액티비티와 마찬가지로 서비스ì—ë„ ìˆ˜ëª… 주기 콜백 메서드가 있어 ì´ë¥¼ 구현하면 서비스ì˜
+ìƒíƒœ 변경 ë‚´ìš©ì„ ëª¨ë‹ˆí„°ë§í•  수 있고 ì ì ˆí•œ ì‹œê¸°ì— ìž‘ì—…ì„ ìˆ˜í–‰í•  수 있습니다. 다ìŒì˜ 골격
서비스는 ê° ìˆ˜ëª… 주기 메서드를 설명한 것입니다.</p>
<pre>
@@ -743,13 +743,13 @@ public class ExampleService extends Service {
}
</pre>
-<p class="note"><strong>참고:</strong> 액티비티 수명 주기 콜백 메서드와는 달리 ì´ì™€ ê°™ì€ ì½œë°± 메서드를 구현하는 ë°ì—는
+<p class="note"><strong>참고:</strong> 액티비티 수명 주기 콜백 메서드와는 달리 ì´ì™€ ê°™ì€ ì½œë°± 메서드를 구현하는 ë°ì—는
슈í¼í´ëž˜ìФ êµ¬í˜„ì„ í˜¸ì¶œí•˜ì§€ <em>않아ë„</em> ë©ë‹ˆë‹¤.</p>
<img src="{@docRoot}images/service_lifecycle.png" alt="" />
-<p class="img-caption"><strong>그림 2.</strong> 서비스 수명 주기입니다. ì™¼ìª½ì˜ ë‹¤ì´ì–´ê·¸ëž¨ì€
+<p class="img-caption"><strong>그림 2.</strong> 서비스 수명 주기입니다. ì™¼ìª½ì˜ ë‹¤ì´ì–´ê·¸ëž¨ì€
서비스가 {@link android.content.Context#startService
-startService()}로 ìƒì„±ëœ ê²½ìš°ì˜ ìˆ˜ëª… 주기를 나타내며 ì˜¤ë¥¸ìª½ì˜ ë‹¤ì´ì–´ê·¸ëž¨ì€ 서비스가
+startService()}로 ìƒì„±ëœ ê²½ìš°ì˜ ìˆ˜ëª… 주기를 나타내며 ì˜¤ë¥¸ìª½ì˜ ë‹¤ì´ì–´ê·¸ëž¨ì€ 서비스가
{@link android.content.Context#bindService bindService()}로 ìƒì„±ëœ ê²½ìš°ì˜ ìˆ˜ëª… 주기를 나타낸 것입니다.</p>
<p>ì´ì™€ ê°™ì€ ë©”ì„œë“œë¥¼ 구현함으로ì¨, 서비스 수명 ì£¼ê¸°ì˜ ë‘ ê°€ì§€ ì¤‘ì²©ëœ ë£¨í”„ë¥¼ 모니터ë§í•  수 있습니다. </p>
@@ -757,20 +757,20 @@ startService()}로 ìƒì„±ëœ ê²½ìš°ì˜ ìˆ˜ëª… 주기를 나타내며 오른쪽ì
<ul>
<li>ì„œë¹„ìŠ¤ì˜ <strong>수명 주기 ì „ì²´</strong>는 {@link
android.app.Service#onCreate onCreate()}ê°€ í˜¸ì¶œëœ ì‹œì ê³¼ {@link
-android.app.Service#onDestroy}ê°€ ë°˜í™˜ëœ ì‹œì  ì‚¬ì´ì— ì¼ì–´ë‚©ë‹ˆë‹¤. 액티비티와 마찬가지로 서비스는 ìžì‹ ì˜ 초기 설정ì„
+android.app.Service#onDestroy}ê°€ ë°˜í™˜ëœ ì‹œì  ì‚¬ì´ì— ì¼ì–´ë‚©ë‹ˆë‹¤. 액티비티와 마찬가지로 서비스는 ìžì‹ ì˜ 초기 설정ì„
{@link android.app.Service#onCreate onCreate()}ì—서 수행하며 ë‚¨ì€ ë¦¬ì†ŒìŠ¤ë¥¼ ëª¨ë‘ {@link
-android.app.Service#onDestroy onDestroy()}ì— ë¦´ë¦¬ìŠ¤í•©ë‹ˆë‹¤. 예를 들어
+android.app.Service#onDestroy onDestroy()}ì— ë¦´ë¦¬ìŠ¤í•©ë‹ˆë‹¤. 예를 들어
ìŒì•… ìž¬ìƒ ì„œë¹„ìŠ¤ì˜ ê²½ìš° ìŒì•…ì´ ìž¬ìƒë  스레드를 {@link
android.app.Service#onCreate onCreate()}로 ìƒì„±í•˜ê³ , 그럼 ë‹¤ìŒ í•´ë‹¹ 스레드를 중단할 때ì—는 {@link
android.app.Service#onDestroy onDestroy()}ì—서 í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
<p>{@link android.app.Service#onCreate onCreate()}와 {@link android.app.Service#onDestroy
-onDestroy()} 메서드는 모든 ì„œë¹„ìŠ¤ì— ëŒ€í•´ 호출ë©ë‹ˆë‹¤. ì´ëŠ” 서비스가
+onDestroy()} 메서드는 모든 ì„œë¹„ìŠ¤ì— ëŒ€í•´ 호출ë©ë‹ˆë‹¤. ì´ëŠ” 서비스가
{@link android.content.Context#startService startService()}로 ìƒì„±ë˜ì—ˆë“  {@link
android.content.Context#bindService bindService()}로 ìƒì„±ë˜ì—ˆë“  관계 ì—†ì´ ì ìš©ë©ë‹ˆë‹¤.</p></li>
<li>ì„œë¹„ìŠ¤ì˜ <strong>활성 수명 주기</strong>는 {@link
-android.app.Service#onStartCommand onStartCommand()} ë˜ëŠ” {@link android.app.Service#onBind onBind()}ë¡œì˜ í˜¸ì¶œê³¼ 함께 시작ë©ë‹ˆë‹¤.
+android.app.Service#onStartCommand onStartCommand()} ë˜ëŠ” {@link android.app.Service#onBind onBind()}ë¡œì˜ í˜¸ì¶œê³¼ 함께 시작ë©ë‹ˆë‹¤.
ê° ë©”ì„œë“œì— {@link
android.content.Intent}ê°€ 전달ë˜ëŠ”ë° ì´ê²ƒì€ ê°ê° {@link android.content.Context#startService
startService()} ë˜ëŠ” {@link android.content.Context#bindService bindService()} 중 í•˜ë‚˜ì— ì „ë‹¬ëœ ê²ƒìž…ë‹ˆë‹¤.
@@ -781,25 +781,25 @@ android.app.Service#onUnbind onUnbind()}ê°€ 반환ë˜ë©´ 종료ë©ë‹ˆë‹¤.</p>
</li>
</ul>
-<p class="note"><strong>참고:</strong> ì‹œìž‘ëœ ì„œë¹„ìŠ¤ë¥¼ 중단하려면
+<p class="note"><strong>참고:</strong> ì‹œìž‘ëœ ì„œë¹„ìŠ¤ë¥¼ 중단하려면
{@link android.app.Service#stopSelf stopSelf()} ë˜ëŠ” {@link
-android.content.Context#stopService stopService()}를 호출하면 ë˜ì§€ë§Œ, ì„œë¹„ìŠ¤ì— ëŒ€í•œ ìƒì‘하는 콜백ì€
-없습니다(즉 {@code onStop()} ì½œë°±ì´ ì—†ìŠµë‹ˆë‹¤). 그러므로, 서비스가 í´ë¼ì´ì–¸íŠ¸ì— ë°”ì¸ë”©ë˜ì–´ 있지 ì•Šì€ í•œ
+android.content.Context#stopService stopService()}를 호출하면 ë˜ì§€ë§Œ, ì„œë¹„ìŠ¤ì— ëŒ€í•œ ìƒì‘하는 콜백ì€
+없습니다(즉 {@code onStop()} ì½œë°±ì´ ì—†ìŠµë‹ˆë‹¤). 그러므로, 서비스가 í´ë¼ì´ì–¸íŠ¸ì— ë°”ì¸ë”©ë˜ì–´ 있지 ì•Šì€ í•œ
ì‹œìŠ¤í…œì€ ì„œë¹„ìŠ¤ê°€ 중단ë˜ë©´ ì´ë¥¼ 소멸시킵니다. 수신ë˜ëŠ” ì½œë°±ì€ {@link
android.app.Service#onDestroy onDestroy()}ê°€ 유ì¼í•©ë‹ˆë‹¤.</p>
-<p>그림 2는 ì„œë¹„ìŠ¤ì— ëŒ€í•œ ì¼ë°˜ì ì¸ 콜백 메서드를 나타낸 것입니다. ì´ ê·¸ë¦¼ì—서는
-{@link android.content.Context#startService startService()}로 ìƒì„±ëœ 서비스와
-{@link android.content.Context#bindService bindService()}로 ìƒì„±ëœ 서비스를
+<p>그림 2는 ì„œë¹„ìŠ¤ì— ëŒ€í•œ ì¼ë°˜ì ì¸ 콜백 메서드를 나타낸 것입니다. ì´ ê·¸ë¦¼ì—서는
+{@link android.content.Context#startService startService()}로 ìƒì„±ëœ 서비스와
+{@link android.content.Context#bindService bindService()}로 ìƒì„±ëœ 서비스를
구분하고 있지만, ì–´ë–¤ ì‹ìœ¼ë¡œ 시작ë˜ì—ˆë“  모든 서비스는 í´ë¼ì´ì–¸íŠ¸ê°€ ìžì‹ ì— ë°”ì¸ë”©ë˜ë„ë¡ í—ˆìš©í•  수 있다는 ì ì„ 명심하십시오.
ë§í•˜ìžë©´, {@link android.app.Service#onStartCommand
-onStartCommand()}로 ì²˜ìŒ ì‹œìž‘ëœ ì„œë¹„ìŠ¤(í´ë¼ì´ì–¸íŠ¸ê°€ {@link android.content.Context#startService startService()}를 호출해서)ë¼ê³  í•´ë„
-여전히 {@link android.app.Service#onBind onBind()}ë¡œì˜ í˜¸ì¶œì„ ë°›ì„ ìˆ˜ 있습니다(í´ë¼ì´ì–¸íŠ¸ê°€
+onStartCommand()}로 ì²˜ìŒ ì‹œìž‘ëœ ì„œë¹„ìŠ¤(í´ë¼ì´ì–¸íŠ¸ê°€ {@link android.content.Context#startService startService()}를 호출해서)ë¼ê³  í•´ë„
+여전히 {@link android.app.Service#onBind onBind()}ë¡œì˜ í˜¸ì¶œì„ ë°›ì„ ìˆ˜ 있습니다(í´ë¼ì´ì–¸íŠ¸ê°€
{@link android.content.Context#bindService bindService()}를 호출하는 경우).</p>
<p>ë°”ì¸ë”©ì„ 제공하는 서비스 ìƒì„±ì— 대한 ìžì„¸í•œ ë‚´ìš©ì€ <a href="{@docRoot}guide/components/bound-services.html">ë°”ì¸ë”©ëœ 서비스</a> 문서를 참조하십시오. ì´ ì•ˆì—는 {@link android.app.Service#onRebind onRebind()}
-콜백 ë©”ì„œë“œì— ëŒ€í•œ ìžì„¸í•œ ì •ë³´ê°€ <a href="{@docRoot}guide/components/bound-services.html#Lifecycle">ë°”ì¸ë”©ëœ 서비스ì˜
-수명 주기 관리</a>ì— ê´€í•œ 섹션ì—
+콜백 ë©”ì„œë“œì— ëŒ€í•œ ìžì„¸í•œ ì •ë³´ê°€ <a href="{@docRoot}guide/components/bound-services.html#Lifecycle">ë°”ì¸ë”©ëœ 서비스ì˜
+수명 주기 관리</a>ì— ê´€í•œ 섹션ì—
담겨 있습니다.</p>
diff --git a/docs/html-intl/intl/ko/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/ko/guide/components/tasks-and-back-stack.jd
index 6b896f9d50ad..166cedd3a182 100644
--- a/docs/html-intl/intl/ko/guide/components/tasks-and-back-stack.jd
+++ b/docs/html-intl/intl/ko/guide/components/tasks-and-back-stack.jd
@@ -37,23 +37,23 @@ Androidì‹ ë©€í‹°íƒœìŠ¤í‚¹</a></li>
</div>
-<p>í•˜ë‚˜ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì—는 보통 여러 ê°œì˜ <a href="{@docRoot}guide/components/activities.html">액티비티</a>ê°€ 들어있습니다. ê° ì•¡í‹°ë¹„í‹°ëŠ”
-사용ìžê°€ 수행할 수 있는 특정한 ì¢…ë¥˜ì˜ ìž‘ì—…ì„ ì¤‘ì‹¬ìœ¼ë¡œ ë””ìžì¸ë˜ì–´ì•¼ 하며 다른 액티비티를
+<p>í•˜ë‚˜ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì—는 보통 여러 ê°œì˜ <a href="{@docRoot}guide/components/activities.html">액티비티</a>ê°€ 들어있습니다. ê° ì•¡í‹°ë¹„í‹°ëŠ”
+사용ìžê°€ 수행할 수 있는 특정한 ì¢…ë¥˜ì˜ ìž‘ì—…ì„ ì¤‘ì‹¬ìœ¼ë¡œ ë””ìžì¸ë˜ì–´ì•¼ 하며 다른 액티비티를
시작할 수 있는 ê¸°ëŠ¥ì´ ìžˆìŠµë‹ˆë‹¤. 예를 들어 ì´ë©”ì¼ ì• í”Œë¦¬ì¼€ì´ì…˜ì—는 새 메시지 목ë¡ì„ 표시하는 í•˜ë‚˜ì˜ ì•¡í‹°ë¹„í‹°ê°€ ìžˆì„ ìˆ˜ 있습니다.
사용ìžê°€ 메시지를 하나 ì„ íƒí•˜ë©´, 새 액티비티가 ì—´ë ¤ 해당 메시지를 ë³¼ 수 있게 합니다.</p>
-<p>액티비티는 기기ì—서 다른 애플리케ì´ì…˜ì— 존재하는 액티비티를 시작할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어
-애플리케ì´ì…˜ì´ ì´ë©”ì¼ ë©”ì‹œì§€ë¥¼ ë³´ë‚´ê³ ìž í•˜ëŠ” 경우, "전송" ìž‘ì—…ì„ ìˆ˜í–‰í•  ì¸í…트를
-ì •ì˜í•˜ì—¬ ì´ë©”ì¼ ì£¼ì†Œì™€ 메시지 ë“±ì˜ ëª‡ 가지 ë°ì´í„°ë¥¼ í¬í•¨ì‹œí‚¤ë©´ ë©ë‹ˆë‹¤. 그러면 다른 애플리케ì´ì…˜ì—서 가져온 액티비티 중
-ì´ëŸ¬í•œ ì¢…ë¥˜ì˜ ì¸í…트를 처리한다고 스스로 선언한 ê²ƒì´ ì—´ë¦½ë‹ˆë‹¤. ì´ ê²½ìš°, ì´ ì¸í…트는
-ì´ë©”ì¼ì„ 전송하기 위한 것ì´ë¯€ë¡œ ì´ë©”ì¼ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ "작성" 액티비티가 시작ë©ë‹ˆë‹¤(ê°™ì€ ì¸í…트를
-ì§€ì›í•˜ëŠ” 액티비티가 여러 ê°œ 있는 경우, ì‹œìŠ¤í…œì€ ì‚¬ìš©ìžì—게 ì–´ëŠ ê²ƒì„ ì‚¬ìš©í• ì§€ ì„ íƒí•˜ë„ë¡ í•©ë‹ˆë‹¤). ì´ë©”ì¼ì´ 전송ë˜ë©´
-액티비티가 재개ë˜ê³  해당 ì´ë©”ì¼ ì•¡í‹°ë¹„í‹°ê°€ 애플리케ì´ì…˜ì˜ ì¼ë¶€ì˜€ë˜ 것처럼 보입니다. 액티비티는
-서로 다른 애플리케ì´ì…˜ì—서 온 ê²ƒì¼ ìˆ˜ 있지만, Android는 ë‘ ì•¡í‹°ë¹„í‹°ë¥¼
+<p>액티비티는 기기ì—서 다른 애플리케ì´ì…˜ì— 존재하는 액티비티를 시작할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어
+애플리케ì´ì…˜ì´ ì´ë©”ì¼ ë©”ì‹œì§€ë¥¼ ë³´ë‚´ê³ ìž í•˜ëŠ” 경우, "전송" ìž‘ì—…ì„ ìˆ˜í–‰í•  ì¸í…트를
+ì •ì˜í•˜ì—¬ ì´ë©”ì¼ ì£¼ì†Œì™€ 메시지 ë“±ì˜ ëª‡ 가지 ë°ì´í„°ë¥¼ í¬í•¨ì‹œí‚¤ë©´ ë©ë‹ˆë‹¤. 그러면 다른 애플리케ì´ì…˜ì—서 가져온 액티비티 중
+ì´ëŸ¬í•œ ì¢…ë¥˜ì˜ ì¸í…트를 처리한다고 스스로 선언한 ê²ƒì´ ì—´ë¦½ë‹ˆë‹¤. ì´ ê²½ìš°, ì´ ì¸í…트는
+ì´ë©”ì¼ì„ 전송하기 위한 것ì´ë¯€ë¡œ ì´ë©”ì¼ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ "작성" 액티비티가 시작ë©ë‹ˆë‹¤(ê°™ì€ ì¸í…트를
+ì§€ì›í•˜ëŠ” 액티비티가 여러 ê°œ 있는 경우, ì‹œìŠ¤í…œì€ ì‚¬ìš©ìžì—게 ì–´ëŠ ê²ƒì„ ì‚¬ìš©í• ì§€ ì„ íƒí•˜ë„ë¡ í•©ë‹ˆë‹¤). ì´ë©”ì¼ì´ 전송ë˜ë©´
+액티비티가 재개ë˜ê³  해당 ì´ë©”ì¼ ì•¡í‹°ë¹„í‹°ê°€ 애플리케ì´ì…˜ì˜ ì¼ë¶€ì˜€ë˜ 것처럼 보입니다. 액티비티는
+서로 다른 애플리케ì´ì…˜ì—서 온 ê²ƒì¼ ìˆ˜ 있지만, Android는 ë‘ ì•¡í‹°ë¹„í‹°ë¥¼
ëª¨ë‘ ê°™ì€ <em>작업</em> ì•ˆì— ìœ ì§€í•˜ì—¬ ì´ì²˜ëŸ¼ 막힘 없는 ì‚¬ìš©ìž í™˜ê²½ì„ ìœ ì§€í•©ë‹ˆë‹¤.</p>
-<p>작업ì´ëž€ 액티비티 ì»¬ë ‰ì…˜ì„ ì¼ì»«ëŠ” ë§ë¡œ, 사용ìžê°€ 특정 ìž‘ì—…ì„ ìˆ˜í–‰í•  때 ì´ê²ƒê³¼
-ìƒí˜¸ 작용합니다. 액티비티는 ìŠ¤íƒ ì•ˆì— ì •ë ¬ë˜ë©°(<em>ë°± 스íƒ</em>), ì´ë•Œ
+<p>작업ì´ëž€ 액티비티 ì»¬ë ‰ì…˜ì„ ì¼ì»«ëŠ” ë§ë¡œ, 사용ìžê°€ 특정 ìž‘ì—…ì„ ìˆ˜í–‰í•  때 ì´ê²ƒê³¼
+ìƒí˜¸ 작용합니다. 액티비티는 ìŠ¤íƒ ì•ˆì— ì •ë ¬ë˜ë©°(<em>ë°± 스íƒ</em>), ì´ë•Œ
순서는 ê° ì•¡í‹°ë¹„í‹°ê°€ 열린 순서와 같습니다.</p>
<!-- SAVE FOR WHEN THE FRAGMENT DOC IS ADDED
@@ -77,40 +77,40 @@ android.app.Fragment} class documentation.</p>
</div>
-->
-<p>기기 ë©”ì¸ ìŠ¤í¬ë¦°ì´ 대다수 ìž‘ì—…ì˜ ì‹œìž‘ ì§€ì ìž…니다. 사용ìžê°€
-애플리케ì´ì…˜
-시작 관리ìžì— 있는 ì•„ì´ì½˜(ë˜ëŠ” ë©”ì¸ ìŠ¤í¬ë¦°ì˜ 바로 가기)ì„ í„°ì¹˜í•˜ë©´ 해당 애플리케ì´ì…˜ì˜ ìž‘ì—…ì´ ì „ê²½ìœ¼ë¡œ 나옵니다. 해당 애플리케ì´ì…˜ì— 대한
-ìž‘ì—…ì´ ì¡´ìž¬í•˜ì§€ 않으면(ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ ìµœê·¼ì— ì‚¬ìš©í•œ ì ì´ 없는 경우), 새 ìž‘ì—…ì´ ìƒì„±ë˜ê³ 
+<p>기기 ë©”ì¸ ìŠ¤í¬ë¦°ì´ 대다수 ìž‘ì—…ì˜ ì‹œìž‘ ì§€ì ìž…니다. 사용ìžê°€
+애플리케ì´ì…˜
+시작 관리ìžì— 있는 ì•„ì´ì½˜(ë˜ëŠ” ë©”ì¸ ìŠ¤í¬ë¦°ì˜ 바로 가기)ì„ í„°ì¹˜í•˜ë©´ 해당 애플리케ì´ì…˜ì˜ ìž‘ì—…ì´ ì „ê²½ìœ¼ë¡œ 나옵니다. 해당 애플리케ì´ì…˜ì— 대한
+ìž‘ì—…ì´ ì¡´ìž¬í•˜ì§€ 않으면(ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ ìµœê·¼ì— ì‚¬ìš©í•œ ì ì´ 없는 경우), 새 ìž‘ì—…ì´ ìƒì„±ë˜ê³ 
해당 애플리케ì´ì…˜ì˜ "기본" 액티비티가 스íƒì— 있는 루트 액티비티로 열립니다.</p>
-<p>현재 액티비티가 ë˜ ë‹¤ë¥¸ 액티비티를 시작하는 경우, 새 액티비티가 스íƒì˜ 맨 위로 밀어올려지고
-사용ìžì˜ ì´ˆì ì´ ì´ì— 맞춰집니다. ì´ì „ 액티비티는 스íƒì— 유지ë˜ì§€ë§Œ, 중단ë©ë‹ˆë‹¤. 액티비티가 중단ë˜ë©´
-ì‹œìŠ¤í…œì€ ì´ ì•¡í‹°ë¹„í‹°ì˜ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì˜ í˜„ìž¬ ìƒíƒœë¥¼ 보존합니다. 사용ìžê°€
+<p>현재 액티비티가 ë˜ ë‹¤ë¥¸ 액티비티를 시작하는 경우, 새 액티비티가 스íƒì˜ 맨 위로 밀어올려지고
+사용ìžì˜ ì´ˆì ì´ ì´ì— 맞춰집니다. ì´ì „ 액티비티는 스íƒì— 유지ë˜ì§€ë§Œ, 중단ë©ë‹ˆë‹¤. 액티비티가 중단ë˜ë©´
+ì‹œìŠ¤í…œì€ ì´ ì•¡í‹°ë¹„í‹°ì˜ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì˜ í˜„ìž¬ ìƒíƒœë¥¼ 보존합니다. 사용ìžê°€
<em>뒤로</em>
- ë²„íŠ¼ì„ ëˆ„ë¥´ë©´, 현재 액티비티가 스íƒì˜ 맨 위ì—서 튀어나오고(해당 액티비티는 소멸ë©ë‹ˆë‹¤)
-ì´ì „ 액티비티가 재개ë©ë‹ˆë‹¤(ì´ê²ƒì˜ UI ì´ì „ ìƒíƒœê°€ ë³µì›ë©ë‹ˆë‹¤). 스íƒì— 있는 액티비티는
-ê²°ì½” 다시 ì •ë ¬ë˜ì§€ 않습니다. 다만 스íƒì—서 밀어올려지거나 튀어나올 ë¿ìž…니다. 즉, 현재 ì•¡í‹°ë¹„í‹°ì— ì˜í•´
-시작ë˜ë©´ ìŠ¤íƒ ìœ„ë¡œ 밀어올려지고, 사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ì‚¬ìš©í•˜ì—¬ 액티비티를 떠나면 튀어나와 사ë¼ì§€ëŠ” 것입니다. ë”°ë¼ì„œ,
-ë°± 스íƒì€
-ì¼ì¢…ì˜ "후입선출" ê°ì²´ 구조로서 ìž‘ë™í•œë‹¤ê³  í•  수 있습니다. 그림 1ì€
-ì´ í–‰ë™ì„ 시간 표시 막대와 함께 표시하여 여러 액티비티 사ì´ì˜ ì§„í–‰ë¥ ì„ ë³´ì—¬ì£¼ë©°,
+ ë²„íŠ¼ì„ ëˆ„ë¥´ë©´, 현재 액티비티가 스íƒì˜ 맨 위ì—서 튀어나오고(해당 액티비티는 소멸ë©ë‹ˆë‹¤)
+ì´ì „ 액티비티가 재개ë©ë‹ˆë‹¤(ì´ê²ƒì˜ UI ì´ì „ ìƒíƒœê°€ ë³µì›ë©ë‹ˆë‹¤). 스íƒì— 있는 액티비티는
+ê²°ì½” 다시 ì •ë ¬ë˜ì§€ 않습니다. 다만 스íƒì—서 밀어올려지거나 튀어나올 ë¿ìž…니다. 즉, 현재 ì•¡í‹°ë¹„í‹°ì— ì˜í•´
+시작ë˜ë©´ ìŠ¤íƒ ìœ„ë¡œ 밀어올려지고, 사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ì‚¬ìš©í•˜ì—¬ 액티비티를 떠나면 튀어나와 사ë¼ì§€ëŠ” 것입니다. ë”°ë¼ì„œ,
+ë°± 스íƒì€
+ì¼ì¢…ì˜ "후입선출" ê°ì²´ 구조로서 ìž‘ë™í•œë‹¤ê³  í•  수 있습니다. 그림 1ì€
+ì´ í–‰ë™ì„ 시간 표시 막대와 함께 표시하여 여러 액티비티 사ì´ì˜ ì§„í–‰ë¥ ì„ ë³´ì—¬ì£¼ë©°,
ê° ì‹œì ì—서 현재 ë°± 스íƒì˜ ëª¨ìŠµì„ ë‚˜íƒ€ë‚¸ 것입니다.</p>
<img src="{@docRoot}images/fundamentals/diagram_backstack.png" alt="" />
-<p class="img-caption"><strong>그림 1.</strong> ìž‘ì—…ì— ìžˆëŠ” ê°ê°ì˜ 새 액티비티가 ë°± 스íƒì— í•­ëª©ì„ ì¶”ê°€í•˜ëŠ”
-ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다. 사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ 현재
-액티비티가
+<p class="img-caption"><strong>그림 1.</strong> ìž‘ì—…ì— ìžˆëŠ” ê°ê°ì˜ 새 액티비티가 ë°± 스íƒì— í•­ëª©ì„ ì¶”ê°€í•˜ëŠ”
+ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다. 사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ 현재
+액티비티가
소멸ë˜ê³  ì´ì „ 액티비티가 재개ë©ë‹ˆë‹¤.</p>
-<p>사용ìžê°€ 계ì†í•´ì„œ <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´, 스íƒì— 있는 ê° ì•¡í‹°ë¹„í‹°ê°€ 하나씩 튀어나가
-ì´ì „ 것ì„
-드러내고, 마침내는 사용ìžê°€ ë©”ì¸ ìŠ¤í¬ë¦°ìœ¼ë¡œ ë˜ëŒì•„가게 ë©ë‹ˆë‹¤(아니면 ìž‘ì—…ì´ ì‹œìž‘ë˜ì—ˆì„ 때
+<p>사용ìžê°€ 계ì†í•´ì„œ <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´, 스íƒì— 있는 ê° ì•¡í‹°ë¹„í‹°ê°€ 하나씩 튀어나가
+ì´ì „ 것ì„
+드러내고, 마침내는 사용ìžê°€ ë©”ì¸ ìŠ¤í¬ë¦°ìœ¼ë¡œ ë˜ëŒì•„가게 ë©ë‹ˆë‹¤(아니면 ìž‘ì—…ì´ ì‹œìž‘ë˜ì—ˆì„ 때
실행 중ì´ë˜ 액티비티가 무엇ì´ë“  그것으로 ë˜ëŒì•„갑니다). 스íƒì—서 모든 액티비티가 제거ë˜ë©´ ì´ ìž‘ì—…ì€ ë” ì´ìƒ 존재하지 않게 ë©ë‹ˆë‹¤.</p>
<div class="figure" style="width:287px">
<img src="{@docRoot}images/fundamentals/diagram_multitasking.png" alt="" /> <p
-class="img-caption"><strong>그림 2.</strong> ë‘ ê°œì˜ ìž‘ì—…: 작업 Bê°€ ì „ê²½ì—서 ì‚¬ìš©ìž ìƒí˜¸ ìž‘ìš©ì„ ìˆ˜ì‹ í•˜ëŠ” 한편,
+class="img-caption"><strong>그림 2.</strong> ë‘ ê°œì˜ ìž‘ì—…: 작업 Bê°€ ì „ê²½ì—서 ì‚¬ìš©ìž ìƒí˜¸ ìž‘ìš©ì„ ìˆ˜ì‹ í•˜ëŠ” 한편,
작업 A는 ë°°ê²½ì—서 재개ë˜ê¸°ë¥¼ 기다립니다.</p>
</div>
<div class="figure" style="width:215px">
@@ -118,39 +118,39 @@ class="img-caption"><strong>그림 2.</strong> ë‘ ê°œì˜ ìž‘ì—…: 작업 Bê°€ ì 
class="img-caption"><strong>그림 3.</strong> í•˜ë‚˜ì˜ ì•¡í‹°ë¹„í‹°ê°€ 여러 번 ì¸ìŠ¤í„´íŠ¸í™”ë©ë‹ˆë‹¤.</p>
</div>
-<p>작업ì´ëž€ í•˜ë‚˜ì˜ ìž˜ 짜여진 단위로 사용ìžê°€ 새 ìž‘ì—…ì„ ì‹œìž‘í•  때 "ë°°ê²½"으로 ì´ë™í•  ìˆ˜ë„ ìžˆê³ 
-<em>홈</em> ë²„íŠ¼ì„ í†µí•´ ë©”ì¸ ìŠ¤í¬ë¦°ìœ¼ë¡œ ì´ë™í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ìž‘ì—…ì˜ ëª¨ë“  액티비티는 ë°°ê²½ì— ìžˆëŠ” ë™ì•ˆì€
+<p>작업ì´ëž€ í•˜ë‚˜ì˜ ìž˜ 짜여진 단위로 사용ìžê°€ 새 ìž‘ì—…ì„ ì‹œìž‘í•  때 "ë°°ê²½"으로 ì´ë™í•  ìˆ˜ë„ ìžˆê³ 
+<em>홈</em> ë²„íŠ¼ì„ í†µí•´ ë©”ì¸ ìŠ¤í¬ë¦°ìœ¼ë¡œ ì´ë™í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ìž‘ì—…ì˜ ëª¨ë“  액티비티는 ë°°ê²½ì— ìžˆëŠ” ë™ì•ˆì€
중단ë˜ì§€ë§Œ
-, 해당 ìž‘ì—…ì— ëŒ€í•œ ë°± 스íƒì€ 그대로 변함 ì—†ì´ ìœ ì§€ë©ë‹ˆë‹¤. ì´ ìž‘ì—…ì€ ë˜ ë‹¤ë¥¸ ìž‘ì—…ì´ ë°œìƒí•˜ëŠ” ë™ì•ˆ
-ì´ˆì ì„ ìžƒì„ ë¿ìž…니다(그림 2 참조). 그런 ë‹¤ìŒ ìž‘ì—…ì´ "ì „ê²½"으로 ë˜ëŒì•„와 사용ìžê°€
-ì´ì „ì— í•˜ë˜ ì¼ì„ 계ì†í•  수 있습니다. 예를 들어 현재 작업(작업 A)ì˜ ìŠ¤íƒì— 세 ê°œì˜ ì•¡í‹°ë¹„í‹°ê°€ 있다고
+, 해당 ìž‘ì—…ì— ëŒ€í•œ ë°± 스íƒì€ 그대로 변함 ì—†ì´ ìœ ì§€ë©ë‹ˆë‹¤. ì´ ìž‘ì—…ì€ ë˜ ë‹¤ë¥¸ ìž‘ì—…ì´ ë°œìƒí•˜ëŠ” ë™ì•ˆ
+ì´ˆì ì„ ìžƒì„ ë¿ìž…니다(그림 2 참조). 그런 ë‹¤ìŒ ìž‘ì—…ì´ "ì „ê²½"으로 ë˜ëŒì•„와 사용ìžê°€
+ì´ì „ì— í•˜ë˜ ì¼ì„ 계ì†í•  수 있습니다. 예를 들어 현재 작업(작업 A)ì˜ ìŠ¤íƒì— 세 ê°œì˜ ì•¡í‹°ë¹„í‹°ê°€ 있다고
가정하면 ê·¸ 중 ë‘˜ì€ í˜„ìž¬ 액티비티 ì•„ëž˜ì— ìžˆìŠµë‹ˆë‹¤. 사용ìžê°€ <em>홈</em>
- ë²„íŠ¼ì„ ëˆ„ë¥¸ 다ìŒ
-애플리케ì´ì…˜ 시작 관리ìžë¡œë¶€í„° 새 애플리케ì´ì…˜ì„ 시작합니다. ë©”ì¸ ìŠ¤í¬ë¦°ì´ 나타나면 작업 A는
+ ë²„íŠ¼ì„ ëˆ„ë¥¸ 다ìŒ
+애플리케ì´ì…˜ 시작 관리ìžë¡œë¶€í„° 새 애플리케ì´ì…˜ì„ 시작합니다. ë©”ì¸ ìŠ¤í¬ë¦°ì´ 나타나면 작업 A는
배경으로 ì´ë™í•©ë‹ˆë‹¤. 새 애플리케ì´ì…˜ì´ 시작ë˜ë©´ ì‹œìŠ¤í…œì€ í•´ë‹¹ 애플리케ì´ì…˜ì— 대한 ìž‘ì—…ì„ ì‹œìž‘í•˜ë©°
-(작업 B) 여기ì—는 ë‚˜ë¦„ì˜ ì•¡í‹°ë¹„í‹° 스íƒì´ 딸려 있습니다. 해당 애플리케ì´ì…˜ê³¼
-ìƒí˜¸ 작용한 후, 사용ìžëŠ” 다시 홈으로 ëŒì•„와 ì›ëž˜ 작업 A를 시작한
+(작업 B) 여기ì—는 ë‚˜ë¦„ì˜ ì•¡í‹°ë¹„í‹° 스íƒì´ 딸려 있습니다. 해당 애플리케ì´ì…˜ê³¼
+ìƒí˜¸ 작용한 후, 사용ìžëŠ” 다시 홈으로 ëŒì•„와 ì›ëž˜ 작업 A를 시작한
애플리케ì´ì…˜ì„ ì„ íƒí•©ë‹ˆë‹¤. ì´ì œ 작업 Aê°€ 전경으로 옵니다.
-ì´ ìŠ¤íƒì— 있는 액티비티 세 개는 ëª¨ë‘ ë©€ì©¡í•˜ê³ , ìŠ¤íƒ ë§¨ ìœ„ì— ìžˆëŠ” 액티비티가
-재개ë©ë‹ˆë‹¤. ì´ ì‹œì ì—서
-사용ìžëŠ” 작업 B로 ë„로 전환할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 홈으로 ì´ë™í•˜ì—¬ 해당 작업ì„
-시작한 애플리케ì´ì…˜ ì•„ì´ì½˜ì„ ì„ íƒí•˜ë©´ ë©ë‹ˆë‹¤(아니면
-<a href="{@docRoot}guide/components/recents.html">개요 화면</a>ì—서 해당 ì•±ì˜ ìž‘ì—…ì„ ì„ íƒí•´ë„ ë©ë‹ˆë‹¤).
+ì´ ìŠ¤íƒì— 있는 액티비티 세 개는 ëª¨ë‘ ë©€ì©¡í•˜ê³ , ìŠ¤íƒ ë§¨ ìœ„ì— ìžˆëŠ” 액티비티가
+재개ë©ë‹ˆë‹¤. ì´ ì‹œì ì—서
+사용ìžëŠ” 작업 B로 ë„로 전환할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 홈으로 ì´ë™í•˜ì—¬ 해당 작업ì„
+시작한 애플리케ì´ì…˜ ì•„ì´ì½˜ì„ ì„ íƒí•˜ë©´ ë©ë‹ˆë‹¤(아니면
+<a href="{@docRoot}guide/components/recents.html">개요 화면</a>ì—서 해당 ì•±ì˜ ìž‘ì—…ì„ ì„ íƒí•´ë„ ë©ë‹ˆë‹¤).
ì´ê²ƒì´ Androidì—서 ë©€í‹°íƒœìŠ¤í‚¹ì„ í•˜ëŠ” ìž‘ì—…ì˜ ì˜ˆì‹œìž…ë‹ˆë‹¤.</p>
-<p class="note"><strong>참고:</strong> 여러 ê°œì˜ ìž‘ì—…ì„ ë°°ê²½ì— í•œêº¼ë²ˆì— ëŒ€ê¸°ì‹œí‚¬ 수 있습니다.
-하지만, 사용ìžê°€ ìˆ˜ë§Žì€ ë°°ê²½ ìž‘ì—…ì„ ë™ì‹œì— 실행하면 ì‹œìŠ¤í…œì´ ë©”ëª¨ë¦¬ë¥¼ ë³µì›í•˜ê¸° 위해
-ë°°ê²½ 액티비티를 소멸시키기 시작할 수 있고, 그러면 액티비티 ìƒíƒœê°€ ì†ì‹¤ë©ë‹ˆë‹¤.
+<p class="note"><strong>참고:</strong> 여러 ê°œì˜ ìž‘ì—…ì„ ë°°ê²½ì— í•œêº¼ë²ˆì— ëŒ€ê¸°ì‹œí‚¬ 수 있습니다.
+하지만, 사용ìžê°€ ìˆ˜ë§Žì€ ë°°ê²½ ìž‘ì—…ì„ ë™ì‹œì— 실행하면 ì‹œìŠ¤í…œì´ ë©”ëª¨ë¦¬ë¥¼ ë³µì›í•˜ê¸° 위해
+ë°°ê²½ 액티비티를 소멸시키기 시작할 수 있고, 그러면 액티비티 ìƒíƒœê°€ ì†ì‹¤ë©ë‹ˆë‹¤.
다ìŒì˜ <a href="#ActivityState">액티비티 ìƒíƒœ</a>ì— ê´€í•œ ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
-<p>ë°± 스íƒì— 있는 액티비티는 ê²°ì½” 다시 ì •ë ¬ë˜ì§€ 않으므로, 애플리케ì´ì…˜ì—서
-사용ìžì—게 하나 ì´ìƒì˜ 액티비티로부터 특정 액티비티를 시작하ë„ë¡ í—ˆìš©í•˜ëŠ” 경우, 해당 ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ê°€
-ìƒì„±ë˜ì–´ ìŠ¤íƒ ìœ„ë¡œ 밀려옵니다(해당 ì•¡í‹°ë¹„í‹°ì˜ ê¸°ì¡´ ì¸ìŠ¤í„´ìŠ¤ë¥¼
-맨 위로 가져오는 대신). ë”°ë¼ì„œ, 애플리케ì´ì…˜ ì•ˆì˜ í•œ 액티비티가 여러 번
-ì¸ìŠ¤í„´íŠ¸í™”ë  ìˆ˜ 있으며(서로 다른 ìž‘ì—…ìœ¼ë¡œë¶€í„°ë„ ê°€ëŠ¥), ì´ë¥¼ 나타낸 ê²ƒì´ ê·¸ë¦¼ 3입니다. ì´ ë•Œë¬¸ì— ì‚¬ìš©ìžê°€
+<p>ë°± 스íƒì— 있는 액티비티는 ê²°ì½” 다시 ì •ë ¬ë˜ì§€ 않으므로, 애플리케ì´ì…˜ì—서
+사용ìžì—게 하나 ì´ìƒì˜ 액티비티로부터 특정 액티비티를 시작하ë„ë¡ í—ˆìš©í•˜ëŠ” 경우, 해당 ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ê°€
+ìƒì„±ë˜ì–´ ìŠ¤íƒ ìœ„ë¡œ 밀려옵니다(해당 ì•¡í‹°ë¹„í‹°ì˜ ê¸°ì¡´ ì¸ìŠ¤í„´ìŠ¤ë¥¼
+맨 위로 가져오는 대신). ë”°ë¼ì„œ, 애플리케ì´ì…˜ ì•ˆì˜ í•œ 액티비티가 여러 번
+ì¸ìŠ¤í„´íŠ¸í™”ë  ìˆ˜ 있으며(서로 다른 ìž‘ì—…ìœ¼ë¡œë¶€í„°ë„ ê°€ëŠ¥), ì´ë¥¼ 나타낸 ê²ƒì´ ê·¸ë¦¼ 3입니다. ì´ ë•Œë¬¸ì— ì‚¬ìš©ìžê°€
<em>뒤로</em> ë²„íŠ¼ì„ ì‚¬ìš©í•˜ì—¬ 뒤로 ì´ë™í•˜ëŠ” 경우, ì•¡í‹°ë¹„í‹°ì˜ ê° ì¸ìŠ¤í„´ìŠ¤ê°€ 열린 순서대로 드러납니다
-(ê°ìž 나름ì˜
-UI ìƒíƒœë¥¼ 가지고). 다만, 액티비티가 한 번 ì´ìƒ ì¸ìŠ¤í„´íŠ¸í™”ë˜ëŠ” ê²ƒì„ ì›ì¹˜ 않으면 ì´ í–‰ë™ì€ 수정할 수
+(ê°ìž 나름ì˜
+UI ìƒíƒœë¥¼ 가지고). 다만, 액티비티가 한 번 ì´ìƒ ì¸ìŠ¤í„´íŠ¸í™”ë˜ëŠ” ê²ƒì„ ì›ì¹˜ 않으면 ì´ í–‰ë™ì€ 수정할 수
있습니다. ê·¸ ë°©ë²•ì— ëŒ€í•´ì„œëŠ” <a href="#ManagingTasks">작업 관리하기</a>ì— ê´€í•œ ì´í›„ 섹션ì—서 ì´ì•¼ê¸°í•©ë‹ˆë‹¤.</p>
@@ -159,16 +159,16 @@ UI ìƒíƒœë¥¼ 가지고). 다만, 액티비티가 한 번 ì´ìƒ ì¸ìŠ¤í„´íŠ¸í™”ë
<ul>
<li>액티비티 Aê°€ 액티비티 B를 시작하면 액티비티 A는 중단ë˜ì§€ë§Œ, ì‹œìŠ¤í…œì´ ê·¸ ìƒíƒœë¥¼
(예: 스í¬ë¡¤ 위치 ë° ì–‘ì‹ì— ìž…ë ¥ëœ í…스트 등) 보존합니다.
-사용ìžê°€ 액티비티 Bì— ìžˆëŠ” ë™ì•ˆ <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ 액티비티 Aê°€ 재개ë˜ë©° ìƒíƒœë„
+사용ìžê°€ 액티비티 Bì— ìžˆëŠ” ë™ì•ˆ <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ 액티비티 Aê°€ 재개ë˜ë©° ìƒíƒœë„
ë³µì›ë©ë‹ˆë‹¤.</li>
- <li>사용ìžê°€ <em>홈</em> ë²„íŠ¼ì„ ëˆŒëŸ¬ ìž‘ì—…ì„ ë– ë‚˜ë©´ 현재 액티비티가
-중단ë˜ê³ 
-ê·¸ ì†Œì† ìž‘ì—…ì´ ë°°ê²½ìœ¼ë¡œ 들어갑니다. ì‹œìŠ¤í…œì€ ìž‘ì—…ì— ì†í•œ 모든 ì•¡í‹°ë¹„í‹°ì˜ ìƒíƒœë¥¼ 보존합니다. 사용ìžê°€
-ë‚˜ì¤‘ì— ìž‘ì—…ì„ ì‹œìž‘í•œ 시작 ê´€ë¦¬ìž ì•„ì´ì½˜ì„ ì„ íƒí•˜ì—¬ 해당 ìž‘ì—…ì„ ìž¬ê°œí•˜ë©´, ê·¸ 작업ì´
+ <li>사용ìžê°€ <em>홈</em> ë²„íŠ¼ì„ ëˆŒëŸ¬ ìž‘ì—…ì„ ë– ë‚˜ë©´ 현재 액티비티가
+중단ë˜ê³ 
+ê·¸ ì†Œì† ìž‘ì—…ì´ ë°°ê²½ìœ¼ë¡œ 들어갑니다. ì‹œìŠ¤í…œì€ ìž‘ì—…ì— ì†í•œ 모든 ì•¡í‹°ë¹„í‹°ì˜ ìƒíƒœë¥¼ 보존합니다. 사용ìžê°€
+ë‚˜ì¤‘ì— ìž‘ì—…ì„ ì‹œìž‘í•œ 시작 ê´€ë¦¬ìž ì•„ì´ì½˜ì„ ì„ íƒí•˜ì—¬ 해당 ìž‘ì—…ì„ ìž¬ê°œí•˜ë©´, ê·¸ 작업ì´
전경으로 나오고 ìŠ¤íƒ ë§¨ 위ì—서 액티비티를 재개합니다.</li>
- <li>사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´, 현재 액티비티가 스íƒì—서 튀어나오고
+ <li>사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´, 현재 액티비티가 스íƒì—서 튀어나오고
소멸ë©ë‹ˆë‹¤.
- 스íƒì— ìžˆë˜ ì´ì „ 액티비티가 재개ë©ë‹ˆë‹¤. 액티비티가 소멸ë˜ë©´, ì‹œìŠ¤í…œì€ ê·¸ ì•¡í‹°ë¹„í‹°ì˜ ìƒíƒœë¥¼
+ 스íƒì— ìžˆë˜ ì´ì „ 액티비티가 재개ë©ë‹ˆë‹¤. 액티비티가 소멸ë˜ë©´, ì‹œìŠ¤í…œì€ ê·¸ ì•¡í‹°ë¹„í‹°ì˜ ìƒíƒœë¥¼
보존하지 <em>않습니다.</em></li>
<li>액티비티는 여러 번 ì¸ìŠ¤í„´íŠ¸í™”í•  수 있으며, 다른 작업ì—ì„œë„ ì´ë¥¼ 수행할 수 있습니다.</li>
</ul>
@@ -182,20 +182,20 @@ UI ìƒíƒœë¥¼ 가지고). 다만, 액티비티가 한 번 ì´ìƒ ì¸ìŠ¤í„´íŠ¸í™”ë
<h2 id="ActivityState">액티비티 ìƒíƒœ 저장하기</h2>
-<p>위ì—서 논한 바와 ê°™ì´, ì‹œìŠ¤í…œì˜ ê¸°ë³¸ í–‰ë™ì€ 액티비티가 중단ë˜ë©´ ê·¸ ìƒíƒœë¥¼ ë³´ì¡´í•´ë‘는
-것입니다. ì´ë ‡ê²Œ 하면, 사용ìžê°€ ì´ì „ 액티비티로 ë„로 ì´ë™í–ˆì„ 때 ê·¸ì— ì†í•œ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ê°€ ì´ì „ ìƒíƒœ
+<p>위ì—서 논한 바와 ê°™ì´, ì‹œìŠ¤í…œì˜ ê¸°ë³¸ í–‰ë™ì€ 액티비티가 중단ë˜ë©´ ê·¸ ìƒíƒœë¥¼ ë³´ì¡´í•´ë‘는
+것입니다. ì´ë ‡ê²Œ 하면, 사용ìžê°€ ì´ì „ 액티비티로 ë„로 ì´ë™í–ˆì„ 때 ê·¸ì— ì†í•œ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ê°€ ì´ì „ ìƒíƒœ
그대로 표시ë©ë‹ˆë‹¤. 그러나 ì•¡í‹°ë¹„í‹°ì˜ ìƒíƒœë¥¼ 미리 ë³´ì¡´í•  ìˆ˜ë„ ìžˆìœ¼ë©° ì‚¬ì „ì— ì´ë ‡ê²Œ <strong>해야 합니다.</strong>
-ì´ë•Œì—는, 액티비티가 소멸ë˜ê³  다시 만들어야 하는 경우를 대비해
+ì´ë•Œì—는, 액티비티가 소멸ë˜ê³  다시 만들어야 하는 경우를 대비해
콜백 메서드를 사용합니다.</p>
-<p>ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹° 중 하나를 중단시키는 경우(예를 들어 새 액티비티가 시작ë˜ì—ˆì„ 때 ë˜ëŠ” 작업ì´
-배경으로 ì´ë™í•˜ëŠ” 경우), ì‹œìŠ¤í…œì€ ì‹œìŠ¤í…œ 메모리를 회복해야 하는 경우 액티비티를
-완전히 소멸시켜버릴 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ëŸ° ìƒí™©ì´ 벌어지면, 액티비티 ìƒíƒœì— 대한 정보는 ì†ì‹¤ë©ë‹ˆë‹¤. ì´ëŸ° ì¼ì´ 벌어지ë”ë¼ë„,
-ì‹œìŠ¤í…œì€ ì—¬ì „ížˆ
-ë°± 스íƒì— 해당 ì•¡í‹°ë¹„í‹°ì˜ ìžë¦¬ê°€ 있다는 ê²ƒì„ ì•Œê³  있습니다. 다만 액티비티가 ìŠ¤íƒ ë§¨ 위로 올ë¼ì˜¤ë©´
-ì‹œìŠ¤í…œì´ ì´ë¥¼ (재개하는 ê²ƒì´ ì•„ë‹ˆë¼) 재ìƒì„±í•´ì•¼ë§Œ 합니다. 사용ìžì˜ 작업 ë‚´ìš©ì„
-잃어버리는 불ìƒì‚¬ë¥¼ 피하려면 ê·¸ ë‚´ìš©ì„ ë¯¸ë¦¬ ë³´ì¡´í•´ë‘어야 합니다. ì´ë•Œ 액티비티ì˜
-{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} 콜백
+<p>ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹° 중 하나를 중단시키는 경우(예를 들어 새 액티비티가 시작ë˜ì—ˆì„ 때 ë˜ëŠ” 작업ì´
+배경으로 ì´ë™í•˜ëŠ” 경우), ì‹œìŠ¤í…œì€ ì‹œìŠ¤í…œ 메모리를 회복해야 하는 경우 액티비티를
+완전히 소멸시켜버릴 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ëŸ° ìƒí™©ì´ 벌어지면, 액티비티 ìƒíƒœì— 대한 정보는 ì†ì‹¤ë©ë‹ˆë‹¤. ì´ëŸ° ì¼ì´ 벌어지ë”ë¼ë„,
+ì‹œìŠ¤í…œì€ ì—¬ì „ížˆ
+ë°± 스íƒì— 해당 ì•¡í‹°ë¹„í‹°ì˜ ìžë¦¬ê°€ 있다는 ê²ƒì„ ì•Œê³  있습니다. 다만 액티비티가 ìŠ¤íƒ ë§¨ 위로 올ë¼ì˜¤ë©´
+ì‹œìŠ¤í…œì´ ì´ë¥¼ (재개하는 ê²ƒì´ ì•„ë‹ˆë¼) 재ìƒì„±í•´ì•¼ë§Œ 합니다. 사용ìžì˜ 작업 ë‚´ìš©ì„
+잃어버리는 불ìƒì‚¬ë¥¼ 피하려면 ê·¸ ë‚´ìš©ì„ ë¯¸ë¦¬ ë³´ì¡´í•´ë‘어야 합니다. ì´ë•Œ 액티비티ì˜
+{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} 콜백
메서드를 구현하는 ë°©ë²•ì„ ì”니다.</p>
<p>액티비티 ìƒíƒœë¥¼ 저장하는 ë°©ë²•ì— ëŒ€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/components/activities.html#SavingActivityState">액티비티</a>
@@ -205,19 +205,19 @@ UI ìƒíƒœë¥¼ 가지고). 다만, 액티비티가 한 번 ì´ìƒ ì¸ìŠ¤í„´íŠ¸í™”ë
<h2 id="ManagingTasks">작업 관리하기</h2>
-<p>Androidê°€ 작업과 ë°± 스íƒì„ 관리하는 ë°©ì‹ì€ ìœ„ì— ì„¤ëª…ëœ ë°”ì™€ 같고&mdash;ê°™ì€ ìž‘ì—… 안ì—서
-ì—°ì´ì–´ ì‹œìž‘ëœ ëª¨ë“  ìž‘ì—…ì„ í•œê³³ì— ë°°ì¹˜í•˜ë˜ "후입선출" 스íƒì— ë‘는 것&mdash;ì´ ë°©ì‹ì€
-ëŒ€ë¶€ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì— 아주 효과ì ìž…니다. ì—¬ëŸ¬ë¶„ì€ ì•¡í‹°ë¹„í‹°ê°€ 작업과 ì—°ê´€ëœ ë°©ì‹ì´ë‚˜
-ë°± 스íƒì—ì„œì˜ ì¡´ìž¬ ë°©ì‹ì— 대해 염려하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. 그러나, ì •ìƒì ì¸ ë™ìž‘ì„ ì¸í„°ëŸ½íŠ¸í•˜ê¸°ë¡œ ê²°ì •í•  수ë„
-있습니다. 애플리케ì´ì…˜ì˜ 액티비티 하나가 시작ë˜ë©´ 새 ìž‘ì—…ì„ ì‹œìž‘í•˜ë ¤
-í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(현재 작업 ë‚´ì— ë°°ì¹˜ë˜ëŠ” 것 대신ì—). 아니면, 액티비티를 시작하면 그것ì˜
-기존 ì¸ìŠ¤í„´ìŠ¤ 하나를 앞으로 ê°€ì ¸ì˜¤ê³ ìž í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(ë°± ìŠ¤íƒ ë§¨ 위ì—서 새 ì¸ìŠ¤í„´ìŠ¤ë¥¼
-ìƒì„±í•˜ëŠ” 것 대신ì—). ë˜ëŠ” ë°± 스íƒì—서 사용ìžê°€ ìž‘ì—…ì„ ë– ë‚  ë•Œì˜ ë£¨íŠ¸ 액티비티를 제외하고
+<p>Androidê°€ 작업과 ë°± 스íƒì„ 관리하는 ë°©ì‹ì€ ìœ„ì— ì„¤ëª…ëœ ë°”ì™€ 같고&mdash;ê°™ì€ ìž‘ì—… 안ì—서
+ì—°ì´ì–´ ì‹œìž‘ëœ ëª¨ë“  ìž‘ì—…ì„ í•œê³³ì— ë°°ì¹˜í•˜ë˜ "후입선출" 스íƒì— ë‘는 것&mdash;ì´ ë°©ì‹ì€
+ëŒ€ë¶€ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì— 아주 효과ì ìž…니다. ì—¬ëŸ¬ë¶„ì€ ì•¡í‹°ë¹„í‹°ê°€ 작업과 ì—°ê´€ëœ ë°©ì‹ì´ë‚˜
+ë°± 스íƒì—ì„œì˜ ì¡´ìž¬ ë°©ì‹ì— 대해 염려하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. 그러나, ì •ìƒì ì¸ ë™ìž‘ì„ ì¸í„°ëŸ½íŠ¸í•˜ê¸°ë¡œ ê²°ì •í•  수ë„
+있습니다. 애플리케ì´ì…˜ì˜ 액티비티 하나가 시작ë˜ë©´ 새 ìž‘ì—…ì„ ì‹œìž‘í•˜ë ¤
+í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(현재 작업 ë‚´ì— ë°°ì¹˜ë˜ëŠ” 것 대신ì—). 아니면, 액티비티를 시작하면 그것ì˜
+기존 ì¸ìŠ¤í„´ìŠ¤ 하나를 앞으로 ê°€ì ¸ì˜¤ê³ ìž í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(ë°± ìŠ¤íƒ ë§¨ 위ì—서 새 ì¸ìŠ¤í„´ìŠ¤ë¥¼
+ìƒì„±í•˜ëŠ” 것 대신ì—). ë˜ëŠ” ë°± 스íƒì—서 사용ìžê°€ ìž‘ì—…ì„ ë– ë‚  ë•Œì˜ ë£¨íŠ¸ 액티비티를 제외하고
모든 액티비티를 ì§€ìš°ê³ ìž í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
-<p>ì´ ëª¨ë“  것과 ê·¸ 외ì—ë„ ë§Žì€ ê²ƒì„ í•  수 있는 ê²ƒì´ ë°”ë¡œ
+<p>ì´ ëª¨ë“  것과 ê·¸ 외ì—ë„ ë§Žì€ ê²ƒì„ í•  수 있는 ê²ƒì´ ë°”ë¡œ
<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
-매니페스트 요소 ì•ˆì— ìžˆëŠ” ì†ì„±ê³¼,
+매니페스트 요소 ì•ˆì— ìžˆëŠ” ì†ì„±ê³¼,
{@link android.app.Activity#startActivity startActivity()}ì— ì „ë‹¬í•œ ì¸í…íŠ¸ì— ìžˆëŠ” 플래그입니다.</p>
<p>ì´ëŸ° ë©´ì—서, ì—¬ëŸ¬ë¶„ì´ ì‚¬ìš©í•  수 있는 주요 <a href="{@docRoot}guide/topics/manifest/activity-element.html">
@@ -246,170 +246,170 @@ UI ìƒíƒœë¥¼ 가지고). 다만, 액티비티가 한 번 ì´ìƒ ì¸ìŠ¤í„´íŠ¸í™”ë
<li>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</li>
</ul>
-<p>ë‹¤ìŒ ì„¹ì…˜ì—서는 ì´ì™€ ê°™ì€ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ ì†ì„±ê³¼ ì¸í…트 플래그를 사용하여
+<p>ë‹¤ìŒ ì„¹ì…˜ì—서는 ì´ì™€ ê°™ì€ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ ì†ì„±ê³¼ ì¸í…트 플래그를 사용하여
액티비티가 작업과 ì—°ê´€ë˜ëŠ” ë°©ì‹ì„ ì •ì˜í•˜ê³  ë°± 스íƒì—서 액티비티가 ë™ìž‘하는 ë°©ì‹ì„ ì •ì˜í•˜ëŠ” ë°©ë²•ì„ ë°°ìš°ê²Œ ë©ë‹ˆë‹¤.</p>
-<p>ì´ì™¸ì—ë„ ë³„ë„로 작업과 액티비티를 표시하는 ë°©ë²•ì— ëŒ€í•œ ê³ ë ¤ 사항과
-개요 화면ì—ì„œì˜ ê´€ë¦¬ ë°©ë²•ì„ ë…¼í•©ë‹ˆë‹¤. ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/components/recents.html">개요 화면</a>ì„
-참조하십시오. ë³´í†µì€ ê°œìš” í™”ë©´ì— ìž‘ì—…ê³¼ 액티비티가 어떻게 표현ë ì§€ëŠ”
+<p>ì´ì™¸ì—ë„ ë³„ë„로 작업과 액티비티를 표시하는 ë°©ë²•ì— ëŒ€í•œ ê³ ë ¤ 사항과
+개요 화면ì—ì„œì˜ ê´€ë¦¬ ë°©ë²•ì„ ë…¼í•©ë‹ˆë‹¤. ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/components/recents.html">개요 화면</a>ì„
+참조하십시오. ë³´í†µì€ ê°œìš” í™”ë©´ì— ìž‘ì—…ê³¼ 액티비티가 어떻게 표현ë ì§€ëŠ”
ì‹œìŠ¤í…œì´ ì •ì˜í•˜ë„ë¡ ë‘어야 합니다. ì´ ë™ìž‘ì„ ê°œë°œìžê°€ 수정할 í•„ìš”ë„ ì—†ìŠµë‹ˆë‹¤.</p>
-<p class="caution"><strong>주ì˜:</strong> ëŒ€ë¶€ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì€ 액티비티와 ìž‘ì—…ì— ëŒ€í•œ
-기본 ë™ìž‘ì„ ì¸í„°ëŸ½íŠ¸í•˜ì§€ 않는 ê²ƒì´ ì •ìƒìž…니다. 액티비티가 기본 ë™ìž‘ì„ ìˆ˜ì •í•˜ëŠ” ê²ƒì´ í•„ìš”í•˜ë‹¤ëŠ”
-íŒë‹¨ì´ 서면, 시작 과정 ì¤‘ì— ì•¡í‹°ë¹„í‹°ì˜ ìœ ìš©ì„±ì„ í…ŒìŠ¤íŠ¸í•˜ì‹­ì‹œì˜¤.
+<p class="caution"><strong>주ì˜:</strong> ëŒ€ë¶€ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì€ 액티비티와 ìž‘ì—…ì— ëŒ€í•œ
+기본 ë™ìž‘ì„ ì¸í„°ëŸ½íŠ¸í•˜ì§€ 않는 ê²ƒì´ ì •ìƒìž…니다. 액티비티가 기본 ë™ìž‘ì„ ìˆ˜ì •í•˜ëŠ” ê²ƒì´ í•„ìš”í•˜ë‹¤ëŠ”
+íŒë‹¨ì´ 서면, 시작 과정 ì¤‘ì— ì•¡í‹°ë¹„í‹°ì˜ ìœ ìš©ì„±ì„ í…ŒìŠ¤íŠ¸í•˜ì‹­ì‹œì˜¤.
ë˜í•œ 다른 액티비티와 작업ì—서 <em>뒤로</em> ë²„íŠ¼ì„ ì¨ì„œ 해당 액티비티로 ëŒì•„올 때ì—ë„ ìœ ìš©ì„±ì„ í…ŒìŠ¤íŠ¸í•´ì•¼ 합니다.
사용ìžì˜ 예ìƒë˜ëŠ” ë™ìž‘ê³¼ ì¶©ëŒí•  ê°€ëŠ¥ì„±ì´ ìžˆëŠ” íƒìƒ‰ ë™ìž‘ì„ ê¼­ 테스트하십시오.</p>
<h3 id="TaskLaunchModes">시작 모드 ì •ì˜í•˜ê¸°</h3>
-<p>시작 모드를 사용하면 ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ê°€ 현재 작업과 ì—°ê´€ëœ ë°©ì‹ì„ ì •ì˜í•  수 있게
+<p>시작 모드를 사용하면 ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ê°€ 현재 작업과 ì—°ê´€ëœ ë°©ì‹ì„ ì •ì˜í•  수 있게
í•´ì¤ë‹ˆë‹¤. 여러 가지 시작 모드를 ë‘ ê°€ì§€ ë°©ì‹ìœ¼ë¡œ ì •ì˜í•  수 있습니다.</p>
<ul class="nolist">
<li><a href="#ManifestForTasks">매니페스트 íŒŒì¼ ì‚¬ìš©í•˜ê¸°</a>
- <p>매니페스트 파ì¼ì—서 액티비티를 선언하는 경우, 액티비티가 ì‹œìž‘ë  ë•Œ 여러 작업과 ì–´ë–¤ ì‹ìœ¼ë¡œ
+ <p>매니페스트 파ì¼ì—서 액티비티를 선언하는 경우, 액티비티가 ì‹œìž‘ë  ë•Œ 여러 작업과 ì–´ë–¤ ì‹ìœ¼ë¡œ
ì—°ê´€ì„ ë§ºì–´ì•¼ 하는지 지정할 수 있습니다.</li>
<li><a href="#IntentFlagsForTasks">ì¸í…트 플래그 사용하기</a>
- <p>{@link android.app.Activity#startActivity startActivity()}를 호출하는 경우
-{@link android.content.Intent}ì— í”Œëž˜ê·¸ë¥¼ í¬í•¨ì‹œì¼œ 새 액티비티가 현재 작업과 어떻게 ì—°ê´€ë˜ì–´ì•¼ í• ì§€(ë˜ëŠ”
+ <p>{@link android.app.Activity#startActivity startActivity()}를 호출하는 경우
+{@link android.content.Intent}ì— í”Œëž˜ê·¸ë¥¼ í¬í•¨ì‹œì¼œ 새 액티비티가 현재 작업과 어떻게 ì—°ê´€ë˜ì–´ì•¼ í• ì§€(ë˜ëŠ”
ì• ì´ˆì— ì—°ê´€ì„ ë§ºì„ì§€ ì•„ë‹ì§€) 선언하ë„ë¡ í•  수 있습니다.</p></li>
</ul>
-<p>ë”°ë¼ì„œ, 액티비티 Aê°€ 액티비티 B를 시작하면 액티비티 B는 ìžì‹ ì˜ 매니페스트ì—서
-현재 작업과 ì—°ê´€ì„ ë§ºëŠ” ë° ì ë‹¹í•œ ë°©ì‹(ì—°ê´€ì„ ë§ºì–´ì•¼ 한다면)ì„ ì •ì˜í•  수 있고 액티비티 A ë˜í•œ
-액티비티 Bê°€ 현재 작업과 ì—°ê´€ì„ ë§ºëŠ” ë°©ì‹ì„ 요청할 수 있습니다. ë‘ ì•¡í‹°ë¹„í‹°ê°€ ëª¨ë‘ ì•¡í‹°ë¹„í‹° Bê°€ 작업과
-ì—°ê´€ë˜ëŠ” ë°©ì‹ì„ ì •ì˜í•˜ëŠ” 경우, 액티비티 Aì˜ ìš”ì²­(ì¸í…íŠ¸ì— ì •ì˜ëœ 바를 따름)ì„ ì•¡í‹°ë¹„í‹° Bì˜
+<p>ë”°ë¼ì„œ, 액티비티 Aê°€ 액티비티 B를 시작하면 액티비티 B는 ìžì‹ ì˜ 매니페스트ì—서
+현재 작업과 ì—°ê´€ì„ ë§ºëŠ” ë° ì ë‹¹í•œ ë°©ì‹(ì—°ê´€ì„ ë§ºì–´ì•¼ 한다면)ì„ ì •ì˜í•  수 있고 액티비티 A ë˜í•œ
+액티비티 Bê°€ 현재 작업과 ì—°ê´€ì„ ë§ºëŠ” ë°©ì‹ì„ 요청할 수 있습니다. ë‘ ì•¡í‹°ë¹„í‹°ê°€ ëª¨ë‘ ì•¡í‹°ë¹„í‹° Bê°€ 작업과
+ì—°ê´€ë˜ëŠ” ë°©ì‹ì„ ì •ì˜í•˜ëŠ” 경우, 액티비티 Aì˜ ìš”ì²­(ì¸í…íŠ¸ì— ì •ì˜ëœ 바를 따름)ì„ ì•¡í‹°ë¹„í‹° Bì˜
요청(ìžì‹ ì˜ 매니페스트ì—서 ì •ì˜)보다 우위로 ì¸ì‹í•©ë‹ˆë‹¤.</p>
-<p class="note"><strong>참고:</strong> 매니페스트 파ì¼ì— 사용할 수 있는 시작 모드 중ì—는
-ì¸í…íŠ¸ì˜ í”Œëž˜ê·¸ë¡œ 사용할 수는 없는 ê²ƒë„ ìžˆìœ¼ë©°, ì´ì™€ 마찬 가지로 ì¸í…íŠ¸ì˜ í”Œëž˜ê·¸ë¡œ 사용할 수 있는 시작 모드 중ì—는
+<p class="note"><strong>참고:</strong> 매니페스트 파ì¼ì— 사용할 수 있는 시작 모드 중ì—는
+ì¸í…íŠ¸ì˜ í”Œëž˜ê·¸ë¡œ 사용할 수는 없는 ê²ƒë„ ìžˆìœ¼ë©°, ì´ì™€ 마찬 가지로 ì¸í…íŠ¸ì˜ í”Œëž˜ê·¸ë¡œ 사용할 수 있는 시작 모드 중ì—는
매니페스트ì—서 ì •ì˜í•  수 없는 ê²ƒë„ ìžˆìŠµë‹ˆë‹¤.</p>
<h4 id="ManifestForTasks">매니페스트 íŒŒì¼ ì‚¬ìš©í•˜ê¸°</h4>
-<p>매니페스트 파ì¼ì—서 액티비티를 선언하는 경우, 액티비티가 작업과
+<p>매니페스트 파ì¼ì—서 액티비티를 선언하는 경우, 액티비티가 작업과
ì–´ë–¤ ì‹ìœ¼ë¡œ ì—°ê´€ë˜ì–´ì•¼ í• ì§€ 지정하려면 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
ìš”ì†Œì˜ <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
launchMode}</a> ì†ì„±ì„ 사용하면 ë©ë‹ˆë‹¤.</p>
<p><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
-launchMode}</a> ì†ì„±ì€ 액티비티가 작업 안으로 들어가며 시작ë˜ëŠ” ë°©ë²•ì— ëŒ€í•œ 지침ì„
-나타냅니다.
+launchMode}</a> ì†ì„±ì€ 액티비티가 작업 안으로 들어가며 시작ë˜ëŠ” ë°©ë²•ì— ëŒ€í•œ 지침ì„
+나타냅니다.
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launchMode</a></code>
ì†ì„±ì— 할당할 수 있는 시작 모드는 네 가지가 있습니다.</p>
<dl>
<dt>{@code "standard"} (기본 모드)</dt>
- <dd>기본입니다. ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ê°€ ì‹œìž‘ëœ ìž‘ì—…ì—서 ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 만들고
-ì¸í…íŠ¸ì˜ ê²½ë¡œë¥¼ ì´ê²ƒìœ¼ë¡œ 지정합니다. 액티비티는 여러 번 ì¸ìŠ¤í„´íŠ¸í™”ë  ìˆ˜ 있고,
+ <dd>기본입니다. ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ê°€ ì‹œìž‘ëœ ìž‘ì—…ì—서 ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 만들고
+ì¸í…íŠ¸ì˜ ê²½ë¡œë¥¼ ì´ê²ƒìœ¼ë¡œ 지정합니다. 액티비티는 여러 번 ì¸ìŠ¤í„´íŠ¸í™”ë  ìˆ˜ 있고,
ê° ì¸ìŠ¤í„´ìŠ¤ëŠ” 서로 다른 ìž‘ì—…ì— ì†í•  수 있으며 한 ìž‘ì—…ì— ì—¬ëŸ¬ ê°œì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ ìžˆì„ ìˆ˜ 있습니다.</dd>
<dt>{@code "singleTop"}</dt>
- <dd>ì•¡í‹°ë¹„í‹°ì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ ì´ë¯¸ 현재 ìž‘ì—…ì˜ ë§¨ ìœ„ì— ì¡´ìž¬í•˜ëŠ” 경우, ì‹œìŠ¤í…œì€ ì¸í…íŠ¸ì˜ ê²½ë¡œë¥¼
+ <dd>ì•¡í‹°ë¹„í‹°ì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ ì´ë¯¸ 현재 ìž‘ì—…ì˜ ë§¨ ìœ„ì— ì¡´ìž¬í•˜ëŠ” 경우, ì‹œìŠ¤í…œì€ ì¸í…íŠ¸ì˜ ê²½ë¡œë¥¼
해당 ì¸ìŠ¤í„´ìŠ¤ë¡œ 지정합니다. ì´ë•Œ ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 만들기보다는 해당 ì¸ìŠ¤í„´ìŠ¤ì˜ {@link
-android.app.Activity#onNewIntent onNewIntent()} 메서드를 호출하는 방법ì„
-통합니다. 액티비티는 여러 번 ì¸ìŠ¤í„´íŠ¸í™”ë  ìˆ˜ 있고, ê° ì¸ìŠ¤í„´ìŠ¤ëŠ” 서로 다른 작업ì—
-ì†í•  수 있으며 한 ìž‘ì—…ì— ì—¬ëŸ¬ ê°œì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ ìžˆì„ ìˆ˜ 있습니다(다만 ë°± 스íƒì˜ 맨 ìœ„ì— ìžˆëŠ”
+android.app.Activity#onNewIntent onNewIntent()} 메서드를 호출하는 방법ì„
+통합니다. 액티비티는 여러 번 ì¸ìŠ¤í„´íŠ¸í™”ë  ìˆ˜ 있고, ê° ì¸ìŠ¤í„´ìŠ¤ëŠ” 서로 다른 작업ì—
+ì†í•  수 있으며 한 ìž‘ì—…ì— ì—¬ëŸ¬ ê°œì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ ìžˆì„ ìˆ˜ 있습니다(다만 ë°± 스íƒì˜ 맨 ìœ„ì— ìžˆëŠ”
액티비티가 ì•¡í‹°ë¹„í‹°ì˜ ê¸°ì¡´ ì¸ìŠ¤í„´ìŠ¤ê°€ <em>아닌</em> 경우ì—ë§Œ ì´ê²ƒì´ ì ìš©ë©ë‹ˆë‹¤).
- <p>예를 들어 ì–´ëŠ ìž‘ì—…ì˜ ë°± 스íƒì´ 루트 액티비티 A와 액티비티 B, C, 그리고 맨 ìœ„ì˜ ì•¡í‹°ë¹„í‹° D로
+ <p>예를 들어 ì–´ëŠ ìž‘ì—…ì˜ ë°± 스íƒì´ 루트 액티비티 A와 액티비티 B, C, 그리고 맨 ìœ„ì˜ ì•¡í‹°ë¹„í‹° D로
구성ë˜ì–´ 있다고 가정합니다(ì´ ìŠ¤íƒì€ A-B-C-D 형태를 ë ë©° Dê°€ 맨 ìœ„ì— ìžˆìŠµë‹ˆë‹¤). 유형 Dì˜ ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ì¸í…트가 ë„착합니다.
-Dì— ê¸°ë³¸ {@code "standard"} 시작 모드가 있는 경우, í´ëž˜ìŠ¤ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ê°€ 시작ë˜ê³  ì´ ìŠ¤íƒì€
-A-B-C-D-Dê°€ ë©ë‹ˆë‹¤. 하지만, Dì˜ ì‹œìž‘ 모드가 {@code "singleTop"}ì¸ ê²½ìš°, Dì˜
+Dì— ê¸°ë³¸ {@code "standard"} 시작 모드가 있는 경우, í´ëž˜ìŠ¤ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ê°€ 시작ë˜ê³  ì´ ìŠ¤íƒì€
+A-B-C-D-Dê°€ ë©ë‹ˆë‹¤. 하지만, Dì˜ ì‹œìž‘ 모드가 {@code "singleTop"}ì¸ ê²½ìš°, Dì˜
기존 ì¸ìŠ¤í„´ìŠ¤ê°€ 해당 ì¸í…트를 {@link
-android.app.Activity#onNewIntent onNewIntent()}를 통해 받게 ë©ë‹ˆë‹¤. ì´ê²ƒì´ 스íƒì˜ 맨 ìœ„ì— ìžˆê¸° 때문입니다. 스íƒì€
-ê³„ì† A-B-C-D로 유지ë©ë‹ˆë‹¤. 그러나 유형 Bì˜ ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ì¸í…트가 ë„착하는 경우,
+android.app.Activity#onNewIntent onNewIntent()}를 통해 받게 ë©ë‹ˆë‹¤. ì´ê²ƒì´ 스íƒì˜ 맨 ìœ„ì— ìžˆê¸° 때문입니다. 스íƒì€
+ê³„ì† A-B-C-D로 유지ë©ë‹ˆë‹¤. 그러나 유형 Bì˜ ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ì¸í…트가 ë„착하는 경우,
Bì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ê°€ 스íƒì— 추가ë˜ë©° ì´ëŠ” ì•¡í‹°ë¹„í‹°ì˜ ì‹œìž‘ 모드가 {@code "singleTop"}ì´ë”ë¼ë„ 무관하게 ì ìš©ë©ë‹ˆë‹¤.</p>
- <p class="note"><strong>참고:</strong> ì–´ëŠ ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ê°€ ìƒì„±ë˜ë©´,
-사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ëˆŒëŸ¬ ì´ì „ 액티비티로 ë˜ëŒì•„ê°ˆ 수 있게 ë©ë‹ˆë‹¤. 그러나 ì•¡í‹°ë¹„í‹°ì˜ ê¸°ì¡´
-ì¸ìŠ¤í„´ìŠ¤ê°€
+ <p class="note"><strong>참고:</strong> ì–´ëŠ ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ê°€ ìƒì„±ë˜ë©´,
+사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ëˆŒëŸ¬ ì´ì „ 액티비티로 ë˜ëŒì•„ê°ˆ 수 있게 ë©ë‹ˆë‹¤. 그러나 ì•¡í‹°ë¹„í‹°ì˜ ê¸°ì¡´
+ì¸ìŠ¤í„´ìŠ¤ê°€
새 ì¸í…트를 처리하는 경우, 사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ëˆŒëŸ¬ë„ ìƒˆ ì¸í…트가 {@link android.app.Activity#onNewIntent
-onNewIntent()}ì— ë„착하기 ì „ì˜ ì•¡í‹°ë¹„í‹°
-ìƒíƒœë¡œ
+onNewIntent()}ì— ë„착하기 ì „ì˜ ì•¡í‹°ë¹„í‹°
+ìƒíƒœë¡œ
ë˜ëŒì•„ê°ˆ 수 없습니다.</p>
</dd>
<dt>{@code "singleTask"}</dt>
<dd>ì‹œìŠ¤í…œì´ ìƒˆ ìž‘ì—…ì„ ë§Œë“¤ê³  새 ìž‘ì—…ì˜ ë£¨íŠ¸ì— ìžˆëŠ” 액티비티를 ì¸ìŠ¤í„´íŠ¸í™”í•©ë‹ˆë‹¤.
-하지만, ì•¡í‹°ë¹„í‹°ì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ ì´ë¯¸ ë³„ê°œì˜ ìž‘ì—…ì— ì¡´ìž¬í•˜ëŠ” 경우, ì‹œìŠ¤í…œì€ ì¸í…íŠ¸ì˜ ê²½ë¡œë¥¼
+하지만, ì•¡í‹°ë¹„í‹°ì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ ì´ë¯¸ ë³„ê°œì˜ ìž‘ì—…ì— ì¡´ìž¬í•˜ëŠ” 경우, ì‹œìŠ¤í…œì€ ì¸í…íŠ¸ì˜ ê²½ë¡œë¥¼
기존 ì¸ìŠ¤í„´ìŠ¤ë¡œ 지정합니다. ì´ë•Œ 새 ì¸ìŠ¤í„´ìŠ¤ë¥¼ 만들기보다 해당 ì¸ìŠ¤í„´ìŠ¤ì˜ {@link
-android.app.Activity#onNewIntent onNewIntent()} 메서드를 호출하는 ë°©ë²•ì„ í†µí•©ë‹ˆë‹¤. 한 번ì—
+android.app.Activity#onNewIntent onNewIntent()} 메서드를 호출하는 ë°©ë²•ì„ í†µí•©ë‹ˆë‹¤. 한 번ì—
액티비티 ì¸ìŠ¤í„´ìŠ¤ 한 개씩만 존재할 수 있습니다.
- <p class="note"><strong>참고:</strong> 액티비티가 새 작업ì—서 시작ë˜ë”ë¼ë„,
+ <p class="note"><strong>참고:</strong> 액티비티가 새 작업ì—서 시작ë˜ë”ë¼ë„,
<em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ 여전히 사용ìžë¥¼ ì´ì „ 액티비티로 ëŒë ¤ë³´ëƒ…니다.</p></dd>
<dt>{@code "singleInstance"}.</dt>
- <dd>{@code "singleTask"}와 같습니다. 다만 ì‹œìŠ¤í…œì´ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 보유하고 있는 작업 안으로
-다른 ì–´ë–¤ ì•¡í‹°ë¹„í‹°ë„ ì‹œìž‘í•˜ì§€ 않는다는 ê²ƒì€ ì˜ˆì™¸ìž…ë‹ˆë‹¤. 액티비티는 언제나 ìžì‹ ì˜ ìž‘ì—…ì˜ ìœ ì¼ë¬´ì´í•œ 구성ì›ìž…니다.
+ <dd>{@code "singleTask"}와 같습니다. 다만 ì‹œìŠ¤í…œì´ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 보유하고 있는 작업 안으로
+다른 ì–´ë–¤ ì•¡í‹°ë¹„í‹°ë„ ì‹œìž‘í•˜ì§€ 않는다는 ê²ƒì€ ì˜ˆì™¸ìž…ë‹ˆë‹¤. 액티비티는 언제나 ìžì‹ ì˜ ìž‘ì—…ì˜ ìœ ì¼ë¬´ì´í•œ 구성ì›ìž…니다.
ì´ê²ƒìœ¼ë¡œ 시작한 액티비티는 ëª¨ë‘ ë³„ê°œì˜ ìž‘ì—…ì—서 열립니다.</dd>
</dl>
-<p>ë˜ ë‹¤ë¥¸ 예로 Android 브ë¼ìš°ì € 애플리케ì´ì…˜ì´ 있습니다. ì´ê²ƒì€ 웹 브ë¼ìš°ì € 액티비티가 í•­ìƒ
-ìžì‹ ë§Œì˜ 작업ì—서 열려야 한다고 선언합니다. ì´ë•Œ <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> ìš”ì†Œì— {@code singleTask} 시작 모드를 지정하는 ë°©ë²•ì„ ì”니다.
-다시 ë§í•´ 애플리케ì´ì…˜ì´ Android 브ë¼ìš°ì €ë¥¼ ì—´ë¼ëŠ” ì¸í…트를 발행하면
-브ë¼ìš°ì €ì˜ 액티비티가 애플리케ì´ì…˜ê³¼ ê°™ì€ ìž‘ì—…ì— ë°°ì¹˜ë˜ì§€ <em>않는다</em>는
-뜻입니다. ê·¸ 대신, 브ë¼ìš°ì €ì— 대한 새 ìž‘ì—…ì´ ì‹œìž‘ë˜ê±°ë‚˜, 브ë¼ìš°ì €ì— ì´ë¯¸
-ë°°ê²½ì—서 실행 ì¤‘ì¸ ìž‘ì—…ì´ ìžˆëŠ” 경우 해당 ìž‘ì—…ì´ ì „ê²½ìœ¼ë¡œ 불려나와 새 ì¸í…트를 처리하게
+<p>ë˜ ë‹¤ë¥¸ 예로 Android 브ë¼ìš°ì € 애플리케ì´ì…˜ì´ 있습니다. ì´ê²ƒì€ 웹 브ë¼ìš°ì € 액티비티가 í•­ìƒ
+ìžì‹ ë§Œì˜ 작업ì—서 열려야 한다고 선언합니다. ì´ë•Œ <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> ìš”ì†Œì— {@code singleTask} 시작 모드를 지정하는 ë°©ë²•ì„ ì”니다.
+다시 ë§í•´ 애플리케ì´ì…˜ì´ Android 브ë¼ìš°ì €ë¥¼ ì—´ë¼ëŠ” ì¸í…트를 발행하면
+브ë¼ìš°ì €ì˜ 액티비티가 애플리케ì´ì…˜ê³¼ ê°™ì€ ìž‘ì—…ì— ë°°ì¹˜ë˜ì§€ <em>않는다</em>는
+뜻입니다. ê·¸ 대신, 브ë¼ìš°ì €ì— 대한 새 ìž‘ì—…ì´ ì‹œìž‘ë˜ê±°ë‚˜, 브ë¼ìš°ì €ì— ì´ë¯¸
+ë°°ê²½ì—서 실행 ì¤‘ì¸ ìž‘ì—…ì´ ìžˆëŠ” 경우 해당 ìž‘ì—…ì´ ì „ê²½ìœ¼ë¡œ 불려나와 새 ì¸í…트를 처리하게
ë©ë‹ˆë‹¤.</p>
-<p>액티비티가 새 작업ì—서 시작ë˜ì—ˆë“  액티비티를 시작한 것과 ê°™ì€ ìž‘ì—…ì—서 시작ë˜ì—ˆë“  관계 ì—†ì´
-<em>뒤로</em> ë²„íŠ¼ì„ ì‚¬ìš©í•˜ë©´ 언제나 사용ìžë¥¼ ì´ì „ 액티비티로 ëŒë ¤ë³´ëƒ…니다. 다만,
-{@code singleTask} 시작 모드를 나타내는 액티비티를 시작한 ë‹¤ìŒ í•´ë‹¹
-ì•¡í‹°ë¹„í‹°ì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ ì´ë¯¸ ë°°ê²½ ìž‘ì—…ì— ì¡´ìž¬í•˜ëŠ” 경우, ê·¸ 작업 ì „ì²´ê°€ ì „ê²½ì— ë¶ˆë ¤ë‚˜ì˜µë‹ˆë‹¤. ì´ ì‹œì ì—서
-ë°± 스íƒì—는 ì´ì œ 앞으로 가져온 작업ì—서 가져온 모든 액티비티가 í¬í•¨ë˜ì–´ 있으며, ì´ëŠ” 스íƒì˜
+<p>액티비티가 새 작업ì—서 시작ë˜ì—ˆë“  액티비티를 시작한 것과 ê°™ì€ ìž‘ì—…ì—서 시작ë˜ì—ˆë“  관계 ì—†ì´
+<em>뒤로</em> ë²„íŠ¼ì„ ì‚¬ìš©í•˜ë©´ 언제나 사용ìžë¥¼ ì´ì „ 액티비티로 ëŒë ¤ë³´ëƒ…니다. 다만,
+{@code singleTask} 시작 모드를 나타내는 액티비티를 시작한 ë‹¤ìŒ í•´ë‹¹
+ì•¡í‹°ë¹„í‹°ì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ ì´ë¯¸ ë°°ê²½ ìž‘ì—…ì— ì¡´ìž¬í•˜ëŠ” 경우, ê·¸ 작업 ì „ì²´ê°€ ì „ê²½ì— ë¶ˆë ¤ë‚˜ì˜µë‹ˆë‹¤. ì´ ì‹œì ì—서
+ë°± 스íƒì—는 ì´ì œ 앞으로 가져온 작업ì—서 가져온 모든 액티비티가 í¬í•¨ë˜ì–´ 있으며, ì´ëŠ” 스íƒì˜
맨 ìœ„ì— ìœ„ì¹˜í•©ë‹ˆë‹¤. 그림 4는 ì´ì™€ ê°™ì€ ìœ í˜•ì˜ ì‹œë‚˜ë¦¬ì˜¤ë¥¼ 나타낸 것입니다.</p>
<img src="{@docRoot}images/fundamentals/diagram_backstack_singletask_multiactivity.png" alt="" />
-<p class="img-caption"><strong>그림 4.</strong> 시작 모드가 "singleTask"ì¸ ì•¡í‹°ë¹„í‹°ê°€
-ë°± 스íƒì— 추가ë˜ëŠ” ë°©ë²•ì„ í‘œí˜„í•œ 것입니다. ì´ ì•¡í‹°ë¹„í‹°ê°€ ì´ë¯¸ ìžì‹ ì˜ ë°± 스íƒì„ 가지고 있는
-ë°°ê²½ ìž‘ì—…ì˜ ì¼ë¶€ì¸ 경우, 해당 ë°± 스íƒë„ ëª¨ë‘ ì „ê²½ìœ¼ë¡œ
+<p class="img-caption"><strong>그림 4.</strong> 시작 모드가 "singleTask"ì¸ ì•¡í‹°ë¹„í‹°ê°€
+ë°± 스íƒì— 추가ë˜ëŠ” ë°©ë²•ì„ í‘œí˜„í•œ 것입니다. ì´ ì•¡í‹°ë¹„í‹°ê°€ ì´ë¯¸ ìžì‹ ì˜ ë°± 스íƒì„ 가지고 있는
+ë°°ê²½ ìž‘ì—…ì˜ ì¼ë¶€ì¸ 경우, 해당 ë°± 스íƒë„ ëª¨ë‘ ì „ê²½ìœ¼ë¡œ
불려나오며, ì´ëŠ” 현재 작업 ìœ„ì— ë°°ì¹˜ë©ë‹ˆë‹¤.</p>
-<p>매니페스트 파ì¼ì—서 시작 모드를 사용하는 ê²ƒì— ëŒ€í•œ ìžì„¸í•œ 정보는
+<p>매니페스트 파ì¼ì—서 시작 모드를 사용하는 ê²ƒì— ëŒ€í•œ ìžì„¸í•œ 정보는
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
-요소 문서를 참조하십시오. 여기ì—서 {@code launchMode} ì†ì„±ê³¼ í—ˆìš©ëœ ê°’ì„ ë” ìžì„¸ížˆ
+요소 문서를 참조하십시오. 여기ì—서 {@code launchMode} ì†ì„±ê³¼ í—ˆìš©ëœ ê°’ì„ ë” ìžì„¸ížˆ
논합니다.</p>
-<p class="note"><strong>참고:</strong> ì•¡í‹°ë¹„í‹°ì— ëŒ€í•˜ì—¬ <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> ì†ì„±ìœ¼ë¡œ 지정한 ë™ìž‘ì„
-재정ì˜í•˜ë ¤ë©´ 액티비티를 시작한 ì¸í…íŠ¸ì— í¬í•¨ëœ 플래그를 사용하면 ë©ë‹ˆë‹¤. ì´ ë‚´ìš©ì€
+<p class="note"><strong>참고:</strong> ì•¡í‹°ë¹„í‹°ì— ëŒ€í•˜ì—¬ <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> ì†ì„±ìœ¼ë¡œ 지정한 ë™ìž‘ì„
+재정ì˜í•˜ë ¤ë©´ 액티비티를 시작한 ì¸í…íŠ¸ì— í¬í•¨ëœ 플래그를 사용하면 ë©ë‹ˆë‹¤. ì´ ë‚´ìš©ì€
ë‹¤ìŒ ì„¹ì…˜ì—서 논합니다.</p>
<h4 id="#IntentFlagsForTasks">ì¸í…트 플래그 사용하기</h4>
-<p>액티비티를 시작할 때면, 액티비티가 ìžì‹ ì˜ 작업과 ì—°ê´€ë˜ëŠ” 기본 ë°©ì‹ì„ 수정할 수 있습니다.
+<p>액티비티를 시작할 때면, 액티비티가 ìžì‹ ì˜ 작업과 ì—°ê´€ë˜ëŠ” 기본 ë°©ì‹ì„ 수정할 수 있습니다.
{@link
-android.app.Activity#startActivity startActivity()}ì— ì „ë‹¬í•œ ì¸í…트 ì•ˆì— ìžˆëŠ” 플래그를 í¬í•¨ì‹œí‚¤ë©´ ë©ë‹ˆë‹¤. 기본 ë™ìž‘ì„ ìˆ˜ì •í•˜ëŠ” ë° ì‚¬ìš©í•  수 있는
+android.app.Activity#startActivity startActivity()}ì— ì „ë‹¬í•œ ì¸í…트 ì•ˆì— ìžˆëŠ” 플래그를 í¬í•¨ì‹œí‚¤ë©´ ë©ë‹ˆë‹¤. 기본 ë™ìž‘ì„ ìˆ˜ì •í•˜ëŠ” ë° ì‚¬ìš©í•  수 있는
플래그는 다ìŒê³¼ 같습니다.</p>
<p>
<dt>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</dt>
- <dd>액티비티를 새 작업ì—서 시작합니다. 지금 시작하고 있는 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•´ ì´ë¯¸ 실행 ì¤‘ì¸ ìž‘ì—…ì´ ìžˆìœ¼ë©´,
-해당 ìž‘ì—…ì˜ ë§ˆì§€ë§‰ ìƒíƒœë¥¼ ë³µì›í•˜ì—¬ 전경으로 불려나오고 액티비티는 새 ì¸í…트를
+ <dd>액티비티를 새 작업ì—서 시작합니다. 지금 시작하고 있는 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•´ ì´ë¯¸ 실행 ì¤‘ì¸ ìž‘ì—…ì´ ìžˆìœ¼ë©´,
+해당 ìž‘ì—…ì˜ ë§ˆì§€ë§‰ ìƒíƒœë¥¼ ë³µì›í•˜ì—¬ 전경으로 불려나오고 액티비티는 새 ì¸í…트를
{@link android.app.Activity#onNewIntent onNewIntent()}ì—서 수신합니다.
- <p>ì´ë ‡ê²Œ 하면 {@code "singleTask"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> ê°’ì—서와 ê°™ì€ ë™ìž‘ì„ ë°œìƒì‹œí‚¤ë©°,
+ <p>ì´ë ‡ê²Œ 하면 {@code "singleTask"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> ê°’ì—서와 ê°™ì€ ë™ìž‘ì„ ë°œìƒì‹œí‚¤ë©°,
ì´ëŠ” ì´ì „ 섹션ì—서 논한 것과 같습니다.</p></dd>
<dt>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</dt>
- <dd>시작ë˜ê³  있는 액티비티가 현재 ì•¡í‹°ë¹„í‹°ì¸ ê²½ìš°(ë°± ìŠ¤íƒ ë§¨ ìœ„ì— ìžˆëŠ”), 해당 ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í•˜ëŠ” 대신 기존
-ì¸ìŠ¤í„´ìŠ¤ê°€ {@link android.app.Activity#onNewIntent onNewIntent()}ì—
+ <dd>시작ë˜ê³  있는 액티비티가 현재 ì•¡í‹°ë¹„í‹°ì¸ ê²½ìš°(ë°± ìŠ¤íƒ ë§¨ ìœ„ì— ìžˆëŠ”), 해당 ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í•˜ëŠ” 대신 기존
+ì¸ìŠ¤í„´ìŠ¤ê°€ {@link android.app.Activity#onNewIntent onNewIntent()}ì—
대한 í˜¸ì¶œì„ ë°›ìŠµë‹ˆë‹¤.
- <p>ì´ë ‡ê²Œ 하면 {@code "singleTop"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> ê°’ì—서와 ê°™ì€ ë™ìž‘ì„ ë°œìƒì‹œí‚¤ë©°,
+ <p>ì´ë ‡ê²Œ 하면 {@code "singleTop"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> ê°’ì—서와 ê°™ì€ ë™ìž‘ì„ ë°œìƒì‹œí‚¤ë©°,
ì´ëŠ” ì´ì „ 섹션ì—서 논한 것과 같습니다.</p></dd>
<dt>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</dt>
- <dd>시작ë˜ê³  있는 액티비티가 ì´ë¯¸ 현재 작업ì—서 실행 ì¤‘ì¸ ê²½ìš°, 해당 액티비티ì˜
-새 ì¸ìŠ¤í„´ìŠ¤ë¥¼ 시작하는 대신 ê·¸ ìœ„ì— ìžˆëŠ” 모든 다른 액티비티가
-소멸ë˜ê³  ì´ ì¸í…트는 해당 액티비티(ì´ì œ 맨 위로 올ë¼ì˜´)ì˜ ìž¬ê°œëœ ì¸ìŠ¤í„´ìŠ¤ë¡œ,
+ <dd>시작ë˜ê³  있는 액티비티가 ì´ë¯¸ 현재 작업ì—서 실행 ì¤‘ì¸ ê²½ìš°, 해당 액티비티ì˜
+새 ì¸ìŠ¤í„´ìŠ¤ë¥¼ 시작하는 대신 ê·¸ ìœ„ì— ìžˆëŠ” 모든 다른 액티비티가
+소멸ë˜ê³  ì´ ì¸í…트는 해당 액티비티(ì´ì œ 맨 위로 올ë¼ì˜´)ì˜ ìž¬ê°œëœ ì¸ìŠ¤í„´ìŠ¤ë¡œ,
{@link android.app.Activity#onNewIntent onNewIntent()}를 통해 전달ë©ë‹ˆë‹¤.
<p>ì´ ë™ìž‘ì„ ë°œìƒì‹œí‚¤ëŠ” <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
ì†ì„±ì— 대한 ê°’ì€ ì—†ìŠµë‹ˆë‹¤.</p>
- <p>{@code FLAG_ACTIVITY_CLEAR_TOP}는
-{@code FLAG_ACTIVITY_NEW_TASK}와 함께 ì“°ì´ëŠ” 경우가 가장 보편ì ìž…니다.
-ì´ë“¤ 플래그를 함께 사용하면 다른 ìž‘ì—…ì— ìžˆëŠ” 기존 ì•¡í‹°ë¹„í‹°ì˜ ìœ„ì¹˜ë¥¼
+ <p>{@code FLAG_ACTIVITY_CLEAR_TOP}는
+{@code FLAG_ACTIVITY_NEW_TASK}와 함께 ì“°ì´ëŠ” 경우가 가장 보편ì ìž…니다.
+ì´ë“¤ 플래그를 함께 사용하면 다른 ìž‘ì—…ì— ìžˆëŠ” 기존 ì•¡í‹°ë¹„í‹°ì˜ ìœ„ì¹˜ë¥¼
찾아 ì´ë¥¼ ì¸í…íŠ¸ì— ì‘답할 수 있는 ìœ„ì¹˜ì— ë†“ì„ í•œ 가지 ë°©íŽ¸ì´ ë©ë‹ˆë‹¤. </p>
- <p class="note"><strong>참고:</strong> ì§€ì •ëœ ì•¡í‹°ë¹„í‹°ì˜ ì‹œìž‘ 모드가
-{@code "standard"}ì¸ ê²½ìš°,
-ì´ê²ƒ ë˜í•œ 스íƒì—서 제거ë˜ê³  ê·¸ ìžë¦¬ì— 새 ì¸ìŠ¤í„´ìŠ¤ê°€ 대신 ìƒì„±ë˜ì–´ 수신ë˜ëŠ” ì¸í…트를
-처리하게 ë©ë‹ˆë‹¤. ì´ëŠ” 시작 모드가
+ <p class="note"><strong>참고:</strong> ì§€ì •ëœ ì•¡í‹°ë¹„í‹°ì˜ ì‹œìž‘ 모드가
+{@code "standard"}ì¸ ê²½ìš°,
+ì´ê²ƒ ë˜í•œ 스íƒì—서 제거ë˜ê³  ê·¸ ìžë¦¬ì— 새 ì¸ìŠ¤í„´ìŠ¤ê°€ 대신 ìƒì„±ë˜ì–´ 수신ë˜ëŠ” ì¸í…트를
+처리하게 ë©ë‹ˆë‹¤. ì´ëŠ” 시작 모드가
{@code "standard"}ì¸ ê²½ìš°, 새 ì¸í…íŠ¸ì— ëŒ€í•´ì„œëŠ” í•­ìƒ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ê°€ ìƒì„±ë˜ê¸° 때문입니다. </p>
</dd>
</dl>
@@ -420,65 +420,65 @@ android.app.Activity#startActivity startActivity()}ì— ì „ë‹¬í•œ ì¸í…트 안ì—
<h3 id="Affinities">유사성 처리하기</h3>
-<p><em>유사성</em>ì´ëž€ 액티비티가 ì–´ëŠ ìž‘ì—…ì— ì†Œì†ë˜ê¸°ë¥¼ 선호하는지를 나타내는 것입니다. 기본ì ìœ¼ë¡œ,
-ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì—서 나온 액티비티는 서로 ìœ ì‚¬ì„±ì„ ì§€ë‹ˆê³  있습니다. ë”°ë¼ì„œ, 기본ì ìœ¼ë¡œ
-ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ ì•ˆì— ìžˆëŠ” 모든 액티비티는 ê°™ì€ ìž‘ì—… ì•ˆì— ìžˆëŠ” ê²ƒì„ ì„ í˜¸í•©ë‹ˆë‹¤. 하지만 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ 기본 ìœ ì‚¬ì„±ì€ ê°œë°œìžê°€
-수정할 수 있습니다. ê°ê¸° 다른 애플리케ì´ì…˜ì—서 ì •ì˜ëœ
-액티비티가 í•˜ë‚˜ì˜ ìœ ì‚¬ì„±ì„ ê³µìœ í•  ìˆ˜ë„ ìžˆê³ , ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì—서 ì •ì˜ëœ 여러 액티비티ì—
+<p><em>유사성</em>ì´ëž€ 액티비티가 ì–´ëŠ ìž‘ì—…ì— ì†Œì†ë˜ê¸°ë¥¼ 선호하는지를 나타내는 것입니다. 기본ì ìœ¼ë¡œ,
+ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì—서 나온 액티비티는 서로 ìœ ì‚¬ì„±ì„ ì§€ë‹ˆê³  있습니다. ë”°ë¼ì„œ, 기본ì ìœ¼ë¡œ
+ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ ì•ˆì— ìžˆëŠ” 모든 액티비티는 ê°™ì€ ìž‘ì—… ì•ˆì— ìžˆëŠ” ê²ƒì„ ì„ í˜¸í•©ë‹ˆë‹¤. 하지만 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ 기본 ìœ ì‚¬ì„±ì€ ê°œë°œìžê°€
+수정할 수 있습니다. ê°ê¸° 다른 애플리케ì´ì…˜ì—서 ì •ì˜ëœ
+액티비티가 í•˜ë‚˜ì˜ ìœ ì‚¬ì„±ì„ ê³µìœ í•  ìˆ˜ë„ ìžˆê³ , ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì—서 ì •ì˜ëœ 여러 액티비티ì—
서로 다른 작업 ìœ ì‚¬ì„±ì„ í• ë‹¹í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
<p>ì–´ëŠ ì•¡í‹°ë¹„í‹°ë¼ë„ <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
-ìš”ì†Œì˜ <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a> ì†ì„±ì„
+ìš”ì†Œì˜ <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a> ì†ì„±ì„
사용하여 ìœ ì‚¬ì„±ì„ ìˆ˜ì •í•  수 있습니다.</p>
<p><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
-ì†ì„±ì€ 문ìžì—´ ê°’ì„ ì·¨í•©ë‹ˆë‹¤. ì´ëŠ”
+ì†ì„±ì€ 문ìžì—´ ê°’ì„ ì·¨í•©ë‹ˆë‹¤. ì´ëŠ”
<a href="{@docRoot}guide/topics/manifest/manifest-element.html">
{@code &lt;manifest&gt;}
-</a> 요소ì—서 선언한 기본 패키지 ì´ë¦„ê³¼ 달리 고유해야 합니다. 왜ëƒí•˜ë©´ ì‹œìŠ¤í…œì´ ì´ ì´ë¦„ì„ ì‚¬ìš©í•˜ì—¬ 애플리케ì´ì…˜ì˜ 기본 작업 유사성ì„
+</a> 요소ì—서 선언한 기본 패키지 ì´ë¦„ê³¼ 달리 고유해야 합니다. 왜ëƒí•˜ë©´ ì‹œìŠ¤í…œì´ ì´ ì´ë¦„ì„ ì‚¬ìš©í•˜ì—¬ 애플리케ì´ì…˜ì˜ 기본 작업 유사성ì„
ì‹ë³„하기 때문입니다.</p>
<p>ìœ ì‚¬ì„±ì´ ì—­í• ì„ ê°–ëŠ” ê²ƒì€ ë‹¤ìŒê³¼ ê°™ì€ ë‘ ê°€ì§€ ìƒí™©ì—서입니다.</p>
<ul>
- <li>액티비티를 시작한 ì¸í…트ì—
+ <li>액티비티를 시작한 ì¸í…트ì—
{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
플래그가 들어 있는 경우.
-<p>새로운 액티비티는 기본ì ìœ¼ë¡œ
-{@link android.app.Activity#startActivity startActivity()}를 호출한 ì•¡í‹°ë¹„í‹°ì˜ ìž‘ì—… 안으로 들어가며 시작ë©ë‹ˆë‹¤. ì´ê²ƒì€ 발신ìžì™€ ê°™ì€
-ë°± ìŠ¤íƒ ìœ„ë¡œ 밀어내집니다. 하지만
-{@link android.app.Activity#startActivity startActivity()}ì—
+<p>새로운 액티비티는 기본ì ìœ¼ë¡œ
+{@link android.app.Activity#startActivity startActivity()}를 호출한 ì•¡í‹°ë¹„í‹°ì˜ ìž‘ì—… 안으로 들어가며 시작ë©ë‹ˆë‹¤. ì´ê²ƒì€ 발신ìžì™€ ê°™ì€
+ë°± ìŠ¤íƒ ìœ„ë¡œ 밀어내집니다. 하지만
+{@link android.app.Activity#startActivity startActivity()}ì—
ì „ë‹¬ëœ ì¸í…íŠ¸ì— {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
플래그가 들어있는 경우, ì‹œìŠ¤í…œì€ ìƒˆ 액티비티를 ë‹´ì„ ë‹¤ë¥¸ ìž‘ì—…ì„ ì°¾ìŠµë‹ˆë‹¤. ì´ëŠ” 새 ìž‘ì—…ì¸ ê²½ìš°ê°€ 많습니다.
-그렇지만 ê¼­ 그래야 하는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. 새 액티비티와 ê°™ì€ ìœ ì‚¬ì„±ì„ ê°€ì§„ 기존 ìž‘ì—…ì´ ì´ë¯¸ 존재하는 경우,
+그렇지만 ê¼­ 그래야 하는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. 새 액티비티와 ê°™ì€ ìœ ì‚¬ì„±ì„ ê°€ì§„ 기존 ìž‘ì—…ì´ ì´ë¯¸ 존재하는 경우,
해당 액티비티는 ê·¸ 작업 안으로 들어가며 시작ë©ë‹ˆë‹¤. 그렇지 않으면, 새 ìž‘ì—…ì„ ì‹œìž‘í•©ë‹ˆë‹¤.</p>
-<p>ì´ í”Œëž˜ê·¸ ë•Œë¬¸ì— ì•¡í‹°ë¹„í‹°ê°€ 새 ìž‘ì—…ì„ ì‹œìž‘í•˜ê²Œ ë˜ê³  사용ìžê°€ <em>홈</em> ë²„íŠ¼ì„ ëˆŒëŸ¬ ì´ ì•¡í‹°ë¹„í‹°ë¥¼
-떠나고ìž
-하는 경우, 사용ìžê°€ 작업으로 ë„로 ì´ë™í•  ë°©ë²•ì´ ìžˆì–´ì•¼ 합니다. 엔티티 중ì—는(예를 들어
-알림 관리ìž) 액티비티를 í•­ìƒ ì™¸ë¶€ 작업으로만 시작하고 ìžì‹ ì˜ ì¼ë¶€ë¡œì„œëŠ” 절대 시작하지 않는 ê²ƒì´ ìžˆìŠµë‹ˆë‹¤.
-ë”°ë¼ì„œ ì´ë“¤ì€ {@code FLAG_ACTIVITY_NEW_TASK}를
-{@link android.app.Activity#startActivity startActivity()}ì— ì „ë‹¬í•˜ëŠ” ì¸í…íŠ¸ì— í¬í•¨ì‹œí‚µë‹ˆë‹¤.
-ì´ í”Œëž˜ê·¸ë¥¼ 사용할 수 있는 외부 엔티티가
-호출할 수 있는 액티비티를 가지고 있는 경우, 사용ìžê°€ ì‹œìž‘ëœ ìž‘ì—…ì— ëŒì•„ê°ˆ 수 있는
-ë°©ë²•ì„ ë”°ë¡œ 가지고 있어야 합니다. 예를 들어 시작 ê´€ë¦¬ìž ì•„ì´ì½˜ì„ ì´ìš©í•œë‹¤ë“ ì§€ 하는 방법입니다(ìž‘ì—…ì˜ ë£¨íŠ¸ 액티비티ì—
+<p>ì´ í”Œëž˜ê·¸ ë•Œë¬¸ì— ì•¡í‹°ë¹„í‹°ê°€ 새 ìž‘ì—…ì„ ì‹œìž‘í•˜ê²Œ ë˜ê³  사용ìžê°€ <em>홈</em> ë²„íŠ¼ì„ ëˆŒëŸ¬ ì´ ì•¡í‹°ë¹„í‹°ë¥¼
+떠나고ìž
+하는 경우, 사용ìžê°€ 작업으로 ë„로 ì´ë™í•  ë°©ë²•ì´ ìžˆì–´ì•¼ 합니다. 엔티티 중ì—는(예를 들어
+알림 관리ìž) 액티비티를 í•­ìƒ ì™¸ë¶€ 작업으로만 시작하고 ìžì‹ ì˜ ì¼ë¶€ë¡œì„œëŠ” 절대 시작하지 않는 ê²ƒì´ ìžˆìŠµë‹ˆë‹¤.
+ë”°ë¼ì„œ ì´ë“¤ì€ {@code FLAG_ACTIVITY_NEW_TASK}를
+{@link android.app.Activity#startActivity startActivity()}ì— ì „ë‹¬í•˜ëŠ” ì¸í…íŠ¸ì— í¬í•¨ì‹œí‚µë‹ˆë‹¤.
+ì´ í”Œëž˜ê·¸ë¥¼ 사용할 수 있는 외부 엔티티가
+호출할 수 있는 액티비티를 가지고 있는 경우, 사용ìžê°€ ì‹œìž‘ëœ ìž‘ì—…ì— ëŒì•„ê°ˆ 수 있는
+ë°©ë²•ì„ ë”°ë¡œ 가지고 있어야 합니다. 예를 들어 시작 ê´€ë¦¬ìž ì•„ì´ì½˜ì„ ì´ìš©í•œë‹¤ë“ ì§€ 하는 방법입니다(ìž‘ì—…ì˜ ë£¨íŠ¸ 액티비티ì—
{@link android.content.Intent#CATEGORY_LAUNCHER} ì¸í…트 í•„í„°ê°€ 있습니다. ì•„ëž˜ì˜ <a href="#Starting">작업 시작하기</a> ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤).</p>
</li>
<li>ì•¡í‹°ë¹„í‹°ì˜ <a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
{@code allowTaskReparenting}</a> ì†ì„±ì´ {@code "true"}로 ì„¤ì •ëœ ê²½ìš°.
- <p>ì´ ê²½ìš°, 액티비티는 ìžì‹ ì´ 시작한 작업ì—서 벗어나 ìœ ì‚¬ì„±ì„ ê°€ì§„ 다른 ìž‘ì—…ì´ ì „ê²½ìœ¼ë¡œ
+ <p>ì´ ê²½ìš°, 액티비티는 ìžì‹ ì´ 시작한 작업ì—서 벗어나 ìœ ì‚¬ì„±ì„ ê°€ì§„ 다른 ìž‘ì—…ì´ ì „ê²½ìœ¼ë¡œ
나오면 ê·¸ 작업으로 ì´ë™í•  수 있습니다.</p>
- <p>예를 들어 ì„ íƒí•œ 몇몇 ë„시ì—서 ê¸°ìƒ ìƒíƒœë¥¼ 예보하는 ì–´ëŠ ì•¡í‹°ë¹„í‹°ê°€
-여행 애플리케ì´ì…˜ì˜ ì¼ë¶€ë¡œ ì •ì˜ë˜ì–´ 있다고 가정합니다. ì´ê²ƒì€ ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì— 있는
-다른 여러 액티비티와 ê°™ì€ ìœ ì‚¬ì„±ì„ ê°€ì§€ë©°(기본 애플리케ì´ì…˜ 유사성) ì´ ì†ì„±ìœ¼ë¡œ ìƒìœ„ ìž¬ì§€ì •ì„ í—ˆìš©í•˜ê¸°ë„ í•©ë‹ˆë‹¤.
-액티비티 중 하나가 ì¼ê¸° 예보 액티비티를 시작하면, ì´ëŠ” 처ìŒì—는 액티비티와 ê°™ì€ ìž‘ì—…ì—
-ì†í•©ë‹ˆë‹¤. 하지만 여행 애플리케ì´ì…˜ì˜ ìž‘ì—…ì´ ì „ê²½ìœ¼ë¡œ 불려나오면
+ <p>예를 들어 ì„ íƒí•œ 몇몇 ë„시ì—서 ê¸°ìƒ ìƒíƒœë¥¼ 예보하는 ì–´ëŠ ì•¡í‹°ë¹„í‹°ê°€
+여행 애플리케ì´ì…˜ì˜ ì¼ë¶€ë¡œ ì •ì˜ë˜ì–´ 있다고 가정합니다. ì´ê²ƒì€ ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì— 있는
+다른 여러 액티비티와 ê°™ì€ ìœ ì‚¬ì„±ì„ ê°€ì§€ë©°(기본 애플리케ì´ì…˜ 유사성) ì´ ì†ì„±ìœ¼ë¡œ ìƒìœ„ ìž¬ì§€ì •ì„ í—ˆìš©í•˜ê¸°ë„ í•©ë‹ˆë‹¤.
+액티비티 중 하나가 ì¼ê¸° 예보 액티비티를 시작하면, ì´ëŠ” 처ìŒì—는 액티비티와 ê°™ì€ ìž‘ì—…ì—
+ì†í•©ë‹ˆë‹¤. 하지만 여행 애플리케ì´ì…˜ì˜ ìž‘ì—…ì´ ì „ê²½ìœ¼ë¡œ 불려나오면
ì¼ê¸° 예보 액티비티는 ê·¸ ìž‘ì—…ì— ë‹¤ì‹œ 할당ë˜ë©° ê·¸ ì•ˆì— í‘œì‹œë©ë‹ˆë‹¤.</p>
</li>
</ul>
-<p class="note"><strong>íŒ:</strong> {@code .apk} 파ì¼ì— ì‚¬ìš©ìž ìª½ì—서 ë³´ê¸°ì— í•˜ë‚˜ ì´ìƒì˜ "애플리케ì´ì…˜"ì´
+<p class="note"><strong>íŒ:</strong> {@code .apk} 파ì¼ì— ì‚¬ìš©ìž ìª½ì—서 ë³´ê¸°ì— í•˜ë‚˜ ì´ìƒì˜ "애플리케ì´ì…˜"ì´
들어있는 경우, <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
ì†ì„±ì„ 사용하여 ê° "애플리케ì´ì…˜"ê³¼ ì—°ê´€ëœ ì•¡í‹°ë¹„í‹°ì— ì„œë¡œ 다른 ìœ ì‚¬ì„±ì„ í• ë‹¹í•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.</p>
@@ -486,9 +486,9 @@ android.app.Activity#startActivity startActivity()}ì— ì „ë‹¬í•œ ì¸í…트 안ì—
<h3 id="Clearing">ë°± ìŠ¤íƒ ì§€ìš°ê¸°</h3>
-<p>사용ìžê°€ ìž‘ì—…ì„ ì˜¤ëžœ 시간 ë™ì•ˆ 떠나 있으면, ì‹œìŠ¤í…œì´ ë£¨íŠ¸ 액티비티만 빼고 모든 액티비티를
-해당 작업ì—서 ì§€ì›ë‹ˆë‹¤. 사용ìžê°€ 다시 작업으로 ëŒì•„오면, 루트 액티비티만 ë³µì›ë©ë‹ˆë‹¤.
-ì‹œìŠ¤í…œì´ ì´ëŸ° ì‹ìœ¼ë¡œ ë™ìž‘하는 ê²ƒì€ ì˜¤ëžœ ì‹œê°„ì´ ì§€ë‚œ 다ìŒì—는 사용ìžê°€ ì „ì— í•˜ë˜ ì¼ì„ 중단하고
+<p>사용ìžê°€ ìž‘ì—…ì„ ì˜¤ëžœ 시간 ë™ì•ˆ 떠나 있으면, ì‹œìŠ¤í…œì´ ë£¨íŠ¸ 액티비티만 빼고 모든 액티비티를
+해당 작업ì—서 ì§€ì›ë‹ˆë‹¤. 사용ìžê°€ 다시 작업으로 ëŒì•„오면, 루트 액티비티만 ë³µì›ë©ë‹ˆë‹¤.
+ì‹œìŠ¤í…œì´ ì´ëŸ° ì‹ìœ¼ë¡œ ë™ìž‘하는 ê²ƒì€ ì˜¤ëžœ ì‹œê°„ì´ ì§€ë‚œ 다ìŒì—는 사용ìžê°€ ì „ì— í•˜ë˜ ì¼ì„ 중단하고
새로운 ì¼ì„ 시작하기 위해 ìž‘ì—…ì— ëŒì•„올 ê°€ëŠ¥ì„±ì´ í¬ê¸° 때문입니다. </p>
<p>ì´ ë™ìž‘ì„ ìˆ˜ì •í•˜ëŠ” ë° ì‚¬ìš©í•  수 있는 액티비티 ì†ì„±ì´ 몇 가지 있습니다. </p>
@@ -497,27 +497,27 @@ android.app.Activity#startActivity startActivity()}ì— ì „ë‹¬í•œ ì¸í…트 안ì—
<dt><code><a
href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code>
</dt>
-<dd>ì´ ì†ì„±ì´ ìž‘ì—…ì˜ ë£¨íŠ¸ 액티비티 안ì—서 {@code "true"}로 설정ë˜ì–´ 있는 경우,
-방금 설명한 기본 ë™ìž‘ì´ ì¼ì–´ë‚˜ì§€ 않습니다.
+<dd>ì´ ì†ì„±ì´ ìž‘ì—…ì˜ ë£¨íŠ¸ 액티비티 안ì—서 {@code "true"}로 설정ë˜ì–´ 있는 경우,
+방금 설명한 기본 ë™ìž‘ì´ ì¼ì–´ë‚˜ì§€ 않습니다.
ìž‘ì—…ì€ ì˜¤ëžœ ì‹œê°„ì´ ì§€ë‚œ ë’¤ì—ë„ ìžì‹ ì˜ 스íƒì— 있는 모든 액티비티를 유지합니다.</dd>
<dt><code><a
href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
-<dd>ì´ ì†ì„±ì´ ìž‘ì—…ì˜ ë£¨íŠ¸ 액티비티 안ì—서 {@code "true"}로 설정ë˜ì–´ 있는 경우,
-사용ìžê°€ ìž‘ì—…ì„ ë– ë‚¬ë‹¤ê°€ 다시 ëŒì•„올 때마다 스íƒì„ 루트 액티비티까지
-ì§€ì›ë‹ˆë‹¤. 바꿔 ë§í•˜ë©´, ì´ê²ƒì€
+<dd>ì´ ì†ì„±ì´ ìž‘ì—…ì˜ ë£¨íŠ¸ 액티비티 안ì—서 {@code "true"}로 설정ë˜ì–´ 있는 경우,
+사용ìžê°€ ìž‘ì—…ì„ ë– ë‚¬ë‹¤ê°€ 다시 ëŒì•„올 때마다 스íƒì„ 루트 액티비티까지
+ì§€ì›ë‹ˆë‹¤. 바꿔 ë§í•˜ë©´, ì´ê²ƒì€
<a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
-{@code alwaysRetainTaskState}</a>와 정반대입니다. 사용ìžëŠ” í•­ìƒ ìž‘ì—…ì˜ ì´ˆê¸° ìƒíƒœë¡œ ëŒì•„오게 ë˜ë©°,
+{@code alwaysRetainTaskState}</a>와 정반대입니다. 사용ìžëŠ” í•­ìƒ ìž‘ì—…ì˜ ì´ˆê¸° ìƒíƒœë¡œ ëŒì•„오게 ë˜ë©°,
ì´ëŠ” 아주 ìž ê¹ ë™ì•ˆë§Œ ìž‘ì—…ì„ ë– ë‚œ 경우ì—ë„ ë§ˆì°¬ê°€ì§€ìž…ë‹ˆë‹¤.</dd>
<dt><code><a
href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTaskLaunch</a></code>
</dt>
-<dd>ì´ ì†ì„±ì€ <a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">{@code clearTaskOnLaunch}</a>와 같지만,
-작업 ì „ì²´ê°€ 아니ë¼
-í•˜ë‚˜ì˜ ì•¡í‹°ë¹„í‹°ì—서 ìž‘ë™í•©ë‹ˆë‹¤. ì´ê²ƒì€ 루트 액티비티를 í¬í•¨í•œ 모든 액티비티가 없어지게
-í•˜ê¸°ë„ í•©ë‹ˆë‹¤. ì´ê²ƒì„ {@code "true"}로 설정하면,
-액티비티는 현재 ì„¸ì…˜ì— ëŒ€í•´ì„œë§Œ ìž‘ì—…ì˜ ì¼ë¶€ë¡œ 유지ë©ë‹ˆë‹¤. 사용ìžê°€ ìž‘ì—…ì„ ë– ë‚¬ë‹¤ê°€
+<dd>ì´ ì†ì„±ì€ <a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">{@code clearTaskOnLaunch}</a>와 같지만,
+작업 ì „ì²´ê°€ 아니ë¼
+í•˜ë‚˜ì˜ ì•¡í‹°ë¹„í‹°ì—서 ìž‘ë™í•©ë‹ˆë‹¤. ì´ê²ƒì€ 루트 액티비티를 í¬í•¨í•œ 모든 액티비티가 없어지게
+í•˜ê¸°ë„ í•©ë‹ˆë‹¤. ì´ê²ƒì„ {@code "true"}로 설정하면,
+액티비티는 현재 ì„¸ì…˜ì— ëŒ€í•´ì„œë§Œ ìž‘ì—…ì˜ ì¼ë¶€ë¡œ 유지ë©ë‹ˆë‹¤. 사용ìžê°€ ìž‘ì—…ì„ ë– ë‚¬ë‹¤ê°€
다시 ëŒì•„오면 ì´ ìž‘ì—…ì€ ë” ì´ìƒ 존재하지 않습니다.</dd>
</dl>
@@ -526,9 +526,9 @@ href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTask
<h3 id="Starting">작업 시작하기</h3>
-<p>액티비티를 ìž‘ì—…ì˜ ì§„ìž… ì§€ì ìœ¼ë¡œ 설정하려면 ì—¬ê¸°ì— ìž‘ì—…ì—서 지정한 대로
-{@code "android.intent.action.MAIN"}ì´ ìžˆëŠ” ì¸í…트 필터를 부여하고
-{@code "android.intent.category.LAUNCHER"}를
+<p>액티비티를 ìž‘ì—…ì˜ ì§„ìž… ì§€ì ìœ¼ë¡œ 설정하려면 ì—¬ê¸°ì— ìž‘ì—…ì—서 지정한 대로
+{@code "android.intent.action.MAIN"}ì´ ìžˆëŠ” ì¸í…트 필터를 부여하고
+{@code "android.intent.category.LAUNCHER"}를
ì§€ì •ëœ ì¹´í…Œê³ ë¦¬ë¡œ 설정하면 ë©ë‹ˆë‹¤. 예:</p>
<pre>
@@ -541,29 +541,29 @@ href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTask
&lt;/activity&gt;
</pre>
-<p>ì´ëŸ° ì¢…ë¥˜ì˜ ì¸í…트 필터를 사용하면 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”ì´
-애플리케ì´ì…˜ 시작 관리ìžì— 표시ë˜ì–´ 사용ìžì—게 액티비티를 시작할 ë°©ë²•ì„ ë¶€ì—¬í•˜ë©°,
+<p>ì´ëŸ° ì¢…ë¥˜ì˜ ì¸í…트 필터를 사용하면 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”ì´
+애플리케ì´ì…˜ 시작 관리ìžì— 표시ë˜ì–´ 사용ìžì—게 액티비티를 시작할 ë°©ë²•ì„ ë¶€ì—¬í•˜ë©°,
액티비티를 시작하고 나면 ì´ê²ƒì´ ìƒì„±í•œ ìž‘ì—…ì— ì–¸ì œë“  ëŒì•„올 수 있게 ë©ë‹ˆë‹¤.
</p>
-<p>ì´ ë‘ ë²ˆì§¸ ëŠ¥ë ¥ì´ ì¤‘ìš”í•©ë‹ˆë‹¤. 사용ìžëŠ” ìž‘ì—…ì„ ë– ë‚¬ë‹¤ê°€ ì´ ì•¡í‹°ë¹„í‹° 시작 관리ìžë¥¼ 사용하여 ë‚˜ì¤‘ì— ìž‘ì—…ì—
+<p>ì´ ë‘ ë²ˆì§¸ ëŠ¥ë ¥ì´ ì¤‘ìš”í•©ë‹ˆë‹¤. 사용ìžëŠ” ìž‘ì—…ì„ ë– ë‚¬ë‹¤ê°€ ì´ ì•¡í‹°ë¹„í‹° 시작 관리ìžë¥¼ 사용하여 ë‚˜ì¤‘ì— ìž‘ì—…ì—
ëŒì•„올 수 있어야 합니다. ì´ëŸ¬í•œ ì´ìœ ë¡œ, 액티비티가 í•­ìƒ ìž‘ì—…ì„ ì‹œìž‘í•˜ëŠ” 것으로 표시하는 <a href="#LaunchModes">시작
-모드</a> ë‘ ê°€ì§€, 즉 {@code "singleTask"}와
-{@code "singleInstance"}는 액티비티ì—
+모드</a> ë‘ ê°€ì§€, 즉 {@code "singleTask"}와
+{@code "singleInstance"}는 액티비티ì—
{@link android.content.Intent#ACTION_MAIN}
- ë° {@link android.content.Intent#CATEGORY_LAUNCHER} í•„í„°ê°€ ìžˆì„ ë•Œì—ë§Œ 사용해야 합니다. 예를 들어 í•„í„°ê°€ 누ë½ë˜ë©´ 다ìŒê³¼ ê°™ì€ ì¼ì´
-ë°œìƒí•©ë‹ˆë‹¤. ì–´ëŠ ì¸í…트가 {@code "singleTask"} 액티비티를 시작하여 새 ìž‘ì—…ì„ ì‹œìž‘í•˜ê³ ,
+ ë° {@link android.content.Intent#CATEGORY_LAUNCHER} í•„í„°ê°€ ìžˆì„ ë•Œì—ë§Œ 사용해야 합니다. 예를 들어 í•„í„°ê°€ 누ë½ë˜ë©´ 다ìŒê³¼ ê°™ì€ ì¼ì´
+ë°œìƒí•©ë‹ˆë‹¤. ì–´ëŠ ì¸í…트가 {@code "singleTask"} 액티비티를 시작하여 새 ìž‘ì—…ì„ ì‹œìž‘í•˜ê³ ,
사용ìžê°€ ì´ ìž‘ì—…ì—서 ì¼í•˜ë©° ì–´ëŠ ì •ë„ ì‹œê°„ì„ ë³´ëƒ…ë‹ˆë‹¤. 그런 ë‹¤ìŒ ì‚¬ìš©ìžê°€ <em>홈</em>
- ë²„íŠ¼ì„ ëˆ„ë¦…ë‹ˆë‹¤. ì´ì œ ì´ ìž‘ì—…ì€ ë°°ê²½ìœ¼ë¡œ 전송ë˜ì—ˆìœ¼ë©° ëˆˆì— ë³´ì´ì§€ 않습니다. ì´ì œ 사용ìžê°€ 작업으로 ë˜ëŒì•„ê°ˆ
+ ë²„íŠ¼ì„ ëˆ„ë¦…ë‹ˆë‹¤. ì´ì œ ì´ ìž‘ì—…ì€ ë°°ê²½ìœ¼ë¡œ 전송ë˜ì—ˆìœ¼ë©° ëˆˆì— ë³´ì´ì§€ 않습니다. ì´ì œ 사용ìžê°€ 작업으로 ë˜ëŒì•„ê°ˆ
ë°©ë²•ì´ ì—†ì–´ì¡ŒìŠµë‹ˆë‹¤. ì´ëŠ” 애플리케ì´ì…˜ 시작 관리ìžì— 표시ë˜ì§€ 않기 때문입니다.</p>
-<p>사용ìžê°€ 액티비티로 ë˜ëŒì•„ê°ˆ 수 있ë„ë¡ í•˜ëŠ” ê²ƒì„ ì›ì¹˜ 않는 경우,
+<p>사용ìžê°€ 액티비티로 ë˜ëŒì•„ê°ˆ 수 있ë„ë¡ í•˜ëŠ” ê²ƒì„ ì›ì¹˜ 않는 경우,
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
- 요소ì˜
+ 요소ì˜
<a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">{@code finishOnTaskLaunch}</a>
를 {@code "true"}로 설정하면 ë©ë‹ˆë‹¤(<a href="#Clearing">ìŠ¤íƒ ì§€ìš°ê¸°</a>를 참조하십시오).</p>
-<p>작업과 액티비티가 개요 화면ì—서 어떻게 표시ë˜ê³  관리ë˜ëŠ”ì§€ì— ëŒ€í•œ
+<p>작업과 액티비티가 개요 화면ì—서 어떻게 표시ë˜ê³  관리ë˜ëŠ”ì§€ì— ëŒ€í•œ
ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/components/recents.html">
개요 화면</a>ì—서 확ì¸í•˜ì‹¤ 수 있습니다.</p>
diff --git a/docs/html-intl/intl/ko/guide/index.jd b/docs/html-intl/intl/ko/guide/index.jd
index 73af3df9b8c0..debd05312e98 100644
--- a/docs/html-intl/intl/ko/guide/index.jd
+++ b/docs/html-intl/intl/ko/guide/index.jd
@@ -4,16 +4,16 @@ page.title=Android 소개
<div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
-<p>ì•±ì˜ ìž‘ë™ ì›ë¦¬ë¥¼ ë°°ì›Œë³´ê³ ìž í•œë‹¤ë©´, ìš°ì„ 
+<p>ì•±ì˜ ìž‘ë™ ì›ë¦¬ë¥¼ ë°°ì›Œë³´ê³ ìž í•œë‹¤ë©´, ìš°ì„ 
<a href="{@docRoot}guide/components/fundamentals.html">앱 기본 항목</a>부터 시작하십시오.</p>
<p>바로 ì½”ë”©ì„ ì‹œìž‘í•˜ë ¤ë©´, <a href="{@docRoot}training/basics/firstapp/index.html">첫 앱 구축하기</a>를 ì½ì–´ë³´ì‹­ì‹œì˜¤.</p>
</div>
-<p>Android는 í’성한 애플리케ì´ì…˜ 프레임워í¬ë¥¼ 제공하여 Java 언어 환경ì—서 실행ë˜ëŠ”
-ëª¨ë°”ì¼ ê¸°ê¸°ì—서 사용할 í˜ì‹ ì ì¸ 앱과 ê²Œìž„ì„ êµ¬ì¶•í•  수 있습니다. 왼쪽 íƒìƒ‰ ì˜ì—­ì— 목ë¡ìœ¼ë¡œ 나열ëœ
+<p>Android는 í’성한 애플리케ì´ì…˜ 프레임워í¬ë¥¼ 제공하여 Java 언어 환경ì—서 실행ë˜ëŠ”
+ëª¨ë°”ì¼ ê¸°ê¸°ì—서 사용할 í˜ì‹ ì ì¸ 앱과 ê²Œìž„ì„ êµ¬ì¶•í•  수 있습니다. 왼쪽 íƒìƒ‰ ì˜ì—­ì— 목ë¡ìœ¼ë¡œ 나열ëœ
여러 문서ì—서 Androidì˜ ë‹¤ì–‘í•œ API를 사용하여 ì•±ì„ êµ¬ì¶•í•˜ëŠ” ë°©ë²•ì— ëŒ€í•œ ìƒì„¸í•œ 정보를 제공합니다.</p>
-<p>Android ê°œë°œì„ ì²˜ìŒ ì‹œë„하신다면, 다ìŒê³¼ ê°™ì€
+<p>Android ê°œë°œì„ ì²˜ìŒ ì‹œë„하신다면, 다ìŒê³¼ ê°™ì€
Android 앱 í”„ë ˆìž„ì›Œí¬ ê¸°ë³¸ ê°œë…ì„ ìˆ™ì§€í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤.</p>
@@ -23,14 +23,14 @@ Android 앱 í”„ë ˆìž„ì›Œí¬ ê¸°ë³¸ ê°œë…ì„ ìˆ™ì§€í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤
<h4>ì•±ì€ ì—¬ëŸ¬ ê°œì˜ ì§„ìž… ì§€ì ì„ 제공합니다.</h4>
-<p>Android ì•±ì€ ì—¬ëŸ¬ 가지 고유한 구성 ìš”ì†Œë“¤ì˜ ì¡°í•©ìœ¼ë¡œ 구축ë˜ë©°, ì´ëŸ¬í•œ 구성 요소는 개별ì ìœ¼ë¡œ
-호출할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어 ì–´ë–¤ í•˜ë‚˜ì˜ <em>액티비티</em>ê°€ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 위한
-í™”ë©´ì„ í•˜ë‚˜ 제공하고, <em>서비스</em>ê°€ ë°°ê²½ì—서 ë…립ì ìœ¼ë¡œ ìž‘ì—…ì„ ìˆ˜í–‰í• 
+<p>Android ì•±ì€ ì—¬ëŸ¬ 가지 고유한 구성 ìš”ì†Œë“¤ì˜ ì¡°í•©ìœ¼ë¡œ 구축ë˜ë©°, ì´ëŸ¬í•œ 구성 요소는 개별ì ìœ¼ë¡œ
+호출할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어 ì–´ë–¤ í•˜ë‚˜ì˜ <em>액티비티</em>ê°€ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 위한
+í™”ë©´ì„ í•˜ë‚˜ 제공하고, <em>서비스</em>ê°€ ë°°ê²½ì—서 ë…립ì ìœ¼ë¡œ ìž‘ì—…ì„ ìˆ˜í–‰í• 
수 있습니다.</p>
-<p>한 구성 요소ì—서 ë˜ ë‹¤ë¥¸ 구성 요소를 시작하려면 <em>ì¸í…트</em>를 사용하면 ë©ë‹ˆë‹¤. 심지어 다른 앱ì—서ë„
-구성 요소를 시작할 수 있습니다. ì§€ë„ ì•±ì—서 주소를 표시하는 액티비티를 시작하는 ê²ƒì´ ì¢‹ì€ ì˜ˆìž…ë‹ˆë‹¤. ì´ ëª¨ë¸ì€
-í•˜ë‚˜ì˜ ì•±ì— ëŒ€í•œ 여러 ê°œì˜ ì§„ìž… ì§€ì ì„ 제공하여 ì–´ëŠ ì•±ì´ë¼ë„ 다른 여러 ì•±ì´ í˜¸ì¶œí•  수 있는 ìž‘ì—…ì— ëŒ€í•´
+<p>한 구성 요소ì—서 ë˜ ë‹¤ë¥¸ 구성 요소를 시작하려면 <em>ì¸í…트</em>를 사용하면 ë©ë‹ˆë‹¤. 심지어 다른 앱ì—서ë„
+구성 요소를 시작할 수 있습니다. ì§€ë„ ì•±ì—서 주소를 표시하는 액티비티를 시작하는 ê²ƒì´ ì¢‹ì€ ì˜ˆìž…ë‹ˆë‹¤. ì´ ëª¨ë¸ì€
+í•˜ë‚˜ì˜ ì•±ì— ëŒ€í•œ 여러 ê°œì˜ ì§„ìž… ì§€ì ì„ 제공하여 ì–´ëŠ ì•±ì´ë¼ë„ 다른 여러 ì•±ì´ í˜¸ì¶œí•  수 있는 ìž‘ì—…ì— ëŒ€í•´
사용ìžì˜ "기본" 앱 ì—­í• ì„ í•©ë‹ˆë‹¤.</p>
@@ -48,14 +48,14 @@ Android 앱 í”„ë ˆìž„ì›Œí¬ ê¸°ë³¸ ê°œë…ì„ ìˆ™ì§€í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤
<h4>ì•±ì€ ì—¬ëŸ¬ 가지 ê¸°ê¸°ì— ë§žê²Œ 변경ë©ë‹ˆë‹¤.</h4>
-<p>Android는 ì ì‘형 앱 프레임워í¬ë¥¼ 제공하여 여러 가지 기기 êµ¬ì„±ì— ë§žê²Œ
-고유한 리소스를 제공할 수 있습니다. 예를 들어, 여러 가지 화면 í¬ê¸°ì— ë§žì¶° ê°ê¸° 다른 XML
-ë ˆì´ì•„웃 파ì¼ì„ ìƒì„±í•˜ë©´ ì‹œìŠ¤í…œì´ í˜„ìž¬ ê¸°ê¸°ì˜ í™”ë©´ í¬ê¸°ë¥¼ 근거로
+<p>Android는 ì ì‘형 앱 프레임워í¬ë¥¼ 제공하여 여러 가지 기기 êµ¬ì„±ì— ë§žê²Œ
+고유한 리소스를 제공할 수 있습니다. 예를 들어, 여러 가지 화면 í¬ê¸°ì— ë§žì¶° ê°ê¸° 다른 XML
+ë ˆì´ì•„웃 파ì¼ì„ ìƒì„±í•˜ë©´ ì‹œìŠ¤í…œì´ í˜„ìž¬ ê¸°ê¸°ì˜ í™”ë©´ í¬ê¸°ë¥¼ 근거로
ì–´ëŠ ë ˆì´ì•„ì›ƒì„ ì ìš©í• ì§€ 결정합니다.</p>
-<p>앱 ê¸°ëŠ¥ì´ íŠ¹ì •í•œ 하드웨어(예: ì¹´ë©”ë¼)를 필요로 하는 경우 런타임ì—
-기기 íŠ¹ì§•ì˜ ê¸°ëŠ¥ì„ ì¿¼ë¦¬í•  수 있습니다. 필요하다면 ì•±ì´ í•„ìš”ë¡œ 하는 ê¸°ëŠ¥ì„ ì„ ì–¸í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
-그러면 Google Play Store와 ê°™ì€ ì•± 마켓ì—서 해당 ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않는 기기ì—서
+<p>앱 ê¸°ëŠ¥ì´ íŠ¹ì •í•œ 하드웨어(예: ì¹´ë©”ë¼)를 필요로 하는 경우 런타임ì—
+기기 íŠ¹ì§•ì˜ ê¸°ëŠ¥ì„ ì¿¼ë¦¬í•  수 있습니다. 필요하다면 ì•±ì´ í•„ìš”ë¡œ 하는 ê¸°ëŠ¥ì„ ì„ ì–¸í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
+그러면 Google Play Store와 ê°™ì€ ì•± 마켓ì—서 해당 ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않는 기기ì—서
설치를 허용하지 않습니다.</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/ko/guide/topics/manifest/manifest-intro.jd
index c3550d0e7dc8..2f397c71dbb3 100644
--- a/docs/html-intl/intl/ko/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/ko/guide/topics/manifest/manifest-intro.jd
@@ -20,38 +20,38 @@ page.title=앱 매니페스트
</div>
<p>
- 모든 애플리케ì´ì…˜ì—는 루트 ë¼ì´ë¸ŒëŸ¬ë¦¬ì— AndroidManifest.xml 파ì¼(정확히
-ì´ ì´ë¦„으로)ì´ ìžˆì–´ì•¼ 합니다. <span itemprop="description">매니페스트 파ì¼ì€
-Android ì‹œìŠ¤í…œì— ëŒ€í•œ ì—¬ëŸ¬ë¶„ì˜ ì•± 관련 필수 정보를 나타냅니다.
-즉 ì•±ì˜ ì½”ë“œë¥¼ 실행하기 ì „ì— ì‹œìŠ¤í…œì´ ë°˜ë“œì‹œ 필요로 하는 정보를
+ 모든 애플리케ì´ì…˜ì—는 루트 ë¼ì´ë¸ŒëŸ¬ë¦¬ì— AndroidManifest.xml 파ì¼(정확히
+ì´ ì´ë¦„으로)ì´ ìžˆì–´ì•¼ 합니다. <span itemprop="description">매니페스트 파ì¼ì€
+Android ì‹œìŠ¤í…œì— ëŒ€í•œ ì—¬ëŸ¬ë¶„ì˜ ì•± 관련 필수 정보를 나타냅니다.
+즉 ì•±ì˜ ì½”ë“œë¥¼ 실행하기 ì „ì— ì‹œìŠ¤í…œì´ ë°˜ë“œì‹œ 필요로 하는 정보를
ë§í•©ë‹ˆë‹¤.</span> 매니페스트가 하는 ì¼ì—는 여러 가지가 있지만, ê·¸ 중ì—서 몇 가지만 소개하면 다ìŒê³¼ 같습니다.
</p>
<ul>
-<li>애플리케ì´ì…˜ì— 대한 Java íŒ¨í‚¤ì§€ì˜ ì´ë¦„ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.
+<li>애플리케ì´ì…˜ì— 대한 Java íŒ¨í‚¤ì§€ì˜ ì´ë¦„ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.
패키지 ì´ë¦„ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì— 대한 고유한 ì‹ë³„ìž ì—­í• ì„ í•©ë‹ˆë‹¤.</li>
-<li>애플리케ì´ì…˜ì˜ 구성 요소를 설명합니다. 액티비티,
-서비스, 브로드ìºìŠ¤íŠ¸ 수신기 ë° ì½˜í…츠 ì œê³µìž ë“± 애플리케ì´ì…˜ì„ ì´ë£¨ëŠ” 여러 항목ì„
-ë§í•©ë‹ˆë‹¤. ì´ê²ƒì€ ê° êµ¬ì„± 요소를 구현하는 í´ëž˜ìŠ¤ì˜ ì´ë¦„ì„ ë‚˜íƒ€ë‚´ê³ 
-ê°ê°ì˜ ê¸°ëŠ¥ì„ ê²Œì‹œí•©ë‹ˆë‹¤(예를 들어 처리할 수 있는 {@link android.content.Intent
-Intent} 메시지 종류 등). ì´ëŸ¬í•œ ì„ ì–¸ì„ í†µí•´ Android ì‹œìŠ¤í…œì´ ì—¬ëŸ¬ 구성 요소가
+<li>애플리케ì´ì…˜ì˜ 구성 요소를 설명합니다. 액티비티,
+서비스, 브로드ìºìŠ¤íŠ¸ 수신기 ë° ì½˜í…츠 ì œê³µìž ë“± 애플리케ì´ì…˜ì„ ì´ë£¨ëŠ” 여러 항목ì„
+ë§í•©ë‹ˆë‹¤. ì´ê²ƒì€ ê° êµ¬ì„± 요소를 구현하는 í´ëž˜ìŠ¤ì˜ ì´ë¦„ì„ ë‚˜íƒ€ë‚´ê³ 
+ê°ê°ì˜ ê¸°ëŠ¥ì„ ê²Œì‹œí•©ë‹ˆë‹¤(예를 들어 처리할 수 있는 {@link android.content.Intent
+Intent} 메시지 종류 등). ì´ëŸ¬í•œ ì„ ì–¸ì„ í†µí•´ Android ì‹œìŠ¤í…œì´ ì—¬ëŸ¬ 구성 요소가
ê°ê° 무엇ì¸ì§€ 알게 ë˜ê³ , ì–´ë–¤ ì¡°ê±´ì—서 시작해야 하는지 알 수 있습니다.</li>
-<li>ì–´ëŠ í”„ë¡œì„¸ìŠ¤ê°€ 애플리케ì´ì…˜ 구성 요소를 호스팅할 것ì¸ì§€ 결정합니다.</li>
+<li>ì–´ëŠ í”„ë¡œì„¸ìŠ¤ê°€ 애플리케ì´ì…˜ 구성 요소를 호스팅할 것ì¸ì§€ 결정합니다.</li>
-<li>APIì˜ ë³´í˜¸ëœ ë¶€ë¶„ì— ì•¡ì„¸ìŠ¤í•˜ì—¬ 다른 애플리케ì´ì…˜ê³¼ ìƒí˜¸ 작용하려면
-애플리케ì´ì…˜ì— ì–´ëŠ ê¶Œí•œì´ ê¼­ 필요한지 선언합니다.</li>
+<li>APIì˜ ë³´í˜¸ëœ ë¶€ë¶„ì— ì•¡ì„¸ìŠ¤í•˜ì—¬ 다른 애플리케ì´ì…˜ê³¼ ìƒí˜¸ 작용하려면
+애플리케ì´ì…˜ì— ì–´ëŠ ê¶Œí•œì´ ê¼­ 필요한지 선언합니다.</li>
-<li>ë˜í•œ, ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 구성 요소와 ìƒí˜¸ 작용하려면 다른 애플리케ì´ì…˜ì´
+<li>ë˜í•œ, ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 구성 요소와 ìƒí˜¸ 작용하려면 다른 애플리케ì´ì…˜ì´
반드시 가지고 있어야 하는 ê¶Œí•œë„ ì„ ì–¸í•©ë‹ˆë‹¤.</li>
-<li>ì´ëŠ” 애플리케ì´ì…˜ì´ 실행 ì¤‘ì¼ ë•Œ 프로파ì¼ë§ê³¼ 기타 정보를 제공하는
-{@link android.app.Instrumentation} í´ëž˜ìŠ¤ë¥¼ 목ë¡ìœ¼ë¡œ 표시합니다. ì´ëŸ¬í•œ ì„ ì–¸ì´ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ë‚˜íƒ€ë‚˜ëŠ” 것ì€
-애플리케ì´ì…˜ì´ 개발 중ì´ê³  테스트ë˜ëŠ” 단계ì—ë§Œ 국한ë©ë‹ˆë‹¤.
+<li>ì´ëŠ” 애플리케ì´ì…˜ì´ 실행 ì¤‘ì¼ ë•Œ 프로파ì¼ë§ê³¼ 기타 정보를 제공하는
+{@link android.app.Instrumentation} í´ëž˜ìŠ¤ë¥¼ 목ë¡ìœ¼ë¡œ 표시합니다. ì´ëŸ¬í•œ ì„ ì–¸ì´ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ë‚˜íƒ€ë‚˜ëŠ” 것ì€
+애플리케ì´ì…˜ì´ 개발 중ì´ê³  테스트ë˜ëŠ” 단계ì—ë§Œ 국한ë©ë‹ˆë‹¤.
ì´ë“¤ì€ 애플리케ì´ì…˜ì´ 게시ë˜ê¸° ì „ì— ì œê±°ë©ë‹ˆë‹¤.</li>
-<li>ì´ëŠ” 애플리케ì´ì…˜ì´ 필요로 하는 Android APIì˜ ìµœì†Œ 레벨ì„
+<li>ì´ëŠ” 애플리케ì´ì…˜ì´ 필요로 하는 Android APIì˜ ìµœì†Œ 레벨ì„
선언합니다.</li>
<li>애플리케ì´ì…˜ì´ ì—°ê²°ë˜ì–´ì•¼ 하는 ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 목ë¡ìœ¼ë¡œ 표시합니다.</li>
@@ -61,12 +61,12 @@ Intent} 메시지 종류 등). ì´ëŸ¬í•œ ì„ ì–¸ì„ í†µí•´ Android 시스템ì´
<h2 id="filestruct">매니페스트 파ì¼ì˜ 구조</h2>
<p>
-ì•„ëž˜ì˜ ë‹¤ì´ì–´ê·¸ëž¨ì€ 매니페스트 파ì¼ì˜ ì¼ë°˜ì ì¸ 구조와 매니페스트 파ì¼ì—
-ë“¤ì–´ìžˆì„ ìˆ˜ 있는 모든 요소를 표시한 것입니다. ê° ìš”ì†Œì™€ ê°ê°ì˜ ì†ì„±ì„ ëª¨ë‘ ë¬¸ì„œí™”í•œ
-ì „ë¬¸ì€ ë³„ë„ì˜ íŒŒì¼ì—서 확ì¸í•˜ì‹¤ 수 있습니다. ì–´ë–¤ ìš”ì†Œì— ëŒ€í•´ì„œë“ 
-ìƒì„¸í•œ 정보를 보려면 다ì´ì–´ê·¸ëž¨ì—서 해당 요소 ì´ë¦„ì„ í´ë¦­í•˜ì‹­ì‹œì˜¤.
-ì´ë¦„ì€ ë‹¤ì´ì–´ê·¸ëž¨ ë’¤ì— ë‚˜ì˜¤ëŠ” 요소 목ë¡(알파벳 순) ë˜ëŠ”
-요소 ì´ë¦„ì´ ì–¸ê¸‰ë˜ëŠ” 기타 ì˜ì—­ 어디서든 í´ë¦­í•  수 있습니다.
+ì•„ëž˜ì˜ ë‹¤ì´ì–´ê·¸ëž¨ì€ 매니페스트 파ì¼ì˜ ì¼ë°˜ì ì¸ 구조와 매니페스트 파ì¼ì—
+ë“¤ì–´ìžˆì„ ìˆ˜ 있는 모든 요소를 표시한 것입니다. ê° ìš”ì†Œì™€ ê°ê°ì˜ ì†ì„±ì„ ëª¨ë‘ ë¬¸ì„œí™”í•œ
+ì „ë¬¸ì€ ë³„ë„ì˜ íŒŒì¼ì—서 확ì¸í•˜ì‹¤ 수 있습니다. ì–´ë–¤ ìš”ì†Œì— ëŒ€í•´ì„œë“ 
+ìƒì„¸í•œ 정보를 보려면 다ì´ì–´ê·¸ëž¨ì—서 해당 요소 ì´ë¦„ì„ í´ë¦­í•˜ì‹­ì‹œì˜¤.
+ì´ë¦„ì€ ë‹¤ì´ì–´ê·¸ëž¨ ë’¤ì— ë‚˜ì˜¤ëŠ” 요소 목ë¡(알파벳 순) ë˜ëŠ”
+요소 ì´ë¦„ì´ ì–¸ê¸‰ë˜ëŠ” 기타 ì˜ì—­ 어디서든 í´ë¦­í•  수 있습니다.
</p>
<pre>
@@ -126,9 +126,9 @@ Intent} 메시지 종류 등). ì´ëŸ¬í•œ ì„ ì–¸ì„ í†µí•´ Android 시스템ì´
</pre>
<p>
-매니페스트 파ì¼ì— í‘œì‹œë  ìˆ˜ 있는 모든 요소는 ì•„ëž˜ì— ì•ŒíŒŒë²³ 순서로
-목ë¡ìœ¼ë¡œ 표시ë˜ì–´ 있습니다. 합법ì ì¸ 요소는 ì´ë“¤ì´ 전부입니다. ê°œë°œìž ë‚˜ë¦„ëŒ€ë¡œ 요소 ë˜ëŠ” ì†ì„±ì„
-추가해서는 안 ë©ë‹ˆë‹¤.
+매니페스트 파ì¼ì— í‘œì‹œë  ìˆ˜ 있는 모든 요소는 ì•„ëž˜ì— ì•ŒíŒŒë²³ 순서로
+목ë¡ìœ¼ë¡œ 표시ë˜ì–´ 있습니다. 합법ì ì¸ 요소는 ì´ë“¤ì´ 전부입니다. ê°œë°œìž ë‚˜ë¦„ëŒ€ë¡œ 요소 ë˜ëŠ” ì†ì„±ì„
+추가해서는 안 ë©ë‹ˆë‹¤.
</p>
<p style="margin-left: 2em">
@@ -158,74 +158,74 @@ Intent} 메시지 종류 등). ì´ëŸ¬í•œ ì„ ì–¸ì„ í†µí•´ Android 시스템ì´
</p>
-
+
<h2 id="filec">íŒŒì¼ ê·œì¹™</h2>
<p>
-몇몇 규칙과 ê·œì •ì€ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ ë‚´ì˜ ëª¨ë“  요소와 ì†ì„±ì— ì „ë°˜ì ìœ¼ë¡œ
+몇몇 규칙과 ê·œì •ì€ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ ë‚´ì˜ ëª¨ë“  요소와 ì†ì„±ì— ì „ë°˜ì ìœ¼ë¡œ
ì ìš©ë©ë‹ˆë‹¤.
</p>
<dl>
<dt><b>요소</b></dt>
-<dd>필수 요소는
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> ë°
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 요소ë¿ìœ¼ë¡œ,
-ì´ë“¤ì€ ê°ê¸° 따로 표시ë˜ì–´ì•¼ 하며 한 번씩만 ë°œìƒí•  수 있습니다.
-나머지는 대부분 여러 번 ë°œìƒí•  수 있거나 전혀 ë°œìƒí•˜ì§€ ì•Šê¸°ë„ í•©ë‹ˆë‹¤. 다만,
-ê·¸ 중 최소한 ëª‡ëª‡ì€ ìžˆì–´ì•¼ 매니페스트가 무엇ì´ë“  ì˜ë¯¸ 있는 작업ì„
+<dd>필수 요소는
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> ë°
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 요소ë¿ìœ¼ë¡œ,
+ì´ë“¤ì€ ê°ê¸° 따로 표시ë˜ì–´ì•¼ 하며 한 번씩만 ë°œìƒí•  수 있습니다.
+나머지는 대부분 여러 번 ë°œìƒí•  수 있거나 전혀 ë°œìƒí•˜ì§€ ì•Šê¸°ë„ í•©ë‹ˆë‹¤. 다만,
+ê·¸ 중 최소한 ëª‡ëª‡ì€ ìžˆì–´ì•¼ 매니페스트가 무엇ì´ë“  ì˜ë¯¸ 있는 작업ì„
달성할 수 있습니다.
<p>
-ìš”ì†Œì— ë¬´ì—‡ì´ë“  들어있기만 하면 다른 요소가 ê·¸ ìš”ì†Œì— ë“¤ì–´ 있는 것입니다.
+ìš”ì†Œì— ë¬´ì—‡ì´ë“  들어있기만 하면 다른 요소가 ê·¸ ìš”ì†Œì— ë“¤ì–´ 있는 것입니다.
모든 ê°’ì€ ìš”ì†Œ ë‚´ì˜ ë¬¸ìž ë°ì´í„°ë¡œì„œê°€ ì•„ë‹ˆë¼ ì†ì„±ì„ 통해 설정ë©ë‹ˆë‹¤.
</p>
<p>
-ê°™ì€ ë ˆë²¨ì— ìžˆëŠ” 여러 요소는 보통 순서가 지정ë˜ì§€ 않습니다. 예를 들어
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
-<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> ë°
-<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
-요소는 ì–´ë–¤ 순서로든 서로 ì„žì—¬ë„ ë©ë‹ˆë‹¤ (ì´ ê·œì¹™ì—서
+ê°™ì€ ë ˆë²¨ì— ìžˆëŠ” 여러 요소는 보통 순서가 지정ë˜ì§€ 않습니다. 예를 들어
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> ë°
+<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+요소는 ì–´ë–¤ 순서로든 서로 ì„žì—¬ë„ ë©ë‹ˆë‹¤ (ì´ ê·œì¹™ì—서
<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
-요소는 예외입니다. ì´ê²ƒì€
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>ì˜ ë³„ì¹­ì´ë¯€ë¡œ
+요소는 예외입니다. ì´ê²ƒì€
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>ì˜ ë³„ì¹­ì´ë¯€ë¡œ
ì´ë¥¼ 반드시 ë”°ë¼ì•¼ 합니다).
</p></dd>
<dt><b>ì†ì„±</b></dt>
-<dd>ê³µì‹ì ì¸ ì˜ë¯¸ì—서 모든 ì†ì„±ì€ ì„ íƒ í•­ëª©ìž…ë‹ˆë‹¤. 그러나, 요소가 목ì ì„ 달성하기
-위해서 반드시 지정ë˜ì–´ì•¼ 하는 ê²ƒì´ ëª‡ 가지 있습니다. 관련 문서를
-지침으로 사용하십시오. ì •ë§ë¡œ ì„ íƒì ì¸ ì†ì„±ì˜ 경우, 기본 ê°’ì„ ì–¸ê¸‰í•˜ê±°ë‚˜
+<dd>ê³µì‹ì ì¸ ì˜ë¯¸ì—서 모든 ì†ì„±ì€ ì„ íƒ í•­ëª©ìž…ë‹ˆë‹¤. 그러나, 요소가 목ì ì„ 달성하기
+위해서 반드시 지정ë˜ì–´ì•¼ 하는 ê²ƒì´ ëª‡ 가지 있습니다. 관련 문서를
+지침으로 사용하십시오. ì •ë§ë¡œ ì„ íƒì ì¸ ì†ì„±ì˜ 경우, 기본 ê°’ì„ ì–¸ê¸‰í•˜ê±°ë‚˜
ì‚¬ì–‘ì´ ì—†ìœ¼ë©´ ì–´ë–¤ ì¼ì´ 벌어지는지 진술합니다.
-<p>루트
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+<p>루트
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
ìš”ì†Œì˜ ëª‡ 가지 ì†ì„±ì„ 제외하고 모든 ì†ì„± ì´ë¦„ì€ {@code android:alwaysRetainTaskState} ì ‘ë‘사로 시작합니다.
-예를 들어, {@code android:}와 같습니다. ì´ ì ‘ë‘사는 범용ì´ê¸° 때문ì—
-ì†ì„±ì„ ì´ë¦„으로 참조하는 경우 관련 문서가 ì´ë¥¼ ìƒëžµí•˜ëŠ” 경우가
+예를 들어, {@code android:}와 같습니다. ì´ ì ‘ë‘사는 범용ì´ê¸° 때문ì—
+ì†ì„±ì„ ì´ë¦„으로 참조하는 경우 관련 문서가 ì´ë¥¼ ìƒëžµí•˜ëŠ” 경우가
ì¼ë°˜ì ìž…니다.</p></dd>
<dt><b>í´ëž˜ìФ ì´ë¦„ ì„ ì–¸</b></dt>
-<dd>ëŒ€ë‹¤ìˆ˜ì˜ ìš”ì†Œê°€ Java ê°ì²´ì— ìƒì‘합니다. 여기ì—는
+<dd>ëŒ€ë‹¤ìˆ˜ì˜ ìš”ì†Œê°€ Java ê°ì²´ì— ìƒì‘합니다. 여기ì—는
애플리케ì´ì…˜ ìžì²´ì— 대한 요소가 í¬í•¨ë˜ë©°(
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-요소), ê·¸ê²ƒì˜ ì£¼ 구성 ìš”ì†Œë„ í¬í•¨ë©ë‹ˆë‹¤. 즉, 액티비티
-(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+요소), ê·¸ê²ƒì˜ ì£¼ 구성 ìš”ì†Œë„ í¬í•¨ë©ë‹ˆë‹¤. 즉, 액티비티
+(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
서비스
-(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
+(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
브로드ìºìŠ¤íŠ¸ 수신기
-(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>) ë°
+(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>) ë°
콘í…츠 제공ìž
-(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>) ë“±ì´ ì´ì— 해당ë©ë‹ˆë‹¤.
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>) ë“±ì´ ì´ì— 해당ë©ë‹ˆë‹¤.
<p>
하위 í´ëž˜ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” 경우 구성 요소 í´ëž˜ìФ
-({@link android.app.Activity}, {@link android.app.Service},
-{@link android.content.BroadcastReceiver} ë° {@link android.content.ContentProvider})는 ê±°ì˜ í•­ìƒ ì´ë ‡ê²Œ 하게 ë˜ëŠ”ë°,
-ì´ë•Œ 하위 í´ëž˜ìŠ¤ëŠ” {@code name} ì†ì„±ì„ 통해 ì„ ì–¸ë©ë‹ˆë‹¤. ì´ ì´ë¦„ì— ë°˜ë“œì‹œ
-완전한 패키지 ì§€ì •ì´ í¬í•¨ë˜ì–´ 있어야 합니다.
+({@link android.app.Activity}, {@link android.app.Service},
+{@link android.content.BroadcastReceiver} ë° {@link android.content.ContentProvider})는 ê±°ì˜ í•­ìƒ ì´ë ‡ê²Œ 하게 ë˜ëŠ”ë°,
+ì´ë•Œ 하위 í´ëž˜ìŠ¤ëŠ” {@code name} ì†ì„±ì„ 통해 ì„ ì–¸ë©ë‹ˆë‹¤. ì´ ì´ë¦„ì— ë°˜ë“œì‹œ
+완전한 패키지 ì§€ì •ì´ í¬í•¨ë˜ì–´ 있어야 합니다.
예를 들어, {@link android.app.Service} 하위 í´ëž˜ìŠ¤ë¥¼ 선언하려면 다ìŒê³¼ ê°™ì´ í•  수 있습니다.
</p>
@@ -239,12 +239,12 @@ Intent} 메시지 종류 등). ì´ëŸ¬í•œ ì„ ì–¸ì„ í†µí•´ Android 시스템ì´
&lt;/manifest&gt;</pre>
<p>
-그러나 ì¼ì¢…ì˜ ì¤„ìž„ìœ¼ë¡œì„œ 문ìžì—´ì˜ 첫 번째 글ìžê°€ ë§ˆì¹¨í‘œì¸ ê²½ìš°, 해당
+그러나 ì¼ì¢…ì˜ ì¤„ìž„ìœ¼ë¡œì„œ 문ìžì—´ì˜ 첫 번째 글ìžê°€ ë§ˆì¹¨í‘œì¸ ê²½ìš°, 해당
문ìžì—´ì€ 애플리케ì´ì…˜ì˜ 패키지 ì´ë¦„ì— ì¶”ê°€ë©ë‹ˆë‹¤(
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
-요소ì˜
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
-ì†ì„±ì—서 지정한 바와 ê°™ì´). ë‹¤ìŒ í• ë‹¹ì€ ìœ„ì˜ ê²ƒê³¼ 같습니다.
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+요소ì˜
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
+ì†ì„±ì—서 지정한 바와 ê°™ì´). ë‹¤ìŒ í• ë‹¹ì€ ìœ„ì˜ ê²ƒê³¼ 같습니다.
</p>
<pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -257,13 +257,13 @@ Intent} 메시지 종류 등). ì´ëŸ¬í•œ ì„ ì–¸ì„ í†µí•´ Android 시스템ì´
&lt;/manifest&gt;</pre>
<p>
-Android는 구성 요소를 시작할 때 ì´ë¦„ì´ ëª…ëª…ëœ í•˜ìœ„ í´ëž˜ìŠ¤ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í•©ë‹ˆë‹¤.
+Android는 구성 요소를 시작할 때 ì´ë¦„ì´ ëª…ëª…ëœ í•˜ìœ„ í´ëž˜ìŠ¤ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í•©ë‹ˆë‹¤.
하위 í´ëž˜ìŠ¤ê°€ 지정ë˜ì§€ ì•Šì€ ê²½ìš°, 기본 í´ëž˜ìŠ¤ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í•©ë‹ˆë‹¤.
</p></dd>
<dt><b>여러 ê°œì˜ ê°’</b></dt>
-<dd>하나 ì´ìƒì˜ ê°’ì„ ì§€ì •í•  수 있는 경우, 해당 요소는
-한 요소 ì•ˆì— ì—¬ëŸ¬ ê°œì˜ ê°’ì„ ëª©ë¡ìœ¼ë¡œ 표시하기보다 ê±°ì˜ í•­ìƒ ë°˜ë³µë©ë‹ˆë‹¤.
+<dd>하나 ì´ìƒì˜ ê°’ì„ ì§€ì •í•  수 있는 경우, 해당 요소는
+한 요소 ì•ˆì— ì—¬ëŸ¬ ê°œì˜ ê°’ì„ ëª©ë¡ìœ¼ë¡œ 표시하기보다 ê±°ì˜ í•­ìƒ ë°˜ë³µë©ë‹ˆë‹¤.
예를 들어 한 ì¸í…트 í•„í„°ê°€ 여러 ê°œì˜ ìž‘ì—…ì„ ëª©ë¡ìœ¼ë¡œ 표시할 수 있습니다.
<pre>&lt;intent-filter . . . &gt;
@@ -274,9 +274,9 @@ Android는 구성 요소를 시작할 때 ì´ë¦„ì´ ëª…ëª…ëœ í•˜ìœ„ í´ëž˜ìФì
&lt;/intent-filter&gt;</pre></dd>
<dt><b>리소스 값</b></dt>
-<dd>몇몇 ì†ì„±ì—는 사용ìžì—게 í‘œì‹œë  ìˆ˜ 있는 ê°’ì´ ìžˆìŠµë‹ˆë‹¤. 예를 들어
-ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ë ˆì´ë¸”ê³¼ ì•„ì´ì½˜ ë“±ì´ ì´ì— 해당ë©ë‹ˆë‹¤. ì´ëŸ¬í•œ ì†ì„±ì˜ ê°’ì€
-지역화해야 하며 ë”°ë¼ì„œ 리소스나 테마ì—서 설정ë©ë‹ˆë‹¤. 리소스
+<dd>몇몇 ì†ì„±ì—는 사용ìžì—게 í‘œì‹œë  ìˆ˜ 있는 ê°’ì´ ìžˆìŠµë‹ˆë‹¤. 예를 들어
+ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ ë ˆì´ë¸”ê³¼ ì•„ì´ì½˜ ë“±ì´ ì´ì— 해당ë©ë‹ˆë‹¤. ì´ëŸ¬í•œ ì†ì„±ì˜ ê°’ì€
+지역화해야 하며 ë”°ë¼ì„œ 리소스나 테마ì—서 설정ë©ë‹ˆë‹¤. 리소스
ê°’ì€ ë‹¤ìŒê³¼ ê°™ì€ í˜•ì‹ìœ¼ë¡œ 표현ë©ë‹ˆë‹¤.</p>
<p style="margin-left: 2em">{@code @[<i>패키지</i>:]<i>유형</i>:<i>ì´ë¦„</i>}</p>
@@ -284,7 +284,7 @@ Android는 구성 요소를 시작할 때 ì´ë¦„ì´ ëª…ëª…ëœ í•˜ìœ„ í´ëž˜ìФì
<p>
여기ì—서 <i>패키지</i> ì´ë¦„ì€ ë¦¬ì†ŒìŠ¤ê°€ 애플리케ì´ì…˜ê³¼ ê°™ì€ íŒ¨í‚¤ì§€ì— ìžˆìœ¼ë©´ ìƒëžµí•  수 있고,
<i>유형</i> ì€ "문ìžì—´" ë˜ëŠ” "그릴 수 있ìŒ" ê°™ì€ ë¦¬ì†ŒìŠ¤ 유형입니다. 그리고
- <i>ì´ë¦„</i> ì€ íŠ¹ì • 리소스를 ì‹ë³„하는 ì´ë¦„입니다.
+ <i>ì´ë¦„</i> ì€ íŠ¹ì • 리소스를 ì‹ë³„하는 ì´ë¦„입니다.
예:
</p>
@@ -299,8 +299,8 @@ Android는 구성 요소를 시작할 때 ì´ë¦„ì´ ëª…ëª…ëœ í•˜ìœ„ í´ëž˜ìФì
</p></dd>
<dt><b>문ìžì—´ ê°’</b></dt>
-<dd>ì†ì„± ê°’ì´ ë¬¸ìžì—´ì¸ 경우, ì´ì¤‘ 백슬래시('{@code \\}')를 사용하여
-ë¬¸ìž ì´ìŠ¤ì¼€ì´í”„를 수행해야 합니다. 예를 들어 줄바꿈ì—는 {@code \\n},
+<dd>ì†ì„± ê°’ì´ ë¬¸ìžì—´ì¸ 경우, ì´ì¤‘ 백슬래시('{@code \\}')를 사용하여
+ë¬¸ìž ì´ìŠ¤ì¼€ì´í”„를 수행해야 합니다. 예를 들어 줄바꿈ì—는 {@code \\n},
유니코드 문ìžì—는 '{@code \\uxxxx}'를 쓰십시오.</dd>
</dl>
@@ -308,7 +308,7 @@ Android는 구성 요소를 시작할 때 ì´ë¦„ì´ ëª…ëª…ëœ í•˜ìœ„ í´ëž˜ìФì
<h2 id="filef">íŒŒì¼ ê¸°ëŠ¥</h2>
<p>
-ë‹¤ìŒ ì„¹ì…˜ì—서는 Android ê¸°ëŠ¥ì„ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ 파ì¼ì— ë°˜ì˜í•˜ëŠ”
+ë‹¤ìŒ ì„¹ì…˜ì—서는 Android ê¸°ëŠ¥ì„ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ 파ì¼ì— ë°˜ì˜í•˜ëŠ”
몇 가지 ë°©ì‹ì„ 설명합니다.
</p>
@@ -316,37 +316,37 @@ Android는 구성 요소를 시작할 때 ì´ë¦„ì´ ëª…ëª…ëœ í•˜ìœ„ í´ëž˜ìФì
<h3 id="ifs">ì¸í…트 í•„í„°</h3>
<p>
-애플리케ì´ì…˜ì˜ 핵심 구성 요소(액티비티, 서비스 ë° ë¸Œë¡œë“œìºìŠ¤íŠ¸
-수신기)를 활성화하는 ê²ƒì€ <i>ì¸í…트</i>입니다. ì¸í…트는
+애플리케ì´ì…˜ì˜ 핵심 구성 요소(액티비티, 서비스 ë° ë¸Œë¡œë“œìºìŠ¤íŠ¸
+수신기)를 활성화하는 ê²ƒì€ <i>ì¸í…트</i>입니다. ì¸í…트는
ì›í•˜ëŠ” ìž‘ì—…ì„ ì„¤ëª…í•˜ëŠ” ì •ë³´ 묶ìŒìž…니다({@link android.content.Intent} ê°ì²´).
-여기ì—는 ìž‘ì—…ì„ ìˆ˜í–‰í•  ë°ì´í„°, ìž‘ì—…ì„ ìˆ˜í–‰í•  구성 ìš”ì†Œì˜ ì¹´í…Œê³ ë¦¬ì™€
-기타 관련 지침 ë“±ì´ í¬í•¨ë©ë‹ˆë‹¤.
-Android는 ì¸í…íŠ¸ì— ì‘답할 ì ì ˆí•œ 구성 요소를 찾아 필요한 경우 구성 요소ì˜
-새 ì¸ìŠ¤í„´ìŠ¤ë¥¼ 시작하고, ì´ê²ƒì„ ì¸í…트 ê°ì²´ì—
+여기ì—는 ìž‘ì—…ì„ ìˆ˜í–‰í•  ë°ì´í„°, ìž‘ì—…ì„ ìˆ˜í–‰í•  구성 ìš”ì†Œì˜ ì¹´í…Œê³ ë¦¬ì™€
+기타 관련 지침 ë“±ì´ í¬í•¨ë©ë‹ˆë‹¤.
+Android는 ì¸í…íŠ¸ì— ì‘답할 ì ì ˆí•œ 구성 요소를 찾아 필요한 경우 구성 요소ì˜
+새 ì¸ìŠ¤í„´ìŠ¤ë¥¼ 시작하고, ì´ê²ƒì„ ì¸í…트 ê°ì²´ì—
전달합니다.
</p>
<p>
-구성 요소는 ìžì‹ ì˜ ëŠ¥ë ¥ì„ ì•Œë¦½ë‹ˆë‹¤. 즉, ìžì‹ ì´ ì‘답할 수 있는
-ì¸í…트 종류를 ë°íž™ë‹ˆë‹¤. ì´ë•Œ 사용하는 ê²ƒì´ <i>ì¸í…트 í•„í„°</i>입니다. Android 시스템ì€
-구성 요소를 시작하기 ì „ì— í•´ë‹¹ 구성 요소가 처리할 수 있는 ì¸í…íŠ¸ì— ëŒ€í•´ 학습해야 하기 때문ì—,
-ì¸í…트 필터는 매니페스트 파ì¼ì—
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
-요소로 지정ë©ë‹ˆë‹¤. 구성 요소 í•˜ë‚˜ì— í•„í„°ëŠ” 얼마든지 ìžˆì„ ìˆ˜ 있으며, ê°ê° 서로 다른 기능ì„
+구성 요소는 ìžì‹ ì˜ ëŠ¥ë ¥ì„ ì•Œë¦½ë‹ˆë‹¤. 즉, ìžì‹ ì´ ì‘답할 수 있는
+ì¸í…트 종류를 ë°íž™ë‹ˆë‹¤. ì´ë•Œ 사용하는 ê²ƒì´ <i>ì¸í…트 í•„í„°</i>입니다. Android 시스템ì€
+구성 요소를 시작하기 ì „ì— í•´ë‹¹ 구성 요소가 처리할 수 있는 ì¸í…íŠ¸ì— ëŒ€í•´ 학습해야 하기 때문ì—,
+ì¸í…트 필터는 매니페스트 파ì¼ì—
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+요소로 지정ë©ë‹ˆë‹¤. 구성 요소 í•˜ë‚˜ì— í•„í„°ëŠ” 얼마든지 ìžˆì„ ìˆ˜ 있으며, ê°ê° 서로 다른 기능ì„
설명하게 ë©ë‹ˆë‹¤.
</p>
<p>
ëŒ€ìƒ êµ¬ì„± 요소를 명시ì ìœ¼ë¡œ 지명하는 ì¸í…트가 해당 구성 요소를 활성화합니다.
-필터는 아무런 ì—­í• ì„ í•˜ì§€ 않습니다. 하지만 대ìƒì„ ì´ë¦„으로 지정하지 않는 ì¸í…íŠ¸ì˜ ê²½ìš°ì—는
-ìžì‹ ì´ 구성 ìš”ì†Œì˜ í•„í„° 중 하나를 통과할 수 ìžˆì„ ë•Œì—ë§Œ 해당 구성 요소를 활성화할 수
+필터는 아무런 ì—­í• ì„ í•˜ì§€ 않습니다. 하지만 대ìƒì„ ì´ë¦„으로 지정하지 않는 ì¸í…íŠ¸ì˜ ê²½ìš°ì—는
+ìžì‹ ì´ 구성 ìš”ì†Œì˜ í•„í„° 중 하나를 통과할 수 ìžˆì„ ë•Œì—ë§Œ 해당 구성 요소를 활성화할 수
있습니다.
</p>
<p>
-ì¸í…트 ê°ì²´ë¥¼ ì¸í…트 í•„í„°ì— ëŒ€í•´ 테스트하는 ë°©ë²•ì— ëŒ€í•œ ìžì„¸í•œ 방법ì€
-별ë„ì˜ ë¬¸ì„œì¸
-<a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트
+ì¸í…트 ê°ì²´ë¥¼ ì¸í…트 í•„í„°ì— ëŒ€í•´ 테스트하는 ë°©ë²•ì— ëŒ€í•œ ìžì„¸í•œ 방법ì€
+별ë„ì˜ ë¬¸ì„œì¸
+<a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트
ë° ì¸í…트 í•„í„°</a>를 참조하십시오.
</p>
@@ -354,42 +354,42 @@ Android는 ì¸í…íŠ¸ì— ì‘답할 ì ì ˆí•œ 구성 요소를 찾아 필요한 ê²
<h3 id="iconlabel">ì•„ì´ì½˜ ë° ë ˆì´ë¸”</h3>
<p>
-ëŒ€ë‹¤ìˆ˜ì˜ ìš”ì†Œì— {@code icon}ê³¼ {@code label} ì†ì„±ì´ 있으며
-ì´ê²ƒìœ¼ë¡œ 사용ìžì—게 í‘œì‹œë  ìˆ˜ 있는 ìž‘ì€ ì•„ì´ì½˜ê³¼ í…스트 ë ˆì´ë¸”ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. 몇몇 요소ì—는
-{@code description} ì†ì„±ë„ 있어 좀 ë” ê¸´ 설명 í…스트를 나타낼 수 있고, ì´ê²ƒ ë˜í•œ 화면ì—
-í‘œì‹œë  ìˆ˜ 있습니다. 예를 들어
+ëŒ€ë‹¤ìˆ˜ì˜ ìš”ì†Œì— {@code icon}ê³¼ {@code label} ì†ì„±ì´ 있으며
+ì´ê²ƒìœ¼ë¡œ 사용ìžì—게 í‘œì‹œë  ìˆ˜ 있는 ìž‘ì€ ì•„ì´ì½˜ê³¼ í…스트 ë ˆì´ë¸”ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. 몇몇 요소ì—는
+{@code description} ì†ì„±ë„ 있어 좀 ë” ê¸´ 설명 í…스트를 나타낼 수 있고, ì´ê²ƒ ë˜í•œ 화면ì—
+í‘œì‹œë  ìˆ˜ 있습니다. 예를 들어
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-요소는 ì´ì™€ ê°™ì€ ì†ì„±ì„ ì…‹ ëª¨ë‘ ê°€ì§€ê³  있어 사용ìžê°€ ì´ë¥¼ 요청한 애플리케ì´ì…˜ì— 대한
-ê¶Œí•œì„ í—ˆê°€í•  것ì¸ì§€ 여부를 물으면 해당 권한,
-ê¶Œí•œì˜ ì´ë¦„ê³¼ ê·¸ì— ìˆ˜ë°˜ë˜ëŠ” ë‚´ìš©ì— ëŒ€í•œ 설명ì„
+요소는 ì´ì™€ ê°™ì€ ì†ì„±ì„ ì…‹ ëª¨ë‘ ê°€ì§€ê³  있어 사용ìžê°€ ì´ë¥¼ 요청한 애플리케ì´ì…˜ì— 대한
+ê¶Œí•œì„ í—ˆê°€í•  것ì¸ì§€ 여부를 물으면 해당 권한,
+ê¶Œí•œì˜ ì´ë¦„ê³¼ ê·¸ì— ìˆ˜ë°˜ë˜ëŠ” ë‚´ìš©ì— ëŒ€í•œ 설명ì„
사용ìžì—게 표시할 수 있습니다.
</p>
<p>
-ì–´ë–¤ 경우ì—ë“ , 요소ì—서 ì„¤ì •ëœ ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”ì´ í•´ë‹¹ 컨테ì´ë„ˆì˜ 모든 하위 ìš”ì†Œì— ëŒ€í•œ 기본
-{@code icon}ê³¼ {@code label} ì„¤ì •ì´ ë©ë‹ˆë‹¤.
-ë”°ë¼ì„œ
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-요소ì—서 ì„¤ì •ëœ ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ ê° ìš”ì†Œì— ëŒ€í•œ 기본 ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”입니다.
-ì´ì™€ 유사하게, 구성 ìš”ì†Œì— ëŒ€í•´ ì„¤ì •ëœ ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”ì´ &mdash; 예를 들어
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
-요소 &mdash; ê° êµ¬ì„± 요소ì˜
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
-ìš”ì†Œì— ëŒ€í•œ 기본 설정입니다.
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-요소가 ë ˆì´ë¸”ì„ ì„¤ì •í•˜ì§€ë§Œ 액티비티와 ê·¸ ì¸í…트 필터는 ì´ë¥¼ 설정하지 않는 경우,
-애플리케ì´ì…˜ ë ˆì´ë¸”ì„ ì•¡í‹°ë¹„í‹°ì™€ ì¸í…트 í•„í„° 양쪽 모ë‘ì˜ ë ˆì´ë¸”ì¸ ê²ƒìœ¼ë¡œ
+ì–´ë–¤ 경우ì—ë“ , 요소ì—서 ì„¤ì •ëœ ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”ì´ í•´ë‹¹ 컨테ì´ë„ˆì˜ 모든 하위 ìš”ì†Œì— ëŒ€í•œ 기본
+{@code icon}ê³¼ {@code label} ì„¤ì •ì´ ë©ë‹ˆë‹¤.
+ë”°ë¼ì„œ
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+요소ì—서 ì„¤ì •ëœ ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ ê° ìš”ì†Œì— ëŒ€í•œ 기본 ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”입니다.
+ì´ì™€ 유사하게, 구성 ìš”ì†Œì— ëŒ€í•´ ì„¤ì •ëœ ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”ì´ &mdash; 예를 들어
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+요소 &mdash; ê° êµ¬ì„± 요소ì˜
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+ìš”ì†Œì— ëŒ€í•œ 기본 설정입니다.
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+요소가 ë ˆì´ë¸”ì„ ì„¤ì •í•˜ì§€ë§Œ 액티비티와 ê·¸ ì¸í…트 필터는 ì´ë¥¼ 설정하지 않는 경우,
+애플리케ì´ì…˜ ë ˆì´ë¸”ì„ ì•¡í‹°ë¹„í‹°ì™€ ì¸í…트 í•„í„° 양쪽 모ë‘ì˜ ë ˆì´ë¸”ì¸ ê²ƒìœ¼ë¡œ
취급합니다.
</p>
<p>
-ì¸í…트 í•„í„°ì— ëŒ€í•´ ì„¤ì •ëœ ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”ì€ êµ¬ì„± 요소가 사용ìžì—게
-í‘œì‹œë  ë•Œë§ˆë‹¤ 구성 요소를 나타내는 ë° ì‚¬ìš©ë˜ë©°, ì´ëŠ” í•„í„°ê°€ 알린 기능ì„
-충족하는 것입니다. 예를 들어
-"{@code android.intent.action.MAIN}" ë°
-"{@code android.intent.category.LAUNCHER}"ê°€ ì„¤ì •ëœ í•„í„°ëŠ”
-액티비티를 애플리케ì´ì…˜ì„ 초기화하는 주역으로 알립니다. 다시 ë§í•´,
-애플리케ì´ì…˜ 시작 관리ìžì— 표시ë˜ì–´ì•¼ 하는 ê²ƒì´ ë©ë‹ˆë‹¤. ë”°ë¼ì„œ í•„í„°ì—서 ì„¤ì •ëœ ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”ì´
+ì¸í…트 í•„í„°ì— ëŒ€í•´ ì„¤ì •ëœ ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”ì€ êµ¬ì„± 요소가 사용ìžì—게
+í‘œì‹œë  ë•Œë§ˆë‹¤ 구성 요소를 나타내는 ë° ì‚¬ìš©ë˜ë©°, ì´ëŠ” í•„í„°ê°€ 알린 기능ì„
+충족하는 것입니다. 예를 들어
+"{@code android.intent.action.MAIN}" ë°
+"{@code android.intent.category.LAUNCHER}"ê°€ ì„¤ì •ëœ í•„í„°ëŠ”
+액티비티를 애플리케ì´ì…˜ì„ 초기화하는 주역으로 알립니다. 다시 ë§í•´,
+애플리케ì´ì…˜ 시작 관리ìžì— 표시ë˜ì–´ì•¼ 하는 ê²ƒì´ ë©ë‹ˆë‹¤. ë”°ë¼ì„œ í•„í„°ì—서 ì„¤ì •ëœ ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”ì´
시작 관리ìžì— 표시ë˜ëŠ” ì•„ì´ì½˜ê³¼ ë ˆì´ë¸”입니다.
</p>
@@ -397,14 +397,14 @@ Android는 ì¸í…íŠ¸ì— ì‘답할 ì ì ˆí•œ 구성 요소를 찾아 필요한 ê²
<h3 id="perms">권한</h3>
<p>
-í†µìƒ <i>권한</i> ì´ëž€ 기기ì—서 ì½”ë“œì˜ ì¼ë¶€ë¶„ ë˜ëŠ” ë°ì´í„°ì— 대한 액세스를 한정하는
-제한입니다. ì´ëŸ° 한계를 부과하는 ê²ƒì€ ì¤‘ìš”í•œ ë°ì´í„°ì™€ 코드를 보호하여
-ì´ë“¤ì´ 남용ë˜ì–´ì„œ ì‚¬ìš©ìž í™˜ê²½ì„ ì™œê³¡í•˜ê±°ë‚˜ ì†ìƒì‹œí‚¤ì§€ 않ë„ë¡ í•˜ê¸° 위해서입니다.
+í†µìƒ <i>권한</i> ì´ëž€ 기기ì—서 ì½”ë“œì˜ ì¼ë¶€ë¶„ ë˜ëŠ” ë°ì´í„°ì— 대한 액세스를 한정하는
+제한입니다. ì´ëŸ° 한계를 부과하는 ê²ƒì€ ì¤‘ìš”í•œ ë°ì´í„°ì™€ 코드를 보호하여
+ì´ë“¤ì´ 남용ë˜ì–´ì„œ ì‚¬ìš©ìž í™˜ê²½ì„ ì™œê³¡í•˜ê±°ë‚˜ ì†ìƒì‹œí‚¤ì§€ 않ë„ë¡ í•˜ê¸° 위해서입니다.
</p>
<p>
-ê° ê¶Œí•œì€ ê³ ìœ í•œ ë ˆì´ë¸”로 ì‹ë³„í•  수 있습니다. ë ˆì´ë¸”ì„ ë³´ë©´ ìžì‹ ì´ ì–´ë–¤ ìž‘ì—…ì„ ì œí•œí•˜ëŠ”ì§€
-나타내는 경우가 잦습니다. 예를 들어 다ìŒì€ Androidê°€ ì •ì˜í•˜ëŠ” 몇 가지 ê¶Œí•œì„ ë‚˜íƒ€ë‚¸
+ê° ê¶Œí•œì€ ê³ ìœ í•œ ë ˆì´ë¸”로 ì‹ë³„í•  수 있습니다. ë ˆì´ë¸”ì„ ë³´ë©´ ìžì‹ ì´ ì–´ë–¤ ìž‘ì—…ì„ ì œí•œí•˜ëŠ”ì§€
+나타내는 경우가 잦습니다. 예를 들어 다ìŒì€ Androidê°€ ì •ì˜í•˜ëŠ” 몇 가지 ê¶Œí•œì„ ë‚˜íƒ€ë‚¸
것입니다.
</p>
@@ -418,26 +418,26 @@ Android는 ì¸í…íŠ¸ì— ì‘답할 ì ì ˆí•œ 구성 요소를 찾아 필요한 ê²
</p>
<p>
-애플리케ì´ì…˜ì—서 권한으로 보호하는 ê¸°ëŠ¥ì— ì•¡ì„¸ìŠ¤í•´ì•¼ 하는 경우,
-해당 ê¶Œí•œì´ í•„ìš”í•˜ë‹¤ê³  매니페스트ì˜
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
-요소로 선언해야 합니다. 그런 다ìŒ, 해당 애플리케ì´ì…˜ì´ ê¸°ê¸°ì— ì„¤ì¹˜ë˜ê³  나면
-설치 관리ìžê°€ 요청한 ê¶Œí•œì„ í—ˆê°€í• ì§€ 여부를 íŒë³„합니다.
-ì´ë•Œ 애플리케ì´ì…˜ì˜ ì¸ì¦ì„œë¥¼ 서명한 ê¶Œí•œì„ í™•ì¸í•˜ê³  ì–´ë–¤ 경우ì—는 사용ìžì—게
-ë¬»ê¸°ë„ í•©ë‹ˆë‹¤.
-ê¶Œí•œì´ í—ˆê°€ë˜ë©´ 해당 애플리케ì´ì…˜ì€ ë³´í˜¸ëœ ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수
-있습니다. 허가ë˜ì§€ 않으면, 그러한 ê¸°ëŠ¥ì— ì•¡ì„¸ìŠ¤í•˜ë ¤ëŠ” 애플리케ì´ì…˜ì˜ 시ë„ê°€ 단순히 실패하고 사용ìžì—게는
-아무런 ì•Œë¦¼ë„ í‘œì‹œë˜ì§€ 않습니다.
+애플리케ì´ì…˜ì—서 권한으로 보호하는 ê¸°ëŠ¥ì— ì•¡ì„¸ìŠ¤í•´ì•¼ 하는 경우,
+해당 ê¶Œí•œì´ í•„ìš”í•˜ë‹¤ê³  매니페스트ì˜
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+요소로 선언해야 합니다. 그런 다ìŒ, 해당 애플리케ì´ì…˜ì´ ê¸°ê¸°ì— ì„¤ì¹˜ë˜ê³  나면
+설치 관리ìžê°€ 요청한 ê¶Œí•œì„ í—ˆê°€í• ì§€ 여부를 íŒë³„합니다.
+ì´ë•Œ 애플리케ì´ì…˜ì˜ ì¸ì¦ì„œë¥¼ 서명한 ê¶Œí•œì„ í™•ì¸í•˜ê³  ì–´ë–¤ 경우ì—는 사용ìžì—게
+ë¬»ê¸°ë„ í•©ë‹ˆë‹¤.
+ê¶Œí•œì´ í—ˆê°€ë˜ë©´ 해당 애플리케ì´ì…˜ì€ ë³´í˜¸ëœ ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수
+있습니다. 허가ë˜ì§€ 않으면, 그러한 ê¸°ëŠ¥ì— ì•¡ì„¸ìŠ¤í•˜ë ¤ëŠ” 애플리케ì´ì…˜ì˜ 시ë„ê°€ 단순히 실패하고 사용ìžì—게는
+아무런 ì•Œë¦¼ë„ í‘œì‹œë˜ì§€ 않습니다.
</p>
<p>
-애플리케ì´ì…˜ì€ ê¶Œí•œì„ ì‚¬ìš©í•˜ì—¬ ìžì‹ ì˜ 구성 요소를(액티비티, 서비스,
-브로드ìºìŠ¤íŠ¸ 수신기 ë° ì½˜í…츠 제공ìž) 보호할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. Androidê°€ ì •ì˜í•œ
+애플리케ì´ì…˜ì€ ê¶Œí•œì„ ì‚¬ìš©í•˜ì—¬ ìžì‹ ì˜ 구성 요소를(액티비티, 서비스,
+브로드ìºìŠ¤íŠ¸ 수신기 ë° ì½˜í…츠 제공ìž) 보호할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. Androidê°€ ì •ì˜í•œ
권한ì´ë¼ë©´ ì–´ë–¤ 것ì´ë“  사용할 수 있고(
-{@link android.Manifest.permission android.Manifest.permission}ì— ëª©ë¡ìœ¼ë¡œ 나열),
-아니면 다른 애플리케ì´ì…˜ì´ 선언한 ê¶Œí•œì„ ì‚¬ìš©í•´ë„ ë©ë‹ˆë‹¤. 아예 ì§ì ‘ ìžì‹ ë§Œì˜ ê¶Œí•œì„ ì •ì˜í•´ë„ ë©ë‹ˆë‹¤. 새 ê¶Œí•œì„ ì„ ì–¸í•  때ì—는
+{@link android.Manifest.permission android.Manifest.permission}ì— ëª©ë¡ìœ¼ë¡œ 나열),
+아니면 다른 애플리케ì´ì…˜ì´ 선언한 ê¶Œí•œì„ ì‚¬ìš©í•´ë„ ë©ë‹ˆë‹¤. 아예 ì§ì ‘ ìžì‹ ë§Œì˜ ê¶Œí•œì„ ì •ì˜í•´ë„ ë©ë‹ˆë‹¤. 새 ê¶Œí•œì„ ì„ ì–¸í•  때ì—는
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
요소를 사용합니다. 예를 들어 액티비티를 보호하려면 다ìŒê³¼ ê°™ì´ í•˜ë©´ ë©ë‹ˆë‹¤.
</p>
@@ -457,43 +457,43 @@ Android는 ì¸í…íŠ¸ì— ì‘답할 ì ì ˆí•œ 구성 요소를 찾아 필요한 ê²
</pre>
<p>
-ì´ ì˜ˆì‹œì—서는 {@code DEBIT_ACCT} 권한ì´
-
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-요소로 ì„ ì–¸í•˜ì˜€ì„ ë¿ë§Œ 아니ë¼, 해당 ê¶Œí•œì˜ ì‚¬ìš© ë˜í•œ
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
-요소로 요청ë˜ì—ˆë‹¤ëŠ” ì ì„ 눈여겨 보십시오. ì´ê²ƒì˜ ì‚¬ìš©ì„ ìš”ì²­í•´ì•¼ 애플리케ì´ì…˜ì˜ 다른 구성 요소가 보호ëœ
-액티비티를 시작할 수 있습니다. ì´ëŠ” 해당 보호를 애플리케ì´ì…˜ ìžì‹ ì´ 부과한 것ì´ë”ë¼ë„
-관계 ì—†ì´ ì ìš©ë©ë‹ˆë‹¤.
+ì´ ì˜ˆì‹œì—서는 {@code DEBIT_ACCT} 권한ì´
+
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+요소로 ì„ ì–¸í•˜ì˜€ì„ ë¿ë§Œ 아니ë¼, 해당 ê¶Œí•œì˜ ì‚¬ìš© ë˜í•œ
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+요소로 요청ë˜ì—ˆë‹¤ëŠ” ì ì„ 눈여겨 보십시오. ì´ê²ƒì˜ ì‚¬ìš©ì„ ìš”ì²­í•´ì•¼ 애플리케ì´ì…˜ì˜ 다른 구성 요소가 보호ëœ
+액티비티를 시작할 수 있습니다. ì´ëŠ” 해당 보호를 애플리케ì´ì…˜ ìžì‹ ì´ 부과한 것ì´ë”ë¼ë„
+관계 ì—†ì´ ì ìš©ë©ë‹ˆë‹¤.
</p>
<p>
-ê°™ì€ ì˜ˆì‹œì—서, {@code permission} ì†ì„±ì´ 다른 ê³³ì—서
+ê°™ì€ ì˜ˆì‹œì—서, {@code permission} ì†ì„±ì´ 다른 ê³³ì—서
선언한 ê¶Œí•œì— ì„¤ì •ëœ ê²½ìš°
-(예: {@code android.permission.CALL_EMERGENCY_NUMBERS}), ì´ê²ƒì„
+(예: {@code android.permission.CALL_EMERGENCY_NUMBERS}), ì´ê²ƒì„
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-요소를 사용하여 다시 선언할 필요가 없습니다. 하지만 해당 ê¶Œí•œì˜ ì‚¬ìš©ì€ ì—¬ì „ížˆ
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>로 요청해야 합니다.
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+요소를 사용하여 다시 선언할 필요가 없습니다. 하지만 해당 ê¶Œí•œì˜ ì‚¬ìš©ì€ ì—¬ì „ížˆ
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>로 요청해야 합니다.
</p>
<p>
-<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
-요소는 코드로 ì •ì˜ë  권한 ê·¸ë£¹ì— ëŒ€í•œ 네임스페ì´ìŠ¤ë¥¼
-선언합니다. 그리고
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+요소는 코드로 ì •ì˜ë  권한 ê·¸ë£¹ì— ëŒ€í•œ 네임스페ì´ìŠ¤ë¥¼
+선언합니다. 그리고
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
-ê°€ 권한 ì§‘í•©ì— ëŒ€í•œ ë ˆì´ë¸”ì„ ì •ì˜í•©ë‹ˆë‹¤(매니페스트ì—
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-요소로 선언한 것과 다른 ê³³ì—서 선언한 것 양쪽 모ë‘). ì´ê²ƒì€ ê¶Œí•œì´ ì‚¬ìš©ìžì—게 í‘œì‹œë  ë•Œ
-그룹 ì§€ì •ë  ë°©ì‹ì—ë§Œ ì˜í–¥ì„ 미칩니다.
+ê°€ 권한 ì§‘í•©ì— ëŒ€í•œ ë ˆì´ë¸”ì„ ì •ì˜í•©ë‹ˆë‹¤(매니페스트ì—
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+요소로 선언한 것과 다른 ê³³ì—서 선언한 것 양쪽 모ë‘). ì´ê²ƒì€ ê¶Œí•œì´ ì‚¬ìš©ìžì—게 í‘œì‹œë  ë•Œ
+그룹 ì§€ì •ë  ë°©ì‹ì—ë§Œ ì˜í–¥ì„ 미칩니다.
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
-요소는 ê·¸ë£¹ì— ì–´ëŠ ê¶Œí•œì´ ì†í•´ 있는지 지정하는 ê²ƒì´ ì•„ë‹ˆë¼, 그저
-ê·¸ë£¹ì— ì´ë¦„ì„ ë¶€ì—¬í•  ë¿ìž…니다. ê·¸ë£¹ì— ê¶Œí•œì„ ë°°ì¹˜í•˜ë ¤ë©´ 그룹 ì´ë¦„ì„
+요소는 ê·¸ë£¹ì— ì–´ëŠ ê¶Œí•œì´ ì†í•´ 있는지 지정하는 ê²ƒì´ ì•„ë‹ˆë¼, 그저
+ê·¸ë£¹ì— ì´ë¦„ì„ ë¶€ì—¬í•  ë¿ìž…니다. ê·¸ë£¹ì— ê¶Œí•œì„ ë°°ì¹˜í•˜ë ¤ë©´ 그룹 ì´ë¦„ì„
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-요소ì˜
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+요소ì˜
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
ì†ì„±ì— 할당하면 ë©ë‹ˆë‹¤.
</p>
@@ -501,17 +501,17 @@ Android는 ì¸í…íŠ¸ì— ì‘답할 ì ì ˆí•œ 구성 요소를 찾아 필요한 ê²
<h3 id="libs">ë¼ì´ë¸ŒëŸ¬ë¦¬</h3>
<p>
-모든 애플리케ì´ì…˜ì€ 기본 Android ë¼ì´ë¸ŒëŸ¬ë¦¬ì— ì—°ê²°ë˜ì–´ 있습니다. 여기ì—는
-애플리케ì´ì…˜ êµ¬ì¶•ì„ ìœ„í•œ 기본ì ì¸ 패키지(액티비티, 서비스,
-ì¸í…트, 보기, 버튼, 애플리케ì´ì…˜, ContentProvider 등 보편ì ì¸ í´ëž˜ìФ í¬í•¨)ê°€ í¬í•¨ë˜ì–´
+모든 애플리케ì´ì…˜ì€ 기본 Android ë¼ì´ë¸ŒëŸ¬ë¦¬ì— ì—°ê²°ë˜ì–´ 있습니다. 여기ì—는
+애플리케ì´ì…˜ êµ¬ì¶•ì„ ìœ„í•œ 기본ì ì¸ 패키지(액티비티, 서비스,
+ì¸í…트, 보기, 버튼, 애플리케ì´ì…˜, ContentProvider 등 보편ì ì¸ í´ëž˜ìФ í¬í•¨)ê°€ í¬í•¨ë˜ì–´
있습니다.
</p>
<p>
-그러나 패키지 가운ë°ì—는 ìžì‹ ë§Œì˜ ë¼ì´ë¸ŒëŸ¬ë¦¬ì— ì†í•œ ê²ƒë„ ìžˆìŠµë‹ˆë‹¤. 애플리케ì´ì…˜ì´
-사용하는 ì½”ë“œì˜ ì¶œì²˜ê°€ ì´ëŸ¬í•œ 패키지 ê°€ìš´ë° ì–´ëŠ í•œ ê°€ì§€ì— í•´ë‹¹ë˜ëŠ” 경우, 해당 íŒ¨í‚¤ì§€ì— ì—°ê²°ë˜ë„ë¡
-명시ì ìœ¼ë¡œ 요청해야만 합니다. 매니페스트ì—는 별ë„ì˜
-<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
-요소가 들어 있어 ê° ë¼ì´ë¸ŒëŸ¬ë¦¬ì˜ ì´ë¦„ì„ ë‚˜íƒ€ë‚´ì•¼ 합니다 (ë¼ì´ë¸ŒëŸ¬ë¦¬ ì´ë¦„ì€ íŒ¨í‚¤ì§€ì— ëŒ€í•œ
+그러나 패키지 가운ë°ì—는 ìžì‹ ë§Œì˜ ë¼ì´ë¸ŒëŸ¬ë¦¬ì— ì†í•œ ê²ƒë„ ìžˆìŠµë‹ˆë‹¤. 애플리케ì´ì…˜ì´
+사용하는 ì½”ë“œì˜ ì¶œì²˜ê°€ ì´ëŸ¬í•œ 패키지 ê°€ìš´ë° ì–´ëŠ í•œ ê°€ì§€ì— í•´ë‹¹ë˜ëŠ” 경우, 해당 íŒ¨í‚¤ì§€ì— ì—°ê²°ë˜ë„ë¡
+명시ì ìœ¼ë¡œ 요청해야만 합니다. 매니페스트ì—는 별ë„ì˜
+<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+요소가 들어 있어 ê° ë¼ì´ë¸ŒëŸ¬ë¦¬ì˜ ì´ë¦„ì„ ë‚˜íƒ€ë‚´ì•¼ 합니다 (ë¼ì´ë¸ŒëŸ¬ë¦¬ ì´ë¦„ì€ íŒ¨í‚¤ì§€ì— ëŒ€í•œ
관련 문서ì—서 ì°¾ì„ ìˆ˜ 있습니다).
</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/ko/guide/topics/providers/calendar-provider.jd
index 4d69b6029ec4..a2a20aff40ff 100644
--- a/docs/html-intl/intl/ko/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/ko/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@ page.title=ìº˜ë¦°ë” ì œê³µìž
<li><a href="#intent-view">ì¸í…트를 사용하여 ìº˜ë¦°ë” ë°ì´í„° 보기</a></li>
</ol>
</li>
-
+
<li><a href="#sync-adapter">ë™ê¸°í™” 어댑터</a></li>
</ol>
@@ -56,47 +56,47 @@ page.title=ìº˜ë¦°ë” ì œê³µìž
</div>
</div>
-<p>ìº˜ë¦°ë” ì œê³µìžëŠ” 사용ìžì˜ ìº˜ë¦°ë” ì´ë²¤íŠ¸ë¥¼ 저장하는 리í¬ì§€í† ë¦¬ìž…니다.
-ìº˜ë¦°ë” ì œê³µìž API를 사용하면 캘린ë”, ì´ë²¤íЏ, ì°¸ì„ìž, 알림 ë“±ì˜ ì¿¼ë¦¬, 삽입, ì—…ë°ì´íЏ ë°
+<p>ìº˜ë¦°ë” ì œê³µìžëŠ” 사용ìžì˜ ìº˜ë¦°ë” ì´ë²¤íŠ¸ë¥¼ 저장하는 리í¬ì§€í† ë¦¬ìž…니다.
+ìº˜ë¦°ë” ì œê³µìž API를 사용하면 캘린ë”, ì´ë²¤íЏ, ì°¸ì„ìž, 알림 ë“±ì˜ ì¿¼ë¦¬, 삽입, ì—…ë°ì´íЏ ë°
ì‚­ì œ ë“±ì˜ ìž‘ì—…ì„ ìˆ˜í–‰í•  수 있습니다.</p>
-<p>ìº˜ë¦°ë” ì œê³µìž API는 애플리케ì´ì…˜ê³¼ ë™ê¸°í™” 어댑터ì—서 사용할 수 있습니다.
-ì–´ë–¤ ìœ í˜•ì˜ í”„ë¡œê·¸ëž¨ì´ í˜¸ì¶œì„ í•˜ëŠ” 주체ì¸ì§€ì— ë”°ë¼ ê·œì¹™ì´ ê°ê¸° 다릅니다.
-ì´ ë¬¸ì„œëŠ” 주로 ìº˜ë¦°ë” ì œê³µìž API를 애플리케ì´ì…˜ìœ¼ë¡œ 사용하는 ê²ƒì— ì£¼ì•ˆì ì„ ë‘었습니다.
-여러 ë™ê¸°í™” 어댑터가 서로 어떻게 다른지 ë…¼ì˜í•œ ë‚´ìš©ì€
+<p>ìº˜ë¦°ë” ì œê³µìž API는 애플리케ì´ì…˜ê³¼ ë™ê¸°í™” 어댑터ì—서 사용할 수 있습니다.
+ì–´ë–¤ ìœ í˜•ì˜ í”„ë¡œê·¸ëž¨ì´ í˜¸ì¶œì„ í•˜ëŠ” 주체ì¸ì§€ì— ë”°ë¼ ê·œì¹™ì´ ê°ê¸° 다릅니다.
+ì´ ë¬¸ì„œëŠ” 주로 ìº˜ë¦°ë” ì œê³µìž API를 애플리케ì´ì…˜ìœ¼ë¡œ 사용하는 ê²ƒì— ì£¼ì•ˆì ì„ ë‘었습니다.
+여러 ë™ê¸°í™” 어댑터가 서로 어떻게 다른지 ë…¼ì˜í•œ ë‚´ìš©ì€
<a href="#sync-adapter">ë™ê¸°í™” 어댑터</a>를 참조하십시오.</p>
-<p>ìº˜ë¦°ë” ë°ì´í„°ë¥¼ ì½ê±°ë‚˜ 쓰려면 보통 애플리케ì´ì…˜ì˜ 매니페스트ì—
-ì ì ˆí•œ ê¶Œí•œì´ í¬í•¨ë˜ì–´ 있어야 합니다. ì´ëŠ” <a href="#manifest">사용ìž
+<p>ìº˜ë¦°ë” ë°ì´í„°ë¥¼ ì½ê±°ë‚˜ 쓰려면 보통 애플리케ì´ì…˜ì˜ 매니페스트ì—
+ì ì ˆí•œ ê¶Œí•œì´ í¬í•¨ë˜ì–´ 있어야 합니다. ì´ëŠ” <a href="#manifest">사용ìž
권한</a>ì— ì„¤ëª…ë˜ì–´ 있습니다. 공통 ìž‘ì—…ì„ ì‰½ê²Œ 수행하기 위해 캘린ë”
제공ìžëŠ” <a href="#intents">캘린ë”
-ì¸í…트</a>ì— ì„¤ëª…ëœ ë°”ì™€ ê°™ì´ ì¸í…트 ì§‘í•©ì„ ì œê³µí•©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ ì¸í…트는 사용ìžë¥¼ ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ìœ¼ë¡œ ì´ë™ì‹œì¼œ
-ì´ë²¤íЏ 삽입, 보기 ë° íŽ¸ì§‘ì„ í•  수 있게 í•´ì¤ë‹ˆë‹¤. 사용ìžëŠ” ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ê³¼ ìƒí˜¸ 작용한 다ìŒ
-ì›ëž˜ 애플리케ì´ì…˜ìœ¼ë¡œ ëŒì•„옵니다. ë”°ë¼ì„œ, ì—¬ëŸ¬ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì´ ì´ë²¤íŠ¸ë¥¼ 보거나
+ì¸í…트</a>ì— ì„¤ëª…ëœ ë°”ì™€ ê°™ì´ ì¸í…트 ì§‘í•©ì„ ì œê³µí•©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ ì¸í…트는 사용ìžë¥¼ ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ìœ¼ë¡œ ì´ë™ì‹œì¼œ
+ì´ë²¤íЏ 삽입, 보기 ë° íŽ¸ì§‘ì„ í•  수 있게 í•´ì¤ë‹ˆë‹¤. 사용ìžëŠ” ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ê³¼ ìƒí˜¸ 작용한 다ìŒ
+ì›ëž˜ 애플리케ì´ì…˜ìœ¼ë¡œ ëŒì•„옵니다. ë”°ë¼ì„œ, ì—¬ëŸ¬ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì´ ì´ë²¤íŠ¸ë¥¼ 보거나
ìƒì„±í•˜ê¸° 위해 권한 허가를 요청할 í•„ìš”ë„ ì—†ê³  ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공할 í•„ìš”ë„ ì—†ëŠ” 것입니다.</p>
<h2 id="overview">기본 정보</h2>
-<p><a href="{@docRoot}guide/topics/providers/content-providers.html">콘í…츠 제공ìž</a>는 ë°ì´í„°ë¥¼ 저장하여 애플리케ì´ì…˜ì—서
+<p><a href="{@docRoot}guide/topics/providers/content-providers.html">콘í…츠 제공ìž</a>는 ë°ì´í„°ë¥¼ 저장하여 애플리케ì´ì…˜ì—서
ì´ì— 액세스할 수 있ë„ë¡ í•©ë‹ˆë‹¤. ì¼ë°˜ì ìœ¼ë¡œ, Android 플랫í¼ì—서 제공하는 콘í…츠 제공ìž(ìº˜ë¦°ë” ì œê³µìž í¬í•¨)는
관계 ë°ì´í„°ë² ì´ìФ 모ë¸ì— 기초하여 í…Œì´ë¸” 집합으로 ë°ì´í„°ë¥¼ 노출합니다. ì´ ëª¨ë¸ì—서 ê° í–‰ì€ ë ˆì½”ë“œì´ê³ ,
-ê° ì—´ì€ íŠ¹ì •í•œ 유형과 ì˜ë¯¸ë¥¼ 가진 ë°ì´í„°ìž…니다. 애플리케ì´ì…˜ê³¼ ë™ê¸°í™” 어댑터는
-ìº˜ë¦°ë” ì œê³µìž API를 통해 사용ìžì˜ ìº˜ë¦°ë” ë°ì´í„°ë¥¼ 보관하고 있는 ë°ì´í„°ë² ì´ìФ í…Œì´ë¸”ì—
+ê° ì—´ì€ íŠ¹ì •í•œ 유형과 ì˜ë¯¸ë¥¼ 가진 ë°ì´í„°ìž…니다. 애플리케ì´ì…˜ê³¼ ë™ê¸°í™” 어댑터는
+ìº˜ë¦°ë” ì œê³µìž API를 통해 사용ìžì˜ ìº˜ë¦°ë” ë°ì´í„°ë¥¼ 보관하고 있는 ë°ì´í„°ë² ì´ìФ í…Œì´ë¸”ì—
ì½ê¸°/쓰기 액세스 ê¶Œí•œì„ ì–»ì„ ìˆ˜ 있습니다.</p>
<p>모든 콘í…츠 제공ìžëŠ” ë°ì´í„° 세트를 고유하게 ì‹ë³„하는 공개 URI(
-{@link android.net.Uri}
+{@link android.net.Uri}
개체로 래핑ë¨)를 노출합니다. 여러 ë°ì´í„° 세트(여러 í…Œì´ë¸”)를 제어하는 콘í…츠 제공ìžëŠ”
-ê° ë°ì´í„° ì„¸íŠ¸ì— ë³„ë„ì˜ URI를 노출합니다.
-제공ìžì— 대한 URI는 ëª¨ë‘ ë¬¸ìžì—´ "content://"로 시작합니다.
-ì´ê²ƒì„ ë³´ë©´ ë°ì´í„°ë¥¼ 콘í…츠 제공ìžê°€ 제어하고 있다는 ê²ƒì„ ì•Œì•„ë³¼ 수 있습니다.
-ìº˜ë¦°ë” ì œê³µìžê°€ ê°ê°ì˜ í´ëž˜ìФ(í…Œì´ë¸”)ì— ëŒ€í•œ URIì˜ ìƒìˆ˜ë¥¼ ì •ì˜í•©ë‹ˆë‹¤.
-ì´ì™€ ê°™ì€ URI는 <code><em>&lt;class&gt;</em>.CONTENT_URI</code> 형ì‹ì„ 취합니다.
+ê° ë°ì´í„° ì„¸íŠ¸ì— ë³„ë„ì˜ URI를 노출합니다.
+제공ìžì— 대한 URI는 ëª¨ë‘ ë¬¸ìžì—´ "content://"로 시작합니다.
+ì´ê²ƒì„ ë³´ë©´ ë°ì´í„°ë¥¼ 콘í…츠 제공ìžê°€ 제어하고 있다는 ê²ƒì„ ì•Œì•„ë³¼ 수 있습니다.
+ìº˜ë¦°ë” ì œê³µìžê°€ ê°ê°ì˜ í´ëž˜ìФ(í…Œì´ë¸”)ì— ëŒ€í•œ URIì˜ ìƒìˆ˜ë¥¼ ì •ì˜í•©ë‹ˆë‹¤.
+ì´ì™€ ê°™ì€ URI는 <code><em>&lt;class&gt;</em>.CONTENT_URI</code> 형ì‹ì„ 취합니다.
예를 들면 다ìŒê³¼ 같습니다. {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}</p>
-<p>그림 1ì€ ìº˜ë¦°ë” ì œê³µìž ë°ì´í„° 모ë¸ì„ 그림으로 나타낸 것입니다.
+<p>그림 1ì€ ìº˜ë¦°ë” ì œê³µìž ë°ì´í„° 모ë¸ì„ 그림으로 나타낸 것입니다.
ì´ ê·¸ë¦¼ì—는 ë©”ì¸ í…Œì´ë¸”ê³¼ì´ë“¤ì„ 서로 연결하는 필드가 표시ë˜ì–´ 있습니다.</p>
<img src="{@docRoot}images/providers/datamodel.png" alt="Calendar Provider Data Model" />
@@ -113,77 +113,77 @@ page.title=ìº˜ë¦°ë” ì œê³µìž
</tr>
<tr>
<td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-
+
<td>ì´ í…Œì´ë¸”ì—는 캘린ë”별 ì •ë³´ê°€ 담겨 있습니다.
- ì´ í…Œì´ë¸”ì˜ í–‰ë§ˆë‹¤ 한 캘린ë”ì˜ ì„¸ë¶€ ì •ë³´,
+ ì´ í…Œì´ë¸”ì˜ í–‰ë§ˆë‹¤ 한 캘린ë”ì˜ ì„¸ë¶€ ì •ë³´,
예를 들어 ì´ë¦„, 색ìƒ, ë™ê¸°í™” ì •ë³´ ë“±ì´ ë“¤ì–´ê°‘ë‹ˆë‹¤.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Events}</td>
-
+
<td>ì´ í…Œì´ë¸”ì—는 ì´ë²¤íŠ¸ë³„ ì •ë³´ê°€ 담겨 있습니다.
ì´ í…Œì´ë¸”ì˜ í–‰ë§ˆë‹¤ 한 ì´ë²¤íŠ¸ì˜ ì„¸ë¶€ ì •ë³´
예를 들어 ì´ë²¤íЏ 제목, 위치, 시작 시간, 종료 시간 ë“±ì˜ ì •ë³´ê°€ 들어갑니다.
- ì´ë²¤íŠ¸ëŠ” ì¼íšŒì„±ì¼ ìˆ˜ë„ ìžˆê³  여러 번 ë°˜ë³µë  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
-ì°¸ì„ìž, 알림 ë° í™•ìž¥ëœ ì†ì„± ë“±ì€ ë³„ë„ì˜ í…Œì´ë¸”ì— ì €ìž¥ë©ë‹ˆë‹¤.
-ì´ë“¤ í…Œì´ë¸”ì—는 ê°ê¸° {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}ê°€ 있어
+ ì´ë²¤íŠ¸ëŠ” ì¼íšŒì„±ì¼ ìˆ˜ë„ ìžˆê³  여러 번 ë°˜ë³µë  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
+ì°¸ì„ìž, 알림 ë° í™•ìž¥ëœ ì†ì„± ë“±ì€ ë³„ë„ì˜ í…Œì´ë¸”ì— ì €ìž¥ë©ë‹ˆë‹¤.
+ì´ë“¤ í…Œì´ë¸”ì—는 ê°ê¸° {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}ê°€ 있어
ì´ë²¤íЏ í…Œì´ë¸”ì˜ {@link android.provider.BaseColumns#_ID}를 참조합니다.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances}</td>
-
- <td>ì´ í…Œì´ë¸”ì—는 ê° ì´ë²¤íЏ ë°œìƒì˜ 시작 시간과 종료 시간ì´
+
+ <td>ì´ í…Œì´ë¸”ì—는 ê° ì´ë²¤íЏ ë°œìƒì˜ 시작 시간과 종료 시간ì´
담겨 있습니다. ì´ í…Œì´ë¸”ì˜ ê° í–‰ì´ í•˜ë‚˜ì˜ ì´ë²¤íЏ ë°œìƒì„ 나타냅니다.
ì¼íšŒì„± ì´ë²¤íŠ¸ì˜ ê²½ìš°, ì´ë²¤íŠ¸ì— ëŒ€í•œ 1:1 ì¸ìŠ¤í„´ìŠ¤ ë§¤í•‘ì´ ìžˆìŠµë‹ˆë‹¤.
- 반복ë˜ëŠ” ì´ë²¤íŠ¸ì˜ ê²½ìš°, 해당 ì´ë²¤íŠ¸ê°€ 여러 번 ë°œìƒí•˜ëŠ” ê²ƒì— ë§žì¶”ì–´
+ 반복ë˜ëŠ” ì´ë²¤íŠ¸ì˜ ê²½ìš°, 해당 ì´ë²¤íŠ¸ê°€ 여러 번 ë°œìƒí•˜ëŠ” ê²ƒì— ë§žì¶”ì–´
ìžë™ìœ¼ë¡œ 여러 í–‰ì´ ìƒì„±ë©ë‹ˆë‹¤.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Attendees}</td>
-
+
<td>ì´ í…Œì´ë¸”ì—는 ì´ë²¤íЏ ì°¸ì„ìž(게스트) ì •ë³´ê°€ 담겨 있습니다.
ê° í–‰ì´ ì£¼ì–´ì§„ ì´ë²¤íŠ¸ì˜ ê²ŒìŠ¤íŠ¸ 한 ì‚¬ëžŒì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.
- ì´ê²ƒì´ ê²ŒìŠ¤íŠ¸ì˜ ìœ í˜•ê³¼, ì´ë²¤íŠ¸ì— ëŒ€í•œ 해당 ê²ŒìŠ¤íŠ¸ì˜ ì°¸ì„ ì—¬ë¶€ ì‘답ì„
+ ì´ê²ƒì´ ê²ŒìŠ¤íŠ¸ì˜ ìœ í˜•ê³¼, ì´ë²¤íŠ¸ì— ëŒ€í•œ 해당 ê²ŒìŠ¤íŠ¸ì˜ ì°¸ì„ ì—¬ë¶€ ì‘답ì„
나타냅니다.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Reminders}</td>
-
+
<td>ì´ í…Œì´ë¸”ì—는 경고/알림 ë°ì´í„°ê°€ 담겨 있습니다.
- ê° í–‰ì´ ì£¼ì–´ì§„ ì´ë²¤íŠ¸ì— ëŒ€í•œ 경고 하나를 나타냅니다.
+ ê° í–‰ì´ ì£¼ì–´ì§„ ì´ë²¤íŠ¸ì— ëŒ€í•œ 경고 하나를 나타냅니다.
ì´ë²¤íЏ í•˜ë‚˜ì— ì—¬ëŸ¬ ê°œì˜ ì•Œë¦¼ì´ ìžˆì„ ìˆ˜ 있습니다. ì´ë²¤íŠ¸ë‹¹ 최대 알림 개수는
-{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS}ì—서 지정ë˜ê³ ,
+{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS}ì—서 지정ë˜ê³ ,
ì´ëŠ” 주어진 캘린ë”를 소유한 ë™ê¸°í™” 어댑터가 설정합니다.
- ì•Œë¦¼ì€ ì´ë²¤íЏ 몇 ë¶„ ì „ì— ì§€ì •ë˜ë©° 사용ìžì—게 어떻게 경고할 것ì¸ì§€ë¥¼
+ ì•Œë¦¼ì€ ì´ë²¤íЏ 몇 ë¶„ ì „ì— ì§€ì •ë˜ë©° 사용ìžì—게 어떻게 경고할 것ì¸ì§€ë¥¼
결정하는 메서드를 가지고 있습니다.</td>
</tr>
-
+
</table>
-<p>ìº˜ë¦°ë” ì œê³µìž API는 유연성과 ê°•ë ¥í•¨ì„ ì—¼ë‘ì— ë‘ê³  만들어진 것입니다.
-그와 ë™ì‹œì— 우수한 최종 ì‚¬ìš©ìž ê²½í—˜ì„ ì œê³µí•˜ê³  캘린ë”와 ê·¸ ë°ì´í„°ì˜
+<p>ìº˜ë¦°ë” ì œê³µìž API는 유연성과 ê°•ë ¥í•¨ì„ ì—¼ë‘ì— ë‘ê³  만들어진 것입니다.
+그와 ë™ì‹œì— 우수한 최종 ì‚¬ìš©ìž ê²½í—˜ì„ ì œê³µí•˜ê³  캘린ë”와 ê·¸ ë°ì´í„°ì˜
ë¬´ê²°ì„±ì„ ë³´í˜¸í•˜ëŠ” 것 ë˜í•œ 중요합니다. ì´ë¥¼ 위해서
API를 사용할 때 유ë…해야 í•  ì‚¬í•­ì€ ë‹¤ìŒê³¼ 같습니다.</p>
<ul>
-<li><strong>ìº˜ë¦°ë” ì´ë²¤íЏ 삽입, ì—…ë°ì´íЏ ë° ë³´ê¸°.</strong> ìº˜ë¦°ë” ì œê³µìžë¡œë¶€í„° ì§ì ‘ ì´ë²¤íŠ¸ë¥¼ 삽입, 변경하고 ì½ìœ¼ë ¤ë©´ ì ì ˆí•œ <a href="#manifest">권한</a>ì´ í•„ìš”í•©ë‹ˆë‹¤. 그러나, 완전한 ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ ë˜ëŠ” ë™ê¸°í™” 어댑터를 구축하는 경우가 아니ë¼ë©´ ì´ì™€ ê°™ì€ ê¶Œí•œì„ ìš”ì²­í•  필요가 없습니다. 대신 Androidì˜ ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ì´ ì§€ì›í•˜ëŠ” ì¸í…트를 사용하여 해당 애플리케ì´ì…˜ì— ì½ê¸° ë° ì“°ê¸° ìž‘ì—…ì„ ë¶„ë°°í•˜ë©´ ë©ë‹ˆë‹¤. ì¸í…트를 사용하면, 애플리케ì´ì…˜ì´ 사용ìžë¥¼ ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ìœ¼ë¡œ ë³´ë‚´ ì‚¬ì „ì— ìž‘ì„±ëœ ì–‘ì‹ìœ¼ë¡œ ì›í•˜ëŠ” 작업ì„
-수행하게 합니다. ìž‘ì—…ì´ ë나면 사용ìžëŠ” 애플리케ì´ì…˜ìœ¼ë¡œ ëŒì•„옵니다.
-캘린ë”를 통해 공통 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë„ë¡ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ ì„¤ê³„í•¨ìœ¼ë¡œì¨ ì‚¬ìš©ìžì—게 ì¼ê´€ë˜ê³  강력한
+<li><strong>ìº˜ë¦°ë” ì´ë²¤íЏ 삽입, ì—…ë°ì´íЏ ë° ë³´ê¸°.</strong> ìº˜ë¦°ë” ì œê³µìžë¡œë¶€í„° ì§ì ‘ ì´ë²¤íŠ¸ë¥¼ 삽입, 변경하고 ì½ìœ¼ë ¤ë©´ ì ì ˆí•œ <a href="#manifest">권한</a>ì´ í•„ìš”í•©ë‹ˆë‹¤. 그러나, 완전한 ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ ë˜ëŠ” ë™ê¸°í™” 어댑터를 구축하는 경우가 아니ë¼ë©´ ì´ì™€ ê°™ì€ ê¶Œí•œì„ ìš”ì²­í•  필요가 없습니다. 대신 Androidì˜ ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ì´ ì§€ì›í•˜ëŠ” ì¸í…트를 사용하여 해당 애플리케ì´ì…˜ì— ì½ê¸° ë° ì“°ê¸° ìž‘ì—…ì„ ë¶„ë°°í•˜ë©´ ë©ë‹ˆë‹¤. ì¸í…트를 사용하면, 애플리케ì´ì…˜ì´ 사용ìžë¥¼ ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ìœ¼ë¡œ ë³´ë‚´ ì‚¬ì „ì— ìž‘ì„±ëœ ì–‘ì‹ìœ¼ë¡œ ì›í•˜ëŠ” 작업ì„
+수행하게 합니다. ìž‘ì—…ì´ ë나면 사용ìžëŠ” 애플리케ì´ì…˜ìœ¼ë¡œ ëŒì•„옵니다.
+캘린ë”를 통해 공통 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë„ë¡ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ ì„¤ê³„í•¨ìœ¼ë¡œì¨ ì‚¬ìš©ìžì—게 ì¼ê´€ë˜ê³  강력한
ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하는 것입니다. ì´ê²ƒì´ 권장 방법입니다.
ìžì„¸í•œ 정보는 <a href="#intents">캘린ë”
ì¸í…트</a>를 참조하십시오.</p>
-<li><strong>ë™ê¸°í™” 어댑터.</strong>
-ë™ê¸°í™” 어댑터는 사용ìžì˜ ê¸°ê¸°ì— ìžˆëŠ” ìº˜ë¦°ë” ë°ì´í„°ë¥¼ 다른 서버 ë˜ëŠ” ë°ì´í„° 소스와 ë™ê¸°í™”합니다.
+<li><strong>ë™ê¸°í™” 어댑터.</strong>
+ë™ê¸°í™” 어댑터는 사용ìžì˜ ê¸°ê¸°ì— ìžˆëŠ” ìº˜ë¦°ë” ë°ì´í„°ë¥¼ 다른 서버 ë˜ëŠ” ë°ì´í„° 소스와 ë™ê¸°í™”합니다.
{@link android.provider.CalendarContract.Calendars}와
{@link android.provider.CalendarContract.Events} í…Œì´ë¸”ì—는
ë™ê¸°í™” 어댑터가 사용하ë„ë¡ ì˜ˆì•½ëœ ì—´ì´ ìžˆìŠµë‹ˆë‹¤.
-제공ìžì™€ 애플리케ì´ì…˜ì€ ì´ë¥¼ 수정해서는 안 ë©ë‹ˆë‹¤. 사실, ë™ê¸°í™” 어댑터로 액세스하지 않는 한
-ì´ ì—´ì´ í‘œì‹œë˜ì§€ 않습니다.
+제공ìžì™€ 애플리케ì´ì…˜ì€ ì´ë¥¼ 수정해서는 안 ë©ë‹ˆë‹¤. 사실, ë™ê¸°í™” 어댑터로 액세스하지 않는 한
+ì´ ì—´ì´ í‘œì‹œë˜ì§€ 않습니다.
ë™ê¸°í™” ì–´ëŒ‘í„°ì— ëŒ€í•œ ìžì„¸í•œ 정보는 <a href="#sync-adapter">ë™ê¸°í™” 어댑터</a>를 참조하십시오.</li>
</ul>
@@ -192,8 +192,8 @@ API를 사용할 때 유ë…해야 í•  ì‚¬í•­ì€ ë‹¤ìŒê³¼ 같습니다.</p>
<h2 id="manifest">ì‚¬ìš©ìž ê¶Œí•œ</h2>
<p>ìº˜ë¦°ë” ë°ì´í„°ë¥¼ ì½ìœ¼ë ¤ë©´ 애플리케ì´ì…˜ì˜ 매니페스트 파ì¼ì— {@link
-android.Manifest.permission#READ_CALENDAR} ê¶Œí•œì´ í¬í•¨ë˜ì–´ 있어야 합니다.
-ìº˜ë¦°ë” ë°ì´í„°ë¥¼ ì‚­ì œ, 삽입 ë˜ëŠ” ì—…ë°ì´íŠ¸í•˜ë ¤ë©´{@link android.Manifest.permission#WRITE_CALENDAR}
+android.Manifest.permission#READ_CALENDAR} ê¶Œí•œì´ í¬í•¨ë˜ì–´ 있어야 합니다.
+ìº˜ë¦°ë” ë°ì´í„°ë¥¼ ì‚­ì œ, 삽입 ë˜ëŠ” ì—…ë°ì´íŠ¸í•˜ë ¤ë©´{@link android.Manifest.permission#WRITE_CALENDAR}
ê¶Œí•œì´ í¬í•¨ë˜ì–´ 있어야 합니다.</p>
<pre>
@@ -209,10 +209,10 @@ android.Manifest.permission#READ_CALENDAR} ê¶Œí•œì´ í¬í•¨ë˜ì–´ 있어야 í•©ë
<h2 id="calendar">ìº˜ë¦°ë” í…Œì´ë¸”</h2>
-<p>{@link android.provider.CalendarContract.Calendars}
-í…Œì´ë¸”ì—는 ê°ê°ì˜ 캘린ë”ì— ëŒ€í•œ 세부 ì •ë³´ê°€ 들어 있습니다.
-ë‹¤ìŒ ìº˜ë¦°ë” ì—´ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ê³¼ <a href="#sync-adapter">ë™ê¸°í™” 어댑터</a> ëª¨ë‘ ì“¸ 수 있는 것입니다.
-ì§€ì›ë˜ëŠ” í•„ë“œì˜ ì „ì²´ 목ë¡ì€
+<p>{@link android.provider.CalendarContract.Calendars}
+í…Œì´ë¸”ì—는 ê°ê°ì˜ 캘린ë”ì— ëŒ€í•œ 세부 ì •ë³´ê°€ 들어 있습니다.
+ë‹¤ìŒ ìº˜ë¦°ë” ì—´ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ê³¼ <a href="#sync-adapter">ë™ê¸°í™” 어댑터</a> ëª¨ë‘ ì“¸ 수 있는 것입니다.
+ì§€ì›ë˜ëŠ” í•„ë“œì˜ ì „ì²´ 목ë¡ì€
{@link android.provider.CalendarContract.Calendars} 참조를 확ì¸í•˜ì‹­ì‹œì˜¤.</p>
<table>
<tr>
@@ -229,8 +229,8 @@ android.Manifest.permission#READ_CALENDAR} ê¶Œí•œì´ í¬í•¨ë˜ì–´ 있어야 í•©ë
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-
- <td>캘린ë”를 표시하기로 ì„ íƒí–ˆëŠ”ì§€ë¥¼ 나타내는 부울입니다.
+
+ <td>캘린ë”를 표시하기로 ì„ íƒí–ˆëŠ”ì§€ë¥¼ 나타내는 부울입니다.
ê°’ì´ 0ì´ë©´ ì´ ìº˜ë¦°ë”와 ì—°ê´€ëœ ì´ë²¤íŠ¸ëŠ” 표시하면 안 ëœë‹¤ëŠ” 뜻입니다.
ê°’ì´ 1ì´ë©´ ì´ ìº˜ë¦°ë”와 ì—°ê´€ëœ ì´ë²¤íŠ¸ë¥¼ 표시해야 한다는 뜻입니다.
ì´ ê°’ì´ {@link
@@ -240,10 +240,10 @@ android.provider.CalendarContract.Instances} í…Œì´ë¸”ì˜ í–‰ ìƒì„±ì— ì˜í–¥ì
</tr>
<tr>
<td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-
- <td>캘린ë”를 ë™ê¸°í™”하고 ì´ ìº˜ë¦°ë”ì˜ ì´ë²¤íŠ¸ë¥¼ ê¸°ê¸°ì— ì €ìž¥í•´ì•¼í• ì§€ë¥¼
-나타내는 부울입니다. ê°’ì´ 0ì´ë©´ ì´ ìº˜ë¦°ë”를 ë™ê¸°í™”하거나 ì´ì— ì†í•œ ì´ë²¤íŠ¸ë¥¼
-ê¸°ê¸°ì— ì €ìž¥í•˜ë©´ 안 ëœë‹¤ëŠ” 뜻입니다. ê°’ì´ 1ì´ë©´ ì´ ìº˜ë¦°ë”ì— ëŒ€í•œ ì´ë²¤íŠ¸ë¥¼ ë™ê¸°í™”하고 ì´ì— ì†í•œ
+
+ <td>캘린ë”를 ë™ê¸°í™”하고 ì´ ìº˜ë¦°ë”ì˜ ì´ë²¤íŠ¸ë¥¼ ê¸°ê¸°ì— ì €ìž¥í•´ì•¼í• ì§€ë¥¼
+나타내는 부울입니다. ê°’ì´ 0ì´ë©´ ì´ ìº˜ë¦°ë”를 ë™ê¸°í™”하거나 ì´ì— ì†í•œ ì´ë²¤íŠ¸ë¥¼
+ê¸°ê¸°ì— ì €ìž¥í•˜ë©´ 안 ëœë‹¤ëŠ” 뜻입니다. ê°’ì´ 1ì´ë©´ ì´ ìº˜ë¦°ë”ì— ëŒ€í•œ ì´ë²¤íŠ¸ë¥¼ ë™ê¸°í™”하고 ì´ì— ì†í•œ
ì´ë²¤íŠ¸ë¥¼ ê¸°ê¸°ì— ì €ìž¥í•˜ë¼ëŠ” 뜻입니다.</td>
</tr>
</table>
@@ -253,8 +253,8 @@ android.provider.CalendarContract.Instances} í…Œì´ë¸”ì˜ í–‰ ìƒì„±ì— ì˜í–¥ì
<p>다ìŒì€ 특정한 사용ìžê°€ 소유한 캘린ë”를 가져오는 ë²•ì„ ë‚˜íƒ€ë‚¸ 예시입니다.
ì´ ì˜ˆì‹œì—서는 단순하게 나타내기 위해 쿼리 ìž‘ì—…ì„ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ 스레드("주 스레드")ì— í‘œì‹œí–ˆìŠµë‹ˆë‹¤.
실제로는, ì´ ìž‘ì—…ì€ ì£¼ 스레드 대신 비ë™ê¸°í™” 스레드ì—서 해야 합니다.
- ìžì„¸í•œ ë…¼ì˜ëŠ”
-<a href="{@docRoot}guide/components/loaders.html">로ë”</a>를 참조하십시오. ë°ì´í„°ë¥¼ ì½ê¸°ë§Œ 하는 ê²ƒì´ ì•„ë‹ˆë¼ ë³€ê²½ë„ í•˜ëŠ” 경우ë¼ë©´,
+ ìžì„¸í•œ ë…¼ì˜ëŠ”
+<a href="{@docRoot}guide/components/loaders.html">로ë”</a>를 참조하십시오. ë°ì´í„°ë¥¼ ì½ê¸°ë§Œ 하는 ê²ƒì´ ì•„ë‹ˆë¼ ë³€ê²½ë„ í•˜ëŠ” 경우ë¼ë©´,
{@link android.content.AsyncQueryHandler}를 참조하십시오.
</p>
@@ -268,90 +268,90 @@ public static final String[] EVENT_PROJECTION = new String[] {
Calendars.CALENDAR_DISPLAY_NAME, // 2
Calendars.OWNER_ACCOUNT // 3
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
-
+
<div class="sidebox-wrapper"> <div class="sidebox"> <h3>
ACCOUNT_TYPEì„ ë°˜ë“œì‹œ í¬í•¨ì‹œì¼œì•¼ 하는 ì´ìœ ëŠ” 무엇ì¼ê¹Œìš”?</h3> <p>{@link
android.provider.CalendarContract.Calendars#ACCOUNT_NAME
-Calendars.ACCOUNT_NAME}ì— ëŒ€í•´ 쿼리하는 경우, 해당 ì„ íƒì—
+Calendars.ACCOUNT_NAME}ì— ëŒ€í•´ 쿼리하는 경우, 해당 ì„ íƒì—
{@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}
-ë„ í¬í•¨ì‹œì¼œì•¼ 합니다. ì´ëŠ” 주어진 ê³„ì •ì„ ê³ ìœ í•˜ë‹¤ê³  간주하는 ê²ƒì€ í•´ë‹¹ 계정ì˜
-<code>ACCOUNT_NAME</code> ë°
-<code>ACCOUNT_TYPE</code>ì´ ëª¨ë‘ ìžˆì„ ë•Œë¿ì´ê¸° 때문입니다. <code>ACCOUNT_TYPE</code>ì€ ê³„ì •ì´
+ë„ í¬í•¨ì‹œì¼œì•¼ 합니다. ì´ëŠ” 주어진 ê³„ì •ì„ ê³ ìœ í•˜ë‹¤ê³  간주하는 ê²ƒì€ í•´ë‹¹ 계정ì˜
+<code>ACCOUNT_NAME</code> ë°
+<code>ACCOUNT_TYPE</code>ì´ ëª¨ë‘ ìžˆì„ ë•Œë¿ì´ê¸° 때문입니다. <code>ACCOUNT_TYPE</code>ì€ ê³„ì •ì´
{@link android.accounts.AccountManager}로 등ë¡ë˜ì—ˆì„ 때 ì‚¬ìš©ëœ ê³„ì • ì¸ì¦ìžì— ìƒì‘하는 문ìžì—´ìž…니다. 기기와 ì—°ê´€ë˜ì§€ ì•Šì€ ìº˜ë¦°ë”ì— ì ìš©ë˜ëŠ” 특별한 ìœ í˜•ì˜ ê³„ì •ë„ ìžˆìœ¼ë©° ì´ë¥¼ {@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}ì´ë¼ê³  합니다.
{@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} ê³„ì •ì€ ë™ê¸°í™”ë˜ì§€ 않습니다.
-</p> </div> </div>
+</p> </div> </div>
<p> ë‹¤ìŒ ì˜ˆì‹œì—서는 ì—¬ëŸ¬ë¶„ì´ ì§ì ‘ ë‚˜ë¦„ì˜ ì¿¼ë¦¬ë¥¼ ìƒì„±í•´ë³´ì‹­ì‹œì˜¤. ì„ íƒ ì˜ì—­ì´ ì¿¼ë¦¬ì˜ ê¸°ì¤€ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.
- ì´ ì˜ˆì‹œì—서 쿼리는
+ ì´ ì˜ˆì‹œì—서 쿼리는
<code>ACCOUNT_NAME</code>
"sampleuser@google.com", <code>ACCOUNT_TYPE</code>
"com.google" ë° <code>OWNER_ACCOUNT</code>
-"sampleuser@google.com"ì„ ê°€ì§€ê³  있는 캘린ë”를 찾고 있습니다. 사용ìžê°€ 소유한 캘린ë”ë¿ë§Œ ì•„ë‹ˆë¼ ì‚¬ìš©ìžê°€ ì „ì— ë³¸ 캘린ë”까지 ëª¨ë‘ í™•ì¸í•˜ë ¤ë©´
-<code>OWNER_ACCOUNT</code>를 ìƒëžµí•©ë‹ˆë‹¤.
+"sampleuser@google.com"ì„ ê°€ì§€ê³  있는 캘린ë”를 찾고 있습니다. 사용ìžê°€ 소유한 캘린ë”ë¿ë§Œ ì•„ë‹ˆë¼ ì‚¬ìš©ìžê°€ ì „ì— ë³¸ 캘린ë”까지 ëª¨ë‘ í™•ì¸í•˜ë ¤ë©´
+<code>OWNER_ACCOUNT</code>를 ìƒëžµí•©ë‹ˆë‹¤.
쿼리가 {@link android.database.Cursor}
개체를 반환하여 ì´ë¥¼ 시용하면 ë°ì´í„°ë² ì´ìФ 쿼리가 반환한 ê²°ê³¼ ì§‘í•©ì„ íŠ¸ëž˜ë²„ìŠ¤í•  수 있습니다.
- 콘í…츠 제공ìžì—서 쿼리를 사용하는 ë²•ì— ëŒ€í•œ ìžì„¸í•œ ë…¼ì˜ëŠ”
+ 콘í…츠 제공ìžì—서 쿼리를 사용하는 ë²•ì— ëŒ€í•œ ìžì„¸í•œ ë…¼ì˜ëŠ”
<a href="{@docRoot}guide/topics/providers/content-providers.html">콘í…츠 제공ìž</a>를 참조하십시오.</p>
<pre>// Run query
Cursor cur = null;
ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+Uri uri = Calendars.CONTENT_URI;
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+ Calendars.ACCOUNT_TYPE + " = ?) AND ("
+ Calendars.OWNER_ACCOUNT + " = ?))";
String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
- "sampleuser@gmail.com"};
-// Submit the query and get a Cursor object back.
+ "sampleuser@gmail.com"};
+// Submit the query and get a Cursor object back.
cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
-<p>다ìŒì— í‘œì‹œëœ ì„¹ì…˜ì—서는 커서를 사용하여 ê²°ê³¼ ì§‘í•©ì„ ë‹¨ê³„ë³„ë¡œ 살펴봅니다.
+<p>다ìŒì— í‘œì‹œëœ ì„¹ì…˜ì—서는 커서를 사용하여 ê²°ê³¼ ì§‘í•©ì„ ë‹¨ê³„ë³„ë¡œ 살펴봅니다.
여기ì—서는 ì˜ˆì‹œì˜ ì‹œìž‘ 부분ì—서 ì„¤ì •ëœ ìƒìˆ˜ë¥¼ 사용하여 ê° í•„ë“œì— ëŒ€í•œ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤.
</p>
-
+
<pre>// Use the cursor to step through the returned records
while (cur.moveToNext()) {
long calID = 0;
String displayName = null;
String accountName = null;
String ownerName = null;
-
+
// Get the field values
calID = cur.getLong(PROJECTION_ID_INDEX);
displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
-
+
// Do something with the values...
...
}
</pre>
-
+
<h3 id="modify-calendar">ìº˜ë¦°ë” ìˆ˜ì •</h3>
<p>ìº˜ë¦°ë” ì—…ë°ì´íŠ¸ë¥¼ 수행하려면 캘린ë”ì˜ {@link
-android.provider.BaseColumns#_ID}를
+android.provider.BaseColumns#_ID}를
URIì— ì¶”ê°€ëœ ID로
({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}), ë˜ëŠ” 첫 번째 ì„ íƒ í•­ëª©ìœ¼ë¡œ 제공하면 ë©ë‹ˆë‹¤.
-
-ì„ íƒì€ <code>&quot;_id=?&quot;</code>로 시작해야 하며, 첫 번째
+
+ì„ íƒì€ <code>&quot;_id=?&quot;</code>로 시작해야 하며, 첫 번째
<code>selectionArg</code>는 캘린ë”ì˜ {@link
-android.provider.BaseColumns#_ID}여야 합니다.
-ë˜í•œ ID를 URIì— ì¸ì½”ë”©í•´ì„œë„ ì—…ë°ì´íŠ¸ë¥¼ 수행할 수 있습니다. ì´ ì˜ˆì‹œì—서는 캘린ë”ì˜ í‘œì‹œ ì´ë¦„ì„
+android.provider.BaseColumns#_ID}여야 합니다.
+ë˜í•œ ID를 URIì— ì¸ì½”ë”©í•´ì„œë„ ì—…ë°ì´íŠ¸ë¥¼ 수행할 수 있습니다. ì´ ì˜ˆì‹œì—서는 캘린ë”ì˜ í‘œì‹œ ì´ë¦„ì„
({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
ë°©ì‹ìœ¼ë¡œ 변경하였습니다.</p>
@@ -368,26 +368,26 @@ Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
<h3 id="insert-calendar">ìº˜ë¦°ë” ì‚½ìž…</h2>
-<p>캘린ë”는 주로 ë™ê¸°í™” 어댑터가 관리하ë„ë¡ ì„¤ê³„ë˜ì–´ 있습니다. ë”°ë¼ì„œ 새 캘린ë”는
-ë™ê¸°í™” 어댑터로서만 삽입해야 합니다. ëŒ€ë‹¤ìˆ˜ì˜ ê²½ìš° 애플리케ì´ì…˜ì€ 캘린ë”ì—
-표면ì ì¸ 사항만 변경할 수 있게 ë˜ì–´ 있습니다(예: 표시 ì´ë¦„ 변경 등).
-ì–´ë–¤ 애플리케ì´ì…˜ì´ 로컬 캘린ë”를 ìƒì„±í•´ì•¼ 하는 경우, ìº˜ë¦°ë” ì‚½ìž…ì„ ë™ê¸°í™” 어댑터로 수행하면 ë©ë‹ˆë‹¤.
+<p>캘린ë”는 주로 ë™ê¸°í™” 어댑터가 관리하ë„ë¡ ì„¤ê³„ë˜ì–´ 있습니다. ë”°ë¼ì„œ 새 캘린ë”는
+ë™ê¸°í™” 어댑터로서만 삽입해야 합니다. ëŒ€ë‹¤ìˆ˜ì˜ ê²½ìš° 애플리케ì´ì…˜ì€ 캘린ë”ì—
+표면ì ì¸ 사항만 변경할 수 있게 ë˜ì–´ 있습니다(예: 표시 ì´ë¦„ 변경 등).
+ì–´ë–¤ 애플리케ì´ì…˜ì´ 로컬 캘린ë”를 ìƒì„±í•´ì•¼ 하는 경우, ìº˜ë¦°ë” ì‚½ìž…ì„ ë™ê¸°í™” 어댑터로 수행하면 ë©ë‹ˆë‹¤.
ì´ë•Œ {@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}ì˜ {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE}ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
ì€ ê¸°ê¸° 계정과 ì—°ê´€ë˜ì§€ ì•Šì€ ìº˜ë¦°ë”ì— ì ìš©ë˜ëŠ” 특별한 ìœ í˜•ì˜ ê³„ì •ìž…ë‹ˆë‹¤.
- ì´ ìœ í˜•ì˜ ìº˜ë¦°ë”는 ì„œë²„ì— ë™ê¸°í™”ë˜ì§€ 않습니다.
+ ì´ ìœ í˜•ì˜ ìº˜ë¦°ë”는 ì„œë²„ì— ë™ê¸°í™”ë˜ì§€ 않습니다.
ë™ê¸°í™” ì–´ëŒ‘í„°ì— ëŒ€í•œ ë…¼ì˜ëŠ” <a href="#sync-adapter">ë™ê¸°í™” 어댑터</a>를 참조하십시오.</p>
<h2 id="events">ì´ë²¤íЏ í…Œì´ë¸”</h2>
-<p>{@link android.provider.CalendarContract.Events}
-í…Œì´ë¸”ì—는 ê°ê°ì˜ ì´ë²¤íŠ¸ì— ëŒ€í•œ 세부 ì •ë³´ê°€ 들어 있습니다. ì´ë²¤íŠ¸ë¥¼ 추가, ì—…ë°ì´íЏ ë˜ëŠ” 삭제하려면 애플리케ì´ì…˜ì˜
+<p>{@link android.provider.CalendarContract.Events}
+í…Œì´ë¸”ì—는 ê°ê°ì˜ ì´ë²¤íŠ¸ì— ëŒ€í•œ 세부 ì •ë³´ê°€ 들어 있습니다. ì´ë²¤íŠ¸ë¥¼ 추가, ì—…ë°ì´íЏ ë˜ëŠ” 삭제하려면 애플리케ì´ì…˜ì˜
<a href="#manifest">매니페스트 파ì¼</a>ì— {@link android.Manifest.permission#WRITE_CALENDAR}
ê¶Œí•œì´ í¬í•¨ë˜ì–´ 있어야 합니다.</p>
-<p>ë‹¤ìŒ ì´ë²¤íЏ ì—´ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ê³¼
+<p>ë‹¤ìŒ ì´ë²¤íЏ ì—´ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ê³¼
ë™ê¸°í™” 어댑터 ëª¨ë‘ ì“¸ 수 있는 것입니다. ì§€ì›ë˜ëŠ” í•„ë“œì˜ ì „ì²´ 목ë¡ì€ {@link
android.provider.CalendarContract.Events} 참조를 확ì¸í•˜ì‹­ì‹œì˜¤.</p>
@@ -434,9 +434,9 @@ android.provider.CalendarContract.Events} 참조를 확ì¸í•˜ì‹­ì‹œì˜¤.</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
-
+
<td>ì´ë²¤íЏ ê¸°ê°„ì„ <a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a> 형ì‹ìœ¼ë¡œ 나타낸 것입니다.
-예를 들어 <code>&quot;PT1H&quot;</code> ê°’ì„ ë³´ë©´ ì´ë²¤íŠ¸ê°€ 한 시간 ì§€ì†ë  ê²ƒìž„ì„ ì•Œ 수 있고,
+예를 들어 <code>&quot;PT1H&quot;</code> ê°’ì„ ë³´ë©´ ì´ë²¤íŠ¸ê°€ 한 시간 ì§€ì†ë  ê²ƒìž„ì„ ì•Œ 수 있고,
<code>&quot;P2W&quot;</code>는 2ì£¼ì˜ ì§€ì† ê¸°ê°„ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.
</td>
@@ -444,39 +444,39 @@ android.provider.CalendarContract.Events} 참조를 확ì¸í•˜ì‹­ì‹œì˜¤.</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
-
+
<td>ê°’ì´ 1ì´ë©´ ì´ ì´ë²¤íŠ¸ê°€ 현지 시간대ì—서 ì •ì˜í•œ ë°”ì— ì˜í•´ 하루 ì¢…ì¼ ê±¸ë¦°ë‹¤ëŠ” ê²ƒì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.
ê°’ì´ 0ì´ë©´ ì´ê²ƒì´ 하루 중 언제ë¼ë„ 시작하고 ì¢…ë£Œë  ìˆ˜ 있는 정기 ì´ë²¤íЏë¼ëŠ” ê²ƒì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.
</td>
-
+
</tr>
-
-
+
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
-
- <td>ì´ë²¤íЏ 형ì‹ì˜ 반복 규칙입니다.
-예를 들면 다ìŒê³¼ 같습니다. <code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code> ë” ë§Žì€ ì˜ˆì‹œë¥¼ 확ì¸í•˜ë ¤ë©´
+
+ <td>ì´ë²¤íЏ 형ì‹ì˜ 반복 규칙입니다.
+예를 들면 다ìŒê³¼ 같습니다. <code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code> ë” ë§Žì€ ì˜ˆì‹œë¥¼ 확ì¸í•˜ë ¤ë©´
<a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">여기</a>를 참조하십시오.</td>
-
+
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
- <td>ì´ë²¤íŠ¸ì˜ ë°˜ë³µ 날짜입니다.
+ <td>ì´ë²¤íŠ¸ì˜ ë°˜ë³µ 날짜입니다.
ì¼ë°˜ì ìœ¼ë¡œ {@link android.provider.CalendarContract.EventsColumns#RDATE}
를 {@link android.provider.CalendarContract.EventsColumns#RRULE}
ê³¼ 함께 사용하여 반복ë˜ëŠ” ë°œìƒì˜ 집계 ì§‘í•©ì„ ì •ì˜í•˜ê²Œ ë©ë‹ˆë‹¤.
ìžì„¸í•œ ë…¼ì˜ëŠ” <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">RFC5545 사양</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</td>
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
-
+
<td>ì´ ì´ë²¤íŠ¸ê°€ 사용 ì¤‘ì¸ ì‹œê°„ìœ¼ë¡œ 간주ë˜ëŠ”ì§€, 다시 ì¼ì •ì„ ì˜ˆì•½í•  수 있는 ìžìœ  시간으로 간주ë˜ëŠ”ì§€ë¥¼ 나타냅니다.
</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
@@ -494,7 +494,7 @@ android.provider.CalendarContract.Events} 참조를 확ì¸í•˜ì‹­ì‹œì˜¤.</p>
<h3 id="add-event">ì´ë²¤íЏ 추가</h3>
-<p>애플리케ì´ì…˜ì´ 새 ì´ë²¤íŠ¸ë¥¼ 추가하는 경우,
+<p>애플리케ì´ì…˜ì´ 새 ì´ë²¤íŠ¸ë¥¼ 추가하는 경우,
{@link android.content.Intent#ACTION_INSERT INSERT} ì¸í…트를 사용하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. ì´ë•Œ <a href="#intent-insert">ì¸í…트를 사용하여 ì´ë²¤íЏ 삽입</a>ì—서 설명한 대로 따릅니다. 그러나, 필요한 경우 ì§ì ‘ ì´ë²¤íŠ¸ë¥¼ ì‚½ìž…í•´ë„ ë©ë‹ˆë‹¤.
ì´ ì„¹ì…˜ì—서는 ì´ë ‡ê²Œ 하는 ë°©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.
</p>
@@ -508,39 +508,39 @@ android.provider.CalendarContract.EventsColumns#CALENDAR_ID}와 {@link
android.provider.CalendarContract.EventsColumns#DTSTART}를 í¬í•¨í•´ì•¼ 합니다.</li>
<li>{@link
-android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}ì„ í¬í•¨í•´ì•¼ 합니다.
+android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}ì„ í¬í•¨í•´ì•¼ 합니다.
ì‹œìŠ¤í…œì— ì„¤ì¹˜ëœ í‘œì¤€ 시간대 ID 목ë¡ì„ 가져오려면 {@link
java.util.TimeZone#getAvailableIDs()}를 사용하십시오. ì´ ê·œì¹™ì€ <a href="#intent-insert">ì¸í…트를 사용하여 ì´ë²¤íЏ 삽입</a>ì—서 설명한 바와 ê°™ì´
{@link
android.content.Intent#ACTION_INSERT INSERT} ì¸í…트를 통해서 ì´ë²¤íŠ¸ë¥¼ 삽입할 경우ì—는 ì ìš©ë˜ì§€ 않습니다. ì´ ì‹œë‚˜ë¦¬ì˜¤ì˜ ê²½ìš°,
기본 시간대가 제공ë©ë‹ˆë‹¤.</li>
-
+
<li>비반복ì ì¸ ì´ë²¤íŠ¸ì˜ ê²½ìš°, {@link
android.provider.CalendarContract.EventsColumns#DTEND}를 í¬í•¨í•´ì•¼ 합니다. </li>
-
-
+
+
<li>반복ì ì¸ ì´ë²¤íŠ¸ì˜ ê²½ìš° {@link
android.provider.CalendarContract.EventsColumns#DURATION}ê³¼ {@link
android.provider.CalendarContract.EventsColumns#RRULE} ë˜ëŠ” {@link
android.provider.CalendarContract.EventsColumns#RDATE}를 í¬í•¨í•´ì•¼ 합니다. ì´ ê·œì¹™ì€ <a href="#intent-insert">ì¸í…트를 사용하여 ì´ë²¤íЏ 삽입</a>ì—서 설명한 바와 ê°™ì´
{@link
-android.content.Intent#ACTION_INSERT INSERT} ì¸í…트를 통해서 ì´ë²¤íŠ¸ë¥¼ 삽입할 경우ì—는 ì ìš©ë˜ì§€ 않습니다.
+android.content.Intent#ACTION_INSERT INSERT} ì¸í…트를 통해서 ì´ë²¤íŠ¸ë¥¼ 삽입할 경우ì—는 ì ìš©ë˜ì§€ 않습니다.
ì´ ì‹œë‚˜ë¦¬ì˜¤ì—서는 {@link android.provider.CalendarContract.EventsColumns#DTSTART} ë° {@link android.provider.CalendarContract.EventsColumns#DTEND}와 함께 {@link
android.provider.CalendarContract.EventsColumns#RRULE}를 사용할 수 있고, ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ì´ ì´ê²ƒì„ 기간으로 ìžë™ 변환해ì¤ë‹ˆë‹¤.
</li>
-
+
</ul>
<p>다ìŒì€ ì´ë²¤íЏ ì‚½ìž…ì˜ ì˜ˆìž…ë‹ˆë‹¤. 단순하게 나타내기 위해 UI 스레드ì—서 수행한 것입니다.
실제로, 삽입과 ì—…ë°ì´íŠ¸ëŠ” 비ë™ê¸°í™” 스레드ì—서 수행해야 ìž‘ì—…ì„ ë°°ê²½ 스레드로 ì´ë™ì‹œí‚¬ 수 있습니다.
-
+
ìžì„¸í•œ 정보는 {@link android.content.AsyncQueryHandler}를 참조하십시오.</p>
<pre>
long calID = 3;
-long startMillis = 0;
-long endMillis = 0;
+long startMillis = 0;
+long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
@@ -561,13 +561,13 @@ Uri uri = cr.insert(Events.CONTENT_URI, values);
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
-//
+//
// ... do something with event ID
//
//</pre>
<p class="note"><strong>참고:</strong> ì´ë²¤íŠ¸ê°€ ìƒì„±ëœ ë‹¤ìŒ ì´ ì˜ˆì‹œê°€ ì´ë²¤íЏ ID를 캡처하는 ë²•ì„ ëˆˆì—¬ê²¨ 보십시오.
- ì´ê²ƒì´ ì´ë²¤íЏ ID를 가져오는 가장 쉬운 방법입니다.
+ ì´ê²ƒì´ ì´ë²¤íЏ ID를 가져오는 가장 쉬운 방법입니다.
다른 ìº˜ë¦°ë” ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê¸° 위해 ì´ë²¤íЏ IDê°€ 필요한 경우가 ìžì£¼ 있습니다. 예를 들어 ì´ë²¤íŠ¸ì— ì°¸ì„ìžë‚˜ ì•Œë¦¼ì„ ì¶”ê°€í•˜ëŠ” ë° í•„ìš”í•©ë‹ˆë‹¤.
</p>
@@ -577,15 +577,15 @@ long eventID = Long.parseLong(uri.getLastPathSegment());
<p>애플리케ì´ì…˜ì´ 사용ìžì—게 ì´ë²¤íЏ íŽ¸ì§‘ì„ í—ˆìš©í•  경우, <a href="#intent-edit">ì¸í…트로 ì´ë²¤íЏ 편집</a>ì—서 설명한 바와 ê°™ì´
{@link android.content.Intent#ACTION_EDIT EDIT} ì¸í…트
를 사용하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
-그러나 필요한 경우 ì§ì ‘ ì´ë²¤íŠ¸ë¥¼ íŽ¸ì§‘í•´ë„ ë©ë‹ˆë‹¤.
+그러나 필요한 경우 ì§ì ‘ ì´ë²¤íŠ¸ë¥¼ íŽ¸ì§‘í•´ë„ ë©ë‹ˆë‹¤.
ì´ë²¤íЏ ì—…ë°ì´íŠ¸ë¥¼ 수행하려면 ì´ë²¤íŠ¸ì˜ <code>_ID</code>를 URIì— ì¶”ê°€ëœ ID로({@link
-android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
ë˜ëŠ” 첫 번째 ì„ íƒ í•­ëª©ìœ¼ë¡œ 제공하면 ë©ë‹ˆë‹¤.
-
-ì„ íƒì€ <code>&quot;_id=?&quot;</code>로 시작해야 하며, 첫 번째
-<code>selectionArg</code>는 ì´ë²¤íŠ¸ì˜ <code>_ID</code>여야 합니다.
+
+ì„ íƒì€ <code>&quot;_id=?&quot;</code>로 시작해야 하며, 첫 번째
+<code>selectionArg</code>는 ì´ë²¤íŠ¸ì˜ <code>_ID</code>여야 합니다.
ID ì—†ì´ ì„ íƒì„ ì‚¬ìš©í•´ë„ ì—…ë°ì´íŠ¸ë¥¼ 수행할 수 있습니다. 다ìŒì€ ì´ë²¤íЏ ì—…ë°ì´íŠ¸ì˜ ì˜ˆìž…ë‹ˆë‹¤.
- 여기ì—서는 ì´ë²¤íЏ ì œëª©ì„ ë³€ê²½í•  때
+ 여기ì—서는 ì´ë²¤íЏ ì œëª©ì„ ë³€ê²½í•  때
{@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}
ë°©ë²•ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.</p>
@@ -598,7 +598,7 @@ ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
Uri updateUri = null;
// The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;);
+values.put(Events.TITLE, &quot;Kickboxing&quot;);
updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().update(updateUri, values, null, null);
Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows); </pre>
@@ -608,11 +608,11 @@ Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows); </pre>
<p>ì´ë²¤íŠ¸ë¥¼ 삭제하려면 ì´ë²¤íŠ¸ì˜ {@link
android.provider.BaseColumns#_ID}를 URIì— ì¶”ê°€ëœ ID로 ì¨ë„ ë˜ê³ , 표준 ì„ íƒì„ ì‚¬ìš©í•´ë„ ë©ë‹ˆë‹¤.
ì¶”ê°€ëœ ID를 사용하는 경우, ì„ íƒë„ í•  수 없습니다.
-ì‚­ì œì—는 ë‘ ê°€ì§€ ë²„ì „ì´ ìžˆìŠµë‹ˆë‹¤. 애플리케ì´ì…˜ìœ¼ë¡œ 삭제와 ë™ê¸°í™” ì–´ëŒ‘í„°ë¡œì˜ ì‚­ì œìž…ë‹ˆë‹¤.
-애플리케ì´ì…˜ ì‚­ì œì˜ ê²½ìš° <em>ì‚­ì œëœ</em> ì—´ì„ 1로 설정합니다.
-ì´ê²ƒì€ ë™ê¸°í™” ì–´ëŒ‘í„°ì— í–‰ì´ ì‚­ì œë˜ì—ˆë‹¤ê³  알리는 플래그ì´ë©°,
-ì´ ì‚­ì œë¥¼ ì„œë²„ì— ì•Œë ¤ì•¼ 한다는 ê²ƒì„ ë‚˜íƒ€ë‚´ê¸°ë„ í•©ë‹ˆë‹¤.
-ë™ê¸°í™” 어댑터 ì‚­ì œì˜ ê²½ìš°, ì´ë²¤íŠ¸ë¥¼ ì—°ê´€ëœ ë°ì´í„° ì¼ì²´ì™€ 함께 ë°ì´í„°ë² ì´ìФì—서 제거합니다.
+ì‚­ì œì—는 ë‘ ê°€ì§€ ë²„ì „ì´ ìžˆìŠµë‹ˆë‹¤. 애플리케ì´ì…˜ìœ¼ë¡œ 삭제와 ë™ê¸°í™” ì–´ëŒ‘í„°ë¡œì˜ ì‚­ì œìž…ë‹ˆë‹¤.
+애플리케ì´ì…˜ ì‚­ì œì˜ ê²½ìš° <em>ì‚­ì œëœ</em> ì—´ì„ 1로 설정합니다.
+ì´ê²ƒì€ ë™ê¸°í™” ì–´ëŒ‘í„°ì— í–‰ì´ ì‚­ì œë˜ì—ˆë‹¤ê³  알리는 플래그ì´ë©°,
+ì´ ì‚­ì œë¥¼ ì„œë²„ì— ì•Œë ¤ì•¼ 한다는 ê²ƒì„ ë‚˜íƒ€ë‚´ê¸°ë„ í•©ë‹ˆë‹¤.
+ë™ê¸°í™” 어댑터 ì‚­ì œì˜ ê²½ìš°, ì´ë²¤íŠ¸ë¥¼ ì—°ê´€ëœ ë°ì´í„° ì¼ì²´ì™€ 함께 ë°ì´í„°ë² ì´ìФì—서 제거합니다.
다ìŒì€ 애플리케ì´ì…˜ì´ ì´ë²¤íŠ¸ë¥¼ {@link android.provider.BaseColumns#_ID}를 통해 삭제하는 예입니다.</p>
@@ -625,22 +625,22 @@ ContentValues values = new ContentValues();
Uri deleteUri = null;
deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().delete(deleteUri, null, null);
-Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
</pre>
<h2 id="attendees">ì°¸ì„ìž í…Œì´ë¸”</h2>
<p>{@link android.provider.CalendarContract.Attendees} í…Œì´ë¸”ì˜ ê° í–‰ì€
-ì´ë²¤íŠ¸ì˜ ì°¸ì„ìž ë˜ëŠ” 게스트 하나를 나타냅니다.
+ì´ë²¤íŠ¸ì˜ ì°¸ì„ìž ë˜ëŠ” 게스트 하나를 나타냅니다.
{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
-를호출하면 주어진
-{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}와 함께 해당 ì´ë²¤íŠ¸ì˜ ì°¸ì„ìž ëª©ë¡ì„ 반환합니다.
+를호출하면 주어진
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}와 함께 해당 ì´ë²¤íŠ¸ì˜ ì°¸ì„ìž ëª©ë¡ì„ 반환합니다.
ì´ {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}는
특정 ì´ë²¤íŠ¸ì˜ {@link
-android.provider.BaseColumns#_ID}와 반드시 ì¼ì¹˜í•´ì•¼ 합니다.</p>
+android.provider.BaseColumns#_ID}와 반드시 ì¼ì¹˜í•´ì•¼ 합니다.</p>
<p>ë‹¤ìŒ í‘œëŠ” 쓸 수 있는 필드를 목ë¡ìœ¼ë¡œ 나열한 것입니다.
- 새 ì°¸ì„ìžë¥¼ 삽입하는 경우 ì´ ëª¨ë‘를 í¬í•¨í•´ì•¼ 하며,
+ 새 ì°¸ì„ìžë¥¼ 삽입하는 경우 ì´ ëª¨ë‘를 í¬í•¨í•´ì•¼ 하며,
단 <code>ATTENDEE_NAME</code>ì€ ì˜ˆì™¸ìž…ë‹ˆë‹¤.
</p>
@@ -697,7 +697,7 @@ android.provider.BaseColumns#_ID}와 반드시 ì¼ì¹˜í•´ì•¼ 합니다.</p>
<h3 id="add-attendees">ì°¸ì„ìž ì¶”ê°€</h3>
-<p>다ìŒì€ ì´ë²¤íŠ¸ì— ì°¸ì„ìž í•œ ëª…ì„ ì¶”ê°€í•˜ëŠ” 예입니다.
+<p>다ìŒì€ ì´ë²¤íŠ¸ì— ì°¸ì„ìž í•œ ëª…ì„ ì¶”ê°€í•˜ëŠ” 예입니다.
{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
ê°€ í•„ìˆ˜ì¸ ì ì„ 유ë…하십시오.</p>
@@ -717,8 +717,8 @@ Uri uri = cr.insert(Attendees.CONTENT_URI, values);
<h2 id="reminders">알림 í…Œì´ë¸”</h2>
-<p>{@link android.provider.CalendarContract.Reminders}
-í…Œì´ë¸”ì˜ ê° í–‰ì€ ì´ë²¤íŠ¸ì˜ ì•Œë¦¼ 하나를 나타냅니다.
+<p>{@link android.provider.CalendarContract.Reminders}
+í…Œì´ë¸”ì˜ ê° í–‰ì€ ì´ë²¤íŠ¸ì˜ ì•Œë¦¼ 하나를 나타냅니다.
{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} 를 호출하면
주어진 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}와 함께 ì´ë²¤íЏ 알림 목ë¡ì„ 반환합니다.</p>
@@ -728,7 +728,7 @@ Uri uri = cr.insert(Attendees.CONTENT_URI, values);
ë™ê¸°í™” 어댑터가 {@link
android.provider.CalendarContract.Calendars} í…Œì´ë¸”ì—서 ì§€ì›í•˜ëŠ” ì•Œë¦¼ì„ ë‚˜íƒ€ë‚¸ë‹¤ëŠ” ì ì„ 눈여겨 보십시오.
ìžì„¸í•œ ë‚´ìš©ì€
-{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
를 참조하십시오.</p>
@@ -774,15 +774,15 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
<h2 id="instances">ì¸ìŠ¤í„´ìŠ¤ í…Œì´ë¸”</h2>
<p>
-{@link android.provider.CalendarContract.Instances} í…Œì´ë¸”ì—는
+{@link android.provider.CalendarContract.Instances} í…Œì´ë¸”ì—는
ì´ë²¤íЏ ë°œìƒì˜ 시작 ë° ì¢…ë£Œ ì‹œê°„ì´ ë‹´ê²¨ 있습니다. ì´ í…Œì´ë¸”ì˜ ê° í–‰ì´ í•˜ë‚˜ì˜ ì´ë²¤íЏ ë°œìƒì„ 나타냅니다.
ì´ ì¸ìŠ¤í„´ìŠ¤ í…Œì´ë¸”ì€ ì“¸ 수 없으며 ì´ë²¤íЏ ë°œìƒ ì¿¼ë¦¬ ë°©ë²•ì„ ì œê³µí•  ë¿ìž…니다.
</p>
-<p>ë‹¤ìŒ í‘œì—는 ì¸ìŠ¤í„´ìŠ¤ì— ëŒ€í•´ 쿼리할 수 있는 몇 가지 필드를 목ë¡ìœ¼ë¡œ 나열하였습니다.
-표준 시간대가
+<p>ë‹¤ìŒ í‘œì—는 ì¸ìŠ¤í„´ìŠ¤ì— ëŒ€í•´ 쿼리할 수 있는 몇 가지 필드를 목ë¡ìœ¼ë¡œ 나열하였습니다.
+표준 시간대가
{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
- ë°
+ ë°
{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}ì— ì˜í•´ ì •ì˜ëœë‹¤ëŠ” ì ì„ 눈여겨 보십시오.</p>
@@ -801,18 +801,18 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
-
+
<td>ì¸ìŠ¤í„´ìŠ¤ì˜ ìœ¨ë¦¬ìš°ìŠ¤ë ¥ 종료 날짜를 캘린ë”ì˜ ì‹œê°„ëŒ€ì— ë¹„ë¡€í•˜ì—¬ 나타낸 것입니다.
-
-
+
+
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
-
+
<td>ì¸ìŠ¤í„´ìŠ¤ì˜ ì¢…ë£Œ 시간(ë¶„ 단위)ì„ ìº˜ë¦°ë” ì‹œê°„ëŒ€ì˜ ìžì •부터 측정한 것입니다.
</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
@@ -820,16 +820,16 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
- <td>ì¸ìŠ¤í„´ìŠ¤ì˜ ìœ¨ë¦¬ìš°ìŠ¤ë ¥ 시작 날짜를 캘린ë”ì˜ ì‹œê°„ëŒ€ì— ë¹„ë¡€í•˜ì—¬ 나타낸 것입니다.
+ <td>ì¸ìŠ¤í„´ìŠ¤ì˜ ìœ¨ë¦¬ìš°ìŠ¤ë ¥ 시작 날짜를 캘린ë”ì˜ ì‹œê°„ëŒ€ì— ë¹„ë¡€í•˜ì—¬ 나타낸 것입니다.
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-
+
<td>ì¸ìŠ¤í„´ìŠ¤ì˜ ì‹œìž‘ 시간(ë¶„ 단위)ì„ ìº˜ë¦°ë” ì‹œê°„ëŒ€ì— ë¹„ë¡€í•˜ì—¬ ìžì •부터 측정한 것입니다.
-
+
</td>
-
+
</tr>
</table>
@@ -839,10 +839,10 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
<p>ì¸ìŠ¤í„´ìŠ¤ í…Œì´ë¸”ì„ ì¿¼ë¦¬í•˜ë ¤ë©´, 해당 ì¿¼ë¦¬ì— ëŒ€í•œ 범위 ì‹œê°„ì„ URIì— ì§€ì •í•´ì•¼ 합니다.
ì´ ì˜ˆì‹œì—서는 {@link android.provider.CalendarContract.Instances}
ê°€ {@link
-android.provider.CalendarContract.EventsColumns#TITLE} í•„ë“œì— ì•¡ì„¸ìŠ¤ ê¶Œí•œì„ ì–»ìœ¼ë©°, ì´ë•Œ
-{@link android.provider.CalendarContract.EventsColumns} ì¸í„°íŽ˜ì´ìŠ¤ì˜ êµ¬í˜„ì„ í†µí•©ë‹ˆë‹¤.
+android.provider.CalendarContract.EventsColumns#TITLE} í•„ë“œì— ì•¡ì„¸ìŠ¤ ê¶Œí•œì„ ì–»ìœ¼ë©°, ì´ë•Œ
+{@link android.provider.CalendarContract.EventsColumns} ì¸í„°íŽ˜ì´ìŠ¤ì˜ êµ¬í˜„ì„ í†µí•©ë‹ˆë‹¤.
바꿔 ë§í•˜ë©´, {@link
-android.provider.CalendarContract.EventsColumns#TITLE}ì´
+android.provider.CalendarContract.EventsColumns#TITLE}ì´
ë°ì´í„°ë² ì´ìФ 보기를 통해 반환ë˜ë©° ì›ì‹œ {@link
android.provider.CalendarContract.Instances} í…Œì´ë¸” 쿼리를 통해서가 아니ë¼ëŠ” 뜻입니다.</p>
@@ -853,7 +853,7 @@ public static final String[] INSTANCE_PROJECTION = new String[] {
Instances.BEGIN, // 1
Instances.TITLE // 2
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_BEGIN_INDEX = 1;
@@ -868,7 +868,7 @@ long startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2011, 10, 24, 8, 0);
long endMillis = endTime.getTimeInMillis();
-
+
Cursor cur = null;
ContentResolver cr = getContentResolver();
@@ -883,28 +883,28 @@ ContentUris.appendId(builder, startMillis);
ContentUris.appendId(builder, endMillis);
// Submit the query
-cur = cr.query(builder.build(),
- INSTANCE_PROJECTION,
- selection,
- selectionArgs,
+cur = cr.query(builder.build(),
+ INSTANCE_PROJECTION,
+ selection,
+ selectionArgs,
null);
-
+
while (cur.moveToNext()) {
String title = null;
long eventID = 0;
- long beginVal = 0;
-
+ long beginVal = 0;
+
// Get the field values
eventID = cur.getLong(PROJECTION_ID_INDEX);
beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
title = cur.getString(PROJECTION_TITLE_INDEX);
-
- // Do something with the values.
- Log.i(DEBUG_TAG, "Event: " + title);
+
+ // Do something with the values.
+ Log.i(DEBUG_TAG, "Event: " + title);
Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(beginVal);
+ calendar.setTimeInMillis(beginVal);
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
- Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
+ Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
}
}</pre>
@@ -922,9 +922,9 @@ while (cur.moveToNext()) {
<td><br>
{@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
<td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
-
-{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}ë¡œë„ URI를 참조할 수 있습니다.
-ì´ ì¸í…트 ì‚¬ìš©ë²•ì˜ ì˜ˆì‹œë¥¼ 보려면 <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">ì¸í…트를 사용하여 ìº˜ë¦°ë” ë°ì´í„° 보기</a>를 참조하십시오.
+
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}ë¡œë„ URI를 참조할 수 있습니다.
+ì´ ì¸í…트 ì‚¬ìš©ë²•ì˜ ì˜ˆì‹œë¥¼ 보려면 <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">ì¸í…트를 사용하여 ìº˜ë¦°ë” ë°ì´í„° 보기</a>를 참조하십시오.
</td>
<td>캘린ë”를 <code>&lt;ms_since_epoch&gt;</code>ì— ì˜í•´ ì§€ì •ëœ ì‹œê°„ìœ¼ë¡œ 엽니다.</td>
@@ -935,11 +935,11 @@ while (cur.moveToNext()) {
</td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
-
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}ë¡œë„ URI를 참조할 수 있습니다.
+
+
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}ë¡œë„ URI를 참조할 수 있습니다.
ì´ ì¸í…트 ì‚¬ìš©ë²•ì˜ ì˜ˆì‹œë¥¼ 보려면 <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">ì¸í…트를 사용하여 ìº˜ë¦°ë” ë°ì´í„° 보기</a>를 참조하십시오.
-
+
</td>
<td><code>&lt;event_id&gt;</code>ì— ì˜í•´ ì§€ì •ëœ ì´ë²¤íŠ¸ë¥¼ 봅니다.</td>
@@ -952,12 +952,12 @@ while (cur.moveToNext()) {
<tr>
<td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
-
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}ë¡œë„ URI를 참조할 수 있습니다.
+
+
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}ë¡œë„ URI를 참조할 수 있습니다.
ì´ ì¸í…트 ì‚¬ìš©ë²•ì˜ ì˜ˆì‹œë¥¼ 보려면 <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">ì¸í…트를 사용하여 ì´ë²¤íЏ 편집</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
-
-
+
+
</td>
<td><code>&lt;event_id&gt;</code>ì— ì˜í•´ ì§€ì •ëœ ì´ë²¤íŠ¸ë¥¼ 편집합니다.</td>
@@ -972,11 +972,11 @@ while (cur.moveToNext()) {
<br>
{@link android.content.Intent#ACTION_INSERT INSERT} </td>
<td><p><code>content://com.android.calendar/events</code></p>
-
-
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}ë¡œë„ URI를 참조할 수 있습니다.
+
+
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}ë¡œë„ URI를 참조할 수 있습니다.
ì´ ì¸í…트 ì‚¬ìš©ë²•ì˜ ì˜ˆì‹œë¥¼ 보려면 <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">ì¸í…트를 사용하여 ì´ë²¤íЏ 삽입</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
-
+
</td>
<td>ì´ë²¤íŠ¸ë¥¼ ìƒì„±í•©ë‹ˆë‹¤.</td>
@@ -996,7 +996,7 @@ while (cur.moveToNext()) {
<td>ì´ë²¤íŠ¸ì˜ ì´ë¦„입니다.</td>
</tr>
<tr>
-
+
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<td>ì´ë²¤íЏ 시작 ì‹œê°„ì„ Epoch로부터 밀리초 단위로 나타낸 것입니다.</td>
@@ -1004,25 +1004,25 @@ CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME}</td>
-
+
<td>ì´ë²¤íЏ 종료 ì‹œê°„ì„ Epoch로부터 밀리초 단위로 나타낸 것입니다.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
-
- <td>ì´ë²¤íŠ¸ê°€ ì¢…ì¼ ì´ë²¤íЏì¸ì§€ 나타내는 부울입니다. ê°’ì€
+
+ <td>ì´ë²¤íŠ¸ê°€ ì¢…ì¼ ì´ë²¤íЏì¸ì§€ 나타내는 부울입니다. ê°’ì€
<code>true</code> ë˜ëŠ” <code>false</code>ê°€ ë  ìˆ˜ 있습니다.</td> </tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
Events.EVENT_LOCATION}</td>
-
+
<td>ì´ë²¤íЏ 위치입니다.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
Events.DESCRIPTION}</td>
-
+
<td>ì´ë²¤íЏ 설명입니다.</td>
</tr>
<tr>
@@ -1039,43 +1039,43 @@ Events.DESCRIPTION}</td>
<td>
{@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
Events.ACCESS_LEVEL}</td>
-
+
<td>ì´ë²¤íŠ¸ê°€ 비공개ì¸ì§€ 공개ì¸ì§€ 나타냅니다.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
Events.AVAILABILITY}</td>
-
+
<td>ì´ ì´ë²¤íŠ¸ê°€ 사용 ì¤‘ì¸ ì‹œê°„ìœ¼ë¡œ 간주ë˜ëŠ”ì§€, 다시 ì¼ì •ì„ ì˜ˆì•½í•  수 있는 ìžìœ  시간으로 간주ë˜ëŠ”ì§€ë¥¼ 나타냅니다.</td>
-
-</table>
+
+</table>
<p>아래 섹션ì—서는 ì´ì™€ ê°™ì€ ì¸í…íŠ¸ì˜ ì‚¬ìš©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.</p>
<h3 id="intent-insert">ì¸í…트를 사용하여 ì´ë²¤íЏ 삽입</h3>
-<p>{@link android.content.Intent#ACTION_INSERT INSERT} ì¸í…트를 사용하면
+<p>{@link android.content.Intent#ACTION_INSERT INSERT} ì¸í…트를 사용하면
캘린ë”ì— ì´ë²¤íЏ 삽입 ìž‘ì—…ì„ ë¶„ë°°í•  수 있습니다.
ì´ ë°©ë²•ì„ ì‚¬ìš©í•˜ëŠ” 경우, 애플리케ì´ì…˜ì˜ <a href="#manifest">매니페스트 파ì¼</a>ì— {@link
android.Manifest.permission#WRITE_CALENDAR} ê¶Œí•œì„ í¬í•¨í•  필요가 없습니다.</p>
-
+
<p>사용ìžê°€ ì´ ë°©ë²•ì„ ì‚¬ìš©í•˜ëŠ” 애플리케ì´ì…˜ì„ 실행하면 해당 애플리케ì´ì…˜ì´
사용ìžë¥¼ 캘린ë”로 ë³´ë‚´ ì´ë²¤íЏ 추가를 완료합니다. {@link
android.content.Intent#ACTION_INSERT INSERT} ì¸í…트는 추가 필드를 사용하여
-캘린ë”ì— ìžˆëŠ” ì´ë²¤íЏ 세부 정보로 ì–‘ì‹ì„ 미리 채ì›ë‹ˆë‹¤.
-그러면 사용ìžê°€ ì´ë²¤íŠ¸ë¥¼ 취소하거나 ì–‘ì‹ì„ í•„ìš”ì— ë”°ë¼ íŽ¸ì§‘í•  수 있고,
+캘린ë”ì— ìžˆëŠ” ì´ë²¤íЏ 세부 정보로 ì–‘ì‹ì„ 미리 채ì›ë‹ˆë‹¤.
+그러면 사용ìžê°€ ì´ë²¤íŠ¸ë¥¼ 취소하거나 ì–‘ì‹ì„ í•„ìš”ì— ë”°ë¼ íŽ¸ì§‘í•  수 있고,
ì´ë²¤íŠ¸ë¥¼ 본ì¸ì˜ 캘린ë”ì— ì €ìž¥í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
-
-<p>다ìŒì€ 2012ë…„ 1ì›” 19ì¼ì— ì´ë²¤íЏ ì¼ì •ì„ ì˜ˆì•½í•˜ëŠ” 코드 ì¡°ê°ìœ¼ë¡œ,
+
+<p>다ìŒì€ 2012ë…„ 1ì›” 19ì¼ì— ì´ë²¤íЏ ì¼ì •ì„ ì˜ˆì•½í•˜ëŠ” 코드 ì¡°ê°ìœ¼ë¡œ,
ì´ëŠ” 오전 7:30~오전 8:30까지 실행ë©ë‹ˆë‹¤. ì´ ì½”ë“œ ì¡°ê°ì— 관해서는 ë‹¤ìŒ ë‚´ìš©ì„ ì£¼ì˜í•˜ì‹­ì‹œì˜¤.</p>
<ul>
<li>ì´ê²ƒì€ {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}를 URI로 지정합니다.
</li>
-
+
<li>ì´ê²ƒì€ {@link
android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME} ë° {@link
@@ -1083,10 +1083,10 @@ android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME} 추가 필드를 사용하여 ì´ë²¤íЏ 시간으로 ì–‘ì‹ì„ 미리 채ì›ë‹ˆë‹¤.
ì´ëŸ¬í•œ ì‹œê°„ì— í•´ë‹¹í•˜ëŠ” ê°’ì€ Epoch로부터 UTC 밀리초 단위로 표시해야 합니다.
</li>
-
+
<li>ì´ê²ƒì€ {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
추가 필드를 사용하여 쉼표로 êµ¬ë¶„ëœ ì´ˆì²­ì¸ ëª©ë¡ì„ 제공하며, ì´ëŠ” ì´ë©”ì¼ ì£¼ì†Œë¡œ 나타납니다.</li>
-
+
</ul>
<pre>
Calendar beginTime = Calendar.getInstance();
@@ -1108,7 +1108,7 @@ startActivity(intent);
<h3 id="intent-edit">ì¸í…트를 사용하여 ì´ë²¤íЏ 편집</h3>
<p><a href="#update-event">ì´ë²¤íЏ ì—…ë°ì´íЏ</a>ì—서 설명한 바와 ê°™ì´ ì´ë²¤íŠ¸ë¥¼ ì§ì ‘ ì—…ë°ì´íŠ¸í•  수 있습니다. 그러나 {@link
-android.content.Intent#ACTION_EDIT EDIT} ì¸í…트를 사용하면
+android.content.Intent#ACTION_EDIT EDIT} ì¸í…트를 사용하면
ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ì— ì´ë²¤íЏ íŽ¸ì§‘ì„ ë¶„ë°°í•  ê¶Œí•œì´ ì—†ëŠ” 애플리케ì´ì…˜ì„ 허용합니다.
사용ìžê°€ 캘린ë”ì—서 ì´ë²¤íЏ íŽ¸ì§‘ì„ ë§ˆì¹˜ë©´ ì›ëž˜ 애플리케ì´ì…˜ìœ¼ë¡œ ëŒì•„오게 ë©ë‹ˆë‹¤.
</p> <p>다ìŒì€ ì§€ì •ëœ ì´ë²¤íŠ¸ì— ìƒˆ ì œëª©ì„ ì„¤ì •í•˜ì—¬ 사용ìžì—게 캘린ë”ì—서 ì´ë²¤íŠ¸ë¥¼ 편집할 수 있ë„ë¡ í•´ì£¼ëŠ” ì¸í…íŠ¸ì˜ ì˜ˆìž…ë‹ˆë‹¤.
@@ -1158,18 +1158,18 @@ startActivity(intent);
<ul>
<li>ë™ê¸°í™” 어댑터는 {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER}를 <code>true</code>로 설정하여 ì´ê²ƒì´ ë™ê¸°í™” 어댑터ë¼ëŠ” ê²ƒì„ ë‚˜íƒ€ë‚´ì•¼ 합니다.</li>
-
-
+
+
<li>ë™ê¸°í™” 어댑터는 URIì—서 쿼리 매개변수로 {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME}ê³¼ {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE}ì„ ì œê³µí•´ì•¼ 합니다. </li>
-
+
<li>ë™ê¸°í™” 어댑터ì—는 애플리케ì´ì…˜ ë˜ëŠ” ìœ„ì ¯ì— ë¹„í•´ ë” ë§Žì€ ì—´ì— ëŒ€í•œ 쓰기 액세스 ê¶Œí•œì´ ìžˆìŠµë‹ˆë‹¤.
- 예를 들어, 애플리케ì´ì…˜ì€ 캘린ë”ì˜ ëª‡ 가지 특성만 수정할 수 있습니다.
+ 예를 들어, 애플리케ì´ì…˜ì€ 캘린ë”ì˜ ëª‡ 가지 특성만 수정할 수 있습니다.
즉 ì´ë¦„, 표시 ì´ë¦„, 가시성 설정 ë° ìº˜ë¦°ë” ë™ê¸°í™” 여부 등만 해당ë©ë‹ˆë‹¤.
ì´ì— 비해 ë™ê¸°í™” ì–´ëŒ‘í„°ì˜ ê²½ìš° ì´ ì—´ë§Œì´ ì•„ë‹ˆë¼ ë‹¤ë¥¸ ìˆ˜ë§Žì€ ì—´ì—ë„ ì•¡ì„¸ìŠ¤í•  수 있습니다.
예를 들어 ìº˜ë¦°ë” ìƒ‰ìƒ, 표준 시간대, 액세스 수준 ë“±ì´ í•´ë‹¹ë©ë‹ˆë‹¤.
-다만, ë™ê¸°í™” 어댑터는 ì§€ì •ëœ <code>ACCOUNT_NAME</code> ë°
+다만, ë™ê¸°í™” 어댑터는 ì§€ì •ëœ <code>ACCOUNT_NAME</code> ë°
<code>ACCOUNT_TYPE</code>ì— í•œì •ë©ë‹ˆë‹¤.</li> </ul>
<p>다ìŒì€ URI를 반환하여 ë™ê¸°í™” 어댑터와 사용하ë„ë¡ í•  때 쓸 수 있는 ë„우미 메서드입니다.</p>
@@ -1180,5 +1180,5 @@ android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE}ì„ ì œê³µí•´ì•¼ í•©ë
.appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
}
</pre>
-<p>ë™ê¸°í™” ì–´ëŒ‘í„°ì˜ ìƒ˜í”Œ 구현(캘린ë”ì— êµ¬ì²´ì ìœ¼ë¡œ ê´€ë ¨ëœ ê²ƒì´ ì•„ë‹˜)ì€
+<p>ë™ê¸°í™” ì–´ëŒ‘í„°ì˜ ìƒ˜í”Œ 구현(캘린ë”ì— êµ¬ì²´ì ìœ¼ë¡œ ê´€ë ¨ëœ ê²ƒì´ ì•„ë‹˜)ì€
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdpater</a>를 참조하십시오.
diff --git a/docs/html-intl/intl/ko/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/ko/guide/topics/providers/contacts-provider.jd
index 94d3295c1d46..ad60b6dfbd85 100644
--- a/docs/html-intl/intl/ko/guide/topics/providers/contacts-provider.jd
+++ b/docs/html-intl/intl/ko/guide/topics/providers/contacts-provider.jd
@@ -83,12 +83,12 @@ page.title=ì—°ë½ì²˜ 제공ìž
</div>
<p>
콘í…츠 제공ìžëŠ” ê¸°ê¸°ì˜ ì‚¬ëžŒì— ëŒ€í•œ 중앙 ë°ì´í„° 리í¬ì§€í† ë¦¬ë¥¼ 관리하는 강력하고 유연한
-Android 구성 요소입니다. 콘í…츠 제공ìžëŠ” ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 개발ìžì—게 표시ë˜ëŠ”
-ë°ì´í„°ì˜ 출처입니다. ì—¬ê¸°ì˜ ë°ì´í„°ì—는 ê°œë°œìž ìžì‹ ì˜ 애플리케ì´ì…˜ì—서
-액세스하여 기기와 온ë¼ì¸ 서비스 사ì´ì—서 ë°ì´í„°ë¥¼ 전송할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 제공ìžëŠ”
-광범위한 ë°ì´í„° 소스를 수용하며 ê° ì¸ë¬¼ì— 대해 가능한 한 ë§Žì€ ë°ì´í„°ë¥¼ 관리하여야 하므로, ê·¸ ê²°ê³¼ ì¡°ì§ì´ 무척
-복잡합니다. ì´ ë•Œë¬¸ì— ì´ ì œê³µìžì˜ APIì—는
-광범위한 계약 í´ëž˜ìŠ¤ì™€ ì¸í„°íŽ˜ì´ìФ 세트가 í¬í•¨ë˜ì–´ 있어 ë°ì´í„° 검색과 ìˆ˜ì •ì„ ëª¨ë‘ í•œì¸µ
+Android 구성 요소입니다. 콘í…츠 제공ìžëŠ” ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 개발ìžì—게 표시ë˜ëŠ”
+ë°ì´í„°ì˜ 출처입니다. ì—¬ê¸°ì˜ ë°ì´í„°ì—는 ê°œë°œìž ìžì‹ ì˜ 애플리케ì´ì…˜ì—서
+액세스하여 기기와 온ë¼ì¸ 서비스 사ì´ì—서 ë°ì´í„°ë¥¼ 전송할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 제공ìžëŠ”
+광범위한 ë°ì´í„° 소스를 수용하며 ê° ì¸ë¬¼ì— 대해 가능한 한 ë§Žì€ ë°ì´í„°ë¥¼ 관리하여야 하므로, ê·¸ ê²°ê³¼ ì¡°ì§ì´ 무척
+복잡합니다. ì´ ë•Œë¬¸ì— ì´ ì œê³µìžì˜ APIì—는
+광범위한 계약 í´ëž˜ìŠ¤ì™€ ì¸í„°íŽ˜ì´ìФ 세트가 í¬í•¨ë˜ì–´ 있어 ë°ì´í„° 검색과 ìˆ˜ì •ì„ ëª¨ë‘ í•œì¸µ
ìš©ì´í•˜ê²Œ í•´ì¤ë‹ˆë‹¤.
</p>
<p>
@@ -105,23 +105,23 @@ Android 구성 요소입니다. 콘í…츠 제공ìžëŠ” ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì• í”
제공ìžì—서 ë°ì´í„°ë¥¼ 수정하는 방법.
</li>
<li>
- ë™ê¸°í™” 어댑터를 작성하여 서버ì—서 가져온 ë°ì´í„°ë¥¼ ì—°ë½ì²˜ 제공ìžì™€
+ ë™ê¸°í™” 어댑터를 작성하여 서버ì—서 가져온 ë°ì´í„°ë¥¼ ì—°ë½ì²˜ 제공ìžì™€
ë™ê¸°í™”하는 방법.
</li>
</ul>
<p>
- ì´ ê°€ì´ë“œëŠ” ë…ìžê°€ Android 콘í…츠 제공ìžì˜ 기본 정보를 알고 있는 것으로 간주합니다. Android 콘í…츠 제공ìžì—
-관한 ìžì„¸í•œ ë‚´ìš©ì€
+ ì´ ê°€ì´ë“œëŠ” ë…ìžê°€ Android 콘í…츠 제공ìžì˜ 기본 정보를 알고 있는 것으로 간주합니다. Android 콘í…츠 제공ìžì—
+관한 ìžì„¸í•œ ë‚´ìš©ì€
<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
-콘í…츠 ì œê³µìž ê¸°ë³¸ ì •ë³´</a> ê°€ì´ë“œë¥¼ ì½ì–´ë³´ì‹­ì‹œì˜¤.
+콘í…츠 ì œê³µìž ê¸°ë³¸ ì •ë³´</a> ê°€ì´ë“œë¥¼ ì½ì–´ë³´ì‹­ì‹œì˜¤.
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">샘플 ë™ê¸°í™” 어댑터</a>
샘플 ì•±ì€ ë™ê¸°í™” 어댑터를 사용하여 ì—°ë½ì²˜ 제공ìžì™€ Google Web Servicesê°€ 호스팅하는 샘플 애플리케ì´ì…˜ 사ì´ì—서
ë°ì´í„°ë¥¼ 전송하는 ë™ê¸°í™” ì–´ëŒ‘í„°ì˜ ì‚¬ìš© 예시입니다.
</p>
<h2 id="InformationTypes">ì—°ë½ì²˜ ì œê³µìž ì¡°ì§</h2>
<p>
- ì—°ë½ì²˜ 제공ìžëŠ” Android 콘í…츠 ì œê³µìž êµ¬ì„± 요소입니다. ì´ê²ƒì€ 한 ì‚¬ëžŒì— ëŒ€í•´
-ê°ê¸° 세 가지 ìœ í˜•ì˜ ë°ì´í„°ë¥¼ 관리합니다. ê° ë°ì´í„°ëŠ” 그림 1ì—서 설명하는 바와 ê°™ì´ ì œê³µìžê°€ 제공하는
+ ì—°ë½ì²˜ 제공ìžëŠ” Android 콘í…츠 ì œê³µìž êµ¬ì„± 요소입니다. ì´ê²ƒì€ 한 ì‚¬ëžŒì— ëŒ€í•´
+ê°ê¸° 세 가지 ìœ í˜•ì˜ ë°ì´í„°ë¥¼ 관리합니다. ê° ë°ì´í„°ëŠ” 그림 1ì—서 설명하는 바와 ê°™ì´ ì œê³µìžê°€ 제공하는
ê° í…Œì´ë¸”ì— ìƒì‘합니다.
</p>
<img src="{@docRoot}images/providers/contacts_structure.png" alt="" height="364" id="figure1" />
@@ -129,7 +129,7 @@ Android 구성 요소입니다. 콘í…츠 제공ìžëŠ” ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì• í”
<strong>그림 1.</strong> ì—°ë½ì²˜ ì œê³µìž í…Œì´ë¸” 구조입니다.
</p>
<p>
- ì´ ì„¸ ê°œì˜ í…Œì´ë¸”ì€ ë³´í†µ ìžì‹ ì˜ 계약 í´ëž˜ìŠ¤ì˜ ì´ë¦„으로 불립니다. ì´ë“¤ í´ëž˜ìŠ¤ëŠ”
+ ì´ ì„¸ ê°œì˜ í…Œì´ë¸”ì€ ë³´í†µ ìžì‹ ì˜ 계약 í´ëž˜ìŠ¤ì˜ ì´ë¦„으로 불립니다. ì´ë“¤ í´ëž˜ìŠ¤ëŠ”
í…Œì´ë¸”ì—서 사용하는 콘í…츠 URI, ì—´ ì´ë¦„ ë° ì—´ ê°’ì˜ ìƒìˆ˜ë¥¼ ì •ì˜í•©ë‹ˆë‹¤.
</p>
<dl>
@@ -153,29 +153,29 @@ Android 구성 요소입니다. 콘í…츠 제공ìžëŠ” ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì• í”
</dd>
</dl>
<p>
- {@link android.provider.ContactsContract}ì˜ ê³„ì•½ í´ëž˜ìŠ¤ê°€ 대표하는 다른 í…Œì´ë¸”ì€
-ë³´ì¡° í…Œì´ë¸”로, ì—°ë½ì²˜ 제공ìžëŠ” ì´ë“¤ì„ 사용하여 ìž‘ì—…ì„ ê´€ë¦¬í•˜ê±°ë‚˜ ê¸°ê¸°ì˜ ì—°ë½ì²˜ì— 있는
+ {@link android.provider.ContactsContract}ì˜ ê³„ì•½ í´ëž˜ìŠ¤ê°€ 대표하는 다른 í…Œì´ë¸”ì€
+ë³´ì¡° í…Œì´ë¸”로, ì—°ë½ì²˜ 제공ìžëŠ” ì´ë“¤ì„ 사용하여 ìž‘ì—…ì„ ê´€ë¦¬í•˜ê±°ë‚˜ ê¸°ê¸°ì˜ ì—°ë½ì²˜ì— 있는
특정 기능 ë˜ëŠ” ì „í™” 통신 애플리케ì´ì…˜ ë“±ì„ ì§€ì›í•©ë‹ˆë‹¤.
</p>
<h2 id="RawContactBasics">ì›ì‹œ ì—°ë½ì²˜</h2>
<p>
- ì›ì‹œ ì—°ë½ì²˜ëŠ” ë‹¨ì¼ ê³„ì • 유형과 계정 ì´ë¦„ì—서 가져오는
-한 ì‚¬ëžŒì˜ ë°ì´í„°ë¥¼ 나타냅니다. ì—°ë½ì²˜ 제공ìžëŠ” 한 ì‚¬ëžŒì— ëŒ€í•´ 하나 ì´ìƒì˜ 온ë¼ì¸ 서비스를 ë°ì´í„°ì˜ 출처로 허용하므로,
+ ì›ì‹œ ì—°ë½ì²˜ëŠ” ë‹¨ì¼ ê³„ì • 유형과 계정 ì´ë¦„ì—서 가져오는
+한 ì‚¬ëžŒì˜ ë°ì´í„°ë¥¼ 나타냅니다. ì—°ë½ì²˜ 제공ìžëŠ” 한 ì‚¬ëžŒì— ëŒ€í•´ 하나 ì´ìƒì˜ 온ë¼ì¸ 서비스를 ë°ì´í„°ì˜ 출처로 허용하므로,
ì—°ë½ì²˜ 제공ìžì—서는 ê°™ì€ ì‚¬ëžŒì— ëŒ€í•´ 여러 ê°œì˜ ì›ì‹œ ì—°ë½ì²˜ë¥¼ 허용합니다.
- ì›ì‹œ ì—°ë½ì²˜ë¥¼ 여러 ê°œ 사용하면 사용ìžê°€ ê°™ì€ ê³„ì • ìœ í˜•ì˜ í•˜ë‚˜ ì´ìƒì˜ 계정ì—서 가져온
+ ì›ì‹œ ì—°ë½ì²˜ë¥¼ 여러 ê°œ 사용하면 사용ìžê°€ ê°™ì€ ê³„ì • ìœ í˜•ì˜ í•˜ë‚˜ ì´ìƒì˜ 계정ì—서 가져온
한 ì‚¬ëžŒì˜ ì—¬ëŸ¬ ë°ì´í„°ë¥¼ ì¡°í•©í•  수 있습니다.
</p>
<p>
- ì›ì‹œ ì—°ë½ì²˜ì˜ ë°ì´í„° 대부분ì€
-{@link android.provider.ContactsContract.RawContacts} í…Œì´ë¸”ì— ì €ìž¥ë˜ì§€ 않습니다. 대신,
+ ì›ì‹œ ì—°ë½ì²˜ì˜ ë°ì´í„° 대부분ì€
+{@link android.provider.ContactsContract.RawContacts} í…Œì´ë¸”ì— ì €ìž¥ë˜ì§€ 않습니다. 대신,
{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì—서 하나 ì´ìƒì˜ í–‰ì— ì €ìž¥ë©ë‹ˆë‹¤. ê° ë°ì´í„° í–‰ì—는
-ìƒìœ„ {@link android.provider.ContactsContract.RawContacts} í–‰ì˜ {@code android.provider.BaseColumns#_ID RawContacts._ID} ê°’ì„ í¬í•¨í•˜ëŠ”
-ì—´ {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID Data.RAW_CONTACT_ID}ê°€
+ìƒìœ„ {@link android.provider.ContactsContract.RawContacts} í–‰ì˜ {@code android.provider.BaseColumns#_ID RawContacts._ID} ê°’ì„ í¬í•¨í•˜ëŠ”
+ì—´ {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID Data.RAW_CONTACT_ID}ê°€
있습니다.
</p>
<h3 id="RawContactsColumns">중요한 ì›ì‹œ ì—°ë½ì²˜ ì—´</h3>
<p>
- {@link android.provider.ContactsContract.RawContacts} í…Œì´ë¸”ì˜ ì¤‘ìš”í•œ ì—´ì€
+ {@link android.provider.ContactsContract.RawContacts} í…Œì´ë¸”ì˜ ì¤‘ìš”í•œ ì—´ì€
표 1ì— ë‚˜ì—´ë˜ì–´ 있습니다. 표 ë’¤ì— ì´ì–´ì§€ëŠ” 참고 ì‚¬í•­ì„ ê¼­ ì½ì–´ì£¼ì‹­ì‹œì˜¤.
</p>
<p class="table-caption" id="table1">
@@ -193,13 +193,13 @@ Android 구성 요소입니다. 콘í…츠 제공ìžëŠ” ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì• í”
</td>
<td>
ì´ ì›ì‹œ ì—°ë½ì²˜ì˜ ì†ŒìŠ¤ì¸ ê³„ì • ìœ í˜•ì— ëŒ€í•œ 계정 ì´ë¦„입니다.
- 예를 들어, Google ê³„ì •ì˜ ê³„ì • ì´ë¦„ì€
-기기 소유ìžì˜ Gmail 주소 중 하나입니다. ìžì„¸í•œ 정보는
-{@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}ì˜
+ 예를 들어, Google ê³„ì •ì˜ ê³„ì • ì´ë¦„ì€
+기기 소유ìžì˜ Gmail 주소 중 하나입니다. ìžì„¸í•œ 정보는
+{@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}ì˜
ë‹¤ìŒ í•­ëª©ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
</td>
<td>
- ì´ ì´ë¦„ì˜ í˜•ì‹ì€ ê°ìžì˜ 계정 유형별로 다릅니다. ì´ê²ƒì€ ê¼­
+ ì´ ì´ë¦„ì˜ í˜•ì‹ì€ ê°ìžì˜ 계정 유형별로 다릅니다. ì´ê²ƒì€ ê¼­
ì´ë©”ì¼ ì£¼ì†Œì—¬ì•¼ 하는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤.
</td>
</tr>
@@ -208,13 +208,13 @@ Android 구성 요소입니다. 콘í…츠 제공ìžëŠ” ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì• í”
{@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}
</td>
<td>
- ì´ ì›ì‹œ ì—°ë½ì²˜ì˜ ì†ŒìŠ¤ì¸ ê³„ì • 유형입니다. 예를 들어, Google 계정ì˜
-계정 ìœ í˜•ì€ <code>com.google</code>입니다. 계정 ìœ í˜•ì„ ì •ê·œí™”í•  때ì—는 í•­ìƒ
-본ì¸ì´ 소유하거나 제어하는 ë„ë©”ì¸ì˜ ë„ë©”ì¸ ì‹ë³„ìžë¥¼ 사용하십시오. ì´ë ‡ê²Œ 하면 계정 ìœ í˜•ì´ ê³ ìœ í•œ 것ì´ë„ë¡
+ ì´ ì›ì‹œ ì—°ë½ì²˜ì˜ ì†ŒìŠ¤ì¸ ê³„ì • 유형입니다. 예를 들어, Google 계정ì˜
+계정 ìœ í˜•ì€ <code>com.google</code>입니다. 계정 ìœ í˜•ì„ ì •ê·œí™”í•  때ì—는 í•­ìƒ
+본ì¸ì´ 소유하거나 제어하는 ë„ë©”ì¸ì˜ ë„ë©”ì¸ ì‹ë³„ìžë¥¼ 사용하십시오. ì´ë ‡ê²Œ 하면 계정 ìœ í˜•ì´ ê³ ìœ í•œ 것ì´ë„ë¡
확실히 해둘 수 있습니다.
</td>
<td>
- ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 제공하는 계정 ìœ í˜•ì€ ëŒ€ê°œ ì—°ë½ì²˜ 제공ìžì™€ ë™ê¸°í™”ë˜ëŠ” ë™ê¸°í™” 어댑터와
+ ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 제공하는 계정 ìœ í˜•ì€ ëŒ€ê°œ ì—°ë½ì²˜ 제공ìžì™€ ë™ê¸°í™”ë˜ëŠ” ë™ê¸°í™” 어댑터와
ì—°ê´€ë˜ì–´ 있습니다.
</tr>
<tr>
@@ -225,44 +225,44 @@ Android 구성 요소입니다. 콘í…츠 제공ìžëŠ” ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì• í”
ì›ì‹œ ì—°ë½ì²˜ì— 대한 "ì‚­ì œë¨" 플래그입니다.
</td>
<td>
- ì´ í”Œëž˜ê·¸ë¥¼ 사용하면 ì—°ë½ì²˜ 제공ìžê°€ 해당 í–‰ì„ ë‚´ë¶€ì— ê³„ì† ìœ ì§€í•  수 있습니다.
-ì´ëŠ” ë™ê¸°í™” 어댑터가 해당 í–‰ì„ ìžì‹ ì˜ 서버ì—서 삭제하고 마침내는 í–‰ì„ ë¦¬í¬ì§€í† ë¦¬ì—ì„œë„ ì‚­ì œí•  수 있ì„
+ ì´ í”Œëž˜ê·¸ë¥¼ 사용하면 ì—°ë½ì²˜ 제공ìžê°€ 해당 í–‰ì„ ë‚´ë¶€ì— ê³„ì† ìœ ì§€í•  수 있습니다.
+ì´ëŠ” ë™ê¸°í™” 어댑터가 해당 í–‰ì„ ìžì‹ ì˜ 서버ì—서 삭제하고 마침내는 í–‰ì„ ë¦¬í¬ì§€í† ë¦¬ì—ì„œë„ ì‚­ì œí•  수 있ì„
때까지만입니다.
</td>
</tr>
</table>
<h4>참고</h4>
<p>
- 다ìŒì€
+ 다ìŒì€
{@link android.provider.ContactsContract.RawContacts} í…Œì´ë¸”ì— ê´€í•œ 중요한 참고 사항입니다.
</p>
<ul>
<li>
- ì›ì‹œ ì—°ë½ì²˜ì˜ ì´ë¦„ì€
-{@link android.provider.ContactsContract.RawContacts}ì— ìžˆëŠ” ìžì‹ ì˜ í–‰ì— ì €ìž¥ë˜ì§€ 않습니다. 대신,
-{@link android.provider.ContactsContract.CommonDataKinds.StructuredName} í–‰ì— ìžˆëŠ”
-{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì— ì €ìž¥ë©ë‹ˆë‹¤. ì›ì‹œ ì—°ë½ì²˜ 하나ì—는
+ ì›ì‹œ ì—°ë½ì²˜ì˜ ì´ë¦„ì€
+{@link android.provider.ContactsContract.RawContacts}ì— ìžˆëŠ” ìžì‹ ì˜ í–‰ì— ì €ìž¥ë˜ì§€ 않습니다. 대신,
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredName} í–‰ì— ìžˆëŠ”
+{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì— ì €ìž¥ë©ë‹ˆë‹¤. ì›ì‹œ ì—°ë½ì²˜ 하나ì—는
{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì—서 ì´ëŸ° ìœ í˜•ì˜ í–‰ì´ í•˜ë‚˜ì”©ë§Œ 있습니다.
</li>
<li>
- <strong>주ì˜:</strong> ì›ì‹œ ì—°ë½ì²˜ì—서 본ì¸ì˜ 계정 ë°ì´í„°ë¥¼ 사용하려면 ì´ë¥¼ ìš°ì„ 
-{@link android.accounts.AccountManager}로 등ë¡í•´ì•¼ 합니다. ì´ë ‡ê²Œ 하려면,
-사용ìžì—게 계정 유형과 본ì¸ì˜ 계정 ì´ë¦„ì„ ê³„ì • 목ë¡ì— 추가하ë¼ëŠ” 프롬프트를 표시하십시오. ì´ë ‡ê²Œ 하지 않으면,
+ <strong>주ì˜:</strong> ì›ì‹œ ì—°ë½ì²˜ì—서 본ì¸ì˜ 계정 ë°ì´í„°ë¥¼ 사용하려면 ì´ë¥¼ ìš°ì„ 
+{@link android.accounts.AccountManager}로 등ë¡í•´ì•¼ 합니다. ì´ë ‡ê²Œ 하려면,
+사용ìžì—게 계정 유형과 본ì¸ì˜ 계정 ì´ë¦„ì„ ê³„ì • 목ë¡ì— 추가하ë¼ëŠ” 프롬프트를 표시하십시오. ì´ë ‡ê²Œ 하지 않으면,
ì—°ë½ì²˜ 제공ìžê°€ ì›ì‹œ ì—°ë½ì²˜ í–‰ì„ ìžë™ìœ¼ë¡œ 삭제합니다.
<p>
- 예를 들어, 앱ì—서 ë„ë©”ì¸ {@code com.example.dataservice}로 웹 ë² ì´ìФ ì„œë¹„ìŠ¤ì— ëŒ€í•œ ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 유지하고
-ì„œë¹„ìŠ¤ì— ëŒ€í•œ ì‚¬ìš©ìž ê³„ì •ì´
-{@code becky.sharp@dataservice.example.com}ì´ë¼ë©´, 사용ìžëŠ” ì•±ì´ ì›ì‹œ ì—°ë½ì²˜ í–‰ì„ ì¶”ê°€í•˜ê¸° ì „ì—
+ 예를 들어, 앱ì—서 ë„ë©”ì¸ {@code com.example.dataservice}로 웹 ë² ì´ìФ ì„œë¹„ìŠ¤ì— ëŒ€í•œ ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 유지하고
+ì„œë¹„ìŠ¤ì— ëŒ€í•œ ì‚¬ìš©ìž ê³„ì •ì´
+{@code becky.sharp@dataservice.example.com}ì´ë¼ë©´, 사용ìžëŠ” ì•±ì´ ì›ì‹œ ì—°ë½ì²˜ í–‰ì„ ì¶”ê°€í•˜ê¸° ì „ì—
계정 "유형"({@code com.example.dataservice})ê³¼ 계정 "ì´ë¦„"
({@code becky.smart@dataservice.example.com})ì„ ë¨¼ì € 추가해야 합니다.
- ì´ ìš”êµ¬ ì‚¬í•­ì„ ì‚¬ìš©ìžì—게 설명하려면 관련 문서를 ì‚¬ìš©í•´ë„ ë˜ê³ , 아니면 사용ìžì—게
-유형과 ì´ë¦„ì„ ì¶”ê°€í•˜ë¼ëŠ” 프롬프트를 í‘œì‹œí•´ë„ ë˜ê³  ë‘ ê°€ì§€ ë°©ë²•ì„ ë‹¤ ì¨ë„ ë©ë‹ˆë‹¤. 계정 유형과 계정 ì´ë¦„ì€
+ ì´ ìš”êµ¬ ì‚¬í•­ì„ ì‚¬ìš©ìžì—게 설명하려면 관련 문서를 ì‚¬ìš©í•´ë„ ë˜ê³ , 아니면 사용ìžì—게
+유형과 ì´ë¦„ì„ ì¶”ê°€í•˜ë¼ëŠ” 프롬프트를 í‘œì‹œí•´ë„ ë˜ê³  ë‘ ê°€ì§€ ë°©ë²•ì„ ë‹¤ ì¨ë„ ë©ë‹ˆë‹¤. 계정 유형과 계정 ì´ë¦„ì€
ë‹¤ìŒ ì„¹ì…˜ì—서 ë” ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</li>
</ul>
<h3 id="RawContactsExample">ì›ì‹œ ì—°ë½ì²˜ ë°ì´í„° 소스</h3>
<p>
- ì›ì‹œ ì—°ë½ì²˜ì˜ ìž‘ë™ ì›ë¦¬ë¥¼ ì´í•´í•˜ê¸° 위해, 다ìŒê³¼ ê°™ì´ ê¸°ê¸°ì—서 ì •ì˜í•œ ì‚¬ìš©ìž ê³„ì • 세 가지를 보유한 ì‚¬ìš©ìž "Emily Dickinson"ì´ ìžˆë‹¤ê³ 
+ ì›ì‹œ ì—°ë½ì²˜ì˜ ìž‘ë™ ì›ë¦¬ë¥¼ ì´í•´í•˜ê¸° 위해, 다ìŒê³¼ ê°™ì´ ê¸°ê¸°ì—서 ì •ì˜í•œ ì‚¬ìš©ìž ê³„ì • 세 가지를 보유한 ì‚¬ìš©ìž "Emily Dickinson"ì´ ìžˆë‹¤ê³ 
가정해 봅시다.
</p>
<ul>
@@ -275,11 +275,11 @@ Android 구성 요소입니다. 콘í…츠 제공ìžëŠ” ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì• í”
활성화했습니다.
</p>
<p>
- Emily Dickinsonì´ ë¸Œë¼ìš°ì € ì°½ì„ ì—´ê³ ,
+ Emily Dickinsonì´ ë¸Œë¼ìš°ì € ì°½ì„ ì—´ê³ ,
Gmailì— <code>emily.dickinson@gmail.com</code>으로 로그ì¸í•˜ê³ ,
-ì—°ë½ì²˜ë¥¼ 열어서 "Thomas Higginson"ì„ ì¶”ê°€í•œë‹¤ê³  가정하겠습니다. ì´ ì‚¬ìš©ìžëŠ” ë‚˜ì¤‘ì— Gmailì—
-<code>emilyd@gmail.com</code>으로 로그ì¸í•˜ê³  "Thomas Higginson"ì—게 ì´ë©”ì¼ì„ 전송합니다.
-ì´ë ‡ê²Œ 하면 ì´ ì‚¬ëžŒì„ ìžë™ìœ¼ë¡œ ì—°ë½ì²˜ë¡œ 추가합니다. Emily는 Twitterì—서 "colonel_tom"(Thomas Higginsonì˜ Twitter ID)ë„
+ì—°ë½ì²˜ë¥¼ 열어서 "Thomas Higginson"ì„ ì¶”ê°€í•œë‹¤ê³  가정하겠습니다. ì´ ì‚¬ìš©ìžëŠ” ë‚˜ì¤‘ì— Gmailì—
+<code>emilyd@gmail.com</code>으로 로그ì¸í•˜ê³  "Thomas Higginson"ì—게 ì´ë©”ì¼ì„ 전송합니다.
+ì´ë ‡ê²Œ 하면 ì´ ì‚¬ëžŒì„ ìžë™ìœ¼ë¡œ ì—°ë½ì²˜ë¡œ 추가합니다. Emily는 Twitterì—서 "colonel_tom"(Thomas Higginsonì˜ Twitter ID)ë„
팔로우합니다.
</p>
<p>
@@ -292,34 +292,34 @@ Gmailì— <code>emily.dickinson@gmail.com</code>으로 로그ì¸í•˜ê³ ,
</li>
<li>
<code>emilyd@gmail.com</code>ê³¼ ì—°ê´€ëœ "Thomas Higginson"ì˜ ë‘ ë²ˆì§¸ ì›ì‹œ ì—°ë½ì²˜ìž…니다.
- ì‚¬ìš©ìž ê³„ì • ìœ í˜•ì€ ë§ˆì°¬ê°€ì§€ë¡œ Google입니다. ì´ë¦„ì´ ì´ì „ ì´ë¦„ê³¼ 똑같ë”ë¼ë„ ë‘ ë²ˆì§¸ ì›ì‹œ ì—°ë½ì²˜ê°€
-ë”해집니다. 왜ëƒí•˜ë©´ ì´ ì‚¬ëžŒì€ ì•„ê¹Œì™€ 다른
+ ì‚¬ìš©ìž ê³„ì • ìœ í˜•ì€ ë§ˆì°¬ê°€ì§€ë¡œ Google입니다. ì´ë¦„ì´ ì´ì „ ì´ë¦„ê³¼ 똑같ë”ë¼ë„ ë‘ ë²ˆì§¸ ì›ì‹œ ì—°ë½ì²˜ê°€
+ë”해집니다. 왜ëƒí•˜ë©´ ì´ ì‚¬ëžŒì€ ì•„ê¹Œì™€ 다른
ì‚¬ìš©ìž ê³„ì •ì— ì¶”ê°€ë˜ì—ˆê¸° 때문입니다.
</li>
<li>
- "belle_of_amherst"와 ì—°ê´€ëœ "Thomas Higginson"ì˜ ì„¸ 번째 ì›ì‹œ ì—°ë½ì²˜ìž…니다. 사용ìž
+ "belle_of_amherst"와 ì—°ê´€ëœ "Thomas Higginson"ì˜ ì„¸ 번째 ì›ì‹œ ì—°ë½ì²˜ìž…니다. 사용ìž
계정 ìœ í˜•ì€ Twitter입니다.
</li>
</ol>
<h2 id="DataBasics">ë°ì´í„°</h2>
<p>
ì´ì „ì— ì–¸ê¸‰í•œ 바와 ê°™ì´, ì›ì‹œ ì—°ë½ì²˜ì˜ ë°ì´í„°ëŠ”
-ì›ì‹œ ì—°ë½ì²˜ì˜ <code>_ID</code> ê°’ê³¼ ì—°ê²°ëœ{@link android.provider.ContactsContract.Data} í–‰ì—
-저장ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 í•˜ë‚˜ì˜ ì›ì‹œ ì—°ë½ì²˜ì— ê°™ì€ ìœ í˜•ì˜ ë°ì´í„°ì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ 여러 ê°œ ìžˆì„ ìˆ˜ 있게 ë©ë‹ˆë‹¤.
-예를 들어 ì´ë©”ì¼ ì£¼ì†Œ ë˜ëŠ” ì „í™” 번호 ë“±ì´ ì´ì— 해당ë©ë‹ˆë‹¤. 예를 들어,
+ì›ì‹œ ì—°ë½ì²˜ì˜ <code>_ID</code> ê°’ê³¼ ì—°ê²°ëœ{@link android.provider.ContactsContract.Data} í–‰ì—
+저장ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 í•˜ë‚˜ì˜ ì›ì‹œ ì—°ë½ì²˜ì— ê°™ì€ ìœ í˜•ì˜ ë°ì´í„°ì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ 여러 ê°œ ìžˆì„ ìˆ˜ 있게 ë©ë‹ˆë‹¤.
+예를 들어 ì´ë©”ì¼ ì£¼ì†Œ ë˜ëŠ” ì „í™” 번호 ë“±ì´ ì´ì— 해당ë©ë‹ˆë‹¤. 예를 들어,
{@code emilyd@gmail.com}ì— ëŒ€í•œ "Thomas Higginson"(Google 계정 <code>emilyd@gmail.com</code>ê³¼ ì—°ê´€ëœ Thomas Higginsonì˜
-ì›ì‹œ ì—°ë½ì²˜)ì—는
+ì›ì‹œ ì—°ë½ì²˜)ì—는
<code>thigg@gmail.com</code>ì´ë¼ëŠ” ì§‘ ì´ë©”ì¼ ì£¼ì†Œì™€
<code>thomas.higginson@gmail.com</code>ì´ë¼ëŠ” ì§ìž¥ ì´ë©”ì¼ ì£¼ì†Œê°€ 있고, ì—°ë½ì²˜ 제공ìžëŠ” ë‘ ê°œì˜ ì´ë©”ì¼ ì£¼ì†Œ í–‰ì„ ì €ìž¥í•˜ê³ 
ì›ì‹œ ì—°ë½ì²˜ì— ë‘ ê°€ì§€ë¥¼ 연결합니다.
</p>
<p>
- ì´ í…Œì´ë¸” í•˜ë‚˜ì— ì—¬ëŸ¬ 가지 ìœ í˜•ì˜ ë°ì´í„°ê°€ ì €ìž¥ëœ ì ì— 주ì˜í•˜ì‹­ì‹œì˜¤. 표시 ì´ë¦„,
-ì „í™” 번호, ì´ë©”ì¼, 우편 주소, 사진 ë° ì›¹ì‚¬ì´íЏ 세부 ì •ë³´ í–‰ì€ ëª¨ë‘
-{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì—서 ì°¾ì„ ìˆ˜ 있습니다. ì´ëŸ° ë°ì´í„° 관리를 ë•기 위해
-{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì—는 ì„¤ëª…ì´ í¬í•¨ëœ ì´ë¦„ì´ ìžˆëŠ” ì—´ì´ ëª‡ ê°œ 있고
-ì¼ë°˜ì  ì´ë¦„ì´ í¬í•¨ëœ ì—´ë„ ëª‡ ê°œ 있습니다. ì„¤ëª…ì´ í¬í•¨ëœ ì´ë¦„ ì—´ì˜ ì½˜í…츠는 í–‰ ì•ˆì˜ ë°ì´í„° 유형과 관계 ì—†ì´ ëª¨ë‘ ì˜ë¯¸ê°€ 같고,
-ì¼ë°˜ì ì¸ ì´ë¦„ ì—´ì˜ ì½˜í…츠는 ë°ì´í„° ìœ í˜•ì— ë”°ë¼
+ ì´ í…Œì´ë¸” í•˜ë‚˜ì— ì—¬ëŸ¬ 가지 ìœ í˜•ì˜ ë°ì´í„°ê°€ ì €ìž¥ëœ ì ì— 주ì˜í•˜ì‹­ì‹œì˜¤. 표시 ì´ë¦„,
+ì „í™” 번호, ì´ë©”ì¼, 우편 주소, 사진 ë° ì›¹ì‚¬ì´íЏ 세부 ì •ë³´ í–‰ì€ ëª¨ë‘
+{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì—서 ì°¾ì„ ìˆ˜ 있습니다. ì´ëŸ° ë°ì´í„° 관리를 ë•기 위해
+{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì—는 ì„¤ëª…ì´ í¬í•¨ëœ ì´ë¦„ì´ ìžˆëŠ” ì—´ì´ ëª‡ ê°œ 있고
+ì¼ë°˜ì  ì´ë¦„ì´ í¬í•¨ëœ ì—´ë„ ëª‡ ê°œ 있습니다. ì„¤ëª…ì´ í¬í•¨ëœ ì´ë¦„ ì—´ì˜ ì½˜í…츠는 í–‰ ì•ˆì˜ ë°ì´í„° 유형과 관계 ì—†ì´ ëª¨ë‘ ì˜ë¯¸ê°€ 같고,
+ì¼ë°˜ì ì¸ ì´ë¦„ ì—´ì˜ ì½˜í…츠는 ë°ì´í„° ìœ í˜•ì— ë”°ë¼
서로 ì˜ë¯¸ê°€ 다릅니다.
</p>
<h3 id="DescriptiveColumns">ì„¤ëª…ì´ í¬í•¨ëœ ì—´ ì´ë¦„</h3>
@@ -337,9 +337,9 @@ Gmailì— <code>emily.dickinson@gmail.com</code>으로 로그ì¸í•˜ê³ ,
{@link android.provider.ContactsContract.Data#MIMETYPE}
</dt>
<dd>
- ì´ í–‰ì— ì €ìž¥ë˜ëŠ” ë°ì´í„° 유형으로, ì‚¬ìš©ìž ì§€ì • MIME 유형으로 표현ë©ë‹ˆë‹¤. ì—°ë½ì²˜ 제공ìžëŠ”
-{@link android.provider.ContactsContract.CommonDataKinds}ì˜ í•˜ìœ„ í´ëž˜ìФì—서 ì •ì˜ëœ
-MIME ìœ í˜•ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ëŸ¬í•œ MIME ìœ í˜•ì€ ì˜¤í”ˆ 소스ì´ê³ ,
+ ì´ í–‰ì— ì €ìž¥ë˜ëŠ” ë°ì´í„° 유형으로, ì‚¬ìš©ìž ì§€ì • MIME 유형으로 표현ë©ë‹ˆë‹¤. ì—°ë½ì²˜ 제공ìžëŠ”
+{@link android.provider.ContactsContract.CommonDataKinds}ì˜ í•˜ìœ„ í´ëž˜ìФì—서 ì •ì˜ëœ
+MIME ìœ í˜•ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ëŸ¬í•œ MIME ìœ í˜•ì€ ì˜¤í”ˆ 소스ì´ê³ ,
ì—°ë½ì²˜ 제공ìžì™€ 함께 사용할 수 있는 모든 애플리케ì´ì…˜ ë˜ëŠ” ë™ê¸°í™” 어댑터가 사용할 수 있습니다.
</dd>
<dt>
@@ -347,25 +347,25 @@ MIME ìœ í˜•ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ëŸ¬í•œ MIME ìœ í˜•ì€ ì˜¤í”ˆ 소스ì´ê³ ,
</dt>
<dd>
ì´ ìœ í˜•ì˜ ë°ì´í„° í–‰ì´ ì›ì‹œ ì—°ë½ì²˜ì—서 한 번 ì´ìƒ ë°œìƒí•˜ëŠ” 경우,
-{@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} ì—´ì€
-해당 ìœ í˜•ì˜ ê¸°ë³¸ ë°ì´í„°ê°€ 들어있는 ë°ì´í„° í–‰ì„ í”Œëž˜ê·¸ë¡œ 표시합니다. 예를 들어,
-사용ìžê°€ ì—°ë½ì²˜ì˜ ì „í™” 번호를 길게 누르고 <strong>기본값으로 설정</strong>ì„ ì„ íƒí•˜ë©´
+{@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} ì—´ì€
+해당 ìœ í˜•ì˜ ê¸°ë³¸ ë°ì´í„°ê°€ 들어있는 ë°ì´í„° í–‰ì„ í”Œëž˜ê·¸ë¡œ 표시합니다. 예를 들어,
+사용ìžê°€ ì—°ë½ì²˜ì˜ ì „í™” 번호를 길게 누르고 <strong>기본값으로 설정</strong>ì„ ì„ íƒí•˜ë©´
ê·¸ 번호가 들어있는 {@link android.provider.ContactsContract.Data} í–‰ì´
-{@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} ì—´ì„
+{@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} ì—´ì„
0ì´ ì•„ë‹Œ 값으로 설정합니다.
</dd>
</dl>
<h3 id="GenericColumns">ì¼ë°˜ ì—´ ì´ë¦„</h3>
<p>
- 15ê°œì˜ ì¼ë°˜ ì—´ 중ì—서 <code>DATA1</code>부터
-<code>DATA15</code>까지는 ì¼ë°˜ì ìœ¼ë¡œ ì´ìš©í•  수 있고 ì´ì™¸ì— 추가로 ë§ˆë ¨ëœ ë„¤ ê°œì˜ ì¼ë°˜
-열, 즉 <code>SYNC1</code>부터 <code>SYNC4</code>까지는
-ë™ê¸°í™” 어댑터 전용입니다. ì¼ë°˜ ì—´ ì´ë¦„ ìƒìˆ˜ëŠ” 해당 í–‰ì— ë“¤ì–´ìžˆëŠ” ë°ì´í„° 유형과 관계 ì—†ì´
+ 15ê°œì˜ ì¼ë°˜ ì—´ 중ì—서 <code>DATA1</code>부터
+<code>DATA15</code>까지는 ì¼ë°˜ì ìœ¼ë¡œ ì´ìš©í•  수 있고 ì´ì™¸ì— 추가로 ë§ˆë ¨ëœ ë„¤ ê°œì˜ ì¼ë°˜
+열, 즉 <code>SYNC1</code>부터 <code>SYNC4</code>까지는
+ë™ê¸°í™” 어댑터 전용입니다. ì¼ë°˜ ì—´ ì´ë¦„ ìƒìˆ˜ëŠ” 해당 í–‰ì— ë“¤ì–´ìžˆëŠ” ë°ì´í„° 유형과 관계 ì—†ì´
언제나 통합니다.
</p>
<p>
- <code>DATA1</code> ì—´ì€ ìƒ‰ì¸ë©ë‹ˆë‹¤. ì—°ë½ì²˜ 제공ìžëŠ” 제공ìžê°€ 가장 ìžì£¼ ì¿¼ë¦¬ì˜ ëŒ€ìƒì´ ë  ê²ƒìœ¼ë¡œ 예ìƒí•˜ëŠ”
-ë°ì´í„°ì— 대해 í•­ìƒ ì´ ì—´ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. 예컨대
+ <code>DATA1</code> ì—´ì€ ìƒ‰ì¸ë©ë‹ˆë‹¤. ì—°ë½ì²˜ 제공ìžëŠ” 제공ìžê°€ 가장 ìžì£¼ ì¿¼ë¦¬ì˜ ëŒ€ìƒì´ ë  ê²ƒìœ¼ë¡œ 예ìƒí•˜ëŠ”
+ë°ì´í„°ì— 대해 í•­ìƒ ì´ ì—´ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. 예컨대
ì´ë©”ì¼ í–‰ì˜ ê²½ìš°, ì´ ì—´ì— ì‹¤ì œ ì´ë©”ì¼ ì£¼ì†Œê°€ 들어있습니다.
</p>
<p>
@@ -374,36 +374,36 @@ MIME ìœ í˜•ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ëŸ¬í•œ MIME ìœ í˜•ì€ ì˜¤í”ˆ 소스ì´ê³ ,
</p>
<h3 id="TypeSpecificNames">유형별 ì—´ ì´ë¦„</h3>
<p>
- 특정 ìœ í˜•ì˜ í–‰ì— ëŒ€í•œ ì—´ê³¼ì˜ ìž‘ì—…ì„ ë•기 위해, ì—°ë½ì²˜ 제공ìžëŠ”
- 유형별 ì—´ ì´ë¦„ ìƒìˆ˜ë„ 제공합니다. ì´ëŠ”
-{@link android.provider.ContactsContract.CommonDataKinds}ì˜ í•˜ìœ„ í´ëž˜ìФì—서 ì •ì˜í•©ë‹ˆë‹¤. ì´ ìƒìˆ˜ëŠ” 그저 ê°™ì€ ì—´ ì´ë¦„ì—
-서로 다른 ìƒìˆ˜ ì´ë¦„ì„ ë¶€ì—¬í•  ë¿ì´ë©°, ì´ë ‡ê²Œ 하면 개발ìžê°€ 특정 ìœ í˜•ì˜ í–‰ì— ìžˆëŠ” ë°ì´í„°ì—
+ 특정 ìœ í˜•ì˜ í–‰ì— ëŒ€í•œ ì—´ê³¼ì˜ ìž‘ì—…ì„ ë•기 위해, ì—°ë½ì²˜ 제공ìžëŠ”
+ 유형별 ì—´ ì´ë¦„ ìƒìˆ˜ë„ 제공합니다. ì´ëŠ”
+{@link android.provider.ContactsContract.CommonDataKinds}ì˜ í•˜ìœ„ í´ëž˜ìФì—서 ì •ì˜í•©ë‹ˆë‹¤. ì´ ìƒìˆ˜ëŠ” 그저 ê°™ì€ ì—´ ì´ë¦„ì—
+서로 다른 ìƒìˆ˜ ì´ë¦„ì„ ë¶€ì—¬í•  ë¿ì´ë©°, ì´ë ‡ê²Œ 하면 개발ìžê°€ 특정 ìœ í˜•ì˜ í–‰ì— ìžˆëŠ” ë°ì´í„°ì—
액세스하기 쉽습니다.
</p>
<p>
- 예를 들어, {@link android.provider.ContactsContract.CommonDataKinds.Email} í´ëž˜ìŠ¤ëŠ”
+ 예를 들어, {@link android.provider.ContactsContract.CommonDataKinds.Email} í´ëž˜ìŠ¤ëŠ”
MIME 유형{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
Email.CONTENT_ITEM_TYPE}ì„ ê°–ëŠ”
-{@link android.provider.ContactsContract.Data} í–‰ì—
+{@link android.provider.ContactsContract.Data} í–‰ì—
대한 유형별 ì—´ ì´ë¦„ ìƒìˆ˜ë¥¼ ì •ì˜í•©ë‹ˆë‹¤. ì´ í´ëž˜ìФì—는 ì´ë©”ì¼ ì£¼ì†Œ ì—´ì— ëŒ€í•œ
- ìƒìˆ˜ {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS}ê°€
-들어있습니다.
-{@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS}ì˜ ì‹¤ì œ ê°’ì€
+ ìƒìˆ˜ {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS}ê°€
+들어있습니다.
+{@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS}ì˜ ì‹¤ì œ ê°’ì€
"data1"ì´ê³ , ì´ëŠ” ì—´ì˜ ì¼ë°˜ ì´ë¦„ê³¼ 같습니다.
</p>
<p class="caution">
- <strong>주ì˜:</strong> ê°œë°œìž ë³¸ì¸ì˜ ì‚¬ìš©ìž ì§€ì • ë°ì´í„°ë¥¼
-{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì—
-추가할 때 제공ìžì˜ 미리 ì •ì˜ëœ MIME 유형 중 하나가 있는 í–‰ì„ ì‚¬ìš©í•˜ë©´ 안 ë©ë‹ˆë‹¤. 그렇게 하면 ë°ì´í„°ê°€ ì†ì‹¤ë˜ê±°ë‚˜ 제공ìžì˜ 오작ë™ì„
-유발할 수 있습니다. 예를 들어, MIME 유형
+ <strong>주ì˜:</strong> ê°œë°œìž ë³¸ì¸ì˜ ì‚¬ìš©ìž ì§€ì • ë°ì´í„°ë¥¼
+{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì—
+추가할 때 제공ìžì˜ 미리 ì •ì˜ëœ MIME 유형 중 하나가 있는 í–‰ì„ ì‚¬ìš©í•˜ë©´ 안 ë©ë‹ˆë‹¤. 그렇게 하면 ë°ì´í„°ê°€ ì†ì‹¤ë˜ê±°ë‚˜ 제공ìžì˜ 오작ë™ì„
+유발할 수 있습니다. 예를 들어, MIME 유형
{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
- Email.CONTENT_ITEM_TYPE} 안ì—
-<code>DATA1</code> ì—´ì— ìžˆëŠ” ì´ë©”ì¼ ì£¼ì†Œ 대신 ì‚¬ìš©ìž ì´ë¦„ì´ ë“¤ì–´ìžˆëŠ” í–‰ì€ ì¶”ê°€í•˜ë©´ 안 ë©ë‹ˆë‹¤. 해당 í–‰ì— ê°œë°œìž ë‚˜ë¦„ì˜ ì‚¬ìš©ìž ì§€ì • MIME ìœ í˜•ì„ ì‚¬ìš©í•˜ëŠ” 경우
+ Email.CONTENT_ITEM_TYPE} 안ì—
+<code>DATA1</code> ì—´ì— ìžˆëŠ” ì´ë©”ì¼ ì£¼ì†Œ 대신 ì‚¬ìš©ìž ì´ë¦„ì´ ë“¤ì–´ìžˆëŠ” í–‰ì€ ì¶”ê°€í•˜ë©´ 안 ë©ë‹ˆë‹¤. 해당 í–‰ì— ê°œë°œìž ë‚˜ë¦„ì˜ ì‚¬ìš©ìž ì§€ì • MIME ìœ í˜•ì„ ì‚¬ìš©í•˜ëŠ” 경우
본ì¸ë§Œì˜ 유형별 ì—´ ì´ë¦„ì„ ìžìœ ìžìž¬ë¡œ ì •ì˜í•˜ê³  ì´ëŸ¬í•œ ì—´ì„ ë§ˆìŒëŒ€ë¡œ ì‚¬ìš©í•´ë„ ë©ë‹ˆë‹¤.
</p>
<p>
- 그림 2는
-{@link android.provider.ContactsContract.Data} í–‰ì—서 설명 ì—´ê³¼ ë°ì´í„° ì—´ì´ ë‚˜íƒ€ë‚˜ëŠ” ë°©ì‹ê³¼ 유형별 ì—´ ì´ë¦„ì´
+ 그림 2는
+{@link android.provider.ContactsContract.Data} í–‰ì—서 설명 ì—´ê³¼ ë°ì´í„° ì—´ì´ ë‚˜íƒ€ë‚˜ëŠ” ë°©ì‹ê³¼ 유형별 ì—´ ì´ë¦„ì´
ì¼ë°˜ ì—´ ì´ë¦„ì— "오버레ì´"ë˜ëŠ” ë°©ì‹ì„ 나타낸 것입니다.
</p>
<img src="{@docRoot}images/providers/data_columns.png" alt="How type-specific column names map to generic column names" height="311" id="figure2" />
@@ -446,51 +446,51 @@ Email.CONTENT_ITEM_TYPE}ì„ ê°–ëŠ”
<td>{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}</td>
<td>ì›ì‹œ ì—°ë½ì²˜ë¥¼ ì—°ë½ì²˜ 제공ìžì˜ 그룹 중 하나와 연결하는 ì‹ë³„ìžìž…니다.</td>
<td>
- ê·¸ë£¹ì€ ê³„ì • 유형과 계정 ì´ë¦„ì˜ ì„ íƒì  기능입니다. ì´ëŸ¬í•œ ë‚´ìš©ì€
+ ê·¸ë£¹ì€ ê³„ì • 유형과 계정 ì´ë¦„ì˜ ì„ íƒì  기능입니다. ì´ëŸ¬í•œ ë‚´ìš©ì€
<a href="#Groups">ì—°ë½ì²˜ 그룹</a> ì„¹ì…˜ì— ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</td>
</tr>
</table>
<h3 id="ContactBasics">ì—°ë½ì²˜</h3>
<p>
- ì—°ë½ì²˜ 제공ìžëŠ” 모든 계정 유형과 계정 ì´ë¦„ì„ í†µí‹€ì–´ ì›ì‹œ ì—°ë½ì²˜ í–‰ì„ ì¡°í•©í•˜ì—¬
-í•˜ë‚˜ì˜ <strong>ì—°ë½ì²˜</strong>를 형성합니다. ì´ë ‡ê²Œ 하면 사용ìžê°€ 한 ì‚¬ëžŒì— ëŒ€í•´ 수집한
-모든 ë°ì´í„°ë¥¼ 표시하고 수정하기 쉽습니다. ì—°ë½ì²˜ 제공ìžëŠ” 새 ì—°ë½ì²˜ í–‰ì˜ ìƒì„±ì„ 관리하고
-ì›ì‹œ ì—°ë½ì²˜ë¥¼ 기존 ì—°ë½ì²˜ 행과 í†µí•©í•˜ê¸°ë„ í•©ë‹ˆë‹¤. 애플리케ì´ì…˜ê³¼
+ ì—°ë½ì²˜ 제공ìžëŠ” 모든 계정 유형과 계정 ì´ë¦„ì„ í†µí‹€ì–´ ì›ì‹œ ì—°ë½ì²˜ í–‰ì„ ì¡°í•©í•˜ì—¬
+í•˜ë‚˜ì˜ <strong>ì—°ë½ì²˜</strong>를 형성합니다. ì´ë ‡ê²Œ 하면 사용ìžê°€ 한 ì‚¬ëžŒì— ëŒ€í•´ 수집한
+모든 ë°ì´í„°ë¥¼ 표시하고 수정하기 쉽습니다. ì—°ë½ì²˜ 제공ìžëŠ” 새 ì—°ë½ì²˜ í–‰ì˜ ìƒì„±ì„ 관리하고
+ì›ì‹œ ì—°ë½ì²˜ë¥¼ 기존 ì—°ë½ì²˜ 행과 í†µí•©í•˜ê¸°ë„ í•©ë‹ˆë‹¤. 애플리케ì´ì…˜ê³¼
ë™ê¸°í™” 어댑터는 ëª¨ë‘ ì—°ë½ì²˜ë¥¼ 추가할 수 없으며, ì—°ë½ì²˜ í–‰ì— ìžˆëŠ” ì—´ 중 ëª‡ëª‡ì€ ì½ê¸° 전용입니다.
</p>
<p class="note">
- <strong>참고:</strong> ì—°ë½ì²˜ 제공ìžì— ì—°ë½ì²˜ë¥¼ 추가하려고
-{@link android.content.ContentResolver#insert(Uri,ContentValues) insert()}를 사용하는 경우,
-{@link java.lang.UnsupportedOperationException} 예외가 ë°œìƒí•©ë‹ˆë‹¤. "ì½ê¸° ì „ìš©"으로 í‘œì‹œëœ ì—´ì„ ì—…ë°ì´íŠ¸í•˜ë ¤ê³  하면
+ <strong>참고:</strong> ì—°ë½ì²˜ 제공ìžì— ì—°ë½ì²˜ë¥¼ 추가하려고
+{@link android.content.ContentResolver#insert(Uri,ContentValues) insert()}를 사용하는 경우,
+{@link java.lang.UnsupportedOperationException} 예외가 ë°œìƒí•©ë‹ˆë‹¤. "ì½ê¸° ì „ìš©"으로 í‘œì‹œëœ ì—´ì„ ì—…ë°ì´íŠ¸í•˜ë ¤ê³  하면
ê·¸ ì—…ë°ì´íŠ¸ëŠ” 무시ë©ë‹ˆë‹¤.
</p>
<p>
- ì—°ë½ì²˜ 제공ìžëŠ” 기존 ì—°ë½ì²˜ ì–´ëŠ ê²ƒê³¼ë„ ì¼ì¹˜í•˜ì§€ 않는 새로운 ì›ì‹œ ì—°ë½ì²˜ê°€ 추가ë˜ë©´
-새로운 ì—°ë½ì²˜ë¥¼ ìƒì„±í•©ë‹ˆë‹¤. 제공ìžê°€ ì´ ìž‘ì—…ì„ í•˜ëŠ” ë˜ ë‹¤ë¥¸ 경우는
-기존 ì›ì‹œ ì—°ë½ì²˜ì˜ ë°ì´í„°ê°€ 변경ë˜ì–´ ì´ì „ì— ì²¨ë¶€ë˜ì–´ ìžˆë˜ ì—°ë½ì²˜ì— ë” ì´ìƒ ì¼ì¹˜í•˜ì§€ 않는
-경우입니다. 애플리케ì´ì…˜ì´ë‚˜ ë™ê¸°í™” 어댑터가
+ ì—°ë½ì²˜ 제공ìžëŠ” 기존 ì—°ë½ì²˜ ì–´ëŠ ê²ƒê³¼ë„ ì¼ì¹˜í•˜ì§€ 않는 새로운 ì›ì‹œ ì—°ë½ì²˜ê°€ 추가ë˜ë©´
+새로운 ì—°ë½ì²˜ë¥¼ ìƒì„±í•©ë‹ˆë‹¤. 제공ìžê°€ ì´ ìž‘ì—…ì„ í•˜ëŠ” ë˜ ë‹¤ë¥¸ 경우는
+기존 ì›ì‹œ ì—°ë½ì²˜ì˜ ë°ì´í„°ê°€ 변경ë˜ì–´ ì´ì „ì— ì²¨ë¶€ë˜ì–´ ìžˆë˜ ì—°ë½ì²˜ì— ë” ì´ìƒ ì¼ì¹˜í•˜ì§€ 않는
+경우입니다. 애플리케ì´ì…˜ì´ë‚˜ ë™ê¸°í™” 어댑터가
기존 ì—°ë½ì²˜ì™€ <em>ì¼ì¹˜í•˜ëŠ”</em> 새로운 ì›ì‹œ ì—°ë½ì²˜ë¥¼ ìƒì„±í•˜ë©´, 새로운 ì›ì‹œ ì—°ë½ì²˜ëŠ”
기존 ì—°ë½ì²˜ì— 통합ë©ë‹ˆë‹¤.
</p>
<p>
ì—°ë½ì²˜ 제공ìžëŠ”
-{@link android.provider.ContactsContract.Contacts Contacts} í…Œì´ë¸”ì— ìžˆëŠ” ì—°ë½ì²˜ í–‰ì˜ <code>_ID</code> 열로
-ì—°ë½ì²˜ 행과 ì›ì‹œ ì—°ë½ì²˜ 행를 연결합니다. ì›ì‹œ ì—°ë½ì²˜ í…Œì´ë¸” {@link android.provider.ContactsContract.RawContacts}ì˜ <code>CONTACT_ID</code> í–‰ì—는
-ê° ì›ì‹œ ì—°ë½ì²˜ 행과 ê´€ë ¨ëœ ì—°ë½ì²˜ í–‰ì— ëŒ€í•œ <code>_ID</code> ê°’ì´
+{@link android.provider.ContactsContract.Contacts Contacts} í…Œì´ë¸”ì— ìžˆëŠ” ì—°ë½ì²˜ í–‰ì˜ <code>_ID</code> 열로
+ì—°ë½ì²˜ 행과 ì›ì‹œ ì—°ë½ì²˜ 행를 연결합니다. ì›ì‹œ ì—°ë½ì²˜ í…Œì´ë¸” {@link android.provider.ContactsContract.RawContacts}ì˜ <code>CONTACT_ID</code> í–‰ì—는
+ê° ì›ì‹œ ì—°ë½ì²˜ 행과 ê´€ë ¨ëœ ì—°ë½ì²˜ í–‰ì— ëŒ€í•œ <code>_ID</code> ê°’ì´
들어있습니다.
</p>
<p>
{@link android.provider.ContactsContract.Contacts} í…Œì´ë¸”ì—는 ì—°ë½ì²˜ í–‰ì— ëŒ€í•œ "ì˜êµ¬" ë§í¬ì¸
{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} ì—´ë„
-있습니다. ì—°ë½ì²˜ 제공ìžê°€ ì—°ë½ì²˜ë¥¼ ìžë™ìœ¼ë¡œ 관리하므로,
-통합ì´ë‚˜ ë™ê¸°í™”ì— ì‘답하여 ì—°ë½ì²˜ í–‰ì˜ {@code android.provider.BaseColumns#_ID} ê°’ì„
-변경할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ëŸ° ì¼ì´ ë°œìƒí•œë‹¤ 하ë”ë¼ë„ 콘í…츠 URI
-{@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}와
-ì—°ë½ì²˜ì˜ {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}는 여전히
-ì—°ë½ì²˜ í–‰ì„ ê°€ë¦¬í‚¤ë¯€ë¡œ,
-{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}를
-사용하여 "ì¦ê²¨ì°¾ê¸°" ì—°ë½ì²˜ì— 대한 ì—°ê²° ë“±ì„ ê·¸ëŒ€ë¡œ 유지할 수 있습니다. ì´ ì—´ì—는
+있습니다. ì—°ë½ì²˜ 제공ìžê°€ ì—°ë½ì²˜ë¥¼ ìžë™ìœ¼ë¡œ 관리하므로,
+통합ì´ë‚˜ ë™ê¸°í™”ì— ì‘답하여 ì—°ë½ì²˜ í–‰ì˜ {@code android.provider.BaseColumns#_ID} ê°’ì„
+변경할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ëŸ° ì¼ì´ ë°œìƒí•œë‹¤ 하ë”ë¼ë„ 콘í…츠 URI
+{@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}와
+ì—°ë½ì²˜ì˜ {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}는 여전히
+ì—°ë½ì²˜ í–‰ì„ ê°€ë¦¬í‚¤ë¯€ë¡œ,
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}를
+사용하여 "ì¦ê²¨ì°¾ê¸°" ì—°ë½ì²˜ì— 대한 ì—°ê²° ë“±ì„ ê·¸ëŒ€ë¡œ 유지할 수 있습니다. ì´ ì—´ì—는
{@code android.provider.BaseColumns#_ID} ì—´ì˜ í˜•ì‹ê³¼ ê´€ë ¨ì´ ì—†ëŠ” ë‚˜ë¦„ì˜ í˜•ì‹ì´ 있습니다.
</p>
<p>
@@ -502,17 +502,17 @@ Email.CONTENT_ITEM_TYPE}ì„ ê°–ëŠ”
</p>
<h2 id="Sources">ë™ê¸°í™” ì–´ëŒ‘í„°ì˜ ë°ì´í„°</h2>
<p>
- 사용ìžê°€ ì—°ë½ì²˜ ë°ì´í„°ë¥¼ ê¸°ê¸°ì— ì§ì ‘ ìž…ë ¥í•˜ê¸°ë„ í•˜ì§€ë§Œ, ë°ì´í„°ëŠ” 웹 서비스ì—서
-<strong>ë™ê¸°í™” 어댑터</strong>를 통해 ì—°ë½ì²˜ 제공ìžë¡œ í˜ëŸ¬ë“¤ì–´ê°€ê¸°ë„ 합니다. ì´ê²ƒì´ 기기와
-서비스 사ì´ì—서 ë°ì´í„°ì˜ ì „ì†¡ì„ ìžë™í™”하는 것입니다. ë™ê¸°í™” 어댑터는 ì‹œìŠ¤í…œì˜ ì œì–´ë¥¼ 받으며
-ë°°ê²½ì—서 실행ë˜ê³ , {@link android.content.ContentResolver} 메서드를
+ 사용ìžê°€ ì—°ë½ì²˜ ë°ì´í„°ë¥¼ ê¸°ê¸°ì— ì§ì ‘ ìž…ë ¥í•˜ê¸°ë„ í•˜ì§€ë§Œ, ë°ì´í„°ëŠ” 웹 서비스ì—서
+<strong>ë™ê¸°í™” 어댑터</strong>를 통해 ì—°ë½ì²˜ 제공ìžë¡œ í˜ëŸ¬ë“¤ì–´ê°€ê¸°ë„ 합니다. ì´ê²ƒì´ 기기와
+서비스 사ì´ì—서 ë°ì´í„°ì˜ ì „ì†¡ì„ ìžë™í™”하는 것입니다. ë™ê¸°í™” 어댑터는 ì‹œìŠ¤í…œì˜ ì œì–´ë¥¼ 받으며
+ë°°ê²½ì—서 실행ë˜ê³ , {@link android.content.ContentResolver} 메서드를
호출하여 ë°ì´í„°ë¥¼ 관리합니다.
</p>
<p>
Androidì—서 ë™ê¸°í™” 어댑터와 함께 작업하는 웹 서비스는 계정 유형으로 ì‹ë³„ë©ë‹ˆë‹¤.
- ê° ë™ê¸°í™” 어댑터는 계정 유형 í•˜ë‚˜ì— í†µí•˜ì§€ë§Œ, ê·¸ ìœ í˜•ì— ëŒ€í•œ 여러 ê°œì˜ ê³„ì •ì´ë¦„ì„
-ì§€ì›í•  수 있습니다. 계정 유형과 계정 ì´ë¦„ì€
-<a href="#RawContactsExample">ì›ì‹œ ì—°ë½ì²˜ ë°ì´í„° 소스</a> ì„¹ì…˜ì— ê°„ë‹¨ížˆ 설명ë˜ì–´ 있습니다. ë‹¤ìŒ ì •ì˜ëŠ” 좀 ë” ìžì„¸í•œ ë‚´ìš©ì„ ì œê³µí•˜ë©°,
+ ê° ë™ê¸°í™” 어댑터는 계정 유형 í•˜ë‚˜ì— í†µí•˜ì§€ë§Œ, ê·¸ ìœ í˜•ì— ëŒ€í•œ 여러 ê°œì˜ ê³„ì •ì´ë¦„ì„
+ì§€ì›í•  수 있습니다. 계정 유형과 계정 ì´ë¦„ì€
+<a href="#RawContactsExample">ì›ì‹œ ì—°ë½ì²˜ ë°ì´í„° 소스</a> ì„¹ì…˜ì— ê°„ë‹¨ížˆ 설명ë˜ì–´ 있습니다. ë‹¤ìŒ ì •ì˜ëŠ” 좀 ë” ìžì„¸í•œ ë‚´ìš©ì„ ì œê³µí•˜ë©°,
계정 유형과 ì´ë¦„ì´ ë™ê¸°í™” 어댑터와 ì„œë¹„ìŠ¤ì— ê´€ë ¨ë˜ëŠ” ë°©ì‹ì„ 설명합니다.
</p>
<dl>
@@ -520,34 +520,34 @@ Email.CONTENT_ITEM_TYPE}ì„ ê°–ëŠ”
계정 유형
</dt>
<dd>
- 사용ìžê°€ ë°ì´í„°ë¥¼ 저장해둔 서비스를 ì‹ë³„합니다. ëŒ€ë¶€ë¶„ì˜ ê²½ìš°, 사용ìžê°€
-서비스로 ì¸ì¦í•´ì•¼ 합니다. 예를 들어, Google 주소ë¡ì€ 계정 유형ì´ê³ , ì´ëŠ”
-코드 <code>google.com</code>으로 ì‹ë³„ë©ë‹ˆë‹¤. ì´ ê°’ì€
+ 사용ìžê°€ ë°ì´í„°ë¥¼ 저장해둔 서비스를 ì‹ë³„합니다. ëŒ€ë¶€ë¶„ì˜ ê²½ìš°, 사용ìžê°€
+서비스로 ì¸ì¦í•´ì•¼ 합니다. 예를 들어, Google 주소ë¡ì€ 계정 유형ì´ê³ , ì´ëŠ”
+코드 <code>google.com</code>으로 ì‹ë³„ë©ë‹ˆë‹¤. ì´ ê°’ì€
{@link android.accounts.AccountManager}ê°€ 사용하는 계정 ìœ í˜•ì— ìƒì‘합니다.
</dd>
<dt>
계정 ì´ë¦„
</dt>
<dd>
- í•˜ë‚˜ì˜ ê³„ì • ìœ í˜•ì— ëŒ€í•œ 특정 계정 ë˜ëŠ” 로그ì¸ì„ ì‹ë³„합니다. Google ì£¼ì†Œë¡ ê³„ì •ì€
+ í•˜ë‚˜ì˜ ê³„ì • ìœ í˜•ì— ëŒ€í•œ 특정 계정 ë˜ëŠ” 로그ì¸ì„ ì‹ë³„합니다. Google ì£¼ì†Œë¡ ê³„ì •ì€
Google 계정과 같고, ì´ëŠ” 계정 ì´ë¦„으로 ì´ë©”ì¼ ì£¼ì†Œë¥¼ 사용합니다.
다른 서비스는 한 단어로 ëœ ì‚¬ìš©ìž ì´ë¦„ì´ë‚˜ ìˆ«ìž ID를 사용할 수 있습니다.
</dd>
</dl>
<p>
- 계정 ìœ í˜•ì€ ê³ ìœ í•˜ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤. 한 ì‚¬ëžŒì˜ ì‚¬ìš©ìžê°€ 여러 ê°œì˜ Google 주소ë¡ì„ 구성할 수 있고
-ê·¸ ë°ì´í„°ë¥¼ ì—°ë½ì²˜ 제공ìžì— 다운로드할 수 있습니다. ì´ëŸ° ì¼ì€ 사용ìžì—게
-ê°œì¸ìš© 계정 ì´ë¦„ì— ëŒ€í•œ ê°œì¸ìš© ì—°ë½ì²˜ê°€ 한 세트 있고, 업무용으로 ë˜ í•œ 세트가 있는 경우 ì¼ì–´ë‚©ë‹ˆë‹¤. 계정 ì´ë¦„ì€ ë³´í†µ
-고유합니다. ì´ ë‘˜ì€ í•¨ê»˜ 사용ë˜ì–´ ì—°ë½ì²˜ 제공ìžì™€ 외부 서비스 사ì´ì˜ 특정 ë°ì´í„°
+ 계정 ìœ í˜•ì€ ê³ ìœ í•˜ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤. 한 ì‚¬ëžŒì˜ ì‚¬ìš©ìžê°€ 여러 ê°œì˜ Google 주소ë¡ì„ 구성할 수 있고
+ê·¸ ë°ì´í„°ë¥¼ ì—°ë½ì²˜ 제공ìžì— 다운로드할 수 있습니다. ì´ëŸ° ì¼ì€ 사용ìžì—게
+ê°œì¸ìš© 계정 ì´ë¦„ì— ëŒ€í•œ ê°œì¸ìš© ì—°ë½ì²˜ê°€ 한 세트 있고, 업무용으로 ë˜ í•œ 세트가 있는 경우 ì¼ì–´ë‚©ë‹ˆë‹¤. 계정 ì´ë¦„ì€ ë³´í†µ
+고유합니다. ì´ ë‘˜ì€ í•¨ê»˜ 사용ë˜ì–´ ì—°ë½ì²˜ 제공ìžì™€ 외부 서비스 사ì´ì˜ 특정 ë°ì´í„°
íë¦„ì„ ì‹ë³„합니다.
</p>
<p>
- ì„œë¹„ìŠ¤ì˜ ë°ì´í„°ë¥¼ ì—°ë½ì²˜ 제공ìžì— 전송하려면, 나름ì˜
-ë™ê¸°í™” 어댑터를 작성해야 합니다. ì´ ë‚´ìš©ì€
+ ì„œë¹„ìŠ¤ì˜ ë°ì´í„°ë¥¼ ì—°ë½ì²˜ 제공ìžì— 전송하려면, 나름ì˜
+ë™ê¸°í™” 어댑터를 작성해야 합니다. ì´ ë‚´ìš©ì€
<a href="#SyncAdapters">ì—°ë½ì²˜ ì œê³µìž ë™ê¸°í™” 어댑터</a> ì„¹ì…˜ì— ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</p>
<p>
- 그림 4는 ì—°ë½ì²˜ 제공ìžê°€ ì‚¬ëžŒì— ëŒ€í•œ ë°ì´í„° í름ì—
+ 그림 4는 ì—°ë½ì²˜ 제공ìžê°€ ì‚¬ëžŒì— ëŒ€í•œ ë°ì´í„° í름ì—
어떻게 들어맞는지 나타낸 것입니다. "ë™ê¸°í™” 어댑터"ë¼ê³  í‘œì‹œëœ ìƒìžì—서, ê° ì–´ëŒ‘í„°ì—는 계정 ìœ í˜•ì— ë”°ë¼ ë ˆì´ë¸”ì´ ë¶™ì–´ 있습니다.
</p>
<img src="{@docRoot}images/providers/ContactsDataFlow.png" alt="Flow of data about people" height="252" id="figure5" />
@@ -556,67 +556,67 @@ Google 계정과 같고, ì´ëŠ” 계정 ì´ë¦„으로 ì´ë©”ì¼ ì£¼ì†Œë¥¼ 사용í•
</p>
<h2 id="Permissions">필수 권한</h2>
<p>
- ì—°ë½ì²˜ 제공ìžì— ì•¡ì„¸ìŠ¤í•˜ê³ ìž í•˜ëŠ” 애플리케ì´ì…˜ì€ ë‹¤ìŒ ê¶Œí•œì„
+ ì—°ë½ì²˜ 제공ìžì— ì•¡ì„¸ìŠ¤í•˜ê³ ìž í•˜ëŠ” 애플리케ì´ì…˜ì€ ë‹¤ìŒ ê¶Œí•œì„
요청해야 합니다.
</p>
<dl>
<dt>하나 ì´ìƒì˜ í…Œì´ë¸”ì— ëŒ€í•œ ì½ê¸° 액세스</dt>
<dd>
- {@link android.Manifest.permission#READ_CONTACTS},
-<code>AndroidManifest.xml</code>ì—서
+ {@link android.Manifest.permission#READ_CONTACTS},
+<code>AndroidManifest.xml</code>ì—서
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
- &lt;uses-permission&gt;</a></code> 요소와 함께
+ &lt;uses-permission&gt;</a></code> 요소와 함께
<code>&lt;uses-permission android:name="android.permission.READ_CONTACTS"&gt;</code>로 ì§€ì •ëœ ê²ƒ.
</dd>
<dt>하나 ì´ìƒì˜ í…Œì´ë¸”ì— ëŒ€í•œ 쓰기 액세스</dt>
<dd>
- {@link android.Manifest.permission#WRITE_CONTACTS},
-<code>AndroidManifest.xml</code>ì—서
+ {@link android.Manifest.permission#WRITE_CONTACTS},
+<code>AndroidManifest.xml</code>ì—서
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
- &lt;uses-permission&gt;</a></code> 요소와 함께
+ &lt;uses-permission&gt;</a></code> 요소와 함께
<code>&lt;uses-permission android:name="android.permission.WRITE_CONTACTS"&gt;</code>로 ì§€ì •ëœ ê²ƒ.
</dd>
</dl>
<p>
- ì´ë“¤ ê¶Œí•œì€ ì‚¬ìš©ìž í”„ë¡œí•„ ë°ì´í„°ë¡œ 확대ë˜ì§€ 않습니다. ì‚¬ìš©ìž í”„ë¡œí•„ê³¼
-필수 권한ì€
+ ì´ë“¤ ê¶Œí•œì€ ì‚¬ìš©ìž í”„ë¡œí•„ ë°ì´í„°ë¡œ 확대ë˜ì§€ 않습니다. ì‚¬ìš©ìž í”„ë¡œí•„ê³¼
+필수 권한ì€
ë‹¤ìŒ ì„¹ì…˜ì¸ <a href="#UserProfile">ì‚¬ìš©ìž í”„ë¡œí•„</a>ì—서 ë…¼ì˜í•©ë‹ˆë‹¤.
</p>
<p>
- 사용ìžì˜ ì—°ë½ì²˜ ë°ì´í„°ëŠ” 중요한 ê°œì¸ ì •ë³´ë¼ëŠ” ì‚¬ì‹¤ì„ ëª…ì‹¬í•˜ì‹­ì‹œì˜¤. 사용ìžëŠ” ìžì‹ ì˜
+ 사용ìžì˜ ì—°ë½ì²˜ ë°ì´í„°ëŠ” 중요한 ê°œì¸ ì •ë³´ë¼ëŠ” ì‚¬ì‹¤ì„ ëª…ì‹¬í•˜ì‹­ì‹œì˜¤. 사용ìžëŠ” ìžì‹ ì˜
ê°œì¸ì •보보호를 중요하게 ìƒê°í•˜ê³  ì‹ ê²½ 쓰기 ë•Œë¬¸ì— ì• í”Œë¦¬ì¼€ì´ì…˜ì´ ìžì‹ ì´ë‚˜ ìžì‹ ì˜ ì—°ë½ì²˜ì— 관한 정보를 수집하는 ê²ƒì„ ë°”ë¼ì§€ 않습니다.
- 사용ìžì˜ ì—°ë½ì²˜ ë°ì´í„°ì— 액세스할 ê¶Œí•œì´ í•„ìš”í•œ ì´ìœ ê°€ 분명하지 않으면 여러분ì˜
+ 사용ìžì˜ ì—°ë½ì²˜ ë°ì´í„°ì— 액세스할 ê¶Œí•œì´ í•„ìš”í•œ ì´ìœ ê°€ 분명하지 않으면 여러분ì˜
애플리케ì´ì…˜ì— ë‚®ì€ ìˆœìœ„ë¥¼ 매기거나 설치를 거부할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
</p>
<h2 id="UserProfile">ì‚¬ìš©ìž í”„ë¡œí•„</h2>
<p>
- {@link android.provider.ContactsContract.Contacts} í…Œì´ë¸”ì— ìžˆëŠ” 한 ê°œì˜ í–‰ì—는 ê¸°ê¸°ì˜ ì‚¬ìš©ìžì— 대한 프로필
-ë°ì´í„°ê°€ 담겨 있습니다. ì´ ë°ì´í„°ëŠ” 사용ìžì˜ ì—°ë½ì²˜ 중 하나ë¼ê¸°ë³´ë‹¤ëŠ” ê¸°ê¸°ì˜ <code>user</code>를
-설명하는 것입니다. 프로필 ì—°ë½ì²˜ í–‰ì€
+ {@link android.provider.ContactsContract.Contacts} í…Œì´ë¸”ì— ìžˆëŠ” 한 ê°œì˜ í–‰ì—는 ê¸°ê¸°ì˜ ì‚¬ìš©ìžì— 대한 프로필
+ë°ì´í„°ê°€ 담겨 있습니다. ì´ ë°ì´í„°ëŠ” 사용ìžì˜ ì—°ë½ì²˜ 중 하나ë¼ê¸°ë³´ë‹¤ëŠ” ê¸°ê¸°ì˜ <code>user</code>를
+설명하는 것입니다. 프로필 ì—°ë½ì²˜ í–‰ì€
í”„ë¡œí•„ì„ ì‚¬ìš©í•˜ëŠ” ê° ì‹œìŠ¤í…œì— ëŒ€í•œ ì›ì‹œ ì—°ë½ì²˜ í–‰ì— ì—°ê²°ë˜ì–´ 있습니다.
- ê° í”„ë¡œí•„ ì›ì‹œ ì—°ë½ì²˜ í–‰ì—는 여러 ê°œì˜ ë°ì´í„° í–‰ì´ ìžˆì„ ìˆ˜ 있습니다. ì‚¬ìš©ìž í”„ë¡œí•„ì— ì•¡ì„¸ìŠ¤í•˜ê¸° 위한 ìƒìˆ˜ëŠ”
+ ê° í”„ë¡œí•„ ì›ì‹œ ì—°ë½ì²˜ í–‰ì—는 여러 ê°œì˜ ë°ì´í„° í–‰ì´ ìžˆì„ ìˆ˜ 있습니다. ì‚¬ìš©ìž í”„ë¡œí•„ì— ì•¡ì„¸ìŠ¤í•˜ê¸° 위한 ìƒìˆ˜ëŠ”
{@link android.provider.ContactsContract.Profile} í´ëž˜ìФì—서 ì´ìš©í•  수 있습니다.
</p>
<p>
- ì‚¬ìš©ìž í”„ë¡œí•„ì— ì•¡ì„¸ìŠ¤í•˜ë ¤ë©´ 특수 ê¶Œí•œì´ í•„ìš”í•©ë‹ˆë‹¤. ì½ê¸°ì™€ ì“°ê¸°ì— í•„ìš”í•œ
+ ì‚¬ìš©ìž í”„ë¡œí•„ì— ì•¡ì„¸ìŠ¤í•˜ë ¤ë©´ 특수 ê¶Œí•œì´ í•„ìš”í•©ë‹ˆë‹¤. ì½ê¸°ì™€ ì“°ê¸°ì— í•„ìš”í•œ
{@link android.Manifest.permission#READ_CONTACTS}와
-{@link android.Manifest.permission#WRITE_CONTACTS} 권한 외ì—ë„,
-ì‚¬ìš©ìž í”„ë¡œí•„ì— ì•¡ì„¸ìŠ¤í•˜ë ¤ë©´ ê°ê° ì½ê¸°ì™€ 쓰기 액세스를 위한{@code android.Manifest.permission#READ_PROFILE}ê³¼
-{@code android.Manifest.permission#WRITE_PROFILE} 권한ì´
+{@link android.Manifest.permission#WRITE_CONTACTS} 권한 외ì—ë„,
+ì‚¬ìš©ìž í”„ë¡œí•„ì— ì•¡ì„¸ìŠ¤í•˜ë ¤ë©´ ê°ê° ì½ê¸°ì™€ 쓰기 액세스를 위한{@code android.Manifest.permission#READ_PROFILE}ê³¼
+{@code android.Manifest.permission#WRITE_PROFILE} 권한ì´
필요합니다.
</p>
<p>
- 사용ìžì˜ í”„ë¡œí•„ì€ ì¤‘ìš”í•œ 정보로 간주해야 한다는 ì ì„ 명심하십시오.
-{@code android.Manifest.permission#READ_PROFILE}ê¶Œí•œì„ ì‚¬ìš©í•˜ë©´ 개발ìžê°€ 기기 사용ìžì˜
-ê°œì¸ ì‹ë³„ ë°ì´í„°ì— 액세스할 수 있게 í•´ì¤ë‹ˆë‹¤. 애플리케ì´ì…˜ 설명ì—서
+ 사용ìžì˜ í”„ë¡œí•„ì€ ì¤‘ìš”í•œ 정보로 간주해야 한다는 ì ì„ 명심하십시오.
+{@code android.Manifest.permission#READ_PROFILE}ê¶Œí•œì„ ì‚¬ìš©í•˜ë©´ 개발ìžê°€ 기기 사용ìžì˜
+ê°œì¸ ì‹ë³„ ë°ì´í„°ì— 액세스할 수 있게 í•´ì¤ë‹ˆë‹¤. 애플리케ì´ì…˜ 설명ì—서
사용ìžì—게 왜 ì—¬ëŸ¬ë¶„ì´ ì‚¬ìš©ìž í”„ë¡œí•„ ê¶Œí•œì„ í•„ìš”ë¡œ 하는지 ë°í˜€ë‘어야 합니다.
</p>
<p>
ì‚¬ìš©ìž í”„ë¡œí•„ì´ í¬í•¨ëœ ì—°ë½ì²˜ í–‰ì„ ê²€ìƒ‰í•˜ë ¤ë©´,
{@link android.content.ContentResolver#query(Uri,String[], String, String[], String)
ContentResolver.query()}를 호출합니다. 콘í…츠 URI 를
-{@link android.provider.ContactsContract.Profile#CONTENT_URI}로 설정하고
-ì„ íƒ ê¸°ì¤€ì€ ì•„ë¬´ê²ƒë„ ì œê³µí•˜ì§€ 마십시오. ì´ ì½˜í…츠 URI는 ì›ì‹œ ì—°ë½ì²˜ ë˜ëŠ” í”„ë¡œí•„ì— ëŒ€í•œ ë°ì´í„°ë¥¼ 검색하기 위한
+{@link android.provider.ContactsContract.Profile#CONTENT_URI}로 설정하고
+ì„ íƒ ê¸°ì¤€ì€ ì•„ë¬´ê²ƒë„ ì œê³µí•˜ì§€ 마십시오. ì´ ì½˜í…츠 URI는 ì›ì‹œ ì—°ë½ì²˜ ë˜ëŠ” í”„ë¡œí•„ì— ëŒ€í•œ ë°ì´í„°ë¥¼ 검색하기 위한
기본 URIë¡œë„ ì“¸ 수 있습니다. 예를 들어, ì´ ì½”ë“œ ì¡°ê°ì€ í”„ë¡œí•„ì— ëŒ€í•œ ë°ì´í„°ë¥¼ 검색합니다.
</p>
<pre>
@@ -639,18 +639,18 @@ mProfileCursor =
null);
</pre>
<p class="note">
- <strong>참고:</strong> 여러 ê°œì˜ ì—°ë½ì²˜ í–‰ì„ ê²€ìƒ‰í•˜ê³  ê·¸ 중 하나가
-ì‚¬ìš©ìž í”„ë¡œí•„ì¸ì§€ íŒë³„í•˜ê³ ìž í•˜ëŠ” 경우,
-í–‰ì˜ {@link android.provider.ContactsContract.ContactsColumns#IS_USER_PROFILE} ì—´ì„ í…ŒìŠ¤íŠ¸í•©ë‹ˆë‹¤. ì´ ì—´ì€
+ <strong>참고:</strong> 여러 ê°œì˜ ì—°ë½ì²˜ í–‰ì„ ê²€ìƒ‰í•˜ê³  ê·¸ 중 하나가
+ì‚¬ìš©ìž í”„ë¡œí•„ì¸ì§€ íŒë³„í•˜ê³ ìž í•˜ëŠ” 경우,
+í–‰ì˜ {@link android.provider.ContactsContract.ContactsColumns#IS_USER_PROFILE} ì—´ì„ í…ŒìŠ¤íŠ¸í•©ë‹ˆë‹¤. ì´ ì—´ì€
해당 ì—°ë½ì²˜ê°€ ì‚¬ìš©ìž í”„ë¡œí•„ì´ë©´ "1"로 설정ë©ë‹ˆë‹¤.
</p>
<h2 id="ContactsProviderMetadata">ì—°ë½ì²˜ ì œê³µìž ë©”íƒ€ë°ì´í„°</h2>
<p>
- ì—°ë½ì²˜ 제공ìžëŠ” 리í¬ì§€í† ë¦¬ì—서 ì—°ë½ì²˜ ë°ì´í„° ìƒíƒœë¥¼
-ì¶”ì í•˜ëŠ” ë°ì´í„°ë¥¼ 관리합니다. ì´ ë¦¬í¬ì§€í† ë¦¬ 관련 ë°ì´í„°ëŠ”
+ ì—°ë½ì²˜ 제공ìžëŠ” 리í¬ì§€í† ë¦¬ì—서 ì—°ë½ì²˜ ë°ì´í„° ìƒíƒœë¥¼
+ì¶”ì í•˜ëŠ” ë°ì´í„°ë¥¼ 관리합니다. ì´ ë¦¬í¬ì§€í† ë¦¬ 관련 ë°ì´í„°ëŠ”
ì›ì‹œ ì—°ë½ì²˜, ë°ì´í„° ë° ì—°ë½ì²˜ í…Œì´ë¸” í–‰,
-{@link android.provider.ContactsContract.Settings} í…Œì´ë¸” ë°
-{@link android.provider.ContactsContract.SyncState} í…Œì´ë¸” ë“±ì˜ ì—¬ëŸ¬ ìž¥ì†Œì— ì €ìž¥ë©ë‹ˆë‹¤. ë‹¤ìŒ í‘œëŠ” ê° ë©”íƒ€ë°ì´í„° ì¡°ê°ì´ 미치는
+{@link android.provider.ContactsContract.Settings} í…Œì´ë¸” ë°
+{@link android.provider.ContactsContract.SyncState} í…Œì´ë¸” ë“±ì˜ ì—¬ëŸ¬ ìž¥ì†Œì— ì €ìž¥ë©ë‹ˆë‹¤. ë‹¤ìŒ í‘œëŠ” ê° ë©”íƒ€ë°ì´í„° ì¡°ê°ì´ 미치는
ì˜í–¥ì„ 나타낸 것입니다.
</p>
<p class="table-caption" id="table3">
@@ -667,14 +667,14 @@ mProfileCursor =
<td rowspan="2">{@link android.provider.ContactsContract.SyncColumns#DIRTY}</td>
<td>"0" - 마지막 ë™ê¸°í™” ì´í›„로 변경ë˜ì§€ 않았습니다.</td>
<td rowspan="2">
- 기기ì—서 변경ë˜ì—ˆê³  서버로 다시 ë™ê¸°í™”ë˜ì–´ì•¼ 하는 ì›ì‹œ ë°ì´í„°ë¥¼
-표시합니다. ì´ ê°’ì€ Android 애플리케ì´ì…˜ì´ í–‰ì„ ì—…ë°ì´íŠ¸í•˜ë©´ ì—°ë½ì²˜ 제공ìžê°€
+ 기기ì—서 변경ë˜ì—ˆê³  서버로 다시 ë™ê¸°í™”ë˜ì–´ì•¼ 하는 ì›ì‹œ ë°ì´í„°ë¥¼
+표시합니다. ì´ ê°’ì€ Android 애플리케ì´ì…˜ì´ í–‰ì„ ì—…ë°ì´íŠ¸í•˜ë©´ ì—°ë½ì²˜ 제공ìžê°€
ìžë™ìœ¼ë¡œ 설정합니다.
<p>
- ì›ì‹œ ì—°ë½ì²˜ë‚˜ ë°ì´í„° í…Œì´ë¸”ì„ ìˆ˜ì •í•˜ëŠ” ë™ê¸°í™” 어댑터는
-언제나 문ìžì—´ {@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER}를
+ ì›ì‹œ ì—°ë½ì²˜ë‚˜ ë°ì´í„° í…Œì´ë¸”ì„ ìˆ˜ì •í•˜ëŠ” ë™ê¸°í™” 어댑터는
+언제나 문ìžì—´ {@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER}를
ìžì‹ ì´ 사용하는 콘í…츠 URIì— ì¶”ê°€í•´ì•¼ 합니다. ì´ë ‡ê²Œ 하면 제공ìžê°€ í–‰ì„ ë³€ê²½(dirty)으로 표시하지 못하게 방지합니다.
- 그렇지 않으면, ë™ê¸°í™” 어댑터 ìˆ˜ì •ì´ ë¡œì»¬ 수정으로 나타나며
+ 그렇지 않으면, ë™ê¸°í™” 어댑터 ìˆ˜ì •ì´ ë¡œì»¬ 수정으로 나타나며
서버가 ìˆ˜ì •ì˜ ê·¼ì›ì´ì—ˆë‹¤ 하ë”ë¼ë„ ì´ ë‚´ìš©ì´ ë‹¤ì‹œ 서버로 전송ë©ë‹ˆë‹¤.
</p>
</td>
@@ -687,7 +687,7 @@ mProfileCursor =
<td>{@link android.provider.ContactsContract.SyncColumns#VERSION}</td>
<td>ì´ í–‰ì˜ ë²„ì „ 번호입니다.</td>
<td>
- ì—°ë½ì²˜ 제공ìžëŠ” í–‰ì´ë‚˜ 관련 ë°ì´í„°ê°€ ë³€ê²½ë  ë•Œë§ˆë‹¤ ì´ ê°’ì„ ìžë™ìœ¼ë¡œ
+ ì—°ë½ì²˜ 제공ìžëŠ” í–‰ì´ë‚˜ 관련 ë°ì´í„°ê°€ ë³€ê²½ë  ë•Œë§ˆë‹¤ ì´ ê°’ì„ ìžë™ìœ¼ë¡œ
ì¦ê°€ì‹œí‚µë‹ˆë‹¤.
</td>
</tr>
@@ -696,7 +696,7 @@ mProfileCursor =
<td>{@link android.provider.ContactsContract.DataColumns#DATA_VERSION}</td>
<td>ì´ í–‰ì˜ ë²„ì „ 번호입니다.</td>
<td>
- ì—°ë½ì²˜ 제공ìžëŠ” ë°ì´í„° í–‰ì´ ë³€ê²½ë  ë•Œë§ˆë‹¤ ì´ ê°’ì„ ìžë™ìœ¼ë¡œ
+ ì—°ë½ì²˜ 제공ìžëŠ” ë°ì´í„° í–‰ì´ ë³€ê²½ë  ë•Œë§ˆë‹¤ ì´ ê°’ì„ ìžë™ìœ¼ë¡œ
ì¦ê°€ì‹œí‚µë‹ˆë‹¤.
</td>
</tr>
@@ -704,33 +704,33 @@ mProfileCursor =
<td>{@link android.provider.ContactsContract.RawContacts}</td>
<td>{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}</td>
<td>
- ì´ ì›ì‹œ ì—°ë½ì²˜ë¥¼ ìžì‹ ì´ ìƒì„±ëœ ê³„ì •ì— ëŒ€í•´ 고유하게 ì‹ë³„하는
+ ì´ ì›ì‹œ ì—°ë½ì²˜ë¥¼ ìžì‹ ì´ ìƒì„±ëœ ê³„ì •ì— ëŒ€í•´ 고유하게 ì‹ë³„하는
문ìžì—´ 값입니다.
</td>
<td>
- ë™ê¸°í™” 어댑터가 새로운 ì›ì‹œ ì—°ë½ì²˜ë¥¼ ìƒì„±í•˜ë©´, ì´ ì—´ì´
-해당 ì›ì‹œ ì—°ë½ì²˜ì— 대한 ì„œë²„ì˜ ê³ ìœ  ID로 설정ë˜ì–´ì•¼ 합니다. Android 애플리케ì´ì…˜ì´ 새로운 ì›ì‹œ ì—°ë½ì²˜ë¥¼ ìƒì„±í•˜ë©´,
-애플리케ì´ì…˜ì€ ì´ ì—´ì„ ë¹ˆ 채로 ë‘어야 합니다. ì´ê²ƒì€ ë™ê¸°í™” 어댑터ì—
-ì„œë²„ì— ìƒˆ ì›ì‹œ ë°ì´í„°ë¥¼ ìƒì„±í•´ì•¼ 한다고 신호하고,
+ ë™ê¸°í™” 어댑터가 새로운 ì›ì‹œ ì—°ë½ì²˜ë¥¼ ìƒì„±í•˜ë©´, ì´ ì—´ì´
+해당 ì›ì‹œ ì—°ë½ì²˜ì— 대한 ì„œë²„ì˜ ê³ ìœ  ID로 설정ë˜ì–´ì•¼ 합니다. Android 애플리케ì´ì…˜ì´ 새로운 ì›ì‹œ ì—°ë½ì²˜ë¥¼ ìƒì„±í•˜ë©´,
+애플리케ì´ì…˜ì€ ì´ ì—´ì„ ë¹ˆ 채로 ë‘어야 합니다. ì´ê²ƒì€ ë™ê¸°í™” 어댑터ì—
+ì„œë²„ì— ìƒˆ ì›ì‹œ ë°ì´í„°ë¥¼ ìƒì„±í•´ì•¼ 한다고 신호하고,
{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}ì— ëŒ€í•œ ê°’ì„ ê°€ì ¸ì˜¤ë¼ê³  알립니다.
<p>
- 특히, 소스 ID는 ê° ê³„ì • ìœ í˜•ì— ëŒ€í•´ <strong>고유</strong>해야 하고
+ 특히, 소스 ID는 ê° ê³„ì • ìœ í˜•ì— ëŒ€í•´ <strong>고유</strong>해야 하고
ë™ê¸°í™” ì „ì²´ì—서 안정ì ì´ì–´ì•¼ 합니다.
</p>
<ul>
<li>
- 고유: í•˜ë‚˜ì˜ ê³„ì •ì— ëŒ€í•œ ê° ì›ì‹œ ì—°ë½ì²˜ì—는 ë‚˜ë¦„ì˜ ì†ŒìŠ¤ IDê°€ 있어야 합니다. 개발ìžê°€
+ 고유: í•˜ë‚˜ì˜ ê³„ì •ì— ëŒ€í•œ ê° ì›ì‹œ ì—°ë½ì²˜ì—는 ë‚˜ë¦„ì˜ ì†ŒìŠ¤ IDê°€ 있어야 합니다. 개발ìžê°€
ì´ê²ƒì„ ê°•ì œ ì ìš©í•˜ì§€ 않으면 ì—°ë½ì²˜ 애플리케ì´ì…˜ì— 문제를 유발하게 ë©ë‹ˆë‹¤.
- ê°™ì€ ê³„ì • <em>유형</em>ì— ëŒ€í•œ ë‘ ê°œì˜ ì›ì‹œ ì—°ë½ì²˜ëŠ” 소스 IDê°€
-ê°™ì„ ìˆ˜ 있다는 ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. 예를 들어,
-{@code emily.dickinson@gmail.com} ê³„ì •ì— ëŒ€í•œ ì›ì‹œ ì—°ë½ì²˜ "Thomas Higginson"ì€
-{@code emilyd@gmail.com} ê³„ì •ì— ëŒ€í•œ
+ ê°™ì€ ê³„ì • <em>유형</em>ì— ëŒ€í•œ ë‘ ê°œì˜ ì›ì‹œ ì—°ë½ì²˜ëŠ” 소스 IDê°€
+ê°™ì„ ìˆ˜ 있다는 ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. 예를 들어,
+{@code emily.dickinson@gmail.com} ê³„ì •ì— ëŒ€í•œ ì›ì‹œ ì—°ë½ì²˜ "Thomas Higginson"ì€
+{@code emilyd@gmail.com} ê³„ì •ì— ëŒ€í•œ
ì›ì‹œ ì—°ë½ì²˜ "Thomas Higginson"ê³¼ 소스 IDê°€ ê°™ì„ ìˆ˜ 있습니다.
</li>
<li>
- 안정ì : 소스 ID는 ì›ì‹œ ì—°ë½ì²˜ì— 대한 온ë¼ì¸ ì„œë¹„ìŠ¤ì˜ ë°ì´í„° 중 ì˜êµ¬ì ì¸
-부분입니다. 예를 들어, 사용ìžê°€ 앱 설정ì—서 ì—°ë½ì²˜ 저장소를 삭제하고 다시 ë™ê¸°í™”하면
-ë³µì›ëœ ì›ì‹œ ì—°ë½ì²˜ì˜ 소스 ID는 ì „ê³¼ 같아야
+ 안정ì : 소스 ID는 ì›ì‹œ ì—°ë½ì²˜ì— 대한 온ë¼ì¸ ì„œë¹„ìŠ¤ì˜ ë°ì´í„° 중 ì˜êµ¬ì ì¸
+부분입니다. 예를 들어, 사용ìžê°€ 앱 설정ì—서 ì—°ë½ì²˜ 저장소를 삭제하고 다시 ë™ê¸°í™”하면
+ë³µì›ëœ ì›ì‹œ ì—°ë½ì²˜ì˜ 소스 ID는 ì „ê³¼ 같아야
합니다. 개발ìžê°€ ì´ê²ƒì„ ê°•ì œ ì ìš©í•˜ì§€ 않으면 바로 가기가 ë” ì´ìƒ
ìž‘ë™í•˜ì§€ 않습니다.
</li>
@@ -742,7 +742,7 @@ mProfileCursor =
<td rowspan="2">{@link android.provider.ContactsContract.GroupsColumns#GROUP_VISIBLE}</td>
<td>"0" - ì´ ê·¸ë£¹ì˜ ì—°ë½ì²˜ëŠ” Android 애플리케ì´ì…˜ UIì— í‘œì‹œë˜ì§€ 않아야 합니다.</td>
<td>
- ì´ ì—´ì€ ì‚¬ìš©ìžê°€ 특정 ê·¸ë£¹ì— ì—°ë½ì²˜ë¥¼ 숨길 수 있게 해주는 서버와ì˜
+ ì´ ì—´ì€ ì‚¬ìš©ìžê°€ 특정 ê·¸ë£¹ì— ì—°ë½ì²˜ë¥¼ 숨길 수 있게 해주는 서버와ì˜
í˜¸í™˜ì„±ì„ ìœ„í•œ 것입니다.
</td>
</tr>
@@ -754,22 +754,22 @@ mProfileCursor =
<td rowspan="2">
{@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE}</td>
<td>
- "0" - ì´ ê³„ì •ê³¼ 계정 ìœ í˜•ì˜ ê²½ìš°, ê·¸ë£¹ì— ì†í•˜ì§€ 않는 ì—°ë½ì²˜ëŠ” Android 애플리케ì´ì…˜ UIì—
+ "0" - ì´ ê³„ì •ê³¼ 계정 ìœ í˜•ì˜ ê²½ìš°, ê·¸ë£¹ì— ì†í•˜ì§€ 않는 ì—°ë½ì²˜ëŠ” Android 애플리케ì´ì…˜ UIì—
표시ë˜ì§€ 않습니다.
</td>
<td rowspan="2">
- 기본ì ìœ¼ë¡œ, ì—°ë½ì²˜ì— ê·¸ë£¹ì— ì†í•œ ì›ì‹œ ë°ì´í„°ê°€ í•˜ë‚˜ë„ ì—†ëŠ” 경우 ì´ëŠ” 표시ë˜ì§€ 않습니다(ì›ì‹œ ì—°ë½ì²˜ì˜ 그룹 구성ì›ì€
-{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì—서
-하나 ì´ìƒì˜ {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} 행으로
+ 기본ì ìœ¼ë¡œ, ì—°ë½ì²˜ì— ê·¸ë£¹ì— ì†í•œ ì›ì‹œ ë°ì´í„°ê°€ í•˜ë‚˜ë„ ì—†ëŠ” 경우 ì´ëŠ” 표시ë˜ì§€ 않습니다(ì›ì‹œ ì—°ë½ì²˜ì˜ 그룹 구성ì›ì€
+{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì—서
+하나 ì´ìƒì˜ {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} 행으로
표시ë©ë‹ˆë‹¤).
- 계정 유형과 ê³„ì •ì— ëŒ€í•œ {@link android.provider.ContactsContract.Settings} í…Œì´ë¸” í–‰ì—서
+ 계정 유형과 ê³„ì •ì— ëŒ€í•œ {@link android.provider.ContactsContract.Settings} í…Œì´ë¸” í–‰ì—서
ì´ í”Œëž˜ê·¸ë¥¼ 설정하면 ê·¸ë£¹ì´ ì—†ëŠ” ì—°ë½ì²˜ê°€ 표시ë˜ë„ë¡ ê°•ì œí•  수 있습니다.
ì´ í”Œëž˜ê·¸ì˜ ìš©ë„ ì¤‘ 하나는 ê·¸ë£¹ì„ ì‚¬ìš©í•˜ì§€ 않는 서버로부터 가져온 ì—°ë½ì²˜ë¥¼ 표시하는 것입니다.
</td>
</tr>
<tr>
<td>
- "1" - ì´ ê³„ì •ê³¼ 계정 ìœ í˜•ì˜ ê²½ìš°, ê·¸ë£¹ì— ì†í•˜ì§€ 않는 ì—°ë½ì²˜ê°€ 애플리케ì´ì…˜ UIì—
+ "1" - ì´ ê³„ì •ê³¼ 계정 ìœ í˜•ì˜ ê²½ìš°, ê·¸ë£¹ì— ì†í•˜ì§€ 않는 ì—°ë½ì²˜ê°€ 애플리케ì´ì…˜ UIì—
표시ë©ë‹ˆë‹¤.
</td>
@@ -781,14 +781,14 @@ mProfileCursor =
ì´ í…Œì´ë¸”ì„ ì‚¬ìš©í•˜ì—¬ ë™ê¸°í™” ì–´ëŒ‘í„°ì˜ ë©”íƒ€ë°ì´í„°ë¥¼ 저장합니다.
</td>
<td>
- ì´ í…Œì´ë¸”ì„ ì‚¬ìš©í•˜ë©´ ë™ê¸°í™” ìƒíƒœì™€ 기타 ë™ê¸°í™” 관련 ë°ì´í„°ë¥¼ ê¸°ê¸°ì— ì˜êµ¬ì ìœ¼ë¡œ
+ ì´ í…Œì´ë¸”ì„ ì‚¬ìš©í•˜ë©´ ë™ê¸°í™” ìƒíƒœì™€ 기타 ë™ê¸°í™” 관련 ë°ì´í„°ë¥¼ ê¸°ê¸°ì— ì˜êµ¬ì ìœ¼ë¡œ
저장할 수 있습니다.
</td>
</tr>
</table>
<h2 id="Access">ì—°ë½ì²˜ ì œê³µìž ì•¡ì„¸ìŠ¤</h2>
<p>
- ì´ ì„¹ì…˜ì€ ì—°ë½ì²˜ 제공ìžì—서 가져온 ë°ì´í„°ì— 액세스하는 ë²•ì— ëŒ€í•œ ì§€ì¹¨ì„ ì œê³µí•˜ë©°,
+ ì´ ì„¹ì…˜ì€ ì—°ë½ì²˜ 제공ìžì—서 가져온 ë°ì´í„°ì— 액세스하는 ë²•ì— ëŒ€í•œ ì§€ì¹¨ì„ ì œê³µí•˜ë©°,
ìš”ì ì€ 다ìŒê³¼ 같습니다.
</p>
<ul>
@@ -806,49 +806,49 @@ mProfileCursor =
</li>
</ul>
<p>
- ë™ê¸°í™” 어댑터ì—서 수정하는 방법ì€
+ ë™ê¸°í™” 어댑터ì—서 수정하는 방법ì€
<a href="#SyncAdapters">ì—°ë½ì²˜ ì œê³µìž ë™ê¸°í™” 어댑터</a> 섹션ì—ë„ ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</p>
<h3 id="Entities">엔티티 쿼리</h3>
<p>
- ì—°ë½ì²˜ ì œê³µìž í…Œì´ë¸”ì€ ê³„ì¸µì„ ì‚¬ìš©í•˜ì—¬ ì¡°ì§í™”ë˜ì–´ 있으므로,
-행과 ê·¸ í–‰ì— ì—°ê²°ëœ ëª¨ë“  "하위" í–‰ì„ ê²€ìƒ‰í•˜ëŠ” ê²ƒì´ ìœ ìš©í•  때가 많습니다. 예를 들어,
-ì–´ë–¤ ê°œì¸ì˜ 모든 정보를 표시하려면
-í•˜ë‚˜ì˜ {@link android.provider.ContactsContract.Contacts} í–‰ì— ëŒ€í•œ 모든
-{@link android.provider.ContactsContract.RawContacts} í–‰ì„ ê²€ìƒ‰í•˜ê±°ë‚˜ 하나ì˜
-{@link android.provider.ContactsContract.RawContacts} í–‰ì— ëŒ€í•œ 모든
-{@link android.provider.ContactsContract.CommonDataKinds.Email} í–‰ì„ ê²€ìƒ‰í•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. ì´ë¥¼ ìš©ì´í•˜ê²Œ 하기 위해,
-ì—°ë½ì²˜ 제공ìžëŠ” í…Œì´ë¸” 사ì´ë¥¼ 연결하는 ë°ì´í„°ë² ì´ìФ ì—­í• ì„ í•˜ëŠ” <strong>엔티티</strong> 구조를
+ ì—°ë½ì²˜ ì œê³µìž í…Œì´ë¸”ì€ ê³„ì¸µì„ ì‚¬ìš©í•˜ì—¬ ì¡°ì§í™”ë˜ì–´ 있으므로,
+행과 ê·¸ í–‰ì— ì—°ê²°ëœ ëª¨ë“  "하위" í–‰ì„ ê²€ìƒ‰í•˜ëŠ” ê²ƒì´ ìœ ìš©í•  때가 많습니다. 예를 들어,
+ì–´ë–¤ ê°œì¸ì˜ 모든 정보를 표시하려면
+í•˜ë‚˜ì˜ {@link android.provider.ContactsContract.Contacts} í–‰ì— ëŒ€í•œ 모든
+{@link android.provider.ContactsContract.RawContacts} í–‰ì„ ê²€ìƒ‰í•˜ê±°ë‚˜ 하나ì˜
+{@link android.provider.ContactsContract.RawContacts} í–‰ì— ëŒ€í•œ 모든
+{@link android.provider.ContactsContract.CommonDataKinds.Email} í–‰ì„ ê²€ìƒ‰í•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. ì´ë¥¼ ìš©ì´í•˜ê²Œ 하기 위해,
+ì—°ë½ì²˜ 제공ìžëŠ” í…Œì´ë¸” 사ì´ë¥¼ 연결하는 ë°ì´í„°ë² ì´ìФ ì—­í• ì„ í•˜ëŠ” <strong>엔티티</strong> 구조를
제공합니다.
</p>
<p>
í•˜ë‚˜ì˜ ì—”í‹°í‹°ëŠ” 마치 ìƒìœ„ í…Œì´ë¸”ê³¼ ê·¸ 하위 í…Œì´ë¸”ì—서 가져온 ì„ íƒëœ 몇 ê°œì˜ ì—´ë¡œ ì´ë£¨ì–´ì§„ í…Œì´ë¸”ê³¼ 같습니다.
- 엔티티를 쿼리하는 경우, 해당 엔티티ì—서 사용할 수 있는 ì—´ì„ ê¸°ë°˜ìœ¼ë¡œ 하여 예측과 검색
-ê¸°ì¤€ì„ ì œê³µí•©ë‹ˆë‹¤. ê·¸ ê²°ê³¼ë„ ë„ì¶œë˜ëŠ” ê²ƒì´ {@link android.database.Cursor}ì´ë©°,
-ì—¬ê¸°ì— ê²€ìƒ‰ëœ ê° í•˜ìœ„ í…Œì´ë¸”ì— ëŒ€í•´ í–‰ì´ í•˜ë‚˜ì”© 들어있습니다. 예를 들어 ì—°ë½ì²˜ ì´ë¦„ì— ëŒ€í•´
-{@link android.provider.ContactsContract.Contacts.Entity}를 쿼리하고
-ê·¸ ì´ë¦„ì— ëŒ€í•œ 모든 ì›ì‹œ ì—°ë½ì²˜ì— 대한 모든 {@link android.provider.ContactsContract.CommonDataKinds.Email} í–‰ì„ ì¿¼ë¦¬í•˜ë©´
-{@link android.database.Cursor}를 ëŒë ¤ë°›ê²Œ ë˜ë©° ì´ ì•ˆì—
+ 엔티티를 쿼리하는 경우, 해당 엔티티ì—서 사용할 수 있는 ì—´ì„ ê¸°ë°˜ìœ¼ë¡œ 하여 예측과 검색
+ê¸°ì¤€ì„ ì œê³µí•©ë‹ˆë‹¤. ê·¸ ê²°ê³¼ë„ ë„ì¶œë˜ëŠ” ê²ƒì´ {@link android.database.Cursor}ì´ë©°,
+ì—¬ê¸°ì— ê²€ìƒ‰ëœ ê° í•˜ìœ„ í…Œì´ë¸”ì— ëŒ€í•´ í–‰ì´ í•˜ë‚˜ì”© 들어있습니다. 예를 들어 ì—°ë½ì²˜ ì´ë¦„ì— ëŒ€í•´
+{@link android.provider.ContactsContract.Contacts.Entity}를 쿼리하고
+ê·¸ ì´ë¦„ì— ëŒ€í•œ 모든 ì›ì‹œ ì—°ë½ì²˜ì— 대한 모든 {@link android.provider.ContactsContract.CommonDataKinds.Email} í–‰ì„ ì¿¼ë¦¬í•˜ë©´
+{@link android.database.Cursor}를 ëŒë ¤ë°›ê²Œ ë˜ë©° ì´ ì•ˆì—
ê° {@link android.provider.ContactsContract.CommonDataKinds.Email}í–‰ì— ëŒ€í•œ í–‰ì´ í•˜ë‚˜ì”© 들어있습니다.
</p>
<p>
- 엔티티는 쿼리를 단순화합니다. 엔티티를 사용하면 ì—°ë½ì²˜ë‚˜ ì›ì‹œ ì—°ë½ì²˜ì— 대한 모든 ì—°ë½ì²˜ ë°ì´í„°ë¥¼
-í•œêº¼ë²ˆì— ê²€ìƒ‰í•  수 있습니다. 즉 ìš°ì„  ìƒìœ„ í…Œì´ë¸”ì„ ê²€ìƒ‰í•˜ì—¬ ID를 가져오고, 그런 다ìŒ
-하위 í…Œì´ë¸”ì„ ê·¸ ID로 검색하지 ì•Šì•„ë„ ëœë‹¤ëŠ” 뜻입니다. ë˜í•œ, ì—°ë½ì²˜ 제공ìžì—는 ì—”í‹°í‹°ì— ëŒ€í•œ 쿼리를
-í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ìœ¼ë¡œ 처리하므로, ê²€ìƒ‰ëœ ë°ì´í„°ê°€ ë‚´ë¶€ì ìœ¼ë¡œ ì¼ê´€ì„±ì„ 유지하ë„ë¡
+ 엔티티는 쿼리를 단순화합니다. 엔티티를 사용하면 ì—°ë½ì²˜ë‚˜ ì›ì‹œ ì—°ë½ì²˜ì— 대한 모든 ì—°ë½ì²˜ ë°ì´í„°ë¥¼
+í•œêº¼ë²ˆì— ê²€ìƒ‰í•  수 있습니다. 즉 ìš°ì„  ìƒìœ„ í…Œì´ë¸”ì„ ê²€ìƒ‰í•˜ì—¬ ID를 가져오고, 그런 다ìŒ
+하위 í…Œì´ë¸”ì„ ê·¸ ID로 검색하지 ì•Šì•„ë„ ëœë‹¤ëŠ” 뜻입니다. ë˜í•œ, ì—°ë½ì²˜ 제공ìžì—는 ì—”í‹°í‹°ì— ëŒ€í•œ 쿼리를
+í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ìœ¼ë¡œ 처리하므로, ê²€ìƒ‰ëœ ë°ì´í„°ê°€ ë‚´ë¶€ì ìœ¼ë¡œ ì¼ê´€ì„±ì„ 유지하ë„ë¡
보장합니다.
</p>
<p class="note">
- <strong>참고:</strong> í•˜ë‚˜ì˜ ì—”í‹°í‹°ì— ìƒìœ„ ë° í•˜ìœ„ í…Œì´ë¸”ì˜ ëª¨ë“  ì—´ì´ ë“¤ì–´ìžˆì§€ëŠ” ì•Šì€ ê²ƒì´
-보통입니다. ì—”í‹°í‹°ì— ëŒ€í•œ ì—´ ì´ë¦„ ìƒìˆ˜ 목ë¡ì— 없는 ì—´ ì´ë¦„으로 작업하려 시ë„하면,
+ <strong>참고:</strong> í•˜ë‚˜ì˜ ì—”í‹°í‹°ì— ìƒìœ„ ë° í•˜ìœ„ í…Œì´ë¸”ì˜ ëª¨ë“  ì—´ì´ ë“¤ì–´ìžˆì§€ëŠ” ì•Šì€ ê²ƒì´
+보통입니다. ì—”í‹°í‹°ì— ëŒ€í•œ ì—´ ì´ë¦„ ìƒìˆ˜ 목ë¡ì— 없는 ì—´ ì´ë¦„으로 작업하려 시ë„하면,
{@link java.lang.Exception}ì´ ë°œìƒí•©ë‹ˆë‹¤.
</p>
<p>
- ë‹¤ìŒ ì¡°ê°ì€ í•˜ë‚˜ì˜ ì—°ë½ì²˜ì— 대해 모든 ì›ì‹œ ì—°ë½ì²˜ í–‰ì„ ê²€ìƒ‰í•˜ëŠ” ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다. ì´ ì¡°ê°ì€
-ë‘ ê°œì˜ ì•¡í‹°ë¹„í‹°, 즉 "기본"ê³¼ "세부"를 가진 ë” í° ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ ì¼ë¶€ìž…니다. 기본 액티비티는
-ì—°ë½ì²˜ í–‰ 목ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 사용ìžê°€ 하나를 ì„ íƒí•˜ë©´, ì´ ì•¡í‹°ë¹„í‹°ê°€ 해당 목ë¡ì˜ ID를
-세부 ì•¡í‹°ë¹„í‹°ì— ì „ì†¡í•©ë‹ˆë‹¤. 세부 액티비티는 {@link android.provider.ContactsContract.Contacts.Entity}를 사용하여
-ì„ íƒëœ ì—°ë½ì²˜ì™€ ì—°ê´€ëœ ëª¨ë“  ì›ì‹œ ì—°ë½ì²˜ì—서
+ ë‹¤ìŒ ì¡°ê°ì€ í•˜ë‚˜ì˜ ì—°ë½ì²˜ì— 대해 모든 ì›ì‹œ ì—°ë½ì²˜ í–‰ì„ ê²€ìƒ‰í•˜ëŠ” ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다. ì´ ì¡°ê°ì€
+ë‘ ê°œì˜ ì•¡í‹°ë¹„í‹°, 즉 "기본"ê³¼ "세부"를 가진 ë” í° ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ ì¼ë¶€ìž…니다. 기본 액티비티는
+ì—°ë½ì²˜ í–‰ 목ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 사용ìžê°€ 하나를 ì„ íƒí•˜ë©´, ì´ ì•¡í‹°ë¹„í‹°ê°€ 해당 목ë¡ì˜ ID를
+세부 ì•¡í‹°ë¹„í‹°ì— ì „ì†¡í•©ë‹ˆë‹¤. 세부 액티비티는 {@link android.provider.ContactsContract.Contacts.Entity}를 사용하여
+ì„ íƒëœ ì—°ë½ì²˜ì™€ ì—°ê´€ëœ ëª¨ë“  ì›ì‹œ ì—°ë½ì²˜ì—서
모든 ë°ì´í„° í–‰ì„ í‘œì‹œí•©ë‹ˆë‹¤.
</p>
<p>
@@ -921,71 +921,71 @@ public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
}
</pre>
<p>
- ë¡œë”©ì´ ì™„ë£Œë˜ë©´, {@link android.app.LoaderManager}ê°€
+ ë¡œë”©ì´ ì™„ë£Œë˜ë©´, {@link android.app.LoaderManager}ê°€
{@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished(Loader, D)
-onLoadFinished()}ì— ëŒ€í•œ ì½œë°±ì„ í˜¸ì¶œí•©ë‹ˆë‹¤. ì´ ë©”ì„œë“œë¡œ 수신ë˜ëŠ” ì¸ìˆ˜ 중 하나가
-{@link android.database.Cursor}로, ì—¬ê¸°ì— ì¿¼ë¦¬ ê²°ê³¼ë„ í•¨ê»˜ 들어옵니다. ê°œë°œìž ë³¸ì¸ì˜ 앱ì—서는, ì´
+onLoadFinished()}ì— ëŒ€í•œ ì½œë°±ì„ í˜¸ì¶œí•©ë‹ˆë‹¤. ì´ ë©”ì„œë“œë¡œ 수신ë˜ëŠ” ì¸ìˆ˜ 중 하나가
+{@link android.database.Cursor}로, ì—¬ê¸°ì— ì¿¼ë¦¬ ê²°ê³¼ë„ í•¨ê»˜ 들어옵니다. ê°œë°œìž ë³¸ì¸ì˜ 앱ì—서는, ì´
{@link android.database.Cursor}ì—서 ë°ì´í„°ë¥¼ 가져와 ì´ë¥¼ 표시할 ìˆ˜ë„ ìžˆê³  ì—¬ê¸°ì— ìž‘ì—…ì„ ë”í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
</p>
<h3 id="Transactions">ì¼ê´„ 수정</h3>
<p>
- ì—°ë½ì²˜ 제공ìžì—서 ë°ì´í„°ë¥¼ 삽입, ì—…ë°ì´íЏ ë° ì‚­ì œí•˜ëŠ” 경우 가급ì ì´ë©´
-"ì¼ê´„ 모드"를 쓰는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. ì´ë•Œ
-{@link android.content.ContentProviderOperation} ê°ì²´ì˜ {@link java.util.ArrayList}를 ìƒì„±í•˜ê³ 
-{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}를 호출하면 ë©ë‹ˆë‹¤. ì—°ë½ì²˜ 제공ìžëŠ”
+ ì—°ë½ì²˜ 제공ìžì—서 ë°ì´í„°ë¥¼ 삽입, ì—…ë°ì´íЏ ë° ì‚­ì œí•˜ëŠ” 경우 가급ì ì´ë©´
+"ì¼ê´„ 모드"를 쓰는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. ì´ë•Œ
+{@link android.content.ContentProviderOperation} ê°ì²´ì˜ {@link java.util.ArrayList}를 ìƒì„±í•˜ê³ 
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}를 호출하면 ë©ë‹ˆë‹¤. ì—°ë½ì²˜ 제공ìžëŠ”
-{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}ì—ì„œì˜ ëª¨ë“  작업ì„
-í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ìœ¼ë¡œ 수행하기 때문ì—, 수정한 ë‚´ìš©ì´ ì¼ê´€ë˜ì§€ ì•Šì€ ìƒíƒœë¡œ ì—°ë½ì²˜ 리í¬ì§€í† ë¦¬ë¥¼
-ë– ë‚  ì¼ì´ ê²°ì½” 없습니다. ì¼ê´„ ìˆ˜ì •ì„ ì‚¬ìš©í•˜ë©´ ì›ì‹œ ì—°ë½ì²˜ì™€ ê·¸ 세부 ë°ì´í„°ë¥¼ ë™ì‹œì— 삽입하는 것ë„
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}ì—ì„œì˜ ëª¨ë“  작업ì„
+í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ìœ¼ë¡œ 수행하기 때문ì—, 수정한 ë‚´ìš©ì´ ì¼ê´€ë˜ì§€ ì•Šì€ ìƒíƒœë¡œ ì—°ë½ì²˜ 리í¬ì§€í† ë¦¬ë¥¼
+ë– ë‚  ì¼ì´ ê²°ì½” 없습니다. ì¼ê´„ ìˆ˜ì •ì„ ì‚¬ìš©í•˜ë©´ ì›ì‹œ ì—°ë½ì²˜ì™€ ê·¸ 세부 ë°ì´í„°ë¥¼ ë™ì‹œì— 삽입하는 것ë„
쉽습니다.
</p>
<p class="note">
- <strong>참고:</strong> <em>하나ì˜</em> ì›ì‹œ ì—°ë½ì²˜ë¥¼ 수정하려면 수정 ìž‘ì—…ì„ ì•±ì—서 처리하는 것보다는
-ì¸í…트를 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì— 보내는 ë°©ì•ˆì„ ê³ ë ¤í•˜ì‹­ì‹œì˜¤.
-ì´ë ‡ê²Œ 하는 방법ì´
+ <strong>참고:</strong> <em>하나ì˜</em> ì›ì‹œ ì—°ë½ì²˜ë¥¼ 수정하려면 수정 ìž‘ì—…ì„ ì•±ì—서 처리하는 것보다는
+ì¸í…트를 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì— 보내는 ë°©ì•ˆì„ ê³ ë ¤í•˜ì‹­ì‹œì˜¤.
+ì´ë ‡ê²Œ 하는 방법ì´
<a href="#Intents">ì¸í…트로 검색 ë° ìˆ˜ì •</a> ì„¹ì…˜ì— ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</p>
<h4>ì–‘ë³´ ì§€ì </h4>
<p>
- ëŒ€ëŸ‰ì˜ ìž‘ì—…ì´ ë“¤ì–´ìžˆëŠ” ì¼ê´„ ìˆ˜ì •ì€ ë‹¤ë¥¸ 프로세스를 차단하므로,
-ê·¸ ê²°ê³¼ ì „ë°˜ì ìœ¼ë¡œ 불량한 ì‚¬ìš©ìž í™˜ê²½ì„ ìœ ë°œí•  수 있습니다. ìˆ˜í–‰í•˜ê³ ìž í•˜ëŠ” 모든 수정 ìž‘ì—…ì„ ê°€ëŠ¥í•œ 한
-ì ì€ ìˆ˜ì˜ ë³„ë„ì˜ ëª©ë¡ìœ¼ë¡œ 정리하고 그와 ë™ì‹œì— ì´ ìž‘ì—…ì´ ì‹œìŠ¤í…œì„ ì°¨ë‹¨í•˜ì§€ 못하ë„ë¡ ë°©ì§€í•˜ë ¤ë©´
+ ëŒ€ëŸ‰ì˜ ìž‘ì—…ì´ ë“¤ì–´ìžˆëŠ” ì¼ê´„ ìˆ˜ì •ì€ ë‹¤ë¥¸ 프로세스를 차단하므로,
+ê·¸ ê²°ê³¼ ì „ë°˜ì ìœ¼ë¡œ 불량한 ì‚¬ìš©ìž í™˜ê²½ì„ ìœ ë°œí•  수 있습니다. ìˆ˜í–‰í•˜ê³ ìž í•˜ëŠ” 모든 수정 ìž‘ì—…ì„ ê°€ëŠ¥í•œ 한
+ì ì€ ìˆ˜ì˜ ë³„ë„ì˜ ëª©ë¡ìœ¼ë¡œ 정리하고 그와 ë™ì‹œì— ì´ ìž‘ì—…ì´ ì‹œìŠ¤í…œì„ ì°¨ë‹¨í•˜ì§€ 못하ë„ë¡ ë°©ì§€í•˜ë ¤ë©´
하나 ì´ìƒì˜ ìž‘ì—…ì— <strong>ì–‘ë³´ ì§€ì </strong>ì„ ì„¤ì •í•´ì•¼ 합니다.
ì–‘ë³´ ì§€ì ì€ {@link android.content.ContentProviderOperation#isYieldAllowed()} ê°’ì´ <code>true</code>로 ì„¤ì •ëœ {@link android.content.ContentProviderOperation} ê°ì²´ìž…니다.
- ì—°ë½ì²˜ 제공ìžê°€ ì–‘ë³´ ì§€ì ì„ 만나면
-다른 프로세스가 실행ë˜ë„ë¡ ìž‘ì—…ì„ ìž ì‹œ 멈추고 현재 íŠ¸ëžœìž­ì…˜ì„ ì¢…ë£Œí•©ë‹ˆë‹¤. 제공ìžê°€ 다시 시작ë˜ë©´, ì´ëŠ”
-{@link java.util.ArrayList}ì—서 ë‹¤ìŒ ìž‘ì—…ì„ ê³„ì† ì§„í–‰í•˜ê³ 
+ ì—°ë½ì²˜ 제공ìžê°€ ì–‘ë³´ ì§€ì ì„ 만나면
+다른 프로세스가 실행ë˜ë„ë¡ ìž‘ì—…ì„ ìž ì‹œ 멈추고 현재 íŠ¸ëžœìž­ì…˜ì„ ì¢…ë£Œí•©ë‹ˆë‹¤. 제공ìžê°€ 다시 시작ë˜ë©´, ì´ëŠ”
+{@link java.util.ArrayList}ì—서 ë‹¤ìŒ ìž‘ì—…ì„ ê³„ì† ì§„í–‰í•˜ê³ 
새 íŠ¸ëžœìž­ì…˜ì„ ì‹œìž‘í•©ë‹ˆë‹¤.
</p>
<p>
- ì–‘ë³´ ì§€ì ì„ 사용하면 ê·¸ ê²°ê³¼
-{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}ë¡œì˜ í˜¸ì¶œ 한 건당 하나 ì´ìƒì˜ íŠ¸ëžœìž­ì…˜ì´ ìƒê¸°ëŠ” ê²ƒì€ ì‚¬ì‹¤ìž…ë‹ˆë‹¤. ì´ ë•Œë¬¸ì—,
+ ì–‘ë³´ ì§€ì ì„ 사용하면 ê·¸ ê²°ê³¼
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}ë¡œì˜ í˜¸ì¶œ 한 건당 하나 ì´ìƒì˜ íŠ¸ëžœìž­ì…˜ì´ ìƒê¸°ëŠ” ê²ƒì€ ì‚¬ì‹¤ìž…ë‹ˆë‹¤. ì´ ë•Œë¬¸ì—,
ì–‘ë³´ ì§€ì ì€ ê´€ë ¨ëœ í–‰ 한 세트ì—서 마지막 ìž‘ì—…ì— ì„¤ì •í•´ì•¼ 합니다.
- 예를 들어, ì›ì‹œ ì—°ë½ì²˜ 행과 ê´€ë ¨ëœ ë°ì´í„° í–‰ì„ ì¶”ê°€í•˜ëŠ” ì„¸íŠ¸ì˜ ë§ˆì§€ë§‰ 작업ì—
-ì–‘ë³´ ì§€ì ì„ 설정하거나, í•˜ë‚˜ì˜ ì—°ë½ì²˜ì™€ ê´€ë ¨ëœ í–‰ 한 세트ì˜
+ 예를 들어, ì›ì‹œ ì—°ë½ì²˜ 행과 ê´€ë ¨ëœ ë°ì´í„° í–‰ì„ ì¶”ê°€í•˜ëŠ” ì„¸íŠ¸ì˜ ë§ˆì§€ë§‰ 작업ì—
+ì–‘ë³´ ì§€ì ì„ 설정하거나, í•˜ë‚˜ì˜ ì—°ë½ì²˜ì™€ ê´€ë ¨ëœ í–‰ 한 세트ì˜
마지막 ìž‘ì—…ì— ì–‘ë³´ ì§€ì ì„ 설정해야 합니다.
</p>
<p>
- ì–‘ë³´ ì§€ì ì€ ì›ìžì„± ìž‘ì—…ì˜ ë‹¨ìœ„ì´ê¸°ë„ 합니다. ë‘ ê°œì˜ ì–‘ë³´ ì§€ì  ì‚¬ì´ë¥¼ 향한 액세스는 모ë‘
-한 가지 단위로서 성공 ë˜ëŠ” 실패합니다. ì–‘ë³´ ì§€ì ì„ 설정하지 않는 경우, 가장 ìž‘ì€
-ì›ìžì„± ìž‘ì—…ì€ ìž‘ì—… ì „ì²´ê°€ ë©ë‹ˆë‹¤. ì–‘ë³´ ì§€ì ì„ 사용하면, 작업ì´
-시스템 ì„±ëŠ¥ì„ ì €í•˜í•˜ì§€ 않ë„ë¡ ë°©ì§€í•˜ëŠ” ë™ì‹œì— ìž‘ì—…ì˜ í•˜ìœ„ 세트가 ì›ìžì„± 작업ì´ë„ë¡
+ ì–‘ë³´ ì§€ì ì€ ì›ìžì„± ìž‘ì—…ì˜ ë‹¨ìœ„ì´ê¸°ë„ 합니다. ë‘ ê°œì˜ ì–‘ë³´ ì§€ì  ì‚¬ì´ë¥¼ 향한 액세스는 모ë‘
+한 가지 단위로서 성공 ë˜ëŠ” 실패합니다. ì–‘ë³´ ì§€ì ì„ 설정하지 않는 경우, 가장 ìž‘ì€
+ì›ìžì„± ìž‘ì—…ì€ ìž‘ì—… ì „ì²´ê°€ ë©ë‹ˆë‹¤. ì–‘ë³´ ì§€ì ì„ 사용하면, 작업ì´
+시스템 ì„±ëŠ¥ì„ ì €í•˜í•˜ì§€ 않ë„ë¡ ë°©ì§€í•˜ëŠ” ë™ì‹œì— ìž‘ì—…ì˜ í•˜ìœ„ 세트가 ì›ìžì„± 작업ì´ë„ë¡
보장할 수 있습니다.
</p>
<h4>수정 역참조</h4>
<p>
- 새로운 ì›ì‹œ ì—°ë½ì²˜ 행과 관련 ë°ì´í„° í–‰ì„
-ì¼ë ¨ì˜ {@link android.content.ContentProviderOperation} 개체로 삽입할 때는,
- ì›ì‹œ ì—°ë½ì²˜ì˜
+ 새로운 ì›ì‹œ ì—°ë½ì²˜ 행과 관련 ë°ì´í„° í–‰ì„
+ì¼ë ¨ì˜ {@link android.content.ContentProviderOperation} 개체로 삽입할 때는,
+ ì›ì‹œ ì—°ë½ì²˜ì˜
{@code android.provider.BaseColumns#_ID} ê°’ì„
-{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID} 값으로 삽입하여 ë°ì´í„° 행과 ì›ì‹œ ì—°ë½ì²˜ í–‰ì„ ì—°ê²°í•´ì•¼ 합니다. 그러나, ì´ ê°’ì€
-ë°ì´í„° í–‰ì— ëŒ€í•˜ì—¬ {@link android.content.ContentProviderOperation}ì„
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID} 값으로 삽입하여 ë°ì´í„° 행과 ì›ì‹œ ì—°ë½ì²˜ í–‰ì„ ì—°ê²°í•´ì•¼ 합니다. 그러나, ì´ ê°’ì€
+ë°ì´í„° í–‰ì— ëŒ€í•˜ì—¬ {@link android.content.ContentProviderOperation}ì„
ìƒì„±í•˜ëŠ” 경우ì—는 사용할 수 없습니다. ì›ì‹œ ì—°ë½ì²˜ í–‰ì— ëŒ€í•´ {@link android.content.ContentProviderOperation}
-ì„ ì•„ì§ ì ìš©í•˜ì§€ 않았기 때문입니다. ì´ ë¬¸ì œë¥¼ 해결하려면
+ì„ ì•„ì§ ì ìš©í•˜ì§€ 않았기 때문입니다. ì´ ë¬¸ì œë¥¼ 해결하려면
{@link android.content.ContentProviderOperation.Builder} í´ëž˜ìФì—
{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()} 메서드가 있어야 합니다.
- ì´ ë©”ì„œë“œë¥¼ 사용하면 ì—´ì„ ì´ì „ ìž‘ì—…ì˜ ê²°ê³¼ë¡œ 삽입 ë˜ëŠ” 수정할 수
+ ì´ ë©”ì„œë“œë¥¼ 사용하면 ì—´ì„ ì´ì „ ìž‘ì—…ì˜ ê²°ê³¼ë¡œ 삽입 ë˜ëŠ” 수정할 수
있습니다.
</p>
<p>
@@ -997,29 +997,29 @@ onLoadFinished()}ì— ëŒ€í•œ ì½œë°±ì„ í˜¸ì¶œí•©ë‹ˆë‹¤. ì´ ë©”ì„œë“œë¡œ 수신ë
<code>key</code>
</dt>
<dd>
- 키-ê°’ ìŒì˜ 키입니다. ì´ ì¸ìˆ˜ì˜ ê°’ì€ ìˆ˜ì •í•˜ëŠ” í…Œì´ë¸”ì˜
+ 키-ê°’ ìŒì˜ 키입니다. ì´ ì¸ìˆ˜ì˜ ê°’ì€ ìˆ˜ì •í•˜ëŠ” í…Œì´ë¸”ì˜
ì—´ ì´ë¦„ì´ì–´ì•¼ 합니다.
</dd>
<dt>
<code>previousResult</code>
</dt>
<dd>
-
+
{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}ì˜ {@link android.content.ContentProviderResult} ê°ì²´ ë°°ì—´ì— ìžˆëŠ”
-ê°’ì˜ 0 기반 색ì¸ìž…니다.
-ì¼ê´„ ìž‘ì—…ì´ ì ìš©ë˜ë©´ ê° ìž‘ì—…ì˜ ê²°ê³¼ê°€
-ê²°ê³¼ì˜ ì¤‘ê°„ ë°°ì—´ì— ì €ìž¥ë©ë‹ˆë‹¤. <code>previousResult</code> ê°’ì€
-ì´ëŸ¬í•œ ê²°ê³¼ 중 í•˜ë‚˜ì˜ ìƒ‰ì¸ì´ê³ , ì´ëŠ” <code>key</code> 값으로
+ê°’ì˜ 0 기반 색ì¸ìž…니다.
+ì¼ê´„ ìž‘ì—…ì´ ì ìš©ë˜ë©´ ê° ìž‘ì—…ì˜ ê²°ê³¼ê°€
+ê²°ê³¼ì˜ ì¤‘ê°„ ë°°ì—´ì— ì €ìž¥ë©ë‹ˆë‹¤. <code>previousResult</code> ê°’ì€
+ì´ëŸ¬í•œ ê²°ê³¼ 중 í•˜ë‚˜ì˜ ìƒ‰ì¸ì´ê³ , ì´ëŠ” <code>key</code> 값으로
검색 ë° ì €ìž¥ë©ë‹ˆë‹¤. ì´ê²ƒì„ 사용하면 새 ì›ì‹œ ì—°ë½ì²˜ 레코드를 삽입하고
-{@code android.provider.BaseColumns#_ID} ê°’ì„ ë‹¤ì‹œ 가져온 ë’¤,
+{@code android.provider.BaseColumns#_ID} ê°’ì„ ë‹¤ì‹œ 가져온 ë’¤,
{@link android.provider.ContactsContract.Data} í–‰ì„ ì¶”ê°€í•  때 해당 ê°’ì„ "역참조"í•  수 있게 í•´ì¤ë‹ˆë‹¤.
<p>
-
-{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}를 ì²˜ìŒ í˜¸ì¶œí•  때,
-개발ìžê°€ 제공하는 {@link android.content.ContentProviderOperation} ê°ì²´ì˜ {@link java.util.ArrayList} í¬ê¸°ì™€ ê°™ì€ í¬ê¸°ë¡œ
-ì „ì²´ ê²°ê³¼ ë°°ì—´ì´ ìƒì„±ë©ë‹ˆë‹¤. 그러나
-ê²°ê³¼ ë°°ì—´ì˜ ëª¨ë“  요소는 <code>null</code>로 설정ë˜ê³ ,
-ì•„ì§ ì ìš©ë˜ì§€ ì•Šì€ ìž‘ì—… ê²°ê³¼ì— ëŒ€í•œ 역참조를 수행하려 시ë„하면
+
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}를 ì²˜ìŒ í˜¸ì¶œí•  때,
+개발ìžê°€ 제공하는 {@link android.content.ContentProviderOperation} ê°ì²´ì˜ {@link java.util.ArrayList} í¬ê¸°ì™€ ê°™ì€ í¬ê¸°ë¡œ
+ì „ì²´ ê²°ê³¼ ë°°ì—´ì´ ìƒì„±ë©ë‹ˆë‹¤. 그러나
+ê²°ê³¼ ë°°ì—´ì˜ ëª¨ë“  요소는 <code>null</code>로 설정ë˜ê³ ,
+ì•„ì§ ì ìš©ë˜ì§€ ì•Šì€ ìž‘ì—… ê²°ê³¼ì— ëŒ€í•œ 역참조를 수행하려 시ë„하면
{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}ê°€
{@link java.lang.Exception}ì„ ë°œìƒì‹œí‚µë‹ˆë‹¤.
@@ -1027,15 +1027,15 @@ onLoadFinished()}ì— ëŒ€í•œ ì½œë°±ì„ í˜¸ì¶œí•©ë‹ˆë‹¤. ì´ ë©”ì„œë“œë¡œ 수신ë
</dd>
</dl>
<p>
- ë‹¤ìŒ ì¡°ê°ì€ 새로운 ì›ì‹œ ì—°ë½ì²˜ì™€ ë°ì´í„°ë¥¼ ì¼ê´„ 삽입하는 ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다. 여기ì—는
-ì–‘ë³´ ì§€ì ì„ 지정하고 역참조를 사용하는 코드가 í¬í•¨ë˜ì–´ 있습니다. ì´ ì¡°ê°ì€
-<code>createContacEntry()</code> ë©”ì„œë“œì˜ í™•ìž¥ 버전ì´ë©°, ì´ëŠ”
+ ë‹¤ìŒ ì¡°ê°ì€ 새로운 ì›ì‹œ ì—°ë½ì²˜ì™€ ë°ì´í„°ë¥¼ ì¼ê´„ 삽입하는 ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다. 여기ì—는
+ì–‘ë³´ ì§€ì ì„ 지정하고 역참조를 사용하는 코드가 í¬í•¨ë˜ì–´ 있습니다. ì´ ì¡°ê°ì€
+<code>createContacEntry()</code> ë©”ì„œë“œì˜ í™•ìž¥ 버전ì´ë©°, ì´ëŠ”
<code><a href="{@docRoot}resources/samples/ContactManager/index.html">
- Contact Manager</a></code> 샘플 애플리케ì´ì…˜ì— 있는 <code>ContactAdder</code> í´ëž˜ìФì˜
+ Contact Manager</a></code> 샘플 애플리케ì´ì…˜ì— 있는 <code>ContactAdder</code> í´ëž˜ìФì˜
ì¼ë¶€ìž…니다.
</p>
<p>
- 첫 번째 ì¡°ê°ì€ UIì—서 ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 검색합니다. ì´ ì‹œì ì—서 사용ìžëŠ” ì´ë¯¸
+ 첫 번째 ì¡°ê°ì€ UIì—서 ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 검색합니다. ì´ ì‹œì ì—서 사용ìžëŠ” ì´ë¯¸
새로운 ì›ì‹œ ì—°ë½ì²˜ë¥¼ 추가할 ê³„ì •ì„ ì„ íƒí•˜ì˜€ìŠµë‹ˆë‹¤.
</p>
<pre>
@@ -1055,7 +1055,7 @@ protected void createContactEntry() {
mContactEmailTypeSpinner.getSelectedItemPosition());
</pre>
<p>
- ë‹¤ìŒ ì¡°ê°ì€
+ ë‹¤ìŒ ì¡°ê°ì€
{@link android.provider.ContactsContract.RawContacts} í…Œì´ë¸”ì— ì›ì‹œ ì—°ë½ì²˜ í–‰ì„ ì‚½ìž…í•˜ëŠ” ìž‘ì—…ì„ ìƒì„±í•©ë‹ˆë‹¤.
</p>
<pre>
@@ -1086,18 +1086,18 @@ protected void createContactEntry() {
그런 다ìŒ, 코드가 표시 ì´ë¦„, ì „í™” ë° ì´ë©”ì¼ í–‰ì— ëŒ€í•œ ë°ì´í„° í–‰ì„ ìƒì„±í•©ë‹ˆë‹¤.
</p>
<p>
- ê° ìž‘ì—… ë¹Œë” ê°œì²´ëŠ”
-{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}를
+ ê° ìž‘ì—… ë¹Œë” ê°œì²´ëŠ”
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}를
사용하여
-{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}를 가져옵니다. 참조는
-첫 번째 ìž‘ì—…ì˜ {@link android.content.ContentProviderResult} ê°ì²´ë¥¼ 다시 가리키고,
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}를 가져옵니다. 참조는
+첫 번째 ìž‘ì—…ì˜ {@link android.content.ContentProviderResult} ê°ì²´ë¥¼ 다시 가리키고,
ì´ê²ƒì´ ì›ì‹œ ì—°ë½ì²˜ í–‰ì„ ì¶”ê°€í•œ ë’¤ ì´ì˜ 새 {@code android.provider.BaseColumns#_ID}
-ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤. ê·¸ ê²°ê³¼, ê° ë°ì´í„° í–‰ì€ ìžë™ìœ¼ë¡œ ìžì‹ ì˜
+ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤. ê·¸ ê²°ê³¼, ê° ë°ì´í„° í–‰ì€ ìžë™ìœ¼ë¡œ ìžì‹ ì˜
{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}
ì— ì˜í•´ ìžì‹ ì´ ì†í•˜ëŠ” 새 {@link android.provider.ContactsContract.RawContacts} í–‰ì— ì—°ê²°ë©ë‹ˆë‹¤.
</p>
<p>
- ì´ë©”ì¼ í–‰ì„ ì¶”ê°€í•˜ëŠ” {@link android.content.ContentProviderOperation.Builder} ê°ì²´ëŠ”
+ ì´ë©”ì¼ í–‰ì„ ì¶”ê°€í•˜ëŠ” {@link android.content.ContentProviderOperation.Builder} ê°ì²´ëŠ”
ì–‘ë³´ ì§€ì ì„ 설정하는 {@link android.content.ContentProviderOperation.Builder#withYieldAllowed(boolean)
withYieldAllowed()}로 플래그 표시합니다.
</p>
@@ -1172,8 +1172,8 @@ withYieldAllowed()}로 플래그 표시합니다.
ops.add(op.build());
</pre>
<p>
- 마지막 ì¡°ê°ì€ 새로운 ì›ì‹œ ì—°ë½ì²˜ì™€ ë°ì´í„° í–‰ì„ ì‚½ìž…í•˜ëŠ”
-{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}ì— ëŒ€í•œ 호출ì„
+ 마지막 ì¡°ê°ì€ 새로운 ì›ì‹œ ì—°ë½ì²˜ì™€ ë°ì´í„° í–‰ì„ ì‚½ìž…í•˜ëŠ”
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}ì— ëŒ€í•œ 호출ì„
나타낸 것입니다.
</p>
<pre>
@@ -1205,32 +1205,32 @@ withYieldAllowed()}로 플래그 표시합니다.
}
</pre>
<p>
- ì¼ê´„ ìž‘ì—…ì„ ì‚¬ìš©í•˜ë©´ <strong>ë‚™ê´€ì  ë™ì‹œì„± 제어</strong>ë„ êµ¬í˜„í•  수 있습니다.
+ ì¼ê´„ ìž‘ì—…ì„ ì‚¬ìš©í•˜ë©´ <strong>ë‚™ê´€ì  ë™ì‹œì„± 제어</strong>ë„ êµ¬í˜„í•  수 있습니다.
ì´ê²ƒì€ 기본 리í¬ì§€í† ë¦¬ë¥¼ 잠그지 ì•Šê³ ë„ ìˆ˜ì • íŠ¸ëžœìž­ì…˜ì„ ì ìš©í•  수 있는 메서드입니다.
- ì´ ë©”ì„œë“œë¥¼ 사용하려면 íŠ¸ëžœìž­ì…˜ì„ ì ìš©í•˜ê³  ë™ì‹œì— ë°œìƒí•œ
-다른 수정 ì‚¬í•­ì´ ìžˆëŠ”ì§€ 확ì¸í•©ë‹ˆë‹¤. 부합하지 않는 ìˆ˜ì •ì´ ë°œìƒí•œ ê²ƒì„ ë°œê²¬í•˜ë©´
+ ì´ ë©”ì„œë“œë¥¼ 사용하려면 íŠ¸ëžœìž­ì…˜ì„ ì ìš©í•˜ê³  ë™ì‹œì— ë°œìƒí•œ
+다른 수정 ì‚¬í•­ì´ ìžˆëŠ”ì§€ 확ì¸í•©ë‹ˆë‹¤. 부합하지 않는 ìˆ˜ì •ì´ ë°œìƒí•œ ê²ƒì„ ë°œê²¬í•˜ë©´
íŠ¸ëžœìž­ì…˜ì„ ë¡¤ë°±í•˜ê³  다시 시ë„합니다.
</p>
<p>
- ë‚™ê´€ì  ë™ì‹œì„± 제어는 한 ë²ˆì— í•œ ëª…ì˜ ì‚¬ìš©ìžë§Œ 존재하고 ë°ì´í„° 리í¬ì§€í† ë¦¬ì— 대한 ë™ì‹œ 액세스가 드문 ëª¨ë°”ì¼ ê¸°ê¸°ì—
-유용합니다. ìž ê¸ˆì„ ì‚¬ìš©í•˜ì§€ 않으므로
+ ë‚™ê´€ì  ë™ì‹œì„± 제어는 한 ë²ˆì— í•œ ëª…ì˜ ì‚¬ìš©ìžë§Œ 존재하고 ë°ì´í„° 리í¬ì§€í† ë¦¬ì— 대한 ë™ì‹œ 액세스가 드문 ëª¨ë°”ì¼ ê¸°ê¸°ì—
+유용합니다. ìž ê¸ˆì„ ì‚¬ìš©í•˜ì§€ 않으므로
ìž ê¸ˆì„ ì„¤ì •í•˜ê±°ë‚˜ 다른 íŠ¸ëžœìž­ì…˜ì´ ìž ê¸ˆì„ í•´ì œí•˜ê¸°ë¥¼ 기다리면서 ì‹œê°„ì„ ë‚­ë¹„í•˜ì§€ 않습니다.
</p>
<p>
- 하나ì˜
+ 하나ì˜
{@link android.provider.ContactsContract.RawContacts} í–‰ì„ ì—…ë°ì´íŠ¸í•˜ë©´ì„œ ë™ì‹œì— ë‚™ê´€ì  ë™ì‹œì„± 제어를 사용하려면, ë‹¤ìŒ ë‹¨ê³„ë¥¼ 따르십시오.
</p>
<ol>
<li>
- 검색하는 다른 ë°ì´í„°ì™€ 함께 í–‰ ì—°ë½ì²˜ì˜ {@link android.provider.ContactsContract.SyncColumns#VERSION}ì„
+ 검색하는 다른 ë°ì´í„°ì™€ 함께 í–‰ ì—°ë½ì²˜ì˜ {@link android.provider.ContactsContract.SyncColumns#VERSION}ì„
검색합니다.
</li>
<li>
- ì œì•½ì„ ê°•ì œ ì ìš©í•˜ëŠ” ë° ì í•©í•œ
-{@link android.content.ContentProviderOperation.Builder} ê°ì²´ë¥¼ 하나 ìƒì„±í•˜ë˜
-{@link android.content.ContentProviderOperation#newAssertQuery(Uri)} 메서드를 사용합니다. 콘í…츠 URIì˜ ê²½ìš°,
+ ì œì•½ì„ ê°•ì œ ì ìš©í•˜ëŠ” ë° ì í•©í•œ
+{@link android.content.ContentProviderOperation.Builder} ê°ì²´ë¥¼ 하나 ìƒì„±í•˜ë˜
+{@link android.content.ContentProviderOperation#newAssertQuery(Uri)} 메서드를 사용합니다. 콘í…츠 URIì˜ ê²½ìš°,
{@link android.provider.ContactsContract.RawContacts#CONTENT_URI
- RawContacts.CONTENT_URI}를 사용하ë˜
+ RawContacts.CONTENT_URI}를 사용하ë˜
ì´ì— ì¶”ê°€ëœ ì›ì‹œ ë°ì´í„°ì˜ {@code android.provider.BaseColumns#_ID}를 함께 ì”니다.
</li>
<li>
@@ -1256,13 +1256,13 @@ withExpectedCount()}를 호출하여 ì´ ì–´ì„¤ì…˜ì´ í…ŒìŠ¤íŠ¸í•˜ëŠ” í–‰ì´ í•˜
</ol>
<p>
í–‰ì„ ì½ê³  수정하려고 시ë„하는 사ì´ì— 다른 ìž‘ì—…ì´ ì›ì‹œ ì—°ë½ì²˜ í–‰ì„ ì—…ë°ì´íŠ¸í•˜ë©´,
-"어설션" {@link android.content.ContentProviderOperation}ì€
-실패하고 ì „ì²´ ì¼ê´„ ìž‘ì—…ì´ ì·¨ì†Œë©ë‹ˆë‹¤. 그러면 ì¼ê´„ ìž‘ì—…ì„ ë‹¤ì‹œ 시ë„하거나
+"어설션" {@link android.content.ContentProviderOperation}ì€
+실패하고 ì „ì²´ ì¼ê´„ ìž‘ì—…ì´ ì·¨ì†Œë©ë‹ˆë‹¤. 그러면 ì¼ê´„ ìž‘ì—…ì„ ë‹¤ì‹œ 시ë„하거나
다른 조치를 취하기로 ì„ íƒí•  수 있습니다.
</p>
<p>
- ë‹¤ìŒ ì¡°ê°ì€ {@link android.content.CursorLoader}를 사용하여 ë‹¨ì¼ ì›ì‹œ ì—°ë½ì²˜ë¥¼ 쿼리한 후
-"어설션" {@link android.content.ContentProviderOperation}ì„
+ ë‹¤ìŒ ì¡°ê°ì€ {@link android.content.CursorLoader}를 사용하여 ë‹¨ì¼ ì›ì‹œ ì—°ë½ì²˜ë¥¼ 쿼리한 후
+"어설션" {@link android.content.ContentProviderOperation}ì„
ìƒì„±í•˜ëŠ” ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다.
</p>
<pre>
@@ -1311,8 +1311,8 @@ try
</pre>
<h3 id="Intents">ì¸í…트로 검색 ë° ìˆ˜ì •</h3>
<p>
- 기기 ì—°ë½ì²˜ 애플리케ì´ì…˜ì— ì¸í…트를 전송하면 ì—°ë½ì²˜ 제공ìžì—
-ê°„ì ‘ì ìœ¼ë¡œ 액세스할 수 있습니다. ì¸í…트는 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ UI를 시작하고, 여기서 사용ìžëŠ”
+ 기기 ì—°ë½ì²˜ 애플리케ì´ì…˜ì— ì¸í…트를 전송하면 ì—°ë½ì²˜ 제공ìžì—
+ê°„ì ‘ì ìœ¼ë¡œ 액세스할 수 있습니다. ì¸í…트는 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ UI를 시작하고, 여기서 사용ìžëŠ”
ì—°ë½ì²˜ 관련 ìž‘ì—…ì„ í•  수 있습니다. 사용ìžê°€ ì´ëŸ° 액세스 ìœ í˜•ì„ ê°€ì§€ê³  í•  수 있는 ì¼ì€ 다ìŒê³¼ 같습니다.
<ul>
<li>목ë¡ì—서 ì—°ë½ì²˜ë¥¼ ì„ íƒí•˜ê³  추가 ìž‘ì—…ì„ ìœ„í•´ ì•±ì— ë°˜í™˜ì‹œí‚µë‹ˆë‹¤.</li>
@@ -1321,20 +1321,20 @@ try
<li>ì—°ë½ì²˜ ë˜ëŠ” ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 삭제합니다.</li>
</ul>
<p>
- 사용ìžê°€ ë°ì´í„°ë¥¼ 삽입하거나 ì—…ë°ì´íŠ¸í•˜ê³  있다면, 먼저 ë°ì´í„°ë¥¼ 수집하고
+ 사용ìžê°€ ë°ì´í„°ë¥¼ 삽입하거나 ì—…ë°ì´íŠ¸í•˜ê³  있다면, 먼저 ë°ì´í„°ë¥¼ 수집하고
ì¸í…íŠ¸ì˜ ì¼ë¶€ë¡œ 전송할 수 있습니다.
</p>
<p>
- ì¸í…트를 사용하여 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì„ 통해 ì—°ë½ì²˜ 제공ìžì— 액세스하는 경우
-제공ìžì— 액세스하기 위해 ê°œë°œìž ë‚˜ë¦„ì˜ UI나 코드를 작성하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. 제공ìžì— 대한 ì½ê¸° ë˜ëŠ” 쓰기 ê¶Œí•œë„ ìš”ì²­í•˜ì§€ 않아ë„
-ë©ë‹ˆë‹¤. 기기 ì—°ë½ì²˜ 애플리케ì´ì…˜ì€
-ì—°ë½ì²˜ì— 대한 ì½ê¸° ê¶Œí•œì„ ìœ„ìž„í•  수 있고, 다른 애플리케ì´ì…˜ì„ 통해 수정하기 때문ì—
+ ì¸í…트를 사용하여 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì„ 통해 ì—°ë½ì²˜ 제공ìžì— 액세스하는 경우
+제공ìžì— 액세스하기 위해 ê°œë°œìž ë‚˜ë¦„ì˜ UI나 코드를 작성하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. 제공ìžì— 대한 ì½ê¸° ë˜ëŠ” 쓰기 ê¶Œí•œë„ ìš”ì²­í•˜ì§€ 않아ë„
+ë©ë‹ˆë‹¤. 기기 ì—°ë½ì²˜ 애플리케ì´ì…˜ì€
+ì—°ë½ì²˜ì— 대한 ì½ê¸° ê¶Œí•œì„ ìœ„ìž„í•  수 있고, 다른 애플리케ì´ì…˜ì„ 통해 수정하기 때문ì—
쓰기 ê¶Œí•œë„ í•„ìš” 없습니다.
</p>
<p>
- 제공ìžì— 액세스하기 위해 ì¸í…트를 전송하는 ì¼ë°˜ì ì¸ 과정ì€
+ 제공ìžì— 액세스하기 위해 ì¸í…트를 전송하는 ì¼ë°˜ì ì¸ 과정ì€
"ì¸í…트를 통한 ë°ì´í„° 액세스" ì„¹ì…˜ì˜ <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
-콘í…츠 ì œê³µìž ê¸°ë³¸ ì •ë³´</a> ê°€ì´ë“œì— ìƒì„¸ížˆ 설명ë˜ì–´ 있습니다. ì´ìš© 가능한 ìž‘ì—…ì— ëŒ€í•´ 사용하는 ë™ìž‘,
+콘í…츠 ì œê³µìž ê¸°ë³¸ ì •ë³´</a> ê°€ì´ë“œì— ìƒì„¸ížˆ 설명ë˜ì–´ 있습니다. ì´ìš© 가능한 ìž‘ì—…ì— ëŒ€í•´ 사용하는 ë™ìž‘,
MIME 유형 ë° ë°ì´í„° ê°’ì€ í‘œ 4ì— ìš”ì•½ë˜ì–´ 있고,
{@link android.content.Intent#putExtra(String, String) putExtra()}와 함께 사용할 수 있는 추가 ê°’ì€
@@ -1358,20 +1358,20 @@ MIME 유형 ë° ë°ì´í„° ê°’ì€ í‘œ 4ì— ìš”ì•½ë˜ì–´ 있고,
ë‹¤ìŒ ì¤‘ 하나로 정해집니다.
<ul>
<li>
-{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI},
+{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI},
ì´ëŠ” ì—°ë½ì²˜ 목ë¡ì„ 표시합니다.
</li>
<li>
-{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI},
+{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI},
ì´ëŠ” ì›ì‹œ ì—°ë½ì²˜ì— 대한 ì „í™” 번호 목ë¡ì„ 표시합니다.
</li>
<li>
{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal#CONTENT_URI
-StructuredPostal.CONTENT_URI},
+StructuredPostal.CONTENT_URI},
ì´ëŠ” ì›ì‹œ ì—°ë½ì²˜ì— 대한 우편 주소 목ë¡ì„ 표시합니다.
</li>
<li>
-{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI},
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI},
ì´ëŠ” ì›ì‹œ ì—°ë½ì²˜ì— 대한 ì´ë©”ì¼ ì£¼ì†Œ 목ë¡ì„ 표시합니다.
</li>
</ul>
@@ -1380,15 +1380,15 @@ StructuredPostal.CONTENT_URI},
사용하지 않ìŒ
</td>
<td>
- 개발ìžê°€ 제공하는 콘í…츠 URIì— ë”°ë¼ ì›ì‹œ ì—°ë½ì²˜ 목ë¡ì´ë‚˜ ì›ì‹œ ì—°ë½ì²˜ì—서 가져온
+ 개발ìžê°€ 제공하는 콘í…츠 URIì— ë”°ë¼ ì›ì‹œ ì—°ë½ì²˜ 목ë¡ì´ë‚˜ ì›ì‹œ ì—°ë½ì²˜ì—서 가져온
ë°ì´í„° 목ë¡ì„ 표시합니다.
<p>
-
-{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()} 호출,
-ì´ëŠ” ì„ íƒí•œ í–‰ì˜ ì½˜í…츠 URI를 반환합니다. URIì˜ í˜•íƒœëŠ”
+
+{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()} 호출,
+ì´ëŠ” ì„ íƒí•œ í–‰ì˜ ì½˜í…츠 URI를 반환합니다. URIì˜ í˜•íƒœëŠ”
í…Œì´ë¸”ì˜ ì½˜í…츠 URIì— í–‰ì˜ <code>LOOKUP_ID</code>를 추가한 것입니다.
- ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì•±ì€ ì•¡í‹°ë¹„í‹° 수명 ë™ì•ˆ ì´ ì½˜í…츠 URIì—
-ì½ê¸° ë° ì“°ê¸° ê¶Œí•œì„ ìœ„ìž„í•©ë‹ˆë‹¤. ìžì„¸í•œ ë‚´ìš©ì€
+ ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì•±ì€ ì•¡í‹°ë¹„í‹° 수명 ë™ì•ˆ ì´ ì½˜í…츠 URIì—
+ì½ê¸° ë° ì“°ê¸° ê¶Œí•œì„ ìœ„ìž„í•©ë‹ˆë‹¤. ìžì„¸í•œ ë‚´ìš©ì€
<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
콘í…츠 ì œê³µìž ê¸°ë³¸ ì •ë³´</a> ê°€ì´ë“œë¥¼ 참조하십시오.
</p>
@@ -1403,12 +1403,12 @@ StructuredPostal.CONTENT_URI},
RawContacts.CONTENT_TYPE}, ì¼ë ¨ì˜ ì›ì‹œ ì—°ë½ì²˜ì— 대한 MIME 유형입니다.
</td>
<td>
- ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì˜ <strong>ì—°ë½ì²˜ 추가</strong> í™”ë©´ì„ í‘œì‹œí•©ë‹ˆë‹¤. 개발ìžê°€
-ì¸í…íŠ¸ì— ì¶”ê°€í•˜ëŠ” 추가 사항 ê°’ì´ í‘œì‹œë©ë‹ˆë‹¤.
+ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì˜ <strong>ì—°ë½ì²˜ 추가</strong> í™”ë©´ì„ í‘œì‹œí•©ë‹ˆë‹¤. 개발ìžê°€
+ì¸í…íŠ¸ì— ì¶”ê°€í•˜ëŠ” 추가 사항 ê°’ì´ í‘œì‹œë©ë‹ˆë‹¤.
{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()}와 함께 전송ë˜ëŠ” 경우,
-새로 ì¶”ê°€ëœ ì›ì‹œ ì—°ë½ì²˜ì˜ 콘í…츠 URI는
+새로 ì¶”ê°€ëœ ì›ì‹œ ì—°ë½ì²˜ì˜ 콘í…츠 URI는
"ë°ì´í„°" í•„ë“œì˜ {@link android.content.Intent} ì¸ìˆ˜ì— 있는 ì•¡í‹°ë¹„í‹°ì˜ {@link android.app.Activity#onActivityResult(int, int, Intent) onActivityResult()}
-콜백 메서드로
+콜백 메서드로
다시 전달ë©ë‹ˆë‹¤. ê°’ì„ ê°€ì ¸ì˜¤ë ¤ë©´, {@link android.content.Intent#getData()}를 호출합니다.
</td>
</tr>
@@ -1416,16 +1416,16 @@ RawContacts.CONTENT_TYPE}, ì¼ë ¨ì˜ ì›ì‹œ ì—°ë½ì²˜ì— 대한 MIME 유형입ë‹
<td><strong>ì—°ë½ì²˜ 편집</strong></td>
<td>{@link android.content.Intent#ACTION_EDIT}</td>
<td>
- ì—°ë½ì²˜ì— 대한
-{@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}입니다. íŽ¸ì§‘ìž ì•¡í‹°ë¹„í‹°ë¥¼ 사용하면 사용ìžê°€ ì´ ì—°ë½ì²˜ì™€ ê´€ë ¨ëœ ë°ì´í„°ë¥¼ ì–´ëŠ ê²ƒì´ë“ 
+ ì—°ë½ì²˜ì— 대한
+{@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}입니다. íŽ¸ì§‘ìž ì•¡í‹°ë¹„í‹°ë¥¼ 사용하면 사용ìžê°€ ì´ ì—°ë½ì²˜ì™€ ê´€ë ¨ëœ ë°ì´í„°ë¥¼ ì–´ëŠ ê²ƒì´ë“ 
편집할 수 있습니다.
</td>
<td>
{@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE
Contacts.CONTENT_ITEM_TYPE}, í•˜ë‚˜ì˜ ì—°ë½ì²˜ìž…니다.</td>
<td>
- ì—°ë½ì²˜ 애플리케ì´ì…˜ì— ì—°ë½ì²˜ 편집 í™”ë©´ì„ í‘œì‹œí•©ë‹ˆë‹¤. 개발ìžê°€
-ì¸í…íŠ¸ì— ì¶”ê°€í•˜ëŠ” 추가 사항 ê°’ì´ í‘œì‹œë©ë‹ˆë‹¤. 사용ìžê°€ <strong>완료</strong>를 í´ë¦­í•˜ì—¬ 편집 ë‚´ìš©ì„ ì €ìž¥í•˜ë©´,
+ ì—°ë½ì²˜ 애플리케ì´ì…˜ì— ì—°ë½ì²˜ 편집 í™”ë©´ì„ í‘œì‹œí•©ë‹ˆë‹¤. 개발ìžê°€
+ì¸í…íŠ¸ì— ì¶”ê°€í•˜ëŠ” 추가 사항 ê°’ì´ í‘œì‹œë©ë‹ˆë‹¤. 사용ìžê°€ <strong>완료</strong>를 í´ë¦­í•˜ì—¬ 편집 ë‚´ìš©ì„ ì €ìž¥í•˜ë©´,
액티비티가 전경으로 ëŒì•„옵니다.
</td>
</tr>
@@ -1439,31 +1439,31 @@ Contacts.CONTENT_ITEM_TYPE}, í•˜ë‚˜ì˜ ì—°ë½ì²˜ìž…니다.</td>
{@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE}
</td>
<td>
- ì´ ì¸í…트는 í•­ìƒ ì—°ë½ì²˜ ì•±ì˜ ì„ íƒê¸° í™”ë©´ì„ í‘œì‹œí•©ë‹ˆë‹¤. 사용ìžëŠ”
-편집할 ì—°ë½ì²˜ë¥¼ ì„ íƒí•˜ê±°ë‚˜ 새 ì—°ë½ì²˜ë¥¼ 추가할 수 있습니다. 사용ìžì˜ ì„ íƒì— ë”°ë¼
-편집 ë˜ëŠ” 추가 í™”ë©´ì´ ë‚˜íƒ€ë‚˜ê³  개발ìžê°€ ì¸í…íŠ¸ì— ì „ë‹¬í•˜ëŠ” 추가 사항 ë°ì´í„°ê°€
-표시ë©ë‹ˆë‹¤. ì•±ì´ ì´ë©”ì¼ì´ë‚˜ ì „í™” 번호 ë“±ì˜ ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 표시하는 경우,
-ì´ ì¸í…트를 사용하면 사용ìžê°€ 기존 ì—°ë½ì²˜ì— ë°ì´í„°ë¥¼ 추가할 수
+ ì´ ì¸í…트는 í•­ìƒ ì—°ë½ì²˜ ì•±ì˜ ì„ íƒê¸° í™”ë©´ì„ í‘œì‹œí•©ë‹ˆë‹¤. 사용ìžëŠ”
+편집할 ì—°ë½ì²˜ë¥¼ ì„ íƒí•˜ê±°ë‚˜ 새 ì—°ë½ì²˜ë¥¼ 추가할 수 있습니다. 사용ìžì˜ ì„ íƒì— ë”°ë¼
+편집 ë˜ëŠ” 추가 í™”ë©´ì´ ë‚˜íƒ€ë‚˜ê³  개발ìžê°€ ì¸í…íŠ¸ì— ì „ë‹¬í•˜ëŠ” 추가 사항 ë°ì´í„°ê°€
+표시ë©ë‹ˆë‹¤. ì•±ì´ ì´ë©”ì¼ì´ë‚˜ ì „í™” 번호 ë“±ì˜ ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 표시하는 경우,
+ì´ ì¸í…트를 사용하면 사용ìžê°€ 기존 ì—°ë½ì²˜ì— ë°ì´í„°ë¥¼ 추가할 수
있습니다.
<p class="note">
- <strong>참고:</strong> ì´ ì¸í…íŠ¸ì˜ ì¶”ê°€ 사항ì—서는 ì´ë¦„ ê°’ì„ ì „ì†¡í•˜ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤.
-사용ìžê°€ í•­ìƒ ê¸°ì¡´ì˜ ì´ë¦„ì„ ì„ íƒí•˜ê±°ë‚˜ 새 ì´ë¦„ì„ ì¶”ê°€í•˜ê¸° 때문입니다. 게다가,
-개발ìžê°€ ì´ë¦„ì„ ì „ì†¡í•˜ê³  사용ìžê°€ íŽ¸ì§‘ì„ ì„ íƒí•˜ë©´ ì—°ë½ì²˜ ì•±ì€ ê°œë°œìžê°€ 전송한 ì´ë¦„ì„ í‘œì‹œí•˜ë©´ì„œ
-ì´ì „ ê°’ì„ ìž¬ì •ì˜í•˜ê²Œ ë©ë‹ˆë‹¤. 사용ìžê°€
+ <strong>참고:</strong> ì´ ì¸í…íŠ¸ì˜ ì¶”ê°€ 사항ì—서는 ì´ë¦„ ê°’ì„ ì „ì†¡í•˜ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤.
+사용ìžê°€ í•­ìƒ ê¸°ì¡´ì˜ ì´ë¦„ì„ ì„ íƒí•˜ê±°ë‚˜ 새 ì´ë¦„ì„ ì¶”ê°€í•˜ê¸° 때문입니다. 게다가,
+개발ìžê°€ ì´ë¦„ì„ ì „ì†¡í•˜ê³  사용ìžê°€ íŽ¸ì§‘ì„ ì„ íƒí•˜ë©´ ì—°ë½ì²˜ ì•±ì€ ê°œë°œìžê°€ 전송한 ì´ë¦„ì„ í‘œì‹œí•˜ë©´ì„œ
+ì´ì „ ê°’ì„ ìž¬ì •ì˜í•˜ê²Œ ë©ë‹ˆë‹¤. 사용ìžê°€
ì´ë¥¼ 눈치채지 못하고 편집 ë‚´ìš©ì„ ì €ìž¥í•˜ë©´ ì´ì „ ê°’ì€ ì†ì‹¤ë©ë‹ˆë‹¤.
</p>
</td>
</tr>
</table>
<p>
- ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì•±ì€ ê°œë°œìžê°€ ì¸í…트로 ì›ì‹œ ì—°ë½ì²˜ ë˜ëŠ” ê·¸ì— ì†í•œ 모든 ë°ì´í„°ë¥¼ 삭제하ë„ë¡
-허용하지 않습니다. 대신, ì›ì‹œ ì—°ë½ì²˜ë¥¼ 삭제하려면
-{@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()}
+ ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì•±ì€ ê°œë°œìžê°€ ì¸í…트로 ì›ì‹œ ì—°ë½ì²˜ ë˜ëŠ” ê·¸ì— ì†í•œ 모든 ë°ì´í„°ë¥¼ 삭제하ë„ë¡
+허용하지 않습니다. 대신, ì›ì‹œ ì—°ë½ì²˜ë¥¼ 삭제하려면
+{@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()}
ë˜ëŠ” {@link android.content.ContentProviderOperation#newDelete(Uri)
ContentProviderOperation.newDelete()}를 사용합니다.
</p>
<p>
- ë‹¤ìŒ ì¡°ê°ì€ 새로운 ì›ì‹œ ì—°ë½ì²˜ì™€
+ ë‹¤ìŒ ì¡°ê°ì€ 새로운 ì›ì‹œ ì—°ë½ì²˜ì™€
ë°ì´í„°ë¥¼ 삽입하는 ì¸í…트를 구성, 전송하는 ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다.
</p>
<pre>
@@ -1560,65 +1560,65 @@ startActivity(insertIntent);
</pre>
<h3 id="DataIntegrity">ë°ì´í„° 무결성</h3>
<p>
- ì—°ë½ì²˜ 리í¬ì§€í† ë¦¬ì—는 ì‚¬ìš©ìž ì¸¡ì—서 올바르고 ìµœì‹ ì¼ ê²ƒìœ¼ë¡œ 기대하는 중요하고 민ê°í•œ ë°ì´í„°ê°€ 들어있으므로
-ì—°ë½ì²˜ 제공ìžëŠ” ë°ì´í„° ë¬´ê²°ì„±ì— ëŒ€í•œ 잘 ì •ì˜ëœ ê·œì¹™ì´ ìžˆìŠµë‹ˆë‹¤. 개발ìž
-여러분ì—게는 ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 수정할 때 ì´ì™€ ê°™ì€ ê·œì¹™ì„ ì¤€ìˆ˜í•  ì˜ë¬´ê°€ 있습니다. 아래ì—는 중요한 규칙ì„
+ ì—°ë½ì²˜ 리í¬ì§€í† ë¦¬ì—는 ì‚¬ìš©ìž ì¸¡ì—서 올바르고 ìµœì‹ ì¼ ê²ƒìœ¼ë¡œ 기대하는 중요하고 민ê°í•œ ë°ì´í„°ê°€ 들어있으므로
+ì—°ë½ì²˜ 제공ìžëŠ” ë°ì´í„° ë¬´ê²°ì„±ì— ëŒ€í•œ 잘 ì •ì˜ëœ ê·œì¹™ì´ ìžˆìŠµë‹ˆë‹¤. 개발ìž
+여러분ì—게는 ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 수정할 때 ì´ì™€ ê°™ì€ ê·œì¹™ì„ ì¤€ìˆ˜í•  ì˜ë¬´ê°€ 있습니다. 아래ì—는 중요한 규칙ì„
몇 가지 나열해 놓았습니다.
</p>
<dl>
<dt>
- {@link android.provider.ContactsContract.RawContacts} í–‰ì„ ì¶”ê°€í•  때마다 언제나
+ {@link android.provider.ContactsContract.RawContacts} í–‰ì„ ì¶”ê°€í•  때마다 언제나
{@link android.provider.ContactsContract.CommonDataKinds.StructuredName} í–‰ì„ ì¶”ê°€í•©ë‹ˆë‹¤.
</dt>
<dd>
- {@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì— {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} í–‰ì´ ì—†ëŠ” {@link android.provider.ContactsContract.RawContacts} í–‰ì´ ìžˆìœ¼ë©´
+ {@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì— {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} í–‰ì´ ì—†ëŠ” {@link android.provider.ContactsContract.RawContacts} í–‰ì´ ìžˆìœ¼ë©´
통합 과정ì—서
문제가 ë°œìƒí•  수 있습니다.
</dd>
<dt>
- 언제나 새로운 {@link android.provider.ContactsContract.Data} í–‰ì„
+ 언제나 새로운 {@link android.provider.ContactsContract.Data} í–‰ì„
해당 ìƒìœ„ {@link android.provider.ContactsContract.RawContacts} í–‰ì— ì—°ê²°í•©ë‹ˆë‹¤.
</dt>
<dd>
- {@link android.provider.ContactsContract.RawContacts}ì— ì—°ê²°ë˜ì§€ ì•Šì€ {@link android.provider.ContactsContract.Data} í–‰ì€
-기기 ì—°ë½ì²˜ 애플리케ì´ì…˜ì— 표시ë˜ì§€ 않고,
+ {@link android.provider.ContactsContract.RawContacts}ì— ì—°ê²°ë˜ì§€ ì•Šì€ {@link android.provider.ContactsContract.Data} í–‰ì€
+기기 ì—°ë½ì²˜ 애플리케ì´ì…˜ì— 표시ë˜ì§€ 않고,
ë™ê¸°í™” 어댑터ì—서 문제를 ë°œìƒì‹œí‚¬ 수 있습니다.
</dd>
<dt>
ê°œë°œìž ë³¸ì¸ì˜ ì†Œìœ ì¸ ì›ì‹œ ì—°ë½ì²˜ì— 대한 ë°ì´í„°ë§Œ 변경하십시오.
</dt>
<dd>
- ì—°ë½ì²˜ 제공ìžëŠ” 보통 여러 가지 서로 다른 계정 유형/온ë¼ì¸ 서비스ì—서 가져온
-ë°ì´í„°ë¥¼ 관리한다는 ì ì„ 명심하십시오. 개발ìžì˜ 애플리케ì´ì…˜ì€ 본ì¸ì—게
-ì†í•œ í–‰ì— ëŒ€í•œ ë°ì´í„°ë§Œ 수정 ë˜ëŠ” 삭제하ë„ë¡ í™•ì‹¤ížˆ í•´ë‘어야 하며, ë°ì´í„°ë¥¼ 삽입할 때ì—ë„ ê°œë°œìž ë³¸ì¸ì´
+ ì—°ë½ì²˜ 제공ìžëŠ” 보통 여러 가지 서로 다른 계정 유형/온ë¼ì¸ 서비스ì—서 가져온
+ë°ì´í„°ë¥¼ 관리한다는 ì ì„ 명심하십시오. 개발ìžì˜ 애플리케ì´ì…˜ì€ 본ì¸ì—게
+ì†í•œ í–‰ì— ëŒ€í•œ ë°ì´í„°ë§Œ 수정 ë˜ëŠ” 삭제하ë„ë¡ í™•ì‹¤ížˆ í•´ë‘어야 하며, ë°ì´í„°ë¥¼ 삽입할 때ì—ë„ ê°œë°œìž ë³¸ì¸ì´
제어하는 계정 유형과 ì´ë¦„ë§Œ 사용해야 합니다.
</dd>
<dt>
- 권한, 콘í…츠 URI, URI 경로, ì—´ ì´ë¦„, MIME 유형 ë°
-{@link android.provider.ContactsContract.CommonDataKinds.CommonColumns#TYPE} ê°’ì— ëŒ€í•´ì„œëŠ” í•­ìƒ
+ 권한, 콘í…츠 URI, URI 경로, ì—´ ì´ë¦„, MIME 유형 ë°
+{@link android.provider.ContactsContract.CommonDataKinds.CommonColumns#TYPE} ê°’ì— ëŒ€í•´ì„œëŠ” í•­ìƒ
{@link android.provider.ContactsContract} ë° ê·¸ 하위 í´ëž˜ìФì—서 ì •ì˜í•œ ìƒìˆ˜ë¥¼ 사용합니다.
</dt>
<dd>
- ì´ëŸ° ìƒìˆ˜ë¥¼ 사용하면 오류를 피하는 ë° ë„ì›€ì´ ë©ë‹ˆë‹¤. ì´ëŸ° ìƒìˆ˜ 중 하나ë¼ë„ 사용하지 않게 ë˜ëŠ” 경우 컴파ì¼ëŸ¬ë¡œë¶€í„°
+ ì´ëŸ° ìƒìˆ˜ë¥¼ 사용하면 오류를 피하는 ë° ë„ì›€ì´ ë©ë‹ˆë‹¤. ì´ëŸ° ìƒìˆ˜ 중 하나ë¼ë„ 사용하지 않게 ë˜ëŠ” 경우 컴파ì¼ëŸ¬ë¡œë¶€í„°
ì•Œë¦¼ì„ ë°›ê¸°ë„ í•©ë‹ˆë‹¤.
</dd>
</dl>
<h3 id="CustomData">ì‚¬ìš©ìž ì§€ì • ë°ì´í„° í–‰</h3>
<p>
ì‚¬ìš©ìž ì§€ì • MIME ìœ í˜•ì„ ìƒì„±í•˜ì—¬ 사용하면,
-{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì— ìžˆëŠ” 본ì¸ì˜ ë°ì´í„° í–‰ì„ ì‚½ìž…, 편집, ì‚­ì œ ë° ê²€ìƒ‰í•  수 있습니다. 개발ìžì˜ í–‰ì€
-{@link android.provider.ContactsContract.DataColumns}ì—서
-ì •ì˜ëœ ì—´ë§Œ 사용하ë„ë¡ ì œí•œë˜ì–´ 있습니다. 다만 ë‚˜ë¦„ì˜ ìœ í˜•ë³„ ì—´ ì´ë¦„ì„
-기본 ì—´ ì´ë¦„ì— ë§¤í•‘í•  수는 있습니다. ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서는
-개발ìžì˜ í–‰ì— ëŒ€í•œ ë°ì´í„°ê°€ 표시는 ë˜ì§€ë§Œ 편집ì´ë‚˜ 삭제는 í•  수 없고, 사용ìžê°€ 추가 ë°ì´í„°ë¥¼
-추가할 ìˆ˜ë„ ì—†ìŠµë‹ˆë‹¤. 사용ìžê°€ 개발ìžì˜ ì‚¬ìš©ìž ì§€ì • ë°ì´í„° í–‰ì„ ìˆ˜ì •í•˜ë„ë¡ í—ˆìš©í•˜ë ¤ë©´, 본ì¸ì˜ 애플리케ì´ì…˜ì—
+{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì— ìžˆëŠ” 본ì¸ì˜ ë°ì´í„° í–‰ì„ ì‚½ìž…, 편집, ì‚­ì œ ë° ê²€ìƒ‰í•  수 있습니다. 개발ìžì˜ í–‰ì€
+{@link android.provider.ContactsContract.DataColumns}ì—서
+ì •ì˜ëœ ì—´ë§Œ 사용하ë„ë¡ ì œí•œë˜ì–´ 있습니다. 다만 ë‚˜ë¦„ì˜ ìœ í˜•ë³„ ì—´ ì´ë¦„ì„
+기본 ì—´ ì´ë¦„ì— ë§¤í•‘í•  수는 있습니다. ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서는
+개발ìžì˜ í–‰ì— ëŒ€í•œ ë°ì´í„°ê°€ 표시는 ë˜ì§€ë§Œ 편집ì´ë‚˜ 삭제는 í•  수 없고, 사용ìžê°€ 추가 ë°ì´í„°ë¥¼
+추가할 ìˆ˜ë„ ì—†ìŠµë‹ˆë‹¤. 사용ìžê°€ 개발ìžì˜ ì‚¬ìš©ìž ì§€ì • ë°ì´í„° í–‰ì„ ìˆ˜ì •í•˜ë„ë¡ í—ˆìš©í•˜ë ¤ë©´, 본ì¸ì˜ 애플리케ì´ì…˜ì—
편집기 액티비티를 제공해야 합니다.
</p>
<p>
- 개발ìžì˜ ì‚¬ìš©ìž ì§€ì • ë°ì´í„°ë¥¼ 표시하려면, <code>&lt;ContactsAccountType&gt;</code> 요소와 하나 ì´ìƒì˜ <code>&lt;ContactsDataKind&gt;</code> 하위 요소를 í¬í•¨í•˜ëŠ” <code>contacts.xml</code> 파ì¼ì„
+ 개발ìžì˜ ì‚¬ìš©ìž ì§€ì • ë°ì´í„°ë¥¼ 표시하려면, <code>&lt;ContactsAccountType&gt;</code> 요소와 하나 ì´ìƒì˜ <code>&lt;ContactsDataKind&gt;</code> 하위 요소를 í¬í•¨í•˜ëŠ” <code>contacts.xml</code> 파ì¼ì„
제공합니다.
- ì´ ë‚´ìš©ì€
+ ì´ ë‚´ìš©ì€
<a href="#SocialStreamDataKind"><code>&lt;ContactsDataKind&gt; element</code></a> ì„¹ì…˜ì— ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</p>
<p>
@@ -1628,15 +1628,15 @@ startActivity(insertIntent);
</p>
<h2 id="SyncAdapters">ì—°ë½ì²˜ ì œê³µìž ë™ê¸°í™” 어댑터</h2>
<p>
- ì—°ë½ì²˜ 제공ìžëŠ” 기기와 온ë¼ì¸ 서비스 사ì´ì—서 ì—°ë½ì²˜ ë°ì´í„°ì˜ <strong>ë™ê¸°í™”</strong>를
-처리한다는 구체ì ì¸ 목ì ì„ ë‘ê³  ë””ìžì¸ëœ 것입니다. ì´ê²ƒì„ 사용하면 사용ìžê°€ 기존ì˜
+ ì—°ë½ì²˜ 제공ìžëŠ” 기기와 온ë¼ì¸ 서비스 사ì´ì—서 ì—°ë½ì²˜ ë°ì´í„°ì˜ <strong>ë™ê¸°í™”</strong>를
+처리한다는 구체ì ì¸ 목ì ì„ ë‘ê³  ë””ìžì¸ëœ 것입니다. ì´ê²ƒì„ 사용하면 사용ìžê°€ 기존ì˜
ë°ì´í„°ë¥¼ 새 ê¸°ê¸°ì— ë‹¤ìš´ë¡œë“œí•  ìˆ˜ë„ ìžˆê³ , ê¸°ì¡´ì˜ ë°ì´í„°ë¥¼ 새 ê³„ì •ì— ì—…ë¡œë“œí•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
- ë™ê¸°í™”를 사용하면 사용ìžê°€ 추가나 ë³€ê²½ì˜ ì¶œì²˜ì™€ 관계 ì—†ì´ ìµœì‹  ë°ì´í„°ë¥¼
-편리하게 사용할 수 있게 ë³´ìž¥í•˜ê¸°ë„ í•©ë‹ˆë‹¤. ë™ê¸°í™”ì˜ ë˜ ë‹¤ë¥¸ 장ì ì€
+ ë™ê¸°í™”를 사용하면 사용ìžê°€ 추가나 ë³€ê²½ì˜ ì¶œì²˜ì™€ 관계 ì—†ì´ ìµœì‹  ë°ì´í„°ë¥¼
+편리하게 사용할 수 있게 ë³´ìž¥í•˜ê¸°ë„ í•©ë‹ˆë‹¤. ë™ê¸°í™”ì˜ ë˜ ë‹¤ë¥¸ 장ì ì€
기기가 네트워í¬ì— ì—°ê²°ë˜ì–´ 있지 않ë”ë¼ë„ ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 사용할 수 있다는 것입니다.
</p>
<p>
- 다양한 ë°©ì‹ìœ¼ë¡œ ë™ê¸°í™”를 구현할 수 있지만, Android 시스템ì€
+ 다양한 ë°©ì‹ìœ¼ë¡œ ë™ê¸°í™”를 구현할 수 있지만, Android 시스템ì€
í”ŒëŸ¬ê·¸ì¸ ë™ê¸°í™” 프레임워í¬ë¥¼ 제공하여 다ìŒê³¼ ê°™ì€ ìž‘ì—…ë“¤ì„ ìžë™í™”í•´ì¤ë‹ˆë‹¤.
<ul>
@@ -1651,40 +1651,40 @@ startActivity(insertIntent);
</li>
</ul>
<p>
- ì´ í”„ë ˆìž„ì›Œí¬ë¥¼ 사용하려면 ë™ê¸°í™” 어댑터 플러그ì¸ì€ 개발ìžê°€ ì§ì ‘ 제공해야 합니다. ë™ê¸°í™” 어댑터는
-서비스와 콘í…츠 제공ìžë§ˆë‹¤ ê°ê¸° 다르지만, ê°™ì€ ì„œë¹„ìŠ¤ì— ëŒ€í•´ 여러 ê°œì˜ ê³„ì • ì´ë¦„ì„ ì²˜ë¦¬í•  수 있습니다. ì´
+ ì´ í”„ë ˆìž„ì›Œí¬ë¥¼ 사용하려면 ë™ê¸°í™” 어댑터 플러그ì¸ì€ 개발ìžê°€ ì§ì ‘ 제공해야 합니다. ë™ê¸°í™” 어댑터는
+서비스와 콘í…츠 제공ìžë§ˆë‹¤ ê°ê¸° 다르지만, ê°™ì€ ì„œë¹„ìŠ¤ì— ëŒ€í•´ 여러 ê°œì˜ ê³„ì • ì´ë¦„ì„ ì²˜ë¦¬í•  수 있습니다. ì´
í”„ë ˆìž„ì›Œí¬ ë˜í•œ ê°™ì€ ì„œë¹„ìŠ¤ì™€ 제공ìžì— 대해 여러 ê°œì˜ ë™ê¸°í™” 어댑터를 허용합니다.
</p>
<h3 id="SyncClassesFiles">ë™ê¸°í™” 어댑터 í´ëž˜ìФ ë° íŒŒì¼</h3>
<p>
- ë™ê¸°í™” 어댑터를
-{@link android.content.AbstractThreadedSyncAdapter}ì˜
-하위 í´ëž˜ìŠ¤ë¡œ 구현하고 ì´ë¥¼Android 애플리케ì´ì…˜ì˜ ì¼ë¶€ë¡œ 설치합니다. ì‹œìŠ¤í…œì€ ì• í”Œë¦¬ì¼€ì´ì…˜ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì˜ ìš”ì†Œì™€ 매니페스트가 가리키는
-특수 XML 파ì¼ì—서 ë™ê¸°í™” ì–´ëŒ‘í„°ì— ê´€í•œ 정보를 얻습니다. XML 파ì¼ì€
-온ë¼ì¸ 서비스와 콘í…츠 제공ìžì˜ ê¶Œí•œì— ëŒ€í•œ 계정 ìœ í˜•ì„ ì •ì˜í•˜ê³ ,
-ì´ë“¤ì´ 함께 어댑터를 고유하게 ì‹ë³„합니다. ë™ê¸°í™” 어댑터가 활성화ë˜ë ¤ë©´ 사용ìžê°€
-ë™ê¸°í™” ì–´ëŒ‘í„°ì˜ ê³„ì • ìœ í˜•ì— ëŒ€í•´ ê³„ì •ì„ ì¶”ê°€í•˜ê³  해당 ë™ê¸°í™” 어댑터와 ë™ê¸°í™”하는 콘í…츠 제공ìžì˜ ë™ê¸°í™”를
-활성화해야 합니다. ì´ ì‹œì ì—서, ì‹œìŠ¤í…œì´ ì–´ëŒ‘í„° 관리를 시작하고,
+ ë™ê¸°í™” 어댑터를
+{@link android.content.AbstractThreadedSyncAdapter}ì˜
+하위 í´ëž˜ìŠ¤ë¡œ 구현하고 ì´ë¥¼Android 애플리케ì´ì…˜ì˜ ì¼ë¶€ë¡œ 설치합니다. ì‹œìŠ¤í…œì€ ì• í”Œë¦¬ì¼€ì´ì…˜ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì˜ ìš”ì†Œì™€ 매니페스트가 가리키는
+특수 XML 파ì¼ì—서 ë™ê¸°í™” ì–´ëŒ‘í„°ì— ê´€í•œ 정보를 얻습니다. XML 파ì¼ì€
+온ë¼ì¸ 서비스와 콘í…츠 제공ìžì˜ ê¶Œí•œì— ëŒ€í•œ 계정 ìœ í˜•ì„ ì •ì˜í•˜ê³ ,
+ì´ë“¤ì´ 함께 어댑터를 고유하게 ì‹ë³„합니다. ë™ê¸°í™” 어댑터가 활성화ë˜ë ¤ë©´ 사용ìžê°€
+ë™ê¸°í™” ì–´ëŒ‘í„°ì˜ ê³„ì • ìœ í˜•ì— ëŒ€í•´ ê³„ì •ì„ ì¶”ê°€í•˜ê³  해당 ë™ê¸°í™” 어댑터와 ë™ê¸°í™”하는 콘í…츠 제공ìžì˜ ë™ê¸°í™”를
+활성화해야 합니다. ì´ ì‹œì ì—서, ì‹œìŠ¤í…œì´ ì–´ëŒ‘í„° 관리를 시작하고,
콘í…츠 제공ìžì™€ 서버 사ì´ì—서 ë™ê¸°í™”ê°€ 필요할 때 ì´ë¥¼ 호출합니다.
</p>
<p class="note">
- <strong>참고:</strong> 계정 ìœ í˜•ì„ ë™ê¸°í™” 어댑터 ì‹ë³„ì˜ ì¼ë¶€ë¡œ 사용하면
-ì‹œìŠ¤í…œì´ ë™ì¼í•œ ê°™ì€ ì¡°ì§ì—서 여러 ì„œë¹„ìŠ¤ì— ì•¡ì„¸ìŠ¤í•˜ëŠ” ë™ê¸°í™” 어댑터를
-ê°ì§€í•˜ê³  그룹화할 수 있습니다. 예를 들어, Google 온ë¼ì¸ ì„œë¹„ìŠ¤ì˜ ë™ê¸°í™” 어댑터는 계정 ìœ í˜•ì´ ëª¨ë‘
-<code>com.google</code>로 같습니다. 사용ìžê°€ ê¸°ê¸°ì— Google ê³„ì •ì„ ì¶”ê°€í•˜ë©´,
-Google ì„œë¹„ìŠ¤ì— ì„¤ì¹˜ëœ ëª¨ë“  ë™ê¸°í™” 어댑터가 함께 목ë¡ìœ¼ë¡œ 표시ë©ë‹ˆë‹¤. 목ë¡ì— ê²Œìž¬ëœ ê° ë™ê¸°í™”는
+ <strong>참고:</strong> 계정 ìœ í˜•ì„ ë™ê¸°í™” 어댑터 ì‹ë³„ì˜ ì¼ë¶€ë¡œ 사용하면
+ì‹œìŠ¤í…œì´ ë™ì¼í•œ ê°™ì€ ì¡°ì§ì—서 여러 ì„œë¹„ìŠ¤ì— ì•¡ì„¸ìŠ¤í•˜ëŠ” ë™ê¸°í™” 어댑터를
+ê°ì§€í•˜ê³  그룹화할 수 있습니다. 예를 들어, Google 온ë¼ì¸ ì„œë¹„ìŠ¤ì˜ ë™ê¸°í™” 어댑터는 계정 ìœ í˜•ì´ ëª¨ë‘
+<code>com.google</code>로 같습니다. 사용ìžê°€ ê¸°ê¸°ì— Google ê³„ì •ì„ ì¶”ê°€í•˜ë©´,
+Google ì„œë¹„ìŠ¤ì— ì„¤ì¹˜ëœ ëª¨ë“  ë™ê¸°í™” 어댑터가 함께 목ë¡ìœ¼ë¡œ 표시ë©ë‹ˆë‹¤. 목ë¡ì— ê²Œìž¬ëœ ê° ë™ê¸°í™”는
기기ì—서 ê°ê¸° 다른 콘í…츠 제공ìžì™€ ë™ê¸°í™”합니다.
</p>
<p>
- ëŒ€ë¶€ë¶„ì˜ ì„œë¹„ìŠ¤ì—서는 사용ìžê°€ ë°ì´í„°ì— 액세스하기 ì „ì—
-ID를 확ì¸í•´ì•¼ 하기 ë•Œë¬¸ì— Androidì—서는 ë™ê¸°í™” 어댑터 프레임워í¬ì™€ 비슷하면서 종종 ì´ì™€ 함께 ì“°ì´ê¸°ë„ 하는
-ì¸ì¦ 프레임워í¬ë¥¼ 제공합니다. ì¸ì¦ 프레임워í¬ëŠ”
-{@link android.accounts.AbstractAccountAuthenticator}ì˜ í•˜ìœ„ í´ëž˜ìФì¸
-í”ŒëŸ¬ê·¸ì¸ ì¸ì¦ìžë¥¼ 사용합니다. ì¸ì¦ìžëŠ” ë‹¤ìŒ ì ˆì°¨ì— ë”°ë¼
+ ëŒ€ë¶€ë¶„ì˜ ì„œë¹„ìŠ¤ì—서는 사용ìžê°€ ë°ì´í„°ì— 액세스하기 ì „ì—
+ID를 확ì¸í•´ì•¼ 하기 ë•Œë¬¸ì— Androidì—서는 ë™ê¸°í™” 어댑터 프레임워í¬ì™€ 비슷하면서 종종 ì´ì™€ 함께 ì“°ì´ê¸°ë„ 하는
+ì¸ì¦ 프레임워í¬ë¥¼ 제공합니다. ì¸ì¦ 프레임워í¬ëŠ”
+{@link android.accounts.AbstractAccountAuthenticator}ì˜ í•˜ìœ„ í´ëž˜ìФì¸
+í”ŒëŸ¬ê·¸ì¸ ì¸ì¦ìžë¥¼ 사용합니다. ì¸ì¦ìžëŠ” ë‹¤ìŒ ì ˆì°¨ì— ë”°ë¼
사용ìžì˜ ID를 확ì¸í•©ë‹ˆë‹¤.
<ol>
<li>
- ì‚¬ìš©ìž ì´ë¦„, 암호 ë˜ëŠ” 유사한 ì •ë³´(사용ìžì˜
+ ì‚¬ìš©ìž ì´ë¦„, 암호 ë˜ëŠ” 유사한 ì •ë³´(사용ìžì˜
<strong>ìžê²© ì¦ëª…</strong>)를 수집합니다.
</li>
<li>
@@ -1695,9 +1695,9 @@ ID를 확ì¸í•´ì•¼ 하기 ë•Œë¬¸ì— Androidì—서는 ë™ê¸°í™” 어댑터 프레ì
</li>
</ol>
<p>
- 서비스가 ìžê²© ì¦ëª…ì„ ìˆ˜ë½í•˜ë©´
-ì¸ì¦ìžê°€ ìžê²© ì¦ëª…ì„ ì €ìž¥í•˜ì—¬ ë‚˜ì¤‘ì— ì‚¬ìš©í•  수 있습니다. í”ŒëŸ¬ê·¸ì¸ ì¸ì¦ìž 프레임워í¬ë¡œ ì¸í•´,
-{@link android.accounts.AccountManager}는 Oauth2 authTokenê³¼ ê°™ì´ ì¸ì¦ìžê°€ ì§€ì›í•˜ê³  노출하기로 ì„ íƒí•˜ëŠ” 모든 authTokenì— ì•¡ì„¸ìŠ¤ë¥¼
+ 서비스가 ìžê²© ì¦ëª…ì„ ìˆ˜ë½í•˜ë©´
+ì¸ì¦ìžê°€ ìžê²© ì¦ëª…ì„ ì €ìž¥í•˜ì—¬ ë‚˜ì¤‘ì— ì‚¬ìš©í•  수 있습니다. í”ŒëŸ¬ê·¸ì¸ ì¸ì¦ìž 프레임워í¬ë¡œ ì¸í•´,
+{@link android.accounts.AccountManager}는 Oauth2 authTokenê³¼ ê°™ì´ ì¸ì¦ìžê°€ ì§€ì›í•˜ê³  노출하기로 ì„ íƒí•˜ëŠ” 모든 authTokenì— ì•¡ì„¸ìŠ¤ë¥¼
제공합니다.
</p>
<p>
@@ -1706,18 +1706,18 @@ ID를 확ì¸í•´ì•¼ 하기 ë•Œë¬¸ì— Androidì—서는 ë™ê¸°í™” 어댑터 프레ì
</p>
<h3 id="SyncAdapterImplementing">ë™ê¸°í™” 어댑터 구현</h3>
<p>
- ì—°ë½ì²˜ 제공ìžì— 대한 ë™ê¸°í™” 어댑터를 구현하려면,
+ ì—°ë½ì²˜ 제공ìžì— 대한 ë™ê¸°í™” 어댑터를 구현하려면,
다ìŒì´ 들어있는 Android 애플리케ì´ì…˜ì„ ìƒì„±í•˜ëŠ” 것으로 시작합니다.
</p>
<dl>
<dt>
- ì‹œìŠ¤í…œì˜ ìš”ì²­ì— ì‘답하여 ë™ê¸°í™” ì–´ëŒ‘í„°ì— ë°”ì¸ë”©í•˜ëŠ” {@link android.app.Service}
+ ì‹œìŠ¤í…œì˜ ìš”ì²­ì— ì‘답하여 ë™ê¸°í™” ì–´ëŒ‘í„°ì— ë°”ì¸ë”©í•˜ëŠ” {@link android.app.Service}
구성 요소.
</dt>
<dd>
- ì‹œìŠ¤í…œì´ ë™ê¸°í™”를 ì‹¤í–‰í•˜ê³ ìž í•˜ëŠ” 경우, ì´ëŠ”
+ ì‹œìŠ¤í…œì´ ë™ê¸°í™”를 ì‹¤í–‰í•˜ê³ ìž í•˜ëŠ” 경우, ì´ëŠ”
ì„œë¹„ìŠ¤ì˜ {@link android.app.Service#onBind(Intent) onBind()} 메서드를 호출하여
-ë™ê¸°í™” ì–´ëŒ‘í„°ì˜ {@link android.os.IBinder}를 가져옵니다. ì´ë ‡ê²Œ 하면 ì‹œìŠ¤í…œì´ ì–´ëŒ‘í„°ì˜
+ë™ê¸°í™” ì–´ëŒ‘í„°ì˜ {@link android.os.IBinder}를 가져옵니다. ì´ë ‡ê²Œ 하면 ì‹œìŠ¤í…œì´ ì–´ëŒ‘í„°ì˜
ë©”ì„œë“œì— ëŒ€í•´ 프로세스간 í˜¸ì¶œì„ ìˆ˜í–‰í•  수 있습니다.
<p>
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
@@ -1726,18 +1726,18 @@ ID를 확ì¸í•´ì•¼ 하기 ë•Œë¬¸ì— Androidì—서는 ë™ê¸°í™” 어댑터 프레ì
</p>
</dd>
<dt>
- {@link android.content.AbstractThreadedSyncAdapter}ì˜
+ {@link android.content.AbstractThreadedSyncAdapter}ì˜
하위 í´ëž˜ìŠ¤ë¡œ êµ¬í˜„ëœ ì‹¤ì œ ë™ê¸°í™” 어댑터.
</dt>
<dd>
- ì´ í´ëž˜ìŠ¤ëŠ” 서버ì—서 ë°ì´í„°ë¥¼ 다운로드하고, 기기ì—서 ë°ì´í„°ë¥¼ 업로드하고,
-ì¶©ëŒì„ 해결하는 ìž‘ì—…ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. ì–´ëŒ‘í„°ì˜ ì£¼ìš” 작업ì€
+ ì´ í´ëž˜ìŠ¤ëŠ” 서버ì—서 ë°ì´í„°ë¥¼ 다운로드하고, 기기ì—서 ë°ì´í„°ë¥¼ 업로드하고,
+ì¶©ëŒì„ 해결하는 ìž‘ì—…ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. ì–´ëŒ‘í„°ì˜ ì£¼ìš” 작업ì€
{@link android.content.AbstractThreadedSyncAdapter#onPerformSync(
Account, Bundle, String, ContentProviderClient, SyncResult)
onPerformSync()} 메서드ì—서 실행합니다. ì´ í´ëž˜ìŠ¤ëŠ” 반드시 ë‹¨ì¼ í•­ëª©ìœ¼ë¡œ ì¸ìŠ¤í„´íŠ¸í™”í•´ì•¼ 합니다.
<p>
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
-샘플 ë™ê¸°í™” 어댑터</a> 샘플 앱ì—서 ë™ê¸°í™” 어댑터는
+샘플 ë™ê¸°í™” 어댑터</a> 샘플 앱ì—서 ë™ê¸°í™” 어댑터는
<code>com.example.android.samplesync.syncadapter.SyncAdapter</code> í´ëž˜ìФì—서 ì •ì˜ë©ë‹ˆë‹¤.
</p>
</dd>
@@ -1745,23 +1745,23 @@ onPerformSync()} 메서드ì—서 실행합니다. ì´ í´ëž˜ìŠ¤ëŠ” 반드시 단
{@link android.app.Application}ì˜ í•˜ìœ„ í´ëž˜ìФ.
</dt>
<dd>
- ì´ í´ëž˜ìŠ¤ëŠ” ë™ê¸°í™” 어댑터 ë‹¨ì¼ í•­ëª©ì˜ íŒ©í„°ë¦¬ ì—­í• ì„ í•©ë‹ˆë‹¤.
-{@link android.app.Application#onCreate()} 메서드는
-ë™ê¸°í™” 어댑터를 ì¸ìŠ¤í„´íŠ¸í™”í•˜ê³ , ë‹¨ì¼ í•­ëª©ì„ ë™ê¸°í™” 어댑터 서비스ì˜
-{@link android.app.Service#onBind(Intent) onBind()} ë©”ì„œë“œì— ë°˜í™˜í•  ì •ì  "getter" 메서드를 제공하는 ë°
+ ì´ í´ëž˜ìŠ¤ëŠ” ë™ê¸°í™” 어댑터 ë‹¨ì¼ í•­ëª©ì˜ íŒ©í„°ë¦¬ ì—­í• ì„ í•©ë‹ˆë‹¤.
+{@link android.app.Application#onCreate()} 메서드는
+ë™ê¸°í™” 어댑터를 ì¸ìŠ¤í„´íŠ¸í™”í•˜ê³ , ë‹¨ì¼ í•­ëª©ì„ ë™ê¸°í™” 어댑터 서비스ì˜
+{@link android.app.Service#onBind(Intent) onBind()} ë©”ì„œë“œì— ë°˜í™˜í•  ì •ì  "getter" 메서드를 제공하는 ë°
사용하십시오.
</dd>
<dt>
- <strong>ì„ íƒ í•­ëª©:</strong> ì‚¬ìš©ìž ì¸ì¦ì— 대한 ì‹œìŠ¤í…œìœ¼ë¡œë¶€í„°ì˜ ìš”ì²­ì— ì‘답하는 {@link android.app.Service}
+ <strong>ì„ íƒ í•­ëª©:</strong> ì‚¬ìš©ìž ì¸ì¦ì— 대한 ì‹œìŠ¤í…œìœ¼ë¡œë¶€í„°ì˜ ìš”ì²­ì— ì‘답하는 {@link android.app.Service}
구성 요소.
</dt>
<dd>
- {@link android.accounts.AccountManager}ê°€ ì´ ì„œë¹„ìŠ¤ë¥¼ 시작하여 ì¸ì¦
-절차를 시작합니다. ì„œë¹„ìŠ¤ì˜ {@link android.app.Service#onCreate()} 메서드가
-ì¸ì¦ìž ê°ì²´ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•©ë‹ˆë‹¤. ì‹œìŠ¤í…œì´ ì• í”Œë¦¬ì¼€ì´ì…˜ ë™ê¸°í™” ì–´ëŒ‘í„°ì˜ ì‚¬ìš©ìž ê³„ì •ì„ ì¸ì¦í•˜ê³ ìž 하는 경우,
-ì‹œìŠ¤í…œì€ ì„œë¹„ìŠ¤ì˜
-{@link android.app.Service#onBind(Intent) onBind()} 메서드를 호출하여
-ì¸ì¦ìžì˜ {@link android.os.IBinder}를 가져옵니다. ì´ë ‡ê²Œ 하면 ì‹œìŠ¤í…œì´ ì¸ì¦ìžì˜
+ {@link android.accounts.AccountManager}ê°€ ì´ ì„œë¹„ìŠ¤ë¥¼ 시작하여 ì¸ì¦
+절차를 시작합니다. ì„œë¹„ìŠ¤ì˜ {@link android.app.Service#onCreate()} 메서드가
+ì¸ì¦ìž ê°ì²´ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•©ë‹ˆë‹¤. ì‹œìŠ¤í…œì´ ì• í”Œë¦¬ì¼€ì´ì…˜ ë™ê¸°í™” ì–´ëŒ‘í„°ì˜ ì‚¬ìš©ìž ê³„ì •ì„ ì¸ì¦í•˜ê³ ìž 하는 경우,
+ì‹œìŠ¤í…œì€ ì„œë¹„ìŠ¤ì˜
+{@link android.app.Service#onBind(Intent) onBind()} 메서드를 호출하여
+ì¸ì¦ìžì˜ {@link android.os.IBinder}를 가져옵니다. ì´ë ‡ê²Œ 하면 ì‹œìŠ¤í…œì´ ì¸ì¦ìžì˜
ë©”ì„œë“œì— ëŒ€í•´ 프로세스간 í˜¸ì¶œì„ ìˆ˜í–‰í•  수 있습니다.
<p>
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
@@ -1770,18 +1770,18 @@ onPerformSync()} 메서드ì—서 실행합니다. ì´ í´ëž˜ìŠ¤ëŠ” 반드시 단
</p>
</dd>
<dt>
- <strong>ì„ íƒ í•­ëª©:</strong> ì¸ì¦ì— 대한 ìš”ì²­ì„ ì²˜ë¦¬í•˜ëŠ”
-{@link android.accounts.AbstractAccountAuthenticator}ì˜ êµ¬ì²´ì ì¸
+ <strong>ì„ íƒ í•­ëª©:</strong> ì¸ì¦ì— 대한 ìš”ì²­ì„ ì²˜ë¦¬í•˜ëŠ”
+{@link android.accounts.AbstractAccountAuthenticator}ì˜ êµ¬ì²´ì ì¸
하위 í´ëž˜ìФ.
</dt>
<dd>
- ì´ í´ëž˜ìŠ¤ëŠ” {@link android.accounts.AccountManager}ê°€
-서버로 ì‚¬ìš©ìž ìžê²© ì¦ëª… ì¸ì¦ì„ 호출하는 메서드를 제공합니다. ì¸ì¦ ì ˆì°¨ì˜ ì„¸ë¶€ 사항ì€
-사용하는 서버 ê¸°ìˆ ì— ë”°ë¼ ë§¤ìš° ì°¨ì´ê°€ 있습니다. ì¸ì¦ì— 대한
+ ì´ í´ëž˜ìŠ¤ëŠ” {@link android.accounts.AccountManager}ê°€
+서버로 ì‚¬ìš©ìž ìžê²© ì¦ëª… ì¸ì¦ì„ 호출하는 메서드를 제공합니다. ì¸ì¦ ì ˆì°¨ì˜ ì„¸ë¶€ 사항ì€
+사용하는 서버 ê¸°ìˆ ì— ë”°ë¼ ë§¤ìš° ì°¨ì´ê°€ 있습니다. ì¸ì¦ì— 대한
ìžì„¸í•œ 정보는 ê°ìžì˜ 서버 ì†Œí”„íŠ¸ì›¨ì–´ì— í•´ë‹¹ë˜ëŠ” 관련 문서를 참조하십시오.
<p>
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
-샘플 ë™ê¸°í™” 어댑터</a> 샘플 앱ì—서 ì¸ì¦ìžëŠ”
+샘플 ë™ê¸°í™” 어댑터</a> 샘플 앱ì—서 ì¸ì¦ìžëŠ”
<code>com.example.android.samplesync.authenticator.Authenticator</code> í´ëž˜ìФì—서 ì •ì˜ë©ë‹ˆë‹¤.
</p>
</dd>
@@ -1789,31 +1789,31 @@ onPerformSync()} 메서드ì—서 실행합니다. ì´ í´ëž˜ìŠ¤ëŠ” 반드시 단
ë™ê¸°í™” 어댑터와 ì„œë²„ì˜ ì¸ì¦ìžë¥¼ ì •ì˜í•˜ëŠ” XML 파ì¼.
</dt>
<dd>
- ì´ì „ì— ì„¤ëª…í•œ ë™ê¸°í™” 어댑터와 ì¸ì¦ìž 서비스 구성 요소는
-애플리케ì´ì…˜ 매니페스트ì˜
-<code>&lt;<a href="{@docRoot}guide/topics/manifest/service-element.html">service</a>&gt;</code> 요소ì—서
-ì •ì˜í•©ë‹ˆë‹¤. ì´ëŸ° 요소ì—는
-ì‹œìŠ¤í…œì— íŠ¹ì • ë°ì´í„°ë¥¼ 제공하는
+ ì´ì „ì— ì„¤ëª…í•œ ë™ê¸°í™” 어댑터와 ì¸ì¦ìž 서비스 구성 요소는
+애플리케ì´ì…˜ 매니페스트ì˜
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/service-element.html">service</a>&gt;</code> 요소ì—서
+ì •ì˜í•©ë‹ˆë‹¤. ì´ëŸ° 요소ì—는
+ì‹œìŠ¤í…œì— íŠ¹ì • ë°ì´í„°ë¥¼ 제공하는
<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
-하위 요소가
+하위 요소가
들어있습니다.
<ul>
<li>
- ë™ê¸°í™” 어댑터 ì„œë¹„ìŠ¤ì— ëŒ€í•œ
+ ë™ê¸°í™” 어댑터 ì„œë¹„ìŠ¤ì— ëŒ€í•œ
<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
-요소는
-XML íŒŒì¼ <code>res/xml/syncadapter.xml</code>ì„ ê°€ë¦¬í‚µë‹ˆë‹¤. 그런가 하면
-ì´ íŒŒì¼ì€ ì—°ë½ì²˜ 제공ìžì™€ ë™ê¸°í™”ë  ì›¹ ì„œë¹„ìŠ¤ì— ëŒ€í•œ URI와 웹 ì„œë¹„ìŠ¤ì— ëŒ€í•œ 계정 유형ì„
+요소는
+XML íŒŒì¼ <code>res/xml/syncadapter.xml</code>ì„ ê°€ë¦¬í‚µë‹ˆë‹¤. 그런가 하면
+ì´ íŒŒì¼ì€ ì—°ë½ì²˜ 제공ìžì™€ ë™ê¸°í™”ë  ì›¹ ì„œë¹„ìŠ¤ì— ëŒ€í•œ URI와 웹 ì„œë¹„ìŠ¤ì— ëŒ€í•œ 계정 유형ì„
나타냅니다.
</li>
<li>
- <strong>ì„ íƒ í•­ëª©:</strong> ì¸ì¦ìžì˜
+ <strong>ì„ íƒ í•­ëª©:</strong> ì¸ì¦ìžì˜
<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
-요소는 XML 파ì¼
-<code>res/xml/authenticator.xml</code>ì„ ê°€ë¦¬í‚µë‹ˆë‹¤. ì´ íŒŒì¼ì€ 다시
-ì´ ì¸ì¦ì´ ì§€ì›í•˜ëŠ” 계정 유형과, ì¸ì¦ 과정 ì¤‘ì— í‘œì‹œë˜ëŠ” UI 리소스를
-나타냅니다. ì´ ìš”ì†Œì—서 지정한 계정 ìœ í˜•ì€ ë°˜ë“œì‹œ
-ë™ê¸°í™” ì–´ëŒ‘í„°ì— ëŒ€í•´ ì§€ì •ëœ ê³„ì • 유형과
+요소는 XML 파ì¼
+<code>res/xml/authenticator.xml</code>ì„ ê°€ë¦¬í‚µë‹ˆë‹¤. ì´ íŒŒì¼ì€ 다시
+ì´ ì¸ì¦ì´ ì§€ì›í•˜ëŠ” 계정 유형과, ì¸ì¦ 과정 ì¤‘ì— í‘œì‹œë˜ëŠ” UI 리소스를
+나타냅니다. ì´ ìš”ì†Œì—서 지정한 계정 ìœ í˜•ì€ ë°˜ë“œì‹œ
+ë™ê¸°í™” ì–´ëŒ‘í„°ì— ëŒ€í•´ ì§€ì •ëœ ê³„ì • 유형과
같아야 합니다.
</li>
</ul>
@@ -1821,18 +1821,18 @@ XML íŒŒì¼ <code>res/xml/syncadapter.xml</code>ì„ ê°€ë¦¬í‚µë‹ˆë‹¤. 그런가 í•
</dl>
<h2 id="SocialStream">소셜 스트림 ë°ì´í„°</h2>
<p>
- {@code android.provider.ContactsContract.StreamItems}와
-{@code android.provider.ContactsContract.StreamItemPhotos} í…Œì´ë¸”ì€
-소셜 네트워í¬ì—서 수신하는 ë°ì´í„°ë¥¼ 관리합니다. 개발ìžëŠ” 본ì¸ì˜ 네트워í¬ì˜ 스트림 ë°ì´í„°ë¥¼ ì´ í…Œì´ë¸”ì— ì¶”ê°€í•˜ëŠ”
-ë™ê¸°í™” 어댑터를 작성할 ìˆ˜ë„ ìžˆê³ , ì´ í…Œì´ë¸”ì—서 스트림 ë°ì´í„°ë¥¼ ì½ì–´ì„œ
-본ì¸ì˜ 애플리케ì´ì…˜ì— 표시할 ìˆ˜ë„ ìžˆìœ¼ë©° ë‘ ê°€ì§€ë¥¼ ëª¨ë‘ í•´ë„ ë©ë‹ˆë‹¤. ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë©´ 소셜 네트워킹
+ {@code android.provider.ContactsContract.StreamItems}와
+{@code android.provider.ContactsContract.StreamItemPhotos} í…Œì´ë¸”ì€
+소셜 네트워í¬ì—서 수신하는 ë°ì´í„°ë¥¼ 관리합니다. 개발ìžëŠ” 본ì¸ì˜ 네트워í¬ì˜ 스트림 ë°ì´í„°ë¥¼ ì´ í…Œì´ë¸”ì— ì¶”ê°€í•˜ëŠ”
+ë™ê¸°í™” 어댑터를 작성할 ìˆ˜ë„ ìžˆê³ , ì´ í…Œì´ë¸”ì—서 스트림 ë°ì´í„°ë¥¼ ì½ì–´ì„œ
+본ì¸ì˜ 애플리케ì´ì…˜ì— 표시할 ìˆ˜ë„ ìžˆìœ¼ë©° ë‘ ê°€ì§€ë¥¼ ëª¨ë‘ í•´ë„ ë©ë‹ˆë‹¤. ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë©´ 소셜 네트워킹
서비스와 애플리케ì´ì…˜ì„ Androidì˜ ì†Œì…œ 네트워킹 í™˜ê²½ì— í†µí•©í•  수 있습니다.
</p>
<h3 id="StreamText">소셜 스트림 í…스트</h3>
<p>
- 스트림 í•­ëª©ì€ í•­ìƒ ì›ì‹œ ì—°ë½ì²˜ì™€ ì—°ê´€ë©ë‹ˆë‹¤.
-{@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}는
-ì›ì‹œ ì—°ë½ì²˜ì˜ <code>_ID</code> ê°’ê³¼ ì—°ê´€ë©ë‹ˆë‹¤. ì›ì‹œ ì—°ë½ì²˜ì˜ 계정 유형과 계정 ì´ë¦„ë„
+ 스트림 í•­ëª©ì€ í•­ìƒ ì›ì‹œ ì—°ë½ì²˜ì™€ ì—°ê´€ë©ë‹ˆë‹¤.
+{@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}는
+ì›ì‹œ ì—°ë½ì²˜ì˜ <code>_ID</code> ê°’ê³¼ ì—°ê´€ë©ë‹ˆë‹¤. ì›ì‹œ ì—°ë½ì²˜ì˜ 계정 유형과 계정 ì´ë¦„ë„
스트림 항목 í–‰ì— ì €ìž¥ë©ë‹ˆë‹¤.
</p>
<p>
@@ -1843,36 +1843,36 @@ XML íŒŒì¼ <code>res/xml/syncadapter.xml</code>ì„ ê°€ë¦¬í‚µë‹ˆë‹¤. 그런가 í•
{@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_TYPE}
</dt>
<dd>
- <strong>필수입니다.</strong> ì´ ìŠ¤íŠ¸ë¦¼ 항목과 ì—°ê´€ëœ ì›ì‹œ ì—°ë½ì²˜ì— 대한
+ <strong>필수입니다.</strong> ì´ ìŠ¤íŠ¸ë¦¼ 항목과 ì—°ê´€ëœ ì›ì‹œ ì—°ë½ì²˜ì— 대한
ì‚¬ìš©ìž ê³„ì •ìž…ë‹ˆë‹¤. 스트림 í•­ëª©ì„ ì‚½ìž…í•  때 ì´ ê°’ì„ ì„¤ì •í•˜ëŠ” ê²ƒì„ ìžŠì§€ 마십시오.
</dd>
<dt>
{@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_NAME}
</dt>
<dd>
- <strong>필수입니다.</strong> ì´ ìŠ¤íŠ¸ë¦¼ 항목과 ì—°ê´€ëœ ì›ì‹œ ì—°ë½ì²˜ì— 대한
+ <strong>필수입니다.</strong> ì´ ìŠ¤íŠ¸ë¦¼ 항목과 ì—°ê´€ëœ ì›ì‹œ ì—°ë½ì²˜ì— 대한
ì‚¬ìš©ìž ê³„ì • ì´ë¦„입니다. 스트림 í•­ëª©ì„ ì‚½ìž…í•  때 ì´ ê°’ì„ ì„¤ì •í•˜ëŠ” ê²ƒì„ ìžŠì§€ 마십시오.
</dd>
<dt>
ì‹ë³„ìž ì—´
</dt>
<dd>
- <strong>필수입니다.</strong> 스트림 í•­ëª©ì„ ì‚½ìž…í•  때
+ <strong>필수입니다.</strong> 스트림 í•­ëª©ì„ ì‚½ìž…í•  때
ë‹¤ìŒ ì‹ë³„ìž ì—´ì„ ì‚½ìž…í•´ì•¼ 합니다.
<ul>
<li>
- {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}: ì´
-스트림 항목과 ì—°ê´€ëœ ì—°ë½ì²˜ì˜ {@code android.provider.BaseColumns#_ID}
+ {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}: ì´
+스트림 항목과 ì—°ê´€ëœ ì—°ë½ì²˜ì˜ {@code android.provider.BaseColumns#_ID}
값입니다.
</li>
<li>
- {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}: ì´
-스트림 항목과 ì—°ê´€ëœ ì—°ë½ì²˜ì˜ {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}
+ {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}: ì´
+스트림 항목과 ì—°ê´€ëœ ì—°ë½ì²˜ì˜ {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}
값입니다.
</li>
<li>
- {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}: ì´
-스트림 항목과 ì—°ê´€ëœ ì›ì‹œ ì—°ë½ì²˜ì˜ {@code android.provider.BaseColumns#_ID}
+ {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}: ì´
+스트림 항목과 ì—°ê´€ëœ ì›ì‹œ ì—°ë½ì²˜ì˜ {@code android.provider.BaseColumns#_ID}
값입니다.
</li>
</ul>
@@ -1887,19 +1887,19 @@ XML íŒŒì¼ <code>res/xml/syncadapter.xml</code>ì„ ê°€ë¦¬í‚µë‹ˆë‹¤. 그런가 í•
{@code android.provider.ContactsContract.StreamItemsColumns#TEXT}
</dt>
<dd>
- 스트림 í•­ëª©ì˜ í…스트로, í•­ëª©ì˜ ì†ŒìŠ¤ê°€ 게시한 콘í…츠 ë˜ëŠ”
-스트림 í•­ëª©ì„ ìƒì„±í•˜ëŠ” ìž‘ì—…ì˜ ì„¤ëª… 중 하나입니다. ì´ ì—´ì—는
-{@link android.text.Html#fromHtml(String) fromHtml()}ê°€ ë Œë”ë§í•  수 있는 모든 서ì‹ê³¼ í¬í•¨ëœ 리소스 ì´ë¯¸ì§€ê°€
-ë“¤ì–´ìžˆì„ ìˆ˜ 있습니다. 제공ìžëŠ” 긴 콘í…츠를
+ 스트림 í•­ëª©ì˜ í…스트로, í•­ëª©ì˜ ì†ŒìŠ¤ê°€ 게시한 콘í…츠 ë˜ëŠ”
+스트림 í•­ëª©ì„ ìƒì„±í•˜ëŠ” ìž‘ì—…ì˜ ì„¤ëª… 중 하나입니다. ì´ ì—´ì—는
+{@link android.text.Html#fromHtml(String) fromHtml()}ê°€ ë Œë”ë§í•  수 있는 모든 서ì‹ê³¼ í¬í•¨ëœ 리소스 ì´ë¯¸ì§€ê°€
+ë“¤ì–´ìžˆì„ ìˆ˜ 있습니다. 제공ìžëŠ” 긴 콘í…츠를
ìžë¥´ê±°ë‚˜ ìƒëžµí•  수 있지만, 가능하면 태그를 ì†ìƒì‹œí‚¤ëŠ” ê²ƒì€ í”¼í•˜ë ¤ 듭니다.
</dd>
<dt>
{@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}
</dt>
<dd>
- 스트림 í•­ëª©ì´ ì‚½ìž…ë˜ê±°ë‚˜ ì—…ë°ì´íŠ¸ëœ ì‹œê°„ì´ ë“¤ì–´ìžˆëŠ” í…스트 문ìžì—´ë¡œ, 형ì‹ì€
-epoch ì´í›„ <em>밀리초</em> 형태를 취합니다. ì´ ì—´ì„ ê´€ë¦¬í•  ì±…ìž„ì€
-스트림 í•­ëª©ì„ ì‚½ìž… ë˜ëŠ” ì—…ë°ì´íŠ¸í•˜ëŠ” 애플리케ì´ì…˜ì— 있으며, ì´ê²ƒì€ ì—°ë½ì²˜ 제공ìžê°€ ìžë™ìœ¼ë¡œ
+ 스트림 í•­ëª©ì´ ì‚½ìž…ë˜ê±°ë‚˜ ì—…ë°ì´íŠ¸ëœ ì‹œê°„ì´ ë“¤ì–´ìžˆëŠ” í…스트 문ìžì—´ë¡œ, 형ì‹ì€
+epoch ì´í›„ <em>밀리초</em> 형태를 취합니다. ì´ ì—´ì„ ê´€ë¦¬í•  ì±…ìž„ì€
+스트림 í•­ëª©ì„ ì‚½ìž… ë˜ëŠ” ì—…ë°ì´íŠ¸í•˜ëŠ” 애플리케ì´ì…˜ì— 있으며, ì´ê²ƒì€ ì—°ë½ì²˜ 제공ìžê°€ ìžë™ìœ¼ë¡œ
유지 관리하지 않습니다.
</dd>
</dl>
@@ -1911,18 +1911,18 @@ epoch ì´í›„ <em>밀리초</em> 형태를 취합니다. ì´ ì—´ì„ ê´€ë¦¬í•  ì±…
리소스를 연결하십시오.
</p>
<p>
- {@code android.provider.ContactsContract.StreamItems} í…Œì´ë¸”ì—ë„
+ {@code android.provider.ContactsContract.StreamItems} í…Œì´ë¸”ì—ë„
ë™ê¸°í™” 어댑터가 ë…ì ì ìœ¼ë¡œ 사용하는 {@code android.provider.ContactsContract.StreamItemsColumns#SYNC1}ì—서
-{@code android.provider.ContactsContract.StreamItemsColumns#SYNC4}ê¹Œì§€ì˜ ì—´ì´
+{@code android.provider.ContactsContract.StreamItemsColumns#SYNC4}ê¹Œì§€ì˜ ì—´ì´
들어있습니다.
</p>
<h3 id="StreamPhotos">소셜 스트림 사진</h3>
<p>
- {@code android.provider.ContactsContract.StreamItemPhotos} í…Œì´ë¸”ì€ ìŠ¤íŠ¸ë¦¼ 항목과 ì—°ê´€ëœ
-ì‚¬ì§„ì„ ì €ìž¥í•©ë‹ˆë‹¤. í…Œì´ë¸”ì˜
+ {@code android.provider.ContactsContract.StreamItemPhotos} í…Œì´ë¸”ì€ ìŠ¤íŠ¸ë¦¼ 항목과 ì—°ê´€ëœ
+ì‚¬ì§„ì„ ì €ìž¥í•©ë‹ˆë‹¤. í…Œì´ë¸”ì˜
{@code android.provider.ContactsContract.StreamItemPhotosColumns#STREAM_ITEM_ID} ì—´ì€
-{@code android.provider.ContactsContract.StreamItems} í…Œì´ë¸”ì˜ {@code android.provider.BaseColumns#_ID} ì—´ì— ìžˆëŠ” ê°’ê³¼
-ì—°ê²°ë©ë‹ˆë‹¤. 사진 참조는
+{@code android.provider.ContactsContract.StreamItems} í…Œì´ë¸”ì˜ {@code android.provider.BaseColumns#_ID} ì—´ì— ìžˆëŠ” ê°’ê³¼
+ì—°ê²°ë©ë‹ˆë‹¤. 사진 참조는
ë‹¤ìŒ ì—´ì˜ í…Œì´ë¸”ì— ì €ìž¥ë©ë‹ˆë‹¤.
</p>
<dl>
@@ -1931,21 +1931,21 @@ epoch ì´í›„ <em>밀리초</em> 형태를 취합니다. ì´ ì—´ì„ ê´€ë¦¬í•  ì±…
</dt>
<dd>
ì‚¬ì§„ì˜ ë°”ì´ë„ˆë¦¬ 표현으로, 제공ìžê°€ 저장하고 표시하기 위해 í¬ê¸°ë¥¼ 조정한 것입니다.
- ì´ ì—´ì€ ì‚¬ì§„ì„ ì €ìž¥í•˜ëŠ” ë° ì‚¬ìš©í•œ ì—°ë½ì²˜ 제공ìžì˜ ì´ì „ 버전과
-호환ë©ë‹ˆë‹¤. 그러나 현재 버전ì—서는
-ì´ ì—´ì„ ì‚¬ì§„ ì €ìž¥ì— ì‚¬ìš©í•˜ë©´ 안 ë©ë‹ˆë‹¤. 대신,
-{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} ë˜ëŠ”
+ ì´ ì—´ì€ ì‚¬ì§„ì„ ì €ìž¥í•˜ëŠ” ë° ì‚¬ìš©í•œ ì—°ë½ì²˜ 제공ìžì˜ ì´ì „ 버전과
+호환ë©ë‹ˆë‹¤. 그러나 현재 버전ì—서는
+ì´ ì—´ì„ ì‚¬ì§„ ì €ìž¥ì— ì‚¬ìš©í•˜ë©´ 안 ë©ë‹ˆë‹¤. 대신,
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} ë˜ëŠ”
{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}(
-ë‹¤ìŒ í•­ëª©ì—서 ë‘ ê°€ì§€ ëª¨ë‘ ì„¤ëª…)를 사용하여 ì‚¬ì§„ì„ íŒŒì¼ë¡œ 저장합니다. 지금 ì´ ì—´ì—는
+ë‹¤ìŒ í•­ëª©ì—서 ë‘ ê°€ì§€ ëª¨ë‘ ì„¤ëª…)를 사용하여 ì‚¬ì§„ì„ íŒŒì¼ë¡œ 저장합니다. 지금 ì´ ì—´ì—는
ì‚¬ì§„ì˜ ë¯¸ë¦¬ 보기가 들어있어 ì½ê¸° ìž‘ì—…ì— ì‚¬ìš©í•  수 있습니다.
</dd>
<dt>
{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID}
</dt>
<dd>
- ì›ì‹œ ì—°ë½ì²˜ì— 대한 ì‚¬ì§„ì˜ ìˆ«ìž ì‹ë³„ìžìž…니다. ì´ ê°’ì„
-ìƒìˆ˜ {@link android.provider.ContactsContract.DisplayPhoto#CONTENT_URI DisplayPhoto.CONTENT_URI}ì— ì¶”ê°€í•˜ì—¬
-í•˜ë‚˜ì˜ ì‚¬ì§„ 파ì¼ì„ 가리키는 콘í…츠 URI를 가져온 다ìŒ,
+ ì›ì‹œ ì—°ë½ì²˜ì— 대한 ì‚¬ì§„ì˜ ìˆ«ìž ì‹ë³„ìžìž…니다. ì´ ê°’ì„
+ìƒìˆ˜ {@link android.provider.ContactsContract.DisplayPhoto#CONTENT_URI DisplayPhoto.CONTENT_URI}ì— ì¶”ê°€í•˜ì—¬
+í•˜ë‚˜ì˜ ì‚¬ì§„ 파ì¼ì„ 가리키는 콘í…츠 URI를 가져온 다ìŒ,
{@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
openAssetFileDescriptor()}를 호출하여 사진 파ì¼ì— 대한 í•¸ë“¤ì„ ê°€ì ¸ì˜µë‹ˆë‹¤.
</dd>
@@ -1965,91 +1965,91 @@ openAssetFileDescriptor()}를 호출하면 사진 파ì¼ì— 대한 í•¸ë“¤ì„ ê°€
<ul>
<li>
ì´ í…Œì´ë¸”ì—는 추가 액세스 ê¶Œí•œì´ í•„ìš”í•©ë‹ˆë‹¤. 여기서 ì½ê¸° ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë ¤ë©´ 애플리케ì´ì…˜ì—
-{@code android.Manifest.permission#READ_SOCIAL_STREAM} ê¶Œí•œì´ ìžˆì–´ì•¼ 합니다. 여기서 수정 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë ¤ë©´
+{@code android.Manifest.permission#READ_SOCIAL_STREAM} ê¶Œí•œì´ ìžˆì–´ì•¼ 합니다. 여기서 수정 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë ¤ë©´
애플리케ì´ì…˜ì—
{@code android.Manifest.permission#WRITE_SOCIAL_STREAM} ê¶Œí•œì´ ìžˆì–´ì•¼ 합니다.
</li>
<li>
- {@code android.provider.ContactsContract.StreamItems} í…Œì´ë¸”ì˜ ê²½ìš°, ê° ì›ì‹œ ì—°ë½ì²˜ì— 저장ë˜ëŠ”
-í–‰ 개수가 제한ë˜ì–´ 있습니다. ì´ í•œê³„ì— ë„달하면,
+ {@code android.provider.ContactsContract.StreamItems} í…Œì´ë¸”ì˜ ê²½ìš°, ê° ì›ì‹œ ì—°ë½ì²˜ì— 저장ë˜ëŠ”
+í–‰ 개수가 제한ë˜ì–´ 있습니다. ì´ í•œê³„ì— ë„달하면,
ì—°ë½ì²˜ 제공ìžê°€ 새 스트림 항목 ì—´ì— í•„ìš”í•œ ê³µê°„ì„ ë§Œë“¤ì–´ì•¼ 합니다.
-ì´ë•Œ 가장 ì˜¤ëž˜ëœ {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}ê°€
-있는 행부터 ìžë™ìœ¼ë¡œ 삭제하는 ë°©ë²•ì„ ì”니다. ì´ í•œê³„ë¥¼
-가져오려면, 콘í…츠 URI
-{@code android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI}ì— ì¿¼ë¦¬ë¥¼ 발행합니다. 콘í…츠
-URI를 뺀 나머지 모든 ì¸ìˆ˜ëŠ” <code>null</code>로 설정한 채 ë‘ë©´ ë©ë‹ˆë‹¤. ì´ ì¿¼ë¦¬ëŠ”
-í–‰ì´ í•˜ë‚˜ 들어 있는 커서를 반환하며,
+ì´ë•Œ 가장 ì˜¤ëž˜ëœ {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}ê°€
+있는 행부터 ìžë™ìœ¼ë¡œ 삭제하는 ë°©ë²•ì„ ì”니다. ì´ í•œê³„ë¥¼
+가져오려면, 콘í…츠 URI
+{@code android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI}ì— ì¿¼ë¦¬ë¥¼ 발행합니다. 콘í…츠
+URI를 뺀 나머지 모든 ì¸ìˆ˜ëŠ” <code>null</code>로 설정한 채 ë‘ë©´ ë©ë‹ˆë‹¤. ì´ ì¿¼ë¦¬ëŠ”
+í–‰ì´ í•˜ë‚˜ 들어 있는 커서를 반환하며,
{@code android.provider.ContactsContract.StreamItems#MAX_ITEMS} ì—´ 하나가 수반ë©ë‹ˆë‹¤.
</li>
</ul>
<p>
- {@code android.provider.ContactsContract.StreamItems.StreamItemPhotos} í´ëž˜ìŠ¤ëŠ”
-스트림 항목 í•˜ë‚˜ì˜ ì‚¬ì§„ í–‰ì„ í¬í•¨í•˜ëŠ” {@code android.provider.ContactsContract.StreamItemPhotos}ì˜
+ {@code android.provider.ContactsContract.StreamItems.StreamItemPhotos} í´ëž˜ìŠ¤ëŠ”
+스트림 항목 í•˜ë‚˜ì˜ ì‚¬ì§„ í–‰ì„ í¬í•¨í•˜ëŠ” {@code android.provider.ContactsContract.StreamItemPhotos}ì˜
하위 í…Œì´ë¸”ì„ ì •ì˜í•©ë‹ˆë‹¤.
</p>
<h3 id="SocialStreamInteraction">소셜 스트림 ìƒí˜¸ 작용</h3>
<p>
- ì—°ë½ì²˜ 제공ìžê°€ 기기 ì—°ë½ì²˜ 애플리케ì´ì…˜ê³¼ 함께 관리하는 소셜 스트림 ë°ì´í„°ëŠ”
-소셜 네트워킹 시스템과
+ ì—°ë½ì²˜ 제공ìžê°€ 기기 ì—°ë½ì²˜ 애플리케ì´ì…˜ê³¼ 함께 관리하는 소셜 스트림 ë°ì´í„°ëŠ”
+소셜 네트워킹 시스템과
기존 ì—°ë½ì²˜ë¥¼ 연결하는 강력한 ë°©ë²•ì„ ì œê³µí•©ë‹ˆë‹¤. 사용할 수 있는 ê¸°ëŠ¥ì€ ë‹¤ìŒê³¼ 같습니다.
</p>
<ul>
<li>
- 소셜 네트워킹 서비스를 ë™ê¸°í™” 어댑터로 ì—°ë½ì²˜ 제공ìžì— ë™ê¸°í™”함으로ì¨,
-ì‚¬ìš©ìž ì—°ë½ì²˜ì˜ 최근 활ë™ì„ 검색하고 ì´ë¥¼
-{@code android.provider.ContactsContract.StreamItems} ë°
+ 소셜 네트워킹 서비스를 ë™ê¸°í™” 어댑터로 ì—°ë½ì²˜ 제공ìžì— ë™ê¸°í™”함으로ì¨,
+ì‚¬ìš©ìž ì—°ë½ì²˜ì˜ 최근 활ë™ì„ 검색하고 ì´ë¥¼
+{@code android.provider.ContactsContract.StreamItems} ë°
{@code android.provider.ContactsContract.StreamItemPhotos} í…Œì´ë¸”ì— ì €ìž¥í•´ ë‘ì–´ ë‚˜ì¤‘ì— ì‚¬ìš©í•  수 있습니다.
</li>
<li>
- 정기 ë™ê¸°í™” 외ì—ë„ ì‚¬ìš©ìžê°€ ë³¼ ì—°ë½ì²˜ë¥¼ ì„ íƒí•˜ë©´ ë™ê¸°í™” 어댑터를 트리거하여
-추가 ë°ì´í„°ë¥¼ 검색하게 í•  수 있습니다. ì´ë ‡ê²Œ 하면 ë™ê¸°í™” 어댑터가
+ 정기 ë™ê¸°í™” 외ì—ë„ ì‚¬ìš©ìžê°€ ë³¼ ì—°ë½ì²˜ë¥¼ ì„ íƒí•˜ë©´ ë™ê¸°í™” 어댑터를 트리거하여
+추가 ë°ì´í„°ë¥¼ 검색하게 í•  수 있습니다. ì´ë ‡ê²Œ 하면 ë™ê¸°í™” 어댑터가
해당 ì—°ë½ì²˜ì˜ ê³ í•´ìƒë„ 사진과 가장 최근 스트림 í•­ëª©ì„ ê²€ìƒ‰í•  수 있습니다.
</li>
<li>
- 기기 ì—°ë½ì²˜ 애플리케ì´ì…˜ê³¼ ì—°ë½ì²˜ 제공ìžì— ì•Œë¦¼ì„ ë“±ë¡í•˜ë©´,
-ì—°ë½ì²˜ê°€ ì—´ëžŒë  ë•Œ ì¸í…트를 <em>수신</em>하고,
-ê·¸ 시ì ì— 개발ìžì˜ 서비스로부터 ì—°ë½ì²˜ì˜ ìƒíƒœë¥¼ ì—…ë°ì´íŠ¸í•  수 있습니다. ì´ ë°©ë²•ì„ ì‚¬ìš©í•˜ë©´ ë™ê¸°í™” 어댑터로
+ 기기 ì—°ë½ì²˜ 애플리케ì´ì…˜ê³¼ ì—°ë½ì²˜ 제공ìžì— ì•Œë¦¼ì„ ë“±ë¡í•˜ë©´,
+ì—°ë½ì²˜ê°€ ì—´ëžŒë  ë•Œ ì¸í…트를 <em>수신</em>하고,
+ê·¸ 시ì ì— 개발ìžì˜ 서비스로부터 ì—°ë½ì²˜ì˜ ìƒíƒœë¥¼ ì—…ë°ì´íŠ¸í•  수 있습니다. ì´ ë°©ë²•ì„ ì‚¬ìš©í•˜ë©´ ë™ê¸°í™” 어댑터로
완전 ë™ê¸°í™”를 수행하는 것보다 빠르고 대역í­ë„ ì ê²Œ 사용합니다.
</li>
<li>
- 사용ìžëŠ” ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì„ 보면서 ì—¬ëŸ¬ë¶„ì˜ ì†Œì…œ 네트워킹 서비스ì—
-ì—°ë½ì²˜ë¥¼ 추가할 수 있습니다. ì´ëŠ” "ì—°ë½ì²˜ 초대" 기능으로 사용할 수 있습니다.
-ì—°ë½ì²˜ 초대 ê¸°ëŠ¥ì€ ê¸°ì¡´ ì—°ë½ì²˜ë¥¼ 네트워í¬ì— 추가하는 액티비티와
-ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì„ 제공하는 XML 파ì¼,
+ 사용ìžëŠ” ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì„ 보면서 ì—¬ëŸ¬ë¶„ì˜ ì†Œì…œ 네트워킹 서비스ì—
+ì—°ë½ì²˜ë¥¼ 추가할 수 있습니다. ì´ëŠ” "ì—°ë½ì²˜ 초대" 기능으로 사용할 수 있습니다.
+ì—°ë½ì²˜ 초대 ê¸°ëŠ¥ì€ ê¸°ì¡´ ì—°ë½ì²˜ë¥¼ 네트워í¬ì— 추가하는 액티비티와
+ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì„ 제공하는 XML 파ì¼,
애플리케ì´ì…˜ì˜ 세부 ì •ë³´ê°€ í¬í•¨ëœ ì—°ë½ì²˜ 제공ìžë¥¼ 조합하여 활성화합니다.
</li>
</ul>
<p>
- ì—°ë½ì²˜ 제공ìžë¡œ 스트림 í•­ëª©ì„ ì •ê¸° ë™ê¸°í™”하는 방법ì€
-다른 ë™ê¸°í™”와 같습니다. ë™ê¸°í™”ì— ê´€í•œ ìžì„¸í•œ ë‚´ìš©ì€
-<a href="#SyncAdapters">ì—°ë½ì²˜ ì œê³µìž ë™ê¸°í™” 어댑터</a> ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤. ì•Œë¦¼ì„ ë“±ë¡í•˜ê³  ì—°ë½ì²˜ë¥¼ 초대하는 방법ì€
+ ì—°ë½ì²˜ 제공ìžë¡œ 스트림 í•­ëª©ì„ ì •ê¸° ë™ê¸°í™”하는 방법ì€
+다른 ë™ê¸°í™”와 같습니다. ë™ê¸°í™”ì— ê´€í•œ ìžì„¸í•œ ë‚´ìš©ì€
+<a href="#SyncAdapters">ì—°ë½ì²˜ ì œê³µìž ë™ê¸°í™” 어댑터</a> ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤. ì•Œë¦¼ì„ ë“±ë¡í•˜ê³  ì—°ë½ì²˜ë¥¼ 초대하는 방법ì€
ë‹¤ìŒ ë‘ ì„¹ì…˜ì—서 다룰 것입니다.
</p>
<h4>소셜 네트워킹 보기를 처리하기 위한 등ë¡</h4>
<p>
- ë™ê¸°í™” 어댑터를 등ë¡í•˜ì—¬ 사용ìžê°€ ë™ê¸°í™” 어댑터ì—서 관리하는 ì—°ë½ì²˜ë¥¼ ë³¼ 때 알림ì„
+ ë™ê¸°í™” 어댑터를 등ë¡í•˜ì—¬ 사용ìžê°€ ë™ê¸°í™” 어댑터ì—서 관리하는 ì—°ë½ì²˜ë¥¼ ë³¼ 때 알림ì„
수신하는 방법:
</p>
<ol>
<li>
- 프로ì íŠ¸ì˜ <code>res/xml/</code> ë””ë ‰í„°ë¦¬ì— <code>contacts.xml</code> 파ì¼ì„
+ 프로ì íŠ¸ì˜ <code>res/xml/</code> ë””ë ‰í„°ë¦¬ì— <code>contacts.xml</code> 파ì¼ì„
만듭니다. ì´ë¯¸ ì´ íŒŒì¼ì´ 있다면 ì´ ì ˆì°¨ë¥¼ ê±´ë„ˆë›°ì–´ë„ ë©ë‹ˆë‹¤.
</li>
<li>
- ì´ íŒŒì¼ì—서,
+ ì´ íŒŒì¼ì—서,
<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code> 요소를 추가합니다.
ì´ ìš”ì†Œê°€ ì´ë¯¸ 존재한다면 ì´ ì ˆì°¨ë¥¼ ê±´ë„ˆë›°ì–´ë„ ë©ë‹ˆë‹¤.
</li>
<li>
- 사용ìžê°€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서
+ 사용ìžê°€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서
ì—°ë½ì²˜ 세부 ì •ë³´ 페ì´ì§€ë¥¼ ì—´ë©´ ì•Œë¦¼ì„ ë³´ë‚´ëŠ” 서비스를 등ë¡í•˜ë ¤ë©´,
-<code>viewContactNotifyService="<em>serviceclass</em>"</code> ì†ì„±ì„ ìš”ì†Œì— ì¶”ê°€í•©ë‹ˆë‹¤.
-ì´ ìš”ì†Œì—서 <code><em>serviceclass</em></code>는 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 ì¸í…트를 수신하는 서비스ì˜
-완전히 ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„입니다. 알림 ì„œë¹„ìŠ¤ì˜ ê²½ìš°,
-{@link android.app.IntentService}를 확장하는 í´ëž˜ìŠ¤ë¥¼ 사용하여 서비스가 ì¸í…트를 수신하ë„ë¡
-허용합니다. 수신ë˜ëŠ” ì¸í…íŠ¸ì˜ ë°ì´í„°ì—는
-사용ìžê°€ í´ë¦­í•œ ì›ì‹œ ì—°ë½ì²˜ì˜ 콘í…츠 URIê°€ 들어있습니다. 알림 서비스ì—서 ë™ê¸°í™” ì–´ëŒ‘í„°ì— ë°”ì¸ë”©í•œ ë‹¤ìŒ ë™ê¸°í™” 어댑터를 호출하여
+<code>viewContactNotifyService="<em>serviceclass</em>"</code> ì†ì„±ì„ ìš”ì†Œì— ì¶”ê°€í•©ë‹ˆë‹¤.
+ì´ ìš”ì†Œì—서 <code><em>serviceclass</em></code>는 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 ì¸í…트를 수신하는 서비스ì˜
+완전히 ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„입니다. 알림 ì„œë¹„ìŠ¤ì˜ ê²½ìš°,
+{@link android.app.IntentService}를 확장하는 í´ëž˜ìŠ¤ë¥¼ 사용하여 서비스가 ì¸í…트를 수신하ë„ë¡
+허용합니다. 수신ë˜ëŠ” ì¸í…íŠ¸ì˜ ë°ì´í„°ì—는
+사용ìžê°€ í´ë¦­í•œ ì›ì‹œ ì—°ë½ì²˜ì˜ 콘í…츠 URIê°€ 들어있습니다. 알림 서비스ì—서 ë™ê¸°í™” ì–´ëŒ‘í„°ì— ë°”ì¸ë”©í•œ ë‹¤ìŒ ë™ê¸°í™” 어댑터를 호출하여
ì›ì‹œ ì—°ë½ì²˜ì˜ ë°ì´í„°ë¥¼ ì—…ë°ì´íŠ¸í•  수 있습니다.
</li>
</ol>
@@ -2058,31 +2058,31 @@ URI를 뺀 나머지 모든 ì¸ìˆ˜ëŠ” <code>null</code>로 설정한 채 ë‘ë©´
</p>
<ol>
<li>
- 프로ì íŠ¸ì˜ <code>res/xml/</code> ë””ë ‰í„°ë¦¬ì— <code>contacts.xml</code> 파ì¼ì„
+ 프로ì íŠ¸ì˜ <code>res/xml/</code> ë””ë ‰í„°ë¦¬ì— <code>contacts.xml</code> 파ì¼ì„
만듭니다. ì´ë¯¸ ì´ íŒŒì¼ì´ 있다면 ì´ ì ˆì°¨ë¥¼ ê±´ë„ˆë›°ì–´ë„ ë©ë‹ˆë‹¤.
</li>
<li>
- ì´ íŒŒì¼ì—서,
+ ì´ íŒŒì¼ì—서,
<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code> 요소를 추가합니다.
ì´ ìš”ì†Œê°€ ì´ë¯¸ 존재한다면 ì´ ì ˆì°¨ë¥¼ ê±´ë„ˆë›°ì–´ë„ ë©ë‹ˆë‹¤.
</li>
<li>
- 사용ìžê°€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 스트림 í•­ëª©ì„ í´ë¦­í–ˆì„ 때
-처리할 액티비티를 등ë¡í•˜ë ¤ë©´,
-<code>viewStreamItemActivity="<em>activityclass</em>"</code> ì†ì„±ì„ ìš”ì†Œì— ì¶”ê°€í•©ë‹ˆë‹¤.
-ì´ ìš”ì†Œì—서 <code><em>activityclass</em></code>는 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 ì¸í…트를 수신하는 액티비티ì˜
+ 사용ìžê°€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 스트림 í•­ëª©ì„ í´ë¦­í–ˆì„ 때
+처리할 액티비티를 등ë¡í•˜ë ¤ë©´,
+<code>viewStreamItemActivity="<em>activityclass</em>"</code> ì†ì„±ì„ ìš”ì†Œì— ì¶”ê°€í•©ë‹ˆë‹¤.
+ì´ ìš”ì†Œì—서 <code><em>activityclass</em></code>는 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 ì¸í…트를 수신하는 액티비티ì˜
완전히 ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„입니다.
</li>
<li>
- 사용ìžê°€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 스트림 ì‚¬ì§„ì„ í´ë¦­í–ˆì„ 때
+ 사용ìžê°€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 스트림 ì‚¬ì§„ì„ í´ë¦­í–ˆì„ 때
처리할 액티비티를 등ë¡í•˜ë ¤ë©´,
<code>viewStreamItemPhotoActivity="<em>activityclass</em>"</code> ì†ì„±ì„ ìš”ì†Œì— ì¶”ê°€í•©ë‹ˆë‹¤.
-ì´ ìš”ì†Œì—서 <code><em>activityclass</em></code>는 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 ì¸í…트를 수신하는 액티비티ì˜
+ì´ ìš”ì†Œì—서 <code><em>activityclass</em></code>는 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 ì¸í…트를 수신하는 액티비티ì˜
완전히 ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„입니다.
</li>
</ol>
<p>
- <code>&lt;ContactsAccountType&gt;</code> 요소는
+ <code>&lt;ContactsAccountType&gt;</code> 요소는
<a href="#SocialStreamAcctType">&lt;ContactsAccountType&gt; 요소</a> ì„¹ì…˜ì— ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</p>
<p>
@@ -2091,17 +2091,17 @@ URI를 뺀 나머지 모든 ì¸ìˆ˜ëŠ” <code>null</code>로 설정한 채 ë‘ë©´
</p>
<h4>소셜 네트워킹 서비스로 ìƒí˜¸ 작용</h4>
<p>
- 사용ìžëŠ” 소셜 네트워킹 사ì´íŠ¸ì— ì—°ë½ì²˜ë¥¼ 초대할 때
-ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì„ 떠나지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. 대신, 개발ìžê°€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì•±ì— ì•¡í‹°ë¹„í‹° 중 하나로 ì—°ë½ì²˜ë¥¼ 초대하는 ì¸í…트를
+ 사용ìžëŠ” 소셜 네트워킹 사ì´íŠ¸ì— ì—°ë½ì²˜ë¥¼ 초대할 때
+ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì„ 떠나지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. 대신, 개발ìžê°€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ ì•±ì— ì•¡í‹°ë¹„í‹° 중 하나로 ì—°ë½ì²˜ë¥¼ 초대하는 ì¸í…트를
보내게 í•  수 있습니다. ì´ë ‡ê²Œ 설정하는 ë°©ë²•ì€ ë‹¤ìŒê³¼ 같습니다.
</p>
<ol>
<li>
- 프로ì íŠ¸ì˜ <code>res/xml/</code> ë””ë ‰í„°ë¦¬ì— <code>contacts.xml</code> 파ì¼ì„
+ 프로ì íŠ¸ì˜ <code>res/xml/</code> ë””ë ‰í„°ë¦¬ì— <code>contacts.xml</code> 파ì¼ì„
만듭니다. ì´ë¯¸ ì´ íŒŒì¼ì´ 있다면 ì´ ì ˆì°¨ë¥¼ ê±´ë„ˆë›°ì–´ë„ ë©ë‹ˆë‹¤.
</li>
<li>
- ì´ íŒŒì¼ì—서,
+ ì´ íŒŒì¼ì—서,
<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code> 요소를 추가합니다.
ì´ ìš”ì†Œê°€ ì´ë¯¸ 존재한다면 ì´ ì ˆì°¨ë¥¼ ê±´ë„ˆë›°ì–´ë„ ë©ë‹ˆë‹¤.
</li>
@@ -2113,25 +2113,25 @@ URI를 뺀 나머지 모든 ì¸ìˆ˜ëŠ” <code>null</code>로 설정한 채 ë‘ë©´
<code>inviteContactActionLabel="&#64;string/<em>invite_action_label</em>"</code>
</li>
</ul>
- <code><em>activityclass</em></code> ê°’ì€ ì¸í…트를 수신해야 하는 액티비티ì˜
+ <code><em>activityclass</em></code> ê°’ì€ ì¸í…트를 수신해야 하는 액티비티ì˜
완전히 ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„입니다. <code><em>invite_action_label</em></code>
-ê°’ì€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì— 있는 <strong>ì—°ê²° 추가</strong> 메뉴ì—
+ê°’ì€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì— 있는 <strong>ì—°ê²° 추가</strong> 메뉴ì—
표시ë˜ëŠ” í…스트 문ìžì—´ìž…니다.
</li>
</ol>
<p class="note">
- <strong>참고:</strong> <code>ContactsSource</code>는
+ <strong>참고:</strong> <code>ContactsSource</code>는
<code>ContactsAccountType</code>ì— ëŒ€í•˜ì—¬ ì´ì œ 사용하지 않는 태그 ì´ë¦„입니다.
</p>
<h3 id="ContactsFile">contacts.xml 참조</h3>
<p>
- <code>contacts.xml</code> 파ì¼ì—는 XML 요소가 들어있어 개발ìžì˜ ë™ê¸°í™” 어댑터와
-애플리케ì´ì…˜, ì—°ë½ì²˜ 애플리케ì´ì…˜ê³¼ ì—°ë½ì²˜ ì œê³µìž ì‚¬ì´ì˜ ìƒí˜¸ ìž‘ìš©ì„ ì œì–´í•©ë‹ˆë‹¤. ì´ëŸ°
+ <code>contacts.xml</code> 파ì¼ì—는 XML 요소가 들어있어 개발ìžì˜ ë™ê¸°í™” 어댑터와
+애플리케ì´ì…˜, ì—°ë½ì²˜ 애플리케ì´ì…˜ê³¼ ì—°ë½ì²˜ ì œê³µìž ì‚¬ì´ì˜ ìƒí˜¸ ìž‘ìš©ì„ ì œì–´í•©ë‹ˆë‹¤. ì´ëŸ°
요소는 ë‹¤ìŒ ì„¹ì…˜ì— ì„¤ëª…ë˜ì–´ 있습니다.
</p>
<h4 id="SocialStreamAcctType">&lt;ContactsAccountType&gt; 요소</h4>
<p>
- <code>&lt;ContactsAccountType&gt;</code>ìš” 요소는 개발ìžì˜ 애플리케ì´ì…˜ê³¼
+ <code>&lt;ContactsAccountType&gt;</code>ìš” 요소는 개발ìžì˜ 애플리케ì´ì…˜ê³¼
ì—°ë½ì²˜ 애플리케ì´ì…˜ 사ì´ì˜ ìƒí˜¸ ìž‘ìš©ì„ ì œì–´í•©ë‹ˆë‹¤. ì´ ìš”ì†Œì—는 ë‹¤ìŒ êµ¬ë¬¸ì´ ìžˆìŠµë‹ˆë‹¤.
</p>
<pre>
@@ -2161,12 +2161,12 @@ URI를 뺀 나머지 모든 ì¸ìˆ˜ëŠ” <code>null</code>로 설정한 채 ë‘ë©´
<strong>설명:</strong>
</p>
<p>
- 사용ìžê°€ ì—°ë½ì²˜ 중 하나를 소셜 네트워í¬ì— 초대하고,
-소셜 네트워킹 ìŠ¤íŠ¸ë¦¼ì´ ì—…ë°ì´íЏë˜ë©´ 사용ìžì—게 알리는 ë“±ì˜ ìž‘ì—…ì„ í—ˆìš©í•˜ëŠ”
+ 사용ìžê°€ ì—°ë½ì²˜ 중 하나를 소셜 네트워í¬ì— 초대하고,
+소셜 네트워킹 ìŠ¤íŠ¸ë¦¼ì´ ì—…ë°ì´íЏë˜ë©´ 사용ìžì—게 알리는 ë“±ì˜ ìž‘ì—…ì„ í—ˆìš©í•˜ëŠ”
Android 구성 요소와 UI ë ˆì´ë¸”ì„ ì„ ì–¸í•©ë‹ˆë‹¤.
</p>
<p>
- ì†ì„± ì ‘ë‘사 <code>android:</code>는
+ ì†ì„± ì ‘ë‘사 <code>android:</code>는
<code>&lt;ContactsAccountType&gt;</code>ì˜ ì†ì„±ì—는 필요하지 않다는 ì ì„ 눈여겨보십시오.
</p>
<p>
@@ -2175,48 +2175,48 @@ Android 구성 요소와 UI ë ˆì´ë¸”ì„ ì„ ì–¸í•©ë‹ˆë‹¤.
<dl>
<dt>{@code inviteContactActivity}</dt>
<dd>
- 사용ìžê°€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서
-<strong>ì—°ê²° 추가</strong>를 ì„ íƒí–ˆì„ 때 í™œì„±í™”í•˜ê³ ìž í•˜ëŠ”
+ 사용ìžê°€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서
+<strong>ì—°ê²° 추가</strong>를 ì„ íƒí–ˆì„ 때 í™œì„±í™”í•˜ê³ ìž í•˜ëŠ”
애플리케ì´ì…˜ ì•¡í‹°ë¹„í‹°ì˜ ì™„ì „ížˆ ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„입니다.
</dd>
<dt>{@code inviteContactActionLabel}</dt>
<dd>
- <strong>ì—°ê²° 추가</strong> 메뉴ì˜
+ <strong>ì—°ê²° 추가</strong> 메뉴ì˜
{@code inviteContactActivity}ì—서 ì§€ì •ëœ ì•¡í‹°ë¹„í‹°ì— ëŒ€í•´ 표시ë˜ëŠ” í…스트 문ìžì—´ìž…니다.
- 예를 들어, 문ìžì—´ "ì œ 네트워í¬ë¥¼ 팔로우하세요"를 사용할 수 있습니다. ì´ ë ˆì´ë¸”ì— ëŒ€í•œ 문ìžì—´ 리소스
+ 예를 들어, 문ìžì—´ "ì œ 네트워í¬ë¥¼ 팔로우하세요"를 사용할 수 있습니다. ì´ ë ˆì´ë¸”ì— ëŒ€í•œ 문ìžì—´ 리소스
ì‹ë³„ìžë¥¼ 사용할 수 있습니다.
</dd>
<dt>{@code viewContactNotifyService}</dt>
<dd>
- 사용ìžê°€ ì—°ë½ì²˜ë¥¼ ë³¼ 때 ì•Œë¦¼ì„ ìˆ˜ì‹ í•´ì•¼ 하는
-애플리케ì´ì…˜ ì„œë¹„ìŠ¤ì˜ ì™„ì „ížˆ ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„입니다. ì´ ì•Œë¦¼ì€
-ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì´ 전송합니다. ì´ê²ƒì„ 사용하면 개발ìžì˜ 애플리케ì´ì…˜ì´ ë°ì´í„° 집약ì ì¸ ìž‘ì—…ì„ í•„ìš”í•  때까지
-연기할 수 있습니다. 예를 들어, 개발ìžì˜ 애플리케ì´ì…˜ì€
-ì—°ë½ì²˜ì˜ ê³ í•´ìƒë„ 사진과 가장 최근 소셜 스트림 í•­ëª©ì„ ì½ì–´ì„œ 표시함으로ì¨
-ì´ ì•Œë¦¼ì— ì‘답할 수 있습니다. ì´ ê¸°ëŠ¥ì€
-<a href="#SocialStreamInteraction">소셜 스트림 ìƒí˜¸ 작용</a>ì— ìƒì„¸ížˆ 설명ë˜ì–´ 있습니다. 알림 ì„œë¹„ìŠ¤ì˜ ì˜ˆì‹œë¥¼
+ 사용ìžê°€ ì—°ë½ì²˜ë¥¼ ë³¼ 때 ì•Œë¦¼ì„ ìˆ˜ì‹ í•´ì•¼ 하는
+애플리케ì´ì…˜ ì„œë¹„ìŠ¤ì˜ ì™„ì „ížˆ ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„입니다. ì´ ì•Œë¦¼ì€
+ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì´ 전송합니다. ì´ê²ƒì„ 사용하면 개발ìžì˜ 애플리케ì´ì…˜ì´ ë°ì´í„° 집약ì ì¸ ìž‘ì—…ì„ í•„ìš”í•  때까지
+연기할 수 있습니다. 예를 들어, 개발ìžì˜ 애플리케ì´ì…˜ì€
+ì—°ë½ì²˜ì˜ ê³ í•´ìƒë„ 사진과 가장 최근 소셜 스트림 í•­ëª©ì„ ì½ì–´ì„œ 표시함으로ì¨
+ì´ ì•Œë¦¼ì— ì‘답할 수 있습니다. ì´ ê¸°ëŠ¥ì€
+<a href="#SocialStreamInteraction">소셜 스트림 ìƒí˜¸ 작용</a>ì— ìƒì„¸ížˆ 설명ë˜ì–´ 있습니다. 알림 ì„œë¹„ìŠ¤ì˜ ì˜ˆì‹œë¥¼
보려면 <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>
- 샘플 ì•±ì— ìžˆëŠ” <code>NotifierService.java</code> 파ì¼ì„
+ 샘플 ì•±ì— ìžˆëŠ” <code>NotifierService.java</code> 파ì¼ì„
확ì¸í•©ë‹ˆë‹¤.
</dd>
<dt>{@code viewGroupActivity}</dt>
<dd>
- 그룹 정보를 표시할 수 있는 애플리케ì´ì…˜ 액티비티ì˜
-완전히 ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„입니다. 사용ìžê°€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 그룹 ë ˆì´ë¸”ì„ í´ë¦­í•˜ë©´,
+ 그룹 정보를 표시할 수 있는 애플리케ì´ì…˜ 액티비티ì˜
+완전히 ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„입니다. 사용ìžê°€ ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì—서 그룹 ë ˆì´ë¸”ì„ í´ë¦­í•˜ë©´,
ì´ ì•¡í‹°ë¹„í‹°ì˜ UIê°€ 표시ë©ë‹ˆë‹¤.
</dd>
<dt>{@code viewGroupActionLabel}</dt>
<dd>
- 사용ìžê°€ 개발ìžì˜ 애플리케ì´ì…˜ì—서 ê·¸ë£¹ì„ ì‚´íŽ´ë³¼ 수 있ë„ë¡ í•´ì£¼ëŠ” UI ì œì–´ì— ëŒ€í•´
+ 사용ìžê°€ 개발ìžì˜ 애플리케ì´ì…˜ì—서 ê·¸ë£¹ì„ ì‚´íŽ´ë³¼ 수 있ë„ë¡ í•´ì£¼ëŠ” UI ì œì–´ì— ëŒ€í•´
ì—°ë½ì²˜ 애플리케ì´ì…˜ì´ 표시하는 ë ˆì´ë¸”입니다.
<p>
- 예를 들어, ê¸°ê¸°ì— Google+ 애플리케ì´ì…˜ì„ 설치하고
-Google+를 ì—°ë½ì²˜ 애플리케ì´ì…˜ê³¼ ë™ê¸°í™”하면, Google+ 서í´ì´
-ì—°ë½ì²˜ 애플리케ì´ì…˜ì˜ <strong>그룹</strong> íƒ­ì— í‘œì‹œë˜ëŠ” ê²ƒì„ ë³¼ 수 있습니다. Google+ 서í´ì„
-í´ë¦­í•˜ë©´ 해당 서í´ì—서 "그룹"으로 í‘œì‹œëœ ì‚¬ëžŒë“¤ì„ ë³¼ 수 있습니다. ì´ í‘œì‹œì˜ ë§¨ 위ì—
-Google+ ì•„ì´ì½˜ì´ 표시ë˜ë©°, ì´ê²ƒì„ í´ë¦­í•˜ë©´ 제어가
-Google+ 앱으로 전환ë©ë‹ˆë‹¤. ì—°ë½ì²˜ 애플리케ì´ì…˜ì€ ì´ ìž‘ì—…ì„
-{@code viewGroupActivity}로 수행하며, Google+ ì•„ì´ì½˜ì„
+ 예를 들어, ê¸°ê¸°ì— Google+ 애플리케ì´ì…˜ì„ 설치하고
+Google+를 ì—°ë½ì²˜ 애플리케ì´ì…˜ê³¼ ë™ê¸°í™”하면, Google+ 서í´ì´
+ì—°ë½ì²˜ 애플리케ì´ì…˜ì˜ <strong>그룹</strong> íƒ­ì— í‘œì‹œë˜ëŠ” ê²ƒì„ ë³¼ 수 있습니다. Google+ 서í´ì„
+í´ë¦­í•˜ë©´ 해당 서í´ì—서 "그룹"으로 í‘œì‹œëœ ì‚¬ëžŒë“¤ì„ ë³¼ 수 있습니다. ì´ í‘œì‹œì˜ ë§¨ 위ì—
+Google+ ì•„ì´ì½˜ì´ 표시ë˜ë©°, ì´ê²ƒì„ í´ë¦­í•˜ë©´ 제어가
+Google+ 앱으로 전환ë©ë‹ˆë‹¤. ì—°ë½ì²˜ 애플리케ì´ì…˜ì€ ì´ ìž‘ì—…ì„
+{@code viewGroupActivity}로 수행하며, Google+ ì•„ì´ì½˜ì„
{@code viewGroupActionLabel}ì˜ ê°’ìœ¼ë¡œ 사용합니다.
</p>
<p>
@@ -2225,19 +2225,19 @@ Google+ 앱으로 전환ë©ë‹ˆë‹¤. ì—°ë½ì²˜ 애플리케ì´ì…˜ì€ ì´ ìž‘ì—…ì„
</dd>
<dt>{@code viewStreamItemActivity}</dt>
<dd>
- 사용ìžê°€ ì›ì‹œ ì—°ë½ì²˜ì˜ 스트림 í•­ëª©ì„ í´ë¦­í•  때 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì´ 시작하는
+ 사용ìžê°€ ì›ì‹œ ì—°ë½ì²˜ì˜ 스트림 í•­ëª©ì„ í´ë¦­í•  때 ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì´ 시작하는
애플리케ì´ì…˜ ì•¡í‹°ë¹„í‹°ì˜ ì™„ì „ížˆ ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„입니다.
</dd>
<dt>{@code viewStreamItemPhotoActivity}</dt>
<dd>
- 사용ìžê°€ ì›ì‹œ ì—°ë½ì²˜ 스트림 í•­ëª©ì˜ ì‚¬ì§„ì„ í´ë¦­í•  때
-ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì´ 시작하는 애플리케ì´ì…˜ 액티비티ì˜
+ 사용ìžê°€ ì›ì‹œ ì—°ë½ì²˜ 스트림 í•­ëª©ì˜ ì‚¬ì§„ì„ í´ë¦­í•  때
+ê¸°ê¸°ì˜ ì—°ë½ì²˜ 애플리케ì´ì…˜ì´ 시작하는 애플리케ì´ì…˜ 액티비티ì˜
완전히 ì •ê·œí™”ëœ í´ëž˜ìФ ì´ë¦„입니다.
</dd>
</dl>
<h4 id="SocialStreamDataKind">&lt;ContactsDataKind&gt; 요소</h4>
<p>
- <code>&lt;ContactsDataKind&gt;</code> 요소는 ì—°ë½ì²˜ 애플리케ì´ì…˜ UIì—서 애플리케ì´ì…˜ì˜ ì‚¬ìš©ìž ì§€ì • ë°ì´í„° í–‰ 표시를
+ <code>&lt;ContactsDataKind&gt;</code> 요소는 ì—°ë½ì²˜ 애플리케ì´ì…˜ UIì—서 애플리케ì´ì…˜ì˜ ì‚¬ìš©ìž ì§€ì • ë°ì´í„° í–‰ 표시를
제어합니다. ì´ ìš”ì†Œì—는 ë‹¤ìŒ êµ¬ë¬¸ì´ ìžˆìŠµë‹ˆë‹¤.
</p>
<pre>
@@ -2255,11 +2255,11 @@ Google+ 앱으로 전환ë©ë‹ˆë‹¤. ì—°ë½ì²˜ 애플리케ì´ì…˜ì€ ì´ ìž‘ì—…ì„
<strong>설명:</strong>
</p>
<p>
- ì´ ìš”ì†Œë¥¼ 사용하여 ì—°ë½ì²˜ 애플리케ì´ì…˜ì´ ì‚¬ìš©ìž ì§€ì • ë°ì´í„° í–‰ì˜ ì½˜í…츠를
-ì›ì‹œ ì—°ë½ì²˜ 세부 ì •ë³´ì˜ ì¼ë¶€ë¡œ 표시하게 합니다. <code>&lt;ContactsAccountType&gt;</code>ì˜ ê° <code>&lt;ContactsDataKind&gt;</code> 하위 요소는
-ë™ê¸°í™” 어댑터가 {@link android.provider.ContactsContract.Data}ì— ì¶”ê°€í•˜ëŠ”
-ì‚¬ìš©ìž ì§€ì • ë°ì´í„° í–‰ì˜ ìœ í˜•ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. 개발ìžê°€ 사용하는 ì‚¬ìš©ìž ì§€ì • MIME 유형 하나마다
-<code>&lt;ContactsDataKind&gt;</code> 요소를 하나씩 추가합니다. ë°ì´í„°ë¥¼
+ ì´ ìš”ì†Œë¥¼ 사용하여 ì—°ë½ì²˜ 애플리케ì´ì…˜ì´ ì‚¬ìš©ìž ì§€ì • ë°ì´í„° í–‰ì˜ ì½˜í…츠를
+ì›ì‹œ ì—°ë½ì²˜ 세부 ì •ë³´ì˜ ì¼ë¶€ë¡œ 표시하게 합니다. <code>&lt;ContactsAccountType&gt;</code>ì˜ ê° <code>&lt;ContactsDataKind&gt;</code> 하위 요소는
+ë™ê¸°í™” 어댑터가 {@link android.provider.ContactsContract.Data}ì— ì¶”ê°€í•˜ëŠ”
+ì‚¬ìš©ìž ì§€ì • ë°ì´í„° í–‰ì˜ ìœ í˜•ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. 개발ìžê°€ 사용하는 ì‚¬ìš©ìž ì§€ì • MIME 유형 하나마다
+<code>&lt;ContactsDataKind&gt;</code> 요소를 하나씩 추가합니다. ë°ì´í„°ë¥¼
표시하는 ê²ƒì„ ì›ì¹˜ 않는 ì‚¬ìš©ìž ì§€ì • ë°ì´í„° í–‰ì´ ìžˆìœ¼ë©´, ì´ ìš”ì†Œë¥¼ 추가하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤.
</p>
<p>
@@ -2268,35 +2268,35 @@ Google+ 앱으로 전환ë©ë‹ˆë‹¤. ì—°ë½ì²˜ 애플리케ì´ì…˜ì€ ì´ ìž‘ì—…ì„
<dl>
<dt>{@code android:mimeType}</dt>
<dd>
- {@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì—서
-ì‚¬ìš©ìž ì§€ì • ë°ì´í„° í–‰ 유형 중 하나로 지정한 ì‚¬ìš©ìž ì§€ì • MIME 유형입니다. 예를 들어,
-<code>vnd.android.cursor.item/vnd.example.locationstatus</code> ê°’ì€ ì—°ë½ì²˜ì˜ 마지막으로 알려진 위치를 기ë¡í•˜ëŠ”
+ {@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì—서
+ì‚¬ìš©ìž ì§€ì • ë°ì´í„° í–‰ 유형 중 하나로 지정한 ì‚¬ìš©ìž ì§€ì • MIME 유형입니다. 예를 들어,
+<code>vnd.android.cursor.item/vnd.example.locationstatus</code> ê°’ì€ ì—°ë½ì²˜ì˜ 마지막으로 알려진 위치를 기ë¡í•˜ëŠ”
ë°ì´í„° í–‰ì— ëŒ€í•œ ì‚¬ìš©ìž ì§€ì • MIME ìœ í˜•ì´ ë  ìˆ˜ 있습니다.
</dd>
<dt>{@code android:icon}</dt>
<dd>
- ì—°ë½ì²˜ 애플리케ì´ì…˜ì´ 개발ìžì˜ ë°ì´í„° ì˜†ì— í‘œì‹œí•˜ëŠ”
+ ì—°ë½ì²˜ 애플리케ì´ì…˜ì´ 개발ìžì˜ ë°ì´í„° ì˜†ì— í‘œì‹œí•˜ëŠ”
Android <a href="{@docRoot}guide/topics/resources/drawable-resource.html">드로어블 리소스</a>
-입니다. ì´ ë¦¬ì†ŒìŠ¤ë¥¼ 사용하여 사용ìžì—게
+입니다. ì´ ë¦¬ì†ŒìŠ¤ë¥¼ 사용하여 사용ìžì—게
ë°ì´í„° 출처가 개발ìžì˜ ì„œë¹„ìŠ¤ìž„ì„ ë‚˜íƒ€ë‚´ëŠ” 것입니다.
</dd>
<dt>{@code android:summaryColumn}</dt>
<dd>
- ë°ì´í„° í–‰ì—서 검색한 ë‘ ê°œ ê°’ 중ì—서 첫 번째 ê°’ì— ëŒ€í•œ ì—´ ì´ë¦„입니다. ì´ ê°’ì€
-ì´ ë°ì´í„° í–‰ì— ëŒ€í•œ í•­ëª©ì˜ ì²« 번째 줄로 표시ë©ë‹ˆë‹¤. 첫 번째 줄ì€
-ë°ì´í„° 요약으로 사용ë˜ëŠ” ê²ƒì´ ë³¸ 목ì ì´ì§€ë§Œ, ì´ê²ƒì€ ì„ íƒ ì‚¬í•­ìž…ë‹ˆë‹¤.
+ ë°ì´í„° í–‰ì—서 검색한 ë‘ ê°œ ê°’ 중ì—서 첫 번째 ê°’ì— ëŒ€í•œ ì—´ ì´ë¦„입니다. ì´ ê°’ì€
+ì´ ë°ì´í„° í–‰ì— ëŒ€í•œ í•­ëª©ì˜ ì²« 번째 줄로 표시ë©ë‹ˆë‹¤. 첫 번째 줄ì€
+ë°ì´í„° 요약으로 사용ë˜ëŠ” ê²ƒì´ ë³¸ 목ì ì´ì§€ë§Œ, ì´ê²ƒì€ ì„ íƒ ì‚¬í•­ìž…ë‹ˆë‹¤.
<a href="#detailColumn">android:detailColumn</a>ë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
</dd>
<dt>{@code android:detailColumn}</dt>
<dd>
ë°ì´í„° í–‰ì—서 검색한 ë‘ ê°œ ê°’ 중ì—서 ë‘ ë²ˆì§¸ ê°’ì— ëŒ€í•œ ì—´ ì´ë¦„입니다. ì´ ê°’ì€
-ì´ ë°ì´í„° í–‰ì— ëŒ€í•œ í•­ëª©ì˜ ë‘ ë²ˆì§¸ 줄로 표시ë©ë‹ˆë‹¤.
+ì´ ë°ì´í„° í–‰ì— ëŒ€í•œ í•­ëª©ì˜ ë‘ ë²ˆì§¸ 줄로 표시ë©ë‹ˆë‹¤.
{@code android:summaryColumn}ë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
</dd>
</dl>
<h2 id="AdditionalFeatures">추가 ì—°ë½ì²˜ ì œê³µìž ê¸°ëŠ¥</h2>
<p>
- ì´ì „ 섹션ì—서 설명한 주요 기능 외ì—ë„ ì—°ë½ì²˜ 제공ìžëŠ” ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 다루는 ë°
+ ì´ì „ 섹션ì—서 설명한 주요 기능 외ì—ë„ ì—°ë½ì²˜ 제공ìžëŠ” ì—°ë½ì²˜ ë°ì´í„°ë¥¼ 다루는 ë°
유용한 ê¸°ëŠ¥ì„ ë§Žì´ ì œê³µí•©ë‹ˆë‹¤. 예를 들면 다ìŒê³¼ 같습니다.
</p>
<ul>
@@ -2305,52 +2305,52 @@ Android <a href="{@docRoot}guide/topics/resources/drawable-resource.html">드로
</ul>
<h3 id="Groups">ì—°ë½ì²˜ 그룹</h3>
<p>
- ì—°ë½ì²˜ 제공ìžëŠ” ê´€ë ¨ëœ ì—°ë½ì²˜ 컬렉션ì—
-<strong>그룹</strong> ë°ì´í„°ë¡œ ë ˆì´ë¸”ì„ ë¶™ì´ê¸°ë¡œ ì„ íƒí•  수 있습니다. ì‚¬ìš©ìž ê³„ì •ê³¼ ì—°ê´€ëœ ì„œë²„ì—서
-ê·¸ë£¹ì„ ê´€ë¦¬í•˜ê³ ìž í•˜ëŠ” 경우, ê³„ì •ì˜ ê³„ì • ìœ í˜•ì— ëŒ€í•œ ë™ê¸°í™” 어댑터가
-ì—°ë½ì²˜ 제공ìžì™€ 서버 사ì´ì—서 그룹 ë°ì´í„°ë¥¼ 전송해야 합니다. 사용ìžê°€ 해당 ì„œë²„ì— ìƒˆ ì—°ë½ì²˜ë¥¼ 추가하고
+ ì—°ë½ì²˜ 제공ìžëŠ” ê´€ë ¨ëœ ì—°ë½ì²˜ 컬렉션ì—
+<strong>그룹</strong> ë°ì´í„°ë¡œ ë ˆì´ë¸”ì„ ë¶™ì´ê¸°ë¡œ ì„ íƒí•  수 있습니다. ì‚¬ìš©ìž ê³„ì •ê³¼ ì—°ê´€ëœ ì„œë²„ì—서
+ê·¸ë£¹ì„ ê´€ë¦¬í•˜ê³ ìž í•˜ëŠ” 경우, ê³„ì •ì˜ ê³„ì • ìœ í˜•ì— ëŒ€í•œ ë™ê¸°í™” 어댑터가
+ì—°ë½ì²˜ 제공ìžì™€ 서버 사ì´ì—서 그룹 ë°ì´í„°ë¥¼ 전송해야 합니다. 사용ìžê°€ 해당 ì„œë²„ì— ìƒˆ ì—°ë½ì²˜ë¥¼ 추가하고
ì´ ì—°ë½ì²˜ë¥¼ 새 ê·¸ë£¹ì— ë„£ìœ¼ë©´, ë™ê¸°í™” 어댑터가 해당 새 그룹ì„
-{@link android.provider.ContactsContract.Groups} í…Œì´ë¸”ì— ì¶”ê°€í•´ì•¼ 합니다. ì›ì‹œ ì—°ë½ì²˜ê°€ ì†í•œ 그룹(ë˜ëŠ” 여러 그룹)ì€
-{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì— ì €ìž¥ë˜ë©°, ì´ë•Œ
+{@link android.provider.ContactsContract.Groups} í…Œì´ë¸”ì— ì¶”ê°€í•´ì•¼ 합니다. ì›ì‹œ ì—°ë½ì²˜ê°€ ì†í•œ 그룹(ë˜ëŠ” 여러 그룹)ì€
+{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì— ì €ìž¥ë˜ë©°, ì´ë•Œ
{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} MIME ìœ í˜•ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
</p>
<p>
- 개발ìžê°€ 서버ì—서 가져온 ì›ì‹œ ì—°ë½ì²˜ ë°ì´í„°ë¥¼ ì—°ë½ì²˜ 제공ìžì— 추가할
-ë™ê¸°í™” 어댑터를 ë””ìžì¸í•˜ëŠ” 중ì´ê³  ê·¸ë£¹ì€ ì‚¬ìš©í•˜ì§€ 않는다면,
-ì œê³µìž ìª½ì— ë°ì´í„°ë¥¼ 표시하ë¼ê³  지시해야 합니다. 사용ìžê°€ ê¸°ê¸°ì— ê³„ì •ì„ ì¶”ê°€í–ˆì„ ë•Œ 실행ë˜ëŠ” 코드ì—서
-ì—°ë½ì²˜ 제공ìžê°€ ê³„ì •ì— ì¶”ê°€í•˜ëŠ”{@link android.provider.ContactsContract.Settings} í–‰ì„
-ì—…ë°ì´íŠ¸í•˜ì‹­ì‹œì˜¤. ì´ í–‰ì—서
+ 개발ìžê°€ 서버ì—서 가져온 ì›ì‹œ ì—°ë½ì²˜ ë°ì´í„°ë¥¼ ì—°ë½ì²˜ 제공ìžì— 추가할
+ë™ê¸°í™” 어댑터를 ë””ìžì¸í•˜ëŠ” 중ì´ê³  ê·¸ë£¹ì€ ì‚¬ìš©í•˜ì§€ 않는다면,
+ì œê³µìž ìª½ì— ë°ì´í„°ë¥¼ 표시하ë¼ê³  지시해야 합니다. 사용ìžê°€ ê¸°ê¸°ì— ê³„ì •ì„ ì¶”ê°€í–ˆì„ ë•Œ 실행ë˜ëŠ” 코드ì—서
+ì—°ë½ì²˜ 제공ìžê°€ ê³„ì •ì— ì¶”ê°€í•˜ëŠ”{@link android.provider.ContactsContract.Settings} í–‰ì„
+ì—…ë°ì´íŠ¸í•˜ì‹­ì‹œì˜¤. ì´ í–‰ì—서
{@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE
-Settings.UNGROUPED_VISIBLE} ì—´ì˜ ê°’ì„ 1로 설정합니다. ì´ë ‡ê²Œ 하면 ì—°ë½ì²˜ 제공ìžê°€
+Settings.UNGROUPED_VISIBLE} ì—´ì˜ ê°’ì„ 1로 설정합니다. ì´ë ‡ê²Œ 하면 ì—°ë½ì²˜ 제공ìžê°€
개발ìžì˜ ì—°ë½ì²˜ ë°ì´í„°ë¥¼ í•­ìƒ í‘œì‹œí•˜ê²Œ ë˜ê³ , ì´ëŠ” ê·¸ë£¹ì„ ì‚¬ìš©í•˜ì§€ 않ë”ë¼ë„ 관계 없습니다.
</p>
<h3 id="Photos">ì—°ë½ì²˜ 사진</h3>
<p>
{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì€
{@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
-Photo.CONTENT_ITEM_TYPE} MIME 유형으로 ì‚¬ì§„ì„ í–‰ì— ì €ìž¥í•©ë‹ˆë‹¤. ì´ í–‰ì˜
-{@link android.provider.ContactsContract.RawContactsColumns#CONTACT_ID} ì—´ì€
+Photo.CONTENT_ITEM_TYPE} MIME 유형으로 ì‚¬ì§„ì„ í–‰ì— ì €ìž¥í•©ë‹ˆë‹¤. ì´ í–‰ì˜
+{@link android.provider.ContactsContract.RawContactsColumns#CONTACT_ID} ì—´ì€
í–‰ì´ ì†í•œ ì›ì‹œ ì—°ë½ì²˜ì˜ {@code android.provider.BaseColumns#_ID} ì—´ê³¼ ì—°ê²°ë©ë‹ˆë‹¤.
- í´ëž˜ìФ {@link android.provider.ContactsContract.Contacts.Photo}는
-ì—°ë½ì²˜ 기본 ì‚¬ì§„ì˜ ì‚¬ì§„ ì •ë³´ê°€ 들어있는 {@link android.provider.ContactsContract.Contacts} 하위 í…Œì´ë¸”ì„ ì •ì˜í•©ë‹ˆë‹¤.
-ì—°ë½ì²˜ì˜ 기본 ì‚¬ì§„ì€ ì—°ë½ì²˜ 기본 ì›ì‹œ ì—°ë½ì²˜ì˜ 기본 사진입니다. 마찬가지로,
+ í´ëž˜ìФ {@link android.provider.ContactsContract.Contacts.Photo}는
+ì—°ë½ì²˜ 기본 ì‚¬ì§„ì˜ ì‚¬ì§„ ì •ë³´ê°€ 들어있는 {@link android.provider.ContactsContract.Contacts} 하위 í…Œì´ë¸”ì„ ì •ì˜í•©ë‹ˆë‹¤.
+ì—°ë½ì²˜ì˜ 기본 ì‚¬ì§„ì€ ì—°ë½ì²˜ 기본 ì›ì‹œ ì—°ë½ì²˜ì˜ 기본 사진입니다. 마찬가지로,
{@link android.provider.ContactsContract.RawContacts.DisplayPhoto} í´ëž˜ìŠ¤ëŠ”
ì›ì‹œ ì—°ë½ì²˜ì˜ 기본 ì‚¬ì§„ì˜ ì‚¬ì§„ ì •ë³´ê°€ 들어있는 {@link android.provider.ContactsContract.RawContacts} 하위 í…Œì´ë¸”ì„
ì •ì˜í•©ë‹ˆë‹¤.
</p>
<p>
- {@link android.provider.ContactsContract.Contacts.Photo} ë°
-{@link android.provider.ContactsContract.RawContacts.DisplayPhoto}ì— ëŒ€í•œ 참조 문서ì—
-사진 정보를 검색하는 예시가 들어있습니다. ì›ì‹œ ì—°ë½ì²˜ì— 대한 기본 미리 보기를 검색하는 ë° ì“°ì´ëŠ”
-íŽ¸ì˜ í´ëž˜ìŠ¤ëŠ” 없습니다. 하지만
-{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì— ì¿¼ë¦¬ë¥¼ ë³´ë‚´ ì›ì‹œ ì—°ë½ì²˜ì˜
-{@code android.provider.BaseColumns#_ID},
+ {@link android.provider.ContactsContract.Contacts.Photo} ë°
+{@link android.provider.ContactsContract.RawContacts.DisplayPhoto}ì— ëŒ€í•œ 참조 문서ì—
+사진 정보를 검색하는 예시가 들어있습니다. ì›ì‹œ ì—°ë½ì²˜ì— 대한 기본 미리 보기를 검색하는 ë° ì“°ì´ëŠ”
+íŽ¸ì˜ í´ëž˜ìŠ¤ëŠ” 없습니다. 하지만
+{@link android.provider.ContactsContract.Data} í…Œì´ë¸”ì— ì¿¼ë¦¬ë¥¼ ë³´ë‚´ ì›ì‹œ ì—°ë½ì²˜ì˜
+{@code android.provider.BaseColumns#_ID},
{@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
Photo.CONTENT_ITEM_TYPE}, ë° {@link android.provider.ContactsContract.Data#IS_PRIMARY}
ì—´ì„ ì„ íƒí•˜ë©´ 해당 ì›ì‹œ ì—°ë½ì²˜ì˜ 기본 사진 í–‰ì„ ì°¾ì„ ìˆ˜ 있습니다.
</p>
<p>
- 한 ì‚¬ëžŒì˜ ì†Œì…œ 스트림 ë°ì´í„°ì—ë„ ì‚¬ì§„ì´ í¬í•¨ë˜ì–´ ìžˆì„ ìˆ˜ 있습니다. ì´ëŸ° 사진ì€
-{@code android.provider.ContactsContract.StreamItemPhotos} í…Œì´ë¸”ì— ì €ìž¥ë˜ë©°, ì´ ë‚´ìš©ì€
+ 한 ì‚¬ëžŒì˜ ì†Œì…œ 스트림 ë°ì´í„°ì—ë„ ì‚¬ì§„ì´ í¬í•¨ë˜ì–´ ìžˆì„ ìˆ˜ 있습니다. ì´ëŸ° 사진ì€
+{@code android.provider.ContactsContract.StreamItemPhotos} í…Œì´ë¸”ì— ì €ìž¥ë˜ë©°, ì´ ë‚´ìš©ì€
<a href="#StreamPhotos">소셜 스트림 사진</a>ì— ë” ìžì„¸í•˜ê²Œ 설명ë˜ì–´ 있습니다.
</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/ko/guide/topics/providers/content-provider-basics.jd
index 953f92ab3026..68ed5683d731 100644
--- a/docs/html-intl/intl/ko/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html-intl/intl/ko/guide/topics/providers/content-provider-basics.jd
@@ -119,11 +119,11 @@ page.title=콘í…츠 ì œê³µìž ê¸°ë³¸ ì •ë³´
<!-- Intro paragraphs -->
<p>
- 콘í…츠 제공ìžëŠ” ë°ì´í„°ì˜ 중앙 리í¬ì§€í† ë¦¬ë¡œì˜ 액세스를 관리합니다.
+ 콘í…츠 제공ìžëŠ” ë°ì´í„°ì˜ 중앙 리í¬ì§€í† ë¦¬ë¡œì˜ 액세스를 관리합니다.
제공ìžëŠ” Android 애플리케ì´ì…˜ì˜ ì¼ë¶€ì´ë©°, ì´ëŠ” 종종 ë‚˜ë¦„ì˜ UI를 제공하여 ë°ì´í„°ì— 작용하ë„ë¡ í•©ë‹ˆë‹¤.
- 그러나 콘í…츠 제공ìžëŠ” 기본ì ìœ¼ë¡œ 다른 애플리케ì´ì…˜ì´ 사용하ë„ë¡ ë§Œë“¤ì–´ì§„ 것입니다.
-ì´ë“¤ì€ ì œê³µìž í´ë¼ì´ì–¸íЏ 개체를 사용하여 제공ìžì— 액세스합니다.
-제공ìžì™€ ì œê³µìž í´ë¼ì´ì–¸íŠ¸ê°€ ê²°í•©ë˜ë©´ ë°ì´í„°ì— í•˜ë‚˜ì˜ ì¼ê´€ì ì¸ 표준 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하여
+ 그러나 콘í…츠 제공ìžëŠ” 기본ì ìœ¼ë¡œ 다른 애플리케ì´ì…˜ì´ 사용하ë„ë¡ ë§Œë“¤ì–´ì§„ 것입니다.
+ì´ë“¤ì€ ì œê³µìž í´ë¼ì´ì–¸íЏ 개체를 사용하여 제공ìžì— 액세스합니다.
+제공ìžì™€ ì œê³µìž í´ë¼ì´ì–¸íŠ¸ê°€ ê²°í•©ë˜ë©´ ë°ì´í„°ì— í•˜ë‚˜ì˜ ì¼ê´€ì ì¸ 표준 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하여
ì´ê²ƒì´ 프로세스간 통신과 보안 ë°ì´í„° ì•¡ì„¸ìŠ¤ë„ ì²˜ë¦¬í•©ë‹ˆë‹¤.
</p>
<p>
@@ -139,14 +139,14 @@ page.title=콘í…츠 ì œê³µìž ê¸°ë³¸ ì •ë³´
<!-- Basics -->
<h2 id="Basics">개요</h2>
<p>
- 콘í…츠 제공ìžëŠ” 외부 애플리케ì´ì…˜ì— ë°ì´í„°ë¥¼ 표시하며, ì´ë•Œ ë°ì´í„°ëŠ”
-관계형 ë°ì´í„°ë² ì´ìФì—서 ì°¾ì„ ìˆ˜ 있는 í…Œì´ë¸”ê³¼ 유사한 하나 ì´ìƒì˜ í…Œì´ë¸”로서 표시ë©ë‹ˆë‹¤.
-한 í–‰ì€ ì œê³µìžê°€ 수집하는 ì–´ë–¤ ìœ í˜•ì˜ ë°ì´í„° ì¸ìŠ¤í„´ìŠ¤ë¥¼ 나타내며,
+ 콘í…츠 제공ìžëŠ” 외부 애플리케ì´ì…˜ì— ë°ì´í„°ë¥¼ 표시하며, ì´ë•Œ ë°ì´í„°ëŠ”
+관계형 ë°ì´í„°ë² ì´ìФì—서 ì°¾ì„ ìˆ˜ 있는 í…Œì´ë¸”ê³¼ 유사한 하나 ì´ìƒì˜ í…Œì´ë¸”로서 표시ë©ë‹ˆë‹¤.
+한 í–‰ì€ ì œê³µìžê°€ 수집하는 ì–´ë–¤ ìœ í˜•ì˜ ë°ì´í„° ì¸ìŠ¤í„´ìŠ¤ë¥¼ 나타내며,
í–‰ ì•ˆì˜ ê° ì—´ì€ ì¸ìŠ¤í„´ìŠ¤ì— ëŒ€í•´ ìˆ˜ì§‘ëœ ê°œë³„ì ì¸ ë°ì´í„°ë¥¼ 나타냅니다.
</p>
<p>
- 예를 들어 Android í”Œëž«í¼ ì•ˆì— ë‚´ìž¥ëœ ì—¬ëŸ¬ ì œê³µìž ì¤‘ì— ì‚¬ìš©ìž ì‚¬ì „ì´ë¼ëŠ” ê²ƒì´ ìžˆìŠµë‹ˆë‹¤.
-ì´ê²ƒì€ 사용ìžê°€ 보관하고 싶어하는 비표준 ë‹¨ì–´ì˜ ì² ìžë¥¼ 저장합니다. 표 1ì€ ì´ ì œê³µìžì˜ í…Œì´ë¸”ì—서
+ 예를 들어 Android í”Œëž«í¼ ì•ˆì— ë‚´ìž¥ëœ ì—¬ëŸ¬ ì œê³µìž ì¤‘ì— ì‚¬ìš©ìž ì‚¬ì „ì´ë¼ëŠ” ê²ƒì´ ìžˆìŠµë‹ˆë‹¤.
+ì´ê²ƒì€ 사용ìžê°€ 보관하고 싶어하는 비표준 ë‹¨ì–´ì˜ ì² ìžë¥¼ 저장합니다. 표 1ì€ ì´ ì œê³µìžì˜ í…Œì´ë¸”ì—서
ë°ì´í„°ê°€ ì–´ë–¤ 형태를 ë¨ ìˆ˜ 있는지를 나타낸 것입니다.
</p>
<p class="table-caption">
@@ -197,39 +197,39 @@ page.title=콘í…츠 ì œê³µìž ê¸°ë³¸ ì •ë³´
</tr>
</table>
<p>
- 표 1ì—서, ê° í–‰ì€ ì¼ë°˜ì ì¸ ì‚¬ì „ì— ë‚˜ì˜¤ì§€ 않는 ë‹¨ì–´ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼
-나타냅니다. ê° ì—´ì€ í•´ë‹¹ ë‹¨ì–´ì— ëŒ€í•œ ì¼ë¶€ ë°ì´í„°ë¥¼ 나타냅니다. 예를 들어
+ 표 1ì—서, ê° í–‰ì€ ì¼ë°˜ì ì¸ ì‚¬ì „ì— ë‚˜ì˜¤ì§€ 않는 ë‹¨ì–´ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼
+나타냅니다. ê° ì—´ì€ í•´ë‹¹ ë‹¨ì–´ì— ëŒ€í•œ ì¼ë¶€ ë°ì´í„°ë¥¼ 나타냅니다. 예를 들어
단어가 ì²˜ìŒ ë‚˜ì˜¨ ë¡œì¼€ì¼ ë“±ì„ ë“¤ 수 있습니다. ì—´ í—¤ë”는 제공ìžì— 저장ëœ
-ì—´ ì´ë¦„입니다. í–‰ì˜ ë¡œì¼€ì¼ì„ 참조하려면 ê·¸ í–‰ì˜ <code>locale</code> ì—´ì„ ì°¸ì¡°í•©ë‹ˆë‹¤.
+ì—´ ì´ë¦„입니다. í–‰ì˜ ë¡œì¼€ì¼ì„ 참조하려면 ê·¸ í–‰ì˜ <code>locale</code> ì—´ì„ ì°¸ì¡°í•©ë‹ˆë‹¤.
ì´ ì œê³µìžì˜ 경우, <code>_ID</code> ì—´ì€ ì œê³µìžê°€ ìžë™ìœ¼ë¡œ 유지하는 "기본 키" ì—´
ì—­í• ì„ í•©ë‹ˆë‹¤.
</p>
<p class="note">
- <strong>참고:</strong> 제공ìžì— 기본 키가 ê¼­ 있어야 하는 ê²ƒì€ ì•„ë‹ˆê³ ,
-기본 키가 있는 경우 <code>_ID</code>를 ì—´ ì´ë¦„으로 사용하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. 그러나 제공ìžì˜ ë°ì´í„°ë¥¼
-{@link android.widget.ListView}ì— ë°”ì¸ë”©í•˜ë ¤ë©´
+ <strong>참고:</strong> 제공ìžì— 기본 키가 ê¼­ 있어야 하는 ê²ƒì€ ì•„ë‹ˆê³ ,
+기본 키가 있는 경우 <code>_ID</code>를 ì—´ ì´ë¦„으로 사용하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. 그러나 제공ìžì˜ ë°ì´í„°ë¥¼
+{@link android.widget.ListView}ì— ë°”ì¸ë”©í•˜ë ¤ë©´
ì—´ ì´ë¦„ 중 하나는<code>_ID</code>여야 합니다. ì´ ìš”êµ¬ 사항ì€
<a href="#DisplayResults">쿼리 ê²°ê³¼ 표시</a> ì„¹ì…˜ì— ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</p>
<h3 id="ClientProvider">ì œê³µìž ì•¡ì„¸ìŠ¤</h3>
<p>
- 애플리케ì´ì…˜ì€ 콘í…츠 제공ìžë¡œë¶€í„°ì˜ ë°ì´í„°ì—
-{@link android.content.ContentResolver} í´ë¼ì´ì–¸íЏ 개체로 액세스합니다.
-ì´ ê°œì²´ì—는 ì œê³µìž ê°œì²´ ë‚´ì˜ ê°™ì€ ì´ë¦„ì„ ê°€ì§„ 메서드를 호출하는 메서드가 있습니다.
-ì´ëŠ” {@link android.content.ContentProvider}ì˜ êµ¬ì²´ì ì¸ 하위 í´ëž˜ìФ 중 í•˜ë‚˜ì˜ ì¸ìŠ¤í„´ìŠ¤ìž…ë‹ˆë‹¤.
-{@link android.content.ContentResolver} 메서드는
+ 애플리케ì´ì…˜ì€ 콘í…츠 제공ìžë¡œë¶€í„°ì˜ ë°ì´í„°ì—
+{@link android.content.ContentResolver} í´ë¼ì´ì–¸íЏ 개체로 액세스합니다.
+ì´ ê°œì²´ì—는 ì œê³µìž ê°œì²´ ë‚´ì˜ ê°™ì€ ì´ë¦„ì„ ê°€ì§„ 메서드를 호출하는 메서드가 있습니다.
+ì´ëŠ” {@link android.content.ContentProvider}ì˜ êµ¬ì²´ì ì¸ 하위 í´ëž˜ìФ 중 í•˜ë‚˜ì˜ ì¸ìŠ¤í„´ìŠ¤ìž…ë‹ˆë‹¤.
+{@link android.content.ContentResolver} 메서드는
ì˜êµ¬ì  ì €ìž¥ì†Œì˜ ê¸°ë³¸ì ì¸ "CRUD"(ìƒì„±, 검색, ì—…ë°ì´íЏ ë° ì‚­ì œ) ê¸°ëŠ¥ì„ ì œê³µí•©ë‹ˆë‹¤.
</p>
<p>
í´ë¼ì´ì–¸íЏ 애플리케ì´ì…˜ì˜ 프로세스 ë‚´ì— ìžˆëŠ” {@link android.content.ContentResolver} 개체와
- 제공ìžë¥¼ 소유하는 애플리케ì´ì…˜ ë‚´ì˜ {@link android.content.ContentProvider} 개체가
+ 제공ìžë¥¼ 소유하는 애플리케ì´ì…˜ ë‚´ì˜ {@link android.content.ContentProvider} 개체가
ìžë™ìœ¼ë¡œ 프로세스간 í†µì‹ ì„ ì²˜ë¦¬í•©ë‹ˆë‹¤.
-{@link android.content.ContentProvider} ë˜í•œ
+{@link android.content.ContentProvider} ë˜í•œ
콘í…츠 제공ìžì˜ ë°ì´í„° 리í¬ì§€í† ë¦¬ì™€ ì™¸ë¶€ì— í…Œì´ë¸”로 표시ë˜ëŠ” ë°ì´í„° 모습 사ì´ì—서 ì¶”ìƒí™” 계층 ì—­í• ì„ í•©ë‹ˆë‹¤.
</p>
<p class="note">
- <strong>참고:</strong> 제공ìžì— 액세스하려면 ë³´í†µì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì´
-제공ìžì˜ 매니페스트 파ì¼ì— 있는 특정 ê¶Œí•œì„ ìš”ì²­í•´ì•¼ 합니다. ì´ê²ƒì€
+ <strong>참고:</strong> 제공ìžì— 액세스하려면 ë³´í†µì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì´
+제공ìžì˜ 매니페스트 파ì¼ì— 있는 특정 ê¶Œí•œì„ ìš”ì²­í•´ì•¼ 합니다. ì´ê²ƒì€
<a href="#Permissions">콘í…츠 ì œê³µìž ê¶Œí•œ</a> ì„¹ì…˜ì— ë” ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</p>
<p>
@@ -237,7 +237,7 @@ page.title=콘í…츠 ì œê³µìž ê¸°ë³¸ ì •ë³´
{@link android.content.ContentResolver#query ContentResolver.query()}를 호출하면 ë©ë‹ˆë‹¤.
{@link android.content.ContentResolver#query query()} 메서드는 ì‚¬ìš©ìž ì‚¬ì „ 제공ìžê°€ ì •ì˜í•œ
{@link android.content.ContentProvider#query ContentProvider.query()} 메서드를
-호출합니다. ë‹¤ìŒ ëª‡ ì¤„ì˜ ì½”ë“œëŠ”
+호출합니다. ë‹¤ìŒ ëª‡ ì¤„ì˜ ì½”ë“œëŠ”
{@link android.content.ContentResolver#query ContentResolver.query()} í˜¸ì¶œì„ ë‚˜íƒ€ë‚¸ 것입니다.
<p>
<pre>
@@ -292,26 +292,26 @@ query(Uri,projection,selection,selectionArgs,sortOrder)}ì— ëŒ€í•œ ì¸ìˆ˜ê°€ SQL
<td align="center"><code>sortOrder</code></td>
<td align="center"><code>ORDER BY <em>col,col,...</em></code></td>
<td>
- <code>sortOrder</code>는 반환ëœ
+ <code>sortOrder</code>는 반환ëœ
{@link android.database.Cursor} ë‚´ì— í–‰ì´ ë‚˜íƒ€ë‚˜ëŠ” 순서를 지정합니다.
</td>
</tr>
</table>
<h3 id="ContentURIs">콘í…츠 URI</h3>
<p>
- <strong>콘í…츠 URI</strong>는 제공ìžì—서 ë°ì´í„°ë¥¼ ì‹ë³„하는 URI입니다.
+ <strong>콘í…츠 URI</strong>는 제공ìžì—서 ë°ì´í„°ë¥¼ ì‹ë³„하는 URI입니다.
콘í…츠 URIì—는 ì „ì²´ 제공ìžì˜ ìƒì§•ì ì¸ ì´ë¦„(제공ìžì˜ <strong>권한</strong>)ê³¼
-í…Œì´ë¸”ì„ ê°€ë¦¬í‚¤ëŠ” ì´ë¦„(<strong>경로</strong>)ì´ í¬í•¨ë©ë‹ˆë‹¤.
+í…Œì´ë¸”ì„ ê°€ë¦¬í‚¤ëŠ” ì´ë¦„(<strong>경로</strong>)ì´ í¬í•¨ë©ë‹ˆë‹¤.
ì œê³µìž ë‚´ì˜ í…Œì´ë¸”ì— ì•¡ì„¸ìŠ¤í•˜ê¸° 위해 í´ë¼ì´ì–¸íЏ 메서드를 호출하는 경우,
ê·¸ í…Œì´ë¸”ì— ëŒ€í•œ 콘í…츠 URI는 ì¸ìˆ˜ 중 하나입니다.
</p>
<p>
앞선 몇 ì¤„ì˜ ì½”ë“œì—서 ìƒìˆ˜
-{@link android.provider.UserDictionary.Words#CONTENT_URI}ì—
+{@link android.provider.UserDictionary.Words#CONTENT_URI}ì—
ì‚¬ìš©ìž ì‚¬ì „ì˜ "단어" í…Œì´ë¸”ì˜ ì½˜í…츠 URIê°€ 들어있습니다. {@link android.content.ContentResolver}
개체가 ì´ URIì˜ ê¶Œí•œì„ êµ¬ë¬¸ ë¶„ì„한 다ìŒ, ì´ë¥¼ ì´ìš©í•´ 제공ìžë¥¼ "확ì¸"합니다. 즉 ì´ ê¶Œí•œì„ ì•Œë ¤ì§„ 제공ìžë¡œ ì´ë£¨ì–´ì§„ 시스템 í…Œì´ë¸”ê³¼ 비êµí•˜ëŠ” 것입니다.
-
-그러면 {@link android.content.ContentResolver}ê°€ 쿼리 ì¸ìˆ˜ë¥¼
+
+그러면 {@link android.content.ContentResolver}ê°€ 쿼리 ì¸ìˆ˜ë¥¼
올바른 제공ìžì—게 발송할 수 있습니다.
</p>
<p>
@@ -331,20 +331,20 @@ content://user_dictionary/words
ì´ê²ƒì„ 콘í…츠 URI로 ì‹ë³„합니다.
</p>
<p>
- ëŒ€ë‹¤ìˆ˜ì˜ ì œê³µìžì—서는 URIì˜ ë§¨ ëì— ID ê°’ì„ ì¶”ê°€í•˜ë©´
-í…Œì´ë¸” ë‚´ í•˜ë‚˜ì˜ í–‰ì— ì•¡ì„¸ìŠ¤í•  수 있게 í•´ì¤ë‹ˆë‹¤. 예를 들어 <code>_ID</code>ê°€
+ ëŒ€ë‹¤ìˆ˜ì˜ ì œê³µìžì—서는 URIì˜ ë§¨ ëì— ID ê°’ì„ ì¶”ê°€í•˜ë©´
+í…Œì´ë¸” ë‚´ í•˜ë‚˜ì˜ í–‰ì— ì•¡ì„¸ìŠ¤í•  수 있게 í•´ì¤ë‹ˆë‹¤. 예를 들어 <code>_ID</code>ê°€
ì‚¬ìš©ìž ì‚¬ì „ì˜ <code>4</code>ì¸ í–‰ì„ ê²€ìƒ‰í•˜ë ¤ë©´, ì´ ì½˜í…츠 URI를 사용하면 ë©ë‹ˆë‹¤.
</p>
<pre>
Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
</pre>
<p>
- ì¼ë ¨ì˜ í–‰ì„ ê²€ìƒ‰í•œ ë‹¤ìŒ ê·¸ 중 하나를 ì—…ë°ì´íŠ¸í•˜ê±°ë‚˜ ì‚­ì œí•˜ê³ ìž í•˜ëŠ” 경우 종종 ID ê°’ì„
+ ì¼ë ¨ì˜ í–‰ì„ ê²€ìƒ‰í•œ ë‹¤ìŒ ê·¸ 중 하나를 ì—…ë°ì´íŠ¸í•˜ê±°ë‚˜ ì‚­ì œí•˜ê³ ìž í•˜ëŠ” 경우 종종 ID ê°’ì„
ì´ìš©í•˜ê³¤ 합니다.
</p>
<p class="note">
- <strong>참고:</strong> {@link android.net.Uri}와
-{@link android.net.Uri.Builder} í´ëž˜ìФì—는 문ìžì—´ì—서 잘 구성ëœ(Well-Formed) URI 개체를 구성하기 위한 íŽ¸ì˜ ë©”ì„œë“œê°€ 들어 있습니다.
+ <strong>참고:</strong> {@link android.net.Uri}와
+{@link android.net.Uri.Builder} í´ëž˜ìФì—는 문ìžì—´ì—서 잘 구성ëœ(Well-Formed) URI 개체를 구성하기 위한 íŽ¸ì˜ ë©”ì„œë“œê°€ 들어 있습니다.
{@link android.content.ContentUris}ì—는 URIì— ID ê°’ì„ ì¶”ê°€í•˜ê¸° 위한 íŽ¸ì˜ ë©”ì„œë“œê°€ 들어 있습니다.
ì´ì „ ì¡°ê°ì€ {@link android.content.ContentUris#withAppendedId
withAppendedId()}를 사용하여 UserDictionary 콘í…츠 URIì— ID를 추가합니다.
@@ -358,10 +358,10 @@ withAppendedId()}를 사용하여 UserDictionary 콘í…츠 URIì— ID를 추가í•
ë°©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.
</p>
<p class="note">
- 명확히 나타내기 위해 ì´ ì„¹ì…˜ì˜ ì½”ë“œ ì¡°ê°ì€
-{@link android.content.ContentResolver#query ContentResolver.query()}를 "UI 스레드"ì—서 호출합니다.
+ 명확히 나타내기 위해 ì´ ì„¹ì…˜ì˜ ì½”ë“œ ì¡°ê°ì€
+{@link android.content.ContentResolver#query ContentResolver.query()}를 "UI 스레드"ì—서 호출합니다.
그러나 실제 ì½”ë“œì˜ ê²½ìš° 쿼리는 별ë„ì˜ ìŠ¤ë ˆë“œì—서 비ë™ê¸°ì‹ìœ¼ë¡œ 수행해야 합니다. ì´ë¥¼ 위한 한 가지 ë°©ì‹ìœ¼ë¡œ
-{@link android.content.CursorLoader}
+{@link android.content.CursorLoader}
í´ëž˜ìŠ¤ë¥¼ 쓰는 ê²ƒì„ ë“¤ 수 있습니다. ì´ ë‚´ìš©ì€ <a href="{@docRoot}guide/components/loaders.html">
로ë”</a> ê°€ì´ë“œì— ë” ìžì„¸ížˆ 설명ë˜ì–´ 있습니다. ë˜í•œ, ì´ ì½”ë“œ ì¤„ì€ ì¡°ê°ì¼ ë¿ì´ë©° 애플리케ì´ì…˜ì„ ì „ì²´ì ìœ¼ë¡œ 표시한 ê²ƒì´ ì•„ë‹™ë‹ˆë‹¤.
@@ -380,32 +380,32 @@ withAppendedId()}를 사용하여 UserDictionary 콘í…츠 URIì— ID를 추가í•
<h3 id="RequestPermissions">ì½ê¸° 액세스 권한 요청</h3>
<p>
제공ìžì—서 ë°ì´í„°ë¥¼ 검색하려면 애플리케ì´ì…˜ì— 해당 제공ìžì— 대한 "ì½ê¸° 액세스 권한"ì´ í•„ìš”í•©ë‹ˆë‹¤.
- 런타임ì—는 ì´ ê¶Œí•œì„ ìš”ì²­í•  수 없습니다. 대신 ì´ ê¶Œí•œì´ í•„ìš”í•˜ë‹¤ëŠ” ê²ƒì„ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ë‚˜íƒ€ë‚´ì•¼ 합니다. ì´ë•Œ,
+ 런타임ì—는 ì´ ê¶Œí•œì„ ìš”ì²­í•  수 없습니다. 대신 ì´ ê¶Œí•œì´ í•„ìš”í•˜ë‹¤ëŠ” ê²ƒì„ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ë‚˜íƒ€ë‚´ì•¼ 합니다. ì´ë•Œ,
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
요소와 제공ìžê°€ ì •ì˜í•œ 정확한 권한 ì´ë¦„ì„ ì‚¬ìš©í•˜ë©´ ë©ë‹ˆë‹¤.
- 매니페스트ì—서 ì´ ìš”ì†Œë¥¼ 지정하는 ê²ƒì€ ì‚¬ì‹¤ìƒ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ 위해 ì´ ê¶Œí•œì„ "요청"하는 것과
+ 매니페스트ì—서 ì´ ìš”ì†Œë¥¼ 지정하는 ê²ƒì€ ì‚¬ì‹¤ìƒ ì• í”Œë¦¬ì¼€ì´ì…˜ì„ 위해 ì´ ê¶Œí•œì„ "요청"하는 것과
같습니다. 사용ìžê°€ 애플리케ì´ì…˜ì„ 설치할 때면, ì´ ìš”ì²­ì„ ì•”ì‹œì ìœ¼ë¡œ 허용하게 ë©ë‹ˆë‹¤.
</p>
<p>
- 사용 ì¤‘ì¸ ì œê³µìžì— 대한 ì½ê¸° 액세스 ê¶Œí•œì˜ ì •í™•í•œ ì´ë¦„ê³¼ 해당 제공ìžê°€ 사용하는
+ 사용 ì¤‘ì¸ ì œê³µìžì— 대한 ì½ê¸° 액세스 ê¶Œí•œì˜ ì •í™•í•œ ì´ë¦„ê³¼ 해당 제공ìžê°€ 사용하는
다른 액세스 ê¶Œí•œì˜ ì´ë¦„ì„ ì°¾ì•„ë³´ë ¤ë©´ 제공ìžì˜ 문서를 살펴보십시오.
</p>
<p>
- 제공ìžì— 액세스하는 ë° ìžˆì–´ ê¶Œí•œì´ ì–´ë–¤ ì—­í• ì„ í•˜ëŠ”ì§€ëŠ”
+ 제공ìžì— 액세스하는 ë° ìžˆì–´ ê¶Œí•œì´ ì–´ë–¤ ì—­í• ì„ í•˜ëŠ”ì§€ëŠ”
<a href="#Permissions">콘í…츠 ì œê³µìž ê¶Œí•œ</a> ì„¹ì…˜ì— ë” ìžì„¸í•˜ê²Œ 설명ë˜ì–´ 있습니다.
</p>
<p>
- ì‚¬ìš©ìž ì‚¬ì „ 제공ìžëŠ”
-<code>android.permission.READ_USER_DICTIONARY</code> ê¶Œí•œì„ ìžì‹ ì˜ 매니페스트 파ì¼ì— ì •ì˜í•©ë‹ˆë‹¤. ë”°ë¼ì„œ 해당 제공ìžì—서
+ ì‚¬ìš©ìž ì‚¬ì „ 제공ìžëŠ”
+<code>android.permission.READ_USER_DICTIONARY</code> ê¶Œí•œì„ ìžì‹ ì˜ 매니페스트 파ì¼ì— ì •ì˜í•©ë‹ˆë‹¤. ë”°ë¼ì„œ 해당 제공ìžì—서
ì½ê¸° ìž‘ì—…ì„ í•˜ê³ ìž í•˜ëŠ” 애플리케ì´ì…˜ì€ 반드시 ì´ ê¶Œí•œì„ ìš”ì²­í•´ì•¼ 합니다.
</p>
<!-- Constructing the query -->
<h3 id="Query">쿼리 구성</h3>
<p>
- 제공ìžì—서 ë°ì´í„°ë¥¼ 검색할 때 ë‹¤ìŒ ë‹¨ê³„ëŠ” 쿼리를 구성하는 것입니다. 다ìŒì˜ 첫 번째 ì¡°ê°ì€
+ 제공ìžì—서 ë°ì´í„°ë¥¼ 검색할 때 ë‹¤ìŒ ë‹¨ê³„ëŠ” 쿼리를 구성하는 것입니다. 다ìŒì˜ 첫 번째 ì¡°ê°ì€
ì‚¬ìš©ìž ì‚¬ì „ 제공ìžì— 액세스하는 ë° í•„ìš”í•œ 몇 가지 변수를 ì •ì˜í•œ 것입니다.
</p>
<pre class="prettyprint">
@@ -426,9 +426,9 @@ String[] mSelectionArgs = {""};
</pre>
<p>
- ë‹¤ìŒ ì¡°ê°ì€ ì‚¬ìš©ìž ì‚¬ì „ 제공ìžë¥¼ 예시로 사용하여
+ ë‹¤ìŒ ì¡°ê°ì€ ì‚¬ìš©ìž ì‚¬ì „ 제공ìžë¥¼ 예시로 사용하여
{@link android.content.ContentResolver#query ContentResolver.query()}를
- 사용하는 ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다. ì œê³µìž í´ë¼ì´ì–¸íЏ 쿼리는 SQL 쿼리와 비슷하며,
+ 사용하는 ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다. ì œê³µìž í´ë¼ì´ì–¸íЏ 쿼리는 SQL 쿼리와 비슷하며,
반환할 ì—´ ì§‘í•©ê³¼ ì„ íƒ ê¸°ì¤€ ì§‘í•©, 그리고 ì •ë ¬ 순서가 ì´ ì•ˆì— ë“¤ì–´ 있습니다.
</p>
<p>
@@ -438,13 +438,13 @@ String[] mSelectionArgs = {""};
<p>
검색할 í–‰ì„ ë‚˜íƒ€ë‚´ëŠ” ì‹ì€ ì„ íƒ ì ˆê³¼ ì„ íƒ ì¸ìˆ˜ë¡œ ë¶„í• ë˜ì–´ 있습니다.
ì„ íƒ ì ˆì€ ë…¼ë¦¬ì™€ 부울 ì‹, ì—´ ì´ë¦„ê³¼ ê°’
-(변수 <code>mSelectionClause</code>)ì„ ì¡°í•©í•œ 것입니다.
-값 대신 대체 가능한 매개변수 <code>?</code>를 지정하면,
+(변수 <code>mSelectionClause</code>)ì„ ì¡°í•©í•œ 것입니다.
+값 대신 대체 가능한 매개변수 <code>?</code>를 지정하면,
쿼리 메서드가 ê·¸ ê°’ì„ ì„ íƒ ì¸ìˆ˜ ë°°ì—´ì—서 검색합니다(변수 <code>mSelectionArgs</code>).
</p>
<p>
- ë‹¤ìŒ ì¡°ê°ì˜ 경우, 사용ìžê°€ 단어를 입력하지 않으면 ì„ íƒ ì ˆì´
-<code>null</code>로 설정ë˜ê³ , 쿼리는 ì œê³µìž ì•ˆì˜ ëª¨ë“  단어를 반환합니다.
+ ë‹¤ìŒ ì¡°ê°ì˜ 경우, 사용ìžê°€ 단어를 입력하지 않으면 ì„ íƒ ì ˆì´
+<code>null</code>로 설정ë˜ê³ , 쿼리는 ì œê³µìž ì•ˆì˜ ëª¨ë“  단어를 반환합니다.
사용ìžê°€ 단어를 입력하면 ì„ íƒ ì ˆì€ <code>UserDictionary.Words.WORD + " = ?"</code>로 설정ë˜ë©°
ì„ íƒ ì¸ìˆ˜ì˜ 첫 번째 요소가 사용ìžê°€ 입력한 단어로 설정ë©ë‹ˆë‹¤.
</p>
@@ -514,7 +514,7 @@ SELECT _ID, word, locale FROM words WHERE word = &lt;userinput&gt; ORDER BY word
</p>
<h4 id="Injection">ì•…ì˜ì ì¸ ìž…ë ¥ì— ëŒ€í•œ 보호</h4>
<p>
- 콘í…츠 제공ìžê°€ 관리하는 ë°ì´í„°ê°€ SQL ë°ì´í„°ë² ì´ìŠ¤ì— ìžˆëŠ” 경우,
+ 콘í…츠 제공ìžê°€ 관리하는 ë°ì´í„°ê°€ SQL ë°ì´í„°ë² ì´ìŠ¤ì— ìžˆëŠ” 경우,
ì›ì‹œ SQL ë¬¸ì— ì™¸ë¶€ì˜ ì‹ ë¢°í•  수 없는 ë°ì´í„°ë¥¼ í¬í•¨ì‹œí‚¤ë©´ SQL ì‚½ìž…ì„ ì´ˆëž˜í•  수 있습니다.
</p>
<p>
@@ -526,17 +526,17 @@ String mSelectionClause = "var = " + mUserInput;
</pre>
<p>
ì´ë ‡ê²Œ 하면 사용ìžë¡œ 하여금 ì—¬ëŸ¬ë¶„ì˜ SQL ë¬¸ì— ì•…ì˜ì ì¸ SQLì„ ì—°ê²°í•  수 있ë„ë¡ í—ˆìš©í•©ë‹ˆë‹¤.
- 예를 들어 사용ìžê°€ <code>mUserInput</code>ì— ëŒ€í•´ "nothing; DROP TABLE *;"ì„ ìž…ë ¥í•  수 있습니다.
-그러면 ê·¸ 결과로 ì„ íƒ ì ˆ <code>var = nothing; DROP TABLE *;</code>ì´ ë‚˜ì˜µë‹ˆë‹¤.
-ì„ íƒ ì ˆì´ ì¼ì¢…ì˜ SQL 문으로 취급ë˜ì—ˆê¸° ë•Œë¬¸ì— ì œê³µìžê°€ 기본 SQLite ë°ì´í„°ë² ì´ìФì—서 í…Œì´ë¸”ì„
-ëª¨ë‘ ì‚­ì œí•˜ëŠ” 결과를 ë‚³ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(제공ìžê°€ <a href="http://en.wikipedia.org/wiki/SQL_injection">SQL 삽입</a>
+ 예를 들어 사용ìžê°€ <code>mUserInput</code>ì— ëŒ€í•´ "nothing; DROP TABLE *;"ì„ ìž…ë ¥í•  수 있습니다.
+그러면 ê·¸ 결과로 ì„ íƒ ì ˆ <code>var = nothing; DROP TABLE *;</code>ì´ ë‚˜ì˜µë‹ˆë‹¤.
+ì„ íƒ ì ˆì´ ì¼ì¢…ì˜ SQL 문으로 취급ë˜ì—ˆê¸° ë•Œë¬¸ì— ì œê³µìžê°€ 기본 SQLite ë°ì´í„°ë² ì´ìФì—서 í…Œì´ë¸”ì„
+ëª¨ë‘ ì‚­ì œí•˜ëŠ” 결과를 ë‚³ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(제공ìžê°€ <a href="http://en.wikipedia.org/wiki/SQL_injection">SQL 삽입</a>
시ë„를 잡아내ë„ë¡ ì„¤ì •ëœ ê²½ìš°ëŠ” 예외입니다).
</p>
<p>
- ì´ ë¬¸ì œë¥¼ 피하려면 <code>?</code>를 대체 가능한 매개변수로 사용하는 ì„ íƒ ì ˆê³¼,
+ ì´ ë¬¸ì œë¥¼ 피하려면 <code>?</code>를 대체 가능한 매개변수로 사용하는 ì„ íƒ ì ˆê³¼,
별ë„ì˜ ì„ íƒ ì¸ìˆ˜ ë°°ì—´ì„ ì‚¬ìš©í•˜ë©´ ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면, ì‚¬ìš©ìž ìž…ë ¥ì´ SQL ë¬¸ì˜ ì¼ë¶€ë¡œ í•´ì„ë˜ê¸°ë³´ë‹¤ ì¿¼ë¦¬ì— ì§ì ‘ ë°”ì¸ë”©ë©ë‹ˆë‹¤.
- ì´ê²ƒì€ SQL로 취급ë˜ì§€ 않기 ë•Œë¬¸ì— ì‚¬ìš©ìž ìž…ë ¥ì´ ì•…ì˜ì ì¸ SQLì„ ì‚½ìž…í•  수 없습니다.
+ ì´ê²ƒì€ SQL로 취급ë˜ì§€ 않기 ë•Œë¬¸ì— ì‚¬ìš©ìž ìž…ë ¥ì´ ì•…ì˜ì ì¸ SQLì„ ì‚½ìž…í•  수 없습니다.
ì‚¬ìš©ìž ìž…ë ¥ì„ í¬í•¨í•˜ëŠ” ë° ì—°ê²°ì„ ì‚¬ìš©í•˜ëŠ” 대신 ë‹¤ìŒ ì„ íƒ ì ˆì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
</p>
<pre>
@@ -558,35 +558,35 @@ String[] selectionArgs = {""};
selectionArgs[0] = mUserInput;
</pre>
<p>
- <code>?</code>를 대체 가능한 매개변수로 사용하는 ì„ íƒ ì ˆê³¼
-ì„ íƒ ì¸ìˆ˜ ë°°ì—´ì„ ì‚¬ìš©í•˜ëŠ” ê²ƒì´ ì„ íƒì„ 지정하는 ë° ì„ í˜¸ë˜ëŠ” 방법입니다.
+ <code>?</code>를 대체 가능한 매개변수로 사용하는 ì„ íƒ ì ˆê³¼
+ì„ íƒ ì¸ìˆ˜ ë°°ì—´ì„ ì‚¬ìš©í•˜ëŠ” ê²ƒì´ ì„ íƒì„ 지정하는 ë° ì„ í˜¸ë˜ëŠ” 방법입니다.
ì´ëŠ” 제공ìžê°€ SQL ë°ì´í„°ë² ì´ìФ ê¸°ë°˜ì´ ì•„ë‹ ë•Œì—ë„ ë§ˆì°¬ê°€ì§€ìž…ë‹ˆë‹¤.
</p>
<!-- Displaying the results -->
<h3 id="DisplayResults">쿼리 결과 표시</h3>
<p>
- {@link android.content.ContentResolver#query ContentResolver.query()}
+ {@link android.content.ContentResolver#query ContentResolver.query()}
í´ë¼ì´ì–¸íЏ 메서드는 언제나 쿼리 ì„ íƒ ê¸°ì¤€ê³¼ ì¼ì¹˜í•˜ëŠ” í–‰ì— ëŒ€í•´ 쿼리 프로ì ì…˜ì´ 지정한 ì—´ì„ í¬í•¨í•˜ëŠ”
-{@link android.database.Cursor}를 반환합니다.
+{@link android.database.Cursor}를 반환합니다.
{@link android.database.Cursor} 개체가 ìžì‹ ì´ í¬í•¨í•œ 행과 ì—´ì— ë¬´ìž‘ìœ„ ì½ê¸° 액세스를 제공합니다.
- {@link android.database.Cursor} 메서드를 사용하면 í–‰ì„ ê²°ê³¼ì—서 반복할 수 있고,
+ {@link android.database.Cursor} 메서드를 사용하면 í–‰ì„ ê²°ê³¼ì—서 반복할 수 있고,
ê° ì—´ì˜ ë°ì´í„° ìœ í˜•ì„ ê²°ì •í•˜ë©° ì—´ì—서 ë°ì´í„°ë¥¼ 꺼내거나 ê²°ê³¼ì˜ ë‹¤ë¥¸ ì†ì„±ì„ 검토할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
ì¼ë¶€ {@link android.database.Cursor} êµ¬í˜„ì€ ì œê³µìžì˜ ë°ì´í„°ê°€ ë³€ê²½ë  ê²½ìš°,
-{@link android.database.Cursor}ê°€ ë³€ê²½ë  ë•Œ ê´€ì°°ìž ê°œì²´ ë‚´ì˜ ë©”ì„œë“œë¥¼ 트리거하는 경우
+{@link android.database.Cursor}ê°€ ë³€ê²½ë  ë•Œ ê´€ì°°ìž ê°œì²´ ë‚´ì˜ ë©”ì„œë“œë¥¼ 트리거하는 경우
ë˜ëŠ” ë‘ ê°€ì§€ê°€ 한 ë²ˆì— ë°œìƒí•  경우 ìžë™ìœ¼ë¡œ 개체를 ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤.
</p>
<p class="note">
- <strong>참고:</strong> 제공ìžëŠ” 쿼리를 수행하는 ê°œì²´ì˜ ì„±ê²©ì„ ê·¼ê±°ë¡œ
-ì—´ì— ëŒ€í•œ 액세스를 제한할 수 있습니다. 예를 들어 ì—°ë½ì²˜ 제공ìžëŠ” ë™ê¸°í™” ì–´ëŒ‘í„°ë¡œì˜ ëª‡ëª‡ ì—´ì— ëŒ€í•œ 액세스를 제한합니다.
+ <strong>참고:</strong> 제공ìžëŠ” 쿼리를 수행하는 ê°œì²´ì˜ ì„±ê²©ì„ ê·¼ê±°ë¡œ
+ì—´ì— ëŒ€í•œ 액세스를 제한할 수 있습니다. 예를 들어 ì—°ë½ì²˜ 제공ìžëŠ” ë™ê¸°í™” ì–´ëŒ‘í„°ë¡œì˜ ëª‡ëª‡ ì—´ì— ëŒ€í•œ 액세스를 제한합니다.
ì´ë ‡ê²Œ 해야 액티비티 ë˜ëŠ” ì„œë¹„ìŠ¤ì— ì—´ì„ ë°˜í™˜í•˜ì§€ 않기 때문입니다.
</p>
<p>
- ì„ íƒ ê¸°ì¤€ì— ì¼ì¹˜í•˜ëŠ” í–‰ì´ ì—†ìœ¼ë©´, 제공ìžëŠ”
-{@link android.database.Cursor} 개체를 반환합니다. ì´ ê°œì²´ì˜
+ ì„ íƒ ê¸°ì¤€ì— ì¼ì¹˜í•˜ëŠ” í–‰ì´ ì—†ìœ¼ë©´, 제공ìžëŠ”
+{@link android.database.Cursor} 개체를 반환합니다. ì´ ê°œì²´ì˜
{@link android.database.Cursor#getCount Cursor.getCount()}는 0(빈 커서)입니다.
</p>
<p>
- ë‚´ë¶€ 오류가 ë°œìƒí•˜ëŠ” 경우, 쿼리 결과는 특정 제공ìžì— ë”°ë¼ ë‹¬ë¼ì§‘니다.
+ ë‚´ë¶€ 오류가 ë°œìƒí•˜ëŠ” 경우, 쿼리 결과는 특정 제공ìžì— ë”°ë¼ ë‹¬ë¼ì§‘니다.
<code>null</code>ì„ ë°˜í™˜í•˜ê¸°ë¡œ ì„ íƒí•  ìˆ˜ë„ ìžˆê³ , {@link java.lang.Exception}ì„ ë°œìƒì‹œí‚¬ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
</p>
<p>
@@ -595,9 +595,9 @@ selectionArgs[0] = mUserInput;
연결하는 것입니다.
</p>
<p>
- ë‹¤ìŒ ì¡°ê°ì€ ì´ì „ ì¡°ê°ìœ¼ë¡œë¶€í„° 코드를 ê³„ì† ì´ì–´ê°€ëŠ” 것입니다.
+ ë‹¤ìŒ ì¡°ê°ì€ ì´ì „ ì¡°ê°ìœ¼ë¡œë¶€í„° 코드를 ê³„ì† ì´ì–´ê°€ëŠ” 것입니다.
ì´ëŠ” 해당 쿼리가 검색한 {@link android.database.Cursor}ê°€ 들어 있는
-{@link android.widget.SimpleCursorAdapter} 개체를 ìƒì„±í•˜ë©°, ì´ ê°œì²´ë¥¼
+{@link android.widget.SimpleCursorAdapter} 개체를 ìƒì„±í•˜ë©°, ì´ ê°œì²´ë¥¼
{@link android.widget.ListView}ì— ëŒ€í•œ 어댑터로 설정합니다.
</p>
<pre class="prettyprint">
@@ -626,7 +626,7 @@ mWordList.setAdapter(mCursorAdapter);
<p class="note">
<strong>참고:</strong> {@link android.database.Cursor}로 {@link android.widget.ListView}를 뒷받침하려면,
ì»¤ì„œì— <code>_ID</code>ë¼ëŠ” ì—´ì´ í¬í•¨ë˜ì–´ì•¼ 합니다.
- ì´ê²ƒ ë•Œë¬¸ì— ì´ì „ì— í‘œì‹œëœ ì¿¼ë¦¬ê°€ "단어" í…Œì´ë¸”ì— ëŒ€í•˜ì—¬ <code>_ID</code> ì—´ì„
+ ì´ê²ƒ ë•Œë¬¸ì— ì´ì „ì— í‘œì‹œëœ ì¿¼ë¦¬ê°€ "단어" í…Œì´ë¸”ì— ëŒ€í•˜ì—¬ <code>_ID</code> ì—´ì„
검색하며, {@link android.widget.ListView}ê°€ ì´ë¥¼ 표시하지 않ë”ë¼ë„ 무관합니다.
ì´ ì œí•œì€ ëŒ€ë¶€ë¶„ì˜ ì œê³µìžì— ê° í…Œì´ë¸”ì— ëŒ€í•œ <code>_ID</code> ì—´ì´ ìžˆëŠ” ì´ìœ ë¥¼ ì„¤ëª…í•´ì£¼ê¸°ë„ í•©ë‹ˆë‹¤.
@@ -635,7 +635,7 @@ mWordList.setAdapter(mCursorAdapter);
<!-- Getting data from query results -->
<h3 id="GettingResults">쿼리 ê²°ê³¼ì—서 ë°ì´í„° 가져오기</h3>
<p>
- 쿼리 결과를 단순히 표시만 하는 것보다 ì´ë¥¼ 다른 ìž‘ì—…ì— ì‚¬ìš©í•  수 있습니다.
+ 쿼리 결과를 단순히 표시만 하는 것보다 ì´ë¥¼ 다른 ìž‘ì—…ì— ì‚¬ìš©í•  수 있습니다.
예를 들어, ì‚¬ìš©ìž ì‚¬ì „ì—서 ì² ìžë¥¼ 검색한 ë‹¤ìŒ ì´ê²ƒì„ 다른 ì œê³µìž ë‚´ì—서 찾아볼 수 있습니다.
ì´ë ‡ê²Œ 하려면, {@link android.database.Cursor}ì—서 í–‰ì„ ê³„ì† ë°˜ë³µí•˜ë©´ ë©ë‹ˆë‹¤.
</p>
@@ -672,10 +672,10 @@ if (mCursor != null) {
}
</pre>
<p>
- {@link android.database.Cursor} 구현ì—는
-여러 ê°œì˜ "가져오기" 메서드가 들어 있어 개체로부터 여러 가지 ìœ í˜•ì˜ ë°ì´í„°ë¥¼ 검색합니다. 예를 들어 ì´ì „ ì¡°ê°ì—서는
-{@link android.database.Cursor#getString getString()}ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
-여기ì—는 해당 ì—´ì˜ ë°ì´í„° ìœ í˜•ì„ ë‚˜íƒ€ë‚´ëŠ” ê°’ì„ ë°˜í™˜í•˜ëŠ”
+ {@link android.database.Cursor} 구현ì—는
+여러 ê°œì˜ "가져오기" 메서드가 들어 있어 개체로부터 여러 가지 ìœ í˜•ì˜ ë°ì´í„°ë¥¼ 검색합니다. 예를 들어 ì´ì „ ì¡°ê°ì—서는
+{@link android.database.Cursor#getString getString()}ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
+여기ì—는 해당 ì—´ì˜ ë°ì´í„° ìœ í˜•ì„ ë‚˜íƒ€ë‚´ëŠ” ê°’ì„ ë°˜í™˜í•˜ëŠ”
{@link android.database.Cursor#getType getType()} ë©”ì„œë“œë„ ìžˆìŠµë‹ˆë‹¤.
</p>
@@ -683,33 +683,33 @@ if (mCursor != null) {
<!-- Requesting permissions -->
<h2 id="Permissions">콘í…츠 ì œê³µìž ê¶Œí•œ</h2>
<p>
- 제공ìžì˜ 애플리케ì´ì…˜ì€ 해당 제공ìžì˜ ë°ì´í„°ì— 액세스하려면 다른 애플리케ì´ì…˜ì´ 반드시 가지고 있어야 하는
-ê¶Œí•œì„ ì§€ì •í•  수 있습니다. ì´ì™€ ê°™ì€ ê¶Œí•œì„ í†µí•´ 사용ìžëŠ” 한 애플리케ì´ì…˜ì´ ì–´ëŠ ë°ì´í„°ì— 액세스하려 시ë„í• ì§€
-알 수 있습니다. 다른 애플리케ì´ì…˜ì€ 제공ìžì˜ 요구 ì‚¬í•­ì„ ê·¼ê±°ë¡œ 해당 제공ìžì— 액세스하기 위해 필요한
+ 제공ìžì˜ 애플리케ì´ì…˜ì€ 해당 제공ìžì˜ ë°ì´í„°ì— 액세스하려면 다른 애플리케ì´ì…˜ì´ 반드시 가지고 있어야 하는
+ê¶Œí•œì„ ì§€ì •í•  수 있습니다. ì´ì™€ ê°™ì€ ê¶Œí•œì„ í†µí•´ 사용ìžëŠ” 한 애플리케ì´ì…˜ì´ ì–´ëŠ ë°ì´í„°ì— 액세스하려 시ë„í• ì§€
+알 수 있습니다. 다른 애플리케ì´ì…˜ì€ 제공ìžì˜ 요구 ì‚¬í•­ì„ ê·¼ê±°ë¡œ 해당 제공ìžì— 액세스하기 위해 필요한
ê¶Œí•œì„ ìš”ì²­í•©ë‹ˆë‹¤. 최종 사용ìžëŠ” 애플리케ì´ì…˜ì„ 설치할 때 ìš”ì²­ëœ ê¶Œí•œì„ ë³´ê²Œ ë©ë‹ˆë‹¤.
</p>
<p>
- 제공ìžì˜ 애플리케ì´ì…˜ì´ 아무 ê¶Œí•œë„ ì§€ì •í•˜ì§€ ì•Šì€ ê²½ìš°, 다른 애플리케ì´ì…˜ì€ 해당 제공ìžì˜
-ë°ì´í„°ì— 액세스할 수 없습니다. 그러나 제공ìžì˜ 애플리케ì´ì…˜ ë‚´ì— ìžˆëŠ” 구성 요소는
+ 제공ìžì˜ 애플리케ì´ì…˜ì´ 아무 ê¶Œí•œë„ ì§€ì •í•˜ì§€ ì•Šì€ ê²½ìš°, 다른 애플리케ì´ì…˜ì€ 해당 제공ìžì˜
+ë°ì´í„°ì— 액세스할 수 없습니다. 그러나 제공ìžì˜ 애플리케ì´ì…˜ ë‚´ì— ìžˆëŠ” 구성 요소는
ì§€ì •ëœ ê¶Œí•œê³¼ 무관하게 í•­ìƒ ì½ê¸° ë° ì“°ê¸° 액세스 ê¶Œí•œì„ ëª¨ë‘ ê°€ì§€ê³  있습니다.
</p>
<p>
- ì´ì „ì— ì–¸ê¸‰í•œ 것과 ê°™ì´ ì‚¬ìš©ìž ì‚¬ì „ 제공ìžì—서 ë°ì´í„°ë¥¼ 검색하려면
+ ì´ì „ì— ì–¸ê¸‰í•œ 것과 ê°™ì´ ì‚¬ìš©ìž ì‚¬ì „ 제공ìžì—서 ë°ì´í„°ë¥¼ 검색하려면
<code>android.permission.READ_USER_DICTIONARY</code> ê¶Œí•œì´ í•„ìš”í•©ë‹ˆë‹¤.
ì´ ì œê³µìžì—게는 ë°ì´í„° 삽입, ì—…ë°ì´íЏ ë˜ëŠ” ì‚­ì œì— ê°ê° 별ë„ì˜ <code>android.permission.WRITE_USER_DICTIONARY</code>
ê¶Œí•œì´ ìžˆìŠµë‹ˆë‹¤.
</p>
<p>
- 제공ìžì— 액세스하는 ë° í•„ìš”í•œ ê¶Œí•œì„ ì–»ìœ¼ë ¤ë©´ 애플리케ì´ì…˜ì€
+ 제공ìžì— 액세스하는 ë° í•„ìš”í•œ ê¶Œí•œì„ ì–»ìœ¼ë ¤ë©´ 애플리케ì´ì…˜ì€
ìžì‹ ì˜ 매니페스트 파ì¼ì— 있는 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
-으로 그러한 ê¶Œí•œì„ ìš”ì²­í•©ë‹ˆë‹¤. Android 패키지 관리ìžê°€ 애플리케ì´ì…˜ì„ 설치하는 경우,
+으로 그러한 ê¶Œí•œì„ ìš”ì²­í•©ë‹ˆë‹¤. Android 패키지 관리ìžê°€ 애플리케ì´ì…˜ì„ 설치하는 경우,
사용ìžëŠ” 애플리케ì´ì…˜ì´ 요청하는 ê¶Œí•œì„ ëª¨ë‘ ìŠ¹ì¸í•´ì•¼ 합니다. 사용ìžê°€ ì´ë¥¼ ëª¨ë‘ ìŠ¹ì¸í•˜ë©´
패키지 관리ìžê°€ 설치를 계ì†í•˜ì§€ë§Œ, 사용ìžê°€ ì´ë¥¼ 승ì¸í•˜ì§€ 않으면 패키지 관리ìžëŠ” 설치를 중단합니다.
</p>
<p>
-
+
ë‹¤ìŒ <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
요소는 ì‚¬ìš©ìž ì‚¬ì „ 제공ìžì— ì½ê¸° 액세스 ê¶Œí•œì„ ìš”ì²­í•˜ëŠ” 것입니다.
</p>
@@ -717,7 +717,7 @@ if (mCursor != null) {
&lt;uses-permission android:name="android.permission.READ_USER_DICTIONARY"&gt;
</pre>
<p>
- ì œê³µìž ì•¡ì„¸ìŠ¤ ê¶Œí•œì´ ë¯¸ì¹˜ëŠ” ì˜í–¥ì€
+ ì œê³µìž ì•¡ì„¸ìŠ¤ ê¶Œí•œì´ ë¯¸ì¹˜ëŠ” ì˜í–¥ì€
<a href="{@docRoot}guide/topics/security/security.html">보안 ë° ê¶Œí•œ</a> ê°€ì´ë“œì— 좀 ë” ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</p>
@@ -725,15 +725,15 @@ if (mCursor != null) {
<!-- Inserting, Updating, and Deleting Data -->
<h2 id="Modifications">ë°ì´í„° 삽입, ì—…ë°ì´íЏ ë° ì‚­ì œ</h2>
<p>
- 제공ìžë¡œë¶€í„° ë°ì´í„°ë¥¼ 검색하는 것과 ê°™ì€ ë°©ì‹ìœ¼ë¡œ, ë°ì´í„°ë¥¼ 수정할 때ì—ë„ ì œê³µìž í´ë¼ì´ì–¸íŠ¸ì™€ 제공ìžì˜
+ 제공ìžë¡œë¶€í„° ë°ì´í„°ë¥¼ 검색하는 것과 ê°™ì€ ë°©ì‹ìœ¼ë¡œ, ë°ì´í„°ë¥¼ 수정할 때ì—ë„ ì œê³µìž í´ë¼ì´ì–¸íŠ¸ì™€ 제공ìžì˜
{@link android.content.ContentProvider} 사ì´ì˜ ìƒí˜¸ìž‘ìš©ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
- {@link android.content.ContentResolver}ì˜ ë©”ì„œë“œë¥¼ 호출하면서
-{@link android.content.ContentProvider}ì˜ ìƒì‘하는 메서드로 ì „ë‹¬ëœ ì¸ìˆ˜ë¥¼ 사용합니다.
+ {@link android.content.ContentResolver}ì˜ ë©”ì„œë“œë¥¼ 호출하면서
+{@link android.content.ContentProvider}ì˜ ìƒì‘하는 메서드로 ì „ë‹¬ëœ ì¸ìˆ˜ë¥¼ 사용합니다.
제공ìžì™€ 제공ìžì˜ í´ë¼ì´ì–¸íŠ¸ê°€ 보안과 프로세스간 í†µì‹ ì„ ìžë™ìœ¼ë¡œ 처리합니다.
</p>
<h3 id="Inserting">ë°ì´í„° 삽입</h3>
<p>
- ë°ì´í„°ë¥¼ ì œê³µìž ì•ˆìœ¼ë¡œ 삽입하려면,
+ ë°ì´í„°ë¥¼ ì œê³µìž ì•ˆìœ¼ë¡œ 삽입하려면,
{@link android.content.ContentResolver#insert ContentResolver.insert()}
메서드를 호출합니다. ì´ ë©”ì„œë“œëŠ” 제공ìžì— 새로운 í–‰ì„ ì‚½ìž…í•˜ê³  해당 ì—´ì— ëŒ€í•œ 콘í…츠 URI를 반환합니다.
ì´ ì¡°ê°ì€ ì‚¬ìš©ìž ì‚¬ì „ 제공ìžì— 새 단어를 삽입하는 ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다.
@@ -763,8 +763,8 @@ mNewUri = getContentResolver().insert(
</pre>
<p>
새로운 í–‰ì— ëŒ€í•œ ë°ì´í„°ëŠ” ë‹¨ì¼ í–‰ 커서와 형태가 유사한 ë‹¨ì¼ {@link android.content.ContentValues} 개체로
-ì´ë™í•©ë‹ˆë‹¤. ì´ ê°œì²´ ë‚´ì˜ ì—´ì€ ëª¨ë‘ ê°™ì€ ë°ì´í„° ìœ í˜•ì„ ê°€ì§€ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤.
-ë˜í•œ 아예 ê°’ì„ ì§€ì •í•˜ê³  ì‹¶ì§€ ì•Šì€ ê²½ìš°ë¼ë©´ ì—´ì„ <code>null</code>로 설정할 수 있습니다.
+ì´ë™í•©ë‹ˆë‹¤. ì´ ê°œì²´ ë‚´ì˜ ì—´ì€ ëª¨ë‘ ê°™ì€ ë°ì´í„° ìœ í˜•ì„ ê°€ì§€ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤.
+ë˜í•œ 아예 ê°’ì„ ì§€ì •í•˜ê³  ì‹¶ì§€ ì•Šì€ ê²½ìš°ë¼ë©´ ì—´ì„ <code>null</code>로 설정할 수 있습니다.
ì´ë•Œ {@link android.content.ContentValues#putNull ContentValues.putNull()}ì„ ì‚¬ìš©í•˜ë©´ ë©ë‹ˆë‹¤.
</p>
<p>
@@ -790,11 +790,11 @@ content://user_dictionary/words/&lt;id_value&gt;
</p>
<h3 id="Updating">ë°ì´í„° ì—…ë°ì´íЏ</h3>
<p>
- í–‰ì„ ì—…ë°ì´íŠ¸í•˜ë ¤ë©´ ì—…ë°ì´íŠ¸ëœ ê°’ê³¼ 함께 {@link android.content.ContentValues} 개체를 사용합니다.
+ í–‰ì„ ì—…ë°ì´íŠ¸í•˜ë ¤ë©´ ì—…ë°ì´íŠ¸ëœ ê°’ê³¼ 함께 {@link android.content.ContentValues} 개체를 사용합니다.
ì´ë•Œ ê°’ì€ ì‚½ìž…í•  때와 똑같고, ì„ íƒ ê¸°ì¤€ì€ ì¿¼ë¦¬í•  때와 같습니다.
사용하는 í´ë¼ì´ì–¸íЏ 메서드는
-{@link android.content.ContentResolver#update ContentResolver.update()}입니다.
-ê°’ì„ ì¶”ê°€í•˜ëŠ” ê²ƒì€ ì—…ë°ì´íЏ ì¤‘ì¸ ì—´ì— ëŒ€í•œ {@link android.content.ContentValues} 개체ì—ë§Œ 하면 ë©ë‹ˆë‹¤.
+{@link android.content.ContentResolver#update ContentResolver.update()}입니다.
+ê°’ì„ ì¶”ê°€í•˜ëŠ” ê²ƒì€ ì—…ë°ì´íЏ ì¤‘ì¸ ì—´ì— ëŒ€í•œ {@link android.content.ContentValues} 개체ì—ë§Œ 하면 ë©ë‹ˆë‹¤.
ì—´ì˜ ì½˜í…츠를 삭제하려면, ê°’ì„ <code>null</code>로 설정하십시오.
</p>
<p>
@@ -827,13 +827,13 @@ mRowsUpdated = getContentResolver().update(
);
</pre>
<p>
-
+
{@link android.content.ContentResolver#update ContentResolver.update()}를 호출하는 경우ì—는 ì‚¬ìš©ìž ìž…ë ¥ë„ ì‚­ì œí•´ì•¼ 합니다. ì´ ë‚´ìš©ì— ê´€í•´ ìžì„¸ížˆ 알아보려면
<a href="#Injection">ì•…ì˜ì ì¸ ìž…ë ¥ì— ëŒ€í•œ 보호</a> ì„¹ì…˜ì„ ì½ì–´ 보십시오.
</p>
<h3 id="Deleting">ë°ì´í„° ì‚­ì œ</h3>
<p>
- í–‰ì„ ì‚­ì œí•˜ëŠ” ê²ƒì€ í–‰ ë°ì´í„°ë¥¼ 검색하는 것과 비슷합니다. 즉, ì‚­ì œí•˜ê³ ìž í•˜ëŠ” í–‰ì— ëŒ€í•œ ì„ íƒ ê¸°ì¤€ì„ ì§€ì •í•˜ë©´
+ í–‰ì„ ì‚­ì œí•˜ëŠ” ê²ƒì€ í–‰ ë°ì´í„°ë¥¼ 검색하는 것과 비슷합니다. 즉, ì‚­ì œí•˜ê³ ìž í•˜ëŠ” í–‰ì— ëŒ€í•œ ì„ íƒ ê¸°ì¤€ì„ ì§€ì •í•˜ë©´
í´ë¼ì´ì–¸íЏ 메서드가 ì‚­ì œëœ í–‰ 수를 반환하는 ì‹ìž…니다.
ë‹¤ìŒ ì¡°ê°ì€ 앱 IDê°€ "user"와 ì¼ì¹˜í•˜ëŠ” í–‰ì„ ì‚­ì œí•©ë‹ˆë‹¤. 메서드가 ì‚­ì œëœ í–‰ 수를 반환합니다.
@@ -857,14 +857,14 @@ mRowsDeleted = getContentResolver().delete(
);
</pre>
<p>
- {@link android.content.ContentResolver#delete ContentResolver.delete()}를
+ {@link android.content.ContentResolver#delete ContentResolver.delete()}를
호출하는 경우ì—는 ì‚¬ìš©ìž ìž…ë ¥ë„ ì‚­ì œí•´ì•¼ 합니다. ì´ ë‚´ìš©ì— ê´€í•´ ìžì„¸ížˆ 알아보려면
<a href="#Injection">ì•…ì˜ì ì¸ ìž…ë ¥ì— ëŒ€í•œ 보호</a> ì„¹ì…˜ì„ ì½ì–´ 보십시오.
</p>
<!-- Provider Data Types -->
<h2 id="DataTypes">ì œê³µìž ë°ì´í„° 유형</h2>
<p>
- 콘í…츠 제공ìžëŠ” 아주 다양한 ë°ì´í„° ìœ í˜•ì„ ì œê³µí•  수 있습니다.
+ 콘í…츠 제공ìžëŠ” 아주 다양한 ë°ì´í„° ìœ í˜•ì„ ì œê³µí•  수 있습니다.
ì‚¬ìš©ìž ì‚¬ì „ 제공ìžëŠ” í…스트만 제공하지만, 제공ìžëŠ” 다ìŒê³¼ ê°™ì€ í˜•ì‹ë„ 제공할 수 있습니다.
</p>
<ul>
@@ -883,29 +883,29 @@ mRowsDeleted = getContentResolver().delete(
</ul>
<p>
제공ìžê°€ 종종 사용하는 ë˜ ë‹¤ë¥¸ ë°ì´í„° ìœ í˜•ì€ 64KB ë°”ì´íЏ 배열로 구현ë˜ëŠ” BLOB(Binary Large OBject)입니다.
- ì´ìš© 가능한 ë°ì´í„° ìœ í˜•ì„ í™•ì¸í•˜ë ¤ë©´
+ ì´ìš© 가능한 ë°ì´í„° ìœ í˜•ì„ í™•ì¸í•˜ë ¤ë©´
{@link android.database.Cursor} í´ëž˜ìФ "가져오기" 메서드를 살펴보면 ë©ë‹ˆë‹¤.
</p>
<p>
ì œê³µìž ë‚´ì˜ ê° ì—´ì— ëŒ€í•œ ë°ì´í„° ìœ í˜•ì€ ë³´í†µ ìžì‹ ì˜ ë¬¸ì„œì— ëª©ë¡ìœ¼ë¡œ 나열ë˜ì–´ 있습니다.
- ì‚¬ìš©ìž ì‚¬ì „ 제공ìžì˜ ë°ì´í„° ìœ í˜•ì€ ì œê³µìžì˜ 계약 í´ëž˜ìФ
+ ì‚¬ìš©ìž ì‚¬ì „ 제공ìžì˜ ë°ì´í„° ìœ í˜•ì€ ì œê³µìžì˜ 계약 í´ëž˜ìФ
{@link android.provider.UserDictionary.Words}ì˜ ì°¸ì¡° ë¬¸ì„œì— ë‚˜ì—´ë˜ì–´ 있습니다(계약 í´ëž˜ìŠ¤ëŠ”
<a href="#ContractClasses">계약 í´ëž˜ìФ</a> ì„¹ì…˜ì— ì„¤ëª…ë˜ì–´ 있습니다).
@link android.database.Cursor#getType
Cursor.getType()}ì„ í˜¸ì¶œí•´ì„œë„ ë°ì´í„° ìœ í˜•ì„ ê²°ì •í•  수 있습니다.
</p>
<p>
- 제공ìžëŠ” 스스로 ì •ì˜í•˜ëŠ” ê° ì½˜í…츠 URIì˜ MIME ë°ì´í„° 유형 ì •ë³´ë„ ìœ ì§€ê´€ë¦¬í•©ë‹ˆë‹¤.
-MIME 유형 정보를 사용하면 애플리케ì´ì…˜ì´ 제공ìžê°€ 제공하는 ë°ì´í„°ë¥¼ 처리할 수 있ì„ì§€ 알아낼 ìˆ˜ë„ ìžˆê³ ,
-MIME ìœ í˜•ì„ ê·¼ê±°ë¡œ 처리 ìœ í˜•ì„ ì„ íƒí•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
+ 제공ìžëŠ” 스스로 ì •ì˜í•˜ëŠ” ê° ì½˜í…츠 URIì˜ MIME ë°ì´í„° 유형 ì •ë³´ë„ ìœ ì§€ê´€ë¦¬í•©ë‹ˆë‹¤.
+MIME 유형 정보를 사용하면 애플리케ì´ì…˜ì´ 제공ìžê°€ 제공하는 ë°ì´í„°ë¥¼ 처리할 수 있ì„ì§€ 알아낼 ìˆ˜ë„ ìžˆê³ ,
+MIME ìœ í˜•ì„ ê·¼ê±°ë¡œ 처리 ìœ í˜•ì„ ì„ íƒí•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
MIME ìœ í˜•ì´ í•„ìš”í•œ 시ì ì€ 주로 복잡한 ë°ì´í„° 구조 ë˜ëŠ” 파ì¼ì´ 들어 있는 제공ìžë¥¼ 다룰 때입니다.
예를 들어 ì—°ë½ì²˜ ì œê³µìž ë‚´ì˜ {@link android.provider.ContactsContract.Data}
í…Œì´ë¸”ì€ MIME ìœ í˜•ì„ ì‚¬ìš©í•˜ì—¬ ê° í–‰ì— ì €ìž¥ëœ ì—°ë½ì²˜ ë°ì´í„°ì˜ ìœ í˜•ì— ë ˆì´ë¸”ì„ ë¶™ìž…ë‹ˆë‹¤.
- 콘í…츠 URIì— ìƒì‘하는 MIME ìœ í˜•ì„ ê°€ì ¸ì˜¤ë ¤ë©´
+ 콘í…츠 URIì— ìƒì‘하는 MIME ìœ í˜•ì„ ê°€ì ¸ì˜¤ë ¤ë©´
{@link android.content.ContentResolver#getType ContentResolver.getType()}ì„ í˜¸ì¶œí•˜ì‹­ì‹œì˜¤.
</p>
<p>
- <a href="#MIMETypeReference">MIME 유형 참조</a> 섹션ì—서 표준 ë° ì‚¬ìš©ìž ì§€ì • MIME 유형ì˜
+ <a href="#MIMETypeReference">MIME 유형 참조</a> 섹션ì—서 표준 ë° ì‚¬ìš©ìž ì§€ì • MIME 유형ì˜
ë‘ ê°€ì§€ë¥¼ ëª¨ë‘ ì„¤ëª…í•˜ê³  있습니다.
</p>
@@ -922,13 +922,13 @@ MIME ìœ í˜•ì´ í•„ìš”í•œ 시ì ì€ 주로 복잡한 ë°ì´í„° 구조 ë˜ëŠ” 파ì
{@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}로 ì´ë¥¼ ì ìš©í•  수 있습니다.
</li>
<li>
- 비ë™ê¸°ì‹ 쿼리: 쿼리는 별ë„ì˜ ìŠ¤ë ˆë“œì—서 수행해야 합니다. ì´ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 한 가지 방법으로
-{@link android.content.CursorLoader} 개체를 사용하는 ê²ƒì´ ìžˆìŠµë‹ˆë‹¤. ì´ ì‚¬ìš© 방법ì€
+ 비ë™ê¸°ì‹ 쿼리: 쿼리는 별ë„ì˜ ìŠ¤ë ˆë“œì—서 수행해야 합니다. ì´ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 한 가지 방법으로
+{@link android.content.CursorLoader} 개체를 사용하는 ê²ƒì´ ìžˆìŠµë‹ˆë‹¤. ì´ ì‚¬ìš© 방법ì€
<a href="{@docRoot}guide/components/loaders.html">로ë”</a> ê°€ì´ë“œì— 있는 예시ì—서 설명합니다.
</li>
<li>
- <a href="#Intents">ì¸í…트를 통한 ë°ì´í„° 액세스</a>:
+ <a href="#Intents">ì¸í…트를 통한 ë°ì´í„° 액세스</a>:
ì¸í…트를 제공ìžì— ì§ì ‘ 보낼 수는 없지만, ì¸í…트를 제공ìžì˜ 애플리케ì´ì…˜ì— 보낼 수는 있습니다.
ë³´í†µì€ ì´ê²ƒì´ 제공ìžì˜ ë°ì´í„°ë¥¼ ìˆ˜ì •í•˜ê¸°ì— ê°€ìž¥ 좋습니다.
</li>
@@ -938,23 +938,23 @@ MIME ìœ í˜•ì´ í•„ìš”í•œ 시ì ì€ 주로 복잡한 ë°ì´í„° 구조 ë˜ëŠ” 파ì
</p>
<h3 id="Batch">ì¼ê´„ 액세스</h3>
<p>
- 제공ìžì— ì¼ê´„ 액세스를 하면 ë§Žì€ ìˆ˜ì˜ í–‰ì„ ì‚½ìž…í•  때, ê°™ì€ ë©”ì„œë“œ 호출 ë‚´ì—서 여러 ê°œì˜ í…Œì´ë¸”ì— ì—¬ëŸ¬ í–‰ì„ ì‚½ìž…í•  때
+ 제공ìžì— ì¼ê´„ 액세스를 하면 ë§Žì€ ìˆ˜ì˜ í–‰ì„ ì‚½ìž…í•  때, ê°™ì€ ë©”ì„œë“œ 호출 ë‚´ì—서 여러 ê°œì˜ í…Œì´ë¸”ì— ì—¬ëŸ¬ í–‰ì„ ì‚½ìž…í•  때
ë˜ëŠ” ì „ë°˜ì ìœ¼ë¡œ, 프로세스 경계를 가로질러 ì¼ë ¨ì˜ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 경우(ì›ìžì„± 작업) 유용합니다.
</p>
<p>
"ì¼ê´„ 모드"로 제공ìžì— 액세스하려면
-{@link android.content.ContentProviderOperation} ê°œì²´ì˜ ë°°ì—´ì„ ìƒì„±í•œ ë‹¤ìŒ ì´ë¥¼ 콘í…츠 제공ìžì—게
+{@link android.content.ContentProviderOperation} ê°œì²´ì˜ ë°°ì—´ì„ ìƒì„±í•œ ë‹¤ìŒ ì´ë¥¼ 콘í…츠 제공ìžì—게
{@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}로
- 발송하면 ë©ë‹ˆë‹¤.
+ 발송하면 ë©ë‹ˆë‹¤.
ì´ ë©”ì„œë“œì—는 특정한 콘í…츠 URI보다는 콘í…츠 제공ìžì˜ <em>권한</em>ì„ ì „ë‹¬í•©ë‹ˆë‹¤.
-ì´ë ‡ê²Œ 하면 ë°°ì—´ ë‚´ì˜ ê° {@link android.content.ContentProviderOperation} 개체가
+ì´ë ‡ê²Œ 하면 ë°°ì—´ ë‚´ì˜ ê° {@link android.content.ContentProviderOperation} 개체가
서로 다른 í…Œì´ë¸”ì— ëŒ€í•´ 작용하ë„ë¡ í•  수 있습니다. {@link android.content.ContentResolver#applyBatch
ContentResolver.applyBatch()}를 호출하면 ì¼ë ¨ì˜ 결과를 반환합니다.
</p>
<p>
{@link android.provider.ContactsContract.RawContacts} 계약 í´ëž˜ìŠ¤ì˜ ì„¤ëª…ì—
- ì¼ê´„ ì‚½ìž…ì„ ì„¤ëª…í•˜ëŠ” 코드 ì¡°ê°ì´ í¬í•¨ë˜ì–´ 있습니다.
+ ì¼ê´„ ì‚½ìž…ì„ ì„¤ëª…í•˜ëŠ” 코드 ì¡°ê°ì´ í¬í•¨ë˜ì–´ 있습니다.
<a href="{@docRoot}resources/samples/ContactManager/index.html">ì—°ë½ì²˜ 관리ìž</a>
샘플 애플리케ì´ì…˜ì—는 <code>ContactAdder.java</code>
소스 파ì¼ì˜ ì¼ê´„ 액세스 예시가 í¬í•¨ë˜ì–´ 있습니다.
@@ -963,31 +963,31 @@ MIME ìœ í˜•ì´ í•„ìš”í•œ 시ì ì€ 주로 복잡한 ë°ì´í„° 구조 ë˜ëŠ” 파ì
<div class="sidebox">
<h2>ë„우미 ì•±ì„ ì‚¬ìš©í•œ ë°ì´í„° 표시</h2>
<p>
- 애플리케ì´ì…˜ì— 액세스 ê¶Œí•œì´ <em>있ë”ë¼ë„</em>
-다른 애플리케ì´ì…˜ì— ë°ì´í„°ë¥¼ 표시할 ì¸í…트를 ì‚¬ìš©í•˜ê³ ìž í•  수 있습니다. 예를 들어 ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ì€
+ 애플리케ì´ì…˜ì— 액세스 ê¶Œí•œì´ <em>있ë”ë¼ë„</em>
+다른 애플리케ì´ì…˜ì— ë°ì´í„°ë¥¼ 표시할 ì¸í…트를 ì‚¬ìš©í•˜ê³ ìž í•  수 있습니다. 예를 들어 ìº˜ë¦°ë” ì• í”Œë¦¬ì¼€ì´ì…˜ì€
특정 날짜나 ì´ë²¤íŠ¸ë¥¼ 표시하는 {@link android.content.Intent#ACTION_VIEW}를 허용합니다.
ì´ ë•Œë¬¸ì— ë‚˜ë¦„ì˜ UI를 ì§ì ‘ ìƒì„±í•˜ì§€ ì•Šê³ ë„ ìº˜ë¦°ë” ì •ë³´ë¥¼ 표시할 수 있습니다.
-ì´ ê¸°ëŠ¥ì— ëŒ€í•œ ìžì„¸í•œ 정보는
+ì´ ê¸°ëŠ¥ì— ëŒ€í•œ ìžì„¸í•œ 정보는
<a href="{@docRoot}guide/topics/providers/calendar-provider.html">ìº˜ë¦°ë” ì œê³µìž</a> ê°€ì´ë“œë¥¼ 참조하십시오.
</p>
<p>
ì¸í…트를 보낼 목ì ì§€ì¸ 애플리케ì´ì…˜ì€ 제공ìžì™€ ì—°ê´€ëœ ì• í”Œë¦¬ì¼€ì´ì…˜ì´ ì•„ë‹ˆì–´ë„ ë©ë‹ˆë‹¤.
- 예를 들어 ì—°ë½ì²˜ 제공ìžì—서 ì—°ë½ì²˜ë¥¼ 검색한 다ìŒ, 해당 ì—°ë½ì²˜ì˜ ì´ë¯¸ì§€ì— 대한 콘í…츠 URIê°€ 들어 있는
-{@link android.content.Intent#ACTION_VIEW} ì¸í…트를
+ 예를 들어 ì—°ë½ì²˜ 제공ìžì—서 ì—°ë½ì²˜ë¥¼ 검색한 다ìŒ, 해당 ì—°ë½ì²˜ì˜ ì´ë¯¸ì§€ì— 대한 콘í…츠 URIê°€ 들어 있는
+{@link android.content.Intent#ACTION_VIEW} ì¸í…트를
ì´ë¯¸ì§€ 뷰어로 보낼 수 있습니다.
</p>
</div>
</div>
<h3 id="Intents">ì¸í…트를 통한 ë°ì´í„° 액세스</h3>
<p>
- ì¸í…트는 콘í…츠 제공ìžì— ê°„ì ‘ 액세스를 제공할 수 있습니다. 애플리케ì´ì…˜ì— 액세스 ê¶Œí•œì´ ì—†ëŠ”ë°ë„
-사용ìžì—게 ì œê³µìž ë‚´ì˜ ë°ì´í„°ì— 액세스 ê¶Œí•œì„ í—ˆê°€í•˜ë ¤ë©´, ê¶Œí•œì„ ê°€ì§€ê³  있는 애플리케ì´ì…˜ì—서 ê²°ê³¼ ì¸í…트를 다시 가져오거나
+ ì¸í…트는 콘í…츠 제공ìžì— ê°„ì ‘ 액세스를 제공할 수 있습니다. 애플리케ì´ì…˜ì— 액세스 ê¶Œí•œì´ ì—†ëŠ”ë°ë„
+사용ìžì—게 ì œê³µìž ë‚´ì˜ ë°ì´í„°ì— 액세스 ê¶Œí•œì„ í—ˆê°€í•˜ë ¤ë©´, ê¶Œí•œì„ ê°€ì§€ê³  있는 애플리케ì´ì…˜ì—서 ê²°ê³¼ ì¸í…트를 다시 가져오거나
ê¶Œí•œì´ ìžˆëŠ” 애플리케ì´ì…˜ì„ 활성화한 ë‹¤ìŒ ì‚¬ìš©ìžì—게 ê·¸ 애플리케ì´ì…˜ì—서 작업하ë„ë¡ í•˜ë©´ ë©ë‹ˆë‹¤.
</p>
<h4>임시 권한으로 액세스 얻기</h4>
<p>
- ì ì ˆí•œ 액세스 ê¶Œí•œì´ ì—†ë”ë¼ë„ 콘í…츠 ì œê³µìž ë‚´ì˜ ë°ì´í„°ì— 액세스할 수는 있습니다.
+ ì ì ˆí•œ 액세스 ê¶Œí•œì´ ì—†ë”ë¼ë„ 콘í…츠 ì œê³µìž ë‚´ì˜ ë°ì´í„°ì— 액세스할 수는 있습니다.
ê¶Œí•œì„ ê°€ì§€ê³  있는 애플리케ì´ì…˜ì— ì¸í…트를 ë³´ë‚´ "URI" ê¶Œí•œì´ ë“¤ì–´ 있는 ê²°ê³¼ ì¸í…트를 ëŒë ¤ë°›ìœ¼ë©´ ë©ë‹ˆë‹¤.
ì´ë“¤ ê¶Œí•œì€ íŠ¹ì • 콘í…츠 URIì— ëŒ€í•œ 권한으로, ì´ë¥¼ 수신하는 액티비티가 ì™„ë£Œë  ë•Œê¹Œì§€ 유지ë©ë‹ˆë‹¤.
@@ -1005,27 +1005,27 @@ MIME ìœ í˜•ì´ í•„ìš”í•œ 시ì ì€ 주로 복잡한 ë°ì´í„° 구조 ë˜ëŠ” 파ì
</li>
</ul>
<p class="note">
- <strong>참고:</strong> ì´ì™€ ê°™ì€ í”Œëž˜ê·¸ëŠ” 콘í…츠 URIì— ê¶Œí•œì´ ë“¤ì–´ 있는 제공ìžì— ì¼ë°˜ì ì¸ ì½ê¸° ë˜ëŠ” 쓰기 액세스
+ <strong>참고:</strong> ì´ì™€ ê°™ì€ í”Œëž˜ê·¸ëŠ” 콘í…츠 URIì— ê¶Œí•œì´ ë“¤ì–´ 있는 제공ìžì— ì¼ë°˜ì ì¸ ì½ê¸° ë˜ëŠ” 쓰기 액세스
ê¶Œí•œì„ ë¶€ì—¬í•˜ì§€ëŠ” 않습니다. ì´ ì•¡ì„¸ìŠ¤ëŠ” URI ìžì²´ì—ë§Œ 해당ë©ë‹ˆë‹¤.
</p>
<p>
- 제공ìžëŠ” ìžì‹ ì˜ 매니페스트 ë‚´ì˜ ì½˜í…츠 URIì— ëŒ€í•œ URI ê¶Œí•œì„ ì •ì˜í•©ë‹ˆë‹¤. ì´ë•Œ
+ 제공ìžëŠ” ìžì‹ ì˜ 매니페스트 ë‚´ì˜ ì½˜í…츠 URIì— ëŒ€í•œ URI ê¶Œí•œì„ ì •ì˜í•©ë‹ˆë‹¤. ì´ë•Œ
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
- 요소ì˜
+ 요소ì˜
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code>
- ì†ì„±ì„ 사용하며,
+ ì†ì„±ì„ 사용하며,
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
- 요소ì˜
+ 요소ì˜
<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
- 하위 ìš”ì†Œë„ ì‚¬ìš©í•©ë‹ˆë‹¤.
+ 하위 ìš”ì†Œë„ ì‚¬ìš©í•©ë‹ˆë‹¤.
URI 권한 ë©”ì»¤ë‹ˆì¦˜ì€ "URI 권한" ì„¹ì…˜ì˜ <a href="{@docRoot}guide/topics/security/security.html">보안 ë° ê¶Œí•œ</a> ê°€ì´ë“œì—
ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</p>
<p>
예를 들어, {@link android.Manifest.permission#READ_CONTACTS} ê¶Œí•œì´ ì—†ë”ë¼ë„
-ì—°ë½ì²˜ ì œê³µìž ë‚´ì˜ ì—°ë½ì²˜ì— 대한 ë°ì´í„°ë¥¼ 검색할 수 있습니다.
-ì´ ìž‘ì—…ì„ í•˜ë©´ ì¢‹ì€ ì˜ˆë¡œ, ì—°ë½ì²˜ì— ê¸°ìž¬ëœ ì‚¬ëžŒì˜ ìƒì¼ì— ì „ìž ì¶•í•˜ 카드를 보내주는 애플리케ì´ì…˜ì„ 들 수 있습니다.
-{@link android.Manifest.permission#READ_CONTACTS}를 요청하면
+ì—°ë½ì²˜ ì œê³µìž ë‚´ì˜ ì—°ë½ì²˜ì— 대한 ë°ì´í„°ë¥¼ 검색할 수 있습니다.
+ì´ ìž‘ì—…ì„ í•˜ë©´ ì¢‹ì€ ì˜ˆë¡œ, ì—°ë½ì²˜ì— ê¸°ìž¬ëœ ì‚¬ëžŒì˜ ìƒì¼ì— ì „ìž ì¶•í•˜ 카드를 보내주는 애플리케ì´ì…˜ì„ 들 수 있습니다.
+{@link android.Manifest.permission#READ_CONTACTS}를 요청하면
사용ìžì˜ ì—°ë½ì²˜ 전체와 해당 ì •ë³´ ì¼ì²´ì— 대한 액세스를 부여하므로, ê·¸ 대신 애플리케ì´ì…˜ì—서 ì–´ëŠ ì—°ë½ì²˜ë¥¼ 사용할지 사용ìžê°€ ì§ì ‘ 제어하ë„ë¡ í•´ì£¼ëŠ” íŽ¸ì´ ë‚«ìŠµë‹ˆë‹¤.
ì´ë ‡ê²Œ 하려면, ë‹¤ìŒ ì ˆì°¨ë¥¼ 사용합니다.
</p>
@@ -1043,13 +1043,13 @@ startActivityForResult()} 메서드를 사용해서
</li>
<li>
ì„ íƒ ì•¡í‹°ë¹„í‹°ì—서 사용ìžê°€ ì—…ë°ì´íŠ¸í•  ì—°ë½ì²˜ë¥¼ ì„ íƒí•©ë‹ˆë‹¤.
- ì´ë ‡ê²Œ ë˜ë©´ ì„ íƒ ì•¡í‹°ë¹„í‹°ê°€
+ ì´ë ‡ê²Œ ë˜ë©´ ì„ íƒ ì•¡í‹°ë¹„í‹°ê°€
{@link android.app.Activity#setResult setResult(resultcode, intent)}
-를 호출하여 애플리케ì´ì…˜ì— ëŒë ¤ì¤„ ì¸í…트를 설정합니다.
-ì´ ì¸í…íŠ¸ì— ì‚¬ìš©ìžê°€ ì„ íƒí•œ ì—°ë½ì²˜ì˜ 콘í…츠 URI와 "추가" 플래그
-{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}ì´ ë“¤ì–´ 있습니다.
-ì´ëŸ¬í•œ 플래그가 URIì— ì•±ìœ¼ë¡œì˜ ê¶Œí•œì„ í—ˆê°€í•˜ì—¬ 콘í…츠 URIê°€ 가리킨 ì—°ë½ì²˜ì— 대한 ë°ì´í„°ë¥¼ ì½ì„ 수 있ë„ë¡ í•©ë‹ˆë‹¤.
-그런 ë‹¤ìŒ ì„ íƒ ì•¡í‹°ë¹„í‹°ëŠ” {@link android.app.Activity#finish()}를 호출하여
+를 호출하여 애플리케ì´ì…˜ì— ëŒë ¤ì¤„ ì¸í…트를 설정합니다.
+ì´ ì¸í…íŠ¸ì— ì‚¬ìš©ìžê°€ ì„ íƒí•œ ì—°ë½ì²˜ì˜ 콘í…츠 URI와 "추가" 플래그
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}ì´ ë“¤ì–´ 있습니다.
+ì´ëŸ¬í•œ 플래그가 URIì— ì•±ìœ¼ë¡œì˜ ê¶Œí•œì„ í—ˆê°€í•˜ì—¬ 콘í…츠 URIê°€ 가리킨 ì—°ë½ì²˜ì— 대한 ë°ì´í„°ë¥¼ ì½ì„ 수 있ë„ë¡ í•©ë‹ˆë‹¤.
+그런 ë‹¤ìŒ ì„ íƒ ì•¡í‹°ë¹„í‹°ëŠ” {@link android.app.Activity#finish()}를 호출하여
애플리케ì´ì…˜ì— 제어를 반환합니다.
</li>
<li>
@@ -1067,7 +1067,7 @@ startActivityForResult()} 메서드를 사용해서
</ol>
<h4>다른 애플리케ì´ì…˜ 사용</h4>
<p>
- 개발ìžì—게 액세스 ê¶Œí•œì´ ì—†ëŠ” ë°ì´í„°ë¥¼ 사용ìžê°€ 수정할 수 있ë„ë¡ í—ˆìš©í•˜ëŠ” 간단한 방법ì€
+ 개발ìžì—게 액세스 ê¶Œí•œì´ ì—†ëŠ” ë°ì´í„°ë¥¼ 사용ìžê°€ 수정할 수 있ë„ë¡ í—ˆìš©í•˜ëŠ” 간단한 방법ì€
해당 ê¶Œí•œì„ ê°€ì§€ê³  있는 애플리케ì´ì…˜ì„ 활성화한 ë‹¤ìŒ ì‚¬ìš©ìžì—게 그곳ì—서 작업하ë„ë¡ í•´ì£¼ëŠ” 것입니다.
</p>
<p>
@@ -1082,18 +1082,18 @@ startActivityForResult()} 메서드를 사용해서
<h2 id="ContractClasses">계약 í´ëž˜ìФ</h2>
<p>
계약 í´ëž˜ìŠ¤ëŠ” 애플리케ì´ì…˜ì´ 콘í…츠 URI, ì—´ ì´ë¦„, ì¸í…트 작업 ë° ì½˜í…츠 제공ìžì˜ 다른 기능과
-작업할 수 있게 ë„와주는 ìƒìˆ˜ë¥¼ ì •ì˜í•©ë‹ˆë‹¤. 계약 í´ëž˜ìŠ¤ëŠ” 제공ìžì™€ 함께 ìžë™ìœ¼ë¡œ í¬í•¨ë˜ì§€ 않습니다.
+작업할 수 있게 ë„와주는 ìƒìˆ˜ë¥¼ ì •ì˜í•©ë‹ˆë‹¤. 계약 í´ëž˜ìŠ¤ëŠ” 제공ìžì™€ 함께 ìžë™ìœ¼ë¡œ í¬í•¨ë˜ì§€ 않습니다.
해당 제공ìžì˜ 개발ìžê°€ ì´ë¥¼ ì •ì˜í•œ ë‹¤ìŒ ë‹¤ë¥¸ 개발ìžê°€ 사용할 수 있ë„ë¡ í•´ì•¼ 합니다.
- Android í”Œëž«í¼ ë‚´ì— í¬í•¨ëœ 제공ìžëŠ” 대부분 패키지
+ Android í”Œëž«í¼ ë‚´ì— í¬í•¨ëœ 제공ìžëŠ” 대부분 패키지
{@link android.provider} ì•ˆì— ìƒì‘하는 계약 í´ëž˜ìŠ¤ë¥¼ 가지고 있습니다.
</p>
<p>
예를 들어, ì‚¬ìš©ìž ì‚¬ì „ 제공ìžì—는 콘í…츠 URI와 ì—´ ì´ë¦„ ìƒìˆ˜ê°€ 들어 있는
-{@link android.provider.UserDictionary} 계약 í´ëž˜ìŠ¤ê°€ 있습니다.
+{@link android.provider.UserDictionary} 계약 í´ëž˜ìŠ¤ê°€ 있습니다.
"단어" í…Œì´ë¸”ì— ëŒ€í•œ 콘í…츠 URI는 ìƒìˆ˜
{@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI}ì— ì •ì˜ë©ë‹ˆë‹¤.
- {@link android.provider.UserDictionary.Words} í´ëž˜ìФì—ë„
-ì—´ ì´ë¦„ ìƒìˆ˜ê°€ 들어 있으며, ì´ëŠ” ì´ ê°€ì´ë“œì˜ 예시 ì¡°ê°ì—서 사용ë©ë‹ˆë‹¤.
+ {@link android.provider.UserDictionary.Words} í´ëž˜ìФì—ë„
+ì—´ ì´ë¦„ ìƒìˆ˜ê°€ 들어 있으며, ì´ëŠ” ì´ ê°€ì´ë“œì˜ 예시 ì¡°ê°ì—서 사용ë©ë‹ˆë‹¤.
예를 들어 쿼리 프로ì ì…˜ì€ 다ìŒê³¼ ê°™ì´ ì •ì˜ë  수 있습니다.
</p>
<pre>
@@ -1106,7 +1106,7 @@ String[] mProjection =
</pre>
<p>
ë˜ ë‹¤ë¥¸ 계약 í´ëž˜ìŠ¤ëŠ” ì—°ë½ì²˜ 제공ìžì˜ {@link android.provider.ContactsContract}입니다.
- ì´ í´ëž˜ìŠ¤ì— ëŒ€í•œ 참조 문서ì—는 예시 코드 ì¡°ê°ì´ í¬í•¨ë˜ì–´ 있습니다.
+ ì´ í´ëž˜ìŠ¤ì— ëŒ€í•œ 참조 문서ì—는 예시 코드 ì¡°ê°ì´ í¬í•¨ë˜ì–´ 있습니다.
ì´ê²ƒì˜ 하위 í´ëž˜ìФ 중 í•˜ë‚˜ì¸ {@link android.provider.ContactsContract.Intents.Insert}는
ì¸í…트와 ì¸í…트 ë°ì´í„°ì˜ ìƒìˆ˜ê°€ 들어 있는 계약 í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤.
</p>
@@ -1129,7 +1129,7 @@ String[] mProjection =
해당 URI를 사용하는 쿼리가 HTML 태그가 들어 있는 í…스트를 반환할 것ì´ë¼ëŠ” 뜻입니다.
</p>
<p>
- ì‚¬ìš©ìž ì§€ì • MIME 유형 문ìžì—´ì€ "공급업체별" MIME 유형ì´ë¼ê³ ë„ 불리며
+ ì‚¬ìš©ìž ì§€ì • MIME 유형 문ìžì—´ì€ "공급업체별" MIME 유형ì´ë¼ê³ ë„ 불리며
ì´ìª½ì˜ <em>유형</em>ê³¼ <em>하위 유형</em> ê°’ì´ ë” ë³µìž¡í•©ë‹ˆë‹¤. <em>유형</em> ê°’ì€ ê²½ìš°ì— ë”°ë¼ í•­ìƒ ë‹¤ìŒê³¼ 같습니다.
</p>
<pre>
@@ -1184,13 +1184,13 @@ content://com.example.trains/Line2/5
vnd.android.cursor.<strong>item</strong>/vnd.example.line2
</pre>
<p>
- ëŒ€ë¶€ë¶„ì˜ ì½˜í…츠 제공ìžëŠ” ìžì‹ ì´ 사용하는 MIME ìœ í˜•ì— ëŒ€í•œ 계약 í´ëž˜ìФ ìƒìˆ˜ë¥¼ ì •ì˜í•©ë‹ˆë‹¤.
+ ëŒ€ë¶€ë¶„ì˜ ì½˜í…츠 제공ìžëŠ” ìžì‹ ì´ 사용하는 MIME ìœ í˜•ì— ëŒ€í•œ 계약 í´ëž˜ìФ ìƒìˆ˜ë¥¼ ì •ì˜í•©ë‹ˆë‹¤.
예를 들어, ì—°ë½ì²˜ ì œê³µìž ê³„ì•½ í´ëž˜ìФ {@link android.provider.ContactsContract.RawContacts}는
ë‹¨ì¼ ì—°ë½ì²˜ í–‰ì˜ MIME ìœ í–‰ì— ëŒ€í•œ
ìƒìˆ˜ {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE}ì„
ì •ì˜í•©ë‹ˆë‹¤.
</p>
<p>
- 한 í–‰ì— ëŒ€í•œ 콘í…츠 URI는
+ 한 í–‰ì— ëŒ€í•œ 콘í…츠 URI는
<a href="#ContentURIs">콘í…츠 URI</a> ì„¹ì…˜ì— ì„¤ëª…ë˜ì–´ 있습니다.
</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/ko/guide/topics/providers/content-provider-creating.jd
index 6757194a9f28..af7b584c6257 100644
--- a/docs/html-intl/intl/ko/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html-intl/intl/ko/guide/topics/providers/content-provider-creating.jd
@@ -95,16 +95,16 @@ page.title= 콘í…츠 ì œê³µìž ìƒì„±
<p>
- 콘í…츠 제공ìžëŠ” ë°ì´í„°ì˜ 중앙 리í¬ì§€í† ë¦¬ë¡œì˜ 액세스를 관리합니다. Android 애플리케ì´ì…˜ì—서는
+ 콘í…츠 제공ìžëŠ” ë°ì´í„°ì˜ 중앙 리í¬ì§€í† ë¦¬ë¡œì˜ 액세스를 관리합니다. Android 애플리케ì´ì…˜ì—서는
제공ìžë¥¼ 하나 ì´ìƒì˜ í´ëž˜ìŠ¤ë¡œ, 매니페스트 파ì¼ì— 있는 요소와 함께 구현합니다.
- í´ëž˜ìФ 중 하나가 하위 í´ëž˜ìФ
-{@link android.content.ContentProvider}를 구현하며,
-ì´ê²ƒì´ 제공ìžì™€ 다른 애플리케ì´ì…˜ 사ì´ì˜ ì¸í„°íŽ˜ì´ìŠ¤ìž…ë‹ˆë‹¤. 콘í…츠 제공ìžëŠ” 다른 애플리케ì´ì…˜ì— ë°ì´í„°ë¥¼ 사용할 수 있게 해주ë„ë¡ ë§Œë“¤ì–´ì ¸ 있지만,
-물론 애플리케ì´ì…˜ ë‚´ì— ì‚¬ìš©ìžë¡œ 하여금 제공ìžê°€ 관리하는 ë°ì´í„°ë¥¼ 쿼리하고 수정할 수 있게 허용하는
+ í´ëž˜ìФ 중 하나가 하위 í´ëž˜ìФ
+{@link android.content.ContentProvider}를 구현하며,
+ì´ê²ƒì´ 제공ìžì™€ 다른 애플리케ì´ì…˜ 사ì´ì˜ ì¸í„°íŽ˜ì´ìŠ¤ìž…ë‹ˆë‹¤. 콘í…츠 제공ìžëŠ” 다른 애플리케ì´ì…˜ì— ë°ì´í„°ë¥¼ 사용할 수 있게 해주ë„ë¡ ë§Œë“¤ì–´ì ¸ 있지만,
+물론 애플리케ì´ì…˜ ë‚´ì— ì‚¬ìš©ìžë¡œ 하여금 제공ìžê°€ 관리하는 ë°ì´í„°ë¥¼ 쿼리하고 수정할 수 있게 허용하는
액티비티가 ìžˆì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
</p>
<p>
- ì´ ì£¼ì œì˜ ë‚˜ë¨¸ì§€ ë¶€ë¶„ì€ ì½˜í…츠 제공ìžë¥¼ 구축하기 위한 기본 단계 목ë¡ê³¼
+ ì´ ì£¼ì œì˜ ë‚˜ë¨¸ì§€ ë¶€ë¶„ì€ ì½˜í…츠 제공ìžë¥¼ 구축하기 위한 기본 단계 목ë¡ê³¼
사용할 API 목ë¡ìœ¼ë¡œ ì´ë£¨ì–´ì ¸ 있습니다.
</p>
@@ -124,12 +124,12 @@ page.title= 콘í…츠 ì œê³µìž ìƒì„±
<li>검색 프레임워í¬ë¥¼ 사용한 ì‚¬ìš©ìž ì§€ì • 검색 ì œì•ˆì„ ì œê³µí•˜ê³ ìž í•˜ëŠ” 경우</li>
</ul>
<p>
- ìš©ë„ê°€ 본ì¸ì˜ 애플리케ì´ì…˜ 안ì—서로 완전히 한정ë˜ì–´ 있는 경우ì—는
+ ìš©ë„ê°€ 본ì¸ì˜ 애플리케ì´ì…˜ 안ì—서로 완전히 한정ë˜ì–´ 있는 경우ì—는
제공ìžê°€ SQLite ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 사용하ë„ë¡ í•˜ì§€ <em>않아ë„</em> ë©ë‹ˆë‹¤.
</p>
</li>
<li>
- ì•„ì§ ì½ì§€ 않았다면, 지금 바로
+ ì•„ì§ ì½ì§€ 않았다면, 지금 바로
<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
콘í…츠 ì œê³µìž ê¸°ë³¸ ì •ë³´</a>를 ì½ê³  제공ìžì— 대해 ìžì„¸ížˆ 알아보십시오.
</li>
@@ -146,8 +146,8 @@ page.title= 콘í…츠 ì œê³µìž ìƒì„±
</dt>
<dd>
ì¼ë°˜ì ìœ¼ë¡œ 사진, 오디오 ë˜ëŠ” ë™ì˜ìƒê³¼ ê°™ì€
-파ì¼ì— 들어가는 ë°ì´í„°ìž…니다. ì´ëŸ° 파ì¼ì„ 애플리케ì´ì…˜ì˜ 비공개
-ê³µê°„ì— ì €ìž¥í•©ë‹ˆë‹¤. 제공ìžëŠ” 다른 애플리케ì´ì…˜ìœ¼ë¡œë¶€í„° 온 íŒŒì¼ ìš”ì²­ì— ì‘답하여
+파ì¼ì— 들어가는 ë°ì´í„°ìž…니다. ì´ëŸ° 파ì¼ì„ 애플리케ì´ì…˜ì˜ 비공개
+ê³µê°„ì— ì €ìž¥í•©ë‹ˆë‹¤. 제공ìžëŠ” 다른 애플리케ì´ì…˜ìœ¼ë¡œë¶€í„° 온 íŒŒì¼ ìš”ì²­ì— ì‘답하여
해당 파ì¼ë¡œì˜ í•¸ë“¤ì„ ì œê³µí•  수 있습니다.
</dd>
<dt>
@@ -155,9 +155,9 @@ page.title= 콘í…츠 ì œê³µìž ìƒì„±
</dt>
<dd>
ì¼ë°˜ì ìœ¼ë¡œ ë°ì´í„°ë² ì´ìФ, ë°°ì—´ ë˜ëŠ” 유사 êµ¬ì¡°ì— ë“¤ì–´ê°€ëŠ” ë°ì´í„°ìž…니다.
- ì´ ë°ì´í„°ë¥¼ 행과 열로 ì´ë£¨ì–´ì§„ í…Œì´ë¸”ê³¼ 호환ë˜ëŠ” 형ì‹ìœ¼ë¡œ 저장합니다.
-í–‰ì€ ì‚¬ëžŒì´ë‚˜ ì¸ë²¤í† ë¦¬ì˜ 항목과 ê°™ì€ ì—”í‹°í‹°ë¥¼ 나타냅니다.
-ì—´ì€ í•´ë‹¹ ì—”í‹°í‹°ì— ëŒ€í•œ 몇 가지 ë°ì´í„°, 예를 들어 사람 ì´ë¦„ì´ë‚˜ 항목 가격 ë“±ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.
+ ì´ ë°ì´í„°ë¥¼ 행과 열로 ì´ë£¨ì–´ì§„ í…Œì´ë¸”ê³¼ 호환ë˜ëŠ” 형ì‹ìœ¼ë¡œ 저장합니다.
+í–‰ì€ ì‚¬ëžŒì´ë‚˜ ì¸ë²¤í† ë¦¬ì˜ 항목과 ê°™ì€ ì—”í‹°í‹°ë¥¼ 나타냅니다.
+ì—´ì€ í•´ë‹¹ ì—”í‹°í‹°ì— ëŒ€í•œ 몇 가지 ë°ì´í„°, 예를 들어 사람 ì´ë¦„ì´ë‚˜ 항목 가격 ë“±ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.
ì´ ìœ í˜•ì˜ ë°ì´í„°ë¥¼ 저장하는 보편ì ì¸ ë°©ë²•ì€ SQLite ë°ì´í„°ë² ì´ìФ ì•ˆì— ì €ìž¥í•˜ëŠ” 것ì´ì§€ë§Œ,
모든 ìœ í˜•ì˜ ì˜êµ¬ì ì¸ 저장소를 ì‚¬ìš©í•´ë„ ë©ë‹ˆë‹¤. Android 시스템ì—서 사용할 수 있는 저장소 ìœ í˜•ì— ëŒ€í•´ ìžì„¸ížˆ 알아보려면,
<a href="#DataStorage">
@@ -172,11 +172,11 @@ page.title= 콘í…츠 ì œê³µìž ìƒì„±
<a href="#ContentProvider">ContentProvider í´ëž˜ìФ 구현</a> ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
</li>
<li>
- 제공ìžì˜ 권한 문ìžì—´, ê·¸ 콘í…츠 URI ë° ì—´ ì´ë¦„ì„ ì •ì˜í•©ë‹ˆë‹¤.
+ 제공ìžì˜ 권한 문ìžì—´, ê·¸ 콘í…츠 URI ë° ì—´ ì´ë¦„ì„ ì •ì˜í•©ë‹ˆë‹¤.
ì œê³µìž ì• í”Œë¦¬ì¼€ì´ì…˜ì´ ì¸í…트를 처리하게 하려면, ì¸í…트 작업과 추가 ë°ì´í„° ë°
-í”Œëž˜ê·¸ë„ ì •ì˜í•©ë‹ˆë‹¤. ë°ì´í„°ì— 액세스하기를 ì›í•˜ëŠ” 애플리케ì´ì…˜ì— 요구할 권한ë„
-ì •ì˜í•©ë‹ˆë‹¤. ì´ ëª¨ë“  ê°’ì€ ë³„ë„ì˜ ê³„ì•½ í´ëž˜ìФì—서 ìƒìˆ˜ë¡œ ì •ì˜í•˜ëŠ” ê²ƒì„ ê³ ë ¤í•´ë³´ëŠ”
-ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. ì´ í´ëž˜ìŠ¤ë¥¼ ë‚˜ì¤‘ì— ë‹¤ë¥¸ 개발ìžì—게 노출할 수 있습니다.
+í”Œëž˜ê·¸ë„ ì •ì˜í•©ë‹ˆë‹¤. ë°ì´í„°ì— 액세스하기를 ì›í•˜ëŠ” 애플리케ì´ì…˜ì— 요구할 권한ë„
+ì •ì˜í•©ë‹ˆë‹¤. ì´ ëª¨ë“  ê°’ì€ ë³„ë„ì˜ ê³„ì•½ í´ëž˜ìФì—서 ìƒìˆ˜ë¡œ ì •ì˜í•˜ëŠ” ê²ƒì„ ê³ ë ¤í•´ë³´ëŠ”
+ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. ì´ í´ëž˜ìŠ¤ë¥¼ ë‚˜ì¤‘ì— ë‹¤ë¥¸ 개발ìžì—게 노출할 수 있습니다.
콘í…츠 URIì— ê´€í•œ ìžì„¸í•œ 정보는
<a href="#ContentURI">콘í…츠 URI 설계</a> ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
ì¸í…íŠ¸ì— ê´€í•œ ìžì„¸í•œ 정보는
@@ -193,8 +193,8 @@ page.title= 콘í…츠 ì œê³µìž ìƒì„±
<!-- Designing Data Storage -->
<h2 id="DataStorage">ë°ì´í„° 저장소 설계</h2>
<p>
- 콘í…츠 제공ìžëŠ” êµ¬ì¡°í™”ëœ í˜•ì‹ìœ¼ë¡œ ì €ìž¥ëœ ë°ì´í„°ë¡œì˜ ì¸í„°íŽ˜ì´ìŠ¤ìž…ë‹ˆë‹¤.
-ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ìƒì„±í•˜ê¸° ì „ì— ìš°ì„  ë°ì´í„° 저장 ë°©ì‹ë¶€í„° 결정해야 합니다.
+ 콘í…츠 제공ìžëŠ” êµ¬ì¡°í™”ëœ í˜•ì‹ìœ¼ë¡œ ì €ìž¥ëœ ë°ì´í„°ë¡œì˜ ì¸í„°íŽ˜ì´ìŠ¤ìž…ë‹ˆë‹¤.
+ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ìƒì„±í•˜ê¸° ì „ì— ìš°ì„  ë°ì´í„° 저장 ë°©ì‹ë¶€í„° 결정해야 합니다.
ë°ì´í„°ëŠ” ì›í•˜ëŠ” í˜•ì‹ ì•„ë¬´ 것으로나 저장할 수 있으며 그런 다ìŒì— í•„ìš”ì— ë”°ë¼ í•´ë‹¹ ë°ì´í„°ë¥¼ ì½ê³  쓸 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 설계합니다.
</p>
<p>
@@ -203,26 +203,26 @@ page.title= 콘í…츠 ì œê³µìž ìƒì„±
<ul>
<li>
Android 시스템ì—는 Android ìžì²´ 제공ìžê°€ í…Œì´ë¸” ì§€í–¥ì  ë°ì´í„°ë¥¼
-저장하는 ë° ì‚¬ìš©í•˜ëŠ” SQLite ë°ì´í„°ë² ì´ìФ APIê°€ í¬í•¨ë©ë‹ˆë‹¤.
+저장하는 ë° ì‚¬ìš©í•˜ëŠ” SQLite ë°ì´í„°ë² ì´ìФ APIê°€ í¬í•¨ë©ë‹ˆë‹¤.
{@link android.database.sqlite.SQLiteOpenHelper} í´ëž˜ìŠ¤ëŠ” ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ìƒì„±í•  수 있게 ë•ê³ ,
{@link android.database.sqlite.SQLiteDatabase} í´ëž˜ìŠ¤ëŠ” ë°ì´í„°ë² ì´ìФ 액세스를 위한
기본 í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤.
<p>
- 리í¬ì§€í† ë¦¬ë¥¼ 구현하기 위해 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 사용하지 ì•Šì•„ë„ ëœë‹¤ëŠ” ì ì„ 기억하십시오.
-제공ìžëŠ” ì™¸ë¶€ì— í…Œì´ë¸” 집합으로 나타나 ê´€ê³„ì  ë°ì´í„°ë² ì´ìŠ¤ì™€ 비슷해 ë³´ì´ì§€ë§Œ,
+ 리í¬ì§€í† ë¦¬ë¥¼ 구현하기 위해 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 사용하지 ì•Šì•„ë„ ëœë‹¤ëŠ” ì ì„ 기억하십시오.
+제공ìžëŠ” ì™¸ë¶€ì— í…Œì´ë¸” 집합으로 나타나 ê´€ê³„ì  ë°ì´í„°ë² ì´ìŠ¤ì™€ 비슷해 ë³´ì´ì§€ë§Œ,
ì´ê²ƒì€ 제공ìžì˜ ë‚´ë¶€ êµ¬í˜„ì— í•„ìš”í•œ ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤.
</p>
</li>
<li>
íŒŒì¼ ë°ì´í„°ë¥¼ 저장하는 ë° ìžˆì–´ Androidì—는 다양한 íŒŒì¼ ì§€í–¥ì  APIê°€ 있습니다.
íŒŒì¼ ì €ìž¥ì†Œì— ê´€í•´ ìžì„¸ížˆ 알아보려면
-<a href="{@docRoot}guide/topics/data/data-storage.html">ë°ì´í„° 저장소</a> 주제를 ì½ì–´ 보십시오.
-ìŒì•…ì´ë‚˜ ë™ì˜ìƒ 등 미디어 관련 ë°ì´í„°ë¥¼ 제공하는 제공ìžë¥¼ 설계하는 경우,
+<a href="{@docRoot}guide/topics/data/data-storage.html">ë°ì´í„° 저장소</a> 주제를 ì½ì–´ 보십시오.
+ìŒì•…ì´ë‚˜ ë™ì˜ìƒ 등 미디어 관련 ë°ì´í„°ë¥¼ 제공하는 제공ìžë¥¼ 설계하는 경우,
제공ìžê°€ í…Œì´ë¸” ë°ì´í„°ì™€ 파ì¼ì„ ì¡°í•© í•  수 있습니다.
</li>
<li>
- ë„¤íŠ¸ì›Œí¬ ê¸°ë°˜ ë°ì´í„°ë¥¼ 다루는 경우, {@link java.net} ë°
-{@link android.net} ë‚´ì˜ í´ëž˜ìŠ¤ë¥¼ 사용하십시오. ë„¤íŠ¸ì›Œí¬ ê¸°ë°˜ ë°ì´í„°ë¥¼
+ ë„¤íŠ¸ì›Œí¬ ê¸°ë°˜ ë°ì´í„°ë¥¼ 다루는 경우, {@link java.net} ë°
+{@link android.net} ë‚´ì˜ í´ëž˜ìŠ¤ë¥¼ 사용하십시오. ë„¤íŠ¸ì›Œí¬ ê¸°ë°˜ ë°ì´í„°ë¥¼
ë°ì´í„°ë² ì´ìŠ¤ì™€ ê°™ì€ ë¡œì»¬ ë°ì´í„° 스토어와 ë™ê¸°í™”한 다ìŒ, 해당 ë°ì´í„°ë¥¼ í…Œì´ë¸”ì´ë‚˜ 파ì¼ë¡œ 제공할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
샘플 ë™ê¸°í™” 어댑터</a> 샘플 애플리케ì´ì…˜ì´ ì´ëŸ° ìœ í˜•ì˜ ë™ê¸°í™”를 ë³´ì—¬ì¤ë‹ˆë‹¤.
@@ -237,7 +237,7 @@ page.title= 콘í…츠 ì œê³µìž ìƒì„±
<ul>
<li>
í…Œì´ë¸” ë°ì´í„°ëŠ” 언제나 제공ìžê°€ 유지관리하는 "기본 키" ì—´ì„
-ê° í–‰ì˜ ê³ ìœ í•œ ìˆ«ìž ê°’ìœ¼ë¡œ 보유하고 있어야 합니다. ì´ ê°’ì„ ì‚¬ìš©í•˜ì—¬ 해당 í–‰ì„ ë‹¤ë¥¸ í…Œì´ë¸”ì˜
+ê° í–‰ì˜ ê³ ìœ í•œ ìˆ«ìž ê°’ìœ¼ë¡œ 보유하고 있어야 합니다. ì´ ê°’ì„ ì‚¬ìš©í•˜ì—¬ 해당 í–‰ì„ ë‹¤ë¥¸ í…Œì´ë¸”ì˜
관련 í–‰ì— ì—°ê²°ì‹œí‚¬ 수 있습니다(ì´ë¥¼ "외래 키"로 사용). ì´ ì—´ì—는 ì–´ëŠ ì´ë¦„ì´ë“  사용할 수 있지만
{@link android.provider.BaseColumns#_ID BaseColumns._ID}를 사용하는 ê²ƒì´ ê°€ìž¥ 좋습니다.
왜ëƒí•˜ë©´ ì œê³µìž ì¿¼ë¦¬ 결과를
@@ -246,8 +246,8 @@ page.title= 콘í…츠 ì œê³µìž ìƒì„±
</li>
<li>
비트맵 ì´ë¯¸ì§€ë‚˜ íŒŒì¼ ì§€í–¥ì  ë°ì´í„°ì˜ 매우 í° ì¡°ê°ì„ 제공하려면
-í…Œì´ë¸” ì•ˆì— ì§ì ‘ 저장하기보다는 파ì¼ì— ë°ì´í„°ë¥¼ 저장한 ë’¤
-ê°„ì ‘ì ìœ¼ë¡œ 제공합니다. ì´ë ‡ê²Œ 하는 경우, 제공ìžì˜ 사용ìžë“¤ì—게 ë°ì´í„°ì— 액세스하려면
+í…Œì´ë¸” ì•ˆì— ì§ì ‘ 저장하기보다는 파ì¼ì— ë°ì´í„°ë¥¼ 저장한 ë’¤
+ê°„ì ‘ì ìœ¼ë¡œ 제공합니다. ì´ë ‡ê²Œ 하는 경우, 제공ìžì˜ 사용ìžë“¤ì—게 ë°ì´í„°ì— 액세스하려면
{@link android.content.ContentResolver} íŒŒì¼ ë©”ì„œë“œë¥¼ 사용해야 한다고 알려야 합니다.
</li>
<li>
@@ -256,12 +256,12 @@ page.title= 콘í…츠 ì œê³µìž ìƒì„±
<a href="http://code.google.com/p/protobuf">프로토콜 버í¼</a> ë˜ëŠ”
<a href="http://www.json.org">JSON 구조</a>를 저장할 수 있습니다.
<p>
- BLOB를 사용하여 <em>ìŠ¤í‚¤ë§ˆì— ì¢…ì†ë˜ì§€ 않ì€</em> í…Œì´ë¸”ì„ êµ¬í˜„í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
+ BLOB를 사용하여 <em>ìŠ¤í‚¤ë§ˆì— ì¢…ì†ë˜ì§€ 않ì€</em> í…Œì´ë¸”ì„ êµ¬í˜„í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
ì´ ìœ í˜•ì˜ í…Œì´ë¸”ì—서는, 기본 키 ì—´, MIME 유형 ì—´ ë° í•˜ë‚˜ ì´ìƒì˜ ì¼ë°˜ì ì¸ ì—´ì„ BLOB로 ì •ì˜í•©ë‹ˆë‹¤.
-
-BLOB ì—´ì— ìžˆëŠ” ë°ì´í„°ì˜ ì˜ë¯¸ëŠ” MIME 유형 ì—´ì— ìžˆëŠ” 값으로 나타냅니다.
-ì´ë ‡ê²Œ 하면 ê°™ì€ í…Œì´ë¸”ì— ì—¬ëŸ¬ 가지 í–‰ ìœ í˜•ì„ ì €ìž¥í•  수 있습니다. ì—°ë½ì²˜ 제공ìžì˜ "ë°ì´í„°" í…Œì´ë¸”
-{@link android.provider.ContactsContract.Data}ê°€
+
+BLOB ì—´ì— ìžˆëŠ” ë°ì´í„°ì˜ ì˜ë¯¸ëŠ” MIME 유형 ì—´ì— ìžˆëŠ” 값으로 나타냅니다.
+ì´ë ‡ê²Œ 하면 ê°™ì€ í…Œì´ë¸”ì— ì—¬ëŸ¬ 가지 í–‰ ìœ í˜•ì„ ì €ìž¥í•  수 있습니다. ì—°ë½ì²˜ 제공ìžì˜ "ë°ì´í„°" í…Œì´ë¸”
+{@link android.provider.ContactsContract.Data}ê°€
ìŠ¤í‚¤ë§ˆì— ì¢…ì†ë˜ì§€ ì•Šì€ í…Œì´ë¸”ì˜ í•œ 가지 예입니다.
</p>
</li>
@@ -269,11 +269,11 @@ BLOB ì—´ì— ìžˆëŠ” ë°ì´í„°ì˜ ì˜ë¯¸ëŠ” MIME 유형 ì—´ì— ìžˆëŠ” 값으로 ë‚
<!-- Designing Content URIs -->
<h2 id="ContentURI">콘í…츠 URI 설계</h2>
<p>
- <strong>콘í…츠 URI</strong>는 제공ìžì—서 ë°ì´í„°ë¥¼ ì‹ë³„하는 URI입니다.
+ <strong>콘í…츠 URI</strong>는 제공ìžì—서 ë°ì´í„°ë¥¼ ì‹ë³„하는 URI입니다.
콘í…츠 URIì—는 ì „ì²´ 제공ìžì˜ ìƒì§•ì ì¸ ì´ë¦„(제공ìžì˜ <strong>권한</strong>)ê³¼
-í…Œì´ë¸” ë˜ëŠ” 파ì¼ì„ 가리키는 ì´ë¦„(<strong>경로</strong>)ì´ í¬í•¨ë©ë‹ˆë‹¤.
-ì„ íƒ í•­ëª© ID ë¶€ë¶„ì€ í…Œì´ë¸” ë‚´ì˜ ê°œë³„ì ì¸ í–‰ì„ ê°€ë¦¬í‚µë‹ˆë‹¤.
-{@link android.content.ContentProvider}ì˜ ëª¨ë“  ë°ì´í„° 액세스 메서드는
+í…Œì´ë¸” ë˜ëŠ” 파ì¼ì„ 가리키는 ì´ë¦„(<strong>경로</strong>)ì´ í¬í•¨ë©ë‹ˆë‹¤.
+ì„ íƒ í•­ëª© ID ë¶€ë¶„ì€ í…Œì´ë¸” ë‚´ì˜ ê°œë³„ì ì¸ í–‰ì„ ê°€ë¦¬í‚µë‹ˆë‹¤.
+{@link android.content.ContentProvider}ì˜ ëª¨ë“  ë°ì´í„° 액세스 메서드는
콘í…츠 URI를 ì¸ìˆ˜ë¡œ 가집니다. ì´ë¥¼ 통해 액세스할 í…Œì´ë¸”, í–‰ ë˜ëŠ” 파ì¼ì„ ê²°ì •í•  수 있습니다.
</p>
<p>
@@ -283,9 +283,9 @@ BLOB ì—´ì— ìžˆëŠ” ë°ì´í„°ì˜ ì˜ë¯¸ëŠ” MIME 유형 ì—´ì— ìžˆëŠ” 값으로 ë‚
</p>
<h3>권한 설계</h3>
<p>
- 제공ìžì—는 보통 í•˜ë‚˜ì˜ ê¶Œí•œì´ ìžˆìœ¼ë©°, ì´ê²ƒì´ Android ë‚´ë¶€ ì´ë¦„ ì—­í• ì„ í•©ë‹ˆë‹¤.
+ 제공ìžì—는 보통 í•˜ë‚˜ì˜ ê¶Œí•œì´ ìžˆìœ¼ë©°, ì´ê²ƒì´ Android ë‚´ë¶€ ì´ë¦„ ì—­í• ì„ í•©ë‹ˆë‹¤.
다른 제공ìžì™€ì˜ ì¶©ëŒì„ 피하려면, ì œê³µìž ê¶Œí•œì˜ ê¸°ë°˜ìœ¼ë¡œ ì¸í„°ë„· ë„ë©”ì¸ ì†Œìœ ê¶Œ(ì—­ë°©í–¥)ì„
-사용해야 합니다. ì´ ê¶Œìž¥ ì‚¬í•­ì€ Android 패키지 ì´ë¦„ì—ë„ ì ìš©ë˜ë¯€ë¡œ,
+사용해야 합니다. ì´ ê¶Œìž¥ ì‚¬í•­ì€ Android 패키지 ì´ë¦„ì—ë„ ì ìš©ë˜ë¯€ë¡œ,
ì œê³µìž ê¶Œí•œì„ ì œê³µìžê°€ 들어 있는 íŒ¨í‚¤ì§€ì˜ ì´ë¦„ 확장ìžë¡œ ì •ì˜í•´ë„ ë©ë‹ˆë‹¤.
예를 들어, Android 패키지 ì´ë¦„ì´
<code>com.example.&lt;appname&gt;</code>ë¼ë©´, 제공ìžì—게
@@ -293,40 +293,40 @@ BLOB ì—´ì— ìžˆëŠ” ë°ì´í„°ì˜ ì˜ë¯¸ëŠ” MIME 유형 ì—´ì— ìžˆëŠ” 값으로 ë‚
</p>
<h3>경로 구조 설계</h3>
<p>
- 개발ìžëŠ” 보통 권한으로부터 콘í…츠 URI를 ìƒì„±í•  때 개별ì ì¸ í…Œì´ë¸”ì„ ê°€ë¦¬í‚¤ëŠ”
+ 개발ìžëŠ” 보통 권한으로부터 콘í…츠 URI를 ìƒì„±í•  때 개별ì ì¸ í…Œì´ë¸”ì„ ê°€ë¦¬í‚¤ëŠ”
경로를 추가하는 ë°©ì‹ì„ 사용합니다. 예를 들어, <em>table1</em>ê³¼
<em>table2</em>ë¼ëŠ” í…Œì´ë¸”ì´ ìžˆë‹¤ë©´, ì´ì „ ì˜ˆì‹œì˜ ê¶Œí•œì„ ì¡°í•©í•˜ì—¬
-콘í…츠 URI<code>com.example.&lt;appname&gt;.provider/table1</code>와
+콘í…츠 URI<code>com.example.&lt;appname&gt;.provider/table1</code>와
<code>com.example.&lt;appname&gt;.provider/table2</code>를 ë„출합니다.
-
+
경로는 í•˜ë‚˜ì˜ ì„¸ê·¸ë¨¼íŠ¸ì— êµ­í•œë˜ì§€ 않으며, ê²½ë¡œì˜ ê° ìˆ˜ì¤€ì— ëŒ€í•œ í…Œì´ë¸”ì´ ì•„ë‹ˆì–´ë„ ë©ë‹ˆë‹¤.
</p>
<h3>콘í…츠 URI ID 처리</h3>
<p>
- ê·œì¹™ì— ì˜í•˜ë©´, 제공ìžëŠ” URI 맨 ëì—서 í–‰ì— ëŒ€í•œ ID ê°’ì´ ìžˆëŠ” 콘í…츠 URI를 허용하여
-í…Œì´ë¸” ë‚´ í•˜ë‚˜ì˜ í–‰ìœ¼ë¡œì˜ ì•¡ì„¸ìŠ¤ë¥¼ 제공합니다. ë˜í•œ ê·œì¹™ì— ì˜í•´ 제공ìžëŠ”
-ì´ ID ê°’ì„ í…Œì´ë¸”ì˜ <code>_ID</code> ì—´ì— ì¼ì¹˜ì‹œì¼œì•¼ 하며,
+ ê·œì¹™ì— ì˜í•˜ë©´, 제공ìžëŠ” URI 맨 ëì—서 í–‰ì— ëŒ€í•œ ID ê°’ì´ ìžˆëŠ” 콘í…츠 URI를 허용하여
+í…Œì´ë¸” ë‚´ í•˜ë‚˜ì˜ í–‰ìœ¼ë¡œì˜ ì•¡ì„¸ìŠ¤ë¥¼ 제공합니다. ë˜í•œ ê·œì¹™ì— ì˜í•´ 제공ìžëŠ”
+ì´ ID ê°’ì„ í…Œì´ë¸”ì˜ <code>_ID</code> ì—´ì— ì¼ì¹˜ì‹œì¼œì•¼ 하며,
ì¼ì¹˜í•œ í–‰ì— ëŒ€í•˜ì—¬ ìš”ì²­ëœ ì•¡ì„¸ìŠ¤ 허가를 수행해야 합니다.
</p>
<p>
- ì´ ê·œì¹™ì€ ì œê³µìžì— 액세스하는 ì•±ì„ ìœ„í•œ 공통 설계 íŒ¨í„´ì„ ì„¸ìš°ëŠ” ë° ìœ ìš©í•©ë‹ˆë‹¤.
+ ì´ ê·œì¹™ì€ ì œê³µìžì— 액세스하는 ì•±ì„ ìœ„í•œ 공통 설계 íŒ¨í„´ì„ ì„¸ìš°ëŠ” ë° ìœ ìš©í•©ë‹ˆë‹¤.
ì•±ì´ ì œê³µìžì— 대한 쿼리를 수행하고 ê·¸ 결과로 나온 {@link android.database.Cursor}를
{@link android.widget.ListView}ì— {@link android.widget.CursorAdapter}를 사용하여 표시합니다.
- {@link android.widget.CursorAdapter}ì˜ ì •ì˜ì— 따르면
+ {@link android.widget.CursorAdapter}ì˜ ì •ì˜ì— 따르면
{@link android.database.Cursor} ì•ˆì˜ ì—´ 중 하나는 <code>_ID</code>여야 합니다.
</p>
<p>
- 그러면 사용ìžê°€ ë°ì´í„°ë¥¼ 살펴보거나 수정하기 위하여
+ 그러면 사용ìžê°€ ë°ì´í„°ë¥¼ 살펴보거나 수정하기 위하여
UIì—서 í‘œì‹œëœ ì—¬ëŸ¬ í–‰ 중 하나를 ì„ íƒí•©ë‹ˆë‹¤. ì•±ì€ {@link android.widget.ListView}를 ì§€ì›í•˜ëŠ” {@link android.database.Cursor}ì—서 해당하는 ì—´ì„ ê°€ì ¸ì˜¤ê³ ,
해당 ì—´ì— ëŒ€í•œ <code>_ID</code> ê°’ì„ ê°€ì ¸ì™€ì„œ
-콘í…츠 URIì— ì¶”ê°€í•˜ê³ , 제공ìžì— 액세스 ìš”ì²­ì„ ì „ì†¡í•©ë‹ˆë‹¤. 그런 ë‹¤ìŒ ì œê³µìžëŠ”
+콘í…츠 URIì— ì¶”ê°€í•˜ê³ , 제공ìžì— 액세스 ìš”ì²­ì„ ì „ì†¡í•©ë‹ˆë‹¤. 그런 ë‹¤ìŒ ì œê³µìžëŠ”
사용ìžê°€ ì„ íƒí•œ 바로 ê·¸ í–‰ì— ëŒ€í•´ 쿼리 ë˜ëŠ” 수정 ìž‘ì—…ì„ ìˆ˜í–‰í•  수 있습니다.
</p>
<h3>콘í…츠 URI 패턴</h3>
<p>
- 수신ë˜ëŠ” 콘í…츠 URIì— ëŒ€í•´ ì–´ë–¤ 조치를 취할지 ì„ íƒí•˜ëŠ” ë° ë„ì›€ì´ ë˜ë„ë¡ í•˜ê¸° 위해 ì œê³µìž APIì—
-íŽ¸ì˜ í´ëž˜ìФ {@link android.content.UriMatcher}ê°€
-í¬í•¨ë˜ì–´ 있습니다. ì´ëŠ” 콘í…츠 URI "패턴"ì„ ì •ìˆ˜ê°’ìœ¼ë¡œ 매핑합니다. ì´ ì •ìˆ˜ê°’ì€ íŠ¹ì • íŒ¨í„´ì— ì¼ì¹˜í•˜ëŠ”
+ 수신ë˜ëŠ” 콘í…츠 URIì— ëŒ€í•´ ì–´ë–¤ 조치를 취할지 ì„ íƒí•˜ëŠ” ë° ë„ì›€ì´ ë˜ë„ë¡ í•˜ê¸° 위해 ì œê³µìž APIì—
+íŽ¸ì˜ í´ëž˜ìФ {@link android.content.UriMatcher}ê°€
+í¬í•¨ë˜ì–´ 있습니다. ì´ëŠ” 콘í…츠 URI "패턴"ì„ ì •ìˆ˜ê°’ìœ¼ë¡œ 매핑합니다. ì´ ì •ìˆ˜ê°’ì€ íŠ¹ì • íŒ¨í„´ì— ì¼ì¹˜í•˜ëŠ”
콘í…츠 URI ë˜ëŠ” 여러 URIì— ëŒ€í•´ ì›í•˜ëŠ” ìž‘ì—…ì„ ì„ íƒí•˜ëŠ” ë° <code>switch</code> 문ì—서 사용할 수 있습니다.
</p>
<p>
@@ -341,8 +341,8 @@ UIì—서 í‘œì‹œëœ ì—¬ëŸ¬ í–‰ 중 하나를 ì„ íƒí•©ë‹ˆë‹¤. ì•±ì€ {@link andro
</li>
</ul>
<p>
- 콘í…츠 URI ì²˜ë¦¬ì˜ ì„¤ê³„ì™€ ì½”ë”©ì— ëŒ€í•œ 예시로서 ìž„ì˜ì˜ 제공ìžë¥¼ 들어 보겠습니다.
-ì´ ì œê³µìžì—는 권한 <code>com.example.app.provider</code>ê°€ 있고
+ 콘í…츠 URI ì²˜ë¦¬ì˜ ì„¤ê³„ì™€ ì½”ë”©ì— ëŒ€í•œ 예시로서 ìž„ì˜ì˜ 제공ìžë¥¼ 들어 보겠습니다.
+ì´ ì œê³µìžì—는 권한 <code>com.example.app.provider</code>ê°€ 있고
ì´ ê¶Œí•œì´ í…Œì´ë¸”ì„ ê°€ë¦¬í‚¤ëŠ” ë‹¤ìŒ ì½˜í…츠 URI를 ì¸ì‹í•©ë‹ˆë‹¤.
</p>
<ul>
@@ -350,11 +350,11 @@ UIì—서 í‘œì‹œëœ ì—¬ëŸ¬ í–‰ 중 하나를 ì„ íƒí•©ë‹ˆë‹¤. ì•±ì€ {@link andro
<code>content://com.example.app.provider/table1</code>: <code>table1</code>ì´ë¼ëŠ” í…Œì´ë¸”입니다.
</li>
<li>
- <code>content://com.example.app.provider/table2/dataset1</code>:
+ <code>content://com.example.app.provider/table2/dataset1</code>:
<code>dataset1</code>ì´ë¼ëŠ” í…Œì´ë¸”입니다.
</li>
<li>
- <code>content://com.example.app.provider/table2/dataset2</code>:
+ <code>content://com.example.app.provider/table2/dataset2</code>:
<code>dataset2</code>ë¼ëŠ” í…Œì´ë¸”입니다.
</li>
<li>
@@ -363,7 +363,7 @@ UIì—서 í‘œì‹œëœ ì—¬ëŸ¬ í–‰ 중 하나를 ì„ íƒí•©ë‹ˆë‹¤. ì•±ì€ {@link andro
</ul>
<p>
제공ìžëŠ” ì¶”ê°€ëœ í–‰ IDê°€ 있으면 ì´ëŸ° 콘í…츠 URIë„ ì¸ì‹í•©ë‹ˆë‹¤.
-예를 들어, <code>table3</code>ì—서 <code>1</code>ì´ ì‹ë³„한 í–‰ì— ëŒ€í•œ
+예를 들어, <code>table3</code>ì—서 <code>1</code>ì´ ì‹ë³„한 í–‰ì— ëŒ€í•œ
<code>content://com.example.app.provider/table3/1</code>ì´ ì´ì— 해당ë©ë‹ˆë‹¤.
</p>
<p>
@@ -385,7 +385,7 @@ UIì—서 í‘œì‹œëœ ì—¬ëŸ¬ í–‰ 중 하나를 ì„ íƒí•©ë‹ˆë‹¤. ì•±ì€ {@link andro
<code>table3</code>ì— ëŒ€í•œ 콘í…츠 URI와 ì¼ì¹˜í•˜ì§€ 않습니다.
</dd>
<dt>
- <code>content://com.example.app.provider/table3/#</code>:
+ <code>content://com.example.app.provider/table3/#</code>:
<code>table3</code>ì˜ ë‹¨ì¼ í–‰ì— ëŒ€í•œ 콘í…츠 URI와 ì¼ì¹˜í•©ë‹ˆë‹¤. 예를 들어,
<code>6</code>ì´ ì‹ë³„한 í–‰ì— ëŒ€í•œ <code>content://com.example.app.provider/table3/6</code>ì´ ì´ì— 해당ë©ë‹ˆë‹¤.
@@ -393,8 +393,8 @@ UIì—서 í‘œì‹œëœ ì—¬ëŸ¬ í–‰ 중 하나를 ì„ íƒí•©ë‹ˆë‹¤. ì•±ì€ {@link andro
</dl>
<p>
ë‹¤ìŒ ì½”ë“œ ì¡°ê°ì€ {@link android.content.UriMatcher} 작업ì—서 ë©”ì„œë“œì˜ ìž‘ìš© ì›ë¦¬ë¥¼ 나타낸 것입니다.
- ì´ ì½”ë“œëŠ” í…Œì´ë¸”ì— ëŒ€í•œ 콘í…츠 URI 패턴 <code>content://&lt;authority&gt;/&lt;path&gt;</code>와
-ë‹¨ì¼ í–‰ì— ëŒ€í•œ 콘í…츠 URI 패턴 <code>content://&lt;authority&gt;/&lt;path&gt;/&lt;id&gt;</code>를 사용하여
+ ì´ ì½”ë“œëŠ” í…Œì´ë¸”ì— ëŒ€í•œ 콘í…츠 URI 패턴 <code>content://&lt;authority&gt;/&lt;path&gt;</code>와
+ë‹¨ì¼ í–‰ì— ëŒ€í•œ 콘í…츠 URI 패턴 <code>content://&lt;authority&gt;/&lt;path&gt;/&lt;id&gt;</code>를 사용하여
ë‹¨ì¼ í–‰ì— ëŒ€í•œ URI와 ì „ì²´ í…Œì´ë¸”ì— ëŒ€í•œ URI를 서로 다르게 처리합니다.
</p>
@@ -468,7 +468,7 @@ public class ExampleProvider extends ContentProvider {
}
</pre>
<p>
- ë˜ ë‹¤ë¥¸ í´ëž˜ìФ, {@link android.content.ContentUris}ê°€
+ ë˜ ë‹¤ë¥¸ í´ëž˜ìФ, {@link android.content.ContentUris}ê°€
콘í…츠 URIì˜ <code>id</code> ë¶€ë¶„ì„ ë‹¤ë£¨ê¸° 위한 íŽ¸ì˜ ë©”ì„œë“œë¥¼ 제공합니다. í´ëž˜ìФ {@link android.net.Uri}와
{@link android.net.Uri.Builder}ì—는
기존 {@link android.net.Uri} 개체를 구문 ë¶„ì„하고 새로운 개체를 구축하기 위한 íŽ¸ì˜ ë©”ì„œë“œê°€ í¬í•¨ë˜ì–´ 있습니다.
@@ -478,15 +478,15 @@ public class ExampleProvider extends ContentProvider {
<h2 id="ContentProvider">ContentProvider í´ëž˜ìФ 구현</h2>
<p>
{@link android.content.ContentProvider} ì¸ìŠ¤í„´ìŠ¤ëŠ”
-다른 애플리케ì´ì…˜ìœ¼ë¡œë¶€í„°ì˜ ìš”ì²­ì„ ì²˜ë¦¬í•˜ì—¬ êµ¬ì¡°í™”ëœ ë°ì´í„° ì„¸íŠ¸ë¡œì˜ ì•¡ì„¸ìŠ¤ë¥¼ 관리합니다.
-모든 í˜•íƒœì˜ ì•¡ì„¸ì„œê°€ ê¶ê·¹ì ìœ¼ë¡œ {@link android.content.ContentResolver}를 호출하며,
+다른 애플리케ì´ì…˜ìœ¼ë¡œë¶€í„°ì˜ ìš”ì²­ì„ ì²˜ë¦¬í•˜ì—¬ êµ¬ì¡°í™”ëœ ë°ì´í„° ì„¸íŠ¸ë¡œì˜ ì•¡ì„¸ìŠ¤ë¥¼ 관리합니다.
+모든 í˜•íƒœì˜ ì•¡ì„¸ì„œê°€ ê¶ê·¹ì ìœ¼ë¡œ {@link android.content.ContentResolver}를 호출하며,
그러면 ì´ê²ƒì´ 액세스 ê¶Œí•œì„ ì–»ê¸° 위해 구체ì ì¸ {@link android.content.ContentProvider} 메서드를 호출합니다.
</p>
<h3 id="RequiredAccess">필수 메서드</h3>
<p>
- ì¶”ìƒ í´ëž˜ìФ {@link android.content.ContentProvider}는
-개발ìžê°€ ë‚˜ë¦„ì˜ êµ¬ì²´ì ì¸ 하위 í´ëž˜ìŠ¤ì˜ ì¼ë¶€ë¶„으로 구현해야만 하는 여섯 가지 ì¶”ìƒ ë©”ì„œë“œë¥¼ ì •ì˜í•©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ ë©”ì„œë“œëŠ” 모ë‘
-({@link android.content.ContentProvider#onCreate() onCreate()}는 예외)
+ ì¶”ìƒ í´ëž˜ìФ {@link android.content.ContentProvider}는
+개발ìžê°€ ë‚˜ë¦„ì˜ êµ¬ì²´ì ì¸ 하위 í´ëž˜ìŠ¤ì˜ ì¼ë¶€ë¶„으로 구현해야만 하는 여섯 가지 ì¶”ìƒ ë©”ì„œë“œë¥¼ ì •ì˜í•©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ ë©”ì„œë“œëŠ” 모ë‘
+({@link android.content.ContentProvider#onCreate() onCreate()}는 예외)
콘í…츠 제공ìžì— 액세스하려 ì‹œë„ ì¤‘ì¸ í´ë¼ì´ì–¸íЏ 애플리케ì´ì…˜ì´ 호출합니다.
</p>
<dl>
@@ -503,8 +503,8 @@ query()}
{@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}
</dt>
<dd>
- 제공ìžì— 새로운 í–‰ì„ ì‚½ìž…í•©ë‹ˆë‹¤. ì¸ìˆ˜ë¥¼ 사용하여 ëŒ€ìƒ í…Œì´ë¸”ì„ ì„ íƒí•˜ê³ 
-사용할 ì—´ ê°’ì„ ê°€ì ¸ì˜µë‹ˆë‹¤.
+ 제공ìžì— 새로운 í–‰ì„ ì‚½ìž…í•©ë‹ˆë‹¤. ì¸ìˆ˜ë¥¼ 사용하여 ëŒ€ìƒ í…Œì´ë¸”ì„ ì„ íƒí•˜ê³ 
+사용할 ì—´ ê°’ì„ ê°€ì ¸ì˜µë‹ˆë‹¤.
새로 ì‚½ìž…ëœ í–‰ì— ëŒ€í•œ 콘í…츠 URI를 반환합니다.
</dd>
<dt>
@@ -512,7 +512,7 @@ query()}
update()}
</dt>
<dd>
- ì œê³µìž ë‚´ì˜ ê¸°ì¡´ í–‰ì„ ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤. ì¸ìˆ˜ë¥¼ 사용하여
+ ì œê³µìž ë‚´ì˜ ê¸°ì¡´ í–‰ì„ ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤. ì¸ìˆ˜ë¥¼ 사용하여
ì—…ë°ì´íŠ¸í•  í…Œì´ë¸”ê³¼ í–‰ì„ ì„ íƒí•˜ê³  ì—…ë°ì´íŠ¸í•œ ì—´ ê°’ì„ ê°€ì ¸ì˜µë‹ˆë‹¤. ì—…ë°ì´íŠ¸í•œ í–‰ 개수를 반환합니다.
</dd>
<dt>
@@ -526,20 +526,20 @@ update()}
{@link android.content.ContentProvider#getType(Uri) getType()}
</dt>
<dd>
- 콘í…츠 URIì— ìƒì‘하는 MIME ìœ í˜•ì„ ë°˜í™˜í•©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ”
+ 콘í…츠 URIì— ìƒì‘하는 MIME ìœ í˜•ì„ ë°˜í™˜í•©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ”
<a href="#MIMETypes">콘í…츠 ì œê³µìž MIME 유형</a> ì„¹ì…˜ì— ë” ìžì„¸í•˜ê²Œ 설명ë˜ì–´ 있습니다.
</dd>
<dt>
{@link android.content.ContentProvider#onCreate() onCreate()}
</dt>
<dd>
- 제공ìžë¥¼ 초기화합니다. Android ì‹œìŠ¤í…œì€ ì œê³µìžë¥¼ ìƒì„±í•œ ì§í›„
-ì´ ë©”ì„œë“œë¥¼ 호출합니다.
+ 제공ìžë¥¼ 초기화합니다. Android ì‹œìŠ¤í…œì€ ì œê³µìžë¥¼ ìƒì„±í•œ ì§í›„
+ì´ ë©”ì„œë“œë¥¼ 호출합니다.
{@link android.content.ContentResolver} 개체가 제공ìžì— 액세스하려고 시ë„í•  때까지는 제공ìžê°€ ìƒì„±ëœ ê²ƒì´ ì•„ë‹ˆë¼ëŠ” ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤.
</dd>
</dl>
<p>
- ì´ì™€ ê°™ì€ ë©”ì„œë“œì—는 ë™ì¼í•˜ê²Œ ì´ë¦„ 붙여진
+ ì´ì™€ ê°™ì€ ë©”ì„œë“œì—는 ë™ì¼í•˜ê²Œ ì´ë¦„ 붙여진
{@link android.content.ContentResolver} 메서드와 ê°™ì€ ì„œëª…ì´ ìžˆë‹¤ëŠ” ê²ƒì„ ëˆˆì—¬ê²¨ 보십시오.
</p>
<p>
@@ -548,8 +548,8 @@ update()}
<ul>
<li>
ì´ëŸ° 메서드는 모ë‘({@link android.content.ContentProvider#onCreate() onCreate()}는 예외)
- í•œêº¼ë²ˆì— ì—¬ëŸ¬ 스레드가 호출할 수 있으므로, 스레드로부터 안전해야 합니다.
-다중 ìŠ¤ë ˆë“œì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€
+ í•œêº¼ë²ˆì— ì—¬ëŸ¬ 스레드가 호출할 수 있으므로, 스레드로부터 안전해야 합니다.
+다중 ìŠ¤ë ˆë“œì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€
<a href="{@docRoot}guide/components/processes-and-threads.html">
프로세스 ë° ìŠ¤ë ˆë“œ</a> 주제를 참조하십시오.
</li>
@@ -560,16 +560,16 @@ onCreate()}ì—서는 긴 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” ê²ƒì„ ì‚¼ê°€ëŠ” ê²ƒì´ ì¢‹ìŠµë‹
섹션ì—서 ë”ìš± ìžì„¸ížˆ ë…¼ì˜í•©ë‹ˆë‹¤.
</li>
<li>
- ì´ì™€ ê°™ì€ ë©”ì„œë“œëŠ” 반드시 구현해야 하는 것ì´ì§€ë§Œ,
-예ìƒë˜ëŠ” ë°ì´í„° ìœ í˜•ì„ ë°˜í™˜í•˜ëŠ” 것 ì™¸ì— ë‹¬ë¦¬ 코드가 해야 í•  ì¼ì€ 없습니다.
+ ì´ì™€ ê°™ì€ ë©”ì„œë“œëŠ” 반드시 구현해야 하는 것ì´ì§€ë§Œ,
+예ìƒë˜ëŠ” ë°ì´í„° ìœ í˜•ì„ ë°˜í™˜í•˜ëŠ” 것 ì™¸ì— ë‹¬ë¦¬ 코드가 해야 í•  ì¼ì€ 없습니다.
예를 들어 몇몇 í…Œì´ë¸”ì— ë‹¤ë¥¸ 애플리케ì´ì…˜ì´ ë°ì´í„°ë¥¼ 삽입하지 못하ë„ë¡ ë°©ì§€í•˜ë ¤ê³  합니다. ì´ë ‡ê²Œ 하려면,
-{@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}로ì˜
+{@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}로ì˜
í˜¸ì¶œì„ ë¬´ì‹œí•˜ê³  0ì„ ë°˜í™˜í•˜ë©´ ë©ë‹ˆë‹¤.
</li>
</ul>
<h3 id="Query">query() 메서드 구현</h3>
<p>
-
+
{@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
ContentProvider.query()} 메서드는 {@link android.database.Cursor} 개체를 반환해야 하고, 그렇지 못할 경우
{@link java.lang.Exception}ì„ ë°œìƒì‹œí‚µë‹ˆë‹¤. SQLite ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ë°ì´í„° 저장소로 사용하는 경우,
@@ -587,7 +587,7 @@ ContentProvider.query()} 메서드는 {@link android.database.Cursor} 개체를
</p>
<p>
Android ì‹œìŠ¤í…œì´ í”„ë¡œì„¸ìŠ¤ 경계를 가로질러 {@link java.lang.Exception}ì„
- 통신으로 전달할 수 있어야 한다는 ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. Androidê°€ ì´ ìž‘ì—…ì„ í•  수 있는 경우는
+ 통신으로 전달할 수 있어야 한다는 ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. Androidê°€ ì´ ìž‘ì—…ì„ í•  수 있는 경우는
쿼리 오류 ì²˜ë¦¬ì— ìœ ìš©í•  수 있는 다ìŒê³¼ ê°™ì€ ì˜ˆì™¸ì— í•´ë‹¹ë  ë•Œìž…ë‹ˆë‹¤.
</p>
<ul>
@@ -608,16 +608,16 @@ ContentProvider.query()} 메서드는 {@link android.database.Cursor} 개체를
</p>
<p>
- ì´ ë©”ì„œë“œê°€ 새 í–‰ì— ëŒ€í•œ 콘í…츠 URI를 반환하는 ê²ƒì´ ì •ìƒìž…니다. ì´ê²ƒì„ 구성하려면 새 í–‰ì˜
-<code>_ID</code>(ë˜ëŠ” 다른 기본 키) ê°’ì„ í…Œì´ë¸”ì˜ ì½˜í…츠 URIì— ì¶”ê°€í•˜ë©°, ì´ë•Œ
+ ì´ ë©”ì„œë“œê°€ 새 í–‰ì— ëŒ€í•œ 콘í…츠 URI를 반환하는 ê²ƒì´ ì •ìƒìž…니다. ì´ê²ƒì„ 구성하려면 새 í–‰ì˜
+<code>_ID</code>(ë˜ëŠ” 다른 기본 키) ê°’ì„ í…Œì´ë¸”ì˜ ì½˜í…츠 URIì— ì¶”ê°€í•˜ë©°, ì´ë•Œ
{@link android.content.ContentUris#withAppendedId(Uri, long) withAppendedId()}를 사용합니다.
</p>
<h3 id="Delete">delete() 메서드 구현</h3>
<p>
{@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} ë©”ì„œë“œì˜ ê²½ìš°
- ë°ì´í„° 저장소ì—서 물리ì ìœ¼ë¡œ í–‰ì„ ì‚­ì œí•˜ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤.
-제공ìžì™€ ë™ê¸°í™” 어댑터를 함께 사용하고 있는 경우,
-ì‚­ì œëœ í–‰ì„ ì™„ì „ížˆ 제거하기보다는 "ì‚­ì œ" 플래그로 표시하는 ë°©ë²•ì„ ê³ ë ¤í•´ë³¼ 만합니다.
+ ë°ì´í„° 저장소ì—서 물리ì ìœ¼ë¡œ í–‰ì„ ì‚­ì œí•˜ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤.
+제공ìžì™€ ë™ê¸°í™” 어댑터를 함께 사용하고 있는 경우,
+ì‚­ì œëœ í–‰ì„ ì™„ì „ížˆ 제거하기보다는 "ì‚­ì œ" 플래그로 표시하는 ë°©ë²•ì„ ê³ ë ¤í•´ë³¼ 만합니다.
ë™ê¸°í™” 어댑터가 ì‚­ì œëœ í–‰ì„ í™•ì¸í•œ 다ìŒ, ì´ë¥¼ 제공ìžì—서 삭제하기 ì „ì— ìš°ì„  서버ì—서 제거합니다.
</p>
<h3 id="Update">Update() 메서드 구현</h3>
@@ -633,20 +633,20 @@ ContentProvider.query()}ê°€ 사용하는 것과 ê°™ì€ <code>selection</code> ë°
<h3 id="OnCreate">onCreate() 메서드 구현</h3>
<p>
Android ì‹œìŠ¤í…œì€ ì œê³µìžë¥¼ 시작할 때 {@link android.content.ContentProvider#onCreate()
-onCreate()}를 호출합니다. ì´ ë©”ì„œë“œì—서는 빠르게 실행ë˜ëŠ” 초기화만 수행해야 하며,
+onCreate()}를 호출합니다. ì´ ë©”ì„œë“œì—서는 빠르게 실행ë˜ëŠ” 초기화만 수행해야 하며,
ë°ì´í„°ë² ì´ìФ ìƒì„±ê³¼ ë°ì´í„° ë¡œë”©ì€ ì œê³µìžê°€ 실제로 ë°ì´í„°ì— 대한 ìš”ì²­ì„ ë°›ì„ ë•Œê¹Œì§€ 미뤄ë‘어야 합니다.
-
+
{@link android.content.ContentProvider#onCreate() onCreate()}ì—서 긴 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë©´
제공ìžì˜ ì‹œë™ ì†ë„ê°€ ëŠë ¤ì§‘니다. ì´ ë•Œë¬¸ì— ì œê³µìžì—서 다른 애플리케ì´ì…˜ìœ¼ë¡œ 전달ë˜ëŠ” ì‘ë‹µë„ ë”°ë¼ì„œ ëŠë ¤ì§‘니다.
</p>
<p>
예를 들어, SQLite ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 사용하는 경우
-{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}ì—서
+{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}ì—서
새로운 {@link android.database.sqlite.SQLiteOpenHelper} 개체를 ìƒì„±í•˜ê³ ,
그런 ë‹¤ìŒ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì²˜ìŒ ì—´ 때 SQL í…Œì´ë¸”ì„ ìƒì„±í•  수 있습니다. ì´ë¥¼ ìš©ì´í•˜ê²Œ 하기 위해
{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase
-getWritableDatabase()}를 ì²˜ìŒ í˜¸ì¶œí•˜ë©´ ì´ê²ƒì´ ìžë™ìœ¼ë¡œ
+getWritableDatabase()}를 ì²˜ìŒ í˜¸ì¶œí•˜ë©´ ì´ê²ƒì´ ìžë™ìœ¼ë¡œ
{@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
SQLiteOpenHelper.onCreate()} 메서드를 호출합니다.
</p>
@@ -776,7 +776,7 @@ protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
</p>
<p>
í…스트, HTML ë˜ëŠ” JPEG와 ê°™ì€ ë³´íŽ¸ì ì¸ ìœ í˜•ì˜ ë°ì´í„°ë¼ë©´
-{@link android.content.ContentProvider#getType(Uri) getType()}ì´
+{@link android.content.ContentProvider#getType(Uri) getType()}ì´
해당 ë°ì´í„°ì— 대한 표준 MIME ìœ í˜•ì„ ë°˜í™˜í•˜ëŠ” ê²ƒì´ ì •ìƒìž…니다. ì´ëŸ¬í•œ 표준 ìœ í˜•ì˜ ì „ì²´ 목ë¡ì€
<a href="http://www.iana.org/assignments/media-types/index.htm">IANA MIME 미디어 유형</a>
웹사ì´íЏì—서 확ì¸í•  수 있습니다.
@@ -807,17 +807,17 @@ MIME 형ì‹ì„ 반환해야 합니다.
개발ìžê°€ <code>&lt;name&gt;</code>ê³¼ <code>&lt;type&gt;</code>ì„ ì œê³µí•©ë‹ˆë‹¤.
<code>&lt;name&gt;</code> ê°’ì€ ì „ì²´ì ìœ¼ë¡œ 고유해야 하고,
<code>&lt;type&gt;</code> ê°’ì€ ìƒì‘하는 URI íŒ¨í„´ì— ê³ ìœ í•´ì•¼
-합니다. <code>&lt;name&gt;</code>으로 ì¢‹ì€ ì˜ˆëŠ” 회사 ì´ë¦„ì´ë‚˜
-애플리케ì´ì…˜ì˜ Android 패키지 ì´ë¦„ì„ ë“¤ 수 있습니다.
-<code>&lt;type&gt;</code>으로 ì¢‹ì€ ì˜ˆëŠ” URI와 ì—°ê´€ëœ í…Œì´ë¸”ì„ ì‹ë³„하는
+합니다. <code>&lt;name&gt;</code>으로 ì¢‹ì€ ì˜ˆëŠ” 회사 ì´ë¦„ì´ë‚˜
+애플리케ì´ì…˜ì˜ Android 패키지 ì´ë¦„ì„ ë“¤ 수 있습니다.
+<code>&lt;type&gt;</code>으로 ì¢‹ì€ ì˜ˆëŠ” URI와 ì—°ê´€ëœ í…Œì´ë¸”ì„ ì‹ë³„하는
문ìžì—´ì„ 들 수 있습니다.
</p>
</li>
</ul>
<p>
- 예를 들어 ì–´ë–¤ 제공ìžì˜ 권한ì´
-<code>com.example.app.provider</code>ì´ê³ , ì´ê²ƒì´
+ 예를 들어 ì–´ë–¤ 제공ìžì˜ 권한ì´
+<code>com.example.app.provider</code>ì´ê³ , ì´ê²ƒì´
<code>table1</code>ì´ë¼ëŠ” í…Œì´ë¸”ì„ ë…¸ì¶œí•˜ëŠ” 경우, <code>table1</code>ì˜ ì—¬ëŸ¬ í–‰ì— ëŒ€í•œ MIME ìœ í˜•ì€ ë‹¤ìŒê³¼ 같습니다.
</p>
<pre>
@@ -833,8 +833,8 @@ vnd.android.cursor.<strong>item</strong>/vnd.com.example.provider.table1
<p>
제공ìžê°€ 파ì¼ì„ 제공하는 경우,
{@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}를 구현합니다.
- ì´ ë©”ì„œë“œëŠ” 제공ìžê°€ 주어진 콘í…츠 URIì— ëŒ€í•´ 반환할 수 있는 파ì¼ì— 대한 MIME ìœ í˜•ì˜ {@link java.lang.String} ë°°ì—´ì„ ë°˜í™˜í•©ë‹ˆë‹¤.
-제공하는 MIME ìœ í˜•ì„ MIME 유형 í•„í„° ì¸ìˆ˜ 기준으로 í•„í„°ë§í•´ì•¼
+ ì´ ë©”ì„œë“œëŠ” 제공ìžê°€ 주어진 콘í…츠 URIì— ëŒ€í•´ 반환할 수 있는 파ì¼ì— 대한 MIME ìœ í˜•ì˜ {@link java.lang.String} ë°°ì—´ì„ ë°˜í™˜í•©ë‹ˆë‹¤.
+제공하는 MIME ìœ í˜•ì„ MIME 유형 í•„í„° ì¸ìˆ˜ 기준으로 í•„í„°ë§í•´ì•¼
í´ë¼ì´ì–¸íŠ¸ê°€ ì²˜ë¦¬í•˜ê³ ìž í•˜ëŠ” MIME 유형만 반환할 수 있습니다.
</p>
<p>
@@ -850,16 +850,16 @@ ContentProvider.getStreamTypes()} 메서드가 다ìŒê³¼ ê°™ì€ ë°°ì—´ì„ ë°˜í™˜
{ &quot;image/jpeg&quot;, &quot;image/png&quot;, &quot;image/gif&quot;}
</pre>
<p>
- ì•±ì´ <code>.jpg</code> 파ì¼ì—ë§Œ ê´€ì‹¬ì´ ìžˆëŠ” 경우ì—는
+ ì•±ì´ <code>.jpg</code> 파ì¼ì—ë§Œ ê´€ì‹¬ì´ ìžˆëŠ” 경우ì—는
í•„í„° 문ìžì—´ <code>*\/jpeg</code>으로 {@link android.content.ContentResolver#getStreamTypes(Uri, String)
- ContentResolver.getStreamTypes()}를 호출할 수 있습니다. 그러면
+ ContentResolver.getStreamTypes()}를 호출할 수 있습니다. 그러면
{@link android.content.ContentProvider#getStreamTypes(Uri, String)
ContentProvider.getStreamTypes()}ê°€ 다ìŒê³¼ ê°™ì´ ë°˜í™˜í•˜ëŠ” ê²ƒì´ ì •ìƒìž…니다.
<pre>
{&quot;image/jpeg&quot;}
</pre>
<p>
- 제공ìžê°€ í•„í„° 문ìžì—´ì—서 요청한 MIME 유형 중 제공하는 ê²ƒì´ ì—†ëŠ” 경우,
+ 제공ìžê°€ í•„í„° 문ìžì—´ì—서 요청한 MIME 유형 중 제공하는 ê²ƒì´ ì—†ëŠ” 경우,
{@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}ê°€
<code>null</code>ì„ ë°˜í™˜í•˜ëŠ” ê²ƒì´ ì •ìƒìž…니다.
</p>
@@ -868,76 +868,76 @@ ContentProvider.getStreamTypes()} 메서드가 다ìŒê³¼ ê°™ì€ ë°°ì—´ì„ ë°˜í™˜
<!-- Implementing a Contract Class -->
<h2 id="ContractClass">계약 í´ëž˜ìФ 구현</h2>
<p>
- 계약 í´ëž˜ìŠ¤ëŠ” <code>public final</code> í´ëž˜ìŠ¤ë¡œ, ì´ ì•ˆì— URI, ì—´ ì´ë¦„, MIME 유형ì˜
-ìƒìˆ˜ ì •ì˜ ë° ì œê³µìžì— ê´€ë ¨ëœ ë‹¤ë¥¸ 메타 ë°ì´í„°ê°€ 들어 있습니다.
+ 계약 í´ëž˜ìŠ¤ëŠ” <code>public final</code> í´ëž˜ìŠ¤ë¡œ, ì´ ì•ˆì— URI, ì—´ ì´ë¦„, MIME 유형ì˜
+ìƒìˆ˜ ì •ì˜ ë° ì œê³µìžì— ê´€ë ¨ëœ ë‹¤ë¥¸ 메타 ë°ì´í„°ê°€ 들어 있습니다.
ì´ í´ëž˜ìŠ¤ëŠ” URI, ì—´ ì´ë¦„ ë“±ì˜ ì‹¤ì œ ê°’ì— ë³€ê²½ëœ ë‚´ìš©ì´ ìžˆë”ë¼ë„
- 제공ìžì— 올바르게 액세스할 수 있ë„ë¡ ë³´ìž¥í•˜ì—¬ 제공ìžì™€
+ 제공ìžì— 올바르게 액세스할 수 있ë„ë¡ ë³´ìž¥í•˜ì—¬ 제공ìžì™€
다른 애플리케ì´ì…˜ 사ì´ì˜ ê³„ì•½ì„ í™•ë¦½í•©ë‹ˆë‹¤.
</p>
<p>
- 계약 í´ëž˜ìŠ¤ê°€ 개발ìžì—게 유용한 ì´ìœ ëŠ” ë˜ ìžˆìŠµë‹ˆë‹¤. ì´ í´ëž˜ìŠ¤ëŠ” 보통 ìžì‹ ì˜ ìƒìˆ˜ ì´ë¦„으로
-니모닉 ì´ë¦„ì„ ê°€ì§€ê¸° ë•Œë¬¸ì— ê°œë°œìžê°€ ì—´ ì´ë¦„ ë˜ëŠ” URIì— ìž˜ëª»ëœ ê°’ì„ ì‚¬ìš©í•  ê°€ëŠ¥ì„±ì´ ëœí•©ë‹ˆë‹¤.
-ì´ê²ƒë„ í´ëž˜ìŠ¤ì˜ ì¼ì¢…ì´ê¸° ë•Œë¬¸ì— Javadoc 문서를 í¬í•¨í•  수 있습니다.
+ 계약 í´ëž˜ìŠ¤ê°€ 개발ìžì—게 유용한 ì´ìœ ëŠ” ë˜ ìžˆìŠµë‹ˆë‹¤. ì´ í´ëž˜ìŠ¤ëŠ” 보통 ìžì‹ ì˜ ìƒìˆ˜ ì´ë¦„으로
+니모닉 ì´ë¦„ì„ ê°€ì§€ê¸° ë•Œë¬¸ì— ê°œë°œìžê°€ ì—´ ì´ë¦„ ë˜ëŠ” URIì— ìž˜ëª»ëœ ê°’ì„ ì‚¬ìš©í•  ê°€ëŠ¥ì„±ì´ ëœí•©ë‹ˆë‹¤.
+ì´ê²ƒë„ í´ëž˜ìŠ¤ì˜ ì¼ì¢…ì´ê¸° ë•Œë¬¸ì— Javadoc 문서를 í¬í•¨í•  수 있습니다.
Eclipse와 ê°™ì€ í†µí•© 개발 í™˜ê²½ì€ ê³„ì•½ í´ëž˜ìŠ¤ì˜ ìƒìˆ˜ ì´ë¦„ì„ ìžë™ 완성하고
해당 ìƒìˆ˜ì— 대한 Javadocì„ í‘œì‹œí•  수 있습니다.
</p>
<p>
- 개발ìžê°€ 애플리케ì´ì…˜ì—서 계약 í´ëž˜ìŠ¤ì˜ í´ëž˜ìФ 파ì¼ì— 액세스할 수는 없지만
+ 개발ìžê°€ 애플리케ì´ì…˜ì—서 계약 í´ëž˜ìŠ¤ì˜ í´ëž˜ìФ 파ì¼ì— 액세스할 수는 없지만
ì—¬ëŸ¬ë¶„ì´ ì œê³µí•˜ëŠ” <code>.jar</code> 파ì¼ì—서 ì´ë¥¼ 애플리케ì´ì…˜ 안으로 ì •ì ìœ¼ë¡œ 컴파ì¼ë§í•  수 있습니다.
</p>
<p>
- {@link android.provider.ContactsContract} í´ëž˜ìŠ¤ì™€
+ {@link android.provider.ContactsContract} í´ëž˜ìŠ¤ì™€
ì´ì— ì¤‘ì²©ëœ í´ëž˜ìŠ¤ê°€ 계약 í´ëž˜ìŠ¤ì˜ ì˜ˆì‹œìž…ë‹ˆë‹¤.
</p>
<h2 id="Permissions">콘í…츠 ì œê³µìž ê¶Œí•œ 구현</h2>
<p>
Android ì‹œìŠ¤í…œì˜ ëª¨ë“  ì¸¡ë©´ì— ëŒ€í•œ 권한과 액세스는
<a href="{@docRoot}guide/topics/security/security.html">보안 ë° ê¶Œí•œ</a> ì£¼ì œì— ì„¤ëª…ë˜ì–´ 있습니다.
- <a href="{@docRoot}guide/topics/data/data-storage.html">ë°ì´í„° 저장소</a> 주제ì—서ë„
+ <a href="{@docRoot}guide/topics/data/data-storage.html">ë°ì´í„° 저장소</a> 주제ì—서ë„
다양한 ìœ í˜•ì˜ ì €ìž¥ì†Œì— ì ìš©ë˜ëŠ” 보안 ë° ê¶Œí•œì„ ì„¤ëª…í•˜ê³  있습니다.
간략히 ë§í•´ ìš”ì ì€ 다ìŒê³¼ 같습니다.
</p>
<ul>
<li>
- 기본ì ìœ¼ë¡œ, ê¸°ê¸°ì˜ ë‚´ë¶€ ì €ìž¥ì†Œì— ì €ìž¥ëœ ë°ì´í„° 파ì¼ì€
+ 기본ì ìœ¼ë¡œ, ê¸°ê¸°ì˜ ë‚´ë¶€ ì €ìž¥ì†Œì— ì €ìž¥ëœ ë°ì´í„° 파ì¼ì€
본ì¸ì˜ 애플리케ì´ì…˜ê³¼ ì œê³µìž ì „ìš©ìž…ë‹ˆë‹¤.
</li>
<li>
- 본ì¸ì´ ìƒì„±í•œ {@link android.database.sqlite.SQLiteDatabase} ë°ì´í„°ë² ì´ìŠ¤ëŠ”
+ 본ì¸ì´ ìƒì„±í•œ {@link android.database.sqlite.SQLiteDatabase} ë°ì´í„°ë² ì´ìŠ¤ëŠ”
본ì¸ì˜ 애플리케ì´ì…˜ê³¼ 제공ìžë§Œì˜ 비공개 ë°ì´í„°ìž…니다.
</li>
<li>
기본ì ìœ¼ë¡œ 외부 ì €ìž¥ì†Œì— ì €ìž¥í•˜ëŠ” ë°ì´í„° 파ì¼ì€ <em>공개</em>ì´ê³ 
-<em>누구나 ì½ì„ 수 있습니다</em>. 외부 ì €ìž¥ì†Œì— ìžˆëŠ” 파ì¼ë¡œì˜ 액세스를 제공하는 ë° ì½˜í…츠 제공ìžë¥¼ 쓸 수는
+<em>누구나 ì½ì„ 수 있습니다</em>. 외부 ì €ìž¥ì†Œì— ìžˆëŠ” 파ì¼ë¡œì˜ 액세스를 제공하는 ë° ì½˜í…츠 제공ìžë¥¼ 쓸 수는
없습니다. 다른 애플리케ì´ì…˜ì´ 다른 API í˜¸ì¶œì„ ì‚¬ìš©í•˜ì—¬ 해당 파ì¼ì„ ì½ê³  쓸 수 있기 때문입니다.
</li>
<li>
ê¸°ê¸°ì˜ ë‚´ë¶€ ì €ìž¥ì†Œì— ìžˆëŠ” íŒŒì¼ ë˜ëŠ” SQLite ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 열거나 ìƒì„±í•˜ê¸° 위한 메서드 호출ì€
-다른 모든 애플리케ì´ì…˜ì— ì½ê¸° ë° ì“°ê¸° 액세스 ê¶Œí•œì„ í—ˆê°€í•  ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤.
+다른 모든 애플리케ì´ì…˜ì— ì½ê¸° ë° ì“°ê¸° 액세스 ê¶Œí•œì„ í—ˆê°€í•  ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤.
ë‚´ë¶€ 파ì¼ì´ë‚˜ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 제공ìžì˜ 리í¬ì§€í† ë¦¬ë¡œ 사용하고
-"누구나 ì½ì„ 수 있는" ë˜ëŠ” "누구나 쓸 수 있는" 액세스를 부여하면
-매니페스트ì—서 제공ìžì— 대해 설정한 ê¶Œí•œì´ ë°ì´í„°ë¥¼ 보호하지 못합니다.
+"누구나 ì½ì„ 수 있는" ë˜ëŠ” "누구나 쓸 수 있는" 액세스를 부여하면
+매니페스트ì—서 제공ìžì— 대해 설정한 ê¶Œí•œì´ ë°ì´í„°ë¥¼ 보호하지 못합니다.
ë‚´ë¶€ 저장소 ì•ˆì— ìžˆëŠ” 파ì¼ê³¼ ë°ì´í„°ë² ì´ìŠ¤ì— ëŒ€í•œê¸°ë³¸ 액세스는 "비공개"ì´ë©°, 제공ìžì˜ 리í¬ì§€í† ë¦¬ê°€ ì´ê²ƒì„ 변경하면 안 ë©ë‹ˆë‹¤.
</li>
</ul>
<p>
- ë°ì´í„°ë¡œì˜ 액세스를 제어하기 위해 콘í…츠 ì œê³µìž ê¶Œí•œì„ ì“°ê³ ìž í•˜ëŠ” 경우,
-ë°ì´í„°ë¥¼ ë‚´ë¶€ 파ì¼, SQLite ë°ì´í„°ë² ì´ìФ ë˜ëŠ” "í´ë¼ìš°ë“œ"(예: ì›ê²© 서버) 안ì˜
+ ë°ì´í„°ë¡œì˜ 액세스를 제어하기 위해 콘í…츠 ì œê³µìž ê¶Œí•œì„ ì“°ê³ ìž í•˜ëŠ” 경우,
+ë°ì´í„°ë¥¼ ë‚´ë¶€ 파ì¼, SQLite ë°ì´í„°ë² ì´ìФ ë˜ëŠ” "í´ë¼ìš°ë“œ"(예: ì›ê²© 서버) 안ì˜
ë‚´ë¶€ 파ì¼ë¡œ 저장해야 하고, 파ì¼ê³¼ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 애플리케ì´ì…˜ë§Œì˜ 비공개로 유지해야 합니다.
</p>
<h3>권한 구현</h3>
<p>
- 기본 ë°ì´í„°ê°€ 비공개ë¼ê³  하ë”ë¼ë„ 모든 애플리케ì´ì…˜ì´ 제공ìžë¥¼ ì½ê³  제공ìžì— 쓸 수 있습니다.
+ 기본 ë°ì´í„°ê°€ 비공개ë¼ê³  하ë”ë¼ë„ 모든 애플리케ì´ì…˜ì´ 제공ìžë¥¼ ì½ê³  제공ìžì— 쓸 수 있습니다.
기본ì ìœ¼ë¡œ 제공ìžì—는 ê¶Œí•œì´ ì„¤ì •ë˜ì–´ 있지 않기 때문입니다. ì´ë¥¼ 변경하려면,
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
&lt;provider&gt;</a></code> ìš”ì†Œì˜ ì†ì„±ì´ë‚˜ 하위 요소를 사용하여
-매니페스트 파ì¼ì— 있는 제공ìžì˜ ê¶Œí•œì„ ì„¤ì •í•©ë‹ˆë‹¤. ê¶Œí•œì€ ì œê³µìž ì „ì²´ì— ì ìš©ë˜ë„ë¡ ì„¤ì •í•  ìˆ˜ë„ ìžˆê³ ,
+매니페스트 파ì¼ì— 있는 제공ìžì˜ ê¶Œí•œì„ ì„¤ì •í•©ë‹ˆë‹¤. ê¶Œí•œì€ ì œê³µìž ì „ì²´ì— ì ìš©ë˜ë„ë¡ ì„¤ì •í•  ìˆ˜ë„ ìžˆê³ ,
특정 í…Œì´ë¸”ì—, ë˜ëŠ” 심지어 특정 ë ˆì½”ë“œì— ì ìš©ë˜ê²Œ í•  ìˆ˜ë„ ìžˆê³  세 가지 모ë‘를 íƒí•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
</p>
<p>
- 제공ìžì— 대한 ê¶Œí•œì€ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ 파ì¼ì— 있는 하나 ì´ìƒì˜
+ 제공ìžì— 대한 ê¶Œí•œì€ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ 파ì¼ì— 있는 하나 ì´ìƒì˜
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">
- &lt;permission&gt;</a></code> 요소로 ì •ì˜í•©ë‹ˆë‹¤.
+ &lt;permission&gt;</a></code> 요소로 ì •ì˜í•©ë‹ˆë‹¤.
제공ìžì— 고유한 ê¶Œí•œì„ ì„¤ì •í•˜ë ¤ë©´
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#nm">
android:name</a></code> ì†ì„±ì— Java ìŠ¤íƒ€ì¼ ë²”ìœ„ë¥¼ 사용합니다. 예를 들어 ì½ê¸° ê¶Œí•œì˜ ì´ë¦„ì„
@@ -945,7 +945,7 @@ Eclipse와 ê°™ì€ í†µí•© 개발 í™˜ê²½ì€ ê³„ì•½ í´ëž˜ìŠ¤ì˜ ìƒìˆ˜ ì´ë¦„ì„ ì
</p>
<p>
- ë‹¤ìŒ ëª©ë¡ì€ ì œê³µìž ê¶Œí•œì˜ ë²”ìœ„ë¥¼ 설명한 것입니다.
+ ë‹¤ìŒ ëª©ë¡ì€ ì œê³µìž ê¶Œí•œì˜ ë²”ìœ„ë¥¼ 설명한 것입니다.
ì œê³µìž ì „ì²´ì— ì ìš©ë˜ëŠ” 권한부터 시작하여 ì ì°¨ ì„¸ë¶„í™”ëœ ê¶Œí•œì´ ë©ë‹ˆë‹¤.
보다 ì„¸ë¶€í™”ëœ ê¶Œí•œì´ ë²”ìœ„ê°€ í° ê²ƒë³´ë‹¤ 우선합니다.
</p>
@@ -954,9 +954,9 @@ Eclipse와 ê°™ì€ í†µí•© 개발 í™˜ê²½ì€ ê³„ì•½ í´ëž˜ìŠ¤ì˜ ìƒìˆ˜ ì´ë¦„ì„ ì
ë‹¨ì¼ ì½ê¸°-쓰기 ì œê³µìž ìˆ˜ì¤€ 권한
</dt>
<dd>
- ì œê³µìž ì „ì²´ë¡œì˜ ì½ê¸°ì™€ 쓰기 액세스 양쪽 모ë‘를 제어하는 í•˜ë‚˜ì˜ ê¶Œí•œìœ¼ë¡œ,
+ ì œê³µìž ì „ì²´ë¡œì˜ ì½ê¸°ì™€ 쓰기 액세스 양쪽 모ë‘를 제어하는 í•˜ë‚˜ì˜ ê¶Œí•œìœ¼ë¡œ,
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
- &lt;provider&gt;</a></code> 요소ì˜
+ &lt;provider&gt;</a></code> 요소ì˜
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
android:permission</a></code> ì†ì„±ìœ¼ë¡œ 지정ë©ë‹ˆë‹¤.
</dd>
@@ -978,14 +978,14 @@ Eclipse와 ê°™ì€ í†µí•© 개발 í™˜ê²½ì€ ê³„ì•½ í´ëž˜ìŠ¤ì˜ ìƒìˆ˜ ì´ë¦„ì„ ì
경로 수준 권한
</dt>
<dd>
- 제공ìžì˜ 콘í…츠 URIì— ëŒ€í•œ ì½ê¸°, 쓰기 ë˜ëŠ” ì½ê¸°/쓰기 권한입니다. ì œì–´í•˜ê³ ìž í•˜ëŠ” ê° URI를 ì§ì ‘ 지정하ë˜,
-ì´ë•Œ
+ 제공ìžì˜ 콘í…츠 URIì— ëŒ€í•œ ì½ê¸°, 쓰기 ë˜ëŠ” ì½ê¸°/쓰기 권한입니다. ì œì–´í•˜ê³ ìž í•˜ëŠ” ê° URI를 ì§ì ‘ 지정하ë˜,
+ì´ë•Œ
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
- &lt;provider&gt;</a></code> 요소ì˜
+ &lt;provider&gt;</a></code> 요소ì˜
<code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">
- &lt;path-permission&gt;</a></code> 하위 요소를 사용합니다. 지정하는 콘í…츠 URI마다
-ì½ê¸°/쓰기 권한, ì½ê¸° 권한 ë˜ëŠ” 쓰기 ê¶Œí•œì„ í•˜ë‚˜ì”© 지정하거나 ì…‹ 모ë‘를 지정할 수 있습니다.
-ì½ê¸° ë° ì“°ê¸° ê¶Œí•œì´ ì½ê¸°/쓰기 권한보다 우선합니다.
+ &lt;path-permission&gt;</a></code> 하위 요소를 사용합니다. 지정하는 콘í…츠 URI마다
+ì½ê¸°/쓰기 권한, ì½ê¸° 권한 ë˜ëŠ” 쓰기 ê¶Œí•œì„ í•˜ë‚˜ì”© 지정하거나 ì…‹ 모ë‘를 지정할 수 있습니다.
+ì½ê¸° ë° ì“°ê¸° ê¶Œí•œì´ ì½ê¸°/쓰기 권한보다 우선합니다.
ë˜í•œ, 경로 수준 ê¶Œí•œì´ ì œê³µìž ìˆ˜ì¤€ 권한보다 우선합니다.
</dd>
<dt>
@@ -993,18 +993,18 @@ Eclipse와 ê°™ì€ í†µí•© 개발 í™˜ê²½ì€ ê³„ì•½ í´ëž˜ìŠ¤ì˜ ìƒìˆ˜ ì´ë¦„ì„ ì
</dt>
<dd>
애플리케ì´ì…˜ì— 임시 액세스를 허용하는 권한 수준입니다.
-해당 애플리케ì´ì…˜ì— ì¼ë°˜ì ìœ¼ë¡œ 요구ë˜ëŠ” ê¶Œí•œì´ ì—†ë”ë¼ë„ 무관합니다.
+해당 애플리케ì´ì…˜ì— ì¼ë°˜ì ìœ¼ë¡œ 요구ë˜ëŠ” ê¶Œí•œì´ ì—†ë”ë¼ë„ 무관합니다.
임시 액세스 ê¸°ëŠ¥ì€ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì—서 요청해야 하는
-권한과 애플리케ì´ì…˜ 개수를 줄여ì¤ë‹ˆë‹¤. 임시 ê¶Œí•œì„ ì‚¬ìš©í•˜ëŠ” 경우,
-제공ìžì— 대하여 "ì˜êµ¬" ê¶Œí•œì„ í•„ìš”ë¡œí•˜ëŠ” 애플리케ì´ì…˜ì€
+권한과 애플리케ì´ì…˜ 개수를 줄여ì¤ë‹ˆë‹¤. 임시 ê¶Œí•œì„ ì‚¬ìš©í•˜ëŠ” 경우,
+제공ìžì— 대하여 "ì˜êµ¬" ê¶Œí•œì„ í•„ìš”ë¡œí•˜ëŠ” 애플리케ì´ì…˜ì€
모든 ë°ì´í„°ì— ì§€ì†ì ìœ¼ë¡œ 액세스하는 것들ë¿ìž…니다.
<p>
- ì´ë©”ì¼ ì œê³µìžì™€ ì•±ì„ êµ¬í˜„í•  때 필요한 ê¶Œí•œì„ ì˜ˆë¡œ 들어 보겠습니다.
-외부 ì´ë¯¸ì§€ ë·°ì–´ 애플리케ì´ì…˜ìœ¼ë¡œ 하여금 제공ìžì—서 보낸 사진 첨부 파ì¼ì„
-표시하ë„ë¡ í—ˆìš©í•˜ê³ ìž í•œë‹¤ê³  가정합니다. ê¶Œí•œì„ ìš”êµ¬í•˜ì§€ 않고 ì´ë¯¸ì§€ ë·°ì–´ì— í•„ìˆ˜ 액세스를 부여하려면,
-ì‚¬ì§„ì— ëŒ€í•œ 콘í…츠 URIì— í•´ë‹¨ë˜ëŠ” 임시 ê¶Œí•œì„ ì„¤ì •í•˜ì‹­ì‹œì˜¤.
+ ì´ë©”ì¼ ì œê³µìžì™€ ì•±ì„ êµ¬í˜„í•  때 필요한 ê¶Œí•œì„ ì˜ˆë¡œ 들어 보겠습니다.
+외부 ì´ë¯¸ì§€ ë·°ì–´ 애플리케ì´ì…˜ìœ¼ë¡œ 하여금 제공ìžì—서 보낸 사진 첨부 파ì¼ì„
+표시하ë„ë¡ í—ˆìš©í•˜ê³ ìž í•œë‹¤ê³  가정합니다. ê¶Œí•œì„ ìš”êµ¬í•˜ì§€ 않고 ì´ë¯¸ì§€ ë·°ì–´ì— í•„ìˆ˜ 액세스를 부여하려면,
+ì‚¬ì§„ì— ëŒ€í•œ 콘í…츠 URIì— í•´ë‹¨ë˜ëŠ” 임시 ê¶Œí•œì„ ì„¤ì •í•˜ì‹­ì‹œì˜¤.
사용ìžê°€ ì‚¬ì§„ì„ í‘œì‹œí•˜ê¸°ë¥¼ ì›í•  때 ì•±ì´ ì‚¬ì§„ì˜ ì½˜í…츠 URI와 권한 플래그를 í¬í•¨í•˜ëŠ” ì¸í…트를
-ì´ë¯¸ì§€ ë·°ì–´ì— ë³´ë‚´ë„ë¡ ì´ë©”ì¼ ì•±ì„ ì„¤ê³„í•©ë‹ˆë‹¤. 그러면 해당 ì´ë¯¸ì§€ ë·°ì–´ê°€
+ì´ë¯¸ì§€ ë·°ì–´ì— ë³´ë‚´ë„ë¡ ì´ë©”ì¼ ì•±ì„ ì„¤ê³„í•©ë‹ˆë‹¤. 그러면 해당 ì´ë¯¸ì§€ ë·°ì–´ê°€
ì´ë©”ì¼ ì œê³µìžì— 사진 ê²€ìƒ‰ì„ ì¿¼ë¦¬í•  수 있으며, ì´ ë·°ì–´ì— ì œê³µìžì— 대한 ì •ìƒì ì¸ ì½ê¸° ê¶Œí•œì´ ì—†ë”ë¼ë„ 무방합니다.
</p>
@@ -1017,29 +1017,29 @@ Eclipse와 ê°™ì€ í†µí•© 개발 í™˜ê²½ì€ ê³„ì•½ í´ëž˜ìŠ¤ì˜ ìƒìˆ˜ ì´ë¦„ì„ ì
<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
&lt;grant-uri-permission&gt;</a></code> 하위 요소를
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
- &lt;provider&gt;</a></code> ìš”ì†Œì— ì¶”ê°€í•˜ë©´ ë©ë‹ˆë‹¤. 임시 ê¶Œí•œì„ ì‚¬ìš©í•˜ëŠ” 경우,
+ &lt;provider&gt;</a></code> ìš”ì†Œì— ì¶”ê°€í•˜ë©´ ë©ë‹ˆë‹¤. 임시 ê¶Œí•œì„ ì‚¬ìš©í•˜ëŠ” 경우,
제공ìžì—서 콘í…츠 URIì— ëŒ€í•œ ì§€ì›ì„ 제거할 때마다 {@link android.content.Context#revokeUriPermission(Uri, int)
- Context.revokeUriPermission()}ì„ í˜¸ì¶œí•´ì•¼ 합니다.
+ Context.revokeUriPermission()}ì„ í˜¸ì¶œí•´ì•¼ 합니다.
그러면 콘í…츠 URIê°€ 임시 권한과 ì—°ê´€ë©ë‹ˆë‹¤.
</p>
<p>
ì†ì„±ì˜ ê°’ì— ë”°ë¼ ì œê³µìžì— 액세스 가능한 ì •ë„ê°€ ê²°ì •ë©ë‹ˆë‹¤.
- ì†ì„±ì´ <code>true</code>로 설정ë˜ì–´ 있는 경우ë¼ë©´
-ì‹œìŠ¤í…œì´ ì œê³µìž ì „ì²´ì— ìž„ì‹œ ê¶Œí•œì„ í—ˆìš©í•˜ë©°, ì œê³µìž ìˆ˜ì¤€ ë˜ëŠ”
+ ì†ì„±ì´ <code>true</code>로 설정ë˜ì–´ 있는 경우ë¼ë©´
+ì‹œìŠ¤í…œì´ ì œê³µìž ì „ì²´ì— ìž„ì‹œ ê¶Œí•œì„ í—ˆìš©í•˜ë©°, ì œê³µìž ìˆ˜ì¤€ ë˜ëŠ”
경로 수준 권한ì—서 요구하는 다른 모든 ê¶Œí•œì„ ìž¬ì •ì˜í•©ë‹ˆë‹¤.
</p>
<p>
- ì´ í”Œëž˜ê·¸ê°€ <code>false</code>로 설정ë˜ë©´, 반드시
+ ì´ í”Œëž˜ê·¸ê°€ <code>false</code>로 설정ë˜ë©´, 반드시
<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
&lt;grant-uri-permission&gt;</a></code> 하위 요소를
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
- &lt;provider&gt;</a></code> ìš”ì†Œì— ì¶”ê°€í•´ì•¼ 합니다. ê° í•˜ìœ„ 요소는 임시 ê¶Œí•œì„ í—ˆìš©í•œ
+ &lt;provider&gt;</a></code> ìš”ì†Œì— ì¶”ê°€í•´ì•¼ 합니다. ê° í•˜ìœ„ 요소는 임시 ê¶Œí•œì„ í—ˆìš©í•œ
콘í…츠 URI(하나 ë˜ëŠ” 여러 ê°œ)를 나타냅니다.
</p>
<p>
애플리케ì´ì…˜ì— 임시 액세스를 위임하려면, ì¸í…트ì—
{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} ë˜ëŠ”
-{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION} 플래그, ë˜ëŠ” 둘 모ë‘ê°€ 들어 있어야 합니다. ì´ë“¤ì€
+{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION} 플래그, ë˜ëŠ” 둘 모ë‘ê°€ 들어 있어야 합니다. ì´ë“¤ì€
{@link android.content.Intent#setFlags(int) setFlags()} 메서드로 설정ë©ë‹ˆë‹¤.
</p>
<p>
@@ -1087,7 +1087,7 @@ android:authorities}</a>)
권한
</dt>
<dd>
- 제공ìžì˜ ë°ì´í„°ì— 액세스하기 위해 다른 애플리케ì´ì…˜ì´
+ 제공ìžì˜ ë°ì´í„°ì— 액세스하기 위해 다른 애플리케ì´ì…˜ì´
반드시 가지고 있어야 하는 ê¶Œí•œì„ ë‚˜íƒ€ë‚´ëŠ” ì†ì„±ìž…니다.
<ul>
<li>
@@ -1108,7 +1108,7 @@ android:authorities}</a>)
</li>
</ul>
<p>
- ê°ì¢… 권한과 ê·¸ì— ìƒì‘하는 ì†ì„±ì€
+ ê°ì¢… 권한과 ê·¸ì— ìƒì‘하는 ì†ì„±ì€
<a href="#Permissions">콘í…츠 ì œê³µìž ê¶Œí•œ 구현</a> ì„¹ì…˜ì— ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</p>
@@ -1117,7 +1117,7 @@ android:authorities}</a>)
시작 ë° ì œì–´ ì†ì„±
</dt>
<dd>
- ì´ì™€ ê°™ì€ ì†ì„±ì€ Android ì‹œìŠ¤í…œì´ ì œê³µìžë¥¼ 시작하는 방법과 시ì ,
+ ì´ì™€ ê°™ì€ ì†ì„±ì€ Android ì‹œìŠ¤í…œì´ ì œê³µìžë¥¼ 시작하는 방법과 시ì ,
제공ìžì˜ 프로세스 특징과 기타 런타임 설정 ë“±ì„ ê²°ì •í•©ë‹ˆë‹¤.
<ul>
<li>
@@ -1130,12 +1130,12 @@ android:authorities}</a>)
</li>
<li>
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#init">
- android:initOrder</a></code>: ê°™ì€ í”„ë¡œì„¸ìŠ¤ ë‚´ì˜ ë‹¤ë¥¸ 제공ìžì™€ 비êµí•˜ì—¬
+ android:initOrder</a></code>: ê°™ì€ í”„ë¡œì„¸ìŠ¤ ë‚´ì˜ ë‹¤ë¥¸ 제공ìžì™€ 비êµí•˜ì—¬
ì´ ì œê³µìžê°€ 시작ë˜ì–´ì•¼ 하는 순서입니다.
</li>
<li>
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#multi">
- android:multiProcess</a></code>: í´ë¼ì´ì–¸íŠ¸ë¥¼ 호출하는 것과
+ android:multiProcess</a></code>: í´ë¼ì´ì–¸íŠ¸ë¥¼ 호출하는 것과
ê°™ì€ í”„ë¡œì„¸ìŠ¤ì—서 ì‹œìŠ¤í…œì´ ì œê³µìžë¥¼ 시작할 수 있게 해주는 플래그입니다.
</li>
<li>
@@ -1145,7 +1145,7 @@ android:authorities}</a>)
</li>
<li>
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#sync">
- android:syncable</a></code>: 제공ìžì˜ ë°ì´í„°ê°€
+ android:syncable</a></code>: 제공ìžì˜ ë°ì´í„°ê°€
ì„œë²„ì— ìžˆëŠ” ë°ì´í„°ì™€ ë™ê¸°í™”ë  ì˜ˆì •ìž„ì„ ë‚˜íƒ€ë‚´ëŠ” 플래그입니다.
</li>
</ul>
@@ -1165,7 +1165,7 @@ android:authorities}</a>)
<li>
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#icon">
android:icon</a></code>: 제공ìžì˜ ì•„ì´ì½˜ì´ 들어 있는 드로어블 리소스입니다.
- ì´ ì•„ì´ì½˜ì€
+ ì´ ì•„ì´ì½˜ì€
<em>설정</em> &gt; <em>앱</em> &gt; <em>모ë‘</em>ì— ìžˆëŠ” 앱 목ë¡ì—서 제공ìžì˜ ë ˆì´ë¸” ì˜†ì— í‘œì‹œë©ë‹ˆë‹¤.
</li>
<li>
@@ -1187,28 +1187,28 @@ android:authorities}</a>)
<h2 id="Intents">ì¸í…트 ë° ë°ì´í„° 액세스</h2>
<p>
애플리케ì´ì…˜ì´ 콘í…츠 제공ìžì— ê°„ì ‘ì ìœ¼ë¡œ 액세스하려면 {@link android.content.Intent}를 사용하면 ë©ë‹ˆë‹¤.
- ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì€ {@link android.content.ContentResolver} ë˜ëŠ”
-{@link android.content.ContentProvider}ì˜ ë©”ì„œë“œ 중 ì–´ëŠ í•˜ë‚˜ë„ í˜¸ì¶œí•˜ì§€ 않습니다.
-대신, 액티비티를 시작하는 ì¸í…트를 전송합니다. ì´ ì¸í…트는 제공ìžê°€ 소유한 애플리케ì´ì…˜ì˜ ì¼ë¶€ì¸ 경우가 많습니다.
-ëŒ€ìƒ ì•¡í‹°ë¹„í‹°ê°€ ë°ì´í„°ë¥¼ ìžì²´ UIì—서 검색하고 표시하는 ì—­í• ì„ ë§¡ìŠµë‹ˆë‹¤.
+ ì´ ì• í”Œë¦¬ì¼€ì´ì…˜ì€ {@link android.content.ContentResolver} ë˜ëŠ”
+{@link android.content.ContentProvider}ì˜ ë©”ì„œë“œ 중 ì–´ëŠ í•˜ë‚˜ë„ í˜¸ì¶œí•˜ì§€ 않습니다.
+대신, 액티비티를 시작하는 ì¸í…트를 전송합니다. ì´ ì¸í…트는 제공ìžê°€ 소유한 애플리케ì´ì…˜ì˜ ì¼ë¶€ì¸ 경우가 많습니다.
+ëŒ€ìƒ ì•¡í‹°ë¹„í‹°ê°€ ë°ì´í„°ë¥¼ ìžì²´ UIì—서 검색하고 표시하는 ì—­í• ì„ ë§¡ìŠµë‹ˆë‹¤.
ì¸í…íŠ¸ì˜ ë™ìž‘ì— ë”°ë¼ ëŒ€ìƒ ì•¡í‹°ë¹„í‹°ê°€ 사용ìžì—게 프롬프트를 표시하여 제공ìžì˜ ë°ì´í„°ë¥¼ 수정하ë„ë¡ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
ì¸í…트ì—는 ëŒ€ìƒ ì•¡í‹°ë¹„í‹°ê°€ UIì— í‘œì‹œí•˜ëŠ” "추가" ë°ì´í„°ê°€ 들어 ìžˆì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
-그러면 사용ìžì—게 ì´ ë°ì´í„°ë¥¼ 변경할 수 있는 ì˜µì…˜ì´ ì£¼ì–´ì§€ê³ , 그런 ë‹¤ìŒ ì´ë¥¼ 사용하여
+그러면 사용ìžì—게 ì´ ë°ì´í„°ë¥¼ 변경할 수 있는 ì˜µì…˜ì´ ì£¼ì–´ì§€ê³ , 그런 ë‹¤ìŒ ì´ë¥¼ 사용하여
ì œê³µìž ë‚´ì˜ ë°ì´í„°ë¥¼ 수정할 수 있습니다.
</p>
<p>
</p>
<p>
- ë°ì´í„° ë¬´ê²°ì„±ì„ ë³´ìž¥í•˜ëŠ” ë° ìœ ìš©í•œ ê²ƒì„ ì›í•˜ë©´ ì¸í…트 액세스를 사용하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
-엄격하게 ì •ì˜ëœ 비즈니스 ë…¼ë¦¬ì— ë”°ë¼ ë°ì´í„°ê°€ 삽입, ì—…ë°ì´íЏë˜ê³  ì‚­ì œë˜ëŠ” ê²ƒì´ ì œê³µìžë¥¼ í¬ê²Œ 좌우할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
-ì´ëŸ° ê²½ìš°ì— í•´ë‹¹ë˜ë©´, 다른 애플리케ì´ì…˜ì— ë°ì´í„°ë¥¼ ì§ì ‘ 수정하ë„ë¡ í—ˆìš©í•˜ë©´ ë°ì´í„°ê°€ 잘못ë˜ëŠ”
+ ë°ì´í„° ë¬´ê²°ì„±ì„ ë³´ìž¥í•˜ëŠ” ë° ìœ ìš©í•œ ê²ƒì„ ì›í•˜ë©´ ì¸í…트 액세스를 사용하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
+엄격하게 ì •ì˜ëœ 비즈니스 ë…¼ë¦¬ì— ë”°ë¼ ë°ì´í„°ê°€ 삽입, ì—…ë°ì´íЏë˜ê³  ì‚­ì œë˜ëŠ” ê²ƒì´ ì œê³µìžë¥¼ í¬ê²Œ 좌우할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
+ì´ëŸ° ê²½ìš°ì— í•´ë‹¹ë˜ë©´, 다른 애플리케ì´ì…˜ì— ë°ì´í„°ë¥¼ ì§ì ‘ 수정하ë„ë¡ í—ˆìš©í•˜ë©´ ë°ì´í„°ê°€ 잘못ë˜ëŠ”
결과를 초래할 수 있습니다. 개발ìžë“¤ì—게 ì¸í…트 액세스 ì‚¬ìš©ì„ í—ˆìš©í•˜ë ¤ë©´, ê·¸ ë‚´ìš©ì„ ì² ì €ížˆ 기ë¡í•´ë‘어야 합니다.
- 개발ìžë“¤ì—게 ìžê¸° 애플리케ì´ì…˜ì˜ UI를 사용한 ì¸í…트 액세스가
+ 개발ìžë“¤ì—게 ìžê¸° 애플리케ì´ì…˜ì˜ UI를 사용한 ì¸í…트 액세스가
코드로 ë°ì´í„°ë¥¼ 수정하려 시ë„하는 것보다 ë‚˜ì€ ì´ìœ ë¥¼ 설명해주십시오.
</p>
<p>
제공ìžì˜ ë°ì´í„°ë¥¼ ìˆ˜ì •í•˜ê³ ìž í•˜ëŠ” 수신ë˜ëŠ” ì¸í…트 ì²˜ë¦¬ë„ ë‹¤ë¥¸ ì¸í…트 처리와 다를 바가 없습니다.
- ì¸í…트 ì‚¬ìš©ì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€
+ ì¸í…트 ì‚¬ìš©ì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€
<a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트 ë° ì¸í…트 í•„í„°</a> 주제를 ì½ìœ¼ë©´ 확ì¸í•  수 있습니다.
</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/providers/content-providers.jd b/docs/html-intl/intl/ko/guide/topics/providers/content-providers.jd
index ce98840e16db..8671f7b71f91 100644
--- a/docs/html-intl/intl/ko/guide/topics/providers/content-providers.jd
+++ b/docs/html-intl/intl/ko/guide/topics/providers/content-providers.jd
@@ -47,31 +47,31 @@ page.title=콘í…츠 제공ìž
</div>
</div>
<p>
- 콘í…츠 제공ìžëŠ” êµ¬ì¡°í™”ëœ ë°ì´í„° ì„¸íŠ¸ë¡œì˜ ì•¡ì„¸ìŠ¤ë¥¼ 관리합니다.
-ë°ì´í„°ë¥¼ 캡ìŠí™”하여 ë°ì´í„° ë³´ì•ˆì„ ì •ì˜í•˜ëŠ” ë° í•„ìš”í•œ ë©”ì»¤ë‹ˆì¦˜ì„ ì œê³µí•˜ê¸°ë„ í•©ë‹ˆë‹¤.
+ 콘í…츠 제공ìžëŠ” êµ¬ì¡°í™”ëœ ë°ì´í„° ì„¸íŠ¸ë¡œì˜ ì•¡ì„¸ìŠ¤ë¥¼ 관리합니다.
+ë°ì´í„°ë¥¼ 캡ìŠí™”하여 ë°ì´í„° ë³´ì•ˆì„ ì •ì˜í•˜ëŠ” ë° í•„ìš”í•œ ë©”ì»¤ë‹ˆì¦˜ì„ ì œê³µí•˜ê¸°ë„ í•©ë‹ˆë‹¤.
콘í…츠 제공ìžëŠ” 한 í”„ë¡œì„¸ìŠ¤ì˜ ë°ì´í„°ì— 다른 프로세스ì—서 실행 ì¤‘ì¸ ì½”ë“œë¥¼ 연결하는 표준 ì¸í„°íŽ˜ì´ìŠ¤ìž…ë‹ˆë‹¤.
</p>
<p>
- 콘í…츠 ì œê³µìž ë‚´ì˜ ë°ì´í„°ì— ì•¡ì„¸ìŠ¤í•˜ê³ ìž í•˜ëŠ” 경우,
+ 콘í…츠 ì œê³µìž ë‚´ì˜ ë°ì´í„°ì— ì•¡ì„¸ìŠ¤í•˜ê³ ìž í•˜ëŠ” 경우,
애플리케ì´ì…˜ì˜ {@link android.content.Context}ì— ìžˆëŠ”
{@link android.content.ContentResolver} 개체를 사용하여 í´ë¼ì´ì–¸íŠ¸ë¡œì„œ 제공ìžì™€ í†µì‹ ì„ ì£¼ê³ ë°›ìœ¼ë©´ ë©ë‹ˆë‹¤.
- {@link android.content.ContentResolver} 개체가 ì œê³µìž ê°œì²´ì™€ 통신하며, ì´ ê°œì²´ëŠ”
-{@link android.content.ContentProvider}를 구현하는 í´ëž˜ìŠ¤ì˜ ì¸ìŠ¤í„´ìŠ¤ìž…ë‹ˆë‹¤.
+ {@link android.content.ContentResolver} 개체가 ì œê³µìž ê°œì²´ì™€ 통신하며, ì´ ê°œì²´ëŠ”
+{@link android.content.ContentProvider}를 구현하는 í´ëž˜ìŠ¤ì˜ ì¸ìŠ¤í„´ìŠ¤ìž…ë‹ˆë‹¤.
ì œê³µìž ê°œì²´ê°€ í´ë¼ì´ì–¸íŠ¸ë¡œë¶€í„° ë°ì´í„° ìš”ì²­ì„ ë°›ì•„ ìš”ì²­ëœ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë©° 결과를 반환합니다.
</p>
<p>
ë°ì´í„°ë¥¼ 다른 애플리케ì´ì…˜ê³¼ 공유할 ìƒê°ì´ 없으면 ë‚˜ë¦„ì˜ ì œê³µìžë¥¼ 개발하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤.
그러나, ìžì²´ 애플리케ì´ì…˜ì—서 ì‚¬ìš©ìž ì§€ì • 검색 ì œì•ˆì„ ì œê³µí•˜ë ¤ë©´ ë‚˜ë¦„ì˜ ì œê³µìžê°€ ê¼­ 필요합니다.
- ë˜í•œ, 복잡한 ë°ì´í„°ë‚˜ 파ì¼ì„ ìžì‹ ì˜ 애플리케ì´ì…˜ì—서 다른 애플리케ì´ì…˜ìœ¼ë¡œ 복사하여 ë¶™ì—¬ë„£ê³ ìž í•˜ëŠ” 경우ì—ë„
+ ë˜í•œ, 복잡한 ë°ì´í„°ë‚˜ 파ì¼ì„ ìžì‹ ì˜ 애플리케ì´ì…˜ì—서 다른 애플리케ì´ì…˜ìœ¼ë¡œ 복사하여 ë¶™ì—¬ë„£ê³ ìž í•˜ëŠ” 경우ì—ë„
ë‚˜ë¦„ì˜ ì œê³µìžê°€ 필요합니다.
</p>
<p>
- Android ìžì²´ì— 오디오, ë™ì˜ìƒ, ì´ë¯¸ì§€ ë° ê°œì¸ ì—°ë½ì²˜ ì •ë³´ ë“±ì˜ ë°ì´í„°ë¥¼ 관리하는 콘í…츠 제공ìžê°€
-í¬í•¨ë˜ì–´ 있습니다. 그중 몇 가지를 목ë¡ìœ¼ë¡œ 나열한 것ì„
+ Android ìžì²´ì— 오디오, ë™ì˜ìƒ, ì´ë¯¸ì§€ ë° ê°œì¸ ì—°ë½ì²˜ ì •ë³´ ë“±ì˜ ë°ì´í„°ë¥¼ 관리하는 콘í…츠 제공ìžê°€
+í¬í•¨ë˜ì–´ 있습니다. 그중 몇 가지를 목ë¡ìœ¼ë¡œ 나열한 것ì„
<code><a href="{@docRoot}reference/android/provider/package-summary.html">android.provider</a>
- </code> íŒ¨í‚¤ì§€ì— ëŒ€í•œ 참조 문서ì—서 확ì¸í•  수 있습니다. ì´ì™€ ê°™ì€ ì œê³µìžëŠ” 몇 가지 ì œì•½ì´ ìžˆì§€ë§Œ,
+ </code> íŒ¨í‚¤ì§€ì— ëŒ€í•œ 참조 문서ì—서 확ì¸í•  수 있습니다. ì´ì™€ ê°™ì€ ì œê³µìžëŠ” 몇 가지 ì œì•½ì´ ìžˆì§€ë§Œ,
ì–´ëŠ Android 애플리케ì´ì…˜ì—나 액세스할 수 있습니다.
</p><p>
ë‹¤ìŒ ì£¼ì œì—서는 콘í…츠 제공ìžì— 대해 좀 ë” ìžì„¸ížˆ 설명합니다.
diff --git a/docs/html-intl/intl/ko/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/ko/guide/topics/providers/document-provider.jd
index e356e22d17c9..665a72a755cf 100644
--- a/docs/html-intl/intl/ko/guide/topics/providers/document-provider.jd
+++ b/docs/html-intl/intl/ko/guide/topics/providers/document-provider.jd
@@ -75,96 +75,96 @@ StorageClient</a></li>
</div>
-<p>Android 4.4(API 레벨 19)ì—서는 저장소 액세스 프레임워í¬(SAF)를 ì²˜ìŒ ë„입하게 ë˜ì—ˆìŠµë‹ˆë‹¤. SAF는
-사용ìžê°€ 선호하는 문서 저장소 ì œê³µìž ì „ì²´ë¥¼ ê±¸ì³ ë¬¸ì„œ, ì´ë¯¸ì§€ ë° ê°ì¢… 다른 파ì¼ì„
-íƒìƒ‰í•˜ê³  여는 ìž‘ì—…ì„ ê°„íŽ¸í•˜ê²Œ 만들어ì¤ë‹ˆë‹¤. 표준형ì˜, 사용하기 쉬운 UI로
+<p>Android 4.4(API 레벨 19)ì—서는 저장소 액세스 프레임워í¬(SAF)를 ì²˜ìŒ ë„입하게 ë˜ì—ˆìŠµë‹ˆë‹¤. SAF는
+사용ìžê°€ 선호하는 문서 저장소 ì œê³µìž ì „ì²´ë¥¼ ê±¸ì³ ë¬¸ì„œ, ì´ë¯¸ì§€ ë° ê°ì¢… 다른 파ì¼ì„
+íƒìƒ‰í•˜ê³  여는 ìž‘ì—…ì„ ê°„íŽ¸í•˜ê²Œ 만들어ì¤ë‹ˆë‹¤. 표준형ì˜, 사용하기 쉬운 UI로
사용ìžê°€ ê°ì¢… 앱과 제공ìžì— ê±¸ì³ ì¼ê´€ëœ ë°©ì‹ìœ¼ë¡œ 파ì¼ì„ íƒìƒ‰í•˜ê³  최근 ë‚´ìš©ì— ì•¡ì„¸ìŠ¤í•  수 있게 í•´ì¤ë‹ˆë‹¤.</p>
-<p>í´ë¼ìš°ë“œ ë˜ëŠ” 로컬 저장소 서비스가 ì´ ì—ì½”ì‹œìŠ¤í…œì— ì°¸ê°€í•˜ë ¤ë©´ ìžì‹ ì˜ 서비스를 캡ìŠí™”하는
-{@link android.provider.DocumentsProvider}를 구현하면 ë©ë‹ˆë‹¤.
-제공ìžì˜ ë¬¸ì„œì— ì•¡ì„¸ìŠ¤í•´ì•¼ 하는 í´ë¼ì´ì–¸íЏ ì•±ì˜ ê²½ìš° 단 몇 ì¤„ì˜ ì½”ë“œë§Œìœ¼ë¡œ
+<p>í´ë¼ìš°ë“œ ë˜ëŠ” 로컬 저장소 서비스가 ì´ ì—ì½”ì‹œìŠ¤í…œì— ì°¸ê°€í•˜ë ¤ë©´ ìžì‹ ì˜ 서비스를 캡ìŠí™”하는
+{@link android.provider.DocumentsProvider}를 구현하면 ë©ë‹ˆë‹¤.
+제공ìžì˜ ë¬¸ì„œì— ì•¡ì„¸ìŠ¤í•´ì•¼ 하는 í´ë¼ì´ì–¸íЏ ì•±ì˜ ê²½ìš° 단 몇 ì¤„ì˜ ì½”ë“œë§Œìœ¼ë¡œ
SAF와 통합할 수 있습니다.</p>
<p>SAFì—는 다ìŒê³¼ ê°™ì€ í•­ëª©ì´ í¬í•¨ë©ë‹ˆë‹¤.</p>
<ul>
<li><strong>문서 제공ìž</strong>&mdash;ì¼ì¢…ì˜ ì½˜í…츠 제공ìžë¡œ
-저장소 서비스(예: Google Drive 등)로 하여금 ìžì‹ ì´ 관리하는 파ì¼ì„ 드러내ë„ë¡ í—ˆìš©í•©ë‹ˆë‹¤. 문서 제공ìžëŠ”
-{@link android.provider.DocumentsProvider} í´ëž˜ìŠ¤ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¡œ 구현ë©ë‹ˆë‹¤.
-문서 ì œê³µìž ìŠ¤í‚¤ë§ˆëŠ” ê¸°ì¡´ì˜ íŒŒì¼ ê³„ì¸µì„ ê·¼ê±°ë¡œ 하지만,
-문서 제공ìžê°€ ë°ì´í„°ë¥¼ 저장하는 물리ì ì¸ ë°©ë²•ì€ ê°œë°œìžê°€ ì„ íƒí•˜ê¸° 나름입니다.
-Android 플랫í¼ì—는 ë‚´ìž¥ëœ ë¬¸ì„œ 제공ìžê°€ 여러 ê°œ 있습니다.
+저장소 서비스(예: Google Drive 등)로 하여금 ìžì‹ ì´ 관리하는 파ì¼ì„ 드러내ë„ë¡ í—ˆìš©í•©ë‹ˆë‹¤. 문서 제공ìžëŠ”
+{@link android.provider.DocumentsProvider} í´ëž˜ìŠ¤ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¡œ 구현ë©ë‹ˆë‹¤.
+문서 ì œê³µìž ìŠ¤í‚¤ë§ˆëŠ” ê¸°ì¡´ì˜ íŒŒì¼ ê³„ì¸µì„ ê·¼ê±°ë¡œ 하지만,
+문서 제공ìžê°€ ë°ì´í„°ë¥¼ 저장하는 물리ì ì¸ ë°©ë²•ì€ ê°œë°œìžê°€ ì„ íƒí•˜ê¸° 나름입니다.
+Android 플랫í¼ì—는 ë‚´ìž¥ëœ ë¬¸ì„œ 제공ìžê°€ 여러 ê°œ 있습니다.
예를 들어 다운로드, ì´ë¯¸ì§€ ë° ë¹„ë””ì˜¤ 등입니다.</li>
<li><strong>í´ë¼ì´ì–¸íЏ 앱</strong>&mdash;ì¼ì¢…ì˜ ì‚¬ìš©ìž ì§€ì • 앱으로
{@link android.content.Intent#ACTION_OPEN_DOCUMENT} ë°/ë˜ëŠ”
-{@link android.content.Intent#ACTION_CREATE_DOCUMENT} ì¸í…트를 호출하고,
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT} ì¸í…트를 호출하고,
문서 제공ìžê°€ 반환하는 파ì¼ì„ 수신합니다.</li>
-<li><strong>ì„ íƒê¸°</strong>&mdash;ì¼ì¢…ì˜ ì‹œìŠ¤í…œ UI로 사용ìžê°€ í´ë¼ì´ì–¸íЏ 앱ì˜
+<li><strong>ì„ íƒê¸°</strong>&mdash;ì¼ì¢…ì˜ ì‹œìŠ¤í…œ UI로 사용ìžê°€ í´ë¼ì´ì–¸íЏ 앱ì˜
검색 ê¸°ì¤€ì„ ë§Œì¡±í•˜ëŠ” 모든 문서 제공ìžì—서 ë¬¸ì„œì— ì•¡ì„¸ìŠ¤í•  수 있ë„ë¡ í•´ì¤ë‹ˆë‹¤.</li>
</ul>
<p>SAFê°€ 제공하는 ê¸°ëŠ¥ì„ ëª‡ 가지 예로 들면 다ìŒê³¼ 같습니다.</p>
<ul>
<li>사용ìžë“¤ë¡œ 하여금 í•˜ë‚˜ì˜ ì•±ë§Œì´ ì•„ë‹ˆë¼ ëª¨ë“  문서 제공ìžì—서 콘í…츠를 íƒìƒ‰í•  수 있게 í•´ì¤ë‹ˆë‹¤.</li>
-<li>ì—¬ëŸ¬ë¶„ì˜ ì•±ì´ ë¬¸ì„œ 제공ìžê°€ 소유한 ë¬¸ì„œì— ëŒ€í•œ 장기ì , ì˜êµ¬ì  액세스 ê¶Œí•œì„ ê°€ì§ˆ 수 있ë„ë¡
-í•´ì¤ë‹ˆë‹¤. ì´ ì•¡ì„¸ìŠ¤ ê¶Œí•œì„ í†µí•´ 사용ìžê°€ 제공ìžì— 있는 파ì¼ì„ 추가, 편집,
+<li>ì—¬ëŸ¬ë¶„ì˜ ì•±ì´ ë¬¸ì„œ 제공ìžê°€ 소유한 ë¬¸ì„œì— ëŒ€í•œ 장기ì , ì˜êµ¬ì  액세스 ê¶Œí•œì„ ê°€ì§ˆ 수 있ë„ë¡
+í•´ì¤ë‹ˆë‹¤. ì´ ì•¡ì„¸ìŠ¤ ê¶Œí•œì„ í†µí•´ 사용ìžê°€ 제공ìžì— 있는 파ì¼ì„ 추가, 편집,
저장 ë° ì‚­ì œí•  수 있습니다.</li>
-<li>여러 ê°œì˜ ì‚¬ìš©ìž ê³„ì •ì„ ì§€ì›í•˜ë©° USB 저장소 제공ìžì™€ ê°™ì€ ìž„ì‹œ ë£¨íŠ¸ë„ ì§€ì›í•©ë‹ˆë‹¤.
+<li>여러 ê°œì˜ ì‚¬ìš©ìž ê³„ì •ì„ ì§€ì›í•˜ë©° USB 저장소 제공ìžì™€ ê°™ì€ ìž„ì‹œ ë£¨íŠ¸ë„ ì§€ì›í•©ë‹ˆë‹¤.
ì´ëŠ” 드ë¼ì´ë¸Œê°€ ì—°ê²°ë˜ì–´ ìžˆì„ ë•Œë§Œ 나타납니다. </li>
</ul>
<h2 id ="overview">개요</h2>
-<p>SAF는 {@link android.provider.DocumentsProvider} í´ëž˜ìФì˜
-하위 í´ëž˜ìŠ¤ì¸ ì½˜í…츠 제공ìžë¥¼ 중심으로 둘러싸고 있습니다. ë°ì´í„°ëŠ” <em>문서 제공ìž</em> ë‚´ì—서 ì¼ë°˜ì ì¸ íŒŒì¼ ê³„ì¸µìœ¼ë¡œ
+<p>SAF는 {@link android.provider.DocumentsProvider} í´ëž˜ìФì˜
+하위 í´ëž˜ìŠ¤ì¸ ì½˜í…츠 제공ìžë¥¼ 중심으로 둘러싸고 있습니다. ë°ì´í„°ëŠ” <em>문서 제공ìž</em> ë‚´ì—서 ì¼ë°˜ì ì¸ íŒŒì¼ ê³„ì¸µìœ¼ë¡œ
구조화ë©ë‹ˆë‹¤.</p>
<p><img src="{@docRoot}images/providers/storage_datamodel.png" alt="data model" /></p>
-<p class="img-caption"><strong>그림 1.</strong> 문서 ì œê³µìž ë°ì´í„° 모ë¸ìž…니다. 루트 하나가 í•˜ë‚˜ì˜ ë¬¸ì„œë¥¼ 가리키며,
+<p class="img-caption"><strong>그림 1.</strong> 문서 ì œê³µìž ë°ì´í„° 모ë¸ìž…니다. 루트 하나가 í•˜ë‚˜ì˜ ë¬¸ì„œë¥¼ 가리키며,
ì´ëŠ” 다시 트리 ì „ì²´ì˜ íŒ¬ì•„ì›ƒì„ ì‹œìž‘í•©ë‹ˆë‹¤.</p>
<p>ë‹¤ìŒ ë‚´ìš©ì„ ì°¸ê³ í•˜ì‹­ì‹œì˜¤.</p>
<ul>
-<li>ê° ë¬¸ì„œ 제공ìžëŠ” 하나 ì´ìƒì˜ "루트"를 보고합니다.
+<li>ê° ë¬¸ì„œ 제공ìžëŠ” 하나 ì´ìƒì˜ "루트"를 보고합니다.
ì´ëŠ” 문서 트리 ì†ì„ íƒìƒ‰í•  시작 ì§€ì ìž…니다.
-ê° ë£¨íŠ¸ì—는 고유한 {@link android.provider.DocumentsContract.Root#COLUMN_ROOT_ID}ê°€ 있으며,
-ì´ëŠ” 해당 루트 ì•„ëž˜ì˜ ì½˜í…츠를 나타내는 문서(디렉터리)를
+ê° ë£¨íŠ¸ì—는 고유한 {@link android.provider.DocumentsContract.Root#COLUMN_ROOT_ID}ê°€ 있으며,
+ì´ëŠ” 해당 루트 ì•„ëž˜ì˜ ì½˜í…츠를 나타내는 문서(디렉터리)를
가리킵니다.
-루트는 ì„¤ê³„ìƒ ë™ì ìœ¼ë¡œ 만들어져 있어 여러 ê°œì˜ ê³„ì •, 임시 USB 저장소 기기
+루트는 ì„¤ê³„ìƒ ë™ì ìœ¼ë¡œ 만들어져 있어 여러 ê°œì˜ ê³„ì •, 임시 USB 저장소 기기
ë˜ëŠ” ì‚¬ìš©ìž ë¡œê·¸ì¸/로그아웃 등과 ê°™ì€ ê²½ìš°ë¥¼ ì§€ì›í•˜ë„ë¡ ë˜ì–´ 있습니다.</li>
-<li>ê° ë£¨íŠ¸ ì•„ëž˜ì— ë¬¸ì„œê°€ 하나씩 있습니다. 해당 문서는 1부터 <em>N</em>ê¹Œì§€ì˜ ë¬¸ì„œë¥¼ 가리키는ë°,
+<li>ê° ë£¨íŠ¸ ì•„ëž˜ì— ë¬¸ì„œê°€ 하나씩 있습니다. 해당 문서는 1부터 <em>N</em>ê¹Œì§€ì˜ ë¬¸ì„œë¥¼ 가리키는ë°,
ì´ëŠ” ê°ê° 1부터 <em>N</em>ì˜ ë¬¸ì„œë¥¼ 가리킬 수 있습니다. </li>
-<li>ê° ì €ìž¥ì†Œì˜ ë°±ì—”ë“œê°€
-개별ì ì¸ 파ì¼ê³¼ 디렉터리를 고유한
-{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID}로
-참조하여 드러냅니다.문서 ID는 고유해야 하며 한 번 발행ë˜ê³  나면 변경ë˜ì§€ 않습니다.
+<li>ê° ì €ìž¥ì†Œì˜ ë°±ì—”ë“œê°€
+개별ì ì¸ 파ì¼ê³¼ 디렉터리를 고유한
+{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID}로
+참조하여 드러냅니다.문서 ID는 고유해야 하며 한 번 발행ë˜ê³  나면 변경ë˜ì§€ 않습니다.
ì´ë“¤ì€ 기기 ìž¬ë¶€íŒ…ì„ í†µê´„í•˜ì—¬ ì˜êµ¬ì ì¸ URI í—ˆê°€ì— ì‚¬ìš©ë˜ê¸° 때문입니다.</li>
-<li>문서는 ì—´ 수 있는 파ì¼ì´ê±°ë‚˜(특정 MIME 유형으로),
+<li>문서는 ì—´ 수 있는 파ì¼ì´ê±°ë‚˜(특정 MIME 유형으로),
추가 문서가 들어있는 ë””ë ‰í„°ë¦¬ì¼ ìˆ˜ 있습니다(
{@link android.provider.DocumentsContract.Document#MIME_TYPE_DIR} MIME 유형으로).</li>
-<li>ê° ë¬¸ì„œëŠ” 서로 다른 ê¸°ëŠ¥ì„ ê°€ì§€ê³  ìžˆì„ ìˆ˜ 있습니다. ì´ëŠ”
-{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS}ì—서 설명한 것과 같습니다.
- 예를 들어 {@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_WRITE},
-{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE} ë°
-{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_THUMBNAIL} 등입니다.
-ê°™ì€ {@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID}ê°€
+<li>ê° ë¬¸ì„œëŠ” 서로 다른 ê¸°ëŠ¥ì„ ê°€ì§€ê³  ìžˆì„ ìˆ˜ 있습니다. ì´ëŠ”
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS}ì—서 설명한 것과 같습니다.
+ 예를 들어 {@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_WRITE},
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE} ë°
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_THUMBNAIL} 등입니다.
+ê°™ì€ {@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID}ê°€
여러 ë””ë ‰í„°ë¦¬ì— í¬í•¨ë˜ì–´ ìžˆì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</li>
</ul>
<h2 id="flow">제어 í름</h2>
-<p>위ì—서 언급한 바와 ê°™ì´, 문서 ì œê³µìž ë°ì´í„° 모ë¸ì€ ì¼ë°˜ì ì¸
-íŒŒì¼ ê³„ì¸µì„ ê¸°ë°˜ìœ¼ë¡œ 합니다. 그러나, ë°ì´í„°ë¥¼ 물리ì ìœ¼ë¡œ 저장하는 ë°©ì‹ì€ 마ìŒëŒ€ë¡œ ì„ íƒí•  수 있습니다. 다만
-{@link android.provider.DocumentsProvider} API를 통해 액세스할 수 있기만 하면 ë©ë‹ˆë‹¤.
+<p>위ì—서 언급한 바와 ê°™ì´, 문서 ì œê³µìž ë°ì´í„° 모ë¸ì€ ì¼ë°˜ì ì¸
+íŒŒì¼ ê³„ì¸µì„ ê¸°ë°˜ìœ¼ë¡œ 합니다. 그러나, ë°ì´í„°ë¥¼ 물리ì ìœ¼ë¡œ 저장하는 ë°©ì‹ì€ 마ìŒëŒ€ë¡œ ì„ íƒí•  수 있습니다. 다만
+{@link android.provider.DocumentsProvider} API를 통해 액세스할 수 있기만 하면 ë©ë‹ˆë‹¤.
예를 들어, ë°ì´í„°ë¥¼ 저장하기 위해 태그 기반 í´ë¼ìš°ë“œ 저장소를 ì‚¬ìš©í•´ë„ ë©ë‹ˆë‹¤.</p>
-<p>그림 2는 사진 ì•±ì´ SAF를 사용하여 ì €ìž¥ëœ ë°ì´í„°ì— 액세스할 수 있는 방법ì„
+<p>그림 2는 사진 ì•±ì´ SAF를 사용하여 ì €ìž¥ëœ ë°ì´í„°ì— 액세스할 수 있는 방법ì„
예시로 나타낸 것입니다.</p>
<p><img src="{@docRoot}images/providers/storage_dataflow.png" alt="app" /></p>
@@ -174,31 +174,31 @@ Android 플랫í¼ì—는 ë‚´ìž¥ëœ ë¬¸ì„œ 제공ìžê°€ 여러 ê°œ 있습니다.
<ul>
<li>SAFì—서는 제공ìžì™€ í´ë¼ì´ì–¸íŠ¸ê°€ ì§ì ‘ ìƒí˜¸ 작용하지 않습니다.
- í´ë¼ì´ì–¸íŠ¸ê°€ 파ì¼ê³¼ ìƒí˜¸ 작용하기 위한 ê¶Œí•œì„ ìš”ì²­í•©ë‹ˆë‹¤(다시 ë§í•´,
+ í´ë¼ì´ì–¸íŠ¸ê°€ 파ì¼ê³¼ ìƒí˜¸ 작용하기 위한 ê¶Œí•œì„ ìš”ì²­í•©ë‹ˆë‹¤(다시 ë§í•´,
파ì¼ì„ ì½ê³ , 편집하고 ìƒì„± ë˜ëŠ” 삭제할 ê¶Œí•œì„ ë§í•©ë‹ˆë‹¤).</li>
-<li>ìƒí˜¸ ìž‘ìš©ì€ ì• í”Œë¦¬ì¼€ì´ì…˜(ì´ ì˜ˆì‹œì—서는 주어진 사진 앱)ì´ ì¸í…트
-{@link android.content.Intent#ACTION_OPEN_DOCUMENT} ë˜ëŠ” {@link android.content.Intent#ACTION_CREATE_DOCUMENT}를 실행시키면 시작합니다. ì´ ì¸í…트ì—는
-ê¸°ì¤€ì„ í•œì¸µ ë” ì •ë°€í•˜ê²Œ 하기 위한 í•„í„°ê°€ í¬í•¨ë  수 있습니다. 예를 들어, "ì—´ 수 있는 íŒŒì¼ ì¤‘ì—서
+<li>ìƒí˜¸ ìž‘ìš©ì€ ì• í”Œë¦¬ì¼€ì´ì…˜(ì´ ì˜ˆì‹œì—서는 주어진 사진 앱)ì´ ì¸í…트
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} ë˜ëŠ” {@link android.content.Intent#ACTION_CREATE_DOCUMENT}를 실행시키면 시작합니다. ì´ ì¸í…트ì—는
+ê¸°ì¤€ì„ í•œì¸µ ë” ì •ë°€í•˜ê²Œ 하기 위한 í•„í„°ê°€ í¬í•¨ë  수 있습니다. 예를 들어, "ì—´ 수 있는 íŒŒì¼ ì¤‘ì—서
'ì´ë¯¸ì§€' MIME ìœ í˜•ì„ ê°€ì§„ 파ì¼ì„ ëª¨ë‘ ì£¼ì„¸ìš”"ë¼ê³  í•  수 있습니다.</li>
-<li>ì¸í…트가 실행ë˜ë©´ 시스템 ì„ íƒê¸°ê°€ ê°ê°ì˜ 등ë¡ëœ 제공ìžë¡œ ì´ë™í•˜ì—¬ 사용ìžì—게
+<li>ì¸í…트가 실행ë˜ë©´ 시스템 ì„ íƒê¸°ê°€ ê°ê°ì˜ 등ë¡ëœ 제공ìžë¡œ ì´ë™í•˜ì—¬ 사용ìžì—게
ì¼ì¹˜í•˜ëŠ” 콘í…츠 루트를 ë³´ì—¬ì¤ë‹ˆë‹¤.</li>
-<li>ì„ íƒê¸°ëŠ” 사용ìžì—게 ë¬¸ì„œì— ì•¡ì„¸ìŠ¤í•˜ëŠ” ë° ì“°ëŠ” 표준 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 부여합니다. ì´ëŠ”
-기본 문서 ì œê³µìž ì‚¬ì´ì— í° ì°¨ì´ê°€ 있ë”ë¼ë„ 무관합니다. 예를 들어, 그림 2는
+<li>ì„ íƒê¸°ëŠ” 사용ìžì—게 ë¬¸ì„œì— ì•¡ì„¸ìŠ¤í•˜ëŠ” ë° ì“°ëŠ” 표준 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 부여합니다. ì´ëŠ”
+기본 문서 ì œê³µìž ì‚¬ì´ì— í° ì°¨ì´ê°€ 있ë”ë¼ë„ 무관합니다. 예를 들어, 그림 2는
Google Drive 제공ìž, USB 제공ìžì™€ í´ë¼ìš°ë“œ 제공ìžë¥¼ 나타낸 것입니다.</li>
</ul>
-<p>그림 3ì€ ì´ë¯¸ì§€ë¥¼ 검색 ì¤‘ì¸ ì‚¬ìš©ìžê°€ Google Drive ê³„ì •ì„ ì„ íƒí•œ
+<p>그림 3ì€ ì´ë¯¸ì§€ë¥¼ 검색 ì¤‘ì¸ ì‚¬ìš©ìžê°€ Google Drive ê³„ì •ì„ ì„ íƒí•œ
ì„ íƒê¸°ë¥¼ 나타낸 것입니다.</p>
<p><img src="{@docRoot}images/providers/storage_picker.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
<p class="img-caption"><strong>그림 3.</strong> ì„ íƒê¸°</p>
-<p>사용ìžê°€ Google Drive를 ì„ íƒí•˜ë©´ ì´ë¯¸ì§€ê°€ 그림 4ì— ë‚˜íƒ€ë‚œ 것처럼
-표시ë©ë‹ˆë‹¤. 그때부터 사용ìžëŠ” 제공ìžì™€ í´ë¼ì´ì–¸íЏ ì•±ì´ ì§€ì›í•˜ëŠ” ë°©ì‹ì´ë¼ë©´ ì–´ë–¤ ì‹ìœ¼ë¡œë“ 
+<p>사용ìžê°€ Google Drive를 ì„ íƒí•˜ë©´ ì´ë¯¸ì§€ê°€ 그림 4ì— ë‚˜íƒ€ë‚œ 것처럼
+표시ë©ë‹ˆë‹¤. 그때부터 사용ìžëŠ” 제공ìžì™€ í´ë¼ì´ì–¸íЏ ì•±ì´ ì§€ì›í•˜ëŠ” ë°©ì‹ì´ë¼ë©´ ì–´ë–¤ ì‹ìœ¼ë¡œë“ 
ì´ë“¤ ì´ë¯¸ì§€ì™€ ìƒí˜¸ 작용할 수 있게 ë©ë‹ˆë‹¤.
<p><img src="{@docRoot}images/providers/storage_photos.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
@@ -207,45 +207,45 @@ Google Drive 제공ìž, USB 제공ìžì™€ í´ë¼ìš°ë“œ 제공ìžë¥¼ 나타낸 것
<h2 id="client">í´ë¼ì´ì–¸íЏ 앱 작성</h2>
-<p>Android 4.3 ì´í•˜ì—서는 ì•±ì´ ë˜ ë‹¤ë¥¸ 앱ì—서 파ì¼ì„ 검색할 수 있ë„ë¡ í•˜ë ¤ë©´
+<p>Android 4.3 ì´í•˜ì—서는 ì•±ì´ ë˜ ë‹¤ë¥¸ 앱ì—서 파ì¼ì„ 검색할 수 있ë„ë¡ í•˜ë ¤ë©´
{@link android.content.Intent#ACTION_PICK}
- ë˜ëŠ” {@link android.content.Intent#ACTION_GET_CONTENT}와 ê°™ì€ ì¸í…트를 호출해야만 했습니다. 그런 다ìŒ
-파ì¼ì„ ì„ íƒí•  ì•±ì„ í•˜ë‚˜ ì„ íƒí•˜ê³ , ì„ íƒí•œ ì•±ì´ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하여야 사용ìžê°€
+ ë˜ëŠ” {@link android.content.Intent#ACTION_GET_CONTENT}와 ê°™ì€ ì¸í…트를 호출해야만 했습니다. 그런 다ìŒ
+파ì¼ì„ ì„ íƒí•  ì•±ì„ í•˜ë‚˜ ì„ íƒí•˜ê³ , ì„ íƒí•œ ì•±ì´ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 제공하여야 사용ìžê°€
ì´ìš© 가능한 íŒŒì¼ ì¤‘ì—서 íƒìƒ‰í•˜ê³  ì„ íƒí•  수 있었습니다. </p>
-<p>Android 4.4 ì´ìƒì—는
-{@link android.content.Intent#ACTION_OPEN_DOCUMENT} ì¸í…트를 사용할 수 있다는 추가 ì˜µì…˜ì´ ìžˆìŠµë‹ˆë‹¤.
-ì´ëŠ” ì‹œìŠ¤í…œì´ ì œì–´í•˜ëŠ” ì„ íƒê¸°ë¥¼ 표시하여 사용ìžê°€ 다른 앱ì—서 ì´ìš©í•  수 있게 만든 파ì¼ì„
-ëª¨ë‘ íƒìƒ‰í•  수 있게 í•´ì¤ë‹ˆë‹¤. ì´ í•˜ë‚˜ì˜ UI로부터
+<p>Android 4.4 ì´ìƒì—는
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} ì¸í…트를 사용할 수 있다는 추가 ì˜µì…˜ì´ ìžˆìŠµë‹ˆë‹¤.
+ì´ëŠ” ì‹œìŠ¤í…œì´ ì œì–´í•˜ëŠ” ì„ íƒê¸°ë¥¼ 표시하여 사용ìžê°€ 다른 앱ì—서 ì´ìš©í•  수 있게 만든 파ì¼ì„
+ëª¨ë‘ íƒìƒ‰í•  수 있게 í•´ì¤ë‹ˆë‹¤. ì´ í•˜ë‚˜ì˜ UI로부터
사용ìžëŠ” ì§€ì›ë˜ëŠ” 모든 앱ì—서 파ì¼ì„ ì„ íƒí•  수 있는 것입니다.</p>
-<p>{@link android.content.Intent#ACTION_OPEN_DOCUMENT}는
-{@link android.content.Intent#ACTION_GET_CONTENT}를
+<p>{@link android.content.Intent#ACTION_OPEN_DOCUMENT}는
+{@link android.content.Intent#ACTION_GET_CONTENT}를
대체할 목ì ìœ¼ë¡œ 만들어진 ê²ƒì´ ì•„ë‹™ë‹ˆë‹¤. ì–´ëŠ ê²ƒì„ ì‚¬ìš©í•´ì•¼ 할지는 ê°ìžì˜ ì•±ì— í•„ìš”í•œ ê²ƒì´ ë¬´ì—‡ì¸ì§€ì— 좌우ë©ë‹ˆë‹¤.</p>
<ul>
-<li>ì•±ì´ ë‹¨ìˆœížˆ ë°ì´í„°ë¥¼ ì½ê³ /ê°€ì ¸ì˜¤ê¸°ë§Œì„ ë°”ëž€ë‹¤ë©´
-{@link android.content.Intent#ACTION_GET_CONTENT}를 사용하십시오.
+<li>ì•±ì´ ë‹¨ìˆœížˆ ë°ì´í„°ë¥¼ ì½ê³ /ê°€ì ¸ì˜¤ê¸°ë§Œì„ ë°”ëž€ë‹¤ë©´
+{@link android.content.Intent#ACTION_GET_CONTENT}를 사용하십시오.
ì´ ë°©ì‹ì„ 사용하면 ì•±ì€ ì´ë¯¸ì§€ 파ì¼ê³¼ ê°™ì€ ë°ì´í„° ì‚¬ë³¸ì„ ê°€ì ¸ì˜¤ê²Œ ë©ë‹ˆë‹¤.</li>
-<li>ì•±ì´ ë¬¸ì„œ 제공ìžê°€ 보유한 ë¬¸ì„œì— ìž¥ê¸°ì , ì˜êµ¬ì  액세스 ê¶Œí•œì„ ê°€ì§€ê¸°ë¥¼ ë°”ë¼ëŠ” 경우
+<li>ì•±ì´ ë¬¸ì„œ 제공ìžê°€ 보유한 ë¬¸ì„œì— ìž¥ê¸°ì , ì˜êµ¬ì  액세스 ê¶Œí•œì„ ê°€ì§€ê¸°ë¥¼ ë°”ë¼ëŠ” 경우
{@link android.content.Intent#ACTION_OPEN_DOCUMENT}를 사용하십시오.
- ì¼ë¡€ë¡œ 사용ìžë“¤ì—게 문서 제공ìžì— ì €ìž¥ëœ ì´ë¯¸ì§€ë¥¼ 편집할 수 있게 해주는
+ ì¼ë¡€ë¡œ 사용ìžë“¤ì—게 문서 제공ìžì— ì €ìž¥ëœ ì´ë¯¸ì§€ë¥¼ 편집할 수 있게 해주는
사진 편집 ì•±ì„ ë“¤ 수 있겠습니다. </li>
</ul>
-<p>ì´ ì„¹ì…˜ì—서는
-{@link android.content.Intent#ACTION_OPEN_DOCUMENT} ë°
+<p>ì´ ì„¹ì…˜ì—서는
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} ë°
{@link android.content.Intent#ACTION_CREATE_DOCUMENT} ì¸í…트를 근거로 í´ë¼ì´ì–¸íЏ ì•±ì„ ìž‘ì„±í•˜ëŠ” ë°©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.</p>
<h3 id="search">문서 검색</h3>
<p>
-ë‹¤ìŒ ì¡°ê°ì—서는 {@link android.content.Intent#ACTION_OPEN_DOCUMENT}를
-사용하여 ì´ë¯¸ì§€ 파ì¼ì´ 들어 있는 문서 제공ìžë¥¼
+ë‹¤ìŒ ì¡°ê°ì—서는 {@link android.content.Intent#ACTION_OPEN_DOCUMENT}를
+사용하여 ì´ë¯¸ì§€ 파ì¼ì´ 들어 있는 문서 제공ìžë¥¼
검색합니다.</p>
<pre>private static final int READ_REQUEST_CODE = 42;
@@ -277,7 +277,7 @@ public void performFileSearch() {
<li>ì•±ì´ {@link android.content.Intent#ACTION_OPEN_DOCUMENT}
ì¸í…트를 실행시키면 ì´ëŠ” ì¼ì¹˜í•˜ëŠ” 문서 제공ìžë¥¼ ëª¨ë‘ í‘œì‹œí•˜ëŠ” ì„ íƒê¸°ë¥¼ 시작합니다.</li>
-<li>{@link android.content.Intent#CATEGORY_OPENABLE} 카테고리를
+<li>{@link android.content.Intent#CATEGORY_OPENABLE} 카테고리를
ì¸í…íŠ¸ì— ì¶”ê°€í•˜ë©´ 결과를 í•„í„°ë§í•˜ì—¬ ì´ë¯¸ì§€ íŒŒì¼ ë“± ì—´ 수 있는 문서만 표시합니다.</li>
<li>{@code intent.setType("image/*")} 문으로 한층 ë” í•„í„°ë§ì„ 수행하여
@@ -286,10 +286,10 @@ MIME ë°ì´í„° ìœ í˜•ì´ ì´ë¯¸ì§€ì¸ 문서만 표시하ë„ë¡ í•©ë‹ˆë‹¤.</li>
<h3 id="results">결과 처리</h3>
-<p>사용ìžê°€ ì„ íƒê¸°ì—서 문서를 ì„ íƒí•˜ë©´
-{@link android.app.Activity#onActivityResult onActivityResult()}ê°€ 호출ë©ë‹ˆë‹¤.
+<p>사용ìžê°€ ì„ íƒê¸°ì—서 문서를 ì„ íƒí•˜ë©´
+{@link android.app.Activity#onActivityResult onActivityResult()}ê°€ 호출ë©ë‹ˆë‹¤.
ì„ íƒí•œ 문서를 가리키는 URI는 {@code resultData}
-매개변수 ì•ˆì— ë“¤ì–´ìžˆìŠµë‹ˆë‹¤. ì´ URI를 {@link android.content.Intent#getData getData()}를 사용하여 추출합니다.
+매개변수 ì•ˆì— ë“¤ì–´ìžˆìŠµë‹ˆë‹¤. ì´ URI를 {@link android.content.Intent#getData getData()}를 사용하여 추출합니다.
ì¼ë‹¨ ì´ê²ƒì„ 가지게 ë˜ë©´ ì´ë¥¼ 사용하여 사용ìžê°€ ì›í•˜ëŠ” 문서를 검색하면 ë©ë‹ˆë‹¤. 예:
</p>
@@ -318,7 +318,7 @@ public void onActivityResult(int requestCode, int resultCode,
<h3 id="metadata">문서 메타ë°ì´í„° 살펴보기</h3>
-<p>ë¬¸ì„œì˜ URI를 ì–»ì€ ë‹¤ìŒì—는 ê·¸ ë¬¸ì„œì˜ ë©”íƒ€ë°ì´í„°ì— 액세스할 수 있습니다. ì´
+<p>ë¬¸ì„œì˜ URI를 ì–»ì€ ë‹¤ìŒì—는 ê·¸ ë¬¸ì„œì˜ ë©”íƒ€ë°ì´í„°ì— 액세스할 수 있습니다. ì´
ì¡°ê°ì€ 해당 URIê°€ 나타내는 ë¬¸ì„œì˜ ë©”íƒ€ë°ì´í„°ë¥¼ 가져와 다ìŒê³¼ ê°™ì´ ê¸°ë¡í•©ë‹ˆë‹¤.</p>
<pre>public void dumpImageMetaData(Uri uri) {
@@ -365,7 +365,7 @@ public void onActivityResult(int requestCode, int resultCode,
<h3 id="open-client">문서 열기</h3>
-<p>ë¬¸ì„œì˜ URI를 ì–»ì€ ë‹¤ìŒì—는 문서를 ì—´ ìˆ˜ë„ ìžˆê³  ì›í•˜ëŠ” 대로 무엇ì´ë“ 
+<p>ë¬¸ì„œì˜ URI를 ì–»ì€ ë‹¤ìŒì—는 문서를 ì—´ ìˆ˜ë„ ìžˆê³  ì›í•˜ëŠ” 대로 무엇ì´ë“ 
할 수 있습니다.</p>
<h4>비트맵</h4>
@@ -382,14 +382,14 @@ public void onActivityResult(int requestCode, int resultCode,
}
</pre>
-<p>ì´ ìž‘ì—…ì„ UI 스레드ì—서 해서는 안 ëœë‹¤ëŠ” ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. ì´ê²ƒì€ ë°°ê²½ì—서 하ë˜,
-{@link android.os.AsyncTask}를 사용합니다. ë¹„íŠ¸ë§µì„ ì—´ê³  나면 ì´ë¥¼
+<p>ì´ ìž‘ì—…ì„ UI 스레드ì—서 해서는 안 ëœë‹¤ëŠ” ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. ì´ê²ƒì€ ë°°ê²½ì—서 하ë˜,
+{@link android.os.AsyncTask}를 사용합니다. ë¹„íŠ¸ë§µì„ ì—´ê³  나면 ì´ë¥¼
{@link android.widget.ImageView}로 표시할 수 있습니다.
</p>
<h4>InputStream 가져오기</h4>
-<p>다ìŒì€ URIì—서 {@link java.io.InputStream}ì„ ê°€ì ¸ì˜¤ëŠ” ë°©ë²•ì„ ì˜ˆì‹œë¡œ 나타낸 것입니다. ì´ ì¡°ê°ì—서
+<p>다ìŒì€ URIì—서 {@link java.io.InputStream}ì„ ê°€ì ¸ì˜¤ëŠ” ë°©ë²•ì„ ì˜ˆì‹œë¡œ 나타낸 것입니다. ì´ ì¡°ê°ì—서
파ì¼ì˜ ì¤„ì´ ë¬¸ìžì—´ë¡œ ì½ížˆê³  있습니다.</p>
<pre>private String readTextFromUri(Uri uri) throws IOException {
@@ -409,9 +409,9 @@ public void onActivityResult(int requestCode, int resultCode,
<h3 id="create">새 문서 ìƒì„±í•˜ê¸°</h3>
-<p>개발ìžì˜ ì•±ì€ ë¬¸ì„œ 제공ìžì—서 새 문서를 ìƒì„±í•  수 있습니다. ì´ë•Œ
+<p>개발ìžì˜ ì•±ì€ ë¬¸ì„œ 제공ìžì—서 새 문서를 ìƒì„±í•  수 있습니다. ì´ë•Œ
{@link android.content.Intent#ACTION_CREATE_DOCUMENT}
- ì¸í…트를 사용하면 ë©ë‹ˆë‹¤. 파ì¼ì„ ìƒì„±í•˜ë ¤ë©´ ì¸í…íŠ¸ì— MIME 유형과 íŒŒì¼ ì´ë¦„ì„ ë¶€ì—¬í•˜ê³ ,
+ ì¸í…트를 사용하면 ë©ë‹ˆë‹¤. 파ì¼ì„ ìƒì„±í•˜ë ¤ë©´ ì¸í…íŠ¸ì— MIME 유형과 íŒŒì¼ ì´ë¦„ì„ ë¶€ì—¬í•˜ê³ ,
고유한 요청 코드로 ì´ë¥¼ 시작하면 ë©ë‹ˆë‹¤. 나머지는 여러분 대신 알아서 해드립니다.</p>
@@ -440,15 +440,15 @@ private void createFile(String mimeType, String fileName) {
}
</pre>
-<p>새 문서를 ìƒì„±í•˜ê³  나면
-{@link android.app.Activity#onActivityResult onActivityResult()}ì—서 URI를 가져와 ê±°ê¸°ì— ê³„ì†í•´ì„œ
+<p>새 문서를 ìƒì„±í•˜ê³  나면
+{@link android.app.Activity#onActivityResult onActivityResult()}ì—서 URI를 가져와 ê±°ê¸°ì— ê³„ì†í•´ì„œ
쓸 수 있습니다.</p>
<h3 id="delete">문서 삭제하기</h3>
-<p>ì–´ëŠ ë¬¸ì„œì— ëŒ€í•œ URIê°€ 있고 해당 문서ì˜
+<p>ì–´ëŠ ë¬¸ì„œì— ëŒ€í•œ URIê°€ 있고 해당 문서ì˜
{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS Document.COLUMN_FLAGS}
-ì—
+ì—
{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE SUPPORTS_DELETE}가 들어 있는 경우,
해당 문서를 삭제할 수 있습니다. 예:</p>
@@ -459,9 +459,9 @@ DocumentsContract.deleteDocument(getContentResolver(), uri);
<h3 id="edit">문서 편집하기</h3>
<p>ì¤€ë¹„ëœ í…스트 문서를 편집하는 ë° SAF를 사용할 수 있습니다.
-ì´ ì¡°ê°ì€
-{@link android.content.Intent#ACTION_OPEN_DOCUMENT} ì¸í…트를 실행하며
-{@link android.content.Intent#CATEGORY_OPENABLE} 카테고리를 사용해
+ì´ ì¡°ê°ì€
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} ì¸í…트를 실행하며
+{@link android.content.Intent#CATEGORY_OPENABLE} 카테고리를 사용해
ì—´ 수 있는 문서만 표시하ë„ë¡ í•©ë‹ˆë‹¤. ì´ê²ƒì„ 한층 ë” í•„í„°ë§í•˜ì—¬ í…스트 파ì¼ë§Œ 표시하게 하려면 다ìŒê³¼ ê°™ì´ í•©ë‹ˆë‹¤.</p>
<pre>
@@ -486,10 +486,10 @@ private static final int EDIT_REQUEST_CODE = 44;
</pre>
<p>다ìŒìœ¼ë¡œ, {@link android.app.Activity#onActivityResult onActivityResult()}
-(<a href="#results">ê²°ê³¼ 처리</a> 참조)ì—서 코드를 호출하여 편집 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë„ë¡ í•˜ë©´ ë©ë‹ˆë‹¤.
+(<a href="#results">ê²°ê³¼ 처리</a> 참조)ì—서 코드를 호출하여 편집 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë„ë¡ í•˜ë©´ ë©ë‹ˆë‹¤.
ë‹¤ìŒ ì¡°ê°ì€ {@link android.content.ContentResolver}ì—서 {@link java.io.FileOutputStream}
-ì„ ê°€ì ¸ì˜¨ 것입니다. ì´ê²ƒì€ 기본ì ìœ¼ë¡œ "쓰기" 모드를 사용합니다.
-필요한 최소 ìˆ˜ëŸ‰ì˜ ì•¡ì„¸ìŠ¤ë§Œì„ ìš”ì²­í•˜ëŠ” ê²ƒì´ ê°€ìž¥ 좋으니 쓰기만 필요하다면
+ì„ ê°€ì ¸ì˜¨ 것입니다. ì´ê²ƒì€ 기본ì ìœ¼ë¡œ "쓰기" 모드를 사용합니다.
+필요한 최소 ìˆ˜ëŸ‰ì˜ ì•¡ì„¸ìŠ¤ë§Œì„ ìš”ì²­í•˜ëŠ” ê²ƒì´ ê°€ìž¥ 좋으니 쓰기만 필요하다면
ì½ê¸°/쓰기를 요청하지 마십시오.</p>
<pre>private void alterDocument(Uri uri) {
@@ -512,16 +512,16 @@ private static final int EDIT_REQUEST_CODE = 44;
<h3 id="permissions">권한 유지</h3>
-<p>ì•±ì´ ì½ê¸° ë˜ëŠ” 쓰기 ìž‘ì—…ì— ëŒ€í•œ 파ì¼ì„ ì—´ë©´ ì‹œìŠ¤í…œì´ ì•±ì— í•´ë‹¹ 파ì¼ì— 대한 URI 권한 허가를
+<p>ì•±ì´ ì½ê¸° ë˜ëŠ” 쓰기 ìž‘ì—…ì— ëŒ€í•œ 파ì¼ì„ ì—´ë©´ ì‹œìŠ¤í…œì´ ì•±ì— í•´ë‹¹ 파ì¼ì— 대한 URI 권한 허가를
부여합니다. ì´ê²ƒì€ 사용ìžì˜ 장치를 다시 시작할 때까지 유지ë©ë‹ˆë‹¤.
-하지만 ë§Œì¼ ì•±ì´ ì´ë¯¸ì§€ 편집 앱ì´ê³ , 사용ìžê°€ ì—¬ëŸ¬ë¶„ì˜ ì•±ì—서 바로 편집한 5ê°œì˜ ì´ë¯¸ì§€ì—
-액세스할 수 있ë„ë¡ í•˜ê³ ìž í•œë‹¤ê³  가정해봅시다. 사용ìžì˜ 기기가 재시작ë˜ë©´
-ì—¬ëŸ¬ë¶„ì´ ì‚¬ìš©ìžì—게 시스템 ì„ íƒê¸°ë¥¼ 다시 ë³´ë‚´ 해당 파ì¼ì„ 검색하ë„ë¡ í•´ì•¼ í•  í…ë°,
+하지만 ë§Œì¼ ì•±ì´ ì´ë¯¸ì§€ 편집 앱ì´ê³ , 사용ìžê°€ ì—¬ëŸ¬ë¶„ì˜ ì•±ì—서 바로 편집한 5ê°œì˜ ì´ë¯¸ì§€ì—
+액세스할 수 있ë„ë¡ í•˜ê³ ìž í•œë‹¤ê³  가정해봅시다. 사용ìžì˜ 기기가 재시작ë˜ë©´
+ì—¬ëŸ¬ë¶„ì´ ì‚¬ìš©ìžì—게 시스템 ì„ íƒê¸°ë¥¼ 다시 ë³´ë‚´ 해당 파ì¼ì„ 검색하ë„ë¡ í•´ì•¼ í•  í…ë°,
ì´ê²ƒì€ 물론 ì´ìƒì ì¸ 것과는 거리가 멉니다.</p>
<p>ì´ëŸ° ì¼ì´ ì¼ì–´ë‚˜ì§€ 않ë„ë¡ ë°©ì§€í•˜ê¸° 위해 ì‹œìŠ¤í…œì´ ì•±ì— ë¶€ì—¬í•œ ê¶Œí•œì„ ìœ ì§€í•  수 있습니다.
-ì—¬ëŸ¬ë¶„ì˜ ì•±ì€ ì‹œìŠ¤í…œì´ ì œê³µí•˜ëŠ” 유지 가능한 URI 권한 허가를
-효율ì ìœ¼ë¡œ "받아들입니다". ì´ë ‡ê²Œ 하면 사용ìžê°€ ì—¬ëŸ¬ë¶„ì˜ ì•±ì„ í†µí•´ 파ì¼ì— ì§€ì†ì ì¸ 액세스 ê¶Œí•œì„ ê°€ì§ˆ 수 있으며,
+ì—¬ëŸ¬ë¶„ì˜ ì•±ì€ ì‹œìŠ¤í…œì´ ì œê³µí•˜ëŠ” 유지 가능한 URI 권한 허가를
+효율ì ìœ¼ë¡œ "받아들입니다". ì´ë ‡ê²Œ 하면 사용ìžê°€ ì—¬ëŸ¬ë¶„ì˜ ì•±ì„ í†µí•´ 파ì¼ì— ì§€ì†ì ì¸ 액세스 ê¶Œí•œì„ ê°€ì§ˆ 수 있으며,
ì´ëŠ” 기기가 다시 시작ë˜ë”ë¼ë„ 관계 없습니다.</p>
@@ -531,65 +531,65 @@ private static final int EDIT_REQUEST_CODE = 44;
// Check for the freshest data.
getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
-<p>마지막 한 단계가 남았습니다. ì—¬ëŸ¬ë¶„ì˜ ì•±ì´ ì•¡ì„¸ìŠ¤í•œ 가장 ìµœê·¼ì˜ URI를
-저장해ë‘ì—ˆì„ ìˆ˜ 있지만, ì´ëŠ” ë” ì´ìƒ 유효하지 ì•Šì„ ìˆ˜ 있습니다. ë˜ ë‹¤ë¥¸ ì•±ì´ ë¬¸ì„œë¥¼
-삭제하거나 ìˆ˜ì •í–ˆì„ ìˆ˜ 있기 때문입니다. ë”°ë¼ì„œ, í•­ìƒ
-{@code getContentResolver().takePersistableUriPermission()}ì„
+<p>마지막 한 단계가 남았습니다. ì—¬ëŸ¬ë¶„ì˜ ì•±ì´ ì•¡ì„¸ìŠ¤í•œ 가장 ìµœê·¼ì˜ URI를
+저장해ë‘ì—ˆì„ ìˆ˜ 있지만, ì´ëŠ” ë” ì´ìƒ 유효하지 ì•Šì„ ìˆ˜ 있습니다. ë˜ ë‹¤ë¥¸ ì•±ì´ ë¬¸ì„œë¥¼
+삭제하거나 ìˆ˜ì •í–ˆì„ ìˆ˜ 있기 때문입니다. ë”°ë¼ì„œ, í•­ìƒ
+{@code getContentResolver().takePersistableUriPermission()}ì„
호출하여 최신 ë°ì´í„°ë¥¼ 확ì¸í•´ì•¼ 합니다.</p>
<h2 id="custom">ì‚¬ìš©ìž ì§€ì • 문서 ì œê³µìž ìž‘ì„±í•˜ê¸°</h2>
<p>
-파ì¼ìš© 저장소 서비스를 제공하는 ì•±ì„ ê°œë°œ ì¤‘ì¸ ê²½ìš°(예를 들어
-í´ë¼ìš°ë“œ 저장 서비스 등), SAF를 통해 파ì¼ì„ 사용할 수 있ë„ë¡ í•˜ë ¤ë©´ ì‚¬ìš©ìž ì§€ì • 문서 제공ìžë¥¼
+파ì¼ìš© 저장소 서비스를 제공하는 ì•±ì„ ê°œë°œ ì¤‘ì¸ ê²½ìš°(예를 들어
+í´ë¼ìš°ë“œ 저장 서비스 등), SAF를 통해 파ì¼ì„ 사용할 수 있ë„ë¡ í•˜ë ¤ë©´ ì‚¬ìš©ìž ì§€ì • 문서 제공ìžë¥¼
작성하면 ë©ë‹ˆë‹¤. ì´ ì„¹ì…˜ì—서는 ì´ë ‡ê²Œ 하는 ë°©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.
</p>
<h3 id="manifest">매니페스트</h3>
-<p>ì‚¬ìš©ìž ì§€ì • 문서 제공ìžë¥¼ 구현하려면 애플리케ì´ì…˜ì˜ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ë‹¤ìŒê³¼ ê°™ì€ í•­ëª©ì„
+<p>ì‚¬ìš©ìž ì§€ì • 문서 제공ìžë¥¼ 구현하려면 애플리케ì´ì…˜ì˜ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ë‹¤ìŒê³¼ ê°™ì€ í•­ëª©ì„
추가하십시오.</p>
<ul>
<li>API 레벨 19 ì´ìƒì˜ 대ìƒ.</li>
-<li>ì‚¬ìš©ìž ì§€ì • 저장소 제공ìžë¥¼ 선언하는 <code>&lt;provider&gt;</code>
+<li>ì‚¬ìš©ìž ì§€ì • 저장소 제공ìžë¥¼ 선언하는 <code>&lt;provider&gt;</code>
요소. </li>
-<li>제공ìžì˜ ì´ë¦„ì€ ê·¸ í´ëž˜ìФ ì´ë¦„ì´ë©° ì—¬ê¸°ì— íŒ¨í‚¤ì§€ ì´ë¦„ë„ í¬í•¨ë©ë‹ˆë‹¤.
+<li>제공ìžì˜ ì´ë¦„ì€ ê·¸ í´ëž˜ìФ ì´ë¦„ì´ë©° ì—¬ê¸°ì— íŒ¨í‚¤ì§€ ì´ë¦„ë„ í¬í•¨ë©ë‹ˆë‹¤.
예: <code>com.example.android.storageprovider.MyCloudProvider</code></li>
-<li>ê¶Œí•œì˜ ì´ë¦„, ì´ëŠ” 패키지 ì´ë¦„ê³¼ 같으며(ì´ ì˜ˆì‹œì—서는
+<li>ê¶Œí•œì˜ ì´ë¦„, ì´ëŠ” 패키지 ì´ë¦„ê³¼ 같으며(ì´ ì˜ˆì‹œì—서는
<code>com.example.android.storageprovider</code>)ì—¬ê¸°ì— ì½˜í…츠 ì œê³µìž ìœ í˜•ì„ ë”합니다
(<code>documents</code>). 예: {@code com.example.android.storageprovider.documents}</li>
<li><code>android:exported</code> ì†ì„±ì„ <code>&quot;true&quot;</code>로 설정.
제공ìžë¥¼ ë‚´ë³´ë‚´ 다른 ì•±ì´ ë³¼ 수 있ë„ë¡ í•´ì•¼ 합니다.</li>
-<li><code>android:grantUriPermissions</code> ì†ì„±ì„
-<code>&quot;true&quot;</code>로 설정. ì´ë ‡ê²Œ 설정하면 ì‹œìŠ¤í…œì´ ì—¬ëŸ¬ë¶„ì˜ ì œê³µìž ì•ˆì— ìžˆëŠ” 콘í…ì¸ ì— ì•¡ì„¸ìŠ¤í•˜ë„ë¡ ë‹¤ë¥¸ 앱ì—
-ê¶Œí•œì„ í—ˆê°€í•  수 있게 í•´ì¤ë‹ˆë‹¤. 특정 ë¬¸ì„œì— ëŒ€í•œ 권한 부여를 유지하는 ë°©ë²•ì— ëŒ€í•œ ë…¼ì˜ëŠ”
+<li><code>android:grantUriPermissions</code> ì†ì„±ì„
+<code>&quot;true&quot;</code>로 설정. ì´ë ‡ê²Œ 설정하면 ì‹œìŠ¤í…œì´ ì—¬ëŸ¬ë¶„ì˜ ì œê³µìž ì•ˆì— ìžˆëŠ” 콘í…ì¸ ì— ì•¡ì„¸ìŠ¤í•˜ë„ë¡ ë‹¤ë¥¸ 앱ì—
+ê¶Œí•œì„ í—ˆê°€í•  수 있게 í•´ì¤ë‹ˆë‹¤. 특정 ë¬¸ì„œì— ëŒ€í•œ 권한 부여를 유지하는 ë°©ë²•ì— ëŒ€í•œ ë…¼ì˜ëŠ”
<a href="#permissions">권한 유지</a>를 참조하십시오.</li>
<li>{@code MANAGE_DOCUMENTS} 권한. 기본ì ìœ¼ë¡œ 제공ìžëŠ” 누구나 ì´ìš©í•  수 있습니다.
- ì´ ê¶Œí•œì„ ì¶”ê°€í•˜ë©´ ì—¬ëŸ¬ë¶„ì˜ ì œê³µìžë¥¼ ì‹œìŠ¤í…œì— ì œí•œí•˜ê²Œ ë©ë‹ˆë‹¤.
+ ì´ ê¶Œí•œì„ ì¶”ê°€í•˜ë©´ ì—¬ëŸ¬ë¶„ì˜ ì œê³µìžë¥¼ ì‹œìŠ¤í…œì— ì œí•œí•˜ê²Œ ë©ë‹ˆë‹¤.
ì´ ì œí•œì€ ë³´ì•ˆìƒ ë§¤ìš° 중요합니다.</li>
-<li>{@code android:enabled} ì†ì„±ì„ 리소스 파ì¼ì—서 ì •ì˜í•œ 부울 값으로
-설정합니다. ì´ ì†ì„±ì˜ 목ì ì€ Android 4.3 ì´í•˜ì—서 실행ë˜ëŠ” 기기ì—서 제공ìžë¥¼ 비활성화하는 ë° ìžˆìŠµë‹ˆë‹¤.
-예를 들어 {@code android:enabled="@bool/atLeastKitKat"} 등입니다. ì´ ì†ì„±ì„
+<li>{@code android:enabled} ì†ì„±ì„ 리소스 파ì¼ì—서 ì •ì˜í•œ 부울 값으로
+설정합니다. ì´ ì†ì„±ì˜ 목ì ì€ Android 4.3 ì´í•˜ì—서 실행ë˜ëŠ” 기기ì—서 제공ìžë¥¼ 비활성화하는 ë° ìžˆìŠµë‹ˆë‹¤.
+예를 들어 {@code android:enabled="@bool/atLeastKitKat"} 등입니다. ì´ ì†ì„±ì„
ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ì¶”ê°€í•˜ëŠ” 것 ì´ì™¸ì—ë„ ë‹¤ìŒê³¼ ê°™ì€ ìž‘ì—…ì„ í•´ì•¼ 합니다.
<ul>
-<li>{@code res/values/} ì•„ëž˜ì˜ {@code bool.xml} 리소스 파ì¼ì—
+<li>{@code res/values/} ì•„ëž˜ì˜ {@code bool.xml} 리소스 파ì¼ì—
ì´ ë¼ì¸ì„ 추가합니다. <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;false&lt;/bool&gt;</pre></li>
-<li>{@code res/values-v19/} ì•„ëž˜ì˜ {@code bool.xml} 리소스 파ì¼ì—
+<li>{@code res/values-v19/} ì•„ëž˜ì˜ {@code bool.xml} 리소스 파ì¼ì—
ì´ ë¼ì¸ì„ 추가합니다. <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;true&lt;/bool&gt;</pre></li>
</ul></li>
<li>
-{@code android.content.action.DOCUMENTS_PROVIDER} ë™ìž‘ì„ í¬í•¨í•œ ì¸í…트 í•„í„°ê°€ 있어야
+{@code android.content.action.DOCUMENTS_PROVIDER} ë™ìž‘ì„ í¬í•¨í•œ ì¸í…트 í•„í„°ê°€ 있어야
ì‹œìŠ¤í…œì´ ì œê³µìžë¥¼ 검색할 때 ì—¬ëŸ¬ë¶„ì˜ ì œê³µìžê°€ ì„ íƒê¸°ì— 나타날 수 있습니다.</li>
</ul>
@@ -619,31 +619,31 @@ getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
<h4 id="43">Android 4.3 ì´í•˜ì—서 실행ë˜ëŠ” 기기 ì§€ì›</h4>
<p>
-{@link android.content.Intent#ACTION_OPEN_DOCUMENT} ì¸í…트는
-Android 4.4 ì´ìƒì—서 실행ë˜ëŠ” 기기ì—서만 사용할 수 있습니다.
-애플리케ì´ì…˜ì´ {@link android.content.Intent#ACTION_GET_CONTENT}를 ì§€ì›í•˜ë„ë¡ í•˜ì—¬
-Android 4.3 ì´í•˜ì—서 실행ë˜ëŠ” 기기ì—ë„ ì ìš©ë˜ë„ë¡ í•˜ë ¤ë©´ Android 4.4 ì´ìƒì—서 실행ë˜ëŠ” 기기용 ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ìžˆëŠ”
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} ì¸í…트는
+Android 4.4 ì´ìƒì—서 실행ë˜ëŠ” 기기ì—서만 사용할 수 있습니다.
+애플리케ì´ì…˜ì´ {@link android.content.Intent#ACTION_GET_CONTENT}를 ì§€ì›í•˜ë„ë¡ í•˜ì—¬
+Android 4.3 ì´í•˜ì—서 실행ë˜ëŠ” 기기ì—ë„ ì ìš©ë˜ë„ë¡ í•˜ë ¤ë©´ Android 4.4 ì´ìƒì—서 실행ë˜ëŠ” 기기용 ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ìžˆëŠ”
{@link android.content.Intent#ACTION_GET_CONTENT}
- ì¸í…트 필터를 비활성화해야 합니다.
-문서 제공ìžì™€ {@link android.content.Intent#ACTION_GET_CONTENT}는 ìƒí˜¸ 배타ì ì¸ 것으로
-간주해야 합니다. ë‘˜ì„ ëª¨ë‘ ë™ì‹œì— ì§€ì›í•˜ëŠ” 경우, ì•±ì´ ì‹œìŠ¤í…œ ì„ íƒê¸° UIì—
+ ì¸í…트 필터를 비활성화해야 합니다.
+문서 제공ìžì™€ {@link android.content.Intent#ACTION_GET_CONTENT}는 ìƒí˜¸ 배타ì ì¸ 것으로
+간주해야 합니다. ë‘˜ì„ ëª¨ë‘ ë™ì‹œì— ì§€ì›í•˜ëŠ” 경우, ì•±ì´ ì‹œìŠ¤í…œ ì„ íƒê¸° UIì—
ë‘ ë²ˆ 나타나 ì €ìž¥ëœ ë°ì´í„°ì— 액세스할 ë‘ ê°€ì§€ 서로 다른 ë°©ë²•ì„ ì œì•ˆí•˜ê²Œ ë©ë‹ˆë‹¤.
ì´ë ‡ê²Œ ë˜ë©´ 사용ìžì—게 혼ë™ì„ 주게 ë˜ê² ì£ .</p>
-<p>다ìŒì€ Android 버전 4.4 ì´ìƒì—서 실행ë˜ëŠ” 기기용
-{@link android.content.Intent#ACTION_GET_CONTENT} ì¸í…트 필터를
+<p>다ìŒì€ Android 버전 4.4 ì´ìƒì—서 실행ë˜ëŠ” 기기용
+{@link android.content.Intent#ACTION_GET_CONTENT} ì¸í…트 필터를
비활성화하는 ë° ê¶Œìž¥ë˜ëŠ” 방법입니다.</p>
<ol>
-<li>{@code res/values/} ì•„ëž˜ì˜ {@code bool.xml} 리소스 파ì¼ì—
+<li>{@code res/values/} ì•„ëž˜ì˜ {@code bool.xml} 리소스 파ì¼ì—
ì´ ë¼ì¸ì„ 추가합니다. <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;true&lt;/bool&gt;</pre></li>
-<li>{@code res/values-v19/} ì•„ëž˜ì˜ {@code bool.xml} 리소스 파ì¼ì—
+<li>{@code res/values-v19/} ì•„ëž˜ì˜ {@code bool.xml} 리소스 파ì¼ì—
ì´ ë¼ì¸ì„ 추가합니다. <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;false&lt;/bool&gt;</pre></li>
<li>
-<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">액티비티
-별칭</a>ì„ ì¶”ê°€í•˜ì—¬ 버전 4.4(API 레벨 19) ì´ìƒì„ 대ìƒìœ¼ë¡œ 한 {@link android.content.Intent#ACTION_GET_CONTENT}
+<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">액티비티
+별칭</a>ì„ ì¶”ê°€í•˜ì—¬ 버전 4.4(API 레벨 19) ì´ìƒì„ 대ìƒìœ¼ë¡œ 한 {@link android.content.Intent#ACTION_GET_CONTENT}
ì¸í…트 필터를 비활성화합니다. 예:
<pre>
@@ -666,13 +666,13 @@ Android 4.3 ì´í•˜ì—서 실행ë˜ëŠ” 기기ì—ë„ ì ìš©ë˜ë„ë¡ í•˜ë ¤ë©´ And
</ol>
<h3 id="contract">계약</h3>
-<p>ì‚¬ìš©ìž ì§€ì • 제공ìžë¥¼ 작성할 때면 ì¼ë°˜ì ìœ¼ë¡œ 수반ë˜ëŠ” 작업 중 하나가
-계약 í´ëž˜ìŠ¤ë¥¼ 구현하는 것입니다. ì´ëŠ”
+<p>ì‚¬ìš©ìž ì§€ì • 제공ìžë¥¼ 작성할 때면 ì¼ë°˜ì ìœ¼ë¡œ 수반ë˜ëŠ” 작업 중 하나가
+계약 í´ëž˜ìŠ¤ë¥¼ 구현하는 것입니다. ì´ëŠ”
<a href="{@docRoot}guide/topics/providers/content-provider-creating.html#ContractClass">
-콘í…츠 제공ìž</a> ê°œë°œìž ê°€ì´ë“œì—서 설명한 것과 같습니다. 계약 í´ëž˜ìŠ¤ëŠ” {@code public final} í´ëž˜ìŠ¤ë¡œ,
-ì´ ì•ˆì— URIì— ëŒ€í•œ ìƒìˆ˜ ì •ì˜, ì—´ ì´ë¦„, MIME 유형 ë° ì œê³µìžì— 관련ëœ
-다른 메타 ë°ì´í„°ê°€ 들어 있습니다. SAFê°€
-ì´ì™€ ê°™ì€ ê³„ì•½ í´ëž˜ìŠ¤ë¥¼ 대신 제공해주므로 ì§ì ‘ ì“°ì§€ 않아ë„
+콘í…츠 제공ìž</a> ê°œë°œìž ê°€ì´ë“œì—서 설명한 것과 같습니다. 계약 í´ëž˜ìŠ¤ëŠ” {@code public final} í´ëž˜ìŠ¤ë¡œ,
+ì´ ì•ˆì— URIì— ëŒ€í•œ ìƒìˆ˜ ì •ì˜, ì—´ ì´ë¦„, MIME 유형 ë° ì œê³µìžì— 관련ëœ
+다른 메타 ë°ì´í„°ê°€ 들어 있습니다. SAFê°€
+ì´ì™€ ê°™ì€ ê³„ì•½ í´ëž˜ìŠ¤ë¥¼ 대신 제공해주므로 ì§ì ‘ ì“°ì§€ 않아ë„
ë©ë‹ˆë‹¤.</p>
<ul>
@@ -680,7 +680,7 @@ Android 4.3 ì´í•˜ì—서 실행ë˜ëŠ” 기기ì—ë„ ì ìš©ë˜ë„ë¡ í•˜ë ¤ë©´ And
<li>{@link android.provider.DocumentsContract.Root}</li>
</ul>
-<p>예를 들어 다ìŒì€ ì—¬ëŸ¬ë¶„ì˜ ë¬¸ì„œ 제공ìžê°€ 문서 ë˜ëŠ” ë£¨íŠ¸ì— ëŒ€í•´ ì¿¼ë¦¬ëœ ê²½ìš°
+<p>예를 들어 다ìŒì€ ì—¬ëŸ¬ë¶„ì˜ ë¬¸ì„œ 제공ìžê°€ 문서 ë˜ëŠ” ë£¨íŠ¸ì— ëŒ€í•´ ì¿¼ë¦¬ëœ ê²½ìš°
커서로 반환할 수 있는 ì—´ì„ ë‚˜íƒ€ë‚¸ 것입니다.</p>
<pre>private static final String[] DEFAULT_ROOT_PROJECTION =
@@ -696,7 +696,7 @@ private static final String[] DEFAULT_DOCUMENT_PROJECTION = new
<h3 id="subclass">하위 í´ëž˜ìФ DocumentsProvider</h3>
-<p>ì‚¬ìš©ìž ì§€ì • 문서 제공ìžë¥¼ 작성하기 위한 ë‹¤ìŒ ë‹¨ê³„ëŠ”
+<p>ì‚¬ìš©ìž ì§€ì • 문서 제공ìžë¥¼ 작성하기 위한 ë‹¤ìŒ ë‹¨ê³„ëŠ”
ì¶”ìƒ í´ëž˜ìФ {@link android.provider.DocumentsProvider}를 하위 í´ëž˜ìŠ¤ë¡œ 만드는 것입니다. 최소한 다ìŒê³¼ ê°™ì€ ë©”ì„œë“œë¥¼ 구현해야 합니다.
</p>
@@ -710,22 +710,22 @@ private static final String[] DEFAULT_DOCUMENT_PROJECTION = new
<li>{@link android.provider.DocumentsProvider#openDocument openDocument()}</li>
</ul>
-<p>ê¼­ 구현해야만 하는 메서드는 ì´ë“¤ë¿ì´ì§€ë§Œ, ê°œë°œìž ì—¬ëŸ¬ë¶„ì´ êµ¬í˜„í•˜ê³ ìž í•˜ëŠ” 메서드는 ì´ë³´ë‹¤
-훨씬 ë§Žì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ìžì„¸í•œ ë‚´ìš©ì€{@link android.provider.DocumentsProvider}
+<p>ê¼­ 구현해야만 하는 메서드는 ì´ë“¤ë¿ì´ì§€ë§Œ, ê°œë°œìž ì—¬ëŸ¬ë¶„ì´ êµ¬í˜„í•˜ê³ ìž í•˜ëŠ” 메서드는 ì´ë³´ë‹¤
+훨씬 ë§Žì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ìžì„¸í•œ ë‚´ìš©ì€{@link android.provider.DocumentsProvider}
를 참조하십시오.</p>
<h4 id="queryRoots">QueryRoots 구현</h4>
<p>{@link android.provider.DocumentsProvider#queryRoots
-queryRoots()} êµ¬í˜„ì€ ë°˜ë“œì‹œ {@link android.database.Cursor}를 반환해야 하며,
-ì´ëŠ” 문서 제공ìžì˜ 모든 루트 디렉터리를 가리켜야 합니다. ì´ë•Œ
+queryRoots()} êµ¬í˜„ì€ ë°˜ë“œì‹œ {@link android.database.Cursor}를 반환해야 하며,
+ì´ëŠ” 문서 제공ìžì˜ 모든 루트 디렉터리를 가리켜야 합니다. ì´ë•Œ
{@link android.provider.DocumentsContract.Root}ì—서 ì •ì˜í•œ ì—´ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.</p>
-<p>ë‹¤ìŒ ì¡°ê°ì—서 {@code projection} 매개변수는
+<p>ë‹¤ìŒ ì¡°ê°ì—서 {@code projection} 매개변수는
발신ìžê°€ ëŒë ¤ë°›ê³ ìž 하는 특정 필드를 나타냅니다. ì´ ì¡°ê°ì€ 새 커서를 ìƒì„±í•˜ë©°
-ê·¸ì— í•˜ë‚˜ì˜ í–‰ì„ ì¶”ê°€í•©ë‹ˆë‹¤. í•˜ë‚˜ì˜ ë£¨íŠ¸,
-다운로드 ë˜ëŠ” ì´ë¯¸ì§€ì™€ ê°™ì€ ìµœìƒìœ„ 레벨 디렉터리가 해당ë©ë‹ˆë‹¤. ëŒ€ë¶€ë¶„ì˜ ì œê³µìžì—는 루트가 하나ë¿ìž…니다. 하나 ì´ìƒì´ ìžˆì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
-예를 들어 ì‚¬ìš©ìž ê³„ì •ì´ ì—¬ëŸ¬ ê°œì¸ ê²½ìš°ê°€ 있습니다. 그런 경우ì—는 ì»¤ì„œì— ë‘ ë²ˆì§¸ í–‰ì„
+ê·¸ì— í•˜ë‚˜ì˜ í–‰ì„ ì¶”ê°€í•©ë‹ˆë‹¤. í•˜ë‚˜ì˜ ë£¨íŠ¸,
+다운로드 ë˜ëŠ” ì´ë¯¸ì§€ì™€ ê°™ì€ ìµœìƒìœ„ 레벨 디렉터리가 해당ë©ë‹ˆë‹¤. ëŒ€ë¶€ë¶„ì˜ ì œê³µìžì—는 루트가 하나ë¿ìž…니다. 하나 ì´ìƒì´ ìžˆì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
+예를 들어 ì‚¬ìš©ìž ê³„ì •ì´ ì—¬ëŸ¬ ê°œì¸ ê²½ìš°ê°€ 있습니다. 그런 경우ì—는 ì»¤ì„œì— ë‘ ë²ˆì§¸ í–‰ì„
추가하면 ë©ë‹ˆë‹¤.</p>
<pre>
@@ -778,13 +778,13 @@ public Cursor queryRoots(String[] projection) throws FileNotFoundException {
<p>
{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}
- êµ¬í˜„ì€ ë°˜ë“œì‹œ {@link android.database.Cursor}를 반환해야 하며,
-ì´ëŠ” ì§€ì •ëœ ë””ë ‰í„°ë¦¬ ë‚´ì˜ ëª¨ë“  파ì¼ì„ 가리켜야 합니다. ì´ë•Œ
+ êµ¬í˜„ì€ ë°˜ë“œì‹œ {@link android.database.Cursor}를 반환해야 하며,
+ì´ëŠ” ì§€ì •ëœ ë””ë ‰í„°ë¦¬ ë‚´ì˜ ëª¨ë“  파ì¼ì„ 가리켜야 합니다. ì´ë•Œ
{@link android.provider.DocumentsContract.Document}ì—서 ì •ì˜í•œ ì—´ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.</p>
-<p>ì´ ë©”ì„œë“œëŠ” ì„ íƒê¸° UIì—서 애플리케ì´ì…˜ 루트를 ì„ íƒí•˜ëŠ” 경우 호출ë©ë‹ˆë‹¤.
-ì´ëŠ” 해당 루트 아래 ë””ë ‰í„°ë¦¬ì˜ í•˜ìœ„ 문서를 가져옵니다. ì´ê²ƒì€ 루트ì—서ë¿ë§Œ ì•„ë‹ˆë¼ íŒŒì¼ ê³„ì¸µì˜ ì–´ëŠ ë ˆë²¨ì—서나
-호출할 수 있습니다. ì´ ì¡°ê°ì€ 요청한 열로 새 커서를 만든 다ìŒ,
+<p>ì´ ë©”ì„œë“œëŠ” ì„ íƒê¸° UIì—서 애플리케ì´ì…˜ 루트를 ì„ íƒí•˜ëŠ” 경우 호출ë©ë‹ˆë‹¤.
+ì´ëŠ” 해당 루트 아래 ë””ë ‰í„°ë¦¬ì˜ í•˜ìœ„ 문서를 가져옵니다. ì´ê²ƒì€ 루트ì—서ë¿ë§Œ ì•„ë‹ˆë¼ íŒŒì¼ ê³„ì¸µì˜ ì–´ëŠ ë ˆë²¨ì—서나
+호출할 수 있습니다. ì´ ì¡°ê°ì€ 요청한 열로 새 커서를 만든 다ìŒ,
ìƒìœ„ ë””ë ‰í„°ë¦¬ì— ìžˆëŠ” 모든 ì§ì† í•˜ìœ„ì— ëŒ€í•œ 정보를 ì»¤ì„œì— ì¶”ê°€í•©ë‹ˆë‹¤.
하위는 ì´ë¯¸ì§€, ë˜ ë‹¤ë¥¸ 디렉터리가 ë  ìˆ˜ë„ ìžˆê³ 
ì–´ëŠ íŒŒì¼ì´ë¼ë„ ë  ìˆ˜ 있습니다.</p>
@@ -808,13 +808,13 @@ public Cursor queryChildDocuments(String parentDocumentId, String[] projection,
<p>
{@link android.provider.DocumentsProvider#queryDocument queryDocument()}
- êµ¬í˜„ì€ ë°˜ë“œì‹œ {@link android.database.Cursor}를 반환해야 하며,
+ êµ¬í˜„ì€ ë°˜ë“œì‹œ {@link android.database.Cursor}를 반환해야 하며,
ì´ëŠ” ì§€ì •ëœ íŒŒì¼ì„ 가리켜야 합니다. ì´ë•Œ {@link android.provider.DocumentsContract.Document}ì—서 ì •ì˜í•œ ì—´ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
</p>
<p>{@link android.provider.DocumentsProvider#queryDocument queryDocument()}
- 메서드는
-{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}ì—서
+ 메서드는
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}ì—서
ì „ë‹¬ëœ ê²ƒê³¼ ê°™ì€ ì •ë³´ë¥¼ 반환하지만, 특정한 파ì¼ì—ë§Œ 해당ë©ë‹ˆë‹¤.</p>
@@ -832,12 +832,12 @@ public Cursor queryDocument(String documentId, String[] projection) throws
<h4 id="openDocument">OpenDocument 구현</h4>
-<p>ì§€ì •ëœ íŒŒì¼ì„ 나타내는
+<p>ì§€ì •ëœ íŒŒì¼ì„ 나타내는
{@link android.os.ParcelFileDescriptor}를 반환하려면 {@link android.provider.DocumentsProvider#openDocument
openDocument()}를 구현해야 합니다. 다른 ì•±ë“¤ì´ ë°˜í™˜ëœ {@link android.os.ParcelFileDescriptor}를
- 사용하여 ë°ì´í„°ë¥¼ 스트리ë°í•  수 있습니다. ì‹œìŠ¤í…œì€ ì‚¬ìš©ìžê°€ 파ì¼ì„ ì„ íƒí•˜ê³ 
-í´ë¼ì´ì–¸íЏ ì•±ì´ ì´ì— 대한 액세스를 요청하면서
-{@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()}를 사용할 때 ì´ ë©”ì„œë“œë¥¼ 호출합니다.
+ 사용하여 ë°ì´í„°ë¥¼ 스트리ë°í•  수 있습니다. ì‹œìŠ¤í…œì€ ì‚¬ìš©ìžê°€ 파ì¼ì„ ì„ íƒí•˜ê³ 
+í´ë¼ì´ì–¸íЏ ì•±ì´ ì´ì— 대한 액세스를 요청하면서
+{@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()}를 사용할 때 ì´ ë©”ì„œë“œë¥¼ 호출합니다.
예를 들면 다ìŒê³¼ 같습니다.</p>
<pre>&#64;Override
@@ -885,8 +885,8 @@ public ParcelFileDescriptor openDocument(final String documentId,
<h3 id="security">보안</h3>
<p>ì—¬ëŸ¬ë¶„ì˜ ë¬¸ì„œ 제공ìžê°€ 암호로 ë³´í˜¸ëœ í´ë¼ìš°ë“œ 저장소 서비스ì´ê³ 
-ì—¬ëŸ¬ë¶„ì€ ì‚¬ìš©ìžê°€ 파ì¼ì„ 공유하기 ì „ì— ìš°ì„  로그ì¸ë¶€í„° 하ë„ë¡ í™•ì‹¤ížˆ í•´ë‘ê³  싶다고 가정합니다.
-사용ìžê°€ 로그ì¸ë˜ì§€ ì•Šì€ ê²½ìš° ì•±ì€ ì–´ë–»ê²Œ 해야 합니까? 해법ì€
+ì—¬ëŸ¬ë¶„ì€ ì‚¬ìš©ìžê°€ 파ì¼ì„ 공유하기 ì „ì— ìš°ì„  로그ì¸ë¶€í„° 하ë„ë¡ í™•ì‹¤ížˆ í•´ë‘ê³  싶다고 가정합니다.
+사용ìžê°€ 로그ì¸ë˜ì§€ ì•Šì€ ê²½ìš° ì•±ì€ ì–´ë–»ê²Œ 해야 합니까? 해법ì€
{@link android.provider.DocumentsProvider#queryRoots
queryRoots()} 구현ì—서 루트를 반환하지 않는 것입니다. 다시 ë§í•´, í…… 빈 루트 커서를 반환하는 것입니다.</p>
@@ -901,11 +901,11 @@ public Cursor queryRoots(String[] projection) throws FileNotFoundException {
</pre>
<p>ë˜ ë‹¤ë¥¸ 단계는 {@code getContentResolver().notifyChange()}를 호출하는 것입니다.
-{@link android.provider.DocumentsContract}를 기억하십니까? ì´ê²ƒì„ 사용하는 ì´ìœ ëŠ”
-바로 ì´ URI를 만들기 위해서입니다. ë‹¤ìŒ ì¡°ê°ì€ 사용ìžì˜ ë¡œê·¸ì¸ ìƒíƒœê°€ ë³€ê²½ë  ë•Œë§ˆë‹¤
-ì‹œìŠ¤í…œì´ ë¬¸ì„œ 제공ìžì˜ 루트를 쿼리하ë„ë¡ ì§€ì‹œí•˜ê³  있습니다. 사용ìžê°€ 로그ì¸ë˜ì–´ 있지 ì•Šì€ ìƒíƒœì—서
-{@link android.provider.DocumentsProvider#queryRoots queryRoots()}를 호출하면
-위ì—서 나타낸 것과 ê°™ì´ ë¹ˆ 커서를 반환합니다. ì´ë ‡ê²Œ 하면 사용ìžê°€ 제공ìžì— 로그ì¸ë˜ì—ˆì„ 때만
+{@link android.provider.DocumentsContract}를 기억하십니까? ì´ê²ƒì„ 사용하는 ì´ìœ ëŠ”
+바로 ì´ URI를 만들기 위해서입니다. ë‹¤ìŒ ì¡°ê°ì€ 사용ìžì˜ ë¡œê·¸ì¸ ìƒíƒœê°€ ë³€ê²½ë  ë•Œë§ˆë‹¤
+ì‹œìŠ¤í…œì´ ë¬¸ì„œ 제공ìžì˜ 루트를 쿼리하ë„ë¡ ì§€ì‹œí•˜ê³  있습니다. 사용ìžê°€ 로그ì¸ë˜ì–´ 있지 ì•Šì€ ìƒíƒœì—서
+{@link android.provider.DocumentsProvider#queryRoots queryRoots()}를 호출하면
+위ì—서 나타낸 것과 ê°™ì´ ë¹ˆ 커서를 반환합니다. ì´ë ‡ê²Œ 하면 사용ìžê°€ 제공ìžì— 로그ì¸ë˜ì—ˆì„ 때만
제공ìžì˜ 문서를 사용할 수 있ë„ë¡ ë³´ìž¥í•  수 있습니다.</p>
<pre>private void onLoginButtonClick() {
diff --git a/docs/html-intl/intl/ko/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/ko/guide/topics/resources/accessing-resources.jd
index be9dd6bb0b20..f323280f9d78 100644
--- a/docs/html-intl/intl/ko/guide/topics/resources/accessing-resources.jd
+++ b/docs/html-intl/intl/ko/guide/topics/resources/accessing-resources.jd
@@ -7,7 +7,7 @@ parent.link=index.html
<div id="qv">
<h2>간략히 보기</h2>
<ul>
- <li>리소스는 {@code R.java}ì˜ ì •ìˆ˜ë¥¼ 사용하는 코드, 예를 들어
+ <li>리소스는 {@code R.java}ì˜ ì •ìˆ˜ë¥¼ 사용하는 코드, 예를 들어
{@code R.drawable.myimage}ì—서 참조할 수 있습니다.</li>
<li>리소스는 특수 XML êµ¬ë¬¸ì„ ì‚¬ìš©í•˜ëŠ” 리소스, 예를 들어 {@code
&#64;drawable/myimage}ì—서 참조할 수 있습니다.</li>
@@ -42,25 +42,25 @@ parent.link=index.html
-<p>ì¼ë‹¨ ì–´ë–¤ 리소스를 애플리케ì´ì…˜ì— 제공한 다ìŒì—는(<a href="providing-resources.html">리소스 제공</a>ì—서 ë…¼ì˜),
-해당 ë¦¬ì†ŒìŠ¤ì˜ ë¦¬ì†ŒìŠ¤ ID를 ì°¸ì¡°í•¨ìœ¼ë¡œì¨ ì´ë¥¼ ì ìš©í•  수 있습니다. 모든 리소스 ID는
+<p>ì¼ë‹¨ ì–´ë–¤ 리소스를 애플리케ì´ì…˜ì— 제공한 다ìŒì—는(<a href="providing-resources.html">리소스 제공</a>ì—서 ë…¼ì˜),
+해당 ë¦¬ì†ŒìŠ¤ì˜ ë¦¬ì†ŒìŠ¤ ID를 ì°¸ì¡°í•¨ìœ¼ë¡œì¨ ì´ë¥¼ ì ìš©í•  수 있습니다. 모든 리소스 ID는
{@code aapt} ë„구가 ìžë™ìœ¼ë¡œ ìƒì„±í•˜ëŠ” 프로ì íŠ¸ì˜ {@code R} í´ëž˜ìФì—서 ì •ì˜ë©ë‹ˆë‹¤.</p>
<p>애플리케ì´ì…˜ì´ 컴파ì¼ë§ë˜ë©´, {@code aapt}ê°€ {@code R} í´ëž˜ìŠ¤ë¥¼ ìƒì„±í•˜ë©°, ì´ í´ëž˜ìФ ì•ˆì— {@code
-res/} ë””ë ‰í„°ë¦¬ì— ìžˆëŠ” 모든 리소스ì˜
-리소스 IDê°€ 들어있습니다. ê° ë¦¬ì†ŒìŠ¤ 유형ì—는 {@code R} 하위 í´ëž˜ìŠ¤ê°€ 있고(예: 모든 드로어블 ë¦¬ì†ŒìŠ¤ì— ëŒ€í•œ
+res/} ë””ë ‰í„°ë¦¬ì— ìžˆëŠ” 모든 리소스ì˜
+리소스 IDê°€ 들어있습니다. ê° ë¦¬ì†ŒìŠ¤ 유형ì—는 {@code R} 하위 í´ëž˜ìŠ¤ê°€ 있고(예: 모든 드로어블 ë¦¬ì†ŒìŠ¤ì— ëŒ€í•œ
{@code R.drawable}), 해당 ìœ í˜•ì˜ ê° ë¦¬ì†ŒìŠ¤ì—는 ì •ì 
-정수가 있습니다(예: {@code R.drawable.icon}). ì´ ì •ìˆ˜ê°€
+정수가 있습니다(예: {@code R.drawable.icon}). ì´ ì •ìˆ˜ê°€
리소스를 검색하는 ë° ì‚¬ìš©í•  수 있는 리소스 ID입니다.</p>
-<p>{@code R} í´ëž˜ìŠ¤ê°€ 리소스 IDê°€ 지정ë˜ëŠ” ê³³ì´ê¸°ëŠ” 하지만, 리소스 ID를 찾기 위해
+<p>{@code R} í´ëž˜ìŠ¤ê°€ 리소스 IDê°€ 지정ë˜ëŠ” ê³³ì´ê¸°ëŠ” 하지만, 리소스 ID를 찾기 위해
ì´ê³³ì„ ë³¼ 필요는 전혀 없습니다. í•˜ë‚˜ì˜ ë¦¬ì†ŒìŠ¤ ID는 í•­ìƒ ë‹¤ìŒê³¼ ê°™ì´ êµ¬ì„±ë©ë‹ˆë‹¤.</p>
<ul>
<li><em>리소스 유형</em>: ê° ë¦¬ì†ŒìŠ¤ëŠ” "유형"으로 그룹화ë©ë‹ˆë‹¤. 예: {@code
string}, {@code drawable} ë° {@code layout} 다양한 ìœ í˜•ì— ê´€í•œ ìžì„¸í•œ 정보는 <a href="available-resources.html">리소스 유형</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
</li>
- <li><em>리소스 ì´ë¦„</em>:
-리소스가 단순 ê°’(예: 문ìžì—´ 등)ì¼ ê²½ìš°,
+ <li><em>리소스 ì´ë¦„</em>:
+리소스가 단순 ê°’(예: 문ìžì—´ 등)ì¼ ê²½ìš°,
확장ìžë¥¼ 제외한 íŒŒì¼ ì´ë¦„ì´ë‚˜ XML {@code android:name} ì†ì„± ê°’ 중 하나입니다.</li>
</ul>
@@ -69,14 +69,14 @@ string}, {@code drawable} ë° {@code layout} 다양한 ìœ í˜•ì— ê´€í•œ ìžì„¸í•
<li><strong>코드 ë‚´ë¶€ì—서:</strong> {@code R}
í´ëž˜ìŠ¤ì˜ í•˜ìœ„ í´ëž˜ìФì—서 ì •ì  ì •ìˆ˜ë¥¼ 사용합니다. 예:
<pre class="classic no-pretty-print">R.string.hello</pre>
- <p>{@code string}ì€ ë¦¬ì†ŒìŠ¤ 유형ì´ê³  {@code hello}는 리소스 ì´ë¦„입니다. 리소스 ID를 ì´ í˜•ì‹ìœ¼ë¡œ 제공하면 ë¦¬ì†ŒìŠ¤ì— ì•¡ì„¸ìŠ¤í•  수 있는
-Android API가 많습니다.
+ <p>{@code string}ì€ ë¦¬ì†ŒìŠ¤ 유형ì´ê³  {@code hello}는 리소스 ì´ë¦„입니다. 리소스 ID를 ì´ í˜•ì‹ìœ¼ë¡œ 제공하면 ë¦¬ì†ŒìŠ¤ì— ì•¡ì„¸ìŠ¤í•  수 있는
+Android API가 많습니다.
<a href="#ResourcesFromCode">코드 내 리소스 액세스</a>를 참조하십시오.</p>
</li>
- <li><strong>XML ë‚´ë¶€ì—서:</strong> {@code R} í´ëž˜ìФì—서 ì •ì˜ëœ
+ <li><strong>XML ë‚´ë¶€ì—서:</strong> {@code R} í´ëž˜ìФì—서 ì •ì˜ëœ
리소스 IDì— ìƒì‘í•˜ê¸°ë„ í•˜ëŠ” 특수 XML êµ¬ë¬¸ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. 예:
<pre class="classic no-pretty-print">&#64;string/hello</pre>
- <p>{@code string}ì€ ë¦¬ì†ŒìŠ¤ 유형ì´ê³  {@code hello}는 리소스 ì´ë¦„입니다. ì´
+ <p>{@code string}ì€ ë¦¬ì†ŒìŠ¤ 유형ì´ê³  {@code hello}는 리소스 ì´ë¦„입니다. ì´
êµ¬ë¬¸ì€ ë¦¬ì†ŒìŠ¤ë¡œ ê°’ì„ ì œê³µí•  것으로 예ìƒë˜ëŠ” ì–´ëŠ ê³³ì—서나 XML 리소스 형태로 사용할 수 있습니다. <a href="#ResourcesFromXml">XMLì—서 리소스 액세스</a>를 참조하십시오.</p>
</li>
</ul>
@@ -94,20 +94,20 @@ imageView.setImageResource(<strong>R.drawable.myimage</strong>);
</pre>
<p>{@link
-android.content.res.Resources}ì—서 메서드를 사용하는 개별 리소스를 검색할 ìˆ˜ë„ ìžˆìœ¼ë©°, ì´ëŠ”
+android.content.res.Resources}ì—서 메서드를 사용하는 개별 리소스를 검색할 ìˆ˜ë„ ìžˆìœ¼ë©°, ì´ëŠ”
{@link android.content.Context#getResources()}로 ì¸ìŠ¤í„´ìŠ¤ë¥¼ 가져올 수 있습니다.</p>
<div class="sidebox-wrapper">
<div class="sidebox">
<h2>ì›ë³¸ 파ì¼ì— 액세스</h2>
-<p>í”한 ì¼ì€ 아니지만, ì›ë³¸ 파ì¼ê³¼ ë””ë ‰í„°ë¦¬ì— ì•¡ì„¸ìŠ¤í•´ì•¼ 하는 경우가 있습니다. ì´ ê²½ìš°ì—는
-{@code res/}ì— íŒŒì¼ì„ 저장하ë”ë¼ë„ ì†Œìš©ì´ ì—†ìŠµë‹ˆë‹¤.
-{@code res/}ì—서 리소스를 ì½ëŠ” ë°©ë²•ì€ ë¦¬ì†ŒìŠ¤ ID를 사용하는 것ë¿ì´ê¸° 때문입니다. ê·¸ 대신 리소스를
+<p>í”한 ì¼ì€ 아니지만, ì›ë³¸ 파ì¼ê³¼ ë””ë ‰í„°ë¦¬ì— ì•¡ì„¸ìŠ¤í•´ì•¼ 하는 경우가 있습니다. ì´ ê²½ìš°ì—는
+{@code res/}ì— íŒŒì¼ì„ 저장하ë”ë¼ë„ ì†Œìš©ì´ ì—†ìŠµë‹ˆë‹¤.
+{@code res/}ì—서 리소스를 ì½ëŠ” ë°©ë²•ì€ ë¦¬ì†ŒìŠ¤ ID를 사용하는 것ë¿ì´ê¸° 때문입니다. ê·¸ 대신 리소스를
{@code assets/} ë””ë ‰í„°ë¦¬ì— ì €ìž¥í•˜ë©´ ë©ë‹ˆë‹¤.</p>
<p>{@code assets/} ë””ë ‰í„°ë¦¬ì— ì €ìž¥ëœ íŒŒì¼ì€ 리소스
-IDê°€ 부여ë˜ì§€ <em>않으므로</em>, ì´ì™€ ê°™ì€ ë¦¬ì†ŒìŠ¤ëŠ” {@code R} í´ëž˜ìŠ¤ë‚˜ XML 리소스ì—서 참조할 수 없습니다. ê·¸ 대신
-ì¼ë°˜ íŒŒì¼ ì‹œìŠ¤í…œì²˜ëŸ¼ {@code assets/} ë””ë ‰í„°ë¦¬ì— íŒŒì¼ì„ 쿼리하고
+IDê°€ 부여ë˜ì§€ <em>않으므로</em>, ì´ì™€ ê°™ì€ ë¦¬ì†ŒìŠ¤ëŠ” {@code R} í´ëž˜ìŠ¤ë‚˜ XML 리소스ì—서 참조할 수 없습니다. ê·¸ 대신
+ì¼ë°˜ íŒŒì¼ ì‹œìŠ¤í…œì²˜ëŸ¼ {@code assets/} ë””ë ‰í„°ë¦¬ì— íŒŒì¼ì„ 쿼리하고
{@link android.content.res.AssetManager}를 사용하여 ì›ì‹œ ë°ì´í„°ë¥¼ ì½ì„ 수 있습니다.</p>
<p>하지만 필요한 ê²ƒì´ ì›ì‹œ ë°ì´í„°(ë™ì˜ìƒ ë˜ëŠ” 오디오 íŒŒì¼ ë“±)를 ì½ëŠ” 능력ë¿ì¸ 경우ë¼ë©´,
파ì¼ì„ {@code res/raw/} ë””ë ‰í„°ë¦¬ì— ì €ìž¥í•œ ë‹¤ìŒ ì¼ë ¨ì˜ ë°”ì´íЏ ìŠ¤íŠ¸ë¦¼ì„ {@link
@@ -184,10 +184,10 @@ R.java} 파ì¼ì„ 수정해서는 안 ë©ë‹ˆë‹¤.&mdash;ì´ê²ƒì€ 프로ì íŠ¸ê°€
<h2 id="ResourcesFromXml">XMLì—서 리소스 액세스</h2>
<p>기존 ë¦¬ì†ŒìŠ¤ì— ëŒ€í•œ 참조를 사용하여
-ì¼ë¶€ XML ì†ì„±ê³¼ ìš”ì†Œì˜ ê°’ì„ ì •ì˜í•  수 있습니다. ì´ ìž‘ì—…ì€ ë ˆì´ì•„웃 파ì¼ì„ ìƒì„±í•  때 ìœ„ì ¯ì— ë¬¸ìžì—´ê³¼ ì´ë¯¸ì§€ë¥¼ 제공하기 위해
+ì¼ë¶€ XML ì†ì„±ê³¼ ìš”ì†Œì˜ ê°’ì„ ì •ì˜í•  수 있습니다. ì´ ìž‘ì—…ì€ ë ˆì´ì•„웃 파ì¼ì„ ìƒì„±í•  때 ìœ„ì ¯ì— ë¬¸ìžì—´ê³¼ ì´ë¯¸ì§€ë¥¼ 제공하기 위해
ìžì£¼ 하게 ë©ë‹ˆë‹¤.</p>
-<p>예를 들어, ë ˆì´ì•„ì›ƒì— {@link android.widget.Button}ì„ ì¶”ê°€í•˜ë©´
+<p>예를 들어, ë ˆì´ì•„ì›ƒì— {@link android.widget.Button}ì„ ì¶”ê°€í•˜ë©´
해당 버튼 í…ìŠ¤íŠ¸ì— <a href="string-resource.html">문ìžì—´ 리소스</a>를 사용해야 합니다.</p>
<pre>
@@ -209,7 +209,7 @@ R.java} 파ì¼ì„ 수정해서는 안 ë©ë‹ˆë‹¤.&mdash;ì´ê²ƒì€ 프로ì íŠ¸ê°€
<ul>
<li>{@code &lt;package_name&gt;}ì€(는) 리소스가 위치한 íŒ¨í‚¤ì§€ì˜ ì´ë¦„입니다(
ê°™ì€ íŒ¨í‚¤ì§€ì˜ ë¦¬ì†ŒìŠ¤ë¥¼ 참조할 경우ì—는 필요하지 않습니다).</li>
- <li>{@code &lt;resource_type&gt;}ì€(는) 해당 리소스 유형ì˜
+ <li>{@code &lt;resource_type&gt;}ì€(는) 해당 리소스 유형ì˜
{@code R} 하위 í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤.</li>
<li>{@code &lt;resource_name&gt;}ì€(는) 확장ìžê°€ 없는 리소스 íŒŒì¼ ì´ë¦„ì´ê±°ë‚˜
XML ìš”ì†Œì˜ {@code android:name} ì†ì„± 값입니다(단순
@@ -234,7 +234,7 @@ XML ìš”ì†Œì˜ {@code android:name} ì†ì„± 값입니다(단순
&lt;/resources>
</pre>
-<p>í…스트 색ìƒê³¼
+<p>í…스트 색ìƒê³¼
í…스트 문ìžì—´ì„ 설정하는 ë° ì´ì™€ ê°™ì€ ë¦¬ì†ŒìŠ¤ë¥¼ 다ìŒì˜ ë ˆì´ì•„웃 파ì¼ì—서 사용할 수 있습니다.</p>
<pre>
@@ -247,7 +247,7 @@ XML ìš”ì†Œì˜ {@code android:name} ì†ì„± 값입니다(단순
</pre>
<p>ì´ ê²½ìš°, 리소스를 ìžì²´ 패키지ì—서 가져왔으므로 리소스 ì°¸ì¡°ì— íŒ¨í‚¤ì§€ ì´ë¦„ì„
-지정하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤.
+지정하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤.
시스템 리소스를 참조하려면 패키지 ì´ë¦„ì„ í¬í•¨í•´ì•¼ 합니다. 예:</p>
<pre>
@@ -260,13 +260,13 @@ XML ìš”ì†Œì˜ {@code android:name} ì†ì„± 값입니다(단순
</pre>
<p class="note"><strong>참고:</strong> í•­ìƒ ë¬¸ìžì—´ 리소스를 사용해야
-사용ìžì˜ 애플리케ì´ì…˜ì´ 다른 ì–¸ì–´ì— ë§žê²Œ ì§€ì—­í™”ë  ìˆ˜ 있습니다.
+사용ìžì˜ 애플리케ì´ì…˜ì´ 다른 ì–¸ì–´ì— ë§žê²Œ ì§€ì—­í™”ë  ìˆ˜ 있습니다.
대체
리소스(예: ì§€ì—­í™”ëœ ë¬¸ìžì—´) ìƒì„±ì— 관한 ìžì„¸í•œ 정보는 <a href="providing-resources.html#AlternativeResources">대체
리소스 제공</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤. 다른 언어로 애플리케ì´ì…˜ì„ 지역화하기 위한 ì „ì²´ 지침ì€
<a href="localization.html">지역화</a>를 참조하십시오.</p>
-<p>XMLì˜ ë¦¬ì†ŒìŠ¤ë¥¼ 사용하여 ë³„ëª…ì„ ìƒì„±í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어, 드로어블 리소스ì´ë©´ì„œ
+<p>XMLì˜ ë¦¬ì†ŒìŠ¤ë¥¼ 사용하여 ë³„ëª…ì„ ìƒì„±í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어, 드로어블 리소스ì´ë©´ì„œ
ë˜ ë‹¤ë¥¸ 드로어블 ë¦¬ì†ŒìŠ¤ì˜ ë³„ëª…ì¸ ê²ƒì„ ìƒì„±í•  수 있습니다.</p>
<pre>
@@ -275,7 +275,7 @@ XML ìš”ì†Œì˜ {@code android:name} ì†ì„± 값입니다(단순
android:src="@drawable/other_drawable" />
</pre>
-<p>ì´ê²ƒì€ ì¼ê²¬ 중복ë˜ëŠ” 것처럼 들리지만, 대체 리소스를 사용할 때 매우 유용하게 ì“°ì¼ ìˆ˜ 있습니다.
+<p>ì´ê²ƒì€ ì¼ê²¬ 중복ë˜ëŠ” 것처럼 들리지만, 대체 리소스를 사용할 때 매우 유용하게 ì“°ì¼ ìˆ˜ 있습니다.
<a href="providing-resources.html#AliasResources">별명 리소스 ìƒì„±</a>ì— ê´€í•´ ìžì„¸ížˆ 알아보십시오.</p>
@@ -283,20 +283,20 @@ XML ìš”ì†Œì˜ {@code android:name} ì†ì„± 값입니다(단순
<h3 id="ReferencesToThemeAttributes">ìŠ¤íƒ€ì¼ ì†ì„± 참조</h3>
<p>ìŠ¤íƒ€ì¼ ì†ì„± 리소스는 현재 ì ìš©ëœ í…Œë§ˆì˜ ì†ì„± ê°’ì„
-참조할 수 있게 í•´ì¤ë‹ˆë‹¤. ìŠ¤íƒ€ì¼ ì†ì„±ì„ 참조하면
-하드 코드로 ìž‘ì„±ëœ ê°’ì„ ì œê³µí•˜ëŠ” 것 ëŒ€ì‹ ì— UI ìš”ì†Œì˜ ì™¸ê´€ì„ ì‚¬ìš©ìž ì§€ì •í•˜ì—¬
-현재 테마ì—서 제공한 표준 ë³€í˜•ì— ë§žì¶° 스타ì¼ë§í•  수 있습니다. ìŠ¤íƒ€ì¼ ì†ì„±ì„ 참조하는 것ì€
+참조할 수 있게 í•´ì¤ë‹ˆë‹¤. ìŠ¤íƒ€ì¼ ì†ì„±ì„ 참조하면
+하드 코드로 ìž‘ì„±ëœ ê°’ì„ ì œê³µí•˜ëŠ” 것 ëŒ€ì‹ ì— UI ìš”ì†Œì˜ ì™¸ê´€ì„ ì‚¬ìš©ìž ì§€ì •í•˜ì—¬
+현재 테마ì—서 제공한 표준 ë³€í˜•ì— ë§žì¶° 스타ì¼ë§í•  수 있습니다. ìŠ¤íƒ€ì¼ ì†ì„±ì„ 참조하는 것ì€
기본ì ìœ¼ë¡œ "ì´ ì†ì„±ì´ ì •ì˜í•œ 스타ì¼ì„ 현재 테마로 사용하ë¼"는 ë§ê³¼ 같습니다.</p>
-<p>ìŠ¤íƒ€ì¼ ì†ì„±ì„ 참조하는 경우, ì´ë¦„ êµ¬ë¬¸ì€ ë³´í†µ
-리소스와 ê±°ì˜ ë˜‘ê°™ìŠµë‹ˆë‹¤. 다만 앳 기호({@code @})를 사용하는 대신 물ìŒí‘œ({@code ?})를 사용하며,
+<p>ìŠ¤íƒ€ì¼ ì†ì„±ì„ 참조하는 경우, ì´ë¦„ êµ¬ë¬¸ì€ ë³´í†µ
+리소스와 ê±°ì˜ ë˜‘ê°™ìŠµë‹ˆë‹¤. 다만 앳 기호({@code @})를 사용하는 대신 물ìŒí‘œ({@code ?})를 사용하며,
리소스 유형 ë¶€ë¶„ì´ ì„ íƒ ì‚¬í•­ì´ë¼ëŠ” ì ë§Œì´ 다릅니다. 예:</p>
<pre class="classic">
?[<em>&lt;package_name&gt;</em>:][<em>&lt;resource_type&gt;</em>/]<em>&lt;resource_name&gt;</em>
</pre>
-<p>예컨대 다ìŒì€ í…스트 색ìƒì„ 시스템 í…Œë§ˆì˜ "기본" í…스트 색ìƒì—
+<p>예컨대 다ìŒì€ í…스트 색ìƒì„ 시스템 í…Œë§ˆì˜ "기본" í…스트 색ìƒì—
ì¼ì¹˜í•˜ë„ë¡ ì„¤ì •í•˜ê¸° 위해 ì†ì„±ì„ 참조하는 ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다.</p>
<pre>
@@ -307,7 +307,7 @@ XML ìš”ì†Œì˜ {@code android:name} ì†ì„± 값입니다(단순
android:text=&quot;&#64;string/hello_world&quot; /&gt;
</pre>
-<p>여기서 {@code android:textColor} ì†ì„±ì´ 주어진 ìŠ¤íƒ€ì¼ ì†ì„±ì˜ ì´ë¦„ì„ í˜„ìž¬ 테마대로
+<p>여기서 {@code android:textColor} ì†ì„±ì´ 주어진 ìŠ¤íƒ€ì¼ ì†ì„±ì˜ ì´ë¦„ì„ í˜„ìž¬ 테마대로
지정합니다. Android는 ì´ì œ {@code android:textColorSecondary}
ìŠ¤íƒ€ì¼ ì†ì„±ì— ì ìš©ëœ ê°’ì„ ì´ ìœ„ì ¯ì˜ {@code android:textColor}ì— ëŒ€í•œ 값으로 사용합니다. 시스템
리소스 ë„구는 ì†ì„± 리소스가 ì´ ì»¨í…스트ì—서 예ìƒëœë‹¤ëŠ” ê²ƒì„ ì•Œê¸° 때문ì—
@@ -319,9 +319,9 @@ XML ìš”ì†Œì˜ {@code android:name} ì†ì„± 값입니다(단순
<h2 id="PlatformResources">í”Œëž«í¼ ë¦¬ì†ŒìŠ¤ 액세스</h2>
-<p>Androidì—는 스타ì¼, 테마 ë° ë ˆì´ì•„웃 등 여러 가지 표준 리소스가 í¬í•¨ë˜ì–´ 있습니다.
-ì´ì™€ ê°™ì€ ë¦¬ì†ŒìŠ¤ì— ì•¡ì„¸ìŠ¤í•˜ë ¤ë©´
-<code>android</code> 패키지 ì´ë¦„으로 리소스 참조를 한정합니다. 예를 들어 Android는
+<p>Androidì—는 스타ì¼, 테마 ë° ë ˆì´ì•„웃 등 여러 가지 표준 리소스가 í¬í•¨ë˜ì–´ 있습니다.
+ì´ì™€ ê°™ì€ ë¦¬ì†ŒìŠ¤ì— ì•¡ì„¸ìŠ¤í•˜ë ¤ë©´
+<code>android</code> 패키지 ì´ë¦„으로 리소스 참조를 한정합니다. 예를 들어 Android는
{@link android.widget.ListAdapter}ì˜ ëª©ë¡ í•­ëª©ìœ¼ë¡œ 사용할 수 있는 ë ˆì´ì•„웃 리소스를 제공합니다.</p>
<pre>
@@ -330,8 +330,8 @@ setListAdapter}(new {@link
android.widget.ArrayAdapter}&lt;String&gt;(this, <strong>android.R.layout.simple_list_item_1</strong>, myarray));
</pre>
-<p>ì´ ì˜ˆì‹œì—서 {@link android.R.layout#simple_list_item_1}ì€
-{@link android.widget.ListView}ì˜ í•­ëª©ì— ëŒ€í•´ 플랫í¼ì´ ì •ì˜í•œ ë ˆì´ì•„웃 리소스입니다. ëª©ë¡ í•­ëª©ì— ëŒ€í•´ ë‚˜ë¦„ì˜ ë ˆì´ì•„웃ì„
-만드는 대신 ì´ê²ƒì„ ì‚¬ìš©í•´ë„ ë©ë‹ˆë‹¤. ìžì„¸í•œ ë‚´ìš©ì€
+<p>ì´ ì˜ˆì‹œì—서 {@link android.R.layout#simple_list_item_1}ì€
+{@link android.widget.ListView}ì˜ í•­ëª©ì— ëŒ€í•´ 플랫í¼ì´ ì •ì˜í•œ ë ˆì´ì•„웃 리소스입니다. ëª©ë¡ í•­ëª©ì— ëŒ€í•´ ë‚˜ë¦„ì˜ ë ˆì´ì•„웃ì„
+만드는 대신 ì´ê²ƒì„ ì‚¬ìš©í•´ë„ ë©ë‹ˆë‹¤. ìžì„¸í•œ ë‚´ìš©ì€
<a href="{@docRoot}guide/topics/ui/layout/listview.html">ëª©ë¡ ë³´ê¸°</a> ê°œë°œìž ê°€ì´ë“œë¥¼ 참조하십시오.</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/resources/overview.jd b/docs/html-intl/intl/ko/guide/topics/resources/overview.jd
index e98a67750772..7faab592ea6d 100644
--- a/docs/html-intl/intl/ko/guide/topics/resources/overview.jd
+++ b/docs/html-intl/intl/ko/guide/topics/resources/overview.jd
@@ -19,13 +19,13 @@ page.title=리소스 개요
</div>
-<p>ì´ë¯¸ì§€ë‚˜ 문ìžì—´ ê°™ì€ ë¦¬ì†ŒìŠ¤ëŠ” í•­ìƒ ì• í”Œë¦¬ì¼€ì´ì…˜ 코드ì—서
-외부화하여 ë…립ì ìœ¼ë¡œ 유지해야 합니다. 리소스를 외부화하면
+<p>ì´ë¯¸ì§€ë‚˜ 문ìžì—´ ê°™ì€ ë¦¬ì†ŒìŠ¤ëŠ” í•­ìƒ ì• í”Œë¦¬ì¼€ì´ì…˜ 코드ì—서
+외부화하여 ë…립ì ìœ¼ë¡œ 유지해야 합니다. 리소스를 외부화하면
다양한 언어나 화면 í¬ê¸°ì™€ ê°™ì€ íŠ¹ì • 기기 êµ¬ì„±ì„ ì§€ì›í•˜ëŠ”
대체 리소스를 제공할 수 있습니다. ì´ëŸ¬í•œ ê¸°ëŠ¥ì€ Android êµ¬ë™ ìž¥ì¹˜ë¥¼
-다양한 구성ì—서 ì´ìš©í•˜ê²Œ ë˜ë©´ì„œ ì ì  ë” ì¤‘ìš”í•´ì§€ê³  있습니다. 여러 가지 구성ì—
-í˜¸í™˜ì„±ì„ ì œê³µí•˜ë ¤ë©´ 프로ì íЏì˜
-{@code res/} 디렉터리 ì•ˆì— ë¦¬ì†ŒìŠ¤ë¥¼ 정리해야 합니다. ì´ë•Œ 여러 가지 하위 디렉터리를 사용하여 리소스를 유형과 구성
+다양한 구성ì—서 ì´ìš©í•˜ê²Œ ë˜ë©´ì„œ ì ì  ë” ì¤‘ìš”í•´ì§€ê³  있습니다. 여러 가지 구성ì—
+í˜¸í™˜ì„±ì„ ì œê³µí•˜ë ¤ë©´ 프로ì íЏì˜
+{@code res/} 디렉터리 ì•ˆì— ë¦¬ì†ŒìŠ¤ë¥¼ 정리해야 합니다. ì´ë•Œ 여러 가지 하위 디렉터리를 사용하여 리소스를 유형과 구성
기준으로 그룹화하면 좋습니다.</p>
<div class="figure" style="width:429px">
@@ -38,7 +38,7 @@ page.title=리소스 개요
<div class="figure" style="width:429px">
<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
<p class="img-caption">
-<strong>그림 2.</strong> 서로 다른 ë‘ ê°œì˜ ê¸°ê¸°ë¡œ, ê°ê° 다른 화면 í¬ê¸°ì— 맞게 ì œê³µëœ ì„œë¡œ 다른
+<strong>그림 2.</strong> 서로 다른 ë‘ ê°œì˜ ê¸°ê¸°ë¡œ, ê°ê° 다른 화면 í¬ê¸°ì— 맞게 ì œê³µëœ ì„œë¡œ 다른
ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•˜ê³  있습니다.</p>
</div>
@@ -46,42 +46,42 @@ page.title=리소스 개요
<em>대체</em> 리소스를 지정할 수 있습니다.</p>
<ul>
<li>기본 리소스는 기기 êµ¬ì„±ì— ê´€ê³„ì—†ì´ í•­ìƒ ì‚¬ìš©í•˜ê±°ë‚˜
-기존 êµ¬ì„±ì— ì¼ì¹˜í•˜ëŠ” 대체 리소스가 ì—†ì„ ë•Œ
+기존 êµ¬ì„±ì— ì¼ì¹˜í•˜ëŠ” 대체 리소스가 ì—†ì„ ë•Œ
사용합니다.</li>
- <li>대체 리소스는 특정 구성ì—서 사용하기 위해 개발ìžê°€ 특별히 ë””ìžì¸í•œ 것ì„
-ë§í•©ë‹ˆë‹¤. 리소스 ê·¸ë£¹ì„ íŠ¹ì • 구성용으로 지정하려면,
+ <li>대체 리소스는 특정 구성ì—서 사용하기 위해 개발ìžê°€ 특별히 ë””ìžì¸í•œ 것ì„
+ë§í•©ë‹ˆë‹¤. 리소스 ê·¸ë£¹ì„ íŠ¹ì • 구성용으로 지정하려면,
디렉터리 ì´ë¦„ì— ì ì ˆí•œ 구성 한정ìžë¥¼ 추가하십시오.</li>
</ul>
-<p>예를 들어 기본 UI ë ˆì´ì•„웃ì€
-{@code res/layout/} ë””ë ‰í„°ë¦¬ì— ì €ìž¥ë˜ì–´ 있ë”ë¼ë„ í™”ë©´ì´ ê°€ë¡œ ë°©í–¥ì¼ ë•Œ 사용할
+<p>예를 들어 기본 UI ë ˆì´ì•„웃ì€
+{@code res/layout/} ë””ë ‰í„°ë¦¬ì— ì €ìž¥ë˜ì–´ 있ë”ë¼ë„ í™”ë©´ì´ ê°€ë¡œ ë°©í–¥ì¼ ë•Œ 사용할
다른 ë ˆì´ì•„ì›ƒì„ ì§€ì •í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ë¥¼ {@code res/layout-land/}
ë””ë ‰í„°ë¦¬ì— ì €ìž¥í•˜ë©´ ë©ë‹ˆë‹¤. Android는
ê¸°ê¸°ì˜ í˜„ìž¬ êµ¬ì„±ì„ ë¦¬ì†ŒìŠ¤ 디렉터리 ì´ë¦„ê³¼ ì¼ì¹˜ì‹œì¼œì„œ ì ì ˆí•œ 리소스를 ì ìš©í•©ë‹ˆë‹¤.</p>
-<p>그림 1ì€ ì´ìš© 가능한 대체 리소스가 ì—†ì„ ê²½ìš° ì‹œìŠ¤í…œì´ ì„œë¡œ 다른 ë‘ ê°œì˜ ê¸°ê¸°ì—
-ê°™ì€ ë ˆì´ì•„ì›ƒì„ ì ìš©í•˜ëŠ” ë°©ë²•ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 그림 2는
+<p>그림 1ì€ ì´ìš© 가능한 대체 리소스가 ì—†ì„ ê²½ìš° ì‹œìŠ¤í…œì´ ì„œë¡œ 다른 ë‘ ê°œì˜ ê¸°ê¸°ì—
+ê°™ì€ ë ˆì´ì•„ì›ƒì„ ì ìš©í•˜ëŠ” ë°©ë²•ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 그림 2는
ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì— í° í™”ë©´ìš© ë ˆì´ì•„웃 리소스를 추가한 ëª¨ìŠµì„ ë‚˜íƒ€ë‚¸ 것입니다.</p>
-<p>ë‹¤ìŒ ë¬¸ì„œëŠ” 대체 리소스를 체계화하고,
+<p>ë‹¤ìŒ ë¬¸ì„œëŠ” 대체 리소스를 체계화하고,
대체 리소스를 지정하고, 애플리케ì´ì…˜ì— 액세스 하는 ë“±ì˜ ë°©ë²•ì— ê´€í•œ 완전한 ì§€ì¹¨ì„ ì œê³µí•©ë‹ˆë‹¤.</p>
<dl>
<dt><strong><a href="providing-resources.html">리소스 제공</a></strong></dt>
- <dd>ì•±ì— í¬í•¨í•  수 있는 여러 가지 ì¢…ë¥˜ì˜ ë¦¬ì†ŒìŠ¤ì™€, ì´ëŸ¬í•œ 리소스를 저장하는 장소, 특정 기기 êµ¬ì„±ì— ëŒ€í•œ
+ <dd>ì•±ì— í¬í•¨í•  수 있는 여러 가지 ì¢…ë¥˜ì˜ ë¦¬ì†ŒìŠ¤ì™€, ì´ëŸ¬í•œ 리소스를 저장하는 장소, 특정 기기 êµ¬ì„±ì— ëŒ€í•œ
대체 리소스를 ìƒì„±í•˜ëŠ” 방법입니다.</dd>
<dt><strong><a href="accessing-resources.html">리소스 액세스</a></strong></dt>
- <dd>제공한 리소스를 사용하는 방법입니다. ì´ë¥¼ 애플리케ì´ì…˜ 코드ì—서 참조하거나
+ <dd>제공한 리소스를 사용하는 방법입니다. ì´ë¥¼ 애플리케ì´ì…˜ 코드ì—서 참조하거나
다른 XML 리소스ì—서 참조하는 ë°©ì‹ì„ ì”니다.</dd>
<dt><strong><a href="runtime-changes.html">런타임 변경 처리</a></strong></dt>
<dd>액티비티가 실행 ì¤‘ì¸ ë™ì•ˆ ë°œìƒí•œ 구성 ë³€ê²½ì„ ê´€ë¦¬í•˜ëŠ” 방법입니다.</dd>
<dt><strong><a href="localization.html">지역화</a></strong></dt>
- <dd>대체 리소스를 사용하여 애플리케ì´ì…˜ì„ 지역화하는 ë°©ë²•ì— ëŒ€í•œ ìƒì„¸í•œ ê°€ì´ë“œìž…니다. ì´ê²ƒì€ 대체
-리소스를 사용하는 한 가지 ë°©ë²•ì— ë¶ˆê³¼í•˜ì§€ë§Œ, ë” ë§Žì€ ì‚¬ìš©ìžì—게 ë„달하려면 매우 중요한
+ <dd>대체 리소스를 사용하여 애플리케ì´ì…˜ì„ 지역화하는 ë°©ë²•ì— ëŒ€í•œ ìƒì„¸í•œ ê°€ì´ë“œìž…니다. ì´ê²ƒì€ 대체
+리소스를 사용하는 한 가지 ë°©ë²•ì— ë¶ˆê³¼í•˜ì§€ë§Œ, ë” ë§Žì€ ì‚¬ìš©ìžì—게 ë„달하려면 매우 중요한
방법입니다.</dd>
<dt><strong><a href="available-resources.html">리소스 유형</a></strong></dt>
- <dd>개발ìžê°€ 제공할 수 있는 다양한 리소스 ìœ í˜•ì˜ ì°¸ì¡°ë¡œ, ê°ê°ì˜ XML 요소,
-ì†ì„±ê³¼ êµ¬ë¬¸ì„ ì„¤ëª…í•˜ëŠ” 것입니다. 예를 들어, ì´ ì°¸ì¡°ëŠ” 애플리케ì´ì…˜ 메뉴와 드로어블 리소스,
+ <dd>개발ìžê°€ 제공할 수 있는 다양한 리소스 ìœ í˜•ì˜ ì°¸ì¡°ë¡œ, ê°ê°ì˜ XML 요소,
+ì†ì„±ê³¼ êµ¬ë¬¸ì„ ì„¤ëª…í•˜ëŠ” 것입니다. 예를 들어, ì´ ì°¸ì¡°ëŠ” 애플리케ì´ì…˜ 메뉴와 드로어블 리소스,
애니메ì´ì…˜ì— 대한 리소스를 ìƒì„±í•˜ëŠ” ë²•ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.</dd>
</dl>
diff --git a/docs/html-intl/intl/ko/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/ko/guide/topics/resources/providing-resources.jd
index 681cbb31c4fb..bc631f2fab8d 100644
--- a/docs/html-intl/intl/ko/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/ko/guide/topics/resources/providing-resources.jd
@@ -9,7 +9,7 @@ parent.link=index.html
<ul>
<li>{@code res/}ì˜ ì—¬ëŸ¬ 가지 하위 ë””ë ‰í„°ë¦¬ì— ì†í•œ 여러 가지 ìœ í˜•ì˜ ë¦¬ì†ŒìŠ¤</li>
<li>구성별 리소스 파ì¼ì„ 제공하는 대체 리소스</li>
- <li>í•­ìƒ ê¸°ë³¸ 리소스를 í¬í•¨í•´ì•¼ ì•±ì´ íŠ¹ì • 기기 구성ì—
+ <li>í•­ìƒ ê¸°ë³¸ 리소스를 í¬í•¨í•´ì•¼ ì•±ì´ íŠ¹ì • 기기 구성ì—
좌우ë˜ì§€ 않습니다.</li>
</ul>
<h2>ì´ ë¬¸ì„œì˜ ë‚´ìš©</h2>
@@ -29,23 +29,23 @@ parent.link=index.html
<ol>
<li><a href="accessing-resources.html">리소스 액세스</a></li>
<li><a href="available-resources.html">리소스 유형</a></li>
- <li><a href="{@docRoot}guide/practices/screens_support.html">다중
+ <li><a href="{@docRoot}guide/practices/screens_support.html">다중
화면 ì§€ì›</a></li>
</ol>
</div>
</div>
-<p>ì´ë¯¸ì§€ë‚˜ 문ìžì—´ê³¼ ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ 리소스는 í•­ìƒ ì½”ë“œì—서 외부화해야 합니다.
-그래야 ì´ë“¤ì„ ë…립ì ìœ¼ë¡œ 유지관리할 수 있습니다. 특정 기기 êµ¬ì„±ì— ëŒ€í•œ 대체 리소스ë„
-제공해야 합니다. ì´ê²ƒì€ 특별하게 명명한 리소스 ë””ë ‰í„°ë¦¬ì— ê·¸ë£¹í™”í•˜ëŠ” ë°©ë²•ì„ ì”니다. Android는
-ëŸ°íƒ€ìž„ì— í˜„ìž¬ êµ¬ì„±ì„ ê·¼ê±°ë¡œ ì ì ˆí•œ 리소스를 사용합니다. 예를 들어
-여러 가지 화면 í¬ê¸°ì— ë”°ë¼ ì—¬ëŸ¬ 가지 UI ë ˆì´ì•„ì›ƒì„ ì œê³µí•˜ê±°ë‚˜ 언어 ì„¤ì •ì— ë”°ë¼
+<p>ì´ë¯¸ì§€ë‚˜ 문ìžì—´ê³¼ ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ 리소스는 í•­ìƒ ì½”ë“œì—서 외부화해야 합니다.
+그래야 ì´ë“¤ì„ ë…립ì ìœ¼ë¡œ 유지관리할 수 있습니다. 특정 기기 êµ¬ì„±ì— ëŒ€í•œ 대체 리소스ë„
+제공해야 합니다. ì´ê²ƒì€ 특별하게 명명한 리소스 ë””ë ‰í„°ë¦¬ì— ê·¸ë£¹í™”í•˜ëŠ” ë°©ë²•ì„ ì”니다. Android는
+ëŸ°íƒ€ìž„ì— í˜„ìž¬ êµ¬ì„±ì„ ê·¼ê±°ë¡œ ì ì ˆí•œ 리소스를 사용합니다. 예를 들어
+여러 가지 화면 í¬ê¸°ì— ë”°ë¼ ì—¬ëŸ¬ 가지 UI ë ˆì´ì•„ì›ƒì„ ì œê³µí•˜ê±°ë‚˜ 언어 ì„¤ì •ì— ë”°ë¼
ê°ê¸° 다른 문ìžì—´ì„ ì œê³µí•˜ê³ ìž í•  수 있습니다.</p>
<p>애플리케ì´ì…˜ 리소스를 외부화하면
프로ì íЏ {@code R} í´ëž˜ìФì—서 ë°œìƒí•˜ëŠ” 리소스 ID로 액세스할 수 있습니다. 애플리케ì´ì…˜ì—서
리소스를 사용하는 ë°©ë²•ì€ <a href="accessing-resources.html">리소스
-액세스</a>ì—서 설명합니다. ì´ ë¬¸ì„œì—서는 Android 프로ì íЏì—서 리소스를 그룹화하는 방법과 특정 기기 êµ¬ì„±ì— ëŒ€í•œ
+액세스</a>ì—서 설명합니다. ì´ ë¬¸ì„œì—서는 Android 프로ì íЏì—서 리소스를 그룹화하는 방법과 특정 기기 êµ¬ì„±ì— ëŒ€í•œ
대체 리소스를 제공하는 ë²•ì„ ë³´ì—¬ë“œë¦½ë‹ˆë‹¤.</p>
@@ -75,10 +75,10 @@ MyProject/
) í¬í•¨í•˜ëŠ” ê²ƒì„ ë³¼ 수 있습니다. 리소스 디렉터리 ì´ë¦„ì€
중요하며 표1ì— ì„¤ëª…ë˜ì–´ 있습니다.</p>
-<p class="note"><strong>참고:</strong> Mipmap í´ë”를 사용하는 ìžì„¸í•œ 방법ì€
+<p class="note"><strong>참고:</strong> Mipmap í´ë”를 사용하는 ìžì„¸í•œ 방법ì€
<a href="{@docRoot}tools/projects/index.html#mipmap">프로ì íЏ 관리 개요</a>를 참조하십시오.</p>
-<p class="table-caption" id="table1"><strong>표 1</strong>. 프로ì íЏ
+<p class="table-caption" id="table1"><strong>표 1</strong>. 프로ì íЏ
{@code res/} 디렉터리 ë‚´ë¶€ì—서 ì§€ì›í•˜ëŠ” 리소스 디렉터리입니다.</p>
<table>
@@ -89,13 +89,13 @@ MyProject/
<tr>
<td><code>animator/</code></td>
- <td><a href="{@docRoot}guide/topics/graphics/prop-animation.html">ì†ì„±
+ <td><a href="{@docRoot}guide/topics/graphics/prop-animation.html">ì†ì„±
애니메ì´ì…˜</a>ì„ ì •ì˜í•˜ëŠ” XML 파ì¼ìž…니다.</td>
</tr>
<tr>
<td><code>anim/</code></td>
- <td><a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">tween
+ <td><a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">tween
애니메ì´ì…˜</a>ì„ ì •ì˜í•˜ëŠ” XML 파ì¼ìž…니다 (ì†ì„± 애니메ì´ì…˜ë„ ì´ ë””ë ‰í„°ë¦¬ì— ì €ìž¥í•  수 있지만
ë‘ ê°€ì§€ ìœ í˜•ì„ êµ¬ë¶„í•˜ê¸° 위해 ì†ì„± 애니메ì´ì…˜ì—는 {@code animator/} 디렉터리가 기본 설정ë©ë‹ˆë‹¤
).</td>
@@ -126,8 +126,8 @@ MyProject/
<tr>
<td><code>mipmap/</code></td>
- <td>ê°ê¸° 다른 시작 ê´€ë¦¬ìž ì•„ì´ì½˜ ë°€ë„ì— ëŒ€í•œ 드로어블 파ì¼ìž…니다.
-{@code mipmap/} í´ë”로 시작 ê´€ë¦¬ìž ì•„ì´ì½˜ì„ 관리하는 ìžì„¸í•œ 방법ì€
+ <td>ê°ê¸° 다른 시작 ê´€ë¦¬ìž ì•„ì´ì½˜ ë°€ë„ì— ëŒ€í•œ 드로어블 파ì¼ìž…니다.
+{@code mipmap/} í´ë”로 시작 ê´€ë¦¬ìž ì•„ì´ì½˜ì„ 관리하는 ìžì„¸í•œ 방법ì€
<a href="{@docRoot}tools/project/index.html#mipmap">프로ì íЏ 관리 개요</a>를 참조하십시오.</td>
</tr>
@@ -139,32 +139,32 @@ MyProject/
<tr>
<td><code>menu/</code></td>
- <td>옵션 메뉴, 컨í…스트 메뉴 ë˜ëŠ” 하위
+ <td>옵션 메뉴, 컨í…스트 메뉴 ë˜ëŠ” 하위
메뉴 등과 ê°™ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ 메뉴를 ì •ì˜í•˜ëŠ” XML입니다. <a href="menu-resource.html">메뉴 리소스</a>를 참조하십시오.</td>
</tr>
<tr>
<td><code>raw/</code></td>
- <td><p>ì›ì‹œ 형태로 저장하기 위한 ìž„ì˜ì˜ 파ì¼ìž…니다. ì›ì‹œ
+ <td><p>ì›ì‹œ 형태로 저장하기 위한 ìž„ì˜ì˜ 파ì¼ìž…니다. ì›ì‹œ
{@link java.io.InputStream}으로 ì´ëŸ° 리소스를 열려면 리소스 ID, {@code R.raw.<em>filename</em>}으로 {@link android.content.res.Resources#openRawResource(int)
Resources.openRawResource()}를 호출합니다.</p>
- <p>그러나 ì›ë³¸ íŒŒì¼ ì´ë¦„ê³¼ íŒŒì¼ ê³„ì¸µì— ì•¡ì„¸ìŠ¤í•´ì•¼ 하는 경우,
+ <p>그러나 ì›ë³¸ íŒŒì¼ ì´ë¦„ê³¼ íŒŒì¼ ê³„ì¸µì— ì•¡ì„¸ìŠ¤í•´ì•¼ 하는 경우,
({@code res/raw/}ê°€ 아니ë¼) {@code
-assets/} ë””ë ‰í„°ë¦¬ì— ëª‡ëª‡ 리소스를 저장해ë‘는 ê²ƒì„ ê³ ë ¤í•´ ë³¼ 수 있습니다. {@code assets/}ì— ìžˆëŠ” 파ì¼ì—는
+assets/} ë””ë ‰í„°ë¦¬ì— ëª‡ëª‡ 리소스를 저장해ë‘는 ê²ƒì„ ê³ ë ¤í•´ ë³¼ 수 있습니다. {@code assets/}ì— ìžˆëŠ” 파ì¼ì—는
리소스 IDê°€ 주어지지 않으므로, ì´ë“¤ì„ ì½ëŠ” 유ì¼í•œ ë°©ë²•ì€ {@link android.content.res.AssetManager}를 사용하는 것ë¿ìž…니다.</p></td>
</tr>
<tr>
<td><code>values/</code></td>
<td><p>문ìžì—´, 정수 ë° ìƒ‰ê³¼ ê°™ì€ ë‹¨ìˆœ ê°’ì´ ë“¤ì–´ìžˆëŠ” XML 파ì¼ìž…니다.</p>
- <p>다른 {@code res/} 하위 ë””ë ‰í„°ë¦¬ì— ìžˆëŠ” XML 리소스 파ì¼ì€ XML íŒŒì¼ ì´ë¦„ì„ ê·¼ê±°ë¡œ
+ <p>다른 {@code res/} 하위 ë””ë ‰í„°ë¦¬ì— ìžˆëŠ” XML 리소스 파ì¼ì€ XML íŒŒì¼ ì´ë¦„ì„ ê·¼ê±°ë¡œ
í•˜ë‚˜ì˜ ë¦¬ì†ŒìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” 반면, {@code values/} ë””ë ‰í„°ë¦¬ì— ìžˆëŠ” 파ì¼ì€ 여러 ê°œì˜ ë¦¬ì†ŒìŠ¤ë¥¼ 설명합니다.
-ì´ ë””ë ‰í„°ë¦¬ ì•ˆì— ìžˆëŠ” 파ì¼ì˜ 경우, {@code &lt;resources&gt;} ìš”ì†Œì˜ ê° í•˜ìœ„ 요소가 리소스를 하나씩
-ì •ì˜í•©ë‹ˆë‹¤. 예를 들어 {@code &lt;string&gt;} 요소는
+ì´ ë””ë ‰í„°ë¦¬ ì•ˆì— ìžˆëŠ” 파ì¼ì˜ 경우, {@code &lt;resources&gt;} ìš”ì†Œì˜ ê° í•˜ìœ„ 요소가 리소스를 하나씩
+ì •ì˜í•©ë‹ˆë‹¤. 예를 들어 {@code &lt;string&gt;} 요소는
{@code R.string} 리소스를 ìƒì„±í•˜ê³  {@code &lt;color&gt;} 요소는 {@code R.color}
리소스를 ìƒì„±í•©ë‹ˆë‹¤.</p>
<p>ê° ë¦¬ì†ŒìŠ¤ê°€ ìžì²´ XML 요소로 ì •ì˜ë˜ë¯€ë¡œ, ì›í•˜ëŠ” 대로 파ì¼ì„ ì •ì˜í•˜ê³  í•˜ë‚˜ì˜ íŒŒì¼ì— 여러 가지 리소스 유형ì„
-ë°°ì •í•  수 있습니다. 하지만 명확히 하려면 여러 가지 파ì¼ì—
+ë°°ì •í•  수 있습니다. 하지만 명확히 하려면 여러 가지 파ì¼ì—
ê°ê¸° 고유한 리소스를 배치하는 ê²ƒì´ ì¢‹ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어, 다ìŒì€ ì´ ë””ë ‰í„°ë¦¬ì—서 ìƒì„±í•  수 있는 리소스를 위한
íŒŒì¼ ì´ë¦„ 명명법입니다.</p>
<ul>
@@ -176,7 +176,7 @@ assets/} ë””ë ‰í„°ë¦¬ì— ëª‡ëª‡ 리소스를 저장해ë‘는 ê²ƒì„ ê³ ë ¤í•´ ë³
<li><a href="style-resource.html">스타ì¼</a>ì„ ìœ„í•œ styles.xml</li>
</ul>
<p><a href="string-resource.html">문ìžì—´ 리소스</a>,
-<a href="style-resource.html">ìŠ¤íƒ€ì¼ ë¦¬ì†ŒìŠ¤</a> ë°
+<a href="style-resource.html">ìŠ¤íƒ€ì¼ ë¦¬ì†ŒìŠ¤</a> ë°
<a href="more-resources.html">ìžì„¸í•œ 리소스 유형</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
</td>
</tr>
@@ -184,21 +184,21 @@ assets/} ë””ë ‰í„°ë¦¬ì— ëª‡ëª‡ 리소스를 저장해ë‘는 ê²ƒì„ ê³ ë ¤í•´ ë³
<tr>
<td><code>xml/</code></td>
<td>ëŸ°íƒ€ìž„ì— ì½ì„ 수 있는 ìž„ì˜ì˜ XML 파ì¼ë¡œ, ì´ë•Œ {@link
-android.content.res.Resources#getXml(int) Resources.getXML()}ì„ í˜¸ì¶œí•˜ëŠ” ë°©ë²•ì„ ì”니다. 다양한 XML 구성 파ì¼ì„ ì—¬ê¸°ì— ì €ìž¥í•´ì•¼ 합니다. 예를 들어
+android.content.res.Resources#getXml(int) Resources.getXML()}ì„ í˜¸ì¶œí•˜ëŠ” ë°©ë²•ì„ ì”니다. 다양한 XML 구성 파ì¼ì„ ì—¬ê¸°ì— ì €ìž¥í•´ì•¼ 합니다. 예를 들어
<a href="{@docRoot}guide/topics/search/searchable-config.html">검색 가능한 구성</a> ë“±ì´ ì´ì— 해당ë©ë‹ˆë‹¤.
<!-- or preferences configuration. --></td>
</tr>
</table>
-<p class="caution"><strong>주ì˜:</strong> 리소스 파ì¼ì„
+<p class="caution"><strong>주ì˜:</strong> 리소스 파ì¼ì„
{@code res/} ë””ë ‰í„°ë¦¬ì— ì§ì ‘ 저장하면 절대로 안 ë©ë‹ˆë‹¤. 컴파ì¼ëŸ¬ 오류를 초래하게 ë©ë‹ˆë‹¤.</p>
<p>특정 ìœ í˜•ì˜ ë¦¬ì†ŒìŠ¤ì— ê´€í•œ ìžì„¸í•œ 정보는 <a href="available-resources.html">리소스 유형</a> 문서를 참조하십시오.</p>
<p>표1ì— ì •ì˜ëœ 하위 ë””ë ‰í„°ë¦¬ì— ì €ìž¥í•˜ëŠ” 리소스는 "기본"
-리소스입니다. 다시 ë§í•´, ì´ëŸ¬í•œ 리소스가 애플리케ì´ì…˜ì˜ 기본 ë””ìžì¸ê³¼ 콘í…츠를 ì •ì˜í•œë‹¤ëŠ” 뜻입니다.
+리소스입니다. 다시 ë§í•´, ì´ëŸ¬í•œ 리소스가 애플리케ì´ì…˜ì˜ 기본 ë””ìžì¸ê³¼ 콘í…츠를 ì •ì˜í•œë‹¤ëŠ” 뜻입니다.
그러나, 여러 가지 ìœ í˜•ì˜ Android êµ¬ë™ ê¸°ê¸°ëŠ” ê°ê¸° 다른 ìœ í˜•ì˜ ë¦¬ì†ŒìŠ¤ë¥¼ 호출할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
-예를 들어 ì–´ëŠ ê¸°ê¸°ì˜ í™”ë©´ì´ ë³´í†µë³´ë‹¤ í° íŽ¸ì´ë¼ë©´, 추가ì ì¸ 화면 ê³µê°„ì˜ ì´ì ì„ 활용할 수 있는
+예를 들어 ì–´ëŠ ê¸°ê¸°ì˜ í™”ë©´ì´ ë³´í†µë³´ë‹¤ í° íŽ¸ì´ë¼ë©´, 추가ì ì¸ 화면 ê³µê°„ì˜ ì´ì ì„ 활용할 수 있는
다른 ë ˆì´ì•„웃 리소스를 제공해야 합니다. ë˜ëŠ”, ê¸°ê¸°ì— ë‹¤ë¥¸ 언어 ì„¤ì •ì´ ìžˆì„ ê²½ìš°
해당 í…스트를 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì— ë²ˆì—­í•˜ëŠ” 다른 문ìžì—´ 리소스를
제공해야 합니다. 여러 가지 기기 êµ¬ì„±ì— ì—¬ëŸ¬ 가지 리소스를 제공하려면,
@@ -215,10 +215,10 @@ android.content.res.Resources#getXml(int) Resources.getXML()}ì„ í˜¸ì¶œí•˜ëŠ” ë°
<strong>그림 1.</strong> 서로 다른 ë‘ ê°œì˜ ê¸°ê¸°ë¡œ, 서로 다른 ë ˆì´ì•„웃 리소스를 사용합니다.</p>
</div>
-<p>ê±°ì˜ ëª¨ë“  애플리케ì´ì…˜ì´ 특정 기기 êµ¬ì„±ì„ ì§€ì›í•˜ëŠ”
-대체 리소스를 제공해야 합니다. 예를 들어 여러 가지 화면 ë°€ë„ì— ë§žëŠ” 대체 드로어블 리소스를
-í¬í•¨ì‹œì¼œì•¼ 하며 여러 가지 ì–¸ì–´ì— ë§žê²Œ 대체 문ìžì—´ ë¦¬ì†ŒìŠ¤ë„ í¬í•¨ì‹œì¼œì•¼ 합니다. Android는 런타임ì—
-현재 기기 êµ¬ì„±ì„ ê°ì§€í•˜ê³  애플리케ì´ì…˜ì— 대해 ì ì ˆí•œ 리소스를
+<p>ê±°ì˜ ëª¨ë“  애플리케ì´ì…˜ì´ 특정 기기 êµ¬ì„±ì„ ì§€ì›í•˜ëŠ”
+대체 리소스를 제공해야 합니다. 예를 들어 여러 가지 화면 ë°€ë„ì— ë§žëŠ” 대체 드로어블 리소스를
+í¬í•¨ì‹œì¼œì•¼ 하며 여러 가지 ì–¸ì–´ì— ë§žê²Œ 대체 문ìžì—´ ë¦¬ì†ŒìŠ¤ë„ í¬í•¨ì‹œì¼œì•¼ 합니다. Android는 런타임ì—
+현재 기기 êµ¬ì„±ì„ ê°ì§€í•˜ê³  애플리케ì´ì…˜ì— 대해 ì ì ˆí•œ 리소스를
로드합니다.</p>
<p>리소스 ì„¸íŠ¸ì— ëŒ€í•˜ì—¬ 구성별로 ì ì ˆí•œ 대체를 지정하려면 다ìŒê³¼ ê°™ì´ í•©ë‹ˆë‹¤.</p>
@@ -231,13 +231,13 @@ android.content.res.Resources#getXml(int) Resources.getXML()}ì„ í˜¸ì¶œí•˜ëŠ” ë°
<li><em>{@code &lt;qualifier&gt;}</em>는 리소스를 사용할 개별 êµ¬ì„±ì„ ì§€ì •í•˜ëŠ”
ì´ë¦„입니다(표2ì— ì •ì˜).</li>
</ul>
- <p>하나 ì´ìƒì˜ <em>{@code &lt;qualifier&gt;}</em>를 추가할 수 있습니다. ê°ê¸° 대시로
+ <p>하나 ì´ìƒì˜ <em>{@code &lt;qualifier&gt;}</em>를 추가할 수 있습니다. ê°ê¸° 대시로
구분합니다.</p>
<p class="caution"><strong>주ì˜:</strong> 여러 한정ìžë¥¼ 추가할 때는
-표2ì— ë‚˜ì—´ëœ ê²ƒê³¼ ê°™ì€ ìˆœì„œë¡œ 배치해야 합니다. 한정ìžì˜ 순서가 잘못 지정ë˜ë©´
+표2ì— ë‚˜ì—´ëœ ê²ƒê³¼ ê°™ì€ ìˆœì„œë¡œ 배치해야 합니다. 한정ìžì˜ 순서가 잘못 지정ë˜ë©´
해당 리소스가 무시ë©ë‹ˆë‹¤.</p>
</li>
- <li>해당ë˜ëŠ” ê° ëŒ€ì²´ 리소스를 ì´ ìƒˆ ë””ë ‰í„°ë¦¬ì— ì €ìž¥í•˜ì‹­ì‹œì˜¤. ì´ ë¦¬ì†ŒìŠ¤ 파ì¼ì€ 기본 리소스 파ì¼ê³¼
+ <li>해당ë˜ëŠ” ê° ëŒ€ì²´ 리소스를 ì´ ìƒˆ ë””ë ‰í„°ë¦¬ì— ì €ìž¥í•˜ì‹­ì‹œì˜¤. ì´ ë¦¬ì†ŒìŠ¤ 파ì¼ì€ 기본 리소스 파ì¼ê³¼
ë˜‘ê°™ì€ ì´ë¦„ì„ ì§€ì •í•´ì•¼ 합니다.</li>
</ol>
@@ -254,21 +254,21 @@ res/
</pre>
<p>{@code hdpi} 한정ìžëŠ” 해당 ë””ë ‰í„°ë¦¬ì˜ ë¦¬ì†ŒìŠ¤ê°€
-고화질 화면 기기용ì´ë¼ëŠ” ê²ƒì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. ê° ë“œë¡œì–´ë¸” ë””ë ‰í„°ë¦¬ì˜ ì´ë¯¸ì§€ëŠ” 특정 화면 í™”ì§ˆì— ë§žì¶”ì–´
+고화질 화면 기기용ì´ë¼ëŠ” ê²ƒì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. ê° ë“œë¡œì–´ë¸” ë””ë ‰í„°ë¦¬ì˜ ì´ë¯¸ì§€ëŠ” 특정 화면 í™”ì§ˆì— ë§žì¶”ì–´
í¬ê¸°ê°€ 지정ë˜ì—ˆìœ¼ë‚˜ íŒŒì¼ ì´ë¦„ì€
똑같습니다. ì´ë ‡ê²Œ 하면 {@code icon.png} ë˜ëŠ” {@code
-background.png} ì´ë¯¸ì§€ë¥¼ 참조하는 ë° ì‚¬ìš©í•˜ëŠ” 리소스 ID는 í•­ìƒ ê°™ì§€ë§Œ Androidê°€ ê° ë¦¬ì†ŒìŠ¤ 중ì—서 현재 ê¸°ê¸°ì— ê°€ìž¥ 잘 ì¼ì¹˜í•˜ëŠ”
-ë²„ì „ì„ ì„ íƒí•˜ê²Œ ë©ë‹ˆë‹¤. ì´ë•Œ 리소스 디렉터리 ì´ë¦„ì˜ í•œì •ìžë¥¼ 기기 구성 정보와
+background.png} ì´ë¯¸ì§€ë¥¼ 참조하는 ë° ì‚¬ìš©í•˜ëŠ” 리소스 ID는 í•­ìƒ ê°™ì§€ë§Œ Androidê°€ ê° ë¦¬ì†ŒìŠ¤ 중ì—서 현재 ê¸°ê¸°ì— ê°€ìž¥ 잘 ì¼ì¹˜í•˜ëŠ”
+ë²„ì „ì„ ì„ íƒí•˜ê²Œ ë©ë‹ˆë‹¤. ì´ë•Œ 리소스 디렉터리 ì´ë¦„ì˜ í•œì •ìžë¥¼ 기기 구성 정보와
비êµí•˜ëŠ” ë°©ë²•ì„ ì”니다.</p>
-<p>Android는 여러 가지 구성 한정ìžë¥¼ ì§€ì›í•˜ë©° 한 디렉터리 ì´ë¦„ì—
-여러 ê°œì˜ í•œì •ìžë¥¼ 추가할 수 있습니다. ê° í•œì •ìžë¥¼ 대시로 구분하면 ë©ë‹ˆë‹¤. 표 2는
-유효한 구성 한정ìžë¥¼ ìš°ì„  순위대로 나열한 것입니다. 리소스 ë””ë ‰í„°ë¦¬ì— ì—¬ëŸ¬ ê°œì˜
-한정ìžë¥¼ 사용하는 경우, 해당 한정ìžë¥¼ 디렉터리 ì´ë¦„ì— ì¶”ê°€í•  때 ì´ í‘œì— ë‚˜ì—´ëœ ê²ƒê³¼ ê°™ì€
+<p>Android는 여러 가지 구성 한정ìžë¥¼ ì§€ì›í•˜ë©° 한 디렉터리 ì´ë¦„ì—
+여러 ê°œì˜ í•œì •ìžë¥¼ 추가할 수 있습니다. ê° í•œì •ìžë¥¼ 대시로 구분하면 ë©ë‹ˆë‹¤. 표 2는
+유효한 구성 한정ìžë¥¼ ìš°ì„  순위대로 나열한 것입니다. 리소스 ë””ë ‰í„°ë¦¬ì— ì—¬ëŸ¬ ê°œì˜
+한정ìžë¥¼ 사용하는 경우, 해당 한정ìžë¥¼ 디렉터리 ì´ë¦„ì— ì¶”ê°€í•  때 ì´ í‘œì— ë‚˜ì—´ëœ ê²ƒê³¼ ê°™ì€
순서로 추가해야 합니다.</p>
-<p class="table-caption" id="table2"><strong>표 2.</strong> 구성 한정ìž
+<p class="table-caption" id="table2"><strong>표 2.</strong> 구성 한정ìž
ì´ë¦„입니다.</p>
<table>
<tr>
@@ -285,7 +285,7 @@ background.png} ì´ë¯¸ì§€ë¥¼ 참조하는 ë° ì‚¬ìš©í•˜ëŠ” 리소스 ID는 í•­ìƒ
등.
</td>
<td>
- <p>ì´ë™í†µì‹  êµ­ê°€ 코드(MCC)ì— ì„ íƒì ìœ¼ë¡œ ì´ë™í†µì‹  ë„¤íŠ¸ì›Œí¬ ì½”ë“œ(MNC)ê°€ ì´ì–´ì§€ëŠ” 형태로,
+ <p>ì´ë™í†µì‹  êµ­ê°€ 코드(MCC)ì— ì„ íƒì ìœ¼ë¡œ ì´ë™í†µì‹  ë„¤íŠ¸ì›Œí¬ ì½”ë“œ(MNC)ê°€ ì´ì–´ì§€ëŠ” 형태로,
ê¸°ê¸°ì˜ SIM 카드ì—서 가져옵니다. 예를 들어, <code>mcc310</code>ì€ ëª¨ë“  ì´ë™í†µì‹ ì‚¬ë¥¼ í¬í•¨í•œ 미국ì´ê³ ,
<code>mcc310-mnc004</code>는 Verizonì„ ì‚¬ìš©í•˜ëŠ” 미국, <code>mcc208-mnc00</code>ì€ Orange를 사용하는
프랑스입니다.</p>
@@ -293,11 +293,11 @@ background.png} ì´ë¯¸ì§€ë¥¼ 참조하는 ë° ì‚¬ìš©í•˜ëŠ” 리소스 ID는 í•­ìƒ
SIM 카드ì—서 가져옵니다.</p>
<p>MCCë§Œ 단ë…으로 사용할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(예를 들어, 애플리케ì´ì…˜ì— 국가별 í•©ë²•ì  ë¦¬ì†ŒìŠ¤ë¥¼
í¬í•¨í•˜ëŠ” 경우). ì–¸ì–´ì— ê¸°ì´ˆí•´ì„œë§Œ 지정해야 í•  경우,
-<em>언어 ë° ì§€ì—­</em> 한정ìžë¥¼ 대신 사용합니다(ì•„ëž˜ì— ì„¤ëª…). MCC와
+<em>언어 ë° ì§€ì—­</em> 한정ìžë¥¼ 대신 사용합니다(ì•„ëž˜ì— ì„¤ëª…). MCC와
MNC 한정ìžë¥¼ 사용할 경우, 조심해서 사용하고 예ìƒí•œ 대로 ìž‘ë™í•˜ëŠ”ì§€ 테스트해야 합니다.</p>
<p>ë˜í•œ, 구성 필드 {@link
android.content.res.Configuration#mcc}와 {@link
-android.content.res.Configuration#mnc}를 참조하십시오. ì´ êµ¬ì„± 필드는 ê°ê° ì´ë™í†µì‹  êµ­ê°€ 코드와
+android.content.res.Configuration#mnc}를 참조하십시오. ì´ êµ¬ì„± 필드는 ê°ê° ì´ë™í†µì‹  êµ­ê°€ 코드와
ì´ë™í†µì‹  ë„¤íŠ¸ì›Œí¬ ì½”ë“œë¥¼ 나타냅니다.</p>
</td>
</tr>
@@ -312,19 +312,19 @@ android.content.res.Configuration#mnc}를 참조하십시오. ì´ êµ¬ì„± 필드ë
등.
</td>
<td><p>언어는 ë‘ ê¸€ìžì˜ <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
-639-1</a> 언어 코드로 ì •ì˜ë˜ê³ ,
+639-1</a> 언어 코드로 ì •ì˜ë˜ê³ ,
ë’¤ì´ì–´ ë‘ ê¸€ìžì˜ <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO
3166-1-alpha-2</a> 지역 코드가 ì„ íƒì ìœ¼ë¡œ ë”°ë¼ì˜µë‹ˆë‹¤(ì†Œë¬¸ìž "{@code r}" ë’¤ì— ë¶™ìŒ).
</p><p>
- 코드는 대소문ìžë¥¼ 구별하지 <em>않습니다</em>. {@code r} ì ‘ë‘사는
+ 코드는 대소문ìžë¥¼ 구별하지 <em>않습니다</em>. {@code r} ì ‘ë‘사는
지역 ë¶€ë¶„ì„ êµ¬ë³„í•˜ê¸° 위해 사용합니다.
지역만 지정할 수는 없습니다.</p>
- <p>사용ìžê°€ 시스템 설정ì—서 언어를 변경할 경우
+ <p>사용ìžê°€ 시스템 설정ì—서 언어를 변경할 경우
애플리케ì´ì…˜ 수명 ì¤‘ì— ë³€ê²½ë  ìˆ˜ 있습니다. 런타임ì—서 애플리케ì´ì…˜ì— ì–´ë–¤ ì˜í–¥ì„ 미치는지 ìžì„¸ížˆ 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를 참조하십시오.
</p>
<p>다른 여러 ì–¸ì–´ì— ë§žê²Œ 애플리케ì´ì…˜ì„ 지역화하기 위한 ì „ì²´ 지침ì€
<a href="localization.html">지역화</a>를 참조하십시오.</p>
- <p>ë˜í•œ, 현재 로케ì¼ì„ 나타내는 {@link android.content.res.Configuration#locale} 구성 필드ë„
+ <p>ë˜í•œ, 현재 로케ì¼ì„ 나타내는 {@link android.content.res.Configuration#locale} 구성 필드ë„
참조하십시오.</p>
</td>
</tr>
@@ -368,22 +368,22 @@ supportsRtl}</a>ì„ {@code "true"}로 설정하고 <a href="{@docRoot}guide/topi
등.
</td>
<td>
- <p>í™”ë©´ì˜ ê¸°ë³¸ í¬ê¸°ë¡œ, 사용 가능한 화면 ì˜ì—­ì˜ 가장 ì§§ì€ ì¹˜ìˆ˜ê°€
-나타냅니다. 구체ì ìœ¼ë¡œ ê¸°ê¸°ì˜ smallestWidth는 해당 í™”ë©´ì˜ ì´ìš© 가능한 높ì´ì™€ 너비ì˜
-가장 ì§§ì€ ì¹˜ìˆ˜ë¥¼ ë§í•©ë‹ˆë‹¤(ì´ê²ƒì„ í™”ë©´ì— ëŒ€í•œ "가능한 한 가장 ì¢ì€ 너비"로 ìƒê°í•´ë„ ë©ë‹ˆë‹¤). ì´ í•œì •ìžë¥¼ 사용하면
-í™”ë©´ì˜ í˜„ìž¬ ë°©í–¥ì— ê´€ê³„ ì—†ì´
+ <p>í™”ë©´ì˜ ê¸°ë³¸ í¬ê¸°ë¡œ, 사용 가능한 화면 ì˜ì—­ì˜ 가장 ì§§ì€ ì¹˜ìˆ˜ê°€
+나타냅니다. 구체ì ìœ¼ë¡œ ê¸°ê¸°ì˜ smallestWidth는 해당 í™”ë©´ì˜ ì´ìš© 가능한 높ì´ì™€ 너비ì˜
+가장 ì§§ì€ ì¹˜ìˆ˜ë¥¼ ë§í•©ë‹ˆë‹¤(ì´ê²ƒì„ í™”ë©´ì— ëŒ€í•œ "가능한 한 가장 ì¢ì€ 너비"로 ìƒê°í•´ë„ ë©ë‹ˆë‹¤). ì´ í•œì •ìžë¥¼ 사용하면
+í™”ë©´ì˜ í˜„ìž¬ ë°©í–¥ì— ê´€ê³„ ì—†ì´
애플리케ì´ì…˜ì´ 해당 UIì—서 ì´ìš© 가능한 너비 중 최소 {@code &lt;N&gt;}dps를 확보하ë„ë¡ í•  수 있습니다.</p>
- <p>예를 들어, ë ˆì´ì•„ì›ƒì— ì–¸ì œë‚˜
+ <p>예를 들어, ë ˆì´ì•„ì›ƒì— ì–¸ì œë‚˜
600dp ì´ìƒì˜ 화면 최소 치수가 필요하다면, ì´ í•œì •ìžë¥¼ 사용하여 ë ˆì´ì•„웃 리소스, {@code
-res/layout-sw600dp/}를 만들 수 있습니다. ì‹œìŠ¤í…œì´ ì´ëŸ¬í•œ 리소스를 사용하는 ê²ƒì€ ì‚¬ìš© 가능한 í™”ë©´ì˜ ìµœì†Œ 치수가 ì ì–´ë„ 600dpê°€
-ë˜ëŠ” 경우ë¿ì´ë©°, ì´ë•Œ 600dpë¼ëŠ” í¬ê¸°ê°€ ì‚¬ìš©ìž ìª½ì—서 ë³´ê¸°ì— ë†’ì´ì´ë“  너비ì´ë“ 
+res/layout-sw600dp/}를 만들 수 있습니다. ì‹œìŠ¤í…œì´ ì´ëŸ¬í•œ 리소스를 사용하는 ê²ƒì€ ì‚¬ìš© 가능한 í™”ë©´ì˜ ìµœì†Œ 치수가 ì ì–´ë„ 600dpê°€
+ë˜ëŠ” 경우ë¿ì´ë©°, ì´ë•Œ 600dpë¼ëŠ” í¬ê¸°ê°€ ì‚¬ìš©ìž ìª½ì—서 ë³´ê¸°ì— ë†’ì´ì´ë“  너비ì´ë“ 
관계 없습니다. ì´ smallestWidth는 ê¸°ê¸°ì˜ ê³ ì •ëœ í™”ë©´ í¬ê¸° 특성입니다. <strong>
ê¸°ê¸°ì˜ smallestWidth는 화면 ë°©í–¥ì´ ë³€ê²½ë˜ì–´ë„ 바뀌지 않습니다</strong>.</p>
<p>ê¸°ê¸°ì˜ smallestWidth는 화면 장ì‹ê³¼ 시스템 UI를 ê°ì•ˆí•©ë‹ˆë‹¤. 예를 들어,
화면 ìƒì—서 최소 ë„ˆë¹„ì˜ ì¶• 주변 ê³µê°„ì„ ì°¨ì§€í•˜ëŠ” ì˜êµ¬ UI 요소가 있다면,
-ì‹œìŠ¤í…œì€ smallestWidth를 실제 화면 í¬ê¸°ë³´ë‹¤ 작게 선언합니다.
-ì´ê²ƒì€ 개발ìžì˜ UIê°€ 사용할 수 없는 화면 픽셀ì´ê¸° 때문입니다. ë”°ë¼ì„œ 개발ìžê°€ 사용하는 ê°’ì€
-<em>ë ˆì´ì•„웃ì—서 요구하는</em> 실제 최소 치수여야 합니다(ì¼ë°˜ì ìœ¼ë¡œ ì´ ê°’ì€ í™”ë©´ì˜ í˜„ìž¬ 방향과 관계없ì´
+ì‹œìŠ¤í…œì€ smallestWidth를 실제 화면 í¬ê¸°ë³´ë‹¤ 작게 선언합니다.
+ì´ê²ƒì€ 개발ìžì˜ UIê°€ 사용할 수 없는 화면 픽셀ì´ê¸° 때문입니다. ë”°ë¼ì„œ 개발ìžê°€ 사용하는 ê°’ì€
+<em>ë ˆì´ì•„웃ì—서 요구하는</em> 실제 최소 치수여야 합니다(ì¼ë°˜ì ìœ¼ë¡œ ì´ ê°’ì€ í™”ë©´ì˜ í˜„ìž¬ 방향과 관계없ì´
ë ˆì´ì•„ì›ƒì´ ì§€ì›í•˜ëŠ” "최소 너비"ê°€ ë©ë‹ˆë‹¤.).</p>
<p>다ìŒì˜ 몇몇 ê°’ì€ ë³´íŽ¸ì ì¸ 화면 í¬ê¸°ì— 대하여 사용할 수 있습니다.</p>
<ul>
@@ -398,16 +398,16 @@ res/layout-sw600dp/}를 만들 수 있습니다. ì‹œìŠ¤í…œì´ ì´ëŸ¬í•œ 리소ìŠ
<li>600x1024mdpi (7ì¸ì¹˜ 태블릿) ë“±ì˜ í™”ë©´ì—는 600ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.</li>
<li>720x1280mdpi (10ì¸ì¹˜ 태블릿) ë“±ì˜ í™”ë©´ì—는 720ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.</li>
</ul>
- <p>애플리케ì´ì…˜ì´
-smallestWidth 한정ìžì˜ 여러 ê°’ì´ í¬í•¨ëœ 여러 리소스 디렉터리를 제공하면, 시스템ì€
+ <p>애플리케ì´ì…˜ì´
+smallestWidth 한정ìžì˜ 여러 ê°’ì´ í¬í•¨ëœ 여러 리소스 디렉터리를 제공하면, 시스템ì€
ê¸°ê¸°ì˜ smallestWidthì— ê°€ìž¥ 가까운(그러나 ì´ë¥¼ 초과하지 않는) ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. </p>
<p><em>API 레벨 13ì—서 추가ë˜ì—ˆìŠµë‹ˆë‹¤.</em></p>
<p>ì´ì™¸ì—ë„ ì• í”Œë¦¬ì¼€ì´ì…˜ê³¼ 호환ë˜ëŠ” ìµœì†Œí•œì˜ smallestWidth를 선언하는 <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">{@code
-android:requiresSmallestWidthDp}</a> ì†ì„±ê³¼
+android:requiresSmallestWidthDp}</a> ì†ì„±ê³¼
ê¸°ê¸°ì˜ smallestWidth ê°’ì„ ë³´ìœ í•œ {@link
-android.content.res.Configuration#smallestScreenWidthDp}
+android.content.res.Configuration#smallestScreenWidthDp}
구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
- <p>여러 가지 í™”ë©´ì— ë§žëŠ” ë””ìžì¸ê³¼ í•œì •ìž ì‚¬ìš©ì— ê´€í•œ ìžì„¸í•œ 정보는
+ <p>여러 가지 í™”ë©´ì— ë§žëŠ” ë””ìžì¸ê³¼ í•œì •ìž ì‚¬ìš©ì— ê´€í•œ ìžì„¸í•œ 정보는
<a href="{@docRoot}guide/practices/screens_support.html">다중 화면
ì§€ì›</a> ê°œë°œìž ê°€ì´ë“œë¥¼ 참조하십시오.</p>
</td>
@@ -421,21 +421,21 @@ android.content.res.Configuration#smallestScreenWidthDp}
등.
</td>
<td>
- <p>리소스를 사용해야 하는 {@code dp} 단위ì—서 최소 ì´ìš© 가능한 화면 너비를 지정합니다.
-ì´ëŠ” <code>&lt;N&gt;</code> ê°’ì´ ì •ì˜í•©ë‹ˆë‹¤. ì´ êµ¬ì„±
-ê°’ì€ í˜„ìž¬ 실제 ë„ˆë¹„ì— ë§žì¶”ê¸° 위해 화면 ë°©í–¥ì´ ê°€ë¡œì™€ 세로 사ì´ë¥¼ 오가며 바뀔 때
+ <p>리소스를 사용해야 하는 {@code dp} 단위ì—서 최소 ì´ìš© 가능한 화면 너비를 지정합니다.
+ì´ëŠ” <code>&lt;N&gt;</code> ê°’ì´ ì •ì˜í•©ë‹ˆë‹¤. ì´ êµ¬ì„±
+ê°’ì€ í˜„ìž¬ 실제 ë„ˆë¹„ì— ë§žì¶”ê¸° 위해 화면 ë°©í–¥ì´ ê°€ë¡œì™€ 세로 사ì´ë¥¼ 오가며 바뀔 때
변경ë©ë‹ˆë‹¤.</p>
<p>애플리케ì´ì…˜ì´ ì´ êµ¬ì„±ì— ëŒ€í•´ 서로 다른 ê°’ì´ í¬í•¨ëœ 여러 ê°œì˜ ë¦¬ì†ŒìŠ¤ 디렉터리를 제공하면,
-ì‹œìŠ¤í…œì€ ê¸°ê¸°ì˜ í˜„ìž¬ 화면 ë„ˆë¹„ì— ê°€ìž¥ 가까운(그러나 ì´ë¥¼ 초과하지 않는)
-ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ ê°’ì€
-화면 장ì‹ì„ ê°ì•ˆí•œ 것ì´ë¯€ë¡œ, ê¸°ê¸°ì˜ ì™¼ìª½ì´ë‚˜ 오른쪽 가장ìžë¦¬ì—
-ì˜êµ¬ UI 요소가 ìžˆì„ ê²½ìš°, 기기는
+ì‹œìŠ¤í…œì€ ê¸°ê¸°ì˜ í˜„ìž¬ 화면 ë„ˆë¹„ì— ê°€ìž¥ 가까운(그러나 ì´ë¥¼ 초과하지 않는)
+ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ ê°’ì€
+화면 장ì‹ì„ ê°ì•ˆí•œ 것ì´ë¯€ë¡œ, ê¸°ê¸°ì˜ ì™¼ìª½ì´ë‚˜ 오른쪽 가장ìžë¦¬ì—
+ì˜êµ¬ UI 요소가 ìžˆì„ ê²½ìš°, 기기는
ì´ëŸ¬í•œ UI 요소를 ê°ì•ˆí•˜ì—¬ 애플리케ì´ì…˜ì˜ ì´ìš© 가능한 ê³µê°„ì„ ì¤„ì—¬ì„œ
실제 화면 í¬ê¸°ë³´ë‹¤ ìž‘ì€ ë„ˆë¹„ ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.</p>
<p><em>API 레벨 13ì—서 추가ë˜ì—ˆìŠµë‹ˆë‹¤.</em></p>
<p>현재 화면 너비를 보유한 {@link android.content.res.Configuration#screenWidthDp}
구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
- <p>여러 가지 í™”ë©´ì— ë§žëŠ” ë””ìžì¸ê³¼ í•œì •ìž ì‚¬ìš©ì— ê´€í•œ ìžì„¸í•œ 정보는
+ <p>여러 가지 í™”ë©´ì— ë§žëŠ” ë””ìžì¸ê³¼ í•œì •ìž ì‚¬ìš©ì— ê´€í•œ ìžì„¸í•œ 정보는
<a href="{@docRoot}guide/practices/screens_support.html">다중 화면
ì§€ì›</a> ê°œë°œìž ê°€ì´ë“œë¥¼ 참조하십시오.</p>
</td>
@@ -449,25 +449,25 @@ android.content.res.Configuration#smallestScreenWidthDp}
등.
</td>
<td>
- <p>리소스가 사용ë˜ì–´ì•¼ 하는 ìµœì†Œí•œì˜ ì‚¬ìš© 가능한 화면 높ì´ë¥¼ "dp" 단위로 나타냅니다.
-ì´ëŠ” <code>&lt;N&gt;</code> ê°’ì´ ì •ì˜í•©ë‹ˆë‹¤. ì´ êµ¬ì„±
-ê°’ì€ í˜„ìž¬ 실제 높ì´ì— 맞추기 위해 화면 ë°©í–¥ì´ ê°€ë¡œì™€ 세로 사ì´ë¥¼ 오가며 바뀔 때
+ <p>리소스가 사용ë˜ì–´ì•¼ 하는 ìµœì†Œí•œì˜ ì‚¬ìš© 가능한 화면 높ì´ë¥¼ "dp" 단위로 나타냅니다.
+ì´ëŠ” <code>&lt;N&gt;</code> ê°’ì´ ì •ì˜í•©ë‹ˆë‹¤. ì´ êµ¬ì„±
+ê°’ì€ í˜„ìž¬ 실제 높ì´ì— 맞추기 위해 화면 ë°©í–¥ì´ ê°€ë¡œì™€ 세로 사ì´ë¥¼ 오가며 바뀔 때
변경ë©ë‹ˆë‹¤.</p>
<p>애플리케ì´ì…˜ì´ ì´ êµ¬ì„±ì— ëŒ€í•´ 서로 다른 ê°’ì´ í¬í•¨ëœ 여러 ê°œì˜ ë¦¬ì†ŒìŠ¤ 디렉터리를 제공하면,
-ì‹œìŠ¤í…œì€ ê¸°ê¸°ì˜ í˜„ìž¬ 화면 높ì´ì— 가장 가까운(그러나 ì´ë¥¼ 초과하지 않는)
-ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ ê°’ì€
-화면 장ì‹ì„ ê°ì•ˆí•œ 것ì´ë¯€ë¡œ, ê¸°ê¸°ì˜ ìƒë‹¨ì´ë‚˜ 하단 가장ìžë¦¬ì—
-ì˜êµ¬ UI 요소가 ìžˆì„ ê²½ìš°, 기기는
+ì‹œìŠ¤í…œì€ ê¸°ê¸°ì˜ í˜„ìž¬ 화면 높ì´ì— 가장 가까운(그러나 ì´ë¥¼ 초과하지 않는)
+ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ ê°’ì€
+화면 장ì‹ì„ ê°ì•ˆí•œ 것ì´ë¯€ë¡œ, ê¸°ê¸°ì˜ ìƒë‹¨ì´ë‚˜ 하단 가장ìžë¦¬ì—
+ì˜êµ¬ UI 요소가 ìžˆì„ ê²½ìš°, 기기는
ì´ëŸ¬í•œ UI 요소를 ê°ì•ˆí•˜ì—¬ 애플리케ì´ì…˜ì˜ ì´ìš© 가능한 ê³µê°„ì„ ì¤„ì—¬ì„œ
- 실제 화면 í¬ê¸°ë³´ë‹¤ ìž‘ì€ ë†’ì´ ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
-ìƒíƒœ í‘œì‹œì¤„ì— ê³ ì •ë˜ì§€ ì•Šì€ í™”ë©´ 장ì‹(예를 들어
-ì „í™” ìƒíƒœ í‘œì‹œì¤„ì€ ì „ì²´ 화면ì—서 숨길 수 있ìŒ)ì€ ì—¬ê¸°ì—서 ê°ì•ˆí•˜ì§€ <em>않았고</em>,
-제목 표시줄ì´ë‚˜ 작업 ëª¨ìŒ ë“±ì˜ ì°½ 장ì‹ë„ ê°ì•ˆë˜ì§€ 않았으므로, 애플리케ì´ì…˜ 입장ì—서는 ìžì‹ ì´ 지정한 것보다 ì–´ëŠ ì •ë„ ìž‘ì€ ê³µê°„ì„
+ 실제 화면 í¬ê¸°ë³´ë‹¤ ìž‘ì€ ë†’ì´ ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
+ìƒíƒœ í‘œì‹œì¤„ì— ê³ ì •ë˜ì§€ ì•Šì€ í™”ë©´ 장ì‹(예를 들어
+ì „í™” ìƒíƒœ í‘œì‹œì¤„ì€ ì „ì²´ 화면ì—서 숨길 수 있ìŒ)ì€ ì—¬ê¸°ì—서 ê°ì•ˆí•˜ì§€ <em>않았고</em>,
+제목 표시줄ì´ë‚˜ 작업 ëª¨ìŒ ë“±ì˜ ì°½ 장ì‹ë„ ê°ì•ˆë˜ì§€ 않았으므로, 애플리케ì´ì…˜ 입장ì—서는 ìžì‹ ì´ 지정한 것보다 ì–´ëŠ ì •ë„ ìž‘ì€ ê³µê°„ì„
ë°›ì•„ë“¤ì¼ ëŒ€ë¹„ë¥¼ 해야 합니다.
<p><em>API 레벨 13ì—서 추가ë˜ì—ˆìŠµë‹ˆë‹¤.</em></p>
<p>현재 화면 너비를 보유한 {@link android.content.res.Configuration#screenHeightDp}
구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
- <p>여러 가지 í™”ë©´ì— ë§žëŠ” ë””ìžì¸ê³¼ í•œì •ìž ì‚¬ìš©ì— ê´€í•œ ìžì„¸í•œ 정보는
+ <p>여러 가지 í™”ë©´ì— ë§žëŠ” ë””ìžì¸ê³¼ í•œì •ìž ì‚¬ìš©ì— ê´€í•œ ìžì„¸í•œ 정보는
<a href="{@docRoot}guide/practices/screens_support.html">다중 화면
ì§€ì›</a> ê°œë°œìž ê°€ì´ë“œë¥¼ 참조하십시오.</p>
</td>
@@ -482,39 +482,39 @@ android.content.res.Configuration#smallestScreenWidthDp}
</td>
<td>
<ul class="nolist">
- <li>{@code small}: ì €ë°€ë„ QVGA 화면과 비슷한
+ <li>{@code small}: ì €ë°€ë„ QVGA 화면과 비슷한
í¬ê¸°ì˜ 화면입니다. ìž‘ì€ í™”ë©´ì˜ ìµœì†Œ ë ˆì´ì•„웃 í¬ê¸°ëŠ”
-약 320x426 dp단위입니다. ì´ í™”ë©´ì˜ ì˜ˆì‹œë¡œëŠ” QVGA ì €ë°€ë„ ë° VGA ê³ ë°€ë„ê°€
+약 320x426 dp단위입니다. ì´ í™”ë©´ì˜ ì˜ˆì‹œë¡œëŠ” QVGA ì €ë°€ë„ ë° VGA ê³ ë°€ë„ê°€
있습니다.</li>
- <li>{@code normal}: ì¤‘ë°€ë„ HVGA 화면과
+ <li>{@code normal}: ì¤‘ë°€ë„ HVGA 화면과
비슷한 í¬ê¸°ì˜ 화면입니다. ì •ìƒ í™”ë©´ì˜
- 최소 ë ˆì´ì•„웃 í¬ê¸°ëŠ” 약 320x470 dp 단위입니다. ì´ í™”ë©´ì˜ ì˜ˆë¡œëŠ”
+ 최소 ë ˆì´ì•„웃 í¬ê¸°ëŠ” 약 320x470 dp 단위입니다. ì´ í™”ë©´ì˜ ì˜ˆë¡œëŠ”
WQVGA 저밀ë„, HVGA 중밀ë„, WVGA ê³ ë°€ë„ ë“±ì´ ìžˆìŠµë‹ˆë‹¤.
</li>
- <li>{@code large}: ì¤‘ë°€ë„ VGA 화면과
+ <li>{@code large}: ì¤‘ë°€ë„ VGA 화면과
비슷한 í¬ê¸°ì˜ 화면입니다.
í° í™”ë©´ì˜ ìµœì†Œ ë ˆì´ì•„웃 í¬ê¸°ëŠ” 약 480x640 dp 단위입니다.
ì´ í™”ë©´ì˜ ì˜ˆì‹œë¡œëŠ” VGA ë° WVGA ì¤‘ë°€ë„ í™”ë©´ì´ ìžˆìŠµë‹ˆë‹¤.</li>
- <li>{@code xlarge}: ì¼ë°˜ì ì¸ ì¤‘ë°€ë„ HVGA 화면보다 ìƒë‹¹ížˆ í° í™”ë©´ì„
+ <li>{@code xlarge}: ì¼ë°˜ì ì¸ ì¤‘ë°€ë„ HVGA 화면보다 ìƒë‹¹ížˆ í° í™”ë©´ì„
ë§í•©ë‹ˆë‹¤. 초대형 화면ì˜
- 최소 ë ˆì´ì•„웃 í¬ê¸°ëŠ” 약 720x960 dp 단위입니다. ëŒ€ë¶€ë¶„ì˜ ê²½ìš°, 초대형 화면 기기는
-ì£¼ë¨¸ë‹ˆì— ë„£ì–´ ë‹¤ë‹ˆê¸°ì— ë„ˆë¬´ í½ë‹ˆë‹¤. ë”°ë¼ì„œ 태블릿 스타ì¼ì˜ ê¸°ê¸°ì¼ ê°€ëŠ¥ì„±ì´
+ 최소 ë ˆì´ì•„웃 í¬ê¸°ëŠ” 약 720x960 dp 단위입니다. ëŒ€ë¶€ë¶„ì˜ ê²½ìš°, 초대형 화면 기기는
+ì£¼ë¨¸ë‹ˆì— ë„£ì–´ ë‹¤ë‹ˆê¸°ì— ë„ˆë¬´ í½ë‹ˆë‹¤. ë”°ë¼ì„œ 태블릿 스타ì¼ì˜ ê¸°ê¸°ì¼ ê°€ëŠ¥ì„±ì´
높습니다. <em>API 레벨 9ì—서 추가ë˜ì—ˆìŠµë‹ˆë‹¤.</em></li>
</ul>
- <p class="note"><strong>참고:</strong> í¬ê¸° 한정ìžë¥¼ 사용하ë”ë¼ë„ 해당 리소스가 ê·¸ í¬ê¸°ì˜ 화면
-<em>ì „ìš©</em>ì´ë¼ëŠ” ëœ»ì€ ì•„ë‹™ë‹ˆë‹¤. 현재 기기 구성과 ë”ìš± 잘 맞는 한정ìžê°€ í¬í•¨ëœ 대체 리소스를
-제공하지 않으면,
+ <p class="note"><strong>참고:</strong> í¬ê¸° 한정ìžë¥¼ 사용하ë”ë¼ë„ 해당 리소스가 ê·¸ í¬ê¸°ì˜ 화면
+<em>ì „ìš©</em>ì´ë¼ëŠ” ëœ»ì€ ì•„ë‹™ë‹ˆë‹¤. 현재 기기 구성과 ë”ìš± 잘 맞는 한정ìžê°€ í¬í•¨ëœ 대체 리소스를
+제공하지 않으면,
ì‹œìŠ¤í…œì´ <a href="#BestMatch">가장 잘 ì¼ì¹˜í•˜ëŠ”</a> 리소스를 사용합니다.</p>
<p class="caution"><strong>주ì˜:</strong> 모든 리소스가 현재 화면보다
<em>í°</em> í¬ê¸° 한정ìžë¥¼ 사용하는 경우, ì‹œìŠ¤í…œì€ ë¦¬ì†ŒìŠ¤ë¥¼ 사용하지 <strong>않으며</strong> 애플리케ì´ì…˜ì€ ëŸ°íƒ€ìž„ì— ìž‘ë™ì´ 중단ë©ë‹ˆë‹¤(예를 들어, 모든 ë ˆì´ì•„웃 ë¦¬ì†ŒìŠ¤ì— {@code
xlarge} 한정ìžê°€ 태그ë˜ì–´ 있지만 기기는 ì¼ë°˜ í¬ê¸° í™”ë©´ì¼ ê²½ìš°
).</p>
<p><em>API 레벨 4ì—서 추가ë˜ì—ˆìŠµë‹ˆë‹¤.</em></p>
-
- <p>ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
+
+ <p>ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
ì§€ì›</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
- <p>{@link android.content.res.Configuration#screenLayout} 구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
-ì´ê²ƒì€ í™”ë©´ì´ ì†Œí˜•, ì¼ë°˜ í¬ê¸° ë˜ëŠ”
+ <p>{@link android.content.res.Configuration#screenLayout} 구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
+ì´ê²ƒì€ í™”ë©´ì´ ì†Œí˜•, ì¼ë°˜ í¬ê¸° ë˜ëŠ”
대형ì¸ì§€ë¥¼ 나타냅니다.</p>
</td>
</tr>
@@ -530,9 +530,9 @@ xlarge} 한정ìžê°€ 태그ë˜ì–´ 있지만 기기는 ì¼ë°˜ í¬ê¸° í™”ë©´ì¼ ê²
<li>{@code notlong}: QVGA, HVGA ë° VGA ë“±ì˜ ê¸¸ì§€ ì•Šì€ í™”ë©´</li>
</ul>
<p><em>API 레벨 4ì—서 추가ë˜ì—ˆìŠµë‹ˆë‹¤.</em></p>
- <p>ì´ê²ƒì€ 순전히 화면 비율ì—ë§Œ 기초합니다("긴" í™”ë©´ì´ ë” ë„“ìŠµë‹ˆë‹¤). ì´ëŠ”
+ <p>ì´ê²ƒì€ 순전히 화면 비율ì—ë§Œ 기초합니다("긴" í™”ë©´ì´ ë” ë„“ìŠµë‹ˆë‹¤). ì´ëŠ”
화면 방향과 관계가 없습니다.</p>
- <p>{@link android.content.res.Configuration#screenLayout}ë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
+ <p>{@link android.content.res.Configuration#screenLayout}ë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
ì´ê²ƒì€ í™”ë©´ì´ ê¸´ 화면ì¸ì§€ 여부를 나타냅니다.</p>
</td>
</tr>
@@ -549,10 +549,10 @@ xlarge} 한정ìžê°€ 태그ë˜ì–´ 있지만 기기는 ì¼ë°˜ í¬ê¸° í™”ë©´ì¼ ê²
<li>{@code land}: 기기가 가로 ë°©í–¥(수í‰)입니다.</li>
<!-- Square mode is currently not used. -->
</ul>
- <p>ì´ê²ƒì€ 사용ìžê°€ í™”ë©´ì„ ëŒë¦¬ëŠ” 경우 애플리케ì´ì…˜ 수명 중ì—
-ë³€ê²½ë  ìˆ˜ 있습니다. ì´ê²ƒì´ ëŸ°íƒ€ìž„ì— ì• í”Œë¦¬ì¼€ì´ì…˜ì— ì–´ë–¤ ì˜í–¥ì„ 미치는지 알아보려면
+ <p>ì´ê²ƒì€ 사용ìžê°€ í™”ë©´ì„ ëŒë¦¬ëŠ” 경우 애플리케ì´ì…˜ 수명 중ì—
+ë³€ê²½ë  ìˆ˜ 있습니다. ì´ê²ƒì´ ëŸ°íƒ€ìž„ì— ì• í”Œë¦¬ì¼€ì´ì…˜ì— ì–´ë–¤ ì˜í–¥ì„ 미치는지 알아보려면
<a href="runtime-changes.html">런타임 변경 처리</a>를 참조하십시오.</p>
- <p>{@link android.content.res.Configuration#orientation} 구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
+ <p>{@link android.content.res.Configuration#orientation} 구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
ì´ëŠ” 현재 기기 ë°©í–¥ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.</p>
</td>
</tr>
@@ -569,21 +569,21 @@ xlarge} 한정ìžê°€ 태그ë˜ì–´ 있지만 기기는 ì¼ë°˜ í¬ê¸° í™”ë©´ì¼ ê²
<ul class="nolist">
<li>{@code car}: 기기가 차량용 ë„í¬ì—서 표시ë˜ê³  있습니다.</li>
<li>{@code desk}: 기기가 ë°ìФí¬ìš© ë„í¬ì—서 표시ë˜ê³  있습니다.</li>
- <li>{@code television}: 기기가 텔레비전ì—서 표시ë˜ê³  있으며,
-UIê°€ í° í™”ë©´ì— ìžˆê³  사용ìžê°€ 여기ì—서 멀리 떨어져 있는
-"í… í’‹(ten foot)" í™˜ê²½ì„ ì œê³µí•˜ê³  있습니다. ì´ëŠ” 주로 DPAD ë˜ëŠ”
+ <li>{@code television}: 기기가 텔레비전ì—서 표시ë˜ê³  있으며,
+UIê°€ í° í™”ë©´ì— ìžˆê³  사용ìžê°€ 여기ì—서 멀리 떨어져 있는
+"í… í’‹(ten foot)" í™˜ê²½ì„ ì œê³µí•˜ê³  있습니다. ì´ëŠ” 주로 DPAD ë˜ëŠ”
기타 비-í¬ì¸í„° ìƒí˜¸ 작용 ì£¼ë³€ì„ ê°€ë¦¬í‚µë‹ˆë‹¤.</li>
- <li>{@code appliance}: 기기가 가전 제품 ì—­í• ì„ í•˜ê³  있으며, 디스플레ì´
+ <li>{@code appliance}: 기기가 가전 제품 ì—­í• ì„ í•˜ê³  있으며, 디스플레ì´
í™”ë©´ì´ ì—†ìŠµë‹ˆë‹¤.</li>
<li>{@code watch}: ê¸°ê¸°ì— ë””ìŠ¤í”Œë ˆì´ í™”ë©´ì´ ìžˆê³  ì†ëª©ì— ì°©ìš©ë©ë‹ˆë‹¤.</li>
</ul>
<p><em>API 레벨 8ì—서 추가ë˜ì—ˆê³ , í…”ë ˆë¹„ì „ì€ API 13ì—서, 시계는 API 20ì—서 추가ë˜ì—ˆìŠµë‹ˆë‹¤.</em></p>
- <p>기기가 ë„í¬ì— 삽입ë˜ê±°ë‚˜ ì œê±°ë  ë•Œ ì•±ì´ ì‘답하는 ë°©ì‹ì— 관한 정보는
-<a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">ë„킹 ìƒíƒœ ë° ìœ í˜•
+ <p>기기가 ë„í¬ì— 삽입ë˜ê±°ë‚˜ ì œê±°ë  ë•Œ ì•±ì´ ì‘답하는 ë°©ì‹ì— 관한 정보는
+<a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">ë„킹 ìƒíƒœ ë° ìœ í˜•
íŒë³„ê³¼ 모니터ë§</a>ì„ ì½ì–´ë³´ì‹­ì‹œì˜¤.</p>
- <p>ì´ê²ƒì€ 사용ìžê°€ 기기를 ë„í¬ì— 놓는 경우 애플리케ì´ì…˜ 수명 중ì—
+ <p>ì´ê²ƒì€ 사용ìžê°€ 기기를 ë„í¬ì— 놓는 경우 애플리케ì´ì…˜ 수명 중ì—
ë³€ê²½ë  ìˆ˜ 있습니다. ì´ëŸ¬í•œ 모드 중 몇 가지는 {@link
-android.app.UiModeManager}를 사용하여 활성화 ë˜ëŠ” 비활성화할 수 있습니다. ì´ê²ƒì´ ëŸ°íƒ€ìž„ì— ì• í”Œë¦¬ì¼€ì´ì…˜ì— ì–´ë–¤ ì˜í–¥ì„ 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를
+android.app.UiModeManager}를 사용하여 활성화 ë˜ëŠ” 비활성화할 수 있습니다. ì´ê²ƒì´ ëŸ°íƒ€ìž„ì— ì• í”Œë¦¬ì¼€ì´ì…˜ì— ì–´ë–¤ ì˜í–¥ì„ 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를
참조하십시오.</p>
</td>
</tr>
@@ -599,9 +599,9 @@ android.app.UiModeManager}를 사용하여 활성화 ë˜ëŠ” 비활성화할 수
<li>{@code notnight}: 주간</li>
</ul>
<p><em>API 레벨 8ì—서 추가ë˜ì—ˆìŠµë‹ˆë‹¤.</em></p>
- <p>ì´ê²ƒì€ 야간 모드가 ìžë™ ëª¨ë“œì¸ ìƒíƒœ(기본)ì—서 애플리케ì´ì…˜ì˜ 수명 중ì—
-ë³€ê²½ë  ìˆ˜ 있습니다. ì´ ê²½ìš° 모드는 하루 중 시간대를 기반으로 변경ë©ë‹ˆë‹¤. ì´ ëª¨ë“œëŠ”
-{@link android.app.UiModeManager}를 사용하여 활성화 ë˜ëŠ” 비활성화할 수 있습니다. ì´ê²ƒì´ 런타임 중 애플리케ì´ì…˜ì— ì–´ë–¤ ì˜í–¥ì„ 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를
+ <p>ì´ê²ƒì€ 야간 모드가 ìžë™ ëª¨ë“œì¸ ìƒíƒœ(기본)ì—서 애플리케ì´ì…˜ì˜ 수명 중ì—
+ë³€ê²½ë  ìˆ˜ 있습니다. ì´ ê²½ìš° 모드는 하루 중 시간대를 기반으로 변경ë©ë‹ˆë‹¤. ì´ ëª¨ë“œëŠ”
+{@link android.app.UiModeManager}를 사용하여 활성화 ë˜ëŠ” 비활성화할 수 있습니다. ì´ê²ƒì´ 런타임 중 애플리케ì´ì…˜ì— ì–´ë–¤ ì˜í–¥ì„ 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를
참조하십시오.</p>
</td>
</tr>
@@ -623,33 +623,33 @@ android.app.UiModeManager}를 사용하여 활성화 ë˜ëŠ” 비활성화할 수
<li>{@code mdpi}: 중밀ë„(ì¼ë°˜ì ì¸ HVGAì—서) 화면, 약
160dpi.</li>
<li>{@code hdpi}: ê³ ë°€ë„ í™”ë©´, 약 240dpi.</li>
- <li>{@code xhdpi}: ì´ˆê³ ë°€ë„ í™”ë©´, 약 320dpi. <em>API 레벨 8ì—서
+ <li>{@code xhdpi}: ì´ˆê³ ë°€ë„ í™”ë©´, 약 320dpi. <em>API 레벨 8ì—서
추가ë˜ì—ˆìŠµë‹ˆë‹¤.</em></li>
- <li>{@code xxhdpi}: ìŠˆí¼ ì´ˆê³ ë°€ë„ í™”ë©´, 약 480dpi. <em>API 레벨 16ì—서
+ <li>{@code xxhdpi}: ìŠˆí¼ ì´ˆê³ ë°€ë„ í™”ë©´, 약 480dpi. <em>API 레벨 16ì—서
추가ë˜ì—ˆìŠµë‹ˆë‹¤.</em></li>
- <li>{@code xxxhdpi}: ìš¸íŠ¸ë¼ ìŠˆí¼ ì´ˆê³ ë°€ë„ í™”ë©´ 사용(시작 ê´€ë¦¬ìž ì•„ì´ì½˜ë§Œ 해당,
-<em>다중 화면 ì§€ì›</em>ì˜
-<a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">참고</a>를 참조하십시오), 약 640dpi. <em>API 레벨 18ì—서
+ <li>{@code xxxhdpi}: ìš¸íŠ¸ë¼ ìŠˆí¼ ì´ˆê³ ë°€ë„ í™”ë©´ 사용(시작 ê´€ë¦¬ìž ì•„ì´ì½˜ë§Œ 해당,
+<em>다중 화면 ì§€ì›</em>ì˜
+<a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">참고</a>를 참조하십시오), 약 640dpi. <em>API 레벨 18ì—서
추가ë˜ì—ˆìŠµë‹ˆë‹¤.</em></li>
- <li>{@code nodpi}: ì´ê²ƒì€ 기기 ë°€ë„ì— ì¼ì¹˜í•˜ë„ë¡ í¬ê¸°ë¥¼ ì¡°ì •í•˜ê³ ìž í•˜ì§€ 않는 비트맵 리소스ì—
+ <li>{@code nodpi}: ì´ê²ƒì€ 기기 ë°€ë„ì— ì¼ì¹˜í•˜ë„ë¡ í¬ê¸°ë¥¼ ì¡°ì •í•˜ê³ ìž í•˜ì§€ 않는 비트맵 리소스ì—
사용할 수 있습니다.</li>
- <li>{@code tvdpi}: Mdpi와 hdpi ì‚¬ì´ ì–´ë”˜ê°€ì— í•´ë‹¹ë˜ëŠ” 화면, 약 213dpi. ì´ê²ƒì€
-"기본" ë°€ë„ ê·¸ë£¹ìœ¼ë¡œ 간주ë˜ì§€ 않습니다. ì´ëŠ” 대체로 텔레비전용으로 만들어진 것ì´ë©°
-ëŒ€ë¶€ë¶„ì˜ ì•±ì—는 필요하지 않는 ê²ƒì´ ì •ìƒìž…니다. mdpi ë° hdpië§Œ 제공하면 ëŒ€ë¶€ë¶„ì˜ ì•±ì—는 충분하고
+ <li>{@code tvdpi}: Mdpi와 hdpi ì‚¬ì´ ì–´ë”˜ê°€ì— í•´ë‹¹ë˜ëŠ” 화면, 약 213dpi. ì´ê²ƒì€
+"기본" ë°€ë„ ê·¸ë£¹ìœ¼ë¡œ 간주ë˜ì§€ 않습니다. ì´ëŠ” 대체로 텔레비전용으로 만들어진 것ì´ë©°
+ëŒ€ë¶€ë¶„ì˜ ì•±ì—는 필요하지 않는 ê²ƒì´ ì •ìƒìž…니다. mdpi ë° hdpië§Œ 제공하면 ëŒ€ë¶€ë¶„ì˜ ì•±ì—는 충분하고
ì‹œìŠ¤í…œì´ í•„ìš”ì— ë”°ë¼ í¬ê¸°ë¥¼ ì¡°ì •í•´ì¤ë‹ˆë‹¤. ì´ í•œì •ìžëŠ” API 레벨 13ê³¼ 함께 ë„ìž…ë˜ì—ˆìŠµë‹ˆë‹¤.</li>
</ul>
- <p>여섯 가지 기본 ë°€ë„ê°„ì— 3:4:6:8:12:16 비율 ì²™ë„ê°€ 있습니다(tvdpi ë°€ë„는
+ <p>여섯 가지 기본 ë°€ë„ê°„ì— 3:4:6:8:12:16 비율 ì²™ë„ê°€ 있습니다(tvdpi ë°€ë„는
무시). 그러므로 ldpiì˜ 9x9 ë¹„íŠ¸ë§µì€ mdpiì—서 12x12ì´ê³ , hdpiì—서 18x18, xhdpiì—서 24x24 등, ì´ëŸ° ì‹ìœ¼ë¡œ ì ìš©ë©ë‹ˆë‹¤.
</p>
- <p>ì´ë¯¸ì§€ 리소스가 텔레비전ì´ë‚˜ 특정 기기ì—서 제대로 ë³´ì´ì§€ 않는다고 결정하고
+ <p>ì´ë¯¸ì§€ 리소스가 텔레비전ì´ë‚˜ 특정 기기ì—서 제대로 ë³´ì´ì§€ 않는다고 결정하고
tvdpi 리소스를 사용하려 í•  경우, ë°°ìœ¨ì€ 1.33*mdpi입니다. 예를 들어,
mdpi í™”ë©´ì˜ 100px x 100px ì´ë¯¸ì§€ëŠ” tvdpiì—서 133px x 133pxê°€ ë˜ì–´ì•¼ 합니다.</p>
- <p class="note"><strong>참고:</strong> ë°€ë„ í•œì •ìžë¥¼ 사용하ë”ë¼ë„ 해당 리소스가 ê·¸ ë°€ë„ì˜ í™”ë©´
-<em>ì „ìš©</em>ì´ë¼ëŠ” ëœ»ì€ ì•„ë‹™ë‹ˆë‹¤. 현재 기기 구성과 ë”ìš± 잘 맞는 한정ìžê°€ í¬í•¨ëœ 대체 리소스를
-제공하지 않으면,
+ <p class="note"><strong>참고:</strong> ë°€ë„ í•œì •ìžë¥¼ 사용하ë”ë¼ë„ 해당 리소스가 ê·¸ ë°€ë„ì˜ í™”ë©´
+<em>ì „ìš©</em>ì´ë¼ëŠ” ëœ»ì€ ì•„ë‹™ë‹ˆë‹¤. 현재 기기 구성과 ë”ìš± 잘 맞는 한정ìžê°€ í¬í•¨ëœ 대체 리소스를
+제공하지 않으면,
ì‹œìŠ¤í…œì´ <a href="#BestMatch">가장 잘 ì¼ì¹˜í•˜ëŠ”</a> 리소스를 사용합니다.</p>
- <p>다양한 í™”ì§ˆì„ ì²˜ë¦¬í•˜ëŠ” 방법과
-Androidê°€ 현재 í™”ì§ˆì— ë§žì¶° ë¹„íŠ¸ë§µì„ ì¶•ì†Œí•˜ëŠ” ë°©ë²•ì— ê´€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
+ <p>다양한 í™”ì§ˆì„ ì²˜ë¦¬í•˜ëŠ” 방법과
+Androidê°€ 현재 í™”ì§ˆì— ë§žì¶° ë¹„íŠ¸ë§µì„ ì¶•ì†Œí•˜ëŠ” ë°©ë²•ì— ê´€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
ì§€ì›</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
</td>
</tr>
@@ -662,10 +662,10 @@ Androidê°€ 현재 í™”ì§ˆì— ë§žì¶° ë¹„íŠ¸ë§µì„ ì¶•ì†Œí•˜ëŠ” ë°©ë²•ì— ê´€í•œ ìž
<td>
<ul class="nolist">
<li>{@code notouch}: ê¸°ê¸°ì— í„°ì¹˜ 스í¬ë¦°ì´ 없습니다.</li>
- <li>{@code finger}: ê¸°ê¸°ì— í„°ì¹˜ 스í¬ë¦°ì´ 있으며 ì´ë¥¼
+ <li>{@code finger}: ê¸°ê¸°ì— í„°ì¹˜ 스í¬ë¦°ì´ 있으며 ì´ë¥¼
사용ìžì˜ ì†ê°€ë½ì„ 사용한 ë°©í–¥ 지시 ìƒí˜¸ ìž‘ìš©ì„ í†µí•´ ì“°ë„ë¡ ë˜ì–´ 있습니다.</li>
</ul>
- <p>{@link android.content.res.Configuration#touchscreen} 구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
+ <p>{@link android.content.res.Configuration#touchscreen} 구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
ì´ëŠ” 기기ì—서 사용ë˜ëŠ” 터치 스í¬ë¦°ì˜ ìœ í˜•ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.</p>
</td>
</tr>
@@ -678,25 +678,25 @@ Androidê°€ 현재 í™”ì§ˆì— ë§žì¶° ë¹„íŠ¸ë§µì„ ì¶•ì†Œí•˜ëŠ” ë°©ë²•ì— ê´€í•œ ìž
</td>
<td>
<ul class="nolist">
- <li>{@code keysexposed}: 기기ì—서 키보드를 사용할 수 있습니다. 키보드ì—
-소프트웨어 키보드가 활성화ë˜ì–´ 있으면(ì´ëŸ´ ê°€ëŠ¥ì„±ì´ í½ë‹ˆë‹¤), 하드웨어 키보드가 사용ìžì—게 노출ë˜ì–´ 있지
-<em>않거나</em> ê¸°ê¸°ì— í•˜ë“œì›¨ì–´ 키보드가 ì—†ë”ë¼ë„ ì´ ë¦¬ì†ŒìŠ¤ë¥¼ 사용할 수 있습니다. 소프트웨어
-키보드가 제공ë˜ì–´ 있지 않거나 비활성화ë˜ì–´ 있는 경우 ì´ê²ƒì€ 하드웨어 키보드가 노출ë˜ì–´ ìžˆì„ ë•Œì—ë§Œ
+ <li>{@code keysexposed}: 기기ì—서 키보드를 사용할 수 있습니다. 키보드ì—
+소프트웨어 키보드가 활성화ë˜ì–´ 있으면(ì´ëŸ´ ê°€ëŠ¥ì„±ì´ í½ë‹ˆë‹¤), 하드웨어 키보드가 사용ìžì—게 노출ë˜ì–´ 있지
+<em>않거나</em> ê¸°ê¸°ì— í•˜ë“œì›¨ì–´ 키보드가 ì—†ë”ë¼ë„ ì´ ë¦¬ì†ŒìŠ¤ë¥¼ 사용할 수 있습니다. 소프트웨어
+키보드가 제공ë˜ì–´ 있지 않거나 비활성화ë˜ì–´ 있는 경우 ì´ê²ƒì€ 하드웨어 키보드가 노출ë˜ì–´ ìžˆì„ ë•Œì—ë§Œ
사용할 수 있습니다.</li>
- <li>{@code keyshidden}: 기기ì—서 하드웨어 키보드를 사용할 수 있지만
+ <li>{@code keyshidden}: 기기ì—서 하드웨어 키보드를 사용할 수 있지만
숨겨져 있고 <em>ì´ì— ë”하여</em> ê¸°ê¸°ì— ì†Œí”„íŠ¸ì›¨ì–´ 키보드가 활성화ë˜ì–´ 있지 <em>않습니다</em>.</li>
- <li>{@code keyssoft}: ê¸°ê¸°ì— í™œì„±í™”ëœ ì†Œí”„íŠ¸ì›¨ì–´ 키보드가 있습니다(표시 여부는
+ <li>{@code keyssoft}: ê¸°ê¸°ì— í™œì„±í™”ëœ ì†Œí”„íŠ¸ì›¨ì–´ 키보드가 있습니다(표시 여부는
무관).</li>
</ul>
<p><code>keysexposed</code> 리소스를 제공하지만 <code>keyssoft</code>
-리소스는 제공하지 않는다면, ì‹œìŠ¤í…œì€ ì†Œí”„íŠ¸ì›¨ì–´ 키보드가 활성화ë˜ì–´ 있는 ë™ì•ˆì€ 키보드가 ë³´ì´ëŠ”ì§€ 여부와 ê´€ê³„ì—†ì´ <code>keysexposed</code>
+리소스는 제공하지 않는다면, ì‹œìŠ¤í…œì€ ì†Œí”„íŠ¸ì›¨ì–´ 키보드가 활성화ë˜ì–´ 있는 ë™ì•ˆì€ 키보드가 ë³´ì´ëŠ”ì§€ 여부와 ê´€ê³„ì—†ì´ <code>keysexposed</code>
리소스를 사용합니다.</p>
- <p>ì´ê²ƒì€ 사용ìžê°€ 하드웨어 키보드를 여는 경우 애플리케ì´ì…˜ 수명 중ì—
-ë³€ê²½ë  ìˆ˜ 있습니다. ì´ê²ƒì´ ëŸ°íƒ€ìž„ì— ì• í”Œë¦¬ì¼€ì´ì…˜ì— ì–´ë–¤ ì˜í–¥ì„ 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를
+ <p>ì´ê²ƒì€ 사용ìžê°€ 하드웨어 키보드를 여는 경우 애플리케ì´ì…˜ 수명 중ì—
+ë³€ê²½ë  ìˆ˜ 있습니다. ì´ê²ƒì´ ëŸ°íƒ€ìž„ì— ì• í”Œë¦¬ì¼€ì´ì…˜ì— ì–´ë–¤ ì˜í–¥ì„ 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를
참조하십시오.</p>
<p>ë˜í•œ, 구성 필드 {@link
android.content.res.Configuration#hardKeyboardHidden}ê³¼ {@link
-android.content.res.Configuration#keyboardHidden}ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤. ì´ í•„ë“œëŠ” ê°ê° 하드웨어 í‚¤ë³´ë“œì˜ ê°€ì‹œì„±ê³¼
+android.content.res.Configuration#keyboardHidden}ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤. ì´ í•„ë“œëŠ” ê°ê° 하드웨어 í‚¤ë³´ë“œì˜ ê°€ì‹œì„±ê³¼
모든 ì¢…ë¥˜ì˜ í‚¤ë³´ë“œ(소프트웨어 í¬í•¨)ì˜ ê°€ì‹œì„±ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.</p>
</td>
</tr>
@@ -710,13 +710,13 @@ android.content.res.Configuration#keyboardHidden}ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤. ì´ í•„
<td>
<ul class="nolist">
<li>{@code nokeys}: ê¸°ê¸°ì— í…스트 ìž…ë ¥ì„ ìœ„í•œ 하드웨어 키가 없습니다.</li>
- <li>{@code qwerty}: ê¸°ê¸°ì— í•˜ë“œì›¨ì–´ 쿼티 키보드가 있습니다(ì´ê²ƒì´
+ <li>{@code qwerty}: ê¸°ê¸°ì— í•˜ë“œì›¨ì–´ 쿼티 키보드가 있습니다(ì´ê²ƒì´
사용ìž
ì—게 표시ë˜ëŠ”ì§€ 여부는 무관).</li>
- <li>{@code 12key}: ê¸°ê¸°ì— í•˜ë“œì›¨ì–´ 12-키 키보드가 있습니다(ì´ê²ƒì´ 사용ìžì—게 표시ë˜ëŠ”ì§€ 여부는
+ <li>{@code 12key}: ê¸°ê¸°ì— í•˜ë“œì›¨ì–´ 12-키 키보드가 있습니다(ì´ê²ƒì´ 사용ìžì—게 표시ë˜ëŠ”ì§€ 여부는
무관).</li>
</ul>
- <p>{@link android.content.res.Configuration#keyboard} 구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
+ <p>{@link android.content.res.Configuration#keyboard} 구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
ì´ëŠ” 기본 í…스트 ìž…ë ¥ 메서드를 사용할 수 있는지 여부를 나타냅니다.</p>
</td>
</tr>
@@ -729,13 +729,13 @@ android.content.res.Configuration#keyboardHidden}ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤. ì´ í•„
<td>
<ul class="nolist">
<li>{@code navexposed}: 사용ìžê°€ íƒìƒ‰ 키를 사용할 수 있습니다.</li>
- <li>{@code navhidden}: íƒìƒ‰ 키를 사용할 수 없습니다(예: 닫힌 뚜껑 ë’¤ì— ìžˆëŠ”
+ <li>{@code navhidden}: íƒìƒ‰ 키를 사용할 수 없습니다(예: 닫힌 뚜껑 ë’¤ì— ìžˆëŠ”
경우).</li>
</ul>
- <p>ì´ê²ƒì€ 사용ìžê°€ íƒìƒ‰ 키를 드러내는 경우 애플리케ì´ì…˜ 수명 중ì—
-ë³€ê²½ë  ìˆ˜ 있습니다. ì´ê²ƒì´ ëŸ°íƒ€ìž„ì— ì• í”Œë¦¬ì¼€ì´ì…˜ì— ì–´ë–¤ ì˜í–¥ì„ 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를
+ <p>ì´ê²ƒì€ 사용ìžê°€ íƒìƒ‰ 키를 드러내는 경우 애플리케ì´ì…˜ 수명 중ì—
+ë³€ê²½ë  ìˆ˜ 있습니다. ì´ê²ƒì´ ëŸ°íƒ€ìž„ì— ì• í”Œë¦¬ì¼€ì´ì…˜ì— ì–´ë–¤ ì˜í–¥ì„ 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를
참조하십시오.</p>
- <p>{@link android.content.res.Configuration#navigationHidden} 구성
+ <p>{@link android.content.res.Configuration#navigationHidden} 구성
í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤. ì´ëŠ” íƒìƒ‰ 키가 숨겨져 있는지 여부를 나타냅니다.</p>
</td>
</tr>
@@ -749,13 +749,13 @@ android.content.res.Configuration#keyboardHidden}ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤. ì´ í•„
</td>
<td>
<ul class="nolist">
- <li>{@code nonav}: ê¸°ê¸°ì— í„°ì¹˜ 스í¬ë¦°ì„ 제외하고 다른 íƒìƒ‰ 기능ì´
+ <li>{@code nonav}: ê¸°ê¸°ì— í„°ì¹˜ 스í¬ë¦°ì„ 제외하고 다른 íƒìƒ‰ 기능ì´
없습니다.</li>
<li>{@code dpad}: ê¸°ê¸°ì— íƒìƒ‰ìš© ë°©í–¥ 패드(d-pad)ê°€ 있습니다.</li>
<li>{@code trackball}: ê¸°ê¸°ì— íƒìƒ‰ìš© íŠ¸ëž™ë³¼ì´ ìžˆìŠµë‹ˆë‹¤.</li>
<li>{@code wheel}: ê¸°ê¸°ì— íƒìƒ‰ìš© ë°©í–¥ íœ ì´ ìžˆìŠµë‹ˆë‹¤.</li>
</ul>
- <p>{@link android.content.res.Configuration#navigation} 구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
+ <p>{@link android.content.res.Configuration#navigation} 구성 í•„ë“œë„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
ì´ëŠ” 사용 가능한 íƒìƒ‰ ë©”ì„œë“œì˜ ìœ í˜•ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.</p>
</td>
</tr>
@@ -792,11 +792,11 @@ orientation" described above.</p>
<p class="note"><strong>참고:</strong> ì¼ë¶€ 구성 한정ìžëŠ” Android
-1.0 ì´í›„부터 추가ë˜ì—ˆìœ¼ë¯€ë¡œ 모든 Android ë²„ì „ì´ ëª¨ë“  한정ìžë¥¼ ì§€ì›í•˜ëŠ” ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. 새로운 한정ìžë¥¼ 사용하면 암시ì ìœ¼ë¡œ
-í”Œëž«í¼ ë²„ì „ 한정ìžë„ 추가하므로 구형 기기가 ì´ë¥¼ 무시하게 ë©ë‹ˆë‹¤. 예를 들어
-<code>w600dp</code> 한정ìžë¥¼ 사용하면 ìžë™ì ìœ¼ë¡œ <code>v13</code> 한정ìžë¥¼ í¬í•¨í•©ë‹ˆë‹¤.
-사용 가능한 너비 한정ìžê°€ API 레벨 13부터 새로 ë„ìž…ë˜ì—ˆê¸° 때문입니다. 문제를 ì• ì´ˆì— í”¼í•˜ë ¤ë©´, í•­ìƒ
-기본 리소스를 한 세트 í¬í•¨í•˜ì„¸ìš”(<em>í•œì •ìž ì—†ëŠ”</em> 리소스 한 세트). ìžì„¸í•œ 정보는
+1.0 ì´í›„부터 추가ë˜ì—ˆìœ¼ë¯€ë¡œ 모든 Android ë²„ì „ì´ ëª¨ë“  한정ìžë¥¼ ì§€ì›í•˜ëŠ” ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. 새로운 한정ìžë¥¼ 사용하면 암시ì ìœ¼ë¡œ
+í”Œëž«í¼ ë²„ì „ 한정ìžë„ 추가하므로 구형 기기가 ì´ë¥¼ 무시하게 ë©ë‹ˆë‹¤. 예를 들어
+<code>w600dp</code> 한정ìžë¥¼ 사용하면 ìžë™ì ìœ¼ë¡œ <code>v13</code> 한정ìžë¥¼ í¬í•¨í•©ë‹ˆë‹¤.
+사용 가능한 너비 한정ìžê°€ API 레벨 13부터 새로 ë„ìž…ë˜ì—ˆê¸° 때문입니다. 문제를 ì• ì´ˆì— í”¼í•˜ë ¤ë©´, í•­ìƒ
+기본 리소스를 한 세트 í¬í•¨í•˜ì„¸ìš”(<em>í•œì •ìž ì—†ëŠ”</em> 리소스 한 세트). ìžì„¸í•œ 정보는
<a href="#Compatibility">리소스와 ì—°ê´€ëœ ìµœì„ ì˜ ê¸°ê¸° 호환성 제공
</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
@@ -808,7 +808,7 @@ orientation" described above.</p>
<ul>
<li>한 가지 리소스 ì„¸íŠ¸ì— ì—¬ëŸ¬ ê°œì˜ í•œì •ìžë¥¼ 사용할 수 있으며, ì´ë¥¼ 대시로 구분하면 ë©ë‹ˆë‹¤. 예를 들어,
-<code>drawable-en-rUS-land</code>는 ìˆ˜í‰ ë°©í–¥ì˜
+<code>drawable-en-rUS-land</code>는 ìˆ˜í‰ ë°©í–¥ì˜
US-English ê¸°ê¸°ì— ì ìš©í•©ë‹ˆë‹¤.</li>
<li>한정ìžëŠ” <a href="#table2">표2</a>ì— ë‚˜ì—´ëœ ìˆœì„œë¥¼ ë”°ë¼ì•¼ 합니다. 예:
@@ -817,25 +817,25 @@ US-English ê¸°ê¸°ì— ì ìš©í•©ë‹ˆë‹¤.</li>
<li>맞는 배열: <code>drawable-port-hdpi/</code></li>
</ul>
</li>
- <li>대체 리소스 디렉터리는 ì¤‘ì²©ë  ìˆ˜ 없습니다. 예를 들어,
+ <li>대체 리소스 디렉터리는 ì¤‘ì²©ë  ìˆ˜ 없습니다. 예를 들어,
<code>res/drawable/drawable-en/</code>는 ìžˆì„ ìˆ˜ 없습니다.</li>
- <li>ê°’ì€ ëŒ€ì†Œë¬¸ìžë¥¼ 구분하지 않습니다. 리소스 컴파ì¼ëŸ¬ê°€ 처리 ì „ì— ë””ë ‰í„°ë¦¬ ì´ë¦„ì„
-소문ìžë¡œ 바꿔 대소문ìžë¥¼ 구분하지 않는
+ <li>ê°’ì€ ëŒ€ì†Œë¬¸ìžë¥¼ 구분하지 않습니다. 리소스 컴파ì¼ëŸ¬ê°€ 처리 ì „ì— ë””ë ‰í„°ë¦¬ ì´ë¦„ì„
+소문ìžë¡œ 바꿔 대소문ìžë¥¼ 구분하지 않는
íŒŒì¼ ì‹œìŠ¤í…œì—서 문제를 ì¼ìœ¼í‚¤ì§€ 않ë„ë¡ ë°©ì§€í•©ë‹ˆë‹¤. ì´ë¦„ì— ëŒ€ë¬¸ìžê°€ 있는 ê²ƒì€ ì˜¤ë¡œì§€ ê°€ë…ì„±ì„ í–¥ìƒí•˜ê¸° 위해서입니다.</li>
- <li>ê° í•œì •ìž ìœ í˜•ë§ˆë‹¤ 한 ê°œì˜ ê°’ë§Œ ì§€ì›ë©ë‹ˆë‹¤. 예를 들어, 스페ì¸ê³¼ 프랑스ì—
-ê°™ì€ ë“œë¡œì–´ë¸” 파ì¼ì„ ì‚¬ìš©í•˜ê³ ìž í•˜ëŠ” 경우 디렉터리 ì´ë¦„ì´
-<code>drawable-rES-rFR/</code>ì´ë©´ <em>안 ë©ë‹ˆë‹¤.</em> 대신
+ <li>ê° í•œì •ìž ìœ í˜•ë§ˆë‹¤ 한 ê°œì˜ ê°’ë§Œ ì§€ì›ë©ë‹ˆë‹¤. 예를 들어, 스페ì¸ê³¼ 프랑스ì—
+ê°™ì€ ë“œë¡œì–´ë¸” 파ì¼ì„ ì‚¬ìš©í•˜ê³ ìž í•˜ëŠ” 경우 디렉터리 ì´ë¦„ì´
+<code>drawable-rES-rFR/</code>ì´ë©´ <em>안 ë©ë‹ˆë‹¤.</em> 대신
<code>drawable-rES/</code>와 <code>drawable-rFR/</code> ê°™ì´ ì ì ˆí•œ 파ì¼ì´ í¬í•¨ëœ ë‘ ê°œì˜ ë¦¬ì†ŒìŠ¤ 디렉터리가 필요합니다.
-그러나 ë‘ ìœ„ì¹˜ì—서 ê°™ì€ íŒŒì¼ì„ 실제로 복제할 필요는 없습니다. 대신
+그러나 ë‘ ìœ„ì¹˜ì—서 ê°™ì€ íŒŒì¼ì„ 실제로 복제할 필요는 없습니다. 대신
ë¦¬ì†ŒìŠ¤ì— ë³„ëª…ì„ ë§Œë“¤ë©´ ë©ë‹ˆë‹¤. ì•„ëž˜ì˜ <a href="#AliasResources">별명 리소스
ìƒì„±</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</li>
</ul>
-<p>ì´ëŸ° 한정ìžë¡œ ì´ë¦„ì„ ì§€ì€ ë””ë ‰í„°ë¦¬ì— ëŒ€ì²´ 리소스를 저장하고 나면
+<p>ì´ëŸ° 한정ìžë¡œ ì´ë¦„ì„ ì§€ì€ ë””ë ‰í„°ë¦¬ì— ëŒ€ì²´ 리소스를 저장하고 나면
Androidê°€ 현재 기기 êµ¬ì„±ì— ê¸°ì´ˆí•˜ì—¬ 애플리케ì´ì…˜ì— ìžë™ìœ¼ë¡œ 리소스를 ì ìš©í•©ë‹ˆë‹¤.
리소스가 ìš”ì²­ë  ë•Œë§ˆë‹¤ Androidê°€ 요청한 리소스 파ì¼ì´ 들어있는
-대체 리소스 디렉터리를 확ì¸í•˜ê³ , 그런 ë‹¤ìŒ <a href="#BestMatch">가장 잘 ì¼ì¹˜í•˜ëŠ”
-리소스를 찾습니다</a>(아래ì—서 논함). 특정 기기 êµ¬ì„±ì— ì¼ì¹˜í•˜ëŠ” 대체 리소스가 없는 경우,
+대체 리소스 디렉터리를 확ì¸í•˜ê³ , 그런 ë‹¤ìŒ <a href="#BestMatch">가장 잘 ì¼ì¹˜í•˜ëŠ”
+리소스를 찾습니다</a>(아래ì—서 논함). 특정 기기 êµ¬ì„±ì— ì¼ì¹˜í•˜ëŠ” 대체 리소스가 없는 경우,
Android는 ìƒì‘하는 기본 리소스(구성 한정ìžë¥¼ í¬í•¨í•˜ì§€ 않는
특정 리소스 ìœ í˜•ì— ëŒ€í•œ 리소스 세트
)를 사용합니다.</p>
@@ -844,31 +844,31 @@ Android는 ìƒì‘하는 기본 리소스(구성 한정ìžë¥¼ í¬í•¨í•˜ì§€ 않는
<h3 id="AliasResources">별명 리소스 ìƒì„±</h3>
-<p>ì–´ë–¤ 리소스를 하나 ì´ìƒì˜ 기기 구성ì—서 ì‚¬ìš©í•˜ê³ ìž í•˜ëŠ” 경우(그렇지만
-ì´ë¥¼ 기본 리소스를 제공하는 ê²ƒì€ ì›ì¹˜ 않는 경우), ê°™ì€ ë¦¬ì†ŒìŠ¤ë¥¼ 하나 ì´ìƒì˜ 대체 리소스 디렉터리ì—
-넣지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. 대신, 기본 리소스 ë””ë ‰í„°ë¦¬ì— ì €ìž¥ëœ ë¦¬ì†ŒìŠ¤ì— ëŒ€í•´ 별명 ì—­í• ì„ í•˜ëŠ”
-대체
+<p>ì–´ë–¤ 리소스를 하나 ì´ìƒì˜ 기기 구성ì—서 ì‚¬ìš©í•˜ê³ ìž í•˜ëŠ” 경우(그렇지만
+ì´ë¥¼ 기본 리소스를 제공하는 ê²ƒì€ ì›ì¹˜ 않는 경우), ê°™ì€ ë¦¬ì†ŒìŠ¤ë¥¼ 하나 ì´ìƒì˜ 대체 리소스 디렉터리ì—
+넣지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. 대신, 기본 리소스 ë””ë ‰í„°ë¦¬ì— ì €ìž¥ëœ ë¦¬ì†ŒìŠ¤ì— ëŒ€í•´ 별명 ì—­í• ì„ í•˜ëŠ”
+대체
리소스를 만들면 ë©ë‹ˆë‹¤(ê²½ìš°ì— ë”°ë¼).</p>
-<p class="note"><strong>참고:</strong> 모든 리소스가 다른 ë¦¬ì†ŒìŠ¤ì— ëŒ€í•œ
-ë³„ëª…ì„ ìƒì„±í•  수 있는 ë©”ì»¤ë‹ˆì¦˜ì„ ì œê³µí•˜ëŠ” ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. 특히, {@code xml/} ë””ë ‰í„°ë¦¬ì˜ ì• ë‹ˆë©”ì´ì…˜, 메뉴, ì›ì‹œ ë° ê¸°íƒ€ 지정ë˜ì§€ 않ì€
+<p class="note"><strong>참고:</strong> 모든 리소스가 다른 ë¦¬ì†ŒìŠ¤ì— ëŒ€í•œ
+ë³„ëª…ì„ ìƒì„±í•  수 있는 ë©”ì»¤ë‹ˆì¦˜ì„ ì œê³µí•˜ëŠ” ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. 특히, {@code xml/} ë””ë ‰í„°ë¦¬ì˜ ì• ë‹ˆë©”ì´ì…˜, 메뉴, ì›ì‹œ ë° ê¸°íƒ€ 지정ë˜ì§€ 않ì€
리소스는 ì´ ê¸°ëŠ¥ì„ ì œê³µí•˜ì§€ 않습니다.</p>
-<p>예를 들어, 애플리케ì´ì…˜ ì•„ì´ì½˜ {@code icon.png}ì´ ìžˆê³  서로 다른 로케ì¼ì—서 ì´ ì•„ì´ì½˜ì˜ 고유 버전ì´
-필요한 경우가 있습니다. 그러나 ë‘ ë¡œì¼€ì¼, English-Canadianê³¼ French-Canadianì€ ê°™ì€ ë²„ì „ì„
-사용해야 합니다. ê°™ì€ ì´ë¯¸ì§€ë¥¼ English-Canadianê³¼ French-Canadian 양쪽
-모ë‘ì— ëŒ€í•œ 리소스 ë””ë ‰í„°ë¦¬ì— ë³µì‚¬í•´ì•¼ 한다고 ìƒê°í•  수 있지만, 실ì€
+<p>예를 들어, 애플리케ì´ì…˜ ì•„ì´ì½˜ {@code icon.png}ì´ ìžˆê³  서로 다른 로케ì¼ì—서 ì´ ì•„ì´ì½˜ì˜ 고유 버전ì´
+필요한 경우가 있습니다. 그러나 ë‘ ë¡œì¼€ì¼, English-Canadianê³¼ French-Canadianì€ ê°™ì€ ë²„ì „ì„
+사용해야 합니다. ê°™ì€ ì´ë¯¸ì§€ë¥¼ English-Canadianê³¼ French-Canadian 양쪽
+모ë‘ì— ëŒ€í•œ 리소스 ë””ë ‰í„°ë¦¬ì— ë³µì‚¬í•´ì•¼ 한다고 ìƒê°í•  수 있지만, 실ì€
그렇지 않습니다. 대신, ë‘ ë¡œì¼€ì¼ì—서 사용하는 ì´ë¯¸ì§€ë¥¼ {@code icon_ca.png}(
-{@code icon.png} ì´ì™¸ì— ì–´ë–¤ ì´ë¦„ì´ë“  가능)로 저장하고 ì´ë¥¼
+{@code icon.png} ì´ì™¸ì— ì–´ë–¤ ì´ë¦„ì´ë“  가능)로 저장하고 ì´ë¥¼
기본 {@code res/drawable/} ë””ë ‰í„°ë¦¬ì— ë„£ìœ¼ë©´ ë©ë‹ˆë‹¤. 그런 ë‹¤ìŒ {@code icon.xml} 파ì¼ì„ {@code icon_ca.png}
리소스를 참조하는 {@code
-res/drawable-en-rCA/} ë° {@code res/drawable-fr-rCA/}로 ìƒì„±í•©ë‹ˆë‹¤. ì´ë•Œ, {@code &lt;bitmap&gt;} 요소를 사용하면 ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면
+res/drawable-en-rCA/} ë° {@code res/drawable-fr-rCA/}로 ìƒì„±í•©ë‹ˆë‹¤. ì´ë•Œ, {@code &lt;bitmap&gt;} 요소를 사용하면 ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면
PNG íŒŒì¼ ë²„ì „ 하나와 ê·¸ê²ƒì„ ê°€ë¦¬í‚¤ëŠ” ìž‘ì€ XML íŒŒì¼ ë‘ ê°œë§Œ 저장할 수 있습니다. (XML íŒŒì¼ ì˜ˆì‹œëŠ” 아래와 같습니다.)</p>
<h4>드로어블</h4>
-<p>기존 ë“œë¡œì–´ë¸”ì— ë³„ëª…ì„ ìƒì„±í•˜ë ¤ë©´ {@code &lt;bitmap&gt;} 요소를 사용합니다.
+<p>기존 ë“œë¡œì–´ë¸”ì— ë³„ëª…ì„ ìƒì„±í•˜ë ¤ë©´ {@code &lt;bitmap&gt;} 요소를 사용합니다.
예를 들면 다ìŒê³¼ 같습니다.</p>
<pre>
@@ -896,13 +896,13 @@ R.drawable.icon_ca} 리소스({@code res/drawable/}ì— ì €ìž¥ë¨)ì˜ ë³„ëª…ì¸ ë
</pre>
<p>파ì¼ì„ {@code main.xml}로 저장하면, {@code R.layout.main}으로 참조할 수 있지만 실제로는 {@code R.layout.main_ltr}
- ë¦¬ì†ŒìŠ¤ì˜ ë³„ëª…ì¸ ë¦¬ì†ŒìŠ¤ë¡œ
+ ë¦¬ì†ŒìŠ¤ì˜ ë³„ëª…ì¸ ë¦¬ì†ŒìŠ¤ë¡œ
컴파ì¼ë§ë©ë‹ˆë‹¤.</p>
<h4>문ìžì—´ ë° ê¸°íƒ€ 단순 ê°’</h4>
-<p>기존 문ìžì—´ì— ë³„ëª…ì„ ìƒì„±í•˜ë ¤ë©´ ì›í•˜ëŠ” 문ìžì—´ì˜ 리소스 ID를
+<p>기존 문ìžì—´ì— ë³„ëª…ì„ ìƒì„±í•˜ë ¤ë©´ ì›í•˜ëŠ” 문ìžì—´ì˜ 리소스 ID를
새 문ìžì—´ì˜ 값으로 사용하면 ë©ë‹ˆë‹¤. 예:</p>
<pre>
@@ -915,7 +915,7 @@ R.drawable.icon_ca} 리소스({@code res/drawable/}ì— ì €ìž¥ë¨)ì˜ ë³„ëª…ì¸ ë
<p>ì´ì œ {@code R.string.hi} 리소스는 {@code R.string.hello}ì˜ ë³„ëª…ìž…ë‹ˆë‹¤.</p>
-<p> <a href="{@docRoot}guide/topics/resources/more-resources.html">기타 단순 ê°’ë„</a> ê°™ì€ ë°©ì‹ìœ¼ë¡œ
+<p> <a href="{@docRoot}guide/topics/resources/more-resources.html">기타 단순 ê°’ë„</a> ê°™ì€ ë°©ì‹ìœ¼ë¡œ
ë™ìž‘합니다. 예를 들면 색ìƒì€ 다ìŒê³¼ 같습니다.</p>
<pre>
@@ -931,50 +931,50 @@ R.drawable.icon_ca} 리소스({@code res/drawable/}ì— ì €ìž¥ë¨)ì˜ ë³„ëª…ì¸ ë
<h2 id="Compatibility">리소스와 ì—°ê´€ëœ ìµœì„ ì˜ ê¸°ê¸° 호환성 제공</h2>
-<p>애플리케ì´ì…˜ì´ 여러 기기 êµ¬ì„±ì„ ì§€ì›í•˜ê²Œ 하려면,
+<p>애플리케ì´ì…˜ì´ 여러 기기 êµ¬ì„±ì„ ì§€ì›í•˜ê²Œ 하려면,
언제나 애플리케ì´ì…˜ì´ 사용하는 ê° ìœ í˜•ì˜ ë¦¬ì†ŒìŠ¤ì— ê¸°ë³¸ 리소스를 제공하는 ê²ƒì´ ë§¤ìš° 중요합니다.</p>
<p>예를 들어 애플리케ì´ì…˜ì´ 여러 언어를 ì§€ì›í•  경우, í•­ìƒ <em>언어 ë° ì§€ì—­ 한정ìž</em> <a href="#LocaleQualifier">ì—†ì´</a> {@code
-values/} 디렉터리(ì—¬ê¸°ì— ë¬¸ìžì—´ 저장)를 í¬í•¨ì‹œì¼œì•¼ 합니다. 그렇게 하지 않고 언어와 지역 한정ìžê°€ 있는 디렉터리ì—
-모든 문ìžì—´ì„ 넣으면, 문ìžì—´ì´ ì§€ì›í•˜ì§€ 않는 언어로 ì„¤ì •ëœ ê¸°ê¸°ì—서 애플리케ì´ì…˜ì„
-실행하면 ìž‘ë™ì´ 중단ë©ë‹ˆë‹¤. 그러나 기본
-{@code values/} 리소스를 제공하는 í•œì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì´ 제대로 실행ë©ë‹ˆë‹¤(사용ìžê°€ ì´í•´í•˜ì§€ 못하는
+values/} 디렉터리(ì—¬ê¸°ì— ë¬¸ìžì—´ 저장)를 í¬í•¨ì‹œì¼œì•¼ 합니다. 그렇게 하지 않고 언어와 지역 한정ìžê°€ 있는 디렉터리ì—
+모든 문ìžì—´ì„ 넣으면, 문ìžì—´ì´ ì§€ì›í•˜ì§€ 않는 언어로 ì„¤ì •ëœ ê¸°ê¸°ì—서 애플리케ì´ì…˜ì„
+실행하면 ìž‘ë™ì´ 중단ë©ë‹ˆë‹¤. 그러나 기본
+{@code values/} 리소스를 제공하는 í•œì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì´ 제대로 실행ë©ë‹ˆë‹¤(사용ìžê°€ ì´í•´í•˜ì§€ 못하는
언어로ë¼ë„ ìž‘ë™í•©ë‹ˆë‹¤. ìž‘ë™ ì¤‘ë‹¨ë³´ë‹¤ 낫습니다.)</p>
-<p>마찬가지로 화면 ë°©í–¥ì— ê¸°ì´ˆí•˜ì—¬ 여러 가지 ë ˆì´ì•„웃 리소스를 제공하는 경우
+<p>마찬가지로 화면 ë°©í–¥ì— ê¸°ì´ˆí•˜ì—¬ 여러 가지 ë ˆì´ì•„웃 리소스를 제공하는 경우
í•˜ë‚˜ì˜ ë°©í–¥ì„ ê¸°ë³¸ê°’ìœ¼ë¡œ ì„ íƒí•´ì•¼ 합니다. 예를 들어 가로 ë°©í–¥ì—는 {@code
-layout-land/}로, 세로 ë°©í–¥ì—는 {@code layout-port/}로 ë ˆì´ì•„웃 리소스를 제공하는 대신 하나를 기본으로 남겨ë‘십시오.
+layout-land/}로, 세로 ë°©í–¥ì—는 {@code layout-port/}로 ë ˆì´ì•„웃 리소스를 제공하는 대신 하나를 기본으로 남겨ë‘십시오.
가로 ë°©í–¥ì— {@code layout/}, 세로 ë°©í–¥ì— {@code layout-port/}와 ê°™ì€ ì‹ìœ¼ë¡œ 하면 ë©ë‹ˆë‹¤.</p>
-<p>애플리케ì´ì…˜ì´ 예ìƒì¹˜ 못한 구성ì—서 ì‹¤í–‰ë  ìˆ˜ ìžˆì„ ë¿ë§Œ 아니ë¼
-Androidì˜ ìƒˆ 버전ì—서 ì´ì „ 버전ì—서는 ì§€ì›í•˜ì§€ 않는 구성 한정ìžë¥¼ 추가할 ìˆ˜ë„ ìžˆìœ¼ë¯€ë¡œ,
-기본 리소스를 제공하는 ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤. 새 리소스 한정ìžë¥¼ 사용하지만,
+<p>애플리케ì´ì…˜ì´ 예ìƒì¹˜ 못한 구성ì—서 ì‹¤í–‰ë  ìˆ˜ ìžˆì„ ë¿ë§Œ 아니ë¼
+Androidì˜ ìƒˆ 버전ì—서 ì´ì „ 버전ì—서는 ì§€ì›í•˜ì§€ 않는 구성 한정ìžë¥¼ 추가할 ìˆ˜ë„ ìžˆìœ¼ë¯€ë¡œ,
+기본 리소스를 제공하는 ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤. 새 리소스 한정ìžë¥¼ 사용하지만,
Android ì´ì „ 버전과 코드 í˜¸í™˜ì„±ì€ ìœ ì§€í•œ 경우, ê·¸ 후 Android ì´ì „ 버전ì´
-애플리케ì´ì…˜ì„ 실행하면 새로운 한정ìžë¡œ ì´ë¦„ì„ ì§€ì •í•œ 리소스를 사용할 수 없으므로 기본 리소스를 제공하지 않으면
+애플리케ì´ì…˜ì„ 실행하면 새로운 한정ìžë¡œ ì´ë¦„ì„ ì§€ì •í•œ 리소스를 사용할 수 없으므로 기본 리소스를 제공하지 않으면
애플리케ì´ì…˜ ìž‘ë™ì´ 중단ë©ë‹ˆë‹¤. 예를 들어, <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
-minSdkVersion}</a>ì´ 4로 설정ë˜ê³  <a href="#NightQualifier">야간 모드</a>(API 레벨 8ì—서 ì¶”ê°€ëœ {@code night} ë˜ëŠ” {@code notnight})를 사용하는 모든 드로어블 리소스를 한정할 경우, API 레벨 4 기기는
-드로어블 ë¦¬ì†ŒìŠ¤ì— ì•¡ì„¸ìŠ¤í•˜ì§€ 못하고 ì‚¬ìš©ì´ ì¤‘ë‹¨ë©ë‹ˆë‹¤. ì´ ê²½ìš°,
-{@code notnight}를 기본 리소스로 제공하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 그래야 해당 한정ìžë¥¼ 배제하고
+minSdkVersion}</a>ì´ 4로 설정ë˜ê³  <a href="#NightQualifier">야간 모드</a>(API 레벨 8ì—서 ì¶”ê°€ëœ {@code night} ë˜ëŠ” {@code notnight})를 사용하는 모든 드로어블 리소스를 한정할 경우, API 레벨 4 기기는
+드로어블 ë¦¬ì†ŒìŠ¤ì— ì•¡ì„¸ìŠ¤í•˜ì§€ 못하고 ì‚¬ìš©ì´ ì¤‘ë‹¨ë©ë‹ˆë‹¤. ì´ ê²½ìš°,
+{@code notnight}를 기본 리소스로 제공하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 그래야 해당 한정ìžë¥¼ 배제하고
드로어블 리소스가 {@code drawable/} ë˜ëŠ” {@code drawable-night/}ì´ ë©ë‹ˆë‹¤.</p>
-<p>그러므로 ìµœì„ ì˜ ê¸°ê¸° í˜¸í™˜ì„±ì„ ì œê³µí•˜ë ¤ë©´ 언제나
-애플리케ì´ì…˜ì—서 반드시 제대로 수행해야 하는 ë¦¬ì†ŒìŠ¤ì— ëŒ€í•´ 기본 리소스를 제공하십시오. 그런 ë‹¤ìŒ êµ¬ì„± 한정ìžë¥¼ 사용하여
+<p>그러므로 ìµœì„ ì˜ ê¸°ê¸° í˜¸í™˜ì„±ì„ ì œê³µí•˜ë ¤ë©´ 언제나
+애플리케ì´ì…˜ì—서 반드시 제대로 수행해야 하는 ë¦¬ì†ŒìŠ¤ì— ëŒ€í•´ 기본 리소스를 제공하십시오. 그런 ë‹¤ìŒ êµ¬ì„± 한정ìžë¥¼ 사용하여
특정 기기 êµ¬ì„±ì— ëŒ€í•´ 대체 리소스를 ìƒì„±í•˜ë©´ ë©ë‹ˆë‹¤.</p>
-<p>ì´ ê·œì¹™ì—는 한 가지 예외가 있습니다. 애플리케ì´ì…˜ì˜ <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> ì´ 4 ì´ìƒì´ë©´
-<a href="#DensityQualifier">화면 ë°€ë„</a> 한정ìžë¡œ 대체 드로어블 리소스를 제공할 때 기본 드로어블
-리소스가 <em>ì—†ì–´ë„ ë©ë‹ˆë‹¤</em>. 기본
-드로어블 리소스가 ì—†ë”ë¼ë„ Androidê°€ 대체 화면 화질 중ì—서 가장 잘 맞는 리소스를 찾고
-í•„ìš”ì— ë”°ë¼ ë¹„íŠ¸ë§µì„ ì¶•ì†Œí•©ë‹ˆë‹¤. 그러나 모든 ìœ í˜•ì˜ ê¸°ê¸°ì—서 최ìƒì˜ ê²½í—˜ì„ ì œê³µí•˜ë ¤ë©´,
+<p>ì´ ê·œì¹™ì—는 한 가지 예외가 있습니다. 애플리케ì´ì…˜ì˜ <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> ì´ 4 ì´ìƒì´ë©´
+<a href="#DensityQualifier">화면 ë°€ë„</a> 한정ìžë¡œ 대체 드로어블 리소스를 제공할 때 기본 드로어블
+리소스가 <em>ì—†ì–´ë„ ë©ë‹ˆë‹¤</em>. 기본
+드로어블 리소스가 ì—†ë”ë¼ë„ Androidê°€ 대체 화면 화질 중ì—서 가장 잘 맞는 리소스를 찾고
+í•„ìš”ì— ë”°ë¼ ë¹„íŠ¸ë§µì„ ì¶•ì†Œí•©ë‹ˆë‹¤. 그러나 모든 ìœ í˜•ì˜ ê¸°ê¸°ì—서 최ìƒì˜ ê²½í—˜ì„ ì œê³µí•˜ë ¤ë©´,
모든 세 가지 ìœ í˜•ì˜ ë°€ë„ì— ëŒ€í•´ 대체 ë“œë¡œì–´ë¸”ì„ ì œê³µí•´ì•¼ 합니다.</p>
<h2 id="BestMatch">Androidê°€ 가장 잘 ì¼ì¹˜í•˜ëŠ” 리소스를 찾는 방법</h2>
-<p>개발ìžê°€ ìžì‹ ì´ 대체를 제공하는 리소스를 요청하면 Androidê°€ ëŸ°íƒ€ìž„ì— ì–´ëŠ ëŒ€ì²´ 리소스를
-사용할지 현대 기기 êµ¬ì„±ì— ë”°ë¼ ì—¬ëŸ¬ 가지로 ì„ íƒí•©ë‹ˆë‹¤. Androidê°€
-대체 리소스를 ì„ íƒí•˜ëŠ” ë°©ë²•ì„ ë³´ì—¬ì£¼ê¸° 위해 ë‹¤ìŒ ë“œë¡œì–´ë¸” ë””ë ‰í„°ë¦¬ì— ê°ê° ê°™ì€ ì´ë¯¸ì§€ì˜
+<p>개발ìžê°€ ìžì‹ ì´ 대체를 제공하는 리소스를 요청하면 Androidê°€ ëŸ°íƒ€ìž„ì— ì–´ëŠ ëŒ€ì²´ 리소스를
+사용할지 현대 기기 êµ¬ì„±ì— ë”°ë¼ ì—¬ëŸ¬ 가지로 ì„ íƒí•©ë‹ˆë‹¤. Androidê°€
+대체 리소스를 ì„ íƒí•˜ëŠ” ë°©ë²•ì„ ë³´ì—¬ì£¼ê¸° 위해 ë‹¤ìŒ ë“œë¡œì–´ë¸” ë””ë ‰í„°ë¦¬ì— ê°ê° ê°™ì€ ì´ë¯¸ì§€ì˜
서로 다른 ë²„ì „ì´ ë“¤ì–´ìžˆë‹¤ê³  가정하겠습니다.</p>
<pre class="classic no-pretty-print">
@@ -997,16 +997,16 @@ drawable-port-notouch-12key/
기본 í…스트 ìž…ë ¥ 메서드 = <code>12key</code>
</p>
-<p>Android는 기기 êµ¬ì„±ì„ ì´ìš© 가능한 대체 리소스와 비êµí•˜ì—¬,
+<p>Android는 기기 êµ¬ì„±ì„ ì´ìš© 가능한 대체 리소스와 비êµí•˜ì—¬,
{@code drawable-en-port}ì—서 ë“œë¡œì–´ë¸”ì„ ì„ íƒí•©ë‹ˆë‹¤.</p>
-<p>ì‹œìŠ¤í…œì€ ë‹¤ìŒê³¼ ê°™ì€ ë…¼ë¦¬ì— ë”°ë¼
+<p>ì‹œìŠ¤í…œì€ ë‹¤ìŒê³¼ ê°™ì€ ë…¼ë¦¬ì— ë”°ë¼
ì–´ëŠ ë¦¬ì†ŒìŠ¤ë¥¼ 사용할지 결정합니다.</p>
<div class="figure" style="width:371px">
<img src="{@docRoot}images/resources/res-selection-flowchart.png" alt="" height="471" />
-<p class="img-caption"><strong>그림 2.</strong> Androidê°€ 가장 잘 ì¼ì¹˜í•˜ëŠ” 리소스를 찾는 ë°©ë²•ì„ ë‚˜íƒ€ë‚¸
+<p class="img-caption"><strong>그림 2.</strong> Androidê°€ 가장 잘 ì¼ì¹˜í•˜ëŠ” 리소스를 찾는 ë°©ë²•ì„ ë‚˜íƒ€ë‚¸
í름ë„입니다.</p>
</div>
@@ -1024,23 +1024,23 @@ drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/
</pre>
-<p class="note"><strong>예외:</strong> 화면 픽셀 ë°€ë„ í•œì •ìž í•˜ë‚˜ë§Œì€ ì¶©ëŒì„ ì´ìœ ë¡œ 제거ë˜ì§€
-않습니다. ê¸°ê¸°ì˜ í™”ë©´ ë°€ë„ê°€ hdpië¼ë„,
+<p class="note"><strong>예외:</strong> 화면 픽셀 ë°€ë„ í•œì •ìž í•˜ë‚˜ë§Œì€ ì¶©ëŒì„ ì´ìœ ë¡œ 제거ë˜ì§€
+않습니다. ê¸°ê¸°ì˜ í™”ë©´ ë°€ë„ê°€ hdpië¼ë„,
현 시ì ì—서는 모든 화면 ë°€ë„ê°€ ì¼ì¹˜ë¡œ 간주ë˜ë¯€ë¡œ <code>drawable-port-ldpi/</code>를 제거하지 않습니다.
- ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
+ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
ì§€ì›</a> 문서ì—서 ì´ìš©í•˜ì‹¤ 수 있습니다.</p></li>
<li>목ë¡(<a href="#table2">표2</a>)ì—서 (ê·¸ 다ìŒìœ¼ë¡œ) ìš°ì„  순위가 가장 ë†’ì€ í•œì •ìžë¥¼ ì„ íƒí•©ë‹ˆë‹¤
(MCC부터 시작하여 아래로 내려가십시오). </li>
<li>리소스 디렉터리 ì¤‘ì— ì´ í•œì •ìžë¥¼ í¬í•¨í•œ ê²ƒì´ ìžˆë‚˜ìš”? </li>
<ul>
- <li>없는 경우, 2단계로 ëŒì•„ê°€ ë‹¤ìŒ í•œì •ìžë¥¼ 살펴보십시오 (ì´ ì˜ˆì‹œì˜ ê²½ìš°
+ <li>없는 경우, 2단계로 ëŒì•„ê°€ ë‹¤ìŒ í•œì •ìžë¥¼ 살펴보십시오 (ì´ ì˜ˆì‹œì˜ ê²½ìš°
언어 한정ìžì— ë„달할 때까지 ë‹µì€ "없습니다"입니다).</li>
<li>있는 경우, 4단계로 ê³„ì† ì§„í–‰í•©ë‹ˆë‹¤.</li>
</ul>
</li>
- <li>ì´ í•œì •ìžë¥¼ í¬í•¨í•˜ì§€ 않는 디렉터리를 제거합니다. ì´ ì˜ˆì‹œì—서는 시스템ì´
+ <li>ì´ í•œì •ìžë¥¼ í¬í•¨í•˜ì§€ 않는 디렉터리를 제거합니다. ì´ ì˜ˆì‹œì—서는 시스템ì´
언어 한정ìžë¥¼ í¬í•¨í•˜ì§€ 않는 디렉터리를 ëª¨ë‘ ì œê±°í•©ë‹ˆë‹¤.</li>
<pre class="classic no-pretty-print">
<strike>drawable/</strike>
@@ -1050,15 +1050,15 @@ drawable-en-notouch-12key/
<strike>drawable-port-ldpi/</strike>
<strike>drawable-port-notouch-12key/</strike>
</pre>
-<p class="note"><strong>예외:</strong> ë¬¸ì œì˜ í•œì •ìžê°€ 화면 픽셀 ë°€ë„ë¼ë©´,
-Android는 기기 화면 ë°€ë„와 가장 ê°€ê¹ê²Œ ì¼ì¹˜í•˜ëŠ” ì˜µì…˜ì„ ì„ íƒí•©ë‹ˆë‹¤.
+<p class="note"><strong>예외:</strong> ë¬¸ì œì˜ í•œì •ìžê°€ 화면 픽셀 ë°€ë„ë¼ë©´,
+Android는 기기 화면 ë°€ë„와 가장 ê°€ê¹ê²Œ ì¼ì¹˜í•˜ëŠ” ì˜µì…˜ì„ ì„ íƒí•©ë‹ˆë‹¤.
ì¼ë°˜ì ìœ¼ë¡œ, Android는 ìž‘ì€ ì›ë³¸ ì´ë¯¸ì§€ë¥¼ 확대하는 것보다
-í° ì›ë³¸ ì´ë¯¸ì§€ë¥¼ 축소하는 ê²ƒì„ ì„ í˜¸í•©ë‹ˆë‹¤. <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
+í° ì›ë³¸ ì´ë¯¸ì§€ë¥¼ 축소하는 ê²ƒì„ ì„ í˜¸í•©ë‹ˆë‹¤. <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
ì§€ì›</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
</li>
- <li>뒤로 ëŒì•„ê°€ 디렉터리가 한 개만 ë‚¨ì„ ë•Œê¹Œì§€ 2, 3 ë° 4단계를 반복합니다. ì´ ì˜ˆì‹œì—서, ì¼ì¹˜í•˜ëŠ” ê²ƒì´ ìžˆëŠ” ë‹¤ìŒ í•œì •ìžëŠ”
-화면 방향입니다.
+ <li>뒤로 ëŒì•„ê°€ 디렉터리가 한 개만 ë‚¨ì„ ë•Œê¹Œì§€ 2, 3 ë° 4단계를 반복합니다. ì´ ì˜ˆì‹œì—서, ì¼ì¹˜í•˜ëŠ” ê²ƒì´ ìžˆëŠ” ë‹¤ìŒ í•œì •ìžëŠ”
+화면 방향입니다.
그러므로 화면 ë°©í–¥ì„ ì§€ì •í•˜ì§€ 않는 리소스가 제거ë©ë‹ˆë‹¤.
<pre class="classic no-pretty-print">
<strike>drawable-en/</strike>
@@ -1069,26 +1069,26 @@ drawable-en-port/
</li>
</ol>
-<p>ì´ ì ˆì°¨ëŠ” ìš”ì²­ëœ ê° ë¦¬ì†ŒìŠ¤ì— ëŒ€í•´ 실행하지만, ì‹œìŠ¤í…œì´ ëª‡ 가지 ì¸¡ë©´ì„ ì¶”ê°€ë¡œ
-최ì í™”합니다. 그러한 최ì í™” 가운ë°ì—는 ì¼ë‹¨ 기기 êµ¬ì„±ì„ ì•Œê²Œ ë˜ê³  나면 절대 ì¼ì¹˜í•  ê°€ëŠ¥ì„±ì´ ì—†ëŠ”
-대체 리소스를 ì‹œìŠ¤í…œì´ ì œê±°í•  수 있다는 ì ë„ 있습니다. 예를 들어, 구성 언어가
-ì˜ì–´("en")ì´ê³  ì˜ì–´ ì´ì™¸ì˜ 다른 언어 한정ìžë¡œ ì„¤ì •ëœ ë¦¬ì†ŒìŠ¤ 디렉터리는
+<p>ì´ ì ˆì°¨ëŠ” ìš”ì²­ëœ ê° ë¦¬ì†ŒìŠ¤ì— ëŒ€í•´ 실행하지만, ì‹œìŠ¤í…œì´ ëª‡ 가지 ì¸¡ë©´ì„ ì¶”ê°€ë¡œ
+최ì í™”합니다. 그러한 최ì í™” 가운ë°ì—는 ì¼ë‹¨ 기기 êµ¬ì„±ì„ ì•Œê²Œ ë˜ê³  나면 절대 ì¼ì¹˜í•  ê°€ëŠ¥ì„±ì´ ì—†ëŠ”
+대체 리소스를 ì‹œìŠ¤í…œì´ ì œê±°í•  수 있다는 ì ë„ 있습니다. 예를 들어, 구성 언어가
+ì˜ì–´("en")ì´ê³  ì˜ì–´ ì´ì™¸ì˜ 다른 언어 한정ìžë¡œ ì„¤ì •ëœ ë¦¬ì†ŒìŠ¤ 디렉터리는
절대 확ì¸ëœ 리소스 í’€ì— í¬í•¨ë˜ì§€ 않습니다(
언어 한정ìžê°€ í¬í•¨ë˜ì§€ <em>않는</em> 리소스 디렉터리는 여전히 í¬í•¨ë©ë‹ˆë‹¤).</p>
<p>화면 í¬ê¸° 한정ìžì— 기초하여 리소스를 ì„ íƒí•  때 ì‹œìŠ¤í…œì€ ê°€ìž¥ 잘 ì¼ì¹˜í•˜ëŠ” 리소스가 없다면
현재 화면보다 ìž‘ì€ í™”ë©´ì— ì§€ì •ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 사용합니다
-(예를 들어, í° í™”ë©´ì€ í•„ìš”ì— ë”°ë¼ ì¼ë°˜ í¬ê¸° 화면 리소스를 사용합니다). 그러나
+(예를 들어, í° í™”ë©´ì€ í•„ìš”ì— ë”°ë¼ ì¼ë°˜ í¬ê¸° 화면 리소스를 사용합니다). 그러나
ì´ìš© 가능한 리소스가 현재 화면보다 <em>í°</em> 리소스ë¿ì´ë¼ë©´, 시스템ì€
ì´ë¥¼ 사용하지 <strong>않고</strong>, 기기 êµ¬ì„±ì— ì¼ì¹˜í•˜ëŠ” 리소스가 없으면 애플리케ì´ì…˜ ì‚¬ìš©ì´ ì¤‘ë‹¨ë©ë‹ˆë‹¤
(예를 들어 모든 ë ˆì´ì•„웃 리소스가 {@code xlarge} 한정ìžì— 태그ë˜ì–´ 있지만,
기기가 보통 í¬ê¸° í™”ë©´ì¼ ê²½ìš°).</p>
-<p class="note"><strong>참고:</strong> 한정ìžì˜ <em>ìš°ì„  순위</em>(<a href="#table2">표 2</a> 참조)ê°€ 기기와 정확하게 ì¼ì¹˜í•˜ëŠ”
-í•œì •ìž ìˆ˜ë³´ë‹¤ ë” ì¤‘ìš”í•©ë‹ˆë‹¤. 예를 들어 ìœ„ì˜ 4단계ì—서
+<p class="note"><strong>참고:</strong> 한정ìžì˜ <em>ìš°ì„  순위</em>(<a href="#table2">표 2</a> 참조)ê°€ 기기와 정확하게 ì¼ì¹˜í•˜ëŠ”
+í•œì •ìž ìˆ˜ë³´ë‹¤ ë” ì¤‘ìš”í•©ë‹ˆë‹¤. 예를 들어 ìœ„ì˜ 4단계ì—서
목ë¡ì˜ 마지막 ì„ íƒì— 기기와 정확히 ì¼ì¹˜í•˜ëŠ” 한정ìžê°€ 세 ê°œ í¬í•¨ë˜ì–´ 있지만(ë°©í–¥, 터치 스í¬ë¦°
-유형 ë° ìž…ë ¥ 메서드), <code>drawable-en</code>ì—는 ì¼ì¹˜í•˜ëŠ” 매개변수가
-하나ë¿ìž…니다(언어). 다만, 언어가 ì´ëŸ¬í•œ 다른 한정ìžë³´ë‹¤ ìš°ì„  순위가 높기 때문ì—
+유형 ë° ìž…ë ¥ 메서드), <code>drawable-en</code>ì—는 ì¼ì¹˜í•˜ëŠ” 매개변수가
+하나ë¿ìž…니다(언어). 다만, 언어가 ì´ëŸ¬í•œ 다른 한정ìžë³´ë‹¤ ìš°ì„  순위가 높기 때문ì—
<code>drawable-port-notouch-12key</code>는 탈ë½í•©ë‹ˆë‹¤.</p>
<p>애플리케ì´ì…˜ì—서 리소스를 사용하는 ê²ƒì— ëŒ€í•œ ìžì„¸í•œ 정보는 <a href="accessing-resources.html">리소스 액세스</a>로 ê³„ì† ì§„í–‰í•˜ì—¬ 알아보십시오.</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/ko/guide/topics/resources/runtime-changes.jd
index a5e7f5bbad88..720601fb999a 100644
--- a/docs/html-intl/intl/ko/guide/topics/resources/runtime-changes.jd
+++ b/docs/html-intl/intl/ko/guide/topics/resources/runtime-changes.jd
@@ -22,41 +22,41 @@ page.tags=액티비티, 수명 주기
</div>
<p>몇몇 기기 êµ¬ì„±ì€ ëŸ°íƒ€ìž„ ì¤‘ì— ë³€ê²½ë  ìˆ˜ 있습니다
-(예: 화면 ë°©í–¥, 키보드 가용성 ë° ì–¸ì–´ 등). 그러한 ë³€ê²½ì´ ì¼ì–´ë‚˜ëŠ” 경우,
-Android는 실행 중ì¸
+(예: 화면 ë°©í–¥, 키보드 가용성 ë° ì–¸ì–´ 등). 그러한 ë³€ê²½ì´ ì¼ì–´ë‚˜ëŠ” 경우,
+Android는 실행 중ì¸
{@link android.app.Activity}를 다시 시작합니다({@link android.app.Activity#onDestroy()} 호출, ë’¤ì´ì–´ {@link
-android.app.Activity#onCreate(Bundle) onCreate()} 호출). ì´ëŸ° ë™ìž‘ì€ ì—¬ëŸ¬ë¶„ì´ ì œê³µí•œ
+android.app.Activity#onCreate(Bundle) onCreate()} 호출). ì´ëŸ° ë™ìž‘ì€ ì—¬ëŸ¬ë¶„ì´ ì œê³µí•œ
대체 리소스로 애플리케ì´ì…˜ì„ ìžë™ìœ¼ë¡œ 다시 ë¡œë”©í•¨ìœ¼ë¡œì¨ ìƒˆë¡œìš´ 기기 êµ¬ì„±ì— ì• í”Œë¦¬ì¼€ì´ì…˜ì´ ì ì‘하는 ê²ƒì„ ë•ë„ë¡
설계ë˜ì—ˆìŠµë‹ˆë‹¤(예: 다양한 화면 방향과 í¬ê¸°ì— 대한 다양한 ë ˆì´ì•„웃).</p>
-<p>다시 ì‹œìž‘ì„ ì ì ˆížˆ 처리하려면 액티비티가 ì •ìƒì ì¸
+<p>다시 ì‹œìž‘ì„ ì ì ˆížˆ 처리하려면 액티비티가 ì •ìƒì ì¸
<a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티
-수명 주기</a>를 통해 ì´ì „ ìƒíƒœë¥¼ ë³µì›í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤. 여기ì—서 Android는
-{@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()}를 호출한 다ìŒì— 액티비티를 소멸시켜
-애플리케ì´ì…˜ ìƒíƒœì— 대한 ë°ì´í„°ë¥¼ 저장할 수 있습니다. 그러면
+수명 주기</a>를 통해 ì´ì „ ìƒíƒœë¥¼ ë³µì›í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤. 여기ì—서 Android는
+{@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()}를 호출한 다ìŒì— 액티비티를 소멸시켜
+애플리케ì´ì…˜ ìƒíƒœì— 대한 ë°ì´í„°ë¥¼ 저장할 수 있습니다. 그러면
{@link android.app.Activity#onCreate(Bundle) onCreate()} ë˜ëŠ” {@link
android.app.Activity#onRestoreInstanceState(Bundle) onRestoreInstanceState()} ì¤‘ì— ìƒíƒœë¥¼ ë³µì›í•  수 있습니다.</p>
-<p>애플리케ì´ì…˜ì´ 애플리케ì´ì…˜ ìƒíƒœë¥¼ 그대로 유지한 채 스스로 다시 시작할 수 있는지 시험해 보려면,
-구성 ë³€ê²½ì„ ì¼ìœ¼ì¼œë³´ì•„야 합니다(예를 들어 화면 ë°©í–¥ 변경 등). ì´ëŠ” 애플리케ì´ì…˜ì—서 여러 가지 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ”
-ë™ì•ˆ 해봅니다. 애플리케ì´ì…˜ì´ 언제든 ì‚¬ìš©ìž ë°ì´í„°ë‚˜ ìƒíƒœë¥¼ ì†ì‹¤í•˜ì§€ 않고
-다시 시작할 수 있어야 합니다. 그래야 구성 변경과 ê°™ì€ ì´ë²¤íŠ¸ë¥¼ 처리할 수 있기 때문입니다. 그렇지 않으면
-사용ìžê°€ 걸려오는 전화를 ë°›ì€ ë‹¤ìŒ í•œì°¸ í›„ì— ì• í”Œë¦¬ì¼€ì´ì…˜ìœ¼ë¡œ ëŒì•„오면 애플리케ì´ì…˜ 프로세스가 ì´ë¯¸
+<p>애플리케ì´ì…˜ì´ 애플리케ì´ì…˜ ìƒíƒœë¥¼ 그대로 유지한 채 스스로 다시 시작할 수 있는지 시험해 보려면,
+구성 ë³€ê²½ì„ ì¼ìœ¼ì¼œë³´ì•„야 합니다(예를 들어 화면 ë°©í–¥ 변경 등). ì´ëŠ” 애플리케ì´ì…˜ì—서 여러 가지 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ”
+ë™ì•ˆ 해봅니다. 애플리케ì´ì…˜ì´ 언제든 ì‚¬ìš©ìž ë°ì´í„°ë‚˜ ìƒíƒœë¥¼ ì†ì‹¤í•˜ì§€ 않고
+다시 시작할 수 있어야 합니다. 그래야 구성 변경과 ê°™ì€ ì´ë²¤íŠ¸ë¥¼ 처리할 수 있기 때문입니다. 그렇지 않으면
+사용ìžê°€ 걸려오는 전화를 ë°›ì€ ë‹¤ìŒ í•œì°¸ í›„ì— ì• í”Œë¦¬ì¼€ì´ì…˜ìœ¼ë¡œ ëŒì•„오면 애플리케ì´ì…˜ 프로세스가 ì´ë¯¸
소멸ë˜ì–´ ìžˆì„ ìˆ˜ 있습니다. 액티비티 ìƒíƒœë¥¼ ë³µì›í•˜ëŠ” ë°©ë²•ì„ ë°°ìš°ë ¤ë©´, <a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티 수명 주기</a>ì— ê´€í•´ ì½ì–´ë³´ì‹­ì‹œì˜¤.</p>
-<p>하지만, 애플리케ì´ì…˜ì„ 다시 시작하고 ìƒë‹¹ëŸ‰ì˜ ë°ì´í„°ë¥¼ ë³µì›í•˜ë©´ ë¹„ìš©ë„ ë§Žì´ ë“¤ê³ 
-불량한 ì‚¬ìš©ìž í™˜ê²½ì´ ë§Œë“¤ì–´ì§€ëŠ” ìƒí™©ì— ì§ë©´í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 그러한 ìƒí™©ì´ë¼ë©´,
+<p>하지만, 애플리케ì´ì…˜ì„ 다시 시작하고 ìƒë‹¹ëŸ‰ì˜ ë°ì´í„°ë¥¼ ë³µì›í•˜ë©´ ë¹„ìš©ë„ ë§Žì´ ë“¤ê³ 
+불량한 ì‚¬ìš©ìž í™˜ê²½ì´ ë§Œë“¤ì–´ì§€ëŠ” ìƒí™©ì— ì§ë©´í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 그러한 ìƒí™©ì´ë¼ë©´,
ë‘ ê°€ì§€ 다른 ì˜µì…˜ì´ ìžˆìŠµë‹ˆë‹¤.</p>
<ol type="a">
<li><a href="#RetainingAnObject">구성 변경 ì¤‘ì— ê°ì²´ 보존하기</a>
- <p>êµ¬ì„±ì´ ë³€ê²½ë˜ëŠ” ì¤‘ì— ì•¡í‹°ë¹„í‹°ê°€ 다시 ì‹œìž‘ë  ìˆ˜ 있게 허용하ë˜, ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ì— ìƒíƒœ
+ <p>êµ¬ì„±ì´ ë³€ê²½ë˜ëŠ” ì¤‘ì— ì•¡í‹°ë¹„í‹°ê°€ 다시 ì‹œìž‘ë  ìˆ˜ 있게 허용하ë˜, ì•¡í‹°ë¹„í‹°ì˜ ìƒˆ ì¸ìŠ¤í„´ìŠ¤ì— ìƒíƒœ
저장 ê°ì²´ë¥¼ 넣습니다.</p>
</li>
<li><a href="#HandlingTheChange">구성 변경 ì§ì ‘ 처리하기</a>
- <p>특정 구성 변경 ì¤‘ì— ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ë¥¼ 다시 시작하ë„ë¡ í•˜ì§€ 못하게 방지하ë˜,
-êµ¬ì„±ì´ ì‹¤ì œë¡œ 변경ë˜ë©´ ì½œë°±ì„ ìˆ˜ì‹ í•˜ë„ë¡ í•˜ì—¬ í•„ìš”ì— ë”°ë¼ ì•¡í‹°ë¹„í‹°ë¥¼ 수ë™ìœ¼ë¡œ ì—…ë°ì´íŠ¸í•  수
+ <p>특정 구성 변경 ì¤‘ì— ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ë¥¼ 다시 시작하ë„ë¡ í•˜ì§€ 못하게 방지하ë˜,
+êµ¬ì„±ì´ ì‹¤ì œë¡œ 변경ë˜ë©´ ì½œë°±ì„ ìˆ˜ì‹ í•˜ë„ë¡ í•˜ì—¬ í•„ìš”ì— ë”°ë¼ ì•¡í‹°ë¹„í‹°ë¥¼ 수ë™ìœ¼ë¡œ ì—…ë°ì´íŠ¸í•  수
있ë„ë¡ í•©ë‹ˆë‹¤.</p>
</li>
</ol>
@@ -64,30 +64,30 @@ android.app.Activity#onRestoreInstanceState(Bundle) onRestoreInstanceState()} ì¤
<h2 id="RetainingAnObject">구성 변경 ì¤‘ì— ê°ì²´ 보존하기</h2>
-<p>액티비티를 다시 시작하려면 ë§Žì€ ìˆ˜ì˜ ë°ì´í„° 세트를 복구해야 하는 경우, ë„¤íŠ¸ì›Œí¬ ì—°ê²°ì„
-다시 설정하거나 다른 ì§‘ì•½ì  ìž‘ì—…ì„ ìˆ˜í–‰í•œ ë‹¤ìŒ ì™„ì „ížˆ 다시 시작하십시오.
-구성 변경 ë•Œë¬¸ì— ì‚¬ìš©ìž í™˜ê²½ì´ ëŠë ¤ì§ˆ 수 있습니다. ë˜í•œ, 액티비티 ìƒíƒœë¥¼ 완전히 ë³µì›í•˜ë ¤ë©´
+<p>액티비티를 다시 시작하려면 ë§Žì€ ìˆ˜ì˜ ë°ì´í„° 세트를 복구해야 하는 경우, ë„¤íŠ¸ì›Œí¬ ì—°ê²°ì„
+다시 설정하거나 다른 ì§‘ì•½ì  ìž‘ì—…ì„ ìˆ˜í–‰í•œ ë‹¤ìŒ ì™„ì „ížˆ 다시 시작하십시오.
+구성 변경 ë•Œë¬¸ì— ì‚¬ìš©ìž í™˜ê²½ì´ ëŠë ¤ì§ˆ 수 있습니다. ë˜í•œ, 액티비티 ìƒíƒœë¥¼ 완전히 ë³µì›í•˜ë ¤ë©´
{@link android.os.Bundle}ì„ ì‚¬ìš©í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ê²ƒì€ ì‹œìŠ¤í…œì´ ê°œë°œìž ëŒ€ì‹  {@link
-android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} 콜백으로 저장해ë‘는 것입니다. ì´ê²ƒì€ 대형 ê°ì²´(예: 비트맵)를 ë‹´ë„ë¡
-ë””ìžì¸ëœ ê²ƒì´ ì•„ë‹ˆë©° ì´ ì•ˆì˜ ë°ì´í„°ëŠ” 반드시 ì§ë ¬í™”했다가 다시 ì—­ì§ë ¬í™”해야 합니다. ì´ë ‡ê²Œ 하면
-메모리를 아주 ë§Žì´ ì†Œëª¨í•  수 있으며 구성 ë³€ê²½ì´ ëŠë ¤ì§ˆ 수 있습니다. ì´ì™€ ê°™ì€ ìƒí™©ì—서는
+android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} 콜백으로 저장해ë‘는 것입니다. ì´ê²ƒì€ 대형 ê°ì²´(예: 비트맵)를 ë‹´ë„ë¡
+ë””ìžì¸ëœ ê²ƒì´ ì•„ë‹ˆë©° ì´ ì•ˆì˜ ë°ì´í„°ëŠ” 반드시 ì§ë ¬í™”했다가 다시 ì—­ì§ë ¬í™”해야 합니다. ì´ë ‡ê²Œ 하면
+메모리를 아주 ë§Žì´ ì†Œëª¨í•  수 있으며 구성 ë³€ê²½ì´ ëŠë ¤ì§ˆ 수 있습니다. ì´ì™€ ê°™ì€ ìƒí™©ì—서는
액티비티를 다시 초기화해야 한다는 ë¶€ë‹´ì„ í•´ê²°í•˜ê¸° 위해 액티비티가 구성 변경으로 ì¸í•´ 다시 시작ë˜ì—ˆì„ 때 {@link
-android.app.Fragment}를 보존하면 ë©ë‹ˆë‹¤. ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ì—는
+android.app.Fragment}를 보존하면 ë©ë‹ˆë‹¤. ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ì—는
ë³´ì¡´í•˜ê³ ìž í•˜ëŠ” ìƒíƒœ 저장 ê°ì²´ì— 대한 참조를 ë‹´ì„ ìˆ˜ 있습니다.</p>
-<p>Android ì‹œìŠ¤í…œì´ êµ¬ì„± 변경으로 ì¸í•˜ì—¬ 액티비티를 종료시킬 때, 액티비티ì—서 보존하기로 표시해둔
-프래그먼트는 소멸ë˜ì§€ 않습니다. 그러한 프래그먼트를 ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•˜ë©´
+<p>Android ì‹œìŠ¤í…œì´ êµ¬ì„± 변경으로 ì¸í•˜ì—¬ 액티비티를 종료시킬 때, 액티비티ì—서 보존하기로 표시해둔
+프래그먼트는 소멸ë˜ì§€ 않습니다. 그러한 프래그먼트를 ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•˜ë©´
ìƒíƒœ 저장 ê°ì²´ë¥¼ ë³´ì¡´í•  수 있습니다.</p>
<p>런타임 구성 변경 ì¤‘ì— ìƒíƒœ 저장 ê°ì²´ë¥¼ í”„ëž˜ê·¸ë¨¼íŠ¸ì— ë³´ì¡´í•´ë‘는 ë°©ë²•ì€ ë‹¤ìŒê³¼ 같습니다.</p>
<ol>
- <li>{@link android.app.Fragment} í´ëž˜ìŠ¤ë¥¼ 확장하고 ìƒíƒœ 저장
+ <li>{@link android.app.Fragment} í´ëž˜ìŠ¤ë¥¼ 확장하고 ìƒíƒœ 저장
ê°ì²´ì— 참조를 선언합니다.</li>
<li>프래그먼트가 ìƒì„±ë˜ë©´ {@link android.app.Fragment#setRetainInstance(boolean)}를 호출합니다.
</li>
<li>해당 프래그먼트를 ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•©ë‹ˆë‹¤.</li>
- <li>{@link android.app.FragmentManager}를 사용하여 액티비티가 다시 ì‹œìž‘ë  ë•Œ 프래그먼트를
+ <li>{@link android.app.FragmentManager}를 사용하여 액티비티가 다시 ì‹œìž‘ë  ë•Œ 프래그먼트를
검색합니다.</li>
</ol>
@@ -117,16 +117,16 @@ public class RetainedFragment extends Fragment {
}
</pre>
-<p class="caution"><strong>주ì˜:</strong> ì–´ëŠ ê°ì²´ë“  저장할 수 있지만,
+<p class="caution"><strong>주ì˜:</strong> ì–´ëŠ ê°ì²´ë“  저장할 수 있지만,
{@link android.app.Activity}ì— ë¬¶ì—¬ 있는 ê°ì²´ëŠ” 절대로 전달하면 안 ë©ë‹ˆë‹¤. 예를 들어 {@link
android.graphics.drawable.Drawable}, {@link android.widget.Adapter}, {@link android.view.View}
- ë˜ëŠ” {@link android.content.Context}와 ì—°ê´€ëœ ê¸°íƒ€ 모든 ê°ì²´ê°€ ì´ì— 해당ë©ë‹ˆë‹¤. ì´ëŸ° ê²ƒì„ ì „ë‹¬í•˜ë©´,
-ì›ëž˜ 액티비티 ì¸ìŠ¤í„´ìŠ¤ì˜ ëª¨ë“  보기와 리소스를 몽땅 누출시킵니다. (리소스 누출ì´ëž€
-애플리케ì´ì…˜ì´ ë¦¬ì†ŒìŠ¤ì— ëŒ€í•œ ë³´ìœ ê¶Œì„ ìœ ì§€í•˜ê³  있어 가비지 ìˆ˜ì§‘ì˜ ëŒ€ìƒì´ ë  ìˆ˜ 없고, ë”°ë¼ì„œ 엄청난 ì–‘ì˜ ë©”ëª¨ë¦¬ê°€
+ ë˜ëŠ” {@link android.content.Context}와 ì—°ê´€ëœ ê¸°íƒ€ 모든 ê°ì²´ê°€ ì´ì— 해당ë©ë‹ˆë‹¤. ì´ëŸ° ê²ƒì„ ì „ë‹¬í•˜ë©´,
+ì›ëž˜ 액티비티 ì¸ìŠ¤í„´ìŠ¤ì˜ ëª¨ë“  보기와 리소스를 몽땅 누출시킵니다. (리소스 누출ì´ëž€
+애플리케ì´ì…˜ì´ ë¦¬ì†ŒìŠ¤ì— ëŒ€í•œ ë³´ìœ ê¶Œì„ ìœ ì§€í•˜ê³  있어 가비지 ìˆ˜ì§‘ì˜ ëŒ€ìƒì´ ë  ìˆ˜ 없고, ë”°ë¼ì„œ 엄청난 ì–‘ì˜ ë©”ëª¨ë¦¬ê°€
ì†ì‹¤ëœë‹¤ëŠ” 뜻입니다.)</p>
-<p>그런 ë‹¤ìŒ {@link android.app.FragmentManager}를 사용하여 프래그먼트를 ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•©ë‹ˆë‹¤.
-프래그먼트ì—서 ë°ì´í„° ê°ì²´ë¥¼ 가져오려면 런타임 구성 변경 ì¤‘ì— ì•¡í‹°ë¹„í‹°ê°€ 다시 ì‹œìž‘ë  ë•Œ
+<p>그런 ë‹¤ìŒ {@link android.app.FragmentManager}를 사용하여 프래그먼트를 ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•©ë‹ˆë‹¤.
+프래그먼트ì—서 ë°ì´í„° ê°ì²´ë¥¼ 가져오려면 런타임 구성 변경 ì¤‘ì— ì•¡í‹°ë¹„í‹°ê°€ 다시 ì‹œìž‘ë  ë•Œ
가져오면 ë©ë‹ˆë‹¤. 예를 들어, 액티비티를 다ìŒê³¼ ê°™ì´ ì •ì˜í•©ë‹ˆë‹¤.</p>
<pre>
@@ -165,10 +165,10 @@ public class MyActivity extends Activity {
}
</pre>
-<p>ì´ ì˜ˆì‹œì—서 {@link android.app.Activity#onCreate(Bundle) onCreate()}는 프래그먼트를 추가하거나
-ì´ì— 대한 참조를 ë³µì›í•©ë‹ˆë‹¤. {@link android.app.Activity#onCreate(Bundle) onCreate()} ë˜í•œ
-프래그먼트 ì¸ìŠ¤í„´ìŠ¤ ì•ˆì— ìƒíƒœ 저장 ê°ì²´ë¥¼ 저장합니다.
-{@link android.app.Activity#onDestroy() onDestroy()}는 ë³´ì¡´ëœ
+<p>ì´ ì˜ˆì‹œì—서 {@link android.app.Activity#onCreate(Bundle) onCreate()}는 프래그먼트를 추가하거나
+ì´ì— 대한 참조를 ë³µì›í•©ë‹ˆë‹¤. {@link android.app.Activity#onCreate(Bundle) onCreate()} ë˜í•œ
+프래그먼트 ì¸ìŠ¤í„´ìŠ¤ ì•ˆì— ìƒíƒœ 저장 ê°ì²´ë¥¼ 저장합니다.
+{@link android.app.Activity#onDestroy() onDestroy()}는 ë³´ì¡´ëœ
프래그먼트 ì¸ìŠ¤í„´ìŠ¤ ë‚´ë¶€ì˜ ìƒíƒœ 저장 ê°ì²´ë¥¼ ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤.</p>
@@ -177,26 +177,26 @@ public class MyActivity extends Activity {
<h2 id="HandlingTheChange">구성 변경 ì§ì ‘ 처리하기</h2>
-<p>애플리케ì´ì…˜ì´ 특정 구성 변경 ì¤‘ì— ë¦¬ì†ŒìŠ¤ë¥¼ ì—…ë°ì´íŠ¸í•˜ì§€ ì•Šì•„ë„ ë˜ê³ 
-그와 <em>ë™ì‹œì—</em> 성능 한계가 있어 액티비티 다시 ì‹œìž‘ì„ í”¼í•´ì•¼ 하는 경우,
-액티비티가 구성 ë³€ê²½ì„ ì•Œì•„ì„œ 처리한다고 선언하면 ë©ë‹ˆë‹¤.
+<p>애플리케ì´ì…˜ì´ 특정 구성 변경 ì¤‘ì— ë¦¬ì†ŒìŠ¤ë¥¼ ì—…ë°ì´íŠ¸í•˜ì§€ ì•Šì•„ë„ ë˜ê³ 
+그와 <em>ë™ì‹œì—</em> 성능 한계가 있어 액티비티 다시 ì‹œìž‘ì„ í”¼í•´ì•¼ 하는 경우,
+액티비티가 구성 ë³€ê²½ì„ ì•Œì•„ì„œ 처리한다고 선언하면 ë©ë‹ˆë‹¤.
ì´ë ‡ê²Œ 하면 ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ë¥¼ 다시 시작하지 않ë„ë¡ ë°©ì§€í•  수 있습니다.</p>
-<p class="note"><strong>참고:</strong> 구성 ë³€ê²½ì„ ì§ì ‘ 처리하면 대체 리소스를 사용하는 것ì´
-훨씬 ë” ê¹Œë‹¤ë¡œì›Œì§ˆ 수 있습니다. ì‹œìŠ¤í…œì´ ê°œë°œìž ëŒ€ì‹  ìžë™ìœ¼ë¡œ ì´ë¥¼ ì ìš©í•´ì£¼ì§€ 않기
-때문입니다. ì´ ê¸°ë²•ì€ êµ¬ì„± 변경으로 ì¸í•œ ìž¬ì‹œìž‘ì„ ë°˜ë“œì‹œ 피해야만 하는 경우 ìµœí›„ì˜ ìˆ˜ë‹¨ìœ¼ë¡œì„œë§Œ
+<p class="note"><strong>참고:</strong> 구성 ë³€ê²½ì„ ì§ì ‘ 처리하면 대체 리소스를 사용하는 것ì´
+훨씬 ë” ê¹Œë‹¤ë¡œì›Œì§ˆ 수 있습니다. ì‹œìŠ¤í…œì´ ê°œë°œìž ëŒ€ì‹  ìžë™ìœ¼ë¡œ ì´ë¥¼ ì ìš©í•´ì£¼ì§€ 않기
+때문입니다. ì´ ê¸°ë²•ì€ êµ¬ì„± 변경으로 ì¸í•œ ìž¬ì‹œìž‘ì„ ë°˜ë“œì‹œ 피해야만 하는 경우 ìµœí›„ì˜ ìˆ˜ë‹¨ìœ¼ë¡œì„œë§Œ
고려해야 하며 ëŒ€ë¶€ë¶„ì˜ ì• í”Œë¦¬ì¼€ì´ì…˜ì—는 권장하지 않습니다.</p>
-<p>액티비티가 구성 ë³€ê²½ì„ ì§ì ‘ 처리한다고 선언하려면, 매니페스트 파ì¼ì˜ ì ì ˆí•œ <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 요소를 편집하여
+<p>액티비티가 구성 ë³€ê²½ì„ ì§ì ‘ 처리한다고 선언하려면, 매니페스트 파ì¼ì˜ ì ì ˆí•œ <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 요소를 편집하여
ì²˜ë¦¬í•˜ê³ ìž í•˜ëŠ” êµ¬ì„±ì„ ë‚˜íƒ€ë‚´ëŠ” ê°’ì´ ìžˆëŠ” <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
-android:configChanges}</a> ì†ì„±ì„ í¬í•¨í•˜ë„ë¡
+android:configChanges}</a> ì†ì„±ì„ í¬í•¨í•˜ë„ë¡
합니다. 가능한 ê°’ì€ <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
-android:configChanges}</a> ì†ì„±ì— 대한 관련 ë¬¸ì„œì— ëª©ë¡ìœ¼ë¡œ 나열ë˜ì–´ 있습니다(가장 보편ì ìœ¼ë¡œ 사용ë˜ëŠ” ê°’ì€ í™”ë©´ ë°©í–¥ì´ ë³€ê²½ë  ë•Œ 다시 ì‹œìž‘ì„ ë°©ì§€í•˜ëŠ” {@code "orientation"}ê³¼
+android:configChanges}</a> ì†ì„±ì— 대한 관련 ë¬¸ì„œì— ëª©ë¡ìœ¼ë¡œ 나열ë˜ì–´ 있습니다(가장 보편ì ìœ¼ë¡œ 사용ë˜ëŠ” ê°’ì€ í™”ë©´ ë°©í–¥ì´ ë³€ê²½ë  ë•Œ 다시 ì‹œìž‘ì„ ë°©ì§€í•˜ëŠ” {@code "orientation"}ê³¼
키보드 ê°€ìš©ì„±ì´ ë³€ê²½ë  ë•Œ 다시 ì‹œìž‘ì„ ë°©ì§€í•˜ëŠ” {@code "keyboardHidden"}
-입니다). ì´ ì†ì„±ì—는 여러 ê°œì˜ êµ¬ì„± ê°’ì„ ì„ ì–¸í•  수 있습니다. ê°ê°ì„
+입니다). ì´ ì†ì„±ì—는 여러 ê°œì˜ êµ¬ì„± ê°’ì„ ì„ ì–¸í•  수 있습니다. ê°ê°ì„
파ì´í”„ {@code |} 문ìžë¡œ 구분하면 ë©ë‹ˆë‹¤.</p>
-<p>예를 들어 ë‹¤ìŒ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ 코드는 화면 ë°©í–¥ 변경과 키보드 가용성 ë³€ê²½ì„ ë‘˜ 다
+<p>예를 들어 ë‹¤ìŒ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ 코드는 화면 ë°©í–¥ 변경과 키보드 가용성 ë³€ê²½ì„ ë‘˜ 다
처리하는 액티비티를 선언하는 것입니다.</p>
<pre>
@@ -205,29 +205,29 @@ android:configChanges}</a> ì†ì„±ì— 대한 관련 ë¬¸ì„œì— ëª©ë¡ìœ¼ë¡œ 나열
android:label="@string/app_name">
</pre>
-<p>ì´ì œ ì´ëŸ¬í•œ 구성 중 하나가 변경ë˜ì–´ë„ {@code MyActivity}는 다시 시작하지 않습니다.
+<p>ì´ì œ ì´ëŸ¬í•œ 구성 중 하나가 변경ë˜ì–´ë„ {@code MyActivity}는 다시 시작하지 않습니다.
그 대신, {@code MyActivity}가 {@link
-android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}ë¡œì˜ í˜¸ì¶œì„ ë°›ìŠµë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ”
-{@link android.content.res.Configuration} ê°ì²´ë¡œ 전달ë˜ë©°, ì´ëŠ” 새 기기 구성ì„
-나타냅니다. {@link android.content.res.Configuration}ì˜ í•„ë“œë¥¼ ì½ì–´ë³´ë©´
-새 êµ¬ì„±ì„ íŒë³„í•  수 있고 ì ì ˆí•œ ë³€ê²½ì„ í•  수 있습니다. 그러려면 ì¸í„°íŽ˜ì´ìŠ¤ì— ì‚¬ìš©ëœ ë¦¬ì†ŒìŠ¤ë¥¼
-ì—…ë°ì´íŠ¸í•˜ë©´ ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œê°€
-호출ë˜ë©´, ì•¡í‹°ë¹„í‹°ì˜ {@link android.content.res.Resources} ê°ì²´ê°€
-ì—…ë°ì´íЏë˜ì–´ 새 êµ¬ì„±ì— ê¸°ë°˜í•œ 리소스를 반환하며, ë”°ë¼ì„œ ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ë¥¼ 다시 시작하지 않아ë„
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}ë¡œì˜ í˜¸ì¶œì„ ë°›ìŠµë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ”
+{@link android.content.res.Configuration} ê°ì²´ë¡œ 전달ë˜ë©°, ì´ëŠ” 새 기기 구성ì„
+나타냅니다. {@link android.content.res.Configuration}ì˜ í•„ë“œë¥¼ ì½ì–´ë³´ë©´
+새 êµ¬ì„±ì„ íŒë³„í•  수 있고 ì ì ˆí•œ ë³€ê²½ì„ í•  수 있습니다. 그러려면 ì¸í„°íŽ˜ì´ìŠ¤ì— ì‚¬ìš©ëœ ë¦¬ì†ŒìŠ¤ë¥¼
+ì—…ë°ì´íŠ¸í•˜ë©´ ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œê°€
+호출ë˜ë©´, ì•¡í‹°ë¹„í‹°ì˜ {@link android.content.res.Resources} ê°ì²´ê°€
+ì—…ë°ì´íЏë˜ì–´ 새 êµ¬ì„±ì— ê¸°ë°˜í•œ 리소스를 반환하며, ë”°ë¼ì„œ ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ë¥¼ 다시 시작하지 않아ë„
UIì˜ ìš”ì†Œë¥¼ ì†ì‰½ê²Œ 재설정할 수 있게 ë©ë‹ˆë‹¤.</p>
-<p class="caution"><strong>주ì˜:</strong> Android 3.2(API 레벨 13)부터 기기가
-세로 ë°©í–¥ ë° ê°€ë¡œ ë°©í–¥ 사ì´ë¥¼ 전환할 때 <strong>"화면 í¬ê¸°"ë„
-ê°™ì´ ë³€ê²½ë©ë‹ˆë‹¤</strong>. ë”°ë¼ì„œ,
+<p class="caution"><strong>주ì˜:</strong> Android 3.2(API 레벨 13)부터 기기가
+세로 ë°©í–¥ ë° ê°€ë¡œ ë°©í–¥ 사ì´ë¥¼ 전환할 때 <strong>"화면 í¬ê¸°"ë„
+ê°™ì´ ë³€ê²½ë©ë‹ˆë‹¤</strong>. ë”°ë¼ì„œ,
API 레벨 13 ì´ìƒ(<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> ë° <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>
ì†ì„±ì—서 선언한 ë‚´ìš©ì— ë”°ë¦„)ì„ ëŒ€ìƒìœ¼ë¡œ 개발하는 경우 ë°©í–¥ 변경으로 ì¸í•œ 런타임 다시 ì‹œìž‘ì„ ë°©ì§€í•˜ê³ ìž í•˜ë©´, {@code
"orientation"} ê°’ ì™¸ì— {@code "screenSize"} ê°’ë„ í¬í•¨ì‹œì¼œì•¼ 합니다. 다시 ë§í•´, {@code
-android:configChanges="orientation|screenSize"}를 선언해야 합니다. 하지만, 애플리케ì´ì…˜ì´ API 레벨 12 ì´í•˜ë¥¼
-대ìƒìœ¼ë¡œ 하는 경우ë¼ë©´ 애플리케ì´ì…˜ì´ 언제든 ì´ êµ¬ì„± ë³€ê²½ì„ ì•Œì•„ì„œ 처리합니다(ì´ êµ¬ì„± 변경ì€
+android:configChanges="orientation|screenSize"}를 선언해야 합니다. 하지만, 애플리케ì´ì…˜ì´ API 레벨 12 ì´í•˜ë¥¼
+대ìƒìœ¼ë¡œ 하는 경우ë¼ë©´ 애플리케ì´ì…˜ì´ 언제든 ì´ êµ¬ì„± ë³€ê²½ì„ ì•Œì•„ì„œ 처리합니다(ì´ êµ¬ì„± 변경ì€
액티비티를 다시 시작하지 않습니다. ì´ëŠ” Android 3.2 ì´ìƒ 기기ì—서 실행ë˜ëŠ” 경우ì—ë„ ë§ˆì°¬ê°€ì§€ìž…ë‹ˆë‹¤).</p>
<p>예를 들어, ë‹¤ìŒ {@link
-android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} 구현ì€
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} 구현ì€
현재 ê¸°ê¸°ì˜ ë°©í–¥ì„ í™•ì¸í•©ë‹ˆë‹¤.</p>
<pre>
@@ -244,36 +244,36 @@ public void onConfigurationChanged(Configuration newConfig) {
}
</pre>
-<p>{@link android.content.res.Configuration} ê°ì²´ëŠ” ë³€ê²½ëœ ê²ƒë§Œì´ ì•„ë‹ˆë¼ í˜„ìž¬
-구성 전체를 나타냅니다. ëŒ€ë¶€ë¶„ì˜ ê²½ìš°ì—는 êµ¬ì„±ì´ ì •í™•ížˆ 어떻게
-변경ë˜ì—ˆëŠ”ì§€ì—는 ê´€ì‹¬ì´ ì—†ê³  처리 ì¤‘ì¸ êµ¬ì„±ì— ëŒ€ì²´ 리소스를 제공하는 모든 리소스를 그저
+<p>{@link android.content.res.Configuration} ê°ì²´ëŠ” ë³€ê²½ëœ ê²ƒë§Œì´ ì•„ë‹ˆë¼ í˜„ìž¬
+구성 전체를 나타냅니다. ëŒ€ë¶€ë¶„ì˜ ê²½ìš°ì—는 êµ¬ì„±ì´ ì •í™•ížˆ 어떻게
+변경ë˜ì—ˆëŠ”ì§€ì—는 ê´€ì‹¬ì´ ì—†ê³  처리 ì¤‘ì¸ êµ¬ì„±ì— ëŒ€ì²´ 리소스를 제공하는 모든 리소스를 그저
재할당하기만 하면 ë©ë‹ˆë‹¤. 예를 들어 ì´ì œ {@link
android.content.res.Resources} ê°ì²´ê°€ ì—…ë°ì´íЏë˜ì—ˆìœ¼ë‹ˆ {@link android.widget.ImageView#setImageResource(int)
-setImageResource()}가 있는 모든
-{@link android.widget.ImageView}와
+setImageResource()}가 있는 모든
+{@link android.widget.ImageView}와
새 êµ¬ì„±ì— ëŒ€í•œ ì ì ˆí•œ 리소스를 재설정할 수 있습니다(<a href="providing-resources.html#AlternateResources">리소스 제공</a>ì— ì„¤ëª…ëœ ë°”ì™€ ê°™ìŒ).</p>
<p>{@link
-android.content.res.Configuration} 필드ì—서 가져온 ê°’ì´
-{@link android.content.res.Configuration} í´ëž˜ìФì—서 가져온 특정 ìƒìˆ˜ì™€ ì¼ì¹˜í•˜ëŠ” 정수ë¼ëŠ” ì ì„ 눈여겨 보십시오. ê° í•„ë“œì—
+android.content.res.Configuration} 필드ì—서 가져온 ê°’ì´
+{@link android.content.res.Configuration} í´ëž˜ìФì—서 가져온 특정 ìƒìˆ˜ì™€ ì¼ì¹˜í•˜ëŠ” 정수ë¼ëŠ” ì ì„ 눈여겨 보십시오. ê° í•„ë“œì—
ì–´ëŠ ìƒìˆ˜ë¥¼ ì¨ì•¼ í•˜ëŠ”ì§€ì— ëŒ€í•œ 관련 문서는 {@link
android.content.res.Configuration} ì°¸ì¡°ì— ìžˆëŠ” ì ì ˆí•œ 필드를 참조하십시오.</p>
-<p class="note"><strong>명심할 ì :</strong> 액티비티가 ì§ì ‘ 구성 ë³€ê²½ì„ ì²˜ë¦¬í•œë‹¤ê³  선언하는 경우,
-대체를 제공하는 모든 ìš”ì†Œì— ëŒ€í•´ 본ì¸ì´ ì§ì ‘ ì±…ìž„ì„ ì§€ê²Œ ë©ë‹ˆë‹¤. 액티비티가 ì§ì ‘
-ë°©í–¥ ë³€ê²½ì„ ì²˜ë¦¬í•˜ê³  가로 ë° ì„¸ë¡œ ë°©í–¥ 사ì´ì—서 바뀌어야 하는 ì´ë¯¸ì§€ê°€ 있는 경우,
+<p class="note"><strong>명심할 ì :</strong> 액티비티가 ì§ì ‘ 구성 ë³€ê²½ì„ ì²˜ë¦¬í•œë‹¤ê³  선언하는 경우,
+대체를 제공하는 모든 ìš”ì†Œì— ëŒ€í•´ 본ì¸ì´ ì§ì ‘ ì±…ìž„ì„ ì§€ê²Œ ë©ë‹ˆë‹¤. 액티비티가 ì§ì ‘
+ë°©í–¥ ë³€ê²½ì„ ì²˜ë¦¬í•˜ê³  가로 ë° ì„¸ë¡œ ë°©í–¥ 사ì´ì—서 바뀌어야 하는 ì´ë¯¸ì§€ê°€ 있는 경우,
ê° ë¦¬ì†ŒìŠ¤ë¥¼ ê° ìš”ì†Œì— ìž¬í• ë‹¹í•´ì•¼ 하며 ì´ë¥¼ {@link
android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} ì¤‘ì— ìˆ˜í–‰í•´ì•¼ 합니다.</p>
-<p>ì´ëŸ¬í•œ 구성 ë³€ê²½ì„ ê¸°ë°˜ìœ¼ë¡œ 애플리케ì´ì…˜ì„ ì—…ë°ì´íŠ¸í•˜ì§€ ì•Šì•„ë„ ë˜ëŠ” 경우,
+<p>ì´ëŸ¬í•œ 구성 ë³€ê²½ì„ ê¸°ë°˜ìœ¼ë¡œ 애플리케ì´ì…˜ì„ ì—…ë°ì´íŠ¸í•˜ì§€ ì•Šì•„ë„ ë˜ëŠ” 경우,
대신 {@link
-android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}를 구현하지 <em>않으면</em> ë©ë‹ˆë‹¤. ì´ëŸ°
-경우, 구성 변경 ì „ì— ì“°ì˜€ë˜ ë¦¬ì†ŒìŠ¤ê°€ ëª¨ë‘ ê·¸ëŒ€ë¡œ 사용ë˜ê³  ì•¡í‹°ë¹„í‹°ì˜ ë‹¤ì‹œ 시작만
-피한 ê²ƒì´ ë©ë‹ˆë‹¤. 그러나, 애플리케ì´ì…˜ì€
-언제든 종료ë˜ê³  ì´ì „ ìƒíƒœë¥¼ 그대로 유지한 채 다시 ì‹œìž‘ë  ìˆ˜ 있어야 합니다 ì •ìƒì ì¸ 액티비티
-수명 주기 ì¤‘ì— ìƒíƒœ 유지ì—ì„œì˜ íƒˆì¶œ 방안으로 ì´ ê¸°ë²•ì„ ê³ ë ¤í•´ì„œëŠ” 안 ë©ë‹ˆë‹¤. ì´ëŠ” 애플리케ì´ì…˜ì´
-다시 시작ë˜ì§€ 않ë„ë¡ ë°©ì§€í•  수 없는, 다른 구성 ë³€ê²½ë„ ì—¬ëŸ¿ 있어서ì¼ë¿ë§Œ 아니ë¼, 사용ìžê°€
-애플리케ì´ì…˜ì„ ë– ë‚¬ì„ ê²½ìš° 해당 사용ìžê°€ 다시 ëŒì•„오기 ì „ì— ì†Œë©¸ë˜ëŠ” 것과 ê°™ì€ ì´ë²¤íŠ¸ë¥¼ 처리해야 하기 때문ì´ë¼ëŠ”
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}를 구현하지 <em>않으면</em> ë©ë‹ˆë‹¤. ì´ëŸ°
+경우, 구성 변경 ì „ì— ì“°ì˜€ë˜ ë¦¬ì†ŒìŠ¤ê°€ ëª¨ë‘ ê·¸ëŒ€ë¡œ 사용ë˜ê³  ì•¡í‹°ë¹„í‹°ì˜ ë‹¤ì‹œ 시작만
+피한 ê²ƒì´ ë©ë‹ˆë‹¤. 그러나, 애플리케ì´ì…˜ì€
+언제든 종료ë˜ê³  ì´ì „ ìƒíƒœë¥¼ 그대로 유지한 채 다시 ì‹œìž‘ë  ìˆ˜ 있어야 합니다 ì •ìƒì ì¸ 액티비티
+수명 주기 ì¤‘ì— ìƒíƒœ 유지ì—ì„œì˜ íƒˆì¶œ 방안으로 ì´ ê¸°ë²•ì„ ê³ ë ¤í•´ì„œëŠ” 안 ë©ë‹ˆë‹¤. ì´ëŠ” 애플리케ì´ì…˜ì´
+다시 시작ë˜ì§€ 않ë„ë¡ ë°©ì§€í•  수 없는, 다른 구성 ë³€ê²½ë„ ì—¬ëŸ¿ 있어서ì¼ë¿ë§Œ 아니ë¼, 사용ìžê°€
+애플리케ì´ì…˜ì„ ë– ë‚¬ì„ ê²½ìš° 해당 사용ìžê°€ 다시 ëŒì•„오기 ì „ì— ì†Œë©¸ë˜ëŠ” 것과 ê°™ì€ ì´ë²¤íŠ¸ë¥¼ 처리해야 하기 때문ì´ë¼ëŠ”
ì´ìœ ë„ 있습니다.</p>
<p>액티비티 ë‚´ì—서 처리할 수 있는 구성 ë³€ê²½ì´ ë¬´ì—‡ì¸ì§€ì— 대한 ìžì„¸í•œ ë‚´ìš©ì€ <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/controls.jd b/docs/html-intl/intl/ko/guide/topics/ui/controls.jd
index bf873980beb6..9561ba05771b 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/controls.jd
@@ -7,11 +7,11 @@ parent.link=index.html
<img src="{@docRoot}images/ui/ui-controls.png" alt="" style="margin:0" />
</div>
-<p>ìž…ë ¥ 제어는 ì•±ì˜ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì— ìžˆëŠ” 대화형 구성 요소입니다.
+<p>ìž…ë ¥ 제어는 ì•±ì˜ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì— ìžˆëŠ” 대화형 구성 요소입니다.
Android는 버튼, í…스트 필드, 찾기 막대, 확ì¸ëž€, 확대 버튼, 전환 버튼 등과 ê°™ì´
UIì—서 사용할 수 있ë„ë¡ ë§¤ìš° 다양한 제어를 제공합니다.</p>
-<p>UIì— ìž…ë ¥ 제어를 추가하려면 단순히 <a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML ë ˆì´ì•„웃</a>ì— XML 요소를 하나 추가하기만 하면 ë©ë‹ˆë‹¤.
+<p>UIì— ìž…ë ¥ 제어를 추가하려면 단순히 <a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML ë ˆì´ì•„웃</a>ì— XML 요소를 하나 추가하기만 하면 ë©ë‹ˆë‹¤.
다ìŒì€ í…스트 필드와 ë²„íŠ¼ì´ ìžˆëŠ” ë ˆì´ì•„ì›ƒì„ ì˜ˆì‹œë¡œ 나타낸 것입니다.</p>
<pre style="clear:right">
@@ -33,16 +33,16 @@ UIì—서 사용할 수 있ë„ë¡ ë§¤ìš° 다양한 제어를 제공합니다.</p>
&lt;/LinearLayout>
</pre>
-<p>ê° ìž…ë ¥ 제어는 특정한 ìž…ë ¥ ì´ë²¤íŠ¸ë¥¼ ì§€ì›í•˜ë¯€ë¡œ, 사용ìžê°€ í…스트를 입력할 때 ë˜ëŠ” ë²„íŠ¼ì„ í„°ì¹˜í•  때
+<p>ê° ìž…ë ¥ 제어는 특정한 ìž…ë ¥ ì´ë²¤íŠ¸ë¥¼ ì§€ì›í•˜ë¯€ë¡œ, 사용ìžê°€ í…스트를 입력할 때 ë˜ëŠ” ë²„íŠ¼ì„ í„°ì¹˜í•  때
ì´ë²¤íŠ¸ë¥¼ 처리할 수 있게 í•´ì¤ë‹ˆë‹¤.</p>
<h2 id="CommonControls">보편ì ì¸ 제어</h2>
-<p>다ìŒì€ 앱ì—서 사용할 수 있는 몇 가지 보편ì ì¸ 제어를 목ë¡ìœ¼ë¡œ 나열한 것입니다. ë§í¬ë¥¼ ë”°ë¼ê°€ë©´ ê° ì œì–´ì— ëŒ€í•´
+<p>다ìŒì€ 앱ì—서 사용할 수 있는 몇 가지 보편ì ì¸ 제어를 목ë¡ìœ¼ë¡œ 나열한 것입니다. ë§í¬ë¥¼ ë”°ë¼ê°€ë©´ ê° ì œì–´ì— ëŒ€í•´
좀 ë” ìžì„¸ížˆ 알아볼 수 있습니다.</p>
<p class="note"><strong>참고:</strong> Android는 ì—¬ê¸°ì— ë‚˜ì—´ëœ ê²ƒë³´ë‹¤ 몇 가지 ë” ë§Žì€ ì œì–´ë¥¼ 제공합니다.
- ë” ë§Žì€ ë‚´ìš©ì„ ì•Œì•„ë³´ë ¤ë©´ {@link android.widget} 패키지를 íƒìƒ‰í•´ë³´ì‹­ì‹œì˜¤.
+ ë” ë§Žì€ ë‚´ìš©ì„ ì•Œì•„ë³´ë ¤ë©´ {@link android.widget} 패키지를 íƒìƒ‰í•´ë³´ì‹­ì‹œì˜¤.
ì•±ì— íŠ¹ì •í•œ ì¢…ë¥˜ì˜ ìž…ë ¥ 제어가 필요한 경우, ë‚˜ë¦„ì˜ <a href="{@docRoot}guide/topics/ui/custom-components.html">ì‚¬ìš©ìž ì§€ì • 구성 요소</a>를 ì§ì ‘ êµ¬ì¶•í•´ë„ ë©ë‹ˆë‹¤.</p>
<table>
@@ -69,7 +69,7 @@ UIì—서 사용할 수 있ë„ë¡ ë§¤ìš° 다양한 제어를 제공합니다.</p>
<tr>
<td><a href="controls/radiobutton.html">무선 버튼</a></td>
<td>확ì¸ëž€ê³¼ 비슷하지만, 예외가 있다면 그룹 ë‚´ì—서 하나만 ì„ íƒí•  수 있다는 ì ìž…니다.</td>
- <td>{@link android.widget.RadioGroup RadioGroup}
+ <td>{@link android.widget.RadioGroup RadioGroup}
<br>{@link android.widget.RadioButton RadioButton} </td>
</tr>
<tr>
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/ko/guide/topics/ui/declaring-layout.jd
index 78832368b222..97f9083d6a57 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/declaring-layout.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/declaring-layout.jd
@@ -34,14 +34,14 @@ page.tags=view,viewgroup
<h2>참고 항목</h2>
<ol>
- <li><a href="{@docRoot}training/basics/firstapp/building-ui.html">간단한 사용ìž
+ <li><a href="{@docRoot}training/basics/firstapp/building-ui.html">간단한 사용ìž
ì¸í„°íŽ˜ì´ìФ 구축</a></li> </div>
</div>
<p>ë ˆì´ì•„ì›ƒì€ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì— ëŒ€í•œ 시ê°ì  구조를 ì •ì˜í•©ë‹ˆë‹¤. 예컨대 <a href="{@docRoot}guide/components/activities.html">액티비티</a> ë˜ëŠ” <a href="{@docRoot}guide/topics/appwidgets/index.html">앱 위젯</a>ì— ëŒ€í•œ UIê°€ ì´ì— 해당ë©ë‹ˆë‹¤.
ë ˆì´ì•„ì›ƒì„ ì„ ì–¸í•˜ëŠ” ë°ì—는 다ìŒê³¼ ê°™ì€ ë‘ ê°€ì§€ ë°©ë²•ì´ ìžˆìŠµë‹ˆë‹¤.</p>
<ul>
-<li><strong>UI 요소를 XML로 ì„ ì–¸</strong>. Androidê°€ 위젯과 ë ˆì´ì•„웃 등과 ê°™ì´
+<li><strong>UI 요소를 XML로 ì„ ì–¸</strong>. Androidê°€ 위젯과 ë ˆì´ì•„웃 등과 ê°™ì´
보기 í´ëž˜ìŠ¤ì™€ 하위 í´ëž˜ìŠ¤ì— ìƒì‘하는 간단한 XML 어휘를 제공합니다.</li>
<li><strong>ëŸ°íƒ€ìž„ì— ë ˆì´ì•„웃 요소를 ì¸ìŠ¤í„´íŠ¸í™”</strong>. 애플리케ì´ì…˜ì´
í”„ë¡œê·¸ëž˜ë° ë°©ë²•ìœ¼ë¡œ 보기 ë° ViewGroupê°ì²´ë¥¼ 만들 수 있습니다(그리고 ê·¸ ì†ì„±ì„ ì¡°ìž‘í•˜ê¸°ë„ í•©ë‹ˆë‹¤). </li>
@@ -55,26 +55,26 @@ page.tags=view,viewgroup
<li><a href="{@docRoot}tools/sdk/eclipse-adt.html">Eclipseìš© ADT
플러그ì¸</a>ì´ XMLì˜ ë ˆì´ì•„웃 미리보기를 제공합니다. &mdash;
XML 파ì¼ì´ 열린 ìƒíƒœì—서 <strong>ë ˆì´ì•„웃</strong> íƒ­ì„ ì„ íƒí•˜ì‹­ì‹œì˜¤.</li>
- <li>ë˜í•œ,
-<a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer">계층 ë·°ì–´</a> ë„구로
-ë ˆì´ì•„웃 ë””ë²„ê¹…ë„ ì‹œë„í•´ 보아야 합니다.&mdash;ì´ê²ƒì€ ë ˆì´ì•„웃 ì†ì„± ê°’ì„ ë“œëŸ¬ë‚´ê³ ,
-ë‚´ë¶€ 여백/여백 표시기가 있는 와ì´ì–´í”„ë ˆìž„ì„ ê·¸ë¦¬ë©° 개발ìžê°€ ì—뮬레ì´í„° ë˜ëŠ” 기기ì—서 디버깅하는 ë™ì•ˆ
+ <li>ë˜í•œ,
+<a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer">계층 ë·°ì–´</a> ë„구로
+ë ˆì´ì•„웃 ë””ë²„ê¹…ë„ ì‹œë„í•´ 보아야 합니다.&mdash;ì´ê²ƒì€ ë ˆì´ì•„웃 ì†ì„± ê°’ì„ ë“œëŸ¬ë‚´ê³ ,
+ë‚´ë¶€ 여백/여백 표시기가 있는 와ì´ì–´í”„ë ˆìž„ì„ ê·¸ë¦¬ë©° 개발ìžê°€ ì—뮬레ì´í„° ë˜ëŠ” 기기ì—서 디버깅하는 ë™ì•ˆ
완전히 ë Œë”ë§ëœ 보기를 제공합니다.</li>
<li><a href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">layoutopt</a> ë„구를
사용하면 ë ˆì´ì•„웃과 ê³„ì¸µì„ ë¹„íš¨ìœ¨ì„± ë˜ëŠ” 다른 ë¬¸ì œì— ëŒ€í•˜ì—¬ 재빨리 ë¶„ì„í•  수 있게 í•´ì¤ë‹ˆë‹¤.</li>
</div>
</div>
-<p>UI를 XML로 선언하는 ê²ƒì˜ ì´ì ì€ ì´ë ‡ê²Œ 하면 애플리케ì´ì…˜ì„ ê·¸ í–‰ë™ì„ 제어하는 코드로부터 따로 표시하기가 ë” ì¢‹ë‹¤ëŠ” 것입니다. UI ì„¤ëª…ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ ì½”ë“œì˜ ì™¸ë¶€ì— ìžˆìŠµë‹ˆë‹¤. ì´ëŠ” 다시 ë§í•´ 소스 코드를 수정하고 다시 컴파ì¼ë§í•˜ì§€ ì•Šì•„ë„ ì´ë¥¼ 수정 ë˜ëŠ” 변경할 수 있다는 뜻입니다. 예를 들어, 서로 다른 화면 ë°©í–¥, 사로 다른 기기 화면 í¬ê¸° ë° ì„œë¡œ 다른 ì–¸ì–´ì— ëŒ€í•´ XML ë ˆì´ì•„ì›ƒì„ ìƒì„±í•  수 있습니다. ì´ì™¸ì—ë„ ë ˆì´ì•„ì›ƒì„ XML로 선언하면 UIì˜ êµ¬ì¡°ë¥¼ 시ê°í™”하기가 ë” ì‰¬ìš°ë¯€ë¡œ 문제를 ë””ë²„ê¹…í•˜ê¸°ë„ ë” ì‰½ìŠµë‹ˆë‹¤. ë”°ë¼ì„œ, ì´ ë¬¸ì„œëŠ” ë ˆì´ì•„ì›ƒì„ XML로 선언하는 ë°©ë²•ì„ ê°€ë¥´ì¹˜ëŠ” ë° ì£¼ì•ˆì ì„ ë‘ê³  있습니다. ëŸ°íƒ€ìž„ì— ë³´ê¸° ê°ì²´ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•˜ëŠ” ê²ƒì— í¥ë¯¸ê°€ 있는 경우,
-{@link android.view.ViewGroup} ë°
+<p>UI를 XML로 선언하는 ê²ƒì˜ ì´ì ì€ ì´ë ‡ê²Œ 하면 애플리케ì´ì…˜ì„ ê·¸ í–‰ë™ì„ 제어하는 코드로부터 따로 표시하기가 ë” ì¢‹ë‹¤ëŠ” 것입니다. UI ì„¤ëª…ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ ì½”ë“œì˜ ì™¸ë¶€ì— ìžˆìŠµë‹ˆë‹¤. ì´ëŠ” 다시 ë§í•´ 소스 코드를 수정하고 다시 컴파ì¼ë§í•˜ì§€ ì•Šì•„ë„ ì´ë¥¼ 수정 ë˜ëŠ” 변경할 수 있다는 뜻입니다. 예를 들어, 서로 다른 화면 ë°©í–¥, 사로 다른 기기 화면 í¬ê¸° ë° ì„œë¡œ 다른 ì–¸ì–´ì— ëŒ€í•´ XML ë ˆì´ì•„ì›ƒì„ ìƒì„±í•  수 있습니다. ì´ì™¸ì—ë„ ë ˆì´ì•„ì›ƒì„ XML로 선언하면 UIì˜ êµ¬ì¡°ë¥¼ 시ê°í™”하기가 ë” ì‰¬ìš°ë¯€ë¡œ 문제를 ë””ë²„ê¹…í•˜ê¸°ë„ ë” ì‰½ìŠµë‹ˆë‹¤. ë”°ë¼ì„œ, ì´ ë¬¸ì„œëŠ” ë ˆì´ì•„ì›ƒì„ XML로 선언하는 ë°©ë²•ì„ ê°€ë¥´ì¹˜ëŠ” ë° ì£¼ì•ˆì ì„ ë‘ê³  있습니다. ëŸ°íƒ€ìž„ì— ë³´ê¸° ê°ì²´ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•˜ëŠ” ê²ƒì— í¥ë¯¸ê°€ 있는 경우,
+{@link android.view.ViewGroup} ë°
{@link android.view.View} í´ëž˜ìФ 참조를 참조하십시오.</p>
-<p>ì¼ë°˜ì ìœ¼ë¡œ UI 요소를 선언하는 ë° ì“°ì´ëŠ” XML 어휘는 í´ëž˜ìŠ¤ì™€ 메서드 ëª…ëª…ì„ ì¶©ì‹¤ížˆ 따릅니다. 여기ì—서 요소 ì´ë¦„ì€ í´ëž˜ìФ ì´ë¦„ì— ìƒì‘하며 ì†ì„± ì´ë¦„ì€ ë©”ì„œë“œì— ìƒì‘합니다. 사실 ì´ëŸ¬í•œ ì¼ì¹˜ì„±ì€ 아주 ì§ì ‘ì ì¸ 경우가 잦아 ì–´ëŠ XML ì†ì„±ì´ í´ëž˜ìФ ë©”ì„œë“œì— ìƒì‘하는지를 추측할 수 있고, ì–´ëŠ í´ëž˜ìŠ¤ê°€ 주어진 XML ìš”ì†Œì— ìƒì‘í•˜ëŠ”ì§€ë„ ì¶”ì¸¡í•  수 있습니다. 다만 모든 어휘가 다 같지는 않다는 ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. 몇몇 경우ì—는 ëª…ëª…ì— ì•½ê°„ì˜ ì°¨ì´ì ì´ 있습니다. 예를 들어,
-EditText 요소ì—는 <code>text</code> ì†ì„±ì´ 있으며 ì´ëŠ”
+<p>ì¼ë°˜ì ìœ¼ë¡œ UI 요소를 선언하는 ë° ì“°ì´ëŠ” XML 어휘는 í´ëž˜ìŠ¤ì™€ 메서드 ëª…ëª…ì„ ì¶©ì‹¤ížˆ 따릅니다. 여기ì—서 요소 ì´ë¦„ì€ í´ëž˜ìФ ì´ë¦„ì— ìƒì‘하며 ì†ì„± ì´ë¦„ì€ ë©”ì„œë“œì— ìƒì‘합니다. 사실 ì´ëŸ¬í•œ ì¼ì¹˜ì„±ì€ 아주 ì§ì ‘ì ì¸ 경우가 잦아 ì–´ëŠ XML ì†ì„±ì´ í´ëž˜ìФ ë©”ì„œë“œì— ìƒì‘하는지를 추측할 수 있고, ì–´ëŠ í´ëž˜ìŠ¤ê°€ 주어진 XML ìš”ì†Œì— ìƒì‘í•˜ëŠ”ì§€ë„ ì¶”ì¸¡í•  수 있습니다. 다만 모든 어휘가 다 같지는 않다는 ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. 몇몇 경우ì—는 ëª…ëª…ì— ì•½ê°„ì˜ ì°¨ì´ì ì´ 있습니다. 예를 들어,
+EditText 요소ì—는 <code>text</code> ì†ì„±ì´ 있으며 ì´ëŠ”
<code>EditText.setText()</code>ì— ìƒì‘합니다. </p>
<p class="note"><strong>íŒ:</strong> 여러 가지 ë ˆì´ì•„웃 ìœ í˜•ì— ëŒ€í•´ì„œëŠ” <a href="{@docRoot}guide/topics/ui/layout-objects.html">보편ì ì¸
-ë ˆì´ì•„웃 ê°ì²´</a>를 참조하십시오. 여러 가지 ë ˆì´ì•„ì›ƒì„ êµ¬ì¶•í•˜ëŠ” ë° ëŒ€í•œ 튜토리얼 모ìŒë„ 있습니다.
+ë ˆì´ì•„웃 ê°ì²´</a>를 참조하십시오. 여러 가지 ë ˆì´ì•„ì›ƒì„ êµ¬ì¶•í•˜ëŠ” ë° ëŒ€í•œ 튜토리얼 모ìŒë„ 있습니다.
<a href="{@docRoot}resources/tutorials/views/index.html">Hello 보기</a> 튜토리얼 ê°€ì´ë“œë¥¼ 참조하십시오.</p>
<h2 id="write">XML 쓰기</h2>
@@ -100,20 +100,20 @@ EditText 요소ì—는 <code>text</code> ì†ì„±ì´ 있으며 ì´ëŠ”
&lt;/LinearLayout>
</pre>
-<p>ë ˆì´ì•„ì›ƒì„ XML로 선언하고 나면 ê·¸ 파ì¼ì„ Android 프로ì íŠ¸ì˜ <code>res/layout/</code> 디렉터리 ë‚´ì—
+<p>ë ˆì´ì•„ì›ƒì„ XML로 선언하고 나면 ê·¸ 파ì¼ì„ Android 프로ì íŠ¸ì˜ <code>res/layout/</code> 디렉터리 ë‚´ì—
<code>.xml</code> 확장ìžë¡œ 저장하여 ì ì ˆí•˜ê²Œ 컴파ì¼ë§ë˜ë„ë¡ í•©ë‹ˆë‹¤. </p>
<p>ë ˆì´ì•„웃 XML 파ì¼ì˜ êµ¬ë¬¸ì— ëŒ€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/topics/resources/layout-resource.html">ë ˆì´ì•„웃 리소스</a> 문서ì—서 확ì¸í•  수 있습니다.</p>
<h2 id="load">XML 리소스 로딩</h2>
-<p>애플리케ì´ì…˜ì„ 컴파ì¼ë§í•˜ëŠ” 경우, ê° XML ë ˆì´ì•„웃 파ì¼ì´
-{@link android.view.View} 리소스 ì•ˆì— ì»´íŒŒì¼ë§ë©ë‹ˆë‹¤. 애플리케ì´ì…˜ 코드로부터 가져온 ë ˆì´ì•„웃 리소스는
-{@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()} 콜백
+<p>애플리케ì´ì…˜ì„ 컴파ì¼ë§í•˜ëŠ” 경우, ê° XML ë ˆì´ì•„웃 파ì¼ì´
+{@link android.view.View} 리소스 ì•ˆì— ì»´íŒŒì¼ë§ë©ë‹ˆë‹¤. 애플리케ì´ì…˜ 코드로부터 가져온 ë ˆì´ì•„웃 리소스는
+{@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()} 콜백
êµ¬í˜„ì— ë¡œë”©í•´ì•¼ 합니다.
-ì´ë ‡ê²Œ 하려면 <code>{@link android.app.Activity#setContentView(int) setContentView()}</code>를 호출한 다ìŒ, ì´ë¥¼
+ì´ë ‡ê²Œ 하려면 <code>{@link android.app.Activity#setContentView(int) setContentView()}</code>를 호출한 다ìŒ, ì´ë¥¼
<code>R.layout.<em>layout_file_name</em></code> 형태로 ë ˆì´ì•„웃 ë¦¬ì†ŒìŠ¤ì˜ ì°¸ì¡°ì— ì „ë‹¬í•©ë‹ˆë‹¤.
- 예를 들어, XML ë ˆì´ì•„ì›ƒì´ <code>main_layout.xml</code>로 ì €ìž¥ëœ ê²½ìš°, ì´ê²ƒì„ ì•¡í‹°ë¹„í‹°ì— ëŒ€í•´ 로딩하려면
+ 예를 들어, XML ë ˆì´ì•„ì›ƒì´ <code>main_layout.xml</code>로 ì €ìž¥ëœ ê²½ìš°, ì´ê²ƒì„ ì•¡í‹°ë¹„í‹°ì— ëŒ€í•´ 로딩하려면
다ìŒê³¼ ê°™ì´ í•˜ë©´ ë©ë‹ˆë‹¤.</p>
<pre>
public void onCreate(Bundle savedInstanceState) {
@@ -122,8 +122,8 @@ public void onCreate(Bundle savedInstanceState) {
}
</pre>
-<p>액티비티 ë‚´ì˜ <code>onCreate()</code> 콜백 메서드는 액티비티가 ì‹œìž‘ë  ë•Œ
-Android 프레임워í¬ê°€ 호출합니다(수명 ì£¼ê¸°ì— ëŒ€í•œ ë…¼ì˜ëŠ”
+<p>액티비티 ë‚´ì˜ <code>onCreate()</code> 콜백 메서드는 액티비티가 ì‹œìž‘ë  ë•Œ
+Android 프레임워í¬ê°€ 호출합니다(수명 ì£¼ê¸°ì— ëŒ€í•œ ë…¼ì˜ëŠ”
<a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티</a>
문서ì—서 확ì¸í•˜ì‹­ì‹œì˜¤).</p>
@@ -134,24 +134,24 @@ Android 프레임워í¬ê°€ 호출합니다(수명 ì£¼ê¸°ì— ëŒ€í•œ ë…¼ì˜ëŠ”
몇몇 ì†ì„±ì€ 보기 ê°ì²´ì—ë§Œ 특화ë˜ì–´ 있지만(예를 들어, TextView는 <code>textSize</code>
ì†ì„±ì„ ì§€ì›), ì´ì™€ ê°™ì€ ì†ì„±ì€ ì´ í´ëž˜ìŠ¤ë¥¼ 확장할 수 있는 모든 보기 ê°ì²´ê°€ ìƒì†í•˜ê¸°ë„ 합니다.
모든 보기 ê°ì²´ì— 공통으로 ì“°ì´ëŠ” ê²ƒë„ ëª‡ 가지 있습니다. 왜ëƒí•˜ë©´ ì´ë“¤ì€ 루트 보기 í´ëž˜ìФì—서 ìƒì†ëœ 것ì´ê¸° 때문입니다(예:
-<code>id</code> ì†ì„±). 그리고 나머지 ì†ì„±ì€ "ë ˆì´ì•„웃 매개변수"로 간주ë©ë‹ˆë‹¤.
-ì´ë“¤ì€ 보기 ê°ì²´ì˜ 특정한 ë ˆì´ì•„웃 ë°©í–¥ì„ ì„¤ëª…í•˜ëŠ” 것으로, ì´ëŠ” 해당 ê°ì²´ì˜ ìƒìœ„ VeiwGroup ê°ì²´ì—서
+<code>id</code> ì†ì„±). 그리고 나머지 ì†ì„±ì€ "ë ˆì´ì•„웃 매개변수"로 간주ë©ë‹ˆë‹¤.
+ì´ë“¤ì€ 보기 ê°ì²´ì˜ 특정한 ë ˆì´ì•„웃 ë°©í–¥ì„ ì„¤ëª…í•˜ëŠ” 것으로, ì´ëŠ” 해당 ê°ì²´ì˜ ìƒìœ„ VeiwGroup ê°ì²´ì—서
ì •ì˜ëœ ë°”ì— ë”°ë¦…ë‹ˆë‹¤.</p>
<h3 id="id">ID</h3>
<p>모든 보기 ê°ì²´ì—는 ì—°ê´€ëœ ì •ìˆ˜ IDê°€ ìžˆì„ ìˆ˜ 있습니다. ì´ëŠ” 트리 ë‚´ì—서 해당 보기를 고유하게 ì‹ë³„하기 위한 것입니다.
-애플리케ì´ì…˜ì´ 컴파ì¼ë§ë˜ë©´ ì´ IDê°€ 정수로 참조ë˜ì§€ë§Œ, ID는
-ì¼ë°˜ì ìœ¼ë¡œ ë ˆì´ì•„웃 XML 파ì¼ì— 문ìžì—´ë¡œ 할당ë˜ë©°, <code>id</code> ì†ì„±ìœ¼ë¡œ 쓰입니다.
+애플리케ì´ì…˜ì´ 컴파ì¼ë§ë˜ë©´ ì´ IDê°€ 정수로 참조ë˜ì§€ë§Œ, ID는
+ì¼ë°˜ì ìœ¼ë¡œ ë ˆì´ì•„웃 XML 파ì¼ì— 문ìžì—´ë¡œ 할당ë˜ë©°, <code>id</code> ì†ì„±ìœ¼ë¡œ 쓰입니다.
ì´ê²ƒì€ 모든 보기 ê°ì²´ì— 공통ì ì¸ XML ì†ì„±ìœ¼ë¡œ
({@link android.view.View} í´ëž˜ìŠ¤ê°€ ì •ì˜) ì´ê²ƒì„ 매우 ìžì£¼ 사용하게 ë©ë‹ˆë‹¤.
IDì— ëŒ€í•œ, XML 태그 ë‚´ì— ìžˆëŠ” êµ¬ë¬¸ì€ ë‹¤ìŒê³¼ 같습니다.</p>
<pre>android:id="&#64;+id/my_button"</pre>
-<p>문ìžì—´ 시작 ë¶€ë¶„ì— ìžˆëŠ” 앳 기호(@)는 XML 파서가 ID 문ìžì—´ì˜ 나머지를 구문 ë¶„ì„하고 확장하여
-ID 리소스로 ì‹ë³„해야 한다는 ê²ƒì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. ë”하기 기호(+)는 ì´ê²ƒì´ 새 리소스 ì´ë¦„ì´ë©°,
-ì´ê²ƒì„ 반드시 ìƒì„±í•˜ì—¬ 우리 ë¦¬ì†ŒìŠ¤ì— ì¶”ê°€í•´ì•¼ 한다는 ê²ƒì„ ëœ»í•©ë‹ˆë‹¤(<code>R.java</code> 파ì¼ì—서). Android 프레임워í¬ëŠ” 다른 ID ë¦¬ì†ŒìŠ¤ë„ ì•„ì£¼ ë§Žì´
-제공합니다. Android 리소스 ID를 참조할 때ì—는 ë”하기 기호는 필요하지 않지만
+<p>문ìžì—´ 시작 ë¶€ë¶„ì— ìžˆëŠ” 앳 기호(@)는 XML 파서가 ID 문ìžì—´ì˜ 나머지를 구문 ë¶„ì„하고 확장하여
+ID 리소스로 ì‹ë³„해야 한다는 ê²ƒì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. ë”하기 기호(+)는 ì´ê²ƒì´ 새 리소스 ì´ë¦„ì´ë©°,
+ì´ê²ƒì„ 반드시 ìƒì„±í•˜ì—¬ 우리 ë¦¬ì†ŒìŠ¤ì— ì¶”ê°€í•´ì•¼ 한다는 ê²ƒì„ ëœ»í•©ë‹ˆë‹¤(<code>R.java</code> 파ì¼ì—서). Android 프레임워í¬ëŠ” 다른 ID ë¦¬ì†ŒìŠ¤ë„ ì•„ì£¼ ë§Žì´
+제공합니다. Android 리소스 ID를 참조할 때ì—는 ë”하기 기호는 필요하지 않지만
<code>android</code> 패키지 네임스페ì´ìŠ¤ë¥¼ 다ìŒê³¼ ê°™ì´ ë°˜ë“œì‹œ 추가해야 합니다.</p>
<pre>android:id="&#64;android:id/empty"</pre>
<p><code>android</code> 패키지 네임스페ì´ìŠ¤ë¥¼ ì œìžë¦¬ì— 넣으면 ì´ì œ ID를 로컬 리소스 í´ëž˜ìФì—서가 ì•„ë‹ˆë¼ <code>android.R</code>
@@ -174,54 +174,54 @@ Button myButton = (Button) findViewById(R.id.my_button);
</pre>
</li>
</ol>
-<p>{@link android.widget.RelativeLayout}ì„ ìƒì„±í•  때ì—는 보기 ê°ì²´ì˜ ID를 ì •ì˜í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤.
-관계 ë ˆì´ì•„웃ì—서는 형제 보기가 ë˜ ë‹¤ë¥¸ 형제 보기와 ê´€ë ¨ëœ ìžì‹ ì˜ ë ˆì´ì•„ì›ƒì„ ì •ì˜í•  수 있으며,
+<p>{@link android.widget.RelativeLayout}ì„ ìƒì„±í•  때ì—는 보기 ê°ì²´ì˜ ID를 ì •ì˜í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤.
+관계 ë ˆì´ì•„웃ì—서는 형제 보기가 ë˜ ë‹¤ë¥¸ 형제 보기와 ê´€ë ¨ëœ ìžì‹ ì˜ ë ˆì´ì•„ì›ƒì„ ì •ì˜í•  수 있으며,
ì´ë¥¼ 고유한 ID로 참조하게 ë©ë‹ˆë‹¤.</p>
-<p>ID는 트리 전체를 통틀어 고유할 필요는 없지만, 트리ì—서 검색하고 있는 부분 ë‚´ì—서는
-고유해야 합니다(ì´ê²ƒì´ 트리 ì „ì²´ì¸ ê²½ìš°ê°€ 잦으므로, 가급ì ì´ë©´ 완전히
+<p>ID는 트리 전체를 통틀어 고유할 필요는 없지만, 트리ì—서 검색하고 있는 부분 ë‚´ì—서는
+고유해야 합니다(ì´ê²ƒì´ 트리 ì „ì²´ì¸ ê²½ìš°ê°€ 잦으므로, 가급ì ì´ë©´ 완전히
고유한 ê²ƒì„ ì“°ëŠ” ê²ƒì´ ê°€ìž¥ 좋습니다).</p>
<h3 id="layout-params">ë ˆì´ì•„웃 매개변수</h3>
-<p><code>layout_<em>something</em></code>ì´ë¼ëŠ” XML ë ˆì´ì•„웃 ì†ì„±ì´
+<p><code>layout_<em>something</em></code>ì´ë¼ëŠ” XML ë ˆì´ì•„웃 ì†ì„±ì´
보기가 ìƒì£¼í•˜ëŠ” ViewGroupì— ëŒ€í•´ ì ì ˆí•œ ë³´ê¸°ì˜ ë ˆì´ì•„웃 매개변수를 ì •ì˜í•©ë‹ˆë‹¤.</p>
<p>모든 ViewGroup í´ëž˜ìŠ¤ê°€ ì¤‘ì²©ëœ í´ëž˜ìŠ¤ë¥¼ 하나씩 구현하며 ì´ê²ƒì´ {@link
-android.view.ViewGroup.LayoutParams}를 확장합니다. ì´ í•˜ìœ„ í´ëž˜ìФì—는
-ê° í•˜ìœ„ ë³´ê¸°ì˜ í¬ê¸°ì™€ 위치를 보기 ê·¸ë£¹ì— ì ì ˆí•œ ë°©ì‹ìœ¼ë¡œ ì •ì˜í•˜ëŠ”
-ì†ì„± ìœ í˜•ì´ ë“¤ì–´ 있습니다. 그림 1ì—서 ë³¼ 수 있듯ì´, ìƒìœ„ 보기 그룹ì´
+android.view.ViewGroup.LayoutParams}를 확장합니다. ì´ í•˜ìœ„ í´ëž˜ìФì—는
+ê° í•˜ìœ„ ë³´ê¸°ì˜ í¬ê¸°ì™€ 위치를 보기 ê·¸ë£¹ì— ì ì ˆí•œ ë°©ì‹ìœ¼ë¡œ ì •ì˜í•˜ëŠ”
+ì†ì„± ìœ í˜•ì´ ë“¤ì–´ 있습니다. 그림 1ì—서 ë³¼ 수 있듯ì´, ìƒìœ„ 보기 그룹ì´
ê° í•˜ìœ„ ë³´ê¸°ì˜ ë ˆì´ì•„웃 매개변수를 ì •ì˜í•©ë‹ˆë‹¤(하위 보기 그룹 í¬í•¨).</p>
<img src="{@docRoot}images/layoutparams.png" alt="" />
-<p class="img-caption"><strong>그림 1.</strong> ê° ë³´ê¸°ì™€ ì—°ê´€ëœ ë ˆì´ì•„웃 매개변수가
+<p class="img-caption"><strong>그림 1.</strong> ê° ë³´ê¸°ì™€ ì—°ê´€ëœ ë ˆì´ì•„웃 매개변수가
있는 보기 ê³„ì¸µì„ ì‹œê°í™”한 것입니다.</p>
-<p>모든 LayoutParams 하위 í´ëž˜ìФì—는 설정 ê°’ì— ëŒ€í•œ ê°ê¸° ìžì‹ ë§Œì˜ êµ¬ë¬¸ì´ ìžˆë‹¤ëŠ” ì ì„
-눈여겨 보십시오. ê° í•˜ìœ„ 요소는 ìžì‹ ì˜ ìƒìœ„ì— ì í•©í•œ LayoutParams를 ì •ì˜í•´ì•¼ 합니다.
+<p>모든 LayoutParams 하위 í´ëž˜ìФì—는 설정 ê°’ì— ëŒ€í•œ ê°ê¸° ìžì‹ ë§Œì˜ êµ¬ë¬¸ì´ ìžˆë‹¤ëŠ” ì ì„
+눈여겨 보십시오. ê° í•˜ìœ„ 요소는 ìžì‹ ì˜ ìƒìœ„ì— ì í•©í•œ LayoutParams를 ì •ì˜í•´ì•¼ 합니다.
다만 ì´ê²ƒì€ ìžì‹ ì˜ í•˜ìœ„ì— ëŒ€í•´ ê°ê¸° 다른 LayoutParamsë„ ì •ì˜í•  수 있습니다. </p>
-<p>모든 보기 그룹ì—는 너비와 높ì´ê°€ í¬í•¨ë˜ë©°(<code>layout_width</code> ë°
-<code>layout_height</code>), ê° ë³´ê¸°ëŠ” ì´ë“¤ì„ 반드시 ì •ì˜í•´ì•¼ 합니다. ì„ íƒ ì‚¬í•­ìœ¼ë¡œ
+<p>모든 보기 그룹ì—는 너비와 높ì´ê°€ í¬í•¨ë˜ë©°(<code>layout_width</code> ë°
+<code>layout_height</code>), ê° ë³´ê¸°ëŠ” ì´ë“¤ì„ 반드시 ì •ì˜í•´ì•¼ 합니다. ì„ íƒ ì‚¬í•­ìœ¼ë¡œ
여백과 í…Œë‘ë¦¬ë„ í¬í•¨í•˜ëŠ” LayoutParamsë„ ë§ŽìŠµë‹ˆë‹¤. <p>
-<p>너비와 높ì´ëŠ” 정확한 치수로 지정할 수 있습니다. 다만 ì´ê²ƒì€ ìžì£¼ 하지
-않는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 그보다는 다ìŒê³¼ ê°™ì€ ìƒìˆ˜ 중 하나를 사용하여 너비 ë˜ëŠ” 높ì´ë¥¼ 설정하는 경우가
+<p>너비와 높ì´ëŠ” 정확한 치수로 지정할 수 있습니다. 다만 ì´ê²ƒì€ ìžì£¼ 하지
+않는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 그보다는 다ìŒê³¼ ê°™ì€ ìƒìˆ˜ 중 하나를 사용하여 너비 ë˜ëŠ” 높ì´ë¥¼ 설정하는 경우가
ë” ë§ŽìŠµë‹ˆë‹¤. </p>
<ul>
- <li><var>wrap_content</var> ë³´ê¸°ì— ì½˜í…ì¸ ì— í•„ìš”í•œ 치수대로 알아서
+ <li><var>wrap_content</var> ë³´ê¸°ì— ì½˜í…ì¸ ì— í•„ìš”í•œ 치수대로 알아서
í¬ê¸°ë¥¼ 조정하ë¼ê³  합니다.</li>
<li><var>match_parent</var> (다른 ì´ë¦„ì€ <var>fill_parent</var> 로, API 레벨 8 ì´ì „ì— í•´ë‹¹)
ë³´ê¸°ì— ìƒìœ„ 보기 ê·¸ë£¹ì´ í—ˆìš©í•˜ëŠ” 한 최대한으로 커지ë¼ê³  합니다.</li>
</ul>
-<p>ì¼ë°˜ì ìœ¼ë¡œ 픽셀과 ê°™ì´ ì ˆëŒ€ì ì¸ 단위를 사용하여 ë ˆì´ì•„웃 너비와 높ì´ë¥¼ 지정하는 것ì€
-권장하지 않습니다. ê·¸ 대신, ë°€ë„ ë…립ì ì¸ 픽셀 단위와 ê°™ì´ ìƒëŒ€ì ì¸ 측정치를
+<p>ì¼ë°˜ì ìœ¼ë¡œ 픽셀과 ê°™ì´ ì ˆëŒ€ì ì¸ 단위를 사용하여 ë ˆì´ì•„웃 너비와 높ì´ë¥¼ 지정하는 것ì€
+권장하지 않습니다. ê·¸ 대신, ë°€ë„ ë…립ì ì¸ 픽셀 단위와 ê°™ì´ ìƒëŒ€ì ì¸ 측정치를
사용하는 것(<var>dp</var>), <var>wrap_content</var>, ë˜ëŠ”
-<var>match_parent</var>ë“±ì´ ë” ë‚«ìŠµë‹ˆë‹¤. ì´ë ‡ê²Œ 하면
+<var>match_parent</var>ë“±ì´ ë” ë‚«ìŠµë‹ˆë‹¤. ì´ë ‡ê²Œ 하면
애플리케ì´ì…˜ì´ 다양한 기기 화면 í¬ê¸°ì— 걸ì³ì„œë„ ì ì ˆí•˜ê²Œ 표시ë˜ë„ë¡ ë³´ìž¥í•˜ëŠ” ë° ë„ì›€ì´ ë˜ê¸° 때문입니다.
-í—ˆìš©ëœ ì¸¡ì • 유형ì€
+í—ˆìš©ëœ ì¸¡ì • 유형ì€
<a href="{@docRoot}guide/topics/resources/available-resources.html#dimension">
사용 가능한 리소스</a>ì— ì •ì˜ë˜ì–´ 있습니다.</p>
@@ -229,23 +229,23 @@ android.view.ViewGroup.LayoutParams}를 확장합니다. ì´ í•˜ìœ„ í´ëž˜ìФì—
<h2 id="Position">ë ˆì´ì•„웃 위치</h2>
<p>
ë³´ê¸°ì˜ ëª¨ì–‘ì€ ì§ì‚¬ê°í˜•입니다. 보기ì—는 위치가 있으며, ì´ëŠ”
- 한 ìŒì˜ <em>왼쪽</em> ë° <em>ìƒë‹¨</em> 좌표, 그리고 ë‘ ê°œì˜ ì¹˜ìˆ˜ê°€ 너비와 높ì´ë¥¼ 나타내는
+ 한 ìŒì˜ <em>왼쪽</em> ë° <em>ìƒë‹¨</em> 좌표, 그리고 ë‘ ê°œì˜ ì¹˜ìˆ˜ê°€ 너비와 높ì´ë¥¼ 나타내는
형ì‹ìœ¼ë¡œ 표현ë©ë‹ˆë‹¤. 위치와 ì¹˜ìˆ˜ì˜ ë‹¨ìœ„ëŠ” 픽셀입니다.
</p>
<p>
- ë³´ê¸°ì˜ ìœ„ì¹˜ë¥¼ 검색할 수 있습니다.
-{@link android.view.View#getLeft()} ë° {@link android.view.View#getTop()} 메서드를 호출하면 ë©ë‹ˆë‹¤. ì „ìžëŠ” 보기를
-나타내는 ì§ì‚¬ê°í˜•ì˜ ì™¼ìª½, 즉 X 좌표를 반환합니다. 후ìžëŠ” 보기를
-나타내는 ì§ì‚¬ê°í˜•ì˜ ìƒë‹¨, 즉 Y 좌표를 반환합니다. ì´ë“¤ 메서드는 둘 다
-ë³´ê¸°ì˜ ìœ„ì¹˜ë¥¼ 해당 ë³´ê¸°ì˜ ìƒìœ„와 관련지어 반환합니다. 예를 들어,
-<code>getLeft()</code>ê°€ 20ì„ ë°˜í™˜í•˜ëŠ” 경우 ì´ëŠ” 해당 보기가 ê·¸ ë³´ê¸°ì˜ ë°”ë¡œ ìƒìœ„ì˜ ì™¼ìª½ 가장ìžë¦¬ì—서
+ ë³´ê¸°ì˜ ìœ„ì¹˜ë¥¼ 검색할 수 있습니다.
+{@link android.view.View#getLeft()} ë° {@link android.view.View#getTop()} 메서드를 호출하면 ë©ë‹ˆë‹¤. ì „ìžëŠ” 보기를
+나타내는 ì§ì‚¬ê°í˜•ì˜ ì™¼ìª½, 즉 X 좌표를 반환합니다. 후ìžëŠ” 보기를
+나타내는 ì§ì‚¬ê°í˜•ì˜ ìƒë‹¨, 즉 Y 좌표를 반환합니다. ì´ë“¤ 메서드는 둘 다
+ë³´ê¸°ì˜ ìœ„ì¹˜ë¥¼ 해당 ë³´ê¸°ì˜ ìƒìœ„와 관련지어 반환합니다. 예를 들어,
+<code>getLeft()</code>ê°€ 20ì„ ë°˜í™˜í•˜ëŠ” 경우 ì´ëŠ” 해당 보기가 ê·¸ ë³´ê¸°ì˜ ë°”ë¡œ ìƒìœ„ì˜ ì™¼ìª½ 가장ìžë¦¬ì—서
오른쪽으로 20픽셀 떨어진 ê³³ì— ìžˆë‹¤ëŠ” 뜻입니다.
</p>
<p>
- ì´ì™¸ì—ë„ ë¶ˆí•„ìš”í•œ ê³„ì‚°ì„ í”¼í•˜ê¸° 위해 여러 가지 íŽ¸ì˜ ë©”ì„œë“œê°€ 제공ë©ë‹ˆë‹¤.
+ ì´ì™¸ì—ë„ ë¶ˆí•„ìš”í•œ ê³„ì‚°ì„ í”¼í•˜ê¸° 위해 여러 가지 íŽ¸ì˜ ë©”ì„œë“œê°€ 제공ë©ë‹ˆë‹¤.
구체ì ìœ¼ë¡œ {@link android.view.View#getRight()} ë° {@link android.view.View#getBottom()}ì„ ë“¤ 수 있습니다.
ì´ë“¤ 메서드는 해당 보기를 나타내는 ì§ì‚¬ê°í˜•ì˜ ì˜¤ë¥¸ìª½ê³¼ 하단 가장ìžë¦¬ì˜ 좌표를 반환합니다.
예를 들어 {@link android.view.View#getRight()}를
@@ -255,46 +255,46 @@ android.view.ViewGroup.LayoutParams}를 확장합니다. ì´ í•˜ìœ„ í´ëž˜ìФì—
<h2 id="SizePaddingMargins">í¬ê¸°, 안쪽 여백 ë° ì—¬ë°±</h2>
<p>
- ë³´ê¸°ì˜ í¬ê¸°ëŠ” 너비와 높ì´ë¡œ 표현ë©ë‹ˆë‹¤. 사실 í•˜ë‚˜ì˜ ë³´ê¸°ëŠ”
+ ë³´ê¸°ì˜ í¬ê¸°ëŠ” 너비와 높ì´ë¡œ 표현ë©ë‹ˆë‹¤. 사실 í•˜ë‚˜ì˜ ë³´ê¸°ëŠ”
ë‘ ìŒì˜ 너비 ë° ë†’ì´ ê°’ì„ ì†Œìœ í•©ë‹ˆë‹¤.
</p>
<p>
- 첫 번째 ìŒì„ <em>ì¸¡ì •ëœ ë„ˆë¹„</em> ë°
-<em>ì¸¡ì •ëœ ë†’ì´</em>ë¼ê³  합니다. ì´ë“¤ 치수는 보기가
-ìƒìœ„ ë‚´ì—서 얼마나 ì»¤ì§€ê³ ìž í•˜ëŠ”ì§€ë¥¼ ì •ì˜í•©ë‹ˆë‹¤. 측정ëœ
+ 첫 번째 ìŒì„ <em>ì¸¡ì •ëœ ë„ˆë¹„</em> ë°
+<em>ì¸¡ì •ëœ ë†’ì´</em>ë¼ê³  합니다. ì´ë“¤ 치수는 보기가
+ìƒìœ„ ë‚´ì—서 얼마나 ì»¤ì§€ê³ ìž í•˜ëŠ”ì§€ë¥¼ ì •ì˜í•©ë‹ˆë‹¤. 측정ëœ
치수를 가져오려면 {@link android.view.View#getMeasuredWidth()}
ë° {@link android.view.View#getMeasuredHeight()}를 호출하면 ë©ë‹ˆë‹¤.
</p>
<p>
- ë‘ ë²ˆì§¸ ìŒì€ 단순히 <em>너비</em> ë° <em>높ì´</em>ë¼ê³  ì¼ì»¬ìœ¼ë©°,
-때로는 <em>그리기 너비</em> ë° <em>그리기 높ì´</em>로 부를 ë•Œë„ ìžˆìŠµë‹ˆë‹¤. ì´ëŸ¬í•œ
-치수는 그리기 시간 ë° ë ˆì´ì•„웃 í›„ì— ë³´ê¸°ê°€ í™”ë©´ì— í‘œì‹œë˜ëŠ” 실제 í¬ê¸°ë¥¼
-ì •ì˜í•©ë‹ˆë‹¤. ì´ë“¤ ê°’ì€ ì¸¡ì •ëœ ë„ˆë¹„ ë° ë†’ì´ì™€ 달ë¼ë„ ë˜ì§€ë§Œ
-ê¼­ 달ë¼ì•¼ 하는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. 너비와 높ì´ë¥¼ 가져오려면
+ ë‘ ë²ˆì§¸ ìŒì€ 단순히 <em>너비</em> ë° <em>높ì´</em>ë¼ê³  ì¼ì»¬ìœ¼ë©°,
+때로는 <em>그리기 너비</em> ë° <em>그리기 높ì´</em>로 부를 ë•Œë„ ìžˆìŠµë‹ˆë‹¤. ì´ëŸ¬í•œ
+치수는 그리기 시간 ë° ë ˆì´ì•„웃 í›„ì— ë³´ê¸°ê°€ í™”ë©´ì— í‘œì‹œë˜ëŠ” 실제 í¬ê¸°ë¥¼
+ì •ì˜í•©ë‹ˆë‹¤. ì´ë“¤ ê°’ì€ ì¸¡ì •ëœ ë„ˆë¹„ ë° ë†’ì´ì™€ 달ë¼ë„ ë˜ì§€ë§Œ
+ê¼­ 달ë¼ì•¼ 하는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. 너비와 높ì´ë¥¼ 가져오려면
{@link android.view.View#getWidth()} ë° {@link android.view.View#getHeight()}를 호출하면 ë©ë‹ˆë‹¤.
</p>
<p>
- ë³´ê¸°ì˜ ì¹˜ìˆ˜ë¥¼ 측정하려면 보기는 ìžì‹ ì˜ 안쪽 ì—¬ë°±ì„ ê°ì•ˆí•©ë‹ˆë‹¤. 안쪽 여백ì€
+ ë³´ê¸°ì˜ ì¹˜ìˆ˜ë¥¼ 측정하려면 보기는 ìžì‹ ì˜ 안쪽 ì—¬ë°±ì„ ê°ì•ˆí•©ë‹ˆë‹¤. 안쪽 여백ì€
ë³´ê¸°ì˜ ì™¼ìª½, ìƒë‹¨, 오른쪽 ë° í•˜ë‹¨ ë¶€ë¶„ì— ëŒ€í•´ 픽셀로 표시ë©ë‹ˆë‹¤.
- 안쪽 ì—¬ë°±ì€ ì •í•´ì§„ 픽셀 수를 사용하여 ë³´ê¸°ì˜ ì½˜í…츠를 오프셋하는 ë° ì“°ì¼ ìˆ˜ë„
-있습니다. 예를 들어 왼쪽 안쪽 ì—¬ë°±ì„ 2로 설정하면 해당 ë³´ê¸°ì˜ ì½˜í…츠를 왼쪽 가장ìžë¦¬ì—서
-오른쪽으로 2픽셀 밀어냅니다. 안쪽 ì—¬ë°±ì„ ì„¤ì •í•  때ì—는
-{@link android.view.View#setPadding(int, int, int, int)} 메서드를 사용하면 ë˜ê³ , ì´ë¥¼ 쿼리하려면
-{@link android.view.View#getPaddingLeft()}, {@link android.view.View#getPaddingTop()},
+ 안쪽 ì—¬ë°±ì€ ì •í•´ì§„ 픽셀 수를 사용하여 ë³´ê¸°ì˜ ì½˜í…츠를 오프셋하는 ë° ì“°ì¼ ìˆ˜ë„
+있습니다. 예를 들어 왼쪽 안쪽 ì—¬ë°±ì„ 2로 설정하면 해당 ë³´ê¸°ì˜ ì½˜í…츠를 왼쪽 가장ìžë¦¬ì—서
+오른쪽으로 2픽셀 밀어냅니다. 안쪽 ì—¬ë°±ì„ ì„¤ì •í•  때ì—는
+{@link android.view.View#setPadding(int, int, int, int)} 메서드를 사용하면 ë˜ê³ , ì´ë¥¼ 쿼리하려면
+{@link android.view.View#getPaddingLeft()}, {@link android.view.View#getPaddingTop()},
{@link android.view.View#getPaddingRight()} ë° {@link android.view.View#getPaddingBottom()}ì„ ì‚¬ìš©í•˜ë©´ ë©ë‹ˆë‹¤.
</p>
<p>
- 보기가 안쪽 ì—¬ë°±ì„ ì •ì˜í•  수는 있지만, ì—¬ë°±ì— ëŒ€í•œ ì§€ì›ì€ 전혀 제공하지
-않습니다. 다만 보기 ê·¸ë£¹ì´ ê·¸ì™€ ê°™ì€ ì§€ì›ì„ 제공합니다. ìžì„¸í•œ 정보는
-{@link android.view.ViewGroup} ë°
+ 보기가 안쪽 ì—¬ë°±ì„ ì •ì˜í•  수는 있지만, ì—¬ë°±ì— ëŒ€í•œ ì§€ì›ì€ 전혀 제공하지
+않습니다. 다만 보기 ê·¸ë£¹ì´ ê·¸ì™€ ê°™ì€ ì§€ì›ì„ 제공합니다. ìžì„¸í•œ 정보는
+{@link android.view.ViewGroup} ë°
{@link android.view.ViewGroup.MarginLayoutParams}를 참조하십시오.
</p>
- <p>ì¹˜ìˆ˜ì— ëŒ€í•œ ìžì„¸í•œ 정보는
+ <p>ì¹˜ìˆ˜ì— ëŒ€í•œ ìžì„¸í•œ 정보는
<a href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">치수 ê°’</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
</p>
@@ -320,13 +320,13 @@ div.layout.first {
<h2 id="CommonLayouts">보편ì ì¸ ë ˆì´ì•„웃</h2>
-<p>{@link android.view.ViewGroup} í´ëž˜ìŠ¤ì˜ ê° í•˜ìœ„ í´ëž˜ìŠ¤ëŠ” ê°ê¸° 고유한 ë°©ì‹ìœ¼ë¡œ ìžì‹  안ì—
-중첩한 보기를 표시합니다. 아래는 Android 플랫í¼ì—서 기본 제공ë˜ëŠ”, 보다 보편ì ì¸ ë ˆì´ì•„웃 유형ì„
+<p>{@link android.view.ViewGroup} í´ëž˜ìŠ¤ì˜ ê° í•˜ìœ„ í´ëž˜ìŠ¤ëŠ” ê°ê¸° 고유한 ë°©ì‹ìœ¼ë¡œ ìžì‹  안ì—
+중첩한 보기를 표시합니다. 아래는 Android 플랫í¼ì—서 기본 제공ë˜ëŠ”, 보다 보편ì ì¸ ë ˆì´ì•„웃 유형ì„
몇 가지 나타낸 것입니다.</p>
-<p class="note"><strong>참고:</strong> 하나 ì´ìƒì˜ ë ˆì´ì•„ì›ƒì„ ë˜ ë‹¤ë¥¸ ë ˆì´ì•„ì›ƒì— ì¤‘ì²©í•˜ì—¬
-UI ë””ìžì¸ì„ ì´ë£° ìˆ˜ë„ ìžˆì§€ë§Œ, ë ˆì´ì•„웃 ê³„ì¸µì„ ê°€ëŠ¥í•œ 한 얕게 유지하ë„ë¡
-ì• ì¨ì•¼ 합니다. ì¤‘ì²©ëœ ë ˆì´ì•„ì›ƒì´ ì ì„ìˆ˜ë¡ ë ˆì´ì•„ì›ƒì´ ë”ìš± 빠르게 그려집니다(가로로 ë„“ì€ ë³´ê¸° 계층ì´
+<p class="note"><strong>참고:</strong> 하나 ì´ìƒì˜ ë ˆì´ì•„ì›ƒì„ ë˜ ë‹¤ë¥¸ ë ˆì´ì•„ì›ƒì— ì¤‘ì²©í•˜ì—¬
+UI ë””ìžì¸ì„ ì´ë£° ìˆ˜ë„ ìžˆì§€ë§Œ, ë ˆì´ì•„웃 ê³„ì¸µì„ ê°€ëŠ¥í•œ 한 얕게 유지하ë„ë¡
+ì• ì¨ì•¼ 합니다. ì¤‘ì²©ëœ ë ˆì´ì•„ì›ƒì´ ì ì„ìˆ˜ë¡ ë ˆì´ì•„ì›ƒì´ ë”ìš± 빠르게 그려집니다(가로로 ë„“ì€ ë³´ê¸° 계층ì´
ê¹Šì€ ë³´ê¸° 계층보다 낫습니다).</p>
<!--
@@ -345,14 +345,14 @@ partially or totally obscuring them (unless the newer object is transparent).
<div class="layout first">
<h4><a href="layout/linear.html">선형 ë ˆì´ì•„웃</a></h4>
<a href="layout/linear.html"><img src="{@docRoot}images/ui/linearlayout-small.png" alt="" /></a>
- <p>여러 하위를 í•˜ë‚˜ì˜ ê°€ë¡œ ë°©í–¥ ë˜ëŠ” 세로 ë°©í–¥ 행으로 정리하는 ë ˆì´ì•„웃. ì´ê²ƒì€
+ <p>여러 하위를 í•˜ë‚˜ì˜ ê°€ë¡œ ë°©í–¥ ë˜ëŠ” 세로 ë°©í–¥ 행으로 정리하는 ë ˆì´ì•„웃. ì´ê²ƒì€
ì°½ì˜ ê¸¸ì´ê°€ 화면 길ì´ë¥¼ 웃ë„는 경우 스í¬ë¡¤ 막대를 만듭니다.</p>
</div>
<div class="layout">
<h4><a href="layout/relative.html">관계 ë ˆì´ì•„웃</a></h4>
<a href="layout/relative.html"><img src="{@docRoot}images/ui/relativelayout-small.png" alt="" /></a>
- <p>여러 하위 ê°ì²´ì˜ 위치를 서로 관련지어 나타내거나(하위 Aê°€
+ <p>여러 하위 ê°ì²´ì˜ 위치를 서로 관련지어 나타내거나(하위 Aê°€
하위 Bì˜ ì™¼ìª½), ìƒìœ„와 관련지어 나타낼 수 있ë„ë¡ í•´ì¤ë‹ˆë‹¤(ìƒìœ„ì˜ ë§¨ ìœ„ì— ë§žì¶° ì •ë ¬).</p>
</div>
@@ -367,12 +367,12 @@ partially or totally obscuring them (unless the newer object is transparent).
<h2 id="AdapterViews" style="clear:left">어댑터로 ë ˆì´ì•„웃 구축하기</h2>
-<p>ë ˆì´ì•„ì›ƒì˜ ì½˜í…츠가 ë™ì ì´ê±°ë‚˜ 미리 ì •ì˜ë˜ì§€ ì•Šì€ ê²½ìš°,
-{@link android.widget.AdapterView}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ê°€ ë˜ëŠ” ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•˜ì—¬ ëŸ°íƒ€ìž„ì— ë³´ê¸°ë¡œ ë ˆì´ì•„ì›ƒì„ ì±„ìš¸ 수 있습니다.
-{@link android.widget.AdapterView} í´ëž˜ìŠ¤ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ëŠ” {@link android.widget.Adapter}를
+<p>ë ˆì´ì•„ì›ƒì˜ ì½˜í…츠가 ë™ì ì´ê±°ë‚˜ 미리 ì •ì˜ë˜ì§€ ì•Šì€ ê²½ìš°,
+{@link android.widget.AdapterView}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ê°€ ë˜ëŠ” ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•˜ì—¬ ëŸ°íƒ€ìž„ì— ë³´ê¸°ë¡œ ë ˆì´ì•„ì›ƒì„ ì±„ìš¸ 수 있습니다.
+{@link android.widget.AdapterView} í´ëž˜ìŠ¤ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ëŠ” {@link android.widget.Adapter}를
사용하여 ìžì‹ ì˜ ë ˆì´ì•„ì›ƒì— ë°ì´í„°ë¥¼ ë°”ì¸ë”©í•©ë‹ˆë‹¤. {@link android.widget.Adapter}ê°€ ë°ì´í„° 소스와 {@link android.widget.AdapterView}
ë ˆì´ì•„웃 사ì´ì˜ ì¤‘ê°œìž ì—­í• ì„ í•©ë‹ˆë‹¤. &mdash;{@link android.widget.Adapter}ê°€
- ë°ì´í„°ë¥¼ 검색하여(ë°°ì—´ ë˜ëŠ” ë°ì´í„°ë² ì´ìФ 쿼리와 ê°™ì€ ì†ŒìŠ¤ë¡œë¶€í„°)
+ ë°ì´í„°ë¥¼ 검색하여(ë°°ì—´ ë˜ëŠ” ë°ì´í„°ë² ì´ìФ 쿼리와 ê°™ì€ ì†ŒìŠ¤ë¡œë¶€í„°)
ê° í•­ëª©ì„ ë³´ê¸°ë¡œ 변환해서 {@link android.widget.AdapterView} ë ˆì´ì•„ì›ƒì— ì¶”ê°€ë  ìˆ˜ 있ë„ë¡ í•©ë‹ˆë‹¤.</p>
<p>어댑터로 ì§€ì›ë˜ëŠ” 보편ì ì¸ ë ˆì´ì•„ì›ƒì˜ ëª‡ 가지 예는 다ìŒê³¼ 같습니다.</p>
@@ -393,13 +393,13 @@ partially or totally obscuring them (unless the newer object is transparent).
<h3 id="FillingTheLayout" style="clear:left">ë°ì´í„°ë¡œ 어댑터 보기 채우기</h3>
-<p>{@link android.widget.ListView} ë˜ëŠ”
-{@link android.widget.GridView}와 ê°™ì€ {@link android.widget.AdapterView}를 채우려면 {@link android.widget.AdapterView} ì¸ìŠ¤í„´ìŠ¤ë¥¼
+<p>{@link android.widget.ListView} ë˜ëŠ”
+{@link android.widget.GridView}와 ê°™ì€ {@link android.widget.AdapterView}를 채우려면 {@link android.widget.AdapterView} ì¸ìŠ¤í„´ìŠ¤ë¥¼
{@link android.widget.Adapter}ì— ë°”ì¸ë”©í•˜ë©´ ë©ë‹ˆë‹¤. ì´ëŠ” 외부 소스로부터 ë°ì´í„°ë¥¼ 검색하여 ê° ë°ì´í„° í•­ëª©ì„ ë‚˜íƒ€ë‚´ëŠ” {@link
android.view.View}를 ìƒì„±í•©ë‹ˆë‹¤.</p>
-<p>Android는 {@link android.widget.Adapter}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¥¼ 여러 ê°œ 제공합니다.
-ì´ëŠ” 여러 가지 ì¢…ë¥˜ì˜ ë°ì´í„°ë¥¼ 검색하고 {@link android.widget.AdapterView}ì— ëŒ€í•œ 보기를 구축하는 ë° ìœ ìš©í•©ë‹ˆë‹¤.
+<p>Android는 {@link android.widget.Adapter}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¥¼ 여러 ê°œ 제공합니다.
+ì´ëŠ” 여러 가지 ì¢…ë¥˜ì˜ ë°ì´í„°ë¥¼ 검색하고 {@link android.widget.AdapterView}ì— ëŒ€í•œ 보기를 구축하는 ë° ìœ ìš©í•©ë‹ˆë‹¤.
가장 보편ì ì¸ 어댑터 ë‘ ê°€ì§€ë¥¼ 예로 들면 다ìŒê³¼ 같습니다.</p>
<dl>
@@ -409,7 +409,7 @@ android.widget.ArrayAdapter}ê°€ ê° í•­ëª©ì—서 {@link
java.lang.Object#toString()}를 호출하고 ê·¸ 콘í…츠를 {@link
android.widget.TextView}ì— ë°°ì¹˜í•¨ìœ¼ë¡œì¨ ê° ë°°ì—´ í•­ëª©ì— ëŒ€í•œ 보기를 ìƒì„±í•©ë‹ˆë‹¤.
<p>예를 들어, {@link
-android.widget.ListView}로 문ìžì—´ ë°°ì—´ì„ í‘œì‹œí•˜ê³ ìž í•˜ëŠ” 경우, ìƒì„±ìžë¥¼ 사용하여
+android.widget.ListView}로 문ìžì—´ ë°°ì—´ì„ í‘œì‹œí•˜ê³ ìž í•˜ëŠ” 경우, ìƒì„±ìžë¥¼ 사용하여
새로운 {@link android.widget.ArrayAdapter}를 초기화해서 ê° ë¬¸ìžì—´ê³¼ 문ìžì—´ ë°°ì—´ì— ëŒ€í•œ ë ˆì´ì•„ì›ƒì„ ì§€ì •í•˜ë©´ ë©ë‹ˆë‹¤.</p>
<pre>
ArrayAdapter&lt;String> adapter = new ArrayAdapter&lt;String>(this,
@@ -421,7 +421,7 @@ ArrayAdapter&lt;String> adapter = new ArrayAdapter&lt;String>(this,
<li>ë°°ì—´ì— ìžˆëŠ” ê° ë¬¸ìžì—´ì— 대한 {@link android.widget.TextView}ê°€ 들어있는 ë ˆì´ì•„웃</li>
<li>문ìžì—´ ë°°ì—´</li>
</ul>
-<p>그런 ë‹¤ìŒ {@link android.widget.ListView}ì—서
+<p>그런 ë‹¤ìŒ {@link android.widget.ListView}ì—서
{@link android.widget.ListView#setAdapter setAdapter()}를 호출하기만 하면 ë©ë‹ˆë‹¤.</p>
<pre>
ListView listView = (ListView) findViewById(R.id.listview);
@@ -430,7 +430,7 @@ listView.setAdapter(adapter);
<p>ê° í•­ëª©ì˜ ì™¸ê´€ì„ ì‚¬ìš©ìž ì§€ì •í•˜ë ¤ë©´ ë°°ì—´ì˜ ê°ì²´ì— 대한 {@link
java.lang.Object#toString()} 메서드를 재정ì˜í•˜ë©´ ë©ë‹ˆë‹¤. 아니면, ê° í•­ëª©ì— ëŒ€í•˜ì—¬
-{@link android.widget.TextView}ê°€ 아닌 다른 보기를 ìƒì„±í•˜ê³ ìž 하는 경우(예를 들어 ê° ë°°ì—´ 항목ì—
+{@link android.widget.TextView}ê°€ 아닌 다른 보기를 ìƒì„±í•˜ê³ ìž 하는 경우(예를 들어 ê° ë°°ì—´ 항목ì—
{@link android.widget.ImageView}를 ì›í•˜ëŠ” 경우), {@link
android.widget.ArrayAdapter} í´ëž˜ìŠ¤ë¥¼ 확장하고 {@link android.widget.ArrayAdapter#getView
getView()}를 재정ì˜í•˜ì—¬ ê° í•­ëª©ì— ëŒ€í•´ ì›í•˜ëŠ” ìœ í˜•ì˜ ë³´ê¸°ë¥¼ 반환하ë„ë¡ í•  수 있습니다.</p>
@@ -438,21 +438,21 @@ getView()}를 재정ì˜í•˜ì—¬ ê° í•­ëª©ì— ëŒ€í•´ ì›í•˜ëŠ” ìœ í˜•ì˜ ë³´ê¸°ë¥¼
</dd>
<dt>{@link android.widget.SimpleCursorAdapter}</dt>
- <dd>ì´ ì–´ëŒ‘í„°ëŠ” ë°ì´í„° 출처가 {@link android.database.Cursor}ì¼ ë•Œ 사용하십시오.
-{@link android.widget.SimpleCursorAdapter}를 사용하는 경우,
+ <dd>ì´ ì–´ëŒ‘í„°ëŠ” ë°ì´í„° 출처가 {@link android.database.Cursor}ì¼ ë•Œ 사용하십시오.
+{@link android.widget.SimpleCursorAdapter}를 사용하는 경우,
{@link android.database.Cursor}ì— ìžˆëŠ” ê° í–‰ì— ëŒ€í•˜ì—¬ 사용할 ë ˆì´ì•„ì›ƒì„ ì§€ì •í•´ì•¼ 합니다. ë˜í•œ {@link android.database.Cursor}
-ì˜ ì–´ëŠ ì—´ì´ ë ˆì´ì•„ì›ƒì˜ ì–´ëŠ ë³´ê¸°ì— ì‚½ìž…ë˜ì–´ì•¼ í• ì§€ë„ ì§€ì •í•´ì•¼ 합니다. 예를 들어 사람 ì´ë¦„ê³¼
+ì˜ ì–´ëŠ ì—´ì´ ë ˆì´ì•„ì›ƒì˜ ì–´ëŠ ë³´ê¸°ì— ì‚½ìž…ë˜ì–´ì•¼ í• ì§€ë„ ì§€ì •í•´ì•¼ 합니다. 예를 들어 사람 ì´ë¦„ê³¼
전화번호로 ì´ë£¨ì–´ì§„ 목ë¡ì„ ìƒì„±í•˜ê³ ìž 하는 경우, ê° ì‚¬ëžŒì— ëŒ€í•´ í–‰ì´ í•˜ë‚˜ì”© 있고 ì´ë¦„ê³¼ ë²ˆí˜¸ì— ëŒ€í•´ ì—´ì´ ë“¤ì–´ìžˆëŠ” {@link
android.database.Cursor}를 반환하는 쿼리를 수행하면 ë©ë‹ˆë‹¤.
그런 ë‹¤ìŒ ë ˆì´ì•„웃ì—서 ê° ê²°ê³¼ì— ëŒ€í•˜ì—¬ {@link
-android.database.Cursor}ì˜ ì–´ëŠ ì—´ì„ ì›í•˜ëŠ”ì§€ 지정하는 문ìžì—´ ë°°ì—´ì„ ë§Œë“¤ 수 있고, ê° ì—´ì´ ë°°ì¹˜ë˜ì–´ì•¼ 하는
+android.database.Cursor}ì˜ ì–´ëŠ ì—´ì„ ì›í•˜ëŠ”ì§€ 지정하는 문ìžì—´ ë°°ì—´ì„ ë§Œë“¤ 수 있고, ê° ì—´ì´ ë°°ì¹˜ë˜ì–´ì•¼ 하는
ìƒì‘하는 보기를 지정하는 정수 ë°°ì—´ì„ ë§Œë“¤ë©´ ë©ë‹ˆë‹¤.</p>
<pre>
String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER};
int[] toViews = {R.id.display_name, R.id.phone_number};
</pre>
-<p>{@link android.widget.SimpleCursorAdapter}를 ì¸ìŠ¤í„´íŠ¸í™”í•˜ëŠ” 경우, ê° ê²°ê³¼ì— ëŒ€í•´ 사용할 ë ˆì´ì•„웃과
+<p>{@link android.widget.SimpleCursorAdapter}를 ì¸ìŠ¤í„´íŠ¸í™”í•˜ëŠ” 경우, ê° ê²°ê³¼ì— ëŒ€í•´ 사용할 ë ˆì´ì•„웃과
결과가 들어있는 {@link android.database.Cursor}, 그리고 다ìŒì˜ ë‘ ë°°ì—´ì„ ì „ë‹¬í•©ë‹ˆë‹¤.</p>
<pre>
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
@@ -460,21 +460,21 @@ SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
ListView listView = getListView();
listView.setAdapter(adapter);
</pre>
-<p>그러면 {@link android.widget.SimpleCursorAdapter}가
+<p>그러면 {@link android.widget.SimpleCursorAdapter}가
{@link android.database.Cursor}ì— ìžˆëŠ” ê° í–‰ì— ëŒ€í•œ 보기를 하나씩 ìƒì„±í•©ë‹ˆë‹¤. ì´ë•Œ ìƒì‘하는 {@code toViews} 보기 ì•ˆì— ê° {@code
fromColumns} í•­ëª©ì„ ì‚½ìž…í•¨ìœ¼ë¡œì¨ ì œê³µëœ ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•©ë‹ˆë‹¤.</p>.</dd>
</dl>
-<p>애플리케ì´ì…˜ì˜ ìˆ˜ëª…ì´ ì§„í–‰ë˜ëŠ” ë™ì•ˆì— 어댑터가 ì½ëŠ” 기본 ë°ì´í„°ë¥¼ 변경하는 경우,
-{@link android.widget.ArrayAdapter#notifyDataSetChanged()}를 호출해야 합니다.
+<p>애플리케ì´ì…˜ì˜ ìˆ˜ëª…ì´ ì§„í–‰ë˜ëŠ” ë™ì•ˆì— 어댑터가 ì½ëŠ” 기본 ë°ì´í„°ë¥¼ 변경하는 경우,
+{@link android.widget.ArrayAdapter#notifyDataSetChanged()}를 호출해야 합니다.
ì´ë ‡ê²Œ 하면 ì²¨ë¶€ëœ ë³´ê¸°ì— ë°ì´í„°ê°€ 변경ë˜ì—ˆìœ¼ë©° 스스로 새로 ê³ ì³ì•¼ 한다는 ì‚¬ì‹¤ì„ ì•Œë ¤ì¤ë‹ˆë‹¤.</p>
<h3 id="HandlingUserSelections">í´ë¦­ ì´ë²¤íЏ 처리</h3>
-<p>{@link android.widget.AdapterView}ì— ìžˆëŠ” ê° í•­ëª©ì—ì„œì˜ í´ë¦­ ì´ë²¤íŠ¸ì— ì‘답하려면
+<p>{@link android.widget.AdapterView}ì— ìžˆëŠ” ê° í•­ëª©ì—ì„œì˜ í´ë¦­ ì´ë²¤íŠ¸ì— ì‘답하려면
{@link android.widget.AdapterView.OnItemClickListener} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하면 ë©ë‹ˆë‹¤. 예:</p>
<pre>
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/ko/guide/topics/ui/dialogs.jd
index 23e92c9f855e..7fad584ff700 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@ page.tags=alertdialog,dialogfragment
<li>{@link android.app.DialogFragment}</li>
<li>{@link android.app.AlertDialog}</li>
</ol>
-
+
<h2>참고 항목</h2>
<ol>
<li><a href="{@docRoot}design/building-blocks/dialogs.html">대화 ë””ìžì¸ ê°€ì´ë“œ</a></li>
@@ -41,24 +41,24 @@ page.tags=alertdialog,dialogfragment
</div>
</div>
-<p>대화는 사용ìžì—게 ê²°ì •ì„ ë‚´ë¦¬ê±°ë‚˜ 추가 정보를 입력하ë¼ëŠ”
-프롬프트를 보내는 ìž‘ì€ ì°½ìž…ë‹ˆë‹¤. 대화는 í™”ë©´ì„ ê°€ë“ ì±„ìš°ì§€ 않으며 보통 사용ìžê°€
+<p>대화는 사용ìžì—게 ê²°ì •ì„ ë‚´ë¦¬ê±°ë‚˜ 추가 정보를 입력하ë¼ëŠ”
+프롬프트를 보내는 ìž‘ì€ ì°½ìž…ë‹ˆë‹¤. 대화는 í™”ë©´ì„ ê°€ë“ ì±„ìš°ì§€ 않으며 보통 사용ìžê°€
다ìŒìœ¼ë¡œ ê³„ì† ì§„í–‰í•˜ê¸° ì „ì— ì¡°ì¹˜ë¥¼ 취해야 하는 모달 ì´ë²¤íŠ¸ì— ì“°ìž…ë‹ˆë‹¤.</p>
<div class="note design">
<p><strong>대화 ë””ìžì¸</strong></p>
- <p>언어 권장 ì‚¬í•­ì„ ë¹„ë¡¯í•œ 여러 가지 대화 ë””ìžì¸ ë°©ë²•ì— ê´€ë ¨ëœ ì •ë³´ëŠ”
+ <p>언어 권장 ì‚¬í•­ì„ ë¹„ë¡¯í•œ 여러 가지 대화 ë””ìžì¸ ë°©ë²•ì— ê´€ë ¨ëœ ì •ë³´ëŠ”
<a href="{@docRoot}design/building-blocks/dialogs.html">대화</a> ë””ìžì¸ ê°€ì´ë“œë¥¼ ì½ì–´ë³´ì‹­ì‹œì˜¤.</p>
</div>
<img src="{@docRoot}images/ui/dialogs.png" />
-<p>{@link android.app.Dialog} í´ëž˜ìŠ¤ê°€ ëŒ€í™”ì˜ ê¸°ë³¸ í´ëž˜ìФì´ì§€ë§Œ,
+<p>{@link android.app.Dialog} í´ëž˜ìŠ¤ê°€ ëŒ€í™”ì˜ ê¸°ë³¸ í´ëž˜ìФì´ì§€ë§Œ,
{@link android.app.Dialog}를 ì§ì ‘ ì¸ìŠ¤í„´íŠ¸í™”í•˜ëŠ” ê²ƒì€ ì‚¼ê°€ì•¼ 합니다.
대신 ë‹¤ìŒ í•˜ìœ„ í´ëž˜ìФ 중 하나를 사용하십시오.</p>
<dl>
<dt>{@link android.app.AlertDialog}</dt>
- <dd>제목 하나, 최대 세 ê°œì˜ ë²„íŠ¼, ì„ íƒ ê°€ëŠ¥í•œ 품목 ëª©ë¡ ë˜ëŠ”
+ <dd>제목 하나, 최대 세 ê°œì˜ ë²„íŠ¼, ì„ íƒ ê°€ëŠ¥í•œ 품목 ëª©ë¡ ë˜ëŠ”
ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì„ í‘œì‹œí•  수 있는 대화입니다.</dd>
<dt>{@link android.app.DatePickerDialog} ë˜ëŠ” {@link android.app.TimePickerDialog}</dt>
<dd>미리 ì •ì˜ëœ UIê°€ 있는 대화로 사용ìžë¡œ 하여금 ë‚ ì§œ ë˜ëŠ” ì‹œê°„ì„ ì„ íƒí•  수 있게 í•´ì¤ë‹ˆë‹¤.</dd>
@@ -66,55 +66,55 @@ page.tags=alertdialog,dialogfragment
<div class="sidebox">
<h2>ProgressDialog 피하기</h2>
-<p>Androidì—는
-{@link android.app.ProgressDialog}ë¼ê³  하는 ë˜ ë‹¤ë¥¸ 대화 í´ëž˜ìŠ¤ê°€ 있습니다. ì´ê²ƒì€ 진행률 í‘œì‹œì¤„ì´ ìžˆëŠ” 대화를 표시하는 것입니다. 그러나,
-로딩ì´ë‚˜ 확정ë˜ì§€ ì•Šì€ ì§„í–‰ë¥ ì„ ë‚˜íƒ€ë‚´ì•¼ 하는 경우 ì´ ëŒ€ì‹  <a href="{@docRoot}design/building-blocks/progress.html">진행률 ë°
-액티비티</a>ì— ëŒ€í•œ ë””ìžì¸ ì§€ì¹¨ì„ ë”°ë¥´ê³ ,
+<p>Androidì—는
+{@link android.app.ProgressDialog}ë¼ê³  하는 ë˜ ë‹¤ë¥¸ 대화 í´ëž˜ìŠ¤ê°€ 있습니다. ì´ê²ƒì€ 진행률 í‘œì‹œì¤„ì´ ìžˆëŠ” 대화를 표시하는 것입니다. 그러나,
+로딩ì´ë‚˜ 확정ë˜ì§€ ì•Šì€ ì§„í–‰ë¥ ì„ ë‚˜íƒ€ë‚´ì•¼ 하는 경우 ì´ ëŒ€ì‹  <a href="{@docRoot}design/building-blocks/progress.html">진행률 ë°
+액티비티</a>ì— ëŒ€í•œ ë””ìžì¸ ì§€ì¹¨ì„ ë”°ë¥´ê³ ,
ë ˆì´ì•„ì›ƒì˜ {@link android.widget.ProgressBar}를 사용해야 합니다.</p>
</div>
-<p>ì´ëŸ¬í•œ í´ëž˜ìŠ¤ê°€ ëŒ€í™”ì˜ ìŠ¤íƒ€ì¼ê³¼ 구조를 ì •ì˜í•˜ì§€ë§Œ, ëŒ€í™”ì˜ ì»¨í…Œì´ë„ˆë¡œëŠ”
+<p>ì´ëŸ¬í•œ í´ëž˜ìŠ¤ê°€ ëŒ€í™”ì˜ ìŠ¤íƒ€ì¼ê³¼ 구조를 ì •ì˜í•˜ì§€ë§Œ, ëŒ€í™”ì˜ ì»¨í…Œì´ë„ˆë¡œëŠ”
{@link android.support.v4.app.DialogFragment}를 사용해야 합니다.
{@link android.support.v4.app.DialogFragment}
- í´ëž˜ìŠ¤ëŠ” 대화를 만들고 ê·¸ ì™¸ê´€ì„ ê´€ë¦¬í•˜ëŠ” ë° í•„ìš”í•œ 모든 제어를 제공합니다.
+ í´ëž˜ìŠ¤ëŠ” 대화를 만들고 ê·¸ ì™¸ê´€ì„ ê´€ë¦¬í•˜ëŠ” ë° í•„ìš”í•œ 모든 제어를 제공합니다.
{@link android.app.Dialog} ê°ì²´ì—서 메서드를 호출하는 것 대신입니다.</p>
-<p>대화를 관리하기 위해 {@link android.support.v4.app.DialogFragment}를 사용하면
-사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ê±°ë‚˜ í™”ë©´ì„ ëŒë¦´ 때 등
+<p>대화를 관리하기 위해 {@link android.support.v4.app.DialogFragment}를 사용하면
+사용ìžê°€ <em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ê±°ë‚˜ í™”ë©´ì„ ëŒë¦´ 때 등
수명 주기 ì´ë²¤íŠ¸ë¥¼ 올바르게 처리하ë„ë¡ ë³´ìž¥í•  수 있습니다. {@link
-android.support.v4.app.DialogFragment} í´ëž˜ìŠ¤ë¥¼ 사용하면 ëŒ€í™”ì˜ UI를 ë” í° UIì—
+android.support.v4.app.DialogFragment} í´ëž˜ìŠ¤ë¥¼ 사용하면 ëŒ€í™”ì˜ UI를 ë” í° UIì—
í¬í•¨ì‹œí‚¬ 수 있는 구성 요소로 다시 사용할 수 있게 í•´ì£¼ê¸°ë„ í•©ë‹ˆë‹¤. ì´ê²ƒì€ ê¸°ì¡´ì˜ {@link
-android.support.v4.app.Fragment}와 똑같습니다(대화 UI를 í¬ê³  ìž‘ì€ í™”ë©´ì—서 서로 다르게
+android.support.v4.app.Fragment}와 똑같습니다(대화 UI를 í¬ê³  ìž‘ì€ í™”ë©´ì—서 서로 다르게
나타나ë„ë¡ í•˜ê³ ìž í•˜ëŠ” 경우 등).</p>
<p>ì´ ê°€ì´ë“œì˜ ë‹¤ìŒ ì„¹ì…˜ì—서는 {@link
android.support.v4.app.DialogFragment}를 {@link android.app.AlertDialog}
- ê°ì²´ì™€ 함께 조합하여 사용하는 ë°©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤. ë‚ ì§œ ë˜ëŠ” 시간 ì„ íƒê¸°ë¥¼ ìƒì„±í•˜ê³ ìž 하는 경우, 대신
+ ê°ì²´ì™€ 함께 조합하여 사용하는 ë°©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤. ë‚ ì§œ ë˜ëŠ” 시간 ì„ íƒê¸°ë¥¼ ìƒì„±í•˜ê³ ìž 하는 경우, 대신
<a href="{@docRoot}guide/topics/ui/controls/pickers.html">ì„ íƒê¸°</a> ê°€ì´ë“œë¥¼ ì½ìœ¼ì‹­ì‹œì˜¤.</p>
<p class="note"><strong>참고:</strong>
-{@link android.app.DialogFragment} í´ëž˜ìŠ¤ëŠ” ì›ëž˜
+{@link android.app.DialogFragment} í´ëž˜ìŠ¤ëŠ” ì›ëž˜
Android 3.0(API 레벨 11)ì— ì¶”ê°€ë˜ì—ˆê¸° ë•Œë¬¸ì— ì´ ë¬¸ì„œì—서는 <a href="{@docRoot}tools/support-library/index.html">ì§€ì› ë¼ì´ë¸ŒëŸ¬ë¦¬</a>와 함께 ì œê³µëœ {@link
-android.support.v4.app.DialogFragment} í´ëž˜ìŠ¤ë¥¼ 사용하는 ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤. ì´ ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì•±ì— ì¶”ê°€í•˜ë©´ Android 1.6 ì´ìƒì„ 실행하는 기기ì—서
-{@link android.support.v4.app.DialogFragment}를 비롯하여
-다른 APIë„ ë‹¤ì–‘í•˜ê²Œ 사용할 수 있습니다. ì•±ì˜ ìµœì†Œ 버전ì´
+android.support.v4.app.DialogFragment} í´ëž˜ìŠ¤ë¥¼ 사용하는 ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤. ì´ ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì•±ì— ì¶”ê°€í•˜ë©´ Android 1.6 ì´ìƒì„ 실행하는 기기ì—서
+{@link android.support.v4.app.DialogFragment}를 비롯하여
+다른 APIë„ ë‹¤ì–‘í•˜ê²Œ 사용할 수 있습니다. ì•±ì˜ ìµœì†Œ 버전ì´
API 레벨 11 ì´ìƒì¸ 경우, {@link
-android.app.DialogFragment}ì˜ í”„ë ˆìž„ì›Œí¬ ë²„ì „ì„ ì‚¬ìš©í•´ë„ ë˜ì§€ë§Œ, ì´ ë¬¸ì„œì— ìžˆëŠ” ë§í¬ëŠ”
-ì§€ì› ë¼ì´ë¸ŒëŸ¬ë¦¬ API를 대ìƒìœ¼ë¡œ 한 것ì´ë¼ëŠ” ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. ì§€ì› ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 사용할 때ì—는
+android.app.DialogFragment}ì˜ í”„ë ˆìž„ì›Œí¬ ë²„ì „ì„ ì‚¬ìš©í•´ë„ ë˜ì§€ë§Œ, ì´ ë¬¸ì„œì— ìžˆëŠ” ë§í¬ëŠ”
+ì§€ì› ë¼ì´ë¸ŒëŸ¬ë¦¬ API를 대ìƒìœ¼ë¡œ 한 것ì´ë¼ëŠ” ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. ì§€ì› ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 사용할 때ì—는
<code>android.support.v4.app.DialogFragment</code>
í´ëž˜ìŠ¤ë¥¼ 가져와야 합니다. <code>android.app.DialogFragment</code>ê°€ <em>아닙니다</em>.</p>
<h2 id="DialogFragment">대화 프래그먼트 ìƒì„±</h2>
-<p>대단히 다양한 대화 ë””ìžì¸ì„ 만들 수 있습니다. ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì€ ë¬¼ë¡ 
+<p>대단히 다양한 대화 ë””ìžì¸ì„ 만들 수 있습니다. ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì€ ë¬¼ë¡ 
<a href="{@docRoot}design/building-blocks/dialogs.html">대화</a>
-ë””ìžì¸ ê°€ì´ë“œì—서 설명한 ê²ƒë„ í¬í•¨í•©ë‹ˆë‹¤.
+ë””ìžì¸ ê°€ì´ë“œì—서 설명한 ê²ƒë„ í¬í•¨í•©ë‹ˆë‹¤.
{@link android.support.v4.app.DialogFragment}를 확장하고 {@link android.support.v4.app.DialogFragment#onCreateDialog
onCreateDialog()} 콜백 ë©”ì„œë“œì— {@link android.app.AlertDialog}를
ìƒì„±í•˜ë©´ ë©ë‹ˆë‹¤.</p>
-<p>예를 들어 다ìŒì€ {@link android.app.AlertDialog}로, ì´ëŠ”
+<p>예를 들어 다ìŒì€ {@link android.app.AlertDialog}로, ì´ëŠ”
{@link android.support.v4.app.DialogFragment} ë‚´ì—서 관리ë˜ëŠ” 것입니다.</p>
<pre>
@@ -147,14 +147,14 @@ public class FireMissilesDialogFragment extends DialogFragment {
</div>
<p>ì´ í´ëž˜ìŠ¤ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í•˜ê³  해당 ê°ì²´ì—서 {@link
-android.support.v4.app.DialogFragment#show show()}를 호출하면 대화는
+android.support.v4.app.DialogFragment#show show()}를 호출하면 대화는
그림 1ì— í‘œì‹œëœ ê²ƒì²˜ëŸ¼ 나타납니다.</p>
<p>ë‹¤ìŒ ì„¹ì…˜ì—서는 {@link android.app.AlertDialog.Builder}
API를 사용하여 대화를 ìƒì„±í•˜ëŠ” ê²ƒì— ëŒ€í•´ 좀 ë” ìžì„¸ížˆ 설명합니다.</p>
-<p>대화가 얼마나 ë³µìž¡í•œì§€ì— ë”°ë¼
-{@link android.support.v4.app.DialogFragment}ì—서 여러 가지 다른 콜백 메서드를 구현할 수 있습니다. 그중ì—는 기본ì ì¸
+<p>대화가 얼마나 ë³µìž¡í•œì§€ì— ë”°ë¼
+{@link android.support.v4.app.DialogFragment}ì—서 여러 가지 다른 콜백 메서드를 구현할 수 있습니다. 그중ì—는 기본ì ì¸
<a href="{@docRoot}guide/components/fragments.html#Lifecycle">ì¡°ê° ìˆ˜ëª… 주기 메서드</a>ë„ í¬í•¨ë©ë‹ˆë‹¤.
@@ -164,8 +164,8 @@ API를 사용하여 대화를 ìƒì„±í•˜ëŠ” ê²ƒì— ëŒ€í•´ 좀 ë” ìžì„¸ížˆ 설ëª
<h2 id="AlertDialog">경고 대화 구축</h2>
-<p>{@link android.app.AlertDialog} í´ëž˜ìŠ¤ë¥¼ 사용하면
-여러 가지 대화 ë””ìžì¸ì„ 구축할 수 있으며, 필요한 대화 í´ëž˜ìŠ¤ëŠ” ì´ê²ƒë¿ì¸ ê²½ìš°ë„ ë§ŽìŠµë‹ˆë‹¤.
+<p>{@link android.app.AlertDialog} í´ëž˜ìŠ¤ë¥¼ 사용하면
+여러 가지 대화 ë””ìžì¸ì„ 구축할 수 있으며, 필요한 대화 í´ëž˜ìŠ¤ëŠ” ì´ê²ƒë¿ì¸ ê²½ìš°ë„ ë§ŽìŠµë‹ˆë‹¤.
그림 2ì— í‘œì‹œëœ ê²ƒê³¼ ê°™ì´ ê²½ê³  대화ì—는 세 가지 ì˜ì—­ì´ 있습니다.</p>
<div class="figure" style="width:311px;margin-top:0">
@@ -175,8 +175,8 @@ API를 사용하여 대화를 ìƒì„±í•˜ëŠ” ê²ƒì— ëŒ€í•´ 좀 ë” ìžì„¸ížˆ 설ëª
<ol>
<li><b>제목</b>
- <p>ì´ê²ƒì€ ì„ íƒ í•­ëª©ì´ë©° 콘í…츠 ì˜ì—­ì— ìƒì„¸í•œ 메시지, ëª©ë¡ ë˜ëŠ”
-ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì´ ì±„ì›Œì ¸ 있는 경우ì—ë§Œ 사용해야 합니다. 단순한 메시지 ë˜ëŠ”
+ <p>ì´ê²ƒì€ ì„ íƒ í•­ëª©ì´ë©° 콘í…츠 ì˜ì—­ì— ìƒì„¸í•œ 메시지, ëª©ë¡ ë˜ëŠ”
+ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì´ ì±„ì›Œì ¸ 있는 경우ì—ë§Œ 사용해야 합니다. 단순한 메시지 ë˜ëŠ”
질문(그림 1ì˜ ëŒ€í™”ì²˜ëŸ¼)ì„ ì§„ìˆ í•´ì•¼ 하는 경우, ì œëª©ì€ ì—†ì–´ë„ ë©ë‹ˆë‹¤.</li>
<li><b>콘í…츠 ì˜ì—­</b>
<p>ì´ê²ƒì€ 메시지, ëª©ë¡ ë˜ëŠ” 다른 ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì„ í‘œì‹œí•  수 있습니다.</p></li>
@@ -202,7 +202,7 @@ builder.setMessage(R.string.dialog_message)
AlertDialog dialog = builder.create();
</pre>
-<p>ë‹¤ìŒ ì£¼ì œëŠ”
+<p>ë‹¤ìŒ ì£¼ì œëŠ”
{@link android.app.AlertDialog.Builder} í´ëž˜ìŠ¤ë¥¼ 사용하여 다양한 대화 ì†ì„±ì„ ì •ì˜í•˜ëŠ” ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다.</p>
@@ -210,8 +210,8 @@ AlertDialog dialog = builder.create();
<h3 id="AddingButtons">버튼 추가</h3>
-<p>그림 2ì— í‘œì‹œëœ ê²ƒê³¼ ê°™ì€ ìž‘ì—… ë²„íŠ¼ì„ ì¶”ê°€í•˜ë ¤ë©´
-{@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} ë°
+<p>그림 2ì— í‘œì‹œëœ ê²ƒê³¼ ê°™ì€ ìž‘ì—… ë²„íŠ¼ì„ ì¶”ê°€í•˜ë ¤ë©´
+{@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} ë°
{@link android.app.AlertDialog.Builder#setNegativeButton setNegativeButton()} 메서드를 호출하면 ë©ë‹ˆë‹¤.</p>
<pre style="clear:right">
@@ -235,8 +235,8 @@ AlertDialog dialog = builder.create();
</pre>
<p><code>set...Button()</code> 메서드ì—는 ë²„íŠ¼ì˜ ì œëª©ì´ í•„ìš”í•˜ê³ (
-<a href="{@docRoot}guide/topics/resources/string-resource.html">문ìžì—´ 리소스</a>ê°€ 제공), 사용ìžê°€ ë²„íŠ¼ì„ ëˆŒë €ì„ ë•Œ 수행할 ìž‘ì—…ì„ ì •ì˜í•˜ëŠ”
-{@link android.content.DialogInterface.OnClickListener}ê°€
+<a href="{@docRoot}guide/topics/resources/string-resource.html">문ìžì—´ 리소스</a>ê°€ 제공), 사용ìžê°€ ë²„íŠ¼ì„ ëˆŒë €ì„ ë•Œ 수행할 ìž‘ì—…ì„ ì •ì˜í•˜ëŠ”
+{@link android.content.DialogInterface.OnClickListener}ê°€
필요합니다.</p>
<p>추가할 수 있는 작업 ë²„íŠ¼ì€ ë‹¤ìŒê³¼ ê°™ì€ ì„¸ 가지가 있습니다.</p>
@@ -246,9 +246,9 @@ AlertDialog dialog = builder.create();
<dt>부정ì </dt>
<dd>ì´ê²ƒì€ ìž‘ì—…ì„ ì·¨ì†Œí•˜ëŠ” ë° ì‚¬ìš©í•´ì•¼ 합니다.</dd>
<dt>중립ì </dt>
- <dd>ì´ê²ƒì€ 사용ìžê°€ ìž‘ì—…ì„ ê³„ì†í•˜ê³  ì‹¶ì§€ ì•Šì„ ìˆ˜ 있지만
+ <dd>ì´ê²ƒì€ 사용ìžê°€ ìž‘ì—…ì„ ê³„ì†í•˜ê³  ì‹¶ì§€ ì•Šì„ ìˆ˜ 있지만
ì·¨ì†Œí•˜ê³ ìž í•œë‹¤ê³  ë³¼ 수 ì—†ì„ ë•Œ 사용해야 합니다. ì´ê²ƒì€ ê¸ì •ì  ë²„íŠ¼ê³¼ ë¶€ì •ì  ë²„íŠ¼ 사ì´ì— 나타납니다.
- ì´ëŸ° ìž‘ì—…ì„ ì˜ˆë¡œ 들면 "ë‚˜ì¤‘ì— ì•Œë¦¼" ë“±ì´ ìžˆìŠµë‹ˆë‹¤.</dd>
+ ì´ëŸ° ìž‘ì—…ì„ ì˜ˆë¡œ 들면 "ë‚˜ì¤‘ì— ì•Œë¦¼" ë“±ì´ ìžˆìŠµë‹ˆë‹¤.</dd>
</dl>
<p>{@link
@@ -271,7 +271,7 @@ android.app.AlertDialog}ì—는 ê° ë²„íŠ¼ ìœ í˜•ì„ í•˜ë‚˜ì”©ë§Œ 추가할 수 ì
<li>ì˜êµ¬ì ì¸ 다중 ì„ íƒ ëª©ë¡(확ì¸ëž€)</li>
</ul>
-<p>그림 3ì— í‘œì‹œëœ ê²ƒê³¼ ê°™ì€ ë‹¨ì¼ ì„ íƒ ëª©ë¡ì„ ìƒì„±í•˜ë ¤ë©´
+<p>그림 3ì— í‘œì‹œëœ ê²ƒê³¼ ê°™ì€ ë‹¨ì¼ ì„ íƒ ëª©ë¡ì„ ìƒì„±í•˜ë ¤ë©´
{@link android.app.AlertDialog.Builder#setItems setItems()} 메서드를 사용하면 ë©ë‹ˆë‹¤.</p>
<pre style="clear:right">
@@ -289,23 +289,23 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
}
</pre>
-<p>목ë¡ì€ ëŒ€í™”ì˜ ì½˜í…츠 ì˜ì—­ì— 나타나므로,
-대화는 메시지와 목ë¡ì„ 둘 다 표시할 수 없습니다. 대화ì—는
-{@link android.app.AlertDialog.Builder#setTitle setTitle()}로 ì œëª©ì„ ì„¤ì •í•´ì•¼ 합니다.
+<p>목ë¡ì€ ëŒ€í™”ì˜ ì½˜í…츠 ì˜ì—­ì— 나타나므로,
+대화는 메시지와 목ë¡ì„ 둘 다 표시할 수 없습니다. 대화ì—는
+{@link android.app.AlertDialog.Builder#setTitle setTitle()}로 ì œëª©ì„ ì„¤ì •í•´ì•¼ 합니다.
목ë¡ì— 대한 í•­ëª©ì„ ì§€ì •í•˜ë ¤ë©´ {@link
android.app.AlertDialog.Builder#setItems setItems()}를 호출하여 ë°°ì—´ì„ í•˜ë‚˜ 전달합니다.
아니면 {@link
-android.app.AlertDialog.Builder#setAdapter setAdapter()}를 사용하여 목ë¡ì„ ì§€ì •í•´ë„ ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 ë™ì ì¸ ë°ì´í„°ê°€ 있는 목ë¡(예: ë°ì´í„°ë² ì´ìФì—서 가져온 것)ì„
+android.app.AlertDialog.Builder#setAdapter setAdapter()}를 사용하여 목ë¡ì„ ì§€ì •í•´ë„ ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 ë™ì ì¸ ë°ì´í„°ê°€ 있는 목ë¡(예: ë°ì´í„°ë² ì´ìФì—서 가져온 것)ì„
{@link android.widget.ListAdapter}로 ì§€ì›í•  수 있게 í•´ì¤ë‹ˆë‹¤.</p>
-<p>{@link android.widget.ListAdapter}로 목ë¡ì„ ì§€ì›í•˜ê¸°ë¡œ ì„ íƒí•˜ëŠ” 경우,
-í•­ìƒ {@link android.support.v4.content.Loader}를 사용해야 콘í…츠가 비ë™ê¸°ì‹ìœ¼ë¡œ
-로딩ë©ë‹ˆë‹¤.
-ì´ê²ƒì€ <a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">어댑터로 ë ˆì´ì•„웃
+<p>{@link android.widget.ListAdapter}로 목ë¡ì„ ì§€ì›í•˜ê¸°ë¡œ ì„ íƒí•˜ëŠ” 경우,
+í•­ìƒ {@link android.support.v4.content.Loader}를 사용해야 콘í…츠가 비ë™ê¸°ì‹ìœ¼ë¡œ
+로딩ë©ë‹ˆë‹¤.
+ì´ê²ƒì€ <a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">어댑터로 ë ˆì´ì•„웃
구축하기</a> ë° <a href="{@docRoot}guide/components/loaders.html">로ë”</a>
ê°€ì´ë“œì— ë” ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.</p>
-<p class="note"><strong>참고:</strong> 기본ì ìœ¼ë¡œ ëª©ë¡ í•­ëª©ì„ í„°ì¹˜í•˜ë©´ 대화를 무시하게 ë©ë‹ˆë‹¤.
+<p class="note"><strong>참고:</strong> 기본ì ìœ¼ë¡œ ëª©ë¡ í•­ëª©ì„ í„°ì¹˜í•˜ë©´ 대화를 무시하게 ë©ë‹ˆë‹¤.
다만 다ìŒê³¼ ê°™ì€ ì˜êµ¬ì ì¸ ì„ íƒ ëª©ë¡ ì¤‘ 하나를 사용하는 경우는 예외입니다.</p>
<div class="figure" style="width:290px;margin:-30px 0 0 40px">
@@ -317,15 +317,15 @@ android.app.AlertDialog.Builder#setAdapter setAdapter()}를 사용하여 목ë¡ì
<h4 id="Checkboxes">ì˜êµ¬ì  다중 ì„ íƒ ë˜ëŠ” ë‹¨ì¼ ì„ íƒ ëª©ë¡ ì¶”ê°€</h4>
-<p>다중 ì„ íƒ í•­ëª© 목ë¡ì„ 추가하거나(확ì¸ëž€)
-ë‹¨ì¼ ì„ íƒ ëª©ë¡ì„ 추가하려면(무선 버튼), ê°ê°
+<p>다중 ì„ íƒ í•­ëª© 목ë¡ì„ 추가하거나(확ì¸ëž€)
+ë‹¨ì¼ ì„ íƒ ëª©ë¡ì„ 추가하려면(무선 버튼), ê°ê°
{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} ë˜ëŠ”
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} ë˜ëŠ”
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()} 메서드를 사용합니다.</p>
-<p>예를 들어 다ìŒì€ 그림 4ì— í‘œì‹œëœ ê²ƒê³¼ ê°™ì´ ë‹¤ì¤‘ ì„ íƒ ëª©ë¡ì„ ìƒì„±í•˜ëŠ” 방법입니다.
-ì´ê²ƒì€ ì„ íƒí•œ 항목ì„
+<p>예를 들어 다ìŒì€ 그림 4ì— í‘œì‹œëœ ê²ƒê³¼ ê°™ì´ ë‹¤ì¤‘ ì„ íƒ ëª©ë¡ì„ ìƒì„±í•˜ëŠ” 방법입니다.
+ì´ê²ƒì€ ì„ íƒí•œ 항목ì„
{@link java.util.ArrayList}ì— ì €ìž¥í•©ë‹ˆë‹¤.</p>
<pre style="clear:right">
@@ -346,7 +346,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
- // Else, if the item is already in the array, remove it
+ // Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
@@ -371,11 +371,11 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
}
</pre>
-<p>ì¼ë°˜ì ì¸ 목ë¡ê³¼ 무선 ë²„íŠ¼ì´ ìžˆëŠ” ëª©ë¡ ì–‘ìª½ ëª¨ë‘ "ë‹¨ì¼ ì„ íƒ" 작업ì„
+<p>ì¼ë°˜ì ì¸ 목ë¡ê³¼ 무선 ë²„íŠ¼ì´ ìžˆëŠ” ëª©ë¡ ì–‘ìª½ ëª¨ë‘ "ë‹¨ì¼ ì„ íƒ" 작업ì„
제공하지만, 사용ìžì˜ ì„ íƒì„ ìœ ì§€í•˜ê³ ìž í•˜ëŠ” 경우 {@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
-setSingleChoiceItems()}를 사용해야 합니다.
-다시 ë§í•´, 대화를 ë‚˜ì¤‘ì— ë‹¤ì‹œ 여는 경우 사용ìžì˜ 현재 ì„ íƒì´ 무엇ì¸ì§€ 나타내야 하며,
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+setSingleChoiceItems()}를 사용해야 합니다.
+다시 ë§í•´, 대화를 ë‚˜ì¤‘ì— ë‹¤ì‹œ 여는 경우 사용ìžì˜ 현재 ì„ íƒì´ 무엇ì¸ì§€ 나타내야 하며,
그러면 무선 버튼으로 목ë¡ì„ ìƒì„±í•  수 있습니다.</p>
@@ -389,12 +389,12 @@ setSingleChoiceItems()}를 사용해야 합니다.
<p class="img-caption"><strong>그림 5.</strong> ì‚¬ìš©ìž ì§€ì • 대화 ë ˆì´ì•„웃입니다.</p>
</div>
-<p>대화ì—서 ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì„ ì›í•˜ëŠ” 경우, ë ˆì´ì•„ì›ƒì„ ìƒì„±í•œ ë‹¤ìŒ ì´ë¥¼
+<p>대화ì—서 ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì„ ì›í•˜ëŠ” 경우, ë ˆì´ì•„ì›ƒì„ ìƒì„±í•œ ë‹¤ìŒ ì´ë¥¼
{@link android.app.AlertDialog}ì— ì¶”ê°€í•˜ë©´ ë©ë‹ˆë‹¤. ì´ë•Œ {@link
android.app.AlertDialog.Builder#setView setView()} on your {@link
android.app.AlertDialog.Builder} ê°ì²´ë¥¼ 호출하는 ë°©ë²•ì„ ì”니다.</p>
-<p>기본ì ìœ¼ë¡œ ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì´ ëŒ€í™”ì°½ì„ ê°€ë“ ì±„ìš°ì§€ë§Œ, 여전히
+<p>기본ì ìœ¼ë¡œ ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì´ ëŒ€í™”ì°½ì„ ê°€ë“ ì±„ìš°ì§€ë§Œ, 여전히
{@link android.app.AlertDialog.Builder} 메서드를 사용하여 버튼과 ì œëª©ì„ ì¶”ê°€í•  수 있습니다.</p>
<p>예를 들어 다ìŒì€ 그림 5ì— í‘œì‹œëœ ëŒ€í™”ì— ëŒ€í•œ ë ˆì´ì•„웃 파ì¼ìž…니다.</p>
@@ -437,14 +437,14 @@ android.app.AlertDialog.Builder} ê°ì²´ë¥¼ 호출하는 ë°©ë²•ì„ ì”니다.</p>
</pre>
<p class="note"><strong>íŒ:</strong> 기본ì ìœ¼ë¡œ {@link android.widget.EditText}
- 요소를 설정하여 {@code "textPassword"} ìž…ë ¥ ìœ í˜•ì„ ì‚¬ìš©í•˜ê³ ìž í•˜ëŠ” 경우, 글꼴 패밀리가 ê³ ì • í­ìœ¼ë¡œ 설정ë˜ì–´ 있으므로
-글꼴 패밀리를 {@code "sans-serif"}로 변경해야 합니다. 그래야 양쪽 í…스트 필드가 ëª¨ë‘ ì¼ì¹˜í•˜ëŠ” 글꼴 스타ì¼ì„
+ 요소를 설정하여 {@code "textPassword"} ìž…ë ¥ ìœ í˜•ì„ ì‚¬ìš©í•˜ê³ ìž í•˜ëŠ” 경우, 글꼴 패밀리가 ê³ ì • í­ìœ¼ë¡œ 설정ë˜ì–´ 있으므로
+글꼴 패밀리를 {@code "sans-serif"}로 변경해야 합니다. 그래야 양쪽 í…스트 필드가 ëª¨ë‘ ì¼ì¹˜í•˜ëŠ” 글꼴 스타ì¼ì„
사용할 수 있습니다.</p>
-<p>{@link android.support.v4.app.DialogFragment} ì•ˆì˜ ë ˆì´ì•„ì›ƒì„ íŒ½ì°½ì‹œí‚¤ë ¤ë©´,
-{@link android.view.LayoutInflater}를
-{@link android.app.Activity#getLayoutInflater()}로 가져와
-{@link android.view.LayoutInflater#inflate inflate()}를 호출합니다.
+<p>{@link android.support.v4.app.DialogFragment} ì•ˆì˜ ë ˆì´ì•„ì›ƒì„ íŒ½ì°½ì‹œí‚¤ë ¤ë©´,
+{@link android.view.LayoutInflater}를
+{@link android.app.Activity#getLayoutInflater()}로 가져와
+{@link android.view.LayoutInflater#inflate inflate()}를 호출합니다.
여기서 첫 번째 매개변수가 ë ˆì´ì•„웃 리소스 IDì´ê³  ë‘ ë²ˆì§¸ 매개변수가 ë ˆì´ì•„ì›ƒì˜ ìƒìœ„ 보기입니다.
그러므로 그런 ë‹¤ìŒ {@link android.app.AlertDialog#setView setView()}를
호출하여 ë ˆì´ì•„ì›ƒì„ ëŒ€í™”ì— ë°°ì¹˜í•  수 있습니다.</p>
@@ -470,16 +470,16 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
- });
+ });
return builder.create();
}
</pre>
<div class="note">
-<p><strong>íŒ:</strong> ì‚¬ìš©ìž ì§€ì • 대화를 ì›í•˜ëŠ” 경우,
-{@link android.app.Activity}를 대신 í‘œì‹œí•´ë„ ë©ë‹ˆë‹¤. ì´ëŠ”
+<p><strong>íŒ:</strong> ì‚¬ìš©ìž ì§€ì • 대화를 ì›í•˜ëŠ” 경우,
+{@link android.app.Activity}를 대신 í‘œì‹œí•´ë„ ë©ë‹ˆë‹¤. ì´ëŠ”
{@link android.app.Dialog} API 대신 대화로 표시하는 것입니다. 단순히 액티비티를 하나 ìƒì„±í•œ ë‹¤ìŒ ê·¸ 테마를 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
-&lt;activity&gt;}</a> 매니페스트 ìš”ì†Œì— ìžˆëŠ”
+&lt;activity&gt;}</a> 매니페스트 ìš”ì†Œì— ìžˆëŠ”
{@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog}로
설정하면 ë©ë‹ˆë‹¤.</p>
@@ -493,19 +493,19 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<h2 id="PassingEvents">ì´ë²¤íŠ¸ë¥¼ ëŒ€í™”ì˜ í˜¸ìŠ¤íŠ¸ì— ë‹¤ì‹œ 전달</h2>
-<p>사용ìžê°€ ëŒ€í™”ì˜ ìž‘ì—… 버튼 중 하나를 터치하거나 목ë¡ì—서 í•­ëª©ì„ í•˜ë‚˜ ì„ íƒí•˜ë©´,
-{@link android.support.v4.app.DialogFragment}ê°€
+<p>사용ìžê°€ ëŒ€í™”ì˜ ìž‘ì—… 버튼 중 하나를 터치하거나 목ë¡ì—서 í•­ëª©ì„ í•˜ë‚˜ ì„ íƒí•˜ë©´,
+{@link android.support.v4.app.DialogFragment}ê°€
필요한 ìž‘ì—…ì„ ì•Œì•„ì„œ 수행할 ìˆ˜ë„ ìžˆì§€ë§Œ ëŒ€ë¶€ë¶„ì˜ ê²½ìš° ì´ë²¤íŠ¸ë¥¼ 대화를 ì—° 액티비티 ë˜ëŠ” í”„ëž˜ê·¸ë¨¼íŠ¸ì— ì§ì ‘ ì „ë‹¬í•˜ê³ ìž í•  수 있습니다.
- ì´ë ‡ê²Œ 하려면 ê° í´ë¦­ ì´ë²¤íŠ¸ì˜ ìœ í˜•ë³„ë¡œ 메서드가 있는 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•©ë‹ˆë‹¤.
- 그런 ë‹¤ìŒ í•´ë‹¹ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 대화로부터 작업 ì´ë²¤íŠ¸ë¥¼ 수신할
+ ì´ë ‡ê²Œ 하려면 ê° í´ë¦­ ì´ë²¤íŠ¸ì˜ ìœ í˜•ë³„ë¡œ 메서드가 있는 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•©ë‹ˆë‹¤.
+ 그런 ë‹¤ìŒ í•´ë‹¹ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 대화로부터 작업 ì´ë²¤íŠ¸ë¥¼ 수신할
호스트 구성 ìš”ì†Œì— êµ¬í˜„í•˜ë©´ ë©ë‹ˆë‹¤.</p>
-<p>예를 들어 다ìŒì€ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” {@link android.support.v4.app.DialogFragment}입니다.
+<p>예를 들어 다ìŒì€ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì •ì˜í•˜ëŠ” {@link android.support.v4.app.DialogFragment}입니다.
ì´ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 통해 ì´ë²¤íŠ¸ë¥¼ 호스트 ì•¡í‹°ë¹„í‹°ì— ë„로 전달하게 ë©ë‹ˆë‹¤.</p>
<pre>
public class NoticeDialogFragment extends DialogFragment {
-
+
/* The activity that creates an instance of this dialog fragment must
* implement this interface in order to receive event callbacks.
* Each method passes the DialogFragment in case the host needs to query it. */
@@ -513,10 +513,10 @@ public class NoticeDialogFragment extends DialogFragment {
public void onDialogPositiveClick(DialogFragment dialog);
public void onDialogNegativeClick(DialogFragment dialog);
}
-
+
// Use this instance of the interface to deliver action events
NoticeDialogListener mListener;
-
+
// Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
&#64;Override
public void onAttach(Activity activity) {
@@ -535,15 +535,15 @@ public class NoticeDialogFragment extends DialogFragment {
}
</pre>
-<p>대화를 호스팅하는 액티비티는 ëŒ€í™”ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 만듭니다.
-ì´ë•Œ 대화 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìƒì„±ìžë¥¼ 사용하며,
+<p>대화를 호스팅하는 액티비티는 ëŒ€í™”ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 만듭니다.
+ì´ë•Œ 대화 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìƒì„±ìžë¥¼ 사용하며,
{@code NoticeDialogListener} ì¸í„°íŽ˜ì´ìФ êµ¬í˜„ì„ í†µí•´ ëŒ€í™”ì˜ ì´ë²¤íŠ¸ë¥¼ 수신하게 ë©ë‹ˆë‹¤.</p>
<pre>
public class MainActivity extends FragmentActivity
implements NoticeDialogFragment.NoticeDialogListener{
...
-
+
public void showNoticeDialog() {
// Create an instance of the dialog fragment and show it
DialogFragment dialog = new NoticeDialogFragment();
@@ -568,8 +568,8 @@ public class MainActivity extends FragmentActivity
</pre>
<p>액티비티가 {@code NoticeDialogListener}를 구현하기 때문ì—&mdash;ìœ„ì— í‘œì‹œëœ {@link android.support.v4.app.Fragment#onAttach onAttach()}
- 콜백 메서드가 ê°•ì œ ì ìš©&mdash;해당 대화 프래그먼트는
-ì¸í„°íŽ˜ì´ìФ 콜백 메서드를 사용하여 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ í´ë¦­ ì´ë²¤íŠ¸ë¥¼
+ 콜백 메서드가 ê°•ì œ ì ìš©&mdash;해당 대화 프래그먼트는
+ì¸í„°íŽ˜ì´ìФ 콜백 메서드를 사용하여 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ í´ë¦­ ì´ë²¤íŠ¸ë¥¼
전달할 수 있습니다.</p>
<pre>
@@ -604,11 +604,11 @@ public class NoticeDialogFragment extends DialogFragment {
<p>대화를 í‘œì‹œí•˜ê³ ìž í•˜ëŠ” 경우, {@link
android.support.v4.app.DialogFragment}ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í•œ ë‹¤ìŒ {@link android.support.v4.app.DialogFragment#show
-show()}를 호출하여 {@link android.support.v4.app.FragmentManager}와 대화 í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•œ
+show()}를 호출하여 {@link android.support.v4.app.FragmentManager}와 대화 í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•œ
태그 ì´ë¦„ì„ ì „ë‹¬í•©ë‹ˆë‹¤.</p>
-<p>{@link android.support.v4.app.FragmentManager}를 가져오려면
-{@link android.support.v4.app.FragmentActivity}ì—서
+<p>{@link android.support.v4.app.FragmentManager}를 가져오려면
+{@link android.support.v4.app.FragmentActivity}ì—서
{@link android.support.v4.app.FragmentActivity#getSupportFragmentManager()}를 호출하거나 {@link
android.support.v4.app.Fragment}로부터 {@link
android.support.v4.app.Fragment#getFragmentManager()}를 호출합니다. 예:</p>
@@ -620,7 +620,7 @@ public void confirmFireMissiles() {
}
</pre>
-<p>ë‘ ë²ˆì§¸ ì¸ìˆ˜ {@code "missiles"}는 시스템ì´
+<p>ë‘ ë²ˆì§¸ ì¸ìˆ˜ {@code "missiles"}는 시스템ì´
í•„ìš”ì— ë”°ë¼ í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ìƒíƒœë¥¼ 저장하고 ë³µì›í•˜ëŠ” ë° ì‚¬ìš©í•˜ëŠ” 고유한 태그 ì´ë¦„입니다. ì´ íƒœê·¸ë¥¼ 사용하면 {@link android.support.v4.app.FragmentManager#findFragmentByTag
findFragmentByTag()}를 호출하여 해당 프래그먼트를 파악할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
</p>
@@ -630,20 +630,20 @@ findFragmentByTag()}를 호출하여 해당 프래그먼트를 파악할 수ë„
<h2 id="FullscreenDialog">대화를 ì „ì²´ 화면으로 ë˜ëŠ” í¬í•¨ëœ 프래그먼트로 표시</h2>
-<p>UI ë””ìžì¸ì—서, 몇몇 ìƒí™© 하ì—서는 UIì˜ í•œ ì¡°ê°ì„ 대화로 나타내지만
-다른 ìƒí™©ì—서는 ì „ì²´ 화면ì´ë‚˜ í¬í•¨ëœ 프래그먼트로 ë‚˜íƒ€ë‚´ê³ ìž í•˜ëŠ” 경우가 ìžˆì„ ìˆ˜
+<p>UI ë””ìžì¸ì—서, 몇몇 ìƒí™© 하ì—서는 UIì˜ í•œ ì¡°ê°ì„ 대화로 나타내지만
+다른 ìƒí™©ì—서는 ì „ì²´ 화면ì´ë‚˜ í¬í•¨ëœ 프래그먼트로 ë‚˜íƒ€ë‚´ê³ ìž í•˜ëŠ” 경우가 ìžˆì„ ìˆ˜
있습니다(ì´ëŠ” 어쩌면 기기 í™”ë©´ì´ ëŒ€í˜•ì¸ì§€ 소형ì¸ì§€ì— ë”°ë¼ ë‹¬ë¼ì§ˆ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤). {@link android.support.v4.app.DialogFragment}
í´ëž˜ìФì—서 ì´ëŸ° ìœ ì—°ì„±ì„ ì œê³µí•˜ëŠ” ê²ƒì€ ì´ê²ƒì´ 여전히 í¬í•¨ 가능한 {@link
android.support.v4.app.Fragment} ì—­í• ì„ í•  수 있기 때문입니다.</p>
<p>그러나 ì´ ê²½ìš°ì—는 대화를 구축하는 ë° {@link android.app.AlertDialog.Builder AlertDialog.Builder}
-ë˜ëŠ” 다른 {@link android.app.Dialog} ê°ì²´ë¥¼ 사용하면 안 ë©ë‹ˆë‹¤.
-{@link android.support.v4.app.DialogFragment}를 í¬í•¨ 가능한 ìƒíƒœë¡œ 만들려면,
-ë ˆì´ì•„웃 ì•ˆì— ìžˆëŠ” ëŒ€í™”ì˜ UI를 ì •ì˜í•´ì•¼ 합니다. 그런 ë‹¤ìŒ ë ˆì´ì•„웃ì„
+ë˜ëŠ” 다른 {@link android.app.Dialog} ê°ì²´ë¥¼ 사용하면 안 ë©ë‹ˆë‹¤.
+{@link android.support.v4.app.DialogFragment}를 í¬í•¨ 가능한 ìƒíƒœë¡œ 만들려면,
+ë ˆì´ì•„웃 ì•ˆì— ìžˆëŠ” ëŒ€í™”ì˜ UI를 ì •ì˜í•´ì•¼ 합니다. 그런 ë‹¤ìŒ ë ˆì´ì•„웃ì„
{@link android.support.v4.app.DialogFragment#onCreateView
onCreateView()} ì½œë°±ì— ë¡œë”©í•©ë‹ˆë‹¤.</p>
-<p>다ìŒì€ 대화 ë˜ëŠ” í¬í•¨ 가능한 프래그먼트 중 ì–´ëŠ ìª½ìœ¼ë¡œë“  í‘œì‹œë  ìˆ˜ 있는
+<p>다ìŒì€ 대화 ë˜ëŠ” í¬í•¨ 가능한 프래그먼트 중 ì–´ëŠ ìª½ìœ¼ë¡œë“  í‘œì‹œë  ìˆ˜ 있는
{@link android.support.v4.app.DialogFragment} 예시입니다(<code>purchase_items.xml</code>ì´ë¼ëŠ” ë ˆì´ì•„웃 사용).</p>
<pre>
@@ -656,7 +656,7 @@ public class CustomDialogFragment extends DialogFragment {
// Inflate the layout to use as dialog or embedded fragment
return inflater.inflate(R.layout.purchase_items, container, false);
}
-
+
/** The system calls this only when creating the layout in a dialog. */
&#64;Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
@@ -678,7 +678,7 @@ public class CustomDialogFragment extends DialogFragment {
public void showDialog() {
FragmentManager fragmentManager = getSupportFragmentManager();
CustomDialogFragment newFragment = new CustomDialogFragment();
-
+
if (mIsLargeLayout) {
// The device is using a large layout, so show the fragment as a dialog
newFragment.show(fragmentManager, "dialog");
@@ -695,14 +695,14 @@ public void showDialog() {
}
</pre>
-<p>프래그먼트 íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•˜ëŠ” ê²ƒì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€
+<p>프래그먼트 íŠ¸ëžœìž­ì…˜ì„ ìˆ˜í–‰í•˜ëŠ” ê²ƒì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€
<a href="{@docRoot}guide/components/fragments.html">프래그먼트</a> ê°€ì´ë“œë¥¼ 참조하십시오.</p>
<p>ì´ ì˜ˆì‹œì—서는 <code>mIsLargeLayout</code> ë¶€ìš¸ì´ í˜„ìž¬ 기기가 ì•±ì˜ í° ë ˆì´ì•„웃 ë””ìžì¸ì„ ì¨ì•¼ 할지를
나타냅니다(ë”°ë¼ì„œ ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ ì „ì²´ 화면보다는 대화로 표시).
- ì´ëŸ° ì¢…ë¥˜ì˜ ë¶€ìš¸ì„ ì„¤ì •í•˜ëŠ” 가장 ì¢‹ì€ ë°©ë²•ì€
+ ì´ëŸ° ì¢…ë¥˜ì˜ ë¶€ìš¸ì„ ì„¤ì •í•˜ëŠ” 가장 ì¢‹ì€ ë°©ë²•ì€
<a href="{@docRoot}guide/topics/resources/more-resources.html#Bool">부울 리소스 ê°’</a>ì„
-여러 가지 화면 í¬ê¸°ì— 대한 <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">대체 리소스</a> 값으로 선언하는 것입니다.
+여러 가지 화면 í¬ê¸°ì— 대한 <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">대체 리소스</a> 값으로 선언하는 것입니다.
예를 들어 다ìŒì€ 여러 가지 화면 í¬ê¸°ì— 대한 ë‘ ê°€ì§€ ë²„ì „ì˜ ë¶€ìš¸ 리소스입니다.</p>
<p class="code-caption">res/values/bools.xml</p>
@@ -721,7 +721,7 @@ public void showDialog() {
&lt;/resources>
</pre>
-<p>그러면 액티비티ì˜
+<p>그러면 액티비티ì˜
{@link android.app.Activity#onCreate onCreate()} 메서드 ì¤‘ì— {@code mIsLargeLayout} ê°’ì„ ì´ˆê¸°í™”í•  수 있습니다.</p>
<pre>
@@ -740,14 +740,14 @@ public void onCreate(Bundle savedInstanceState) {
<h3 id="ActivityAsDialog">액티비티를 í° í™”ë©´ì— ëŒ€í™”ë¡œ 표시</h3>
-<p>ìž‘ì€ í™”ë©´ì˜ ê²½ìš° 대화를 ì „ì²´ 화면 UI로 표시하는 대신, í° í™”ë©´ì— ìžˆì„ ë•Œì—는
+<p>ìž‘ì€ í™”ë©´ì˜ ê²½ìš° 대화를 ì „ì²´ 화면 UI로 표시하는 대신, í° í™”ë©´ì— ìžˆì„ ë•Œì—는
{@link android.app.Activity}를 대화로 í‘œì‹œí•¨ìœ¼ë¡œì¨ ê°™ì€ ê²°ê³¼ë¥¼ ì–»ì„ ìˆ˜ 있습니다.
- ì–´ëŠ ë°©ì‹ì„ 사용할 것ì¸ì§€ëŠ” 앱 ë””ìžì¸ì— ë”°ë¼ ë‹¬ë¼ì§€ì§€ë§Œ,
-액티비티를 대화로 표시하면 ì•±ì´ ì´ë¯¸ ìž‘ì€ í™”ë©´ìš©ìœ¼ë¡œ ë””ìžì¸ëœ ìƒíƒœì—서
-태블릿ì—ì„œì˜ í™˜ê²½ì„ ê°œì„ í•˜ê¸° 위해 ì¼ì‹œì ì¸ 액티비티를 대화로 표시하는 경우
+ ì–´ëŠ ë°©ì‹ì„ 사용할 것ì¸ì§€ëŠ” 앱 ë””ìžì¸ì— ë”°ë¼ ë‹¬ë¼ì§€ì§€ë§Œ,
+액티비티를 대화로 표시하면 ì•±ì´ ì´ë¯¸ ìž‘ì€ í™”ë©´ìš©ìœ¼ë¡œ ë””ìžì¸ëœ ìƒíƒœì—서
+태블릿ì—ì„œì˜ í™˜ê²½ì„ ê°œì„ í•˜ê¸° 위해 ì¼ì‹œì ì¸ 액티비티를 대화로 표시하는 경우
유용할 때가 많습니다.</p>
-<p>í° í™”ë©´ì˜ ê²½ìš° 액티비티를 대화로만 표시하려면,
+<p>í° í™”ë©´ì˜ ê²½ìš° 액티비티를 대화로만 표시하려면,
{@link android.R.style#Theme_Holo_DialogWhenLarge Theme.Holo.DialogWhenLarge}
테마를 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
&lt;activity&gt;}</a> 매니페스트 ìš”ì†Œì— ì ìš©í•˜ë©´ ë©ë‹ˆë‹¤.</p>
@@ -762,11 +762,11 @@ public void onCreate(Bundle savedInstanceState) {
<h2 id="DismissingADialog">대화 무시</h2>
-<p>사용ìžê°€
+<p>사용ìžê°€
{@link android.app.AlertDialog.Builder}로 ìƒì„±í•œ 작업 버튼 중 하나ë¼ë„ 터치하면 ì‹œìŠ¤í…œì´ ëŒ€í™”ë¥¼ 대신 무시합니다.</p>
-<p>ì‹œìŠ¤í…œì€ ì‚¬ìš©ìžê°€ 대화 목ë¡ì—서 í•­ëª©ì„ í„°ì¹˜í•˜ëŠ” 경우ì—ë„ ëŒ€í™”ë¥¼ 무시합니다.
-다만 목ë¡ì´ 무선 버튼ì´ë‚˜ 확ì¸ëž€ì„ 사용하는 경우ì—는 예외입니다.
+<p>ì‹œìŠ¤í…œì€ ì‚¬ìš©ìžê°€ 대화 목ë¡ì—서 í•­ëª©ì„ í„°ì¹˜í•˜ëŠ” 경우ì—ë„ ëŒ€í™”ë¥¼ 무시합니다.
+다만 목ë¡ì´ 무선 버튼ì´ë‚˜ 확ì¸ëž€ì„ 사용하는 경우ì—는 예외입니다.
그렇지 않으면 대화를 수ë™ìœ¼ë¡œ 무시할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. {@link
android.support.v4.app.DialogFragment}ì—서 {@link android.support.v4.app.DialogFragment#dismiss()}를 호출하면 ë©ë‹ˆë‹¤.</p>
@@ -775,24 +775,24 @@ android.support.v4.app.DialogFragment}ì—서 {@link android.support.v4.app.Dialo
android.support.v4.app.DialogFragment}ì—서 @link
android.support.v4.app.DialogFragment#onDismiss onDismiss()}를 구현하면 ë©ë‹ˆë‹¤.</p>
-<p>ë˜í•œ 대화를 <em>취소</em>í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ê²ƒì€ 사용ìžê°€ ìž‘ì—…ì„ ì™„ë£Œí•˜ì§€ 않고 대화를
-분명히 떠났다는 ê²ƒì„ ë‚˜íƒ€ë‚´ëŠ” 특수 ì´ë²¤íŠ¸ìž…ë‹ˆë‹¤. ì´ê²ƒì€ 사용ìžê°€
-<em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ê±°ë‚˜ 대화 ì˜ì—­ ë°”ê¹¥ì˜ í™”ë©´ì„ í„°ì¹˜í•˜ê±°ë‚˜,
+<p>ë˜í•œ 대화를 <em>취소</em>í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ê²ƒì€ 사용ìžê°€ ìž‘ì—…ì„ ì™„ë£Œí•˜ì§€ 않고 대화를
+분명히 떠났다는 ê²ƒì„ ë‚˜íƒ€ë‚´ëŠ” 특수 ì´ë²¤íŠ¸ìž…ë‹ˆë‹¤. ì´ê²ƒì€ 사용ìžê°€
+<em>뒤로</em> ë²„íŠ¼ì„ ëˆ„ë¥´ê±°ë‚˜ 대화 ì˜ì—­ ë°”ê¹¥ì˜ í™”ë©´ì„ í„°ì¹˜í•˜ê±°ë‚˜,
개발ìžê°€ {@link
android.app.Dialog}ì—서 명시ì ìœ¼ë¡œ {@link android.app.Dialog#cancel()}ì„ í˜¸ì¶œí•œ 경우 ë°œìƒí•©ë‹ˆë‹¤(예: ëŒ€í™”ì˜ "취소" ë²„íŠ¼ì— ëŒ€í•œ ì‘답으로).</p>
<p>ìœ„ì˜ ì˜ˆì‹œì— ë‚˜íƒ€ë‚œ 바와 ê°™ì´ ì·¨ì†Œ ì´ë²¤íŠ¸ì— ì‘답하려면 {@link
-android.support.v4.app.DialogFragment} í´ëž˜ìФì—서
+android.support.v4.app.DialogFragment} í´ëž˜ìФì—서
{@link android.support.v4.app.DialogFragment#onCancel onCancel()}ì„ êµ¬í˜„í•˜ë©´ ë©ë‹ˆë‹¤.</p>
-<p class="note"><strong>참고:</strong> 시스템ì€
-{@link android.support.v4.app.DialogFragment#onCancel onCancel()} ì½œë°±ì„ ë¶ˆëŸ¬ì˜¤ëŠ” ì´ë²¤íŠ¸ê°€ ë°œìƒí•  때마다
-{@link android.support.v4.app.DialogFragment#onDismiss onDismiss()}를 호출합니다.
+<p class="note"><strong>참고:</strong> 시스템ì€
+{@link android.support.v4.app.DialogFragment#onCancel onCancel()} ì½œë°±ì„ ë¶ˆëŸ¬ì˜¤ëŠ” ì´ë²¤íŠ¸ê°€ ë°œìƒí•  때마다
+{@link android.support.v4.app.DialogFragment#onDismiss onDismiss()}를 호출합니다.
그러나 {@link android.app.Dialog#dismiss Dialog.dismiss()} ë˜ëŠ” {@link
-android.support.v4.app.DialogFragment#dismiss DialogFragment.dismiss()}를 호출하면
-ì‹œìŠ¤í…œì€ {@link android.support.v4.app.DialogFragment#onDismiss onDismiss()}는 호출하지만 {@link android.support.v4.app.DialogFragment#onCancel onCancel()}ì€
-호출하지 <em>않습니다</em>. ë”°ë¼ì„œ 사용ìžê°€ 대화를 보기ì—서 제거하기 위해 ëŒ€í™”ì— ìžˆëŠ”
-<em>ê¸ì •ì ì¸</em> ë²„íŠ¼ì„ ëˆ„ë¥´ëŠ” 경우, ì¼ë°˜ì ìœ¼ë¡œ {@link android.support.v4.app.DialogFragment#dismiss dismiss()}를
+android.support.v4.app.DialogFragment#dismiss DialogFragment.dismiss()}를 호출하면
+ì‹œìŠ¤í…œì€ {@link android.support.v4.app.DialogFragment#onDismiss onDismiss()}는 호출하지만 {@link android.support.v4.app.DialogFragment#onCancel onCancel()}ì€
+호출하지 <em>않습니다</em>. ë”°ë¼ì„œ 사용ìžê°€ 대화를 보기ì—서 제거하기 위해 ëŒ€í™”ì— ìžˆëŠ”
+<em>ê¸ì •ì ì¸</em> ë²„íŠ¼ì„ ëˆ„ë¥´ëŠ” 경우, ì¼ë°˜ì ìœ¼ë¡œ {@link android.support.v4.app.DialogFragment#dismiss dismiss()}를
사용해야 합니다.</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/menus.jd b/docs/html-intl/intl/ko/guide/topics/ui/menus.jd
index c115c2a7c3ba..924445d94e64 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/menus.jd
@@ -72,7 +72,7 @@ parent.link=index.html
<dl>
<dt><strong>옵션 메뉴 ë° ìž‘ì—… 모ìŒ</strong></dt>
<dd><a href="#options-menu">옵션 메뉴</a>는 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ 기본 메뉴 항목 컬렉션
-입니다.
+입니다.
ì´ê³³ì— "검색", "ì´ë©”ì¼ ìž‘ì„±" ë° "설정"ê³¼ ê°™ì´ ì•±ì— ì „ì²´ì ì¸ ì˜í–¥ì„ 미치는 ìž‘ì—…ì„ ë°°ì¹˜í•´ì•¼ 합니다.
<p>Android 2.3 ì´í•˜ë¥¼ 대ìƒìœ¼ë¡œ 개발하는 경우 사용ìžëŠ”
<em>메뉴</em> ë²„íŠ¼ì„ ëˆŒëŸ¬ì„œ 옵션 메뉴 패ë„ì„ í‘œì‹œí•  수 있습니다.</p>
@@ -83,9 +83,9 @@ parent.link=index.html
사용하기 시작해야 합니다.</p>
<p><a href="#options-menu">옵션 메뉴 만들기</a> ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
</dd>
-
+
<dt><strong>컨í…스트 메뉴 ë° ìƒí™©ë³„ 작업 모드</strong></dt>
-
+
<dd>컨í…스트 메뉴는 사용ìžê°€ 요소를 길게 í´ë¦­í•˜ë©´ 나타나는 <a href="#FloatingContextMenu">ë¶€ë™ ë©”ë‰´</a>
입니다. ì´ê²ƒì€ ì„ íƒí•œ 콘í…츠나 컨í…스트 프레임ì—
ì˜í–¥ì„ 주는 ìž‘ì—…ì„ ì œê³µí•©ë‹ˆë‹¤.
@@ -94,7 +94,7 @@ parent.link=index.html
여러 í•­ëª©ì„ ì„ íƒí•  수 있습니다.</p>
<p><a href="#context-menu">ìƒí™©ë³„ 메뉴 만들기</a>ì— ê´€í•œ ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
</dd>
-
+
<dt><strong>íŒì—… 메뉴</strong></dt>
<dd>íŒì—… 메뉴는 메뉴를 호출하는 ë³´ê¸°ì— ê³ ì •ëœ ìˆ˜ì§ ëª©ë¡ì—서 항목 목ë¡ì„
표시합니다. ì´ê²ƒì€ ì • 콘í…츠와 ê´€ë ¨ì´ ë˜ëŠ” ìž‘ì—…ì˜ ì˜¤ë²„í”Œë¡œë¥¼ 제공하거나
@@ -112,7 +112,7 @@ parent.link=index.html
<p>모든 메뉴 ìœ í˜•ì— ëŒ€í•˜ì—¬, Android는 표준 XML 형ì‹ìœ¼ë¡œ 메뉴 í•­ëª©ì„ ì •ì˜í•©ë‹ˆë‹¤.
액티비티 코드ì—서 메뉴를 구축하는 대신
-XML <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a>ì—서 메뉴와 모든 í•­ëª©ì„ ì •ì˜í•´ì•¼ 합니다. 그러면
+XML <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a>ì—서 메뉴와 모든 í•­ëª©ì„ ì •ì˜í•´ì•¼ 합니다. 그러면
액티비티나 프래그먼트ì—서 메뉴 리소스를 팽창시킬 수 있습니다({@link android.view.Menu} 개체로 로딩하면 ë©ë‹ˆë‹¤).
</p>
@@ -128,17 +128,17 @@ XML <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소ì
디렉터리ì—서 XML 파ì¼ì„ ìƒì„±í•˜ê³  ë‹¤ìŒ ìš”ì†Œë¡œ 메뉴를 구축합니다.</p>
<dl>
<dt><code>&lt;menu></code></dt>
- <dd>메뉴 í•­ëª©ì˜ ì»¨í…Œì´ë„ˆì¸ {@link android.view.Menu}를 ì •ì˜í•©ë‹ˆë‹¤.
+ <dd>메뉴 í•­ëª©ì˜ ì»¨í…Œì´ë„ˆì¸ {@link android.view.Menu}를 ì •ì˜í•©ë‹ˆë‹¤.
<code>&lt;menu></code> 요소는 파ì¼ì˜ 루트 노드여야 하고 하나 ì´ìƒì˜
<code>&lt;item></code>와 <code>&lt;group></code> 요소를 보유할 수 있습니다.</dd>
<dt><code>&lt;item></code></dt>
- <dd>메뉴 ì•ˆì˜ í•­ëª© 하나를 나타내는 {@link android.view.MenuItem}ì„ ìƒì„±í•©ë‹ˆë‹¤.
+ <dd>메뉴 ì•ˆì˜ í•­ëª© 하나를 나타내는 {@link android.view.MenuItem}ì„ ìƒì„±í•©ë‹ˆë‹¤.
ì´ ìš”ì†Œ 안ì—는 하위 메뉴를 ìƒì„±í•˜ê¸° 위한 중첩 <code>&lt;menu></code> 요소가 ë“¤ì–´ìžˆì„ ìˆ˜ 있습니다.</dd>
-
+
<dt><code>&lt;group></code></dt>
<dd>{@code &lt;item&gt;} 요소를 위한 ì„ íƒì ì¸ 투명 컨테ì´ë„ˆìž…니다. ì´ê²ƒì„ 사용하면 활성 ìƒíƒœì™€ 가시성 ë“±ì˜ ì†ì„±ì„ 공유할 수 있ë„ë¡
-메뉴 í•­ëª©ì„ ë¶„ë¥˜í•˜ë„ë¡ í•´ì¤ë‹ˆë‹¤.
+메뉴 í•­ëª©ì„ ë¶„ë¥˜í•˜ë„ë¡ í•´ì¤ë‹ˆë‹¤.
ìžì„¸í•œ 정보를 보려면 <a href="#groups">메뉴 그룹 만들기</a>를 참조하십시오.</dd>
</dl>
@@ -207,7 +207,7 @@ MenuInflater.inflate()}를 사용하여 메뉴 리소스를 팽창해야 합니ë
<div class="figure" style="width:200px;margin:0">
<img src="{@docRoot}images/options_menu.png" height="333" alt="" />
- <p class="img-caption"><strong>그림 1.</strong> Android 2.3ì—서 실행ë˜ëŠ”
+ <p class="img-caption"><strong>그림 1.</strong> Android 2.3ì—서 실행ë˜ëŠ”
브ë¼ìš°ì €ì˜ 옵션 메뉴입니다.</p>
</div>
@@ -220,21 +220,21 @@ MenuInflater.inflate()}를 사용하여 메뉴 리소스를 팽창해야 합니ë
<ul>
<li><strong>Android 2.3.x(API 레벨 10)
ì´í•˜</strong>ì—서 애플리케ì´ì…˜ì„ ê°œë°œí–ˆì„ ê²½ìš°,
-그림 1ê³¼ ê°™ì´ ì‚¬ìš©ìžê°€ <em>메뉴</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ 화면 ì•„ëž˜ì— ì˜µì…˜ ë©”ë‰´ì˜ ì½˜í…츠가 나타납니다. ì´ê²ƒì´ ì—´ë ¸ì„ ë•Œ 가장 먼저 ë³´ì´ëŠ” 부분ì€
+그림 1ê³¼ ê°™ì´ ì‚¬ìš©ìžê°€ <em>메뉴</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ 화면 ì•„ëž˜ì— ì˜µì…˜ ë©”ë‰´ì˜ ì½˜í…츠가 나타납니다. ì´ê²ƒì´ ì—´ë ¸ì„ ë•Œ 가장 먼저 ë³´ì´ëŠ” 부분ì€
ì•„ì´ì½˜
-메뉴ì´ê³ , ì´ëŠ” 최대 여섯 ê°œì˜ ë©”ë‰´ í•­ëª©ì„ ë³´ìœ í•©ë‹ˆë‹¤. ë©”ë‰´ì— ì—¬ì„¯ 개를 넘는 í•­ëª©ì´ í¬í•¨ë˜ì–´ 있는 경우, Android는
-여섯 번째 항목과 나머지 í•­ëª©ì„ ë”보기 ë©”ë‰´ì— ë°°ì¹˜í•©ë‹ˆë‹¤. ì´ê²ƒì€ 사용ìžê°€
+메뉴ì´ê³ , ì´ëŠ” 최대 여섯 ê°œì˜ ë©”ë‰´ í•­ëª©ì„ ë³´ìœ í•©ë‹ˆë‹¤. ë©”ë‰´ì— ì—¬ì„¯ 개를 넘는 í•­ëª©ì´ í¬í•¨ë˜ì–´ 있는 경우, Android는
+여섯 번째 항목과 나머지 í•­ëª©ì„ ë”보기 ë©”ë‰´ì— ë°°ì¹˜í•©ë‹ˆë‹¤. ì´ê²ƒì€ 사용ìžê°€
<em>ë”보기</em>를 ì„ íƒí•˜ë©´ ì—´ 수 있습니다.</li>
<li><strong>Android 3.0(API 레벨 11)
ì´ìƒ</strong>ì—서 애플리케ì´ì…˜ì„ ê°œë°œí–ˆì„ ê²½ìš°, 옵션 ë©”ë‰´ì˜ í•­ëª©ì€ <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모ìŒ</a>ì—서 ì´ìš©í•  수 있습니다. 기본ì ìœ¼ë¡œ ì‹œìŠ¤í…œì€ ëª¨ë“  í•­ëª©ì„ ìž‘ì—… ë”ë³´ê¸°ì— ë°°ì¹˜í•©ë‹ˆë‹¤.
사용ìžëŠ” 작업 ëª¨ìŒ ì˜¤ë¥¸ìª½ì— ìžˆëŠ”
-작업 ë”보기 ì•„ì´ì½˜ìœ¼ë¡œ ì´ë¥¼ 표시할 수 있습니다(ë˜ëŠ” ì´ìš©í•  수 ìžˆì„ ê²½ìš° 기기 <em>메뉴</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ ë©ë‹ˆë‹¤).
+작업 ë”보기 ì•„ì´ì½˜ìœ¼ë¡œ ì´ë¥¼ 표시할 수 있습니다(ë˜ëŠ” ì´ìš©í•  수 ìžˆì„ ê²½ìš° 기기 <em>메뉴</em> ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ ë©ë‹ˆë‹¤).
중요한 ìž‘ì—…ì— ëŒ€í•œ 빠른 액세스를
활성화하려면
{@code android:showAsAction="ifRoom"}ì„ í•´ë‹¹ {@code &lt;item&gt;} ìš”ì†Œì— ì¶”ê°€í•˜ì—¬ 몇 가지 í•­ëª©ì´ ìž‘ì—… 모ìŒì— 표시ë˜ë„ë¡ ìˆ˜ì¤€ì„ ì˜¬ë¦½ë‹ˆë‹¤(그림
2 참조). <p>작업 항목과 다른 작업 ëª¨ìŒ ë™ìž‘ì— ê´€í•œ ìžì„¸í•œ 정보는 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모ìŒ</a> ê°€ì´ë“œë¥¼ 참조하십시오. </p>
-<p class="note"><strong>참고:</strong> Andoid 3.0 ì´ìƒì„ 대ìƒìœ¼ë¡œ 개발하지 <em>않ë”ë¼ë„</em>
+<p class="note"><strong>참고:</strong> Andoid 3.0 ì´ìƒì„ 대ìƒìœ¼ë¡œ 개발하지 <em>않ë”ë¼ë„</em>
ê°œë°œìž ë‚˜ë¦„ì˜ ìž‘ì—… ëª¨ìŒ ë ˆì´ì•„ì›ƒì„ êµ¬ì¶•í•˜ì—¬ 비슷한 효과를 낼 수 있습니다. 예를 들어,
작업 모ìŒì´ í¬í•¨ëœ Android ì´ì „ ë²„ì „ì„ ì§€ì›í•˜ëŠ” ë°©ë²•ì€ <a href="{@docRoot}resources/samples/ActionBarCompat/index.html">작업 ëª¨ìŒ í˜¸í™˜ì„±</a>
ìƒ˜í”Œì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
@@ -247,13 +247,13 @@ MenuInflater.inflate()}를 사용하여 메뉴 리소스를 팽창해야 합니ë
<p>{@link android.app.Activity}
하위 í´ëž˜ìŠ¤ë‚˜ {@link android.app.Fragment} 하위 í´ëž˜ìФì—서 옵션 메뉴용 í•­ëª©ì„ ì„ ì–¸í•  수 있습니다. 액티비티와 프래그먼트가 모ë‘
-옵션 메뉴용 í•­ëª©ì„ ì„ ì–¸í•  경우, ì´ë“¤ì€ UIì—서 ì¡°í•©ë©ë‹ˆë‹¤. ì•¡í‹°ë¹„í‹°ì˜ í•­ëª©ì´ ë¨¼ì € 나타나고,
-ë’¤ì´ì–´ ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ í•­ëª©ì´ ë‚˜íƒ€ë‚˜ë©° ì´ë•Œ 순서는 ê° í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€ëœ ìˆœì„œë¥¼
+옵션 메뉴용 í•­ëª©ì„ ì„ ì–¸í•  경우, ì´ë“¤ì€ UIì—서 ì¡°í•©ë©ë‹ˆë‹¤. ì•¡í‹°ë¹„í‹°ì˜ í•­ëª©ì´ ë¨¼ì € 나타나고,
+ë’¤ì´ì–´ ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ í•­ëª©ì´ ë‚˜íƒ€ë‚˜ë©° ì´ë•Œ 순서는 ê° í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€ëœ ìˆœì„œë¥¼
따릅니다. 필요한 경우 ì´ë™í•´ì•¼ 하는 ê° {@code &lt;item&gt;}ì—서{@code android:orderInCategory} ì†ì„±ì´ í¬í•¨ëœ
메뉴 í•­ëª©ì„ ë‹¤ì‹œ 정렬할 수 있습니다.</p>
<p>ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ 옵션 메뉴를 지정하려면 {@link
-android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}를 재정ì˜í•©ë‹ˆë‹¤(프래그먼트는
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}를 재정ì˜í•©ë‹ˆë‹¤(프래그먼트는
ìžì‹ ë§Œì˜ {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()} ì½œë°±ì„ ì œê³µí•©ë‹ˆë‹¤). ì´ ë©”ì„œë“œì—서
(<a href="#xml">XMLì—서 ì •ì˜ëœ</a>) 메뉴 리소스를 콜백ì—서 ì œê³µëœ {@link
android.view.Menu}로 팽창할 수 있습니다. 예:</p>
@@ -283,7 +283,7 @@ android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}를
<p>사용ìžê°€ 옵션 메뉴ì—서 í•­ëª©ì„ ì„ íƒí•˜ë©´(작업 모ìŒì˜ 작업 항목 í¬í•¨),
ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ì˜ {@link android.app.Activity#onOptionsItemSelected(MenuItem)
-onOptionsItemSelected()} 메서드를 호출합니다. ì´ ë©”ì„œë“œê°€ ì„ íƒí•œ {@link android.view.MenuItem}ì„ ì „ë‹¬í•©ë‹ˆë‹¤. í•­ëª©ì„ ì‹ë³„하려면
+onOptionsItemSelected()} 메서드를 호출합니다. ì´ ë©”ì„œë“œê°€ ì„ íƒí•œ {@link android.view.MenuItem}ì„ ì „ë‹¬í•©ë‹ˆë‹¤. í•­ëª©ì„ ì‹ë³„하려면
{@link android.view.MenuItem#getItemId()}ì„ í˜¸ì¶œí•˜ë©´ ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ”(메뉴 ë¦¬ì†ŒìŠ¤ì˜ {@code android:id} ì†ì„±ìœ¼ë¡œ 지정ë˜ê±°ë‚˜
{@link android.view.Menu#add(int,int,int,int) add()} ë©”ì„œë“œì— ì œê³µëœ ì •ìˆ˜ê°€ í¬í•¨ëœ) 메뉴 í•­ëª©ì— ëŒ€í•œ 고유 ID를 반환합니다
. ì´ ID와
@@ -317,7 +317,7 @@ android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}를
{@code true}를 반환하거나 모든 프래그먼트가 í˜¸ì¶œë  ë•Œê¹Œì§€ (ê° í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ì¶”ê°€ëœ ìˆœì„œëŒ€ë¡œ) ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•´ 해당 메서드를 호출합니다.</p>
<p class="note"><strong>íŒ:</strong> Android 3.0ì—는
-{@code android:onClick} ì†ì„±ì„ 사용하여 XMLì— ìžˆëŠ” 메뉴 í•­ëª©ì— ëŒ€í•œ 온-í´ë¦­ ë™ìž‘ì„ ì •ì˜í•˜ëŠ” ê¸°ëŠ¥ì´ ì¶”ê°€ë©ë‹ˆë‹¤.
+{@code android:onClick} ì†ì„±ì„ 사용하여 XMLì— ìžˆëŠ” 메뉴 í•­ëª©ì— ëŒ€í•œ 온-í´ë¦­ ë™ìž‘ì„ ì •ì˜í•˜ëŠ” ê¸°ëŠ¥ì´ ì¶”ê°€ë©ë‹ˆë‹¤.
ì†ì„± ê°’ì€ ë©”ë‰´ë¥¼ 사용하여 액티비티가 ì •ì˜í•œ ë©”ì„œë“œì˜ ì´ë¦„ì´ì–´ì•¼ 합니다. 메서드는
공개여야 하며 í•˜ë‚˜ì˜ {@link android.view.MenuItem} 매개변수를 수ë½í•´ì•¼ 합니다. ì‹œìŠ¤í…œì´ ì´ ë©”ì„œë“œë¥¼ 호출하면
메서드가 ì„ íƒí•œ 메뉴 í•­ëª©ì„ ì „ë‹¬í•©ë‹ˆë‹¤. ìžì„¸í•œ 정보와 예시는 <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a> 문서를 참조하십시오.</p>
@@ -326,14 +326,14 @@ android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}를
{@link android.app.Activity#onCreateOptionsMenu(Menu)
onCreateOptionsMenu()}와 {@link android.app.Activity#onOptionsItemSelected(MenuItem)
-onOptionsItemSelected()} 메서드를 제외하고 ì•„ë¬´ê²ƒë„ êµ¬í˜„í•˜ì§€ 않는 액티비티를 만드는 ê²ƒì„ ê³ ë ¤í•´ë³´ì‹­ì‹œì˜¤. 그런 ë‹¤ìŒ ì´ í´ëž˜ìŠ¤ë¥¼ ê°™ì€ ì˜µì…˜ 메뉴를 공유해야 하는 ê° ì•¡í‹°ë¹„í‹°ì— ëŒ€í•´
+onOptionsItemSelected()} 메서드를 제외하고 ì•„ë¬´ê²ƒë„ êµ¬í˜„í•˜ì§€ 않는 액티비티를 만드는 ê²ƒì„ ê³ ë ¤í•´ë³´ì‹­ì‹œì˜¤. 그런 ë‹¤ìŒ ì´ í´ëž˜ìŠ¤ë¥¼ ê°™ì€ ì˜µì…˜ 메뉴를 공유해야 하는 ê° ì•¡í‹°ë¹„í‹°ì— ëŒ€í•´
확장하면 ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 메뉴 ìž‘ì—…ì„ ì²˜ë¦¬í•˜ëŠ” 코드 세트 하나를 관리할 수 있고,
ê° í•˜ìœ„ í´ëž˜ìŠ¤ê°€ 메뉴 ë™ìž‘ì„ ìƒì†í•©ë‹ˆë‹¤.
ì´ëŸ° 하위 액티비티 중 í•˜ë‚˜ì— ë©”ë‰´ í•­ëª©ì„ ì¶”ê°€í•˜ë ¤ë©´,
해당 액티비티ì—서 {@link android.app.Activity#onCreateOptionsMenu(Menu)
onCreateOptionsMenu()}를 재정ì˜í•˜ì‹­ì‹œì˜¤. {@code super.onCreateOptionsMenu(menu)}를 호출하여
ì›ëž˜ 메뉴 í•­ëª©ì„ ìƒì„±í•˜ê³ , {@link
-android.view.Menu#add(int,int,int,int) menu.add()}ì´ í¬í•¨ëœ 새로운 메뉴 í•­ëª©ì„ ì¶”ê°€í•©ë‹ˆë‹¤. ê°ê°ì˜ 메뉴 í•­ëª©ì— ëŒ€í•œ 슈í¼í´ëž˜ìŠ¤ì˜ ë™ìž‘ì„
+android.view.Menu#add(int,int,int,int) menu.add()}ì´ í¬í•¨ëœ 새로운 메뉴 í•­ëª©ì„ ì¶”ê°€í•©ë‹ˆë‹¤. ê°ê°ì˜ 메뉴 í•­ëª©ì— ëŒ€í•œ 슈í¼í´ëž˜ìŠ¤ì˜ ë™ìž‘ì„
재정ì˜í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
@@ -363,10 +363,10 @@ onPrepareOptionsMenu()}를 호출합니다.</p>
{@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()}를 호출하여
ì‹œìŠ¤í…œì´ {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}를 호출하ë„ë¡ ìš”ì²­í•´ì•¼ 합니다.</p>
-<p class="note"><strong>참고:</strong>
-현재 ì´ˆì ì´ ë§žì¶°ì ¸ 있는 {@link android.view.View}를 기반으로 한
-옵션 ë©”ë‰´ì˜ í•­ëª©ì„ ì ˆëŒ€ë¡œ 변경해서는 안 ë©ë‹ˆë‹¤. 터치 모드ì—서는(사용ìžê°€ 트랙볼ì´ë‚˜ d-패드를 사용하지 않는 경우),
-보기가 ì´ˆì ì„ 취할 수 없으므로 옵션 ë©”ë‰´ì— ìžˆëŠ” í•­ëª©ì„ ìˆ˜ì •í• 
+<p class="note"><strong>참고:</strong>
+현재 ì´ˆì ì´ ë§žì¶°ì ¸ 있는 {@link android.view.View}를 기반으로 한
+옵션 ë©”ë‰´ì˜ í•­ëª©ì„ ì ˆëŒ€ë¡œ 변경해서는 안 ë©ë‹ˆë‹¤. 터치 모드ì—서는(사용ìžê°€ 트랙볼ì´ë‚˜ d-패드를 사용하지 않는 경우),
+보기가 ì´ˆì ì„ 취할 수 없으므로 옵션 ë©”ë‰´ì— ìžˆëŠ” í•­ëª©ì„ ìˆ˜ì •í• 
근거로 ì´ˆì ì„ 사용해서는 ê²°ì½” 안 ë©ë‹ˆë‹¤. {@link
android.view.View}ì˜ ì»¨í…ìŠ¤íŠ¸ì— ë¯¼ê°í•œ 메뉴를 ì œê³µí•˜ê³ ìž í•˜ëŠ” 경우, <a href="#context-menu">컨í…스트 메뉴</a>를 사용하십시오.</p>
@@ -390,18 +390,18 @@ android.widget.ListView}나 {@link android.widget.GridView}, 사용ìžê°€ ê° í•
<ul>
<li><a href="#FloatingContextMenu">ë¶€ë™ ì»¨í…스트 메뉴</a>를 사용합니다. 사용ìžê°€ 컨í…스트 ë©”ë‰´ì— ëŒ€í•œ ì§€ì›ì„ 선언하는 보기를 길게 í´ë¦­í•˜ë©´
(대화와 유사한) 메뉴 í•­ëª©ì˜ ë¶€ë™ ëª©ë¡ì´
-나타납니다. 사용ìžëŠ” 한 항목ì—서 한 ë²ˆì— í•˜ë‚˜ì˜ ìƒí™©ë³„
+나타납니다. 사용ìžëŠ” 한 항목ì—서 한 ë²ˆì— í•˜ë‚˜ì˜ ìƒí™©ë³„
ìž‘ì—…ì„ ìˆ˜í–‰í•  수 있습니다.</li>
<li><a href="#CAB">ìƒí™©ë³„ 작업 모드</a>를 사용합니다. ì´ ëª¨ë“œëŠ” 화면 ìœ„ì— ìžˆëŠ” 막대ì—서 ì„ íƒëœ í•­ëª©ì— ì˜í–¥ì„ 미치는 작업 í•­ëª©ì´ í¬í•¨ëœ <em>ìƒí™©ë³„ 작업 막대</em>를 표시하는
{@link android.view.ActionMode}ì˜ ì‹œìŠ¤í…œ 구현입니다.
- ì´ ëª¨ë“œê°€ 활성 ìƒíƒœì´ë©´ 사용ìžëŠ”
+ ì´ ëª¨ë“œê°€ 활성 ìƒíƒœì´ë©´ 사용ìžëŠ”
여러 ê°œì˜ í•­ëª©ì—서 한 ìž‘ì—…ì„ í•œêº¼ë²ˆì— ìˆ˜í–‰í•  수 있습니다(ì•±ì´ ì´ë¥¼ 허용하는 경우).</li>
</ul>
<p class="note"><strong>참고:</strong> ìƒí™©ë³„ 작업 모드는 Android 3.0(API
레벨 11) ì´ìƒì—서 ì´ìš©í•  수 있으며, ì´ìš© 가능할 때 컨í…스트 작업 표시용으로 기본 ì„¤ì •ëœ ê¸°ìˆ ìž…ë‹ˆë‹¤.
- ì•±ì´ 3.0 ì´í•˜ì˜ ë²„ì „ì„ ì§€ì›í•  경우 해당 기기ì—서는
+ ì•±ì´ 3.0 ì´í•˜ì˜ ë²„ì „ì„ ì§€ì›í•  경우 해당 기기ì—서는
ë¶€ë™ ì»¨í…스트 메뉴로 ëŒì•„가야 합니다.</p>
@@ -409,8 +409,8 @@ android.widget.ListView}나 {@link android.widget.GridView}, 사용ìžê°€ ê° í•
<p>ë¶€ë™ ì»¨í…스트 메뉴를 제공하려면 다ìŒê³¼ ê°™ì´ í•©ë‹ˆë‹¤.</p>
<ol>
- <li>컨í…스트 메뉴가 ì—°ê´€ë˜ì–´ì•¼ 하는 {@link android.view.View}를 등ë¡í•©ë‹ˆë‹¤. 그러려면
-{@link android.app.Activity#registerForContextMenu(View) registerForContextMenu()}를 호출하고 여기ì—
+ <li>컨í…스트 메뉴가 ì—°ê´€ë˜ì–´ì•¼ 하는 {@link android.view.View}를 등ë¡í•©ë‹ˆë‹¤. 그러려면
+{@link android.app.Activity#registerForContextMenu(View) registerForContextMenu()}를 호출하고 여기ì—
{@link android.view.View}를 전달하면 ë©ë‹ˆë‹¤.
<p>액티비티가 {@link android.widget.ListView} ë˜ëŠ” {@link android.widget.GridView}를 사용하고
ê° í•­ëª©ì´ ê°™ì€ ì»¨í…스트 메뉴를 제공하게 하고 ì‹¶ì„ ê²½ìš°,
@@ -419,7 +419,7 @@ android.app.Activity#registerForContextMenu(View) registerForContextMenu()}ì— ì
</li>
<li>{@link android.app.Activity}나 {@link android.app.Fragment}ì—서 {@link
-android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()} 메서드를
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()} 메서드를
구현합니다.
<p>등ë¡ëœ 보기가 롱-í´ë¦­ ì´ë²¤íŠ¸ë¥¼ 수신하면, ì‹œìŠ¤í…œì´ {@link
android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
@@ -437,9 +437,9 @@ public void onCreateContextMenu(ContextMenu menu, View v,
<p>{@link android.view.MenuInflater}를 사용하면 <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a>ì—서 컨í…스트 메뉴를 팽창하게 í•´ì¤ë‹ˆë‹¤. 콜백 메서드
매개변수ì—는 사용ìžê°€ ì„ íƒí•œ {@link android.view.View}와
-ì„ íƒí•œ í•­ëª©ì— ëŒ€í•œ 추가 정보를 제공하는 {@link android.view.ContextMenu.ContextMenuInfo} ê°ì²´ê°€
-í¬í•¨ë©ë‹ˆë‹¤. ì•¡í‹°ë¹„í‹°ì— ì—¬ëŸ¬ ê°œì˜ ë³´ê¸°ê°€ 있고 ì´ë“¤ì´ ê°ê° 서로 다른 컨í…스트 메뉴를 제공하는 경우,
-ì´ì™€ ê°™ì€ ë§¤ê°œë³€ìˆ˜ë¥¼ 사용하여 팽창할 컨í…스트 메뉴가 무엇ì¸ì§€
+ì„ íƒí•œ í•­ëª©ì— ëŒ€í•œ 추가 정보를 제공하는 {@link android.view.ContextMenu.ContextMenuInfo} ê°ì²´ê°€
+í¬í•¨ë©ë‹ˆë‹¤. ì•¡í‹°ë¹„í‹°ì— ì—¬ëŸ¬ ê°œì˜ ë³´ê¸°ê°€ 있고 ì´ë“¤ì´ ê°ê° 서로 다른 컨í…스트 메뉴를 제공하는 경우,
+ì´ì™€ ê°™ì€ ë§¤ê°œë³€ìˆ˜ë¥¼ 사용하여 팽창할 컨í…스트 메뉴가 무엇ì¸ì§€
íŒë³„í•  수 있습니다.</p>
</li>
@@ -470,8 +470,8 @@ public boolean onContextItemSelected(MenuItem item) {
XMLì—서 메뉴 ì •ì˜</a> ì„¹ì…˜ì— ë‚˜íƒ€ë‚œ 바와 ê°™ì´ {@code
android:id} ì†ì„±ì„ 사용하여 XMLì˜ ê° ë©”ë‰´ í•­ëª©ì— ì´ë¥¼ 할당해야 합니다.</p>
-<p>메뉴 í•­ëª©ì„ ì„±ê³µì ìœ¼ë¡œ 처리하면 {@code true}를 반환합니다. 메뉴 í•­ëª©ì„ ì²˜ë¦¬í•˜ì§€ 않는 경우,
-해당 메뉴 í•­ëª©ì„ ìŠˆí¼í´ëž˜ìФ êµ¬í˜„ì— ì „ë‹¬í•´ì•¼ 합니다. ì•¡í‹°ë¹„í‹°ì— í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ í¬í•¨ë˜ì–´ 있는 경우
+<p>메뉴 í•­ëª©ì„ ì„±ê³µì ìœ¼ë¡œ 처리하면 {@code true}를 반환합니다. 메뉴 í•­ëª©ì„ ì²˜ë¦¬í•˜ì§€ 않는 경우,
+해당 메뉴 í•­ëª©ì„ ìŠˆí¼í´ëž˜ìФ êµ¬í˜„ì— ì „ë‹¬í•´ì•¼ 합니다. ì•¡í‹°ë¹„í‹°ì— í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ í¬í•¨ë˜ì–´ 있는 경우
해당 액티비티가 첫 번째로 ì´ ì½œë°±ì„ ìˆ˜ì‹ í•©ë‹ˆë‹¤. 처리ë˜ì§€ ì•Šì„ ë•Œ 슈í¼í´ëž˜ìŠ¤ë¥¼ 호출하면 시스템ì´
ì´ë²¤íŠ¸ë¥¼ ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ ê° ì½œë°± ë©”ì„œë“œì— ì „ë‹¬í•©ë‹ˆë‹¤.
{@code true} ë˜ëŠ” {@code false}ê°€ ë°˜í™˜ë  ë•Œê¹Œì§€ (ê° í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ì¶”ê°€ëœ ìˆœì„œëŒ€ë¡œ) 한 ë²ˆì— í•˜ë‚˜ì”© 전달ë©ë‹ˆë‹¤ (
@@ -484,7 +484,7 @@ false}를 반환하므로 처리ë˜ì§€ ì•Šì„ ë•ŒëŠ” 언제나 ìŠˆí¼ í´ëž˜ìФë
<h3 id="CAB">ìƒí™©ë³„ ë™ìž‘ 모드 사용</h3>
<p>ìƒí™©ë³„ 작업 모드는 ì‚¬ìš©ìž ìƒí˜¸ ìž‘ìš©ì„ ì»¨í…스트 작업 ìˆ˜í–‰ì— ì§‘ì¤‘ì‹œí‚¤ëŠ” {@link android.view.ActionMode}ì˜
-시스템 구현입니다. 사용ìžê°€ í•­ëª©ì„ ì„ íƒí•˜ì—¬
+시스템 구현입니다. 사용ìžê°€ í•­ëª©ì„ ì„ íƒí•˜ì—¬
ì´ ëª¨ë“œë¥¼ 활성화하면, <em>ìƒí™©ë³„ 작업 모ìŒ</em>ì´ í™”ë©´ ìœ„ì— ë‚˜íƒ€ë‚˜ì„œ
사용ìžê°€ 현재 ì„ íƒëœ 항목ì—서 수행할 수 있는 ìž‘ì—…ì„ í‘œì‹œí•©ë‹ˆë‹¤. ì´ ëª¨ë“œê°€
활성화ë˜ë©´ 사용ìžëŠ” 여러 í•­ëª©ì„ ì„ íƒí•˜ê³ (개발ìžê°€ ì´ë¥¼ 허용하는 경우), í•­ëª©ì„ ì„ íƒ í•´ì œí•˜ê³ , 액티비티 ë‚´ì—서
@@ -492,15 +492,15 @@ false}를 반환하므로 처리ë˜ì§€ ì•Šì„ ë•ŒëŠ” 언제나 ìŠˆí¼ í´ëž˜ìФë
작업 ëª¨ìŒ ì™¼ìª½ì˜ <em>완료</em> ìž‘ì—…ì„ ëˆ„ë¥´ë©´ 작업 모드가 비활성화ë˜ê³  ìƒí™©ë³„ 작업 모ìŒì´ 사ë¼ì§‘니다.</p>
-<p class="note"><strong>참고:</strong> ìƒí™©ë³„ 작업 모ìŒì´
-반드시 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모ìŒ</a>ê³¼ ì—°ê´€ë˜ì–´ 있는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. ì´ë“¤ì€ 서로
-ë…립ì ìœ¼ë¡œ ìž‘ë™í•©ë‹ˆë‹¤. ì´ëŠ” 겉으로 보기ì—는 ìƒí™©ë³„ 작업 모ìŒì´ 작업 모ìŒì˜ 위치를 능가하는 것으로
+<p class="note"><strong>참고:</strong> ìƒí™©ë³„ 작업 모ìŒì´
+반드시 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모ìŒ</a>ê³¼ ì—°ê´€ë˜ì–´ 있는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. ì´ë“¤ì€ 서로
+ë…립ì ìœ¼ë¡œ ìž‘ë™í•©ë‹ˆë‹¤. ì´ëŠ” 겉으로 보기ì—는 ìƒí™©ë³„ 작업 모ìŒì´ 작업 모ìŒì˜ 위치를 능가하는 것으로
ë³´ì´ë”ë¼ë„ ì ìš©ë©ë‹ˆë‹¤.</p>
-<p>Android 3.0 (API level 11) ì´ìƒì„ 대ìƒìœ¼ë¡œ 개발하는 경우,
+<p>Android 3.0 (API level 11) ì´ìƒì„ 대ìƒìœ¼ë¡œ 개발하는 경우,
ì¼ë°˜ì ìœ¼ë¡œ ìƒí™©ë³„ 작업 모드를 사용하여 <a href="#FloatingContextMenu">ë¶€ë™ ì»¨í…스트 메뉴</a>ê°€ 아닌 ìƒí™©ë³„ ìž‘ì—…ì„ í‘œì‹œí•©ë‹ˆë‹¤.</p>
-<p>ìƒí™©ë³„ ìž‘ì—…ì„ ì œê³µí•˜ëŠ” ë³´ê¸°ì˜ ê²½ìš°, ì¼ë°˜ì ìœ¼ë¡œ ë‘ ì´ë²¤íЏ 중 하나(ë˜ëŠ” ë‘ ê°€ì§€ 모ë‘)ì—서 ìƒí™©ë³„ 작업 모드를
+<p>ìƒí™©ë³„ ìž‘ì—…ì„ ì œê³µí•˜ëŠ” ë³´ê¸°ì˜ ê²½ìš°, ì¼ë°˜ì ìœ¼ë¡œ ë‘ ì´ë²¤íЏ 중 하나(ë˜ëŠ” ë‘ ê°€ì§€ 모ë‘)ì—서 ìƒí™©ë³„ 작업 모드를
호출해야 합니다.</p>
<ul>
<li>사용ìžê°€ 보기ì—서 롱-í´ë¦­ì„ 수행합니다.</li>
@@ -521,11 +521,11 @@ android.widget.ListView} ë˜ëŠ” {@link android.widget.GridView}ì—서 항목 ê·¸
<h4 id="CABforViews">ê°ê°ì˜ ë³´ê¸°ì— ëŒ€í•œ ìƒí™©ë³„ 작업 ëª¨ë“œì˜ í™œì„±í™”</h4>
-<p>사용ìžê°€ 특정 보기를 ì„ íƒí–ˆì„ 때만 ìƒí™©ë³„ 작업 모드를 í˜¸ì¶œí•˜ê³ ìž í•˜ëŠ” 경우
+<p>사용ìžê°€ 특정 보기를 ì„ íƒí–ˆì„ 때만 ìƒí™©ë³„ 작업 모드를 í˜¸ì¶œí•˜ê³ ìž í•˜ëŠ” 경우
다ìŒê³¼ ê°™ì´ í•´ì•¼ 합니다.</p>
<ol>
- <li>{@link android.view.ActionMode.Callback} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현합니다. 콜백 메서드ì—서
-ìƒí™©ë³„ 작업 모ìŒì˜ ìž‘ì—…ì„ ì§€ì •í•˜ê³ , 작업 í•­ëª©ì— ëŒ€í•œ í´ë¦­ ì´ë²¤íŠ¸ì— ì‘답하고, 작업 ëª¨ë“œì— ëŒ€í•œ
+ <li>{@link android.view.ActionMode.Callback} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현합니다. 콜백 메서드ì—서
+ìƒí™©ë³„ 작업 모ìŒì˜ ìž‘ì—…ì„ ì§€ì •í•˜ê³ , 작업 í•­ëª©ì— ëŒ€í•œ í´ë¦­ ì´ë²¤íŠ¸ì— ì‘답하고, 작업 ëª¨ë“œì— ëŒ€í•œ
다른 수명 주기 ì´ë²¤íŠ¸ë¥¼ 처리합니다.</li>
<li>모ìŒì„ í‘œì‹œí•˜ê³ ìž í•˜ëŠ” 경우{@link android.app.Activity#startActionMode startActionMode()}를 호출합니다
(사용ìžê°€ 보기를 롱-í´ë¦­í•˜ëŠ” 경우).</li>
@@ -579,11 +579,11 @@ private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
android.view.ActionMode} ê°ì²´ë¥¼ 전달합니다. {@link
android.view.ActionMode} API를 사용하여
{@link android.view.ActionMode#setTitle setTitle()}ê³¼ {@link
-android.view.ActionMode#setSubtitle setSubtitle()}ì´ í¬í•¨ëœ 제목과 하위 ì œëª©ì„ ìˆ˜ì •í•˜ëŠ” 등과 ê°™ì´ CAB를 다양하게 변경합니다(몇 ê°œì˜
+android.view.ActionMode#setSubtitle setSubtitle()}ì´ í¬í•¨ëœ 제목과 하위 ì œëª©ì„ ìˆ˜ì •í•˜ëŠ” 등과 ê°™ì´ CAB를 다양하게 변경합니다(몇 ê°œì˜
í•­ëª©ì´ ì„ íƒë˜ì—ˆëŠ”ì§€ 나타낼 때 유용합니다).</p>
<p>ë˜í•œ, 위 ìƒ˜í”Œì€ ìž‘ì—… 모드가 ì†Œë©¸ë  ë•Œ {@code mActionMode} 변수를 null로
-설정한다는 ì ë„ 유ì˜í•˜ì‹­ì‹œì˜¤. ë‹¤ìŒ ë‹¨ê³„ì—서는 액티비티나 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ êµ¬ì„±ì› ë³€ìˆ˜ë¥¼ 초기화하고 저장하는 방법ì„
+설정한다는 ì ë„ 유ì˜í•˜ì‹­ì‹œì˜¤. ë‹¤ìŒ ë‹¨ê³„ì—서는 액티비티나 í”„ëž˜ê·¸ë¨¼íŠ¸ì˜ êµ¬ì„±ì› ë³€ìˆ˜ë¥¼ 초기화하고 저장하는 방법ì„
볼 수 있습니다.</p>
</li>
@@ -608,10 +608,10 @@ someView.setOnLongClickListener(new View.OnLongClickListener() {
</pre>
<p>{@link android.app.Activity#startActionMode startActionMode()}를 호출하면 시스템ì´
-ìƒì„±ëœ {@link android.view.ActionMode}를 반환합니다. ì´ê²ƒì„ êµ¬ì„±ì› ë³€ìˆ˜ì— ì €ìž¥í•˜ë©´
+ìƒì„±ëœ {@link android.view.ActionMode}를 반환합니다. ì´ê²ƒì„ êµ¬ì„±ì› ë³€ìˆ˜ì— ì €ìž¥í•˜ë©´
다른 ì´ë²¤íŠ¸ì— ëŒ€í•œ ì‘답으로 ìƒí™©ë³„ 작업 모ìŒì„ 변경할 수 있습니다. 위 샘플ì—서
{@link android.view.ActionMode}를 사용하여 {@link android.view.ActionMode} ì¸ìŠ¤í„´ìŠ¤ê°€ ì´ë¯¸ 활성화ë˜ì—ˆì„ 경우
-작업 모드를 시작하기 ì „ì— êµ¬ì„±ì›ì´ nullì¸ì§€ 여부를 ì ê²€í•˜ì—¬
+작업 모드를 시작하기 ì „ì— êµ¬ì„±ì›ì´ nullì¸ì§€ 여부를 ì ê²€í•˜ì—¬
해당 ì¸ìŠ¤í„´ìŠ¤ê°€ 재ìƒì„±ë˜ì§€ 않게 합니다.</p>
</li>
</ol>
@@ -621,13 +621,13 @@ someView.setOnLongClickListener(new View.OnLongClickListener() {
<h4 id="CABforListView">ListView ë˜ëŠ” GridViewì—서 ì¼ê´„ ìƒí™©ë³„ 작업 활성화</h4>
<p>{@link android.widget.ListView} ë˜ëŠ” {@link
-android.widget.GridView}(ë˜ëŠ” {@link android.widget.AbsListView}ì˜ ë˜ ë‹¤ë¥¸ 확장)ì— í•­ëª© ì»¬ë ‰ì…˜ì´ ìžˆê³ 
+android.widget.GridView}(ë˜ëŠ” {@link android.widget.AbsListView}ì˜ ë˜ ë‹¤ë¥¸ 확장)ì— í•­ëª© ì»¬ë ‰ì…˜ì´ ìžˆê³ 
사용ìžê°€ ì¼ê´„ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë„ë¡ í—ˆìš©í•˜ë ¤ë©´ 다ìŒê³¼ ê°™ì´ í•´ì•¼ 합니다.</p>
<ul>
- <li>{@link android.widget.AbsListView.MultiChoiceModeListener} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하고 ì´ë¥¼
+ <li>{@link android.widget.AbsListView.MultiChoiceModeListener} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하고 ì´ë¥¼
{@link android.widget.AbsListView#setMultiChoiceModeListener
-setMultiChoiceModeListener()}ê°€ 있는 보기 ê·¸ë£¹ì— ëŒ€í•´ 설정합니다. 수신기 콜백 메서드ì—서 ìƒí™©ë³„ 작업 모ìŒì— 대한
+setMultiChoiceModeListener()}ê°€ 있는 보기 ê·¸ë£¹ì— ëŒ€í•´ 설정합니다. 수신기 콜백 메서드ì—서 ìƒí™©ë³„ 작업 모ìŒì— 대한
ìž‘ì—…ì„ ì§€ì •í•˜ê³ , 작업 í•­ëª©ì— ëŒ€í•œ í´ë¦­ ì´ë²¤íŠ¸ì— ëŒ€ì‘하고,
{@link android.view.ActionMode.Callback} ì¸í„°íŽ˜ì´ìФì—서 ìƒì†í•œ 다른 ì½œë°±ì„ ì²˜ë¦¬í•  수 있습니다.</li>
@@ -690,10 +690,10 @@ android.widget.AbsListView.MultiChoiceModeListener#onCreateActionMode onCreateAc
메서드를 호출하고 ì§€ì •ëœ ìž‘ì—…ìœ¼ë¡œ ìƒí™©ë³„ 작업 모ìŒì„ 표시합니다. ìƒí™©ë³„ 작업 모ìŒì´ 표시ë˜ëŠ” ë™ì•ˆ
사용ìžê°€ 추가 í•­ëª©ì„ ì„ íƒí•  수 있습니다.</p>
-<p>ìƒí™©ë³„ ìž‘ì—…ì´ ê³µí†µ 작업 í•­ëª©ì„ ì œê³µí•˜ëŠ” 몇몇 경우,
-확ì¸ëž€ì´ë‚˜ 그와 비슷한 UI요소를 추가하여 사용ìžê°€ í•­ëª©ì„ ì„ íƒí•  수 있ë„ë¡ í•´ì£¼ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
-사용ìžê°€ 롱-í´ë¦­ ë™ìž‘ì„ ë°œê²¬í•˜ì§€ 못할 ìˆ˜ë„ ìžˆê¸° 때문입니다. 사용ìžê°€ 확ì¸ëž€ì„ ì„ íƒí•˜ë©´
-{@link android.widget.AbsListView#setItemChecked setItemChecked()}로
+<p>ìƒí™©ë³„ ìž‘ì—…ì´ ê³µí†µ 작업 í•­ëª©ì„ ì œê³µí•˜ëŠ” 몇몇 경우,
+확ì¸ëž€ì´ë‚˜ 그와 비슷한 UI요소를 추가하여 사용ìžê°€ í•­ëª©ì„ ì„ íƒí•  수 있ë„ë¡ í•´ì£¼ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
+사용ìžê°€ 롱-í´ë¦­ ë™ìž‘ì„ ë°œê²¬í•˜ì§€ 못할 ìˆ˜ë„ ìžˆê¸° 때문입니다. 사용ìžê°€ 확ì¸ëž€ì„ ì„ íƒí•˜ë©´
+{@link android.widget.AbsListView#setItemChecked setItemChecked()}로
확ì¸ëœ ìƒíƒœì— ê° ëª©ë¡ í•­ëª©ì„ ì„¤ì •í•˜ì—¬ ìƒí™©ë³„ 작업 모드를 호출할 수 있습니다.</p>
@@ -703,19 +703,19 @@ android.widget.AbsListView.MultiChoiceModeListener#onCreateActionMode onCreateAc
<div class="figure" style="width:220px">
<img src="{@docRoot}images/ui/popupmenu.png" alt="" />
-<p><strong>그림 4.</strong> Gmail ì•±ì˜ íŒì—… 메뉴는 오른쪽 ìœ„ì— ìžˆëŠ” ë”보기
+<p><strong>그림 4.</strong> Gmail ì•±ì˜ íŒì—… 메뉴는 오른쪽 ìœ„ì— ìžˆëŠ” ë”보기
ë²„íŠ¼ì— ê³ ì •ë˜ì–´ 있습니다.</p>
</div>
<p>{@link android.widget.PopupMenu}는 {@link android.view.View}ì— ê³ ì •ëœ ëª¨ë‹¬ 메뉴입니다.
ì´ê²ƒì€ 앵커 보기 ì•„ëž˜ì— ê³µê°„ì´ ìžˆìœ¼ë©´ 아래ì—, 없으면 보기 ìœ„ì— ë‚˜íƒ€ë‚©ë‹ˆë‹¤. ì´ê²ƒì€ 다ìŒê³¼ ê°™ì€ ìƒí™©ì— 유용합니다.</p>
<ul>
- <li>특정 콘í…츠와 <em>관련ëœ</em> ìž‘ì—…ì— ëŒ€í•œ ë”보기 ìŠ¤íƒ€ì¼ ë©”ë‰´ë¥¼ 제공합니다(예:
+ <li>특정 콘í…츠와 <em>관련ëœ</em> ìž‘ì—…ì— ëŒ€í•œ ë”보기 ìŠ¤íƒ€ì¼ ë©”ë‰´ë¥¼ 제공합니다(예:
그림 4ì˜ Gmail ì´ë©”ì¼ í—¤ë” ë“±).
- <p class="note"><strong>참고:</strong> ì´ê²ƒì€ 컨í…스트 메뉴와는 다릅니다. 컨í…스트 메뉴는
+ <p class="note"><strong>참고:</strong> ì´ê²ƒì€ 컨í…스트 메뉴와는 다릅니다. 컨í…스트 메뉴는
ì¼ë°˜ì ìœ¼ë¡œ ì„ íƒëœ 콘í…ì¸ ì— <em>ì˜í–¥ì„ 미치는</em> 작업입니다. ì„ íƒëœ
콘í…ì¸ ì— ì˜í–¥ì„ 미치는 ìž‘ì—…ì˜ ê²½ìš°, <a href="#CAB">ìƒí™©ë³„ 작업 모드</a> ë˜ëŠ” <a href="#FloatingContextMenu">ë¶€ë™ ì»¨í…스트 메뉴</a>를 사용하십시오.</p></li>
- <li>ëª…ë ¹ë¬¸ì˜ ë‘ ë²ˆì§¸ ë¶€ë¶„ì„ ì œê³µí•©ë‹ˆë‹¤(예: "추가"ë¼ê³  í‘œì‹œëœ ë²„íŠ¼ìœ¼ë¡œ,
+ <li>ëª…ë ¹ë¬¸ì˜ ë‘ ë²ˆì§¸ ë¶€ë¶„ì„ ì œê³µí•©ë‹ˆë‹¤(예: "추가"ë¼ê³  í‘œì‹œëœ ë²„íŠ¼ìœ¼ë¡œ,
ê°ê¸° 다른 "추가" ì˜µì…˜ì´ ìžˆëŠ” íŒì—… 메뉴를 ë°œìƒì‹œí‚µë‹ˆë‹¤).</li>
<li>ì˜êµ¬ì ì¸ ì„ íƒì´ í¬í•¨ë˜ì§€ ì•Šì€ {@link android.widget.Spinner}와 유사한 ë“œë¡­ë‹¤ìš´ì„ ì œê³µí•©ë‹ˆë‹¤.
</li>
@@ -727,23 +727,23 @@ android.widget.AbsListView.MultiChoiceModeListener#onCreateActionMode onCreateAc
<p><a href="#xml">XML로 메뉴를 ì •ì˜</a>하는 경우, íŒì—… 메뉴를 표시하는 ë°©ë²•ì€ ë‹¤ìŒê³¼ 같습니다.</p>
<ol>
- <li>ìžì‹ ì˜ ìƒì„±ìžë¡œ {@link android.widget.PopupMenu}를 ì¸ìŠ¤í„´íŠ¸í™”í•©ë‹ˆë‹¤. ìƒì„±ìžëŠ”
-현재 애플리케ì´ì…˜ {@link android.content.Context} ë° {@link android.view.View}를
+ <li>ìžì‹ ì˜ ìƒì„±ìžë¡œ {@link android.widget.PopupMenu}를 ì¸ìŠ¤í„´íŠ¸í™”í•©ë‹ˆë‹¤. ìƒì„±ìžëŠ”
+현재 애플리케ì´ì…˜ {@link android.content.Context} ë° {@link android.view.View}를
메뉴를 고정시켜야 하는 ê³³ì— ê°€ì ¸ê°‘ë‹ˆë‹¤.</li>
<li>{@link android.view.MenuInflater}를 사용하여{@link
android.widget.PopupMenu#getMenu() PopupMenu.getMenu()}가 반환한 {@link
-android.view.Menu} ê°ì²´ì— 메뉴 리소스를 팽창합니다. API 레벨 14 ì´ìƒì—서는 ì´ ëŒ€ì‹ 
+android.view.Menu} ê°ì²´ì— 메뉴 리소스를 팽창합니다. API 레벨 14 ì´ìƒì—서는 ì´ ëŒ€ì‹ 
{@link android.widget.PopupMenu#inflate PopupMenu.inflate()}를 사용할 수 있습니다.</li>
<li>{@link android.widget.PopupMenu#show() PopupMenu.show()}를 호출합니다.</li>
</ol>
-<p>예를 들어, 다ìŒì€ íŒì—… 메뉴를 표시하는 {@link android.R.attr#onClick android:onClick} ì†ì„±ì´
+<p>예를 들어, 다ìŒì€ íŒì—… 메뉴를 표시하는 {@link android.R.attr#onClick android:onClick} ì†ì„±ì´
있는 버튼입니다.</p>
<pre>
&lt;ImageButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:src="@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup" />
@@ -763,7 +763,7 @@ public void showPopup(View v) {
<p>API 레벨 14 ì´ìƒì˜ 경우, {@link
android.widget.PopupMenu#inflate PopupMenu.inflate()}로 메뉴를 팽창하는 ë‘ ê°œì˜ ì¤„ì„ ê²°í•©ì‹œí‚¬ 수 있습니다.</p>
-<p>사용ìžê°€ í•­ëª©ì„ ì„ íƒí•˜ê±°ë‚˜ 메뉴 ì˜ì—­ ë°”ê¹¥ìª½ì„ í„°ì¹˜í•˜ë©´ ì´ ë©”ë‰´ëŠ”
+<p>사용ìžê°€ í•­ëª©ì„ ì„ íƒí•˜ê±°ë‚˜ 메뉴 ì˜ì—­ ë°”ê¹¥ìª½ì„ í„°ì¹˜í•˜ë©´ ì´ ë©”ë‰´ëŠ”
무시ë©ë‹ˆë‹¤. {@link
android.widget.PopupMenu.OnDismissListener}를 사용하여 무시 ì´ë²¤íŠ¸ë¥¼ 수신 대기할 수 있습니다.</p>
@@ -807,7 +807,7 @@ public boolean onMenuItemClick(MenuItem item) {
<h2 id="groups">메뉴 그룹 만들기</h2>
-<p>메뉴 ê·¸ë£¹ì€ íŠ¹ì •í•œ íŠ¹ì„±ì„ ê³µìœ í•˜ëŠ” 메뉴 í•­ëª©ì˜ ì»¬ë ‰ì…˜ìž…ë‹ˆë‹¤. 그룹으로 다ìŒê³¼ ê°™ì€ ìž‘ì—…ì„
+<p>메뉴 ê·¸ë£¹ì€ íŠ¹ì •í•œ íŠ¹ì„±ì„ ê³µìœ í•˜ëŠ” 메뉴 í•­ëª©ì˜ ì»¬ë ‰ì…˜ìž…ë‹ˆë‹¤. 그룹으로 다ìŒê³¼ ê°™ì€ ìž‘ì—…ì„
할 수 있습니다.</p>
<ul>
<li>{@link android.view.Menu#setGroupVisible(int,boolean)
@@ -840,11 +840,11 @@ android.view.Menu#add(int,int,int,int) add()} 메서드로 그룹 ID를 지정í•
&lt;/menu&gt;
</pre>
-<p>ê·¸ë£¹ì— ìžˆëŠ” í•­ëª©ì€ ì²« 항목과 ê°™ì€ ë ˆë²¨ì—서 표시ë©ë‹ˆë‹¤. 메뉴 ì•ˆì— ìžˆëŠ” 세 가지 í•­ëª©ì€ ëª¨ë‘
-형제입니다. 그러나 ì´ ê·¸ë£¹ì— ìžˆëŠ” 항목 ë‘ ê°œì˜ íŠ¹ì„±ì„ ê°œë°œìžê°€ 수정할 수 있습니다.
-그룹 ID를 참조하고 ìœ„ì— ë‚˜ë ¹ëœ ë©”ì„œë“œë¥¼ 사용하면 ë©ë‹ˆë‹¤. 시스템 ë˜í•œ
+<p>ê·¸ë£¹ì— ìžˆëŠ” í•­ëª©ì€ ì²« 항목과 ê°™ì€ ë ˆë²¨ì—서 표시ë©ë‹ˆë‹¤. 메뉴 ì•ˆì— ìžˆëŠ” 세 가지 í•­ëª©ì€ ëª¨ë‘
+형제입니다. 그러나 ì´ ê·¸ë£¹ì— ìžˆëŠ” 항목 ë‘ ê°œì˜ íŠ¹ì„±ì„ ê°œë°œìžê°€ 수정할 수 있습니다.
+그룹 ID를 참조하고 ìœ„ì— ë‚˜ë ¹ëœ ë©”ì„œë“œë¥¼ 사용하면 ë©ë‹ˆë‹¤. 시스템 ë˜í•œ
ê·¸ë£¹í™”ëœ í•­ëª©ì€ ì ˆëŒ€ 분리하지 않습니다. 예를 들어, ê° í•­ëª©ì— ëŒ€í•´ {@code
-android:showAsAction="ifRoom"}ì„ ì„ ì–¸í•˜ë©´, ë‘ ê°€ì§€ ëª¨ë‘ ìž‘ì—… 모ìŒì— 나타나거나
+android:showAsAction="ifRoom"}ì„ ì„ ì–¸í•˜ë©´, ë‘ ê°€ì§€ ëª¨ë‘ ìž‘ì—… 모ìŒì— 나타나거나
작업 ë”ë³´ê¸°ì— ë‚˜íƒ€ë‚©ë‹ˆë‹¤.</p>
@@ -852,23 +852,23 @@ android:showAsAction="ifRoom"}ì„ ì„ ì–¸í•˜ë©´, ë‘ ê°€ì§€ ëª¨ë‘ ìž‘ì—… 모ìŒì
<div class="figure" style="width:200px">
<img src="{@docRoot}images/radio_buttons.png" height="333" alt="" />
- <p class="img-caption"><strong>그림 5.</strong> í™•ì¸ ê°€ëŠ¥í•œ
+ <p class="img-caption"><strong>그림 5.</strong> í™•ì¸ ê°€ëŠ¥í•œ
í•­ëª©ì´ ìžˆëŠ” 하위 ë©”ë‰´ì˜ ìŠ¤í¬ë¦°ìƒ·ìž…니다.</p>
</div>
-<p>메뉴는 ì˜µì…˜ì„ ì¼œê³  ë„거나, ë…ë¦½ì  ì˜µì…˜ì— ëŒ€í•œ 확ì¸ëž€ìœ¼ë¡œ 사용하거나,
-ìƒí˜¸ 배타ì ì¸ ì˜µì…˜ì˜ ê·¸ë£¹ì— ëŒ€í•œ 무선 버튼으로 사용하기 위한 ì¸í„°íŽ˜ì´ìŠ¤ë¡œ
+<p>메뉴는 ì˜µì…˜ì„ ì¼œê³  ë„거나, ë…ë¦½ì  ì˜µì…˜ì— ëŒ€í•œ 확ì¸ëž€ìœ¼ë¡œ 사용하거나,
+ìƒí˜¸ 배타ì ì¸ ì˜µì…˜ì˜ ê·¸ë£¹ì— ëŒ€í•œ 무선 버튼으로 사용하기 위한 ì¸í„°íŽ˜ì´ìŠ¤ë¡œ
유용합니다. 그림 5는 무선 ë²„íŠ¼ì´ ìžˆìœ¼ë©° í™•ì¸ ê°€ëŠ¥í•œ í•­ëª©ì´ í¬í•¨ëœ 하위 메뉴를
표시합니다.</p>
-<p class="note"><strong>참고:</strong> (옵션 메뉴ì˜) ì•„ì´ì½˜ ë©”ë‰´ì˜ ë©”ë‰´ 항목ì€
-확ì¸ëž€ì´ë‚˜ 무선 ë²„íŠ¼ì„ í‘œì‹œí•  수 없습니다. í™•ì¸ ê°€ëŠ¥í•œ ì•„ì´ì½˜ 메뉴ì—서 í•­ëª©ì„ ë§Œë“¤ê¸°ë¡œ ì„ íƒí•˜ëŠ” 경우,
-ìƒíƒœê°€ ë³€ê²½ë  ë•Œë§ˆë‹¤ ì•„ì´ì½˜ ë°/ë˜ëŠ” í…스트를 êµì²´í•˜ì—¬
+<p class="note"><strong>참고:</strong> (옵션 메뉴ì˜) ì•„ì´ì½˜ ë©”ë‰´ì˜ ë©”ë‰´ 항목ì€
+확ì¸ëž€ì´ë‚˜ 무선 ë²„íŠ¼ì„ í‘œì‹œí•  수 없습니다. í™•ì¸ ê°€ëŠ¥í•œ ì•„ì´ì½˜ 메뉴ì—서 í•­ëª©ì„ ë§Œë“¤ê¸°ë¡œ ì„ íƒí•˜ëŠ” 경우,
+ìƒíƒœê°€ ë³€ê²½ë  ë•Œë§ˆë‹¤ ì•„ì´ì½˜ ë°/ë˜ëŠ” í…스트를 êµì²´í•˜ì—¬
확ì¸ëœ ìƒíƒœë¥¼ 수ë™ìœ¼ë¡œ 나타내야 합니다.</p>
<p>{@code &lt;item&gt;} ìš”ì†Œì˜ {@code
android:checkable} ì†ì„±ì„ 사용하여 개별 메뉴 í•­ëª©ì— ëŒ€í•œ í™•ì¸ ê°€ëŠ¥í•œ ë™ìž‘ì„ ì •ì˜í•˜ê±°ë‚˜
-{@code &lt;group&gt;} 요소ì—서 {@code android:checkableBehavior} ì†ì„±ìœ¼ë¡œ ì „ì²´ ê·¸ë£¹ì— ëŒ€í•œ í™•ì¸ ê°€ëŠ¥í•œ ë™ìž‘ì„ ì‚¬ìš©í•  수 있습니다.
+{@code &lt;group&gt;} 요소ì—서 {@code android:checkableBehavior} ì†ì„±ìœ¼ë¡œ ì „ì²´ ê·¸ë£¹ì— ëŒ€í•œ í™•ì¸ ê°€ëŠ¥í•œ ë™ìž‘ì„ ì‚¬ìš©í•  수 있습니다.
예를 들어, ì´ ë©”ë‰´ ê·¸ë£¹ì˜ ëª¨ë“  í•­ëª©ì€ ë¬´ì„  버튼으로 확ì¸í•  수 있습니다.</p>
<pre>
@@ -893,15 +893,15 @@ android:checkable} ì†ì„±ì„ 사용하여 개별 메뉴 í•­ëª©ì— ëŒ€í•œ 확ì¸
<dd>확ì¸í•  수 있는 í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤.</dd>
</dl>
-<p>{@code &lt;item&gt;} ìš”ì†Œì˜ {@code android:checked} ì†ì„±ì„ ì´ìš©í•˜ì—¬ í•­ëª©ì— ê¸°ë³¸ 확ì¸ëœ ìƒíƒœë¥¼ ì ìš©í•˜ê³ 
+<p>{@code &lt;item&gt;} ìš”ì†Œì˜ {@code android:checked} ì†ì„±ì„ ì´ìš©í•˜ì—¬ í•­ëª©ì— ê¸°ë³¸ 확ì¸ëœ ìƒíƒœë¥¼ ì ìš©í•˜ê³ 
{@link
android.view.MenuItem#setChecked(boolean) setChecked()} 메서드로 코드 ë‚´ì—서 ì´ë¥¼ 변경할 수 있습니다.</p>
<p>í™•ì¸ ê°€ëŠ¥í•œ í•­ëª©ì´ ì„ íƒë˜ë©´, ì‹œìŠ¤í…œì´ ê° í•­ëª©ì´ ì„ íƒëœ 콜백 메서드를 호출합니다
-(예: {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}). 바로 여기ì—서
-확ì¸ëž€ì˜ ìƒíƒœë¥¼ 설정해야 합니다. 확ì¸ëž€ì´ë‚˜ 무선 ë²„íŠ¼ì€ ìžì‹ ì˜ ìƒíƒœë¥¼ ìžë™ìœ¼ë¡œ
-변경하지 않기 때문입니다.
-{@link android.view.MenuItem#isChecked()}로 í•­ëª©ì˜ í˜„ìž¬ ìƒíƒœë¥¼ (사용ìžê°€ ì´ë¥¼ ì„ íƒí•˜ê¸° ì „ ìƒíƒœ 그대로) 쿼리하고 그런 다ìŒ
+(예: {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}). 바로 여기ì—서
+확ì¸ëž€ì˜ ìƒíƒœë¥¼ 설정해야 합니다. 확ì¸ëž€ì´ë‚˜ 무선 ë²„íŠ¼ì€ ìžì‹ ì˜ ìƒíƒœë¥¼ ìžë™ìœ¼ë¡œ
+변경하지 않기 때문입니다.
+{@link android.view.MenuItem#isChecked()}로 í•­ëª©ì˜ í˜„ìž¬ ìƒíƒœë¥¼ (사용ìžê°€ ì´ë¥¼ ì„ íƒí•˜ê¸° ì „ ìƒíƒœ 그대로) 쿼리하고 그런 다ìŒ
{@link android.view.MenuItem#setChecked(boolean) setChecked()}로 확ì¸ëœ ìƒíƒœë¥¼ 설정할 수 있습니다. 예:</p>
<pre>
@@ -926,7 +926,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
ë³´ì´ê²Œ 합니다.</p>
<p class="note"><strong>참고:</strong>
-í™•ì¸ ê°€ëŠ¥í•œ 메뉴 í•­ëª©ì€ ì„¸ì…˜ë³„ 기준으로만 사용하ë„ë¡ ë§Œë“¤ì–´ì ¸ 있으며 애플리케ì´ì…˜ì´ ì†Œë©¸ëœ í›„ì—는
+í™•ì¸ ê°€ëŠ¥í•œ 메뉴 í•­ëª©ì€ ì„¸ì…˜ë³„ 기준으로만 사용하ë„ë¡ ë§Œë“¤ì–´ì ¸ 있으며 애플리케ì´ì…˜ì´ ì†Œë©¸ëœ í›„ì—는
저장ë˜ì§€ 않습니다. 사용ìžì— 대해 ì €ìž¥í•˜ê³ ìž í•˜ëŠ” 애플리케ì´ì…˜ ì„¤ì •ì´ ìžˆìœ¼ë©´,
<a href="{@docRoot}guide/topics/data/data-storage.html#pref">공유 기본 설정</a>으로 해당 ë°ì´í„°ë¥¼ 저장해야 합니다.</p>
@@ -935,16 +935,16 @@ public boolean onOptionsItemSelected(MenuItem item) {
<h2 id="intents">ì¸í…íŠ¸ì— ê¸°ë°˜í•œ 메뉴 항목 추가</h2>
<p>{@link android.content.Intent}를 ì´ìš©í•˜ì—¬
-액티비티를 시작하는 메뉴 í•­ëª©ì„ ì›í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(액티비티가 본ì¸ì˜ 애플리케ì´ì…˜ ì•ˆì— ìžˆëŠ” 것ì´ë“  ë˜ ë‹¤ë¥¸ 애플리케ì´ì…˜ì— 있는 것ì´ë“  무관합니다). ì‚¬ìš©í•˜ê³ ìž í•˜ëŠ” ì¸í…트를 알고
+액티비티를 시작하는 메뉴 í•­ëª©ì„ ì›í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(액티비티가 본ì¸ì˜ 애플리케ì´ì…˜ ì•ˆì— ìžˆëŠ” 것ì´ë“  ë˜ ë‹¤ë¥¸ 애플리케ì´ì…˜ì— 있는 것ì´ë“  무관합니다). ì‚¬ìš©í•˜ê³ ìž í•˜ëŠ” ì¸í…트를 알고
ì¸í…트를 시작해야 하는 특정 메뉴 í•­ëª©ì´ ìžˆì„ ê²½ìš°,
-í•­ëª©ì— ëŒ€í•´ ì„ íƒëœ ì ì ˆí•œ 콜백 메서드ì—서 {@link android.app.Activity#startActivity(Intent) startActivity()}ê°€
+í•­ëª©ì— ëŒ€í•´ ì„ íƒëœ ì ì ˆí•œ 콜백 메서드ì—서 {@link android.app.Activity#startActivity(Intent) startActivity()}ê°€
í¬í•¨ëœ ì¸í…트를 실행합니다(예: {@link
android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} 콜백).</p>
-<p>그러나 ì‚¬ìš©ìž ê¸°ê¸°ì—
+<p>그러나 ì‚¬ìš©ìž ê¸°ê¸°ì—
해당 ì¸í…트를 처리하는 애플리케ì´ì…˜ì´ 있는지 모르는 경우, ì´ë¥¼ 호출하는 메뉴 í•­ëª©ì„ ì¶”ê°€í•˜ë©´
해당 ì¸í…트가 ì•¡í‹°ë¹„í‹°ì— ëŒ€í•´ 확ì¸ë˜ì§€ 못해서 메뉴 í•­ëª©ì´ ê¸°ëŠ¥í•˜ì§€ 못할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
- ì´ê²ƒì„ 해결하기 위해 Android는 개발ìžê°€ ë™ì ìœ¼ë¡œ ìžì‹ ì˜ ë©”ë‰´ì— ë©”ë‰´ í•­ëª©ì„ ì¶”ê°€í•  수 있ë„ë¡ í—ˆìš©í•©ë‹ˆë‹¤.
+ ì´ê²ƒì„ 해결하기 위해 Android는 개발ìžê°€ ë™ì ìœ¼ë¡œ ìžì‹ ì˜ ë©”ë‰´ì— ë©”ë‰´ í•­ëª©ì„ ì¶”ê°€í•  수 있ë„ë¡ í—ˆìš©í•©ë‹ˆë‹¤.
ì´ëŠ” Androidê°€ 기기ì—서 개발ìžì˜ ì¸í…트를 처리하는 액티비티를 ì°¾ì„ ê²½ìš°ì— í•´ë‹¹ë©ë‹ˆë‹¤.</p>
<p>ì¸í…트를 수ë½í•˜ëŠ” ì´ìš© 가능한 ì•¡í‹°ë¹„í‹°ì— ê¸°ë°˜í•˜ì—¬ 메뉴 í•­ëª©ì„ ì¶”ê°€í•˜ë ¤ë©´ 다ìŒê³¼ ê°™ì´ í•©ë‹ˆë‹¤.</p>
@@ -954,15 +954,15 @@ android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} ì½
{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE}, 기타 요구 사항으로 ì¸í…트를 ì •ì˜í•©ë‹ˆë‹¤.</li>
<li>{@link
android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
-Menu.addIntentOptions()}ì„ í˜¸ì¶œí•©ë‹ˆë‹¤. 그러면 Androidê°€ ì¸í…트를 수행하는 애플리케ì´ì…˜ì„ 검색하고
+Menu.addIntentOptions()}ì„ í˜¸ì¶œí•©ë‹ˆë‹¤. 그러면 Androidê°€ ì¸í…트를 수행하는 애플리케ì´ì…˜ì„ 검색하고
ì´ë“¤ì„ 개발ìžì˜ ë©”ë‰´ì— ì¶”ê°€í•©ë‹ˆë‹¤.</li>
</ol>
-<p>ì¸í…트를 만족하는 애플리케ì´ì…˜ì´ 설치ë˜ì–´ 있지 않으면,
+<p>ì¸í…트를 만족하는 애플리케ì´ì…˜ì´ 설치ë˜ì–´ 있지 않으면,
메뉴 í•­ëª©ì´ ì¶”ê°€ë˜ì§€ 않습니다.</p>
<p class="note"><strong>참고:</strong>
-{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 를 사용하여 화면ì—서 현재 ì„ íƒëœ
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 를 사용하여 화면ì—서 현재 ì„ íƒëœ
요소를 처리합니다. 그러므로 ì´ê²ƒì€ {@link
android.app.Activity#onCreateContextMenu(ContextMenu,View,ContextMenuInfo)
onCreateContextMenu()}ì—서 메뉴를 ìƒì„±í•  때만 사용해야 합니다.</p>
@@ -995,7 +995,7 @@ public boolean onCreateOptionsMenu(Menu menu){
<p>ì •ì˜ëœ ì¸í…트와 ì¼ì¹˜í•˜ëŠ” ì¸í…트 필터를 제공하는 것으로 ë°œê²¬ëœ ê° ì•¡í‹°ë¹„í‹°ì—
ì¸í…트 í•„í„°ì˜ <code>android:label</code>를
-메뉴 항목 제목으로, 애플리케ì´ì…˜ ì•„ì´ì½˜ì„ 메뉴 항목 ì•„ì´ì½˜ìœ¼ë¡œ 사용하여 메뉴 í•­ëª©ì„ ì¶”ê°€í•©ë‹ˆë‹¤.
+메뉴 항목 제목으로, 애플리케ì´ì…˜ ì•„ì´ì½˜ì„ 메뉴 항목 ì•„ì´ì½˜ìœ¼ë¡œ 사용하여 메뉴 í•­ëª©ì„ ì¶”ê°€í•©ë‹ˆë‹¤.
{@link android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
addIntentOptions()} 메서드는 ì¶”ê°€ëœ ë©”ë‰´ 항목 개수를 반환합니다.</p>
@@ -1007,10 +1007,10 @@ addIntentOptions()}ì„ í˜¸ì¶œí•  때 첫 번째 ì¸ìˆ˜ì—서 ì§€ì •ëœ ë©”ë‰´ ê·
<h3 id="AllowingToAdd">다른 ë©”ë‰´ì— ì•¡í‹°ë¹„í‹° 추가 허용</h3>
-<p>본ì¸ì˜ ì•¡í‹°ë¹„í‹°ì˜ ì„œë¹„ìŠ¤ë¥¼ 다른 애플리케ì´ì…˜ì— 제공하여 다른
+<p>본ì¸ì˜ ì•¡í‹°ë¹„í‹°ì˜ ì„œë¹„ìŠ¤ë¥¼ 다른 애플리케ì´ì…˜ì— 제공하여 다른
애플리케ì´ì…˜ì˜ ë©”ë‰´ì— ë³¸ì¸ì˜ 애플리케ì´ì…˜ì´ 추가ë˜ë„ë¡ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(위ì—서 설명한 것과 ì—­í• ì´ ë°˜ëŒ€ìž…ë‹ˆë‹¤).</p>
-<p>다른 애플리케ì´ì…˜ ë©”ë‰´ì— ì¶”ê°€ë˜ë ¤ë©´, ì¸í…트 필터는 í‰ì†Œì™€ ê°™ì´
+<p>다른 애플리케ì´ì…˜ ë©”ë‰´ì— ì¶”ê°€ë˜ë ¤ë©´, ì¸í…트 필터는 í‰ì†Œì™€ ê°™ì´
ì •ì˜í•´ì•¼ 하지만, ì¸í…트 í•„í„° ì¹´í…Œê³ ë¦¬ì— {@link android.content.Intent#CATEGORY_ALTERNATIVE}
ë°/ë˜ëŠ”{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} ê°’ì„
반드시 í¬í•¨í•´ì•¼ 합니다. 예:</p>
@@ -1023,9 +1023,9 @@ addIntentOptions()}ì„ í˜¸ì¶œí•  때 첫 번째 ì¸ìˆ˜ì—서 ì§€ì •ëœ ë©”ë‰´ ê·
&lt;/intent-filter>
</pre>
-<p>ì¸í…트 í•„í„° ìž‘ì„±ì— ê´€í•œ ìžì„¸í•œ ë‚´ìš©ì€
+<p>ì¸í…트 í•„í„° ìž‘ì„±ì— ê´€í•œ ìžì„¸í•œ ë‚´ìš©ì€
<a href="/guide/components/intents-filters.html">ì¸í…트와 ì¸í…트 í•„í„°</a> 문서를 참조하십시오.</p>
-<p>ì´ ê¸°ë²•ì„ ì‚¬ìš©í•˜ëŠ” 샘플 애플리케ì´ì…˜ì€
+<p>ì´ ê¸°ë²•ì„ ì‚¬ìš©í•˜ëŠ” 샘플 애플리케ì´ì…˜ì€
<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Note
Pad</a> 샘플 코드를 참조하십시오.</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/ko/guide/topics/ui/notifiers/notifications.jd
index db55424d8965..4d87df7e242c 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/notifiers/notifications.jd
@@ -81,8 +81,8 @@ page.title=알림
<strong>그림 2.</strong> 알림 ì°½ì— ìžˆëŠ” 알림입니다.
</p>
-<p class="note"><strong>참고:</strong> 따로 ì–¸ê¸‰ëœ ë¶€ë¶„ì„ ì œì™¸í•˜ê³  ì´ ê°€ì´ë“œëŠ”
-버전 4 <a href="{@docRoot}tools/support-library/index.html">ì§€ì› ë¼ì´ë¸ŒëŸ¬ë¦¬</a>ì˜ {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} í´ëž˜ìŠ¤ë¥¼
+<p class="note"><strong>참고:</strong> 따로 ì–¸ê¸‰ëœ ë¶€ë¶„ì„ ì œì™¸í•˜ê³  ì´ ê°€ì´ë“œëŠ”
+버전 4 <a href="{@docRoot}tools/support-library/index.html">ì§€ì› ë¼ì´ë¸ŒëŸ¬ë¦¬</a>ì˜ {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} í´ëž˜ìŠ¤ë¥¼
참조합니다.
í´ëž˜ìФ {@link android.app.Notification.Builder Notification.Builder}는 Android
3.0(API 레벨 11)ì— ì¶”ê°€ë˜ì—ˆìŠµë‹ˆë‹¤.</p>
@@ -111,15 +111,15 @@ Android 5.0(API 레벨 21)부터 ë„ìž…ëœ ë¨¸í‹°ì–´ë¦¬ì–¼ ë””ìžì¸ 변경 사í
</p>
<ul>
<li>
-
+
{@link android.support.v4.app.NotificationCompat.Builder#setSmallIcon setSmallIcon()}ì´ ì„¤ì •í•œ ìž‘ì€ ì•„ì´ì½˜
</li>
<li>
-
+
{@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()}ì´ ì„¤ì •í•œ 제목
</li>
<li>
-
+
{@link android.support.v4.app.NotificationCompat.Builder#setContentText setContentText()}ì´ ì„¤ì •í•œ 세부 í…스트
</li>
</ul>
@@ -132,8 +132,8 @@ Android 5.0(API 레벨 21)부터 ë„ìž…ëœ ë¨¸í‹°ì–´ë¦¬ì–¼ ë””ìžì¸ 변경 사í
<h3 id="Actions">알림 작업</h3>
<p>
ì„ íƒ í•­ëª©ì´ê¸°ëŠ” 하지만 ì•Œë¦¼ì— ìž‘ì—…ì„ í•˜ë‚˜ ì´ìƒ 추가해야 합니다.
- ìž‘ì—…ì€ ì‚¬ìš©ìžê°€ 알림ì—서
-애플리케ì´ì…˜ì˜ {@link android.app.Activity}로 바로 ê°ˆ 수 있게 하고, 여기ì—서 사용ìžëŠ” 하나 ì´ìƒì˜ ì´ë²¤íŠ¸ë¥¼ 보거나
+ ìž‘ì—…ì€ ì‚¬ìš©ìžê°€ 알림ì—서
+애플리케ì´ì…˜ì˜ {@link android.app.Activity}로 바로 ê°ˆ 수 있게 하고, 여기ì—서 사용ìžëŠ” 하나 ì´ìƒì˜ ì´ë²¤íŠ¸ë¥¼ 보거나
ë” ë§Žì€ ìž‘ì—…ì„ í•  수 있습니다.
</p>
<p>
@@ -141,15 +141,15 @@ Android 5.0(API 레벨 21)부터 ë„ìž…ëœ ë¨¸í‹°ì–´ë¦¬ì–¼ ë””ìžì¸ 변경 사í
ì¼ë°˜ì ìœ¼ë¡œ 작업ì€
애플리케ì´ì…˜ì˜ {@link android.app.Activity}를 엽니다. ë˜í•œ, 알람 다시 알림ì´ë‚˜ í…스트 ë©”ì‹œì§€ì— ì¦‰ì‹œ 답장 등과 ê°™ì€ ì¶”ê°€ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ”
알림 ë²„íŠ¼ì„ ì¶”ê°€í•  수 있습니다.
-ì´ ê¸°ëŠ¥ì€ Android 4.1부터 사용할 수 있습니다. 추가 작업 ë²„íŠ¼ì„ ì‚¬ìš©í•  경우,
-ì•±ì˜ {@link android.app.Activity}ì—서 해당 ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 있게 해야 합니다.
+ì´ ê¸°ëŠ¥ì€ Android 4.1부터 사용할 수 있습니다. 추가 작업 ë²„íŠ¼ì„ ì‚¬ìš©í•  경우,
+ì•±ì˜ {@link android.app.Activity}ì—서 해당 ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 있게 해야 합니다.
ìžì„¸í•œ 정보는 <a href="#Compatibility">처리 호환성</a> ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
</p>
<p>
- {@link android.app.Notification}ì—서 작업 ìžì²´ëŠ”
-애플리케ì´ì…˜ì—서 {@link android.app.Activity}를 시작하는
-{@link android.content.Intent}ê°€ í¬í•¨ëœ
-{@link android.app.PendingIntent}ê°€ ì •ì˜í•©ë‹ˆë‹¤.
+ {@link android.app.Notification}ì—서 작업 ìžì²´ëŠ”
+애플리케ì´ì…˜ì—서 {@link android.app.Activity}를 시작하는
+{@link android.content.Intent}ê°€ í¬í•¨ëœ
+{@link android.app.PendingIntent}ê°€ ì •ì˜í•©ë‹ˆë‹¤.
{@link android.app.PendingIntent}를 ë™ìž‘ê³¼ 연관시키려면
{@link android.support.v4.app.NotificationCompat.Builder}ì˜ ì ì ˆí•œ 메서드를 호출합니다. 예를 들어,
사용ìžê°€ 알림 ì°½ì˜ ì•Œë¦¼ í…스트를 í´ë¦­í–ˆì„ 때 {@link android.app.Activity}를 시작하려면,
@@ -158,20 +158,20 @@ Android 5.0(API 레벨 21)부터 ë„ìž…ëœ ë¨¸í‹°ì–´ë¦¬ì–¼ ë””ìžì¸ 변경 사í
</p>
<p>
사용ìžê°€ ì•Œë¦¼ì„ í´ë¦­í–ˆì„ 때 {@link android.app.Activity}를 시작하는 ë™ìž‘ì´ ê°€ìž¥ 보편ì ì¸ 작업
-시나리오입니다. ë˜í•œ, 사용ìžê°€ ì•Œë¦¼ì„ ë¬´ì‹œí–ˆì„ ë•Œ {@link android.app.Activity}를
-시작할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. Android 4.1 ì´í›„부터는
+시나리오입니다. ë˜í•œ, 사용ìžê°€ ì•Œë¦¼ì„ ë¬´ì‹œí–ˆì„ ë•Œ {@link android.app.Activity}를
+시작할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. Android 4.1 ì´í›„부터는
{@link android.app.Activity}를 작업 버튼ì—서 시작할 수 있습니다. ìžì„¸í•œ ë‚´ìš©ì„ ì•Œì•„ë³´ë ¤ë©´
{@link android.support.v4.app.NotificationCompat.Builder} 참조 ê°€ì´ë“œë¥¼ ì½ì–´ë³´ì‹­ì‹œì˜¤.
</p>
<!-- ------------------------------------------------------------------------------------------ -->
<h3 id="Priority">알림 우선 순위</h3>
<p>
- ì›í•œë‹¤ë©´, ì•Œë¦¼ì— ìš°ì„  순위를 설정할 수 있습니다. ìš°ì„  순위는
+ ì›í•œë‹¤ë©´, ì•Œë¦¼ì— ìš°ì„  순위를 설정할 수 있습니다. ìš°ì„  순위는
기기 UIì— ì•Œë¦¼ 표시 ë°©ì‹ì„ 암시하는 ì—­í• ì„ í•©ë‹ˆë‹¤.
알림 우선 순위를 설정하려면, {@link
android.support.v4.app.NotificationCompat.Builder#setPriority(int)
NotificationCompat.Builder.setPriority()}를 호출하고 {@link
-android.support.v4.app.NotificationCompat} ìš°ì„  순위 ìƒìˆ˜ 중 í•˜ë‚˜ì— ì „ë‹¬í•©ë‹ˆë‹¤.
+android.support.v4.app.NotificationCompat} ìš°ì„  순위 ìƒìˆ˜ 중 í•˜ë‚˜ì— ì „ë‹¬í•©ë‹ˆë‹¤.
ìš°ì„  순위 ìˆ˜ì¤€ì€ {@link
android.support.v4.app.NotificationCompat#PRIORITY_MIN}(-2)ì—서 {@link
android.support.v4.app.NotificationCompat#PRIORITY_MAX}(2)까지 다섯 개가 있습니다. 별ë„ì˜ ì„¤ì •ì´ ì—†ì„ ê²½ìš°,
@@ -185,10 +185,10 @@ android.support.v4.app.NotificationCompat#PRIORITY_DEFAULT}(0)으로 설정ë©ë‹
<!-- ------------------------------------------------------------------------------------------ -->
<h3 id="SimpleNotification">단순 알림 만들기</h3>
<p>
- ë‹¤ìŒ ì¡°ê°ì€ 사용ìžê°€ ì•Œë¦¼ì„ í´ë¦­í•˜ë©´ 알리는
+ ë‹¤ìŒ ì¡°ê°ì€ 사용ìžê°€ ì•Œë¦¼ì„ í´ë¦­í•˜ë©´ 알리는
액티비티를 지정하는 단순한 ì•Œë¦¼ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. ì´ ì½”ë“œëŠ”
-{@link android.support.v4.app.TaskStackBuilder} ê°ì²´ë¥¼ ìƒì„±í•˜ê³  ì´ë¥¼ 사용하여
-해당 ìž‘ì—…ì˜ {@link android.app.PendingIntent}를 ìƒì„±í•©ë‹ˆë‹¤. ì´ íŒ¨í„´ì€
+{@link android.support.v4.app.TaskStackBuilder} ê°ì²´ë¥¼ ìƒì„±í•˜ê³  ì´ë¥¼ 사용하여
+해당 ìž‘ì—…ì˜ {@link android.app.PendingIntent}를 ìƒì„±í•©ë‹ˆë‹¤. ì´ íŒ¨í„´ì€
<a href="#NotificationResponse">
액티비티를 시작할 때 íƒìƒ‰ ë³´ì¡´</a> 섹션ì—서 ìžì„¸ížˆ 설명합니다.
</p>
@@ -225,13 +225,13 @@ mNotificationManager.notify(mId, mBuilder.build());
<!-- ------------------------------------------------------------------------------------------ -->
<h3 id="ApplyStyle">ì•Œë¦¼ì— í™•ìž¥ ë ˆì´ì•„웃 ì ìš©</h3>
<p>
- í™•ìž¥ëœ ë³´ê¸°ì— ì•Œë¦¼ì„ ë‚˜íƒ€ë‚˜ê²Œ 하려면,
+ í™•ìž¥ëœ ë³´ê¸°ì— ì•Œë¦¼ì„ ë‚˜íƒ€ë‚˜ê²Œ 하려면,
먼저 ì›í•˜ëŠ” ì¼ë°˜ 보기 옵션으로 {@link android.support.v4.app.NotificationCompat.Builder} ê°ì²´ë¥¼
ìƒì„±í•©ë‹ˆë‹¤. 다ìŒì—는 í™•ìž¥ëœ ë ˆì´ì•„웃 ê°ì²´ì˜ ì¸ìˆ˜ë¡œ {@link android.support.v4.app.NotificationCompat.Builder#setStyle
Builder.setStyle()}ì„ í˜¸ì¶œí•©ë‹ˆë‹¤.
</p>
<p>
- 확장 ì•Œë¦¼ì€ Android 4.1 ì´ì „ 플랫í¼ì—서 사용할 수 없다는 ê²ƒì„ ëª…ì‹¬í•˜ì‹­ì‹œì˜¤.
+ 확장 ì•Œë¦¼ì€ Android 4.1 ì´ì „ 플랫í¼ì—서 사용할 수 없다는 ê²ƒì„ ëª…ì‹¬í•˜ì‹­ì‹œì˜¤.
Android 4.1 ì´í•˜ 플랫í¼ì—서 ì•Œë¦¼ì„ ì²˜ë¦¬í•˜ëŠ” 방법ì€
<a href="#Compatibility">처리 호환성</a> ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
</p>
@@ -264,7 +264,7 @@ mBuilder.setStyle(inBoxStyle);
<h3 id="Compatibility">처리 호환성</h3>
<p>
-
+
알림 ê¸°ëŠ¥ì„ ì„¤ì •í•˜ëŠ” 메서드가
ì§€ì› ë¼ì´ë¸ŒëŸ¬ë¦¬ í´ëž˜ìФ {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}ì— ìžˆë”ë¼ë„ 모든 알림 ê¸°ëŠ¥ì„ íŠ¹ì • 버전ì—서 사용할 수 있는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤.
예를 들어, 확장 ì•Œë¦¼ì— ë”°ë¼ ë‹¬ë¼ì§€ëŠ” 작업 ë²„íŠ¼ì€ Android
@@ -294,13 +294,13 @@ NotificationCompat.Builder}를 ì´ìš©í•´ì„œ ì•Œë¦¼ì„ ìƒì„±í•©ë‹ˆë‹¤. ë˜í•œ, ì
사용ìžê°€ ì•Œë¦¼ì„ í´ë¦­í•˜ë©´ ì•Œë¦¼ì„ ì‹œìž‘ì‹œí‚¤ëŠ” ë°©ì‹ìœ¼ë¡œ 모든 사용ìžì—게 {@link android.app.Activity}ì—서 알림 기능ì„
사용할 수 있게 합니다. ì´ë¥¼ 위해,
-{@link android.app.Activity}를 위한 {@link android.app.PendingIntent}를 ìƒì„±í•©ë‹ˆë‹¤.
+{@link android.app.Activity}를 위한 {@link android.app.PendingIntent}를 ìƒì„±í•©ë‹ˆë‹¤.
{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
setContentIntent()}를 호출하여 ì•Œë¦¼ì— {@link android.app.PendingIntent}를 추가합니다.
</li>
<li>
ì´ì œ 알림ì—서 ì‚¬ìš©í•˜ê³ ìž í•˜ëŠ” 확장 알림 ê¸°ëŠ¥ì„ ì¶”ê°€í•©ë‹ˆë‹¤. ë˜í•œ, 사용ìžê°€ ì•Œë¦¼ì„ í´ë¦­í•˜ë©´ 시작ë˜ëŠ”
-{@link android.app.Activity}ì—서 개발ìžê°€ 추가한 모든 기능ì„
+{@link android.app.Activity}ì—서 개발ìžê°€ 추가한 모든 기능ì„
사용할 수 있어야 합니다.
</li>
</ol>
@@ -310,18 +310,18 @@ setContentIntent()}를 호출하여 ì•Œë¦¼ì— {@link android.app.PendingIntent}ë
<!-- ------------------------------------------------------------------------------------------ -->
<h2 id="Managing">알림 관리</h2>
<p>
- ê°™ì€ ìœ í˜•ì˜ ì´ë²¤íЏì—서 ì•Œë¦¼ì„ ì—¬ëŸ¬ 번 발행해야 í•  경우,
+ ê°™ì€ ìœ í˜•ì˜ ì´ë²¤íЏì—서 ì•Œë¦¼ì„ ì—¬ëŸ¬ 번 발행해야 í•  경우,
완전히 새로운 ì•Œë¦¼ì„ ë§Œë“œëŠ” ê²ƒì€ ì‚¼ê°€ì•¼ 합니다. 대신, ì¼ë¶€ ê°’ì„ ë³€ê²½í•˜ê±°ë‚˜ 추가하거나, ë‘ ê°€ì§€ 조치를 ëª¨ë‘ ì·¨í•˜ì—¬
ì´ì „ ì•Œë¦¼ì„ ì—…ë°ì´íŠ¸í•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
</p>
<p>
예를 들어, Gmailì€ ì½ì§€ ì•Šì€ ë©”ì‹œì§€ 개수를 올리고 ê° ì´ë©”ì¼ì˜ ìš”ì•½ì„ ì•Œë¦¼ì— ì¶”ê°€í•˜ì—¬
-새 ì´ë©”ì¼ ë„ì°©ì„ ì•Œë¦½ë‹ˆë‹¤. ì´ê²ƒì„ ì¼ëª…
-ì•Œë¦¼ì„ "쌓는다"ê³  하며, ì´ëŠ”
+새 ì´ë©”ì¼ ë„ì°©ì„ ì•Œë¦½ë‹ˆë‹¤. ì´ê²ƒì„ ì¼ëª…
+ì•Œë¦¼ì„ "쌓는다"ê³  하며, ì´ëŠ”
<a href="{@docRoot}design/patterns/notifications.html">알림</a> ë””ìžì¸ ê°€ì´ë“œì— ìžì„¸ížˆ 설명ë˜ì–´ 있습니다.
</p>
<p class="note">
- <strong>참고:</strong> ì´ Gmail 기능ì—는 "ë°›ì€íŽ¸ì§€í•¨" 확장 ë ˆì´ì•„ì›ƒì´ í•„ìš”í•œë°,
+ <strong>참고:</strong> ì´ Gmail 기능ì—는 "ë°›ì€íŽ¸ì§€í•¨" 확장 ë ˆì´ì•„ì›ƒì´ í•„ìš”í•œë°,
ì´ê²ƒì€ Android 4.1부터 ì´ìš©í•  수 있는 확장 알림 ê¸°ëŠ¥ì˜ ì¼ë¶€ìž…니다.
</p>
<p>
@@ -331,16 +331,16 @@ setContentIntent()}를 호출하여 ì•Œë¦¼ì— {@link android.app.PendingIntent}ë
<p>
ì•Œë¦¼ì´ ì—…ë°ì´íЏë˜ë„ë¡ ì„¤ì •í•˜ë ¤ë©´,
{@link android.app.NotificationManager#notify(int, android.app.Notification) NotificationManager.notify()}를 호출하여 알림 ID와 함께 발행합니다.
- ì•Œë¦¼ì„ ë°œí–‰í•œ í›„ì— ì—…ë°ì´íŠ¸í•˜ë ¤ë©´,
-{@link android.support.v4.app.NotificationCompat.Builder} ê°ì²´ë¥¼ ì—…ë°ì´íŠ¸í•˜ê±°ë‚˜ ìƒì„±í•˜ê³ ,
-{@link android.app.Notification} ê°ì²´ë¥¼ 구축하고,
-ì´ì „ì— ì‚¬ìš©í•œ 것과 ê°™ì€ ID로 {@link android.app.Notification}ì„ ë°œí–‰í•©ë‹ˆë‹¤. ì´ì „ 알림ì´
+ ì•Œë¦¼ì„ ë°œí–‰í•œ í›„ì— ì—…ë°ì´íŠ¸í•˜ë ¤ë©´,
+{@link android.support.v4.app.NotificationCompat.Builder} ê°ì²´ë¥¼ ì—…ë°ì´íŠ¸í•˜ê±°ë‚˜ ìƒì„±í•˜ê³ ,
+{@link android.app.Notification} ê°ì²´ë¥¼ 구축하고,
+ì´ì „ì— ì‚¬ìš©í•œ 것과 ê°™ì€ ID로 {@link android.app.Notification}ì„ ë°œí–‰í•©ë‹ˆë‹¤. ì´ì „ 알림ì´
여전히 표시ë˜ëŠ” 경우, 시스템ì€
-{@link android.app.Notification} ê°ì²´ì˜ 콘í…츠ì—서 ì•Œë¦¼ì„ ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤. ì´ì „ ì•Œë¦¼ì„ ë¬´ì‹œí•  경우,
+{@link android.app.Notification} ê°ì²´ì˜ 콘í…츠ì—서 ì•Œë¦¼ì„ ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤. ì´ì „ ì•Œë¦¼ì„ ë¬´ì‹œí•  경우,
대신 새로운 ì•Œë¦¼ì´ ìƒì„±ë©ë‹ˆë‹¤.
</p>
<p>
- ë‹¤ìŒ ì½”ë“œ ì¡°ê°ì€ ë°œìƒí•œ ì´ë²¤íЏ 개수를 ë°˜ì˜í•˜ì—¬
+ ë‹¤ìŒ ì½”ë“œ ì¡°ê°ì€ ë°œìƒí•œ ì´ë²¤íЏ 개수를 ë°˜ì˜í•˜ì—¬
ì—…ë°ì´íŠ¸ëœ ì•Œë¦¼ì„ ë‚˜íƒ€ë‚¸ 것입니다. ì´ê²ƒì€ ì•Œë¦¼ì„ ìŒ“ì•„ ìš”ì•½ì„ í‘œì‹œí•©ë‹ˆë‹¤.
</p>
<pre>
@@ -385,7 +385,7 @@ numMessages = 0;
ì´ ë©”ì„œë“œë„ í˜„ìž¬ ì§„í–‰ ì¤‘ì¸ ì•Œë¦¼ì„ ì‚­ì œí•©ë‹ˆë‹¤.
</li>
<li>
- {@link android.app.NotificationManager#cancelAll() cancelAll()}ì„ í˜¸ì¶œí•©ë‹ˆë‹¤.
+ {@link android.app.NotificationManager#cancelAll() cancelAll()}ì„ í˜¸ì¶œí•©ë‹ˆë‹¤.
ì´ê²ƒì€ ì´ì „ì— ë°œí–‰í•œ ì•Œë¦¼ì„ ëª¨ë‘ ì œê±°í•©ë‹ˆë‹¤.
</li>
</ul>
@@ -393,9 +393,9 @@ numMessages = 0;
<!-- ------------------------------------------------------------------------------------------ -->
<h2 id="NotificationResponse">액티비티를 시작할 때 íƒìƒ‰ ë³´ì¡´</h2>
<p>
- 알림ì—서 {@link android.app.Activity}를 시작할 때는 사용ìžì˜ ì˜ˆìƒ íƒìƒ‰ 경험ì„
-보존해야 합니다. <i>'뒤로'를 í´ë¦­í•˜ë©´</i> 사용ìžë¥¼ 애플리케ì´ì…˜ì˜ ì •ìƒ ìž‘ì—… íë¦„ì„ ê±°ì³ ë©”ì¸ ìŠ¤í¬ë¦°ìœ¼ë¡œ ë³´ë‚´ê³ ,
- <i>'최근'ì„ í´ë¦­í•˜ë©´</i>
+ 알림ì—서 {@link android.app.Activity}를 시작할 때는 사용ìžì˜ ì˜ˆìƒ íƒìƒ‰ 경험ì„
+보존해야 합니다. <i>'뒤로'를 í´ë¦­í•˜ë©´</i> 사용ìžë¥¼ 애플리케ì´ì…˜ì˜ ì •ìƒ ìž‘ì—… íë¦„ì„ ê±°ì³ ë©”ì¸ ìŠ¤í¬ë¦°ìœ¼ë¡œ ë³´ë‚´ê³ ,
+ <i>'최근'ì„ í´ë¦­í•˜ë©´</i>
{@link android.app.Activity}를 ë³„ê°œì˜ ìž‘ì—…ìœ¼ë¡œ 표시합니다. íƒìƒ‰ ê²½í—˜ì„ ë³´ì¡´í•˜ë ¤ë©´
새 작업ì—서 {@link android.app.Activity}를 시작해야 합니다. 새로운 ìž‘ì—…ì„ ë¶€ì—¬í•˜ê¸° 위한
{@link android.app.PendingIntent} 설정 ë°©ë²•ì€ ì‹œìž‘í•˜ëŠ”
@@ -406,19 +406,19 @@ numMessages = 0;
정규 액티비티
</dt>
<dd>
- 애플리케ì´ì…˜ì˜ ì •ìƒì  작업 íë¦„ì˜ ì¼ë¶€ì¸ {@link android.app.Activity}를
+ 애플리케ì´ì…˜ì˜ ì •ìƒì  작업 íë¦„ì˜ ì¼ë¶€ì¸ {@link android.app.Activity}를
시작합니다. ì´ ìƒí™©ì—서 {@link android.app.PendingIntent}를 설정하여
새 ìž‘ì—…ì„ ì‹œìž‘í•˜ê³  애플리케ì´ì…˜ì˜
ì •ìƒì ì¸ <i>'뒤로' </i>ë™ìž‘ì„ ìž¬í˜„í•˜ëŠ” ë°± 스íƒìœ¼ë¡œ {@link android.app.PendingIntent}를 제공합니다.
<p>
- Gmail 앱ì—서 보낸 ì•Œë¦¼ì´ ì´ê²ƒì„ 잘 ë³´ì—¬ì¤ë‹ˆë‹¤. í•˜ë‚˜ì˜ ì´ë©”ì¼ ë©”ì‹œì§€ì— ëŒ€í•œ
-ì•Œë¦¼ì„ í´ë¦­í•˜ë©´ 메시지 ìžì²´ë¥¼ 보게 ë©ë‹ˆë‹¤. <b>뒤로</b>를 터치하면
+ Gmail 앱ì—서 보낸 ì•Œë¦¼ì´ ì´ê²ƒì„ 잘 ë³´ì—¬ì¤ë‹ˆë‹¤. í•˜ë‚˜ì˜ ì´ë©”ì¼ ë©”ì‹œì§€ì— ëŒ€í•œ
+ì•Œë¦¼ì„ í´ë¦­í•˜ë©´ 메시지 ìžì²´ë¥¼ 보게 ë©ë‹ˆë‹¤. <b>뒤로</b>를 터치하면
알림ì—서 들어간 ê²ƒì´ ì•„ë‹ˆë¼ ë©”ì¸ ìŠ¤í¬ë¦°ì—서
Gmailì— ë“¤ì–´ê°„ 것처럼 Gmailì„ í†µí•´ ë©”ì¸ ìŠ¤í¬ë¦°ìœ¼ë¡œ ëŒì•„갑니다.
</p>
<p>
- ì´ê²ƒì€ ì•Œë¦¼ì„ í„°ì¹˜í•˜ê¸°ë§Œ 하면 ì–´ëŠ ì• í”Œë¦¬ì¼€ì´ì…˜ì— 있든 관계 ì—†ì´ ë°œìƒí•˜ëŠ”
-ì¼ìž…니다. 예를 들어, Gmailì—서 메시지를 작성하다가
+ ì´ê²ƒì€ ì•Œë¦¼ì„ í„°ì¹˜í•˜ê¸°ë§Œ 하면 ì–´ëŠ ì• í”Œë¦¬ì¼€ì´ì…˜ì— 있든 관계 ì—†ì´ ë°œìƒí•˜ëŠ”
+ì¼ìž…니다. 예를 들어, Gmailì—서 메시지를 작성하다가
한 ì´ë©”ì¼ì— 대한 ì•Œë¦¼ì„ í´ë¦­í•˜ë©´ 해당 ì´ë©”ì¼ë¡œ 바로 ì´ë™í•©ë‹ˆë‹¤. <i>뒤로</i>
를 터치하면
작성 ì¤‘ì¸ ë©”ì‹œì§€ê°€ ì•„ë‹ˆë¼ ë°›ì€íŽ¸ì§€í•¨ê³¼ ë©”ì¸ ìŠ¤í¬ë¦°ìœ¼ë¡œ ëŒì•„갑니다.
@@ -429,18 +429,18 @@ Gmailì— ë“¤ì–´ê°„ 것처럼 Gmailì„ í†µí•´ ë©”ì¸ ìŠ¤í¬ë¦°ìœ¼ë¡œ ëŒì•„갑니
</dt>
<dd>
{@link android.app.Activity}ê°€ 알림ì—서 ì‹œìž‘ë  ê²½ìš° 사용ìžì—게는 ì´ê²ƒë§Œ 보입니다.
- {@link android.app.Activity}는 알림 ìžì²´ì—서 표시하기 어려운 정보를 제공하므로
-ì–´ë–¤ ë©´ì—서는 ì•Œë¦¼ì„ í™•ìž¥í•˜ëŠ” 셈입니다. ì´ ìƒí™©ì—서는,
-{@link android.app.PendingIntent}를 설정하고 새로운 작업ì—서 시작합니다.
-ì‹œìž‘ëœ {@link android.app.Activity}는
-애플리케ì´ì…˜ 액티비티 íë¦„ì˜ ì¼ë¶€ê°€ 아니므로 ë°± 스íƒì„ ìƒì„±í•˜ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤. <i>뒤로</i>를 í´ë¦­í•˜ë©´ 사용ìžëŠ” 여전히
+ {@link android.app.Activity}는 알림 ìžì²´ì—서 표시하기 어려운 정보를 제공하므로
+ì–´ë–¤ ë©´ì—서는 ì•Œë¦¼ì„ í™•ìž¥í•˜ëŠ” 셈입니다. ì´ ìƒí™©ì—서는,
+{@link android.app.PendingIntent}를 설정하고 새로운 작업ì—서 시작합니다.
+ì‹œìž‘ëœ {@link android.app.Activity}는
+애플리케ì´ì…˜ 액티비티 íë¦„ì˜ ì¼ë¶€ê°€ 아니므로 ë°± 스íƒì„ ìƒì„±í•˜ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤. <i>뒤로</i>를 í´ë¦­í•˜ë©´ 사용ìžëŠ” 여전히
ë©”ì¸ ìŠ¤í¬ë¦°ìœ¼ë¡œ ëŒì•„갑니다.
</dd>
</dl>
<!-- ------------------------------------------------------------------------------------------ -->
<h3 id="DirectEntry">정규 액티비티 PendingIntent 설정</h3>
<p>
- ì§ì ‘ ì§„ìž…
+ ì§ì ‘ ì§„ìž…
{@link android.app.Activity}를 시작하는 {@link android.app.PendingIntent}를 설정하려면 다ìŒê³¼ ê°™ì€ ë‹¨ê³„ë¥¼ 따르십시오.
</p>
<ol>
@@ -448,7 +448,7 @@ Gmailì— ë“¤ì–´ê°„ 것처럼 Gmailì„ í†µí•´ ë©”ì¸ ìŠ¤í¬ë¦°ìœ¼ë¡œ ëŒì•„갑니
매니페스트ì—서 애플리케ì´ì…˜ì˜ {@link android.app.Activity} ê³„ì¸µì„ ì •ì˜í•©ë‹ˆë‹¤.
<ol style="list-style-type: lower-alpha;">
<li>
- Android 4.0.3 ì´ì „ì— ëŒ€í•œ ì§€ì›ì„ 추가합니다. ì´ë ‡ê²Œ 하려면
+ Android 4.0.3 ì´ì „ì— ëŒ€í•œ ì§€ì›ì„ 추가합니다. ì´ë ‡ê²Œ 하려면
<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
요소를
@@ -506,39 +506,39 @@ Gmailì— ë“¤ì–´ê°„ 것처럼 Gmailì„ í†µí•´ ë©”ì¸ ìŠ¤í¬ë¦°ìœ¼ë¡œ ëŒì•„갑니
TaskStackBuilder.create()}를 호출하여 ìŠ¤íƒ ë¹Œë”를 ìƒì„±í•©ë‹ˆë‹¤.
</li>
<li>
-
+
{@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}ì„ í˜¸ì¶œí•˜ì—¬ ìŠ¤íƒ ë¹Œë”를 ë°± 스íƒì— 추가합니다.
매니페스트ì—서 ì •ì˜í•œ ê³„ì¸µì˜ ê° {@link android.app.Activity}ì˜ ê²½ìš°,
ë°± 스íƒì—
-{@link android.app.Activity}를 시작하는 {@link android.content.Intent} ê°ì²´ê°€ í¬í•¨ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ” 새로운 작업ì—서
+{@link android.app.Activity}를 시작하는 {@link android.content.Intent} ê°ì²´ê°€ í¬í•¨ë©ë‹ˆë‹¤. ì´ ë©”ì„œë“œëŠ” 새로운 작업ì—서
스íƒì„ 시작하는 í”Œëž˜ê·¸ë„ ì¶”ê°€í•©ë‹ˆë‹¤.
<p class="note">
- <strong>참고:</strong>
+ <strong>참고:</strong>
{@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}ì— ëŒ€í•œ ì¸ìˆ˜ê°€
-ì‹œìž‘ëœ {@link android.app.Activity}ì˜ ì°¸ì¡°ì´ê¸°ëŠ” 하지만, ì´ ë©”ì„œë“œ 호출ì€
+ì‹œìž‘ëœ {@link android.app.Activity}ì˜ ì°¸ì¡°ì´ê¸°ëŠ” 하지만, ì´ ë©”ì„œë“œ 호출ì€
{@link android.app.Activity}를 시작하는 {@link android.content.Intent}를 추가하지 않습니다. 대신, ê·¸ ë¶€ë¶„ì€ ë‹¤ìŒ ë‹¨ê³„ì—서 해결합니다.
</p>
</li>
<li>
-
-{@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}를 호출하여 {@link android.app.Activity}를 시작하는 {@link android.content.Intent}를
+
+{@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}를 호출하여 {@link android.app.Activity}를 시작하는 {@link android.content.Intent}를
추가합니다.
첫 번째 단계ì—서 ìƒì„±í•œ {@link android.content.Intent}를
{@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}ì— ëŒ€í•œ ì¸ìˆ˜ë¡œ 전달합니다.
</li>
<li>
- 필요할 경우
+ 필요할 경우
{@link android.support.v4.app.TaskStackBuilder#editIntentAt
TaskStackBuilder.editIntentAt()}ì„ í˜¸ì¶œí•˜ì—¬ 스íƒì—서{@link android.content.Intent} ê°ì²´ì— 대한 ì¸ìˆ˜ë¥¼ 추가합니다. ì´ê²ƒì€ 사용ìžê°€
<i>'뒤로'</i>를 사용하여 íƒìƒ‰í•  때 대ìƒ{@link android.app.Activity}ê°€ ì˜ë¯¸ 있는 ë°ì´í„°ë¥¼ 표시하ë„ë¡ ë³´ìž¥í•˜ê¸° 위해 때때로 필요한 절차입니다.
</li>
<li>
- ì´ ë°± 스íƒì— 대한 {@link android.app.PendingIntent}를 가져옵니다. ì´ë•Œ
+ ì´ ë°± 스íƒì— 대한 {@link android.app.PendingIntent}를 가져옵니다. ì´ë•Œ
{@link android.support.v4.app.TaskStackBuilder#getPendingIntent getPendingIntent()}를 호출하는 ë°©ë²•ì„ ì”니다.
- 그러면 ì´ {@link android.app.PendingIntent}를
+ 그러면 ì´ {@link android.app.PendingIntent}를
{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
setContentIntent()}ì— ëŒ€í•œ ì¸ìˆ˜ë¡œ 사용할 수 있습니다.
</li>
@@ -569,21 +569,21 @@ mNotificationManager.notify(id, builder.build());
<!-- ------------------------------------------------------------------------------------------ -->
<h3 id="ExtendedNotification">특수 액티비티 PendingIntent 설정</h3>
<p>
- ë‹¤ìŒ ì„¹ì…˜ì—서는 특수 액티비티
+ ë‹¤ìŒ ì„¹ì…˜ì—서는 특수 액티비티
{@link android.app.PendingIntent}를 설정하는 ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.
</p>
<p>
- 특수 {@link android.app.Activity}ì—는 ë°± 스íƒì´ 필요하지 않습니다. ë”°ë¼ì„œ 매니페스트ì—서 ì´ê²ƒì˜
-{@link android.app.Activity} ê³„ì¸µì„ ì •ì˜í•˜ì§€ ì•Šì•„ë„ ë˜ê³ ,
-ë°± 스íƒì„ 구축하기 위해
-{@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}ì„
-호출하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. 대신 매니페스트를 사용하여 {@link android.app.Activity} 작업 ì˜µì…˜ì„ ì„¤ì •í•˜ê³ ,
-{@link android.app.PendingIntent}를 ìƒì„±í•˜ì‹­ì‹œì˜¤. ì´ë•Œ
+ 특수 {@link android.app.Activity}ì—는 ë°± 스íƒì´ 필요하지 않습니다. ë”°ë¼ì„œ 매니페스트ì—서 ì´ê²ƒì˜
+{@link android.app.Activity} ê³„ì¸µì„ ì •ì˜í•˜ì§€ ì•Šì•„ë„ ë˜ê³ ,
+ë°± 스íƒì„ 구축하기 위해
+{@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}ì„
+호출하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. 대신 매니페스트를 사용하여 {@link android.app.Activity} 작업 ì˜µì…˜ì„ ì„¤ì •í•˜ê³ ,
+{@link android.app.PendingIntent}를 ìƒì„±í•˜ì‹­ì‹œì˜¤. ì´ë•Œ
{@link android.app.PendingIntent#getActivity getActivity()}를 호출하는 ë°©ë²•ì„ ì”니다.
</p>
<ol>
<li>
- 매니페스트ì—서 ë‹¤ìŒ ì†ì„±ì„ {@link android.app.Activity}ì— ëŒ€í•œ
+ 매니페스트ì—서 ë‹¤ìŒ ì†ì„±ì„ {@link android.app.Activity}ì— ëŒ€í•œ
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
ìš”ì†Œì— ì¶”ê°€í•©ë‹ˆë‹¤.
<dl>
@@ -597,10 +597,10 @@ mNotificationManager.notify(id, builder.build());
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">android:taskAffinity</a>=""</code>
</dt>
<dd>
- ì´ê²ƒì€ 개발ìžê°€ 코드ì—서 설정하는
-{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK} 플래그와 ë”불어
-ì´ {@link android.app.Activity}ê°€
-애플리케ì´ì…˜ì˜ 기본 작업으로 들어가지 않게 보장합니다. 애플리케ì´ì…˜ì˜ 기본 유사성ì„
+ ì´ê²ƒì€ 개발ìžê°€ 코드ì—서 설정하는
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK} 플래그와 ë”불어
+ì´ {@link android.app.Activity}ê°€
+애플리케ì´ì…˜ì˜ 기본 작업으로 들어가지 않게 보장합니다. 애플리케ì´ì…˜ì˜ 기본 유사성ì„
가지고 있는 기존 ìž‘ì—…ì€ ëª¨ë‘ ì˜í–¥ì„ 받지 않습니다.
</dd>
<dt>
@@ -629,23 +629,23 @@ mNotificationManager.notify(id, builder.build());
ì•Œë¦¼ì„ êµ¬ì¶• ë° ë°œí–‰í•©ë‹ˆë‹¤.
<ol style="list-style-type: lower-alpha;">
<li>
-
+
{@link android.app.Activity}를 시작하는 {@link android.content.Intent}를 ìƒì„±í•©ë‹ˆë‹¤.
</li>
<li>
- {@link android.app.Activity}ê°€ 새로운, 빈 작업ì—서 시작ë˜ë„ë¡ ì„¤ì •í•©ë‹ˆë‹¤. ì´ë•Œ
-{@link android.content.Intent#setFlags setFlags()}를
+ {@link android.app.Activity}ê°€ 새로운, 빈 작업ì—서 시작ë˜ë„ë¡ ì„¤ì •í•©ë‹ˆë‹¤. ì´ë•Œ
+{@link android.content.Intent#setFlags setFlags()}를
{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
- ë°
+ ë°
{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK FLAG_ACTIVITY_CLEAR_TASK} 플래그와 함께 호출하면 ë©ë‹ˆë‹¤.
</li>
<li>
{@link android.content.Intent}ì— í•„ìš”í•œ 다른 모든 ì˜µì…˜ì„ ì„¤ì •í•©ë‹ˆë‹¤.
</li>
<li>
- {@link android.app.PendingIntent}를 {@link android.content.Intent}로부터
+ {@link android.app.PendingIntent}를 {@link android.content.Intent}로부터
ìƒì„±í•©ë‹ˆë‹¤. ì´ë•Œ {@link android.app.PendingIntent#getActivity getActivity()}를 호출하면 ë©ë‹ˆë‹¤.
- 그러면 ì´ {@link android.app.PendingIntent}를
+ 그러면 ì´ {@link android.app.PendingIntent}를
{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
setContentIntent()}ì— ëŒ€í•œ ì¸ìˆ˜ë¡œ 사용할 수 있습니다.
</li>
@@ -687,24 +687,24 @@ mNotificationManager.notify(id, builder.build());
<!-- ------------------------------------------------------------------------------------------ -->
<h2 id="Progress">알림ì—서 ì§„í–‰ ìƒíƒœ 표시</h2>
<p>
- 알림ì—는 사용ìžì—게 ì§„í–‰ ì¤‘ì¸ ìž‘ì—…ì˜ ìƒíƒœë¥¼ 보여주는
-애니메ì´ì…˜ ì§„í–‰ 표시기를 í¬í•¨í•  수 있습니다. ìž‘ì—…ì´ ì–¼ë§ˆë‚˜ 걸릴지, 주어진 시ì ì— ì–´ëŠ ì •ë„ ì™„ë£Œë˜ì—ˆëŠ”ì§€ë¥¼ 추정할 수 있는 경우
-í‘œì‹œê¸°ì˜ "확정ì " 형태(진행률 표시줄)를
-사용하십시오. ìž‘ì—…ì˜ ê¸¸ì´ë¥¼ 추정할 수 없으면, 표시기ì˜
+ 알림ì—는 사용ìžì—게 ì§„í–‰ ì¤‘ì¸ ìž‘ì—…ì˜ ìƒíƒœë¥¼ 보여주는
+애니메ì´ì…˜ ì§„í–‰ 표시기를 í¬í•¨í•  수 있습니다. ìž‘ì—…ì´ ì–¼ë§ˆë‚˜ 걸릴지, 주어진 시ì ì— ì–´ëŠ ì •ë„ ì™„ë£Œë˜ì—ˆëŠ”ì§€ë¥¼ 추정할 수 있는 경우
+í‘œì‹œê¸°ì˜ "확정ì " 형태(진행률 표시줄)를
+사용하십시오. ìž‘ì—…ì˜ ê¸¸ì´ë¥¼ 추정할 수 없으면, 표시기ì˜
"비확정ì " 형태(액티비티 표시기)를 사용하십시오.
</p>
<p>
- ì§„í–‰ ìƒíƒœ 표시기는
+ ì§„í–‰ ìƒíƒœ 표시기는
{@link android.widget.ProgressBar} í´ëž˜ìŠ¤ì˜ í”Œëž«í¼ êµ¬í˜„ìœ¼ë¡œ 표시ë©ë‹ˆë‹¤.
</p>
<p>
- Android 4.0부터 시작ë˜ëŠ” 플랫í¼ì—서 ì§„í–‰ ìƒíƒœ 표시기를 사용하려면,
-{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}를 호출하십시오. ì´ì „
-ë²„ì „ì˜ ê²½ìš°, ê°œë°œìž ë‚˜ë¦„ì˜ ì‚¬ìš©ìž ì§€ì • 알림 ë ˆì´ì•„ì›ƒì„ ìƒì„±í•´ì•¼ 하며 여기ì—
+ Android 4.0부터 시작ë˜ëŠ” 플랫í¼ì—서 ì§„í–‰ ìƒíƒœ 표시기를 사용하려면,
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}를 호출하십시오. ì´ì „
+ë²„ì „ì˜ ê²½ìš°, ê°œë°œìž ë‚˜ë¦„ì˜ ì‚¬ìš©ìž ì§€ì • 알림 ë ˆì´ì•„ì›ƒì„ ìƒì„±í•´ì•¼ 하며 여기ì—
{@link android.widget.ProgressBar} 보기가 í¬í•¨ë˜ì–´ 있어야 합니다.
</p>
<p>
- ë‹¤ìŒ ì„¹ì…˜ì€
+ ë‹¤ìŒ ì„¹ì…˜ì€
{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}를 사용하여 ì•Œë¦¼ì˜ ì§„í–‰ ìƒíƒœë¥¼ 표시하는 ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.
</p>
<!-- ------------------------------------------------------------------------------------------ -->
@@ -712,15 +712,15 @@ mNotificationManager.notify(id, builder.build());
<p>
확정ì ì¸ 진행률 í‘œì‹œì¤„ì„ í‘œì‹œí•˜ë ¤ë©´
{@link android.support.v4.app.NotificationCompat.Builder#setProgress
-setProgress(max, progress, false)}를 호출하여 í‘œì‹œì¤„ì„ ì•Œë¦¼ì— ì¶”ê°€í•˜ê³ , ê·¸ 다ìŒì— ì•Œë¦¼ì„ ë°œí–‰í•©ë‹ˆë‹¤. ìž‘ì—…ì´ ì§„í–‰ë˜ëŠ” ë™ì•ˆ
-<code>progress</code>를 ì¦ê°€ì‹œí‚¤ê³  ì•Œë¦¼ì„ ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤. ìž‘ì—…ì´ ëë‚  무렵
-<code>progress</code>가 <code>max</code>와 같아야 합니다.
+setProgress(max, progress, false)}를 호출하여 í‘œì‹œì¤„ì„ ì•Œë¦¼ì— ì¶”ê°€í•˜ê³ , ê·¸ 다ìŒì— ì•Œë¦¼ì„ ë°œí–‰í•©ë‹ˆë‹¤. ìž‘ì—…ì´ ì§„í–‰ë˜ëŠ” ë™ì•ˆ
+<code>progress</code>를 ì¦ê°€ì‹œí‚¤ê³  ì•Œë¦¼ì„ ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤. ìž‘ì—…ì´ ëë‚  무렵
+<code>progress</code>가 <code>max</code>와 같아야 합니다.
{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}를 호출하는 보편ì ì¸ 방법ì€
<code>max</code>를 100ì— ì„¤ì •í•˜ê³  ìž‘ì—…ì— ëŒ€í•œ "완료 비율" ê°’ì— ë”°ë¼ <code>progress</code>를
ì¦ê°€ì‹œí‚¤ëŠ” 것입니다.
</p>
<p>
- ìž‘ì—…ì´ ì™„ë£Œë˜ë©´ 진행률 í‘œì‹œì¤„ì´ í‘œì‹œë˜ëŠ” ìƒíƒœë¡œ 둘 ìˆ˜ë„ ìžˆê³ , 제거할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì–´ëŠ ê²½ìš°ë¥¼ íƒí•˜ë”ë¼ë„
+ ìž‘ì—…ì´ ì™„ë£Œë˜ë©´ 진행률 í‘œì‹œì¤„ì´ í‘œì‹œë˜ëŠ” ìƒíƒœë¡œ 둘 ìˆ˜ë„ ìžˆê³ , 제거할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì–´ëŠ ê²½ìš°ë¥¼ íƒí•˜ë”ë¼ë„
알림 í…스트를 ì—…ë°ì´íŠ¸í•˜ì—¬ ìž‘ì—…ì´ ì™„ë£Œë˜ì—ˆë‹¤ê³  표시하는 ê²ƒì„ ìžŠì§€ 마십시오.
진행률 í‘œì‹œì¤„ì„ ì œê±°í•˜ë ¤ë©´,
{@link android.support.v4.app.NotificationCompat.Builder#setProgress
@@ -773,15 +773,15 @@ new Thread(
<p>
ë¹„í™•ì •ì  ì•¡í‹°ë¹„í‹° 표시기를 표시하려면,
{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, true)}으로 ì•Œë¦¼ì— í‘œì‹œê¸°ë¥¼ 추가하고(처ìŒì˜ ì¸ìˆ˜ ë‘ ê°œëŠ” 무시합니다)
-, ì•Œë¦¼ì„ ë°œí–‰í•©ë‹ˆë‹¤. ê·¸ 결과로
+, ì•Œë¦¼ì„ ë°œí–‰í•©ë‹ˆë‹¤. ê·¸ 결과로
진행률 표시줄과 ê°™ì€ ìŠ¤íƒ€ì¼ì˜ 표시기가 나타납니다. 다만 ì´ê²ƒì€ 애니메ì´ì…˜ì´ ê³„ì† ì§„í–‰ 중입니다.
</p>
<p>
- ìž‘ì—…ì„ ì‹œìž‘í•  때 ì•Œë¦¼ì„ ë°œí–‰í•©ë‹ˆë‹¤. 애니메ì´ì…˜ì€
-ì•Œë¦¼ì„ ìˆ˜ì •í•  때까지 실행ë©ë‹ˆë‹¤. ìž‘ì—…ì´ ì™„ë£Œë˜ë©´,
+ ìž‘ì—…ì„ ì‹œìž‘í•  때 ì•Œë¦¼ì„ ë°œí–‰í•©ë‹ˆë‹¤. 애니메ì´ì…˜ì€
+ì•Œë¦¼ì„ ìˆ˜ì •í•  때까지 실행ë©ë‹ˆë‹¤. ìž‘ì—…ì´ ì™„ë£Œë˜ë©´,
{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, false)}를 호출하고
ì•Œë¦¼ì„ ì—…ë°ì´íŠ¸í•˜ì—¬ 액티비티 표시기를 제거합니다.
- ì´ ìž‘ì—…ì€ í•­ìƒ í•´ì•¼ 합니다. 하지 않으면, ìž‘ì—…ì´ ì™„ë£Œë˜ë”ë¼ë„ 애니메ì´ì…˜ì´ ê³„ì† ì‹¤í–‰ë©ë‹ˆë‹¤. ë˜í•œ,
+ ì´ ìž‘ì—…ì€ í•­ìƒ í•´ì•¼ 합니다. 하지 않으면, ìž‘ì—…ì´ ì™„ë£Œë˜ë”ë¼ë„ 애니메ì´ì…˜ì´ ê³„ì† ì‹¤í–‰ë©ë‹ˆë‹¤. ë˜í•œ,
알림 í…스트를 변경하여 ìž‘ì—…ì´ ì™„ë£Œë˜ì—ˆìŒì„ 나타내는 ê²ƒì„ ìžŠì§€ 마십시오.
</p>
<p>
@@ -806,19 +806,19 @@ mNotifyManager.notify(0, mBuilder.build());
<h2 id="metadata">알림 메타ë°ì´í„°</h2>
-<p>알림ì€
+<p>알림ì€
ë‹¤ìŒ {@link android.support.v4.app.NotificationCompat.Builder} 메서드로 í• ë‹¹ëœ ë©”íƒ€ë°ì´í„°ì— ë”°ë¼ ì •ë ¬í•  수 있습니다.</p>
<ul>
- <li>{@link android.support.v4.app.NotificationCompat.Builder#setCategory(java.lang.String) setCategory()}는
+ <li>{@link android.support.v4.app.NotificationCompat.Builder#setCategory(java.lang.String) setCategory()}는
기기가 ìš°ì„  순위 ëª¨ë“œì¼ ë•Œ 앱 ì•Œë¦¼ì„ ì²˜ë¦¬í•˜ëŠ” ë°©ë²•ì„ ì‹œìŠ¤í…œì— ì „ë‹¬í•©ë‹ˆë‹¤
(예를 들어, ì•Œë¦¼ì´ ìˆ˜ì‹  전화나 채팅 메시지, 알람 ë“±ì„ ë‚˜íƒ€ë‚¼ 경우).</li>
- <li>{@link android.support.v4.app.NotificationCompat.Builder#setPriority(int) setPriority()}는
-ìš°ì„  순위 필드가 í¬í•¨ëœ ì•Œë¦¼ì„ {@code PRIORITY_MAX} ë˜ëŠ” {@code PRIORITY_HIGH}로 설정하고,
+ <li>{@link android.support.v4.app.NotificationCompat.Builder#setPriority(int) setPriority()}는
+ìš°ì„  순위 필드가 í¬í•¨ëœ ì•Œë¦¼ì„ {@code PRIORITY_MAX} ë˜ëŠ” {@code PRIORITY_HIGH}로 설정하고,
ì•Œë¦¼ì— ì†Œë¦¬ë‚˜ ì§„ë™ì´ í¬í•¨ë˜ì–´ ìžˆì„ ê²½ìš° ìž‘ì€ ë¶€ë™ ì°½ì— ë‚˜íƒ€ë‚˜ê²Œ 합니다.</li>
- <li>{@link android.support.v4.app.NotificationCompat.Builder#addPerson(java.lang.String) addPerson()}ì„
-사용하면 ì•Œë¦¼ì— ì‚¬ëžŒ 목ë¡ì„ 추가할 수 있게 í•´ì¤ë‹ˆë‹¤. 개발ìžì˜ ì•±ì€ ì´ ì‹ í˜¸ë¥¼ 사용하여
-ì‹œìŠ¤í…œì— ì§€ì •ëœ ì‚¬ëžŒë“¤ë¡œë¶€í„° ë°›ì€ ì•Œë¦¼ì„ í•¨ê»˜ 그룹화해야 한다고 알리거나, ì´ëŸ° 사람들로부터 ë°›ì€ ì•Œë¦¼ì„
+ <li>{@link android.support.v4.app.NotificationCompat.Builder#addPerson(java.lang.String) addPerson()}ì„
+사용하면 ì•Œë¦¼ì— ì‚¬ëžŒ 목ë¡ì„ 추가할 수 있게 í•´ì¤ë‹ˆë‹¤. 개발ìžì˜ ì•±ì€ ì´ ì‹ í˜¸ë¥¼ 사용하여
+ì‹œìŠ¤í…œì— ì§€ì •ëœ ì‚¬ëžŒë“¤ë¡œë¶€í„° ë°›ì€ ì•Œë¦¼ì„ í•¨ê»˜ 그룹화해야 한다고 알리거나, ì´ëŸ° 사람들로부터 ë°›ì€ ì•Œë¦¼ì„
ë”ìš± 중요한 것으로 순위를 ë†’ì¼ ìˆ˜ 있습니다.</li>
</ul>
@@ -832,10 +832,10 @@ mNotifyManager.notify(0, mBuilder.build());
<h2 id="Heads-up">헤드업 알림</h2>
<p>Android 5.0(API 레벨 21)ì—서는 ì•Œë¦¼ì„ ìž‘ì€ ë¶€ë™ ì°½ì— ë‚˜íƒ€ë‚¼ 수 있습니다
-(다른 ë§ë¡œ <em>헤드업 알림</em>ì´ë¼ê³  부릅니다). ì´ê²ƒì€ 기기가 활성 ìƒíƒœì¼ 때(즉,
-기기가 잠금 í•´ì œ ìƒíƒœì´ë©° í™”ë©´ì— ì¼œì ¸ 있는 경우) 해당ë©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ ì•Œë¦¼ì€
-ì™¸ê²¬ìƒ ì¼ë°˜ì ì¸ ì•Œë¦¼ì˜ ì†Œí˜• 형태와 비슷해 ë³´ì´ì§€ë§Œ,
-해드업 알림ì—서는 작업 ë²„íŠ¼ë„ í‘œì‹œí•œë‹¤ëŠ” ì ì´ 다릅니다. 사용ìžëŠ” 현재 ì•±ì„ ë– ë‚˜ì§€ 않고ë„
+(다른 ë§ë¡œ <em>헤드업 알림</em>ì´ë¼ê³  부릅니다). ì´ê²ƒì€ 기기가 활성 ìƒíƒœì¼ 때(즉,
+기기가 잠금 í•´ì œ ìƒíƒœì´ë©° í™”ë©´ì— ì¼œì ¸ 있는 경우) 해당ë©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ ì•Œë¦¼ì€
+ì™¸ê²¬ìƒ ì¼ë°˜ì ì¸ ì•Œë¦¼ì˜ ì†Œí˜• 형태와 비슷해 ë³´ì´ì§€ë§Œ,
+해드업 알림ì—서는 작업 ë²„íŠ¼ë„ í‘œì‹œí•œë‹¤ëŠ” ì ì´ 다릅니다. 사용ìžëŠ” 현재 ì•±ì„ ë– ë‚˜ì§€ 않고ë„
헤드업 ì•Œë¦¼ì— ì¡°ì¹˜ë¥¼ 취하거나 ì´ë¥¼ 무시할 수 있습니다.</p>
<p>헤드업 ì•Œë¦¼ì„ íŠ¸ë¦¬ê±°í•  수 있는 ì¡°ê±´ì˜ ì˜ˆì‹œë¥¼ 몇 가지 소개하면 다ìŒê³¼ 같습니다.</p>
@@ -843,55 +843,55 @@ mNotifyManager.notify(0, mBuilder.build());
<ul>
<li>ì‚¬ìš©ìž ì•¡í‹°ë¹„í‹°ê°€ ì „ì²´ 화면 모드ì´ê±°ë‚˜(앱ì´
{@link android.app.Notification#fullScreenIntent}를 사용할 경우)</li>
- <li>ì•Œë¦¼ì˜ ìš°ì„  순위가 높고
+ <li>ì•Œë¦¼ì˜ ìš°ì„  순위가 높고
벨소리나 ì§„ë™ì„ 사용할 경우</li>
</ul>
<h2 id="lockscreenNotification">잠금 화면 알림</h2>
-<p>Android 5.0 (API 레벨 21) 릴리스부터 ì•Œë¦¼ì´ ìž ê¸ˆ 화면ì—ë„
-나타날 수 있게 ë˜ì—ˆìŠµë‹ˆë‹¤. ì•±ì€ ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë©´ 미디어 ìž¬ìƒ ì œì–´ì™€ 다른 보편ì ì¸ 작업ì„
-제공할 수 있습니다. 사용ìžëŠ” ì„¤ì •ì„ í†µí•´ 잠금 í™”ë©´ì— ì•Œë¦¼ 표시 여부를 ì„ íƒí•  수 있고,
+<p>Android 5.0 (API 레벨 21) 릴리스부터 ì•Œë¦¼ì´ ìž ê¸ˆ 화면ì—ë„
+나타날 수 있게 ë˜ì—ˆìŠµë‹ˆë‹¤. ì•±ì€ ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë©´ 미디어 ìž¬ìƒ ì œì–´ì™€ 다른 보편ì ì¸ 작업ì„
+제공할 수 있습니다. 사용ìžëŠ” ì„¤ì •ì„ í†µí•´ 잠금 í™”ë©´ì— ì•Œë¦¼ 표시 여부를 ì„ íƒí•  수 있고,
개발ìžëŠ” ì•±ì˜ ì•Œë¦¼ì´ ìž ê¸ˆ í™”ë©´ì— í‘œì‹œë ì§€ 여부를 지정할 수 있습니다.</p>
<h3 id="visibility">가시성 설정</h3>
-<p>보안 잠금 í™”ë©´ì— ì•Œë¦¼ì´ ì–¼ë§ˆë‚˜ ìƒì„¸í•˜ê²Œ í‘œì‹œë  ê²ƒì¸ì§€ ê·¸ ìˆ˜ì¤€ì„ ì•±ì´ ì œì–´í•  수
-있습니다. {@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()}를 호출하고
+<p>보안 잠금 í™”ë©´ì— ì•Œë¦¼ì´ ì–¼ë§ˆë‚˜ ìƒì„¸í•˜ê²Œ í‘œì‹œë  ê²ƒì¸ì§€ ê·¸ ìˆ˜ì¤€ì„ ì•±ì´ ì œì–´í•  수
+있습니다. {@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()}를 호출하고
ë‹¤ìŒ ê°’ 중 하나를 지정합니다.</p>
<ul>
- <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}ì€
+ <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}ì€
ì•Œë¦¼ì˜ ì „ì²´ 콘í…츠를 표시합니다.</li>
- <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET}ì€
+ <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET}ì€
ì´ ì•Œë¦¼ì˜ ì–´ë–¤ ë¶€ë¶„ë„ í™”ë©´ì— í‘œì‹œí•˜ì§€ 않습니다.</li>
- <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE}ì€
+ <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE}ì€
알림 ì•„ì´ì½˜ê³¼ 콘í…츠 제목 ë“±ì˜ ê¸°ë³¸ 정보는 표시하지만 ì•Œë¦¼ì˜ ì „ì²´ 콘í…츠는 숨ê¹ë‹ˆë‹¤.</li>
</ul>
<p>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE}으로 설정하면 ,
-알림 콘í…ì¸ ì˜ ëŒ€ì²´ ë²„ì „ì„ ì œê³µí•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 특정 세부 사항만 숨ê¹ë‹ˆë‹¤. 예를 들어,
-SMS 앱ì—서 <em>3ê°œì˜ ìƒˆ ë¬¸ìž ë©”ì‹œì§€ê°€ 있습니다.</em>ë¼ê³  표시하면서ë„
-ë¬¸ìž ë©”ì‹œì§€ì˜ ë‚´ìš©ê³¼ 발신ìžëŠ” 숨길 수 있습니다. ì´ ëŒ€ì²´ ì•Œë¦¼ì„ ì œê³µí•˜ë ¤ë©´, ìš°ì„  대체 ì•Œë¦¼ì„ ìƒì„±í•©ë‹ˆë‹¤. ì´ë•Œ
-{@link android.support.v4.app.NotificationCompat.Builder}를 사용합니다. 비공개 알림 ê°ì²´ë¥¼
-ìƒì„±í•˜ëŠ” 경우, 대체 ì•Œë¦¼ì„ ì´ì— 첨부할 때
+알림 콘í…ì¸ ì˜ ëŒ€ì²´ ë²„ì „ì„ ì œê³µí•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 특정 세부 사항만 숨ê¹ë‹ˆë‹¤. 예를 들어,
+SMS 앱ì—서 <em>3ê°œì˜ ìƒˆ ë¬¸ìž ë©”ì‹œì§€ê°€ 있습니다.</em>ë¼ê³  표시하면서ë„
+ë¬¸ìž ë©”ì‹œì§€ì˜ ë‚´ìš©ê³¼ 발신ìžëŠ” 숨길 수 있습니다. ì´ ëŒ€ì²´ ì•Œë¦¼ì„ ì œê³µí•˜ë ¤ë©´, ìš°ì„  대체 ì•Œë¦¼ì„ ìƒì„±í•©ë‹ˆë‹¤. ì´ë•Œ
+{@link android.support.v4.app.NotificationCompat.Builder}를 사용합니다. 비공개 알림 ê°ì²´ë¥¼
+ìƒì„±í•˜ëŠ” 경우, 대체 ì•Œë¦¼ì„ ì´ì— 첨부할 때
{@link android.support.v4.app.NotificationCompat.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}
메서드를 통합니다.</p>
<h3 id="controllingMedia">잠금 화면ì—서 미디어 ìž¬ìƒ ì œì–´</h3>
-<p>Android 5.0(API 레벨 21)ì˜ ìž ê¸ˆ 화면ì—서는 ë” ì´ìƒ
-{@link android.media.RemoteControlClient}를 기반으로 한 미디어 제어를 표시하지 않습니다. ì´ëŠ” 사용ë˜ì§€ 않고 있기 때문입니다. 대신,
-{@link android.app.Notification.MediaStyle} 템플릿ì„
+<p>Android 5.0(API 레벨 21)ì˜ ìž ê¸ˆ 화면ì—서는 ë” ì´ìƒ
+{@link android.media.RemoteControlClient}를 기반으로 한 미디어 제어를 표시하지 않습니다. ì´ëŠ” 사용ë˜ì§€ 않고 있기 때문입니다. 대신,
+{@link android.app.Notification.MediaStyle} 템플릿ì„
{@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
메서드와 함께 사용하십시오. ì´ ë©”ì„œë“œëŠ” ìž‘ì—…ì„ í´ë¦­í•  수 있는 ì•„ì´ì½˜ìœ¼ë¡œ 변환해ì¤ë‹ˆë‹¤.</p>
-<p class="note"><strong>참고:</strong> ì´ í…œí”Œë¦¿ê³¼ {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
-메서드는 ì§€ì› ë¼ì´ë¸ŒëŸ¬ë¦¬ì— í¬í•¨ë˜ì–´ 있지 않으므로 ì´ ê¸°ëŠ¥ì€ Android 5.0 ì´ìƒì—서만
+<p class="note"><strong>참고:</strong> ì´ í…œí”Œë¦¿ê³¼ {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+메서드는 ì§€ì› ë¼ì´ë¸ŒëŸ¬ë¦¬ì— í¬í•¨ë˜ì–´ 있지 않으므로 ì´ ê¸°ëŠ¥ì€ Android 5.0 ì´ìƒì—서만
실행ë©ë‹ˆë‹¤.</p>
-<p>Android 5.0ì˜ ìž ê¸ˆ 화면ì—서 미디어 ìž¬ìƒ ì œì–´ë¥¼ 표시하려면,
-ìœ„ì— ì„¤ëª…í•œ 바와 ê°™ì´ ê°€ì‹œì„±ì„ {@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}으로 설정합니다. 그런 ë‹¤ìŒ ë‹¤ìŒ ìƒ˜í”Œ 코드ì—서 설명한 바와 ê°™ì´ ìž‘ì—…ì„ ì¶”ê°€í•˜ê³ 
+<p>Android 5.0ì˜ ìž ê¸ˆ 화면ì—서 미디어 ìž¬ìƒ ì œì–´ë¥¼ 표시하려면,
+ìœ„ì— ì„¤ëª…í•œ 바와 ê°™ì´ ê°€ì‹œì„±ì„ {@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}으로 설정합니다. 그런 ë‹¤ìŒ ë‹¤ìŒ ìƒ˜í”Œ 코드ì—서 설명한 바와 ê°™ì´ ìž‘ì—…ì„ ì¶”ê°€í•˜ê³ 
{@link android.app.Notification.MediaStyle} í…œí”Œë¦¿ì„ ì„¤ì •í•©ë‹ˆë‹¤.
</p>
@@ -914,7 +914,7 @@ Notification notification = new Notification.Builder(context)
.build();
</pre>
-<p class="note"><strong>참고:</strong> {@link android.media.RemoteControlClient}를
+<p class="note"><strong>참고:</strong> {@link android.media.RemoteControlClient}를
사용하지 않게 ëœ ê²ƒì€ ë¯¸ë””ì–´ ì œì–´ì— ì´ì™¸ì—ë„ ë” ë§Žì€ ì˜í–¥ì„ 미칩니다. 미디어 ì„¸ì…˜ì„ ê´€ë¦¬í•˜ê³  재ìƒì„ 제어하기 위한 새 APIì— ê´€í•œ ìžì„¸í•œ 정보는
<a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">미디어 ìž¬ìƒ ì œì–´</a>를
참조하십시오.</p>
@@ -923,57 +923,57 @@ Notification notification = new Notification.Builder(context)
<!-- ------------------------------------------------------------------------------------------ -->
<h2 id="CustomNotification">ì‚¬ìš©ìž ì§€ì • 알림 ë ˆì´ì•„웃</h2>
<p>
- 알림 프레임워í¬ë¥¼ 사용하면 ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì„ ì •ì˜í•  수 있습니다.
+ 알림 프레임워í¬ë¥¼ 사용하면 ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì„ ì •ì˜í•  수 있습니다.
ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì€ {@link android.widget.RemoteViews} ê°ì²´ì—서 ì•Œë¦¼ì˜ ì™¸ê´€ì„ ì •ì˜í•©ë‹ˆë‹¤.
ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„웃 ì•Œë¦¼ì€ ì¼ë°˜ì ì¸ 알림과 비슷하지만, ì´ë“¤ì€ XML ë ˆì´ì•„웃 파ì¼ì—서
ì •ì˜í•œ {@link android.widget.RemoteViews}ì— ê¸°ì´ˆí•©ë‹ˆë‹¤.
</p>
<p>
- ì‚¬ìš©ìž ì§€ì • 알림 ë ˆì´ì•„ì›ƒì— ì‚¬ìš©í•  수 있는 높ì´ëŠ” 알림 ë³´ê¸°ì— ë”°ë¼ ë‹¤ë¦…ë‹ˆë‹¤. ì¼ë°˜
+ ì‚¬ìš©ìž ì§€ì • 알림 ë ˆì´ì•„ì›ƒì— ì‚¬ìš©í•  수 있는 높ì´ëŠ” 알림 ë³´ê¸°ì— ë”°ë¼ ë‹¤ë¦…ë‹ˆë‹¤. ì¼ë°˜
보기 ë ˆì´ì•„ì›ƒì€ 64dp로 제한ë˜ì–´ 있으며 확장 보기 ë ˆì´ì•„ì›ƒì€ 256dp로 제한ë˜ì–´ 있습니다.
</p>
<p>
- ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì„ ì •ì˜í•˜ë ¤ë©´
-XML ë ˆì´ì•„웃 파ì¼ì„ 팽창하는 {@link android.widget.RemoteViews} ê°ì²´ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•˜ëŠ” 것부터 시작합니다. 그런 다ìŒ,
+ ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì„ ì •ì˜í•˜ë ¤ë©´
+XML ë ˆì´ì•„웃 파ì¼ì„ 팽창하는 {@link android.widget.RemoteViews} ê°ì²´ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•˜ëŠ” 것부터 시작합니다. 그런 다ìŒ,
-{@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()}ê³¼ ê°™ì€ ë©”ì„œë“œë¥¼ 호출하는 대신
-{@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}를 호출합니다. ì‚¬ìš©ìž ì§€ì • 알림ì—서
+{@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()}ê³¼ ê°™ì€ ë©”ì„œë“œë¥¼ 호출하는 대신
+{@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}를 호출합니다. ì‚¬ìš©ìž ì§€ì • 알림ì—서
콘í…츠 세부 정보를 설정하려면
{@link android.widget.RemoteViews}ì˜ ë©”ì„œë“œë¥¼ 사용하여 ë³´ê¸°ì˜ í•˜ìœ„ ìš”ì†Œì— ëŒ€í•œ ê°’ì„ ì„¤ì •í•©ë‹ˆë‹¤.
</p>
<ol>
<li>
- ì•Œë¦¼ì— ëŒ€í•œ XML ë ˆì´ì•„ì›ƒì€ ë³„ë„ì˜ íŒŒì¼ì— ìƒì„±í•˜ì‹­ì‹œì˜¤. íŒŒì¼ ì´ë¦„ì€ ì›í•˜ëŠ” 대로
+ ì•Œë¦¼ì— ëŒ€í•œ XML ë ˆì´ì•„ì›ƒì€ ë³„ë„ì˜ íŒŒì¼ì— ìƒì„±í•˜ì‹­ì‹œì˜¤. íŒŒì¼ ì´ë¦„ì€ ì›í•˜ëŠ” 대로
아무 것ì´ë‚˜ ì‚¬ìš©í•´ë„ ì¢‹ì§€ë§Œ, 확장ìžëŠ” <code>.xml</code>ì„ ì‚¬ìš©í•´ì•¼ 합니다.
</li>
<li>
- 앱ì—서 {@link android.widget.RemoteViews} 메서드를 사용하여 ì•Œë¦¼ì˜ ì•„ì´ì½˜ê³¼ í…스트를
-ì •ì˜í•©ë‹ˆë‹¤. ì´ {@link android.widget.RemoteViews} ê°ì²´ë¥¼
-{@link android.support.v4.app.NotificationCompat.Builder} ì•ˆì— ë„£ìœ¼ì‹­ì‹œì˜¤.
-{@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}를 호출하면 ë©ë‹ˆë‹¤. ë°°ê²½
-{@link android.graphics.drawable.Drawable}ì„
+ 앱ì—서 {@link android.widget.RemoteViews} 메서드를 사용하여 ì•Œë¦¼ì˜ ì•„ì´ì½˜ê³¼ í…스트를
+ì •ì˜í•©ë‹ˆë‹¤. ì´ {@link android.widget.RemoteViews} ê°ì²´ë¥¼
+{@link android.support.v4.app.NotificationCompat.Builder} ì•ˆì— ë„£ìœ¼ì‹­ì‹œì˜¤.
+{@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}를 호출하면 ë©ë‹ˆë‹¤. ë°°ê²½
+{@link android.graphics.drawable.Drawable}ì„
{@link android.widget.RemoteViews} ê°ì²´ì—서 설정하는 ê²ƒì€ ì‚¼ê°€í•˜ì‹­ì‹œì˜¤. í…스트 색ìƒì„ ì½ì„ 수 없게 ë  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
</li>
</ol>
<p>
- {@link android.widget.RemoteViews} í´ëž˜ìФì—ë„ ê°œë°œìžê°€ ì†ì‰½ê²Œ 사용할 수 있는 여러 가지 메서드가 í¬í•¨ë˜ì–´ 있습니다. ì´ë¥¼ ì´ìš©í•´
-{@link android.widget.Chronometer} ë˜ëŠ” {@link android.widget.ProgressBar}를
+ {@link android.widget.RemoteViews} í´ëž˜ìФì—ë„ ê°œë°œìžê°€ ì†ì‰½ê²Œ 사용할 수 있는 여러 가지 메서드가 í¬í•¨ë˜ì–´ 있습니다. ì´ë¥¼ ì´ìš©í•´
+{@link android.widget.Chronometer} ë˜ëŠ” {@link android.widget.ProgressBar}를
ì•Œë¦¼ì˜ ë ˆì´ì•„ì›ƒì— ì¶”ê°€í•˜ë©´ ë©ë‹ˆë‹¤. ì•Œë¦¼ì˜ ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„웃 ìƒì„±ì— 관한 ìžì„¸í•œ 정보는
{@link android.widget.RemoteViews} 참조 문서를 참조하십시오.
</p>
<p class="caution">
- <strong>주ì˜:</strong> ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•˜ëŠ” 경우,
-ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì´ ë‹¤ì–‘í•œ 기기 방향과 í•´ìƒë„ì—서 ìž‘ë™í•˜ëŠ”ì§€ ê°ë³„히 주ì˜ë¥¼ 기울여 확ì¸í•˜ì‹­ì‹œì˜¤. ì´ ì¡°ì–¸ì€
-모든 보기 ë ˆì´ì•„ì›ƒì— ê³µí†µì ìœ¼ë¡œ ì ìš©ë˜ì§€ë§Œ, 특히 ì•Œë¦¼ì— ì¤‘ìš”í•œ ì˜ë¯¸ë¥¼ 지닙니다.
-알림 ì°½ì—서는 ê³µê°„ì´ êµ‰ìž¥ížˆ 제한ë˜ì–´ 있기 때문입니다. ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì„ ë„ˆë¬´ 복잡하게 만들지 마시고,
+ <strong>주ì˜:</strong> ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì„ ì‚¬ìš©í•˜ëŠ” 경우,
+ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì´ ë‹¤ì–‘í•œ 기기 방향과 í•´ìƒë„ì—서 ìž‘ë™í•˜ëŠ”ì§€ ê°ë³„히 주ì˜ë¥¼ 기울여 확ì¸í•˜ì‹­ì‹œì˜¤. ì´ ì¡°ì–¸ì€
+모든 보기 ë ˆì´ì•„ì›ƒì— ê³µí†µì ìœ¼ë¡œ ì ìš©ë˜ì§€ë§Œ, 특히 ì•Œë¦¼ì— ì¤‘ìš”í•œ ì˜ë¯¸ë¥¼ 지닙니다.
+알림 ì°½ì—서는 ê³µê°„ì´ êµ‰ìž¥ížˆ 제한ë˜ì–´ 있기 때문입니다. ì‚¬ìš©ìž ì§€ì • ë ˆì´ì•„ì›ƒì„ ë„ˆë¬´ 복잡하게 만들지 마시고,
여러 가지 구성ì—서 테스트하는 ê²ƒì„ ìžŠì§€ 마십시오.
</p>
<!-- ------------------------------------------------------------------------------------------ -->
<h4>ì‚¬ìš©ìž ì§€ì • 알림 í…ìŠ¤íŠ¸ì— ìŠ¤íƒ€ì¼ ë¦¬ì†ŒìŠ¤ 사용</h4>
<p>
- ì‚¬ìš©ìž ì§€ì • ì•Œë¦¼ì˜ í…스트ì—는 í•­ìƒ ìŠ¤íƒ€ì¼ ë¦¬ì†ŒìŠ¤ë¥¼ 사용하십시오. ì•Œë¦¼ì˜ ë°°ê²½ 색ìƒì€ 기기와 버전별로 다를 수 있습니다.
-ìŠ¤íƒ€ì¼ ë¦¬ì†ŒìŠ¤ë¥¼ 사용하면 ì´ëŸ¬í•œ ì°¨ì´ë¥¼
-ê°ì•ˆí•˜ëŠ” ë° ë„ì›€ì´ ë©ë‹ˆë‹¤. Android 2.3부터 시스템ì€
-표준 알림 ë ˆì´ì•„웃 í…ìŠ¤íŠ¸ì˜ ìŠ¤íƒ€ì¼ì„ ì •ì˜í–ˆìŠµë‹ˆë‹¤. Android 2.3 ì´ìƒì„ 대ìƒìœ¼ë¡œ 하는
+ ì‚¬ìš©ìž ì§€ì • ì•Œë¦¼ì˜ í…스트ì—는 í•­ìƒ ìŠ¤íƒ€ì¼ ë¦¬ì†ŒìŠ¤ë¥¼ 사용하십시오. ì•Œë¦¼ì˜ ë°°ê²½ 색ìƒì€ 기기와 버전별로 다를 수 있습니다.
+ìŠ¤íƒ€ì¼ ë¦¬ì†ŒìŠ¤ë¥¼ 사용하면 ì´ëŸ¬í•œ ì°¨ì´ë¥¼
+ê°ì•ˆí•˜ëŠ” ë° ë„ì›€ì´ ë©ë‹ˆë‹¤. Android 2.3부터 시스템ì€
+표준 알림 ë ˆì´ì•„웃 í…ìŠ¤íŠ¸ì˜ ìŠ¤íƒ€ì¼ì„ ì •ì˜í–ˆìŠµë‹ˆë‹¤. Android 2.3 ì´ìƒì„ 대ìƒìœ¼ë¡œ 하는
애플리케ì´ì…˜ì—서와 ê°™ì€ ìŠ¤íƒ€ì¼ì„ 사용하면 í…스트가 ë””ìŠ¤í”Œë ˆì´ ë°°ê²½ì—ì„œë„ ìž˜ ë³´ì´ë„ë¡ í•  수 있습니다.
</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/overview.jd b/docs/html-intl/intl/ko/guide/topics/ui/overview.jd
index eb288f1532ae..72e5692e80e4 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/overview.jd
@@ -3,9 +3,9 @@ page.title=UI 개요
<p>Android ì•±ì˜ ëª¨ë“  ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ 요소는 {@link android.view.View}와
-{@link android.view.ViewGroup} 개체를 사용하여 구축합니다. {@link android.view.View}는 사용ìžê°€ ìƒí˜¸ 작용할 수 있는 무언가를
-í™”ë©´ì— ê·¸ë¦¬ëŠ” ê°ì²´ìž…니다. {@link android.view.ViewGroup}ì€
-ì¸í„°íŽ˜ì´ìФ ë ˆì´ì•„ì›ƒì„ ì •ì˜í•˜ê¸° 위해 다른 {@link android.view.View}(ë°{@link android.view.ViewGroup}) ê°ì²´ë¥¼
+{@link android.view.ViewGroup} 개체를 사용하여 구축합니다. {@link android.view.View}는 사용ìžê°€ ìƒí˜¸ 작용할 수 있는 무언가를
+í™”ë©´ì— ê·¸ë¦¬ëŠ” ê°ì²´ìž…니다. {@link android.view.ViewGroup}ì€
+ì¸í„°íŽ˜ì´ìФ ë ˆì´ì•„ì›ƒì„ ì •ì˜í•˜ê¸° 위해 다른 {@link android.view.View}(ë°{@link android.view.ViewGroup}) ê°ì²´ë¥¼
보유하는 ê°ì²´ìž…니다.</p>
<p>Android는 공통 ìž…ë ¥ 제어(버튼 ë° í…스트 필드)와 다양한 ë ˆì´ì•„웃 모ë¸(선형 ë˜ëŠ” 관계 ë ˆì´ì•„웃)ì„ ì œê³µí•˜ëŠ” {@link android.view.View}와 {@link
@@ -16,30 +16,30 @@ android.view.ViewGroup} 하위 í´ëž˜ìФì˜
<h2 id="Layout">ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ ë ˆì´ì•„웃</h2>
<p>ì•±ì˜ ê° êµ¬ì„± ìš”ì†Œì— ëŒ€í•œ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ëŠ” 그림 1ì—서 나타난 바와 ê°™ì´ {@link
-android.view.View}와 {@link android.view.ViewGroup} ê°ì²´ì˜ 계층으로 ì •ì˜ë©ë‹ˆë‹¤. ê° ë³´ê¸° 그룹ì€
-하위 보기를 체계화하는 투명한 컨테ì´ë„ˆì´ê³ ,
-하위 보기는 UIì˜ ì¼ë¶€ë¶„ì„ ê·¸ë¦¬ëŠ” 제어나 다른 ìœ„ì ¯ì¼ ìˆ˜ 있습니다.
-ì´ ê³„ì¸µ 트리는 개발ìžì—게 필요한 ë§Œí¼ ë‹¨ìˆœí•˜ê±°ë‚˜ 복잡하게
+android.view.View}와 {@link android.view.ViewGroup} ê°ì²´ì˜ 계층으로 ì •ì˜ë©ë‹ˆë‹¤. ê° ë³´ê¸° 그룹ì€
+하위 보기를 체계화하는 투명한 컨테ì´ë„ˆì´ê³ ,
+하위 보기는 UIì˜ ì¼ë¶€ë¶„ì„ ê·¸ë¦¬ëŠ” 제어나 다른 ìœ„ì ¯ì¼ ìˆ˜ 있습니다.
+ì´ ê³„ì¸µ 트리는 개발ìžì—게 필요한 ë§Œí¼ ë‹¨ìˆœí•˜ê±°ë‚˜ 복잡하게
만들 수 있습니다(다만 단순한 ê²ƒì´ ì„±ëŠ¥ì—는 가장 좋습니다).</p>
<img src="{@docRoot}images/viewgroup.png" alt="" />
-<p class="img-caption"><strong>그림 1.</strong> 보기 ê³„ì¸µì„ ë‚˜íƒ€ë‚¸ 것으로, ì´ê²ƒì´
+<p class="img-caption"><strong>그림 1.</strong> 보기 ê³„ì¸µì„ ë‚˜íƒ€ë‚¸ 것으로, ì´ê²ƒì´
UI ë ˆì´ì•„ì›ƒì„ ì •ì˜í•©ë‹ˆë‹¤.</p>
-<p>ë ˆì´ì•„ì›ƒì„ ì„ ì–¸í•˜ë ¤ë©´ ì½”ë“œì˜ {@link android.view.View} ê°ì²´ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•˜ê³  트리를 구축하기 시작하면 ë˜ì§€ë§Œ,
-ë ˆì´ì•„ì›ƒì„ ì •ì˜í•˜ëŠ” 가장 쉽고 효과ì ì¸ ë°©ë²•ì€ XML 파ì¼ì„ 사용하는 것입니다.
+<p>ë ˆì´ì•„ì›ƒì„ ì„ ì–¸í•˜ë ¤ë©´ ì½”ë“œì˜ {@link android.view.View} ê°ì²´ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•˜ê³  트리를 구축하기 시작하면 ë˜ì§€ë§Œ,
+ë ˆì´ì•„ì›ƒì„ ì •ì˜í•˜ëŠ” 가장 쉽고 효과ì ì¸ ë°©ë²•ì€ XML 파ì¼ì„ 사용하는 것입니다.
XMLì€ HTMLê³¼ 유사한, ì¸ê°„ì´ ì½ì„ 수 있는 ë ˆì´ì•„웃 구조를 제공합니다.</p>
-<p>ë³´ê¸°ì˜ XML 요소 ì´ë¦„ì€ í•´ë‹¹ 요소가 나타내는 ê°ê°ì˜ Android í´ëž˜ìŠ¤ë¥¼ 따릅니다. ë§í•˜ìžë©´
+<p>ë³´ê¸°ì˜ XML 요소 ì´ë¦„ì€ í•´ë‹¹ 요소가 나타내는 ê°ê°ì˜ Android í´ëž˜ìŠ¤ë¥¼ 따릅니다. ë§í•˜ìžë©´
<code>&lt;TextView&gt;</code> 요소가 UIì—서 {@link android.widget.TextView} ìœ„ì ¯ì„ ìƒì„±í•˜ê³ ,
-<code>&lt;LinearLayout&gt;</code> 요소는 {@link android.widget.LinearLayout} 보기
+<code>&lt;LinearLayout&gt;</code> 요소는 {@link android.widget.LinearLayout} 보기
ê·¸ë£¹ì„ ìƒì„±í•˜ëŠ” 것입니다. </p>
<p>예를 들어, í…스트 보기와 버튼 하나가 있는 단순한 ìˆ˜ì§ ë ˆì´ì•„ì›ƒì€ ì´ëŸ° ëª¨ìŠµì„ ë±ë‹ˆë‹¤.</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
+ android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
&lt;TextView android:id="@+id/text"
@@ -53,19 +53,19 @@ XMLì€ HTMLê³¼ 유사한, ì¸ê°„ì´ ì½ì„ 수 있는 ë ˆì´ì•„웃 구조를 ì œ
&lt;/LinearLayout>
</pre>
-<p>ì•±ì— ë ˆì´ì•„웃 리소스를 로드하면 Androidê°€ ë ˆì´ì•„ì›ƒì˜ ê° ë…¸ë“œë¥¼ 초기화하여
-추가 ë™ìž‘ì„ ì •ì˜í•˜ê±°ë‚˜, ê°ì²´ ìƒíƒœë¥¼ 쿼리 ë˜ëŠ” ë ˆì´ì•„ì›ƒì„ ìˆ˜ì •í•˜ëŠ” ë° ì“¸ 수 있는 런타임 ê°ì²´ë¡œ
+<p>ì•±ì— ë ˆì´ì•„웃 리소스를 로드하면 Androidê°€ ë ˆì´ì•„ì›ƒì˜ ê° ë…¸ë“œë¥¼ 초기화하여
+추가 ë™ìž‘ì„ ì •ì˜í•˜ê±°ë‚˜, ê°ì²´ ìƒíƒœë¥¼ 쿼리 ë˜ëŠ” ë ˆì´ì•„ì›ƒì„ ìˆ˜ì •í•˜ëŠ” ë° ì“¸ 수 있는 런타임 ê°ì²´ë¡œ
초기화합니다.</p>
-<p>UI ë ˆì´ì•„웃 ìƒì„±ì— 대한 완전한 ê°€ì´ë“œëŠ” <a href="declaring-layout.html">XML
+<p>UI ë ˆì´ì•„웃 ìƒì„±ì— 대한 완전한 ê°€ì´ë“œëŠ” <a href="declaring-layout.html">XML
ë ˆì´ì•„웃</a>ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.
-
+
<h2 id="UIComponents">ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ 구성 요소</h2>
<p>UI를 구축할 때 ëª¨ë‘ {@link android.view.View} ë° {@link
-android.view.ViewGroup} ê°ì²´ë¥¼ 사용해야 하는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. Androidê°€ 표준형 UI ë ˆì´ì•„ì›ƒì„ ì œê³µí•˜ëŠ” 앱 구성 요소를 여러 ê°œ 제공하고 있으니,
-ê°œë°œìž ì—¬ëŸ¬ë¶„ì€ ì´ì— 대한 콘í…츠만 ì •ì˜í•˜ë©´ ë©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ UI 구성 요소ì—는 ê°ê°
+android.view.ViewGroup} ê°ì²´ë¥¼ 사용해야 하는 ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. Androidê°€ 표준형 UI ë ˆì´ì•„ì›ƒì„ ì œê³µí•˜ëŠ” 앱 구성 요소를 여러 ê°œ 제공하고 있으니,
+ê°œë°œìž ì—¬ëŸ¬ë¶„ì€ ì´ì— 대한 콘í…츠만 ì •ì˜í•˜ë©´ ë©ë‹ˆë‹¤. ì´ì™€ ê°™ì€ UI 구성 요소ì—는 ê°ê°
고유한 API 세트가 있습니다. ì´ë“¤ì€ <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모ìŒ</a>, <a href="{@docRoot}guide/topics/ui/dialogs.html">대화</a> ë° <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">ìƒíƒœ 알림</a> 등 ê°ê° 다른 문서ì—서 설명하였습니다.</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/settings.jd b/docs/html-intl/intl/ko/guide/topics/ui/settings.jd
index 36204e03ecf5..01b62ed6783a 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/settings.jd
@@ -65,13 +65,13 @@ page.tags=preference,preferenceactivity,preferencefragment
-<p>애플리케ì´ì…˜ì—는 종종 ì„¤ì •ì´ í¬í•¨ë˜ì–´ 있어 사용ìžê°€ 앱 기능과 í–‰ë™ì„ 수정할 수 있게 í•´ì¤ë‹ˆë‹¤. 예를 들어
-몇몇 ì•±ì€ ì‚¬ìš©ìžì—게 ì•Œë¦¼ì„ í™œì„±í™”í• ì§€ 여부를 지정하거나 애플리케ì´ì…˜ì´
+<p>애플리케ì´ì…˜ì—는 종종 ì„¤ì •ì´ í¬í•¨ë˜ì–´ 있어 사용ìžê°€ 앱 기능과 í–‰ë™ì„ 수정할 수 있게 í•´ì¤ë‹ˆë‹¤. 예를 들어
+몇몇 ì•±ì€ ì‚¬ìš©ìžì—게 ì•Œë¦¼ì„ í™œì„±í™”í• ì§€ 여부를 지정하거나 애플리케ì´ì…˜ì´
í´ë¼ìš°ë“œì™€ ë°ì´í„°ë¥¼ ë™ê¸°í™”í•  빈ë„를 지정할 수 있게 í•´ì¤ë‹ˆë‹¤.</p>
-<p>ìžì‹ ì˜ ì•±ì— ì„¤ì •ì„ ì œê³µí•˜ê³ ìž í•˜ëŠ” 경우, Androidì˜
-{@link android.preference.Preference} API를 사용하여 다른 Android 앱(시스템 설정 í¬í•¨)ì˜ ì‚¬ìš©ìž í™˜ê²½ê³¼
-ì¼ê´€ì„±ì„ 유지하는 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구축할 수 있게 해야 합니다. ì´ ë¬¸ì„œì—서는
+<p>ìžì‹ ì˜ ì•±ì— ì„¤ì •ì„ ì œê³µí•˜ê³ ìž í•˜ëŠ” 경우, Androidì˜
+{@link android.preference.Preference} API를 사용하여 다른 Android 앱(시스템 설정 í¬í•¨)ì˜ ì‚¬ìš©ìž í™˜ê²½ê³¼
+ì¼ê´€ì„±ì„ 유지하는 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구축할 수 있게 해야 합니다. ì´ ë¬¸ì„œì—서는
{@link android.preference.Preference} API를 사용하여 앱 ì„¤ì •ì„ êµ¬ì¶•í•˜ëŠ” ë°©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.</p>
<div class="note design">
@@ -81,8 +81,8 @@ page.tags=preference,preferenceactivity,preferencefragment
<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
-<p class="img-caption"><strong>그림 1.</strong> Android 메시지 ì•±ì˜ ì„¤ì •ì—서 가져온
-스í¬ë¦°ìƒ·ìž…니다. {@link android.preference.Preference}ê°€ ì •ì˜í•œ í•­ëª©ì„ ì„ íƒí•˜ë©´
+<p class="img-caption"><strong>그림 1.</strong> Android 메시지 ì•±ì˜ ì„¤ì •ì—서 가져온
+스í¬ë¦°ìƒ·ìž…니다. {@link android.preference.Preference}ê°€ ì •ì˜í•œ í•­ëª©ì„ ì„ íƒí•˜ë©´
ì¸í„°íŽ˜ì´ìŠ¤ê°€ ì—´ë ¤ ì„¤ì •ì„ ë³€ê²½í•  수 있게 ë©ë‹ˆë‹¤.</p>
@@ -90,24 +90,24 @@ page.tags=preference,preferenceactivity,preferencefragment
<h2 id="Overview">개요</h2>
-<p>ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구축할 때ì—는 {@link android.view.View} ê°ì²´ë¥¼ 사용하지만, ì„¤ì •ì€ ê·¸ 대신
-{@link android.preference.Preference} í´ëž˜ìŠ¤ì˜ ë‹¤ì–‘í•œ 하위 í´ëž˜ìŠ¤ë¥¼ 사용하여 구축합니다.
+<p>ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구축할 때ì—는 {@link android.view.View} ê°ì²´ë¥¼ 사용하지만, ì„¤ì •ì€ ê·¸ 대신
+{@link android.preference.Preference} í´ëž˜ìŠ¤ì˜ ë‹¤ì–‘í•œ 하위 í´ëž˜ìŠ¤ë¥¼ 사용하여 구축합니다.
ì´ì™€ ê°™ì€ í•˜ìœ„ í´ëž˜ìŠ¤ëŠ” XML 파ì¼ì—서 선언합니다.</p>
-<p>{@link android.preference.Preference} ê°ì²´ëŠ” í•˜ë‚˜ì˜ ì„¤ì •ì„ ì´ë£¨ëŠ” 기본
-단위입니다. ê°ê°ì˜ {@link android.preference.Preference}는 목ë¡ì˜ 항목으로
+<p>{@link android.preference.Preference} ê°ì²´ëŠ” í•˜ë‚˜ì˜ ì„¤ì •ì„ ì´ë£¨ëŠ” 기본
+단위입니다. ê°ê°ì˜ {@link android.preference.Preference}는 목ë¡ì˜ 항목으로
나타나며 사용ìžê°€ ì„¤ì •ì„ ìˆ˜ì •í•˜ê¸°ì— ì ì ˆí•œ UI를 제공합니다. 예를 들어 {@link
android.preference.CheckBoxPreference}는 확ì¸ëž€ì„ 표시하는 ëª©ë¡ í•­ëª©ì„ ë§Œë“¤ê³ , {@link
android.preference.ListPreference}는 ì„ íƒ ëª©ë¡ì´ 있는 대화를 여는 í•­ëª©ì„ ë§Œë“­ë‹ˆë‹¤.</p>
-<p>ê°ê°ì˜ {@link android.preference.Preference}를 추가할 때마다 ìƒì‘하는 키-ê°’ ìŒì´ 있어
+<p>ê°ê°ì˜ {@link android.preference.Preference}를 추가할 때마다 ìƒì‘하는 키-ê°’ ìŒì´ 있어
ì‹œìŠ¤í…œì´ ì´ë¥¼ 사용하여 해당 ì„¤ì •ì„ ì•±ì˜ ì„¤ì •ì— ëŒ€í•œ 기본 {@link android.content.SharedPreferences}
-파ì¼ì— 저장합니다. 사용ìžê°€ ì„¤ì •ì„ ë³€ê²½í•˜ë©´ 시스템ì´
-{@link android.content.SharedPreferences} 파ì¼ì— 있는 ìƒì‘하는 ê°’ì„ ê°œë°œìž ëŒ€ì‹  ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤. 개발ìžê°€ ì§ì ‘
-ì—°ê´€ëœ {@link android.content.SharedPreferences} 파ì¼ê³¼ ìƒí˜¸ ìž‘ìš©ì„ í•´ì•¼ 하는 경우는
+파ì¼ì— 저장합니다. 사용ìžê°€ ì„¤ì •ì„ ë³€ê²½í•˜ë©´ 시스템ì´
+{@link android.content.SharedPreferences} 파ì¼ì— 있는 ìƒì‘하는 ê°’ì„ ê°œë°œìž ëŒ€ì‹  ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤. 개발ìžê°€ ì§ì ‘
+ì—°ê´€ëœ {@link android.content.SharedPreferences} 파ì¼ê³¼ ìƒí˜¸ ìž‘ìš©ì„ í•´ì•¼ 하는 경우는
사용ìžì˜ ì„¤ì •ì„ ê¸°ë°˜ìœ¼ë¡œ ì•±ì˜ ë™ìž‘ì„ ê²°ì •í•˜ê¸° 위해 ê°’ì„ ì½ì–´ì•¼ í•  때ë¿ìž…니다.</p>
-<p>ê° ì„¤ì •ì— ëŒ€í•˜ì—¬ {@link android.content.SharedPreferences}ì— ì €ìž¥ëœ ê°’ì€ ë‹¤ìŒê³¼ ê°™ì€
+<p>ê° ì„¤ì •ì— ëŒ€í•˜ì—¬ {@link android.content.SharedPreferences}ì— ì €ìž¥ëœ ê°’ì€ ë‹¤ìŒê³¼ ê°™ì€
ë°ì´í„° 유형 중 한 가지를 취할 수 있습니다.</p>
<ul>
@@ -119,31 +119,31 @@ android.preference.ListPreference}는 ì„ íƒ ëª©ë¡ì´ 있는 대화를 여는 í
<li>String {@link java.util.Set}</li>
</ul>
-<p>ì•±ì˜ ì„¤ì • UI는
-{@link android.view.View} ê°ì²´ 대신
-{@link android.preference.Preference} ê°ì²´ë¥¼ 사용하여 구축ë˜ê¸° 때문ì—, ëª©ë¡ ì„¤ì •ì„ í‘œì‹œí•˜ë ¤ë©´ 특수 {@link android.app.Activity} ë˜ëŠ”
+<p>ì•±ì˜ ì„¤ì • UI는
+{@link android.view.View} ê°ì²´ 대신
+{@link android.preference.Preference} ê°ì²´ë¥¼ 사용하여 구축ë˜ê¸° 때문ì—, ëª©ë¡ ì„¤ì •ì„ í‘œì‹œí•˜ë ¤ë©´ 특수 {@link android.app.Activity} ë˜ëŠ”
{@link android.app.Fragment} 하위 í´ëž˜ìŠ¤ë¥¼ 사용해야 합니다.</p>
<ul>
- <li>ì•±ì´ Android 3.0 ì´ì „ 버전(API 레벨 10 ì´í•˜)ì„ ì§€ì›í•˜ëŠ” 경우, 액티비티를 구축할 때
+ <li>ì•±ì´ Android 3.0 ì´ì „ 버전(API 레벨 10 ì´í•˜)ì„ ì§€ì›í•˜ëŠ” 경우, 액티비티를 구축할 때
{@link android.preference.PreferenceActivity} í´ëž˜ìŠ¤ì˜ í™•ìž¥ìœ¼ë¡œ 구축해야 합니다.</li>
- <li>Android 3.0 ì´í›„ì˜ ê²½ìš°ì—는 대신 ê¸°ì¡´ì˜ {@link android.app.Activity}를
-사용해야 합니다. ì´ê²ƒì€ 앱 ì„¤ì •ì„ í‘œì‹œí•˜ëŠ” {@link android.preference.PreferenceFragment}를 호스팅합니다.
-하지만, 여러 ê°œì˜ ì„¤ì • ê·¸ë£¹ì´ ìžˆëŠ” 경우 {@link android.preference.PreferenceActivity}를 사용하여
+ <li>Android 3.0 ì´í›„ì˜ ê²½ìš°ì—는 대신 ê¸°ì¡´ì˜ {@link android.app.Activity}를
+사용해야 합니다. ì´ê²ƒì€ 앱 ì„¤ì •ì„ í‘œì‹œí•˜ëŠ” {@link android.preference.PreferenceFragment}를 호스팅합니다.
+하지만, 여러 ê°œì˜ ì„¤ì • ê·¸ë£¹ì´ ìžˆëŠ” 경우 {@link android.preference.PreferenceActivity}를 사용하여
대형 í™”ë©´ì— ë§žëŠ” ì°½ ë‘ ê°œì§œë¦¬ ë ˆì´ì•„ì›ƒì„ ë§Œë“¤ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</li>
</ul>
<p>{@link android.preference.PreferenceActivity}와 {@link
-android.preference.PreferenceFragment}ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 설정하는 ë°©ë²•ì€ <a href="#Activity">기본 설정 액티비티 만들기</a>와 <a href="#Fragment">기본 설정
+android.preference.PreferenceFragment}ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 설정하는 ë°©ë²•ì€ <a href="#Activity">기본 설정 액티비티 만들기</a>와 <a href="#Fragment">기본 설정
프래그먼트 사용하기</a>ì— ê´€ë ¨ëœ ì„¹ì…˜ì—서 논합니다.</p>
<h3 id="SettingTypes">기본 설정</h3>
<p>ì•±ì— ëŒ€í•œ ì„¤ì •ì€ ëª¨ë‘ {@link
-android.preference.Preference} í´ëž˜ìŠ¤ì˜ íŠ¹ì • 하위 í´ëž˜ìŠ¤ë¡œ 표현ë©ë‹ˆë‹¤. ê° í•˜ìœ„ í´ëž˜ìŠ¤ì— í•µì‹¬ ì†ì„±ì´ 한 세트씩 í¬í•¨ë˜ì–´ 있어
-ì„¤ì •ì˜ ì œëª©ê³¼ 기본 ê°’ 등과 ê°™ì€ ê²ƒì„ ì§€ì •í•  수 있게 í•´ì¤ë‹ˆë‹¤. ê° í•˜ìœ„ í´ëž˜ìŠ¤ëŠ” ë˜í•œ ìžì‹ ë§Œì˜
-특수 ì†ì„±ê³¼ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë„ ì œê³µí•©ë‹ˆë‹¤. 예를 들어, 그림 1ì—서는 메시지 ì•±ì˜ ì„¤ì •ì—서
+android.preference.Preference} í´ëž˜ìŠ¤ì˜ íŠ¹ì • 하위 í´ëž˜ìŠ¤ë¡œ 표현ë©ë‹ˆë‹¤. ê° í•˜ìœ„ í´ëž˜ìŠ¤ì— í•µì‹¬ ì†ì„±ì´ 한 세트씩 í¬í•¨ë˜ì–´ 있어
+ì„¤ì •ì˜ ì œëª©ê³¼ 기본 ê°’ 등과 ê°™ì€ ê²ƒì„ ì§€ì •í•  수 있게 í•´ì¤ë‹ˆë‹¤. ê° í•˜ìœ„ í´ëž˜ìŠ¤ëŠ” ë˜í•œ ìžì‹ ë§Œì˜
+특수 ì†ì„±ê³¼ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë„ ì œê³µí•©ë‹ˆë‹¤. 예를 들어, 그림 1ì—서는 메시지 ì•±ì˜ ì„¤ì •ì—서
가져온 스í¬ë¦°ìƒ·ì„ 나타낸 것입니다. 설정 í™”ë©´ì— ìžˆëŠ” ê° ëª©ë¡ í•­ëª©ì€ ê°ê¸° 서로 다른 {@link
android.preference.Preference} ê°ì²´ë¡œ ì§€ì›ë©ë‹ˆë‹¤.</p>
@@ -151,11 +151,11 @@ android.preference.Preference} ê°ì²´ë¡œ ì§€ì›ë©ë‹ˆë‹¤.</p>
<dl>
<dt>{@link android.preference.CheckBoxPreference}</dt>
- <dd>활성화ë˜ì—ˆê±°ë‚˜ ë¹„í™œì„±í™”ëœ ì„¤ì •ì— ëŒ€í•œ 확ì¸ëž€ì´ 있는 í•­ëª©ì„ í‘œì‹œí•©ë‹ˆë‹¤. ì €ìž¥ëœ ê°’ì€
+ <dd>활성화ë˜ì—ˆê±°ë‚˜ ë¹„í™œì„±í™”ëœ ì„¤ì •ì— ëŒ€í•œ 확ì¸ëž€ì´ 있는 í•­ëª©ì„ í‘œì‹œí•©ë‹ˆë‹¤. ì €ìž¥ëœ ê°’ì€
부울입니다(확ì¸ëž€ì´ ì„ íƒëœ 경우 <code>true</code>).</dd>
<dt>{@link android.preference.ListPreference}</dt>
- <dd>무선 버튼 목ë¡ì´ 있는 대화를 엽니다. ì €ìž¥ëœ ê°’ì€
+ <dd>무선 버튼 목ë¡ì´ 있는 대화를 엽니다. ì €ìž¥ëœ ê°’ì€
ì§€ì›ë˜ëŠ” ê°’ 유형(ìœ„ì— ëª©ë¡ìœ¼ë¡œ 나열) 중 ì–´ëŠ ê²ƒì´ë¼ë„ ë  ìˆ˜ 있습니다.</dd>
<dt>{@link android.preference.EditTextPreference}</dt>
@@ -166,36 +166,36 @@ java.lang.String}입니다.</dd>
<p>다른 모든 하위 í´ëž˜ìŠ¤ì™€ ì´ì— ìƒì‘하는 ì†ì„±ì˜ 목ë¡ì„ 보려면 {@link android.preference.Preference}
í´ëž˜ìŠ¤ë¥¼ 참조하십시오.</p>
-<p>물론 기본 제공 í´ëž˜ìŠ¤ë§Œìœ¼ë¡œëŠ” 필요한 ê²ƒì„ ëª¨ë‘ ì¶©ì¡±í•  수 없고 ì•±ì— ë¬´ì–¸ê°€ 좀 ë” íŠ¹ìˆ˜í•œ 것ì´
+<p>물론 기본 제공 í´ëž˜ìŠ¤ë§Œìœ¼ë¡œëŠ” 필요한 ê²ƒì„ ëª¨ë‘ ì¶©ì¡±í•  수 없고 ì•±ì— ë¬´ì–¸ê°€ 좀 ë” íŠ¹ìˆ˜í•œ 것ì´
필요할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어 플랫í¼ì€ 현재 숫ìžë‚˜ 날짜를 ì„ íƒí•  수 있는 {@link
-android.preference.Preference} í´ëž˜ìŠ¤ë¥¼ 제공하지 않습니다. ë”°ë¼ì„œ ê°œë°œìž ë‚˜ë¦„ëŒ€ë¡œ
+android.preference.Preference} í´ëž˜ìŠ¤ë¥¼ 제공하지 않습니다. ë”°ë¼ì„œ ê°œë°œìž ë‚˜ë¦„ëŒ€ë¡œ
{@link android.preference.Preference} 하위 í´ëž˜ìŠ¤ë¥¼ ì •ì˜í•´ì•¼ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” ë° ìœ ìš©í•œ ë‚´ìš©ì¸ <a href="#Custom">ì‚¬ìš©ìž ì§€ì • 기본 설정 구축하기</a>ì— ê´€í•œ ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
<h2 id="DefiningPrefs">XML로 기본 설정 ì •ì˜í•˜ê¸°</h2>
-<p>새로운 {@link android.preference.Preference} ê°ì²´ë¥¼ ëŸ°íƒ€ìž„ì— ì¸ìŠ¤í„´íŠ¸í™”í•˜ëŠ” ê²ƒë„ ê°€ëŠ¥í•˜ì§€ë§Œ,
+<p>새로운 {@link android.preference.Preference} ê°ì²´ë¥¼ ëŸ°íƒ€ìž„ì— ì¸ìŠ¤í„´íŠ¸í™”í•˜ëŠ” ê²ƒë„ ê°€ëŠ¥í•˜ì§€ë§Œ,
설정 목ë¡ì„ ì •ì˜í•  때ì—는 {@link android.preference.Preference}
-ê°ì²´ì˜ 계층과 함께 XMLì„ ì‚¬ìš©í•´ì•¼ 합니다. 설정 ì»¬ë ‰ì…˜ì„ ì •ì˜í•˜ëŠ” ë° XM 파ì¼ì„ 사용하는 ê²ƒì´ ì„ í˜¸ë˜ëŠ” ì´ìœ ëŠ” ì´ íŒŒì¼ì´
-ì½ê¸° 쉬운 구조를 제공하여 ì—…ë°ì´íŠ¸ê°€ 단순하기 때문입니다. ë˜í•œ, ì•±ì˜ ì„¤ì •ì€ ë³´í†µ
+ê°ì²´ì˜ 계층과 함께 XMLì„ ì‚¬ìš©í•´ì•¼ 합니다. 설정 ì»¬ë ‰ì…˜ì„ ì •ì˜í•˜ëŠ” ë° XM 파ì¼ì„ 사용하는 ê²ƒì´ ì„ í˜¸ë˜ëŠ” ì´ìœ ëŠ” ì´ íŒŒì¼ì´
+ì½ê¸° 쉬운 구조를 제공하여 ì—…ë°ì´íŠ¸ê°€ 단순하기 때문입니다. ë˜í•œ, ì•±ì˜ ì„¤ì •ì€ ë³´í†µ
미리 ì •ì˜ë˜ì–´ 있습니다. 다만 개발ìžë„ 여전히 ëŸ°íƒ€ìž„ì— ì„¤ì • ì»¬ë ‰ì…˜ì„ ìˆ˜ì •í•  수 있습니다.</p>
-<p>ê° {@link android.preference.Preference} 하위 í´ëž˜ìŠ¤ëŠ” í´ëž˜ìФ ì´ë¦„ì— ì¼ì¹˜í•˜ëŠ” XML 요소로
+<p>ê° {@link android.preference.Preference} 하위 í´ëž˜ìŠ¤ëŠ” í´ëž˜ìФ ì´ë¦„ì— ì¼ì¹˜í•˜ëŠ” XML 요소로
선언하면 ë©ë‹ˆë‹¤. 예를 들면 {@code &lt;CheckBoxPreference&gt;}ê°€ ì´ì— 해당ë©ë‹ˆë‹¤.</p>
-<p>ì´ XML 파ì¼ì€ 반드시 {@code res/xml/} ë””ë ‰í„°ë¦¬ì— ì €ìž¥í•´ì•¼ 합니다. 파ì¼ì˜ ì´ë¦„ì€ ë¬´ì—‡ì´ë“  ì›í•˜ëŠ” 대로 지정할 수 있지만,
-ì¼ë°˜ì ìœ¼ë¡œëŠ” {@code preferences.xml}ì´ë¼ê³  명명합니다. 파ì¼ì€ 하나만 필요한 ê²ƒì´ ë³´í†µìž…ë‹ˆë‹¤.
-왜ëƒí•˜ë©´ ê³„ì¸µì— ìžˆëŠ” 분기(ìžì‹ ë§Œì˜ 설정 목ë¡ì„ ì—¶)는
+<p>ì´ XML 파ì¼ì€ 반드시 {@code res/xml/} ë””ë ‰í„°ë¦¬ì— ì €ìž¥í•´ì•¼ 합니다. 파ì¼ì˜ ì´ë¦„ì€ ë¬´ì—‡ì´ë“  ì›í•˜ëŠ” 대로 지정할 수 있지만,
+ì¼ë°˜ì ìœ¼ë¡œëŠ” {@code preferences.xml}ì´ë¼ê³  명명합니다. 파ì¼ì€ 하나만 필요한 ê²ƒì´ ë³´í†µìž…ë‹ˆë‹¤.
+왜ëƒí•˜ë©´ ê³„ì¸µì— ìžˆëŠ” 분기(ìžì‹ ë§Œì˜ 설정 목ë¡ì„ ì—¶)는
{@link android.preference.PreferenceScreen}ì˜ ì¤‘ì²©ëœ ì¸ìŠ¤í„´ìŠ¤ë¥¼ 사용하여 ì„ ì–¸ë˜ê¸° 때문입니다.</p>
-<p class="note"><strong>참고:</strong> ì„¤ì •ì— ë‹¤ì¤‘ ì°½ ë ˆì´ì•„ì›ƒì„ ë§Œë“¤ê³ ìž í•˜ëŠ” 경우,
+<p class="note"><strong>참고:</strong> ì„¤ì •ì— ë‹¤ì¤‘ ì°½ ë ˆì´ì•„ì›ƒì„ ë§Œë“¤ê³ ìž í•˜ëŠ” 경우,
ê° í”„ëž˜ê·¸ë¨¼íŠ¸ì— ëŒ€í•´ 별ë„ì˜ XML 파ì¼ì´ 필요합니다.</p>
<p>XML 파ì¼ì˜ 루트 노드는 반드시 {@link android.preference.PreferenceScreen
&lt;PreferenceScreen&gt;} 요소여야 합니다. 바로 ì´ ìš”ì†Œ ë‚´ì— ê° {@link
-android.preference.Preference}를 추가하는 것입니다.
-{@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;} 요소 ë‚´ì— ì¶”ê°€í•˜ëŠ” ê° í•˜ìœ„ëŠ” 설정 목ë¡ì—서
+android.preference.Preference}를 추가하는 것입니다.
+{@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;} 요소 ë‚´ì— ì¶”ê°€í•˜ëŠ” ê° í•˜ìœ„ëŠ” 설정 목ë¡ì—서
ê°ê¸° 항목 하나씩으로 나타납니다.</p>
<p>예:</p>
@@ -224,11 +224,11 @@ android.preference.ListPreference}ê°€ 하나씩 있습니다. ë‘ í•­ëª© 모ë‘
<dl>
<dt>{@code android:key}</dt>
- <dd>ì´ ì†ì„±ì€ ë°ì´í„° ê°’ì„ ìœ ì§€í•˜ëŠ” 기본 ì„¤ì •ì— í•„ìˆ˜ìž…ë‹ˆë‹¤. ì´ê²ƒì€ 고유키(문ìž)를
+ <dd>ì´ ì†ì„±ì€ ë°ì´í„° ê°’ì„ ìœ ì§€í•˜ëŠ” 기본 ì„¤ì •ì— í•„ìˆ˜ìž…ë‹ˆë‹¤. ì´ê²ƒì€ 고유키(문ìž)를
나타내며, ì‹œìŠ¤í…œì´ ì´ê²ƒì„ 사용하여 ì´ ì„¤ì •ì˜ ê°’ì„ {@link
-android.content.SharedPreferences}ì— ì €ìž¥í•©ë‹ˆë‹¤.
- <p>ì´ ì†ì„±ì´ <em>필요하지 않ì€</em> ì¸ìŠ¤í„´ìŠ¤ëŠ” 기본 설정ì´
-{@link android.preference.PreferenceCategory} ë˜ëŠ” {@link android.preference.PreferenceScreen}ì¸ ê²½ìš°, ë˜ëŠ”
+android.content.SharedPreferences}ì— ì €ìž¥í•©ë‹ˆë‹¤.
+ <p>ì´ ì†ì„±ì´ <em>필요하지 않ì€</em> ì¸ìŠ¤í„´ìŠ¤ëŠ” 기본 설정ì´
+{@link android.preference.PreferenceCategory} ë˜ëŠ” {@link android.preference.PreferenceScreen}ì¸ ê²½ìš°, ë˜ëŠ”
기본 ì„¤ì •ì´ {@link android.content.Intent}를 호출할 ê²ƒì„ ë‚˜íƒ€ë‚´ê±°ë‚˜(<a href="#Intents">{@code &lt;intent&gt;}</a> 요소로) {@link android.app.Fragment}를 표시하ë„ë¡ ì§€ì •í•˜ëŠ” 경우(<a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
android:fragment}</a> ì†ì„±ìœ¼ë¡œ)ë¿ìž…니다.</p>
</dd>
@@ -236,7 +236,7 @@ android:fragment}</a> ì†ì„±ìœ¼ë¡œ)ë¿ìž…니다.</p>
<dd>ì´ê²ƒì€ ì„¤ì •ì— ëŒ€í•˜ì—¬ 사용ìžê°€ ë³¼ 수 있는 ì´ë¦„ì„ ì œê³µí•©ë‹ˆë‹¤.</dd>
<dt>{@code android:defaultValue}</dt>
<dd>ì´ê²ƒì€ ì‹œìŠ¤í…œì´ {@link
-android.content.SharedPreferences} 파ì¼ì— 설정해야 하는 초기 ê°’ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. 모든 ì„¤ì •ì— ê¸°ë³¸ ê°’ì„ ì œê³µí•´ì•¼
+android.content.SharedPreferences} 파ì¼ì— 설정해야 하는 초기 ê°’ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. 모든 ì„¤ì •ì— ê¸°ë³¸ ê°’ì„ ì œê³µí•´ì•¼
합니다.</dd>
</dl>
@@ -248,21 +248,21 @@ android.preference.Preference}(ë° ê°ê°ì˜ 하위 í´ëž˜ìФ) 관련 문서를
<img src="{@docRoot}images/ui/settings/settings-titles.png" alt="" />
<p class="img-caption"><strong>그림 2.</strong> ì œëª©ì´ ìžˆëŠ” 설정
카테고리입니다. <br/><b>1.</b> 카테고리는 {@link
-android.preference.PreferenceCategory &lt;PreferenceCategory&gt;} 요소가 지정합니다. <br/><b>2.</b> 제목ì€
+android.preference.PreferenceCategory &lt;PreferenceCategory&gt;} 요소가 지정합니다. <br/><b>2.</b> 제목ì€
{@code android:title} ì†ì„±ìœ¼ë¡œ 지정합니다.</p>
</div>
-<p>설정 목ë¡ì´ 약 10ê°œ í•­ëª©ì„ ì´ˆê³¼í•˜ë©´ ì œëª©ì„ ì¶”ê°€í•˜ì—¬
-설정 ê·¸ë£¹ì„ ì •ì˜í•˜ê±°ë‚˜, 해당 ê·¸ë£¹ì„ ë³„ë„ì˜
+<p>설정 목ë¡ì´ 약 10ê°œ í•­ëª©ì„ ì´ˆê³¼í•˜ë©´ ì œëª©ì„ ì¶”ê°€í•˜ì—¬
+설정 ê·¸ë£¹ì„ ì •ì˜í•˜ê±°ë‚˜, 해당 ê·¸ë£¹ì„ ë³„ë„ì˜
í™”ë©´ì— í‘œì‹œí•˜ëŠ” ê²ƒì´ ì¢‹ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ëŸ¬í•œ ì˜µì…˜ì€ ë‹¤ìŒ ì„¹ì…˜ì— ì„¤ëª…ë˜ì–´ 있습니다.</p>
<h3 id="Groups">설정 그룹 만들기</h3>
-<p>10ê°œ ì´ìƒì˜ 설정 목ë¡ì„ 제시하는 경우, 사용ìžê°€
-ì´ë“¤ì„ 둘러보고 ì´í•´í•˜ë©° 처리하는 ë° ì–´ë ¤ì›€ì„ ê²ªì„ ìˆ˜ 있습니다. ì´ ë¬¸ì œë¥¼ 해결하려면
-ì„¤ì •ì˜ ì¼ë¶€ ë˜ëŠ” 모ë‘를 그룹으로 나누어 ì‚¬ì‹¤ìƒ í•˜ë‚˜ì˜ ê¸´ 목ë¡ì„ 여러 ê°œì˜ ë” ì§§ì€ ëª©ë¡ìœ¼ë¡œ
+<p>10ê°œ ì´ìƒì˜ 설정 목ë¡ì„ 제시하는 경우, 사용ìžê°€
+ì´ë“¤ì„ 둘러보고 ì´í•´í•˜ë©° 처리하는 ë° ì–´ë ¤ì›€ì„ ê²ªì„ ìˆ˜ 있습니다. ì´ ë¬¸ì œë¥¼ 해결하려면
+ì„¤ì •ì˜ ì¼ë¶€ ë˜ëŠ” 모ë‘를 그룹으로 나누어 ì‚¬ì‹¤ìƒ í•˜ë‚˜ì˜ ê¸´ 목ë¡ì„ 여러 ê°œì˜ ë” ì§§ì€ ëª©ë¡ìœ¼ë¡œ
바꿔주면 ë©ë‹ˆë‹¤. ê´€ë ¨ëœ ì„¤ì • 그룹 하나를 나타낼 때ì—는 다ìŒê³¼ ê°™ì€ ë‘ ê°€ì§€ ë°©ì‹ ì¤‘ 하나를 íƒí•˜ë©´ ë©ë‹ˆë‹¤.</p>
<ul>
@@ -270,14 +270,14 @@ android.preference.PreferenceCategory &lt;PreferenceCategory&gt;} 요소가 ì§€ì
<li><a href="#Subscreens">보조 화면 사용하기</a></li>
</ul>
-<p>ì´ì™€ ê°™ì€ ê·¸ë£¹í™” 기법 중 하나 ë˜ëŠ” 둘 모ë‘를 사용하여 ì•±ì˜ ì„¤ì •ì„ ì¡°ì§í™”í•  수 있습니다. ì–´ëŠ ê²ƒì„
-사용할지, ì„¤ì •ì„ ì–´ë–»ê²Œ 나눌지 ê²°ì •í•  때ì—는 Android
+<p>ì´ì™€ ê°™ì€ ê·¸ë£¹í™” 기법 중 하나 ë˜ëŠ” 둘 모ë‘를 사용하여 ì•±ì˜ ì„¤ì •ì„ ì¡°ì§í™”í•  수 있습니다. ì–´ëŠ ê²ƒì„
+사용할지, ì„¤ì •ì„ ì–´ë–»ê²Œ 나눌지 ê²°ì •í•  때ì—는 Android
ë””ìžì¸ì˜ <a href="{@docRoot}design/patterns/settings.html">설정</a> ê°€ì´ë“œì— 있는 ì§€ì¹¨ì„ ë”°ë¼ì•¼ 합니다.</p>
<h4 id="Titles">제목 사용하기</h4>
-<p>여러 ê°œì˜ ì„¤ì • 그룹 사ì´ì— 구분선과 ì œëª©ì„ ì œê³µí•˜ê³ ìž í•˜ëŠ” 경우(그림 2ì— í‘œì‹œëœ ê²ƒê³¼ ê°™ì´),
+<p>여러 ê°œì˜ ì„¤ì • 그룹 사ì´ì— 구분선과 ì œëª©ì„ ì œê³µí•˜ê³ ìž í•˜ëŠ” 경우(그림 2ì— í‘œì‹œëœ ê²ƒê³¼ ê°™ì´),
ê° {@link android.preference.Preference} ê°ì²´ ê·¸ë£¹ì„ {@link
android.preference.PreferenceCategory} ë‚´ë¶€ì— ë°°ì¹˜í•©ë‹ˆë‹¤.</p>
@@ -285,7 +285,7 @@ android.preference.PreferenceCategory} ë‚´ë¶€ì— ë°°ì¹˜í•©ë‹ˆë‹¤.</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;PreferenceCategory
+ &lt;PreferenceCategory
android:title="&#64;string/pref_sms_storage_title"
android:key="pref_key_storage_settings">
&lt;CheckBoxPreference
@@ -293,12 +293,12 @@ android.preference.PreferenceCategory} ë‚´ë¶€ì— ë°°ì¹˜í•©ë‹ˆë‹¤.</p>
android:summary="&#64;string/pref_summary_auto_delete"
android:title="&#64;string/pref_title_auto_delete"
android:defaultValue="false"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_sms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
android:title="&#64;string/pref_title_sms_delete"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_mms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
@@ -311,13 +311,13 @@ android.preference.PreferenceCategory} ë‚´ë¶€ì— ë°°ì¹˜í•©ë‹ˆë‹¤.</p>
<h4 id="Subscreens">보조 화면 사용하기</h4>
-<p>설정 그룹 여러 개를 ë³´ì¡° í™”ë©´ì— ë°°ì¹˜í•˜ê³ ìž í•˜ëŠ” 경우(그림 3ì— í‘œì‹œëœ ê²ƒê³¼ ê°™ì´), 해당
+<p>설정 그룹 여러 개를 ë³´ì¡° í™”ë©´ì— ë°°ì¹˜í•˜ê³ ìž í•˜ëŠ” 경우(그림 3ì— í‘œì‹œëœ ê²ƒê³¼ ê°™ì´), 해당
{@link android.preference.Preference} ê°ì²´ ê·¸ë£¹ì„ {@link
android.preference.PreferenceScreen} ì•ˆì— ë°°ì¹˜í•©ë‹ˆë‹¤.</p>
<img src="{@docRoot}images/ui/settings/settings-subscreen.png" alt="" />
<p class="img-caption"><strong>그림 3.</strong> 설정 보조 화면입니다. {@code
-&lt;PreferenceScreen&gt;} 요소가
+&lt;PreferenceScreen&gt;} 요소가
í•­ëª©ì„ ë§Œë“¤ë©°, ì´ í•­ëª©ì´ ì„ íƒë˜ë©´ 별ë„ì˜ ëª©ë¡ì´ ì—´ë ¤ ì¤‘ì²©ëœ ì„¤ì •ì„ í‘œì‹œí•©ë‹ˆë‹¤.</p>
<p>예:</p>
@@ -352,7 +352,7 @@ android.preference.PreferenceScreen} ì•ˆì— ë°°ì¹˜í•©ë‹ˆë‹¤.</p>
<h3 id="Intents">ì¸í…트 사용하기</h3>
-<p>ì–´ë–¤ 경우ì—는 기본 설정 í•­ëª©ì„ ì‚¬ìš©í•˜ì—¬ 설정 화면 대신 여러 가지 액티비티를
+<p>ì–´ë–¤ 경우ì—는 기본 설정 í•­ëª©ì„ ì‚¬ìš©í•˜ì—¬ 설정 화면 대신 여러 가지 액티비티를
ì—´ê³ ìž í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어 웹 브ë¼ìš°ì €ë¥¼ ì—´ì–´ 웹 페ì´ì§€ë¥¼ 보는 ê²ƒì´ ì´ì— 해당ë©ë‹ˆë‹¤. 사용ìžê°€ 기본 설정 í•­ëª©ì„ ì„ íƒí•  때 {@link
android.content.Intent}를 호출하ë„ë¡ í•˜ë ¤ë©´, {@code &lt;intent&gt;}
요소를 ìƒì‘하는 {@code &lt;Preference&gt;} ìš”ì†Œì˜ í•˜ìœ„ë¡œ 추가하면 ë©ë‹ˆë‹¤.</p>
@@ -392,18 +392,18 @@ android.content.Intent#setComponent setComponent()} 메서드를 따릅니다.</
<p>ì„¤ì •ì„ ì•¡í‹°ë¹„í‹°ì—서 표시하려면 {@link
android.preference.PreferenceActivity} í´ëž˜ìŠ¤ë¥¼ 확장하면 ë©ë‹ˆë‹¤. ì´ê²ƒì€ ì¼ë°˜ì ì¸ {@link
android.app.Activity} í´ëž˜ìФ í™•ìž¥ì˜ ì¼ì¢…입니다. ì´ëŠ” {@link
-android.preference.Preference} ê°ì²´ì˜ ê³„ì¸µì— ê¸°ë°˜í•œ 설정 목ë¡ì„ 표시합니다. {@link android.preference.PreferenceActivity}는
+android.preference.Preference} ê°ì²´ì˜ ê³„ì¸µì— ê¸°ë°˜í•œ 설정 목ë¡ì„ 표시합니다. {@link android.preference.PreferenceActivity}는
사용ìžê°€ 변경 ìž‘ì—…ì„ í•˜ë©´ ê° {@link
android.preference.Preference}와 ì—°ê´€ëœ ì„¤ì •ì„ ìœ ì§€í•©ë‹ˆë‹¤.</p>
-<p class="note"><strong>참고:</strong> Android 3.0 ì´ìƒì— ë§žì¶° 애플리케ì´ì…˜ì„ 개발하는 경우,
-대신 {@link android.preference.PreferenceFragment}를 사용해야 합니다. ë‹¤ìŒ ì„¹ì…˜ì˜
+<p class="note"><strong>참고:</strong> Android 3.0 ì´ìƒì— ë§žì¶° 애플리케ì´ì…˜ì„ 개발하는 경우,
+대신 {@link android.preference.PreferenceFragment}를 사용해야 합니다. ë‹¤ìŒ ì„¹ì…˜ì˜
<a href="#Fragment">기본 설정 프래그먼트 사용하기</a> 관련 ë‚´ìš©ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
<p>여기서 기억해야 í•  가장 중요한 ì ì€ {@link
android.preference.PreferenceActivity#onCreate onCreate()} 콜백 ì¤‘ì— ë³´ê¸° ë ˆì´ì•„ì›ƒì„ ë¡œë”©í•´ì„œëŠ” 안 ëœë‹¤ëŠ” 것입니다. ê·¸ 대신 {@link
-android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 호출하여
-XML 파ì¼ì—서 선언한 기본 ì„¤ì •ì„ ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•©ë‹ˆë‹¤. 예를 들어 다ìŒì€ 기능ì ì¸
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 호출하여
+XML 파ì¼ì—서 선언한 기본 ì„¤ì •ì„ ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•©ë‹ˆë‹¤. 예를 들어 다ìŒì€ 기능ì ì¸
{@link android.preference.PreferenceActivity}ì— í•„ìš”í•œ 가장 ìµœì†Œí•œì˜ ì½”ë“œë¥¼ 나타낸 것입니다.</p>
<pre>
@@ -416,11 +416,11 @@ public class SettingsActivity extends PreferenceActivity {
}
</pre>
-<p>사실 ì´ ì½”ë“œë§Œìœ¼ë¡œ 몇몇 앱ì—는 충분합니다. 사용ìžê°€ 기본 ì„¤ì •ì„ ìˆ˜ì •í•˜ìžë§ˆìž
-ì‹œìŠ¤í…œì´ í•´ë‹¹ ë³€ê²½ì„ ê¸°ë³¸ {@link android.content.SharedPreferences} 파ì¼ì— 저장하여,
-사용ìžì˜ ì„¤ì •ì„ í™•ì¸í•´ì•¼ í•  때 다른 애플리케ì´ì…˜ 구성 요소가 ì´ë¥¼ ì½ì„ 수 있ë„ë¡ í•˜ê¸° 때문입니다. 하지만
+<p>사실 ì´ ì½”ë“œë§Œìœ¼ë¡œ 몇몇 앱ì—는 충분합니다. 사용ìžê°€ 기본 ì„¤ì •ì„ ìˆ˜ì •í•˜ìžë§ˆìž
+ì‹œìŠ¤í…œì´ í•´ë‹¹ ë³€ê²½ì„ ê¸°ë³¸ {@link android.content.SharedPreferences} 파ì¼ì— 저장하여,
+사용ìžì˜ ì„¤ì •ì„ í™•ì¸í•´ì•¼ í•  때 다른 애플리케ì´ì…˜ 구성 요소가 ì´ë¥¼ ì½ì„ 수 있ë„ë¡ í•˜ê¸° 때문입니다. 하지만
ëŒ€ë‹¤ìˆ˜ì˜ ì•±ì€ ê¸°ë³¸ ì„¤ì •ì— ì¼ì–´ë‚˜ëŠ” ë³€ê²½ì„ ìˆ˜ì‹  대기하기 위해 ì•½ê°„ì˜ ì½”ë“œê°€ ë” í•„ìš”í•©ë‹ˆë‹¤.
-{@link android.content.SharedPreferences} 파ì¼ì— ì¼ì–´ë‚˜ëŠ” ë³€ê²½ì„ ìˆ˜ì‹  대기하는 ë° ê´€í•œ
+{@link android.content.SharedPreferences} 파ì¼ì— ì¼ì–´ë‚˜ëŠ” ë³€ê²½ì„ ìˆ˜ì‹  대기하는 ë° ê´€í•œ
ìžì„¸í•œ 정보는 <a href="#ReadingPrefs">기본 설정 ì½ê¸°</a>ì— ê´€í•œ ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.</p>
@@ -430,17 +430,17 @@ public class SettingsActivity extends PreferenceActivity {
<p>Android 3.0(API 레벨 11) ì´ìƒì— ë§žì¶° 개발하는 경우, {@link
android.preference.PreferenceFragment}를 사용하여 {@link android.preference.Preference}
-ê°ì²´ 목ë¡ì„ 표시해야 합니다. {@link android.preference.PreferenceFragment}는 모든 ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•  수 있습니다. 즉,
+ê°ì²´ 목ë¡ì„ 표시해야 합니다. {@link android.preference.PreferenceFragment}는 모든 ì•¡í‹°ë¹„í‹°ì— ì¶”ê°€í•  수 있습니다. 즉,
{@link android.preference.PreferenceActivity}를 사용하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤.</p>
-<p><a href="{@docRoot}guide/components/fragments.html">프래그먼트</a>는 액티비티만
-사용하는 ê²ƒì— ë¹„í•´ 애플리케ì´ì…˜ì— 보다 유연한 아키í…처를 제공하며, ì´ëŠ” 구축하는
+<p><a href="{@docRoot}guide/components/fragments.html">프래그먼트</a>는 액티비티만
+사용하는 ê²ƒì— ë¹„í•´ 애플리케ì´ì…˜ì— 보다 유연한 아키í…처를 제공하며, ì´ëŠ” 구축하는
ì•¡í‹°ë¹„í‹°ì˜ ì¢…ë¥˜ì™€ 무관하게 ì ìš©ë©ë‹ˆë‹¤. ë”°ë¼ì„œ 설정 표시를 제어하는 ë°ì—는 {@link
android.preference.PreferenceFragment}를 {@link
android.preference.PreferenceActivity} 대신 사용하는 ë°©ì•ˆì„ ê¶Œìž¥í•©ë‹ˆë‹¤(가능한 경우).</p>
<p>{@link android.preference.PreferenceFragment} êµ¬í˜„ì€ ë§¤ìš° 간단합니다.
-{@link android.preference.PreferenceFragment#onCreate onCreate()} 메서드를 ì •ì˜í•˜ì—¬ 기본 설정 파ì¼ì„
+{@link android.preference.PreferenceFragment#onCreate onCreate()} 메서드를 ì •ì˜í•˜ì—¬ 기본 설정 파ì¼ì„
{@link android.preference.PreferenceFragment#addPreferencesFromResource
addPreferencesFromResource()}로 로딩하ë„ë¡ í•˜ê¸°ë§Œ 하면 ë©ë‹ˆë‹¤. 예:</p>
@@ -457,7 +457,7 @@ public static class SettingsFragment extends PreferenceFragment {
}
</pre>
-<p>그런 ë‹¤ìŒ ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ {@link android.app.Activity}ì— ì¶”ê°€í•˜ê¸°ë§Œ 하면 ë˜ê³ , ì´ëŠ” 다른 모든
+<p>그런 ë‹¤ìŒ ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ë¥¼ {@link android.app.Activity}ì— ì¶”ê°€í•˜ê¸°ë§Œ 하면 ë˜ê³ , ì´ëŠ” 다른 모든
{@link android.app.Fragment}ì—서와 마찬가지입니다. 예:</p>
<pre>
@@ -474,24 +474,24 @@ public class SettingsActivity extends Activity {
}
</pre>
-<p class="note"><strong>참고:</strong> {@link android.preference.PreferenceFragment}ì—는 ìžì‹ ë§Œì˜
+<p class="note"><strong>참고:</strong> {@link android.preference.PreferenceFragment}ì—는 ìžì‹ ë§Œì˜
{@link android.content.Context} ê°ì²´ê°€ 없습니다. {@link android.content.Context}
-ê°ì²´ê°€ 필요한 경우, {@link android.app.Fragment#getActivity()}를 호출하면 ë©ë‹ˆë‹¤. 하지만,
-{@link android.app.Fragment#getActivity()}를 호출하는 ê²ƒì€ í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ì•¡í‹°ë¹„í‹°ì— ì²¨ë¶€ë˜ì–´ 있는 경우만으로 국한시켜야 한다는 ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. 프래그먼트가
+ê°ì²´ê°€ 필요한 경우, {@link android.app.Fragment#getActivity()}를 호출하면 ë©ë‹ˆë‹¤. 하지만,
+{@link android.app.Fragment#getActivity()}를 호출하는 ê²ƒì€ í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ì•¡í‹°ë¹„í‹°ì— ì²¨ë¶€ë˜ì–´ 있는 경우만으로 국한시켜야 한다는 ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. 프래그먼트가
ì•„ì§ ì²¨ë¶€ë˜ì§€ 않았거나 수명 주기가 ëë‚  무렵 ë¶„ë¦¬ëœ ê²½ìš°, {@link
android.app.Fragment#getActivity()}ê°€ nullì„ ë°˜í™˜í•©ë‹ˆë‹¤.</p>
<h2 id="Defaults">설정 기본 값</h2>
-<p>ì—¬ëŸ¬ë¶„ì´ ë§Œë“œëŠ” 기본 ì„¤ì •ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì— 중요한 ë™ìž‘ì„ ì •ì˜í•˜ëŠ” 경우가 ë§Žì„ ê²ƒìž…ë‹ˆë‹¤. ë”°ë¼ì„œ
-ì—°ê´€ëœ {@link android.content.SharedPreferences} 파ì¼ì„
-ê° {@link android.preference.Preference}ì— ëŒ€í•œ 기본 값으로 초기화하여 사용ìžê°€ 애플리케ì´ì…˜ì„ ì²˜ìŒ ì—´ 때
+<p>ì—¬ëŸ¬ë¶„ì´ ë§Œë“œëŠ” 기본 ì„¤ì •ì€ ì• í”Œë¦¬ì¼€ì´ì…˜ì— 중요한 ë™ìž‘ì„ ì •ì˜í•˜ëŠ” 경우가 ë§Žì„ ê²ƒìž…ë‹ˆë‹¤. ë”°ë¼ì„œ
+ì—°ê´€ëœ {@link android.content.SharedPreferences} 파ì¼ì„
+ê° {@link android.preference.Preference}ì— ëŒ€í•œ 기본 값으로 초기화하여 사용ìžê°€ 애플리케ì´ì…˜ì„ ì²˜ìŒ ì—´ 때
ì ìš©í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤.</p>
<p>가장 먼저 해야 í•  ì¼ì€ XML íŒŒì¼ ë‚´ì˜ ê° {@link
android.preference.Preference}
-ê°ì²´ì— 대해 기본 ê°’ì„ ì§€ì •í•˜ëŠ” 것입니다. ì´ë•Œ {@code android:defaultValue} ì†ì„±ì„ 사용합니다. ì´ ê°’ì€ ìƒì‘하는
+ê°ì²´ì— 대해 기본 ê°’ì„ ì§€ì •í•˜ëŠ” 것입니다. ì´ë•Œ {@code android:defaultValue} ì†ì„±ì„ 사용합니다. ì´ ê°’ì€ ìƒì‘하는
{@link android.preference.Preference} ê°ì²´ì— 대해 ì ì ˆí•œ ì–´ëŠ ë°ì´í„° 유형ì´ë¼ë„ ë  ìˆ˜ 있습니다. 예:
</p>
@@ -507,8 +507,8 @@ android.preference.Preference}
... />
</pre>
-<p>그런 다ìŒ, 애플리케ì´ì…˜ì˜ 기본 ì•¡í‹°ë¹„í‹°ì— ìžˆëŠ” {@link android.app.Activity#onCreate onCreate()}
-메서드로부터&mdash;ë˜í•œ 사용ìžê°€ 애플리케ì´ì…˜ì— 처ìŒìœ¼ë¡œ 들어올 통로가 ë  ìˆ˜ 있는
+<p>그런 다ìŒ, 애플리케ì´ì…˜ì˜ 기본 ì•¡í‹°ë¹„í‹°ì— ìžˆëŠ” {@link android.app.Activity#onCreate onCreate()}
+메서드로부터&mdash;ë˜í•œ 사용ìžê°€ 애플리케ì´ì…˜ì— 처ìŒìœ¼ë¡œ 들어올 통로가 ë  ìˆ˜ 있는
다른 모든 ì•¡í‹°ë¹„í‹°ë„ í¬í•¨&mdash;{@link android.preference.PreferenceManager#setDefaultValues
setDefaultValues()}를 호출합니다.</p>
@@ -516,9 +516,9 @@ setDefaultValues()}를 호출합니다.</p>
PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
</pre>
-<p>ì´ê²ƒì„ {@link android.app.Activity#onCreate onCreate()} ì¤‘ì— í˜¸ì¶œí•˜ë©´
-애플리케ì´ì…˜ì´ 기본 설정으로 ì ì ˆížˆ 초기화ë˜ë„ë¡ ë³´ìž¥í•  수 있습니다. ì´ê²ƒì€ 애플리케ì´ì…˜ì´
-몇 가지 ë™ìž‘ì„ ê²°ì •í•˜ê¸° 위해 ì½ì–´ì•¼ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(예를 들어 셀룰러 네트워í¬ì—서 ë°ì´í„°ë¥¼
+<p>ì´ê²ƒì„ {@link android.app.Activity#onCreate onCreate()} ì¤‘ì— í˜¸ì¶œí•˜ë©´
+애플리케ì´ì…˜ì´ 기본 설정으로 ì ì ˆížˆ 초기화ë˜ë„ë¡ ë³´ìž¥í•  수 있습니다. ì´ê²ƒì€ 애플리케ì´ì…˜ì´
+몇 가지 ë™ìž‘ì„ ê²°ì •í•˜ê¸° 위해 ì½ì–´ì•¼ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(예를 들어 셀룰러 네트워í¬ì—서 ë°ì´í„°ë¥¼
다운로드할지 여부 등).</p>
<p>ì´ ë©”ì„œë“œëŠ” 다ìŒê³¼ ê°™ì€ ì„¸ ê°œì˜ ì¸ìˆ˜ë¥¼ 취합니다.</p>
@@ -526,73 +526,73 @@ PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
<li>애플리케ì´ì…˜ {@link android.content.Context}.</li>
<li>기본 ê°’ì„ ì„¤ì •í•˜ê³ ìž í•˜ëŠ” 기본 설정 XML 파ì¼ì— 대한 리소스 ID입니다.</li>
<li>기본 ê°’ì„ í•œ 번 ì´ìƒ 설정해야 하는지 여부를 나타내는 부울 값입니다.
-<p><code>false</code>ì¸ ê²½ìš°, ì‹œìŠ¤í…œì€ ì´ ë©”ì„œë“œê°€ ì „ì— í•œ ë²ˆë„ í˜¸ì¶œëœ ì ì´ ì—†ì„ ê²½ìš°ì—ë§Œ
+<p><code>false</code>ì¸ ê²½ìš°, ì‹œìŠ¤í…œì€ ì´ ë©”ì„œë“œê°€ ì „ì— í•œ ë²ˆë„ í˜¸ì¶œëœ ì ì´ ì—†ì„ ê²½ìš°ì—ë§Œ
기본 ê°’ì„ ì„¤ì •í•©ë‹ˆë‹¤(아니면 기본 ê°’ì„ ê³µìœ í•œ 기본 설정 파ì¼ì— 있는 {@link android.preference.PreferenceManager#KEY_HAS_SET_DEFAULT_VALUES}
가 안전합니다).</p></li>
</ul>
-<p>세 번째 ì¸ìˆ˜ë¥¼ <code>false</code>로 설정해 ë‘는 한 ì´ ë©”ì„œë“œë¥¼ 액티비티가 ì‹œìž‘ë  ë•Œë§ˆë‹¤
-안전하게 호출할 수 있으며, 그렇게 í•´ë„ ì‚¬ìš©ìžì˜ ì €ìž¥ëœ ê¸°ë³¸ ì„¤ì •ì„ ê¸°ë³¸ê°’ìœ¼ë¡œ 초기화하여
-재정ì˜í•˜ì§€ 않습니다. 하지만 ì´ë¥¼ <code>true</code>로 설정하면, ì´ì „ì˜ ëª¨ë“  ê°’ì„
+<p>세 번째 ì¸ìˆ˜ë¥¼ <code>false</code>로 설정해 ë‘는 한 ì´ ë©”ì„œë“œë¥¼ 액티비티가 ì‹œìž‘ë  ë•Œë§ˆë‹¤
+안전하게 호출할 수 있으며, 그렇게 í•´ë„ ì‚¬ìš©ìžì˜ ì €ìž¥ëœ ê¸°ë³¸ ì„¤ì •ì„ ê¸°ë³¸ê°’ìœ¼ë¡œ 초기화하여
+재정ì˜í•˜ì§€ 않습니다. 하지만 ì´ë¥¼ <code>true</code>로 설정하면, ì´ì „ì˜ ëª¨ë“  ê°’ì„
기본 값으로 재정ì˜í•˜ê²Œ ë©ë‹ˆë‹¤.</p>
<h2 id="PreferenceHeaders">기본 설정 í—¤ë” ì‚¬ìš©í•˜ê¸°</h2>
-<p>드문 경우지만 ì„¤ì •ì„ ë””ìžì¸í•  때 첫 화면ì—는
-<a href="#Subscreens">ë³´ì¡° 화면</a> 목ë¡ë§Œ 표시하ë„ë¡ í•˜ê³ ìž í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(예: 시스템 설정 앱,
-그림 4와 5 참조). 그러한 ë””ìžì¸ì„ Android 3.0 ì´ìƒì„ 대ìƒìœ¼ë¡œ 개발하는 경우, Android 3.0ì— ìžˆëŠ”
-새로운 "í—¤ë”" ê¸°ëŠ¥ì„ ì‚¬ìš©í•´ì•¼ 합니다. ì´ê²ƒì´ 중첩ëœ
+<p>드문 경우지만 ì„¤ì •ì„ ë””ìžì¸í•  때 첫 화면ì—는
+<a href="#Subscreens">ë³´ì¡° 화면</a> 목ë¡ë§Œ 표시하ë„ë¡ í•˜ê³ ìž í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(예: 시스템 설정 앱,
+그림 4와 5 참조). 그러한 ë””ìžì¸ì„ Android 3.0 ì´ìƒì„ 대ìƒìœ¼ë¡œ 개발하는 경우, Android 3.0ì— ìžˆëŠ”
+새로운 "í—¤ë”" ê¸°ëŠ¥ì„ ì‚¬ìš©í•´ì•¼ 합니다. ì´ê²ƒì´ 중첩ëœ
{@link android.preference.PreferenceScreen} 요소를 사용하여 ë³´ì¡° í™”ë©´ì„ êµ¬ì¶•í•˜ëŠ” ë°©ì•ˆì„ ëŒ€ì‹ í•©ë‹ˆë‹¤.</p>
<p>í—¤ë”를 사용하여 ì„¤ì •ì„ êµ¬ì¶•í•˜ë ¤ë©´ 다ìŒê³¼ ê°™ì´ í•´ì•¼ 합니다.</p>
<ol>
<li>ê° ì„¤ì • ê·¸ë£¹ì„ ë³„ê°œì˜ {@link
-android.preference.PreferenceFragment} ì¸ìŠ¤í„´ìŠ¤ë¡œ 구분합니다. 다시 ë§í•´, 설정 그룹마다 별ë„ì˜ XML 파ì¼ì´ 하나씩 있어야 한다는
+android.preference.PreferenceFragment} ì¸ìŠ¤í„´ìŠ¤ë¡œ 구분합니다. 다시 ë§í•´, 설정 그룹마다 별ë„ì˜ XML 파ì¼ì´ 하나씩 있어야 한다는
뜻입니다.</li>
- <li>ê° ì„¤ì • ê·¸ë£¹ì„ ëª©ë¡ìœ¼ë¡œ 나열하는 XML í—¤ë” íŒŒì¼ì„ ìƒì„±í•˜ê³  ì–´ëŠ í”„ëž˜ê·¸ë¨¼íŠ¸ì—
+ <li>ê° ì„¤ì • ê·¸ë£¹ì„ ëª©ë¡ìœ¼ë¡œ 나열하는 XML í—¤ë” íŒŒì¼ì„ ìƒì„±í•˜ê³  ì–´ëŠ í”„ëž˜ê·¸ë¨¼íŠ¸ì—
ìƒì‘하는 설정 목ë¡ì´ 들어있는지 선언합니다.</li>
<li>{@link android.preference.PreferenceActivity} í´ëž˜ìŠ¤ë¥¼ 확장하여 ì„¤ì •ì„ í˜¸ìŠ¤íŒ…í•˜ë„ë¡ í•©ë‹ˆë‹¤.</li>
<li>{@link
-android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} ì½œë°±ì„ êµ¬í˜„í•˜ì—¬ í—¤ë” íŒŒì¼ì„
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} ì½œë°±ì„ êµ¬í˜„í•˜ì—¬ í—¤ë” íŒŒì¼ì„
나타냅니다.</li>
</ol>
-<p>ì´ ë””ìžì¸ì„ 사용하는 ë° ìžˆì–´ 커다란 ì´ì ì€ {@link android.preference.PreferenceActivity}ê°€
+<p>ì´ ë””ìžì¸ì„ 사용하는 ë° ìžˆì–´ 커다란 ì´ì ì€ {@link android.preference.PreferenceActivity}ê°€
(앱ì´) 대형 화면ì—서 ì‹¤í–‰ë  ë•Œ 그림 4ì—서 나타낸 것과 ê°™ì´ ì°½ ë‘ ê°œì§œë¦¬ ë ˆì´ì•„ì›ƒì„ ìžë™ìœ¼ë¡œ 표시한다는 것입니다.</p>
-<p>애플리케ì´ì…˜ì´ Android 3.0 ì´ì „ ë²„ì „ì„ ì§€ì›í•œë‹¤ 하ë”ë¼ë„ 애플리케ì´ì…˜ì´
-{@link android.preference.PreferenceFragment}를 사용하여
-신형 기기ì—서 ì°½ ë‘ ê°œì§œë¦¬ 표시를 ì§€ì›í•˜ë„ë¡ í•˜ë©´ì„œë„ êµ¬í˜• 기기ì—서는 ì¼ë°˜ì ì¸ 다중 화면 계층ì„
-여전히 ì§€ì›í•˜ë„ë¡ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(<a href="#BackCompatHeaders">기본 설정 í—¤ë”로
+<p>애플리케ì´ì…˜ì´ Android 3.0 ì´ì „ ë²„ì „ì„ ì§€ì›í•œë‹¤ 하ë”ë¼ë„ 애플리케ì´ì…˜ì´
+{@link android.preference.PreferenceFragment}를 사용하여
+신형 기기ì—서 ì°½ ë‘ ê°œì§œë¦¬ 표시를 ì§€ì›í•˜ë„ë¡ í•˜ë©´ì„œë„ êµ¬í˜• 기기ì—서는 ì¼ë°˜ì ì¸ 다중 화면 계층ì„
+여전히 ì§€ì›í•˜ë„ë¡ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤(<a href="#BackCompatHeaders">기본 설정 í—¤ë”로
ì´ì „ 버전 ì§€ì›í•˜ê¸°</a>를 참조하십시오).</p>
<img src="{@docRoot}images/ui/settings/settings-headers-tablet.png" alt="" />
-<p class="img-caption"><strong>그림 4.</strong> í—¤ë”ê°€ 있는 ì°½ ë‘ ê°œì§œë¦¬ ë ˆì´ì•„웃입니다. <br/><b>1.</b> í—¤ë”는
-XML í—¤ë” íŒŒì¼ë¡œ ì •ì˜ë©ë‹ˆë‹¤. <br/><b>2.</b> ê° ì„¤ì • 그룹ì€
-{@link android.preference.PreferenceFragment}ê°€ ì •ì˜í•˜ë©°, ì´ëŠ” í—¤ë” íŒŒì¼ì— 있는 {@code &lt;header&gt;} 요소가
+<p class="img-caption"><strong>그림 4.</strong> í—¤ë”ê°€ 있는 ì°½ ë‘ ê°œì§œë¦¬ ë ˆì´ì•„웃입니다. <br/><b>1.</b> í—¤ë”는
+XML í—¤ë” íŒŒì¼ë¡œ ì •ì˜ë©ë‹ˆë‹¤. <br/><b>2.</b> ê° ì„¤ì • 그룹ì€
+{@link android.preference.PreferenceFragment}ê°€ ì •ì˜í•˜ë©°, ì´ëŠ” í—¤ë” íŒŒì¼ì— 있는 {@code &lt;header&gt;} 요소가
지정합니다.</p>
<img src="{@docRoot}images/ui/settings/settings-headers-handset.png" alt="" />
-<p class="img-caption"><strong>그림 5.</strong> 설정 í—¤ë”ê°€ 있는 핸드셋 기기입니다. í•­ëª©ì„ ì„ íƒí•˜ë©´
-ì—°ê´€ëœ {@link android.preference.PreferenceFragment}ê°€ í—¤ë”를
+<p class="img-caption"><strong>그림 5.</strong> 설정 í—¤ë”ê°€ 있는 핸드셋 기기입니다. í•­ëª©ì„ ì„ íƒí•˜ë©´
+ì—°ê´€ëœ {@link android.preference.PreferenceFragment}ê°€ í—¤ë”를
대체합니다.</p>
<h3 id="CreateHeaders" style="clear:left">í—¤ë” íŒŒì¼ ë§Œë“¤ê¸°</h3>
-<p>í—¤ë” ëª©ë¡ì— 있는 ê° ì„¤ì • ê·¸ë£¹ì€ ë£¨íŠ¸ {@code &lt;preference-headers&gt;}
+<p>í—¤ë” ëª©ë¡ì— 있는 ê° ì„¤ì • ê·¸ë£¹ì€ ë£¨íŠ¸ {@code &lt;preference-headers&gt;}
요소 ì•ˆì— ìžˆëŠ” {@code &lt;header&gt;} 요소 하나로 나타냅니다. 예:</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
@@ -607,12 +607,12 @@ android.preference.PreferenceFragment} 예를 선언하며 ì´ëŠ” 사용ìžê°€ í
<p>{@code &lt;extras&gt;} 요소를 사용하면 키-ê°’ ìŒì„ {@link
android.os.Bundle} ë‚´ì˜ í”„ëž˜ê·¸ë¨¼íŠ¸ì— ì „ë‹¬í•  수 있게 í•´ì¤ë‹ˆë‹¤. ì´ í”„ëž˜ê·¸ë¨¼íŠ¸ê°€ ì¸ìˆ˜ë¥¼ 검색하려면 {@link
-android.app.Fragment#getArguments()}를 호출하면 ë©ë‹ˆë‹¤. ì¸ìˆ˜ë¥¼ í”„ëž˜ê·¸ë¨¼íŠ¸ì— ì „ë‹¬í•˜ëŠ” ë°ì—는 여러 가지 ì´ìœ ê°€ ìžˆì„ ìˆ˜ 있지만,
+android.app.Fragment#getArguments()}를 호출하면 ë©ë‹ˆë‹¤. ì¸ìˆ˜ë¥¼ í”„ëž˜ê·¸ë¨¼íŠ¸ì— ì „ë‹¬í•˜ëŠ” ë°ì—는 여러 가지 ì´ìœ ê°€ ìžˆì„ ìˆ˜ 있지만,
한 가지 중요한 ì´ìœ ë¥¼ 예로 들면 ê° ê·¸ë£¹ì— ëŒ€í•´ {@link
-android.preference.PreferenceFragment}ì˜ ê°™ì€ í•˜ìœ„ í´ëž˜ìŠ¤ë¥¼ 재사용하고, ì´ ì¸ìˆ˜ë¥¼ 사용하여 해당 프래그먼트가 로딩해야 하는
+android.preference.PreferenceFragment}ì˜ ê°™ì€ í•˜ìœ„ í´ëž˜ìŠ¤ë¥¼ 재사용하고, ì´ ì¸ìˆ˜ë¥¼ 사용하여 해당 프래그먼트가 로딩해야 하는
기본 설정 XML 파ì¼ì´ 무엇ì¸ì§€ 나타낼 수 있다는 ì ìž…니다.</p>
-<p>예를 들어 다ìŒì€ 여러 가지 설정 ê·¸ë£¹ì— ìž¬ì‚¬ìš©í•  수 있는 프래그먼트입니다. ì´ê²ƒì€
+<p>예를 들어 다ìŒì€ 여러 가지 설정 ê·¸ë£¹ì— ìž¬ì‚¬ìš©í•  수 있는 프래그먼트입니다. ì´ê²ƒì€
ê° í—¤ë”ê°€ {@code "settings"} 키로 {@code &lt;extra&gt;} ì¸ìˆ˜ë¥¼ ì •ì˜í•˜ëŠ” 경우를 나타낸 것입니다.</p>
<pre>
@@ -636,7 +636,7 @@ public static class SettingsFragment extends PreferenceFragment {
<h3 id="DisplayHeaders">í—¤ë” í‘œì‹œí•˜ê¸°</h3>
<p>기본 설정 í—¤ë”를 표시하려면 {@link
-android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} 콜백 메서드를 구현하고
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} 콜백 메서드를 구현하고
{@link android.preference.PreferenceActivity#loadHeadersFromResource
loadHeadersFromResource()}를 호출해야 합니다. 예:</p>
@@ -654,56 +654,56 @@ android.preference.PreferenceFragment}를 엽니다.</p>
<p class="note"><strong>참고:</strong> 기본 설정 í—¤ë”를 사용하는 경우, {@link
android.preference.PreferenceActivity}ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ê°€ {@link
-android.preference.PreferenceActivity#onCreate onCreate()} 메서드를 구현하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ 필수 작업ì€
+android.preference.PreferenceActivity#onCreate onCreate()} 메서드를 구현하지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. ì•¡í‹°ë¹„í‹°ì— ëŒ€í•œ 필수 작업ì€
í—¤ë”를 로딩하는 것ë¿ì´ê¸° 때문입니다.</p>
<h3 id="BackCompatHeaders">기본 설정 í—¤ë”로 ì´ì „ 버전 ì§€ì›í•˜ê¸°</h3>
-<p>애플리케ì´ì…˜ì´ Android 3.0 ì´ì „ ë²„ì „ì„ ì§€ì›í•˜ëŠ” 경우ì—ë„ ì—¬ì „ížˆ í—¤ë”를 사용하여
-Android 3.0 ì´ìƒì—서 ì°½ ë‘ ê°œì§œë¦¬ ë ˆì´ì•„ì›ƒì„ ì œê³µí•˜ë„ë¡ í•  수 있습니다. 개발ìžê°€ 해야 í•  ì¼ì€ 추가로 기본 설정 XML 파ì¼ì„
+<p>애플리케ì´ì…˜ì´ Android 3.0 ì´ì „ ë²„ì „ì„ ì§€ì›í•˜ëŠ” 경우ì—ë„ ì—¬ì „ížˆ í—¤ë”를 사용하여
+Android 3.0 ì´ìƒì—서 ì°½ ë‘ ê°œì§œë¦¬ ë ˆì´ì•„ì›ƒì„ ì œê³µí•˜ë„ë¡ í•  수 있습니다. 개발ìžê°€ 해야 í•  ì¼ì€ 추가로 기본 설정 XML 파ì¼ì„
ìƒì„±í•˜ëŠ” 것ë¿ìž…니다. ì´ íŒŒì¼ì€ 마치 í—¤ë” í•­ëª©ì²˜ëŸ¼ ë™ìž‘하는 기본ì ì¸ {@link android.preference.Preference
-&lt;Preference&gt;} 요소를 사용합니다(ì´ê²ƒì„ ì´ì „ Android ë²„ì „ì´ ì‚¬ìš©í•˜ë„ë¡
+&lt;Preference&gt;} 요소를 사용합니다(ì´ê²ƒì„ ì´ì „ Android ë²„ì „ì´ ì‚¬ìš©í•˜ë„ë¡
할 예정).</p>
<p>하지만 새로운 {@link android.preference.PreferenceScreen}ì„ ì—¬ëŠ” 대신 ê° {@link
-android.preference.Preference &lt;Preference&gt;} 요소가 {@link android.content.Intent}를 하나씩
-{@link android.preference.PreferenceActivity}ì— ì „ì†¡í•©ë‹ˆë‹¤. ì´ê²ƒì´ 로딩할 XML 파ì¼ì´ 무엇ì¸ì§€ë¥¼
+android.preference.Preference &lt;Preference&gt;} 요소가 {@link android.content.Intent}를 하나씩
+{@link android.preference.PreferenceActivity}ì— ì „ì†¡í•©ë‹ˆë‹¤. ì´ê²ƒì´ 로딩할 XML 파ì¼ì´ 무엇ì¸ì§€ë¥¼
나타냅니다.</p>
-<p>예를 들어 다ìŒì€ Android 3.0 ì´ìƒì—서 사용ë˜ëŠ” 기본 설정 í—¤ë”ì— ëŒ€í•œ
-XML 파ì¼ìž…니다({@code res/xml/preference_headers.xml}).</p>
+<p>예를 들어 다ìŒì€ Android 3.0 ì´ìƒì—서 사용ë˜ëŠ” 기본 설정 í—¤ë”ì— ëŒ€í•œ
+XML 파ì¼ìž…니다({@code res/xml/preference_headers.xml}).</p>
<pre>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" />
&lt;/preference-headers>
</pre>
-<p>그리고 다ìŒì€, Android 3.0 ì´ì „ ë²„ì „ì— ê°™ì€ í—¤ë”를 제공하는 기본 설정
+<p>그리고 다ìŒì€, Android 3.0 ì´ì „ ë²„ì „ì— ê°™ì€ í—¤ë”를 제공하는 기본 설정
파ì¼ìž…니다({@code res/xml/preference_headers_legacy.xml}).</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_ONE" />
&lt;/Preference>
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_TWO" />
@@ -711,13 +711,13 @@ XML 파ì¼ìž…니다({@code res/xml/preference_headers.xml}).</p>
&lt;/PreferenceScreen>
</pre>
-<p>{@code &lt;preference-headers&gt;}ì— ëŒ€í•œ ì§€ì›ì´ Android 3.0ì—서 추가ë˜ì—ˆê¸° ë•Œë¬¸ì— ì‹œìŠ¤í…œì´
+<p>{@code &lt;preference-headers&gt;}ì— ëŒ€í•œ ì§€ì›ì´ Android 3.0ì—서 추가ë˜ì—ˆê¸° ë•Œë¬¸ì— ì‹œìŠ¤í…œì´
{@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()}를 {@link
-android.preference.PreferenceActivity}ì—서 호출하는 ê²ƒì€ Android 3.0 ì´ìƒì—서 ì‹¤í–‰ë  ë•Œë¿ìž…니다. "레거시" í—¤ë” íŒŒì¼ì„
-로딩하려면({@code preference_headers_legacy.xml}) 반드시 Android
+android.preference.PreferenceActivity}ì—서 호출하는 ê²ƒì€ Android 3.0 ì´ìƒì—서 ì‹¤í–‰ë  ë•Œë¿ìž…니다. "레거시" í—¤ë” íŒŒì¼ì„
+로딩하려면({@code preference_headers_legacy.xml}) 반드시 Android
ë²„ì „ì„ í™•ì¸í•´ì•¼ 하며, 해당 ë²„ì „ì´ Android 3.0 ì´ì „ì¸ ê²½ìš°({@link
android.os.Build.VERSION_CODES#HONEYCOMB}), {@link
-android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 호출하여
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 호출하여
레거시 í—¤ë” íŒŒì¼ì„ 로딩해야 합니다. 예:</p>
<pre>
@@ -739,8 +739,8 @@ public void onBuildHeaders(List&lt;Header> target) {
}
</pre>
-<p>ì´ì œ ë‚¨ì€ í•  ì¼ì´ë¼ê³ ëŠ” {@link android.content.Intent}를 처리하는 것ë¿ìž…니다. ì´ê²ƒì€
-액티비티로 전달ë˜ì–´ ì–´ëŠ ê¸°ë³¸ 설정 파ì¼ì„ 로딩해야 하는지 ì‹ë³„하는 ë° ì“°ìž…ë‹ˆë‹¤. 그럼 ì´ì œ ì¸í…íŠ¸ì˜ ìž‘ì—…ì„ ê²€ìƒ‰í•˜ì—¬ 기본 설정 XMLì˜
+<p>ì´ì œ ë‚¨ì€ í•  ì¼ì´ë¼ê³ ëŠ” {@link android.content.Intent}를 처리하는 것ë¿ìž…니다. ì´ê²ƒì€
+액티비티로 전달ë˜ì–´ ì–´ëŠ ê¸°ë³¸ 설정 파ì¼ì„ 로딩해야 하는지 ì‹ë³„하는 ë° ì“°ìž…ë‹ˆë‹¤. 그럼 ì´ì œ ì¸í…íŠ¸ì˜ ìž‘ì—…ì„ ê²€ìƒ‰í•˜ì—¬ 기본 설정 XMLì˜
{@code &lt;intent&gt;} 태그ì—서 사용한 알려진 작업 문ìžì—´ì— 비êµí•´ë³´ê² ìŠµë‹ˆë‹¤.</p>
<pre>
@@ -765,8 +765,8 @@ public void onCreate(Bundle savedInstanceState) {
</pre>
<p>{@link
-android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 ì—°ì´ì–´ 호출하면
-모든 기본 ì„¤ì •ì„ í•˜ë‚˜ì˜ ëª©ë¡ì— 쌓게 ëœë‹¤ëŠ” ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. ë”°ë¼ì„œ ì´ê²ƒì€ 'Else-if' ë¬¸ì´ ìžˆëŠ” ì¡°ê±´ì„ ë³€ê²½í•˜ì—¬ ë”± 한 번만
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 ì—°ì´ì–´ 호출하면
+모든 기본 ì„¤ì •ì„ í•˜ë‚˜ì˜ ëª©ë¡ì— 쌓게 ëœë‹¤ëŠ” ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. ë”°ë¼ì„œ ì´ê²ƒì€ 'Else-if' ë¬¸ì´ ìžˆëŠ” ì¡°ê±´ì„ ë³€ê²½í•˜ì—¬ ë”± 한 번만
호출하ë„ë¡ ì£¼ì˜í•´ì•¼ 합니다.</p>
@@ -775,15 +775,15 @@ android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesF
<h2 id="ReadingPrefs">기본 설정 ì½ê¸°</h2>
-<p>기본ì ìœ¼ë¡œ ì•±ì˜ ê¸°ë³¸ ì„¤ì •ì€ ëª¨ë‘
+<p>기본ì ìœ¼ë¡œ ì•±ì˜ ê¸°ë³¸ ì„¤ì •ì€ ëª¨ë‘
애플리케ì´ì…˜ ë‚´ì˜ ì–´ë””ì„œë“  ì •ì  ë©”ì„œë“œ {@link
android.preference.PreferenceManager#getDefaultSharedPreferences
PreferenceManager.getDefaultSharedPreferences()}를 호출하면 액세스할 수 있는 파ì¼ì— 저장ë©ë‹ˆë‹¤. ì´ê²ƒì€ {@link
android.content.SharedPreferences} ê°ì²´ë¥¼ 반환하며, ì—¬ê¸°ì— {@link
-android.preference.PreferenceActivity}ì—서 사용한 {@link android.preference.Preference} ê°ì²´ì™€
+android.preference.PreferenceActivity}ì—서 사용한 {@link android.preference.Preference} ê°ì²´ì™€
ì—°ê´€ëœ ëª¨ë“  키-ê°’ ìŒì´ 들어있습니다.</p>
-<p>예를 들어 다ìŒì€ 기본 설정 ê°’ 중 하나를 애플리케ì´ì…˜ ë‚´ì˜ ë‹¤ë¥¸ 모든 액티비티ì—서 ì½ëŠ” 방법ì„
+<p>예를 들어 다ìŒì€ 기본 설정 ê°’ 중 하나를 애플리케ì´ì…˜ ë‚´ì˜ ë‹¤ë¥¸ 모든 액티비티ì—서 ì½ëŠ” 방법ì„
나타낸 것입니다.</p>
<pre>
@@ -795,17 +795,17 @@ String syncConnPref = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN,
<h3 id="Listening">기본 설정 변경 수신 대기</h3>
-<p>사용ìžê°€ 기본 설정 중 하나를 변경하ìžë§ˆìž ì´ì— 대해 ì•Œë¦¼ì„ ë°›ëŠ” ê²ƒì´ ì¢‹ì€ ë°ì—는 몇 가지
-ì´ìœ ê°€ 있습니다. 기본 설정 중 ì–´ëŠ í•˜ë‚˜ì—ë¼ë„ ë³€ê²½ì´ ë°œìƒí–ˆì„ 때 ì½œë°±ì„ ë°›ìœ¼ë ¤ë©´,
+<p>사용ìžê°€ 기본 설정 중 하나를 변경하ìžë§ˆìž ì´ì— 대해 ì•Œë¦¼ì„ ë°›ëŠ” ê²ƒì´ ì¢‹ì€ ë°ì—는 몇 가지
+ì´ìœ ê°€ 있습니다. 기본 설정 중 ì–´ëŠ í•˜ë‚˜ì—ë¼ë„ ë³€ê²½ì´ ë°œìƒí–ˆì„ 때 ì½œë°±ì„ ë°›ìœ¼ë ¤ë©´,
{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener
-SharedPreference.OnSharedPreferenceChangeListener} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하고
+SharedPreference.OnSharedPreferenceChangeListener} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하고
{@link android.content.SharedPreferences} ê°ì²´ì— 대한 수신기를 등ë¡í•©ë‹ˆë‹¤. ì´ë•Œ {@link
android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
registerOnSharedPreferenceChangeListener()}를 호출하면 ë©ë‹ˆë‹¤.</p>
<p>ì´ ì¸í„°íŽ˜ì´ìФì—는 콜백 메서드가 {@link
android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged
-onSharedPreferenceChanged()} 하나ë¿ì´ë©°, ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì•¡í‹°ë¹„í‹°ì˜ ì¼ë¶€ë¶„으로 구현하는 것ì´
+onSharedPreferenceChanged()} 하나ë¿ì´ë©°, ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì•¡í‹°ë¹„í‹°ì˜ ì¼ë¶€ë¶„으로 구현하는 것ì´
가장 쉬운 ë°©ë²•ì¼ ê³µì‚°ì´ í½ë‹ˆë‹¤. 예:</p>
<pre>
@@ -825,19 +825,19 @@ public class SettingsActivity extends PreferenceActivity
}
</pre>
-<p>ì´ ì˜ˆì‹œì—서 메서드는 ë³€ê²½ëœ ì„¤ì •ì´ ì•Œë ¤ì§„ 기본 설정 í‚¤ì— ëŒ€í•œ 것ì¸ì§€ 여부를 확ì¸í•©ë‹ˆë‹¤. ì´ê²ƒì€
-{@link android.preference.PreferenceActivity#findPreference findPreference()}를 호출하여
-ë³€ê²½ëœ {@link android.preference.Preference} ê°ì²´ë¥¼ 가져오는ë°, ì´ë ‡ê²Œ 해야 í•­ëª©ì˜ ìš”ì•½ì„ ìˆ˜ì •í•˜ì—¬
+<p>ì´ ì˜ˆì‹œì—서 메서드는 ë³€ê²½ëœ ì„¤ì •ì´ ì•Œë ¤ì§„ 기본 설정 í‚¤ì— ëŒ€í•œ 것ì¸ì§€ 여부를 확ì¸í•©ë‹ˆë‹¤. ì´ê²ƒì€
+{@link android.preference.PreferenceActivity#findPreference findPreference()}를 호출하여
+ë³€ê²½ëœ {@link android.preference.Preference} ê°ì²´ë¥¼ 가져오는ë°, ì´ë ‡ê²Œ 해야 í•­ëª©ì˜ ìš”ì•½ì„ ìˆ˜ì •í•˜ì—¬
사용ìžì˜ ì„ íƒì— 대한 ì„¤ëª…ì´ ë˜ë„ë¡ í•  수 있습니다. 다시 ë§í•´, ì„¤ì •ì´ {@link
android.preference.ListPreference} ë˜ëŠ” 다른 다중 ì„ íƒ ì„¤ì •ì¸ ê²½ìš°, ì„¤ì •ì´ ë³€ê²½ë˜ì–´ 현재 ìƒíƒœë¥¼ 표시하ë„ë¡ í•˜ë©´ {@link
-android.preference.Preference#setSummary setSummary()}를 호출해야 한다는 뜻입니다(예를 들어
+android.preference.Preference#setSummary setSummary()}를 호출해야 한다는 뜻입니다(예를 들어
그림 5ì— í‘œì‹œëœ ì ˆì „ 모드 설정과 ê°™ìŒ).</p>
-<p class="note"><strong>참고:</strong> Android ë””ìžì¸ ë¬¸ì„œì˜ <a href="{@docRoot}design/patterns/settings.html">설정</a> 관련 ë‚´ìš©ì—서 설명한 바와 ê°™ì´, 사용ìžê°€ 기본 ì„¤ì •ì„ ë³€ê²½í•  때마다
-{@link android.preference.ListPreference}ì˜ ìš”ì•½ì„ ì—…ë°ì´íŠ¸í•˜ëŠ” ê²ƒì„ ê¶Œìž¥í•©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하여 현재 설정ì„
+<p class="note"><strong>참고:</strong> Android ë””ìžì¸ ë¬¸ì„œì˜ <a href="{@docRoot}design/patterns/settings.html">설정</a> 관련 ë‚´ìš©ì—서 설명한 바와 ê°™ì´, 사용ìžê°€ 기본 ì„¤ì •ì„ ë³€ê²½í•  때마다
+{@link android.preference.ListPreference}ì˜ ìš”ì•½ì„ ì—…ë°ì´íŠ¸í•˜ëŠ” ê²ƒì„ ê¶Œìž¥í•©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하여 현재 설정ì„
나타내는 것입니다.</p>
-<p>액티비티ì—서 ì ì ˆí•œ 수명 주기 관리를 수행하려면
+<p>액티비티ì—서 ì ì ˆí•œ 수명 주기 관리를 수행하려면
{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener}를 등ë¡í•˜ê³  ë“±ë¡ í•´ì œí•˜ëŠ” ìž‘ì—…ì€ ê°ê° {@link
android.app.Activity#onResume} ë° {@link android.app.Activity#onPause} 콜백 ì¤‘ì— ìˆ˜í–‰í•˜ëŠ” ê²ƒì„ ê¶Œìž¥í•©ë‹ˆë‹¤.</p>
@@ -859,14 +859,14 @@ protected void onPause() {
<p class="caution"><strong>주ì˜:</strong> {@link
android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
-registerOnSharedPreferenceChangeListener()}를 호출하면
-í˜„ìž¬ì˜ ê²½ìš°, 기본 설정 관리ìžê°€ ìˆ˜ì‹ ê¸°ì— ëŒ€í•œ 강력한 참조를 저장하지 않습니다. 반드시 ìˆ˜ì‹ ê¸°ì— ëŒ€í•œ 강력한
-참조를 저장해야 합니다. 그렇지 않으면 가비지 ìˆ˜ì§‘ì˜ ëŒ€ìƒì´ ë  ê°€ëŠ¥ì„±ì´ ë†’ìŠµë‹ˆë‹¤. 권장 사항으로는
-수신기를 ê°ì²´ì˜ ì¸ìŠ¤í„´ìŠ¤ ë°ì´í„° ì•ˆì— ë³´ê´€í•˜ëŠ” ê²ƒì„ ì¶”ì²œí•©ë‹ˆë‹¤. ì´ ê°ì²´ëŠ”
+registerOnSharedPreferenceChangeListener()}를 호출하면
+í˜„ìž¬ì˜ ê²½ìš°, 기본 설정 관리ìžê°€ ìˆ˜ì‹ ê¸°ì— ëŒ€í•œ 강력한 참조를 저장하지 않습니다. 반드시 ìˆ˜ì‹ ê¸°ì— ëŒ€í•œ 강력한
+참조를 저장해야 합니다. 그렇지 않으면 가비지 ìˆ˜ì§‘ì˜ ëŒ€ìƒì´ ë  ê°€ëŠ¥ì„±ì´ ë†’ìŠµë‹ˆë‹¤. 권장 사항으로는
+수신기를 ê°ì²´ì˜ ì¸ìŠ¤í„´ìŠ¤ ë°ì´í„° ì•ˆì— ë³´ê´€í•˜ëŠ” ê²ƒì„ ì¶”ì²œí•©ë‹ˆë‹¤. ì´ ê°ì²´ëŠ”
수신기를 필요로 하는 ê¸°ê°„ë§Œí¼ ì˜¤ëž˜ 존재할 ê²ƒì´ í™•ì‹¤í•´ì•¼ 합니다.</p>
-<p>예를 들어 ë‹¤ìŒ ì½”ë“œì—서 발신ìžëŠ” ìˆ˜ì‹ ê¸°ì— ëŒ€í•œ 참조를
-보관하지 않습니다. ê·¸ ê²°ê³¼ 해당 수신기가 가비지 ìˆ˜ì§‘ì˜ ëŒ€ìƒì´ ë˜ë©°
+<p>예를 들어 ë‹¤ìŒ ì½”ë“œì—서 발신ìžëŠ” ìˆ˜ì‹ ê¸°ì— ëŒ€í•œ 참조를
+보관하지 않습니다. ê·¸ ê²°ê³¼ 해당 수신기가 가비지 ìˆ˜ì§‘ì˜ ëŒ€ìƒì´ ë˜ë©°
향후 언젠가 알 수 없는 시ì ì— ê³ ìž¥ì„ ì¼ìœ¼í‚¤ê²Œ ë  ê²ƒìž…ë‹ˆë‹¤.</p>
<pre>
@@ -879,7 +879,7 @@ prefs.registerOnSharedPreferenceChangeListener(
});
</pre>
-<p>대신, ìˆ˜ì‹ ê¸°ì— ëŒ€í•œ 참조를 수신기가 필요한 ê¸°ê°„ë§Œí¼ ì˜¤ëž˜ 존재할 ê²ƒì´ í™•ì‹¤í•œ ê°ì²´ì˜
+<p>대신, ìˆ˜ì‹ ê¸°ì— ëŒ€í•œ 참조를 수신기가 필요한 ê¸°ê°„ë§Œí¼ ì˜¤ëž˜ 존재할 ê²ƒì´ í™•ì‹¤í•œ ê°ì²´ì˜
ì¸ìŠ¤í„´ìŠ¤ ë°ì´í„° í•„ë“œì— ì €ìž¥í•˜ì‹­ì‹œì˜¤.</p>
<pre>
@@ -895,19 +895,19 @@ prefs.registerOnSharedPreferenceChangeListener(listener);
<h2 id="NetworkUsage">ë„¤íŠ¸ì›Œí¬ ì‚¬ìš©ëŸ‰ 관리하기</h2>
-<p>Android 4.0부터 ì‹œìŠ¤í…œì˜ ì„¤ì • 애플리케ì´ì…˜ì„ 사용하면 사용ìžê°€
-애플리케ì´ì…˜ì´ 전경과 ë°°ê²½ì— ìžˆëŠ” ë™ì•ˆ ê°ê° 얼마나 ë§Žì€ ë„¤íŠ¸ì›Œí¬ ë°ì´í„°ë¥¼ 사용하는지 알아볼 수 있게 ë˜ì—ˆìŠµë‹ˆë‹¤. 그런 다ìŒ
-사용ìžëŠ” ê°ê°ì˜ ì•±ì— ëŒ€í•´ ë°°ê²½ ë°ì´í„° ì‚¬ìš©ì„ ë¹„í™œì„±í™”í•  수 있습니다. 사용ìžê°€ ì—¬ëŸ¬ë¶„ì˜ ì•±ì´ ë°°ê²½ì—서
-ë°ì´í„°ì— 액세스하는 ê¸°ëŠ¥ì„ ë¹„í™œì„±í™”í•˜ëŠ” 사태를 피하려면 ë°ì´í„° ì—°ê²°ì„ íš¨ìœ¨ì ìœ¼ë¡œ 사용하고
+<p>Android 4.0부터 ì‹œìŠ¤í…œì˜ ì„¤ì • 애플리케ì´ì…˜ì„ 사용하면 사용ìžê°€
+애플리케ì´ì…˜ì´ 전경과 ë°°ê²½ì— ìžˆëŠ” ë™ì•ˆ ê°ê° 얼마나 ë§Žì€ ë„¤íŠ¸ì›Œí¬ ë°ì´í„°ë¥¼ 사용하는지 알아볼 수 있게 ë˜ì—ˆìŠµë‹ˆë‹¤. 그런 다ìŒ
+사용ìžëŠ” ê°ê°ì˜ ì•±ì— ëŒ€í•´ ë°°ê²½ ë°ì´í„° ì‚¬ìš©ì„ ë¹„í™œì„±í™”í•  수 있습니다. 사용ìžê°€ ì—¬ëŸ¬ë¶„ì˜ ì•±ì´ ë°°ê²½ì—서
+ë°ì´í„°ì— 액세스하는 ê¸°ëŠ¥ì„ ë¹„í™œì„±í™”í•˜ëŠ” 사태를 피하려면 ë°ì´í„° ì—°ê²°ì„ íš¨ìœ¨ì ìœ¼ë¡œ 사용하고
사용ìžê°€ 애플리케ì´ì…˜ ì„¤ì •ì„ í†µí•˜ì—¬ ì•±ì˜ ë°ì´í„° ì‚¬ìš©ëŸ‰ì„ ë¯¸ì„¸ ì¡°ì •í•  수 있ë„ë¡ í—ˆìš©í•´ì•¼ 합니다.<p>
-<p>예를 들어 사용ìžì—게 ì•±ì˜ ë°ì´í„° ë™ê¸°í™” 빈ë„를 제어하ë„ë¡ í—ˆìš©í•  수 있습니다. ì•±ì´ Wi-Fiì— ìžˆì„ ë•Œì—ë§Œ
-업로드/다운로드를 수행하ë„ë¡ í• ì§€ 여부, ì•±ì´ ë¡œë° ì¤‘ì— ë°ì´í„°ë¥¼ 사용하ë„ë¡ í• ì§€ 여부 ë“±ì„ ì´ë ‡ê²Œ 조절합니다. 사용ìžê°€
-ì´ëŸ¬í•œ 제어 ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 있게 ë˜ë©´ 시스템 설정ì—서 설정한 한ë„ì— ê°€ê¹Œì›Œì§€ê³ 
-ìžˆì„ ë•Œ ì•±ì˜ ë°ì´í„° 액세스를 비활성화할 ê°€ëŠ¥ì„±ì´ ë‚®ì•„ì§‘ë‹ˆë‹¤. ê·¸ 대신 ì•±ì´ ì‚¬ìš©í•˜ëŠ” ë°ì´í„° ì–‘ì„
+<p>예를 들어 사용ìžì—게 ì•±ì˜ ë°ì´í„° ë™ê¸°í™” 빈ë„를 제어하ë„ë¡ í—ˆìš©í•  수 있습니다. ì•±ì´ Wi-Fiì— ìžˆì„ ë•Œì—ë§Œ
+업로드/다운로드를 수행하ë„ë¡ í• ì§€ 여부, ì•±ì´ ë¡œë° ì¤‘ì— ë°ì´í„°ë¥¼ 사용하ë„ë¡ í• ì§€ 여부 ë“±ì„ ì´ë ‡ê²Œ 조절합니다. 사용ìžê°€
+ì´ëŸ¬í•œ 제어 ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 있게 ë˜ë©´ 시스템 설정ì—서 설정한 한ë„ì— ê°€ê¹Œì›Œì§€ê³ 
+ìžˆì„ ë•Œ ì•±ì˜ ë°ì´í„° 액세스를 비활성화할 ê°€ëŠ¥ì„±ì´ ë‚®ì•„ì§‘ë‹ˆë‹¤. ê·¸ 대신 ì•±ì´ ì‚¬ìš©í•˜ëŠ” ë°ì´í„° ì–‘ì„
정밀하게 제어할 수 있기 때문입니다.</p>
-<p>ì¼ë‹¨ 필요한 기본 ì„¤ì •ì„ {@link android.preference.PreferenceActivity}ì—
+<p>ì¼ë‹¨ 필요한 기본 ì„¤ì •ì„ {@link android.preference.PreferenceActivity}ì—
추가하여 ì•±ì˜ ë°ì´í„° ìŠµê´€ì„ ì œì–´í•˜ë„ë¡ í–ˆìœ¼ë©´, 다ìŒìœ¼ë¡œ 매니페스트 파ì¼ì— 있는 {@link
android.content.Intent#ACTION_MANAGE_NETWORK_USAGE}ì— ëŒ€í•œ ì¸í…트 필터를 추가해야 합니다. 예:</p>
@@ -920,10 +920,10 @@ android.content.Intent#ACTION_MANAGE_NETWORK_USAGE}ì— ëŒ€í•œ ì¸í…트 í•„í„°ë¥
&lt;/activity>
</pre>
-<p>ì´ ì¸í…트 필터는 ì´ê²ƒì´ 애플리케ì´ì…˜ì˜ ë°ì´í„° ì‚¬ìš©ëŸ‰ì„ ì œì–´í•˜ëŠ” 액티비티ë¼ëŠ”
-ì‚¬ì‹¤ì„ ì‹œìŠ¤í…œì— ë‚˜íƒ€ë‚´ëŠ” ì—­í• ì„ í•©ë‹ˆë‹¤. ë”°ë¼ì„œ, 사용ìžê°€ ì‹œìŠ¤í…œì˜ ì„¤ì • 앱ì—서 ì—¬ëŸ¬ë¶„ì˜ ì•±ì´
-얼마나 ë§Žì€ ë°ì´í„°ë¥¼ 사용하는지 알아볼 때면 <em>애플리케ì´ì…˜ 설정 보기</em> ë²„íŠ¼ì„ ì‚¬ìš©í•  수 있어
-{@link android.preference.PreferenceActivity}를 시작하게 ë©ë‹ˆë‹¤. 그러면 사용ìžëŠ”
+<p>ì´ ì¸í…트 필터는 ì´ê²ƒì´ 애플리케ì´ì…˜ì˜ ë°ì´í„° ì‚¬ìš©ëŸ‰ì„ ì œì–´í•˜ëŠ” 액티비티ë¼ëŠ”
+ì‚¬ì‹¤ì„ ì‹œìŠ¤í…œì— ë‚˜íƒ€ë‚´ëŠ” ì—­í• ì„ í•©ë‹ˆë‹¤. ë”°ë¼ì„œ, 사용ìžê°€ ì‹œìŠ¤í…œì˜ ì„¤ì • 앱ì—서 ì—¬ëŸ¬ë¶„ì˜ ì•±ì´
+얼마나 ë§Žì€ ë°ì´í„°ë¥¼ 사용하는지 알아볼 때면 <em>애플리케ì´ì…˜ 설정 보기</em> ë²„íŠ¼ì„ ì‚¬ìš©í•  수 있어
+{@link android.preference.PreferenceActivity}를 시작하게 ë©ë‹ˆë‹¤. 그러면 사용ìžëŠ”
ì•±ì´ ì‚¬ìš©í•  ë°ì´í„° ì–‘ì„ ë¯¸ì„¸í•˜ê²Œ ì¡°ì •í•  수 있습니다.</p>
@@ -934,22 +934,22 @@ android.content.Intent#ACTION_MANAGE_NETWORK_USAGE}ì— ëŒ€í•œ ì¸í…트 í•„í„°ë¥
<h2 id="Custom">ì‚¬ìš©ìž ì§€ì • 기본 설정 구축하기</h2>
-<p>Android 프레임워í¬ì—는 다양한 {@link android.preference.Preference} 하위 í´ëž˜ìŠ¤ê°€ í¬í•¨ë˜ì–´ 있어
-여러 가지 설정 ìœ í˜•ì— ë§žê²Œ UI를 구축할 수 있습니다.
-하지만, 기본 제공 ì†”ë£¨ì…˜ì´ ì—†ëŠ” ì„¤ì •ì´ í•„ìš”í•˜ê²Œ ë˜ëŠ” ê²½ìš°ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어 ìˆ«ìž ì„ íƒê¸° ë˜ëŠ”
-ë‚ ì§œ ì„ íƒê¸° ë“±ì´ ì´ì— 해당ë©ë‹ˆë‹¤. 그러한 경우ì—는 ì‚¬ìš©ìž ì§€ì • 기본 ì„¤ì •ì„ ë§Œë“¤ì–´ì•¼ 합니다. ì´ë•Œ
+<p>Android 프레임워í¬ì—는 다양한 {@link android.preference.Preference} 하위 í´ëž˜ìŠ¤ê°€ í¬í•¨ë˜ì–´ 있어
+여러 가지 설정 ìœ í˜•ì— ë§žê²Œ UI를 구축할 수 있습니다.
+하지만, 기본 제공 ì†”ë£¨ì…˜ì´ ì—†ëŠ” ì„¤ì •ì´ í•„ìš”í•˜ê²Œ ë˜ëŠ” ê²½ìš°ë„ ìžˆìŠµë‹ˆë‹¤. 예를 들어 ìˆ«ìž ì„ íƒê¸° ë˜ëŠ”
+ë‚ ì§œ ì„ íƒê¸° ë“±ì´ ì´ì— 해당ë©ë‹ˆë‹¤. 그러한 경우ì—는 ì‚¬ìš©ìž ì§€ì • 기본 ì„¤ì •ì„ ë§Œë“¤ì–´ì•¼ 합니다. ì´ë•Œ
{@link android.preference.Preference} í´ëž˜ìФ ë˜ëŠ” 다른 하위 í´ëž˜ìФ 중 하나를 확장하는 ë°©ë²•ì„ ì”니다.</p>
-<p>{@link android.preference.Preference} í´ëž˜ìŠ¤ë¥¼ 확장하는 경우, 다ìŒê³¼ ê°™ì´
+<p>{@link android.preference.Preference} í´ëž˜ìŠ¤ë¥¼ 확장하는 경우, 다ìŒê³¼ ê°™ì´
몇 가지 중요한 해야 í•  ì¼ì´ 있습니다.</p>
<ul>
<li>사용ìžê°€ ì„¤ì •ì„ ì„ íƒí•˜ë©´ 나타나는 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 지정합니다.</li>
<li>í•„ìš”ì— ë”°ë¼ ì„¤ì •ì˜ ê°’ì„ ì €ìž¥í•©ë‹ˆë‹¤.</li>
- <li>{@link android.preference.Preference}ê°€ ë³´ì´ê²Œ ë˜ë©´
+ <li>{@link android.preference.Preference}ê°€ ë³´ì´ê²Œ ë˜ë©´
ì´ë¥¼ 현재(ë˜ëŠ” 기본) 값으로 초기화합니다.</li>
<li>ì‹œìŠ¤í…œì´ ìš”ì²­í•˜ëŠ” 경우 기본 ê°’ì„ ì œê³µí•©ë‹ˆë‹¤.</li>
- <li>{@link android.preference.Preference}ê°€ ë‚˜ë¦„ì˜ UI(예: 대화)를 제공하는 경우, ìƒíƒœë¥¼
+ <li>{@link android.preference.Preference}ê°€ ë‚˜ë¦„ì˜ UI(예: 대화)를 제공하는 경우, ìƒíƒœë¥¼
저장하고 ë³µì›í•˜ì—¬ 수명 주기 ë³€ê²½ì„ ì²˜ë¦¬í•  수 있ë„ë¡ í•©ë‹ˆë‹¤(예: 사용ìžê°€ í™”ë©´ì„ ëŒë¦¬ëŠ” 경우).</li>
</ul>
@@ -959,27 +959,27 @@ android.content.Intent#ACTION_MANAGE_NETWORK_USAGE}ì— ëŒ€í•œ ì¸í…트 í•„í„°ë¥
<h3 id="CustomSelected">ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ 지정하기</h3>
- <p>{@link android.preference.Preference} í´ëž˜ìŠ¤ë¥¼ ì§ì ‘ 확장하는 경우,
-{@link android.preference.Preference#onClick()}ì„ êµ¬í˜„í•˜ì—¬ 사용ìžê°€
-í•­ëª©ì„ ì„ íƒí•  때 ì¼ì–´ë‚  ë™ìž‘ì„ ì •ì˜í•´ì•¼ 합니다. 그러나, ëŒ€ë¶€ë¶„ì˜ ì‚¬ìš©ìž ì§€ì • ì„¤ì •ì€ {@link android.preference.DialogPreference}를 확장하여
+ <p>{@link android.preference.Preference} í´ëž˜ìŠ¤ë¥¼ ì§ì ‘ 확장하는 경우,
+{@link android.preference.Preference#onClick()}ì„ êµ¬í˜„í•˜ì—¬ 사용ìžê°€
+í•­ëª©ì„ ì„ íƒí•  때 ì¼ì–´ë‚  ë™ìž‘ì„ ì •ì˜í•´ì•¼ 합니다. 그러나, ëŒ€ë¶€ë¶„ì˜ ì‚¬ìš©ìž ì§€ì • ì„¤ì •ì€ {@link android.preference.DialogPreference}를 확장하여
대화를 표시하ë„ë¡ í•©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 절차가 단순해집니다. {@link
android.preference.DialogPreference}를 확장하는 경우ì—는 í´ëž˜ìФ ìƒì„±ìž ì¤‘ì— ë°˜ë“œì‹œ {@link
-android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()}를 호출하여
+android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()}를 호출하여
ëŒ€í™”ì— ëŒ€í•œ ë ˆì´ì•„ì›ƒì„ ì§€ì •í•´ì•¼ 합니다.</p>
<p>예를 들어 다ìŒì€ ë ˆì´ì•„ì›ƒì„ ì„ ì–¸í•˜ëŠ” ì‚¬ìš©ìž ì§€ì • {@link
-android.preference.DialogPreference}와 기본
+android.preference.DialogPreference}와 기본
ê¸ì •ì  ë° ë¶€ì •ì  ëŒ€í™” ë²„íŠ¼ì— ëŒ€í•œ í…스트를 지정하는 ìƒì„±ìžìž…니다.</p>
<pre>
public class NumberPickerPreference extends DialogPreference {
public NumberPickerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
-
+
setDialogLayoutResource(R.layout.numberpicker_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
-
+
setDialogIcon(null);
}
...
@@ -992,21 +992,21 @@ public class NumberPickerPreference extends DialogPreference {
<p>ì„¤ì •ì— ëŒ€í•œ ê°’ì€ ì–¸ì œë“  저장할 수 있습니다. {@link
android.preference.Preference} í´ëž˜ìŠ¤ì˜ {@code persist*()} 메서드 중 하나를 호출하기만 하면 ë©ë‹ˆë‹¤. 예를 들어 ì„¤ì •ì˜ ê°’ì´ ì •ìˆ˜ì¸ ê²½ìš° {@link
-android.preference.Preference#persistInt persistInt()}를, ë¶€ìš¸ì„ ì €ìž¥í•˜ë ¤ë©´
+android.preference.Preference#persistInt persistInt()}를, ë¶€ìš¸ì„ ì €ìž¥í•˜ë ¤ë©´
{@link android.preference.Preference#persistBoolean persistBoolean()}ì„ í˜¸ì¶œí•˜ì‹­ì‹œì˜¤.</p>
-<p class="note"><strong>참고:</strong> ê°ê°ì˜ {@link android.preference.Preference}는 ë°ì´í„° 유형 하나씩만
-저장할 수 있으므로, ì‚¬ìš©ìž ì§€ì •
+<p class="note"><strong>참고:</strong> ê°ê°ì˜ {@link android.preference.Preference}는 ë°ì´í„° 유형 하나씩만
+저장할 수 있으므로, ì‚¬ìš©ìž ì§€ì •
{@link android.preference.Preference}ì—서 사용한 ë°ì´í„° ìœ í˜•ì— ì ì ˆí•œ {@code persist*()} 메서드를 사용해야 합니다.</p>
<p>ì„¤ì •ì„ ìœ ì§€í•˜ê¸°ë¡œ ì„ íƒí•˜ëŠ” 시ì ì€ 확장하는 ì§€ì ì´ {@link
android.preference.Preference} í´ëž˜ìФì¸ì§€ì— ì¢Œìš°ë  ìˆ˜ 있습니다. {@link
-android.preference.DialogPreference}를 확장하면 ê°’ì„ ìœ ì§€í•˜ëŠ” ê²ƒì€ ëŒ€í™”ê°€ ê¸ì •ì ì¸ 결과로 ì¸í•´
+android.preference.DialogPreference}를 확장하면 ê°’ì„ ìœ ì§€í•˜ëŠ” ê²ƒì€ ëŒ€í™”ê°€ ê¸ì •ì ì¸ 결과로 ì¸í•´
닫히는 경우만으로 국한해야 합니다(사용ìžê°€ "확ì¸(OK)" ë²„íŠ¼ì„ ì„ íƒí•˜ëŠ” 경우).</p>
<p>{@link android.preference.DialogPreference}ê°€ 닫히면 ì‹œìŠ¤í…œì´ {@link
-android.preference.DialogPreference#onDialogClosed onDialogClosed()} 메서드를 호출합니다. ì´ ë©”ì„œë“œì—는
-부울 ì¸ìˆ˜ê°€ í¬í•¨ë˜ì–´ 있어 사용ìžì˜ 결과가 "ê¸ì •ì "ì¸ì§€ 아닌지를 나타냅니다. ì´ ê°’ì´
+android.preference.DialogPreference#onDialogClosed onDialogClosed()} 메서드를 호출합니다. ì´ ë©”ì„œë“œì—는
+부울 ì¸ìˆ˜ê°€ í¬í•¨ë˜ì–´ 있어 사용ìžì˜ 결과가 "ê¸ì •ì "ì¸ì§€ 아닌지를 나타냅니다. ì´ ê°’ì´
<code>true</code>ì¸ ê²½ìš°, 사용ìžê°€ ê¸ì •ì  ë²„íŠ¼ì„ ì„ íƒí•œ 것ì´ê³  새 ê°’ì„ ì €ìž¥í•´ì•¼ 합니다. 예:
</p>
@@ -1020,29 +1020,29 @@ protected void onDialogClosed(boolean positiveResult) {
}
</pre>
-<p>ì´ ì˜ˆì‹œì—서 <code>mNewValue</code>는 ì„¤ì •ì˜ í˜„ìž¬ ê°’ì„ ë³´ìœ í•œ í´ëž˜ìФ
-구성ì›ìž…니다. {@link android.preference.Preference#persistInt persistInt()}를 호출하면
-{@link android.content.SharedPreferences} 파ì¼ì— 대한 ê°’ì„ ì €ìž¥í•©ë‹ˆë‹¤(ì´
+<p>ì´ ì˜ˆì‹œì—서 <code>mNewValue</code>는 ì„¤ì •ì˜ í˜„ìž¬ ê°’ì„ ë³´ìœ í•œ í´ëž˜ìФ
+구성ì›ìž…니다. {@link android.preference.Preference#persistInt persistInt()}를 호출하면
+{@link android.content.SharedPreferences} 파ì¼ì— 대한 ê°’ì„ ì €ìž¥í•©ë‹ˆë‹¤(ì´
{@link android.preference.Preference}ì— ëŒ€í•˜ì—¬ XML 파ì¼ì— ì§€ì •ëœ í‚¤ë¥¼ ìžë™ìœ¼ë¡œ 사용합니다).</p>
<h3 id="CustomInitialize">현재 값 초기화하기</h3>
-<p>ì‹œìŠ¤í…œì´ {@link android.preference.Preference}를 í™”ë©´ì— ì¶”ê°€í•˜ëŠ” 경우, ì´ëŠ”
-{@link android.preference.Preference#onSetInitialValue onSetInitialValue()}를 호출하여
-ì„¤ì •ì— ìœ ì§€ëœ ê°’ì´ ìžˆëŠ”ì§€ 없는지를 알립니다. ìœ ì§€ëœ ê°’ì´ ì—†ëŠ” 경우, ì´ í˜¸ì¶œì€ ê¸°ë³¸ ê°’ì„
+<p>ì‹œìŠ¤í…œì´ {@link android.preference.Preference}를 í™”ë©´ì— ì¶”ê°€í•˜ëŠ” 경우, ì´ëŠ”
+{@link android.preference.Preference#onSetInitialValue onSetInitialValue()}를 호출하여
+ì„¤ì •ì— ìœ ì§€ëœ ê°’ì´ ìžˆëŠ”ì§€ 없는지를 알립니다. ìœ ì§€ëœ ê°’ì´ ì—†ëŠ” 경우, ì´ í˜¸ì¶œì€ ê¸°ë³¸ ê°’ì„
제공합니다.</p>
-<p>{@link android.preference.Preference#onSetInitialValue onSetInitialValue()} 메서드는
-부울 ê°’ <code>restorePersistedValue</code>를 전달하여 해당 ì„¤ì •ì— ëŒ€í•´ ì´ë¯¸ ì–´ë–¤ ê°’ì´ ìœ ì§€ë˜ì—ˆëŠ”ì§€
-아닌지를 나타냅니다. ë§Œì¼ ì´ê²ƒì´ <code>true</code>ë¼ë©´, ìœ ì§€ëœ ê°’ì„ ê²€ìƒ‰í•˜ë˜
+<p>{@link android.preference.Preference#onSetInitialValue onSetInitialValue()} 메서드는
+부울 ê°’ <code>restorePersistedValue</code>를 전달하여 해당 ì„¤ì •ì— ëŒ€í•´ ì´ë¯¸ ì–´ë–¤ ê°’ì´ ìœ ì§€ë˜ì—ˆëŠ”ì§€
+아닌지를 나타냅니다. ë§Œì¼ ì´ê²ƒì´ <code>true</code>ë¼ë©´, ìœ ì§€ëœ ê°’ì„ ê²€ìƒ‰í•˜ë˜
{@link
android.preference.Preference} í´ëž˜ìŠ¤ì˜ {@code getPersisted*()} 메서드 중 하나를 호출하는 ë°©ë²•ì„ ì¨ì•¼ 합니다. 예를 들어 정수 ê°’ì´ë¼ë©´ {@link
-android.preference.Preference#getPersistedInt getPersistedInt()}를 사용합니다. 보통ì€
-ìœ ì§€ëœ ê°’ì„ ê²€ìƒ‰í•˜ì—¬, UIì— ì´ì „ì— ì €ìž¥ëœ ê°’ì„ ë°˜ì˜í•˜ì—¬ ì´ë¥¼ ì ì ˆí•˜ê²Œ ì—…ë°ì´íŠ¸í•  수
+android.preference.Preference#getPersistedInt getPersistedInt()}를 사용합니다. 보통ì€
+ìœ ì§€ëœ ê°’ì„ ê²€ìƒ‰í•˜ì—¬, UIì— ì´ì „ì— ì €ìž¥ëœ ê°’ì„ ë°˜ì˜í•˜ì—¬ ì´ë¥¼ ì ì ˆí•˜ê²Œ ì—…ë°ì´íŠ¸í•  수
있ë„ë¡ í•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.</p>
-<p><code>restorePersistedValue</code>ê°€ <code>false</code>ì¸ ê²½ìš°,
+<p><code>restorePersistedValue</code>ê°€ <code>false</code>ì¸ ê²½ìš°,
ë‘ ë²ˆì§¸ ì¸ìˆ˜ë¡œ ì „ë‹¬ëœ ê¸°ë³¸ ê°’ì„ ì‚¬ìš©í•´ì•¼ 합니다.</p>
<pre>
@@ -1059,22 +1059,22 @@ protected void onSetInitialValue(boolean restorePersistedValue, Object defaultVa
}
</pre>
-<p>ê° {@code getPersisted*()} 메서드는 기본 ê°’ì„ ë‚˜íƒ€ë‚´ëŠ” ì¸ìˆ˜ë¥¼ 취하여
-ì‚¬ì‹¤ì€ ìœ ì§€ëœ ê°’ì´ ì „í˜€ 없거나 키 ìžì²´ê°€ 존재하지 않는 경우 사용하ë„ë¡ í•©ë‹ˆë‹¤. 위ì˜
+<p>ê° {@code getPersisted*()} 메서드는 기본 ê°’ì„ ë‚˜íƒ€ë‚´ëŠ” ì¸ìˆ˜ë¥¼ 취하여
+ì‚¬ì‹¤ì€ ìœ ì§€ëœ ê°’ì´ ì „í˜€ 없거나 키 ìžì²´ê°€ 존재하지 않는 경우 사용하ë„ë¡ í•©ë‹ˆë‹¤. 위ì˜
예시ì—서는 혹시 {@link
android.preference.Preference#getPersistedInt getPersistedInt()}ê°€ ìœ ì§€ëœ ê°’ì„ ë°˜í™˜í•  수 없는 ê²½ìš°ì— ì‚¬ìš©í•˜ë„ë¡ ê¸°ë³¸ ê°’ì„ ë‚˜íƒ€ë‚´ëŠ” ë° ë¡œì»¬ ìƒìˆ˜ë¥¼ 사용하였습니다.</p>
-<p class="caution"><strong>주ì˜:</strong> {@code getPersisted*()} 메서드ì—서는
-<code>defaultValue</code>를 기본 값으로 사용하면 <strong>안 ë©ë‹ˆë‹¤</strong>. ì´ê²ƒì˜ ê°’ì€
+<p class="caution"><strong>주ì˜:</strong> {@code getPersisted*()} 메서드ì—서는
+<code>defaultValue</code>를 기본 값으로 사용하면 <strong>안 ë©ë‹ˆë‹¤</strong>. ì´ê²ƒì˜ ê°’ì€
<code>restorePersistedValue</code>ê°€ <code>true</code>ì´ë©´ í•­ìƒ nullì´ê¸° 때문입니다.</p>
<h3 id="CustomDefault">기본 값 제공하기</h3>
<p>{@link android.preference.Preference} í´ëž˜ìŠ¤ì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ 기본 ê°’ì„ ë‚˜íƒ€ë‚´ëŠ” 경우
-({@code android:defaultValue} ì†ì„±ìœ¼ë¡œ), 시스템ì€
+({@code android:defaultValue} ì†ì„±ìœ¼ë¡œ), 시스템ì€
ê°’ì„ ê²€ìƒ‰í•˜ê¸° 위해 ê°ì²´ë¥¼ ì¸ìŠ¤í„´íŠ¸í™”í•  때 {@link android.preference.Preference#onGetDefaultValue
-onGetDefaultValue()}를 호출합니다. ì´ ë©”ì„œë“œë¥¼ 구현해야
+onGetDefaultValue()}를 호출합니다. ì´ ë©”ì„œë“œë¥¼ 구현해야
ì‹œìŠ¤í…œì´ {@link
android.content.SharedPreferences}ì— ìžˆëŠ” 기본 ê°’ì„ ì €ìž¥í•  수 있습니다. 예:</p>
@@ -1085,9 +1085,9 @@ protected Object onGetDefaultValue(TypedArray a, int index) {
}
</pre>
-<p>ì´ ë©”ì„œë“œ ì¸ìˆ˜ê°€ 여러분ì—게 필요한 모든 ê²ƒì„ ì œê³µí•©ë‹ˆë‹¤. 즉 ì†ì„± ë°°ì—´ê³¼
-{@code android:defaultValue}ì˜ ìœ„ì¹˜ë¡œ, ì´ëŠ” 반드시 검색해야 합니다. ì´ ë©”ì„œë“œë¥¼
-반드시 구현하여 ì†ì„±ì—서 기본 ê°’ì„ ì¶”ì¶œí•´ì•¼ë§Œ 하는 ì´ìœ ëŠ” ê°’ì´ ì •ì˜ë˜ì§€ ì•Šì€ ê²½ìš°, ì†ì„±ì— 대한
+<p>ì´ ë©”ì„œë“œ ì¸ìˆ˜ê°€ 여러분ì—게 필요한 모든 ê²ƒì„ ì œê³µí•©ë‹ˆë‹¤. 즉 ì†ì„± ë°°ì—´ê³¼
+{@code android:defaultValue}ì˜ ìœ„ì¹˜ë¡œ, ì´ëŠ” 반드시 검색해야 합니다. ì´ ë©”ì„œë“œë¥¼
+반드시 구현하여 ì†ì„±ì—서 기본 ê°’ì„ ì¶”ì¶œí•´ì•¼ë§Œ 하는 ì´ìœ ëŠ” ê°’ì´ ì •ì˜ë˜ì§€ ì•Šì€ ê²½ìš°, ì†ì„±ì— 대한
로컬 기본 ê°’ì„ ê¼­ 지정해야 하기 때문입니다.</p>
@@ -1095,25 +1095,25 @@ protected Object onGetDefaultValue(TypedArray a, int index) {
<h3 id="CustomSaveState">기본 ì„¤ì •ì˜ ìƒíƒœ 저장 ë° ë³µì›í•˜ê¸°</h3>
<p>ë ˆì´ì•„웃ì—ì„œì˜ {@link android.view.View}와 마찬가지로 {@link android.preference.Preference}
-하위 í´ëž˜ìŠ¤ê°€ 액티비티 ë˜ëŠ” 프래그먼트가 ìž¬ì‹œìž‘í–ˆì„ ë•Œ
-ê·¸ ìƒíƒœë¥¼ 저장하고 ë³µì›í•˜ëŠ” ì—­í• ì„ ë§¡ìŠµë‹ˆë‹¤(예를 들어 사용ìžê°€ í™”ë©´ì„ ëŒë¦¬ëŠ” 경우 등).
-{@link android.preference.Preference} í´ëž˜ìŠ¤ì˜ ìƒíƒœë¥¼ ì ì ˆí•˜ê²Œ 저장하고 ë³µì›í•˜ë ¤ë©´,
+하위 í´ëž˜ìŠ¤ê°€ 액티비티 ë˜ëŠ” 프래그먼트가 ìž¬ì‹œìž‘í–ˆì„ ë•Œ
+ê·¸ ìƒíƒœë¥¼ 저장하고 ë³µì›í•˜ëŠ” ì—­í• ì„ ë§¡ìŠµë‹ˆë‹¤(예를 들어 사용ìžê°€ í™”ë©´ì„ ëŒë¦¬ëŠ” 경우 등).
+{@link android.preference.Preference} í´ëž˜ìŠ¤ì˜ ìƒíƒœë¥¼ ì ì ˆí•˜ê²Œ 저장하고 ë³µì›í•˜ë ¤ë©´,
수명 주기 콜백 메서드 {@link android.preference.Preference#onSaveInstanceState
onSaveInstanceState()} ë° {@link
android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()}를 구현해야 합니다.</p>
-<p>{@link android.preference.Preference}ì˜ ìƒíƒœë¥¼ ì •ì˜í•˜ëŠ” 것ì€
-{@link android.os.Parcelable} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하는 ê°ì²´ìž…니다. Android 프레임워í¬ëŠ”
+<p>{@link android.preference.Preference}ì˜ ìƒíƒœë¥¼ ì •ì˜í•˜ëŠ” 것ì€
+{@link android.os.Parcelable} ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하는 ê°ì²´ìž…니다. Android 프레임워í¬ëŠ”
그러한 ê°ì²´ë¥¼ 제공하여 ìƒíƒœ ê°ì²´ë¥¼ ì •ì˜í•˜ëŠ” ë° ì¼ì¢…ì˜ ì‹œìž‘ ì§€ì ìœ¼ë¡œ 사용하ë„ë¡ í•˜ê³  있습니다. 즉 {@link
android.preference.Preference.BaseSavedState} í´ëž˜ìŠ¤ê°€ ì´ì— 해당ë©ë‹ˆë‹¤.</p>
-<p>{@link android.preference.Preference} í´ëž˜ìŠ¤ê°€ ìžì‹ ì˜ ìƒíƒœë¥¼ 저장하는 ë°©ë²•ì„ ì •ì˜í•˜ë ¤ë©´
-{@link android.preference.Preference.BaseSavedState} í´ëž˜ìŠ¤ë¥¼ 확장해야 합니다. 아주 ì•½ê°„ì˜ ë©”ì„œë“œë¥¼ 재정ì˜í•˜ê³ 
+<p>{@link android.preference.Preference} í´ëž˜ìŠ¤ê°€ ìžì‹ ì˜ ìƒíƒœë¥¼ 저장하는 ë°©ë²•ì„ ì •ì˜í•˜ë ¤ë©´
+{@link android.preference.Preference.BaseSavedState} í´ëž˜ìŠ¤ë¥¼ 확장해야 합니다. 아주 ì•½ê°„ì˜ ë©”ì„œë“œë¥¼ 재정ì˜í•˜ê³ 
{@link android.preference.Preference.BaseSavedState#CREATOR}
ê°ì²´ë¥¼ ì •ì˜í•´ì•¼ 합니다.</p>
-<p>ëŒ€ë¶€ë¶„ì˜ ì•±ì—서는 다ìŒê³¼ ê°™ì€ êµ¬í˜„ì„ ë³µì‚¬í•œ 다ìŒ,
-{@code value}를 처리하는 줄만 변경하면 ë©ë‹ˆë‹¤. ì´ëŠ” {@link android.preference.Preference} 하위 í´ëž˜ìŠ¤ê°€ 정수보다는 ë°ì´í„°
+<p>ëŒ€ë¶€ë¶„ì˜ ì•±ì—서는 다ìŒê³¼ ê°™ì€ êµ¬í˜„ì„ ë³µì‚¬í•œ 다ìŒ,
+{@code value}를 처리하는 줄만 변경하면 ë©ë‹ˆë‹¤. ì´ëŠ” {@link android.preference.Preference} 하위 í´ëž˜ìŠ¤ê°€ 정수보다는 ë°ì´í„°
ìœ í˜•ì„ ì €ìž¥í•˜ëŠ” 경우 해당ë©ë‹ˆë‹¤.</p>
<pre>
@@ -1154,11 +1154,11 @@ private static class SavedState extends BaseSavedState {
}
</pre>
-<p>ìœ„ì˜ {@link android.preference.Preference.BaseSavedState} êµ¬í˜„ì„ ì•±ì—
-추가하고 나면(주로 {@link android.preference.Preference} 하위 í´ëž˜ìŠ¤ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¡œ), ì´ì œ
+<p>ìœ„ì˜ {@link android.preference.Preference.BaseSavedState} êµ¬í˜„ì„ ì•±ì—
+추가하고 나면(주로 {@link android.preference.Preference} 하위 í´ëž˜ìŠ¤ì˜ í•˜ìœ„ í´ëž˜ìŠ¤ë¡œ), ì´ì œ
{@link android.preference.Preference#onSaveInstanceState
onSaveInstanceState()} ë° {@link
-android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} 메서드를 구현해야 합니다. ì´ê²ƒì€
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} 메서드를 구현해야 합니다. ì´ê²ƒì€
{@link android.preference.Preference} 하위 í´ëž˜ìŠ¤ë¥¼ 위한 것입니다.</p>
<p>예:</p>
@@ -1194,7 +1194,7 @@ protected void onRestoreInstanceState(Parcelable state) {
// Cast state to custom BaseSavedState and pass to superclass
SavedState myState = (SavedState) state;
super.onRestoreInstanceState(myState.getSuperState());
-
+
// Set this Preference's widget to reflect the restored state
mNumberPicker.setValue(myState.value);
}
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/ko/guide/topics/ui/ui-events.jd
index b059bd24de48..427051c8ac24 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/ui-events.jd
@@ -16,67 +16,67 @@ parent.link=index.html
</div>
</div>
-<p>Androidì—는 사용ìžì™€ 애플리케ì´ì…˜ì˜ ìƒí˜¸ 작용으로부터 ì´ë²¤íŠ¸ë¥¼ 가로채는 ë°©ë²•ì´ ì—¬ëŸ¬ 가지 있습니다.
-ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ ë‚´ì˜ ì´ë²¤íŠ¸ê°€ ê´€ë ¨ëœ ê²½ìš°, ì´ëŸ¬í•œ ë°©ì‹ì€ ì´ë²¤íŠ¸ë¥¼ 사용ìžê°€ ìƒí˜¸ 작용하는
+<p>Androidì—는 사용ìžì™€ 애플리케ì´ì…˜ì˜ ìƒí˜¸ 작용으로부터 ì´ë²¤íŠ¸ë¥¼ 가로채는 ë°©ë²•ì´ ì—¬ëŸ¬ 가지 있습니다.
+ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ ë‚´ì˜ ì´ë²¤íŠ¸ê°€ ê´€ë ¨ëœ ê²½ìš°, ì´ëŸ¬í•œ ë°©ì‹ì€ ì´ë²¤íŠ¸ë¥¼ 사용ìžê°€ ìƒí˜¸ 작용하는
특정 보기 ê°ì²´ë¡œë¶€í„° 캡처하는 것입니다. ì´ì— 필요한 ìˆ˜ë‹¨ì€ ë³´ê¸° í´ëž˜ìŠ¤ê°€ 제공합니다.</p>
-<p>ë ˆì´ì•„ì›ƒì„ ìž‘ì„±í•˜ëŠ” ë° ì‚¬ìš©í•˜ê²Œ ë˜ëŠ” 여러 가지 보기 í´ëž˜ìФ ì•ˆì„ ë³´ë©´ UI ì´ë²¤íŠ¸ì— ìœ ìš©í•´ ë³´ì´ëŠ” 공개 콜백
-메서드가 여러 ê°œ 있는 ê²ƒì´ ëˆˆì— ë•니다. ì´ëŸ¬í•œ 메서드는 해당 ê°ì²´ì—서 ê°ê°ì˜ ìž‘ì—…ì´ ë°œìƒí•  때 Android 프레임워í¬ê°€
-호출하는 것입니다. 예를 들어 보기(예: 버튼)를 하나 터치하면
-해당 ê°ì²´ì—서 <code>onTouchEvent()</code> 메서드가 호출ë©ë‹ˆë‹¤. 그러나 ì´ê²ƒì„ 가로채려면 í´ëž˜ìŠ¤ë¥¼ 확장하고
-메서드를 재정ì˜í•´ì•¼ 합니다. 다만 그런 ì´ë²¤íŠ¸ë¥¼ 처리하기 위해 모든 보기 ê°ì²´ë¥¼
-다 확장하는 ê²ƒì€ íƒ€ë‹¹ì„±ì´ ì—†ìŠµë‹ˆë‹¤. ì´ ë•Œë¬¸ì— ë³´ê¸° í´ëž˜ìФì—
-ì¼ë ¨ì˜ ì¤‘ì²©ëœ ì¸í„°íŽ˜ì´ìŠ¤ê°€ 있고 ê±°ê¸°ì— í›¨ì”¬ 쉽게 ì •ì˜í•  수 있는 ì½œë°±ì— ìžˆìŠµë‹ˆë‹¤. ì´ì™€ ê°™ì€
+<p>ë ˆì´ì•„ì›ƒì„ ìž‘ì„±í•˜ëŠ” ë° ì‚¬ìš©í•˜ê²Œ ë˜ëŠ” 여러 가지 보기 í´ëž˜ìФ ì•ˆì„ ë³´ë©´ UI ì´ë²¤íŠ¸ì— ìœ ìš©í•´ ë³´ì´ëŠ” 공개 콜백
+메서드가 여러 ê°œ 있는 ê²ƒì´ ëˆˆì— ë•니다. ì´ëŸ¬í•œ 메서드는 해당 ê°ì²´ì—서 ê°ê°ì˜ ìž‘ì—…ì´ ë°œìƒí•  때 Android 프레임워í¬ê°€
+호출하는 것입니다. 예를 들어 보기(예: 버튼)를 하나 터치하면
+해당 ê°ì²´ì—서 <code>onTouchEvent()</code> 메서드가 호출ë©ë‹ˆë‹¤. 그러나 ì´ê²ƒì„ 가로채려면 í´ëž˜ìŠ¤ë¥¼ 확장하고
+메서드를 재정ì˜í•´ì•¼ 합니다. 다만 그런 ì´ë²¤íŠ¸ë¥¼ 처리하기 위해 모든 보기 ê°ì²´ë¥¼
+다 확장하는 ê²ƒì€ íƒ€ë‹¹ì„±ì´ ì—†ìŠµë‹ˆë‹¤. ì´ ë•Œë¬¸ì— ë³´ê¸° í´ëž˜ìФì—
+ì¼ë ¨ì˜ ì¤‘ì²©ëœ ì¸í„°íŽ˜ì´ìŠ¤ê°€ 있고 ê±°ê¸°ì— í›¨ì”¬ 쉽게 ì •ì˜í•  수 있는 ì½œë°±ì— ìžˆìŠµë‹ˆë‹¤. ì´ì™€ ê°™ì€
ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì¼ëª… <a href="#EventListeners">ì´ë²¤íЏ 수신기</a>ë¼ê³  하는ë°, ì´ê²ƒì´ UI와 ì‚¬ìš©ìž ìƒí˜¸ ìž‘ìš©ì„ ìº¡ì²˜í•˜ëŠ” ë° ì•„ì£¼ ì í•©í•©ë‹ˆë‹¤.</p>
-<p>ì‚¬ìš©ìž ìƒí˜¸ ìž‘ìš©ì„ ìˆ˜ì‹  대기하는 ë°ì—는 ì´ë²¤íЏ 수신기를 사용하는 ê²ƒì´ ì¢€ ë” ë³´íŽ¸ì ì´ì§€ë§Œ, ì‚¬ìš©ìž ì§€ì •
-구성 요소를 구축하기 위해 보기 í´ëž˜ìŠ¤ë¥¼ í™•ìž¥í•˜ê³ ìž í•˜ëŠ” ìƒí™©ì´ 올 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
+<p>ì‚¬ìš©ìž ìƒí˜¸ ìž‘ìš©ì„ ìˆ˜ì‹  대기하는 ë°ì—는 ì´ë²¤íЏ 수신기를 사용하는 ê²ƒì´ ì¢€ ë” ë³´íŽ¸ì ì´ì§€ë§Œ, ì‚¬ìš©ìž ì§€ì •
+구성 요소를 구축하기 위해 보기 í´ëž˜ìŠ¤ë¥¼ í™•ìž¥í•˜ê³ ìž í•˜ëŠ” ìƒí™©ì´ 올 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
어쩌면 {@link android.widget.Button}
-í´ëž˜ìŠ¤ë¥¼ 확장하여 무언가 ë” ë³µìž¡í•œ ê²ƒì„ ë§Œë“¤ê³ ìž í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ëŸ° 경우, í´ëž˜ìŠ¤ì— ëŒ€í•œ 기본 ì´ë²¤íЏ í–‰ë™ì„ í´ëž˜ìФ
+í´ëž˜ìŠ¤ë¥¼ 확장하여 무언가 ë” ë³µìž¡í•œ ê²ƒì„ ë§Œë“¤ê³ ìž í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ëŸ° 경우, í´ëž˜ìŠ¤ì— ëŒ€í•œ 기본 ì´ë²¤íЏ í–‰ë™ì„ í´ëž˜ìФ
<a href="#EventHandlers">ì´ë²¤íЏ 처리기</a>를 사용하여 ì •ì˜í•  수 있습니다.</p>
<h2 id="EventListeners">ì´ë²¤íЏ 수신기</h2>
-<p>ì´ë²¤íЏ 수신기란 {@link android.view.View} í´ëž˜ìФ ë‚´ì— ìžˆëŠ” ì¼ì¢…ì˜ ì¸í„°íŽ˜ì´ìŠ¤ë¡œ, ì´ ì•ˆì— í•˜ë‚˜ì˜
-콜백 메서드가 들어있습니다. ì´ëŸ¬í•œ 메서드는 수신기가 등ë¡ëœ 보기가 UI ì•ˆì˜ í•­ëª©ê³¼ 사용ìžì˜ ìƒí˜¸ 작용으로 ì¸í•˜ì—¬ 트리거ë˜ì—ˆì„ 때
+<p>ì´ë²¤íЏ 수신기란 {@link android.view.View} í´ëž˜ìФ ë‚´ì— ìžˆëŠ” ì¼ì¢…ì˜ ì¸í„°íŽ˜ì´ìŠ¤ë¡œ, ì´ ì•ˆì— í•˜ë‚˜ì˜
+콜백 메서드가 들어있습니다. ì´ëŸ¬í•œ 메서드는 수신기가 등ë¡ëœ 보기가 UI ì•ˆì˜ í•­ëª©ê³¼ 사용ìžì˜ ìƒí˜¸ 작용으로 ì¸í•˜ì—¬ 트리거ë˜ì—ˆì„ 때
Android 프레임워í¬ê°€ 호출하는 것입니다.</p>
<p>ì´ë²¤íЏ 수신기 ì¸í„°íŽ˜ì´ìŠ¤ì— í¬í•¨ëœ 콜백 메서드는 다ìŒê³¼ 같습니다.</p>
<dl>
<dt><code>onClick()</code></dt>
- <dd>{@link android.view.View.OnClickListener}ì—서 온 것입니다.
+ <dd>{@link android.view.View.OnClickListener}ì—서 온 것입니다.
ì´ê²ƒì´ 호출ë˜ëŠ” ê²ƒì€ ì‚¬ìš©ìžê°€ í•­ëª©ì„ í„°ì¹˜í•˜ê±°ë‚˜
-(터치 ëª¨ë“œì— ìžˆì„ ë•Œ), íƒìƒ‰ 키 ë˜ëŠ” íŠ¸ëž™ë³¼ì„ ì‚¬ìš©í•˜ì—¬ 해당 í•­ëª©ì— ì´ˆì ì„ 맞추고 있으면서
+(터치 ëª¨ë“œì— ìžˆì„ ë•Œ), íƒìƒ‰ 키 ë˜ëŠ” íŠ¸ëž™ë³¼ì„ ì‚¬ìš©í•˜ì—¬ 해당 í•­ëª©ì— ì´ˆì ì„ 맞추고 있으면서
ì ì ˆí•œ "엔터" 키를 누르거나 íŠ¸ëž™ë³¼ì„ ê¾¹ 누를 때입니다.</dd>
<dt><code>onLongClick()</code></dt>
- <dd>{@link android.view.View.OnLongClickListener}ì—서 온 것입니다.
-ì´ê²ƒì´ 호출ë˜ëŠ” ê²ƒì€ ì‚¬ìš©ìžê°€ í•­ëª©ì„ ê¸¸ê²Œ 누르거나(터치 ëª¨ë“œì— ìžˆì„ ë•Œ),
-íƒìƒ‰ 키 ë˜ëŠ” íŠ¸ëž™ë³¼ì„ ì‚¬ìš©í•˜ì—¬ 해당 í•­ëª©ì— ì´ˆì ì„ 맞추고 있으면서
+ <dd>{@link android.view.View.OnLongClickListener}ì—서 온 것입니다.
+ì´ê²ƒì´ 호출ë˜ëŠ” ê²ƒì€ ì‚¬ìš©ìžê°€ í•­ëª©ì„ ê¸¸ê²Œ 누르거나(터치 ëª¨ë“œì— ìžˆì„ ë•Œ),
+íƒìƒ‰ 키 ë˜ëŠ” íŠ¸ëž™ë³¼ì„ ì‚¬ìš©í•˜ì—¬ 해당 í•­ëª©ì— ì´ˆì ì„ 맞추고 있으면서
ì ì ˆí•œ "엔터" 키를 누르거나 íŠ¸ëž™ë³¼ì„ ê¾¹ 누를 때입니다(ì¼ ì´ˆê°„).</dd>
<dt><code>onFocusChange()</code></dt>
- <dd>{@link android.view.View.OnFocusChangeListener}ì—서 온 것입니다.
+ <dd>{@link android.view.View.OnFocusChangeListener}ì—서 온 것입니다.
ì´ê²ƒì´ 호출ë˜ëŠ” ê²ƒì€ ì‚¬ìš©ìžê°€ íƒìƒ‰ 키 ë˜ëŠ” íŠ¸ëž™ë³¼ì„ ì‚¬ìš©í•˜ì—¬ 항목 쪽으로 ì´ë™í•˜ê±°ë‚˜ 항목ì—서 멀어질 때입니다.</dd>
<dt><code>onKey()</code></dt>
- <dd>{@link android.view.View.OnKeyListener}ì—서 온 것입니다.
+ <dd>{@link android.view.View.OnKeyListener}ì—서 온 것입니다.
ì´ê²ƒì´ 호출ë˜ëŠ” ê²ƒì€ ì‚¬ìš©ìžê°€ í•­ëª©ì— ì´ˆì ì„ 맞추고 있으면서 ê¸°ê¸°ì— ìžˆëŠ” 하드웨어 키를 누르거나 키ì—서 ì†ì„ 떼는 경우입니다.</dd>
<dt><code>onTouch()</code></dt>
- <dd>{@link android.view.View.OnTouchListener}ì—서 온 것입니다.
-ì´ê²ƒì´ 호출ë˜ëŠ” ê²ƒì€ ì‚¬ìš©ìžê°€ 터치 ì´ë²¤íŠ¸ë¡œì„œì˜ ìžê²©ì„ 만족하는 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 경우로, 여기ì—
+ <dd>{@link android.view.View.OnTouchListener}ì—서 온 것입니다.
+ì´ê²ƒì´ 호출ë˜ëŠ” ê²ƒì€ ì‚¬ìš©ìžê°€ 터치 ì´ë²¤íŠ¸ë¡œì„œì˜ ìžê²©ì„ 만족하는 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ” 경우로, 여기ì—
누르기, ì† ë–¼ê¸°ì™€ 화면ì—서 ì´ë£¨ì–´ì§€ëŠ” 모든 움ì§ìž„ ë™ìž‘(í•­ëª©ì˜ ê²½ê³„ ë‚´ì—서)ì´ í¬í•¨ë©ë‹ˆë‹¤.</dd>
<dt><code>onCreateContextMenu()</code></dt>
- <dd>{@link android.view.View.OnCreateContextMenuListener}ì—서 온 것입니다.
-ì´ê²ƒì„ 호출하는 ê²ƒì€ ì»¨í…스트 메뉴가 구축ë˜ëŠ” ì¤‘ì¼ ë•Œìž…ë‹ˆë‹¤(ì •ì²´ëœ "롱 í´ë¦­"ì˜ ê²°ê³¼ë¡œ).
+ <dd>{@link android.view.View.OnCreateContextMenuListener}ì—서 온 것입니다.
+ì´ê²ƒì„ 호출하는 ê²ƒì€ ì»¨í…스트 메뉴가 구축ë˜ëŠ” ì¤‘ì¼ ë•Œìž…ë‹ˆë‹¤(ì •ì²´ëœ "롱 í´ë¦­"ì˜ ê²°ê³¼ë¡œ).
<a href="{@docRoot}guide/topics/ui/menus.html#context-menu">메뉴</a>
ê°œë°œìž ê°€ì´ë“œì— 있는 컨í…스트 메뉴 관련 ë…¼ì˜ë¥¼ 참조하십시오.</dd>
</dl>
-<p>ì´ëŸ¬í•œ 메서드는 ê°ìžì˜ ì¸í„°íŽ˜ì´ìФ ì•ˆì— ê±°ì£¼í•˜ëŠ” 유ì¼í•œ 주민입니다. ì´ëŸ¬í•œ 메서드 중 하나를
-ì •ì˜í•˜ê³  ì´ë²¤íŠ¸ë¥¼ 처리하려면 액티비티 ë‚´ì˜ ì¤‘ì²©ëœ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하거나 ìµëª…ì˜ í´ëž˜ìŠ¤ë¡œ ì •ì˜í•˜ë©´ ë©ë‹ˆë‹¤.
-그런 ë‹¤ìŒ êµ¬í˜„ì˜ ì¸ìŠ¤í„´ìŠ¤ 하나를
-ê°ê°ì˜ <code>View.set...Listener()</code> ë©”ì„œë“œì— ì „ë‹¬í•˜ì‹­ì‹œì˜¤ (예:
-<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>를
+<p>ì´ëŸ¬í•œ 메서드는 ê°ìžì˜ ì¸í„°íŽ˜ì´ìФ ì•ˆì— ê±°ì£¼í•˜ëŠ” 유ì¼í•œ 주민입니다. ì´ëŸ¬í•œ 메서드 중 하나를
+ì •ì˜í•˜ê³  ì´ë²¤íŠ¸ë¥¼ 처리하려면 액티비티 ë‚´ì˜ ì¤‘ì²©ëœ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 구현하거나 ìµëª…ì˜ í´ëž˜ìŠ¤ë¡œ ì •ì˜í•˜ë©´ ë©ë‹ˆë‹¤.
+그런 ë‹¤ìŒ êµ¬í˜„ì˜ ì¸ìŠ¤í„´ìŠ¤ 하나를
+ê°ê°ì˜ <code>View.set...Listener()</code> ë©”ì„œë“œì— ì „ë‹¬í•˜ì‹­ì‹œì˜¤ (예:
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>를
호출한 ë‹¤ìŒ ì´ë¥¼ {@link android.view.View.OnClickListener OnClickListener}ì˜ êµ¬í˜„ì— ì „ë‹¬í•©ë‹ˆë‹¤).</p>
<p>ì•„ëž˜ì˜ ì˜ˆì‹œëŠ” ë²„íŠ¼ì— ëŒ€í•˜ì—¬ 온-í´ë¦­ 수신기를 등ë¡í•˜ëŠ” ë°©ë²•ì„ ë‚˜íƒ€ë‚¸ 것입니다. </p>
@@ -117,57 +117,57 @@ public class ExampleActivity extends Activity implements OnClickListener {
}
</pre>
-<p>ìœ„ì˜ ì˜ˆì‹œì—서 <code>onClick()</code> 콜백ì—는
-반환 ê°’ì´ ì—†ì§€ë§Œ 다른 ì´ë²¤íЏ 수신기 메서드 중ì—는 부울 ê°’ì„ ë°˜í™˜í•´ì•¼ë§Œ 하는 ê²ƒë„ ìžˆë‹¤ëŠ” ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. ê·¸ ì´ìœ ëŠ” ì´ë²¤íŠ¸ì— ë”°ë¼
+<p>ìœ„ì˜ ì˜ˆì‹œì—서 <code>onClick()</code> 콜백ì—는
+반환 ê°’ì´ ì—†ì§€ë§Œ 다른 ì´ë²¤íЏ 수신기 메서드 중ì—는 부울 ê°’ì„ ë°˜í™˜í•´ì•¼ë§Œ 하는 ê²ƒë„ ìžˆë‹¤ëŠ” ì ì„ 유ì˜í•˜ì‹­ì‹œì˜¤. ê·¸ ì´ìœ ëŠ” ì´ë²¤íŠ¸ì— ë”°ë¼
다릅니다. ì´ëŸ° 필수 ì‚¬í•­ì´ ì ìš©ë˜ëŠ” 몇몇 ë©”ì„œë“œì˜ ê²½ìš°, ì´ìœ ëŠ” 다ìŒê³¼ 같습니다.</p>
<ul>
- <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> -
-ì´ê²ƒì€ 부울 ê°’ì„ ë°˜í™˜í•˜ì—¬ ì´ë²¤íŠ¸ë¥¼ 완전히 사용하였으며 ë” ì´ìƒ ì´ë¥¼ ë‹´ì§€ ì•Šì•„ë„ ë˜ëŠ”ì§€ 여부를 나타냅니다.
-다시 ë§í•´, <em>ì°¸</em>ì„ ë°˜í™˜í•˜ë©´ ì´ë²¤íŠ¸ë¥¼ 처리했으며 여기ì—서 중단해야 한다는 ê²ƒì„ ì˜ë¯¸í•˜ë©°
-<em>ê±°ì§“</em>ì„ ë°˜í™˜í•˜ë©´ ì´ë²¤íŠ¸ê°€ ì•„ì§ ë¯¸ì²˜ë¦¬ ìƒíƒœì´ë©°/거나 ì´ ì´ë²¤íŠ¸ë¥¼ 다른
+ <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> -
+ì´ê²ƒì€ 부울 ê°’ì„ ë°˜í™˜í•˜ì—¬ ì´ë²¤íŠ¸ë¥¼ 완전히 사용하였으며 ë” ì´ìƒ ì´ë¥¼ ë‹´ì§€ ì•Šì•„ë„ ë˜ëŠ”ì§€ 여부를 나타냅니다.
+다시 ë§í•´, <em>ì°¸</em>ì„ ë°˜í™˜í•˜ë©´ ì´ë²¤íŠ¸ë¥¼ 처리했으며 여기ì—서 중단해야 한다는 ê²ƒì„ ì˜ë¯¸í•˜ë©°
+<em>ê±°ì§“</em>ì„ ë°˜í™˜í•˜ë©´ ì´ë²¤íŠ¸ê°€ ì•„ì§ ë¯¸ì²˜ë¦¬ ìƒíƒœì´ë©°/거나 ì´ ì´ë²¤íŠ¸ë¥¼ 다른
온-í´ë¦­ 수신기로 ê³„ì† ì§„í–‰í•´ì•¼ í• ì§€ 나타내는 것입니다.</li>
- <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> -
+ <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> -
ì´ê²ƒì€ 부울 ê°’ì„ ë°˜í™˜í•˜ì—¬ ì´ë²¤íŠ¸ë¥¼ 완전히 사용하였으며 ë” ì´ìƒ ì´ë¥¼ ë‹´ì§€ ì•Šì•„ë„ ë˜ëŠ”ì§€ 여부를 나타냅니다.
- 다시 ë§í•´, <em>ì°¸</em>ì„ ë°˜í™˜í•˜ë©´ ì´ë²¤íŠ¸ë¥¼ 처리했으며 여기ì—서 중단해야 한다는 ê²ƒì„ ì˜ë¯¸í•˜ë©°
-<em>ê±°ì§“</em>ì„ ë°˜í™˜í•˜ë©´ ì´ë²¤íŠ¸ê°€ ì•„ì§ ë¯¸ì²˜ë¦¬ ìƒíƒœì´ë©°/거나 ì´ ì´ë²¤íŠ¸ë¥¼ 다른
+ 다시 ë§í•´, <em>ì°¸</em>ì„ ë°˜í™˜í•˜ë©´ ì´ë²¤íŠ¸ë¥¼ 처리했으며 여기ì—서 중단해야 한다는 ê²ƒì„ ì˜ë¯¸í•˜ë©°
+<em>ê±°ì§“</em>ì„ ë°˜í™˜í•˜ë©´ ì´ë²¤íŠ¸ê°€ ì•„ì§ ë¯¸ì²˜ë¦¬ ìƒíƒœì´ë©°/거나 ì´ ì´ë²¤íŠ¸ë¥¼ 다른
온-키 수신기로 ê³„ì† ì§„í–‰í•´ì•¼ í• ì§€ 나타내는 것입니다.</li>
- <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> -
-ì´ê²ƒì€ 부울 ê°’ì„ ë°˜í™˜í•˜ì—¬ 수신기가 ì´ ì´ë²¤íŠ¸ë¥¼ 사용하는지 아닌지를 나타냅니다. 여기서 중요한 ì ì€
-ì´ ì´ë²¤íЏì—는 서로 연달아 ë°œìƒí•˜ëŠ” 여러 ê°œì˜ ìž‘ì—…ì´ ìžˆì„ ìˆ˜ 있다는 것입니다. 그러므로 '아래로' 작업 ì´ë²¤íŠ¸ë¥¼ ìˆ˜ì‹ í–ˆì„ ë•Œ <em>ê±°ì§“</em>ì„ ë°˜í™˜í•˜ë©´,
-해당 ì´ë²¤íŠ¸ë¥¼ 사용하지 않았으며 ì´ ì´ë²¤íŠ¸ë¡œë¶€í„° ì´ì–´ì§€ëŠ” ì´í›„ì˜ ìž‘ì—…ì—
-í¥ë¯¸ê°€ ì—†ìŒì„ 나타내는 ê²ƒì´ ë©ë‹ˆë‹¤. ë”°ë¼ì„œ ì´ ì´ë²¤íЏ ë‚´ì˜ ë‹¤ë¥¸ 모든 ìž‘ì—…ì— ëŒ€í•´
+ <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> -
+ì´ê²ƒì€ 부울 ê°’ì„ ë°˜í™˜í•˜ì—¬ 수신기가 ì´ ì´ë²¤íŠ¸ë¥¼ 사용하는지 아닌지를 나타냅니다. 여기서 중요한 ì ì€
+ì´ ì´ë²¤íЏì—는 서로 연달아 ë°œìƒí•˜ëŠ” 여러 ê°œì˜ ìž‘ì—…ì´ ìžˆì„ ìˆ˜ 있다는 것입니다. 그러므로 '아래로' 작업 ì´ë²¤íŠ¸ë¥¼ ìˆ˜ì‹ í–ˆì„ ë•Œ <em>ê±°ì§“</em>ì„ ë°˜í™˜í•˜ë©´,
+해당 ì´ë²¤íŠ¸ë¥¼ 사용하지 않았으며 ì´ ì´ë²¤íŠ¸ë¡œë¶€í„° ì´ì–´ì§€ëŠ” ì´í›„ì˜ ìž‘ì—…ì—
+í¥ë¯¸ê°€ ì—†ìŒì„ 나타내는 ê²ƒì´ ë©ë‹ˆë‹¤. ë”°ë¼ì„œ ì´ ì´ë²¤íЏ ë‚´ì˜ ë‹¤ë¥¸ 모든 ìž‘ì—…ì— ëŒ€í•´
호출ë˜ì§€ 않습니다(예: ì†ê°€ë½ ë™ìž‘ ë˜ëŠ” 최종ì ì¸ '위로' 작업 ì´ë²¤íЏ 등).</li>
</ul>
-<p>하드웨어 키 ì´ë²¤íŠ¸ëŠ” í•­ìƒ í˜„ìž¬ ì´ˆì ì˜ ì¤‘ì‹¬ì— ìžˆëŠ” 보기로 전달ëœë‹¤ëŠ” ì ì„ 명심하십시오. ì´ë“¤ì€ 보기 ê³„ì¸µì˜ ë§¨ 위ì—서 시작하여
-아래 방향으로 발송ë˜ì–´ ì ì ˆí•œ 목ì ì§€ì— ë„달할 때까지 계ì†í•©ë‹ˆë‹¤. 보기(ë˜ëŠ” ë³´ê¸°ì˜ í•˜ìœ„)ì—
+<p>하드웨어 키 ì´ë²¤íŠ¸ëŠ” í•­ìƒ í˜„ìž¬ ì´ˆì ì˜ ì¤‘ì‹¬ì— ìžˆëŠ” 보기로 전달ëœë‹¤ëŠ” ì ì„ 명심하십시오. ì´ë“¤ì€ 보기 ê³„ì¸µì˜ ë§¨ 위ì—서 시작하여
+아래 방향으로 발송ë˜ì–´ ì ì ˆí•œ 목ì ì§€ì— ë„달할 때까지 계ì†í•©ë‹ˆë‹¤. 보기(ë˜ëŠ” ë³´ê¸°ì˜ í•˜ìœ„)ì—
현재 ì´ˆì ì´ ë§žì¶°ì ¸ 있으면, ì´ë²¤íŠ¸ê°€ <code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
-dispatchKeyEvent()}</code> 메서드를 통과하여 ì´ë™í•˜ëŠ” ê²ƒì„ í™•ì¸í•  수 있습니다. 보기를 통해 키 ì´ë²¤íŠ¸ë¥¼ 캡처하는 대신, 액티비티 ë‚´ë¶€ì˜ ëª¨ë“  ì´ë²¤íŠ¸ë¥¼ <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>ë°
+dispatchKeyEvent()}</code> 메서드를 통과하여 ì´ë™í•˜ëŠ” ê²ƒì„ í™•ì¸í•  수 있습니다. 보기를 통해 키 ì´ë²¤íŠ¸ë¥¼ 캡처하는 대신, 액티비티 ë‚´ë¶€ì˜ ëª¨ë“  ì´ë²¤íŠ¸ë¥¼ <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>ë°
<code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code>ì„ ì‚¬ìš©í•˜ì—¬ 수신할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
-<p>ë˜í•œ, 애플리케ì´ì…˜ì— 대한 í…스트 ìž…ë ¥ì˜ ê²½ìš° ëŒ€ë‹¤ìˆ˜ì˜ ê¸°ê¸°ì—는 소프트웨어 ìž…ë ¥ 메서드만 있다는 사실ì„
-명심하십시오. 그러한 메서드는 반드시 키 ê¸°ë°˜ì´ ì•„ë‹ˆì–´ë„ ë©ë‹ˆë‹¤. ìŒì„± ìž…ë ¥, ì†ê¸€ì”¨ ë“±ì„ ì‚¬ìš©í•˜ëŠ” ê²ƒë„ ìžˆìŠµë‹ˆë‹¤. ìž…ë ¥
-메서드가 키보드 ê°™ì€ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 표시하ë”ë¼ë„ ì¼ë°˜ì ìœ¼ë¡œ
-<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code> ì´ë²¤íŠ¸êµ°ì„ íŠ¸ë¦¬ê±°í•˜ì§€ëŠ” <strong>않습니다</strong>. 특정 키 누름ì„
-제어해야만 하는 UI는 절대 구축하면 안 ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 애플리케ì´ì…˜ì´ 하드웨어 키보드가 있는
-기기ì—ë§Œ 한정ë©ë‹ˆë‹¤. 특히, 사용ìžê°€ 리턴 키를 누르면 ìž…ë ¥ì˜ ìœ íš¨ì„±ì„ ê²€ì‚¬í•˜ëŠ” ë° ì´ì™€ ê°™ì€ ë©”ì„œë“œì—
-ì˜ì¡´í•´ì„œëŠ” 안 ë©ë‹ˆë‹¤. 대신, {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}ê³¼ ê°™ì€ ìž‘ì—…ì„ ì‚¬ìš©í•˜ì—¬ 애플리케ì´ì…˜ì´ ë°˜ì‘í•  것으로 기대ë˜ëŠ” ë°©ì‹ì— 해당ë˜ëŠ”
-ìž…ë ¥ 메서드를 신호하여 ì˜ë¯¸ 있는 ë°©ì‹ìœ¼ë¡œ UI를 변경할 수 있게 하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 소프트웨어 ìž…ë ¥ 메서드가
+<p>ë˜í•œ, 애플리케ì´ì…˜ì— 대한 í…스트 ìž…ë ¥ì˜ ê²½ìš° ëŒ€ë‹¤ìˆ˜ì˜ ê¸°ê¸°ì—는 소프트웨어 ìž…ë ¥ 메서드만 있다는 사실ì„
+명심하십시오. 그러한 메서드는 반드시 키 ê¸°ë°˜ì´ ì•„ë‹ˆì–´ë„ ë©ë‹ˆë‹¤. ìŒì„± ìž…ë ¥, ì†ê¸€ì”¨ ë“±ì„ ì‚¬ìš©í•˜ëŠ” ê²ƒë„ ìžˆìŠµë‹ˆë‹¤. ìž…ë ¥
+메서드가 키보드 ê°™ì€ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 표시하ë”ë¼ë„ ì¼ë°˜ì ìœ¼ë¡œ
+<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code> ì´ë²¤íŠ¸êµ°ì„ íŠ¸ë¦¬ê±°í•˜ì§€ëŠ” <strong>않습니다</strong>. 특정 키 누름ì„
+제어해야만 하는 UI는 절대 구축하면 안 ë©ë‹ˆë‹¤. ì´ë ‡ê²Œ 하면 애플리케ì´ì…˜ì´ 하드웨어 키보드가 있는
+기기ì—ë§Œ 한정ë©ë‹ˆë‹¤. 특히, 사용ìžê°€ 리턴 키를 누르면 ìž…ë ¥ì˜ ìœ íš¨ì„±ì„ ê²€ì‚¬í•˜ëŠ” ë° ì´ì™€ ê°™ì€ ë©”ì„œë“œì—
+ì˜ì¡´í•´ì„œëŠ” 안 ë©ë‹ˆë‹¤. 대신, {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}ê³¼ ê°™ì€ ìž‘ì—…ì„ ì‚¬ìš©í•˜ì—¬ 애플리케ì´ì…˜ì´ ë°˜ì‘í•  것으로 기대ë˜ëŠ” ë°©ì‹ì— 해당ë˜ëŠ”
+ìž…ë ¥ 메서드를 신호하여 ì˜ë¯¸ 있는 ë°©ì‹ìœ¼ë¡œ UI를 변경할 수 있게 하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 소프트웨어 ìž…ë ¥ 메서드가
어떻게 ìž‘ë™í• ì§€ ìž„ì˜ë¡œ 추정하지 마시고, ì´ë¯¸ ì„œì‹ ì§€ì •ëœ í…스트를 애플리케ì´ì…˜ì— 제공해줄 것ì´ë¼ 믿으면 ë©ë‹ˆë‹¤.</p>
-<p class="note"><strong>참고:</strong> Androids는 ìš°ì„  ì´ë²¤íЏ 처리기부터 호출하고, ê·¸ 다ìŒì— í´ëž˜ìФ ì •ì˜ë¡œë¶€í„° 가져온
-ì ì ˆí•œ 기본 처리기를 ë‘ ë²ˆì§¸ë¡œ 호출합니다. ë”°ë¼ì„œ, ì´ì™€ ê°™ì€ ì´ë²¤íЏ 수신기ì—서 <em>ì°¸</em>ì„ ë°˜í™˜í•˜ë©´ ì´ë²¤íŠ¸ê°€
-다른 ì´ë²¤íЏ 수신기로 전파ë˜ëŠ” ê²ƒì„ ì¤‘ì§€ì‹œí‚¬ ë¿ë§Œ ì•„ë‹ˆë¼ ë³´ê¸°ì— ìžˆëŠ”
+<p class="note"><strong>참고:</strong> Androids는 ìš°ì„  ì´ë²¤íЏ 처리기부터 호출하고, ê·¸ 다ìŒì— í´ëž˜ìФ ì •ì˜ë¡œë¶€í„° 가져온
+ì ì ˆí•œ 기본 처리기를 ë‘ ë²ˆì§¸ë¡œ 호출합니다. ë”°ë¼ì„œ, ì´ì™€ ê°™ì€ ì´ë²¤íЏ 수신기ì—서 <em>ì°¸</em>ì„ ë°˜í™˜í•˜ë©´ ì´ë²¤íŠ¸ê°€
+다른 ì´ë²¤íЏ 수신기로 전파ë˜ëŠ” ê²ƒì„ ì¤‘ì§€ì‹œí‚¬ ë¿ë§Œ ì•„ë‹ˆë¼ ë³´ê¸°ì— ìžˆëŠ”
기본 ì´ë²¤íЏ ì²˜ë¦¬ê¸°ë¡œì˜ ì½œë°±ë„ ì°¨ë‹¨í•˜ê²Œ ë©ë‹ˆë‹¤. ë”°ë¼ì„œ <em>ì°¸</em>ì„ ë°˜í™˜í•˜ëŠ” 경우 해당 ì´ë²¤íŠ¸ë¥¼ 종료하고 ì‹¶ì€ ê²ƒì¸ì§€ 확신해야 합니다.</p>
<h2 id="EventHandlers">ì´ë²¤íЏ 처리기</h2>
-<p>보기ì—서 ì‚¬ìš©ìž ì§€ì • 구성 요소를 구축하는 경우, 기본 ì´ë²¤íЏ 처리기로 ì‚¬ìš©ë  ì½œë°± 메서드를
+<p>보기ì—서 ì‚¬ìš©ìž ì§€ì • 구성 요소를 구축하는 경우, 기본 ì´ë²¤íЏ 처리기로 ì‚¬ìš©ë  ì½œë°± 메서드를
여러 ê°œ ì •ì˜í•  수 있게 ë©ë‹ˆë‹¤.
<a href="{@docRoot}guide/topics/ui/custom-components.html">ì‚¬ìš©ìž ì§€ì •
-구성 요소</a>ì— ëŒ€í•œ 문서를 ë³´ë©´ ì´ë²¤íЏ ì²˜ë¦¬ì— ì‚¬ìš©ë˜ëŠ” 몇 가지 보편ì ì¸ ì½œë°±ì„ í™•ì¸í•  수 있습니다.
+구성 요소</a>ì— ëŒ€í•œ 문서를 ë³´ë©´ ì´ë²¤íЏ ì²˜ë¦¬ì— ì‚¬ìš©ë˜ëŠ” 몇 가지 보편ì ì¸ ì½œë°±ì„ í™•ì¸í•  수 있습니다.
다ìŒì€ ê·¸ 몇 가지 예입니다.</p>
<ul>
<li><code>{@link android.view.View#onKeyDown}</code> - 새로운 키 ì´ë²¤íŠ¸ê°€ ë°œìƒí•˜ë©´ 호출합니다.</li>
@@ -176,68 +176,68 @@ dispatchKeyEvent()}</code> 메서드를 통과하여 ì´ë™í•˜ëŠ” ê²ƒì„ í™•ì¸í
<li><code>{@link android.view.View#onTouchEvent}</code> - 터치 스í¬ë¦° ë™ìž‘ ì´ë²¤íŠ¸ê°€ ë°œìƒí•˜ë©´ 호출합니다.</li>
<li><code>{@link android.view.View#onFocusChanged}</code> - 보기가 ì´ˆì ì„ 취하거나 ì´ë¥¼ 잃으면 호출합니다.</li>
</ul>
-<p>ê°œë°œìž ì—¬ëŸ¬ë¶„ì´ ì•Œì•„ë‘어야 하는 다른 메서드가 몇 가지 ë” ìžˆìŠµë‹ˆë‹¤. ì´ë“¤ì€ 보기 í´ëž˜ìŠ¤ì˜ ì¼ë¶€ë¶„ì´ ì•„ë‹ˆì§€ë§Œ,
-ì´ë²¤íŠ¸ë¥¼ 처리할 수 있는 ë°©ì‹ì— ì§ì ‘ì ìœ¼ë¡œ ì˜í–¥ì„ 미칠 수 있는 것들입니다. 그러니, ë ˆì´ì•„웃 안ì—서 좀 ë” ë³µìž¡í•œ ì´ë²¤íŠ¸ë¥¼ 관리하는 경우,
+<p>ê°œë°œìž ì—¬ëŸ¬ë¶„ì´ ì•Œì•„ë‘어야 하는 다른 메서드가 몇 가지 ë” ìžˆìŠµë‹ˆë‹¤. ì´ë“¤ì€ 보기 í´ëž˜ìŠ¤ì˜ ì¼ë¶€ë¶„ì´ ì•„ë‹ˆì§€ë§Œ,
+ì´ë²¤íŠ¸ë¥¼ 처리할 수 있는 ë°©ì‹ì— ì§ì ‘ì ìœ¼ë¡œ ì˜í–¥ì„ 미칠 수 있는 것들입니다. 그러니, ë ˆì´ì•„웃 안ì—서 좀 ë” ë³µìž¡í•œ ì´ë²¤íŠ¸ë¥¼ 관리하는 경우,
ì´ì™€ ê°™ì€ ë‹¤ë¥¸ ë©”ì„œë“œë„ ê³ ë ¤í•˜ì‹­ì‹œì˜¤.</p>
<ul>
<li><code>{@link android.app.Activity#dispatchTouchEvent(MotionEvent)
- Activity.dispatchTouchEvent(MotionEvent)}</code> - ì´ê²ƒì„ 사용하면 {@link
+ Activity.dispatchTouchEvent(MotionEvent)}</code> - ì´ê²ƒì„ 사용하면 {@link
android.app.Activity}로 하여금 모든 터치 ì´ë²¤íŠ¸ê°€ 창으로 발송ë˜ê¸° ì „ì— ì´ë“¤ì„ 가로채ë„ë¡ í•  수 있습니다.</li>
<li><code>{@link android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - ì´ê²ƒì„ 사용하면 {@link
android.view.ViewGroup}으로 하여금 ì´ë²¤íŠ¸ê°€ 하위 보기로 발송ë˜ëŠ” ê²ƒì„ ì§€ì¼œë³´ë„ë¡ í•  수 있습니다.</li>
<li><code>{@link android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
- ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - ì´ê²ƒì„
-호출하는 ê²ƒì€ ìƒìœ„ ë³´ê¸°ì— <code>{@link
+ ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - ì´ê²ƒì„
+호출하는 ê²ƒì€ ìƒìœ„ ë³´ê¸°ì— <code>{@link
android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>ê°€ 있는 터치 ì´ë²¤íŠ¸ë¥¼ 가로채면 안 ëœë‹¤ê³  나타낼 때입니다.</li>
</ul>
<h2 id="TouchMode">터치 모드</h2>
<p>
-사용ìžê°€ ë°©í–¥ 키 ë˜ëŠ” íŠ¸ëž™ë³¼ì„ ì‚¬ìš©í•˜ì—¬ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ íƒìƒ‰í•˜ê³  있는 경우,
-조치 가능한 항목(예: 버튼)ì— ì´ˆì ì„ ë§žì¶° ì–´ëŠ ê²ƒì´ ìž…ë ¥ì„ í—ˆìš©í• ì§€ 사용ìžê°€
-ë³¼ 수 있ë„ë¡ í•´ì•¼ 합니다. 하지만 ê¸°ê¸°ì— í„°ì¹˜ ê¸°ëŠ¥ì´ ìžˆê³  사용ìžê°€
-ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 터치하여 ì¸í„°íŽ˜ì´ìŠ¤ì™€ì˜ ìƒí˜¸ ìž‘ìš©ì„ ì‹œìž‘í•˜ëŠ” 경우ë¼ë©´, ë” ì´ìƒ í•­ëª©ì„ ê°•ì¡° 표시하거나
-특정 ë³´ê¸°ì— ì´ˆì ì„ 맞추지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. ë”°ë¼ì„œ "터치 모드"ë¼ê³  불리는 ìƒí˜¸ ìž‘ìš©ì— ëŒ€í•œ
-모드가 따로 있습니다.
+사용ìžê°€ ë°©í–¥ 키 ë˜ëŠ” íŠ¸ëž™ë³¼ì„ ì‚¬ìš©í•˜ì—¬ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ íƒìƒ‰í•˜ê³  있는 경우,
+조치 가능한 항목(예: 버튼)ì— ì´ˆì ì„ ë§žì¶° ì–´ëŠ ê²ƒì´ ìž…ë ¥ì„ í—ˆìš©í• ì§€ 사용ìžê°€
+ë³¼ 수 있ë„ë¡ í•´ì•¼ 합니다. 하지만 ê¸°ê¸°ì— í„°ì¹˜ ê¸°ëŠ¥ì´ ìžˆê³  사용ìžê°€
+ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 터치하여 ì¸í„°íŽ˜ì´ìŠ¤ì™€ì˜ ìƒí˜¸ ìž‘ìš©ì„ ì‹œìž‘í•˜ëŠ” 경우ë¼ë©´, ë” ì´ìƒ í•­ëª©ì„ ê°•ì¡° 표시하거나
+특정 ë³´ê¸°ì— ì´ˆì ì„ 맞추지 ì•Šì•„ë„ ë©ë‹ˆë‹¤. ë”°ë¼ì„œ "터치 모드"ë¼ê³  불리는 ìƒí˜¸ ìž‘ìš©ì— ëŒ€í•œ
+모드가 따로 있습니다.
</p>
<p>
-터치 ê¸°ëŠ¥ì´ ìžˆëŠ” ê¸°ê¸°ì˜ ê²½ìš°, 사용ìžê°€ í™”ë©´ì„ í„°ì¹˜í•˜ë©´ 기기가 터치 모드ì—
-진입하게 ë©ë‹ˆë‹¤. ì´ ì‹œì ë¶€í„°ëŠ”
-{@link android.view.View#isFocusableInTouchMode}ê°€ ì°¸ì¸ ë³´ê¸°ì—ë§Œ ì´ˆì ì„ ë§žì¶œ 수 있습니다. 예를 들어 í…스트 편집 ìœ„ì ¯ì´ ì´ì— 해당ë©ë‹ˆë‹¤.
-버튼처럼 터치할 수 있는 다른 ë³´ê¸°ì˜ ê²½ìš° í„°ì¹˜í•´ë„ ì£¼ì˜ë¥¼ ëŒ ìˆ˜ 없으며 ì´ë¥¼ 누르면 그저
+터치 ê¸°ëŠ¥ì´ ìžˆëŠ” ê¸°ê¸°ì˜ ê²½ìš°, 사용ìžê°€ í™”ë©´ì„ í„°ì¹˜í•˜ë©´ 기기가 터치 모드ì—
+진입하게 ë©ë‹ˆë‹¤. ì´ ì‹œì ë¶€í„°ëŠ”
+{@link android.view.View#isFocusableInTouchMode}ê°€ ì°¸ì¸ ë³´ê¸°ì—ë§Œ ì´ˆì ì„ ë§žì¶œ 수 있습니다. 예를 들어 í…스트 편집 ìœ„ì ¯ì´ ì´ì— 해당ë©ë‹ˆë‹¤.
+버튼처럼 터치할 수 있는 다른 ë³´ê¸°ì˜ ê²½ìš° í„°ì¹˜í•´ë„ ì£¼ì˜ë¥¼ ëŒ ìˆ˜ 없으며 ì´ë¥¼ 누르면 그저
온-í´ë¦­ 수신기를 실행시키기만 합니다.
</p>
<p>
-사용ìžê°€ ë°©í–¥ 키를 누르거나 트랙볼로 스í¬ë¡¤ ë™ìž‘ì„ í•  때마다 기기가
-터치 모드를 종료하고 ì´ˆì ì„ ë§žì¶œ 보기를 찾습니다. ì´ì œ 사용ìžëŠ” ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì™€
+사용ìžê°€ ë°©í–¥ 키를 누르거나 트랙볼로 스í¬ë¡¤ ë™ìž‘ì„ í•  때마다 기기가
+터치 모드를 종료하고 ì´ˆì ì„ ë§žì¶œ 보기를 찾습니다. ì´ì œ 사용ìžëŠ” ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ì™€
ìƒí˜¸ ìž‘ìš©ì„ ìž¬ê°œí•´ë„ ë˜ë©°, í™”ë©´ì„ í„°ì¹˜í•˜ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤.
</p>
<p>
-터치 모드 ìƒíƒœëŠ” 시스템 전체를 통틀어 유지ë©ë‹ˆë‹¤(모든 창과 액티비티 í¬í•¨).
-현재 ìƒíƒœë¥¼ 쿼리하려면
+터치 모드 ìƒíƒœëŠ” 시스템 전체를 통틀어 유지ë©ë‹ˆë‹¤(모든 창과 액티비티 í¬í•¨).
+현재 ìƒíƒœë¥¼ 쿼리하려면
{@link android.view.View#isInTouchMode}를 호출하여 기기가 현재 터치 ëª¨ë“œì— ìžˆëŠ”ì§€ 확ì¸í•˜ë©´ ë©ë‹ˆë‹¤.
</p>
<h2 id="HandlingFocus">ì´ˆì  ì²˜ë¦¬í•˜ê¸°</h2>
-<p>프레임워í¬ê°€ ì‚¬ìš©ìž ìž…ë ¥ì— ì‘답하여 ì¼ìƒì ì¸ ì´ˆì  ì´ë™ì„ 처리합니다.
-여기ì—는 보기가 제거ë˜ê±°ë‚˜ 숨겨지는 것, ë˜ëŠ” 새 보기를 사용할 수 있게 ë¨ì— ë”°ë¼
-ì´ˆì ì„ 변경하는 ê²ƒì´ í¬í•¨ë©ë‹ˆë‹¤. 보기는 ì´ˆì ì„ ì·¨í•˜ê³ ìž í•˜ëŠ” ì˜í–¥ì„
-<code>{@link android.view.View#isFocusable()}</code> 메서드를 통해 나타냅니다. 보기가 ì´ˆì ì„ 취할 수 있는지 여부를 변경하려면
-<code>{@link android.view.View#setFocusable(boolean) setFocusable()}</code>ì„ í˜¸ì¶œí•©ë‹ˆë‹¤. 터치 ëª¨ë“œì— ìžˆëŠ” 경우,
-ì–´ëŠ ë³´ê¸°ê°€ <code>{@link android.view.View#isFocusableInTouchMode()}</code>로 ì´ˆì ì„ 취하는 ê²ƒì„ í—ˆìš©í•˜ëŠ”ì§€ 여부를 쿼리할 수 있습니다.
+<p>프레임워í¬ê°€ ì‚¬ìš©ìž ìž…ë ¥ì— ì‘답하여 ì¼ìƒì ì¸ ì´ˆì  ì´ë™ì„ 처리합니다.
+여기ì—는 보기가 제거ë˜ê±°ë‚˜ 숨겨지는 것, ë˜ëŠ” 새 보기를 사용할 수 있게 ë¨ì— ë”°ë¼
+ì´ˆì ì„ 변경하는 ê²ƒì´ í¬í•¨ë©ë‹ˆë‹¤. 보기는 ì´ˆì ì„ ì·¨í•˜ê³ ìž í•˜ëŠ” ì˜í–¥ì„
+<code>{@link android.view.View#isFocusable()}</code> 메서드를 통해 나타냅니다. 보기가 ì´ˆì ì„ 취할 수 있는지 여부를 변경하려면
+<code>{@link android.view.View#setFocusable(boolean) setFocusable()}</code>ì„ í˜¸ì¶œí•©ë‹ˆë‹¤. 터치 ëª¨ë“œì— ìžˆëŠ” 경우,
+ì–´ëŠ ë³´ê¸°ê°€ <code>{@link android.view.View#isFocusableInTouchMode()}</code>로 ì´ˆì ì„ 취하는 ê²ƒì„ í—ˆìš©í•˜ëŠ”ì§€ 여부를 쿼리할 수 있습니다.
ì´ê²ƒì€ <code>{@link android.view.View#setFocusableInTouchMode(boolean) setFocusableInTouchMode()}</code>로 변경하면 ë©ë‹ˆë‹¤.
</p>
-<p>ì´ˆì  ì´ë™ì€ 주어진 ë°©í–¥ì—서 가장 가까운 ì´ì›ƒì„ 찾아내는 ì•Œê³ ë¦¬ì¦˜ì„ ê¸°ë°˜ìœ¼ë¡œ
-합니다. 드문 ì¼ì´ì§€ë§Œ 기본 ì•Œê³ ë¦¬ì¦˜ì´ ê°œë°œìžê°€ ì˜ë„한 í–‰ë™ê³¼ ì¼ì¹˜í•˜ì§€ 않는
-ê²½ìš°ë„ ìžˆìŠµë‹ˆë‹¤. ì´ëŸ¬í•œ ìƒí™©ì´ë¼ë©´, ë ˆì´ì•„웃 파ì¼ì—서 다ìŒê³¼ ê°™ì€ XML ì†ì„±ì„
+<p>ì´ˆì  ì´ë™ì€ 주어진 ë°©í–¥ì—서 가장 가까운 ì´ì›ƒì„ 찾아내는 ì•Œê³ ë¦¬ì¦˜ì„ ê¸°ë°˜ìœ¼ë¡œ
+합니다. 드문 ì¼ì´ì§€ë§Œ 기본 ì•Œê³ ë¦¬ì¦˜ì´ ê°œë°œìžê°€ ì˜ë„한 í–‰ë™ê³¼ ì¼ì¹˜í•˜ì§€ 않는
+ê²½ìš°ë„ ìžˆìŠµë‹ˆë‹¤. ì´ëŸ¬í•œ ìƒí™©ì´ë¼ë©´, ë ˆì´ì•„웃 파ì¼ì—서 다ìŒê³¼ ê°™ì€ XML ì†ì„±ì„
사용하여 ëª…ì‹œì  ìž¬ì •ì˜ë¥¼ 제공하면 ë©ë‹ˆë‹¤.
<var>nextFocusDown</var>, <var>nextFocusLeft</var>, <var>nextFocusRight</var>, ë°
-<var>nextFocusUp</var>입니다. ì´ì™€ ê°™ì€ ì†ì„± 중 한 가지를 ì´ˆì ì´ <em>떠나고</em> 있는 보기ì—
-추가합니다. ì†ì„±ì˜ ê°’ì„ ì´ˆì ì„
+<var>nextFocusUp</var>입니다. ì´ì™€ ê°™ì€ ì†ì„± 중 한 가지를 ì´ˆì ì´ <em>떠나고</em> 있는 보기ì—
+추가합니다. ì†ì„±ì˜ ê°’ì„ ì´ˆì ì„
<em>맞춰야 í• </em> ë³´ê¸°ì˜ IDê°€ ë˜ë„ë¡ ì •ì˜í•©ë‹ˆë‹¤. 예:</p>
<pre>
&lt;LinearLayout
@@ -252,18 +252,18 @@ dispatchKeyEvent()}</code> 메서드를 통과하여 ì´ë™í•˜ëŠ” ê²ƒì„ í™•ì¸í
&lt;/LinearLayout>
</pre>
-<p>ë³´í†µì€ ì´ëŸ° ìˆ˜ì§ ë ˆì´ì•„웃ì—서 첫 버튼부터 위로 ì´ë™í•˜ë©´ 아무 ë°ë„ ê°ˆ 수 없고,
-ë‘ ë²ˆì§¸ 버튼ì—서 아래로 ì´ë™í•´ë„ 마찬가지입니다. ì´ì œ 맨 위 ë²„íŠ¼ì´ ë§¨ 아래 ë²„íŠ¼ì„ ë‹¤ìŒê³¼ ê°™ì´
-ì •ì˜í–ˆìŠµë‹ˆë‹¤. <var>nextFocusUp</var> (ë°˜ëŒ€ìª½ë„ ë§ˆì°¬ê°€ì§€) ë”°ë¼ì„œ ì´ë™ ì´ˆì ì€ 위ì—서 아래로 갔다가
+<p>ë³´í†µì€ ì´ëŸ° ìˆ˜ì§ ë ˆì´ì•„웃ì—서 첫 버튼부터 위로 ì´ë™í•˜ë©´ 아무 ë°ë„ ê°ˆ 수 없고,
+ë‘ ë²ˆì§¸ 버튼ì—서 아래로 ì´ë™í•´ë„ 마찬가지입니다. ì´ì œ 맨 위 ë²„íŠ¼ì´ ë§¨ 아래 ë²„íŠ¼ì„ ë‹¤ìŒê³¼ ê°™ì´
+ì •ì˜í–ˆìŠµë‹ˆë‹¤. <var>nextFocusUp</var> (ë°˜ëŒ€ìª½ë„ ë§ˆì°¬ê°€ì§€) ë”°ë¼ì„œ ì´ë™ ì´ˆì ì€ 위ì—서 아래로 갔다가
아래ì—서 위로 순환하게 ë©ë‹ˆë‹¤.</p>
-<p>보기를 UIì—서 ì´ˆì ì„ ë§žì¶œ 수 있는 것으로 ì„ ì–¸í•˜ê³ ìž í•˜ëŠ” 경우(ì¼ë°˜ì ìœ¼ë¡œëŠ” 그렇지 않ìŒ),
-ë³´ê¸°ì— ë ˆì´ì•„웃 ì„ ì–¸ì—서 <code>android:focusable</code> XML ì†ì„±ì„ 추가합니다.
-ì´ ê°’ì„ <var>ì°¸</var>으로 설정합니다. 터치 ëª¨ë“œì— ìžˆì„ ë•Œì—ë„ ë³´ê¸°ë¥¼ ì´ˆì ì„ ë§žì¶œ 수 있는 것으로
+<p>보기를 UIì—서 ì´ˆì ì„ ë§žì¶œ 수 있는 것으로 ì„ ì–¸í•˜ê³ ìž í•˜ëŠ” 경우(ì¼ë°˜ì ìœ¼ë¡œëŠ” 그렇지 않ìŒ),
+ë³´ê¸°ì— ë ˆì´ì•„웃 ì„ ì–¸ì—서 <code>android:focusable</code> XML ì†ì„±ì„ 추가합니다.
+ì´ ê°’ì„ <var>ì°¸</var>으로 설정합니다. 터치 ëª¨ë“œì— ìžˆì„ ë•Œì—ë„ ë³´ê¸°ë¥¼ ì´ˆì ì„ ë§žì¶œ 수 있는 것으로
선언할 수 있습니다. <code>android:focusableInTouchMode</code>를 사용하면 ë©ë‹ˆë‹¤.</p>
<p>특정 ë³´ê¸°ì— ì´ˆì ì„ 맞추기를 요청하려면, <code>{@link android.view.View#requestFocus()}</code>를 호출하십시오.</p>
-<p>ì´ˆì  ì´ë²¤íŠ¸ë¥¼ 수신 대기하려면(ì–´ë–¤ ë³´ê¸°ì— ì´ˆì ì´ 맞춰지거나 ì´ë¥¼ 잃는 경우 ì•Œë¦¼ì„ ë°›ìœ¼ë ¤ë©´),
-<code>{@link android.view.View.OnFocusChangeListener#onFocusChange(View,boolean) onFocusChange()}</code>를 사용하면 ë©ë‹ˆë‹¤.
+<p>ì´ˆì  ì´ë²¤íŠ¸ë¥¼ 수신 대기하려면(ì–´ë–¤ ë³´ê¸°ì— ì´ˆì ì´ 맞춰지거나 ì´ë¥¼ 잃는 경우 ì•Œë¦¼ì„ ë°›ìœ¼ë ¤ë©´),
+<code>{@link android.view.View.OnFocusChangeListener#onFocusChange(View,boolean) onFocusChange()}</code>를 사용하면 ë©ë‹ˆë‹¤.
ì´ëŠ” ìœ„ì˜ <a href="#EventListeners">ì´ë²¤íЏ 수신기</a> 섹션ì—서 ì´ì•¼ê¸°í•œ 바와 같습니다.</p>
@@ -282,7 +282,7 @@ dispatchKeyEvent()}</code> 메서드를 통과하여 ì´ë™í•˜ëŠ” ê²ƒì„ í™•ì¸í
the framework will take care of measuring, laying out, and drawing the tree
as appropriate.</li>
</ol>
-
+
<p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
the UI thread when calling any method on any View.
If you are doing work on other threads and want to update the state of a View
diff --git a/docs/html-intl/intl/ko/preview/api-overview.jd b/docs/html-intl/intl/ko/preview/api-overview.jd
index fdae40619bd1..5cffdfb23572 100644
--- a/docs/html-intl/intl/ko/preview/api-overview.jd
+++ b/docs/html-intl/intl/ko/preview/api-overview.jd
@@ -311,7 +311,7 @@ Data Saver 기본 ì„¤ì •ì„ ê²€ìƒ‰</a>하고 <a href="{@docRoot}preview/features
<h2 id="vulkan">Vulkan API</h2>
<p>
- Android Nì€ ìƒˆë¡œìš´ 3D ë Œë”ë§ APIì¸ <a href="http://www.khronos.org/vulkan" class="external-link">Vulkanâ„¢</a>ì„ í”Œëž«í¼ì— 통합합니다.
+ Android Nì€ ìƒˆë¡œìš´ 3D ë Œë”ë§ APIì¸ <a href="http://www.khronos.org/vulkan" class="external-link">Vulkanâ„¢</a>ì„ í”Œëž«í¼ì— 통합합니다.
<a href="https://www.khronos.org/opengles/" class="external-link">OpenGLâ„¢
ES</a>와 마찬가지로, Vulkanì€ Khronos Groupì— ì˜í•´ 관리ë˜ëŠ” 3D 그래픽 ë° ë Œë”ë§ì„ 위한
공개 표준입니다.
@@ -502,7 +502,7 @@ API를 사용하여 사용ìžì˜ 로케ì¼ì„ 가져온
ì´ëª¨í‹°ì½˜ì— 대한 시ê°ì  표시를 제공해야 하며, 사용ìžê°€ 선호하는 피부 색조를 ì„ íƒí•˜ë„ë¡
허용해야 합니다. ì–´ë–¤ 시스템 ì´ëª¨í‹°ì½˜ì— 피부 색조
한정ìžê°€ 있는지 확ì¸í•˜ë ¤ë©´ {@link android.graphics.Paint#hasGlyph(String)}
-메서드를 사용하세요.
+메서드를 사용하세요.
<a class="external-link" href="http://unicode.org/emoji/charts/full-emoji-list.html">
유니코드 설명서</a>를 ì½ì–´ë³´ë©´ ì–´ë–¤ ì´ëª¨í‹°ì½˜ì—서 피부 색조가 사용ë˜ëŠ”ì§€ 확ì¸í•  수 있습니다.
</li>
@@ -857,7 +857,7 @@ Android Nì—서는 사용ìžê°€ "Alt + /" 키를 눌러 <em>Keyboard Shortcuts</
앱 개발ìžëŠ” N Developer Previewì— ìžˆëŠ” ì´
새 API를 Nexus 6P 기기ì—서만 시험해 ë³¼ 수 있습니다. ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë ¤ë©´
ì§€ì†ì ì¸ 성능 모드ì—서 실행하려는 ê¸°ê°„ì— ëŒ€í•´
-ì§€ì†ì ì¸ 성능 기간 플래그를 설정하세요.
+ì§€ì†ì ì¸ 성능 기간 플래그를 설정하세요.
{@code Window.setSustainedPerformanceMode()} 메서드를 사용하여 ì´ í”Œëž˜ê·¸ë¥¼ 설정하세요. 해당 ê¸°ê°„ì´ í¬ì»¤ìФ ì•ˆì— ì—†ì„ ë•ŒëŠ”
ì´ ëª¨ë“œê°€ ìžë™ìœ¼ë¡œ 비활성화ë©ë‹ˆë‹¤.
</p>
diff --git a/docs/html-intl/intl/ko/preview/behavior-changes.jd b/docs/html-intl/intl/ko/preview/behavior-changes.jd
index 709ccfc2f079..5d325e1b41db 100644
--- a/docs/html-intl/intl/ko/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/ko/preview/behavior-changes.jd
@@ -167,7 +167,7 @@ CPU ë° ë„¤íŠ¸ì›Œí¬ ì œí•œì˜ í•˜ìœ„ 세트를 ì ìš©í•˜ì—¬ ìž ìžê¸° 모드를
Android N 기기를 올바로 대ìƒìœ¼ë¡œ ì‚¼ì„ ìˆ˜ 있ë„ë¡ ì´ë“¤ ì¸í…íŠ¸ì— ëŒ€í•œ 종ì†ì„±ì„ 최대한 빨리 제거해야 합니다.
Android 프레임워í¬ëŠ” ì´ëŸ¬í•œ ì•”ì‹œì  ë¸Œë¡œë“œìºìŠ¤íŠ¸ì˜
í•„ìš”ì„±ì„ ì¤„ì´ê¸° 위한 여러 가지 í•´ê²°ì±…ì„ ì œê³µí•©ë‹ˆë‹¤. 예를 들어, {@link
- android.app.job.JobScheduler} API는 ì§€ì •ëœ ì¡°ê±´(예:
+ android.app.job.JobScheduler} API는 ì§€ì •ëœ ì¡°ê±´(예:
ê³ ì • 요금제 네트워í¬ì— ì—°ê²°)ì´ ì¶©ì¡±ë  ê²½ìš° ë„¤íŠ¸ì›Œí¬ ìš´ì˜ì„ 예약할 수 있는
강력한 ë©”ì»¤ë‹ˆì¦˜ì„ ì œê³µí•©ë‹ˆë‹¤. 심지어 {@link
android.app.job.JobScheduler}를 사용하여 콘í…츠 공급ìžì˜ 변경 ì‚¬í•­ì— ëŒ€ì‘í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
@@ -224,7 +224,7 @@ API ë˜ëŠ” {@link java.io.File File} API를 사용하여 ê°œì¸ ë””ë ‰í„°ë¦¬ì—
대ìƒìœ¼ë¡œ 하는 ì•±ì€ {@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}ì— ì•¡ì„¸ìŠ¤í•  때 {@link java.lang.SecurityException}ì„
트리거합니다.
-
+
{@link
android.app.DownloadManager.Request#setDestinationInExternalFilesDir
DownloadManager.Request.setDestinationInExternalFilesDir()} ë˜ëŠ”
@@ -562,7 +562,7 @@ TCP ì†Œì¼“ì— ëŒ€í•œ 쓰기를 엄격 모드 위반으로서 플래그하지 못
</li>
<li>
-{@code Debug.startMethodTracing()} ê³„ì—´ì— ì†í•˜ëŠ” 메서드는,
+{@code Debug.startMethodTracing()} ê³„ì—´ì— ì†í•˜ëŠ” 메서드는,
SD ì¹´ë“œì˜ ìµœìƒìœ„ ë ˆë²¨ì— ì €ìž¥í•˜ëŠ” ê²ƒì´ ì•„ë‹ˆë¼, ì´ì œ 공유 저장소ì˜
패키지별 ë””ë ‰í„°ë¦¬ì— ì¶œë ¥ì„ ê¸°ë³¸ì ìœ¼ë¡œ
저장합니다. 즉, ì•±ì€ ì´ë“¤ API를 사용하기 위해 {@code WRITE_EXTERNAL_STORAGE} ê¶Œí•œì„ ìš”ì²­í•  필요가 ë” ì´ìƒ 없습니다.
diff --git a/docs/html-intl/intl/ko/preview/download-ota.jd b/docs/html-intl/intl/ko/preview/download-ota.jd
index 886b8a806c85..ee0884672942 100644
--- a/docs/html-intl/intl/ko/preview/download-ota.jd
+++ b/docs/html-intl/intl/ko/preview/download-ota.jd
@@ -202,65 +202,73 @@ page.title=기기 OTA ì´ë¯¸ì§€ ì ìš©
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
- MD5: 15fe2eba9b01737374196bdf0a792fe9<br>
- SHA-1: 5014b2bba77f9e1a680ac3f90729621c85a14283
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-ota-npd90g-0a874807.zip</a><br>
+ MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+ SHA-1: a9920bcc8d475ce322cada097d085448512635e2
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
- MD5: e8b12f7721c53af9a450f7058928a5fc<br>
- SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-ota-npd90g-06f5d23d.zip</a><br>
+ MD5: 513570bb3a91878c2d1a5807d2340420<br>
+ SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
- MD5: 3fac09fef759dde26e57cb80b20b6477<br>
- SHA-1: 27d6caa786577d8a38b2da5bf94b33b4524a1a1c
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-ota-npd90g-5baa69c2.zip</a><br>
+ MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+ SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
- MD5: 58312c4a5971818ef5c77a3f446003da<br>
- SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-ota-npd90g-c04785e1.zip</a><br>
+ MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+ SHA-1: 31633180635b831e59271a7d904439f278586f49
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
- MD5: 92b7d1fa252f7394e70f957c72d4aac8<br>
- SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+ MD5: 0493fa79763d67bcdde8007299e1888d<br>
+ SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
- MD5: 1461622ad53ea842b2722fa7b49b8172<br>
- SHA-1: 409c061668ab270774877d7f3eae44fa48d2b931
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-ota-npd90g-3a0643ae.zip</a><br>
+ MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+ SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
- MD5: c60117f3640cc6db12386fd632289c7d<br>
- SHA-1: 87349c767c69efb4172c90ce1d88cf578c3d28b3
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-ota-npd90g-ec931914.zip</a><br>
+ MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+ SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
</td>
</tr>
<tr id="seed">
- <td>General Mobile 4G(Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
- MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
- SHA-1: 6f33742290eb46f2561891f38ca2e754b4e50c6a
+ <td>General Mobile 4G (Android One) <br>"seed"</td>
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+ MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+ SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
</td>
</tr>
diff --git a/docs/html-intl/intl/ko/preview/download.jd b/docs/html-intl/intl/ko/preview/download.jd
index 802420b85aaa..45d5bd851943 100644
--- a/docs/html-intl/intl/ko/preview/download.jd
+++ b/docs/html-intl/intl/ko/preview/download.jd
@@ -300,72 +300,73 @@ Developer Preview 마ì¼ìŠ¤í†¤ ë¹Œë“œì— ëŒ€í•œ <strong>OTA ì—…ë°ì´íŠ¸ë¥¼ ìžë
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
- MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
- SHA-1: 5ba4053577007d15c96472206e3a79bc80ab194c
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+ MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+ SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
- MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
- SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+ MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+ SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
- MD5: e93de7949433339856124c3729c15ebb<br>
- SHA-1: 81c341d57ef2cd139569b055d5d59e9e592a7abd
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+ MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+ SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
- MD5: 565be87ebb2d5937e2abe1a42645864b<br>
- SHA-1: 2b50e19dae2667b27f911e3c61ed64860caf43e1
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-npd90g-factory-41b55406.tgz</a><br>
+ MD5: cefa78950141da2a7c75e887717e3c8f<br>
+ SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
- MD5: a8464e15c6683fe2afa378a63e205fda<br>
- SHA-1: 2e89ebe67a46b2f3beb050746c13341cd11fa678
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-npd90g-factory-610492be.tgz</a><br>
+ MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+ SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
- MD5: c0dbb7db671f61b2785da5001cedefcb<br>
- SHA-1: 1de74874f8d83e14d642f13b5a2130fc2aa55873
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-npd90g-factory-0fe95694.tgz</a><br>
+ MD5: f4cb48f919e4c29c631de21416c612e2<br>
+ SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
- MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
- SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-npd90g-factory-f4da981c.tgz</a><br>
+ MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+ SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
</td>
</tr>
<tr id="seed">
- <td>General Mobile 4G(Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
- MD5: 7d34a9774fdd6e025d485ce6cfc23c4c<br>
- SHA-1: 5ab1212bc9417269d391aacf1e672fff24b4ecc5
- </td>
- </tr>
-
- <tr id="xperia">
- <td>Sony Xperia Z3 <br> (D6603 ë° D6653)</td>
- <td>다운로드: <a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
- ìžì„¸í•œ ë‚´ìš©ì€ <a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Xperia Z3ìš© Android N Developer Preview ì²´í—˜</a>ì„ ì°¸ì¡°í•˜ì„¸ìš”.
+ <td>General Mobile 4G (Android One) <br>"seed"</td>
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+ MD5: 0ed565c509594072822d71c65b48ec8e<br>
+ SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
</td>
</tr>
diff --git a/docs/html-intl/intl/ko/preview/features/direct-boot.jd b/docs/html-intl/intl/ko/preview/features/direct-boot.jd
index 981c3e080898..2674481181a4 100644
--- a/docs/html-intl/intl/ko/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/ko/preview/features/direct-boot.jd
@@ -18,7 +18,7 @@ page.image=images/cards/card-nyc_2x.jpg
</div>
</div>
-<p>ê¸°ê¸°ì— ì „ì›ì´ 들어와 있지만 <i>사용ìžê°€ ê¸°ê¸°ì˜ ìž ê¸ˆì„ í•´ì œí•˜ì§€</i> ì•Šì•˜ì„ ê²½ìš° Android Nì€ ì•ˆì „í•œ
+<p>ê¸°ê¸°ì— ì „ì›ì´ 들어와 있지만 <i>사용ìžê°€ ê¸°ê¸°ì˜ ìž ê¸ˆì„ í•´ì œí•˜ì§€</i> ì•Šì•˜ì„ ê²½ìš° Android Nì€ ì•ˆì „í•œ
ì§ì ‘ 부팅
모드ì—서 실행ë©ë‹ˆë‹¤. ì´ë¥¼ ì§€ì›í•˜ê¸° 위해 시스템ì—서 다ìŒê³¼ ê°™ì€ ë‘ ê°€ì§€ ë°ì´í„° 저장소 위치를 제공합니다.</p>
@@ -125,7 +125,7 @@ ACTION_BOOT_COMPLETED} 메시지를 수신할 수 있습니다. ì´ ë©”ì‹œì§€ëŠ”
<h2 id="migrating">기존 ë°ì´í„° 마ì´ê·¸ë ˆì´ì…˜</h2>
<p>ì§ì ‘ 부팅 모드를 사용하ë„ë¡ ì‚¬ìš©ìžê°€ ìžì‹ ì˜ 기기를 ì—…ë°ì´íŠ¸í•˜ëŠ” 경우,
-ì—¬ëŸ¬ë¶„ì´ ê¸°ì¡´ ë°ì´í„°ë¥¼ 기기 암호화 저장소로 마ì´ê·¸ë ˆì´ì…˜í•´ì•¼ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
+ì—¬ëŸ¬ë¶„ì´ ê¸°ì¡´ ë°ì´í„°ë¥¼ 기기 암호화 저장소로 마ì´ê·¸ë ˆì´ì…˜í•´ì•¼ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
<code>Context.moveSharedPreferencesFrom()</code>ê³¼
<code>Context.moveDatabaseFrom()</code>ì„ ì‚¬ìš©í•˜ì—¬ ìžê²© ì¦ëª… 암호화 저장소와 기기 암호화 저장소 ê°„ì—
기본 설정과 ë°ì´í„°ë² ì´ìФ ë°ì´í„°ë¥¼ 마ì´ê·¸ë ˆì´ì…˜í•©ë‹ˆë‹¤.</p>
diff --git a/docs/html-intl/intl/ko/preview/features/icu4j-framework.jd b/docs/html-intl/intl/ko/preview/features/icu4j-framework.jd
index f626bff6bde9..921873d8e6f2 100644
--- a/docs/html-intl/intl/ko/preview/features/icu4j-framework.jd
+++ b/docs/html-intl/intl/ko/preview/features/icu4j-framework.jd
@@ -50,7 +50,7 @@ Android 프레임워í¬ì—서 ICU4J API를 사용하는 ë°©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹
<p>
Android Nì€
-<code>com.ibm.icu</code>ê°€ ì•„ë‹ˆë¼ <code>android.icu</code> 패키지를 통해 ICU4J APIì˜ í•˜ìœ„ 세트를 노출합니다.
+<code>com.ibm.icu</code>ê°€ ì•„ë‹ˆë¼ <code>android.icu</code> 패키지를 통해 ICU4J APIì˜ í•˜ìœ„ 세트를 노출합니다.
Android 프레임워í¬ëŠ” 여러 가지 ì´ìœ ë¡œ
ICU4J API를 노출하지 ì•Šì„ ìˆ˜ 있습니다. 예컨대 Android Nì€
ì¼ë¶€ 사용 ì¤‘ë‹¨ëœ API나 ICU 팀ì—서 안정ì ì´ë¼ê³  선언하지 ì•Šì€ API를
diff --git a/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd b/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd
index f353cc6a4e67..fa557bcf14fd 100644
--- a/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd
@@ -81,7 +81,7 @@ page.image=images/cards/card-nyc_2x.jpg
전송하는 ì—­í• ì„ ë‹´ë‹¹í•©ë‹ˆë‹¤.</p>
<p>ì‹œìŠ¤í…œì´ <code>RecordingSession.onTune()</code>ì„ í˜¸ì¶œí•˜ë©´
-ì±„ë„ URIì— ì „ë‹¬ë˜ê³ , URIê°€ 지정하는 채ë„ì— ë§žì¶° ì¡°ì •ë©ë‹ˆë‹¤.
+ì±„ë„ URIì— ì „ë‹¬ë˜ê³ , URIê°€ 지정하는 채ë„ì— ë§žì¶° ì¡°ì •ë©ë‹ˆë‹¤.
<code>notifyTuned()</code>를 호출해서 ì•±ì´ ì›í•˜ëŠ” 채ë„ì— ë§žì¶°ì¡ŒìŒì„ ì‹œìŠ¤í…œì— ì•Œë¦¬ê±°ë‚˜
ì•±ì´ ì ì ˆí•œ 채ë„ì— ë§žì¶œ 수 없으면
<code>notifyError()</code>를 호출합니다.</p>
diff --git a/docs/html-intl/intl/ko/preview/setup-sdk.jd b/docs/html-intl/intl/ko/preview/setup-sdk.jd
index 03727a3320db..c2a0380de61c 100644
--- a/docs/html-intl/intl/ko/preview/setup-sdk.jd
+++ b/docs/html-intl/intl/ko/preview/setup-sdk.jd
@@ -92,7 +92,7 @@ Platform-Tools</strong>, <strong>Android SDK Tools</strong> ì²´í¬ë°•스를
<a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
<td width="100%">
MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
- SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
+ SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
</td>
</tr>
<table>
diff --git a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/index.jd b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/index.jd
index e66e8d19c372..4fd4af25afd4 100644
--- a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/index.jd
+++ b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/index.jd
@@ -35,11 +35,11 @@ startpage=true
</div>
<p>사용ìžê°€ ì•±ì„ íƒìƒ‰í•˜ê³ , 앱ì—서 나가고, 앱으로 다시 ëŒì•„가면, 앱ì˜
-{@link android.app.Activity} ì¸ìŠ¤í„´ìŠ¤ëŠ”
+{@link android.app.Activity} ì¸ìŠ¤í„´ìŠ¤ëŠ”
수명 주기 안ì—서 서로 다른 ìƒíƒœ ê°„ì— ì „í™˜ë©ë‹ˆë‹¤. 예를 들어
액티비티가 ì²˜ìŒ ì‹œìž‘ë˜ëŠ” 경우, ì‹œìŠ¤í…œì˜ ì „ë©´ì— í‘œì‹œë˜ì–´ 사용ìžì˜
í¬ì»¤ìŠ¤ë¥¼ 받습니다. ì´ ê³¼ì •ì—서 Android ì‹œìŠ¤í…œì€ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ ë° ë‹¤ë¥¸ êµ¬ì„±ìš”ì†Œì— ì„¤ì •ëœ
-ì•¡í‹°ë¹„í‹°ì— ëŒ€í•´ ì¼ë ¨ì˜ 수명 주기 메서드를 호출합니다. 사용ìžê°€ 다른 액티비티를 시작하거나 다른 앱으로 전환하는
+ì•¡í‹°ë¹„í‹°ì— ëŒ€í•´ ì¼ë ¨ì˜ 수명 주기 메서드를 호출합니다. 사용ìžê°€ 다른 액티비티를 시작하거나 다른 앱으로 전환하는
ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë©´, 백그ë¼ìš´ë“œ(액티비티가 ë”
ì´ìƒ ë³´ì´ì§€ 않지만 ì¸ìŠ¤í„´ìŠ¤ì™€ 해당 ìƒíƒœëŠ” 그대로 유지ë˜ëŠ” ìƒíƒœ)로 전환ë˜ë©´ì„œ ì‹œìŠ¤í…œì€ ì•¡í‹°ë¹„í‹°ì— ëŒ€í•´ ë˜ ë‹¤ë¥¸
수명 주기 메서드 세트를 호출합니다.</p>
@@ -55,7 +55,7 @@ android.app.Activity} ì¸ìŠ¤í„´ìŠ¤ê°€ 수신하는 중요한 수명 주기 콜ë°
사용ìžê°€ ì›í•˜ëŠ” ìž‘ì—…ì„ í•˜ê³ , 액티비티가 필요로 하지 ì•Šì„ ë•Œ 시스템 리소스 소비를 방지하는 ë°©ë²•ì— ëŒ€í•´ì„œë„ ì„¤ëª…í•©ë‹ˆë‹¤.</p>
<h2>과정</h2>
-
+
<dl>
<dt><b><a href="starting.html">액티비티 시작하기</a></b></dt>
<dd>액티비티 수명 ì£¼ê¸°ì˜ ê¸°ë³¸ì‚¬í•­, 사용ìžê°€ ì•±ì„ ì‹œìž‘í•˜ëŠ” 방법, 그리고 기본 액티비티 ìƒì„± ìž‘ì—…ì„ ìˆ˜í–‰í•˜ëŠ”
@@ -68,5 +68,5 @@ android.app.Activity} ì¸ìŠ¤í„´ìŠ¤ê°€ 수신하는 중요한 수명 주기 콜ë°
<dt><b><a href="recreating.html">액티비티 재ìƒì„±í•˜ê¸°</a></b></dt>
<dd>액티비티가 소멸ë˜ë©´ ì–´ë–¤ ë™ìž‘ì´ ë°œìƒí•˜ëŠ”ì§€, 그리고 í•„ìš” 시 액티비티
ìƒíƒœë¥¼ 재구축하는 ë°©ë²•ì— ëŒ€í•´ 설명합니다.</dd>
-</dl>
+</dl>
diff --git a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/pausing.jd
index b0497cda4da1..98e2afd3f4d9 100644
--- a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>ì´ ê³¼ì •ì—서 다루는 ë‚´ìš©</h2>
<ol>
<li><a href="#Pause">액티비티 ì¼ì§€ì •지하기</a></li>
<li><a href="#Resume">액티비티 재개하기</a></li>
</ol>
-
+
<h2>í•„ë… í•­ëª©</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">액티비티</a>
@@ -31,7 +31,7 @@ trainingnavtop=true
</div>
</div>
-<p>ì¼ë°˜ì ì¸ 앱 사용 ì¤‘ì— ê°€ë” ë‹¤ë¥¸
+<p>ì¼ë°˜ì ì¸ 앱 사용 ì¤‘ì— ê°€ë” ë‹¤ë¥¸
비주얼 구성요소로 ì¸í•´ ì „ë©´ì˜ ì•¡í‹°ë¹„í‹°ê°€ <em>ì¼ì‹œì •ì§€</em>ë˜ëŠ” 경우가 있습니다. 예를 들어, 대화 ìƒìž 스타ì¼ê³¼ ê°™ì€ ë°˜íˆ¬ëª…
액티비티가 열리면, ê·¸ ì´ì „ 액티비티는 ì¼ì‹œì •ì§€ë©ë‹ˆë‹¤. 액티비티가
부분ì ìœ¼ë¡œ ë³´ì´ì§€ë§Œ 현재 í¬ì»¤ìФ ë‚´ì— ìžˆì§€ 않는 한 ì¼ì‹œì •ì§€ëœ ìƒíƒœë¡œ 유지ë©ë‹ˆë‹¤.</p>
@@ -59,7 +59,7 @@ android.app.Activity#onPause()}ì— ëŒ€í•œ í˜¸ì¶œì„ ìˆ˜ì‹ í•˜ëŠ” 경우, ì´ëŠ”
<h2 id="Pause">액티비티 ì¼ì§€ì •지하기</h2>
-
+
<p>ì‹œìŠ¤í…œì´ ì•¡í‹°ë¹„í‹°ì— ëŒ€í•´ {@link android.app.Activity#onPause()}를 호출하면, ì´ëŠ”
엄밀해 ë§í•´ 액티비티가 여전히 부분ì ìœ¼ë¡œ ë³´ì¼ ìˆ˜ 있ìŒì„ ì˜ë¯¸í•˜ì§€ë§Œ,
ëŒ€ê°œì˜ ê²½ìš° 사용ìžê°€ 액티비티를 떠나 ê³§ ì •ì§€ ìƒíƒœë¡œ ì „í™˜ë  ê²ƒìž„ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. ì¼ë°˜ì ìœ¼ë¡œ ë‹¤ìŒ ìž‘ì—…ì„ ìˆ˜í–‰í•  때
diff --git a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/recreating.jd b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/recreating.jd
index 79fb92bbdc7d..2408cac248bb 100644
--- a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>ì´ ê³¼ì •ì—서 다루는 ë‚´ìš©</h2>
<ol>
<li><a href="#SaveState">액티비티 ìƒíƒœ 저장하기</a></li>
<li><a href="#RestoreState">액티비티 ìƒíƒœ ë³µì›í•˜ê¸°</a></li>
</ol>
-
+
<h2>í•„ë… í•­ëª©</h2>
<ul>
<li><a href="{@docRoot}training/basics/supporting-devices/screens.html">다양한
@@ -105,7 +105,7 @@ public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-
+
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
@@ -138,7 +138,7 @@ onCreate()}ì—서 몇 가지 ìƒíƒœ ë°ì´í„°ë¥¼ ë³µì›í•˜ëŠ” ë°©ë²•ì— ëŒ€í•œ ì
&#64;Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Always call the superclass first
-
+
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore value of members from saved state
@@ -157,12 +157,12 @@ protected void onCreate(Bundle savedInstanceState) {
android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}를 구현하ë„ë¡ ì„ íƒí•  수 있습니다. ì‹œìŠ¤í…œì€ ë³µì›í•  저장
ìƒíƒœê°€ ìžˆì„ ê²½ìš°ì—ë§Œ {@link
android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}를 호출합니다. ë”°ë¼ì„œ {@link android.os.Bundle}ì´ nullì¸ì§€ 확ì¸í•  필요가 없습니다.</p>
-
+
<pre>
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
-
+
// Restore state members from saved instance
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/starting.jd b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/starting.jd
index ef1348783dfa..68b456235236 100644
--- a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>ì´ ê³¼ì •ì—서 다루는 ë‚´ìš©</h2>
<ol>
<li><a href="#lifecycle-states">수명 주기 콜백 ì´í•´í•˜ê¸°</a></li>
@@ -17,7 +17,7 @@ trainingnavtop=true
<li><a href="#Create">새로운 ì¸ìŠ¤í„´ìŠ¤ ìƒì„±í•˜ê¸°</a></li>
<li><a href="#Destroy">액티비티 소멸하기</a></li>
</ol>
-
+
<h2>í•„ë… í•­ëª©</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">액티비티</a></li>
@@ -83,7 +83,7 @@ Android ì‹œìŠ¤í…œì€ {@link android.app.Activity} ì¸ìŠ¤í„´ìŠ¤ 수명 주기ì˜
</ul>
<!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
methods.</p>
<table>
<tr>
@@ -138,7 +138,7 @@ android.app.Activity#onResume()}ì„ í˜¸ì¶œí•©ë‹ˆë‹¤.</p>
-<h2 id="launching-activity">앱 시작 ê´€ë¦¬ìž ì•¡í‹°ë¹„í‹° 지정하기</h2>
+<h2 id="launching-activity">앱 시작 ê´€ë¦¬ìž ì•¡í‹°ë¹„í‹° 지정하기</h2>
<p>사용ìžê°€ 홈 화면ì—서 앱 ì•„ì´ì½˜ì„ ì„ íƒí•˜ë©´, ì‹œìŠ¤í…œì´ ì•±ì—서 "시작 관리ìž"(ë˜ëŠ” "ë©”ì¸") 액티비티로 선언한 {@link android.app.Activity}ì— ëŒ€í•œ {@link
android.app.Activity#onCreate onCreate()} 메서드를
@@ -151,7 +151,7 @@ android.app.Activity#onCreate onCreate()} 메서드를
<p>ì•±ì˜ ë©”ì¸ ì•¡í‹°ë¹„í‹°ëŠ” {@link
android.content.Intent#ACTION_MAIN MAIN} 작업 ë°{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} 카테고리를 í¬í•¨í•˜ëŠ” <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
<intent-filter>}</a>와 함께
-매니페스트 파ì¼ì— ì„ ì–¸ë˜ì–´ì•¼ 합니다. 예를 들면 다ìŒê³¼ 같습니다.</p>
+매니페스트 파ì¼ì— ì„ ì–¸ë˜ì–´ì•¼ 합니다. 예를 들면 다ìŒê³¼ 같습니다.</p>
<pre>
&lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -200,10 +200,10 @@ public void onCreate(Bundle savedInstanceState) {
// Set the user interface layout for this Activity
// The layout file is defined in the project res/layout/main_activity.xml file
setContentView(R.layout.main_activity);
-
+
// Initialize member TextView so we can manipulate it later
mTextView = (TextView) findViewById(R.id.text_message);
-
+
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// For the main activity, make sure the app icon in the action bar
@@ -268,7 +268,7 @@ android.app.Activity#onDestroy} ì¤‘ì— ì•¡í‹°ë¹„í‹°ë¥¼ 중단시켜야 합니다
&#64;Override
public void onDestroy() {
super.onDestroy(); // Always call the superclass
-
+
// Stop method tracing that the activity started during onCreate()
android.os.Debug.stopMethodTracing();
}
diff --git a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/stopping.jd b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/stopping.jd
index 79e713a72a56..28000951c1ac 100644
--- a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>ì´ ê³¼ì •ì—서 다루는 ë‚´ìš©</h2>
<ol>
<li><a href="#Stop">액티비티 정지하기</a></li>
<li><a href="#Start">액티비티 시작/재시작하기</a></li>
</ol>
-
+
<h2>í•„ë… í•­ëª©</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">액티비티</a>
@@ -152,13 +152,13 @@ android.app.Activity#onStart()}를 호출하기 때문입니다.</p>
&#64;Override
protected void onStart() {
super.onStart(); // Always call the superclass method first
-
+
// The activity is either being restarted or started for the first time
// so this is where we should make sure that GPS is enabled
- LocationManager locationManager =
+ LocationManager locationManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-
+
if (!gpsEnabled) {
// Create a dialog here that requests the user to enable GPS, and use an intent
// with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -169,8 +169,8 @@ protected void onStart() {
&#64;Override
protected void onRestart() {
super.onRestart(); // Always call the superclass method first
-
- // Activity being restarted from stopped state
+
+ // Activity being restarted from stopped state
}
</pre>
diff --git a/docs/html-intl/intl/ko/training/basics/data-storage/databases.jd b/docs/html-intl/intl/ko/training/basics/data-storage/databases.jd
index e7ca16681e0e..70f896170e7f 100644
--- a/docs/html-intl/intl/ko/training/basics/data-storage/databases.jd
+++ b/docs/html-intl/intl/ko/training/basics/data-storage/databases.jd
@@ -118,15 +118,15 @@ private static final String SQL_DELETE_ENTRIES =
액세스할 수 없기 ë•Œë¬¸ì— ì €ìž¥ëœ ë°ì´í„°ëŠ” 안전하게 유지ë©ë‹ˆë‹¤.</p>
<p>유용한 API ì§‘í•©ì´ {@link
-android.database.sqlite.SQLiteOpenHelper} í´ëž˜ìФì—서 제공ë©ë‹ˆë‹¤.
+android.database.sqlite.SQLiteOpenHelper} í´ëž˜ìФì—서 제공ë©ë‹ˆë‹¤.
ë°ì´í„°ë² ì´ìŠ¤ì— ëŒ€í•œ 참조를 가져오기 위해 ì´ í´ëž˜ìŠ¤ë¥¼ 사용하는 경우, 시스템ì€
-필요한 ê²½ìš°ì— í•œí•´ì„œë§Œ ë°ì´í„°ë² ì´ìФ ìƒì„± ë° ì—…ë°ì´íŠ¸ì™€ ê°™ì´
+필요한 ê²½ìš°ì— í•œí•´ì„œë§Œ ë°ì´í„°ë² ì´ìФ ìƒì„± ë° ì—…ë°ì´íŠ¸ì™€ ê°™ì´
장시간 ì‹¤í–‰ë  ìˆ˜ 있는 작업ì„
-수행하며, <em>ì•±ì´ ì‹œìž‘ë˜ëŠ” ë™ì•ˆì—는 ì´ëŸ¬í•œ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ì§€ 않습니다</em>.
-{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} ë˜ëŠ”
+수행하며, <em>ì•±ì´ ì‹œìž‘ë˜ëŠ” ë™ì•ˆì—는 ì´ëŸ¬í•œ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ì§€ 않습니다</em>.
+{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} ë˜ëŠ”
{@link android.database.sqlite.SQLiteOpenHelper#getReadableDatabase}를 호출하기만 하면 ë©ë‹ˆë‹¤.</p>
-<p class="note"><strong>참고:</strong> ì´ëŸ¬í•œ ìž‘ì—…ì€ ìž¥ì‹œê°„ ì‹¤í–‰ë  ìˆ˜ë„ ìžˆê¸° 때문ì—
+<p class="note"><strong>참고:</strong> ì´ëŸ¬í•œ ìž‘ì—…ì€ ìž¥ì‹œê°„ ì‹¤í–‰ë  ìˆ˜ë„ ìžˆê¸° 때문ì—
{@link android.os.AsyncTask} ë˜ëŠ” {@link android.app.IntentService}와 ê°™ì´ ë°±ê·¸ë¼ìš´ë“œ 스레드ì—서 {@link
android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} ë˜ëŠ” {@link
android.database.sqlite.SQLiteOpenHelper#getReadableDatabase}를
diff --git a/docs/html-intl/intl/ko/training/material/animations.jd b/docs/html-intl/intl/ko/training/material/animations.jd
index e8c6267aff10..79710c129fb7 100644
--- a/docs/html-intl/intl/ko/training/material/animations.jd
+++ b/docs/html-intl/intl/ko/training/material/animations.jd
@@ -47,7 +47,7 @@ page.title=사용ìžì§€ì • 애니메ì´ì…˜ì˜ ì •ì˜
<ul>
<li>ì œí•œëœ ë¬¼ê²°ì˜ ê²½ìš°, <code>?android:attr/selectableItemBackground</code></li>
-<li>뷰를 넘어 확장ë˜ëŠ” ë¬¼ê²°ì˜ ê²½ìš°, <code>?android:attr/selectableItemBackgroundBorderless</code>
+<li>뷰를 넘어 확장ë˜ëŠ” ë¬¼ê²°ì˜ ê²½ìš°, <code>?android:attr/selectableItemBackgroundBorderless</code>
ì´ ê²½ìš° ë¬¼ê²°ì´ nullì´ ì•„ë‹Œ ë°°ê²½ì„ ê°€ì§„ ë·°ì˜ ê°€ìž¥ 가까운 ìƒìœ„ 요소 ìœ„ì— ê·¸ë ¤ì§€ê³  해당 ìƒìœ„ 요소까지로 제한ë©ë‹ˆë‹¤.
</li>
</ul>
@@ -139,7 +139,7 @@ anim.start();
</video>
</div>
<div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
- <p class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>그림 1</strong> -
+ <p class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>그림 1</strong> -
공유 요소를 ì´ìš©í•œ 전환.</p>
<em>ì˜í™”를 재ìƒí•˜ë ¤ë©´ 기기 í™”ë©´ì„ í´ë¦­í•˜ì„¸ìš”.</em>
</div>
@@ -263,7 +263,7 @@ setSharedElementEnterTransition()} 메서드는 호출ë˜ëŠ” ì•¡í‹°ë¹„í‹°ì˜ ë“¤
그렇지 않으면 호출하는 액티비티가 나가기 ì „í™˜ì„ ì‹œìž‘í•˜ì§€ë§Œ, 배율 ë˜ëŠ” 페ì´ë“œì™€ ê°™ì€ ì°½ ì „í™˜ì´ ë‚˜íƒ€ë‚©ë‹ˆë‹¤.
</p>
-<p>들어가기 ì „í™˜ì„ ìµœëŒ€í•œ 빨리 시작하려면 호출ë˜ëŠ” 액티비티ì—서
+<p>들어가기 ì „í™˜ì„ ìµœëŒ€í•œ 빨리 시작하려면 호출ë˜ëŠ” 액티비티ì—서
{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
메서드를 사용하세요. 그러면 ë”ìš± ì¸ìƒì ì¸ 들어가기 ì „í™˜ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.</p>
@@ -317,7 +317,7 @@ imgContainerView.setOnClickListener(new View.OnClickListener() {
});
</pre>
-<p>코드ì—서 ìƒì„±í•˜ëŠ” ê³µìœ ëœ ë™ì  ë·°ì˜ ê²½ìš°,
+<p>코드ì—서 ìƒì„±í•˜ëŠ” ê³µìœ ëœ ë™ì  ë·°ì˜ ê²½ìš°,
{@link android.view.View#setTransitionName View.setTransitionName()} 메서드를 사용하여 ë‘ ì•¡í‹°ë¹„í‹°ì˜ ê³µí†µ 요소 ì´ë¦„ì„ ì§€ì •í•©ë‹ˆë‹¤.
</p>
@@ -414,7 +414,7 @@ android.animation.StateListAnimator}를 XML 리소스로 ì •ì˜í•˜ëŠ” 방법ì„
&lt;/selector>
</pre>
-<p>사용ìžì§€ì • ë·° ìƒíƒœ 애니메ì´ì…˜ì„ ë·°ì— ì²¨ë¶€í•˜ë ¤ë©´ ì´ ì˜ˆì™€ ê°™ì´ XML 리소스 파ì¼ì˜
+<p>사용ìžì§€ì • ë·° ìƒíƒœ 애니메ì´ì…˜ì„ ë·°ì— ì²¨ë¶€í•˜ë ¤ë©´ ì´ ì˜ˆì™€ ê°™ì´ XML 리소스 파ì¼ì˜
<code>selector</code> 요소를 사용하여 애니메ì´í„°ë¥¼ ì •ì˜í•œ í›„ì— <code>android:stateListAnimator</code> íŠ¹ì„±ì„ í†µí•´ ë·°ì— í• ë‹¹í•©ë‹ˆë‹¤.
코드ì—서 ë·°ì— ìƒíƒœ ëª©ë¡ ì• ë‹ˆë©”ì´í„°ë¥¼ 할당하려면 {@link android.animation.AnimatorInflater#loadStateListAnimator
AnimationInflater.loadStateListAnimator()} 메서드를 사용하고,
diff --git a/docs/html-intl/intl/ko/training/material/lists-cards.jd b/docs/html-intl/intl/ko/training/material/lists-cards.jd
index 28fdf22cfae0..b8d6e791f9a9 100644
--- a/docs/html-intl/intl/ko/training/material/lists-cards.jd
+++ b/docs/html-intl/intl/ko/training/material/lists-cards.jd
@@ -204,7 +204,7 @@ public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder> {
확장하고 카드 ë‚´ì˜ ì •ë³´ë¥¼ 플랫í¼ì—서 ì¼ê´€ëœ 모습으로 표시할 수 있ë„ë¡ í•©ë‹ˆë‹¤. {@link
android.support.v7.widget.CardView} ìœ„ì ¯ì€ ê·¸ë¦¼ìžì™€ 둥근 모서리를 가질 수 있습니다.</p>
-<p>그림ìžê°€ 있는 카드를 ìƒì„±í•˜ë ¤ë©´ <code>card_view:cardElevation</code> íŠ¹ì„±ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
+<p>그림ìžê°€ 있는 카드를 ìƒì„±í•˜ë ¤ë©´ <code>card_view:cardElevation</code> íŠ¹ì„±ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
{@link android.support.v7.widget.CardView}는 Android 5.0(API 레벨 21) ì´ìƒì—서 실제 엘리베ì´ì…˜ ë° ë™ì  그림ìžë¥¼ 사용하며, ì´ì „ 버전ì—서는 ì´ì „ì˜ í”„ë¡œê·¸ëž˜ë° ë°©ì‹ì˜ ê·¸ë¦¼ìž êµ¬í˜„ìœ¼ë¡œ 환ì›ë©ë‹ˆë‹¤. ìžì„¸í•œ ë‚´ìš©ì€ <a href="{@docRoot}training/material/compatibility.html">호환성 유지</a>를 참조하세요.
diff --git a/docs/html-intl/intl/ko/training/material/shadows-clipping.jd b/docs/html-intl/intl/ko/training/material/shadows-clipping.jd
index e04d0c524453..9d1a67920bd8 100644
--- a/docs/html-intl/intl/ko/training/material/shadows-clipping.jd
+++ b/docs/html-intl/intl/ko/training/material/shadows-clipping.jd
@@ -121,7 +121,7 @@ android.view.View#setOutlineProvider View.setOutlineProvider()} 메서드를 사
<p>뷰를 í´ë¦¬í•‘하면 ë·°ì˜ ëª¨ì–‘ì„ ì†ì‰½ê²Œ 바꿀 수 있습니다. 다른 ë””ìžì¸ ìš”ì†Œì™€ì˜ ì¼ê´€ì„±ì„ 위해, ë˜ëŠ” ì‚¬ìš©ìž ìž…ë ¥ì— ì‘답하여 ë·°ì˜ ëª¨ì–‘ì„ ë°”ê¾¸ê¸° 위해 뷰를 í´ë¦¬í•‘í•  수 있습니다. {@link android.view.View#setClipToOutline
View.setClipToOutline()} 메서드나 <code>android:clipToOutline</code> íŠ¹ì„±ì„ ì‚¬ìš©í•˜ì—¬ 뷰를 해당 윤곽선 ì˜ì—­ê¹Œì§€ í´ë¦¬í•‘í•  수 있습니다.
-
+
{@link android.graphics.Outline#canClip Outline.canClip()} 메서드ì—서 ê²°ì •ëœ ëŒ€ë¡œ 사ê°í˜•, ì›í˜• ë° ë‘¥ê·¼ 사ê°í˜•ì˜ ìœ¤ê³½ì„ ë§Œ í´ë¦¬í•‘ì„ ì§€ì›í•©ë‹ˆë‹¤.
</p>
diff --git a/docs/html-intl/intl/ko/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/intl/ko/training/monitoring-device-state/battery-monitoring.jd
index 2eacccf64106..058cf85223aa 100644
--- a/docs/html-intl/intl/ko/training/monitoring-device-state/battery-monitoring.jd
+++ b/docs/html-intl/intl/ko/training/monitoring-device-state/battery-monitoring.jd
@@ -7,8 +7,8 @@ next.title=ë„킹 ìƒíƒœì™€ 유형 í™•ì¸ ë° ëª¨ë‹ˆí„°ë§
next.link=docking-monitoring.html
@jd:body
-
-<div id="tb-wrapper">
+
+<div id="tb-wrapper">
<div id="tb">
<h2>ê°•ì˜ ëª©í‘œ</h2>
@@ -24,9 +24,9 @@ next.link=docking-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트 ë° ì¸í…트 í•„í„°</a>
</ul>
-</div>
</div>
-
+</div>
+
<p>백그ë¼ìš´ë“œ ì—…ë°ì´íŠ¸ê°€ 배터리 ìˆ˜ëª…ì— ë¯¸ì¹˜ëŠ” ì˜í–¥ì„ 줄ì´ê¸° 위하여 백그ë¼ìš´ë“œ ì—…ë°ì´íЏ 빈ë„수를 변경하는 경우, 현재 배터리 수준과 ì¶©ì „ ìƒíƒœë¶€í„° 확ì¸í•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.</p>
<p>애플리케ì´ì…˜ ì—…ë°ì´íЏ ìˆ˜í–‰ì´ ë°°í„°ë¦¬ ìˆ˜ëª…ì— ë¯¸ì¹˜ëŠ” ì˜í–¥ì€ 배터리 수준 ë° ê¸°ê¸°ì˜ ì¶©ì „ ìƒíƒœì— ë”°ë¼ ë‹¤ë¦…ë‹ˆë‹¤. 기기를 AC 충전기로 충전하는 ë™ì•ˆ ì—…ë°ì´íЏ ìˆ˜í–‰ì´ ë¯¸ì¹˜ëŠ” ì˜í–¥ì€ ë¬´ì‹œí•´ë„ ì¢‹ìŠµë‹ˆë‹¤. ë”°ë¼ì„œ 기기가 범용 ì¶©ì „ê¸°ì— ì—°ê²°ë˜ì–´ ìžˆì„ ë•ŒëŠ” 대부분 새로고침 빈ë„를 최대화할 수 있습니다. 반대로 기기가 ì¶©ì „ ì¤‘ì´ ì•„ë‹ˆë¼ë©´, ì—…ë°ì´íЏ 빈ë„를 줄ì´ëŠ” ê²ƒì´ ë°°í„°ë¦¬ 수명 ì—°ìž¥ì— ë„ì›€ì´ ë©ë‹ˆë‹¤.</p>
@@ -34,8 +34,8 @@ next.link=docking-monitoring.html
<p>마찬가지로 배터리가 ê±°ì˜ ë°©ì „ëœ ê²½ìš°, ì—…ë°ì´íЏ 빈ë„를 줄ì´ê±°ë‚˜ 중단할 수 있습니다.</p>
-<h2 id="DetermineChargeState">현재 ì¶©ì „ ìƒíƒœ 확ì¸</h2>
-
+<h2 id="DetermineChargeState">현재 ì¶©ì „ ìƒíƒœ 확ì¸</h2>
+
<p>먼저 현재 ì¶©ì „ ìƒíƒœë¥¼ 확ì¸í•˜ëŠ” 것부터 시작합니다. {@link android.os.BatteryManager}는 배터리 ì¶©ì „ ìƒíƒœ 등 ì¶©ì „ 정보를 스티키 {@link android.content.Intent}를 통해 브로드ìºìŠ¤íŠ¸í•©ë‹ˆë‹¤.</p>
<p>스티키 ì¸í…트ì´ë¯€ë¡œ {@link android.content.BroadcastReceiver}를 등ë¡í•  필요가 없으며 아래 코드 ìƒì˜ 리시버와 ê°™ì´ ê°„ë‹¨ížˆ {@code registerReceiver}ì„(를) 호출하여 {@code null}ì— ì œì¶œí•˜ë©´ 현재 배터리 ìƒíƒœê°€ 담긴 ì¸í…트가 반환ë©ë‹ˆë‹¤. ì—¬ê¸°ì— ì‹¤ì œ {@link android.content.BroadcastReceiver} 개체 사용할 수 있으나, ì´í›„ 섹션ì—서 ì—…ë°ì´íŠ¸ë¥¼ 다루게 ë˜ë¯€ë¡œ 그럴 필요는 없습니다.</p>
@@ -58,7 +58,7 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
<p>ì¼ë°˜ì ìœ¼ë¡œ 기기가 AC ì¶©ì „ê¸°ì— ì—°ê²°ëœ ê²½ìš° 백그ë¼ìš´ë“œ ì—…ë°ì´íЏ 빈ë„를 최대화합니다. USB를 통해 충전하는 경우 ì—…ë°ì´íЏ 빈ë„를 낮춥니다. 배터리가 ë°©ì „ 중ì´ë¼ë©´ 빈ë„를 ë” ë§Žì´ ë‚®ì¶”ë„ë¡ í•©ë‹ˆë‹¤.</p>
-<h2 id="MonitorChargeState">ì¶©ì „ ìƒíƒœ 변경사항 모니터ë§</h2>
+<h2 id="MonitorChargeState">ì¶©ì „ ìƒíƒœ 변경사항 모니터ë§</h2>
<p>ì¶©ì „ ìƒíƒœëŠ” 수시로 변하므로 ì¶©ì „ ìƒíƒœì˜ ë³€ê²½ì‚¬í•­ì„ í™•ì¸í•˜ê³  ì´ì— ë”°ë¼ ì—…ë°ì´íЏ 주기를 변경하는 ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤.</p>
@@ -75,11 +75,11 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
<pre>public class PowerConnectionReceiver extends BroadcastReceiver {
&#64;Override
- public void onReceive(Context context, Intent intent) {
+ public void onReceive(Context context, Intent intent) {
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
-
+
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
@@ -87,7 +87,7 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
}</pre>
-<h2 id="CurrentLevel">현재 배터리 수준 확ì¸</h2>
+<h2 id="CurrentLevel">현재 배터리 수준 확ì¸</h2>
<p>현재 배터리 ìˆ˜ì¤€ì„ í™•ì¸í•˜ëŠ” ê²ƒì´ ìœ ìš©í•œ ê²½ìš°ë„ ìžˆìŠµë‹ˆë‹¤. 배터리 ì¶©ì „ì´ ìˆ˜ì¤€ ì´í•˜ì¸ 경우 백그ë¼ìš´ë“œ ì—…ë°ì´íЏ 빈ë„를 ì¤„ì¼ ìˆ˜ 있습니다.</p>
@@ -99,7 +99,7 @@ int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale;</pre>
-<h2 id="MonitorLevel">배터리 수준 중요 변경사항 모니터ë§</h2>
+<h2 id="MonitorLevel">배터리 수준 중요 변경사항 모니터ë§</h2>
<p>배터리 ìƒíƒœë¥¼ ì§€ì†ì ìœ¼ë¡œ 확ì¸í•˜ëŠ” ê²ƒì€ ì‰½ì§€ 않지만, ê¼­ 그럴 í•„ìš”ë„ ì—†ìŠµë‹ˆë‹¤.</p>
diff --git a/docs/html-intl/intl/ko/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/intl/ko/training/monitoring-device-state/connectivity-monitoring.jd
index 5666b98c9045..377f85f3215a 100644
--- a/docs/html-intl/intl/ko/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html-intl/intl/ko/training/monitoring-device-state/connectivity-monitoring.jd
@@ -11,7 +11,7 @@ next.link=manifest-receivers.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>ê°•ì˜ ëª©í‘œ</h2>
@@ -27,7 +27,7 @@ next.link=manifest-receivers.html
<li><a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트 ë° ì¸í…트 í•„í„°</a>
</ul>
-</div>
+</div>
</div>
<p>반복 알람과 백그ë¼ìš´ë“œ 서비스는 ì¼ë°˜ì ìœ¼ë¡œ ì¸í„°ë„· 리소스 ë° ìºì‹œ ë°ì´í„°ë¡œë¶€í„° 애플리케ì´ì…˜ì˜ ì—…ë°ì´íŠ¸ë¥¼ 예약하거나 긴 ì‹œê°„ì´ í•„ìš”í•œ 다운로드를 실행하는 ë° ì‚¬ìš©ë©ë‹ˆë‹¤. 하지만 ì¸í„°ë„·ì— ì—°ê²°ë˜ì–´ 있지 않거나 ì—°ê²°ì´ ë§¤ìš° ëŠë ¤ 다운로드를 완료하지 못한다면 ì—…ë°ì´íЏ ì˜ˆì•½ì„ í•´ë„ ì†Œìš©ì´ ì—†ê² ì£ ?</p>
@@ -35,18 +35,18 @@ next.link=manifest-receivers.html
<p>ì¸í„°ë„·ì— ì—°ê²°ë˜ì—ˆëŠ”ì§€, ì–´ë–¤ ì—°ê²° ë°©ì‹ì¸ì§€ë¥¼ 확ì¸í•˜ê¸° 위하여 {@link android.net.ConnectivityManager}를 사용할 수 있습니다.</p>
-<h2 id="DetermineConnection">ì¸í„°ë„·ì— ì—°ê²°ë˜ì–´ 있는지 확ì¸</h2>
-
+<h2 id="DetermineConnection">ì¸í„°ë„·ì— ì—°ê²°ë˜ì–´ 있는지 확ì¸</h2>
+
<p>ì¸í„°ë„·ì— ì—°ê²°ë˜ì–´ 있지 않는 경우 ì¸í„°ë„· 리소스를 기반으로 한 ì—…ë°ì´íЏ ì˜ˆì•½ì„ í•  필요가 없습니다. 다ìŒì€ 활성 네트워í¬ë¥¼ 쿼리하고 ì¸í„°ë„·ì´ ì—°ê²°ë˜ì–´ 있는지 확ì¸í•˜ê¸° 위한 {@link android.net.ConnectivityManager} ì‚¬ìš©ë²•ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.</p>
<pre>ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
-
+
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
-<h2 id="DetermineType">ì¸í„°ë„· ì—°ê²° 유형 확ì¸</h2>
+<h2 id="DetermineType">ì¸í„°ë„· ì—°ê²° 유형 확ì¸</h2>
<p>현재 사용할 수 있는 ì¸í„°ë„· ì—°ê²° ìœ í˜•ì„ í™•ì¸í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p>
@@ -59,7 +59,7 @@ boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
<p>ì—…ë°ì´íŠ¸ë¥¼ 비활성화한 경우, ì¸í„°ë„· ì—°ê²°ì´ ìž¬ê°œë˜ë©´ ì—…ë°ì´íŠ¸ë¥¼ 다시 시작하기 위해 ì—°ê²° ë³€ê²½ì‚¬í•­ì„ ì•Œê³  있는 ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤.</p>
-<h2 id="MonitorChanges">ì—°ê²° 변경사항 모니터ë§</h2>
+<h2 id="MonitorChanges">ì—°ê²° 변경사항 모니터ë§</h2>
<p>ì—°ê²° ì •ë³´ê°€ ë³€ê²½ë  ë•Œë§ˆë‹¤ {@link android.net.ConnectivityManager}는 {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}({@code "android.net.conn.CONNECTIVITY_CHANGE"}) ì•¡ì…˜ì„ ë¸Œë¡œë“œìºìŠ¤íŠ¸í•©ë‹ˆë‹¤. ë³€ê²½ì‚¬í•­ì„ ìˆ˜ì‹ í•˜ê±°ë‚˜ ì ì ˆížˆ 백그ë¼ìš´ë“œ ì—…ë°ì´íŠ¸ë¥¼ 다시 시작 ë˜ëŠ” ì¼ì‹œ 중지하기 위해 매니페스트ì—서 브로드ìºìŠ¤íŠ¸ 리시버를 등ë¡í•  수 있습니다.</p>
diff --git a/docs/html-intl/intl/ko/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/intl/ko/training/monitoring-device-state/docking-monitoring.jd
index 0cd61a067d93..f3cf36d3299d 100644
--- a/docs/html-intl/intl/ko/training/monitoring-device-state/docking-monitoring.jd
+++ b/docs/html-intl/intl/ko/training/monitoring-device-state/docking-monitoring.jd
@@ -10,7 +10,7 @@ next.link=connectivity-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>ê°•ì˜ ëª©í‘œ</h2>
@@ -26,7 +26,7 @@ next.link=connectivity-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트 ë° ì¸í…트 í•„í„°</a>
</ul>
-</div>
+</div>
</div>
<p>Android 기기는 여러 ì¢…ë¥˜ì˜ ë„í¬ë¡œ ë„í‚¹ë  ìˆ˜ 있습니다. 여기ì—는 ì¹´í° ë˜ëŠ” 홈 ë„í¬ì™€ 디지털 ë° ì•„ë‚ ë¡œê·¸ ë„í¬ê°€ í¬í•¨ë©ë‹ˆë‹¤. ë§Žì€ ë„í¬ê°€ ë„í‚¹ëœ ê¸°ê¸°ì— ì „ê¸°ë¥¼ 공급하므로 ì¼ë°˜ì ìœ¼ë¡œ ì¶©ì „ ìƒíƒœì™€ ë„í¬ ìƒíƒœëŠ” 밀접한 ê´€ë ¨ì´ ìžˆìŠµë‹ˆë‹¤.</p>
@@ -36,8 +36,8 @@ next.link=connectivity-monitoring.html
<p>ë„í¬ ìƒíƒœëŠ” 스티키 {@link android.content.Intent}로 브로드ìºìŠ¤íŠ¸ë˜ì–´ 기기가 ë„킹ë˜ì—ˆëŠ”ì§€ 여부와 ë„킹ë˜ì—ˆë‹¤ë©´ ì–´ë–¤ ì¢…ë¥˜ì˜ ë„í¬ì¸ì§€ 알아낼 수 있습니다. </p>
-<h2 id="CurrentDockState">현재 ë„킹 ìƒíƒœ 확ì¸</h2>
-
+<h2 id="CurrentDockState">현재 ë„킹 ìƒíƒœ 확ì¸</h2>
+
<p>ë„í¬ ìƒíƒœì˜ ì„¸ë¶€ì‚¬í•­ì€ {@link android.content.Intent#ACTION_DOCK_EVENT} ì•¡ì…˜ì˜ ìŠ¤í‹°í‚¤ 브로드ìºìŠ¤íŠ¸ ë‚´ì— ì¶”ê°€ë¡œ í¬í•¨ë©ë‹ˆë‹¤. 스티키 브로드ìºìŠ¤íŠ¸ì´ë¯€ë¡œ {@link android.content.BroadcastReceiver}를 등ë¡í•  필요가 없습니다. ë‹¤ìŒ ìŠ¤ë‹ˆíŽ«ì— í‘œì‹œëœ ë¸Œë¡œë“œìºìŠ¤íŠ¸ 수신기와 ê°™ì´ ê°„ë‹¨ížˆ {@link android.content.Context#registerReceiver registerReceiver()}를 호출하여 {@code null}ì— ì œì¶œí•  수 있습니다. </p>
<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
@@ -49,9 +49,9 @@ Intent dockStatus = context.registerReceiver(null, ifilter);</pre>
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
-<h2 id="DockType">현재 ë„í¬ ìœ í˜• 확ì¸</h2>
+<h2 id="DockType">현재 ë„í¬ ìœ í˜• 확ì¸</h2>
-<p>4가지 ìœ í˜•ì˜ ë„í¬ê°€ 있습니다.
+<p>4가지 ìœ í˜•ì˜ ë„í¬ê°€ 있습니다.
<ul><li>ì¹´í°</li>
<li>ë°ìФí¬</li>
<li>저가형(아날로그) ë°ìФí¬</li>
@@ -60,12 +60,12 @@ boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
<p>마지막 ë‘ ê°€ì§€ ì˜µì…˜ì€ API 수준 11ì˜ Androidì—ë§Œ 제공ë˜ì–´ 있으므로, 디지털 ë˜ëŠ” ì•„ë‚ ë¡œê·¸ì— ìƒê´€í•˜ì§€ 않고 관심 있는 세 가지 ë„í¬ ìœ í˜•ì— ëŒ€í•´ 확ì¸í•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.</p>
<pre>boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
-boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
+boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
dockState == EXTRA_DOCK_STATE_LE_DESK ||
dockState == EXTRA_DOCK_STATE_HE_DESK;</pre>
-<h2 id="MonitorDockState">ë„í¬ ìƒíƒœ ë˜ëŠ” 유형 변경사항 모니터ë§</h2>
+<h2 id="MonitorDockState">ë„í¬ ìƒíƒœ ë˜ëŠ” 유형 변경사항 모니터ë§</h2>
<p>ë„킹 ìƒíƒœê°€ 바뀌면 {@link android.content.Intent#ACTION_DOCK_EVENT} ì•¡ì…˜ì´ ë¸Œë¡œë“œìºìŠ¤íŠ¸ë©ë‹ˆë‹¤. ê¸°ê¸°ì˜ ë„í¬ ìƒíƒœ ë³€ê²½ì‚¬í•­ì„ ëª¨ë‹ˆí„°ë§í•˜ë ¤ë©´ ì•„ëž˜ì— í‘œì‹œëœ ëŒ€ë¡œ 애플리케ì´ì…˜ 매니페스트ì—서 브로드ìºìŠ¤íŠ¸ 리시버를 등ë¡í•˜ì„¸ìš”.</p>
diff --git a/docs/html-intl/intl/ko/training/monitoring-device-state/index.jd b/docs/html-intl/intl/ko/training/monitoring-device-state/index.jd
index f96e2e16dc57..030701f99956 100644
--- a/docs/html-intl/intl/ko/training/monitoring-device-state/index.jd
+++ b/docs/html-intl/intl/ko/training/monitoring-device-state/index.jd
@@ -7,10 +7,10 @@ next.link=battery-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
-<h2>요구사항과 선행조건</h2>
+<h2>요구사항과 선행조건</h2>
<ul>
<li>Android 2.0(API 수준 5) ë˜ëŠ” ì´ìƒ</li>
<li> <a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트 ë° ì¸í…트 í•„í„°</a> 사용 경험</li>
@@ -21,19 +21,19 @@ next.link=battery-monitoring.html
<li><a href="{@docRoot}guide/components/services.html">서비스</a>
</ul>
-</div>
+</div>
</div>
<p>ì¢‹ì€ ì•±ì€ í˜¸ìŠ¤íŠ¸ ê¸°ê¸°ì˜ ë°°í„°ë¦¬ ìˆ˜ëª…ì— ë¯¸ì¹˜ëŠ” ì˜í–¥ì´ 미미해야 합니다. ê°•ì˜ë¥¼ 통해 호스트 ê¸°ê¸°ì˜ ìƒíƒœì— ë”°ë¼ ê¸°ëŠ¥ê³¼ ë™ìž‘ì„ ìˆ˜ì •í•˜ëŠ” ê²ƒì„ ëª¨ë‹ˆí„°ë§í•˜ëŠ” ì•±ì„ êµ¬ì¶•í•  수 있게 ë©ë‹ˆë‹¤.</p>
<p>ì—°ê²°ì´ ëŠê²¼ì„ 때 백그ë¼ìš´ë“œ 서비스 ì—…ë°ì´íŠ¸ë¥¼ 사용 중지하거나, 배터리 ìˆ˜ì¤€ì´ ë‚®ì„ ë•Œ ì—…ë°ì´íЏ 빈ë„를 줄ì´ëŠ” 조치를 취하여, ì‚¬ìš©ìž í™˜ê²½ì„ ì†ìƒì‹œí‚¤ì§€ 않고 배터리 ìˆ˜ëª…ì— ë¯¸ì¹˜ëŠ” ì˜í–¥ì„ 최소화할 수 있습니다.</p>
-<h2>ê°•ì˜</h2>
-
+<h2>ê°•ì˜</h2>
+
<!-- Create a list of the lessons in this class along with a short description of each lesson.
These should be short and to the point. It should be clear from reading the summary whether someone
-will want to jump to a lesson or not.-->
-
+will want to jump to a lesson or not.-->
+
<dl>
<dt><b><a href="battery-monitoring.html">배터리 수준 ë° ì¶©ì „ ìƒíƒœ 모니터ë§</a></b></dt>
<dd>ì¶©ì „ ìƒíƒœì—서 현재 배터리 수준 ë° ë³€ê²½ì‚¬í•­ì„ í™•ì¸ ë° ëª¨ë‹ˆí„°ë§í•˜ì—¬ ì•±ì˜ ì—…ë°ì´íЏ 빈ë„를 변경하는 ë²•ì„ ì•Œì•„ë³´ì„¸ìš”.</dd>
@@ -46,4 +46,4 @@ will want to jump to a lesson or not.-->
<dt><b><a href="manifest-receivers.html">온디맨드로 브로드ìºìŠ¤íŠ¸ 수신기 ì¡°ìž‘</a></b></dt>
<dd>매니페스트 ë‚´ì— ì„ ì–¸í–ˆë˜ ë¸Œë¡œë“œìºìŠ¤íŠ¸ 리시버는 현재 기기 ìƒíƒœì—서 í•„ìš” 없는 ê²ƒì„ ì‚¬ìš© 중지하ë„ë¡ ëŸ°íƒ€ìž„ 때 ì „í™˜ë  ìˆ˜ 있습니다. 기기가 특정 ìƒíƒœì— ë„달할 때까지 ìƒíƒœ 변화 리시버 ë° ì§€ì—° ì•¡ì…˜ì„ ì „í™˜ ë° ë‹¨ê³„ì ìœ¼ë¡œ 연결하여 íš¨ìœ¨ì„±ì„ í–¥ìƒí•˜ëŠ” ë²•ì„ ì•Œì•„ë³´ì„¸ìš”.</dd>
-</dl> \ No newline at end of file
+</dl> \ No newline at end of file
diff --git a/docs/html-intl/intl/ko/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/intl/ko/training/monitoring-device-state/manifest-receivers.jd
index c5c311b75f6b..0eefe0850182 100644
--- a/docs/html-intl/intl/ko/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html-intl/intl/ko/training/monitoring-device-state/manifest-receivers.jd
@@ -9,7 +9,7 @@ previous.link=connectivity-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>ê°•ì˜ ëª©í‘œ</h2>
@@ -23,7 +23,7 @@ previous.link=connectivity-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">ì¸í…트 ë° ì¸í…트 í•„í„°</a>
</ul>
-</div>
+</div>
</div>
<p>기기 ìƒíƒœ ë³€ê²½ì„ ëª¨ë‹ˆí„°ë§í•˜ëŠ” 가장 간단한 ë°©ë²•ì€ ëª¨ë‹ˆí„°ë§í•˜ëŠ” ê° ìƒíƒœì— 대해 {@link android.content.BroadcastReceiver}를 만들어 ê°ê°ì„ 애플리케ì´ì…˜ ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ë“±ë¡í•˜ëŠ” 것입니다. 그러면 ê° ë¦¬ì‹œë²„ ë‚´ì—서 현재 기기 ìƒíƒœë¥¼ 기반으로 반복 ì•ŒëžŒì˜ ì¼ì •ì„ ê°„ë‹¨ížˆ 변경할 수 있습니다.</p>
@@ -31,10 +31,10 @@ previous.link=connectivity-monitoring.html
<p>ì´ ë°©ë²•ì˜ ë¶€ìž‘ìš©ì€ ë¦¬ì‹œë²„ 중 하나ë¼ë„ 실행ë˜ë©´ 매번 ì•±ì´ ê¸°ê¸°ì˜ ì ˆì „ 모드를 해제시킨다는 것입니다.</p>
<p>ë” ë‚˜ì€ ë°©ë²•ì€ ëŸ°íƒ€ìž„ 때 브로드ìºìŠ¤íŠ¸ 리시버를 사용 중지 ë˜ëŠ” 사용하ë„ë¡ ì„¤ì •í•˜ëŠ” 것입니다. ì´ë ‡ê²Œ 하면 ë§¤ë‹ˆíŽ˜ìŠ¤íŠ¸ì— ì„ ì–¸í•œ 리시버를 필요할 때만 시스템 ì´ë²¤íŠ¸ì— ì˜í•´ 실행ë˜ëŠ” 수ë™ì ì¸ 알람으로 사용할 수 있습니다.</p>
-
-<h2 id="ToggleReceivers">효율성 í–¥ìƒì„ 위한 ìƒíƒœ 변화 ìˆ˜ì‹ ê¸°ì˜ ì „í™˜ ë° ë‹¨ê³„ì  ì—°ê²° </h2>
-
+
+<h2 id="ToggleReceivers">효율성 í–¥ìƒì„ 위한 ìƒíƒœ 변화 ìˆ˜ì‹ ê¸°ì˜ ì „í™˜ ë° ë‹¨ê³„ì  ì—°ê²° </h2>
+
<p>{@link android.content.pm.PackageManager}를 사용하여 아래ì—서 í‘œì‹œëœ ëŒ€ë¡œ 모든 사용 ë˜ëŠ” 사용 중지하기 ì›í•˜ëŠ” 브로드ìºìŠ¤íŠ¸ 리시버를 í¬í•¨í•˜ì—¬ 매니페스트 ë‚´ì— ì •ì˜ëœ 모든 ìš”ì†Œì˜ ì‚¬ìš© 가능 ìƒíƒœë¥¼ 전환할 수 있습니다.</p>
<pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
diff --git a/docs/html-intl/intl/ko/training/multiscreen/adaptui.jd b/docs/html-intl/intl/ko/training/multiscreen/adaptui.jd
index cb7b66c90238..a8d2fc16939f 100644
--- a/docs/html-intl/intl/ko/training/multiscreen/adaptui.jd
+++ b/docs/html-intl/intl/ko/training/multiscreen/adaptui.jd
@@ -10,9 +10,9 @@ previous.link=screendensities.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
-
+<div id="tb-wrapper">
+<div id="tb">
+
<h2>ê°•ì˜ ëª©í‘œ</h2>
<ol>
@@ -27,17 +27,17 @@ previous.link=screendensities.html
<ul>
<li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">태블릿 ë° íœ´ëŒ€ì „í™” ì§€ì›</a></li>
</ul>
-
+
<h2>다운로드 </h2>
-
+
<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 앱 다운로드</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
<p>현재 애플리케ì´ì…˜ì´ 표시하는 ë ˆì´ì•„ì›ƒì— ë”°ë¼ UI 플로가 달ë¼ì§ˆ 수 있습니다. 예를 들어 애플리케ì´ì…˜ì´ ì´ì¤‘ ì°½ 모드로 ë˜ì–´ 있는 경우ì—는 왼쪽 ì°½ì— ìžˆëŠ” í•­ëª©ì„ í´ë¦­í•˜ë©´ 오른쪽 ì°½ì— ì½˜í…츠가 표시ë˜ê³ , ë‹¨ì¼ ì°½ 모드로 ë˜ì–´ 있는 경우ì—는 콘í…츠가 해당 ì°½ì— í‘œì‹œë©ë‹ˆë‹¤(다른 액티비티ì—서).</p>
@@ -56,7 +56,7 @@ public class NewsReaderActivity extends FragmentActivity {
setContentView(R.layout.main_layout);
View articleView = findViewById(R.id.article);
- mIsDualPane = articleView != null &amp;&amp;
+ mIsDualPane = articleView != null &amp;&amp;
articleView.getVisibility() == View.VISIBLE;
}
}
@@ -116,7 +116,7 @@ public void onCreate(Bundle savedInstanceState) {
else {
/* use list navigation (spinner) */
actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
- SpinnerAdapter adap = new ArrayAdapter<String>(this,
+ SpinnerAdapter adap = new ArrayAdapter<String>(this,
R.layout.headline_item, CATEGORIES);
actionBar.setListNavigationCallbacks(adap, handler);
}
@@ -168,7 +168,7 @@ public class HeadlinesFragment extends ListFragment {
public class HeadlinesFragment extends ListFragment {
...
&#64;Override
- public void onItemClick(AdapterView&lt;?&gt; parent,
+ public void onItemClick(AdapterView&lt;?&gt; parent,
View view, int position, long id) {
if (null != mHeadlineSelectedListener) {
mHeadlineSelectedListener.onHeadlineSelected(position);
diff --git a/docs/html-intl/intl/ko/training/multiscreen/index.jd b/docs/html-intl/intl/ko/training/multiscreen/index.jd
index dd152aea410a..0a30f92abaab 100644
--- a/docs/html-intl/intl/ko/training/multiscreen/index.jd
+++ b/docs/html-intl/intl/ko/training/multiscreen/index.jd
@@ -7,10 +7,10 @@ next.link=screensizes.html
@jd:body
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>요구사항과 선행조건</h2>
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>요구사항과 선행조건</h2>
<ul>
<li>Android 1.6 ì´ìƒ(샘플 ì•±ì˜ ê²½ìš° 2.1 ì´ìƒ)</li>
@@ -27,17 +27,17 @@ href="{@docRoot}tools/support-library/index.html">호환성 ë¼ì´ë¸ŒëŸ¬ë¦¬</a>ë
<ul>
<li><a href="{@docRoot}guide/practices/screens_support.html">다양한 화면 ì§€ì›</a></li>
</ul>
-
-<h2>다운로드 </h2>
-
-<div class="download-box">
+
+<h2>다운로드 </h2>
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 앱 다운로드</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-</div>
-</div>
-
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
+
<p>Android는 소형 휴대전화ì—서부터 대형 TVì— ì´ë¥´ê¸°ê¹Œì§€ 다양한 화면 í¬ê¸°ì˜ ìˆ˜ë§Žì€ ê¸°ê¸° ìœ í˜•ì„ ì§€ì›í•©ë‹ˆë‹¤. ë”°ë¼ì„œ 애플리케ì´ì…˜ì´ 모든 화면 í¬ê¸°ì™€ 호환ë˜ì–´ 최대한 ë§Žì€ ì‚¬ìš©ìžê°€ 사용할 수 있ë„ë¡ ë””ìžì¸í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•©ë‹ˆë‹¤.</p>
<p>하지만 다양한 기기 유형과 호환ë˜ëŠ” 것만으로는 충분하지 않습니다. ê° í™”ë©´ í¬ê¸°ì— ë”°ë¼ ì‚¬ìš©ìž ìƒí˜¸ìž‘ìš©ì— ìœ ë¦¬í•œ ì ê³¼ 불리한 ì ì´ 다릅니다. ë”°ë¼ì„œ 사용ìžì—게 ë§Œì¡±ì„ ì£¼ê³  ê¹Šì€ ì¸ìƒì„ 심어주려면 애플리케ì´ì…˜ì´ 단지 여러 í™”ë©´ì„ <em>ì§€ì›</em>하는 ë° ê·¸ì¹˜ì§€ 않고 화면 구성별로 ì‚¬ìš©ìž í™˜ê²½ì„ <em>최ì í™”</em>해야 합니다.</p>
@@ -48,17 +48,17 @@ href="{@docRoot}tools/support-library/index.html">호환성 ë¼ì´ë¸ŒëŸ¬ë¦¬</a>ë
<p class="note"><strong>참고:</strong> ì´ ê°•ì˜ ë° ê°•ì˜ì™€ ê´€ë ¨ëœ ìƒ˜í”Œì€ <a
href="{@docRoot}tools/support-library/index.html">호환성 ë¼ì´ë¸ŒëŸ¬ë¦¬</a>를 사용하며 ì´ëŠ” Android 3.0 ì´í•˜ 버전ì—서 <PH>{@link android.app.Fragment}</PH> API를 사용하기 위해서입니다. ì´ ê°•ì˜ì—서 API를 ëª¨ë‘ ì‚¬ìš©í•˜ë ¤ë©´ ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 다운로드하여 애플리케ì´ì…˜ì— 추가해야 합니다.</p>
-
-
-<h2>ê°•ì˜</h2>
-
-<dl>
- <dt><b><a href="screensizes.html">다양한 화면 í¬ê¸° ì§€ì›</a></b></dt>
- <dd>ì´ ê°•ì˜ì—서는 여러 다양한 화면 í¬ê¸°ì— ì¡°ì •ë˜ëŠ” ë ˆì´ì•„ì›ƒì„ ë””ìžì¸í•˜ëŠ” 방법(유연한 보기 í¬ê¸°, <PH>{@link android.widget.RelativeLayout}</PH>, 화면 í¬ê¸° ë° ë°©í–¥ 한정ìž, 별칭 í•„í„° ë° ë‚˜ì¸-패치 비트맵 사용하기)ì„ ì•ˆë‚´í•©ë‹ˆë‹¤.</dd>
-
- <dt><b><a href="screendensities.html">다양한 화면 ë°€ë„ ì§€ì›</a></b></dt>
- <dd>ì´ ê°•ì˜ì—서는 다양한 픽셀 ë°€ë„를 가진 í™”ë©´ì„ ì§€ì›í•˜ëŠ” 방법(ë°€ë„ ë…립형 픽셀(density-independent pixel) 사용하기 ë° ë°€ë„별로 ì í•©í•œ 비트맵 제공하기)ì„ ì„¤ëª…í•©ë‹ˆë‹¤.</dd>
-
- <dt><b><a href="adaptui.html">조정형 UI 플로우 구현</a></b></dt>
- <dd>ì´ ê°•ì˜ì—서는 여러 화면 í¬ê¸°/ë°€ë„ ì¡°í•©ì— ì¡°ì •ë˜ë„ë¡ UI 플로우를 구현하는 방법(활성 ë ˆì´ì•„ì›ƒì˜ ëŸ°íƒ€ìž„ ê°ì§€, 현재 ë ˆì´ì•„ì›ƒì— ë”°ë¥¸ 대ì‘, 화면 구성 변경 처리)ì„ ì„¤ëª…í•©ë‹ˆë‹¤.</dd>
-</dl>
+
+
+<h2>ê°•ì˜</h2>
+
+<dl>
+ <dt><b><a href="screensizes.html">다양한 화면 í¬ê¸° ì§€ì›</a></b></dt>
+ <dd>ì´ ê°•ì˜ì—서는 여러 다양한 화면 í¬ê¸°ì— ì¡°ì •ë˜ëŠ” ë ˆì´ì•„ì›ƒì„ ë””ìžì¸í•˜ëŠ” 방법(유연한 보기 í¬ê¸°, <PH>{@link android.widget.RelativeLayout}</PH>, 화면 í¬ê¸° ë° ë°©í–¥ 한정ìž, 별칭 í•„í„° ë° ë‚˜ì¸-패치 비트맵 사용하기)ì„ ì•ˆë‚´í•©ë‹ˆë‹¤.</dd>
+
+ <dt><b><a href="screendensities.html">다양한 화면 ë°€ë„ ì§€ì›</a></b></dt>
+ <dd>ì´ ê°•ì˜ì—서는 다양한 픽셀 ë°€ë„를 가진 í™”ë©´ì„ ì§€ì›í•˜ëŠ” 방법(ë°€ë„ ë…립형 픽셀(density-independent pixel) 사용하기 ë° ë°€ë„별로 ì í•©í•œ 비트맵 제공하기)ì„ ì„¤ëª…í•©ë‹ˆë‹¤.</dd>
+
+ <dt><b><a href="adaptui.html">조정형 UI 플로우 구현</a></b></dt>
+ <dd>ì´ ê°•ì˜ì—서는 여러 화면 í¬ê¸°/ë°€ë„ ì¡°í•©ì— ì¡°ì •ë˜ë„ë¡ UI 플로우를 구현하는 방법(활성 ë ˆì´ì•„ì›ƒì˜ ëŸ°íƒ€ìž„ ê°ì§€, 현재 ë ˆì´ì•„ì›ƒì— ë”°ë¥¸ 대ì‘, 화면 구성 변경 처리)ì„ ì„¤ëª…í•©ë‹ˆë‹¤.</dd>
+</dl>
diff --git a/docs/html-intl/intl/ko/training/multiscreen/screendensities.jd b/docs/html-intl/intl/ko/training/multiscreen/screendensities.jd
index 5d6e2f3c59b7..dfaa44f33abc 100644
--- a/docs/html-intl/intl/ko/training/multiscreen/screendensities.jd
+++ b/docs/html-intl/intl/ko/training/multiscreen/screendensities.jd
@@ -12,8 +12,8 @@ next.link=adaptui.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
+<div id="tb-wrapper">
+<div id="tb">
<h2>ê°•ì˜ ëª©í‘œ</h2>
<ol>
@@ -29,15 +29,15 @@ next.link=adaptui.html
</ul>
<h2>다운로드 </h2>
-
-<div class="download-box">
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 앱 다운로드</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
<p>ì´ ê°•ì˜ì—서는 다양한 리소스를 제공하고 í•´ìƒë„ ë…립형(resolution-independent) 측정 단위를 ì‚¬ìš©í•¨ìœ¼ë¡œì¨ ë‹¤ì–‘í•œ 화면 ë°€ë„를 ì§€ì›í•˜ëŠ” ë°©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.</p>
@@ -48,8 +48,8 @@ next.link=adaptui.html
<p>예를 들어 ë‘ ê°œì˜ ë³´ê¸° 사ì´ì— ì—¬ë°±ì„ ì§€ì •í•  때 <code>px</code>ê°€ 아닌 <code>dp</code>를 사용합니다.</p>
<pre>
-&lt;Button android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+&lt;Button android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:text="&#64;string/clickme"
android:layout_marginTop="20dp" /&gt;
</pre>
@@ -57,8 +57,8 @@ next.link=adaptui.html
<p>í…스트 í¬ê¸°ë¥¼ 지정할 때ì—는 í•­ìƒ <code>sp</code>를 사용합니다.</p>
<pre>
-&lt;TextView android:layout_width="match_parent"
- android:layout_height="wrap_content"
+&lt;TextView android:layout_width="match_parent"
+ android:layout_height="wrap_content"
android:textSize="20sp" /&gt;
</pre>
diff --git a/docs/html-intl/intl/ko/training/multiscreen/screensizes.jd b/docs/html-intl/intl/ko/training/multiscreen/screensizes.jd
index f2e77a6e2b04..984923d5ee93 100644
--- a/docs/html-intl/intl/ko/training/multiscreen/screensizes.jd
+++ b/docs/html-intl/intl/ko/training/multiscreen/screensizes.jd
@@ -10,8 +10,8 @@ next.link=screendensities.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
+<div id="tb-wrapper">
+<div id="tb">
<h2>ê°•ì˜ ëª©í‘œ</h2>
<ol>
@@ -30,26 +30,26 @@ next.link=screendensities.html
<li><a href="{@docRoot}guide/practices/screens_support.html">다양한 화면 ì§€ì›</a></li>
</ul>
-<h2>다운로드 </h2>
-
-<div class="download-box">
+<h2>다운로드 </h2>
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 앱 다운로드</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
<p>ì´ ê°•ì˜ì—서는 다양한 화면 í¬ê¸°ë¥¼ ì§€ì›í•˜ëŠ” ë°©ë²•ì„ ì„¤ëª…í•©ë‹ˆë‹¤.</p>
-<ul>
- <li>í™”ë©´ì— ë§žê²Œ ë ˆì´ì•„웃 í¬ê¸° ì¡°ì •</li>
- <li>화면 êµ¬ì„±ì— ë”°ë¼ ì í•©í•œ UI ë ˆì´ì•„웃 제공</li>
+<ul>
+ <li>í™”ë©´ì— ë§žê²Œ ë ˆì´ì•„웃 í¬ê¸° ì¡°ì •</li>
+ <li>화면 êµ¬ì„±ì— ë”°ë¼ ì í•©í•œ UI ë ˆì´ì•„웃 제공</li>
<li>올바른 í™”ë©´ì— ì˜¬ë°”ë¥¸ ë ˆì´ì•„웃 ì ìš©</li>
- <li>정확하게 확대ë˜ëŠ” 비트맵 제공</li>
-</ul>
+ <li>정확하게 확대ë˜ëŠ” 비트맵 제공</li>
+</ul>
-<h2 id="TaskUseWrapMatchPar">'wrap_content' ë° 'match_parent' 사용</h2>
+<h2 id="TaskUseWrapMatchPar">'wrap_content' ë° 'match_parent' 사용</h2>
<p>ë ˆì´ì•„ì›ƒì´ ë‹¤ì–‘í•œ 화면 í¬ê¸°ì— ë”°ë¼ ìœ ì—°í•˜ê²Œ ì¡°ì •ë˜ë„ë¡ í•˜ë ¤ë©´ ì¼ë¶€ ë·° êµ¬ì„±ìš”ì†Œì˜ ë„ˆë¹„ì™€ 높ì´ì— <code>"wrap_content"</code> ë° <code>"match_parent"</code>를 사용해야 합니다. <code>"wrap_content"</code>를 사용하면 ë·°ì˜ ë„ˆë¹„ì™€ 높ì´ê°€ 해당 ë·° ë‚´ì— ì½˜í…츠가 ë“¤ì–´ê°€ëŠ”ë° í•„ìš”í•œ 최소 í¬ê¸°ë¡œ 설정ë˜ëŠ” 반면, <code>"match_parent"</code>(API 수준 8 ì´ì „ì—는 <code>"fill_parent"</code>ë¼ê³ ë„ 함)를 사용하면 구성요소가 확장ë˜ì–´ ë¶€ëª¨ë·°ì˜ í¬ê¸°ì™€ ì¼ì¹˜í•˜ê²Œ ë©ë‹ˆë‹¤.</p>
@@ -65,7 +65,7 @@ next.link=screendensities.html
<p class="img-caption"><strong>그림 1.</strong> 세로 모드(왼쪽) ë° ê°€ë¡œ 모드(오른쪽)ì—ì„œì˜ ë‰´ìŠ¤ ë¦¬ë” ìƒ˜í”Œ 앱</p>
-<h2 id="TaskUseRelativeLayout">RelativeLayout 사용</h2>
+<h2 id="TaskUseRelativeLayout">RelativeLayout 사용</h2>
<p>비êµì  복잡한 ë ˆì´ì•„ì›ƒì„ ë§Œë“¤ë ¤ë©´ <PH>{@link android.widget.LinearLayout}ì˜ ì¤‘ì²© ì¸ìŠ¤í„´ìŠ¤ì™€</PH> <code>"wrap_content"</code> ë° <code>"match_parent"</code> í¬ê¸°ì˜ ì¡°í•©ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. 하지만 <PH>{@link android.widget.LinearLayout}</PH> ì„ ì‚¬ìš©í•˜ë©´ ìžì‹ë·°ì˜ 여백 관계를 정확하게 제어할 수 없으며 <PH>{@link android.widget.LinearLayout}</PH> 단순히 나란하게 표시ë©ë‹ˆë‹¤. ìžì‹ë·°ë¥¼ ì¼ì§ì„ ì´ 아닌 다양한 방향으로 표시해야 하는 경우 구성요소 사ì´ì˜ 여백 관계를 중심으로 ë ˆì´ì•„ì›ƒì„ ì§€ì •í•  수 있는 <PH>{@link android.widget.RelativeLayout}</PH>ì„ ì‚¬ìš©í•˜ëŠ” ê²ƒì´ ë” ì¢‹ì€ ë°©ë²•ì¼ ìˆ˜ 있습니다. 예를 들어 화면 ì™¼ìª½ì— í•˜ë‚˜ì˜ ìžì‹ë·°ë¥¼, ì˜¤ë¥¸ìª½ì— ë‹¤ë¥¸ ìžì‹ë·°ë¥¼ 정렬할 수 있습니다.</p>
@@ -115,8 +115,8 @@ next.link=screendensities.html
<p>êµ¬ì„±ìš”ì†Œì˜ í¬ê¸°ê°€ 변하ë”ë¼ë„ 여백 관계가 <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH>.</p>
-
-<h2 id="TaskUseSizeQuali">í¬ê¸° í•œì •ìž ì‚¬ìš©</h2>
+
+<h2 id="TaskUseSizeQuali">í¬ê¸° í•œì •ìž ì‚¬ìš©</h2>
<p>ì´ì „ 섹션ì—서 다룬 유연한 ë ˆì´ì•„웃ì´ë‚˜ ìƒëŒ€ì  ë ˆì´ì•„웃으로는 한계가 있습니다. ì´ëŸ¬í•œ ë ˆì´ì•„ì›ƒì´ êµ¬ì„±ìš”ì†Œ ë‚´ë¶€ ë° ì£¼ìœ„ì˜ ì—¬ë°±ì„ í™•ìž¥í•˜ì—¬ 다양한 í™”ë©´ì— ë§žê²Œ ì¡°ì •ë˜ê¸´ 하지만 화면 í¬ê¸°ë³„로 최ì ì˜ ì‚¬ìš©ìž í™˜ê²½ì„ ì œê³µí•˜ì§€ëŠ” 못할 수 있습니다. ë”°ë¼ì„œ 애플리케ì´ì…˜ì€ 유연한 ë ˆì´ì•„ì›ƒì„ êµ¬í˜„í•  ë¿ ì•„ë‹ˆë¼ ë‹¤ì–‘í•œ 화면 êµ¬ì„±ì„ íƒ€ê²ŸíŒ…í•  수 있ë„ë¡ ë‹¤ì–‘í•œ 대체 ë ˆì´ì•„ì›ƒì„ ì œê³µí•´ì•¼ 합니다. ê·¸ ë°©ë²•ì€ ëŸ°íƒ€ìž„ì´ í˜„ìž¬ ê¸°ê¸°ì˜ êµ¬ì„±ì— ë”°ë¼ ì í•©í•œ 리소스(예: 화면 í¬ê¸°ë³„로 다른 ë ˆì´ì•„웃 ë””ìžì¸)를 ìžë™ìœ¼ë¡œ ì„ íƒí•˜ë„ë¡ í•´ 주는 <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">구성 한정ìž</a>를 사용하는 것입니다.</p>
@@ -158,7 +158,7 @@ next.link=screendensities.html
<p>하지만 Android 3.2 ì´ì „ 기기는 <code>sw600dp</code>를 í¬ê¸° 한정ìžë¡œ ì¸ì‹í•˜ì§€ 않기 ë•Œë¬¸ì— ìµœì†Œ 너비 한정ìžê°€ 제대로 ìž‘ë™í•˜ì§€ 않으며 ë”°ë¼ì„œ <code>large</code> 한정ìžë„ ê³„ì† ì‚¬ìš©í•´ì•¼ 합니다. ë”°ë¼ì„œ <code>res/layout-large/main.xml</code>ë¼ëŠ” ì´ë¦„ì˜ íŒŒì¼ì´ 있어야 하며 ì´ íŒŒì¼ì€ <code>res/layout-sw600dp/main.xml</code>ê³¼ ë™ì¼í•œ 파ì¼ìž…니다. ë‹¤ìŒ ì„¹ì…˜ì—서는 ì´ëŸ° ì‹ìœ¼ë¡œ ë ˆì´ì•„웃 파ì¼ì´ 중복ë˜ì§€ 않게 하는 ê¸°ìˆ ì„ ì‚´íŽ´ë³´ê² ìŠµë‹ˆë‹¤.</p>
-<h2 id="TaskUseAliasFilters">ë ˆì´ì•„웃 별칭 사용</h2>
+<h2 id="TaskUseAliasFilters">ë ˆì´ì•„웃 별칭 사용</h2>
<p>최소 너비 한정ìžëŠ” Android 3.2 ì´ìƒ 버전ì—서만 사용할 수 있습니다. ë”°ë¼ì„œ ì´ì „ 버전과 호환ë˜ë„ë¡ í•˜ë ¤ë©´ ì¶”ìƒí™” í¬ê¸° 빈(소형, 보통, 대형 ë° ì´ˆëŒ€í˜•)ì„ ê³„ì† ì‚¬ìš©í•´ì•¼ 합니다. 예를 들어 휴대전화ì—서는 ë‹¨ì¼ ì°½ UIê°€ 표시ë˜ê³  7ì¸ì¹˜ 태블릿, TV ë° ê¸°íƒ€ 대형 기기ì—서는 다중 ì°½ UIê°€ 표시ë˜ë„ë¡ UI를 ë””ìžì¸í•˜ë ¤ë©´ ë‹¤ìŒ íŒŒì¼ì„ 제공해야 합니다.</p>
@@ -202,7 +202,7 @@ next.link=screendensities.html
<PH>{@code large}</PH>,3.2 ì´í›„ ë²„ì „ì€ <code>sw600dp</code>와 ì¼ì¹˜).</p>
-<h2 id="TaskUseOriQuali">ë°©í–¥ í•œì •ìž ì‚¬ìš©</h2>
+<h2 id="TaskUseOriQuali">ë°©í–¥ í•œì •ìž ì‚¬ìš©</h2>
<p>ì¼ë¶€ ë ˆì´ì•„ì›ƒì€ ê°€ë¡œ ë° ì„¸ë¡œ ë°©í–¥ 모ë‘ì—서 잘 ìž‘ë™í•˜ì§€ë§Œ ëŒ€ë¶€ë¶„ì˜ ë ˆì´ì•„ì›ƒì€ ì¡°ì •ì„ í†µí•´ ë§Žì€ ì´ì ì„ 누릴 수 있습니다. 다ìŒì€ 뉴스 ë¦¬ë” ìƒ˜í”Œ 앱ì—서 화면 í¬ê¸°ì™€ 방향별로 ë ˆì´ì•„ì›ƒì´ ì–´ë–»ê²Œ ìž‘ë™í•˜ëŠ”ì§€ ë³´ì—¬ì¤ë‹ˆë‹¤.</p>
diff --git a/docs/html-intl/intl/pt-br/about/versions/android-5.0.jd b/docs/html-intl/intl/pt-br/about/versions/android-5.0.jd
index 23904b3325ef..5408793c79e9 100644
--- a/docs/html-intl/intl/pt-br/about/versions/android-5.0.jd
+++ b/docs/html-intl/intl/pt-br/about/versions/android-5.0.jd
@@ -426,7 +426,7 @@ sdk.platform.apiLevel=21
<p>Quando o sistema detectar uma rede adequada, ele se conectará à rede e chamará a chamada de retorno {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()}. É possível usar o objeto {@link android.net.Network} da chamada de retorno a fim de receber mais informações sobre a rede ou direcionar o tráfego para que a rede selecionada seja usada.</p>
<h3 id="BluetoothBroadcasting">Bluetooth Low Energy</h3>
-<p>O Android 4.3 apresentou o suporte de plataforma para o <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">Bluetooth Low Energy</a>(<em>Bluetooth LE</em>) na função central. No Android 5.0, um dispositivo Android agora pode agir como um <em>dispositivo periférico</em> de Bluetooth LE. Os apps podem usar esse recurso para fazer com que sua presença seja percebida pelos dispositivos vizinhos. É possível, por exemplo, criar apps que permitem que um dispositivo funcione como um pedômetro ou um monitor de integridade de dados e envie seus dados para outro dispositivo Bluetooth LE.</p>
+<p>O Android 4.3 apresentou o suporte de plataforma para o <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">Bluetooth Low Energy</a>(<em>Bluetooth LE</em>) na função central. No Android 5.0, um dispositivo Android agora pode agir como um <em>dispositivo periférico</em> de Bluetooth LE. Os apps podem usar esse recurso para fazer com que sua presença seja percebida pelos dispositivos vizinhos. É possível, por exemplo, criar apps que permitem que um dispositivo funcione como um pedômetro ou um monitor de integridade de dados e envie seus dados para outro dispositivo Bluetooth LE.</p>
<p>As novas APIs de {@link android.bluetooth.le} permitem que seus apps divulguem anúncios, verifiquem respostas e formem conexões com dispositivos Bluetooth LE vizinhos. Para usar os novos recursos de publicidade e varredura, adicione a permissão {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} no manifesto. Quando os usuários atualizam ou fazem o download do seu app a partir da Play Store, eles são solicitados a conceder a seguinte permissão para seu app: "Informações da conexão Bluetooth: permite que o app controle o Bluetooth, incluindo a divulgação para dispositivos Bluetooth vizinhos ou a busca de informações sobre esses dispositivos."</p>
<p>Para começar a publicidade de Bluetooth LE para que outros dispositivos possam descobrir seu app, chame {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} e passe uma implementação da classe {@link android.bluetooth.le.AdvertiseCallback}. O objeto de chamada de retorno recebe um relatório do sucesso ou da falha da operação de publicidade.</p>
diff --git a/docs/html-intl/intl/pt-br/design/get-started/principles.jd b/docs/html-intl/intl/pt-br/design/get-started/principles.jd
index 82e28cccfe10..81b3524130e0 100644
--- a/docs/html-intl/intl/pt-br/design/get-started/principles.jd
+++ b/docs/html-intl/intl/pt-br/design/get-started/principles.jd
@@ -8,7 +8,7 @@ definir as diretrizes de projeto mais detalhadas para diferentes
tipos de dispositivo.</p>
<p>
-Considere estes princípios ao aplicar
+Considere estes princípios ao aplicar
sua criatividade e sua mentalidade de projeto. Desvie-se de forma objetiva.
</p>
@@ -18,7 +18,7 @@ sua criatividade e sua mentalidade de projeto. Desvie-se de forma objetiva.
<div class="col-7">
<h4 id="delight-me">Agrade-me de formas surpreendentes</h4>
-<p>Uma bela superfície, uma animação cuidadosamente posicionada ou um efeito sonoro no momento certo
+<p>Uma bela superfície, uma animação cuidadosamente posicionada ou um efeito sonoro no momento certo
contribui para a boa experiência. Efeitos sutis contribuem para uma sensação de facilidade e de que algo
poderoso está à mão.</p>
diff --git a/docs/html-intl/intl/pt-br/design/material/index.jd b/docs/html-intl/intl/pt-br/design/material/index.jd
index 5368d2d74c0c..e2f0b47de6e9 100644
--- a/docs/html-intl/intl/pt-br/design/material/index.jd
+++ b/docs/html-intl/intl/pt-br/design/material/index.jd
@@ -39,10 +39,10 @@ page.image=images/cards/design-material-for-android_2x.jpg
-<p itemprop="description">O Material Design é um guia abrangente para design visual, de movimento e de
+<p itemprop="description">O Material Design é um guia abrangente para design visual, de movimento e de
interação para diversas plataformas e dispositivos. O Android agora é compatível com
-aplicativos do Material Design. Para usar o Material Design nos aplicativos Android, siga as orientações definidas
-nas <a href="http://www.google.com/design/spec">especificações do Material Design</a> e use os novos
+aplicativos do Material Design. Para usar o Material Design nos aplicativos Android, siga as orientações definidas
+nas <a href="http://www.google.com/design/spec">especificações do Material Design</a> e use os novos
componentes e funcionalidades disponíveis no Android 5.0 (API de nível 21) e em posteriores.</p>
<p>O Android fornece os seguintes elementos para criar aplicativos do Material Design:</p>
@@ -59,7 +59,7 @@ componentes e funcionalidades disponíveis no Android 5.0 (API de nível 21) e e
<h3>Tema do Material</h3>
-<p>O tema do Material fornece um novo estilo para o seu aplicativo, widgets de sistema que permitem
+<p>O tema do Material fornece um novo estilo para o seu aplicativo, widgets de sistema que permitem
definir a paleta de cores e as animações padrão para feedback de toque e transições de atividades.</p>
<!-- two columns -->
@@ -79,13 +79,13 @@ definir a paleta de cores e as animações padrão para feedback de toque e tran
<br style="clear:left"/>
</div>
-<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/theme.html">Como usar o tema
+<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/theme.html">Como usar o tema
do Material</a>.</p>
<h3>Listas e cartões</h3>
-<p>O Android fornece dois novos widgets para exibir cartões e listas com estilos e animações do
+<p>O Android fornece dois novos widgets para exibir cartões e listas com estilos e animações do
Material Design:</p>
<!-- two columns -->
@@ -97,19 +97,19 @@ Material Design:</p>
</div>
<div style="float:left;width:250px;margin-right:0px;">
<img src="{@docRoot}design/material/images/card_travel.png" width="500" height="426" />
- <p>O novo widget <code>CardView</code> permite exibir informações importantes dentro de
+ <p>O novo widget <code>CardView</code> permite exibir informações importantes dentro de
cartões que têm aparência consistente.</p>
</div>
<br style="clear:left"/>
</div>
-<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/lists-cards.html">Como criar
+<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/lists-cards.html">Como criar
listas e cartões</a>.</p>
<h3>Sombras de vistas</h3>
-<p>Além das propriedades X e Y, vistas no Android agora têm uma propriedade
+<p>Além das propriedades X e Y, vistas no Android agora têm uma propriedade
Z. Essa nova propriedade representa a elevação de uma vista, que determina:</p>
<ul>
@@ -130,7 +130,7 @@ Z. Essa nova propriedade representa a elevação de uma vista, que determina:</p
</div>
</div>
-<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/shadows-clipping.html">Como
+<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/shadows-clipping.html">Como
definir sombras e recortar visualizações</a>.</p>
@@ -165,7 +165,7 @@ Exibir animações em <strong>desenháveis da lista de estado</strong> entre mud
<p>Animações de feedback de toque são integradas em várias vistas padrão, como botões. As novas APIs
permitem personalizar essas animações e adicioná-las às vistas personalizadas.</p>
-<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/animations.html">Como definir
+<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/animations.html">Como definir
animações personalizadas</a>.</p>
@@ -182,5 +182,5 @@ uma cor em tempo de execução.</li>
imagem de mapa de bits.</li>
</ul>
-<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/drawables.html">Como trabalhar
+<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/drawables.html">Como trabalhar
com desenháveis</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/design/patterns/compatibility.jd b/docs/html-intl/intl/pt-br/design/patterns/compatibility.jd
index 775af0c312a0..bd4ec30ab1ed 100644
--- a/docs/html-intl/intl/pt-br/design/patterns/compatibility.jd
+++ b/docs/html-intl/intl/pt-br/design/patterns/compatibility.jd
@@ -57,7 +57,7 @@ de ações resultante tem o mesmo estilo que no exemplo anterior, mas é exibida
<div class="col-6">
<h4>Aplicativos legados em telefones com controles de navegação virtuais</h4>
-<p>Ao executar um aplicativo que foi desenvolvido para Android 2.3 ou anterior em um telefone com controles de
+<p>Ao executar um aplicativo que foi desenvolvido para Android 2.3 ou anterior em um telefone com controles de
navegação virtuais, um controle de ações adicionais é exibido no lado direito da barra de navegação virtual. É possível
tocar no controle para exibir as ações do aplicativo no estilo tradicional de menu do Android.</p>
diff --git a/docs/html-intl/intl/pt-br/design/patterns/navigation.jd b/docs/html-intl/intl/pt-br/design/patterns/navigation.jd
index 8ed12f71b60b..89eab9a4a19e 100644
--- a/docs/html-intl/intl/pt-br/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/pt-br/design/patterns/navigation.jd
@@ -66,7 +66,7 @@ estará no mesmo lugar dentro da hierarquia do aplicativo e nenhum histórico de
<li>Mudar características de exibição (como mudar o zoom)</li>
</ul>
<h4>Navegação entre telas de mesmo nível</h4>
-<p>Quando o aplicativo suporta navegação de uma lista de itens para uma vista de detalhes de um desses itens,
+<p>Quando o aplicativo suporta navegação de uma lista de itens para uma vista de detalhes de um desses itens,
frequentemente é desejável dar suporte à navegação de direção daquele item para outro anterior ou
posterior a ele na lista. Por exemplo, no Gmail, é fácil deslizar para a esquerda ou para a direita em uma
conversa para visualizar uma mais nova ou mais antiga na mesma Caixa de entrada. Assim como ao mudar a vista dentro de uma tela, tal
@@ -82,9 +82,9 @@ ignorar essas telas relacionadas e navegar para a tela do contêiner visualizada
<img src="{@docRoot}design/media/navigation_between_siblings_market1.png">
-<p>Você tem a capacidade de deixar o comportamento de Para Cima ainda mais inteligente com base em seu conhecimento da
+<p>Você tem a capacidade de deixar o comportamento de Para Cima ainda mais inteligente com base em seu conhecimento da
vista de detalhe. Estendendo o exemplo da Play Store acima, imagine que o usuário navegou do último
-Livro visualizado para os detalhes da adaptação do Filme. Nesse caso, Para Cima pode retornar a um contêiner
+Livro visualizado para os detalhes da adaptação do Filme. Nesse caso, Para Cima pode retornar a um contêiner
(filmes) pelo qual o usuário não navegou anteriormente.</p>
<img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
@@ -116,7 +116,7 @@ botão Voltar continua até a Tela inicial.</p>
<h4>Notificações indiretas</h4>
-<p>Quando o aplicativo precisa apresentar simultaneamente informações sobre vários eventos, ele pode usar
+<p>Quando o aplicativo precisa apresentar simultaneamente informações sobre vários eventos, ele pode usar
uma única notificação que direcione o usuário a uma tela intersticial. Essa tela resume esses
eventos e fornece caminhos para que o usuário mergulhe profundamente no aplicativo. Notificações desse estilo são
chamadas de <em>notificações indiretas</em>.</p>
@@ -128,7 +128,7 @@ tela intersticial, Para Cima e Voltar se comportam como em notificações padrã
navegando dentro do aplicativo em vez de voltar à tela intersticial.</p>
<p>Por exemplo, suponha que um usuário no Gmail receba uma notificação indireta do Agenda. Tocar nessa
-notificação abrirá a tela intersticial, que exibirá lembretes para vários
+notificação abrirá a tela intersticial, que exibirá lembretes para vários
eventos. Tocar em Voltar na tela intersticial retornará o usuário ao Gmail. Tocar em um determinado evento
levará o usuário da tela intersticial ao aplicativo completo do Agenda para exibir detalhes do
evento. Dos detalhes do evento, Para Cima e Voltar navegam para a vista de nível superior do Agenda.</p>
@@ -169,7 +169,7 @@ informações e todas as ações associadas que o usuário pode executar. Seu ap
atividades, consistindo em atividades que você cria e naquelas que reutiliza de outros aplicativos.</p>
<p>Uma <strong>tarefa</strong> é a sequência de atividades que um usuário segue para atingir um objetivo. Uma
-única tarefa pode usar atividades apenas de um aplicativo ou pode retirar atividades de uma série
+única tarefa pode usar atividades apenas de um aplicativo ou pode retirar atividades de uma série
de outros aplicativos.</p>
<p>Uma <strong>intenção</strong> é um mecanismo para que um aplicativo sinalize que gostaria a assistência de outro
@@ -188,7 +188,7 @@ que foram registradas para tratar a intenção Compartilhar.</p>
<img src="{@docRoot}design/media/navigation_between_apps_inward.png">
-<p>Quando o usuário seleciona o compartilhamento via Gmail, a atividade de composição do Gmail é adicionada como uma continuação da
+<p>Quando o usuário seleciona o compartilhamento via Gmail, a atividade de composição do Gmail é adicionada como uma continuação da
Tarefa A &mdash; nenhuma tarefa nova é criada. Se o Gmail tivesse a própria tarefa em execução em segundo plano, ela não
seria afetada.</p>
@@ -209,5 +209,5 @@ Recentes). Se o Gmail já tivesse a própria tarefa em execução em segundo pla
pela Tarefa B &mdash; o contexto anterior é abandonado em favor do novo objetivo do usuário.</p>
<p>Quando o aplicativo é registrado para tratar intenções com uma atividade em um ponto profundo da hierarquia do aplicativo,
-consulte <a href="#into-your-app">Navegação para o seu aplicativo pelos widgets de tela
+consulte <a href="#into-your-app">Navegação para o seu aplicativo pelos widgets de tela
inicial e notificações</a> para ver orientações sobre como especificar a navegação Para Cima.</p>
diff --git a/docs/html-intl/intl/pt-br/design/patterns/notifications.jd b/docs/html-intl/intl/pt-br/design/patterns/notifications.jd
index efea6104638c..5560e85f5c2e 100644
--- a/docs/html-intl/intl/pt-br/design/patterns/notifications.jd
+++ b/docs/html-intl/intl/pt-br/design/patterns/notifications.jd
@@ -43,12 +43,12 @@ atenção &mdash; e que é sincronizado conforme apropriado em todos os disposit
funcionais:</p>
<ul>
- <li>As notificações passaram por mudanças visuais consistentes com o novo
+ <li>As notificações passaram por mudanças visuais consistentes com o novo
tema do Material Design.</li>
<li> As notificações agora estão disponíveis na tela de bloqueio do dispositivo, enquanto que
o conteúdo sensível ainda pode
ficar oculto atrás dela.</li>
- <li>Notificações de alta prioridade recebidas enquanto o dispositivo está em uso agora usam um novo formato, chamado de
+ <li>Notificações de alta prioridade recebidas enquanto o dispositivo está em uso agora usam um novo formato, chamado de
notificações heads-up.</li>
<li>Notificações sincronizadas na nuvem: descartar uma notificação em um dos
dispositivos Android a descarta
@@ -62,7 +62,7 @@ anteriores, consulte <a href="./notifications_k.html">Notificações no Android
<h2 id="Anatomy">Anatomia de uma notificação</h2>
-<p>Esta seção aborda as partes básicas de uma notificação e como elas
+<p>Esta seção aborda as partes básicas de uma notificação e como elas
podem aparecer em diferentes tipos de dispositivos.</p>
<h3 id="BaseLayout">Layout básico</h3>
@@ -83,7 +83,7 @@ tipo.</li>
para versões anteriores da plataforma têm a mesma aparência e o mesmo funcionamento no Android
5.0, com apenas mudanças menores de estilo que o sistema
entrega a você. Para obter mais informações sobre notificações em versões
-anteriores do Android, consulte
+anteriores do Android, consulte
<a href="./notifications_k.html">Notificações no Android 4.4 ou em anteriores</a>.</p></p>
@@ -92,7 +92,7 @@ anteriores do Android, consulte
<div style="clear:both;margin-top:20px">
<p class="img-caption">
- Layout básico de uma notificação em dispositivo portátil (à esquerda) e a mesma notificação em Wear (à direita),
+ Layout básico de uma notificação em dispositivo portátil (à esquerda) e a mesma notificação em Wear (à direita),
com uma foto do usuário e um ícone de notificação
</p>
</div>
@@ -110,8 +110,8 @@ pinçar para aproximar ou afastar a vista ou realizar deslizamento de um dedo pa
compacto e expandido.
Para notificações de um evento, o Android fornece três modelos de layout
expandido (texto, caixa de entrada e
- imagem) para usar em seu aplicativo. As imagens a seguir mostram como
-se parecem notificações de um evento em
+ imagem) para usar em seu aplicativo. As imagens a seguir mostram como
+se parecem notificações de um evento em
dispositivos portáteis (à esquerda) e usados junto ao corpo (à direita).</p>
<img style="margin-top:30px"
@@ -168,7 +168,7 @@ exibido
e um nome de ação.
Adicionar ações a um layout básico simples torna a notificação expansível,
mesmo se a
-notificação não tiver um layout expandido. Como as ações são exibidas apenas para notificações
+notificação não tiver um layout expandido. Como as ações são exibidas apenas para notificações
expandidas
e que ficam de outra forma ocultas, certifique-se de que qualquer ação que um
usuário possa invocar de dentro de uma
@@ -207,7 +207,7 @@ marcada como Alta, Máxima ou tela cheia, ela receberá uma notificação heads-
<h3 id="MakeItPersonal">Torne-a pessoal</h3>
<p>Para notificações de itens enviados por outra pessoa (como uma mensagem ou
-atualização de status), inclua a imagem da pessoa usando
+atualização de status), inclua a imagem da pessoa usando
{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()}. Anexe também informações sobre
a pessoa nos metadados da notificação (consulte {@link android.app.Notification#EXTRA_PEOPLE}).</p>
@@ -235,8 +235,8 @@ o usuário possa pressionar o botão Voltar do sistema para voltar ao nível sup
<em>Navegação para o seu aplicativo pelos widgets de página inicial e notificações</em> no padrão de projeto de <a href="{@docRoot}design/patterns/navigation.html#into-your-app">Navegação</a>.
</p>
-<h3 id="correctly_set_and_manage_notification_priority">Definição e gerenciamento
-corretos da prioridade das
+<h3 id="correctly_set_and_manage_notification_priority">Definição e gerenciamento
+corretos da prioridade das
notificações</h3>
<p>O Android tem suporte para um sinalizador de prioridade para notificações. Esse sinalizador permite
@@ -311,11 +311,11 @@ as descobre expandindo a sombra da notificação.</p>
</table>
-<h4 id="how_to_choose_an_appropriate_priority"><strong>Como escolher uma prioridade
+<h4 id="how_to_choose_an_appropriate_priority"><strong>Como escolher uma prioridade
adequada
</strong></h4>
-<p><code>DEFAULT</code>, <code>HIGH</code> e <code>MAX</code> são níveis de prioridade de interrupção e arriscam
+<p><code>DEFAULT</code>, <code>HIGH</code> e <code>MAX</code> são níveis de prioridade de interrupção e arriscam
interromper a atividade
do usuário. Para evitar irritar os usuários de seu aplicativo, reserve níveis de prioridade de interrupção para
notificações que:</p>
@@ -359,7 +359,7 @@ de notificação), podem usar essas informações para tomar decisões de classi
href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p>
</td>
<td>
-<p>Chamada recebida (voz ou vídeo) ou solicitação similar de
+<p>Chamada recebida (voz ou vídeo) ou solicitação similar de
comunicação síncrona</p>
</td>
</tr>
@@ -508,7 +508,7 @@ de um determinado tipo estão pendentes.</p>
<p style="clear:left; padding-top:30px; padding-bottom:20px">Você pode fornecer
mais detalhes sobre as notificações individuais que compõem um
-resumo usando o layout resumido expandido. Essa abordagem permite que os usuários
+resumo usando o layout resumido expandido. Essa abordagem permite que os usuários
entendam melhor quais
notificações estão pendentes e decidam se estão interessados o suficiente para lê-las
em detalhes dentro
@@ -525,13 +525,13 @@ opcionais</h3>
<p>Os usuários devem sempre controlar as notificações. Permita que o usuário
desative as notificações
-de seu aplicativo ou altere as propriedades de alerta, como som de alerta e
+de seu aplicativo ou altere as propriedades de alerta, como som de alerta e
se a vibração será usada,
adicionando um item de configuração da notificação nas configurações do aplicativo.</p>
<h3 id="use_distinct_icons">Use ícones distintos</h3>
<p>Ao olhar para a área de notificação, o usuário deverá ser capaz de discernir
-que tipos de
+que tipos de
notificações estão atualmente pendentes.</p>
<div class="figure">
@@ -545,7 +545,7 @@ aplicativo que tenham aparência suficientemente distinta.</p>
<p><strong>O que fazer</strong></p>
<p>Use o <a href="/design/style/iconography.html#notification">estilo de ícone de notificação</a> apropriado
- para ícones pequenos e o
+ para ícones pequenos e o
<a href="/design/style/iconography.html#action-bar">estilo de ícone de barra
de ação</a> da luminosidade do Material para os ícones
de ação.</p>
@@ -564,7 +564,7 @@ opacidade total.</p>
</div>
<p style="clear:both"><strong>O que não fazer</strong></p>
-<p>Use cores para distinguir o seu aplicativo dos outros. Ãcones de notificação devem
+<p>Use cores para distinguir o seu aplicativo dos outros. Ãcones de notificação devem
somente ser uma imagem com fundo branco sobre transparente.</p>
@@ -599,7 +599,7 @@ aplicativo exige. Portanto, use notificações de forma cuidadosa.</p>
<p>Para criar um aplicativo que as pessoas gostem de usar, é importante
reconhecer que a atenção e o foco
-do usuário são recursos que devem ser protegidos. Apesar de o sistema de
+do usuário são recursos que devem ser protegidos. Apesar de o sistema de
notificação do Android ter
sido projetado para minimizar o impacto das notificações na atenção do usuário,
ainda é
@@ -617,7 +617,7 @@ alguma outra coisa.</p>
Exemplos de notificação que depende de tempo
</p>
-<p>Apesar de aplicativos bem comportados geralmente se manifestarem apenas quando ocorre interação com eles, alguns
+<p>Apesar de aplicativos bem comportados geralmente se manifestarem apenas quando ocorre interação com eles, alguns
casos justificam que o aplicativo interrompa o usuário com uma notificação não solicitada.</p>
<p>Use notificações principalmente para <strong>eventos que dependam de tempo</strong>, especialmente
@@ -625,11 +625,11 @@ casos justificam que o aplicativo interrompa o usuário com uma notificação nÃ
exemplo, um bate-papo recebido
é uma forma síncrona em tempo real de comunicação: outro usuário
espera ativamente a resposta. Eventos de calendário são outro exemplo bom de quando usar uma
-notificação e atrair a
+notificação e atrair a
atenção do usuário, pois o evento é iminente e eventos de calendário frequentemente
envolvem outras pessoas.</p>
-<h3 style="clear:both" id="when_not_to_display_a_notification">Quando não exibir
+<h3 style="clear:both" id="when_not_to_display_a_notification">Quando não exibir
uma notificação</h3>
<div class="figure" style="margin-top:60px">
@@ -646,8 +646,8 @@ assíncronas e não direcionadas
que fluem por uma rede social geralmente não justificam uma interrupção
em tempo real. Para os usuários que se importam
com elas, deixe que decidam recebê-las.</li>
- <li> Não crie uma notificação se as informações novas relevantes estiverem
-atualmente na tela. Em vez disso,
+ <li> Não crie uma notificação se as informações novas relevantes estiverem
+atualmente na tela. Em vez disso,
use a IU do próprio aplicativo para notificar o usuário das novas informações
diretamente no contexto.
Por exemplo, um aplicativo de bate-papo não deve criar notificações de sistema enquanto o
@@ -655,12 +655,12 @@ usuário estiver conversando ativamente com outro usuário.</li>
<li> Não interrompa o usuário para realizar operações técnicas de baixo nível, como salvar
ou sincronizar informações, nem atualize um aplicativo se o aplicativo ou o sistema puder resolver
o problema sem envolver o usuário.</li>
- <li> Não interrompa o usuário para informar um erro se o aplicativo
-puder se recuperar dele por conta própria, sem que o usuário
+ <li> Não interrompa o usuário para informar um erro se o aplicativo
+puder se recuperar dele por conta própria, sem que o usuário
tome qualquer ação.</li>
<li> Não crie notificações que não tenham conteúdo real de notificação e
que meramente anunciem o seu
-aplicativo. Uma notificação deve fornecer informações úteis, oportunas e novas e
+aplicativo. Uma notificação deve fornecer informações úteis, oportunas e novas e
não deve ser usada
meramente para executar um aplicativo.</li>
<li> Não crie notificações supérfluas apenas para colocar sua marca na frente
@@ -673,7 +673,7 @@ com o seu
tela inicial.</li>
</ul>
-<h2 style="clear:left" id="interacting_with_notifications">Interação com
+<h2 style="clear:left" id="interacting_with_notifications">Interação com
notificações</h2>
<p>Notificações são indicadas por ícones na barra de status e podem ser acessadas
@@ -692,7 +692,7 @@ Deslizar à esquerda ou à direita em uma notificação a remove da gaveta.</p>
</p>
</div>
<p>Notificações contínuas mantêm os usuários informados sobre um processo em andamento em
-segundo plano.
+segundo plano.
Por exemplo, reprodutores de música anunciam a faixa em reprodução no
sistema de notificação e
continuam a fazer isso até que o usuário interrompa a reprodução. Notificações contínuas também podem
@@ -701,7 +701,7 @@ feedback sobre tarefas mais longas, como o download de um arquivo ou a codificaÃ
manualmente uma notificação contínua da gaveta de notificações.</p>
<h3 id="ongoing_notifications">Reprodução de mídia</h3>
-<p>No Android 5.0, a tela de bloqueio não mostra controles de transporte por causa da classe
+<p>No Android 5.0, a tela de bloqueio não mostra controles de transporte por causa da classe
{@link android.media.RemoteControlClient} obsoleta. Mas ela <em>mostra</em> notificações, portanto, a notificação de reprodução
de cada aplicativo agora é a forma
principal para que os usuários controlem a reprodução em um estado bloqueado. Esse comportamento dá aos aplicativos mais
@@ -724,12 +724,12 @@ Para obter orientação adicional sobre o uso de caixas de diálogo e avisos, co
<p>Notificações são notícias e, portanto, são essencialmente exibidas
em ordem cronológica inversa, com
-consideração especial para a
+consideração especial para a
<a href="#correctly_set_and_manage_notification_priority">prioridade</a> da notificação declarada no aplicativo.</p>
<p>Notificações são uma parte importante da tela de bloqueio e são exibidas proeminentemente
sempre
-que a tela do dispositivo é exibida. O espaço na tela de bloqueio é restrito, portanto,
+que a tela do dispositivo é exibida. O espaço na tela de bloqueio é restrito, portanto,
é mais importante
do que nunca identificar as notificações mais urgentes ou relevantes. Por esse
motivo, o Android tem um
@@ -762,14 +762,14 @@ recebem
<h3>Na tela de bloqueio</h3>
-<p>Como as notificações são visíveis na tela de bloqueio, a privacidade do usuário é uma consideração
+<p>Como as notificações são visíveis na tela de bloqueio, a privacidade do usuário é uma consideração
especialmente
- importante. Notificações frequentemente contêm informações sensíveis e
+ importante. Notificações frequentemente contêm informações sensíveis e
não devem necessariamente estar visíveis
para qualquer pessoa que ligar a tela do dispositivo.</p>
<ul>
- <li> Para dispositivos que têm uma tela de bloqueio segura (PIN, padrão ou senha), a interface tem
+ <li> Para dispositivos que têm uma tela de bloqueio segura (PIN, padrão ou senha), a interface tem
partes públicas e privadas. A interface pública pode ser exibida em uma tela de bloqueio segura e,
portanto, vista por qualquer pessoa. A interface privada é o mundo atrás da tela de bloqueio e
só é revelada depois que o usuário faz login no dispositivo.</li>
@@ -828,7 +828,7 @@ Os desenvolvedores podem controlar que notificações são enviadas do
celular ao relógio
e vice-versa. Os desenvolvedores também podem controlar quais ações são transmitidas. Se o
seu aplicativo inclui
-ações que não podem ser executadas com um toque, oculte essas ações
+ações que não podem ser executadas com um toque, oculte essas ações
na sua notificação do Wear
ou considere colocá-las em um aplicativo do Wear, permitindo que o usuário
termine a ação
diff --git a/docs/html-intl/intl/pt-br/guide/components/bound-services.jd b/docs/html-intl/intl/pt-br/guide/components/bound-services.jd
index aa024943160f..032950eb962b 100644
--- a/docs/html-intl/intl/pt-br/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/bound-services.jd
@@ -334,7 +334,7 @@ que o serviço realize vários encadeamentos, deve-se usar a <a href="{@docRoot}
</div>
</div>
-<p>Caso precise que o serviço comunique-se com processos remotos, é possível usar
+<p>Caso precise que o serviço comunique-se com processos remotos, é possível usar
o {@link android.os.Messenger} para fornecer a interface ao serviço. Esta técnica permite
estabelecer comunicação entre processos (IPC) sem precisar usar a AIDL.</p>
@@ -348,7 +348,7 @@ para cada chamada de um cliente.</li>
<li>O {@link android.os.Messenger} cria um {@link android.os.IBinder} que o serviço
retorna aos clientes a partir de {@link android.app.Service#onBind onBind()}.</li>
<li>Os clientes usam {@link android.os.IBinder} para instanciar o {@link android.os.Messenger}
-(que menciona o {@link android.os.Handler} do serviço), que usam para enviar objetos
+(que menciona o {@link android.os.Handler} do serviço), que usam para enviar objetos
{@link android.os.Message} para o serviço.</li>
<li>O serviço recebe cada {@link android.os.Message} em seu {@link
android.os.Handler} &mdash; especificamente, no método {@link android.os.Handler#handleMessage
@@ -538,7 +538,7 @@ são abordados mais abaixo).</p>
</li>
</ol>
-<p>Por exemplo, o fragmento a seguir conecta o cliente ao serviço criado acima
+<p>Por exemplo, o fragmento a seguir conecta o cliente ao serviço criado acima
<a href="#Binder">estendendo a classe Binder</a> para que tudo que ele tenha que fazer seja lançar
o {@link android.os.IBinder} retornado para a classe {@code LocalService} e solicitar a instância de {@code
LocalService}:</p>
@@ -637,7 +637,7 @@ android.content.Context#stopService stopService()}, independente de vínculo
com qualquer cliente.</p>
<p>Além disso, se o serviço for iniciado e aceitar vínculos, quando o sistema chamar
-o método {@link android.app.Service#onUnbind onUnbind()}, será possível retornar
+o método {@link android.app.Service#onUnbind onUnbind()}, será possível retornar
{@code true} opcionalmente se você quiser receber uma chamada de {@link android.app.Service#onRebind
onRebind()} na próxima vez em que um cliente vincular-se ao serviço (em vez de receber uma chamada de {@link
android.app.Service#onBind onBind()}). {@link android.app.Service#onRebind
diff --git a/docs/html-intl/intl/pt-br/guide/components/fragments.jd b/docs/html-intl/intl/pt-br/guide/components/fragments.jd
index 7b1acf9e3439..74f3dfe2d15b 100644
--- a/docs/html-intl/intl/pt-br/guide/components/fragments.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/fragments.jd
@@ -36,7 +36,7 @@ parent.link=activities.html
<li>{@link android.app.FragmentManager}</li>
<li>{@link android.app.FragmentTransaction}</li>
</ol>
-
+
<h2>Veja também</h2>
<ol>
<li><a href="{@docRoot}training/basics/fragments/index.html">Construção de uma IU dinâmica com Fragmentos</a></li>
@@ -361,8 +361,8 @@ você precisará usar {@link android.app.FragmentManager#findFragmentByTag
findFragmentByTag()}.</p>
<p>Para ver uma atividade de exemplo que usa um fragmento como um trabalhador de segundo plano, sem uma IU, consulte o exemplo de {@code
-FragmentRetainInstance.java}, incluso nos exemplos do SDK (disponibilizados pelo
-Android SDK Manager) e localizado no sistema como
+FragmentRetainInstance.java}, incluso nos exemplos do SDK (disponibilizados pelo
+Android SDK Manager) e localizado no sistema como
<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>.</p>
@@ -378,7 +378,7 @@ chame {@link android.app.Activity#getFragmentManager()} a partir da atividade.</
<li>Adquirir fragmentos existentes na atividade, com {@link
android.app.FragmentManager#findFragmentById findFragmentById()} (para fragmentos que forneçam uma IU
no layout da atividade) ou {@link android.app.FragmentManager#findFragmentByTag
-findFragmentByTag()} (para fragmentos que forneçam ou não uma IU).</li>
+findFragmentByTag()} (para fragmentos que forneçam ou não uma IU).</li>
<li>Retire os fragmentos da pilha de retorno com {@link
android.app.FragmentManager#popBackStack()} (simulando um comando de <em>Voltar</em> do usuário).</li>
<li>Registre uma escuta para as alterações na pilha de retorno com {@link
@@ -600,7 +600,7 @@ como usar o provedor de conteúdo estão disponíveis na documentação <a href=
<h3 id="ActionBar">Adição de itens à barra de ação</h3>
-<p>Os fragmentos podem contribuir com itens de menu para o <a href="{@docRoot}guide/topics/ui/menus.html#options-menu">menu de opções</a> da atividade (e, consequentemente, para a <a href="{@docRoot}guide/topics/ui/actionbar.html">barra de ação</a>) implementando
+<p>Os fragmentos podem contribuir com itens de menu para o <a href="{@docRoot}guide/topics/ui/menus.html#options-menu">menu de opções</a> da atividade (e, consequentemente, para a <a href="{@docRoot}guide/topics/ui/actionbar.html">barra de ação</a>) implementando
{@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()}. Para que este método
receba chamadas, no entanto, você deve chamar {@link
android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()} durante {@link
@@ -785,7 +785,7 @@ android.widget.FrameLayout}), ou iniciar uma nova atividade (onde o fragmento po
<p>O segundo fragmento, {@code DetailsFragment}, exibe o resumo da peça para o item selecionado
na lista de {@code TitlesFragment}:</p>
-
+
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
<p>Uma nova chamada da classe {@code TitlesFragment}, ou seja, se o usuário clicar em um item de lista
@@ -798,7 +798,7 @@ o resumo da peça selecionada quando a tela está na orientação de retrato:</p
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
details_activity}
-
+
<p>Observe que esta atividade finaliza-se se a configuração for de paisagem,
pois a atividade principal pode tomar o controle e exibir {@code DetailsFragment} juntamente com {@code TitlesFragment}.
Isto pode acontecer se o usuário iniciar {@code DetailsActivity} enquanto estiver na orientação de retrato,
diff --git a/docs/html-intl/intl/pt-br/guide/components/fundamentals.jd b/docs/html-intl/intl/pt-br/guide/components/fundamentals.jd
index 47b98458e642..2fb85531de8a 100644
--- a/docs/html-intl/intl/pt-br/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/fundamentals.jd
@@ -379,7 +379,7 @@ mas serviços externos, como o Google Play, as leem para oferecer uma filtragem
aos usuários quando buscam esses aplicativos para seu dispositivo.</p>
<p>Por exemplo: se o aplicativo exige uma câmera e usa APIs introduzidas no Android 2.1 (<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API de nível</a> 7),
-deve-se declarar esses requisitos no arquivo de manifesto da seguinte forma:</p>
+deve-se declarar esses requisitos no arquivo de manifesto da seguinte forma:</p>
<pre>
&lt;manifest ... >
@@ -393,7 +393,7 @@ deve-se declarar esses requisitos no arquivo de manifesto da seguinte forma:</p>
<p>Assim, dispositivos que <em>não</em> tenham câmera e tenham
versão Android <em>anterior</em> a 2.1 não poderão instalar o aplicativo a partir do Google Play.</p>
-<p>No entanto, também é possível declarar que o aplicativo usa a câmera como recurso
+<p>No entanto, também é possível declarar que o aplicativo usa a câmera como recurso
<em>não obrigatório</em>. Nesse caso, o aplicativo precisa definir o atributo <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a>
como {@code "false"} e verificar em tempo de execução
se o dispositivo tem câmera e desativar os recursos da câmera conforme o necessário.</p>
diff --git a/docs/html-intl/intl/pt-br/guide/components/index.jd b/docs/html-intl/intl/pt-br/guide/components/index.jd
index 02fcaa63c63a..5131ead2239c 100644
--- a/docs/html-intl/intl/pt-br/guide/components/index.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/index.jd
@@ -1,7 +1,7 @@
page.title=Componentes do aplicativo
page.landing=true
-page.landing.intro=A estrutura de aplicativo do Android permite criar aplicativos ricos e inovadores usando um conjunto de componentes reutilizáveis. Esta seção explica como criar os componentes que definem os blocos de construção do aplicativo e como conectá-los usando intenções.
-page.metaDescription=A estrutura de aplicativo do Android permite criar aplicativos ricos e inovadores usando um conjunto de componentes reutilizáveis. Esta seção mostra como criar os componentes que definem os blocos de construção do aplicativo e como conectá-los usando intenções.
+page.landing.intro=A estrutura de aplicativo do Android permite criar aplicativos ricos e inovadores usando um conjunto de componentes reutilizáveis. Esta seção explica como criar os componentes que definem os blocos de construção do aplicativo e como conectá-los usando intenções.
+page.metaDescription=A estrutura de aplicativo do Android permite criar aplicativos ricos e inovadores usando um conjunto de componentes reutilizáveis. Esta seção mostra como criar os componentes que definem os blocos de construção do aplicativo e como conectá-los usando intenções.
page.landing.image=images/develop/app_components.png
page.image=images/develop/app_components.png
@@ -11,7 +11,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>Artigos de blogue</h3>
-
+
<a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
<h4>Uso de DialogFragments</h4>
<p>Nesta publicação, mostrarei como usar DialogFragments com a biblioteca de suporte v4 (para compatibilidade retroativa em dispositivos anteriores a Honeycomb) para mostrar uma caixa de diálogo de edição simples e retornar um resultado para a Atividade chamadora usando uma interface.</p>
@@ -21,7 +21,7 @@ page.image=images/develop/app_components.png
<h4>Fragmentos para todos</h4>
<p>Hoje, lançamos uma biblioteca estática que expõe a mesma API Fragments (bem como o novo LoaderManager e algumas outras classes) para que aplicativos compatíveis com Android 1.6 e posteriores possam usar fragmentos para criar interfaces de usuário compatíveis com tablets. </p>
</a>
-
+
<a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
<h4>Multiencadeamento para desempenho</h4>
<p>Uma boa prática para criar aplicativos responsivos é garantir que o encadeamento principal da IU
@@ -32,11 +32,11 @@ em um encadeamento diferente.</p>
<div class="col-6">
<h3>Treinamento</h3>
-
+
<a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
<h4>Gerenciamento do ciclo de vida da atividade</h4>
<p>Essa lição explica a importância dos métodos de retorno de chamada do ciclo de vida que cada instância de
-Atividade recebe e como utilizá-los para que a atividade faça o que o usuário espera e não consuma recursos
+Atividade recebe e como utilizá-los para que a atividade faça o que o usuário espera e não consuma recursos
do sistema quando não estiver em uso.</p>
</a>
diff --git a/docs/html-intl/intl/pt-br/guide/components/loaders.jd b/docs/html-intl/intl/pt-br/guide/components/loaders.jd
index f3c42094729d..c69cbbfd25d2 100644
--- a/docs/html-intl/intl/pt-br/guide/components/loaders.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/loaders.jd
@@ -21,14 +21,14 @@ parent.link=activities.html
</ol>
</li>
</ol>
-
+
<h2>Classes principais</h2>
<ol>
<li>{@link android.app.LoaderManager}</li>
<li>{@link android.content.Loader}</li>
- </ol>
-
+ </ol>
+
<h2>Exemplos relacionados</h2>
<ol>
<li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -51,7 +51,7 @@ quando o conteúdo é alterado.</li>
quando são recriados após uma alteração de configuração. Portanto, eles não precisam reconsultar
os dados.</li>
</ul>
-
+
<h2 id="summary">Resumo da API de carregador</h2>
<p>Há várias classes e interfaces que podem ser envolvidas no uso
@@ -68,7 +68,7 @@ de carregadores em um aplicativo. Elas são resumidas nesta tabela:</p>
{@link android.app.Fragment} para gerenciar uma ou mais instâncias de {@link
android.content.Loader}. Isto ajuda um aplicativo a gerenciar
operações executadas por longos períodos juntamente com o ciclo de vida de {@link android.app.Activity}
-ou {@link android.app.Fragment}; o uso mais comum disto é com
+ou {@link android.app.Fragment}; o uso mais comum disto é com
{@link android.content.CursorLoader}. No entanto, os aplicativos têm a liberdade de criar
os próprios carregadores para outros tipos de dados.
<br />
@@ -129,7 +129,7 @@ de {@link android.content.Loader} ou {@link android.content.AsyncTaskLoader}
para carregar dados de outra origem.</li>
<li>Uma implementação de {@link android.app.LoaderManager.LoaderCallbacks}.
É aqui que é possível criar novos carregadores e gerenciar as referências
-a carregadores existentes.</li>
+a carregadores existentes.</li>
<li>Uma maneira de exibir os dados do carregador, como um {@link
android.widget.SimpleCursorAdapter}.</li>
<li>Uma origem de dados, como um {@link android.content.ContentProvider}, ao usar
@@ -140,7 +140,7 @@ android.widget.SimpleCursorAdapter}.</li>
<p>O {@link android.app.LoaderManager} gerencia uma ou mais instâncias de {@link
android.content.Loader} dentro de uma {@link android.app.Activity}
ou um {@link android.app.Fragment}. Há apenas um {@link
-android.app.LoaderManager} por atividade ou fragmento.</p>
+android.app.LoaderManager} por atividade ou fragmento.</p>
<p>Geralmente,
inicializa-se um {@link android.content.Loader} dentro do método {@link
@@ -157,13 +157,13 @@ recebe os seguintes parâmetros:</p>
<ul>
<li>Um ID único que identifica o carregador. Neste exemplo, o ID é 0.</li>
<li>Argumentos opcionais para fornecer ao carregador
-em construção (<code>null</code> neste exemplo).</li>
+em construção (<code>null</code> neste exemplo).</li>
<li>Uma implementação de {@link android.app.LoaderManager.LoaderCallbacks},
que {@link android.app.LoaderManager} chama para relatar eventos do carregador. Nesse exemplo,
 a classe local implementa a interface de {@link
android.app.LoaderManager.LoaderCallbacks}, para que ela passe uma referência
-para si, {@code this}.</li>
+para si, {@code this}.</li>
</ul>
<p>A chamada de {@link android.app.LoaderManager#initLoader initLoader()} garante que o carregador
foi inicializado e que está ativo. Ela possui dois possíveis resultados:</p>
@@ -193,7 +193,7 @@ a vida do carregador automaticamente. O {@link android.app.LoaderManager}
inicia e interrompe o carregamento quando necessário, além de manter o estado do carregador
e do conteúdo associado. À medida que isso ocorre, você raramente interage com os carregadores
diretamente (para ver um exemplo de métodos para aprimorar o comportamento
-de um carregador, consulte o exemplo de <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>).
+de um carregador, consulte o exemplo de <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>).
Geralmente, usam-se os métodos {@link
android.app.LoaderManager.LoaderCallbacks} para intervir no processo de carregamento
quando determinados eventos ocorrem. Para obter mais informações sobre este assunto, consulte <a href="#callback">Uso dos retornos de chamada de LoaderManager</a>.</p>
@@ -245,7 +245,7 @@ instancia e retorna um novo {@link android.content.Loader} para o ID fornecido.
— chamado quando um carregador anteriormente criado termina o seu carregamento.
</li></ul>
<ul>
- <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
+ <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
— chamado quando um carregador anteriormente criado é reiniciado,
tornando os dados indisponíveis.
</li>
@@ -343,7 +343,7 @@ public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
<p>Este método é chamado quando um carregador anteriormente criado é reiniciado,
tornando os dados indisponíveis. Este retorno de chamada permite que você descubra quando os dados
estão prestes a serem liberados para que seja possível remover a referência a eles.  </p>
-<p>Esta implementação chama
+<p>Esta implementação chama
{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
com um valor de <code>null</code>:</p>
@@ -366,7 +366,7 @@ public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
android.app.Fragment} que exibe uma {@link android.widget.ListView} contendo
os resultados de uma consulta aos provedores de conteúdo de contatos. Ela usa um {@link
android.content.CursorLoader} para gerenciar a consulta no provedor.</p>
-
+
<p>Para um aplicativo acessar os contatos de um usuário, como neste exemplo,
o manifesto deverá incluir a permissão
{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}.</p>
diff --git a/docs/html-intl/intl/pt-br/guide/components/processes-and-threads.jd b/docs/html-intl/intl/pt-br/guide/components/processes-and-threads.jd
index c8e636dacce8..9bd335d98e8f 100644
--- a/docs/html-intl/intl/pt-br/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/processes-and-threads.jd
@@ -120,7 +120,7 @@ o dispositivo atingiu o estado de paginação de memória. Portanto, eliminar al
<ul>
<li>Se ele hospedar um {@link android.app.Activity} que não esteja em primeiro plano,
-mas ainda seja visível para o usuário (o seu método {@link android.app.Activity#onPause onPause()} tiver sido chamado).
+mas ainda seja visível para o usuário (o seu método {@link android.app.Activity#onPause onPause()} tiver sido chamado).
Isto poderá ocorrer, por exemplo, se a atividade em primeiro plano iniciar um diálogo, o que permitirá
que a atividade anterior seja vista por trás dela.</li>
@@ -319,7 +319,7 @@ private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
-
+
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
diff --git a/docs/html-intl/intl/pt-br/guide/components/recents.jd b/docs/html-intl/intl/pt-br/guide/components/recents.jd
index 467f62067a54..9f7588593bba 100644
--- a/docs/html-intl/intl/pt-br/guide/components/recents.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/recents.jd
@@ -41,7 +41,7 @@ page.tags="recents","overview"
atividades</a> e <a href="{@docRoot}guide/components/tasks-and-back-stack.html">tarefas</a> acessadas recentemente. O
usuário pode navegar pela lista e selecionar uma tarefa a retomar ou remover uma tarefa da
lista deslizando-a para fora. Com a versão 5.0 do Android (API de nível 21), várias instâncias da
-mesma atividade contendo diferentes documentos podem aparecer como tarefas na tela de visão geral. Por exemplo, o
+mesma atividade contendo diferentes documentos podem aparecer como tarefas na tela de visão geral. Por exemplo, o
Google Drive pode ter uma tarefa para cada um dos vários documentos do Google. Cada documento aparece como uma
tarefa na tela de visão geral.</p>
@@ -158,8 +158,8 @@ efeitos quando o usuário abre um documento com o aplicativo:</p>
<dl>
<dt>"{@code intoExisting}"</dt>
<dd>A atividade reutiliza uma tarefa existente para o documento. Isso é o mesmo que configurar o
- sinalizador {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} <em>sem</em> configurar
- o sinalizador {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, como descrito em
+ sinalizador {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} <em>sem</em> configurar
+ o sinalizador {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, como descrito em
<a href="#flag-new-doc">Uso do sinalizador Intent para adicionar uma tarefa</a> acima.</dd>
<dt>"{@code always}"</dt>
@@ -169,7 +169,7 @@ efeitos quando o usuário abre um documento com o aplicativo:</p>
<dt>"{@code noneâ€}"</dt>
<dd>A atividade não cria uma nova tarefa para o documento. A tela de visão geral trata a
- atividade como aconteceria por padrão: ela exibe uma tarefa para o aplicativo, que
+ atividade como aconteceria por padrão: ela exibe uma tarefa para o aplicativo, que
retoma a atividade invocada por último pelo usuário.</dd>
<dt>"{@code never}"</dt>
@@ -205,7 +205,7 @@ recentemente é removida da tela de visão geral. O valor máximo de {@code andr
<h3 id="#apptask-remove">Uso da classe AppTask para remover tarefas</h3>
-<p>Na atividade que cria uma nova tarefa na tela de visão geral, é possível
+<p>Na atividade que cria uma nova tarefa na tela de visão geral, é possível
especificar quando remover a tarefa e terminar todas as atividades associadas a ela chamando
o método {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}.</p>
diff --git a/docs/html-intl/intl/pt-br/guide/components/services.jd b/docs/html-intl/intl/pt-br/guide/components/services.jd
index 123d90ac9cb3..564ac80d3506 100644
--- a/docs/html-intl/intl/pt-br/guide/components/services.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/services.jd
@@ -185,7 +185,7 @@ usá-los a partir de outros componentes do aplicativo.</p>
<p>Como atividades (e outros componentes), você deve declarar todos os serviços no arquivo de manifesto
do aplicativo.</p>
-<p>Para declarar o serviço, adicione um elemento <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
+<p>Para declarar o serviço, adicione um elemento <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
como filho do elemento <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
. Por exemplo:</p>
@@ -494,7 +494,7 @@ a cada constante.</p>
<h3 id="StartingAService">Início de um serviço</h3>
-<p>É possível iniciar um dispositivo de uma atividade ou outro componente do aplicativo passando uma
+<p>É possível iniciar um dispositivo de uma atividade ou outro componente do aplicativo passando uma
{@link android.content.Intent} a {@link
android.content.Context#startService startService()}. O sistema Android chama o método {@link
android.app.Service#onStartCommand onStartCommand()} do serviço e passa a ele a {@link
diff --git a/docs/html-intl/intl/pt-br/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/pt-br/guide/components/tasks-and-back-stack.jd
index d309c6704f37..8e485b0fc939 100644
--- a/docs/html-intl/intl/pt-br/guide/components/tasks-and-back-stack.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/tasks-and-back-stack.jd
@@ -77,7 +77,7 @@ android.app.Fragment} class documentation.</p>
</div>
-->
-<p>A tela inicial do dispositivo é o ponto de partida para a maioria das tarefas. Quando o usuário toca em um ícone no inicializador do
+<p>A tela inicial do dispositivo é o ponto de partida para a maioria das tarefas. Quando o usuário toca em um ícone no inicializador do
aplicativo
(ou em um atalho na tela inicial), essa tarefa do aplicativo acontece em primeiro plano. Se não
existir nenhuma tarefa para o aplicativo (se o aplicativo não tiver sido usado recentemente), uma nova tarefa
@@ -85,7 +85,7 @@ será criada e a atividade "principal" daquele aplicativo abrirá como a ativida
<p>Quando a atividade atual inicia outra, a nova atividade é colocada no topo da pilha
e recebe foco. A atividade anterior permanece na pilha, mas é interrompida. Quando uma atividade
-para, o sistema retém o estado atual da interface do usuário. Quando o usuário pressiona o botão
+para, o sistema retém o estado atual da interface do usuário. Quando o usuário pressiona o botão
<em>Voltar</em>
, a atividade atual é retirada do topo da pilha (a atividade é destruída)
e a atividade anterior reinicia (o estado anterior da IU é restaurado). Atividades na pilha nunca
@@ -103,7 +103,7 @@ a atividade atual é
destruída e a atividade anterior reinicia.</p>
-<p>Se o usuário continua pressionando <em>Voltar</em>, cada atividade na pilha é retirada para
+<p>Se o usuário continua pressionando <em>Voltar</em>, cada atividade na pilha é retirada para
revelar
a anterior até que o usuário retorne à tela inicial (ou a qualquer atividade que estivesse em execução
no começo da tarefa). Quando todas as atividades forem removidas da pilha, a tarefa não existirá mais.</p>
@@ -295,7 +295,7 @@ launchMode}</a> do elemento
<p>O atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
launchMode}</a> especifica uma instrução sobre como a atividade deve ser inicializada
-em uma tarefa. Há quatro modos diferentes de inicialização que podem ser designados ao atributo
+em uma tarefa. Há quatro modos diferentes de inicialização que podem ser designados ao atributo
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launchMode</a></code>:
</p>
@@ -334,7 +334,7 @@ Entretanto, se uma instância da atividade já existir em uma tarefa separada, o
a intenção àquela instância por meio de uma chamada do método {@link
android.app.Activity#onNewIntent onNewIntent()} em vez de criar uma nova instância. Somente
uma instância da atividade pode existir por vez.
- <p class="note"><strong>Observação:</strong> embora a atividade inicie em uma nova tarefa, o botão
+ <p class="note"><strong>Observação:</strong> embora a atividade inicie em uma nova tarefa, o botão
<em>Voltar</em> ainda direciona o usuário à atividade anterior.</p></dd>
<dt>{@code "singleInstance"}.</dt>
<dd>Igual à {@code "singleTask"}, exceto que o sistema não inicializa nenhuma outra atividade
@@ -505,7 +505,7 @@ A tarefa reterá todas as atividades em sua pilha mesmo após um longo período.
href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
<dd>Se esse atributo for definido como {@code "true"} na atividade raiz de uma tarefa,
a pilha será apagada da atividade raiz sempre que o usuário sair da tarefa
-e retornar a ela. Em outras palavras, é o oposto de
+e retornar a ela. Em outras palavras, é o oposto de
<a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
{@code alwaysRetainTaskState}</a>. O usuário sempre retorna à tarefa
no estado inicial, mesmo ao retirar-se da tarefa somente por um momento.</dd>
@@ -557,13 +557,13 @@ nova tarefa, e o usuário perderia algum tempo trabalhando nessa tarefa. O usuá
<em>Página inicial</em>. A tarefa é enviada para segundo plano e não fica mais visível. O usuário não tem como voltar
à tarefa porque ela não é representada no inicializador do aplicativo.</p>
-<p>Para esses casos em que se deseja que o usuário não seja capaz de retornar a uma atividade, defina
+<p>Para esses casos em que se deseja que o usuário não seja capaz de retornar a uma atividade, defina
<a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">{@code finishOnTaskLaunch}</a>
- do elemento
+ do elemento
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
como {@code "true"} (consulte <a href="#Clearing">Apagar a pilha</a>).</p>
-<p>Veja mais informações sobre a representação e o gerenciamento de atividades
+<p>Veja mais informações sobre a representação e o gerenciamento de atividades
na tela de visão geral em <a href="{@docRoot}guide/components/recents.html">
Tela de visão geral</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/guide/index.jd b/docs/html-intl/intl/pt-br/guide/index.jd
index ab396477e250..74151ccd26ba 100644
--- a/docs/html-intl/intl/pt-br/guide/index.jd
+++ b/docs/html-intl/intl/pt-br/guide/index.jd
@@ -29,7 +29,7 @@ tela para a interface de usuário e um <em>serviço</em> realiza trabalho
em segundo plano de forma independente.</p>
<p>De um componente, é possível executar outro componente usando uma <em>intenção</em>. É possível até mesmo
-iniciar um componente em um aplicativo diferente, como uma atividade em um aplicativo de mapas para mostrar um endereço. Esse modelo
+iniciar um componente em um aplicativo diferente, como uma atividade em um aplicativo de mapas para mostrar um endereço. Esse modelo
fornece vários pontos de entrada para um único aplicativo e permite que qualquer aplicativo se comporte como o "padrão" de um usuário
para uma ação que outros aplicativos podem invocar.</p>
@@ -53,7 +53,7 @@ diferentes configurações de dispositivos. Por exemplo, é possível criar dife
de layout para diversos tamanhos de tela e o sistema
determina qual layout deverá aplicar com base no tamanho da tela do dispositivo atual.</p>
-<p>Você pode consultar a disponibilidade dos recursos do dispositivo em tempo de execução se qualquer recurso do
+<p>Você pode consultar a disponibilidade dos recursos do dispositivo em tempo de execução se qualquer recurso do
aplicativo exigir hardware específico, como uma câmera. Se necessário, também é possível declarar recursos que o aplicativo exige,
para que mercados como a Google Play Store não permitam a instalação em dispositivos que não sejam compatíveis
com aquele recurso.</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/pt-br/guide/topics/manifest/manifest-intro.jd
index e33779684a5c..639b6dbf4bf1 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/manifest/manifest-intro.jd
@@ -34,14 +34,14 @@ O nome do pacote serve como identificador exclusivo para o aplicativo.</li>
<li>Descrever os componentes do aplicativo &mdash; as atividades,
os serviços, os receptores de transmissão e os provedores de conteúdo que compõem
o aplicativo. Nomear as classes que implementam os componentes
-e publicam seus recursos (por exemplo, que mensagens {@link android.content.Intent
+e publicam seus recursos (por exemplo, que mensagens {@link android.content.Intent
Intent} eles podem tratar). Essas declarações permitem ao sistema Android
saber quais são os componentes e em que condições eles podem ser iniciados.</li>
-<li>Determinar que processos hospedarão componentes de aplicativo.</li>
+<li>Determinar que processos hospedarão componentes de aplicativo.</li>
<li>Declarar as permissões que o aplicativo deve ter para acessar
-partes protegidas da API e interagir com outros aplicativos.</li>
+partes protegidas da API e interagir com outros aplicativos.</li>
<li>Declarar também as permissões que outros devem ter
para interagir com os componentes do aplicativo.</li>
@@ -66,7 +66,7 @@ elemento que ele pode conter. Cada elemento e seus atributos
são documentados na totalidade em um arquivo separado. Para exibir informações detalhadas
sobre cada elemento, clique no nome do elemento no diagrama,
na lista de elementos em ordem alfabética que acompanha o diagrama
-ou em qualquer outra menção ao nome do elemento.
+ou em qualquer outra menção ao nome do elemento.
</p>
<pre>
@@ -128,7 +128,7 @@ ou em qualquer outra menção ao nome do elemento.
<p>
Todos os elementos que podem aparecer no arquivo de manifesto estão
relacionados abaixo em ordem alfabética. Estes são os únicos elementos legais. Não é possível
-adicionar elementos ou atributos próprios.
+adicionar elementos ou atributos próprios.
</p>
<p style="margin-left: 2em">
@@ -158,7 +158,7 @@ adicionar elementos ou atributos próprios.
</p>
-
+
<h2 id="filec">Convenções de arquivos</h2>
@@ -172,25 +172,25 @@ no manifesto:
<dd>Somente os elementos
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
e <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-são necessários — eles devem estar presentes e ocorrer somente uma vez.
+são necessários — eles devem estar presentes e ocorrer somente uma vez.
A maioria dos outros pode ocorrer diversas vezes ou nunca &mdash; embora
pelo menos alguns deles devam estar presentes para que o manifesto
realize algo significativo.
<p>
-Se um elemento contiver qualquer coisa, ele conterá outros elementos.
+Se um elemento contiver qualquer coisa, ele conterá outros elementos.
Todos os valores são definidos por meio de atributos, e não como dados de caracteres dentro de um elemento.
</p>
<p>
Elementos de mesmo nível geralmente não são ordenados. Por exemplo: os elementos
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
-e <code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
-podem ser combinados entre si em qualquer sequência. (O elemento
+e <code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+podem ser combinados entre si em qualquer sequência. (O elemento
<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
-é uma exceção a essa regra: ele deve seguir o
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+é uma exceção a essa regra: ele deve seguir o
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
para o qual é alias.)
</p></dd>
@@ -200,32 +200,32 @@ devem ser especificados para um elemento para cumprir a sua finalidade. Use
a documentação como guia. Para atributos verdadeiramente opcionais, ele menciona
um valor padrão ou declara o que acontece na ausência de uma especificação.
-<p>Exceto por alguns atributos do elemento
+<p>Exceto por alguns atributos do elemento
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
-raiz, todos os nomes de atributo têm um prefixo {@code android:} &mdash;
+raiz, todos os nomes de atributo têm um prefixo {@code android:} &mdash;
por exemplo, {@code android:alwaysRetainTaskState}. Como o prefixo é universal,
a documentação geralmente o omite ao referir-se a atributos
pelo nome.</p></dd>
<dt><b>Declaração de nomes de classe</b></dt>
<dd>Muitos elementos correspondem a objetos Java, inclusive elementos do próprio
-aplicativo (o elemento
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-) e seus componentes principais &mdash; atividades
-(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
-serviços
-(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
-receptores de transmissão
-(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>)
-e provedores de conteúdo
-(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
+aplicativo (o elemento
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+) e seus componentes principais &mdash; atividades
+(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
+serviços
+(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
+receptores de transmissão
+(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>)
+e provedores de conteúdo
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
<p>
-Se uma subclasse for definida, como quase sempre acontece para classes de componentes
-({@link android.app.Activity}, {@link android.app.Service},
-{@link android.content.BroadcastReceiver} e {@link android.content.ContentProvider}),
+Se uma subclasse for definida, como quase sempre acontece para classes de componentes
+({@link android.app.Activity}, {@link android.app.Service},
+{@link android.content.BroadcastReceiver} e {@link android.content.ContentProvider}),
a subclasse será declarada por meio de um atributo {@code name}. O nome deve conter
-toda a designação do pacote.
+toda a designação do pacote.
Por exemplo: uma subclasse {@link android.app.Service} pode ser declarada assim:
</p>
@@ -240,11 +240,11 @@ Por exemplo: uma subclasse {@link android.app.Service} pode ser declarada assim:
<p>
No entanto, para encurtar, se o primeiro caractere da string for um ponto,
-a string será acrescentada ao nome do pacote do aplicativo (conforme especificado pelo atributo
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
- do elemento
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
-). A seguinte atribuição é igual à atribuição acima:
+a string será acrescentada ao nome do pacote do aplicativo (conforme especificado pelo atributo
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
+ do elemento
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+). A seguinte atribuição é igual à atribuição acima:
</p>
<pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -257,13 +257,13 @@ a string será acrescentada ao nome do pacote do aplicativo (conforme especifica
&lt;/manifest&gt;</pre>
<p>
-Ao iniciar um componente, o Android cria uma instância da subclasse nomeada.
+Ao iniciar um componente, o Android cria uma instância da subclasse nomeada.
Se nenhuma subclasse for especificada, ele criará uma instância da classe base.
</p></dd>
<dt><b>Vários valores</b></dt>
<dd>Se for especificado mais de um valor, o elemento sempre será repetido
-em vez de listar os vários valores dentro de um único elemento.
+em vez de listar os vários valores dentro de um único elemento.
Por exemplo, um filtro de intenção pode listar algumas ações:
<pre>&lt;intent-filter . . . &gt;
@@ -276,22 +276,22 @@ Por exemplo, um filtro de intenção pode listar algumas ações:
<dt><b>Valores de recurso</b></dt>
<dd>Alguns atributos têm valores que podem ser exibidos aos usuários &mdash; por exemplo,
uma etiqueta e um ícone de uma atividade. Os valores desses atributos
-devem ser localizados e, por tanto, definidos a partir de um recurso ou tema. Os valores
+devem ser localizados e, por tanto, definidos a partir de um recurso ou tema. Os valores
de recurso são expressos no formato a seguir:</p>
<p style="margin-left: 2em">{@code @[<i>pacote</i>:]<i>tipo</i>:<i>nome</i>}</p>
<p>
em que o nome do <i>pacote</i> pode ser omitido se o recurso estiver no mesmo pacote
-que o aplicativo <i>tipo</i> é um tipo de recurso &mdash; como uma "string" ou
-"drawable" (desenhável) &mdash; e <i>nome</i> é o nome que identifica o recurso específico.
+que o aplicativo <i>tipo</i> é um tipo de recurso &mdash; como uma "string" ou
+"drawable" (desenhável) &mdash; e <i>nome</i> é o nome que identifica o recurso específico.
Por exemplo:
</p>
<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
<p>
-Os valores de um tema são expressos de forma semelhante, mas, com um '{@code ?}'
+Os valores de um tema são expressos de forma semelhante, mas, com um '{@code ?}'
em vez de '{@code @}':
</p>
@@ -299,8 +299,8 @@ em vez de '{@code @}':
</p></dd>
<dt><b>Valores de string</b></dt>
-<dd>Quando o valor de um atributo é uma string, devem-se usar duas barras invertidas ('{@code \\}')
-para caracteres de escape &mdash; por exemplo, '{@code \\n}' para
+<dd>Quando o valor de um atributo é uma string, devem-se usar duas barras invertidas ('{@code \\}')
+para caracteres de escape &mdash; por exemplo, '{@code \\n}' para
uma nova linha ou '{@code \\uxxxx}' para um caractere Unicode.</dd>
</dl>
@@ -320,7 +320,7 @@ Os componentes fundamentais de um aplicativo (suas atividades, serviços e recep
de transmissão) são ativados por <i>intenções</i>. Intenções são
pacotes de informações (objetos {@link android.content.Intent}) que descrevem
uma ação desejada &mdash; inclusive os dados usados em ações, a categoria
-do componente que deve executar a ação e outras instruções pertinentes.
+do componente que deve executar a ação e outras instruções pertinentes.
O Android localiza um componente adequado para responder à intenção, inicia
uma nova instância do componente se necessário e passa-o
ao objeto da intenção.
@@ -330,7 +330,7 @@ ao objeto da intenção.
Os componentes anunciam seus recursos &mdash; os tipos de intenção aos quais eles podem
responder &mdash; por meio de <i>filtros de intenções</i>. Como o sistema Android
precisa saber que intenções um componente pode tratar antes de iniciá-lo, os filtros
-de intenções são especificados no manifesto como elementos
+de intenções são especificados no manifesto como elementos
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
. Os componentes podem ter qualquer quantidade de filtros, em que cada um descreve
um recurso diferente.
@@ -345,8 +345,8 @@ do componente.
<p>
Para ver como os objetos de intenção são testados em relação aos filtros de intenções,
-consulte o documento
-<a href="{@docRoot}guide/components/intents-filters.html">Intenções
+consulte o documento
+<a href="{@docRoot}guide/components/intents-filters.html">Intenções
e filtros de intenções</a> em separado.
</p>
@@ -355,41 +355,41 @@ e filtros de intenções</a> em separado.
<p>
Alguns elementos têm atributos {@code icon} e {@code label} de um pequeno ícone
-e uma etiqueta de texto que pode ficar visível para os usuários. Alguns deles também têm um atributo
-{@code description} para um texto explicativo mais longo que também pode ser
-exibido na tela. Por exemplo: o elemento
+e uma etiqueta de texto que pode ficar visível para os usuários. Alguns deles também têm um atributo
+{@code description} para um texto explicativo mais longo que também pode ser
+exibido na tela. Por exemplo: o elemento
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-tem todos os três atributos; assim, quando o usuário é consultado para dar
-permissão a um aplicativo que a solicitou, serão apresentados ao usuário um ícone
-que representa a permissão, o nome da permissão e uma descrição
+tem todos os três atributos; assim, quando o usuário é consultado para dar
+permissão a um aplicativo que a solicitou, serão apresentados ao usuário um ícone
+que representa a permissão, o nome da permissão e uma descrição
de tudo o que está envolvido.
</p>
<p>
-Em todo caso, o ícone e a etiqueta definidos em um elemento recipiente se tornam as configurações
-{@code icon} e {@code label} padrão de todos os subelementos do contêiner.
-Assim, o ícone e a etiqueta definidos no elemento
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-são o ícone e a etiqueta padrão para cada um dos componentes do aplicativo.
-Da mesma forma, o ícone e a etiqueta definidos para um componente &mdash; por exemplo, um elemento
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
- &mdash; são as configurações padrão para cada um dos elementos
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+Em todo caso, o ícone e a etiqueta definidos em um elemento recipiente se tornam as configurações
+{@code icon} e {@code label} padrão de todos os subelementos do contêiner.
+Assim, o ícone e a etiqueta definidos no elemento
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+são o ícone e a etiqueta padrão para cada um dos componentes do aplicativo.
+Da mesma forma, o ícone e a etiqueta definidos para um componente &mdash; por exemplo, um elemento
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ &mdash; são as configurações padrão para cada um dos elementos
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
do componente. Se um elemento
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-define uma etiqueta, mas uma atividade e seu filtro de intenção não definem,
-a etiqueta do aplicativo é tratada como a etiqueta de atividade
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+define uma etiqueta, mas uma atividade e seu filtro de intenção não definem,
+a etiqueta do aplicativo é tratada como a etiqueta de atividade
e do filtro de intenção.
</p>
<p>
-O ícone e a etiqueta definidos para um filtro de intenção são usados para representar um componente
+O ícone e a etiqueta definidos para um filtro de intenção são usados para representar um componente
apresentado para o usuário para preencher a função
-anunciada pelo filtro. Por exemplo: um filtro com as configurações
-"{@code android.intent.action.MAIN}" e
-"{@code android.intent.category.LAUNCHER}" anuncia uma atividade
+anunciada pelo filtro. Por exemplo: um filtro com as configurações
+"{@code android.intent.action.MAIN}" e
+"{@code android.intent.category.LAUNCHER}" anuncia uma atividade
como uma que inicia um aplicativo &mdash; ou seja,
-que deve ser exibida no inicializador do aplicativo. O ícone e a etiqueta
+que deve ser exibida no inicializador do aplicativo. O ícone e a etiqueta
definidos no filtro são, portanto, as exibidas no inicializador.
</p>
@@ -397,14 +397,14 @@ definidos no filtro são, portanto, as exibidas no inicializador.
<h3 id="perms">Permissões</h3>
<p>
-As <i>permissões</i> são restrições que limitam o acesso a parte do código
-ou aos dados de um dispositivo. A limitação é imposta para proteger dados
-essenciais que podem sofrer mau uso e distorções ou prejudicar a experiência do usuário.
+As <i>permissões</i> são restrições que limitam o acesso a parte do código
+ou aos dados de um dispositivo. A limitação é imposta para proteger dados
+essenciais que podem sofrer mau uso e distorções ou prejudicar a experiência do usuário.
</p>
<p>
-Cada permissão é identificada por uma etiqueta exclusiva. Geralmente a etiqueta indica
-a ação que foi restringida. A seguir há alguns exemplos de permissões definidas
+Cada permissão é identificada por uma etiqueta exclusiva. Geralmente a etiqueta indica
+a ação que foi restringida. A seguir há alguns exemplos de permissões definidas
pelo Android:
</p>
@@ -418,25 +418,25 @@ Um recurso pode ser protegido por, no máximo, uma permissão.
</p>
<p>
-Se um aplicativo precisar de acesso a um recurso protegido por uma permissão,
-ele deve declarar que precisa da permissão com um elemento
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
-no manifesto. Assim, quando o aplicativo é instalado
-no dispositivo, o instalador determina se concederá ou não a permissão
-solicitada, marcando as autoridades que assinaram os certificados
-do aplicativo e, em alguns casos, perguntando ao usuário.
-Se a permissão for concedida, o aplicativo será capaz de usar os recursos
-protegidos. Caso contrário, sua tentativa de acessar esses recursos simplesmente falhará
-sem nenhuma notificação ao usuário.
+Se um aplicativo precisar de acesso a um recurso protegido por uma permissão,
+ele deve declarar que precisa da permissão com um elemento
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+no manifesto. Assim, quando o aplicativo é instalado
+no dispositivo, o instalador determina se concederá ou não a permissão
+solicitada, marcando as autoridades que assinaram os certificados
+do aplicativo e, em alguns casos, perguntando ao usuário.
+Se a permissão for concedida, o aplicativo será capaz de usar os recursos
+protegidos. Caso contrário, sua tentativa de acessar esses recursos simplesmente falhará
+sem nenhuma notificação ao usuário.
</p>
<p>
-Um aplicativo também pode proteger seus componentes (atividades, serviços,
-receptores de transmissão e provedores de conteúdo) com permissões. Ele pode empregar
-qualquer uma das permissões definidas pelo Android (listadas em
-{@link android.Manifest.permission android.Manifest.permission}) ou declaradas
-por outros aplicativos. Ou então, ele pode definir as suas próprias. As novas permissões são declaradas
-com o elemento
+Um aplicativo também pode proteger seus componentes (atividades, serviços,
+receptores de transmissão e provedores de conteúdo) com permissões. Ele pode empregar
+qualquer uma das permissões definidas pelo Android (listadas em
+{@link android.Manifest.permission android.Manifest.permission}) ou declaradas
+por outros aplicativos. Ou então, ele pode definir as suas próprias. As novas permissões são declaradas
+com o elemento
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>.
Por exemplo: uma atividade pode ser protegida da seguinte forma:
</p>
@@ -458,41 +458,41 @@ com o elemento
<p>
Observe que, nesse exemplo, a permissão {@code DEBIT_ACCT}, além de declarada
-com o elemento
+com o elemento
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-, tem seu uso solicitado com o elemento
+, tem seu uso solicitado com o elemento
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
Ela deve ser solicitada para que outros componentes do aplicativo
-iniciem a atividade protegida, mesmo que a proteção
-seja imposta pelo próprio aplicativo.
+iniciem a atividade protegida, mesmo que a proteção
+seja imposta pelo próprio aplicativo.
</p>
<p>
Se, no mesmo exemplo, o atributo {@code permission} fosse definido
-como uma permissão declarada em outro lugar
+como uma permissão declarada em outro lugar
(como {@code android.permission.CALL_EMERGENCY_NUMBERS}), não seria
-necessário declará-la novamente com um elemento
+necessário declará-la novamente com um elemento
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>.
- No entanto, ainda seria necessário solicitar seu uso com
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
+ No entanto, ainda seria necessário solicitar seu uso com
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
</p>
<p>
-O elemento
-<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
-declara um espaço de nome de um grupo de permissões que será definido
-no código. E
+O elemento
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+declara um espaço de nome de um grupo de permissões que será definido
+no código. E
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
-define um etiqueta de um conjunto de permissões (os dois declarados no manifesto com elementos
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-e as declaradas em outro lugar). Ele afeta somente a forma com que as permissões estão
-agrupadas quando apresentadas ao usuário. O elemento
+define um etiqueta de um conjunto de permissões (os dois declarados no manifesto com elementos
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+e as declaradas em outro lugar). Ele afeta somente a forma com que as permissões estão
+agrupadas quando apresentadas ao usuário. O elemento
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
-não especifica que permissões pertencem ao grupo;
+não especifica que permissões pertencem ao grupo;
ele só dá um nome ao grupo. Para incluir uma permissão no grupo,
-designa-se o nome do grupo ao atributo
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
- do elemento
+designa-se o nome do grupo ao atributo
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
+ do elemento
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>.
</p>
@@ -501,17 +501,17 @@ designa-se o nome do grupo ao atributo
<h3 id="libs">Bibliotecas</h3>
<p>
-Todo aplicativo está vinculado à biblioteca Android padrão, que
-contém os pacotes básicos para programar aplicativos (com classes comuns
+Todo aplicativo está vinculado à biblioteca Android padrão, que
+contém os pacotes básicos para programar aplicativos (com classes comuns
tais como Activity, Service, Intent, View, Button, Application, ContentProvider
etc.).
</p>
<p>
-No entanto, alguns pacotes residem em suas próprias bibliotecas. Se o aplicativo
-usar código de algum desses pacotes, ele deve receber solicitação explícita para ser
-vinculado a eles. O manifesto deve conter um elemento
+No entanto, alguns pacotes residem em suas próprias bibliotecas. Se o aplicativo
+usar código de algum desses pacotes, ele deve receber solicitação explícita para ser
+vinculado a eles. O manifesto deve conter um elemento
<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
- separado para nomear cada uma das bibliotecas (o nome da biblioteca se encontra
+ separado para nomear cada uma das bibliotecas (o nome da biblioteca se encontra
na documentação do pacote).
</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/pt-br/guide/topics/providers/calendar-provider.jd
index ce72b7db5cff..42a517b73783 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@ page.title=Provedor de agenda
<li><a href="#intent-view">Uso de intenções para exibir dados de agenda</a></li>
</ol>
</li>
-
+
<li><a href="#sync-adapter">Adaptadores de sincronização</a></li>
</ol>
@@ -113,26 +113,26 @@ as tabelas e os campos principais que as vinculam entre si.</p>
</tr>
<tr>
<td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-
+
<td>Essa tabela contém
as informações específicas da agenda. Cada linha nessa tabela contém os detalhes
de uma única agenda, como nome, cor, informações de sincronização etc.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Events}</td>
-
+
<td>Essa tabela contém
as informações específicas do evento. Cada linha nessa tabela tem as informações de um único
evento &mdash; por exemplo: título do evento, local, horário de início, horário
de término etc. O evento pode ocorrer uma vez ou diversas vezes. Os participantes,
-lembretes e propriedades estendidas são armazenados em tabelas separadas.
+lembretes e propriedades estendidas são armazenados em tabelas separadas.
Cada um deles tem um {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
que referencia o {@link android.provider.BaseColumns#_ID} na tabela de eventos.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances}</td>
-
+
<td>Essa tabela contém os
horários de início e término para cada ocorrência em um evento. Cada linha nessa tabela
representa uma única ocorrência do evento. Para eventos de ocorrência única, há um mapeamento 1:1
@@ -141,7 +141,7 @@ a diversas ocorrências daquele evento são geradas automaticamente.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Attendees}</td>
-
+
<td>Essa tabela contém
as informações dos participantes (convidados) do evento. Cada linha representa um único convidado
de um evento. Ela especifica o tipo de convidado e a resposta quanto à participação do convidado
@@ -149,7 +149,7 @@ no evento.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Reminders}</td>
-
+
<td>Essa tabela contém os
dados de alerta/notificação. Cada linha representa um único alerta de um evento. Um evento
pode ter vários lembretes. O número máximo de lembretes por evento
@@ -159,7 +159,7 @@ que é definido pelo adaptador de sincronização
que possui a agenda fornecida. Os lembretes são especificados em minutos antes do evento
e têm um método que determina a forma de alertar o usuário.</td>
</tr>
-
+
</table>
<p>A API do Provedor de Agenda é projetada para ser flexível e poderosa. Ao mesmo tempo,
@@ -211,7 +211,7 @@ para excluir, inserir ou atualizar dados da agenda:</p>
<p>A tabela {@link android.provider.CalendarContract.Calendars} contém detalhes
de agendas individuais. As colunas
-Agendas a seguir são graváveis tanto por aplicativos quanto por <a href="#sync-adapter">adaptadores de sincronização</a>.
+Agendas a seguir são graváveis tanto por aplicativos quanto por <a href="#sync-adapter">adaptadores de sincronização</a>.
Para obter uma lista completa de campos compatíveis, consulte
a referência {@link android.provider.CalendarContract.Calendars}</p>
<table>
@@ -229,7 +229,7 @@ a referência {@link android.provider.CalendarContract.Calendars}</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-
+
<td>Um booleano indicando se a agenda foi selecionada para ser exibida. Um valor
de 0 indica que eventos associados a essa agenda não devem ser
exibidos. Um valor de 1 indica que eventos associados a essa agenda devem
@@ -240,7 +240,7 @@ android.provider.CalendarContract.Instances}.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-
+
<td>Um booleano que indica se a agenda deve ser sincronizada e ter
os eventos armazenados no dispositivo. Um valor de 0 indica a não sincronização dessa agenda
e o não armazenamento dos eventos no dispositivo. Um valor de 1 indica a sincronização dos eventos dessa agenda
@@ -253,7 +253,7 @@ e o armazenamento dos eventos no dispositivo.</td>
<p>A seguir há um exemplo que mostra como obter as agendas de propriedade de determinado
usuário. Para simplificar o exemplo, a operação de consulta é exibida no
encadeamento da interface do usuário ("encadeamento principal"). Na prática, isso deve ser feito em um encadeamento
-assíncrono em vez de no encadeamento principal. Para ver mais discussões, consulte
+assíncrono em vez de no encadeamento principal. Para ver mais discussões, consulte
<a href="{@docRoot}guide/components/loaders.html">Carregadores</a>. Se você não estiver somente
lendo dados, mas modificando-os, consulte {@link android.content.AsyncQueryHandler}.
</p>
@@ -268,13 +268,13 @@ public static final String[] EVENT_PROJECTION = new String[] {
Calendars.CALENDAR_DISPLAY_NAME, // 2
Calendars.OWNER_ACCOUNT // 3
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
-
+
<div class="sidebox-wrapper"> <div class="sidebox"> <h3>Por que incluir
ACCOUNT_TYPE?</h3> <p>Ao consultar um {@link
@@ -289,7 +289,7 @@ o {@link android.accounts.AccountManager}. Há também um tipo especial de conta
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} para agendas
não associadas a nenhuma conta do dispositivo. Contas {@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} não são
-sincronizadas.</p> </div> </div>
+sincronizadas.</p> </div> </div>
<p> Na próxima parte do exemplo, você construirá a consulta. A seleção
@@ -308,38 +308,38 @@ consulte <a href="{@docRoot}guide/topics/providers/content-providers.html">Prove
<pre>// Run query
Cursor cur = null;
ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+Uri uri = Calendars.CONTENT_URI;
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+ Calendars.ACCOUNT_TYPE + " = ?) AND ("
+ Calendars.OWNER_ACCOUNT + " = ?))";
String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
- "sampleuser@gmail.com"};
-// Submit the query and get a Cursor object back.
+ "sampleuser@gmail.com"};
+// Submit the query and get a Cursor object back.
cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
<p>Essa próxima seção usa o cursor para avançar pelo conjunto de resultados. Ele usa
as constantes definidas no início do exemplo para retornar os valores
de cada campo.</p>
-
+
<pre>// Use the cursor to step through the returned records
while (cur.moveToNext()) {
long calID = 0;
String displayName = null;
String accountName = null;
String ownerName = null;
-
+
// Get the field values
calID = cur.getLong(PROJECTION_ID_INDEX);
displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
-
+
// Do something with the values...
...
}
</pre>
-
+
<h3 id="modify-calendar">Modificação de uma agenda</h3>
<p>Para realizar uma atualização de uma agenda, é possível fornecer o {@link
@@ -350,7 +350,7 @@ URI
ou como o primeiro item de seleção. A seleção
deve iniciar com <code>&quot;_id=?&quot;</code> e o primeiro
<code>selectionArg</code> deve ser o {@link
-android.provider.BaseColumns#_ID} da agenda.
+android.provider.BaseColumns#_ID} da agenda.
Também é possível realizar atualizações com codificações do ID na URI. Este exemplo altera
o nome de exibição de uma agenda usando a
abordagem
@@ -377,14 +377,14 @@ android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} de {@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}.
{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
é um tipo de conta especial para agendas
-não associado a nenhuma conta do dispositivo. Agendas desse tipo não são sincronizadas com um servidor. Para
+não associado a nenhuma conta do dispositivo. Agendas desse tipo não são sincronizadas com um servidor. Para
ver discussões sobre adaptadores de sincronização, consulte <a href="#sync-adapter">Adaptadores de sincronização</a>.</p>
<h2 id="events">Tabela de eventos</h2>
<p>A tabela {@link android.provider.CalendarContract.Events} contém detalhes
de eventos individuais. Para adicionar, atualizar ou excluir eventos, um aplicativo deve
-conter a permissão {@link android.Manifest.permission#WRITE_CALENDAR}
+conter a permissão {@link android.Manifest.permission#WRITE_CALENDAR}
no <a href="#manifest">arquivo de manifesto</a>.</p>
<p>As colunas de Eventos a seguir são graváveis tanto por um aplicativo quanto por um adaptador
@@ -434,7 +434,7 @@ android.provider.CalendarContract.Events}.</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
-
+
<td>A duração do evento em formato <a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RCF5545</a>.
Por exemplo, um valor de <code>&quot;PT1H&quot;</code> indica que o evento
deve durar uma hora, e um valor de <code>&quot;P2W&quot;</code> indica
@@ -444,39 +444,39 @@ uma duração de 2 semanas. </td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
-
+
<td>Um valor de 1 indica que esse evento ocupa o dia inteiro, como definido
pelo fuso horário local. Um valor de 0 indica que é um evento comum que pode iniciar
e terminar a qualquer momento durante um dia.</td>
-
+
</tr>
-
-
+
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
-
+
<td>A regra de recorrência do formato do evento. Por
exemplo, <code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>. Veja
mais exemplos <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">aqui</a>.</td>
-
+
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
- <td>As datas de recorrência do evento.
- Normalmente, usa-se {@link android.provider.CalendarContract.EventsColumns#RDATE}
- em conjunto com {@link android.provider.CalendarContract.EventsColumns#RRULE}
+ <td>As datas de recorrência do evento.
+ Normalmente, usa-se {@link android.provider.CalendarContract.EventsColumns#RDATE}
+ em conjunto com {@link android.provider.CalendarContract.EventsColumns#RRULE}
para definir um conjunto agregado
de ocorrências repetidas. Para ver mais discussões, consulte <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">Especificação RFC5545</a>.</td>
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
-
+
<td>Se esse evento considera tempo ocupado ou se há tempo livre que pode ser
reagendado. </td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
@@ -514,11 +514,11 @@ java.util.TimeZone#getAvailableIDs()}. Observe que essa regra não se aplica
a inserções de evento pela intenção {@link
android.content.Intent#ACTION_INSERT INSERT} descrita em <a href="#intent-insert">Uso de uma intenção para inserir um evento</a> &mdash; nesta
situação, é fornecido um fuso horário padrão.</li>
-
+
<li>Para eventos não recorrentes, é preciso incluir {@link
android.provider.CalendarContract.EventsColumns#DTEND}. </li>
-
-
+
+
<li>Para eventos recorrentes, é necessário incluir uma {@link
android.provider.CalendarContract.EventsColumns#DURATION} além de uma {@link
android.provider.CalendarContract.EventsColumns#RRULE} ou {@link
@@ -528,7 +528,7 @@ android.content.Intent#ACTION_INSERT INSERT} descrita em <a href="#intent-insert
é possível usar uma {@link
android.provider.CalendarContract.EventsColumns#RRULE} em conjunto com {@link android.provider.CalendarContract.EventsColumns#DTSTART} e {@link android.provider.CalendarContract.EventsColumns#DTEND}. Desta forma, o aplicativo Agenda
a converte em uma duração automaticamente.</li>
-
+
</ul>
<p>A seguir há um exemplo de inserção de um evento: para simplificar, isso está sendo realizado
@@ -539,8 +539,8 @@ mais informações, consulte {@link android.content.AsyncQueryHandler}.</p>
<pre>
long calID = 3;
-long startMillis = 0;
-long endMillis = 0;
+long startMillis = 0;
+long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@ Uri uri = cr.insert(Events.CONTENT_URI, values);
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
-//
+//
// ... do something with event ID
//
//</pre>
@@ -581,7 +581,7 @@ Contudo, se for necessário, é possível editar eventos diretamente. Para reali
de um evento, é possível fornecer o <code>_ID</code>
do evento como um ID anexado à URI ({@link
android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
-ou como o primeiro item de seleção.
+ou como o primeiro item de seleção.
A seleção deve iniciar com <code>&quot;_id=?&quot;</code> e o primeiro
<code>selectionArg</code> deve ser o <code>_ID</code> do evento. Você também
pode realizar atualizações usando uma seleção sem ID. A seguir há um exemplo de como atualizar
@@ -598,7 +598,7 @@ ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
Uri updateUri = null;
// The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;);
+values.put(Events.TITLE, &quot;Kickboxing&quot;);
updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().update(updateUri, values, null, null);
Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows); </pre>
@@ -608,7 +608,7 @@ Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows); </pre>
<p>Pode-se excluir um evento tanto pelo {@link
android.provider.BaseColumns#_ID} como um ID anexado na URI quanto usando-se
a seleção padrão. Ao usar um ID anexado, não é possível fazer seleções.
-Há duas versões de exclusão: como aplicativo e como adaptador de sincronização.
+Há duas versões de exclusão: como aplicativo e como adaptador de sincronização.
A exclusão por um aplicativo define as colunas <em>excluídas</em> como 1. Esse sinalizador é que diz
ao adaptador de sincronização que a linha foi excluída e que essa exclusão deve ser
propagada para o servidor. A exclusão por um adaptador de sincronização remove o evento
@@ -625,7 +625,7 @@ ContentValues values = new ContentValues();
Uri deleteUri = null;
deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().delete(deleteUri, null, null);
-Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
</pre>
<h2 id="attendees">Tabela de participantes</h2>
@@ -634,10 +634,10 @@ Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
representa um único participante ou convidado de um evento. Chamar
{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
retorna uma lista de participantes para
-o evento com o {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} dado.
+o evento com o {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} dado.
Esse {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
deve corresponder ao {@link
-android.provider.BaseColumns#_ID} de determinado evento.</p>
+android.provider.BaseColumns#_ID} de determinado evento.</p>
<p>A tabela a seguir lista
os campos graváveis. Ao inserir um novo participante, é necessário incluir todos eles
@@ -773,7 +773,7 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
<h2 id="instances">Tabela de instâncias</h2>
-<p>A tabela
+<p>A tabela
{@link android.provider.CalendarContract.Instances} contém
os horários de início e término das ocorrência de um evento. Cada linha nessa tabela
representa uma única ocorrência do evento. A tabela de instâncias não é gravável e fornece
@@ -782,7 +782,7 @@ somente um modo de consultar ocorrências de eventos. </p>
<p>A tabela a seguir relaciona alguns dos campos passíveis de consulta de uma instância. Observe
que o fuso horário é definido por
{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
-e
+e
{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}.</p>
@@ -801,18 +801,18 @@ e
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
-
+
<td>O dia final juliano da instância relativo ao fuso horário
-do Agenda.
-
+do Agenda.
+
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
-
+
<td>O minuto final da instância calculado a partir de meia-noite
no fuso horário do Agenda.</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
@@ -820,16 +820,16 @@ no fuso horário do Agenda.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
- <td>O dia inicial juliano da instância relativo ao fuso horário do Agenda.
+ <td>O dia inicial juliano da instância relativo ao fuso horário do Agenda.
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-
+
<td>O minuto inicial da instância calculado a partir de meia-noite, relativo
-ao fuso horário do Agenda.
+ao fuso horário do Agenda.
</td>
-
+
</tr>
</table>
@@ -840,7 +840,7 @@ ao fuso horário do Agenda.
na URI. Neste exemplo, {@link android.provider.CalendarContract.Instances}
obtém acesso ao campo {@link
android.provider.CalendarContract.EventsColumns#TITLE} por meio
-da sua implementação da interface {@link android.provider.CalendarContract.EventsColumns}.
+da sua implementação da interface {@link android.provider.CalendarContract.EventsColumns}.
Em outras palavras, {@link
android.provider.CalendarContract.EventsColumns#TITLE} é retornado por uma
vista do banco de dados, não pela consulta da tabela {@link
@@ -853,7 +853,7 @@ public static final String[] INSTANCE_PROJECTION = new String[] {
Instances.BEGIN, // 1
Instances.TITLE // 2
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_BEGIN_INDEX = 1;
@@ -868,7 +868,7 @@ long startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2011, 10, 24, 8, 0);
long endMillis = endTime.getTimeInMillis();
-
+
Cursor cur = null;
ContentResolver cr = getContentResolver();
@@ -883,28 +883,28 @@ ContentUris.appendId(builder, startMillis);
ContentUris.appendId(builder, endMillis);
// Submit the query
-cur = cr.query(builder.build(),
- INSTANCE_PROJECTION,
- selection,
- selectionArgs,
+cur = cr.query(builder.build(),
+ INSTANCE_PROJECTION,
+ selection,
+ selectionArgs,
null);
-
+
while (cur.moveToNext()) {
String title = null;
long eventID = 0;
- long beginVal = 0;
-
+ long beginVal = 0;
+
// Get the field values
eventID = cur.getLong(PROJECTION_ID_INDEX);
beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
title = cur.getString(PROJECTION_TITLE_INDEX);
-
- // Do something with the values.
- Log.i(DEBUG_TAG, "Event: " + title);
+
+ // Do something with the values.
+ Log.i(DEBUG_TAG, "Event: " + title);
Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(beginVal);
+ calendar.setTimeInMillis(beginVal);
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
- Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
+ Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
}
}</pre>
@@ -923,8 +923,8 @@ while (cur.moveToNext()) {
{@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
<td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
Também pode-se consultar a URI com
-{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}.
-Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Uso de intenções para exibir dados de calendários</a>.
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}.
+Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Uso de intenções para exibir dados de calendários</a>.
</td>
<td>Abre a agenda no horário especificado por <code>&lt;ms_since_epoch&gt;</code>.</td>
@@ -935,11 +935,11 @@ Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/t
</td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
+
Também é possível consultar a URI com
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Uso de intenções para exibir dados de calendários</a>.
-
+
</td>
<td>Exibe o evento especificado por <code>&lt;event_id&gt;</code>.</td>
@@ -952,12 +952,12 @@ Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/t
<tr>
<td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
+
Também é possível consultar a URI com
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">Uso de uma intenção para editar um evento</a>.
-
-
+
+
</td>
<td>Edita o evento especificado por <code>&lt;event_id&gt;</code>.</td>
@@ -972,11 +972,11 @@ Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/t
<br>
{@link android.content.Intent#ACTION_INSERT INSERT} </td>
<td><p><code>content://com.android.calendar/events</code></p>
-
+
Também é possível consultar a URI com
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">Uso de uma intenção para inserir um evento</a>.
-
+
</td>
<td>Cria um evento.</td>
@@ -996,7 +996,7 @@ Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/t
<td>Nome do evento.</td>
</tr>
<tr>
-
+
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<td>Horário de início do evento em milissegundos a partir da época.</td>
@@ -1004,25 +1004,25 @@ CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME}</td>
-
+
<td>Horário de término do evento em milissegundos a partir da época.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
-
+
<td>Um booleano que indica que um evento acontece o dia inteiro. O valor pode ser
<code>true</code> ou <code>false</code>.</td> </tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
Events.EVENT_LOCATION}</td>
-
+
<td>Local do evento.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
Events.DESCRIPTION}</td>
-
+
<td>Descrição do evento.</td>
</tr>
<tr>
@@ -1039,16 +1039,16 @@ Events.DESCRIPTION}</td>
<td>
{@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
Events.ACCESS_LEVEL}</td>
-
+
<td>Se o evento é privado ou público.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
Events.AVAILABILITY}</td>
-
+
<td>Se esse evento considera tempo ocupado na contagem ou se há tempo livre que pode ser reagendado.</td>
-
-</table>
+
+</table>
<p>As seções a seguir descrevem como usar estas intenções.</p>
@@ -1059,14 +1059,14 @@ permite que o aplicativo entregue a tarefa de inserção de eventos ao próprio
Com essa abordagem, o aplicativo não precisará ter a permissão {@link
android.Manifest.permission#WRITE_CALENDAR} contida no <a href="#manifest">arquivo de manifesto</a>.</p>
-
+
<p>Quando usuários executam um aplicativo que usa essa abordagem, ele os direciona
ao Agenda para finalizar a adição do evento. A intenção {@link
android.content.Intent#ACTION_INSERT INSERT} usa campos extras para
pré-preencher um formulário com os detalhes do evento na Agenda. Os usuários podem,
então, cancelar o evento, editar o formulário conforme o necessário ou salvar o evento nas suas
agendas.</p>
-
+
<p>A seguir há um fragmento de código que agenda um evento em 19 de janeiro de 2012, que acontece
@@ -1075,7 +1075,7 @@ das 7h30 às 8h30. Observe o exposto a seguir sobre esse fragmento de código:</
<ul>
<li>Ele especifica {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}
como a URI.</li>
-
+
<li>Ele usa os campos extras {@link
android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME} e {@link
@@ -1083,10 +1083,10 @@ android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME} para pré-preencher o formulário
com o horário do evento. Os valores desses horários devem estar em milissegundos UTC
da época.</li>
-
+
<li>Ele usa o campo extra {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
para fornecer uma lista de termos separados por vírgula de convidados, especificados por endereço de e-mail.</li>
-
+
</ul>
<pre>
Calendar beginTime = Calendar.getInstance();
@@ -1158,12 +1158,12 @@ via aplicativo e via adaptador de sincronização:</p>
<ul>
<li>Um adaptador de sincronização precisa especificar que é um adaptador de sincronização que define {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} como <code>true</code>.</li>
-
-
+
+
<li>Os adaptadores de sincronização precisam fornecer um {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} e um {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} como parâmetros da consulta na URI. </li>
-
+
<li>Os adaptadores de sincronização têm acesso de gravação a mais colunas do que um aplicativo ou widget.
Por exemplo: um aplicativo só pode modificar algumas características de uma agenda,
como nome, nome de exibição, configurações de visibilidade e se a agenda está
@@ -1180,5 +1180,5 @@ e ao <code>ACCOUNT_TYPE</code> que especificou.</li> </ul>
.appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
}
</pre>
-<p>Para obter uma implementação de exemplo de um adaptador de sincronização (não especificamente relacionada ao Agenda), consulte
+<p>Para obter uma implementação de exemplo de um adaptador de sincronização (não especificamente relacionada ao Agenda), consulte
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>.
diff --git a/docs/html-intl/intl/pt-br/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/pt-br/guide/topics/providers/contacts-provider.jd
index 0d42d2daed53..f3b7c58523af 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/providers/contacts-provider.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/providers/contacts-provider.jd
@@ -113,14 +113,14 @@ o Provedor de Contatos.
Este guia considera que o leitor conhece os preceitos dos provedores de conteúdo do Android. Para saber mais
sobre provedores de conteúdo do Android, leia o guia
<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
- Preceitos do provedor de conteúdo</a>.
+ Preceitos do provedor de conteúdo</a>.
O aplicativo <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">Exemplo de adaptador de sincronização</a>
é um exemplo de uso de um adaptador de sincronização que transfere dados entre o Provedor
de contatos e um aplicativo de amostra hospedado pelo Google Web Services.
</p>
<h2 id="InformationTypes">Organização do Provedor de Contatos</h2>
<p>
- O Provedor de Contatos é um componente do provedor de conteúdo do Android. Ele mantém três tipos de
+ O Provedor de Contatos é um componente do provedor de conteúdo do Android. Ele mantém três tipos de
dados sobre uma pessoa, sendo cada um deles correspondente a uma tabela fornecida pelo provedor, como
ilustrado na figura 1:
</p>
@@ -199,7 +199,7 @@ de dados de uma pessoa, ele permite diversos contatos brutos para a mesma pessoa
{@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}.
</td>
<td>
- O formato desse nome é específico deste tipo de conta.
+ O formato desse nome é específico deste tipo de conta.
Não se trata necessariamente de um endereço de e-mail.
</td>
</tr>
@@ -239,7 +239,7 @@ de dados de uma pessoa, ele permite diversos contatos brutos para a mesma pessoa
<ul>
<li>
O nome de um contato bruto não é armazenado em sua linha em
- {@link android.provider.ContactsContract.RawContacts}. Em vez disso, é armazenado na
+ {@link android.provider.ContactsContract.RawContacts}. Em vez disso, é armazenado na
tabela {@link android.provider.ContactsContract.Data}, em uma
linha {@link android.provider.ContactsContract.CommonDataKinds.StructuredName}. Os contatos brutos
têm apenas uma linha desse tipo na tabela {@link android.provider.ContactsContract.Data}.
@@ -275,7 +275,7 @@ de dados de uma pessoa, ele permite diversos contatos brutos para a mesma pessoa
Configurações da <em>conta</em>.
</p>
<p>
- Suponhamos que Emily Dickinson abra uma janela do navegador, acesse o Gmail como
+ Suponhamos que Emily Dickinson abra uma janela do navegador, acesse o Gmail como
<code>emily.dickinson@gmail.com</code>, abra
Contatos e adicione "Thomas Higginson". Mais tarde, ela acessa o Gmail como
<code>emilyd@gmail.com</code> e envia um e-mail para "Thomas Higginson", o que automaticamente
@@ -309,7 +309,7 @@ de dados de uma pessoa, ele permite diversos contatos brutos para a mesma pessoa
tipo de dados, como endereços de e-mail ou números de telefone. Por exemplo: se
"Thomas Higginson" para {@code emilyd@gmail.com} (a linha do contato bruto de Thomas Higginson
associada à conta Google <code>emilyd@gmail.com</code>) tem um endereço de e-mail pessoal
- <code>thigg@gmail.com</code> e um de trabalho
+ <code>thigg@gmail.com</code> e um de trabalho
<code>thomas.higginson@gmail.com</code>, o Provedor de Contatos armazena as duas linhas de endereço de e-mail
e vincula ambas ao contato bruto.
</p>
@@ -490,7 +490,7 @@ de dados de uma pessoa, ele permite diversos contatos brutos para a mesma pessoa
{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} do contato continuará
apontado para a linha do contato para permitir o uso de
{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}
- e manter ligações com contatos "favoritos" e assim por diante. Essa coluna tem o próprio formato, que
+ e manter ligações com contatos "favoritos" e assim por diante. Essa coluna tem o próprio formato, que
não tem nenhuma relação com o formato da coluna {@code android.provider.BaseColumns#_ID}.
</p>
<p>
@@ -981,7 +981,7 @@ public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
{@code android.provider.BaseColumns#_ID} do contato bruto como
o valor {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}. Contudo, esse
valor não está disponível ao criar a {@link android.content.ContentProviderOperation}
- para a linha de dados porque
+ para a linha de dados porque
{@link android.content.ContentProviderOperation} ainda não foi aplicada à linha de contato bruto. Para trabalhar com isso,
a classe {@link android.content.ContentProviderOperation.Builder} tem o método
{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}.
@@ -1403,7 +1403,7 @@ StructuredPostal.CONTENT_URI},
RawContacts.CONTENT_TYPE}, tipo MIME para um grupo de contatos brutos.
</td>
<td>
- Exibe a tela <strong>Adicionar contato</strong> do aplicativo de contatos do dispositivo.
+ Exibe a tela <strong>Adicionar contato</strong> do aplicativo de contatos do dispositivo.
São exibidos os valores extras adicionados à intenção. Se enviada com
{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()},
a URI de conteúdo do contato bruto recentemente adicionado é passada de volta
@@ -1636,7 +1636,7 @@ startActivity(insertIntent);
a disponibilidade dos dados dos contatos mesmo quando o dispositivo não está conectado à rede.
</p>
<p>
- Embora seja possível implementar a sincronização de diversos modos, o sistema Android fornece
+ Embora seja possível implementar a sincronização de diversos modos, o sistema Android fornece
uma estrutura de sincronização de extensão que automatiza as seguintes tarefas:
<ul>
@@ -1652,7 +1652,7 @@ startActivity(insertIntent);
</ul>
<p>
Para usar essa estrutura, deve-se fornecer uma extensão do adaptador de sincronização. Cada adaptador de sincronização é exclusivo
- de um serviço e um provedor de conteúdo, mas pode tratar diversos nomes de conta do mesmo serviço.
+ de um serviço e um provedor de conteúdo, mas pode tratar diversos nomes de conta do mesmo serviço.
A estrutura também permite diversos adaptadores de sincronização para o mesmo serviço e provedor.
</p>
<h3 id="SyncClassesFiles">Classes e arquivos do adaptador de sincronização</h3>
@@ -1830,7 +1830,7 @@ elemento <code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.ht
</p>
<h3 id="StreamText">Textos de fluxos sociais</h3>
<p>
- Itens de fluxo sempre são associados a um contato bruto.
+ Itens de fluxo sempre são associados a um contato bruto.
O {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID} conecta-se ao
valor <code>_ID</code> do contato bruto. O tipo e o nome da conta do contato
bruto também são armazenados na linha do item de fluxo.
@@ -1861,17 +1861,17 @@ elemento <code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.ht
ao inserir um item de fluxo:
<ul>
<li>
- {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}:
+ {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}:
o valor {@code android.provider.BaseColumns#_ID} do contato ao qual esse item
de fluxo está associado.
</li>
<li>
- {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}:
+ {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}:
o valor{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} do
contato ao qual esse item de fluxo está associado.
</li>
<li>
- {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}:
+ {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}:
o valor {@code android.provider.BaseColumns#_ID} do contato bruto ao qual esse item
de fluxo está associado.
</li>
@@ -2275,14 +2275,14 @@ elemento <code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.ht
</dd>
<dt>{@code android:icon}</dt>
<dd>
-
+
<a href="{@docRoot}guide/topics/resources/drawable-resource.html">Recurso desenhável</a> do Android
que o aplicativo de contatos exibe próximo aos dados. Use isso para indicar
ao usuário que os dados são advindos do seu serviço.
</dd>
<dt>{@code android:summaryColumn}</dt>
<dd>
- O nome de coluna do primeiro de dois valores recuperados da linha de dados.
+ O nome de coluna do primeiro de dois valores recuperados da linha de dados.
O valor é exibido como a primeira linha da entrada para essa linha de dados. A primeira linha
destina-se ao uso como um resumo dos dados, mas isso é opcional. Veja também
<a href="#detailColumn">android:detailColumn</a>.
diff --git a/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-basics.jd
index 5005f9208bfe..7bbca94bd937 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-basics.jd
@@ -216,7 +216,7 @@ page.title=Preceitos do provedor de conteúdo
Os aplicativos acessam dados a partir de um provedor de conteúdo
com um objeto cliente {@link android.content.ContentResolver}. Esse objeto tem métodos que chamam
métodos de nome idêntico no objeto do provedor, uma instância de uma das subclasses
- concretas de {@link android.content.ContentProvider}.
+ concretas de {@link android.content.ContentProvider}.
Os métodos {@link android.content.ContentResolver} fornecem as funções básicas
do "CRUD" (criar, recuperar, atualizar e excluir) de armazenamento persistente.
</p>
@@ -251,7 +251,7 @@ mCursor = getContentResolver().query(
</pre>
<p>
A tabela 2 mostra como os argumentos para
- {@link android.content.ContentResolver#query
+ {@link android.content.ContentResolver#query
query(Uri,projection,selection,selectionArgs,sortOrder)} correspondem a uma declaração SQL SELECT:
</p>
<p class="table-caption">
@@ -310,7 +310,7 @@ mCursor = getContentResolver().query(
{@link android.provider.UserDictionary.Words#CONTENT_URI} contém a URI de conteúdo
da tabela de "palavras" do dicionário do usuário. O objeto {@link android.content.ContentResolver}
analisa a autoridade da URI e usa-na para "determinar" o provedor
- comparando a autoridade a uma tabela de provedores conhecidos do sistema.
+ comparando a autoridade a uma tabela de provedores conhecidos do sistema.
O {@link android.content.ContentResolver} pode, então, enviar os argumentos da consulta ao provedor
correto.
</p>
@@ -344,7 +344,7 @@ Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
</p>
<p class="note">
<strong>Observação:</strong> as classes {@link android.net.Uri} e {@link android.net.Uri.Builder}
- contêm métodos convenientes para a construção de objetos de URI bem formados a partir de strings.
+ contêm métodos convenientes para a construção de objetos de URI bem formados a partir de strings.
As {@link android.content.ContentUris} contêm métodos conveniente para anexar valores de ID
a uma URI. O fragmento anterior usa {@link android.content.ContentUris#withAppendedId
withAppendedId()} para anexar um ID à URI de conteúdo UserDictionary.
@@ -359,7 +359,7 @@ Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
</p>
<p class="note">
Por uma questão de clareza, os fragmentos de código nesta seção chamam
- {@link android.content.ContentResolver#query ContentResolver.query()} no "encadeamento da IU".
+ {@link android.content.ContentResolver#query ContentResolver.query()} no "encadeamento da IU".
No código atual, contudo, deve-se realizar consultas assincronamente em um encadeamento separado. Um modo de fazê-lo
é usar a classe {@link android.content.CursorLoader}, descrita
com mais detalhes no guia <a href="{@docRoot}guide/components/loaders.html">
@@ -567,7 +567,7 @@ selectionArgs[0] = mUserInput;
<p>
O método cliente {@link android.content.ContentResolver#query ContentResolver.query()} sempre
retorna um {@link android.database.Cursor} contendo as colunas especificadas pela projeção
- da consulta para as linhas que atendem aos critérios de seleção da consulta.
+ da consulta para as linhas que atendem aos critérios de seleção da consulta.
Um objeto {@link android.database.Cursor} fornece acesso para leitura aleatório para as linhas e colunas que
contém. Usando métodos {@link android.database.Cursor}, é possível repetir as linhas
nos resultados, determinar o tipo dos dados de cada coluna, extrair os dados de uma coluna e examinar
@@ -946,7 +946,7 @@ mRowsDeleted = getContentResolver().delete(
Para acessar um provedor em "modo de lote",
cria-se uma matriz de objetos {@link android.content.ContentProviderOperation} e, em seguida,
envia-os a um provedor de conteúdo com
- {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. Confere-se a
+ {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. Confere-se a
<em>autoridade</em> do provedor de conteúdo para esse método em vez de para uma URI de conteúdo específica.
Isso permite que cada objeto {@link android.content.ContentProviderOperation} na matriz trabalhe
com uma tabela diferente. Chamar {@link android.content.ContentResolver#applyBatch
@@ -954,7 +954,7 @@ mRowsDeleted = getContentResolver().delete(
</p>
<p>
A descrição da classe de contrato {@link android.provider.ContactsContract.RawContacts}
- contém um fragmento de código que demonstra a inserção em lote.
+ contém um fragmento de código que demonstra a inserção em lote.
O aplicativo de exemplo do <a href="{@docRoot}resources/samples/ContactManager/index.html">Gerente de contato</a>
contém um exemplo de acesso em lote em seu
arquivo de origem <code>ContactAdder.java</code>.
@@ -1089,7 +1089,7 @@ O aplicativo de exemplo do <a href="{@docRoot}resources/samples/ContactManager/i
</p>
<p>
Por exemplo: o Provedor de Dicionário do Usuário tem uma classe de contrato
- {@link android.provider.UserDictionary} que contém constantes de URI de conteúdo e de nome de coluna.
+ {@link android.provider.UserDictionary} que contém constantes de URI de conteúdo e de nome de coluna.
A URI de conteúdo da tabela de "palavras" é definida na constante
{@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI}.
A classe {@link android.provider.UserDictionary.Words} também contém constantes de nome de coluna
@@ -1184,7 +1184,7 @@ content://com.example.trains/Line2/5
vnd.android.cursor.<strong>item</strong>/vnd.example.line2
</pre>
<p>
- A maioria dos provedores define constantes de classe de contrato para os tipos MIME que usam.
+ A maioria dos provedores define constantes de classe de contrato para os tipos MIME que usam.
A classe de contrato {@link android.provider.ContactsContract.RawContacts} do Provedor de Contatos,
por exemplo, define a constante
{@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE} para o tipo MIME
diff --git a/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-creating.jd
index 11ad4c3b1cca..6ae7b2d6ee3d 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-creating.jd
@@ -203,7 +203,7 @@ Projeto de armazenamento de dados</a>.
<ul>
<li>
O sistema Android contém uma API de banco de dados SQLite que os provedores do Android usam
- para armazenar dados orientados a tabela.
+ para armazenar dados orientados a tabela.
A classe {@link android.database.sqlite.SQLiteOpenHelper} ajuda a criar bancos de dados
e a classe {@link android.database.sqlite.SQLiteDatabase} é a classe de base para acessar
banco de dados.
@@ -539,7 +539,7 @@ public class ExampleProvider extends ContentProvider {
</dd>
</dl>
<p>
- Observe que esses métodos têm a mesma assinatura dos métodos
+ Observe que esses métodos têm a mesma assinatura dos métodos
{@link android.content.ContentResolver} de mesmo nome.
</p>
<p>
@@ -569,7 +569,7 @@ public class ExampleProvider extends ContentProvider {
</ul>
<h3 id="Query">Implementação do método query()</h3>
<p>
-
+
O método {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
ContentProvider.query()} precisa retornar um objeto {@link android.database.Cursor} ou, se
falhar, gerar uma {@link java.lang.Exception}. Se você estiver usando um banco de dados SQLite
@@ -778,7 +778,7 @@ protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
Para tipos de dados comuns como texto, HTML ou JPEG,
{@link android.content.ContentProvider#getType(Uri) getType()} deve retornar o tipo MIME
padrão daqueles dados. Há uma lista completa desse tipos de padrão
- no site de
+ no site de
<a href="http://www.iana.org/assignments/media-types/index.htm">Tipos de mídia MIME IANA</a>.
</p>
<p>
@@ -981,7 +981,7 @@ vnd.android.cursor.<strong>item</strong>/vnd.com.example.provider.table1
Permissão de leitura, gravação ou leitura/gravação para uma URI de conteúdo no provedor. Especifica-se
cada URI que se deseja controlar
com um elemento filho <code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">
- &lt;path-permission&gt;</a></code>
+ &lt;path-permission&gt;</a></code>
do elemento <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
&lt;provider&gt;</a></code>. Para cada URI de conteúdo, pode-se especificar
uma permissão de leitura/gravação, uma permissão de leitura, uma permissão de gravação ou as três. As permissões
diff --git a/docs/html-intl/intl/pt-br/guide/topics/providers/content-providers.jd b/docs/html-intl/intl/pt-br/guide/topics/providers/content-providers.jd
index c9574f6b90c6..48f4cd49843d 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/providers/content-providers.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/providers/content-providers.jd
@@ -52,12 +52,12 @@ dados e fornecem mecanismos para definir a segurança dos dados. Provedores de c
padrão que conecta dados em um processo com código em execução em outro processo.
</p>
<p>
- Quando desejar acessar dados em um provedor de conteúdo, você usa o
- objeto {@link android.content.ContentResolver} no
+ Quando desejar acessar dados em um provedor de conteúdo, você usa o
+ objeto {@link android.content.ContentResolver} no
{@link android.content.Context} do aplicativo para se comunicar com o provedor como cliente.
O objeto {@link android.content.ContentResolver} se comunica com o objeto provedor, uma
instância de uma classe que implementa {@link android.content.ContentProvider}. O objeto
- provedor recebe solicitações de dados de clientes, realiza a ação solicitada e
+ provedor recebe solicitações de dados de clientes, realiza a ação solicitada e
devolve os resultados.
</p>
<p>
@@ -68,10 +68,10 @@ dados e fornecem mecanismos para definir a segurança dos dados. Provedores de c
</p>
<p>
O Android propriamente dito inclui provedores de conteúdo que gerenciam dados como áudio, vídeo, imagens e
- informações de contato pessoais. Alguns deles estão listados na documentação de
- referência do
+ informações de contato pessoais. Alguns deles estão listados na documentação de
+ referência do
pacote <code><a href="{@docRoot}reference/android/provider/package-summary.html">android.provider</a>
- </code>. Com algumas restrições, esses provedores podem ser acessados por qualquer aplicativo
+ </code>. Com algumas restrições, esses provedores podem ser acessados por qualquer aplicativo
Android.
</p><p>
Os tópicos a seguir descrevem provedores de conteúdo em mais detalhes:
diff --git a/docs/html-intl/intl/pt-br/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/pt-br/guide/topics/providers/document-provider.jd
index 25aab7aa7a9d..b2e040ecefa5 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/providers/document-provider.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/providers/document-provider.jd
@@ -139,7 +139,7 @@ dispositivos de armazenamento USB transitórios ou login/logout do usuário.</li
cada um deles, por sua vez, podem indicar 1 a <em>N</em> documentos. </li>
<li>Cada back-end de armazenamento apresenta
-arquivos e diretórios individuais referenciando-os com um
+arquivos e diretórios individuais referenciando-os com um
{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} exclusivo.
IDs de documentos devem ser exclusivos e não podem mudar depois de emitidos, pois são usados para concessões persistentes
da URI em reinicializações do dispositivo.</li>
@@ -236,7 +236,7 @@ imagens armazenadas em um provedor de documentos. </li>
</ul>
-<p>Esta seção descreve como programar aplicativos clientes com base nas intenções
+<p>Esta seção descreve como programar aplicativos clientes com base nas intenções
{@link android.content.Intent#ACTION_OPEN_DOCUMENT}
e {@link android.content.Intent#ACTION_CREATE_DOCUMENT}.</p>
@@ -521,7 +521,7 @@ os arquivos, o que, obviamente, não é o ideal.</p>
<p>Para evitar que isso aconteça, você pode manter as permissões que o sistema
forneceu ao aplicativo. Efetivamente, o aplicativo "toma" a concessão de permissão da URI persistente
-que o sistema está oferecendo. Isso concede ao usuário um acesso contínuo aos arquivos
+que o sistema está oferecendo. Isso concede ao usuário um acesso contínuo aos arquivos
por meio do aplicativo mesmo se o dispositivo for reiniciado:</p>
@@ -624,7 +624,7 @@ em dispositivos que executam o Android 4.4 ou posteriores.
Se você deseja que o aplicativo seja compatível com {@link android.content.Intent#ACTION_GET_CONTENT}
para adaptar-se a dispositivos que executam o Android 4.3 ou versões anteriores, é necessário
desativar o filtro de intenção {@link android.content.Intent#ACTION_GET_CONTENT}
-no manifesto para dispositivos que executam Android 4.4 ou versões posteriores.
+no manifesto para dispositivos que executam Android 4.4 ou versões posteriores.
Um provedor de documentos e {@link android.content.Intent#ACTION_GET_CONTENT} devem ser avaliados
de forma mutuamente exclusiva. Se houver compatibilidade com ambos simultaneamente, o aplicativo
aparecerá duas vezes na IU do seletor do sistema, oferecendo dois meios de acesso
diff --git a/docs/html-intl/intl/pt-br/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/pt-br/guide/topics/resources/accessing-resources.jd
index f196dfeae779..de8b5df5e486 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/resources/accessing-resources.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/resources/accessing-resources.jd
@@ -11,7 +11,7 @@ parent.link=index.html
{@code R.drawable.myimage}</li>
<li>Recursos podem ser referenciados de recursos usando uma sintaxe XML especial, como {@code
&#64;drawable/myimage}</li>
- <li>Também é possível acessar os recursos do aplicativo com métodos em
+ <li>Também é possível acessar os recursos do aplicativo com métodos em
{@link android.content.res.Resources}</li>
</ul>
@@ -43,10 +43,10 @@ parent.link=index.html
<p>Depois de fornecer um recurso no aplicativo (discutido em <a href="providing-resources.html">Fornecimento de recursos</a>), é possível aplicá-lo
-referenciando seu ID de recurso. Todos os IDs de recursos são definidos na classe {@code R} do projeto, que
+referenciando seu ID de recurso. Todos os IDs de recursos são definidos na classe {@code R} do projeto, que
a ferramenta {@code aapt} gera automaticamente.</p>
-<p>Quando o aplicativo é compilado, {@code aapt} gera a classe {@code R}, que contém
+<p>Quando o aplicativo é compilado, {@code aapt} gera a classe {@code R}, que contém
IDs de recursos para todos os recursos no diretório {@code
res/}. Para cada tipo de recurso, há uma subclasse {@code R} (por exemplo,
{@code R.drawable} para todos os recursos desenháveis) e, para cada recurso daquele tipo, há um número inteiro
@@ -60,7 +60,7 @@ verificá-la para descobrir um ID de recurso. Ele é sempre composto de:</p>
string}, {@code drawable} e {@code layout}. Para saber mais sobre os diferentes tipos, consulte <a href="available-resources.html">Tipos de recursos</a>.
</li>
<li>O <em>nome do recurso</em>, que é: o nome do arquivo,
-excluindo a extensão; ou o valor no atributo {@code android:name} do XML, se o
+excluindo a extensão; ou o valor no atributo {@code android:name} do XML, se o
recurso for um valor simples (como uma string).</li>
</ul>
@@ -101,7 +101,7 @@ com {@link android.content.Context#getResources()}.</p>
<div class="sidebox">
<h2>Acesso aos arquivos originais</h2>
-<p>Apesar de ser incomum, pode ser necessário acessar os arquivos e os diretórios originais. Nesse caso,
+<p>Apesar de ser incomum, pode ser necessário acessar os arquivos e os diretórios originais. Nesse caso,
salvar os arquivos em {@code res/} não funcionará, pois a única forma de ler um recurso de
{@code res/} é com o ID do recurso. Em vez disso, é possível salvar os recursos no
diretório {@code assets/}.</p>
@@ -139,7 +139,7 @@ obter mais informações sobre cada tipo de recurso e como referenciá-los.</p>
<h3>Casos de uso</h3>
-<p>Há muitos métodos que aceitam um parâmetro de ID de recurso e você pode recuperar recursos usando
+<p>Há muitos métodos que aceitam um parâmetro de ID de recurso e você pode recuperar recursos usando
métodos em {@link android.content.res.Resources}. É possível obter uma instância de {@link
android.content.res.Resources} com {@link android.content.Context#getResources
Context.getResources()}.</p>
@@ -176,7 +176,7 @@ setText}(<strong>R.string.hello_message</strong>);
<p class="caution"><strong>Atenção:</strong> nunca modifique o arquivo {@code
-R.java} manualmente &mdash; ele é gerado pela ferramenta {@code aapt} quando o projeto é
+R.java} manualmente &mdash; ele é gerado pela ferramenta {@code aapt} quando o projeto é
compilado. As alterações serão sobrepostas na próxima compilação.</p>
@@ -209,7 +209,7 @@ um <a href="string-resource.html">recurso de string</a> para o texto do botão:<
<ul>
<li>{@code &lt;package_name&gt;} é o nome do pacote no qual o recurso está localizado (não
é obrigatório ao referenciar recursos do mesmo pacote).</li>
- <li>{@code &lt;resource_type&gt;} é a subclasse
+ <li>{@code &lt;resource_type&gt;} é a subclasse
{@code R} do tipo de recurso.</li>
<li>{@code &lt;resource_name&gt;} é o nome do arquivo do recurso
sem a extensão ou o valor do atributo {@code android:name} no elemento XML (para valores
@@ -260,10 +260,10 @@ referenciar um recurso do sistema, é preciso incluir o nome do pacote. Por exem
</pre>
<p class="note"><strong>Observação:</strong> você deve usar recursos de string
-o tempo inteiro para que o seu aplicativo possa ser localizado para outros idiomas.
+o tempo inteiro para que o seu aplicativo possa ser localizado para outros idiomas.
Para obter informações sobre a criação de recursos
-alternativos (como strings localizadas), consulte <a href="providing-resources.html#AlternativeResources">Fornecimento de recursos
-alternativos</a>. Para obter um guia completo para localizar o aplicativo para outros idiomas,
+alternativos (como strings localizadas), consulte <a href="providing-resources.html#AlternativeResources">Fornecimento de recursos
+alternativos</a>. Para obter um guia completo para localizar o aplicativo para outros idiomas,
consulte <a href="localization.html">Localização</a>.</p>
<p>Você pode até mesmo usar recursos em XML para criar alias. Por exemplo, é possível criar um recurso
@@ -289,14 +289,14 @@ tema atual, em vez de fornecer um valor codificado. Referenciar um atributo de e
essencialmente significa "usar o estilo que é definido por esse atributo no tema atual".</p>
<p>Para referenciar um atributo de estilo, a sintaxe do nome é quase idêntica ao formato normal de recurso,
-mas, em vez de o símbolo arroba ({@code @}), use um ponto de interrogação ({@code ?}). Além disso,
+mas, em vez de o símbolo arroba ({@code @}), use um ponto de interrogação ({@code ?}). Além disso,
a parte do tipo de recurso é opcional. Por exemplo:</p>
<pre class="classic">
?[<em>&lt;package_name&gt;</em>:][<em>&lt;resource_type&gt;</em>/]<em>&lt;resource_name&gt;</em>
</pre>
-<p>Por exemplo, abaixo apresenta-se como você pode referenciar um atributo para definir a cor do texto para que corresponda à
+<p>Por exemplo, abaixo apresenta-se como você pode referenciar um atributo para definir a cor do texto para que corresponda à
cor "principal" do texto do tema do sistema:</p>
<pre>
@@ -320,7 +320,7 @@ não é preciso declarar explicitamente o tipo (que seria
<h2 id="PlatformResources">Acesso aos recursos da plataforma</h2>
<p>O Android contém uma série de recursos padrão, como estilos, temas e layouts. Para
-acessá-los, qualifique a referência de recurso com o
+acessá-los, qualifique a referência de recurso com o
nome do pacote <code>android</code>. Por exemplo, o Android fornece um recurso de layout que pode ser usado para
listar itens em um {@link android.widget.ListAdapter}:</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/resources/overview.jd b/docs/html-intl/intl/pt-br/guide/topics/resources/overview.jd
index 5bf37e691376..b34c01b54081 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/resources/overview.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/resources/overview.jd
@@ -24,8 +24,8 @@ para que você possa mantê-los independentemente. Exteriorizar os recursos
também permite fornecer recursos alternativos que sejam compatíveis com configurações
de dispositivos específicos, como idiomas ou tamanhos de tela diferentes, que se tornam cada vez
mais importantes à medida que mais dispositivos com Android são disponibilizados com configurações diferentes. Para fornecer
-compatibilidade com diferentes configurações, é preciso organizar recursos no
-diretório {@code res/} de seu projeto usando vários subdiretórios que agrupem recursos por tipo e
+compatibilidade com diferentes configurações, é preciso organizar recursos no
+diretório {@code res/} de seu projeto usando vários subdiretórios que agrupem recursos por tipo e
configuração.</p>
<div class="figure" style="width:429px">
diff --git a/docs/html-intl/intl/pt-br/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/pt-br/guide/topics/resources/providing-resources.jd
index 1118fd536b32..b45018d2533b 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/resources/providing-resources.jd
@@ -71,7 +71,7 @@ MyProject/
</pre>
<p>Como pode ver neste exemplo, o diretório {@code res/} contém todos os recursos (em subdiretórios):
-um recurso de imagem, dois recursos de layout, diretórios {@code mipmap/} para ícones de
+um recurso de imagem, dois recursos de layout, diretórios {@code mipmap/} para ícones de
inicialização e um arquivo de recurso de string. Os nomes dos diretórios
de recursos são importantes e são descritos na tabela 1.</p>
@@ -161,7 +161,7 @@ então é possível lê-los usando apenas o {@link android.content.res.AssetMana
com base no nome do arquivo XML, os arquivos no diretório {@code values/} descrevem vários recursos.
Para cada arquivo neste diretório, cada filho do elemento {@code &lt;resources&gt;} define um único
recurso. Por exemplo, um elemento {@code &lt;string&gt;} cria
-um recurso {@code R.string} e um elemento {@code &lt;color&gt;} cria um recurso
+um recurso {@code R.string} e um elemento {@code &lt;color&gt;} cria um recurso
{@code R.color}.</p>
<p>Como cada recurso é definido com seu próprio elemento XML, é possível nomear o arquivo
da forma que quiser e colocar tipos de recurso variados em um arquivo. No entanto, para esclarecer, você pode
@@ -510,7 +510,7 @@ quaisquer recursos que representarem a <a href="#BestMatch">melhor correspondên
e o aplicativo apresentará um erro em tempo de execução (por exemplo, se todos os recursos de layout receberem tag com o qualificador {@code
xlarge}, mas o dispositivo tiver uma tela de tamanho normal).</p>
<p><em>Adicionado à API de nível 4.</em></p>
-
+
<p>Consulte <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com
várias telas</a> para obter mais informações.</p>
<p>Consulte também o campo de configuração {@link android.content.res.Configuration#screenLayout},
@@ -627,8 +627,8 @@ sobre como isto pode afetar o aplicativo em tempo de execução.</p>
nível 8</em></li>
<li>{@code xxhdpi}: Telas de densidade extra-extra-alta, aproximadamente 480 dpi. <em>Adicionado à API de
nível 16</em></li>
- <li>{@code xxxhdpi}: Usos de densidade extra-extra-extra-alta (somente ícone do inicializador, consulte a
- <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">observação</a>
+ <li>{@code xxxhdpi}: Usos de densidade extra-extra-extra-alta (somente ícone do inicializador, consulte a
+ <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">observação</a>
em <em>Compatibilidade com várias telas</em>), aproximadamente 640 dpi. <em>Adicionado à API de
nível 18</em></li>
<li>{@code nodpi}: Isto pode ser usado para recursos de bitmap que você não deseja dimensionar
@@ -823,7 +823,7 @@ exemplo:
para letras minúsculas antes de processar para evitar problemas nos sistemas de arquivo
que não diferenciam maiúsculas e minúsculas. Qualquer letra maiúscula nos nomes é apenas para o benefício da leitura.</li>
<li>Somente um valor para cada tipo de qualificador é suportado. Por exemplo, se quiser usar
-os mesmos arquivos desenháveis para Espanha e França, <em>não</em> é possível ter um diretório chamado
+os mesmos arquivos desenháveis para Espanha e França, <em>não</em> é possível ter um diretório chamado
<code>drawable-rES-rFR/</code>. Em vez disso, você precisa de dois diretórios de recursos, como
<code>drawable-rES/</code> e <code>drawable-rFR/</code>, que contenham arquivos adequados.
No entanto, não é necessário duplicar os mesmos arquivos em ambos os locais. Em vez disso,
@@ -1088,7 +1088,7 @@ mas o dispositivo tiver uma tela de tamanho normal).</p>
do que o número de qualificadores que correspondem exatamente ao dispositivo. Por exemplo, na etapa 4 acima, a última
escolha na lista inclui três qualificadores que correspondem exatamente ao dispositivo (orientação, tipo de
tela sensível ao toque e método de entrada), enquanto que <code>drawable-en</code> possui apenas um parâmetro que corresponde
-(idioma). No entanto, o idioma tem uma precedência maior que esses outros qualificadores, então
+(idioma). No entanto, o idioma tem uma precedência maior que esses outros qualificadores, então
<code>drawable-port-notouch-12key</code> está fora.</p>
<p>Para obter mais informações sobre como usar os recursos no aplicativo, acesse <a href="accessing-resources.html">Acesso aos recursos</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/pt-br/guide/topics/resources/runtime-changes.jd
index 366ce0d2c072..416bce98e4ab 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/resources/runtime-changes.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/resources/runtime-changes.jd
@@ -125,7 +125,7 @@ ele vazará todas as vistas e recursos da instância da atividade original (vaza
significa que o aplicativo mantém a retenção deles, que não podem ser recolhidos, o que
causa perda de memória).</p>
-<p>Em seguida, use {@link android.app.FragmentManager} para adicionar o fragmento à atividade.
+<p>Em seguida, use {@link android.app.FragmentManager} para adicionar o fragmento à atividade.
É possível obter o objeto de dados do fragmento quando a atividade reiniciar durante as alterações
de configuração em tempo de execução. Por exemplo: defina a atividade da seguinte forma:</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/controls.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/controls.jd
index 58a4fcdbe5a0..1cd6d52ef4d3 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@ de um tipo específico de controle de entrada, você pode criar os próprios <a
<tr>
<td><a href="controls/radiobutton.html">Botão de opção</a></td>
<td>Similar às caixas de seleção, exceto que somente uma opção pode ser selecionada no grupo.</td>
- <td>{@link android.widget.RadioGroup RadioGroup}
+ <td>{@link android.widget.RadioGroup RadioGroup}
<br>{@link android.widget.RadioButton RadioButton} </td>
</tr>
<tr>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/declaring-layout.jd
index 09dbd2cee275..8782ba2e4593 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/declaring-layout.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/declaring-layout.jd
@@ -43,7 +43,7 @@ simples</a></li> </div>
<ul>
<li><strong>Declarar elementos da IU em XML</strong>. O Android fornece um vocabulário XML
direto que corresponde às classes e subclasses de View, como as de widgets e layouts.</li>
-<li><strong>Instanciar elementos do layout em tempo de execução</strong>.
+<li><strong>Instanciar elementos do layout em tempo de execução</strong>.
O aplicativo pode criar objetos de View e ViewGroup (e manipular suas propriedades) programaticamente. </li>
</ul>
@@ -123,7 +123,7 @@ public void onCreate(Bundle savedInstanceState) {
</pre>
<p>O método de retorno de chamada <code>onCreate()</code> na Atividade é chamado pela estrutura do Android quando
-ela é inicializada (veja a discussão sobre ciclos de vida no documento
+ela é inicializada (veja a discussão sobre ciclos de vida no documento
<a href="{@docRoot}guide/components/activities.html#Lifecycle">Atividades</a>
).</p>
@@ -201,7 +201,7 @@ de layout associados a cada uma delas.</p>
valores. Cada elemento filho deve definir LayoutParams apropriados para seu pai,
embora possa também definir diferentes LayoutParams para os próprios filhos. </p>
-<p>Todos os grupos de vistas contêm largura e altura (<code>layout_width</code> e
+<p>Todos os grupos de vistas contêm largura e altura (<code>layout_width</code> e
<code>layout_height</code>) e cada vista é obrigatória para defini-las. Muitos
LayoutParams também contêm margens e bordas opcionais. <p>
@@ -229,7 +229,7 @@ Recursos disponíveis</a>.</p>
<h2 id="Position">Posição do layout</h2>
<p>
A geometria de uma vista de um retângulo. As vistas têm uma localização,
- expressa como um par de coordenadas <em>esquerda</em> e <em>topo</em>
+ expressa como um par de coordenadas <em>esquerda</em> e <em>topo</em>
e duas dimensões, expressas como largura e altura. A unidade de localização
e de dimensões é o pixel.
</p>
@@ -262,7 +262,7 @@ desnecessárias, chamados {@link android.view.View#getRight()} e {@link android.
<p>
O primeiro par é conhecido como <em>largura medida</em>
e <em>altura medida</em>. Essas dimensões definem o tamanho que a vista terá
- dentro da vista pai.
+ dentro da vista pai.
Para obter as dimensões medidas, chamam-se {@link android.view.View#getMeasuredWidth()}
e {@link android.view.View#getMeasuredHeight()}.
</p>
@@ -368,7 +368,7 @@ partially or totally obscuring them (unless the newer object is transparent).
<h2 id="AdapterViews" style="clear:left">Criação de layouts com um adaptador</h2>
<p>Quando o conteúdo do layout é dinâmico ou não predeterminado, é possível usar um layout que
-torne {@link android.widget.AdapterView} uma subclasse para preencher o layout com vistas em tempo de execução.
+torne {@link android.widget.AdapterView} uma subclasse para preencher o layout com vistas em tempo de execução.
Uma subclasse da classe {@link android.widget.AdapterView} usa um {@link android.widget.Adapter}
para agrupar dados ao seu layout. O {@link android.widget.Adapter} se comporta como um intermediário entre a fonte
dos dados e o layout do {@link android.widget.AdapterView} &mdash; o {@link android.widget.Adapter}
@@ -399,7 +399,7 @@ a um {@link android.widget.Adapter}, o que recupera dados de uma fonte externa e
android.view.View} que representa cada entrada de dados.</p>
<p>O Android oferece diversas subclasses de {@link android.widget.Adapter} que são úteis para
-recuperar diferentes tipos de dados e criar vistas de um {@link android.widget.AdapterView}.
+recuperar diferentes tipos de dados e criar vistas de um {@link android.widget.AdapterView}.
Os dois adaptadores mais comuns são:</p>
<dl>
@@ -438,7 +438,7 @@ getView()} para retornar o tipo de vista que deseja para cada item.</p>
</dd>
<dt>{@link android.widget.SimpleCursorAdapter}</dt>
- <dd>Use este adaptador quando os dados vierem de um {@link android.database.Cursor}.
+ <dd>Use este adaptador quando os dados vierem de um {@link android.database.Cursor}.
Ao usar {@link android.widget.SimpleCursorAdapter}, é necessário especificar um layout a usar para cada
linha no {@link android.database.Cursor} e que colunas no {@link android.database.Cursor}
devem ser inseridas em determinadas vistas do layout. Por exemplo: se você deseja criar uma lista
@@ -466,7 +466,7 @@ fromColumns} na vista {@code toViews} correspondente.</p>.</dd>
</dl>
-<p>Se durante o curso de vida do aplicativo, você mudar os dados subjacentes lidos
+<p>Se durante o curso de vida do aplicativo, você mudar os dados subjacentes lidos
pelo adaptador, chame {@link android.widget.ArrayAdapter#notifyDataSetChanged()}. Isso
notificará à vista anexada que os dados foram alterados e que ela deve se atualizar.</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/dialogs.jd
index 2cbedbebdebf..71e617677507 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@ page.tags=diálogodealerta,fragmentodediálogo
<li>{@link android.app.DialogFragment}</li>
<li>{@link android.app.AlertDialog}</li>
</ol>
-
+
<h2>Veja também</h2>
<ol>
<li><a href="{@docRoot}design/building-blocks/dialogs.html">Guia de projeto de caixas de diálogo</a></li>
@@ -235,8 +235,8 @@ AlertDialog dialog = builder.create();
</pre>
<p>Os métodos <code>set...Button()</code> exigem um título para o botão (fornecido
-por um <a href="{@docRoot}guide/topics/resources/string-resource.html">recurso de string</a>) e um
-{@link android.content.DialogInterface.OnClickListener} que defina a ação a realizar
+por um <a href="{@docRoot}guide/topics/resources/string-resource.html">recurso de string</a>) e um
+{@link android.content.DialogInterface.OnClickListener} que defina a ação a realizar
quando o usuário pressionar o botão.</p>
<p>Há três botões de ação diferente que podem ser adicionados:</p>
@@ -248,7 +248,7 @@ quando o usuário pressionar o botão.</p>
<dt>Neutro</dt>
<dd>É o que se deve usar quando houver a opção de o usuário não querer continuar a ação,
mas não necessariamente cancelá-la. Ele aparece entre os botões positivo
- e negativo. Por exemplo: a ação pode ser "Notifique-me mais tarde".</dd>
+ e negativo. Por exemplo: a ação pode ser "Notifique-me mais tarde".</dd>
</dl>
<p>É possível adicionar somente um de cada tipo de botão a uma {@link
@@ -271,7 +271,7 @@ Caixa de diálogo com um título e uma lista.</p>
<li>Lista de escolhas múltiplas persistentes (caixas de seleção)</li>
</ul>
-<p>Para criar uma lista de escolha única como a da figura 3,
+<p>Para criar uma lista de escolha única como a da figura 3,
use o método {@link android.app.AlertDialog.Builder#setItems setItems()}:</p>
<pre style="clear:right">
@@ -291,7 +291,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<p>Como a lista aparece na área do conteúdo da caixa de diálogo,
a caixa não pode exibir uma mensagem e uma lista, e será preciso definir um título
-para ela com {@link android.app.AlertDialog.Builder#setTitle setTitle()}.
+para ela com {@link android.app.AlertDialog.Builder#setTitle setTitle()}.
Para especificar os itens da lista, chame {@link
android.app.AlertDialog.Builder#setItems setItems()} passando uma matriz.
Alternativamente, é possível especificar uma lista com {@link
@@ -320,8 +320,8 @@ Lista de itens de múltipla escolha.</p>
<p>Para adicionar uma lista de itens de múltipla escolha (caixas de seleção)
ou itens de escolha única (botões de rádio), use os métodos
{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} ou
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} ou
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()} respectivamente.</p>
<p>Por exemplo, a seguir apresenta-se como criar uma lista de múltipla escolha como
@@ -346,7 +346,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
- // Else, if the item is already in the array, remove it
+ // Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
@@ -373,7 +373,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<p>Embora a lista tradicional e uma lista com botões de opção
forneçam uma ação de "escolha única", deve-se usar {@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()} se você desejar manter a escolha do usuário.
Ou seja, se a caixa de diálogo abrir novamente mais tarde, deve indicar qual é a escolha atual do usuário,
portanto deve-se criar uma lista com botões de opção.</p>
@@ -442,7 +442,7 @@ deve-se alterar a família da fonte para {@code "sans-serif"} para que os campos
um estilo de fonte compatível.</p>
<p>Para inflar o layout no {@link android.support.v4.app.DialogFragment},
-obtenha um {@link android.view.LayoutInflater} com
+obtenha um {@link android.view.LayoutInflater} com
{@link android.app.Activity#getLayoutInflater()} e chame
{@link android.view.LayoutInflater#inflate inflate()}, em que o primeiro parâmetro
é o ID de recurso do layout e o segundo é uma vista pai do layout.
@@ -470,7 +470,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
- });
+ });
return builder.create();
}
</pre>
@@ -505,7 +505,7 @@ uma interface por meio da qual entrega os eventos de volta à atividade do host:
<pre>
public class NoticeDialogFragment extends DialogFragment {
-
+
/* The activity that creates an instance of this dialog fragment must
* implement this interface in order to receive event callbacks.
* Each method passes the DialogFragment in case the host needs to query it. */
@@ -513,10 +513,10 @@ public class NoticeDialogFragment extends DialogFragment {
public void onDialogPositiveClick(DialogFragment dialog);
public void onDialogNegativeClick(DialogFragment dialog);
}
-
+
// Use this instance of the interface to deliver action events
NoticeDialogListener mListener;
-
+
// Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
&#64;Override
public void onAttach(Activity activity) {
@@ -543,7 +543,7 @@ dela por meio de uma implementação da interface {@code NoticeDialogListener}:<
public class MainActivity extends FragmentActivity
implements NoticeDialogFragment.NoticeDialogListener{
...
-
+
public void showNoticeDialog() {
// Create an instance of the dialog fragment and show it
DialogFragment dialog = new NoticeDialogFragment();
@@ -656,7 +656,7 @@ public class CustomDialogFragment extends DialogFragment {
// Inflate the layout to use as dialog or embedded fragment
return inflater.inflate(R.layout.purchase_items, container, false);
}
-
+
/** The system calls this only when creating the layout in a dialog. */
&#64;Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
@@ -678,7 +678,7 @@ ou como uma IU de tela cheia com base no tamanho da tela:</p>
public void showDialog() {
FragmentManager fragmentManager = getSupportFragmentManager();
CustomDialogFragment newFragment = new CustomDialogFragment();
-
+
if (mIsLargeLayout) {
// The device is using a large layout, so show the fragment as a dialog
newFragment.show(fragmentManager, "dialog");
@@ -695,7 +695,7 @@ public void showDialog() {
}
</pre>
-<p>Para obter mais informações sobre a realização de operações de fragmentos, consulte o guia
+<p>Para obter mais informações sobre a realização de operações de fragmentos, consulte o guia
<a href="{@docRoot}guide/components/fragments.html">Fragmentos</a>.</p>
<p>Nesse exemplo, o booleano <code>mIsLargeLayout</code> especifica se o dispositivo atual
@@ -721,7 +721,7 @@ versões de recurso bool para diferentes tamanhos de tela:</p>
&lt;/resources>
</pre>
-<p>Assim, é possível inicializar o valor {@code mIsLargeLayout} durante o método
+<p>Assim, é possível inicializar o valor {@code mIsLargeLayout} durante o método
{@link android.app.Activity#onCreate onCreate()} da atividade:</p>
<pre>
@@ -776,7 +776,7 @@ android.support.v4.app.DialogFragment#onDismiss onDismiss()} no {@link
android.support.v4.app.DialogFragment}.</p>
<p>Também é possível <em>cancelar</em> uma caixa de diálogo. Trata-se de um evento especial que indica que o usuário
-se retirou explicitamente da caixa de diálogo sem concluir a tarefa. Isso ocorre se o usuário pressionar o botão
+se retirou explicitamente da caixa de diálogo sem concluir a tarefa. Isso ocorre se o usuário pressionar o botão
<em>Voltar</em>, tocar na tela fora da área da caixa de diálogo
ou se você chamar {@link android.app.Dialog#cancel()} explicitamente no {@link
android.app.Dialog} (como em resposta a um botão "Cancelar" na caixa de diálogo).</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/menus.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/menus.jd
index 833f8966b439..6bdb370740d3 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/menus.jd
@@ -83,9 +83,9 @@ não têm), então você deve migrar usando a barra de ação para fornecer aces
e outras opções.</p>
<p>Consulte a seção <a href="#options-menu">Criação de um menu de opções</a>.</p>
</dd>
-
+
<dt><strong>Modo de ação contextual e menu de contexto</strong></dt>
-
+
<dd>Um menu de contexto é um <a href="#FloatingContextMenu">menu flutuante</a> que aparece quando
o usuário realiza um clique longo em um elemento. Ele fornece ações que afetam o conteúdo selecionado
ou a estrutura do contexto.
@@ -94,7 +94,7 @@ que afetam o conteúdo selecionado em uma barra no topo da tela e permite que o
selecione vários itens.</p>
<p>Consulte a seção <a href="#context-menu">Criação de menus contextuais</a>.</p>
</dd>
-
+
<dt><strong>Menu pop-up</strong></dt>
<dd>Um menu pop-up exibe itens em uma lista vertical ancorada à vista
que apresentou o menu. É bom para fornecer um estouro de ações relacionado a conteúdo específico
@@ -135,7 +135,7 @@ do projeto e crie o menu com os seguintes elementos:</p>
<dt><code>&lt;item></code></dt>
<dd>Cria um {@link android.view.MenuItem}, que representa um único item em um menu. Este
elemento pode conter um elemento <code>&lt;menu></code> aninhado para criar um submenu.</dd>
-
+
<dt><code>&lt;group></code></dt>
<dd>Um recipiente invisível e opcional para os elementos {@code &lt;item&gt;}. Ele permite que você categorize
itens de menu para que eles compartilhem propriedades como estado ativo e visibilidade. Para obter mais informações,
@@ -218,7 +218,7 @@ para o contexto de atividade atual, como "Buscar", "Escrever e-mail" e "Configur
foi desenvolvido:</p>
<ul>
- <li>Caso tenha desenvolvido o aplicativo para <strong>Android 2.3.x (API de nível 10) ou
+ <li>Caso tenha desenvolvido o aplicativo para <strong>Android 2.3.x (API de nível 10) ou
inferior</strong>, os conteúdos do menu de opções aparecerão na parte inferior da tela, quando o usuário
pressionar o botão <em>Menu</em>, como exibido na figura 1. Quando aberto, a primeira parte visível é
o menu
@@ -363,7 +363,7 @@ são apresentados na barra de ação. Quando um evento ocorre e você quer reali
você deve chamar {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()} para pedir
que o sistema chame {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}.</p>
-<p class="note"><strong>Observação:</strong>
+<p class="note"><strong>Observação:</strong>
você nunca deve alterar os itens no menu de opções com base no {@link android.view.View} atualmente
em foco. Quando estiver no modo de toque (quando o usuário não está usando cursor de bola ou um teclado), as vistas
não podem ter foco, então você nunca deve usar o foco como base para modificar
@@ -742,8 +742,8 @@ que exibe um menu pop-up:</p>
<pre>
&lt;ImageButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:src="@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup" />
@@ -901,7 +901,7 @@ android.view.MenuItem#setChecked(boolean) setChecked()}.</p>
(como {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}). É aqui
que você deve definir o estado da caixa de seleção, pois a caixa de seleção ou o botão de rádio
não altera o seu estado automaticamente. É possível consultar o estado do item (como ele era antes
-do usuário selecioná-lo) com {@link android.view.MenuItem#isChecked()} e, em seguida, definir o estado marcado com
+do usuário selecioná-lo) com {@link android.view.MenuItem#isChecked()} e, em seguida, definir o estado marcado com
{@link android.view.MenuItem#setChecked(boolean) setChecked()}. Por exemplo:</p>
<pre>
@@ -1023,9 +1023,9 @@ do filtro de intenção. Por exemplo:</p>
&lt;/intent-filter>
</pre>
-<p>Leia mais sobre a criação de filtros de intenção no documento
+<p>Leia mais sobre a criação de filtros de intenção no documento
<a href="/guide/components/intents-filters.html">Intenções e filtros de intenções</a>.</p>
-<p>Para obter um exemplo de aplicativo que usa esta técnica, consulte o código de exemplo do
+<p>Para obter um exemplo de aplicativo que usa esta técnica, consulte o código de exemplo do
<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Bloco
de notas</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/notifiers/notifications.jd
index 42563ace2248..d3fb4cfab296 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/notifiers/notifications.jd
@@ -92,7 +92,7 @@ A classe {@link android.app.Notification.Builder Notification.Builder} foi adici
<p>As notificações, como parte importante da interface do usuário do Android, possuem as próprias diretrizes de projeto.
As alterações do Material Design introduzidas no Android 5.0 (API de nível 21) são de importância
específica e, por isso, recomenda-se revisar o treinamento do <a href="{@docRoot}training/material/index.html">Material Design</a>
- para obter mais informações. Para saber como projetar notificações e suas interações, leia o guia de projeto
+ para obter mais informações. Para saber como projetar notificações e suas interações, leia o guia de projeto
<a href="{@docRoot}design/patterns/notifications.html">Notificações</a>.</p>
<h2 id="CreateNotification">Criação de uma notificação</h2>
@@ -451,14 +451,14 @@ todas as notificações emitidas anteriormente.
Adicione compatibilidade com Android 4.0.3 e mais antigos. Para fazer isto, especifique o pai
da {@link android.app.Activity} que está iniciando adicionando um elemento
<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
- como o filho de
+ como o filho de
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>.
<p>
- Para este elemento, defina
+ Para este elemento, defina
<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a>="android.support.PARENT_ACTIVITY"</code>.
Defina
<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#val">android:value</a>="&lt;parent_activity_name&gt;"</code>,
- onde <code>&lt;parent_activity_name&gt;</code> é o valor de
+ onde <code>&lt;parent_activity_name&gt;</code> é o valor de
<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a></code>
para o elemento
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/overview.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/overview.jd
index d12bfe5fac8b..d82ecf7aa8fa 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/overview.jd
@@ -4,12 +4,12 @@ page.title=Visão geral da IU
<p>Todos os elementos da interface do usuário em um aplicativo para Android são criados usando objetos {@link android.view.View} e
{@link android.view.ViewGroup}. Uma {@link android.view.View} é um objeto que desenha
-algo na tela com o qual o usuário pode interagir. Um {@link android.view.ViewGroup} é um
+algo na tela com o qual o usuário pode interagir. Um {@link android.view.ViewGroup} é um
objeto que contém outros objetos {@link android.view.View} (e {@link android.view.ViewGroup}) para
definir o layout da interface.</p>
<p>O Android fornece uma coleção de subclasses {@link android.view.View} e {@link
-android.view.ViewGroup} que oferecem controles de entrada comuns (como botões e campos de
+android.view.ViewGroup} que oferecem controles de entrada comuns (como botões e campos de
texto) e vários modelos de layout (como um layout linear ou relativo).</p>
@@ -30,7 +30,7 @@ de uma IU.</p>
criar uma árvore. Mas a forma mais fácil e efetiva de definir o layout é com um arquivo XML.
O XML oferece uma estrutura legível por humanos para o layout, similar a HTML.</p>
-<p>O nome de um elemento XML para uma vista é respectivo à classe do Android que ele representa. Portanto, um elemento
+<p>O nome de um elemento XML para uma vista é respectivo à classe do Android que ele representa. Portanto, um elemento
<code>&lt;TextView&gt;</code> cria um widget {@link android.widget.TextView} na IU
e um elemento <code>&lt;LinearLayout&gt;</code> cria um grupo de vistas de {@link android.widget.LinearLayout}
. </p>
@@ -39,7 +39,7 @@ e um elemento <code>&lt;LinearLayout&gt;</code> cria um grupo de vistas de {@lin
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
+ android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
&lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@ layout.</p>
<p>Para obter um guia completo para criar um layout de IU, consulte <a href="declaring-layout.html">Layouts
XML</a>.
-
+
<h2 id="UIComponents">Componentes da interface do usuário</h2>
<p>Você não precisa criar toda a IU usando objetos {@link android.view.View} e {@link
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/settings.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/settings.jd
index f95966c37578..c00b461499d4 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/settings.jd
@@ -82,7 +82,7 @@ como programar as configurações do aplicativo por meio de APIs {@link android.
<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
<p class="img-caption"><strong>Figura 1.</strong> Capturas de tela das configurações do aplicativo Mensagens
-do Android. A seleção de um item definido por uma {@link android.preference.Preference}
+do Android. A seleção de um item definido por uma {@link android.preference.Preference}
abre uma interface para alterar a configuração.</p>
@@ -120,8 +120,8 @@ um dos seguintes tipos de dados:</p>
</ul>
<p>Como a IU de configurações do aplicativo é criada com objetos {@link android.preference.Preference}
- em vez de objetos
-{@link android.view.View}, é preciso usar uma subclasse {@link android.app.Activity} ou
+ em vez de objetos
+{@link android.view.View}, é preciso usar uma subclasse {@link android.app.Activity} ou
{@link android.app.Fragment} especializada para exibir as configurações de lista:</p>
<ul>
@@ -226,8 +226,8 @@ android.preference.ListPreference}. Os dois itens contêm estes três atributos:
<dt>{@code android:key}</dt>
<dd>Esse atributo é necessário para preferências que persistem a um valor de dados. Ele especifica a chave
exclusiva (uma string) que o sistema usa ao salvar o valor dessa configuração em {@link
-android.content.SharedPreferences}.
- <p>As únicas instâncias em que esse atributo é <em>dispensável</em> ocorrem quando a preferência é um
+android.content.SharedPreferences}.
+ <p>As únicas instâncias em que esse atributo é <em>dispensável</em> ocorrem quando a preferência é um
{@link android.preference.PreferenceCategory} ou {@link android.preference.PreferenceScreen},
ou quando a preferência especifica um {@link android.content.Intent} para invocar (com um elemento <a href="#Intents">{@code &lt;intent&gt;}</a>) ou um {@link android.app.Fragment} para exibir (com um atributo <a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
android:fragment}</a>).</p>
@@ -285,7 +285,7 @@ android.preference.PreferenceCategory}.</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;PreferenceCategory
+ &lt;PreferenceCategory
android:title="&#64;string/pref_sms_storage_title"
android:key="pref_key_storage_settings">
&lt;CheckBoxPreference
@@ -293,12 +293,12 @@ android.preference.PreferenceCategory}.</p>
android:summary="&#64;string/pref_summary_auto_delete"
android:title="&#64;string/pref_title_auto_delete"
android:defaultValue="false"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_sms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
android:title="&#64;string/pref_title_sms_delete"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_mms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
@@ -311,7 +311,7 @@ android.preference.PreferenceCategory}.</p>
<h4 id="Subscreens">Uso de subtelas</h4>
-<p>Para usar grupos de configurações em uma subtela (como ilustrado na figura 3), coloque o grupo
+<p>Para usar grupos de configurações em uma subtela (como ilustrado na figura 3), coloque o grupo
de objetos {@link android.preference.Preference} dentro de {@link
android.preference.PreferenceScreen}.</p>
@@ -588,11 +588,11 @@ dentro de um elemento raiz {@code &lt;preference-headers&gt;}. Por exemplo:</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
@@ -636,7 +636,7 @@ public static class SettingsFragment extends PreferenceFragment {
<h3 id="DisplayHeaders">Exibição de cabeçalhos</h3>
<p>Para exibir os cabeçalhos de preferência, é preciso implementar o método de retorno de chamada {@link
-android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} e chamar
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} e chamar
{@link android.preference.PreferenceActivity#loadHeadersFromResource
loadHeadersFromResource()}. Por exemplo:</p>
@@ -672,15 +672,15 @@ ao {@link android.preference.PreferenceActivity} que especifica que arquivo XML
carregar.</p>
<p>Por exemplo, abaixo há um arquivo XML de cabeçalhos de preferência usado no Android 3.0
-e posterior ({@code res/xml/preference_headers.xml}):</p>
+e posterior ({@code res/xml/preference_headers.xml}):</p>
<pre>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" />
@@ -692,18 +692,18 @@ mais antigas que a 3.0 ({@code res/xml/preference_headers_legacy.xml}):</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_ONE" />
&lt;/Preference>
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_TWO" />
@@ -975,11 +975,11 @@ da caixa de diálogo positiva e negativa:</p>
public class NumberPickerPreference extends DialogPreference {
public NumberPickerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
-
+
setDialogLayoutResource(R.layout.numberpicker_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
-
+
setDialogIcon(null);
}
...
@@ -1194,7 +1194,7 @@ protected void onRestoreInstanceState(Parcelable state) {
// Cast state to custom BaseSavedState and pass to superclass
SavedState myState = (SavedState) state;
super.onRestoreInstanceState(myState.getSuperState());
-
+
// Set this Preference's widget to reflect the restored state
mNumberPicker.setValue(myState.value);
}
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/ui-events.jd
index e0ace1d4b3ca..2f88248b3eb2 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/ui-events.jd
@@ -30,7 +30,7 @@ uma coleção de interfaces aninhadas com retornos de chamada que podem ser defi
chamadas de <a href="#EventListeners">escutas de evento</a>, são a sua passagem para capturar a interação do usuário com a IU.</p>
<p>Geralmente, as escutas de evento são usadas para escutar a interação do usuário.
-No entanto, há casos em que você pode querer estender uma classe View para criar um componente personalizado.
+No entanto, há casos em que você pode querer estender uma classe View para criar um componente personalizado.
Talvez você queira estender a classe {@link android.widget.Button}
para deixar algo mais extravagante. Neste caso, você poderá definir os comportamentos de evento padrão
para a classe usando <a href="#EventHandlers">manipuladores de evento</a>.</p>
@@ -46,27 +46,27 @@ estiver registrada for ativada pela interação do usuário com o item na IU.</p
<dl>
<dt><code>onClick()</code></dt>
- <dd>De {@link android.view.View.OnClickListener}.
+ <dd>De {@link android.view.View.OnClickListener}.
Isto é chamado quando o usuário toca no item
(no modo de toque), ou atribui foco ao item com as teclas de navegação ou cursor de bola
e pressiona a tecla "enter" adequada ou pressiona o cursor de bola.</dd>
<dt><code>onLongClick()</code></dt>
- <dd>De {@link android.view.View.OnLongClickListener}.
+ <dd>De {@link android.view.View.OnLongClickListener}.
Isto é chamado quando o usuário toca e mantém o item pressionado (no modo de toque),
ou atribui foco ao item com as teclas de navegação ou cursor de bola
e mantém pressionada a tecla "enter" adequada ou o cursor de bola (por um segundo).</dd>
<dt><code>onFocusChange()</code></dt>
- <dd>De {@link android.view.View.OnFocusChangeListener}.
+ <dd>De {@link android.view.View.OnFocusChangeListener}.
Isto é chamado quando o usuário navega no ou do item, usando as teclas de navegação ou cursor de bola.</dd>
<dt><code>onKey()</code></dt>
- <dd>De {@link android.view.View.OnKeyListener}.
+ <dd>De {@link android.view.View.OnKeyListener}.
Isto é chamado quando o usuário está com foco no item ou solta uma tecla de hardware no dispositivo.</dd>
<dt><code>onTouch()</code></dt>
- <dd>De {@link android.view.View.OnTouchListener}.
+ <dd>De {@link android.view.View.OnTouchListener}.
Isto é chamado quando o usuário realiza uma ação qualificada como um toque de evento, incluindo o pressionamento, a liberação,
ou qualquer outro gesto de movimento na tela (dentro dos limites do item).</dd>
<dt><code>onCreateContextMenu()</code></dt>
- <dd>De {@link android.view.View.OnCreateContextMenuListener}.
+ <dd>De {@link android.view.View.OnCreateContextMenuListener}.
Isto é chamado quando um menu de contexto está sendo construído (como resultado de um "clique longo"). Consulte a discussão
sobre menus de contexto no guia do desenvolvedor <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Menus</a>
.</dd>
@@ -75,8 +75,8 @@ estiver registrada for ativada pela interação do usuário com o item na IU.</p
<p>Esses métodos são os únicos habitantes de suas respectivas interfaces. Para definir um desses métodos
e lidar com seus eventos, implemente a interface aninhada na atividade ou defina-a como uma classe anônima.
Em seguida, passe uma instância da implementação
-para o respectivo método <code>View.set...Listener()</code>. (Ex.:, chame
-<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>
+para o respectivo método <code>View.set...Listener()</code>. (Ex.:, chame
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>
e passe-o à implementação de {@link android.view.View.OnClickListener OnClickListener}.)</p>
<p>O exemplo abaixo mostra como registrar uma escuta de clique para um botão. </p>
@@ -121,17 +121,17 @@ public class ExampleActivity extends Activity implements OnClickListener {
não tem valor de retorno, mas outros métodos de escuta de evento podem retornar um booleano. O motivo
depende do evento. Para os poucos que retornam, apresenta-se a razão:</p>
<ul>
- <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> -
- Isto retorna um booleano para indicar se você consumiu o evento e se ele deve ser levado adiante.
- Ou seja, ele retorna <em>verdadeiro</em> para indicar que você lidou com o evento e não deve seguir adiante;
+ <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> -
+ Isto retorna um booleano para indicar se você consumiu o evento e se ele deve ser levado adiante.
+ Ou seja, ele retorna <em>verdadeiro</em> para indicar que você lidou com o evento e não deve seguir adiante;
ou retorna <em>falso</em> caso você não tenha lidado com ele e/ou o evento deva continuar para qualquer
outra escuta de clique.</li>
- <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> -
+ <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> -
Isto retorna um booleano para indicar se você consumiu o evento e se ele deve ser levado adiante.
- Ou seja, ele retorna <em>verdadeiro</em> para indicar que você lidou com o evento e não deve seguir adiante;
+ Ou seja, ele retorna <em>verdadeiro</em> para indicar que você lidou com o evento e não deve seguir adiante;
ou retorna <em>falso</em> caso você não tenha lidado com ele e/ou o evento deva continuar para qualquer
outra escuta de tecla.</li>
- <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> -
+ <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> -
Isto retorna um booleano para indicar se a escuta consome este evento. O importante é que este evento
pode possuir várias ações que se seguem mutuamente. Portanto, se retornar <em>falso</em> quando
o evento de ação inferior for recebido, você indicará que não consumiu o evento e que não está
@@ -181,14 +181,14 @@ mas podem ter impacto direto na maneira de lidar com os eventos. Portanto, ao ge
dentro de um layout, considere esses outros métodos:</p>
<ul>
<li><code>{@link android.app.Activity#dispatchTouchEvent(MotionEvent)
- Activity.dispatchTouchEvent(MotionEvent)}</code> - Isto permite que {@link
+ Activity.dispatchTouchEvent(MotionEvent)}</code> - Isto permite que {@link
android.app.Activity} intercepte todos os evento de toque antes de serem enviados à janela.</li>
<li><code>{@link android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - Isto permite que {@link
android.view.ViewGroup} assista aos eventos à medida que são enviados para as vistas filho.</li>
<li><code>{@link android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - Chame isto
- sobre uma Vista pai para indicar que ela não deve interceptar eventos de toque com <code>{@link
+ sobre uma Vista pai para indicar que ela não deve interceptar eventos de toque com <code>{@link
android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li>
</ul>
@@ -199,7 +199,7 @@ Quando um usuário está navegando em uma interface do usuário com teclas direc
ver o que aceitará entrada. Se o dispositivo tiver capacidades de toque, no entanto, e o usuário
começar a interagir com a interface por meio de toque, então não é mais necessário
destacar itens ou fornecer foco para uma vista específica. Contudo, há um modo
-de interação chamado "modo de toque".
+de interação chamado "modo de toque".
</p>
<p>
Para dispositivos com capacidades de toque, quando o usuário toca na tela, o dispositivo
@@ -214,7 +214,7 @@ sairá do modo de toque e encontrará uma vista para atribuir foco. Agora, o usu
com a interface do usuário sem tocar na tela.
</p>
<p>
-O estado de modo de toque é mantido em todo o sistema (todas as janelas e atividades).
+O estado de modo de toque é mantido em todo o sistema (todas as janelas e atividades).
Para consultar o estado atual, é possível chamar
{@link android.view.View#isInTouchMode} para ver se o dispositivo está no modo de toque no momento.
</p>
@@ -282,7 +282,7 @@ como discutido na seção <a href="#EventListeners">Escutas de evento</a> acima.
the framework will take care of measuring, laying out, and drawing the tree
as appropriate.</li>
</ol>
-
+
<p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
the UI thread when calling any method on any View.
If you are doing work on other threads and want to update the state of a View
diff --git a/docs/html-intl/intl/pt-br/preview/api-overview.jd b/docs/html-intl/intl/pt-br/preview/api-overview.jd
index c16d84701d11..d638e71fc53c 100644
--- a/docs/html-intl/intl/pt-br/preview/api-overview.jd
+++ b/docs/html-intl/intl/pt-br/preview/api-overview.jd
@@ -48,7 +48,7 @@ page.image=images/cards/card-n-apis_2x.png
-<p>O Android N ainda está em desenvolvimento ativo, mas agora você já pode testá-lo
+<p>O Android N ainda está em desenvolvimento ativo, mas agora você já pode testá-lo
como parte do N Developer Preview. As seções a seguir destacam alguns dos
novos recursos para desenvolvedores. </p>
@@ -62,7 +62,7 @@ novos recursos para desenvolvedores. </p>
<h2 id="multi-window_support">Suporte a várias janelas</h2>
-<p>No Android N, introduzimos um recurso de multitarefa novo e muito solicitado
+<p>No Android N, introduzimos um recurso de multitarefa novo e muito solicitado
na plataforma &mdash; o suporte a várias janelas. </p>
<p>Agora os usuários podem abrir dois aplicativos na tela ao mesmo tempo. </p>
@@ -85,9 +85,9 @@ interage com outros aplicativos.</li>
</div>
-<p>O suporte a várias janelas oferece novas formas de envolver os usuários,
-particularmente em tablets e outros dispositivos com telas maiores. Você pode até ativar o recurso de arrastar e soltar
-no aplicativo para permitir que os usuários arrastem conteúdo de ou para o aplicativo &mdash; uma ótima
+<p>O suporte a várias janelas oferece novas formas de envolver os usuários,
+particularmente em tablets e outros dispositivos com telas maiores. Você pode até ativar o recurso de arrastar e soltar
+no aplicativo para permitir que os usuários arrastem conteúdo de ou para o aplicativo &mdash; uma ótima
maneira de aprimorar a experiência do usuário. </p>
<p>É muito fácil adicionar suporte a várias janelas a seu aplicativo e configurar como ele
@@ -103,7 +103,7 @@ deste tamanho. Você também pode desativar a exibição de várias janelas para
<h2 id="notification_enhancements">Aprimoramentos de notificações</h2>
-<p>Reformulamos as notificações no Android N para facilitar e agilizar o
+<p>Reformulamos as notificações no Android N para facilitar e agilizar o
uso. Entre as alterações estão:</p>
<ul>
@@ -158,7 +158,7 @@ e a visualização de conteúdo.
<strong>Figura 2.</strong> Notificações empacotadas e resposta direta.
</p>
-<p>Para saber como implementar os novos recursos, consulte o
+<p>Para saber como implementar os novos recursos, consulte o
guia <a href="{@docRoot}preview/features/notification-updates.html">Notificações</a>
.</p>
@@ -166,42 +166,42 @@ guia <a href="{@docRoot}preview/features/notification-updates.html">Notificaçõ
<h2 id="jit_aot">Compilação JIT/AOT orientada a perfil</h2>
-<p>No Android N, adicionamos um compilador Just in Time (JIT) com perfis de código para
-ART, o que permite aprimorar constantemente o desempenho de aplicativos Android durante a
+<p>No Android N, adicionamos um compilador Just in Time (JIT) com perfis de código para
+ART, o que permite aprimorar constantemente o desempenho de aplicativos Android durante a
execução. O compilador JIT complementa o compilador atual Ahead of Time (AOT)
do ART e ajuda a aprimorar o desempenho em tempo de execução, economizar espaço de armazenamento e acelerar atualizações
de aplicativos e de sistema.</p>
-<p>A compilação orientada a perfil permite que o ART gerencie a compilação AOT/JIT de cada aplicativo
-de acordo com o uso real e com as condições no dispositivo. Por
-exemplo, o ART mantém um perfil dos principais métodos do aplicativo e pode pré-compilar
+<p>A compilação orientada a perfil permite que o ART gerencie a compilação AOT/JIT de cada aplicativo
+de acordo com o uso real e com as condições no dispositivo. Por
+exemplo, o ART mantém um perfil dos principais métodos do aplicativo e pode pré-compilar
e armazenar esses métodos em cache para obter o melhor desempenho. As outras partes do aplicativo não são
compiladas até que sejam realmente utilizadas.</p>
-<p>Além de aprimorar o desempenho para as principais partes do aplicativo, a compilação
-ajuda a reduzir o uso geral de recursos de RAM, incluindo os binários
+<p>Além de aprimorar o desempenho para as principais partes do aplicativo, a compilação
+ajuda a reduzir o uso geral de recursos de RAM, incluindo os binários
associados. Esse recurso é particularmente importante em dispositivos com pouca memória.</p>
-<p>O ART gerencia a compilação orientada a perfil de forma a minimizar o impacto sobre a
-bateria do dispositivo. A pré-compilação é executada apenas quando o dispositivo está ocioso e
+<p>O ART gerencia a compilação orientada a perfil de forma a minimizar o impacto sobre a
+bateria do dispositivo. A pré-compilação é executada apenas quando o dispositivo está ocioso e
com a bateria sendo carregada, economizando tempo e bateria com a execução antecipada dessa tarefa.</p>
<h2 id="quick_path_to_app_install">Caminho rápido para a instalação de aplicativos</h2>
-<p>Um dos benefícios mais tangíveis do compilador JIT do ART é a velocidade de instalação dos
-aplicativos e das atualizações do sistema. Até mesmo aplicativos grandes, que exigiam vários minutos para
-otimização e instalação no Android 6.0, podem agora ser instalados em
+<p>Um dos benefícios mais tangíveis do compilador JIT do ART é a velocidade de instalação dos
+aplicativos e das atualizações do sistema. Até mesmo aplicativos grandes, que exigiam vários minutos para
+otimização e instalação no Android 6.0, podem agora ser instalados em
segundos. As atualizações de sistema também ficaram mais rápidas, pois não existe mais a etapa de otimização. </p>
<h2 id="doze_on_the_go">Modo soneca em movimento...</h2>
-<p>O Android 6.0 introduziu o modo soneca, um modo de sistema que economiza bateria adiando
-atividades de CPU e rede dos aplicativos quando o dispositivo está ocioso, como
+<p>O Android 6.0 introduziu o modo soneca, um modo de sistema que economiza bateria adiando
+atividades de CPU e rede dos aplicativos quando o dispositivo está ocioso, como
quando está em uma mesa ou gaveta. </p>
-<p>Agora, no Android N, o modo soneca foi aprimorado e economiza bateria quando em movimento.
-Sempre que a tela ficar desativada por um período e o dispositivo ficar desativado,
-o modo soneca aplicará um subconjunto das restrições familiares de CPU e rede aos aplicativos.
+<p>Agora, no Android N, o modo soneca foi aprimorado e economiza bateria quando em movimento.
+Sempre que a tela ficar desativada por um período e o dispositivo ficar desativado,
+o modo soneca aplicará um subconjunto das restrições familiares de CPU e rede aos aplicativos.
Isso significa que os usuários podem economizar bateria transportando os dispositivos no
bolso.</p>
@@ -213,36 +213,36 @@ bolso.</p>
</p>
-<p>Pouco depois de a tela ser desativada com o dispositivo alimentado pela bateria, o modo soneca
-restringe o acesso de rede e adia trabalhos e sincronizações. Durante breves janelas de
-manutenção, os aplicativos podem acessar a rede e todos os
+<p>Pouco depois de a tela ser desativada com o dispositivo alimentado pela bateria, o modo soneca
+restringe o acesso de rede e adia trabalhos e sincronizações. Durante breves janelas de
+manutenção, os aplicativos podem acessar a rede e todos os
trabalhos/sincronizações adiados são executados. A ativação da tela ou do dispositivo
encerra o modo soneca.</p>
-<p>Quando o dispositivo voltar a ficar estacionário, com a tela desativada e alimentado por bateria por um
+<p>Quando o dispositivo voltar a ficar estacionário, com a tela desativada e alimentado por bateria por um
período, o modo soneca aplicará as restrições completas de CPU e rede em {@link
-android.os.PowerManager.WakeLock}, alarmes {@link android.app.AlarmManager} e
+android.os.PowerManager.WakeLock}, alarmes {@link android.app.AlarmManager} e
verificações de GPS/Wi-Fi.</p>
-<p>As práticas recomendadas para adaptar o aplicativo ao modo soneca são as mesmas para
-dispositivos estacionários ou em movimento. Portanto, se você já atualizou o aplicativo para
+<p>As práticas recomendadas para adaptar o aplicativo ao modo soneca são as mesmas para
+dispositivos estacionários ou em movimento. Portanto, se você já atualizou o aplicativo para
processar o modo soneca corretamente, está pronto. Caso contrário, comece a <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">adaptar
o aplicativo para o modo soneca</a> agora.</p>
<h2 id="background_optimizations">Project Svelte: Otimizações em segundo plano</h2>
-<p>O Project Svelte é um esforço contínuo para minimizar o uso de RAM pelo sistema e pelos aplicativos
-nos dispositivos Android existentes no ecossistema. No Android N, o Project
+<p>O Project Svelte é um esforço contínuo para minimizar o uso de RAM pelo sistema e pelos aplicativos
+nos dispositivos Android existentes no ecossistema. No Android N, o Project
Svelte se concentra em otimizar a forma de execução dos aplicativos em segundo plano. </p>
-<p>O processamento em segundo plano é parte essencial da maioria dos aplicativos. Quando executado corretamente, a experiência
-do usuário pode ficar incrível &mdash; imediata, rápida e sensível ao contexto.
-Quando executado incorretamente, o processamento em segundo plano pode consumir desnecessariamente RAM (e
+<p>O processamento em segundo plano é parte essencial da maioria dos aplicativos. Quando executado corretamente, a experiência
+do usuário pode ficar incrível &mdash; imediata, rápida e sensível ao contexto.
+Quando executado incorretamente, o processamento em segundo plano pode consumir desnecessariamente RAM (e
bateria) e afetar o desempenho do sistema para os outros aplicativos. </p>
-<p>Desde o Android 5.0, {@link android.app.job.JobScheduler} é a forma
-preferencial para execução de trabalho em segundo plano de uma maneira que beneficia
-os usuários. Os aplicativos podem agendar trabalhos e permitir que o sistema execute otimizações com base em
+<p>Desde o Android 5.0, {@link android.app.job.JobScheduler} é a forma
+preferencial para execução de trabalho em segundo plano de uma maneira que beneficia
+os usuários. Os aplicativos podem agendar trabalhos e permitir que o sistema execute otimizações com base em
condições de memória, energia e conectividade. O JobScheduler oferece controle e
simplicidade, e queremos que seja usado por todos os aplicativos. </p>
@@ -253,23 +253,23 @@ simplicidade, e queremos que seja usado por todos os aplicativos. </p>
Android.
</p>
-<p>Continuamos a expandir o <code>JobScheduler</code> e o
-<code>GCMNetworkManager</code> para atender a mais
-casos de uso &mdash; por exemplo, no Android N, você já pode agendar trabalhos
-em segundo plano de acordo com mudanças nos provedores de conteúdo. Ao mesmo tempo, começamos a
-substituir alguns padrões mais antigos que podem reduzir o desempenho do sistema,
+<p>Continuamos a expandir o <code>JobScheduler</code> e o
+<code>GCMNetworkManager</code> para atender a mais
+casos de uso &mdash; por exemplo, no Android N, você já pode agendar trabalhos
+em segundo plano de acordo com mudanças nos provedores de conteúdo. Ao mesmo tempo, começamos a
+substituir alguns padrões mais antigos que podem reduzir o desempenho do sistema,
particularmente em dispositivos com pouca memória.</p>
<p>No Android N, estamos removendo três transmissões implícitas de uso comum &mdash;
{@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
android.hardware.Camera#ACTION_NEW_PICTURE} e {@link
- android.hardware.Camera#ACTION_NEW_VIDEO} &mdash;, pois podem despertar simultaneamente
-processos em segundo plano de vários aplicativos, aumentando o consumo de memória e bateria. Se
+ android.hardware.Camera#ACTION_NEW_VIDEO} &mdash;, pois podem despertar simultaneamente
+processos em segundo plano de vários aplicativos, aumentando o consumo de memória e bateria. Se
o seu aplicativo receber essas transmissões, aproveite o N Developer Preview para
migrar para o <code>JobScheduler</code> e as APIs relacionadas. </p>
<p>
- Consulte a documentação de <a href="{@docRoot}preview/features/background-optimization.html">Otimizações
+ Consulte a documentação de <a href="{@docRoot}preview/features/background-optimization.html">Otimizações
em segundo plano</a> para obter mais detalhes.
</p>
@@ -284,27 +284,27 @@ em segundo plano</a> para obter mais detalhes.
</p>
</div>
-<p>Normalmente, o custo de um plano de dados de celular ao longo da vida útil do dispositivo móvel
-excede o custo do próprio dispositivo. Para muitos usuários, os dados de celular
+<p>Normalmente, o custo de um plano de dados de celular ao longo da vida útil do dispositivo móvel
+excede o custo do próprio dispositivo. Para muitos usuários, os dados de celular
são um recurso caro que querem economizar. </p>
-<p>O Android N introduz o modo de Economia de dados, um novo serviço do sistema que ajuda a reduzir
-o uso de dados de celular pelos aplicativos em situações de roaming, perto do final do ciclo de cobrança
-ou em pacotes de dados pré-pagos pequenos. A Economia de dados permite que os usuários controlem o
-uso de dados de celular e possibilita que os desenvolvedores ofereçam serviços mais eficientes quando o modo de Economia
+<p>O Android N introduz o modo de Economia de dados, um novo serviço do sistema que ajuda a reduzir
+o uso de dados de celular pelos aplicativos em situações de roaming, perto do final do ciclo de cobrança
+ou em pacotes de dados pré-pagos pequenos. A Economia de dados permite que os usuários controlem o
+uso de dados de celular e possibilita que os desenvolvedores ofereçam serviços mais eficientes quando o modo de Economia
de dados estiver ativado. </p>
-<p>Quando um usuário ativa a Economia de dados em <strong>Settings</strong> e o dispositivo está
-em uma rede tarifada, o sistema bloqueia o uso de dados em segundo plano e avisa aos aplicativos
-para reduzir o uso de dados no primeiro plano sempre que possível &mdash; como, por exemplo, limitar a
-taxa de bits de streaming, reduzir a qualidade de imagens, adiar o armazenamento prévio otimista em cache
+<p>Quando um usuário ativa a Economia de dados em <strong>Settings</strong> e o dispositivo está
+em uma rede tarifada, o sistema bloqueia o uso de dados em segundo plano e avisa aos aplicativos
+para reduzir o uso de dados no primeiro plano sempre que possível &mdash; como, por exemplo, limitar a
+taxa de bits de streaming, reduzir a qualidade de imagens, adiar o armazenamento prévio otimista em cache
e assim por diante. Os usuários podem autorizar aplicativos específicos a usar dados tarifados
em segundo plano, mesmo com a Economia de dados ativada.</p>
-<p>O Android N estende o {@link android.net.ConnectivityManager} para oferecer aos aplicativos uma
-forma de <a href="{@docRoot}preview/features/data-saver.html#status">recuperar as
-preferências do usuário para a Economia de dados</a> e <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">monitorar
-as mudanças de preferências</a>. Todos os aplicativos devem verificar se o usuário ativou a Economia
+<p>O Android N estende o {@link android.net.ConnectivityManager} para oferecer aos aplicativos uma
+forma de <a href="{@docRoot}preview/features/data-saver.html#status">recuperar as
+preferências do usuário para a Economia de dados</a> e <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">monitorar
+as mudanças de preferências</a>. Todos os aplicativos devem verificar se o usuário ativou a Economia
de dados e tentar limitar o uso de dados em primeiro e segundo plano.</p>
@@ -364,16 +364,16 @@ de dados e tentar limitar o uso de dados em primeiro e segundo plano.</p>
</p>
- </div><p>As Configurações rápidas são uma forma popular e simples de expor as principais configurações e ações
-diretamente na aba de notificações. No Android N, ampliamos o escopo das
+ </div><p>As Configurações rápidas são uma forma popular e simples de expor as principais configurações e ações
+diretamente na aba de notificações. No Android N, ampliamos o escopo das
Configurações rápidas para aumentar ainda mais a utilidade e a conveniência. </p>
-<p>Adicionamos mais espaço para os blocos de Configurações rápidas, que os usuários podem
-acessar em uma área de exibição paginada deslizando à direita ou à esquerda. Além disso,
-permitimos que os usuários controlem quais blocos de Configurações rápidas são exibidos, bem como o local
+<p>Adicionamos mais espaço para os blocos de Configurações rápidas, que os usuários podem
+acessar em uma área de exibição paginada deslizando à direita ou à esquerda. Além disso,
+permitimos que os usuários controlem quais blocos de Configurações rápidas são exibidos, bem como o local
em que são exibidos &mdash; para adicionar ou mover blocos, os usuários simplesmente arrastam e soltam os blocos. </p>
-<p>Para desenvolvedores, o Android N também adiciona uma API nova que permite definir os próprios
+<p>Para desenvolvedores, o Android N também adiciona uma API nova que permite definir os próprios
blocos de Configurações rápidas para que os usuários possam acessar facilmente os principais controles e ações do seu aplicativo.</p>
<p>
@@ -396,25 +396,25 @@ blocos de Configurações rápidas para que os usuários possam acessar facilmen
<h2 id="number-blocking">Bloqueio de número</h2>
-<p>O Android N agora oferece suporte a bloqueio de números na plataforma e disponibiliza uma
+<p>O Android N agora oferece suporte a bloqueio de números na plataforma e disponibiliza uma
API de estrutura para permitir que provedores de serviço mantenham uma lista de números bloqueados. O
- aplicativo padrão de SMS, o aplicativo padrão de telefone e os aplicativos de provedor podem ler e gravar
+ aplicativo padrão de SMS, o aplicativo padrão de telefone e os aplicativos de provedor podem ler e gravar
a lista de números bloqueados. A lista não está acessível para outros aplicativos.</p>
-<p>Ao oferecer o bloqueio de número como recurso padrão da plataforma, o Android oferece
-uma forma consistente de bloqueio de números em uma grande variedade de
+<p>Ao oferecer o bloqueio de número como recurso padrão da plataforma, o Android oferece
+uma forma consistente de bloqueio de números em uma grande variedade de
dispositivos. Alguns benefícios que podem ser aproveitados pelos aplicativos são:</p>
<ul>
<li> Números bloqueados para chamadas também são bloqueados para mensagens de texto
- <li> Números bloqueados podem persistir entre várias redefinições e dispositivos por meio do
+ <li> Números bloqueados podem persistir entre várias redefinições e dispositivos por meio do
recurso Backup e restauração
<li> Vários aplicativos podem usar a mesma lista de números bloqueados
</ul>
-<p>Além disso, a integração de aplicativos da operadora por meio do Android significa que as operadoras podem
-ler a lista de números bloqueados no dispositivo e executar um bloqueio do lado do servidor
-para o usuário, impedindo que chamadas e textos indesejados cheguem a ele
+<p>Além disso, a integração de aplicativos da operadora por meio do Android significa que as operadoras podem
+ler a lista de números bloqueados no dispositivo e executar um bloqueio do lado do servidor
+para o usuário, impedindo que chamadas e textos indesejados cheguem a ele
por qualquer meio, como terminais de VOIP ou encaminhamento de telefones.</p>
<p>
@@ -449,23 +449,23 @@ da API</a>, disponível para download.
<p>O Android N agora permite que os usuários selecionem <strong>diversas localidades</strong> em Settings
-para oferecer melhor suporte a casos de uso bilíngue. Os aplicativos podem usar
-uma API nova para obter as localidades selecionadas pelo usuário e oferecer
-experiências de usuário mais sofisticadas para usuários com diversas localidades &mdash; como, por exemplo, mostrar resultados de pesquisa em
-diversos idiomas e não oferecer a tradução de páginas da web que usam
+para oferecer melhor suporte a casos de uso bilíngue. Os aplicativos podem usar
+uma API nova para obter as localidades selecionadas pelo usuário e oferecer
+experiências de usuário mais sofisticadas para usuários com diversas localidades &mdash; como, por exemplo, mostrar resultados de pesquisa em
+diversos idiomas e não oferecer a tradução de páginas da web que usam
um idioma conhecido pelo usuário.</p>
-<p>Juntamente com o suporte a várias localidades, o Android N também amplia o número de idiomas
-disponíveis aos usuários. Ele oferece mais de 25 variantes para cada um dos idiomas
+<p>Juntamente com o suporte a várias localidades, o Android N também amplia o número de idiomas
+disponíveis aos usuários. Ele oferece mais de 25 variantes para cada um dos idiomas
mais comuns, como inglês, espanhol, francês e árabe. Além disso, adiciona suporte parcial
a mais de 100 novos idiomas.</p>
<p>Os aplicativos podem obter a lista de localidades definida pelo usuário chamando
<code>LocaleList.GetDefault()</code>. Para oferecer suporte ao maior número de localidades, o Android N está
-alterando a forma como resolve recursos. Não deixe de testar e verificar se seus aplicativos
+alterando a forma como resolve recursos. Não deixe de testar e verificar se seus aplicativos
funcionam da forma esperada com a nova lógica de resolução de recursos.</p>
-<p>Para saber mais sobre o novo comportamento de resolução de recursos e sobre as práticas recomendadas que você deve
+<p>Para saber mais sobre o novo comportamento de resolução de recursos e sobre as práticas recomendadas que você deve
seguir, consulte <a href="{@docRoot}preview/features/multilingual-support.html">Suporte a vários idiomas</a>.</p>
@@ -481,7 +481,7 @@ seguir, consulte <a href="{@docRoot}preview/features/multilingual-support.html">
<ul>
<li>
<strong>Verifique se o dispositivo contém um emoticon antes de inseri-lo.</strong>
- Para conferir quais emoticons estão presentes
+ Para conferir quais emoticons estão presentes
na fonte do sistema, use o método {@link android.graphics.Paint#hasGlyph(String)}.
</li>
<li>
@@ -539,19 +539,19 @@ Pacote de extensão Android</a></a> (AEP), exceto <code>EXT_texture_sRGB_decode<
</ul>
<p>A API da estrutura do OpenGL ES 3.2 no Android N é fornecida pela classe
-<code>GLES32</code>. Ao usar o OpenGL ES 3.2, não deixe de declarar o
-requisito no arquivo manifesto usando o rótulo <code>&lt;uses-feature&gt;</code> e o
+<code>GLES32</code>. Ao usar o OpenGL ES 3.2, não deixe de declarar o
+requisito no arquivo manifesto usando o rótulo <code>&lt;uses-feature&gt;</code> e o
atributo <code>android:glEsVersion</code>. </p>
-<p>Para obter mais informações sobre como usar o OpenGL ES, incluindo como verificar a versão do
+<p>Para obter mais informações sobre como usar o OpenGL ES, incluindo como verificar a versão do
OpenGL ES compatível do dispositivo no tempo de execução, consulte o <a href="{@docRoot}guide/topics/graphics/opengl.html">guia da OpenGL ES API</a>.</p>
<h2 id="android_tv_recording">Gravação do Android TV</h2>
-<p>O Android N adiciona a capacidade de gravar e reproduzir conteúdo de serviços de entrada
-do Android TV por meio de novas APIs de gravação. Criados usando as APIs atuais de time-shifting,
-os serviços de entrada de TV podem controlar quais dados de canal são gravados e como
+<p>O Android N adiciona a capacidade de gravar e reproduzir conteúdo de serviços de entrada
+do Android TV por meio de novas APIs de gravação. Criados usando as APIs atuais de time-shifting,
+os serviços de entrada de TV podem controlar quais dados de canal são gravados e como
as sessões gravadas são salvas, bem como gerenciar a interação do usuário com o conteúdo gravado. </p>
<p>Para obter mais informações, consulte <a href="{@docRoot}preview/features/tv-recording-api.html">Android TV Recording APIs</a>.</p>
@@ -589,8 +589,8 @@ para desbloquear o perfil) usando<code>setPasswordQuality()</code>,
</p>
<h3 id="turn_off_work">Desativar o trabalho </h3>
-<p>Os usuários podem alternar o modo de trabalho em dispositivos com um perfil de trabalho. Quando o modo de trabalho está
-desativado, o usuário gerenciado é encerrado temporariamente, o que desativa
+<p>Os usuários podem alternar o modo de trabalho em dispositivos com um perfil de trabalho. Quando o modo de trabalho está
+desativado, o usuário gerenciado é encerrado temporariamente, o que desativa
os aplicativos, a sincronização em segundo plano e as notificações do perfil de trabalho. Isso inclui o aplicativo do
dono do perfil. Quando o modo de trabalho está desativado, o sistema exibe um ícone de status persistente
para lembrar ao usuário que não é possível iniciar aplicativos de trabalho. A tela de início
@@ -598,7 +598,7 @@ indica que os aplicativos e widgets de trabalho não podem ser acessados. </p>
<h3 id="always_on_vpn">Always on VPN </h3>
-<p>Os donos de dispositivo e perfil podem garantir que os aplicativos de trabalho se conectem sempre
+<p>Os donos de dispositivo e perfil podem garantir que os aplicativos de trabalho se conectem sempre
por meio de uma VPN especificada. O sistema inicia automaticamente a VPN após a
inicialização do dispositivo.</p>
@@ -608,7 +608,7 @@ por meio de uma VPN especificada. O sistema inicia automaticamente a VPN após a
<code>getAlwaysOnVpnPackage()</code>.
</p>
-<p>Como os serviços de VPN podem ser vinculados diretamente pelo sistema sem interação com
+<p>Como os serviços de VPN podem ser vinculados diretamente pelo sistema sem interação com
aplicativos, os clientes de VPN precisam processar novos pontos de entrada para o Always on VPN. Da
mesma forma que antes, os serviços são indicados ao sistema por um filtro de intenção
correspondente à ação <code>android.net.VpnService</code>. </p>
@@ -631,17 +631,17 @@ aplicativos, os clientes de VPN precisam processar novos pontos de entrada para
<h2 id="accessibility_enhancements">Aprimoramentos na acessibilidade</h2>
-<p>O Android N agora oferece Configurações de visão diretamente na tela de boas-vindas na instalação
+<p>O Android N agora oferece Configurações de visão diretamente na tela de boas-vindas na instalação
de novos dispositivos. Isso permite que os usuários descubram e configurem recursos de acessibilidade
em seus dispositivos de forma muito mais fácil, incluindo gesto de ampliação, tamanho
da fonte, tamanho da tela e TalkBack. </p>
-<p>Com o posicionamento mais proeminente desses recursos de acessibilidade, os usuários
+<p>Com o posicionamento mais proeminente desses recursos de acessibilidade, os usuários
ficarão mais propensos a experimentar o aplicativo com os recursos ativados. Não deixe de testar antecipadamente os aplicativos
com essas configurações ativadas. Você pode ativá-las em Settings &gt;
Accessibility.</p>
-<p>Além disso, os serviços de acessibilidade no Android N podem ajudar usuários com deficiências
+<p>Além disso, os serviços de acessibilidade no Android N podem ajudar usuários com deficiências
motoras a tocar na tela. A nova API permite criar serviços com recursos
como acompanhamento de face, acompanhamento de olho e varredura de pontos, entre outros, para atender
às necessidades desses usuários.</p>
@@ -652,22 +652,22 @@ como acompanhamento de face, acompanhamento de olho e varredura de pontos, entre
<h2 id="direct_boot">Inicialização direta</h2>
-<p>A inicialização direta reduz os tempos de inicialização dos dispositivos e permite que aplicativos
-registrados tenham funcionalidade limitada, mesmo após uma reinicialização inesperada.
-Por exemplo, se um dispositivo criptografado reinicializar durante o sono do usuário,
-alarmes registrados, mensagens e chamadas recebidas podem agora continuar notificando
+<p>A inicialização direta reduz os tempos de inicialização dos dispositivos e permite que aplicativos
+registrados tenham funcionalidade limitada, mesmo após uma reinicialização inesperada.
+Por exemplo, se um dispositivo criptografado reinicializar durante o sono do usuário,
+alarmes registrados, mensagens e chamadas recebidas podem agora continuar notificando
o usuário normalmente. Isso também significa que serviços de acessibilidade podem ser
disponibilizados imediatamente após um reinício.</p>
-<p>A inicialização direita aproveita a criptografia baseada em arquivo do Android N
-para ativar políticas de criptografia detalhadas para dados de sistema e aplicativos.
-O sistema usa um armazenamento criptografado pelo dispositivo para determinados dados de sistema e dados
+<p>A inicialização direita aproveita a criptografia baseada em arquivo do Android N
+para ativar políticas de criptografia detalhadas para dados de sistema e aplicativos.
+O sistema usa um armazenamento criptografado pelo dispositivo para determinados dados de sistema e dados
de aplicativos registrados explicitamente. Por padrão, um armazenamento criptografado por credencial é usado para todos
os outros dados de sistema, dados de usuário, aplicativos e dados de aplicativos. </p>
-<p>Na inicialização, o sistema inicia em um modo restrito que permite
-acessar apenas dados criptografados pelo dispositivo, sem acesso geral a aplicativos ou dados.
-Se você deseja executar componentes nesse modo, pode registrá-los
+<p>Na inicialização, o sistema inicia em um modo restrito que permite
+acessar apenas dados criptografados pelo dispositivo, sem acesso geral a aplicativos ou dados.
+Se você deseja executar componentes nesse modo, pode registrá-los
definindo um sinalizador no manifesto. Após a reinicialização, o sistema ativa
componentes registrados transmitindo a intenção <code>LOCKED_BOOT_COMPLETED</code>
. O sistema garante que dados de aplicativos registrados criptografados pelos dispositivos sejam disponibilizados
@@ -680,26 +680,26 @@ Para obter mais informações, consulte <a href="{@docRoot}preview/features/dire
<h2 id="key_attestation">Confirmação de chaves</h2>
-<p>Os armazenamentos de chaves protegidos por hardware oferecem um método muito mais seguro para criar, armazenar
+<p>Os armazenamentos de chaves protegidos por hardware oferecem um método muito mais seguro para criar, armazenar
e usar chaves de criptografia em dispositivos Android. Eles protegem chaves contra o kernel do Linux,
possíveis vulnerabilidades do Android e extração
em dispositivos com acesso root.</p>
-<p>Para permitir o uso de armazenamento de chaves protegido por hardware com maior facilidade e segurança,
+<p>Para permitir o uso de armazenamento de chaves protegido por hardware com maior facilidade e segurança,
o Android N introduziu a confirmação de chaves. Aplicativos em dispositivos móveis e fora deles podem usar a confirmação de chaves
para determinar com precisão se um par de chaves RSA ou EC
está protegido por hardware, quais as propriedades do par de chaves e quais as restrições
aplicadas ao uso e à validação. </p>
-<p>Aplicativos e serviços externos aos dispositivos móveis podem solicitar informações sobre um par de chaves
-por meio de um certificado de confirmação X.509, que deve estar assinado por uma
-chave de confirmação válida. A chave de confirmação é uma chave de assinatura ECDSA,
-injetada no armazenamento de chaves protegido por hardware do dispositivo na fábrica.
-Portanto, um certificado de confirmação assinado com uma chave de confirmação
-válida confirma a existência de um armazenamento de chaves protegido por hardware, além de
+<p>Aplicativos e serviços externos aos dispositivos móveis podem solicitar informações sobre um par de chaves
+por meio de um certificado de confirmação X.509, que deve estar assinado por uma
+chave de confirmação válida. A chave de confirmação é uma chave de assinatura ECDSA,
+injetada no armazenamento de chaves protegido por hardware do dispositivo na fábrica.
+Portanto, um certificado de confirmação assinado com uma chave de confirmação
+válida confirma a existência de um armazenamento de chaves protegido por hardware, além de
detalhes dos pares de chaves desse armazenamento de chaves.</p>
-<p>Para garantir que o dispositivo esteja usando uma imagem Android oficial de fábrica
+<p>Para garantir que o dispositivo esteja usando uma imagem Android oficial de fábrica
e segura, a confirmação de chaves exige que o <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a>
do dispositivo forneça as seguintes informações ao <a class="external-link" href="https://source.android.com/security/trusty/index.html">Ambiente
de execução confiável (TEE)</a>:</p>
@@ -709,7 +709,7 @@ e segura, a confirmação de chaves exige que o <a class="external-link" href="h
<li>A chave pública <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">Verified Boot</a> e seu status de bloqueio</li>
</ul>
-<p>Para obter mais informações sobre o recurso de armazenamento de chaves protegido por hardware,
+<p>Para obter mais informações sobre o recurso de armazenamento de chaves protegido por hardware,
consulte o guia <a href="https://source.android.com/security/keystore/" class="external-link">Armazenamento de chaves protegido por hardware</a>.</p>
<p>Além da confirmação de chaves, o Android N também introduziu
@@ -717,9 +717,9 @@ consulte o guia <a href="https://source.android.com/security/keystore/" class="e
<h2 id="network_security_config">Configuração de segurança de rede</h2>
-<p>No Android N, os aplicativos podem personalizar o comportamento de conexões seguras (HTTPS, TLS)
-de forma segura, sem modificação no código, usando a
-<em>Configuração de segurança de rede</em> declarativa em vez das
+<p>No Android N, os aplicativos podem personalizar o comportamento de conexões seguras (HTTPS, TLS)
+de forma segura, sem modificação no código, usando a
+<em>Configuração de segurança de rede</em> declarativa em vez das
APIs programáticas propensas a erro (por exemplo, X509TrustManager).</p>
<p>Recursos compatíveis:</p>
@@ -728,25 +728,25 @@ APIs programáticas propensas a erro (por exemplo, X509TrustManager).</p>
autoridades de certificado (CA) são confiáveis para as conexões seguras. Por
exemplo, confiar em certificados autoassinados privados ou um restrito conjunto de CAs públicas.
</li>
-<li><b>Substituições apenas em depuração.</b> Permite que um desenvolvedor de aplicativos depure
-conexões seguras do aplicativo com segurança, sem adicionar riscos à base
+<li><b>Substituições apenas em depuração.</b> Permite que um desenvolvedor de aplicativos depure
+conexões seguras do aplicativo com segurança, sem adicionar riscos à base
instalada.
</li>
-<li><b>Cancelamento do uso de tráfego de texto simples.</b> Permite que um aplicativo seja protegido contra
+<li><b>Cancelamento do uso de tráfego de texto simples.</b> Permite que um aplicativo seja protegido contra
o uso acidental de tráfego de texto simples.</li>
<li><b>Fixação de certificados.</b> Um recurso avançado que permite que os aplicativos
limitem quais chaves de servidor são confiáveis para conexões seguras.</li>
</ul>
-<p>Para obter mais configurações, consulte <a href="{@docRoot}preview/features/security-config.html">Configuração de segurança
+<p>Para obter mais configurações, consulte <a href="{@docRoot}preview/features/security-config.html">Configuração de segurança
de rede</a>.</p>
<h2 id="default_trusted_ca">Autoridade de certificado confiável padrão</h2>
-<p>Por padrão, os aplicativos direcionados ao Android N confiam apenas em certificados fornecidos pelo sistema
-e não confiam mais em Autoridades de certificado (CA) adicionadas pelo usuário. Os aplicativos direcionados ao Android
-N que querem confiar em CAs adicionadas pelo usuário devem usar a
-<a href="{@docRoot}preview/features/security-config.html">Configuração de segurança de rede</a> para
+<p>Por padrão, os aplicativos direcionados ao Android N confiam apenas em certificados fornecidos pelo sistema
+e não confiam mais em Autoridades de certificado (CA) adicionadas pelo usuário. Os aplicativos direcionados ao Android
+N que querem confiar em CAs adicionadas pelo usuário devem usar a
+<a href="{@docRoot}preview/features/security-config.html">Configuração de segurança de rede</a> para
especificar como confiar nas CAs de usuário.</p>
<h2 id="apk_signature_v2">Esquema de assinatura de APK v2</h2>
@@ -804,18 +804,18 @@ o arquivo de programação para assinar aplicativos</a> usando o plug-in do Andr
<p>No Android N, os aplicativos podem usar novas APIs para solicitar acesso a determinados diretórios de <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">armazenamento
externo</a>, incluindo diretórios em mídias removíveis, tais como cartões
SD. As novas APIs simplificam consideravelmente como o aplicativo acessa os
-diretórios de armazenamento externo padrão, tais como o diretório<code>Pictures</code>. Os aplicativos,
-como aplicativos de fotografia, podem usar essas APIs em vez de
-<code>READ_EXTERNAL_STORAGE</code>, que concede acesso a todos os diretórios de
-armazenamento, ou da Estrutura de acesso ao armazenamento, que faz o usuário navegar até
+diretórios de armazenamento externo padrão, tais como o diretório<code>Pictures</code>. Os aplicativos,
+como aplicativos de fotografia, podem usar essas APIs em vez de
+<code>READ_EXTERNAL_STORAGE</code>, que concede acesso a todos os diretórios de
+armazenamento, ou da Estrutura de acesso ao armazenamento, que faz o usuário navegar até
o diretório.</p>
-<p>Além disso, as novas APIs simplificam as etapas executadas pelo usuário para conceder ao aplicativo
+<p>Além disso, as novas APIs simplificam as etapas executadas pelo usuário para conceder ao aplicativo
acesso ao armazenamento externo. Quando você usa as novas APIs, o sistema usa uma IU de permissões simples
que detalha claramente a qual diretório o aplicativo
está solicitando acesso.</p>
-<p>Para obter mais informações, consulte a documentação para desenvolvedores
+<p>Para obter mais informações, consulte a documentação para desenvolvedores
<a href="{@docRoot}preview/features/scoped-folder-access.html">Acessos
a diretório com escopo</a>.</p>
@@ -846,7 +846,7 @@ limite de temperatura. Esta flutuação representa um desafio para desenvolvedor
</p>
<p>
-Para tratar estas limitações, o Android N inclui compatibilidade opcional para
+Para tratar estas limitações, o Android N inclui compatibilidade opcional para
<em>modo de desempenho sustentado</em>, permitindo que OEMs ofereçam dicas sobre
capacidades de desempenho em dispositivo para aplicativos de longa duração. Os desenvolvedores de aplicativos
podem usar essas dicas para ajustar os aplicativos para um nível de desempenho do dispositivo previsível
@@ -869,8 +869,8 @@ O Android N adiciona compatibilidade de plataformas e otimizações para um novo
desenvolvedores a capacidade de projetar experiências de RV móveis de alta qualidade para os usuários. Há diversas melhorias de desempenho
, incluindo acesso a um núcleo exclusivo da CPU para aplicativos de RV.
Dentro dos aplicativos, é possível tirar vantagem do rastreamento inteligente da cabeça
-e de notificações estéreo que funcionam para RV. Mais importante, o Android N oferece
-gráficos de latência muito baixa. Para obter informações completas sobre a criação de aplicativos de RV para Android N,
+e de notificações estéreo que funcionam para RV. Mais importante, o Android N oferece
+gráficos de latência muito baixa. Para obter informações completas sobre a criação de aplicativos de RV para Android N,
consulte o <a href="https://developers.google.com/vr/android/">Google VR SDK para Android</a>.
</p>
@@ -883,7 +883,7 @@ consulte o <a href="https://developers.google.com/vr/android/">Google VR SDK par
</p>
<p>
- Ao listar impressoras individuais, agora um serviço de impressão pode definir
+ Ao listar impressoras individuais, agora um serviço de impressão pode definir
ícones por impressora de duas maneiras:
</p>
diff --git a/docs/html-intl/intl/pt-br/preview/behavior-changes.jd b/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
index 1e56a9951986..b2f07d973ff9 100644
--- a/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
@@ -44,7 +44,7 @@ Visão geral da API do Android N</a></li>
<p>
- Junto com novos recursos e funcionalidades, o Android N
+ Junto com novos recursos e funcionalidades, o Android N
inclui uma variedade de mudanças de comportamento do sistema e da API. Este documento
destaca algumas das principais mudanças que você deve entender e considerar
nos aplicativos.
@@ -88,7 +88,7 @@ recursos do sistema, bem como a forma como ele interage com outros aplicativos p
período, o dispositivo entrará no modo de soneca e aplicará o primeiro subconjunto de restrições: o
acesso do aplicativo à rede será desativado e os trabalhos e sincronizações serão adiados. Se o dispositivo permanecer
estacionário por um determinado período após entrar no modo soneca, o sistema aplicará
-as demais restrições de soneca a {@link android.os.PowerManager.WakeLock}, aos alarmes
+as demais restrições de soneca a {@link android.os.PowerManager.WakeLock}, aos alarmes
{@link android.app.AlarmManager} e às verificações de GPS e Wi-Fi. Independentemente
de as restrições de soneca serem aplicadas parcial ou totalmente, o sistema despertará o
dispositivo para breves janelas de manutenção, quando os aplicativos
@@ -151,7 +151,7 @@ do dispositivo e a experiência do usuário.
<ul>
<li>Os aplicativos direcionados ao Android N não receberão transmissões {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION}, mesmo
- se tiverem entradas no manifesto solicitando notificação desses eventos. Os aplicativos em execução
+ se tiverem entradas no manifesto solicitando notificação desses eventos. Os aplicativos em execução
ainda poderão escutar {@code CONNECTIVITY_CHANGE} no encadeamento principal
se solicitarem a notificação com {@link android.content.BroadcastReceiver}.
</li>
@@ -175,7 +175,7 @@ android.app.job.JobScheduler} para reagir a mudanças em provedores de conteúdo
<p>
Para obter mais informações sobre otimizações em segundo plano no N e como adaptar seu aplicativo,
- consulte <a href="{@docRoot}preview/features/background-optimization.html">Otimizações
+ consulte <a href="{@docRoot}preview/features/background-optimization.html">Otimizações
em segundo plano</a>.
</p>
@@ -245,14 +245,14 @@ ContentResolver.openFileDescriptor()}.
<p>
Para aplicativos direcionados ao Android N, a estrutura do Android cumpre com
-a política de API {@link android.os.StrictMode} que proíbe a exposição de URIs {@code file://}
+a política de API {@link android.os.StrictMode} que proíbe a exposição de URIs {@code file://}
fora do aplicativo. Se uma intenção que contenha o URI de um arquivo deixar o aplicativo, ele falhará
com uma exceção {@code FileUriExposedException}.
</p>
<p>
Para compartilhar arquivos entre aplicativos, você deve enviar um URI {@code content://}
-e conceder uma permissão de acesso temporária ao URI. A forma mais fácil de conceder essa permissão é
+e conceder uma permissão de acesso temporária ao URI. A forma mais fácil de conceder essa permissão é
usar a classe {@link android.support.v4.content.FileProvider}. Para obter mais informações
sobre permissões e compartilhamento de arquivos,
consulte <a href="{@docRoot}training/secure-file-sharing/index.html">Compartilhamento de Arquivos</a>.
@@ -334,7 +334,7 @@ sw320dp</a>, que é a largura do Nexus 4, um telefone comum de tamanho médio.
rede. Verifique a ocorrência de alterações de configuração quando o aplicativo sair do estado pausado e retomar
a execução.
<p class="note">
- <strong>Observação:</strong> se você armazenar em cache dados dependentes de configuração,
+ <strong>Observação:</strong> se você armazenar em cache dados dependentes de configuração,
recomendamos incluir metadados relevantes, como o tamanho de tela
adequado ou a densidade de pixels desses dados. Salvar esses dados permitirá que você
decida se será necessário atualizar os dados armazenados em cache após uma mudança
@@ -373,7 +373,7 @@ configurações ativadas. As configurações podem ser encontradas em <strong>Se
<p>
Para alertar sobre o uso de APIs não públicas, os aplicativos executados em um dispositivo
Android N geram um erro na saída logcat quando um aplicativo chama uma API não pública.
- Esse erro também é exibido na tela do dispositivo como mensagem para que o usuário
+ Esse erro também é exibido na tela do dispositivo como mensagem para que o usuário
fique ciente da situação. Revise o código do seu aplicativo para
remover o uso de APIs de plataformas não públicas e faça testes completos do aplicativo usando
um dispositivo de visualização ou um emulador.
@@ -384,7 +384,7 @@ fique ciente da situação. Revise o código do seu aplicativo para
para obter soluções usuais de substituição de APIs privadas comuns por APIs públicas equivalentes.
Também é possível que você esteja vinculando bibliotecas de plataforma sem perceber,
particularmente se o aplicativo usar uma biblioteca que faz parte da plataforma (como
- <code>libpng</code>), mas não faz parte do NDK. Nesse caso, verifique se
+ <code>libpng</code>), mas não faz parte do NDK. Nesse caso, verifique se
o APK contém todos os arquivos .so que você pretende vincular.
</p>
@@ -398,9 +398,9 @@ o APK contém todos os arquivos .so que você pretende vincular.
Os aplicativos não devem depender de nem usar bibliotecas nativas não incluídas
no NDK, pois elas podem ser alteradas ou removidas entre uma versão do Android
e outra. A mudança de OpenSSL para BoringSSL é um exemplo dessas alterações.
- Além disso, dispositivos diferentes podem oferecer níveis distintos de compatibilidade, pois
- não há requisitos de compatibilidade para bibliotecas de plataforma não incluídas
-no NDK. Se você precisar acessar bibliotecas que não são do NDK em dispositivos mais antigos, torne o carregamento
+ Além disso, dispositivos diferentes podem oferecer níveis distintos de compatibilidade, pois
+ não há requisitos de compatibilidade para bibliotecas de plataforma não incluídas
+no NDK. Se você precisar acessar bibliotecas que não são do NDK em dispositivos mais antigos, torne o carregamento
dependente do nível da Android API.
</p>
@@ -528,28 +528,28 @@ Se o seu aplicativo se baseou neste comportamento, adicione uma política de ret
<ul>
<li>Quando um aplicativo for executado no Android N, mas for direcionado a um nível da API menor
- e o usuário alterar o tamanho da tela, o processo do aplicativo será eliminado. O aplicativo
-deverá ser capaz de processar corretamente esse cenário. Caso contrário, ele falhará
+ e o usuário alterar o tamanho da tela, o processo do aplicativo será eliminado. O aplicativo
+deverá ser capaz de processar corretamente esse cenário. Caso contrário, ele falhará
quando o usuário restaurá-lo usando Recents.
<p>
-Você deve testar o aplicativo para verificar
-se esse comportamento não ocorre.
-Isso pode ser feito causando uma falha idêntica
+Você deve testar o aplicativo para verificar
+se esse comportamento não ocorre.
+Isso pode ser feito causando uma falha idêntica
eliminando o aplicativo manualmente usando o DDMS.
</p>
<p>
-Aplicativos direcionados ao Android N e versões posteriores não serão eliminados automaticamente em mudanças de densidade.
+Aplicativos direcionados ao Android N e versões posteriores não serão eliminados automaticamente em mudanças de densidade.
No entanto, podem continuar a responder a alterações de configurações de forma não ideal.
</p>
</li>
<li>
-Os aplicativos no Android N devem ser capazes de processar corretamente mudanças de configuração
-e não devem falhar em inicializações subsequentes. Você pode verificar o comportamento do aplicativo
+Os aplicativos no Android N devem ser capazes de processar corretamente mudanças de configuração
+e não devem falhar em inicializações subsequentes. Você pode verificar o comportamento do aplicativo
alterando o tamanho da fonte (<strong>Setting</strong> &gt;
-<strong>Display</strong> &gt; <strong>Font size</strong>) e depois restaurando
+<strong>Display</strong> &gt; <strong>Font size</strong>) e depois restaurando
o aplicativo em Recents.
</li>
@@ -557,12 +557,12 @@ o aplicativo em Recents.
Devido a um erro em versões anteriores do Android, o sistema não sinaliza gravações
em um soquete TCP no encadeamento principal como violações do modo estrito. O Android N corrigiu esse erro.
Agora, os aplicativos que exibirem este comportamento gerarão uma{@code android.os.NetworkOnMainThreadException}.
-Geralmente, a realização de operações de rede no encadeamento principal é uma má ideia porque essas operações
+Geralmente, a realização de operações de rede no encadeamento principal é uma má ideia porque essas operações
geralmente têm alta latência no final, causando ANRs e problemas.
</li>
<li>
-Agora, por padrão, a família de métodos {@code Debug.startMethodTracing()} armazena
+Agora, por padrão, a família de métodos {@code Debug.startMethodTracing()} armazena
os resultados no diretório específico do pacote no armazenamento compartilhado,
e não no nível mais alto
do cartão SD. Isso significa que os aplicativos não precisam mais solicitar a permissão {@code WRITE_EXTERNAL_STORAGE} para usar estas APIs.
@@ -583,9 +583,9 @@ que faz com que {@code ActivityThread.StopInfo} gere uma
Se um aplicativo publica tarefas {@link java.lang.Runnable} para uma {@link android.view.View} e
esta {@link android.view.View}
não está anexada a uma janela, o sistema
-coloca a tarefa {@link java.lang.Runnable} em fila com a {@link android.view.View}.
-A tarefa {@link java.lang.Runnable} não é executada até que a
-{@link android.view.View} esteja anexada
+coloca a tarefa {@link java.lang.Runnable} em fila com a {@link android.view.View}.
+A tarefa {@link java.lang.Runnable} não é executada até que a
+{@link android.view.View} esteja anexada
a uma janela. Este comportamento corrige os seguintes erros:
<ul>
<li>Se um aplicativo publicasse em uma {@link android.view.View} de um encadeamento que não fosse o encadeamento de IU da janela pretendida
diff --git a/docs/html-intl/intl/pt-br/preview/download-ota.jd b/docs/html-intl/intl/pt-br/preview/download-ota.jd
index 693aa9288c97..3f817ed545e3 100644
--- a/docs/html-intl/intl/pt-br/preview/download-ota.jd
+++ b/docs/html-intl/intl/pt-br/preview/download-ota.jd
@@ -165,7 +165,7 @@ Este é o contrato de licença do Android SDK Preview (o “Contrato de Licença
<p>
Esta página fornece links para imagens OTA de dispositivo e descreve
como aplicar manualmente uma atualização OTA em um dispositivo. Esse procedimento pode ser útil
- para recuperar dispositivos que receberam atualizações OTA usando o programa beta
+ para recuperar dispositivos que receberam atualizações OTA usando o programa beta
do Android e não estão ligando após a instalação.
</p>
@@ -179,7 +179,7 @@ do Android e não estão ligando após a instalação.
<li>Baixe uma imagem OTA de dispositivo na tabela abaixo.</li>
<li>Reinicialize o dispositivo para ficar em modo Recovery. Para obter mais informações sobre como colocar
dispositivos Nexus nesse modo, consulte
- <a href="https://support.google.com/nexus/answer/4596836">Redefinição do
+ <a href="https://support.google.com/nexus/answer/4596836">Redefinição do
dispositivo Nexus para voltar à configuração de fábrica</a>.
</li>
<li>No dispositivo, selecione <strong>ADB sideload</strong>.</li>
@@ -202,65 +202,73 @@ dispositivo Nexus para voltar à configuração de fábrica</a>.
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
- MD5: 15fe2eba9b01737374196bdf0a792fe9<br>
- SHA-1: 5014b2bba77f9e1a680ac3f90729621c85a14283
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-ota-npd90g-0a874807.zip</a><br>
+ MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+ SHA-1: a9920bcc8d475ce322cada097d085448512635e2
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
- MD5: e8b12f7721c53af9a450f7058928a5fc<br>
- SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-ota-npd90g-06f5d23d.zip</a><br>
+ MD5: 513570bb3a91878c2d1a5807d2340420<br>
+ SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
- MD5: 3fac09fef759dde26e57cb80b20b6477<br>
- SHA-1: 27d6caa786577d8a38b2da5bf94b33b4524a1a1c
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-ota-npd90g-5baa69c2.zip</a><br>
+ MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+ SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
- MD5: 58312c4a5971818ef5c77a3f446003da<br>
- SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-ota-npd90g-c04785e1.zip</a><br>
+ MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+ SHA-1: 31633180635b831e59271a7d904439f278586f49
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
- MD5: 92b7d1fa252f7394e70f957c72d4aac8<br>
- SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+ MD5: 0493fa79763d67bcdde8007299e1888d<br>
+ SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
- MD5: 1461622ad53ea842b2722fa7b49b8172<br>
- SHA-1: 409c061668ab270774877d7f3eae44fa48d2b931
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-ota-npd90g-3a0643ae.zip</a><br>
+ MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+ SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
- MD5: c60117f3640cc6db12386fd632289c7d<br>
- SHA-1: 87349c767c69efb4172c90ce1d88cf578c3d28b3
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-ota-npd90g-ec931914.zip</a><br>
+ MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+ SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
- MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
- SHA-1: 6f33742290eb46f2561891f38ca2e754b4e50c6a
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+ MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+ SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
</td>
</tr>
diff --git a/docs/html-intl/intl/pt-br/preview/download.jd b/docs/html-intl/intl/pt-br/preview/download.jd
index b0f23e5aefed..4477142d0708 100644
--- a/docs/html-intl/intl/pt-br/preview/download.jd
+++ b/docs/html-intl/intl/pt-br/preview/download.jd
@@ -286,7 +286,7 @@ Este é o contrato de licença do Android SDK Preview (o “Contrato de Licença
</p>
<p>
- Se decidir que deseja obter atualizações por OTA após atualizar um dispositivo manualmente,
+ Se decidir que deseja obter atualizações por OTA após atualizar um dispositivo manualmente,
basta inscrevê-lo no <a href="https://g.co/androidbeta">programa beta
do Android</a>. É possível inscrever dispositivos a qualquer momento para receber a próxima atualização do Preview
por OTA.
@@ -300,72 +300,73 @@ basta inscrevê-lo no <a href="https://g.co/androidbeta">programa beta
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
- MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
- SHA-1: 5ba4053577007d15c96472206e3a79bc80ab194c
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+ MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+ SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
- MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
- SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+ MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+ SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
- MD5: e93de7949433339856124c3729c15ebb<br>
- SHA-1: 81c341d57ef2cd139569b055d5d59e9e592a7abd
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+ MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+ SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
- MD5: 565be87ebb2d5937e2abe1a42645864b<br>
- SHA-1: 2b50e19dae2667b27f911e3c61ed64860caf43e1
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-npd90g-factory-41b55406.tgz</a><br>
+ MD5: cefa78950141da2a7c75e887717e3c8f<br>
+ SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
- MD5: a8464e15c6683fe2afa378a63e205fda<br>
- SHA-1: 2e89ebe67a46b2f3beb050746c13341cd11fa678
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-npd90g-factory-610492be.tgz</a><br>
+ MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+ SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
- MD5: c0dbb7db671f61b2785da5001cedefcb<br>
- SHA-1: 1de74874f8d83e14d642f13b5a2130fc2aa55873
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-npd90g-factory-0fe95694.tgz</a><br>
+ MD5: f4cb48f919e4c29c631de21416c612e2<br>
+ SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
- MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
- SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-npd90g-factory-f4da981c.tgz</a><br>
+ MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+ SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
- MD5: 7d34a9774fdd6e025d485ce6cfc23c4c<br>
- SHA-1: 5ab1212bc9417269d391aacf1e672fff24b4ecc5
- </td>
- </tr>
-
- <tr id="xperia">
- <td>Sony Xperia Z3 <br> (D6603 e D6653)</td>
- <td>Download: <a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
- Para obter mais informações, consulte <a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Experimente o Android N Developer Preview para Xperia Z3</a>.
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+ MD5: 0ed565c509594072822d71c65b48ec8e<br>
+ SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
</td>
</tr>
@@ -390,7 +391,7 @@ basta inscrevê-lo no <a href="https://g.co/androidbeta">programa beta
</ul>
</li>
<li><strong>Cancele a inscrição do dispositivo no programa beta do Android</strong>. Se o
- dispositivo estiver inscrito no <a href="https://g.co/androidbeta">programa beta
+ dispositivo estiver inscrito no <a href="https://g.co/androidbeta">programa beta
do Android</a>, independentemente de qual ele seja, você poderá simplesmente cancelar a inscrição.
<p>
O dispositivo receberá uma atualização por OTA para a versão
@@ -465,7 +466,7 @@ para o Android N Preview.)
<p>Agora, é possível iniciar o emulador do Android com o AVD Android N Preview.</p>
<p>
-Para ter a melhor experiência possível com o emulador do Android, instale o
+Para ter a melhor experiência possível com o emulador do Android, instale o
Android Studio 2.1 ou mais recente, que oferece suporte ao <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0</a>,
cujo desempenho é muito superior ao do emulador no
Android Studio 1.5.</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/afw.jd b/docs/html-intl/intl/pt-br/preview/features/afw.jd
index c16cff9f97e0..977d2a0f968a 100644
--- a/docs/html-intl/intl/pt-br/preview/features/afw.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/afw.jd
@@ -101,7 +101,7 @@ ao dispositivo.
Donos de perfis podem exigir que os usuários especifiquem um desafio de segurança para aplicativos
em execução no perfil de trabalho. O sistema mostra o desafio de segurança quando o
usuário tenta abrir qualquer aplicativo de trabalho. Se o usuário preencher corretamente o
- desafio de segurança, o sistema desbloqueará e, se necessário, descriptografará o
+ desafio de segurança, o sistema desbloqueará e, se necessário, descriptografará o
perfil de trabalho.
</p>
@@ -126,14 +126,14 @@ android.app.admin.DevicePolicyManager#setPasswordMinimumLength
setPasswordMinimumLength()}. O dono de perfil também pode definir o bloqueio de dispositivo
usando a instância de {@link android.app.admin.DevicePolicyManager} retornada
pelo novo método <code>DevicePolicyManager.getParentProfileInstance()</code>
-. Além disso, donos de perfil podem personalizar a tela de credenciais do
+. Além disso, donos de perfil podem personalizar a tela de credenciais do
desafio de trabalho usando os novos métodos <code>setOrganizationColor()</code> e
<code>setOrganizationName()</code> da classe {@link android.app.admin.DevicePolicyManager}
.
</p>
<p>
- Para obter detalhes sobre os novos métodos e constantes, consulte a
+ Para obter detalhes sobre os novos métodos e constantes, consulte a
página de referência <code>DevicePolicyManager</code> na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referência do N Preview SDK</a>.
</p>
@@ -149,7 +149,7 @@ página de referência <code>DevicePolicyManager</code> na <a href="{@docRoot}pr
Enquanto está suspenso, um pacote não consegue iniciar atividades, as notificações
são suspensas e a entrada do aplicativo na <a href="{@docRoot}guide/components/recents.html">tela de visão geral</a> é ocultada.
Os pacotes suspensos não são exibidos na <a href="{@docRoot}guide/components/recents.html">tela de visão geral</a> e não
- podem mostrar caixas de diálogo (incluindo avisos e snackbars). Também não conseguem reproduzir
+ podem mostrar caixas de diálogo (incluindo avisos e snackbars). Também não conseguem reproduzir
áudio nem vibrar o dispositivo.
</p>
@@ -175,13 +175,13 @@ de trabalho. A tela de início indica que os aplicativos e widgets de trabalho n
<h2 id="always-on-vpn">Always-On VPN</h2>
<p>
- Os donos de dispositivo e perfil podem exigir que os aplicativos de trabalho se conectem sempre
+ Os donos de dispositivo e perfil podem exigir que os aplicativos de trabalho se conectem sempre
por meio de uma VPN especificada. Se os donos definirem este requisito, o
dispositivo iniciará a VPN automaticamente na inicialização.
</p>
<p>
- Os donos podem exigir o uso de uma VPN chamando o novo
+ Os donos podem exigir o uso de uma VPN chamando o novo
método <code>DevicePolicyManager.setAlwaysOnVpnPackage()</code>. Para descobrir
se o dono definiu um requisito de VPN, chame o novo
método <code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code>.
@@ -319,7 +319,7 @@ o registro no dispositivo usando <code>DevicePolicyManager.setSecurityLoggingEna
</p>
<p>
- O Android N inclui as seguintes adições de API para dar suporte a este recurso. Para
+ O Android N inclui as seguintes adições de API para dar suporte a este recurso. Para
obter detalhes, consulte a <a href="{@docRoot}preview/setup-sdk.html#docs-dl"> Referência do N
Preview SDK</a>.
</p>
@@ -353,7 +353,7 @@ obter detalhes, consulte a <a href="{@docRoot}preview/setup-sdk.html#docs-dl"> R
<h2 id="remove-cert">Remoção de certificado do cliente</h2>
<p>
- Agora, donos de perfis e dispositivos podem remover certificados de cliente que foram
+ Agora, donos de perfis e dispositivos podem remover certificados de cliente que foram
instalados por meio do {@link android.app.admin.DevicePolicyManager#installKeyPair
installKeyPair()} chamando o novo método
<code>DevicePolicyManager.removeKeyPair()</code>.
@@ -404,7 +404,7 @@ na instalação</h2>
O dono do dispositivo ou perfil pode habilitar outro aplicativo para gerenciar restrições de aplicativo
por meio do novo
método <code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code>
-. O aplicativo indicado pode verificar se a permissão foi
+. O aplicativo indicado pode verificar se a permissão foi
concedida chamando
<code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code>.
</p>
@@ -421,7 +421,7 @@ getApplicationRestrictions()} para quaisquer pacotes dentro daquele usuário ou
<p>
Os usuários podem desativar as permissões de localidade para aplicativos de trabalho sem deixar de
- acessar informações de localidade em seus aplicativos pessoais. Um interruptor de acesso de localidade
+ acessar informações de localidade em seus aplicativos pessoais. Um interruptor de acesso de localidade
em separado em Location Settings permite que o usuário impeça atualizações de localização ou
consultas de última localidade em aplicativos executados no perfil de trabalho.
</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/background-optimization.jd b/docs/html-intl/intl/pt-br/preview/features/background-optimization.jd
index 073fd5e5b03b..cf4bbe9b8ff0 100644
--- a/docs/html-intl/intl/pt-br/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/background-optimization.jd
@@ -62,7 +62,7 @@ restrições:
<li>Os aplicativos direcionados ao Preview não receberão transmissões {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION} se estiverem
registrados para recebê-las no seu manifesto. Os aplicativos em execução ainda
-poderão escutar {@code CONNECTIVITY_CHANGE} no encadeamento principal registrando um
+poderão escutar {@code CONNECTIVITY_CHANGE} no encadeamento principal registrando um
{@link android.content.BroadcastReceiver} em {@link
android.content.Context#registerReceiver Context.registerReceiver()}.
</li>
@@ -111,7 +111,7 @@ poderão escutar {@code CONNECTIVITY_CHANGE} no encadeamento principal registran
</p>
<p class="note">
- <strong>Observação:</strong> Um {@link android.content.BroadcastReceiver} registrado em
+ <strong>Observação:</strong> Um {@link android.content.BroadcastReceiver} registrado em
{@link android.content.Context#registerReceiver Context.registerReceiver()}
continuará a receber essas transmissões enquanto o aplicativo estiver em execução.
</p>
@@ -185,7 +185,7 @@ public static void scheduleJob(Context context) {
</p>
<p>
- O aplicativo continuará a receber retornos de chamada até que o aplicativo encerre ou chame
+ O aplicativo continuará a receber retornos de chamada até que o aplicativo encerre ou chame
{@link android.net.ConnectivityManager#unregisterNetworkCallback
unregisterNetworkCallback()}.
</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/data-saver.jd b/docs/html-intl/intl/pt-br/preview/features/data-saver.jd
index 29c9ee46c0f6..f42b9cf2b495 100644
--- a/docs/html-intl/intl/pt-br/preview/features/data-saver.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/data-saver.jd
@@ -40,17 +40,17 @@ facilmente exceder o custo do próprio dispositivo. No N Developer Preview, os u
</p>
<p>
- Quando um usuário ativa a Economia de dados em <strong>Settings</strong> e o dispositivo está
+ Quando um usuário ativa a Economia de dados em <strong>Settings</strong> e o dispositivo está
em uma rede tarifada, o sistema bloqueia o uso de dados em segundo plano e avisa
- aos aplicativos para reduzir o uso de dados no primeiro plano sempre que possível. Os usuários podem
+ aos aplicativos para reduzir o uso de dados no primeiro plano sempre que possível. Os usuários podem
autorizar aplicativos específicos a usar dados tarifados em segundo plano, mesmo com a Economia
de dados ativada.
</p>
<p>
O N Developer Preview estende a API {@link android.net.ConnectivityManager}
- para oferecer aos aplicativos uma forma de <a href="#status">recuperar as
-preferências do usuário para a Economia de dados</a> e <a href="#monitor-changes">monitorar
+ para oferecer aos aplicativos uma forma de <a href="#status">recuperar as
+preferências do usuário para a Economia de dados</a> e <a href="#monitor-changes">monitorar
as mudanças de preferências</a>. Como prática recomendada, os aplicativos devem verificar se o
usuário ativou a Economia de dados e tentar limitar o uso de dados em primeiro e
segundo plano.
@@ -147,7 +147,7 @@ if (connMgr.isActiveNetworkMetered()) {
O envio da intenção e do URI abre o aplicativo <strong>Settings</strong> e
exibe as configurações de uso de dados de seu aplicativo. O usuário pode decidir então se
ativará os dados em segundo plano para o aplicativo. Antes de enviar a intenção, é
- prática recomendada perguntar primeiro ao usuário se ele deseja iniciar o
+ prática recomendada perguntar primeiro ao usuário se ele deseja iniciar o
aplicativo <strong>Settings</strong> com o objetivo de ativar o uso
de dados em segundo plano.
</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd b/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd
index d14449f49a5d..8f588411a612 100644
--- a/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd
@@ -18,7 +18,7 @@ page.image=images/cards/card-nyc_2x.jpg
</div>
</div>
-<p>O Android N é executado em um modo seguro de <i>inicialização direta</i>
+<p>O Android N é executado em um modo seguro de <i>inicialização direta</i>
quando o dispositivo é ligado, mas o usuário não o
desbloqueia. Para isso, o sistema oferece dois locais de armazenamento para dados:</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/multi-window.jd b/docs/html-intl/intl/pt-br/preview/features/multi-window.jd
index 77421820dde3..1a48140e0b14 100644
--- a/docs/html-intl/intl/pt-br/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/multi-window.jd
@@ -34,9 +34,9 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<p>
Se você compilar o aplicativo com o N Preview SDK, poderá configurar como o aplicativo
- processa a exibição de várias janelas. Por exemplo, você pode especificar as dimensões
+ processa a exibição de várias janelas. Por exemplo, você pode especificar as dimensões
mínimas permitidas para a atividade. Você também pode desativar a exibição de várias janelas para
- o aplicativo, garantindo que o sistema mostre o aplicativo apenas
+ o aplicativo, garantindo que o sistema mostre o aplicativo apenas
em modo de tela inteira.
</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/multilingual-support.jd b/docs/html-intl/intl/pt-br/preview/features/multilingual-support.jd
index 072e55b58cd8..c00eb9b9a798 100644
--- a/docs/html-intl/intl/pt-br/preview/features/multilingual-support.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/multilingual-support.jd
@@ -29,7 +29,7 @@ se seu aplicativo oferecer suporte a vários idiomas, você deverá garantir que
esperada. Por fim, garanta que seu aplicativo possa lidar corretamente
com idiomas que ele não tenha sido explicitamente projetado para suportar.</p>
-<p>Este documento começa explicando a estratégia de resolução de recursos anterior ao
+<p>Este documento começa explicando a estratégia de resolução de recursos anterior ao
Android N. Em seguida, ele descreve a estratégia
de resolução de recursos aprimorada do Android N. Por fim, ele explica como aproveitar as vantagens
do maior número de localidades para oferecer suporte a usuários multilíngues.</p>
@@ -215,7 +215,7 @@ não deixe de usar formatadores em vez de strings no código para números e dat
<p>Um bom exemplo é o árabe, cujo suporte no Android N foi expandido de
uma {@code ar_EG} para 27 localidades de árabe. Essas localidades podem compartilhar a maioria dos recursos,
mas algumas preferem dígitos ASCII, enquanto outras preferem dígitos nativos. Por exemplo,
-quando você quer criar uma frase com uma variável em dígito, como
+quando você quer criar uma frase com uma variável em dígito, como
“Choose a 4 digit pinâ€, use formatadores como mostrado abaixo:</p>
<pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html-intl/intl/pt-br/preview/features/notification-updates.jd b/docs/html-intl/intl/pt-br/preview/features/notification-updates.jd
index 72c2fe618522..36988da09ea5 100644
--- a/docs/html-intl/intl/pt-br/preview/features/notification-updates.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/notification-updates.jd
@@ -212,7 +212,7 @@ anexar a resposta do usuário ao histórico da entrada remota.
<h2 id="bundle">Notificações empacotadas</h2>
<p>O Android N oferece aos desenvolvedores uma nova forma de representar
- uma fila de notificações: <i>notificações empacotadas</i>. Essa forma é semelhante ao recurso
+ uma fila de notificações: <i>notificações empacotadas</i>. Essa forma é semelhante ao recurso
<a href="{@docRoot}training/wearables/notifications/stacks.html">Pilhas
de Notificações</a> no Android Wear. Por exemplo, se o aplicativo criar notificações
para mensagens recebidas, quando mais de uma mensagem for recebida, empacote as
@@ -243,8 +243,8 @@ Builder.setGroup()} para empacotar notificações semelhantes.</p>
sistema as agrupará automaticamente.
</p>
-<p>Para saber como adicionar notificações a um grupo, consulte
-<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Adicionar
+<p>Para saber como adicionar notificações a um grupo, consulte
+<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Adicionar
cada notificação a um grupo</a>.</p>
@@ -278,7 +278,7 @@ cada notificação a um grupo</a>.</p>
<p>
Os exemplos de casos em que uma única notificação é preferível
incluem mensagens individuais de uma única pessoa ou uma representação em lista
- de itens de texto com uma única linha. Você pode usar
+ de itens de texto com uma única linha. Você pode usar
({@link android.app.Notification.InboxStyle InboxStyle} ou
{@link android.app.Notification.BigTextStyle BigTextStyle}) para
isso.
@@ -354,7 +354,7 @@ Os exemplos de casos em que uma única notificação é preferível
<p>Para usar essa nova API, chame o método {@code setStyle()}, passando o
estilo de visualização personalizada desejado.</p>
-<p>O snippet mostra como construir um objeto de notificação personalizada com o método
+<p>O snippet mostra como construir um objeto de notificação personalizada com o método
{@code DecoratedCustomViewStyle()}.</p>
<pre>
@@ -370,7 +370,7 @@ Notification notification = new Notification.Builder()
<h2 id="style">Estilo de mensagens</h2>
<p>
O Android N traz uma nova API para personalização do estilo de uma notificação.
- Usando a classe <code>MessageStyle</code>, você pode alterar vários
+ Usando a classe <code>MessageStyle</code>, você pode alterar vários
rótulos exibidos na notificação, incluindo o título da conversa,
mensagens adicionais e a visualização de conteúdo para a notificação.
</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd b/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd
index 3a7dec491a13..4bdc54598826 100644
--- a/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd
@@ -9,13 +9,13 @@ page.tags=androidn
<h2>Neste documento</h2>
<ol>
- <li><a href="#declaring">Declarar que sua atividade oferece suporte ao modo de
+ <li><a href="#declaring">Declarar que sua atividade oferece suporte ao modo de
imagem em imagem</a></li>
<li><a href="#pip_button">Alternar a atividade para o modo de imagem em imagem</a>
</li>
<li><a href="#handling_ui">Lidar com a IU durante o modo de imagem em imagem</a>
</li>
- <li><a href="#continuing_playback">Continuar reprodução de vídeo no modo de
+ <li><a href="#continuing_playback">Continuar reprodução de vídeo no modo de
imagem em imagem</a></li>
<li><a href="#single_playback">Usar uma única atividade de reprodução para
imagem em imagem</a></li>
@@ -99,7 +99,7 @@ na janela do PIP.</p>
<h2 id="pip_button">Alternar a atividade para o modo de imagem em imagem</h2>
Quando precisar colocar a atividade no modo de PIP, chame
-<code>Activity.enterPictureInPictureMode()</code>. O exemplo a seguir
+<code>Activity.enterPictureInPictureMode()</code>. O exemplo a seguir
entra no modo de PIP quando o usuário seleciona um botão dedicado ao PIP na barra de controle de
uma mídia:</p>
@@ -146,7 +146,7 @@ public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
}
</pre>
-<h2 id="continuing_playback">Continuar reprodução de vídeo no modo de
+<h2 id="continuing_playback">Continuar reprodução de vídeo no modo de
imagem em imagem</h2>
<p>Quando a atividade entra no modo de PIP, o sistema a considera
@@ -177,11 +177,11 @@ imagem em imagem</h2>
<p>Ao navegar pelo conteúdo
da tela principal de seu aplicativo, um usuário pode selecionar um novo vídeo enquanto uma atividade de reprodução de vídeo estiver em modo de PIP. Reproduza o novo
- vídeo na atividade de reprodução existente em modo de tela cheia em vez de
+ vídeo na atividade de reprodução existente em modo de tela cheia em vez de
lançar uma nova atividade que pode confundir o usuário.</p>
<p>Para que uma única atividade seja usada para solicitações de reprodução de vídeo e
-com o modo de PIP ativado ou desativado, conforme necessário, configure o
+com o modo de PIP ativado ou desativado, conforme necessário, configure o
<code>android:launchMode</code> da atividade para <code>singleTask</code> em seu manifesto.
</p>
@@ -194,7 +194,7 @@ com o modo de PIP ativado ou desativado, conforme necessário, configure o
</pre>
<p>Na atividade, modifique {@link android.app.Activity#onNewIntent
-Activity.onNewIntent()} e processe o novo vídeo, interrompendo qualquer
+Activity.onNewIntent()} e processe o novo vídeo, interrompendo qualquer
reprodução existente, caso necessário.</p>
<h2 id="best">Práticas recomendadas</h2>
diff --git a/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd
index ef9ba6596189..6a58d7656646 100644
--- a/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd
@@ -25,7 +25,7 @@ acesso direcionado a diretórios para esses tipos de aplicativos. Por exemplo:</
ou {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} em seu manifesto
permite o acesso a todos os diretórios públicos no armazenamento externo, o que pode ser mais do
que o aplicativo precisa.</li>
-<li>Usar a
+<li>Usar a
<a href="{@docRoot}guide/topics/providers/document-provider.html">Estrutura de
acesso ao armazenamento</a> geralmente faz com que o usuário selecione diretórios
por meio de uma IU de sistema, o que é desnecessário se seu aplicativo sempre acessa o mesmo
@@ -54,7 +54,7 @@ o diretório de armazenamento externo para o arquivo.</p>
Em volumes secundários, como cartões SD externos, passe nulo ao chamar
<code>StorageVolume.createAccessIntent()</code> para solicitar acesso ao
volume todo em vez de um diretório específico.
-<code>StorageVolume.createAccessIntent()</code> retornará nulo se você passar
+<code>StorageVolume.createAccessIntent()</code> retornará nulo se você passar
nulo no volume principal ou se passar um nome de diretório inválido.
</p>
@@ -80,7 +80,7 @@ acesso ao diretório Pictures.</p>
<code>onActivityResult()</code> com um código de resultado de
<code>Activity.RESULT_OK</code> e os dados de intenção que contêm o URI. Use
o URI fornecido para acessar as informações do diretório, o que é semelhante a usar URIs
-retornados pela
+retornados pela
<a href="{@docRoot}guide/topics/providers/document-provider.html">Estrutura de
acesso ao armazenamento</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd b/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd
index 15d22d1a8d4f..890e1403793b 100644
--- a/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd
@@ -123,7 +123,7 @@ os aplicativos de canais com recursos de gravação na tabela de provedor de con
<code>RecordedPrograms.Uri</code>. Use APIs de provedores de conteúdo para
ler, adicionar e excluir entradas dessa tabela.</p>
-<p>Para saber mais sobre como trabalhar com dados de provedores de conteúdo, consulte
+<p>Para saber mais sobre como trabalhar com dados de provedores de conteúdo, consulte
<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
Fundamentos do provedor de conteúdo</a> .</p>
diff --git a/docs/html-intl/intl/pt-br/preview/j8-jack.jd b/docs/html-intl/intl/pt-br/preview/j8-jack.jd
index 504739689a09..22f4b679febf 100644
--- a/docs/html-intl/intl/pt-br/preview/j8-jack.jd
+++ b/docs/html-intl/intl/pt-br/preview/j8-jack.jd
@@ -23,7 +23,7 @@ page.keywords="android N", "Java 8", "Jack"
</p>
<p>Para começar a usar esses recursos, primeiro faça o download e instale o Android
-Studio 2.1 e o Android N Preview SDK, que inclui a
+Studio 2.1 e o Android N Preview SDK, que inclui a
cadeia de ferramentas Jack obrigatória e o Android Plugin for Gradle atualizado. Se você ainda não
instalou o Android N Preview SDK, consulte <a href="{@docRoot}preview/setup-sdk.html">Preparação para desenvolver para o Android N</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/preview/overview.jd b/docs/html-intl/intl/pt-br/preview/overview.jd
index eaa3c0c1ae95..1c81f6d920b5 100644
--- a/docs/html-intl/intl/pt-br/preview/overview.jd
+++ b/docs/html-intl/intl/pt-br/preview/overview.jd
@@ -116,7 +116,7 @@ page.tags="preview", "developer", "android"
</h5>
<p>
- Informe problemas e dê-nos feedback usando o
+ Informe problemas e dê-nos feedback usando o
<a href="{@docRoot}preview/bug">issue tracker</a>. Conecte-se a outros
desenvolvedores na
<a href="{@docRoot}preview/dev-community">Comunidade N&nbsp;Developer</a>.
@@ -262,7 +262,7 @@ page.tags="preview", "developer", "android"
</p>
<p>
- Para se inscrever no programa, acesse o site do <a href="https://g.co/androidbeta">programa beta
+ Para se inscrever no programa, acesse o site do <a href="https://g.co/androidbeta">programa beta
do Android</a>. Você
verá uma lista de todos os dispositivos registrados em sua conta que estejam qualificados para inscrição no
programa beta do Android.
@@ -314,13 +314,13 @@ page.tags="preview", "developer", "android"
</p>
<ul>
- <li> <a href="{@docRoot}preview/setup-sdk.html">Preparação para desenvolver para o
+ <li> <a href="{@docRoot}preview/setup-sdk.html">Preparação para desenvolver para o
Android N</a> tem
instruções passo a passo para você iniciar o trabalho.</li>
<li> <a href="{@docRoot}preview/behavior-changes.html">Mudanças
de comportamento</a> indicam as principais áreas a serem testadas.</li>
- <li> Documentação de novas APIs, incluindo uma <a href="{@docRoot}preview/api-overview.html">visão geral das APIs</a>, a
-<a href="{@docRoot}preview/setup-sdk.html#docs-dl">referência da
+ <li> Documentação de novas APIs, incluindo uma <a href="{@docRoot}preview/api-overview.html">visão geral das APIs</a>, a
+<a href="{@docRoot}preview/setup-sdk.html#docs-dl">referência da
API</a> disponível para download e guias de desenvolvedor detalhados sobre os recursos principais, como
suporte para várias janelas, notificações agrupadas, suporte para vários idiomas e outros.
<li> <a href="{@docRoot}preview/samples.html">Exemplo de código</a> que
@@ -333,7 +333,7 @@ suporte para várias janelas, notificações agrupadas, suporte para vários idi
<h4 id="reference">Referência da API para download</h4>
<p>
- Durante as primeiras atualizações do Preview, você pode fazer o download da
+ Durante as primeiras atualizações do Preview, você pode fazer o download da
<a href="{@docRoot}preview/setup-sdk.html#docs-dl">referência da API
mais recente para a plataforma Android N</a> como um arquivo zip separado. Esse download
também inclui um relatório de diferenças que ajuda você a identificar as mudanças da API em relação à
@@ -357,7 +357,7 @@ suporte para várias janelas, notificações agrupadas, suporte para vários idi
<ul>
<li> O <a href="https://code.google.com/p/android-developer-preview/">Issue
Tracker do N Developer Preview</a> é o <strong>canal principal de feedback.</strong> É possível informar erros,
- problemas de desempenho e feedback geral pelo issue tracker. Também é possível verificar os
+ problemas de desempenho e feedback geral pelo issue tracker. Também é possível verificar os
<a href="{@docRoot}preview/bugs">erros conhecidos</a> e
encontrar etapas de resolução. Manteremos você atualizado sobre seu problema conforme ele seja avaliado e
enviado para a equipe de engenharia do Android para análise. </li>
@@ -374,7 +374,7 @@ suporte para várias janelas, notificações agrupadas, suporte para vários idi
O N Developer Preview fornece um sistema apenas para desenvolvimento e uma biblioteca Android
que <strong>não tem um nível da API padrão</strong>. Caso opte
pelos comportamentos de compatibilidade para testar o aplicativo (o que é muito
- recomendado), é possível destinar a versão de prévia do Android N
+ recomendado), é possível destinar a versão de prévia do Android N
configurando o <code><a href=
"{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code> do aplicativo
para <code>“Nâ€</code>.
diff --git a/docs/html-intl/intl/pt-br/preview/setup-sdk.jd b/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
index 6db456cba6bc..9c1f03522603 100644
--- a/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
+++ b/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
@@ -41,7 +41,7 @@ compilar seu aplicativo. Caso contrário, não será preciso usar o Jack, mas ai
necessário atualizar para o JDK 8 para desenvolver para a plataforma Android N,
conforme descrito abaixo.</p>
-<p>Se você já instalou o Android Studio, verifique se tem o Android
+<p>Se você já instalou o Android Studio, verifique se tem o Android
Studio 2.1 ou superior clicando em <strong>Help &gt; Check for Update</strong>
(no Mac, <strong>Android Studio &gt; Check for Updates</strong>).</p>
@@ -51,7 +51,7 @@ Studio 2.1 aqui</a>.</p>
<h2 id="get-sdk">Obter o N Preview SDK</h2>
-<p>Para começar a desenvolver com as APIs do Android N, instale o
+<p>Para começar a desenvolver com as APIs do Android N, instale o
Android N Preview SDK no Android Studio da seguinte maneira:</p>
<ol>
@@ -77,7 +77,7 @@ Android N Preview SDK no Android Studio da seguinte maneira:</p>
<p>
Informações detalhadas sobre as APIs do Android N são disponibilizadas na documentação de referência do N Preview
, que pode ser baixada pela tabela a seguir.
- Este pacote contém uma versão off-line resumida do site de desenvolvedores do Android
+ Este pacote contém uma versão off-line resumida do site de desenvolvedores do Android
e inclui uma referência de API atualizada para as APIs do Android N, além de um relatório
das diferenças entre as APIs.
</p>
@@ -92,7 +92,7 @@ Android N Preview SDK no Android Studio da seguinte maneira:</p>
<a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
<td width="100%">
MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
- SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
+ SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
</td>
</tr>
<table>
@@ -131,7 +131,7 @@ não tiver a versão mais recente, baixe o JDK 8 agora mesmo.</p>
Para usar as APIs do Android N, seu projeto deve ser configurado da maneira apropriada.
</p>
-<p>Se planeja usar os recursos de linguagem do Java 8, consulte
+<p>Se planeja usar os recursos de linguagem do Java 8, consulte
<a href="{@docRoot}preview/j8-jack.html">Recursos de linguagem do Java 8</a>
para saber mais sobre os recursos do Java 8 com suporte e
como configurar seu projeto com o compilador Jack.</p>
@@ -179,7 +179,7 @@ android {
<ul>
<li>Siga o guia para <a href="{@docRoot}preview/download.html">Testar em um dispositivo Android N</a>.</li>
- <li>Saiba mais sobre a plataforma Android N com
+ <li>Saiba mais sobre a plataforma Android N com
<a href="{@docRoot}preview/behavior-changes.html">Mudanças de comportamento</a>
e <a href="{@docRoot}preview/api-overview.html">Recursos de APIs do
Android N</a>.</li>
diff --git a/docs/html-intl/intl/pt-br/preview/support.jd b/docs/html-intl/intl/pt-br/preview/support.jd
index 4580887b7a8b..9ae32c89fd25 100644
--- a/docs/html-intl/intl/pt-br/preview/support.jd
+++ b/docs/html-intl/intl/pt-br/preview/support.jd
@@ -101,7 +101,7 @@ page.image=images/cards/card-n-support_2x.png
desenvolvedores a capacidade de projetar experiências de RV móveis de alta qualidade para os usuários. Há
diversas melhorias de desempenho, incluindo o acesso a um núcleo exclusivo da CPU
para aplicativos de RV. Dentro dos aplicativos, é possível aproveitar o rastreamento inteligente
- da cabeça e notificações estéreo que funcionam para RV. Mais importante,
+ da cabeça e notificações estéreo que funcionam para RV. Mais importante,
o Android N oferece gráficos de latência muito baixa.
</p>
@@ -112,7 +112,7 @@ o Android N oferece gráficos de latência muito baixa.
<h4 id="">Modo de desempenho sustentado</h4>
<p>
- O Android N inclui compatibilidade opcional para <a href="{@docRoot}preview/api-overview.html#sustained_performance_api">modo de desempenho
+ O Android N inclui compatibilidade opcional para <a href="{@docRoot}preview/api-overview.html#sustained_performance_api">modo de desempenho
sustentado</a>, permitindo que OEMs ofereçam dicas sobre
capacidades de desempenho do dispositivo para aplicativos de longa duração. Desenvolvedores de aplicativos podem usar
essas dicas para ajustar os aplicativos para um nível de
@@ -143,7 +143,7 @@ sustentado</a>, permitindo que OEMs ofereçam dicas sobre
No Android N, o usuário pode pressionar <code>Meta+/</code> para acionar uma tela de <strong>atalhos
de teclado</strong> que exibe todos os atalhos disponíveis do
sistema e do aplicativo em questão. Os desenvolvedores podem adicionar os próprios atalhos ou
- ativar a tela de atalhos nos aplicativos. Consulte o <a href="{@docRoot}preview/api-overview.html#keyboard_shortcuts_helper">Auxiliar de
+ ativar a tela de atalhos nos aplicativos. Consulte o <a href="{@docRoot}preview/api-overview.html#keyboard_shortcuts_helper">Auxiliar de
atalhos de teclado</a> para saber mais.
</p>
@@ -223,7 +223,7 @@ API</a>
<dd>
Agora o sistema usa os metadados da atividade para decidir o modo do bloco.
(Anteriormente, o modo do bloco era determinado pelo valor de retorno do
- <code>TileService.onTileAdded()</code>.) Para obter mais informações, consulte
+ <code>TileService.onTileAdded()</code>.) Para obter mais informações, consulte
<code>TileService.META_DATA_ACTIVE_TILE</code> na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a>, disponível para download.
</dd>
</dl>
@@ -604,7 +604,7 @@ issue tracker</a>.</p>
problemas podem aumentar com o uso prolongado.
</li>
- <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e
+ <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e
desligar a tela.
</li>
</ul>
@@ -857,7 +857,7 @@ issue tracker</a>.</p>
problemas podem aumentar com o uso prolongado.
</li>
- <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e
+ <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e
desligar a tela.
</li>
@@ -885,7 +885,7 @@ issue tracker</a>.</p>
problemas podem aumentar com o uso prolongado.
</li>
- <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e
+ <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e
desligar a tela.
</li>
</ul>
@@ -966,7 +966,7 @@ issue tracker</a>.</p>
<li>Always on VPN
<ul>
<li>Se o modo Always on VPN estiver ativado, mas uma VPN não estiver disponível, os aplicativos
- não especificados como exceções na política Always on se conectarão via
+ não especificados como exceções na política Always on se conectarão via
rede comum. Exceto quando especificados como exceções na política Always on,
os aplicativos deverão ficar off-line se não houver nenhuma conexão VPN disponível.
<ul>
@@ -1124,7 +1124,7 @@ issue tracker</a>.</p>
desenvolvedor do aplicativo.
</li>
- <li>Quando o aplicativo é destinado para uma versão da plataforma Android anterior ao N,
+ <li>Quando o aplicativo é destinado para uma versão da plataforma Android anterior ao N,
ele pode não funcionar com avisos de tela dividida que aparecem diversas vezes.
</li>
diff --git a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/index.jd b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/index.jd
index 59120589f3f6..ff226429e7ee 100644
--- a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/index.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/index.jd
@@ -45,7 +45,7 @@ métodos do ciclo de vida em sua atividade conforme ela fica em segundo plano (o
está visível, mas a instância e seu estado permanecem intactos).</p>
<p>Dentro dos métodos de retorno de chamada do ciclo de vida, você pode declarar como a atividade deve se comportar quando o
-usuário sai e retorna da atividade. Por exemplo, se estiver construindo um reprodutor de vídeos de transmissão em sequência,
+usuário sai e retorna da atividade. Por exemplo, se estiver construindo um reprodutor de vídeos de transmissão em sequência,
você pode pausar o vídeo e encerrar a conexão da rede quando o usuário alternar para outro
aplicativo. Quando o usuário retornar, será possível reconectar a rede e permitir que ele reinicie o vídeo
de onde parou.</p>
@@ -55,7 +55,7 @@ android.app.Activity} recebe e como utilizá-los para que a atividade faça o qu
usuário espera e não consuma recursos do sistema quando não estiver em uso.</p>
<h2>Lições</h2>
-
+
<dl>
<dt><b><a href="starting.html">Iniciando uma atividade</a></b></dt>
<dd>Aprenda os fundamentos sobre ciclo de vida da atividade, como o usuário pode iniciar seu aplicativo e como
@@ -68,5 +68,5 @@ fazer durante essas mudanças de estados.</dd>
<dt><b><a href="recreating.html">Recriando uma atividade</a></b></dt>
<dd>Aprenda sobre o que acontece quando sua atividade é destruída e como reconstruir o estado
da atividade quando necessário.</dd>
-</dl>
+</dl>
diff --git a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/pausing.jd
index 55f772e51dfb..9851579650a2 100644
--- a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>Esta lição ensina a</h2>
<ol>
<li><a href="#Pause">Pausar sua atividade</a></li>
<li><a href="#Resume">Reiniciar sua atividade</a></li>
</ol>
-
+
<h2>Leia também</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">Atividades</a>
@@ -31,12 +31,12 @@ trainingnavtop=true
</div>
</div>
-<p>Durante o uso normal do aplicativo, a atividade em primeiro plano as vezes é obstruída por outros
+<p>Durante o uso normal do aplicativo, a atividade em primeiro plano as vezes é obstruída por outros
componentes visuais que causam a <em>pausa</em>. Por exemplo, quando uma atividade
- semitransparente é aberta (como uma no estilo de um diálogo), a atividade anterior pausa. Enquanto a
+ semitransparente é aberta (como uma no estilo de um diálogo), a atividade anterior pausa. Enquanto a
atividade estiver parcialmente visível, mas não for o foco da atividade, ela permanecerá pausada.</p>
-<p>No entanto, se a atividade estiver completamente obstruída e não visível, ela <em>para</em> (o que será
+<p>No entanto, se a atividade estiver completamente obstruída e não visível, ela <em>para</em> (o que será
discutido na próxima lição).</p>
<p>Conforme a atividade entra no estado pausado, o sistema chama o método {@link
@@ -59,7 +59,7 @@ aguarda no estado Pausa (1). Se o usuário retornar à atividade enquanto ainda
<h2 id="Pause">Pausar sua atividade</h2>
-
+
<p>Quando o sistema chama {@link android.app.Activity#onPause()} para sua atividade, teoricamente
significa que a atividade ainda está parcialmente visível, mas geralmente é um indício
de que o usuário está saindo da atividade e logo entrará em estado Interrompido. Use
diff --git a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/recreating.jd b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/recreating.jd
index 7cb122f713ef..9746a65ceeb0 100644
--- a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>Esta lição ensina a</h2>
<ol>
<li><a href="#SaveState">Salvar o estado da atividade</a></li>
<li><a href="#RestoreState">Restaurar o estado da atividade</a></li>
</ol>
-
+
<h2>Leia também</h2>
<ul>
<li><a href="{@docRoot}training/basics/supporting-devices/screens.html">Compatibilidade
@@ -57,7 +57,7 @@ atividade pode conter mais informações de estado do que se deseja restaurar, c
rastreiam o progresso do usuário na atividade.</p>
<p class="note"><strong>Observação:</strong> para que o sistema Android restaure o estado das
-visualizações em sua atividade, <strong>cada visualização precisa ter uma ID exclusiva</strong>, fornecido pelo atributo
+visualizações em sua atividade, <strong>cada visualização precisa ter uma ID exclusiva</strong>, fornecido pelo atributo
<a href="{@docRoot}reference/android/view/View.html#attr_android:id">{@code
android:id}</a>.</p>
@@ -105,7 +105,7 @@ public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-
+
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
@@ -138,7 +138,7 @@ onCreate()}:</p>
&#64;Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Always call the superclass first
-
+
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore value of members from saved state
@@ -157,12 +157,12 @@ android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}, que o sis
depois do método {@link android.app.Activity#onStart()}. O sistema chama {@link
android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} se houver um estado
salvo para ser restaurado. Portanto, não é necessário verificar se {@link android.os.Bundle} é null:</p>
-
+
<pre>
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
-
+
// Restore state members from saved instance
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/starting.jd b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/starting.jd
index efe2badc149f..4c1a9b846cc7 100644
--- a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>Esta lição ensina a</h2>
<ol>
<li><a href="#lifecycle-states">Entender o ciclo de vida do retorno de chamada</a></li>
@@ -17,7 +17,7 @@ trainingnavtop=true
<li><a href="#Create">Criar uma nova instância</a></li>
<li><a href="#Destroy">Destruir a atividade</a></li>
</ol>
-
+
<h2>Leia também</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">Atividades</a></li>
@@ -83,7 +83,7 @@ paisagem e retrato.</li>
</ul>
<!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
methods.</p>
<table>
<tr>
@@ -138,7 +138,7 @@ comportamentos específicos do ciclo de vida.</p>
-<h2 id="launching-activity">Especificar a atividade da tela de início do aplicativo</h2>
+<h2 id="launching-activity">Especificar a atividade da tela de início do aplicativo</h2>
<p>Quando o usuário seleciona seu aplicativo na tela inicial, o sistema chama o método {@link
android.app.Activity#onCreate onCreate()} para {@link android.app.Activity} no aplicativo
@@ -151,7 +151,7 @@ na raiz do diretório do seu projeto.</p>
<p>A principal atividade do aplicativo deve ser declarada no manifesto com um <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
<intent-filter>}</a> que inclui a ação {@link
android.content.Intent#ACTION_MAIN MAIN} e categoria
-{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER}. Por exemplo:</p>
+{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER}. Por exemplo:</p>
<pre>
&lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -200,10 +200,10 @@ public void onCreate(Bundle savedInstanceState) {
// Set the user interface layout for this Activity
// The layout file is defined in the project res/layout/main_activity.xml file
setContentView(R.layout.main_activity);
-
+
// Initialize member TextView so we can manipulate it later
mTextView = (TextView) findViewById(R.id.text_message);
-
+
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// For the main activity, make sure the app icon in the action bar
@@ -268,7 +268,7 @@ android.app.Activity#onDestroy}.</p>
&#64;Override
public void onDestroy() {
super.onDestroy(); // Always call the superclass
-
+
// Stop method tracing that the activity started during onCreate()
android.os.Debug.stopMethodTracing();
}
diff --git a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/stopping.jd b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/stopping.jd
index 2eba37729485..1c00d9917296 100644
--- a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>Esta lição ensina a</h2>
<ol>
<li><a href="#Stop">Interromper sua atividade</a></li>
<li><a href="#Start">Iniciar/reiniciar sua atividade</a></li>
</ol>
-
+
<h2>Leia também</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">Atividades</a>
@@ -152,13 +152,13 @@ os recursos do sistema exigidos estão habilitados:</p>
&#64;Override
protected void onStart() {
super.onStart(); // Always call the superclass method first
-
+
// The activity is either being restarted or started for the first time
// so this is where we should make sure that GPS is enabled
- LocationManager locationManager =
+ LocationManager locationManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-
+
if (!gpsEnabled) {
// Create a dialog here that requests the user to enable GPS, and use an intent
// with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -169,8 +169,8 @@ protected void onStart() {
&#64;Override
protected void onRestart() {
super.onRestart(); // Always call the superclass method first
-
- // Activity being restarted from stopped state
+
+ // Activity being restarted from stopped state
}
</pre>
diff --git a/docs/html-intl/intl/pt-br/training/basics/data-storage/databases.jd b/docs/html-intl/intl/pt-br/training/basics/data-storage/databases.jd
index 37d0d432473c..68b55187ea71 100644
--- a/docs/html-intl/intl/pt-br/training/basics/data-storage/databases.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/data-storage/databases.jd
@@ -118,12 +118,12 @@ ao aplicativo. Seus dados estão protegidos porque, por padrão, essa área não
pode ser acessada por outros aplicativos.</p>
<p>Um conjunto de APIs está disponível na classe {@link
-android.database.sqlite.SQLiteOpenHelper}.
+android.database.sqlite.SQLiteOpenHelper}.
Ao usar esta classe para obter referências para seu banco de dados, o sistema
realiza operações
de possível longa execução para criar e atualizar o banco de dados apenas quando
-necessário e <em>não durante a inicialização do aplicativo</em>. Basta chamar
-{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} ou
+necessário e <em>não durante a inicialização do aplicativo</em>. Basta chamar
+{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} ou
{@link android.database.sqlite.SQLiteOpenHelper#getReadableDatabase}.</p>
<p class="note"><strong>Observação:</strong> devido à possibilidade de serem de longa execução,
diff --git a/docs/html-intl/intl/pt-br/training/basics/intents/filters.jd b/docs/html-intl/intl/pt-br/training/basics/intents/filters.jd
index f3b3b12c591a..596f35cfb91f 100644
--- a/docs/html-intl/intl/pt-br/training/basics/intents/filters.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/intents/filters.jd
@@ -154,7 +154,7 @@ android.content.Intent} utilizada para iniciá-la.</p>
<p>Quando sua atividade iniciar, chame {@link android.app.Activity#getIntent()} para retomar a
{@link android.content.Intent} que iniciou a atividade. Pode-se fazer isso a qualquer momento durante
-o ciclo de vida da atividade, mas recomenda-se fazê-lo no início do retorno de chamada como
+o ciclo de vida da atividade, mas recomenda-se fazê-lo no início do retorno de chamada como
{@link android.app.Activity#onCreate onCreate()} ou {@link android.app.Activity#onStart()}.</p>
<p>Por exemplo:</p>
diff --git a/docs/html-intl/intl/pt-br/training/basics/intents/result.jd b/docs/html-intl/intl/pt-br/training/basics/intents/result.jd
index ecb5a47480a0..abb880b0161b 100644
--- a/docs/html-intl/intl/pt-br/training/basics/intents/result.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/intents/result.jd
@@ -29,7 +29,7 @@ receber um resultado de volta. Para receber um resultado, chame {@link android.a
startActivityForResult()} (em vez de {@link android.app.Activity#startActivity
startActivity()}).</p>
-<p>Por exemplo, o aplicativo pode iniciar um aplicativo de câmera e receber a foto capturada como resultado. Ou,
+<p>Por exemplo, o aplicativo pode iniciar um aplicativo de câmera e receber a foto capturada como resultado. Ou,
ao iniciar o aplicativo Pessoas para que o usuário selecione um
contato, você receberá os detalhes do contato como resultado.</p>
@@ -104,7 +104,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
aplicativos Contatos ou Pessoas do Android fornece um conteúdo {@link android.net.Uri} que identifica o
contato escolhido pelo usuário.</p>
-<p>Para que o resultado seja tratado de forma adequada, é preciso saber o formato do resultado
+<p>Para que o resultado seja tratado de forma adequada, é preciso saber o formato do resultado
{@link android.content.Intent}. Isso é fácil quando umas das suas atividades
retorna o resultado. Os aplicativos incluídos na plataforma Android oferecem suas próprias APIs que
podem ser usadas para dados de resultado específicos. Por exemplo, o aplicativo Pessoas (Contatos em algumas versões mais
@@ -155,7 +155,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
<p class="note"><strong>Observação:</strong> antes do Android 2.3 (API nível 9), executar uma consulta
no {@link android.provider.ContactsContract.Contacts Contacts Provider} (como mostrado
acima) exige que o aplicativo declare a permissão {@link
-android.Manifest.permission#READ_CONTACTS} (consulte <a href="{@docRoot}guide/topics/security/security.html">Segurança e permissões</a>). Contudo,
+android.Manifest.permission#READ_CONTACTS} (consulte <a href="{@docRoot}guide/topics/security/security.html">Segurança e permissões</a>). Contudo,
iniciar com Android 2.3, o aplicativo Contatos/Pessoas dá ao aplicativo permissão
temporária para ler no Provedor de Contatos quando retornar um resultado. A permissão temporária
aplica-se apenas a pedidos de contato específicos, portanto, não é possível consultar um contato diferente daquele
diff --git a/docs/html-intl/intl/pt-br/training/material/drawables.jd b/docs/html-intl/intl/pt-br/training/material/drawables.jd
index 4eb9f3602037..900fbb19d3a1 100644
--- a/docs/html-intl/intl/pt-br/training/material/drawables.jd
+++ b/docs/html-intl/intl/pt-br/training/material/drawables.jd
@@ -38,7 +38,7 @@ somente uma vez e colore-os automaticamente para combinar com seu tema.</p>
<p>Você pode aplicar um tingimento aos objetos {@link android.graphics.drawable.BitmapDrawable} ou {@link
android.graphics.drawable.NinePatchDrawable} com o método {@code setTint()}. Você também
-pode configurar a cor e o modo do tingimento nos layouts com os atributos <code>android:tint</code> e
+pode configurar a cor e o modo do tingimento nos layouts com os atributos <code>android:tint</code> e
<code>android:tintMode</code>.</p>
diff --git a/docs/html-intl/intl/ru/about/versions/android-5.0.jd b/docs/html-intl/intl/ru/about/versions/android-5.0.jd
index 5dbbac85db47..826725265d20 100644
--- a/docs/html-intl/intl/ru/about/versions/android-5.0.jd
+++ b/docs/html-intl/intl/ru/about/versions/android-5.0.jd
@@ -429,7 +429,7 @@ sdk.platform.apiLevel=21
<p>При обнаружении подходÑщей Ñети ÑиÑтема подключаетÑÑ Ðº ней и отправлÑет ответ {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()}. Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñведений о Ñети можно иÑпользовать объект {@link android.net.Network} в ответе. Он же применÑетÑÑ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ñ„Ð¸ÐºÐ° в выбранную Ñеть.</p>
<h3 id="BluetoothBroadcasting">ÐизкоÑнергетичеÑкий Bluetooth</h3>
-<p>Ð’ Android верÑии 4.3 была предÑтавлена поддержка <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">низкоÑнергетичеÑкого Bluetooth</a> (<em>Bluetooth LE</em>) как оÑновного ÑпоÑоба передачи данных. УÑтройÑтво на Android 5.0 может быть <em>периферийным</em> Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ Bluetooth низкой мощноÑти. Эта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñет приложениÑм ÑвÑзыватьÑÑ Ñ ÑƒÑтройÑтвами, раÑположенными неподалеку. Ðапример, ваше приложение может работать как шагомер или отÑлеживать иные показатели, Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ñ Ð´Ð°Ð½Ð½Ñ‹Ðµ на другое близко раÑположенное уÑтройÑтво по Ñети Bluetooth.</p>
+<p>Ð’ Android верÑии 4.3 была предÑтавлена поддержка <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">низкоÑнергетичеÑкого Bluetooth</a> (<em>Bluetooth LE</em>) как оÑновного ÑпоÑоба передачи данных. УÑтройÑтво на Android 5.0 может быть <em>периферийным</em> Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ Bluetooth низкой мощноÑти. Эта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñет приложениÑм ÑвÑзыватьÑÑ Ñ ÑƒÑтройÑтвами, раÑположенными неподалеку. Ðапример, ваше приложение может работать как шагомер или отÑлеживать иные показатели, Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ñ Ð´Ð°Ð½Ð½Ñ‹Ðµ на другое близко раÑположенное уÑтройÑтво по Ñети Bluetooth.</p>
<p>Ðовый API {@link android.bluetooth.le} позволÑет приложениÑм передавать рекламу, получать отчеты и уÑтанавливать ÑвÑзь Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ уÑтройÑтвами, поддерживающими Bluetooth LE. Чтобы воÑпользоватьÑÑ Ð½Ð¾Ð²Ñ‹Ð¼Ð¸ функциÑми, добавьте в манифеÑÑ‚ разрешение {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN}. Ð¡ÐºÐ°Ñ‡Ð¸Ð²Ð°Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ или Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ в Google Play, пользователи должны дать разрешение на Ñбор данных о Bluetooth, управление Ñтой функцией, а также на обмен информацией Ñ ÑƒÑтройÑтвами по ÑоÑедÑтву.</p>
<p>Чтобы начать передачу рекламы по Bluetooth LE на другие уÑтройÑтва, вызовите {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} и передайте данные о внедрении клаÑÑа {@link android.bluetooth.le.AdvertiseCallback}. Объект обратного вызова получает отчет об уÑпешном или неуÑпешном показе рекламы.</p>
diff --git a/docs/html-intl/intl/ru/design/get-started/principles.jd b/docs/html-intl/intl/ru/design/get-started/principles.jd
index 7e4ea1214b9f..4eb0f5d797e9 100644
--- a/docs/html-intl/intl/ru/design/get-started/principles.jd
+++ b/docs/html-intl/intl/ru/design/get-started/principles.jd
@@ -260,7 +260,7 @@ page.title=Принципы Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Android
<div class="col-7">
<h4 id="sprinkle-encouragement">Ðе ÑкупитеÑÑŒ на поддержку пользователÑ</h4>
-<p>Разбейте Ñложные задачи на более мелкие, легко выполнимые Ñтапы. ОбеÑпечьте обратную ÑвÑзь,
+<p>Разбейте Ñложные задачи на более мелкие, легко выполнимые Ñтапы. ОбеÑпечьте обратную ÑвÑзь,
даже при незначительных операциÑÑ….</p>
</div>
@@ -295,7 +295,7 @@ page.title=Принципы Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Android
<div class="col-7">
<h4 id="make-important-things-fast">Важные дейÑÑ‚Ð²Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ проиÑходить быÑтро</h4>
-<p>Ðе вÑе дейÑÑ‚Ð²Ð¸Ñ Ñ€Ð°Ð²Ð½Ð¾Ñ†ÐµÐ½Ð½Ñ‹. Решите, какие функции вашего Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑвлÑÑŽÑ‚ÑÑ Ñамыми важными, и обеÑпечьте возможноÑть
+<p>Ðе вÑе дейÑÑ‚Ð²Ð¸Ñ Ñ€Ð°Ð²Ð½Ð¾Ñ†ÐµÐ½Ð½Ñ‹. Решите, какие функции вашего Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑвлÑÑŽÑ‚ÑÑ Ñамыми важными, и обеÑпечьте возможноÑть
быÑтро найти и иÑпользовать их. Ðапример, Ñто может быть кнопка ÑпуÑка затвора в фотокамере или кнопка паузы в музыкальном плеере.</p>
</div>
diff --git a/docs/html-intl/intl/ru/design/material/index.jd b/docs/html-intl/intl/ru/design/material/index.jd
index da0352a10ef6..f585a0df5c4a 100644
--- a/docs/html-intl/intl/ru/design/material/index.jd
+++ b/docs/html-intl/intl/ru/design/material/index.jd
@@ -165,7 +165,7 @@ Z. Это новое ÑвойÑтво показывает, наÑколько Ð
<p>ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ñ€ÐµÐ°ÐºÑ†Ð¸Ð¸ на каÑание вÑтроена в некоторые Ñтандартные предÑтавлениÑ, например кнопки. Ðовые API-интерфейÑÑ‹
позволÑÑŽÑ‚ разработчику наÑтраивать Ñти анимации и добавлÑть их в Ñвои неÑтандартные предÑтавлениÑ.</p>
-<p>Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. в разделе <a href="{@docRoot}training/material/animations.html">Определение наÑтраиваемой
+<p>Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. в разделе <a href="{@docRoot}training/material/animations.html">Определение наÑтраиваемой
анимации</a>.</p>
@@ -182,5 +182,5 @@ Z. Это новое ÑвойÑтво показывает, наÑколько Ð
раÑтровых изображений.</li>
</ul>
-<p>Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. в разделе <a href="{@docRoot}training/material/drawables.html">Работа Ñ
+<p>Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. в разделе <a href="{@docRoot}training/material/drawables.html">Работа Ñ
Ñлементами дизайна</a>.</p>
diff --git a/docs/html-intl/intl/ru/design/patterns/navigation.jd b/docs/html-intl/intl/ru/design/patterns/navigation.jd
index 3a0fc6eb31e1..817ec33f7686 100644
--- a/docs/html-intl/intl/ru/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/ru/design/patterns/navigation.jd
@@ -15,7 +15,7 @@ page.image=/design/media/navigation_between_siblings_gmail.png
глобальное поведение навигации претерпело значительные изменениÑ. Тщательное Ñледование
инÑтрукциÑм по применению кнопок "Ðазад" и "Вверх" Ñделает навигацию в вашем приложении предÑказуемой и надежной Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ Ð·Ñ€ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹.</p>
<p>Ð’ Android 2.3 и в более ранних верÑиÑÑ… Ð´Ð»Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ð¸ внутри Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ÑпользовалаÑÑŒ ÑиÑÑ‚ÐµÐ¼Ð½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° <em>Ðазад</em>.
- С поÑвлением панели дейÑтвий в Android 3.0 Ñтал доÑтупен второй механизм
+ С поÑвлением панели дейÑтвий в Android 3.0 Ñтал доÑтупен второй механизм
навигации – кнопка <em>Вверх</em>, ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‰Ð°Ñ Ð·Ð½Ð°Ñ‡Ð¾Ðº Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ левую угловую Ñкобку.</p>
<img src="{@docRoot}design/media/navigation_with_back_and_up.png">
@@ -33,7 +33,7 @@ page.image=/design/media/navigation_between_siblings_gmail.png
Ñкранов, недавно открытых пользователем. Ð¢Ð°ÐºÐ°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð¾Ñнована на порÑдке поÑвлениÑ
Ñкранов, а не на иерархии приложениÑ.</p>
-<p>ЕÑли предыдущий Ñкран одновременно ÑвлÑетÑÑ Ð¸ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ‡ÐµÑким родителем текущего,
+<p>ЕÑли предыдущий Ñкран одновременно ÑвлÑетÑÑ Ð¸ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ‡ÐµÑким родителем текущего,
кнопка "Ðазад" имеет то же дейÑтвие, что и кнопка "Вверх", &mdash; и Ñто ÑлучаетÑÑ Ð´Ð¾Ð²Ð¾Ð»ÑŒÐ½Ð¾
чаÑто. Однако, в отличие от кнопки "Вверх", гарантирующей, что пользователь оÑтаетÑÑ Ð² приложении, кнопка "Ðазад"
может перевеÑти его на главный Ñкран или даже в другое приложение.</p>
@@ -98,12 +98,12 @@ page.image=/design/media/navigation_between_siblings_gmail.png
<p>Ð’ обоих Ñтих ÑлучаÑÑ… реализуйте Ñледующее поведение кнопки "Вверх":</p>
<ul>
-<li><em>ЕÑли целевой Ñкран, как правило, доÑтигаетÑÑ Ð¸Ð· одного конкретного Ñкрана
+<li><em>ЕÑли целевой Ñкран, как правило, доÑтигаетÑÑ Ð¸Ð· одного конкретного Ñкрана
приложениÑ</em>, кнопка "Вверх" должна оÑущеÑтвлÑть переход на Ñтот Ñкран.</li>
<li><em>Ð’ противном Ñлучае</em> кнопка "Вверх" должна оÑущеÑтвлÑть переход на Ñамый верхний (главный) Ñкран приложениÑ.</li>
</ul>
-<p>Что каÑаетÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ "Ðазад", необходимо обеÑпечить более предÑказуемую навигацию, вÑтавив в
+<p>Что каÑаетÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ "Ðазад", необходимо обеÑпечить более предÑказуемую навигацию, вÑтавив в
Ñтек переходов назад полный путь навигации вверх к Ñамому верхнему Ñкрану приложениÑ. Это позволит пользователÑм,
забывшим, как они вошли в приложение, перейти к его главному Ñкрану перед выходом из
приложениÑ.</p>
@@ -139,7 +139,7 @@ page.image=/design/media/navigation_between_siblings_gmail.png
<p><em>Ð’Ñплывающие уведомлениÑ</em> поÑвлÑÑŽÑ‚ÑÑ Ð½ÐµÐ¿Ð¾ÑредÑтвенно перед пользователем,
в обход панели уведомлений. Они иÑпользуютÑÑ Ñ€ÐµÐ´ÐºÐ¾ и <strong>должны быть зарезервированы Ð´Ð»Ñ Ñитуаций, в которых требуетÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ
-Ñ€ÐµÐ°ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, и прерывание его дейÑтвий оправдано</strong>. Ðапример,
+Ñ€ÐµÐ°ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, и прерывание его дейÑтвий оправдано</strong>. Ðапример,
приложение Talk Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ таких уведомлений извещает Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¾ поÑтупившем от друга приглашении приÑоединитьÑÑ Ðº видеочату, поÑкольку Ñрок дейÑÑ‚Ð²Ð¸Ñ Ñтого
Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð¸Ñтекает через неÑколько Ñекунд.</p>
@@ -153,7 +153,7 @@ page.image=/design/media/navigation_between_siblings_gmail.png
<h2 id="between-apps">ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ приложениÑми</h2>
<p>Одним из фундаментальных доÑтоинÑтв ÑиÑтемы Android ÑвлÑетÑÑ ÑпоÑобноÑть взаимного запуÑка приложений,
-что дает пользователю возможноÑть переходить непоÑредÑтвенно из одного Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² другое. Ðапример,
+что дает пользователю возможноÑть переходить непоÑредÑтвенно из одного Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² другое. Ðапример,
приложение, которому нужно Ñделать Ñнимок, может активировать приложение Camera, которое передаÑÑ‚ фотографию
вызвавшему его приложению. Это огромное преимущеÑтво как Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ°, имеющего возможноÑть без проблем воÑпользоватьÑÑ
кодом других приложений, так и Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, получающего ÑоглаÑованный Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð»Ñ Ñ‡Ð°Ñто выполнÑемых
@@ -182,7 +182,7 @@ page.image=/design/media/navigation_between_siblings_gmail.png
<p>Чтобы понÑть, как дейÑтвиÑ, задачи и Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹Ñтвуют друг Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð¼, разберемÑÑ, как одно приложение позволÑет пользователÑм
поделитьÑÑ Ñодержимым Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ другого приложениÑ. Ðапример, при запуÑке Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Play Store Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ Ñкрана ÑоздаетÑÑ
Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°, Task A (Ñм. риÑунок ниже). Когда пользователь выполнит навигацию по Play Store и коÑнетÑÑ Ð¸Ð½Ñ‚ÐµÑ€ÐµÑующей его книги,
-чтобы проÑмотреть информацию о ней, он оÑтаетÑÑ Ð² той же задаче, раÑширÑÑ ÐµÐµ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ добавленных дейÑтвий. ЗапуÑк
+чтобы проÑмотреть информацию о ней, он оÑтаетÑÑ Ð² той же задаче, раÑширÑÑ ÐµÐµ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ добавленных дейÑтвий. ЗапуÑк
дейÑÑ‚Ð²Ð¸Ñ "ПоделитьÑÑ" выводит перед пользователем диалоговое окно Ñо ÑпиÑком дейÑтвий (из разных приложений),
зарегиÑтрированных Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ "ПоделитьÑÑ".</p>
@@ -198,16 +198,16 @@ Store, пока, наконец, не вернетÑÑ Ð½Ð° главный ÑкÑ
<img src="{@docRoot}design/media/navigation_between_apps_back.png">
-<p>Однако, коÑнувшиÑÑŒ кнопки "Вверх" во Ð²Ñ€ÐµÐ¼Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ "СоÑтавление ÑообщениÑ", пользователь выÑкажет пожелание оÑтатьÑÑ Ð² приложении
+<p>Однако, коÑнувшиÑÑŒ кнопки "Вверх" во Ð²Ñ€ÐµÐ¼Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ "СоÑтавление ÑообщениÑ", пользователь выÑкажет пожелание оÑтатьÑÑ Ð² приложении
Gmail. ОткроетÑÑ Ñкран дейÑÑ‚Ð²Ð¸Ñ "ПерепиÑка" Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Gmail, и Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ будет Ñоздана Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° Task B. Ðовые задачи
вÑегда имеют корень на главном Ñкране, поÑтому каÑание кнопки "Ðазад" на Ñкране перепиÑки возвращает Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð¼ÐµÐ½Ð½Ð¾ туда.</p>
<img src="{@docRoot}design/media/navigation_between_apps_up.png">
-<p>Задача Task A оÑтаетÑÑ Ð² фоновом режиме, и пользователь может вернутьÑÑ Ðº ней впоÑледÑтвии (например, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ
+<p>Задача Task A оÑтаетÑÑ Ð² фоновом режиме, и пользователь может вернутьÑÑ Ðº ней впоÑледÑтвии (например, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ
Ñкрана Ñ Ð¿Ð¾Ñледними приложениÑми). ЕÑли в фоновом режиме уже работает ÑобÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° Gmail, она будет замещена
задачей Task B. Произойдет отказ от предыдущего контекÑта ради новой цели пользователÑ.</p>
<p>ЕÑли Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ намерений ваше приложение зарегиÑтрирует дейÑтвие, раÑположенное в глубине Ñвоей иерархии,
-Ñледуйте инÑтрукциÑм по реализации навигации Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ кнопки "Вверх", изложенным в разделе <a href="#into-your-app">ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€ÑŒ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ виджетов и
+Ñледуйте инÑтрукциÑм по реализации навигации Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ кнопки "Вверх", изложенным в разделе <a href="#into-your-app">ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€ÑŒ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ виджетов и
уведомлений главного Ñкрана</a>.</p>
diff --git a/docs/html-intl/intl/ru/design/patterns/notifications.jd b/docs/html-intl/intl/ru/design/patterns/notifications.jd
index db46ad5051a2..4d339c29258d 100644
--- a/docs/html-intl/intl/ru/design/patterns/notifications.jd
+++ b/docs/html-intl/intl/ru/design/patterns/notifications.jd
@@ -103,15 +103,15 @@ Android можно найти в разделе
<p>Разработчик может выбрать Ñтепень подробноÑти уведомлений, генерируемых его
приложением. Уведомление может Ñодержать первые
неÑколько Ñтрок ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ миниатюру изображениÑ. Ð’ качеÑтве дополнительной
-информации можно предоÑтавлÑть пользователю
+информации можно предоÑтавлÑть пользователю
контекÑÑ‚ и, &mdash;в некоторых ÑлучаÑÑ…, &mdash;давать ему возможноÑть прочитать Ñообщение
целиком. Чтобы переключатьÑÑ
между компактной и раÑширенной компоновкой, пользователь может применить жеÑÑ‚ ÑжатиÑ/маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸
провеÑти пальцем по Ñкрану.
Ð”Ð»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹ о единичных ÑобытиÑÑ… Android предоÑтавлÑет
- разработчику Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð¸ шаблона раÑширенной компоновки
+ разработчику Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð¸ шаблона раÑширенной компоновки
(текÑÑ‚, входÑÑ‰Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° и изображениÑ). Ðиже приведены Ñкриншоты уведомлений о единичных
-ÑобытиÑÑ… на мобильных уÑтройÑтвах (Ñлева)
+ÑобытиÑÑ… на мобильных уÑтройÑтвах (Ñлева)
и на ноÑимых уÑтройÑтвах (Ñправа).</p>
<img style="margin-top:30px"
@@ -158,7 +158,7 @@ src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
<ul>
<li> неоднозначных;
- <li> Ñовпадающих Ñ Ð´ÐµÐ¹ÑтвиÑми, выполнÑемыми Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию (например, "Прочитать" или
+ <li> Ñовпадающих Ñ Ð´ÐµÐ¹ÑтвиÑми, выполнÑемыми Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию (например, "Прочитать" или
"Открыть").
</ul>
@@ -189,7 +189,7 @@ src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
отображаетÑÑ
в раÑширенной компоновке, позволÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ допуÑтимые дейÑтвиÑ.</p>
<p> Затем уведомление принимает обычный
-вид. ЕÑли Ð´Ð»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑƒÑтановлен выÑокий, макÑимальный или полноÑкранный <a href="#correctly_set_and_manage_notification_priority">приоритет</a>
+вид. ЕÑли Ð´Ð»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑƒÑтановлен выÑокий, макÑимальный или полноÑкранный <a href="#correctly_set_and_manage_notification_priority">приоритет</a>
, оно ÑтановитÑÑ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸ÐµÐ¼ heads-up.</p>
<p><b>Хорошими примерами Ñобытий Ð´Ð»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹ heads-up ÑвлÑÑŽÑ‚ÑÑ</b></p>
@@ -232,15 +232,15 @@ src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
Ñокращенное предÑтавление, еÑли накопилоÑÑŒ неÑколько уведомлений. ЕÑли приложение переводит
Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° какой-либо уровень, отличный от верхнего, реализуйте навигацию в Ñтеке переходов назад в приложении, чтобы
пользователь мог нажать ÑиÑтемную кнопку "Ðазад" и вернутьÑÑ Ð½Ð° верхний уровень. Дополнительную информацию можно найти в разделе
-<em>ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€ÑŒ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ виджетов и уведомлений главного Ñкрана</em> в шаблоне проектированиÑ
+<em>ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€ÑŒ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ виджетов и уведомлений главного Ñкрана</em> в шаблоне проектированиÑ
<a href="{@docRoot}design/patterns/navigation.html#into-your-app">ÐавигациÑ</a>.</p>
-<h3 id="correctly_set_and_manage_notification_priority">Правильно выполнÑйте раÑÑтановку приоритетов уведомлений и
+<h3 id="correctly_set_and_manage_notification_priority">Правильно выполнÑйте раÑÑтановку приоритетов уведомлений и
управление ими
</h3>
<p>Android поддерживает флаг приоритета Ð´Ð»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹. Это флаг позволÑет
-влиÑть на позицию ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ñреди других уведомлений и
+влиÑть на позицию ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ñреди других уведомлений и
гарантировать,
что пользователь в первую очередь увидит Ñамые важные уведомлениÑ. При отправке ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ выбрать один
из
@@ -315,7 +315,7 @@ src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
подходÑщий
приоритет</strong></h4>
-<p>При выдаче уведомлений Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð°Ð¼Ð¸ <code>DEFAULT</code>, <code>HIGH</code> и <code>MAX</code> ÑущеÑтвует риÑк, что деÑтельноÑть
+<p>При выдаче уведомлений Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð°Ð¼Ð¸ <code>DEFAULT</code>, <code>HIGH</code> и <code>MAX</code> ÑущеÑтвует риÑк, что деÑтельноÑть
Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±ÑƒÐ´ÐµÑ‚ прервана
в Ñамом разгаре. Чтобы не раздражать пользователей вашего приложениÑ, применÑйте приоритеты Ñтих уровней длÑ
уведомлений,</p>
@@ -359,7 +359,7 @@ src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p>
</td>
<td>
-<p>ВходÑщий звонок (голоÑовой или по видеоÑвÑзи) или алогичный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñинхронной
+<p>ВходÑщий звонок (голоÑовой или по видеоÑвÑзи) или алогичный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñинхронной
ÑвÑзи</p>
</td>
</tr>
@@ -568,7 +568,7 @@ href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS<
предÑтавлÑть Ñобой изображение белого цвета на прозрачном фоне.</p>
-<h3 id="pulse_the_notification_led_appropriately">Правильно иÑпользуйте индикатор
+<h3 id="pulse_the_notification_led_appropriately">Правильно иÑпользуйте индикатор
уведомлений</h3>
<p>Ðа многих уÑтройÑтвах Android имеетÑÑ Ñветодиодный индикатор уведомлений,
@@ -579,7 +579,7 @@ href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS<
<code>MIN</code>) не должны.</p>
<p>ВозможноÑти Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñть уведомлениÑми должны раÑпроÑтранÑтьÑÑ Ð½Ð° Ñветодиодный индикатор. Когда разработчик иÑпользует
-DEFAULT_LIGHTS,
+DEFAULT_LIGHTS,
индикатор ÑветитÑÑ Ð±ÐµÐ»Ñ‹Ð¼ цветом. Ваши ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ должны вызывать Ñвечение другим
цветом, еÑли
пользователь не указал Ñтого Ñвным образом.</p>
@@ -658,7 +658,7 @@ Android была разработана
<li> Ðе отвлекайте пользователÑ, чтобы проинформировать его об ошибке, еÑли
приложение может воÑÑтановитьÑÑ Ð¿Ð¾Ñле нее ÑамоÑтоÑтельно, не Ñ‚Ñ€ÐµÐ±ÑƒÑ Ð¾Ñ‚ пользователÑ
никаких дейÑтвий.</li>
- <li> Ðе Ñоздавайте уведомлениÑ, не имеющие оÑмыÑленного Ñодержимого и
+ <li> Ðе Ñоздавайте уведомлениÑ, не имеющие оÑмыÑленного Ñодержимого и
вÑего лишь рекламирующие ваше
приложение. Уведомление должно неÑти полезную, актуальную и новую информацию. Ðе Ñледует
иÑпользовать его
@@ -787,7 +787,7 @@ id="dialogs_and_toasts_are_for_feedback_not_notification">Диалоговые Ð
чтобы конфиденциальные данные не отображалиÑÑŒ на защищенном Ñкране блокировки. Ð’ Ñтом Ñлучае ÑиÑтемный пользовательÑкий интерфейÑ
учитывает <em>уровень видимоÑти</em> уведомлениÑ, чтобы выÑÑнить, какую информацию
можно отображать без риÑка.</p>
-<p> Чтобы уÑтановить уровень видимоÑти, вызовите
+<p> Чтобы уÑтановить уровень видимоÑти, вызовите
<code><a
href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code>
и укажите одно из Ñледующих значений:</p>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/about.jd b/docs/html-intl/intl/ru/distribute/googleplay/about.jd
index d5eaafe4eee8..1c2bc96b2ec2 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/about.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/about.jd
@@ -6,7 +6,7 @@ page.image=/distribute/images/about-play.jpg
@jd:body
- <div id="qv-wrapper">
+ <div id="qv-wrapper">
<div id="qv">
<h2>О Google Play</h2>
<ol style="list-style-type:none;">
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/auto.jd b/docs/html-intl/intl/ru/distribute/googleplay/auto.jd
index 3fc82dd510b3..3550b36183af 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/auto.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/auto.jd
@@ -133,7 +133,7 @@ page.metaDescription=РаÑпроÑтранÑйте Ñвои приложениÑ
<ul>
<li>Ð’ манифеÑте Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть декларирована запиÑÑŒ метаданных <code>com.google.android.gms.car.application</code>
Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð°Ð»ÑŒÐ½Ñ‹Ð¼Ð¸ возможноÑÑ‚Ñми автомобилÑ, иÑпользуемыми приложением. Чтобы получить более подробную информацию
- о конфигурации Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Android Auto, Ñм.
+ о конфигурации Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Android Auto, Ñм.
<a href="{@docRoot}training/auto/start/index.html#auto-metadata">Ðачало работы Ñ Android Auto</a>.
</li>
</ul>
@@ -152,7 +152,7 @@ page.metaDescription=РаÑпроÑтранÑйте Ñвои приложениÑ
ПоÑле принÑÑ‚Ð¸Ñ ÑƒÑловий и ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ вы можете загрузить и опубликовать Ñвое приложение в обычном порÑдке.
Перед тем, как открыть доÑтуп к приложению пользователÑм Android Auto, Google Play передает
приложение на проверку его ÑоответÑÑ‚Ð²Ð¸Ñ ÐºÑ€Ð¸Ñ‚ÐµÑ€Ð¸Ñм <a href="{@docRoot}distribute/essentials/quality/auto.html">качеÑтва автоприложений</a>
-и уведомлÑет о ее результатах. ЕÑли приложение было одобрено, Google Play делает его
+и уведомлÑет о ее результатах. ЕÑли приложение было одобрено, Google Play делает его
доÑтупным пользователÑм Android Auto. ÐŸÐ¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ том, как отÑлеживать ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ, приведена
в Ñледующем разделе.
</p>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/developer-console.jd b/docs/html-intl/intl/ru/distribute/googleplay/developer-console.jd
index cb62c2f3d4a4..7510202ed4ba 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/developer-console.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/developer-console.jd
@@ -4,8 +4,8 @@ page.image=/distribute/images/developer-console.jpg
Xnonavpage=true
@jd:body
-
- <div id="qv-wrapper">
+
+ <div id="qv-wrapper">
<div id="qv">
<h2>ВозможноÑти Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ приложений</h2>
<ol>
@@ -204,7 +204,7 @@ Xnonavpage=true
<p>
Ð’ Ñлучае Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ или иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼ обновленный двоичный файл
можно опубликовать в любое времÑ. ÐÐ¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñразу же ÑтановитÑÑ Ð´Ð¾Ñтупной, а ÑущеÑтвующие пользователи
- получают уведомление о готовом к загрузке обновлении. Пользователи также могут
+ получают уведомление о готовом к загрузке обновлении. Пользователи также могут
принимать автоматичеÑкие Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ, которые будут
передаватьÑÑ Ð¸ уÑтанавливатьÑÑ Ñразу поÑле публикации. Ð’Ñ‹ можете отменить публикацию Ñвоих приложений в любое
времÑ.
@@ -441,7 +441,7 @@ Xnonavpage=true
<p>
УправлÑйте раÑпроÑтранением Ñвоих приложений по Ñтранам и регионам. ДлÑ
некоторых Ñтран можно указать операторов мобильной ÑвÑзи, на которых будут нацелены ваши продажи. Ð’Ñ‹ также можете проÑмотреть
- ÑпиÑок уÑтройÑтв, которым доÑтупно ваше приложение, ÑоÑтавленный на оÑновании правил раÑпроÑтранениÑ
+ ÑпиÑок уÑтройÑтв, которым доÑтупно ваше приложение, ÑоÑтавленный на оÑновании правил раÑпроÑтранениÑ
из файла манифеÑта приложениÑ.
</p>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/families/faq.jd b/docs/html-intl/intl/ru/distribute/googleplay/families/faq.jd
index 955110803680..664539fa4558 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/families/faq.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@ page.metaDescription=ВопроÑÑ‹ и ответы по программе Дл
font-weight:bold;
}
</style>
-
+
<div id="qv-wrapper">
<ol id="qv">
<h2>Содержание документа</h2>
@@ -141,7 +141,7 @@ page.metaDescription=ВопроÑÑ‹ и ответы по программе Дл
приложение Ñемейным пользователÑм. ЕÑли приложение удовлетворÑет вÑем
требованиÑм программы, Ñрок его публикации будет не больше обычного. Однако
еÑли в процеÑÑе проверки приложение было отклонено, Ñрок его публикации
- задержитÑÑ.
+ задержитÑÑ.
</dd>
<dt>
@@ -281,7 +281,7 @@ page.metaDescription=ВопроÑÑ‹ и ответы по программе Дл
за Ñобой право отклонÑть приложениÑ, иÑпользующие излишне агреÑÑивные коммерчеÑкие методы. Продажа контента во вÑех приложениÑÑ…
программы "Ð”Ð»Ñ Ð²Ñей Ñемьи", предназначенных в оÑновном Ð´Ð»Ñ Ð´ÐµÑ‚Ñкой
аудитории, будет защищена паролем, чтобы покупки подтверждалиÑÑŒ
- родителÑми, а не детьми. Следует отметить, что Ñта защита не раÑпроÑтранÑетÑÑ Ð½Ð° приложениÑ,
+ родителÑми, а не детьми. Следует отметить, что Ñта защита не раÑпроÑтранÑетÑÑ Ð½Ð° приложениÑ,
предназначенные Ð´Ð»Ñ Ð¾Ð±Ñ‰ÐµÐ¹ аудитории.
</dd>
</dl>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/families/start.jd b/docs/html-intl/intl/ru/distribute/googleplay/families/start.jd
index fcb0d34cd35e..927473200b2c 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/families/start.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/families/start.jd
@@ -78,7 +78,7 @@ Google Play.
<p class="note">
<strong>Примечание</strong>. Опубликованные в рамках программы "Ð”Ð»Ñ Ð²Ñей Ñемьи" Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ‚Ð°ÐºÐ¶Ðµ доÑтупны длÑ
- вÑех пользователей Google Play.
+ вÑех пользователей Google Play.
</p>
<p>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/quality/core.jd b/docs/html-intl/intl/ru/distribute/googleplay/quality/core.jd
index ca1b67154794..8af9d91220ad 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/quality/core.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/quality/core.jd
@@ -12,7 +12,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="#listing">СоответÑтвие требованиÑм Google Play</a></li>
</ol>
-
+
<h2>ТеÑтирование</h2>
<ol>
<li><a href="#test-environment">ÐаÑтройка Ñреды теÑтированиÑ</a></li>
@@ -24,7 +24,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="{@docRoot}distribute/essentials/quality/tablets.html">КачеÑтво приложений Ð´Ð»Ñ Ð¿Ð»Ð°Ð½ÑˆÐµÑ‚Ð½Ñ‹Ñ… ПК</a></li>
<li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹</a></li>
</ol>
-
+
</div>
</div>
@@ -84,7 +84,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<th style="width:54px;">
ИД
</th>
-
+
<th>
ОпиÑание
@@ -182,7 +182,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
</td>
<td>
<p style="margin-bottom:.5em;">
- Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ ÑоответÑтвовать <a href="{@docRoot}design/patterns/notifications.html">рекомендациÑм</a> по дизайну Android. Ð’
+ Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ ÑоответÑтвовать <a href="{@docRoot}design/patterns/notifications.html">рекомендациÑм</a> по дизайну Android. Ð’
чаÑтноÑти, должны быть Ñоблюдены Ñледующие правила.
</p>
@@ -290,7 +290,7 @@ data-maxresults="6">
<td>
<p style="margin-bottom:.5em;">
Приложение не запрашивает прав доÑтупа к наиболее важным данным (например,
- к контактам или ÑиÑтемному журналу), а также к платным ÑервиÑам
+ к контактам или ÑиÑтемному журналу), а также к платным ÑервиÑам
(например, Ñлужбам дозвона или отправки СМС), еÑли Ñто не ÑвÑзано Ñ Ð¾Ñновной функциональноÑтью данного
приложениÑ.
</p>
@@ -311,7 +311,7 @@ data-maxresults="6">
<p style="margin-bottom:.25em;">
Поддержка уÑтановки на SD-карту рекомендована Ð´Ð»Ñ Ð²Ñех больших приложений
- (превышающих 10 МБ). См. в руководÑтве разработчика в разделе <a href="{@docRoot}guide/topics/data/install-location.html">МеÑто
+ (превышающих 10 МБ). См. в руководÑтве разработчика в разделе <a href="{@docRoot}guide/topics/data/install-location.html">МеÑто
уÑтановки приложениÑ</a> информацию о том,
какие типы приложений должны поддерживать уÑтановку на SD-карты.
</p>
@@ -490,7 +490,7 @@ data-maxresults="6">
его ÑоÑтоÑние должно быть воÑÑтановлено макÑимально близко к предыдущему ÑоÑтоÑнию.
</li>
- <li>При нажатии кнопки "Ðазад" приложение позволÑет Ñохранить Ñвое текущее ÑоÑтоÑние или
+ <li>При нажатии кнопки "Ðазад" приложение позволÑет Ñохранить Ñвое текущее ÑоÑтоÑние или
ÑоÑтоÑние пользователÑ, которое в противном Ñлучае будет потерÑно при переходе назад.
</li>
</ol>
@@ -1048,8 +1048,8 @@ data-cardsizes="6x3,6x3,6x3,6x3,6x3,6x3" data-maxresults="6">
</p>
<p style="margin-bottom:.25em;">
- Чтобы принудительно задейÑтвовать аппаратное уÑкорение (еÑли оно поддерживаетÑÑ
- уÑтройÑтвом), добавьте параметр <code>hardware-accelerated="true"</code> к разделу
+ Чтобы принудительно задейÑтвовать аппаратное уÑкорение (еÑли оно поддерживаетÑÑ
+ уÑтройÑтвом), добавьте параметр <code>hardware-accelerated="true"</code> к разделу
<code>&lt;application&gt;</code> в манифеÑте Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ выполните его повторную компилÑцию.
</p>
</td>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/quality/tablets.jd b/docs/html-intl/intl/ru/distribute/googleplay/quality/tablets.jd
index 4e0322f71b67..4c25d8875be4 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/quality/tablets.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/quality/tablets.jd
@@ -56,7 +56,7 @@ Xnonavpage=true
<p>Первым шагом к Ñозданию хорошего планшетного Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñоблюдение
<em>оÑновных критериев качеÑтва</em> Ð´Ð»Ñ Ð²Ñех уÑтройÑтв
- и форм-факторов, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… предназначаетÑÑ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ. Полную информацию об Ñтом Ñм. в руководÑтве <a href="{@docRoot}distribute/essentials/quality/core.html">ОÑновные критерии качеÑтва приложений</a>.
+ и форм-факторов, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… предназначаетÑÑ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ. Полную информацию об Ñтом Ñм. в руководÑтве <a href="{@docRoot}distribute/essentials/quality/core.html">ОÑновные критерии качеÑтва приложений</a>.
</p>
<p>
@@ -174,7 +174,7 @@ style="font-weight:500;">Макеты Ñ Ð½ÐµÑколькими панелÑми
<p>Планшеты обеÑпечивают значительно больше полезной площади Ñкрана
Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ приложениÑ, оÑобенно в альбомной ориентации. ОÑобенно Ñтот прироÑÑ‚ заметен на 10-дюймовых планшетах, но даже 7-дюмовые
- планшеты добавлÑÑŽÑ‚ значительное количеÑтво меÑта Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ‚ÐµÐ½Ñ‚Ð°
+ планшеты добавлÑÑŽÑ‚ значительное количеÑтво меÑта Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ‚ÐµÐ½Ñ‚Ð°
и Ð¿Ñ€Ð¸Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹. </p>
<p>ÐŸÐ»Ð°Ð½Ð¸Ñ€ÑƒÑ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ на планшетах, убедитеÑÑŒ, что в нем будут
@@ -196,20 +196,20 @@ style="font-weight:500;">Макеты Ñ Ð½ÐµÑколькими панелÑми
<img src="{@docRoot}images/ui-ex-single-panes.png" style="width:490px;padding:4px;margin-bottom:0em;" align="middle">
<img src="{@docRoot}images/ui-ex-multi-pane.png" style="width:490px;padding:4px;margin-bottom:0em;">
<p class="image-caption" style="padding:.5em"><span
-style="font-weight:500;">СоÑтавные предÑтавлениÑ</span> объединÑÑŽÑ‚ неÑколько проÑтых предÑтавлений из
+style="font-weight:500;">СоÑтавные предÑтавлениÑ</span> объединÑÑŽÑ‚ неÑколько проÑтых предÑтавлений из
интерфейÑа Ð´Ð»Ñ Ñмартфонов<em>(Ñм. верхнюю чаÑть риÑунка)</em> в информативном и более Ñффективном
интерфейÑе Ð´Ð»Ñ Ð¿Ð»Ð°Ð½ÑˆÐµÑ‚Ð¾Ð² <em>(Ñм. нижнюю чаÑть риÑунка)</em>. </p>
</div>
</div>
-<li>Ð¥Ð¾Ñ‚Ñ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ðµ Ñкраны реализуютÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ подклаÑÑа {@link android.app.Activity},
+<li>Ð¥Ð¾Ñ‚Ñ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ðµ Ñкраны реализуютÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ подклаÑÑа {@link android.app.Activity},
ÑтарайтеÑÑŒ реализовать отдельные ÑоÑтавные панели Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ подклаÑÑа {@link
android.app.Fragment}. Это позволит повыÑить
применимоÑть программного кода Ð´Ð»Ñ Ð¸Ñпользующих один и тот же контент Ñкранов,
отличающихÑÑ Ñ„Ð¾Ñ€Ð¼-факторами и размерами.</li>
<li>Примите решение, Ð´Ð»Ñ ÐºÐ°ÐºÐ¸Ñ… размеров Ñкранов будет иÑпользоватьÑÑ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñ
- неÑколькими панелÑми, а затем предложите разные макеты Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñ‹Ñ… размеров Ñкранов (например, Ð´Ð»Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¹
-<code>large</code>/<code>xlarge</code>) или Ð´Ð»Ñ Ñкранов Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð¹ шириной (таких, как категории
+ неÑколькими панелÑми, а затем предложите разные макеты Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñ‹Ñ… размеров Ñкранов (например, Ð´Ð»Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¹
+<code>large</code>/<code>xlarge</code>) или Ð´Ð»Ñ Ñкранов Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð¹ шириной (таких, как категории
<code>sw600dp</code>/<code>sw720</code>).</li>
</ul>
@@ -496,7 +496,7 @@ android.app.Fragment}. Это позволит повыÑить
которые <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">подразумевают наличие аппаратных
возможноÑтей</a>, не применимых к планшетам. ЕÑли вы обнаружите декларацию таких прав доÑтупа,
обÑзательно Ñвным образом задекларируйте ÑоответÑтвующий Ñлемент
-<code>&lt;uses-feature&gt;</code> Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°ÐµÐ¼Ñ‹Ñ… возможноÑтей и включите в него атрибут
+<code>&lt;uses-feature&gt;</code> Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°ÐµÐ¼Ñ‹Ñ… возможноÑтей и включите в него атрибут
<code>android:required=â€falseâ€</code>.</li>
</ul>
@@ -539,11 +539,11 @@ android.app.Fragment}. Это позволит повыÑить
<code>android:xlargeScreens="true"</code>.</li>
</ul>
-<p>ЕÑли в манифеÑте Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ñлемент
+<p>ЕÑли в манифеÑте Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ñлемент
<a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html"><code>&lt;compatible-screens&gt;</code></a>,
в нем должны быть атрибуты, указывающие
<em>вÑе комбинации размеров и разрешений Ð´Ð»Ñ Ð¿Ð»Ð°Ð½ÑˆÐµÑ‚Ð½Ñ‹Ñ… Ñкранов</em>,
- поддерживаемые приложением. Обратите внимание, что там, где Ñто возможно, вы должны избегать иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñлемента
+ поддерживаемые приложением. Обратите внимание, что там, где Ñто возможно, вы должны избегать иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñлемента
<a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html"><code>&lt;compatible-screens&gt;</code></a>
Ð´Ð»Ñ Ñвоего приложениÑ.</p>
@@ -804,7 +804,7 @@ android.app.Fragment}. Это позволит повыÑить
<p>
Сравнив <a href="{@docRoot}distribute/essentials/quality/core.html#test-environment">рекомендуемую
Ñреду теÑтированиÑ</a> Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ Ñ Ð¾Ñновными критериÑми качеÑтва приложениÑ,
- включите в нее планшеты Ñреднего размера и планшеты Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ или меньшим количеÑтвом
+ включите в нее планшеты Ñреднего размера и планшеты Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ или меньшим количеÑтвом
аппаратных или программных функциональных возможноÑтей.
</p>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/tv.jd b/docs/html-intl/intl/ru/distribute/googleplay/tv.jd
index 31a40ce3ef57..747c6d9b04ca 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/tv.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/tv.jd
@@ -78,7 +78,7 @@ page.metaDescription=РаÑпроÑтранÑйте Ñвои приложениÑ
<h3 id="develop_app">2. Создайте качеÑтвенное телеприложение</h3>
<p>
- КачеÑтвенное телеприложение предназначено Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð°
+ КачеÑтвенное телеприложение предназначено Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð°
телевизионном Ñкране, в нем реализованы возможноÑти Android TV, а также ÑоответÑтвующих
уÑтройÑтв ввода: джойÑтиков, навигационных кнопок и пультов диÑтанционного управлениÑ. Это приложение тщательно проработано, обладает отлаженным и качеÑтвенным
интерфейÑом Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ñ… Ñкранов, предлагает привлекательный Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹
@@ -89,7 +89,7 @@ page.metaDescription=РаÑпроÑтранÑйте Ñвои приложениÑ
ÐžÐ±Ð´ÑƒÐ¼Ñ‹Ð²Ð°Ñ Ñвое будущее телеприложение, изучите <a href="{@docRoot}training/tv/start/index.html">документацию Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ¾Ð²</a> и
рекомендации отноÑительно Ñргономики и поÑтарайтеÑÑŒ макÑимально их
придерживатьÑÑ. ПозаботьтеÑÑŒ о макÑимальном удобÑтве работы Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ и обеÑпечьте
- его Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñпециальной библиотеки Leanback, входÑщей в SDK. Возможно, потребуетÑÑ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ другие
+ его Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñпециальной библиотеки Leanback, входÑщей в SDK. Возможно, потребуетÑÑ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ другие
чаÑти вашего Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° телеÑкране, правильно будет определить Ñто
в начальной Ñтадии процеÑÑа разработки.
</p>
@@ -145,7 +145,7 @@ page.metaDescription=РаÑпроÑтранÑйте Ñвои приложениÑ
<li>ПредуÑмотрите Ñоблюдение критериев <a href="{@docRoot}distribute/essentials/quality/tv.html">КачеÑтва
телеприложений</a>.
<ul>
- <li>ИÑпользуйте передовые
+ <li>ИÑпользуйте передовые
методы <a href="{@docRoot}training/tv/index.html">разработки телеприложений</a>.</li>
<li>УбедитеÑÑŒ в том, что приложение ÑоответÑтвует вÑем критериÑм <a href="{@docRoot}distribute/essentials/quality/tv.html">качеÑтва телеприложений</a>.</li>
</ul>
@@ -181,7 +181,7 @@ page.metaDescription=РаÑпроÑтранÑйте Ñвои приложениÑ
<ul>
<li>Ð’ манифеÑте Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Intent должен быть уÑтановлен тип <a href="{@docRoot}reference/android/content/Intent.html#ACTION_MAIN"><code>ACTION_MAIN</code></a>
- Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸ÐµÐ¹<a href="{@docRoot}reference/android/content/Intent.html#CATEGORY_LEANBACK_LAUNCHER">
+ Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸ÐµÐ¹<a href="{@docRoot}reference/android/content/Intent.html#CATEGORY_LEANBACK_LAUNCHER">
<code>CATEGORY_LEANBACK_LAUNCHER</code></a>. Дополнительную информацию Ñм. <a href="{@docRoot}training/tv/start/start.html#tv-activity">здеÑÑŒ</a>.
</li>
@@ -261,7 +261,7 @@ page.metaDescription=РаÑпроÑтранÑйте Ñвои приложениÑ
ÑоответÑтвует критериÑм, вы получите <strong>уведомление на Ð°Ð´Ñ€ÐµÑ Ñлектронной почты,
указанный в учетной запиÑи разработчика</strong>, Ñ Ð¾Ð¿Ð¸Ñанием проблем, которые Ñледует уÑтранить. ПоÑле
внеÑÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ñ‹Ñ… иÑправлений вы можете загрузить новую верÑию Ñвоего Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² конÑоль
- разработчика.
+ разработчика.
</p>
<p>
@@ -282,7 +282,7 @@ page.metaDescription=РаÑпроÑтранÑйте Ñвои приложениÑ
<li>
<em>Утверждено</em> – ваше приложение было проверено и утверждено. Приложение
- ÑтановитÑÑ Ð´Ð¾Ñтупно пользователÑм программы Android TV.
+ ÑтановитÑÑ Ð´Ð¾Ñтупно пользователÑм программы Android TV.
</li>
<li>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/wear.jd b/docs/html-intl/intl/ru/distribute/googleplay/wear.jd
index 1c6b2703497b..92744012ce07 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/wear.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/wear.jd
@@ -152,7 +152,7 @@ page.metaDescription=РаÑпроÑтранÑйте Ñвои приложениÑ
<p>
Создав готовый к выпуÑку пакет APK и проверив его на ÑоответÑтвие вÑем критериÑм <a href="{@docRoot}distribute/essentials/quality/wear.html">качеÑтва приложений Android Wear</a>,
загрузите пакет в конÑоль разработчика. Добавьте Ñнимки Ñкранов Android Wear на Ñтраницу Ñвоего каталога
- и уÑтановите нужные параметры раÑпроÑтранениÑ. ЕÑли вы не знаете, как подготовить приложение к выпуÑку в Google Play, изучите
+ и уÑтановите нужные параметры раÑпроÑтранениÑ. ЕÑли вы не знаете, как подготовить приложение к выпуÑку в Google Play, изучите
<a href="{@docRoot}distribute/googleplay/publish/preparing.html">контрольный ÑпиÑок при выпуÑке приложениÑ.</a>
</p>
diff --git a/docs/html-intl/intl/ru/distribute/tools/launch-checklist.jd b/docs/html-intl/intl/ru/distribute/tools/launch-checklist.jd
index a62e3f1069df..303ab5bab5a0 100644
--- a/docs/html-intl/intl/ru/distribute/tools/launch-checklist.jd
+++ b/docs/html-intl/intl/ru/distribute/tools/launch-checklist.jd
@@ -692,7 +692,7 @@ data-maxresults="6">
</div>
<p>
- Прежде чем выпуÑкать Ñвои Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð²Ñегда полезно получить отзывы
+ Прежде чем выпуÑкать Ñвои Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð²Ñегда полезно получить отзывы
от наÑтоÑщих пользователей &mdash; даже в большем количеÑтве, чем при запуÑке новых приложений. ПоÑтому
наÑтоÑтельно рекомендуетÑÑ Ñ€Ð°ÑпроÑтранить предварительную верÑию Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñреди
таких теÑтирующих пользователей на ключевых Ð´Ð»Ñ Ð²Ð°Ñ Ñ€Ñ‹Ð½ÐºÐ°Ñ… и обеÑпечить Ð´Ð»Ñ Ð½Ð¸Ñ… удобный
@@ -983,7 +983,7 @@ data-maxresults="6">
<li>
<p>
- Помимо окна автоматичеÑкого возмещениÑ, предлагаемого Google Play, будьте щедрыми
+ Помимо окна автоматичеÑкого возмещениÑ, предлагаемого Google Play, будьте щедрыми
в Ñвоей ÑобÑтвенной политике возмещениÑ, удовлетворенные пользователи Ñкорее Ñовершат повторную
покупку в будущем.
</p>
diff --git a/docs/html-intl/intl/ru/distribute/tools/localization-checklist.jd b/docs/html-intl/intl/ru/distribute/tools/localization-checklist.jd
index 7aef25cdef41..dccfb1144907 100644
--- a/docs/html-intl/intl/ru/distribute/tools/localization-checklist.jd
+++ b/docs/html-intl/intl/ru/distribute/tools/localization-checklist.jd
@@ -103,7 +103,7 @@ data-sortorder="-timestamp" data-cardsizes="9x3," data-maxresults="6">
ПоÑле Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½Ð°Ð¼ÐµÑ‡ÐµÐ½Ð½Ñ‹Ñ… Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Ñзыков оцените Ñвои потребноÑти
Ð´Ð»Ñ Ð¸Ñ… поддержки в Ñвоих приложениÑÑ… и заранее Ñпланируйте работу.
Следует учеÑть раÑширение лекÑики, Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº напиÑанию, ограничению интервалов между знаками и
- переноÑа Ñлов, поддержку напиÑÐ°Ð½Ð¸Ñ Ñлева направо и Ñправа налево, а также другие
+ переноÑа Ñлов, поддержку напиÑÐ°Ð½Ð¸Ñ Ñлева направо и Ñправа налево, а также другие
потенциальные факторы каждого Ñзыка.
</p>
diff --git a/docs/html-intl/intl/ru/google/play/filters.jd b/docs/html-intl/intl/ru/google/play/filters.jd
index 0059a1ae5396..ccac3894b1e8 100644
--- a/docs/html-intl/intl/ru/google/play/filters.jd
+++ b/docs/html-intl/intl/ru/google/play/filters.jd
@@ -45,21 +45,21 @@ href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</c
</div>
</div>
-<p>Когда пользователь проÑматривает каталог Google Play или ищет там Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸,
-отображаемые результаты фильтруютÑÑ Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ того, какие Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑовмеÑтимы Ñ ÐµÐ³Ð¾ уÑтройÑтвом.
+<p>Когда пользователь проÑматривает каталог Google Play или ищет там Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸,
+отображаемые результаты фильтруютÑÑ Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ того, какие Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑовмеÑтимы Ñ ÐµÐ³Ð¾ уÑтройÑтвом.
Ðапример, еÑли Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ ÐºÐ°Ð¼ÐµÑ€Ð°, Google Play не отобразит его Ð´Ð»Ñ ÑƒÑтройÑтв,
не оборудованных камерами. Ð¢Ð°ÐºÐ°Ñ <em>фильтрациÑ</em> помогает разработчикам управлÑть
раÑпроÑтранением Ñвоих приложений, а также обеÑпечивает макÑимальный уровень удобÑтва длÑ
пользователей.</p>
-<p>Ð”Ð»Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð² Google Play иÑпользуетÑÑ Ð½ÐµÑколько типов метаданных приложений и
+<p>Ð”Ð»Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð² Google Play иÑпользуетÑÑ Ð½ÐµÑколько типов метаданных приложений и
наÑтройки конфигурации, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ðµ в манифеÑте ÑведениÑ, необходимые
библиотеки, архитектурные требованиÑ, и набор ÑредÑтв ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð·Ð° раÑпроÑтранением, предуÑмотренный в конÑоли разработчика Google
Play, например, геотаргетинг, ценообразование и т. п.</p>
<p>Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð² Google Play чаÑтично оÑновываетÑÑ Ð½Ð° декларациÑÑ… в манифеÑте и прочих
-аÑпектах платформы Android, но фактичеÑкие функции фильтрации определÑÑŽÑ‚ÑÑ
-именно Ñамой платформой и не ÑвÑзаны Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ñ‹Ð¼Ð¸ уровнÑми API-интерфейÑов. Ð’ Ñтом документе
+аÑпектах платформы Android, но фактичеÑкие функции фильтрации определÑÑŽÑ‚ÑÑ
+именно Ñамой платформой и не ÑвÑзаны Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ñ‹Ð¼Ð¸ уровнÑми API-интерфейÑов. Ð’ Ñтом документе
опиÑываютÑÑ Ð´ÐµÐ¹Ñтвующие ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° фильтрации в Google Play.</p>
@@ -81,7 +81,7 @@ Play, например, геотаргетинг, ценообразование
Ñпециально запрашивает данное приложение или пытаетÑÑ Ð¿ÐµÑ€ÐµÐ¹Ñ‚Ð¸ к нему по внешней ÑÑылке, прÑмо указывающей на
идентификатор Ñтого Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² Google Play.</p>
-<p>Можно иÑпользовать любые комбинации доÑтупных фильтров Ð´Ð»Ñ Ñвоих приложений. Ðапример, можно уÑтановить длÑ
+<p>Можно иÑпользовать любые комбинации доÑтупных фильтров Ð´Ð»Ñ Ñвоих приложений. Ðапример, можно уÑтановить длÑ
<code>minSdkVersion</code> требуемое значение <code>"4"</code> и задать <code>smallScreens="false"</code>
в Ñамом приложении, тогда при загрузке Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² Google Play можно будет нацелить приложение
только на определенные европейÑкие Ñтраны (или операторов ÑвÑзи). Таким образом, фильтры Google Play делают приложение недоÑтупным на любом уÑтройÑтве,
@@ -171,7 +171,7 @@ targetSdkVersion</a></code> уÑтановлено
<strong>Результат</strong>: Google Play показывает Ñто приложение пользователÑм вÑех уÑтройÑтв,
пока не будут применены другие фильтры. </p>
<p><strong>Пример 3<br />
- </strong>Ð’ манифеÑте декларируетÑÑ <code>&lt;uses-sdk android:minSdkVersion="4"&gt;</code>
+ </strong>Ð’ манифеÑте декларируетÑÑ <code>&lt;uses-sdk android:minSdkVersion="4"&gt;</code>
и не ÑодержитÑÑ Ñлемент <code>&lt;supports-screens&gt;</code>.
<strong>Результат</strong>: Google Play показывает Ñто приложение вÑем пользователÑм,
пока не будут применены другие фильтры. </p>
@@ -268,7 +268,7 @@ OpenGL-ES (например, уÑтройÑтво Ñ Android 1.5 или боле
<tr id="uses-permission-filtering">
<td valign="top" style="white-space:nowrap;"><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code></td>
<td valign="top">&nbsp;</td>
- <td valign="top">СобÑтвенно, Google Play не выполнÑет фильтрацию по Ñлементам
+ <td valign="top">СобÑтвенно, Google Play не выполнÑет фильтрацию по Ñлементам
<code>&lt;uses-permission&gt;</code>. Однако Ñти Ñлементы ÑчитываютÑÑ
Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð³Ð¾, еÑть ли у Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÐºÐ°ÐºÐ¸Ðµ-либо Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº аппаратным компонентам,
которые, возможно, не были правильно задекларированы Ñлементами <code>&lt;uses-feature&gt;</code>.
@@ -279,7 +279,7 @@ OpenGL-ES (например, уÑтройÑтво Ñ Android 1.5 или боле
камеры.</p>
<p>Ð’ целом, еÑли приложение запрашивает доÑтуп к каким-то аппаратным компонентам,
Google Play Ñчитает, что Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ наличие
-Ñтих компонентов, даже когда Ñто не отражено в ÑоответÑтвующих декларациÑÑ…
+Ñтих компонентов, даже когда Ñто не отражено в ÑоответÑтвующих декларациÑÑ…
<code>&lt;uses-feature&gt;</code>. Затем Google Play оÑущеÑтвлÑет
фильтрацию Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ таких функциональных возможноÑтей, подразумеваемых декларациÑми <code>&lt;uses-feature&gt;</code>
в манифеÑте.</p>
diff --git a/docs/html-intl/intl/ru/guide/components/activities.jd b/docs/html-intl/intl/ru/guide/components/activities.jd
index 5f55a3521350..3fab9701fc9e 100644
--- a/docs/html-intl/intl/ru/guide/components/activities.jd
+++ b/docs/html-intl/intl/ru/guide/components/activities.jd
@@ -50,8 +50,8 @@ page.tags=операциÑ,намерение
отображаетÑÑ Ð²Ð¾ веÑÑŒ Ñкран, однако его размер может быть меньше, и оно может размещатьÑÑ Ð¿Ð¾Ð²ÐµÑ€Ñ… других
окон.</p>
-<p> Как правило, приложение ÑоÑтоит из неÑкольких операций, которые Ñлабо
-ÑвÑзаны друг Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð¼. Обычно одна из операций в приложении обозначаетÑÑ ÐºÐ°Ðº «оÑновнаÑ»,
+<p> Как правило, приложение ÑоÑтоит из неÑкольких операций, которые Ñлабо
+ÑвÑзаны друг Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð¼. Обычно одна из операций в приложении обозначаетÑÑ ÐºÐ°Ðº «оÑновнаÑ»,
Ð¿Ñ€ÐµÐ´Ð»Ð°Ð³Ð°ÐµÐ¼Ð°Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŽ при первом запуÑке приложениÑ. Ð’ Ñвою очередь, каждаÑ
Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ запуÑтить другую операцию Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ñ… дейÑтвий. Каждый раз, когда
запуÑкаетÑÑ Ð½Ð¾Ð²Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ, Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾ÑтанавливаетÑÑ, однако ÑиÑтема ÑохранÑет ее
@@ -115,11 +115,11 @@ setContentView()} Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¼Ð°ÐºÐµÑ‚Ð° пользоватÐ
кнопка, нажатие на которую приводит к выполнению определенного дейÑтвиÑ.</p>
<p>Ð’ Android предуÑмотрен набор уже готовых предÑтавлений, которые можно иÑпользовать Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½Ð° макета и его
-организации. Виджеты — Ñто предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð²Ð¸Ð·ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ð¼Ð¸ (и интерактивными) Ñлементами, например,
+организации. Виджеты — Ñто предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð²Ð¸Ð·ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ð¼Ð¸ (и интерактивными) Ñлементами, например,
кнопками, текÑтовыми полÑми, чекбокÑами или проÑто изображениÑми. Макеты — Ñто предÑтавлениÑ, полученные из клаÑÑа {@link
android.view.ViewGroup}, обеÑпечивающие уникальную модель компоновки Ð´Ð»Ñ Ñвоих дочерних предÑтавлений, таких как линейный
макет, Ñетка или отноÑительный макет. Также можно Ñоздать подклаÑÑ Ð´Ð»Ñ ÐºÐ»Ð°ÑÑов {@link android.view.View} и
-{@link android.view.ViewGroup} (или воÑпользоватьÑÑ ÑущеÑтвующими подклаÑÑами), чтобы Ñоздать ÑобÑтвенные виджеты и
+{@link android.view.ViewGroup} (или воÑпользоватьÑÑ ÑущеÑтвующими подклаÑÑами), чтобы Ñоздать ÑобÑтвенные виджеты и
макеты, и затем применить их к макету Ñвоей операции.</p>
<p>Чаще вÑего Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¼Ð°ÐºÐµÑ‚Ð° Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ предÑтавлений иÑпользуетÑÑ XML-файл макета, Ñохраненный в
@@ -343,8 +343,8 @@ Android выполнÑет такое управление за ваÑ, поÑÑ‚
также иногда называетÑÑ Â«Ð’Ñ‹Ð¿Ð¾Ð»Ð½ÑетÑÑ».)</dd>
<dt><i>ПриоÑтановлена</i></dt>
- <dd>Ðа переднем фоне выполнÑетÑÑ Ð´Ñ€ÑƒÐ³Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°ÐµÑ‚ÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, однако Ñта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾-прежнему не Ñкрыта. То еÑть
-поверх текущей операции отображаетÑÑ Ð´Ñ€ÑƒÐ³Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ, чаÑтично Ð¿Ñ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð°Ñ Ð¸Ð»Ð¸ не занимающаÑ
+ <dd>Ðа переднем фоне выполнÑетÑÑ Ð´Ñ€ÑƒÐ³Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°ÐµÑ‚ÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, однако Ñта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾-прежнему не Ñкрыта. То еÑть
+поверх текущей операции отображаетÑÑ Ð´Ñ€ÑƒÐ³Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ, чаÑтично Ð¿Ñ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð°Ñ Ð¸Ð»Ð¸ не занимающаÑ
полноÑтью веÑÑŒ Ñкран. ПриоÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ñтью активна (объект {@link android.app.Activity}
по-прежнему находитÑÑ Ð² памÑти, в нем ÑохранÑÑŽÑ‚ÑÑ Ð²Ñе ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ ÑоÑтоÑнии и Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± Ñлементах, и он также оÑтаетÑÑ ÑвÑзанным Ñ
диÑпетчером окон), однако в Ñлучае оÑтрой нехватки памÑти ÑиÑтема может завершить ее.</dd>
@@ -357,7 +357,7 @@ Android выполнÑет такое управление за ваÑ, поÑÑ‚
может завершить ее.</dd>
</dl>
-<p>ЕÑли Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ð¾Ñтановлена или полноÑтью оÑтановлена, ÑиÑтема может очиÑтить ее из памÑти путем
+<p>ЕÑли Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ð¾Ñтановлена или полноÑтью оÑтановлена, ÑиÑтема может очиÑтить ее из памÑти путем
Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñамой операции (Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ метода {@link android.app.Activity#finish finish()}) или проÑто завершить ее
процеÑÑ. Ð’ Ñлучае повторного Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸ (поÑле ее завершениÑ) ее потребуетÑÑ Ñоздать
полноÑтью.</p>
@@ -366,7 +366,7 @@ Android выполнÑет такое управление за ваÑ, поÑÑ‚
<h3 id="ImplementingLifecycleCallbacks">Ð ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ñ… вызовов жизненного цикла</h3>
-<p>При переходе операции из одного вышеопиÑанного ÑоÑтоÑÐ½Ð¸Ñ Ð² другое, ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ð± Ñтом
+<p>При переходе операции из одного вышеопиÑанного ÑоÑтоÑÐ½Ð¸Ñ Ð² другое, ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ð± Ñтом
реализуютÑÑ Ñ‡ÐµÑ€ÐµÐ· различные методы обратного вызова. Ð’Ñе методы обратного вызова предÑтавлÑÑŽÑ‚ Ñобой привÑзки, которые
можно переопределить Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñщего дейÑÑ‚Ð²Ð¸Ñ Ð¿Ñ€Ð¸ изменении ÑоÑтоÑÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸. Ð£ÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð½Ð¸Ð¶Ðµ базоваÑ
Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ каждый из оÑновных методов жизненного цикла.</p>
@@ -431,7 +431,7 @@ android.app.Activity#onStop onStop()}. Ð’ течение Ñтого времен
Ñохранить реÑурÑÑ‹, необходимые Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ. Ðапример, можно зарегиÑтрировать объект
{@link android.content.BroadcastReceiver} в методе {@link
android.app.Activity#onStart onStart()} Ð´Ð»Ñ Ð¾Ñ‚ÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹, влиÑющих на пользовательÑкий интерфейÑ, а затем отменить его региÑтрацию
-в методе {@link android.app.Activity#onStop onStop()}, когда пользователь больше не видит
+в методе {@link android.app.Activity#onStop onStop()}, когда пользователь больше не видит
отображаемого. Ð’ течение вÑего жизненного цикла операции ÑиÑтема может неÑколько раз вызывать методы {@link android.app.Activity#onStart onStart()} и {@link
android.app.Activity#onStop onStop()}, поÑкольку
Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‚Ð¾ отображаетÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, то ÑкрываетÑÑ Ð¾Ñ‚ него.</p></li>
@@ -629,7 +629,7 @@ android.os.Bundle} передаетÑÑ Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ значением (Ñ
<p class="note"><strong>Примечание.</strong> Ðет никаких гарантий, что метод {@link
android.app.Activity#onSaveInstanceState onSaveInstanceState()} будет вызван до того, как ваша
Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ уничтожена, поÑкольку ÑущеÑтвуют Ñлучаи, когда нет необходимоÑти ÑохранÑть ÑоÑтоÑние
-(например, когда пользователь покидает вашу операцию нажатием кнопки <em>Ðазад</em>,
+(например, когда пользователь покидает вашу операцию нажатием кнопки <em>Ðазад</em>,
Ñвным образом
Ð·Ð°ÐºÑ€Ñ‹Ð²Ð°Ñ ÐµÐµ). ЕÑли ÑиÑтема вызывает метод {@link android.app.Activity#onSaveInstanceState
onSaveInstanceState()}, она делает Ñто до вызова метода {@link
@@ -719,7 +719,7 @@ android.app.Activity#onCreate onCreate()}), как опиÑано в предыÐ
<h3 id="CoordinatingActivities">СоглаÑование операций</h3>
<p>Когда одна Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿ÑƒÑкает другую, в жизненных циклах обеих из них проиÑходит переход из одного ÑоÑтоÑÐ½Ð¸Ñ Ð² другое. ÐŸÐµÑ€Ð²Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ
-приоÑтанавливаетÑÑ Ð¸ заврешаетÑÑ (однако она не будет оÑтановлена, еÑли она по-прежнему видима на фоне), а втораÑ
+приоÑтанавливаетÑÑ Ð¸ заврешаетÑÑ (однако она не будет оÑтановлена, еÑли она по-прежнему видима на фоне), а втораÑ
Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ ÑоздаетÑÑ. Ð’ Ñлучае, еÑли Ñти операции обмениваютÑÑ Ð´Ð°Ð½Ð½Ñ‹Ð¼, Ñохраненными на диÑке или в другом меÑте, важно понимать,
что Ð¿ÐµÑ€Ð²Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ оÑтанавливаетÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ñтью до тех пор, пока не будет Ñоздана Ð²Ñ‚Ð¾Ñ€Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ.
Ðаоборот, процеÑÑ Ð·Ð°Ð¿ÑƒÑка второй операции накладываетÑÑ Ð½Ð° процеÑÑ Ð¾Ñтановки первой
diff --git a/docs/html-intl/intl/ru/guide/components/bound-services.jd b/docs/html-intl/intl/ru/guide/components/bound-services.jd
index ad690b776ef0..4b2ae2618240 100644
--- a/docs/html-intl/intl/ru/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/ru/guide/components/bound-services.jd
@@ -46,9 +46,9 @@ parent.link=services.html
IPC. ПривÑÐ·Ð°Ð½Ð½Ð°Ñ Ñлужба обычно работает, пока другой компонент приложениÑ
привÑзан к ней. Она не работает поÑтоÑнно в фоновом режиме.</p>
-<p>Ð’ Ñтом документе раÑÑказываетÑÑ, как Ñоздать привÑзанную Ñлужбу, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзку
+<p>Ð’ Ñтом документе раÑÑказываетÑÑ, как Ñоздать привÑзанную Ñлужбу, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзку
Ñлужбы к другим компонентам приложениÑ. Также рекомендуем обратитьÑÑ Ðº Ñтатье <a href="{@docRoot}guide/components/services.html">Службы</a>, чтобы узнать подробнее
-о Ñлужбах, например, об организации отправки уведомлений от Ñлужбы, наÑтройке Ñлужбы
+о Ñлужбах, например, об организации отправки уведомлений от Ñлужбы, наÑтройке Ñлужбы
на работу на переднем плане и т. д.</p>
@@ -91,7 +91,7 @@ android.content.Context#stopService stopService()}.</p>
bindService()}. ПоÑле привÑзки он должен предоÑтавить реализацию метода {@link
android.content.ServiceConnection}, который Ñлужит Ð´Ð»Ñ Ð¾Ñ‚ÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Ñлужбе. Метод {@link
android.content.Context#bindService bindService()} возвращаетÑÑ Ð½ÐµÐ·Ð°Ð¼ÐµÐ´Ð»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ без значениÑ, однако
-, когда ÑиÑтема Android уÑтанавливает подключение
+, когда ÑиÑтема Android уÑтанавливает подключение
клиент-Ñлужба, она вызывает метод {@link
android.content.ServiceConnection#onServiceConnected onServiceConnected()} Ð´Ð»Ñ {@link
android.content.ServiceConnection}, чтобы выдать объект {@link android.os.IBinder}, который
@@ -127,7 +127,7 @@ android.content.ServiceConnection}, чтобы выдать объект {@link
поÑле чего он может иÑпользовать его Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¿Ñ€Ñмого доÑтупа к общедоÑтупным методам, имеющимÑÑ Ð»Ð¸Ð±Ð¾ в реализации {@link android.os.Binder},
либо даже в {@link android.app.Service}.
<p>Этот ÑпоÑоб ÑвлÑетÑÑ Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ñ‡Ñ‚Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼, когда Ñлужба проÑто выполнÑетÑÑ Ð² фоновом режиме длÑ
-вашего приложениÑ. Этот ÑпоÑоб не подходит Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñа только тогда,
+вашего приложениÑ. Этот ÑпоÑоб не подходит Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñа только тогда,
когда ваша Ñлужба иÑпользуетÑÑ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ приложениÑми или в отдельных процеÑÑах.</dd>
<dt><a href="#Messenger">ИÑпользование объекта Messenger</a></dt>
@@ -149,7 +149,7 @@ android.os.Messenger} организует очередь вÑех запроÑÐ
примитивы, которые Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ ÑиÑтема может раÑпознать и раÑпределить по процеÑÑам Ð´Ð»Ñ Ð¾Ñ€Ð³Ð°Ð½Ð¸Ð·Ð°Ñ†Ð¸Ð¸
взаимодейÑÑ‚Ð²Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ ними (IPC). Предыдущий ÑпоÑоб Ñ Ð¸Ñпользованием объекта {@link android.os.Messenger} фактичеÑки оÑнован на AIDL, поÑкольку Ñто его
Ð±Ð°Ð·Ð¾Ð²Ð°Ñ Ñтруктура. Как уже упоминалоÑÑŒ выше, объект {@link android.os.Messenger} Ñоздает очередь из вÑех
-запроÑов клиентов в рамках одного потока, поÑтому Ñлужба одновременно получает только один запроÑ. Однако,
+запроÑов клиентов в рамках одного потока, поÑтому Ñлужба одновременно получает только один запроÑ. Однако,
еÑли необходимо, чтобы Ñлужба обрабатывала одновременно Ñразу неÑколько запроÑов, можно иÑпользовать AIDL
напрÑмую. Ð’ таком Ñлучае ваша Ñлужба должна поддерживать многопоточноÑть и должна быть потокобезопаÑной.
<p>Чтобы иÑпользовать AIDL напрÑмую, необходимо
@@ -499,7 +499,7 @@ MessengerServiceActivities.java}</a> (клиент).</p>
onBind()} Ñлужбы, который возвращает объект {@link android.os.IBinder} Ð´Ð»Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ Ñо Ñлужбой.</p>
<p>ПривÑзка выполнÑетÑÑ Ð°Ñинхронно. {@link android.content.Context#bindService
-bindService()} возвращаетÑÑ Ñразу же и <em>не</em> возвращает клиенту объект
+bindService()} возвращаетÑÑ Ñразу же и <em>не</em> возвращает клиенту объект
{@link android.os.IBinder}. Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° {@link android.os.IBinder} клиенту необходимо Ñоздать ÑкземплÑÑ€ {@link
android.content.ServiceConnection} и передать его в метод {@link android.content.Context#bindService
bindService()}. Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ {@link android.content.ServiceConnection} включает метод обратного вызова,
@@ -608,7 +608,7 @@ android.app.Activity#onStop onStop()}.</li>
во Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð² {@link android.app.Activity#onResume onResume()} и {@link
android.app.Activity#onPause onPause()} вашей операции, поÑкольку такие обратные вызовы проиÑходÑÑ‚ при каждом переходе из одного ÑоÑтоÑÐ½Ð¸Ñ Ð² другое,
а обработка данных, выполнÑÐµÐ¼Ð°Ñ Ð¿Ñ€Ð¸ таких переходах, должна быть минимальной. Кроме того, еÑли к одной и той же
-Ñлужбе привÑзано неÑколько операций в вашем приложении, и имеетÑÑ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ между
+Ñлужбе привÑзано неÑколько операций в вашем приложении, и имеетÑÑ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ между
Ð´Ð²ÑƒÐ¼Ñ Ñтими операциÑми, Ñлужба может быть уничтожена и Ñоздана повторно, поÑкольку Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñет отмену привÑзки
(во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¸Ð¾Ñтановки) до того, как ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñлужба выполнит привÑзку (во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾Ð·Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ). (Подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ ÑоглаÑовании жизненных циклов операций при таких переходах
предÑтавлены в Ñтатье
diff --git a/docs/html-intl/intl/ru/guide/components/fragments.jd b/docs/html-intl/intl/ru/guide/components/fragments.jd
index b13fcc3da7ef..6fc39b7b019f 100644
--- a/docs/html-intl/intl/ru/guide/components/fragments.jd
+++ b/docs/html-intl/intl/ru/guide/components/fragments.jd
@@ -36,7 +36,7 @@ parent.link=activities.html
<li>{@link android.app.FragmentManager}</li>
<li>{@link android.app.FragmentTransaction}</li>
</ol>
-
+
<h2>См. также:</h2>
<ol>
<li><a href="{@docRoot}training/basics/fragments/index.html">Создание динамичеÑкого интерфейÑа Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ð¸Ñпользованием фрагментов</a></li>
@@ -56,10 +56,10 @@ parent.link=activities.html
<p>Фрагмент вÑегда должен быть вÑтроен в операцию, и на его жизненный цикл напрÑмую
влиÑет жизненный цикл операции. Ðапример, когда Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ð¾Ñтановлена, в том же ÑоÑтоÑнии находÑÑ‚ÑÑ Ð¸ вÑе
фрагменты внутри нее, а когда Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ ÑƒÐ½Ð¸Ñ‡Ñ‚Ð¾Ð¶Ð°ÐµÑ‚ÑÑ, уничтожаютÑÑ Ð¸ вÑе фрагменты. Однако пока
-Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑетÑÑ (Ñто ÑоответÑтвует ÑоÑтоÑнию <em>возобновлена</em> <a href="{@docRoot}guide/components/activities.html#Lifecycle">жизненного цикла</a>), можно
+Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑетÑÑ (Ñто ÑоответÑтвует ÑоÑтоÑнию <em>возобновлена</em> <a href="{@docRoot}guide/components/activities.html#Lifecycle">жизненного цикла</a>), можно
манипулировать каждым фрагментом незавиÑимо, например добавлÑть или удалÑть их. Когда разработчик выполнÑет такие
транзакции Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸, он может также добавить их в Ñтек переходов назад, которым управлÑет
-операциÑ. Каждый Ñлемент Ñтека переходов назад в операции ÑвлÑетÑÑ Ð·Ð°Ð¿Ð¸Ñью
+операциÑ. Каждый Ñлемент Ñтека переходов назад в операции ÑвлÑетÑÑ Ð·Ð°Ð¿Ð¸Ñью
выполненной транзакции Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼. Стек переходов назад позволÑет пользователю обратить транзакцию Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ (выполнить навигацию в обратном направлении),
Ð½Ð°Ð¶Ð¸Ð¼Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÑƒ <em>Ðазад</em>.</p>
@@ -96,7 +96,7 @@ android.view.ViewGroup} внутри иерархии предÑтавлений
операции, как на планшете, изображенном на риÑунке 1.</p>
<p>Следует разрабатывать каждый фрагмент как модульный и повторно иÑпользуемый компонент операции. ПоÑкольку
- каждый фрагмент определÑет ÑобÑтвенный макет и ÑобÑтвенное поведение Ñо Ñвоими обратными вызовами жизненного цикла, разработчик может
+ каждый фрагмент определÑет ÑобÑтвенный макет и ÑобÑтвенное поведение Ñо Ñвоими обратными вызовами жизненного цикла, разработчик может
включить один фрагмент в неÑколько операций. ПоÑтому он должен предуÑмотреть повторное иÑпользование фрагмента и не допуÑкать,
чтобы один фрагмент непоÑредÑтвенно манипулировал другим. Это оÑобенно важно, потому что модульноÑть фрагментов
позволÑет изменÑть их ÑÐ¾Ñ‡ÐµÑ‚Ð°Ð½Ð¸Ñ Ð² ÑоответÑтвии Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ размерами Ñкранов. ЕÑли
@@ -335,7 +335,7 @@ fragmentTransaction.commit();
<p>Первый аргумент, передаваемый методу {@link android.app.FragmentTransaction#add(int,Fragment) add()},
предÑтавлÑет Ñобой контейнерный объект {@link android.view.ViewGroup} Ð´Ð»Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð°, указанный при помощи
идентификатора реÑурÑа. Второй параметр — Ñто фрагмент, который нужно добавить.</p>
- <p>Выполнив Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ
+ <p>Выполнив Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ
{@link android.app.FragmentTransaction}, необходимо
вызвать метод {@link android.app.FragmentTransaction#commit}, чтобы они вÑтупили в Ñилу.</p>
</li>
@@ -355,14 +355,14 @@ android.app.FragmentTransaction#add(Fragment,String)} (передав ему уÐ
android.app.Fragment#onCreateView onCreateView()}. ПоÑтому в реализации Ñтого метода нет необходимоÑти.</p>
<p>Передача Ñтрокового тега ÑвойÑтвенна не только фрагментам без пользовательÑкого интерфейÑа, поÑтому можно
-передавать Ñтроковые теги и фрагментам, имеющим пользовательÑкий интерфейÑ. Однако, еÑли у фрагмента нет
+передавать Ñтроковые теги и фрагментам, имеющим пользовательÑкий интерфейÑ. Однако, еÑли у фрагмента нет
пользовательÑкого интерфейÑа, то Ñтроковый тег ÑвлÑетÑÑ ÐµÐ´Ð¸Ð½Ñтвенным ÑпоÑобом его идентификации. ЕÑли впоÑледÑтвии потребуетÑÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ фрагмент от
операции, нужно будет вызвать метод {@link android.app.FragmentManager#findFragmentByTag
findFragmentByTag()}.</p>
<p>Пример операции, иÑпользующей фрагмент в качеÑтве фонового потока, без пользовательÑкого интерфейÑа, приведен в образце кода {@code
-FragmentRetainInstance.java}, входÑщем в чиÑло образцов в SDK (и доÑтупном при помощи
-Android SDK Manager). Путь к нему в ÑиÑтеме —
+FragmentRetainInstance.java}, входÑщем в чиÑло образцов в SDK (и доÑтупном при помощи
+Android SDK Manager). Путь к нему в ÑиÑтеме —
<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>.</p>
@@ -378,7 +378,7 @@ Android SDK Manager). Путь к нему в ÑиÑтеме —
<li>получать фрагменты, имеющиеÑÑ Ð² операции, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ метода {@link
android.app.FragmentManager#findFragmentById findFragmentById()} (Ð´Ð»Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð¾Ð², предоÑтавлÑющих пользовательÑкий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð²
макете операции) или {@link android.app.FragmentManager#findFragmentByTag
-findFragmentByTag()} (как Ð´Ð»Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð¾Ð², имеющих пользовательÑкий интерфейÑ, так и Ð´Ð»Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð¾Ð² без него);</li>
+findFragmentByTag()} (как Ð´Ð»Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð¾Ð², имеющих пользовательÑкий интерфейÑ, так и Ð´Ð»Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð¾Ð² без него);</li>
<li>Ñнимать фрагменты Ñо Ñтека переходов назад методом {@link
android.app.FragmentManager#popBackStack()} (Ð¸Ð¼Ð¸Ñ‚Ð¸Ñ€ÑƒÑ Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ðµ кнопки <em>Ðазад</em> пользователем);</li>
<li>региÑтрировать процеÑÑ-Ñлушатель изменений в Ñтеке переходов назад при помощи метода {@link
@@ -475,7 +475,7 @@ addToBackStack()}, при фикÑации транзакции фрагмент
<p>Вызов метода {@link android.app.FragmentTransaction#commit()} не приводит к немедленному выполнению
транзакции. Метод запланирует ее выполнение в потоке пользовательÑкого интерфейÑа операции (в «главном» потоке), как только
у потока поÑвитÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñть Ð´Ð»Ñ Ñтого. Впрочем, при необходимоÑти можно вызвать {@link
-android.app.FragmentManager#executePendingTransactions()} из потока пользовательÑкого интерфейÑа, чтобы
+android.app.FragmentManager#executePendingTransactions()} из потока пользовательÑкого интерфейÑа, чтобы
транзакции, запланированные методом {@link android.app.FragmentTransaction#commit()} были выполнены немедленно. Как правило,
в Ñтом нет необходимоÑти, за иÑключением Ñлучаев, когда Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ ÑвлÑетÑÑ Ð·Ð°Ð²Ð¸ÑимоÑтью Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹ в других потоках.</p>
@@ -600,7 +600,7 @@ href="{@docRoot}resources/samples/NotePad/index.html">NotePad sample</a>. -->ДÐ
<h3 id="ActionBar">Добавление Ñлементов в Ñтроку дейÑтвий</h3>
-<p>Фрагменты могут добавлÑть пункты меню в <a href="{@docRoot}guide/topics/ui/menus.html#options-menu">Меню вариантов</a> операции (и, Ñледовательно, в <a href="{@docRoot}guide/topics/ui/actionbar.html">Строку дейÑтвий</a>), реализовав
+<p>Фрагменты могут добавлÑть пункты меню в <a href="{@docRoot}guide/topics/ui/menus.html#options-menu">Меню вариантов</a> операции (и, Ñледовательно, в <a href="{@docRoot}guide/topics/ui/actionbar.html">Строку дейÑтвий</a>), реализовав
{@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()}. Однако, чтобы Ñтот метод мог
принимать вызовы, необходимо вызывать {@link
android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()} во Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° {@link
@@ -639,7 +639,7 @@ android.app.Fragment#onContextItemSelected(MenuItem) onContextItemSelected()}.</
фрагмента</p>
</div>
-<p>Управление жизненным циклом фрагмента во многом аналогично управлению жизненным циклом операции. Как и
+<p>Управление жизненным циклом фрагмента во многом аналогично управлению жизненным циклом операции. Как и
операциÑ, фрагмент может ÑущеÑтвовать в одном из трех ÑоÑтоÑний:</p>
<dl>
@@ -677,7 +677,7 @@ android.app.Fragment#onActivityCreated onActivityCreated()}. ДополнитеÐ
android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} во Ð²Ñ€ÐµÐ¼Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸,
удалÑющей фрагмент.</p>
-<p>Ð’ оÑтальном управление жизненным циклом фрагмента очень похоже на управление жизненным циклом
+<p>Ð’ оÑтальном управление жизненным циклом фрагмента очень похоже на управление жизненным циклом
операции. ПоÑтому практичеÑкие рекомендации по <a href="{@docRoot}guide/components/activities.html#Lifecycle">управлению жизненным циклом
операций</a> применимы и к фрагментам. При Ñтом разработчику необходимо понимать, как жизненный цикл
операции влиÑет на жизненный цикл фрагмента.</p>
@@ -722,7 +722,7 @@ android.app.Activity#onCreate onCreate()}, фрагмент внутри ÑтоÐ
{@link android.app.Fragment#onActivityCreated onActivityCreated()}.</p>
<p>Когда Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð¸Ñ‚ в ÑоÑтоÑние «возобновлена», можно Ñвободно добавлÑть в нее фрагменты и удалÑть
-их. Таким образом, жизненный цикл фрагмента может быть незавиÑимо изменен, только пока Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾ÑтаетÑÑ
+их. Таким образом, жизненный цикл фрагмента может быть незавиÑимо изменен, только пока Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾ÑтаетÑÑ
в ÑоÑтоÑнии «возобновлена».</p>
<p>Однако, когда Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ из Ñтого ÑоÑтоÑниÑ, продвижение фрагмента по его
@@ -785,7 +785,7 @@ android.widget.FrameLayout}), либо запуÑкаетÑÑ Ð½Ð¾Ð²Ð°Ñ Ð¾Ð¿ÐµÑ
<p>Второй фрагмент, {@code DetailsFragment}, отображает краткое Ñодержание пьеÑÑ‹, выбранной в
ÑпиÑке {@code TitlesFragment}:</p>
-
+
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
<p>Ð’Ñпомним код клаÑÑа {@code TitlesFragment}: еÑли пользователь нажимает на пункт ÑпиÑка, а
@@ -798,7 +798,7 @@ android.widget.FrameLayout}), либо запуÑкаетÑÑ Ð½Ð¾Ð²Ð°Ñ Ð¾Ð¿ÐµÑ
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
details_activity}
-
+
<p>Обратите внимание, что в альбомной конфигурации Ñта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ ÑамоÑтоÑтельно завершаетÑÑ, чтобы главнаÑ
Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð³Ð»Ð° принÑть управление и отобразить фрагмент {@code DetailsFragment} Ñ€Ñдом Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼{@code TitlesFragment}.
Это может произойти, еÑли пользователь запуÑтит операцию {@code DetailsActivity} в книжной ориентации Ñкрана, а
diff --git a/docs/html-intl/intl/ru/guide/components/fundamentals.jd b/docs/html-intl/intl/ru/guide/components/fundamentals.jd
index 181cbbdfb107..07f001a545ad 100644
--- a/docs/html-intl/intl/ru/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/ru/guide/components/fundamentals.jd
@@ -165,7 +165,7 @@ android.provider.ContactsContract.Data}), Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸ запиÑи Ñ
<p>Уникальной оÑобенноÑтью ÑиÑтемы Android ÑвлÑетÑÑ Ñ‚Ð¾, что любое приложение может запуÑтить компонент
другого приложениÑ. Ðапример, еÑли вы хотите дать пользователю возможноÑть фотографировать, иÑпользуÑ
-камеру уÑтройÑтва, то, поÑкольку навернÑка имеетÑÑ Ð´Ñ€ÑƒÐ³Ð¾Ðµ приложение, которое может выполнить Ñто дейÑтвие, вмеÑто того чтобы разработать операцию Ñ„Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² Ñвоем приложении, вы можете вызвать
+камеру уÑтройÑтва, то, поÑкольку навернÑка имеетÑÑ Ð´Ñ€ÑƒÐ³Ð¾Ðµ приложение, которое может выполнить Ñто дейÑтвие, вмеÑто того чтобы разработать операцию Ñ„Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² Ñвоем приложении, вы можете вызвать
такое приложение. Вам не
нужно внедрÑть код из Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¼ÐµÑ€Ñ‹ или даже уÑтанавливать на него ÑÑылку.
ВмеÑто Ñтого вы можете проÑто запуÑтить операцию фотографированиÑ
@@ -212,7 +212,7 @@ URI, указывающий на выбранный контакт).</p>
Ñодержит только Ñтроку "аккумулÑтор разрÑжен").</p>
<p>Компоненты четвертого типа – поÑтавщики контента – ÑообщениÑми Intent не активируютÑÑ. Они
-активируютÑÑ Ð¿Ð¾ запроÑу от {@link android.content.ContentResolver}. Процедура определениÑ
+активируютÑÑ Ð¿Ð¾ запроÑу от {@link android.content.ContentResolver}. Процедура определениÑ
контента (content resolver) обрабатывает вÑе прÑмые транзакции Ñ Ð¿Ð¾Ñтавщиком контента, Ñ Ñ‚ÐµÐ¼ чтобы Ñтого не пришлоÑÑŒ делать компоненту, который
выполнÑет транзакции Ñ Ð¿Ð¾Ñтавщиком. ВмеÑто Ñтого он вызывает методы Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° {@link
android.content.ContentResolver}. Это формирует Ñлой, абÑтрагирующий (в целÑÑ… безопаÑноÑти) поÑтавщика
@@ -224,7 +224,7 @@ android.content.ContentResolver}. Это формирует Ñлой, абÑтр
передав объект {@link android.content.Intent} методу {@link android.content.Context#startActivity
startActivity()} или {@link android.app.Activity#startActivityForResult startActivityForResult()}
(еÑли требуетÑÑ, чтобы Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð²ÐµÑ€Ð½ÑƒÐ»Ð° результат).</li>
- <li>Можно запуÑтить Ñлужбу (либо выдать работающей Ñлужбе новые инÑтрукции),
+ <li>Можно запуÑтить Ñлужбу (либо выдать работающей Ñлужбе новые инÑтрукции),
передав объект {@link android.content.Intent} методу {@link android.content.Context#startService
startService()}. Либо можно уÑтановить привÑзку к Ñлужбе, передав объект{@link android.content.Intent} методу
{@link android.content.Context#bindService bindService()}.</li>
@@ -236,7 +236,7 @@ android.content.Context#sendStickyBroadcast sendStickyBroadcast()}.</li>
android.content.ContentProvider#query query()} Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° {@link android.content.ContentResolver}.</li>
</ul>
-<p>Подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± иÑпользовании объектов Intent приведены в документе <a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent и
+<p>Подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± иÑпользовании объектов Intent приведены в документе <a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent и
фильтры объектов Intent</a>. Более Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± активации определенных компонентов также приведена
в Ñледующих документах: <a href="{@docRoot}guide/components/activities.html">Операции</a>, <a href="{@docRoot}guide/components/services.html">Службы</a>, {@link
android.content.BroadcastReceiver} и <a href="{@docRoot}guide/topics/providers/content-providers.html">ПоÑтавщики контента</a>.</p>
@@ -312,7 +312,7 @@ href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a
в манифеÑте, поÑтому они не могут быть запущены. Рвот
приемники широковещательных Ñообщений
можно либо объÑвить в манифеÑте, либо Ñоздать динамичеÑки в коде (как объекты
-{@link android.content.BroadcastReceiver}) и зарегиÑтрировать в ÑиÑтеме путем вызова
+{@link android.content.BroadcastReceiver}) и зарегиÑтрировать в ÑиÑтеме путем вызова
{@link android.content.Context#registerReceiver registerReceiver()}.</p>
<p>Подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ Ñтруктуризации файла манифеÑта Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñм. в документе <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">Файл AndroidManifest.xml</a>
@@ -331,7 +331,7 @@ href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a
дейÑтвие, и запуÑтить его. При наличии неÑкольких компонентов, которые могут выполнить дейÑтвие, опиÑанное в Ñообщении
Intent, пользователь выбирает, какой из них будет иÑпользоватьÑÑ.</p>
-<p>СиÑтема определÑет компоненты, которые могут ответить на Ñообщение Intent, путем ÑравнениÑ
+<p>СиÑтема определÑет компоненты, которые могут ответить на Ñообщение Intent, путем ÑравнениÑ
полученного ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Intent Ñ <i>фильтрами объектов Intent,</i> указанными в файле манифеÑта других приложений, имеющихÑÑ
на уÑтройÑтве.</p>
@@ -373,13 +373,13 @@ startActivity()}, ÑиÑтема Ñможет запуÑтить вашу опе
<p>СущеÑтвует огромное количеÑтво уÑтройÑтв, работающих под управлением Android, и не вÑе они имеют
одинаковые функциональные возможноÑти. Чтобы ваше приложение не могло быть уÑтановлено на уÑтройÑтвах,
в которых отÑутÑтвуют функции, необходимые приложению, важно четко определить профиль длÑ
-типов уÑтройÑтв, поддерживаемых вашим приложением, указав Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº аппаратному и программному обеÑпечению в
+типов уÑтройÑтв, поддерживаемых вашим приложением, указав Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº аппаратному и программному обеÑпечению в
файле манифеÑта. Эти объÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ большей чаÑти ноÑÑÑ‚ информационный характер, ÑиÑтема их не
читает. Однако их читают внешние Ñлужбы, например Google Play, Ñ Ñ†ÐµÐ»ÑŒÑŽ обеÑпечениÑ
фильтрации Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹, которые ищут Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñвоих уÑтройÑтв.</p>
<p>Ðапример, еÑли вашему приложению требуетÑÑ ÐºÐ°Ð¼ÐµÑ€Ð° и оно иÑпользует API-интерфейÑÑ‹ из Android 2.1 (<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">уровень API</a> 7),
-Ñти параметры Ñледует объÑвить в файле манифеÑта в качеÑтве требований Ñледующим образом:</p>
+Ñти параметры Ñледует объÑвить в файле манифеÑта в качеÑтве требований Ñледующим образом:</p>
<pre>
&lt;manifest ... >
@@ -390,7 +390,7 @@ startActivity()}, ÑиÑтема Ñможет запуÑтить вашу опе
&lt;/manifest>
</pre>
-<p>Теперь ваше приложение Ð½ÐµÐ»ÑŒÐ·Ñ Ð±ÑƒÐ´ÐµÑ‚ уÑтановить из Google Play на уÑтройÑтвах, в которых <em>нет</em> камеры, а также на уÑтройÑтвах, работающих под управлением
+<p>Теперь ваше приложение Ð½ÐµÐ»ÑŒÐ·Ñ Ð±ÑƒÐ´ÐµÑ‚ уÑтановить из Google Play на уÑтройÑтвах, в которых <em>нет</em> камеры, а также на уÑтройÑтвах, работающих под управлением
Android верÑии <em>ниже</em> 2.1.</p>
<p>Однако можно также объÑвить, что приложение иÑпользует камеру, но Ð´Ð»Ñ ÐµÐ³Ð¾ работы она не ÑвлÑетÑÑ
@@ -430,7 +430,7 @@ logo.png} (Ñохраненный в папке {@code res/drawable/}), инÑÑ‚
ÑоответÑтвующем Ñзыке.</p>
<p>Android поддерживает разные <em>квалификаторы</em> Ð´Ð»Ñ ÑоответÑтвующих реÑурÑов. Квалификатор
- предÑтавлÑет Ñобой короткую Ñтроку, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð²ÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ÑÑ Ð² имена каталогов реÑурÑов Ñ Ñ†ÐµÐ»ÑŒÑŽ
+ предÑтавлÑет Ñобой короткую Ñтроку, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð²ÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ÑÑ Ð² имена каталогов реÑурÑов Ñ Ñ†ÐµÐ»ÑŒÑŽ
Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸ уÑтройÑтва, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ Ñти реÑурÑÑ‹ Ñледует иÑпользовать. Ð’ качеÑтве другого
примера можно Ñказать, что Ð´Ð»Ñ Ñвоих операций Ñледует Ñоздавать разные макеты, которые будут ÑоответÑтвовать
размеру и ориентации Ñкрана уÑтройÑтва. Ðапример, когда Ñкран уÑтройÑтва имеет книжную
@@ -469,7 +469,7 @@ logo.png} (Ñохраненный в папке {@code res/drawable/}), инÑÑ‚
<dl>
<dt><a href="{@docRoot}guide/practices/compatibility.html">СовмеÑтимоÑть уÑтройÑтв</a></dt>
<dd>Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ том, каким образом ÑиÑтема Android работает на уÑтройÑтвах разных типов, и общие ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ том,
- как оптимизировать Ñвое приложение Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ уÑтройÑтва или ограничить круг уÑтройÑтв, на которых может быть уÑтановлено
+ как оптимизировать Ñвое приложение Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ уÑтройÑтва или ограничить круг уÑтройÑтв, на которых может быть уÑтановлено
приложение.</dd>
<dt><a href="{@docRoot}guide/topics/security/permissions.html">СиÑтемные разрешениÑ</a></dt>
<dd>Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ том, как ÑиÑтема Android ограничивает доÑтуп приложений к определенным API-интерфейÑам Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑиÑтемы
diff --git a/docs/html-intl/intl/ru/guide/components/index.jd b/docs/html-intl/intl/ru/guide/components/index.jd
index 41d5a3491bf2..13050f262b79 100644
--- a/docs/html-intl/intl/ru/guide/components/index.jd
+++ b/docs/html-intl/intl/ru/guide/components/index.jd
@@ -1,7 +1,7 @@
page.title=Компоненты приложениÑ
page.landing=true
-page.landing.intro=Платформа приложений ÑиÑтемы Android позволÑет Ñоздавать функциональные и инновационные Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ набора компонентов, которые можно иÑпользовать многократно. Ð’ Ñтом разделе раÑÑказываетÑÑ Ð¾ том, как Ñоздавать компоненты, определÑющие Ñлементы Ñтруктуры вашего приложениÑ, и как ÑвÑзывать их воедино Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ объектов Intent.
-page.metaDescription=Платформа приложений ÑиÑтемы Android позволÑет Ñоздавать функциональные и инновационные Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ набора компонентов, которые можно иÑпользовать многократно. Ð’ Ñтом разделе раÑÑказываетÑÑ Ð¾ том, как Ñоздавать компоненты, определÑющие Ñлементы Ñтруктуры вашего приложениÑ, и как ÑвÑзывать их воедино Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ объектов Intent.
+page.landing.intro=Платформа приложений ÑиÑтемы Android позволÑет Ñоздавать функциональные и инновационные Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ набора компонентов, которые можно иÑпользовать многократно. Ð’ Ñтом разделе раÑÑказываетÑÑ Ð¾ том, как Ñоздавать компоненты, определÑющие Ñлементы Ñтруктуры вашего приложениÑ, и как ÑвÑзывать их воедино Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ объектов Intent.
+page.metaDescription=Платформа приложений ÑиÑтемы Android позволÑет Ñоздавать функциональные и инновационные Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ набора компонентов, которые можно иÑпользовать многократно. Ð’ Ñтом разделе раÑÑказываетÑÑ Ð¾ том, как Ñоздавать компоненты, определÑющие Ñлементы Ñтруктуры вашего приложениÑ, и как ÑвÑзывать их воедино Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ объектов Intent.
page.landing.image=images/develop/app_components.png
page.image=images/develop/app_components.png
@@ -11,7 +11,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>Статьи блога</h3>
-
+
<a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
<h4>ИÑпользование клаÑÑа DialogFragment</h4>
<p>Ð’ Ñтой Ñтатье Ñ Ñ€Ð°ÑÑкажу, как Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ DialogFragment Ñ Ð¸Ñпользованием вÑпомогательной библиотеки v4 (в целÑÑ… обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ ÑовмеÑтимоÑти Ñ ÑƒÑтройÑтвами, работающими под управлением ÑиÑтемы Ñ Ð²ÐµÑ€Ñией ниже, чем Honeycomb) можно отобразить проÑтое диалоговое окно Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ вернуть результат в вызывающую операцию Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ интерфейÑа.</p>
@@ -21,7 +21,7 @@ page.image=images/develop/app_components.png
<h4>Фрагменты Ð´Ð»Ñ Ð²Ñех</h4>
<p>Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ Ð¼Ñ‹ выпуÑтили библиотеку ÑтатичеÑких Ñлементов, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ñ€ÐµÐ´Ð¾ÑтавлÑет доÑтуп к тому же Fragments API (а также новому клаÑÑу LoaderManager и неÑкольким другим клаÑÑам), Ñ Ñ‚ÐµÐ¼ чтобы приложениÑ, ÑовмеÑтимые Ñ Android 1.6 и более поздними верÑиÑми, могли иÑпользовать фрагменты Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑких интерфейÑов Ð´Ð»Ñ Ð¿Ð»Ð°Ð½ÑˆÐµÑ‚Ð¾Ð². </p>
</a>
-
+
<a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
<h4>МногопоточноÑть Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñти</h4>
<p>Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ñ‹Ñтро реагирующих приложений рекомендуетÑÑ, чтобы в оÑновном потоке пользовательÑкого интерфейÑа
@@ -32,7 +32,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>Обучение</h3>
-
+
<a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
<h4>Управление жизненным циклом операций</h4>
<p>Ð’ Ñтом учебном курÑе разъÑÑнÑÑŽÑ‚ÑÑ Ð²Ð°Ð¶Ð½Ñ‹Ðµ методы обратного вызова жизненного цикла, которые получает каждый ÑкземплÑÑ€
diff --git a/docs/html-intl/intl/ru/guide/components/loaders.jd b/docs/html-intl/intl/ru/guide/components/loaders.jd
index eea72a2296ee..a554067345f4 100644
--- a/docs/html-intl/intl/ru/guide/components/loaders.jd
+++ b/docs/html-intl/intl/ru/guide/components/loaders.jd
@@ -21,14 +21,14 @@ parent.link=activities.html
</ol>
</li>
</ol>
-
+
<h2>ОÑновные клаÑÑÑ‹</h2>
<ol>
<li>{@link android.app.LoaderManager}</li>
<li>{@link android.content.Loader}</li>
- </ol>
-
+ </ol>
+
<h2>Образцы кода по теме</h2>
<ol>
<li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -51,7 +51,7 @@ android.app.Fragment}.</li>
воÑÑоздании поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸. Таким образом, им не требуетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ запрашивать Ñвои
данные.</li>
</ul>
-
+
<h2 id="summary">Ð¡Ð²Ð¾Ð´Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± API-интерфейÑе загрузчика</h2>
<p>ИмеетÑÑ Ð½ÐµÑколько клаÑÑов и интерфейÑов, которые могут иÑпользовать
@@ -68,7 +68,7 @@ android.app.Fragment}.</li>
{@link android.app.Fragment} Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¸Ð¼ или неÑколькими интерфейÑами {@link
android.content.Loader}. Это позволÑет приложению управлÑть
длительно выполнÑющимиÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñми вмеÑте Ñ Ð¶Ð¸Ð·Ð½ÐµÐ½Ð½Ñ‹Ð¼ циклом {@link android.app.Activity}
-или {@link android.app.Fragment}; чаще вÑего Ñтот клаÑÑ Ð¸ÑпользуетÑÑ Ñ
+или {@link android.app.Fragment}; чаще вÑего Ñтот клаÑÑ Ð¸ÑпользуетÑÑ Ñ
{@link android.content.CursorLoader}, однако Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ пиÑать
Ñвои ÑобÑтвенные загрузчики Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ типами данных.
<br />
@@ -129,10 +129,10 @@ android.content.ContentProvider}. Ð’Ñ‹ также можете реализовÐ
загрузки данных из другого иÑточника;</li>
<li>Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ {@link android.app.LoaderManager.LoaderCallbacks}.
Именно здеÑÑŒ ÑоздаютÑÑ Ð½Ð¾Ð²Ñ‹Ðµ загрузчики и ведетÑÑ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ ÑÑылками на ÑущеÑтвующие
-загрузчики;</li>
+загрузчики;</li>
<li>ÑпоÑоб Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… загрузчика, например {@link
android.widget.SimpleCursorAdapter};</li>
- <li>иÑточник данных, например {@link android.content.ContentProvider}, когда иÑпользуетÑÑ
+ <li>иÑточник данных, например {@link android.content.ContentProvider}, когда иÑпользуетÑÑ
{@link android.content.CursorLoader}.</li>
</ul>
<h3 id="starting">ЗапуÑк загрузчика</h3>
@@ -140,11 +140,11 @@ android.widget.SimpleCursorAdapter};</li>
<p>{@link android.app.LoaderManager} управлÑет одним или неÑколькими ÑкземплÑрами {@link
android.content.Loader} в {@link android.app.Activity} или
{@link android.app.Fragment}. ИмеетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ один {@link
-android.app.LoaderManager} на каждую операцию или каждый фрагмент.</p>
+android.app.LoaderManager} на каждую операцию или каждый фрагмент.</p>
<p>{@link android.content.Loader} обычно
инициализируетÑÑ Ð² методе {@link
-android.app.Activity#onCreate onCreate()} операции или в методе фрагмента
+android.app.Activity#onCreate onCreate()} операции или в методе фрагмента
{@link android.app.Fragment#onActivityCreated onActivityCreated()}. ДелаетÑÑ
Ñто Ñледующим образом:</p>
@@ -157,13 +157,13 @@ getLoaderManager().initLoader(0, null, this);</pre>
<ul>
<li>уникальный идентификатор, обозначающий загрузчик. Ð’ данном примере идентификатором ÑвлÑетÑÑ 0;</li>
<li>необÑзательные аргументы, которые передаютÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÑƒ при
-поÑтроении (в данном примере Ñто <code>null</code>);</li>
+поÑтроении (в данном примере Ñто <code>null</code>);</li>
<li>Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ {@link android.app.LoaderManager.LoaderCallbacks}, котораÑ
вызывает клаÑÑ {@link android.app.LoaderManager} Ð´Ð»Ñ Ð²Ñ‹Ð´Ð°Ñ‡Ð¸ Ñобытий загрузчика. Ð’ данном
примере локальный клаÑÑ Ñ€ÐµÐ°Ð»Ð¸Ð·ÑƒÐµÑ‚ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ {@link
android.app.LoaderManager.LoaderCallbacks}, поÑтому он передает ÑÑылку
-Ñамому Ñебе: {@code this}.</li>
+Ñамому Ñебе: {@code this}.</li>
</ul>
<p>Вызов {@link android.app.LoaderManager#initLoader initLoader()} обеÑпечивает инициализацию
загрузчика. Возможен один из двух результатов:</p>
@@ -193,7 +193,7 @@ onLoadFinished</a>.</p>
начинает загрузку и заканчивает ее при необходимоÑти, а также поддерживает ÑоÑтоÑние загрузчика
и ÑвÑзанного Ñ Ð½Ð¸Ð¼ контента. Ð Ñто подразумевает, что вы будете редко взаимодейÑтвовать Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ°Ð¼Ð¸
напрÑмую (однако пример иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð² загрузчика Ð´Ð»Ñ Ñ‚Ð¾Ð½ÐºÐ¾Ð¹ наÑтройки его
-Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. в образце кода <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>).
+Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. в образце кода <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>).
Ð”Ð»Ñ Ð²Ð¼ÐµÑˆÐ°Ñ‚ÐµÐ»ÑŒÑтва в процеÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ при возникновении определенных Ñобытий обычно иÑпользуютÑÑ Ð¼ÐµÑ‚Ð¾Ð´Ñ‹ {@link
android.app.LoaderManager.LoaderCallbacks}
. Более подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± Ñтом Ñм. в разделе <a href="#callback">ИÑпользование обратных вызовов LoaderManager</a>.</p>
@@ -343,8 +343,8 @@ public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
<p>Этот метод вызываетÑÑ, когда ÑоÑтоÑние Ñозданного ранее загрузчика ÑбраÑываетÑÑ, в результате чего
его данные терÑÑŽÑ‚ÑÑ. Этот обратный вызов позволÑет узнать, когда данные
вот-вот будут выÑвобождены, Ñ Ñ‚ÐµÐ¼ чтобы можно было удалить Ñвою ÑÑылку на них.  </p>
-<p>Ð”Ð°Ð½Ð½Ð°Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÑ‚
-{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
+<p>Ð”Ð°Ð½Ð½Ð°Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÑ‚
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
Ñо значением <code>null</code>:</p>
<pre>
@@ -366,7 +366,7 @@ public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
android.app.Fragment}, который отображает {@link android.widget.ListView} Ñ
результатами запроÑа к поÑтавщику такого контента, как контакты. Ð”Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñом к поÑтавщику иÑпользуетÑÑ ÐºÐ»Ð°ÑÑ {@link
android.content.CursorLoader}.</p>
-
+
<p>Чтобы приложение могло обращатьÑÑ Ðº контактам пользователÑ, как показано в Ñтом примере, в его
манифеÑте должно приÑутÑтвовать разрешение
{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}.</p>
diff --git a/docs/html-intl/intl/ru/guide/components/processes-and-threads.jd b/docs/html-intl/intl/ru/guide/components/processes-and-threads.jd
index fd298e0d3c49..c9b7dbe62a36 100644
--- a/docs/html-intl/intl/ru/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/ru/guide/components/processes-and-threads.jd
@@ -120,7 +120,7 @@ android.content.BroadcastReceiver#onReceive onReceive()}.</li>
<ul>
<li>Он Ñодержит дейÑтвие {@link android.app.Activity}, которое не находитÑÑ Ð½Ð° переднем плане, но
-видно пользователю (вызван метод {@link android.app.Activity#onPause onPause()}).
+видно пользователю (вызван метод {@link android.app.Activity#onPause onPause()}).
Ðапример, Ñто может проиÑходить, еÑли дейÑтвие на переднем плане запуÑтило диалоговое окно, которое позволÑет видеть
предыдущее дейÑтвие позади него.</li>
@@ -142,7 +142,7 @@ android.content.Context#startService startService()}, и не попадает Ð
</li>
<li><b>Фоновый процеÑÑ</b>
- <p>ПроцеÑÑ, Ñодержащий дейÑтвиÑ, которые не видны пользователю в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ (вызван метод
+ <p>ПроцеÑÑ, Ñодержащий дейÑтвиÑ, которые не видны пользователю в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ (вызван метод
{@link android.app.Activity#onStop onStop()} дейÑтвиÑ). Эти процеÑÑÑ‹ не оказывают непоÑредÑтвенного
воздейÑÑ‚Ð²Ð¸Ñ Ð½Ð° работу пользователÑ, и ÑиÑтема может удалить их в любой момент, чтобы оÑвободить памÑть длÑ
процеÑÑов переднего плана,
@@ -168,7 +168,7 @@ LRU (недавно иÑпользованные), чтобы процеÑÑÑ‹,
компонентов, активных в процеÑÑе в текущее времÑ. Ðапример, еÑли процеÑÑ Ñодержит Ñлужебное и видимое дейÑтвие,
процеÑÑ ÑчитаетÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñ‹Ð¼, а не Ñлужебным процеÑÑом.</p>
- <p>Кроме того, уровень процеÑÑа может быть повышен, поÑкольку имеютÑÑ Ð´Ñ€ÑƒÐ³Ð¸Ðµ процеÑÑÑ‹, завиÑимые от него.
+ <p>Кроме того, уровень процеÑÑа может быть повышен, поÑкольку имеютÑÑ Ð´Ñ€ÑƒÐ³Ð¸Ðµ процеÑÑÑ‹, завиÑимые от него.
Ðапример, процеÑÑ, обÑлуживающий другой процеÑÑ, не может иметь уровень ниже ÑƒÑ€Ð¾Ð²Ð½Ñ Ð¾Ð±Ñлуживаемого
процеÑÑа. Ðапример, еÑли поÑтавщик контента в процеÑÑе A обÑлуживает клиента в процеÑÑе B или
Ñлужебный процеÑÑ A ÑвÑзан Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð¾Ð¼ в процеÑÑе B, процеÑÑ A вÑегда ÑчитаетÑÑ Ð½Ðµ менее
@@ -319,7 +319,7 @@ private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
-
+
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
diff --git a/docs/html-intl/intl/ru/guide/components/services.jd b/docs/html-intl/intl/ru/guide/components/services.jd
index 62a6a7ef9d15..28e9daa4edb3 100644
--- a/docs/html-intl/intl/ru/guide/components/services.jd
+++ b/docs/html-intl/intl/ru/guide/components/services.jd
@@ -291,7 +291,7 @@ android.app.Service#onStartCommand onStartCommand()}, отдельно от оÑ
<li>Создает рабочую очередь, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿ÐµÑ€ÐµÐ´Ð°ÐµÑ‚ Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¿Ð¾ одному в вашу реализацию метода {@link
android.app.IntentService#onHandleIntent onHandleIntent()}, поÑтому вы не должны беÑпокоитьÑÑ
отноÑительно многопоточноÑти.</li>
- <li>ОÑтанавливает Ñлужбу поÑле обработки вÑех запроÑов запуÑка, поÑтому вам никогда не требуетÑÑ Ð²Ñ‹Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ
+ <li>ОÑтанавливает Ñлужбу поÑле обработки вÑех запроÑов запуÑка, поÑтому вам никогда не требуетÑÑ Ð²Ñ‹Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ
{@link android.app.Service#stopSelf}.</li>
<li>ПредоÑтавлÑет реализацию метода {@link android.app.IntentService#onBind onBind()} по умолчанию, котораÑ
возвращает null.</li>
@@ -668,7 +668,7 @@ android.app.Service#stopForeground stopForeground()}. Этот метод Ñод
уделить приÑтальное внимание тому, как ваша Ñлужба ÑоздаетÑÑ Ð¸ уничтожаетÑÑ, так как Ñлужба
может работать в фоновом режиме без ведома пользователÑ.</p>
-<p>Жизненный цикл Ñлужбы от ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð´Ð¾ ÑƒÐ½Ð¸Ñ‡Ñ‚Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ Ñледовать двум
+<p>Жизненный цикл Ñлужбы от ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð´Ð¾ ÑƒÐ½Ð¸Ñ‡Ñ‚Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ Ñледовать двум
разным путÑм:</p>
<ul>
diff --git a/docs/html-intl/intl/ru/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/ru/guide/components/tasks-and-back-stack.jd
index c9fdc0e069bb..8bdb39410ce4 100644
--- a/docs/html-intl/intl/ru/guide/components/tasks-and-back-stack.jd
+++ b/docs/html-intl/intl/ru/guide/components/tasks-and-back-stack.jd
@@ -29,7 +29,7 @@ parent.link=activities.html
<ol>
<li><a href="{@docRoot}design/patterns/navigation.html">Дизайн Android:
навигациÑ</a></li>
- <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">Элемент манифеÑта
+ <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">Элемент манифеÑта
{@code &lt;activity&gt;}</a></li>
<li><a href="{@docRoot}guide/components/recents.html">Экран обзора</a></li>
</ol>
@@ -43,7 +43,7 @@ parent.link=activities.html
Когда пользователь выбирает Ñообщение, открываетÑÑ Ð½Ð¾Ð²Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра Ñтого ÑообщениÑ.</p>
<p>ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ даже запуÑкать операции, ÑущеÑтвующие в других приложениÑÑ… на уÑтройÑтве. Ðапример,
-еÑли ваше приложение хочет отправить Ñообщение Ñлектронной почты, вы можете определить намерение Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ
+еÑли ваше приложение хочет отправить Ñообщение Ñлектронной почты, вы можете определить намерение Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ
дейÑÑ‚Ð²Ð¸Ñ Â«Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒÂ» и включить в него некоторые данные, например, Ð°Ð´Ñ€ÐµÑ Ñлектронной почты и текÑÑ‚ ÑообщениÑ. ПоÑле Ñтого открываетÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¸Ð· другого
приложениÑ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¾Ð±ÑŠÑвила, что она обрабатывает Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ñ‚Ð°ÐºÐ¾Ð³Ð¾ типа. Ð’ Ñтом Ñлучае намерение ÑоÑтоит в том, чтобы
отправить Ñообщение Ñлектронной почты, поÑтому в приложении Ñлектронной почты запуÑкаетÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Â«ÑоÑтавить Ñообщение» (еÑли одно намерение
@@ -127,7 +127,7 @@ class="img-caption"><strong>РиÑунок 3.</strong> СоздаетÑÑ Ð½ÐµÑ
в Ñвоем Ñтеке — две операции под текущей операцией. Пользователь нажимает кнопку <em>Домой</em>,
затем запуÑкает
новое приложение из ÑредÑтва запуÑка приложений. Когда поÑвлÑетÑÑ Ð³Ð»Ð°Ð²Ð½Ñ‹Ð¹ Ñкран, Задача A переходит
-в фоновый режим. Когда запуÑкаетÑÑ Ð½Ð¾Ð²Ð¾Ðµ приложение, ÑиÑтема запуÑкает задачу Ð´Ð»Ñ Ñтого приложениÑ
+в фоновый режим. Когда запуÑкаетÑÑ Ð½Ð¾Ð²Ð¾Ðµ приложение, ÑиÑтема запуÑкает задачу Ð´Ð»Ñ Ñтого приложениÑ
(Задачу B) Ñо Ñвоим ÑобÑтвенным Ñтеком операций. ПоÑле взаимодейÑÑ‚Ð²Ð¸Ñ Ñ Ñтим
приложением пользователь Ñнова возвращаетÑÑ Ð½Ð° главный Ñкран и выбирает изначально запущенную
Задачу A. Теперь Задача A переходит на передний
@@ -290,7 +290,7 @@ class="img-caption"><strong>РиÑунок 3.</strong> СоздаетÑÑ Ð½ÐµÑ
<p>При объÑвлении операции в вашем файле манифеÑта вы можете указать, как Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð°
быть ÑвÑзана Ñ Ð·Ð°Ð´Ð°Ñ‡ÐµÐ¹ поÑредÑтвом атрибута <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
-launchMode}</a>
+launchMode}</a>
Ñлемента <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.</p>
<p>Ðтрибут <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
@@ -351,7 +351,7 @@ android.app.Activity#onNewIntent onNewIntent()}, а не путем Ñоздан
имеет задачу, работающую в фоновом режиме, Ñта задача переводитÑÑ Ð½Ð° передний план Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ нового
намерениÑ.</p>
-<p>И при запуÑке операции в новой задаче, и при запуÑке операции в ÑущеÑтвующей задаче,
+<p>И при запуÑке операции в новой задаче, и при запуÑке операции в ÑущеÑтвующей задаче,
кнопка <em>Ðазад</em> вÑегда возвращает Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ðº предыдущей операции. Однако, еÑли вы
запуÑкаете операцию, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ режим запуÑка {@code singleTask}, вÑÑ Ð·Ð°Ð´Ð°Ñ‡Ð° переводитÑÑ Ð½Ð° передний план, еÑли ÑкземплÑÑ€
Ñтой операции ÑущеÑтвует в фоновой задаче. Ð’ Ñтот момент
@@ -505,7 +505,7 @@ href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetain
href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
<dd>ЕÑли Ð´Ð»Ñ Ñтого атрибута уÑтановлено значение {@code "true"} в корневой операции задачи,
Ñтек очищаетÑÑ Ð´Ð¾ корневой операции каждый раз, когда пользователь выходит из задачи
-и возвращаетÑÑ Ð² нее. Другими Ñловами, Ñтот атрибут противоположен атрибуту
+и возвращаетÑÑ Ð² нее. Другими Ñловами, Ñтот атрибут противоположен атрибуту
<a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
{@code alwaysRetainTaskState}</a>. Пользователь вÑегда возвращаетÑÑ Ð² задачу в ее
иÑходном ÑоÑтоÑнии, даже поÑле кратковременного выхода из нее.</dd>
@@ -526,7 +526,7 @@ href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTask
<h3 id="Starting">ЗапуÑк задачи</h3>
-<p>Ð’Ñ‹ можете Ñделать операцию точкой входа, Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°Ñ ÐµÐ¹ фильтр намерений Ñо значением
+<p>Ð’Ñ‹ можете Ñделать операцию точкой входа, Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°Ñ ÐµÐ¹ фильтр намерений Ñо значением
{@code "android.intent.action.MAIN"} в качеÑтве указанного дейÑÑ‚Ð²Ð¸Ñ Ð¸
{@code "android.intent.category.LAUNCHER"}
в качеÑтве указанной категории. Ðапример:</p>
diff --git a/docs/html-intl/intl/ru/guide/index.jd b/docs/html-intl/intl/ru/guide/index.jd
index b0732722e1b8..703700b06475 100644
--- a/docs/html-intl/intl/ru/guide/index.jd
+++ b/docs/html-intl/intl/ru/guide/index.jd
@@ -4,7 +4,7 @@ page.title=Общие ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ платформе Android
<div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
-<p>Чтобы узнать, как работают приложениÑ, начните Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°
+<p>Чтобы узнать, как работают приложениÑ, начните Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°
<a href="{@docRoot}guide/components/fundamentals.html">ОÑновы ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹</a>.</p>
<p>Чтобы Ñразу приÑтупить к программированию, читайте раздел <a href="{@docRoot}training/basics/firstapp/index.html">Создание первого приложениÑ</a>.</p>
</div>
diff --git a/docs/html-intl/intl/ru/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/ru/guide/topics/manifest/manifest-intro.jd
index f2c5a9e03590..63d3a46c6afa 100644
--- a/docs/html-intl/intl/ru/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/ru/guide/topics/manifest/manifest-intro.jd
@@ -31,27 +31,27 @@ page.title=МанифеÑÑ‚ приложениÑ
<li>Он задает Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð° Java Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ.
Это Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð° Ñлужит уникальным идентификатором приложениÑ.</li>
-<li>Он опиÑывает компоненты Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ &mdash; операции,
+<li>Он опиÑывает компоненты Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ &mdash; операции,
Ñлужбы, приемники широковещательных Ñообщений и поÑтавщиков контента, из которых ÑоÑтоит
-приложение. Он Ñодержит имена клаÑÑов, которые реализуют каждый компонент, и
-публикует их возможноÑти (указывает, например, какие ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ {@link android.content.Intent
-Intent} они могут принимать). Ðа оÑновании Ñтих деклараций ÑиÑтема Android
+приложение. Он Ñодержит имена клаÑÑов, которые реализуют каждый компонент, и
+публикует их возможноÑти (указывает, например, какие ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ {@link android.content.Intent
+Intent} они могут принимать). Ðа оÑновании Ñтих деклараций ÑиÑтема Android
может определить, из каких компонентов ÑоÑтоит приложение и при каких уÑловиÑÑ… их можно запуÑкать.</li>
-<li>Он определÑет, в каких процеÑÑах будут размещатьÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ñ‹ приложениÑ.</li>
+<li>Он определÑет, в каких процеÑÑах будут размещатьÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ñ‹ приложениÑ.</li>
-<li>Он объÑвлÑет, какие Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть выданы приложению, чтобы оно могло получить
-доÑтуп к защищенным чаÑÑ‚Ñм API-интерфейÑа и взаимодейÑтвовать Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ приложениÑми.</li>
+<li>Он объÑвлÑет, какие Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть выданы приложению, чтобы оно могло получить
+доÑтуп к защищенным чаÑÑ‚Ñм API-интерфейÑа и взаимодейÑтвовать Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ приложениÑми.</li>
-<li>Он также объÑвлÑет разрешениÑ, требуемые длÑ
+<li>Он также объÑвлÑет разрешениÑ, требуемые длÑ
взаимодейÑÑ‚Ð²Ð¸Ñ Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð°Ð¼Ð¸ данного приложениÑ.</li>
-<li>Он Ñодержит ÑпиÑок клаÑÑов {@link android.app.Instrumentation}, которые при выполнении Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ð¾ÑтавлÑÑŽÑ‚
-ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ профиле и прочую информацию. Эти объÑвлениÑ
-приÑутÑтвуют в файле манифеÑта только во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ и отладки
+<li>Он Ñодержит ÑпиÑок клаÑÑов {@link android.app.Instrumentation}, которые при выполнении Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ð¾ÑтавлÑÑŽÑ‚
+ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ профиле и прочую информацию. Эти объÑвлениÑ
+приÑутÑтвуют в файле манифеÑта только во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ и отладки
Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ удалÑÑŽÑ‚ÑÑ Ð¿ÐµÑ€ÐµÐ´ его публикацией.</li>
-<li>Он объÑвлÑет минимальный уровень API-интерфейÑа Android, который требуетÑÑ
+<li>Он объÑвлÑет минимальный уровень API-интерфейÑа Android, который требуетÑÑ
приложению.</li>
<li>Он Ñодержит ÑпиÑок библиотек, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ должно быть ÑвÑзано приложение.</li>
@@ -61,12 +61,12 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
<h2 id="filestruct">Структура файла манифеÑта</h2>
<p>
-ÐŸÑ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ð°Ñ Ð´Ð°Ð»ÐµÐµ Ñхема позволÑет ознакомитьÑÑ Ñ Ð¾Ð±Ñ‰ÐµÐ¹ Ñтруктурой файла манифеÑта и
-вÑеми Ñлементами, которые могут в нем ÑодержатьÑÑ. Каждый Ñлемент вмеÑте Ñо вÑеми Ñвоими
-атрибутами, полноÑтью опиÑываетÑÑ Ð² отдельном файле. Ð”Ð»Ñ Ð¿Ñ€Ð¾Ñмотра подробных
-Ñведений о любом Ñлементе, щелкните Ð¸Ð¼Ñ Ñлемента на Ñхеме,
-в алфавитном ÑпиÑке Ñлементов, приведенном поÑле Ñхемы, или
-в любом другом меÑте, где Ñтот Ñлемент упоминаетÑÑ.
+ÐŸÑ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ð°Ñ Ð´Ð°Ð»ÐµÐµ Ñхема позволÑет ознакомитьÑÑ Ñ Ð¾Ð±Ñ‰ÐµÐ¹ Ñтруктурой файла манифеÑта и
+вÑеми Ñлементами, которые могут в нем ÑодержатьÑÑ. Каждый Ñлемент вмеÑте Ñо вÑеми Ñвоими
+атрибутами, полноÑтью опиÑываетÑÑ Ð² отдельном файле. Ð”Ð»Ñ Ð¿Ñ€Ð¾Ñмотра подробных
+Ñведений о любом Ñлементе, щелкните Ð¸Ð¼Ñ Ñлемента на Ñхеме,
+в алфавитном ÑпиÑке Ñлементов, приведенном поÑле Ñхемы, или
+в любом другом меÑте, где Ñтот Ñлемент упоминаетÑÑ.
</p>
<pre>
@@ -126,9 +126,9 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
</pre>
<p>
-Далее приведен ÑпиÑок вÑех Ñлементов, раÑположенных в алфавитном порÑдке, которые могут
+Далее приведен ÑпиÑок вÑех Ñлементов, раÑположенных в алфавитном порÑдке, которые могут
приÑутÑтвовать в файле манифеÑта. Там могут находитьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñти Ñлементы, а никакие другие
-Ñлементы или атрибуты добавлÑть нельзÑ.
+Ñлементы или атрибуты добавлÑть нельзÑ.
</p>
<p style="margin-left: 2em">
@@ -158,74 +158,74 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
</p>
-
+
<h2 id="filec">Ð¡Ð¾Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð¾ компонентах файла</h2>
<p>
-Ко вÑем Ñлементам и атрибутам
+Ко вÑем Ñлементам и атрибутам
из файла манифеÑта применÑетÑÑ Ñ€Ð°Ð´ Ñоглашений и правил:
</p>
<dl>
<dt><b>Элементы</b></dt>
-<dd>ОбÑзательными
+<dd>ОбÑзательными
ÑвлÑÑŽÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñлементы<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> и
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-. Оба они должны приÑутÑтвовать в файле манифеÑта, при Ñтом указать их можно только один раз.
-БольшинÑтво других Ñлементов можно указывать по неÑкольку раз или не указывать вовÑе &mdash; Ñ…Ð¾Ñ‚Ñ Ð¿Ð¾
-крайней мере некоторые из них нужны, чтобы файл манифеÑта был Ñколько-нибудь
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+. Оба они должны приÑутÑтвовать в файле манифеÑта, при Ñтом указать их можно только один раз.
+БольшинÑтво других Ñлементов можно указывать по неÑкольку раз или не указывать вовÑе &mdash; Ñ…Ð¾Ñ‚Ñ Ð¿Ð¾
+крайней мере некоторые из них нужны, чтобы файл манифеÑта был Ñколько-нибудь
информативным.
<p>
-ЕÑли в Ñлементе и еÑть какое-то Ñодержимое, то Ñто другие Ñлементы.
+ЕÑли в Ñлементе и еÑть какое-то Ñодержимое, то Ñто другие Ñлементы.
Ð’Ñе Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°ÑŽÑ‚ÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ атрибутов, а не как Ñимвольные данные в Ñлементе.
</p>
<p>
Элементы, находÑщиеÑÑ Ð½Ð° одном уровне, обычно не упорÑдочиваютÑÑ. Ðапример,
- Ñлементы <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
-<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> и
-<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
-можно указать в любой поÑледовательноÑти. (Элемент
+ Ñлементы <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> и
+<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+можно указать в любой поÑледовательноÑти. (Элемент
<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
-ÑвлÑетÑÑ Ð¸Ñключением из Ñтого правила. Он должен Ñледовать за Ñлементом
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+ÑвлÑетÑÑ Ð¸Ñключением из Ñтого правила. Он должен Ñледовать за Ñлементом
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
пÑевдонимом которого он ÑвлÑетÑÑ.)
</p></dd>
<dt><b>Ðтрибуты</b></dt>
-<dd>Формально вÑе атрибуты ÑвлÑÑŽÑ‚ÑÑ Ð½ÐµÐ¾Ð±Ñзательными. Однако некоторые их них
+<dd>Формально вÑе атрибуты ÑвлÑÑŽÑ‚ÑÑ Ð½ÐµÐ¾Ð±Ñзательными. Однако некоторые их них
указывать необходимо, чтобы файл мог выполнÑть Ñвое предназначение. Ð’ качеÑтве руководÑтва иÑпользуйте Ñту
-документацию. Ð’ отношении атрибутов, которые ÑвлÑÑŽÑ‚ÑÑ Ð¸ вправду необÑзательными, в ней указываетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ,
+документацию. Ð’ отношении атрибутов, которые ÑвлÑÑŽÑ‚ÑÑ Ð¸ вправду необÑзательными, в ней указываетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ,
иÑпользуемое по умолчанию, или говоритÑÑ, что произойдет, еÑли такой атрибут не будет указан.
-<p>За иÑключением некоторых атрибутов корневого Ñлемента
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
-, имена вÑех атрибутов должны начинатьÑÑ Ñ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑа {@code android:} &mdash;
-например, {@code android:alwaysRetainTaskState}. ПоÑкольку Ñтот Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ ÑвлÑетÑÑ
-универÑальным, в документации при указании атрибутов по имени
+<p>За иÑключением некоторых атрибутов корневого Ñлемента
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+, имена вÑех атрибутов должны начинатьÑÑ Ñ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑа {@code android:} &mdash;
+например, {@code android:alwaysRetainTaskState}. ПоÑкольку Ñтот Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ ÑвлÑетÑÑ
+универÑальным, в документации при указании атрибутов по имени
он обычно опуÑкаетÑÑ.</p></dd>
<dt><b>ОбъÑвление имен клаÑÑов</b></dt>
-<dd>Многие Ñлементы ÑоответÑтвуют объектам Java, в том чиÑле Ñлементы Ð´Ð»Ñ Ñамого
-Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ (Ñлемент
+<dd>Многие Ñлементы ÑоответÑтвуют объектам Java, в том чиÑле Ñлементы Ð´Ð»Ñ Ñамого
+Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ (Ñлемент
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-) и оÑновных его компонентов &mdash; операций
-(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
-Ñлужб
-(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
-приемников широковещательных Ñообщений
-(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>)
-и поÑтавщиков контента
-(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
+) и оÑновных его компонентов &mdash; операций
+(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
+Ñлужб
+(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
+приемников широковещательных Ñообщений
+(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>)
+и поÑтавщиков контента
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
<p>
-ЕÑли вы определÑете подклаÑÑ, а Ñто практичеÑки вÑегда делаетÑÑ Ð´Ð»Ñ ÐºÐ»Ð°ÑÑов компонентов
-({@link android.app.Activity}, {@link android.app.Service},
-{@link android.content.BroadcastReceiver} и {@link android.content.ContentProvider}),
-выполнÑетÑÑ Ñто Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ атрибута {@code name}. Ð’ ÑоÑтав имени должно входить
-полное обозначение пакета.
+ЕÑли вы определÑете подклаÑÑ, а Ñто практичеÑки вÑегда делаетÑÑ Ð´Ð»Ñ ÐºÐ»Ð°ÑÑов компонентов
+({@link android.app.Activity}, {@link android.app.Service},
+{@link android.content.BroadcastReceiver} и {@link android.content.ContentProvider}),
+выполнÑетÑÑ Ñто Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ атрибута {@code name}. Ð’ ÑоÑтав имени должно входить
+полное обозначение пакета.
Ðапример, подклаÑÑ {@link android.app.Service} можно объÑвить Ñледующим образом:
</p>
@@ -239,12 +239,12 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
&lt;/manifest&gt;</pre>
<p>
-Однако его можно укоротить. ЕÑли первым Ñимволом в Ñтроке указать точку, Ñта
-Ñтрока будет добавлÑтьÑÑ Ðº имени пакета Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ (указанного атрибутом
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
-Ñлемента
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
-). Следующее назначение ÑвлÑетÑÑ Ñ‚Ð°ÐºÐ¸Ð¼ же, как приведенное выше:
+Однако его можно укоротить. ЕÑли первым Ñимволом в Ñтроке указать точку, Ñта
+Ñтрока будет добавлÑтьÑÑ Ðº имени пакета Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ (указанного атрибутом
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
+Ñлемента
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
+). Следующее назначение ÑвлÑетÑÑ Ñ‚Ð°ÐºÐ¸Ð¼ же, как приведенное выше:
</p>
<pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -257,13 +257,13 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
&lt;/manifest&gt;</pre>
<p>
-При запуÑке компонента Android Ñоздает ÑкземплÑÑ€ подклаÑÑа, указанного по имени.
+При запуÑке компонента Android Ñоздает ÑкземплÑÑ€ подклаÑÑа, указанного по имени.
ЕÑли подклаÑÑ Ð½Ðµ указан, ÑиÑтема Ñоздает ÑкземплÑÑ€ базового клаÑÑа.
</p></dd>
<dt><b>ÐеÑколько значений</b></dt>
-<dd>ЕÑли можно указать неÑколько значений, Ñлемент почти вÑегда
-приводитÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾. ДелаетÑÑ Ñто вмеÑто перечиÑÐ»ÐµÐ½Ð¸Ñ Ð½ÐµÑкольких значений в одном Ñлементе.
+<dd>ЕÑли можно указать неÑколько значений, Ñлемент почти вÑегда
+приводитÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾. ДелаетÑÑ Ñто вмеÑто перечиÑÐ»ÐµÐ½Ð¸Ñ Ð½ÐµÑкольких значений в одном Ñлементе.
Ðапример, в фильтре Intent может быть перечиÑлено неÑколько дейÑтвий:
<pre>&lt;intent-filter . . . &gt;
@@ -274,24 +274,24 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
&lt;/intent-filter&gt;</pre></dd>
<dt><b>Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÑурÑов</b></dt>
-<dd>Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… атрибутов могут отображатьÑÑ Ð½Ð° Ñкране &mdash; например,
-метка и значок операции. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñтих атрибутов
-Ñледует локализовать, поÑтому они должны задаватьÑÑ Ð² реÑурÑе или теме. ЗначениÑ
+<dd>Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… атрибутов могут отображатьÑÑ Ð½Ð° Ñкране &mdash; например,
+метка и значок операции. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñтих атрибутов
+Ñледует локализовать, поÑтому они должны задаватьÑÑ Ð² реÑурÑе или теме. ЗначениÑ
реÑурÑов выражаютÑÑ Ð² Ñледующем формате:</p>
<p style="margin-left: 2em">{@code @[<i>пакет</i>:]<i>тип</i>:<i>имÑ</i>}</p>
<p>
-где <i>Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°</i> можно опуÑтить, еÑли реÑÑƒÑ€Ñ Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚ÑÑ Ð² одном пакете
-Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼, <i>тип —</i> Ñто тип реÑурÑа, &mdash; например "string" или
-"drawable", &mdash; а <i>имÑ —</i> Ñто имÑ, определÑющее реÑурÑ.
+где <i>Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°</i> можно опуÑтить, еÑли реÑÑƒÑ€Ñ Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚ÑÑ Ð² одном пакете
+Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼, <i>тип —</i> Ñто тип реÑурÑа, &mdash; например "string" или
+"drawable", &mdash; а <i>имÑ —</i> Ñто имÑ, определÑющее реÑурÑ.
Ðапример:
</p>
<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
<p>
-Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸Ð· темы выражаютÑÑ Ñхожим образом, только в начале у них идет "{@code ?}",
+Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸Ð· темы выражаютÑÑ Ñхожим образом, только в начале у них идет "{@code ?}",
а не "{@code @}":
</p>
@@ -299,8 +299,8 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
</p></dd>
<dt><b>Строковые значениÑ</b></dt>
-<dd>Когда значением атрибута ÑвлÑетÑÑ Ñтрока, Ñледует иÑпользовать двойную обратную коÑую черту ("{@code \\}")
-Ð´Ð»Ñ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñющей поÑледовательноÑти Ñимволов, &mdash; например "{@code \\n}" длÑ
+<dd>Когда значением атрибута ÑвлÑетÑÑ Ñтрока, Ñледует иÑпользовать двойную обратную коÑую черту ("{@code \\}")
+Ð´Ð»Ñ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñющей поÑледовательноÑти Ñимволов, &mdash; например "{@code \\n}" длÑ
новой Ñтроки или "{@code \\uxxxx}" Ð´Ð»Ñ Ñимвола Юникода.</dd>
</dl>
@@ -308,7 +308,7 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
<h2 id="filef">Отображение функций в файле</h2>
<p>
-Ð’ Ñледующих разделах опиÑано, как некоторые функции Android отображаютÑÑ
+Ð’ Ñледующих разделах опиÑано, как некоторые функции Android отображаютÑÑ
в файле манифеÑта.
</p>
@@ -316,37 +316,37 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
<h3 id="ifs">Фильтры объектов Intent</h3>
<p>
-Базовые компоненты Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ (его операции, Ñлужбы и
-приемники широковещательных Ñообщений) активируютÑÑ <i>объектами Intent</i>. Intent —
-Ñто ÑовокупноÑть информации (объект {@link android.content.Intent}), опиÑывающей
-требуемое дейÑтвие, &mdash; в том чиÑле в ней указаны данные, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ Ñледует выполнить Ñто дейÑтвие, категориÑ
-компонентов, которые должны выполнÑть Ñто дейÑтвие, и другие умеÑтные инÑтрукции.
-СиÑтема Android находит компонент, который отреагирует на объект Intent, запуÑкает
-новый ÑкземплÑÑ€ компонента, еÑли он требуетÑÑ, и передает ему
+Базовые компоненты Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ (его операции, Ñлужбы и
+приемники широковещательных Ñообщений) активируютÑÑ <i>объектами Intent</i>. Intent —
+Ñто ÑовокупноÑть информации (объект {@link android.content.Intent}), опиÑывающей
+требуемое дейÑтвие, &mdash; в том чиÑле в ней указаны данные, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ Ñледует выполнить Ñто дейÑтвие, категориÑ
+компонентов, которые должны выполнÑть Ñто дейÑтвие, и другие умеÑтные инÑтрукции.
+СиÑтема Android находит компонент, который отреагирует на объект Intent, запуÑкает
+новый ÑкземплÑÑ€ компонента, еÑли он требуетÑÑ, и передает ему
объект Intent.
</p>
<p>
-Компоненты объÑвлÑÑŽÑ‚ Ñвои возможноÑти &mdash; виды объектов Intent, на которые они могут
-реагировать, &mdash; Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ <i>фильтров Intent</i>. ПоÑкольку ÑиÑтема Android
-должна узнать, какие объекты Intent может обрабатывать тот или иной компонент, до того как она его запуÑтит,
-фильтры Intent указываютÑÑ Ð² файле манифеÑта как
-Ñлементы <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
-. Компонент может иметь любое количеÑтво фильтров, каждый из которых опиÑывает
+Компоненты объÑвлÑÑŽÑ‚ Ñвои возможноÑти &mdash; виды объектов Intent, на которые они могут
+реагировать, &mdash; Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ <i>фильтров Intent</i>. ПоÑкольку ÑиÑтема Android
+должна узнать, какие объекты Intent может обрабатывать тот или иной компонент, до того как она его запуÑтит,
+фильтры Intent указываютÑÑ Ð² файле манифеÑта как
+Ñлементы <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+. Компонент может иметь любое количеÑтво фильтров, каждый из которых опиÑывает
отдельную возможноÑть компонента.
</p>
<p>
-Объект Intent, в котором целевой компонент Ñвно указан по имени, активирует Ñтот компонент,
-и фильтр при Ñтом не учитываетÑÑ. Ðо объект Intent, в котором Ð¸Ð¼Ñ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð³Ð¾
-компонента не указано, может активировать компонент, только еÑли он может пройти через один из фильтров
+Объект Intent, в котором целевой компонент Ñвно указан по имени, активирует Ñтот компонент,
+и фильтр при Ñтом не учитываетÑÑ. Ðо объект Intent, в котором Ð¸Ð¼Ñ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð³Ð¾
+компонента не указано, может активировать компонент, только еÑли он может пройти через один из фильтров
компонента.
</p>
<p>
-Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ том, каким образом объекты Intent проверÑÑŽÑ‚ÑÑ Ð¿Ð¾ фильтрам Intent,
-Ñм. в отдельном документе
-<a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent
+Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ том, каким образом объекты Intent проверÑÑŽÑ‚ÑÑ Ð¿Ð¾ фильтрам Intent,
+Ñм. в отдельном документе
+<a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent
и фильтры объектов Intent</a>.
</p>
@@ -354,42 +354,42 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
<h3 id="iconlabel">Значки и метки</h3>
<p>
-У Ñ€Ñда Ñлементов еÑть атрибуты {@code icon} и {@code label} длÑ
-небольшого значка и текÑтовой метки, которые могут отображатьÑÑ Ð½Ð° Ñкране. У некоторых из них также еÑть атрибут
-{@code description} Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ длинного опиÑательного текÑта, который также может
-отображатьÑÑ Ð½Ð° Ñкране. Ðапример, Ñлемент
+У Ñ€Ñда Ñлементов еÑть атрибуты {@code icon} и {@code label} длÑ
+небольшого значка и текÑтовой метки, которые могут отображатьÑÑ Ð½Ð° Ñкране. У некоторых из них также еÑть атрибут
+{@code description} Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ длинного опиÑательного текÑта, который также может
+отображатьÑÑ Ð½Ð° Ñкране. Ðапример, Ñлемент
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-имеет вÑе три таких атрибута, поÑтому, когда пользователю задаетÑÑ Ð²Ð¾Ð¿Ñ€Ð¾Ñ, предоÑтавить ли
-разрешение запроÑившему его приложению, на Ñкране может отображатьÑÑ Ð·Ð½Ð°Ñ‡Ð¾Ðº,
-предÑтавлÑющий разрешение, Ð¸Ð¼Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¸ опиÑание того, что оно
+имеет вÑе три таких атрибута, поÑтому, когда пользователю задаетÑÑ Ð²Ð¾Ð¿Ñ€Ð¾Ñ, предоÑтавить ли
+разрешение запроÑившему его приложению, на Ñкране может отображатьÑÑ Ð·Ð½Ð°Ñ‡Ð¾Ðº,
+предÑтавлÑющий разрешение, Ð¸Ð¼Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¸ опиÑание того, что оно
за Ñобой влечет.
</p>
<p>
-Ð’ любом Ñлучае значок и метка, заданные в Ñлементе-контейнере, ÑтановÑÑ‚ÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸
-{@code icon} и {@code label}, иÑпользуемыми по умолчанию Ð´Ð»Ñ Ð²Ñех вложенных в Ñтот контейнер дочерних Ñлементов.
-Так, значок и метка, заданные в Ñлементе
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>,
-ÑвлÑÑŽÑ‚ÑÑ Ð·Ð½Ð°Ñ‡ÐºÐ¾Ð¼ и меткой, иÑпользуемыми по умолчанию Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ компонента приложениÑ.
-Точно так же, значок и метка, заданные Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð°, &mdash; например Ñлемента
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>, &mdash;
-ÑвлÑÑŽÑ‚ÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸, иÑпользуемыми по умолчанию Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñлемента
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
- компонента. ЕÑли в Ñлементе
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-задана метка, а в операции и ее фильтре Intent — нет,
-метка Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ ÑчитатьÑÑ Ð¼ÐµÑ‚ÐºÐ¾Ð¹ и Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸, и длÑ
+Ð’ любом Ñлучае значок и метка, заданные в Ñлементе-контейнере, ÑтановÑÑ‚ÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸
+{@code icon} и {@code label}, иÑпользуемыми по умолчанию Ð´Ð»Ñ Ð²Ñех вложенных в Ñтот контейнер дочерних Ñлементов.
+Так, значок и метка, заданные в Ñлементе
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>,
+ÑвлÑÑŽÑ‚ÑÑ Ð·Ð½Ð°Ñ‡ÐºÐ¾Ð¼ и меткой, иÑпользуемыми по умолчанию Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ компонента приложениÑ.
+Точно так же, значок и метка, заданные Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð°, &mdash; например Ñлемента
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>, &mdash;
+ÑвлÑÑŽÑ‚ÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸, иÑпользуемыми по умолчанию Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñлемента
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+ компонента. ЕÑли в Ñлементе
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+задана метка, а в операции и ее фильтре Intent — нет,
+метка Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ ÑчитатьÑÑ Ð¼ÐµÑ‚ÐºÐ¾Ð¹ и Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸, и длÑ
фильтра Intent.
</p>
<p>
-Значок и метка, заданные Ð´Ð»Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð° Intent, иÑпользуютÑÑ Ð´Ð»Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð°,
+Значок и метка, заданные Ð´Ð»Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð° Intent, иÑпользуютÑÑ Ð´Ð»Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð°,
когда он предÑтавлÑетÑÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŽ, Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸,
-которую анонÑирует фильтр. Ðапример, фильтр Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸
-"{@code android.intent.action.MAIN}" и
-"{@code android.intent.category.LAUNCHER}" Ñообщает, что Ñта операциÑ
+которую анонÑирует фильтр. Ðапример, фильтр Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸
+"{@code android.intent.action.MAIN}" и
+"{@code android.intent.category.LAUNCHER}" Ñообщает, что Ñта операциÑ
инициирует приложение, &mdash; то еÑть он обозначает ее как
- операцию, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть отображена в ÑредÑтве запуÑка приложений. ОтÑюда Ñледует, что значок и метка,
+ операцию, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть отображена в ÑредÑтве запуÑка приложений. ОтÑюда Ñледует, что значок и метка,
заданные в фильтре, отображаютÑÑ Ð² ÑредÑтве запуÑка.
</p>
@@ -397,14 +397,14 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
<h3 id="perms">РазрешениÑ</h3>
<p>
-Разрешение <i>предÑтавлÑет</i> Ñобой ограничение на доÑтуп к чаÑти кода
-или к данным, имеющимÑÑ Ð½Ð° уÑтройÑтве. Это ограничение накладываетÑÑ Ð´Ð»Ñ Ð·Ð°Ñ‰Ð¸Ñ‚Ñ‹ важных
-данных и кода, ненадлежащее иÑпользование которых может пагубно ÑказатьÑÑ Ð½Ð° работе приложениÑ.
+Разрешение <i>предÑтавлÑет</i> Ñобой ограничение на доÑтуп к чаÑти кода
+или к данным, имеющимÑÑ Ð½Ð° уÑтройÑтве. Это ограничение накладываетÑÑ Ð´Ð»Ñ Ð·Ð°Ñ‰Ð¸Ñ‚Ñ‹ важных
+данных и кода, ненадлежащее иÑпользование которых может пагубно ÑказатьÑÑ Ð½Ð° работе приложениÑ.
</p>
<p>
-Каждое разрешение обозначаетÑÑ ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ð¹ меткой. ЗачаÑтую метка обозначает
-дейÑтвие, выполнение которого ограничиваетÑÑ. Ðапример, вот некоторые разрешениÑ, определенные
+Каждое разрешение обозначаетÑÑ ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ð¹ меткой. ЗачаÑтую метка обозначает
+дейÑтвие, выполнение которого ограничиваетÑÑ. Ðапример, вот некоторые разрешениÑ, определенные
ÑиÑтемой Android:
</p>
@@ -418,25 +418,25 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
</p>
<p>
-ЕÑли приложению требуетÑÑ Ð´Ð¾Ñтуп к функции, защищенной разрешением,
-оно должно объÑвить, что ему необходимо Ñто разрешение, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлемента
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
-в файле манифеÑта. Затем, когда приложение уÑтанавливаетÑÑ Ð½Ð°
-уÑтройÑтво, уÑтановщик определÑет, выдать ли запрошенное
-разрешение, проверÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ð¼Ð¾Ñ‡Ð¸Ñ Ð¾Ñ€Ð³Ð°Ð½Ð¾Ð², подпиÑавших Ñертификаты
-приложениÑ, а также, в некоторых ÑлучаÑÑ…, ÑÐ¿Ñ€Ð°ÑˆÐ¸Ð²Ð°Ñ Ð¾Ð± Ñтом пользователÑ.
-ЕÑли разрешение предоÑтавлÑетÑÑ, приложение Ñможет иÑпользовать защищенные
+ЕÑли приложению требуетÑÑ Ð´Ð¾Ñтуп к функции, защищенной разрешением,
+оно должно объÑвить, что ему необходимо Ñто разрешение, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлемента
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+в файле манифеÑта. Затем, когда приложение уÑтанавливаетÑÑ Ð½Ð°
+уÑтройÑтво, уÑтановщик определÑет, выдать ли запрошенное
+разрешение, проверÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ð¼Ð¾Ñ‡Ð¸Ñ Ð¾Ñ€Ð³Ð°Ð½Ð¾Ð², подпиÑавших Ñертификаты
+приложениÑ, а также, в некоторых ÑлучаÑÑ…, ÑÐ¿Ñ€Ð°ÑˆÐ¸Ð²Ð°Ñ Ð¾Ð± Ñтом пользователÑ.
+ЕÑли разрешение предоÑтавлÑетÑÑ, приложение Ñможет иÑпользовать защищенные
функции. Ð’ противном Ñлучае его попытки доÑтупа к Ñтим функциÑм будут безуÑпешными,
-причем пользователь не получит никакого ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ð± Ñтом.
+причем пользователь не получит никакого ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ð± Ñтом.
</p>
<p>
-Приложение также может защищать Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ разрешений ÑобÑтвенные компоненты (операции, Ñлужбы,
-приемники широковещательных Ñообщений и поÑтавщиков контента). Оно может иÑпользовать
-любые разрешениÑ, определенные ÑиÑтемой Android (они приведены в объекте
-{@link android.Manifest.permission android.Manifest.permission}) или объÑвленные
-другими приложениÑми. Либо оно может определить Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ÑамоÑтоÑтельно. Ðовое разрешение объÑвлÑетÑÑ
-Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлемента
+Приложение также может защищать Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ разрешений ÑобÑтвенные компоненты (операции, Ñлужбы,
+приемники широковещательных Ñообщений и поÑтавщиков контента). Оно может иÑпользовать
+любые разрешениÑ, определенные ÑиÑтемой Android (они приведены в объекте
+{@link android.Manifest.permission android.Manifest.permission}) или объÑвленные
+другими приложениÑми. Либо оно может определить Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ÑамоÑтоÑтельно. Ðовое разрешение объÑвлÑетÑÑ
+Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлемента
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
. Ðапример, операцию можно защитить Ñледующим образом:
</p>
@@ -457,43 +457,43 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
</pre>
<p>
-Обратите внимание, что в Ñтом примере разрешение {@code DEBIT_ACCT} не только
-объÑвлÑетÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлемента
+Обратите внимание, что в Ñтом примере разрешение {@code DEBIT_ACCT} не только
+объÑвлÑетÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлемента
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-, его иÑпользование также запрашиваетÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлемента
+, его иÑпользование также запрашиваетÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлемента
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
. Чтобы другие компоненты Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑƒÑкали защищенную
-операцию, ее иÑпользование должно быть запрошено, даже неÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то, что защита
-наложена Ñамим приложением.
+операцию, ее иÑпользование должно быть запрошено, даже неÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то, что защита
+наложена Ñамим приложением.
</p>
<p>
-Ð’ Ñтом же примере: еÑли атрибут {@code permission} был бы задан как
-разрешение, объÑвленное где-то еще
-(например, {@code android.permission.CALL_EMERGENCY_NUMBERS}), его бы не
-нужно было объÑвлÑть еще раз Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлемента
+Ð’ Ñтом же примере: еÑли атрибут {@code permission} был бы задан как
+разрешение, объÑвленное где-то еще
+(например, {@code android.permission.CALL_EMERGENCY_NUMBERS}), его бы не
+нужно было объÑвлÑть еще раз Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлемента
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-. Однако вÑе равно нужно было бы запрашивать его иÑпользование Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
+. Однако вÑе равно нужно было бы запрашивать его иÑпользование Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
</p>
<p>
-Элемент
-<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
-объÑвлÑет проÑтранÑтво имен Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ разрешений, которые будут определены в
-коде. Ð Ñлемент
+Элемент
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+объÑвлÑет проÑтранÑтво имен Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ разрешений, которые будут определены в
+коде. Ð Ñлемент
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
-определÑет метку Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñ€Ð° разрешений (как Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ð¹, объÑвленных в файле манифеÑта Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлементов
+определÑет метку Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñ€Ð° разрешений (как Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ð¹, объÑвленных в файле манифеÑта Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлементов
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-, так и Ð´Ð»Ñ Ð¾Ð±ÑŠÑвленных где-то еще). Это влиÑет только на то, каким образом разрешениÑ
-группируютÑÑ, когда отображаютÑÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŽ. Элемент
+, так и Ð´Ð»Ñ Ð¾Ð±ÑŠÑвленных где-то еще). Это влиÑет только на то, каким образом разрешениÑ
+группируютÑÑ, когда отображаютÑÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŽ. Элемент
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
-не указывает, какие Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑÑÑ‚ÑÑ Ðº группе.
+не указывает, какие Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑÑÑ‚ÑÑ Ðº группе.
Он проÑто дает группе имÑ. Чтобы включить разрешение в группу,
-атрибуту
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
- его Ñлемента
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+атрибуту
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
+ его Ñлемента
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
необходимо приÑвоить Ð¸Ð¼Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹.
</p>
@@ -501,17 +501,17 @@ Intent} они могут принимать). Ðа оÑновании Ñтих
<h3 id="libs">Библиотеки</h3>
<p>
-Каждое приложение ÑвÑзываетÑÑ Ñ Ð¸Ñпользуемой по умолчанию библиотекой Android, в которой
-имеютÑÑ Ð±Ð°Ð·Ð¾Ð²Ñ‹Ðµ пакеты Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ (Ñо Ñтандартными клаÑÑами,
-например Activity, Service, Intent, View, Button, Application, ContentProvider
+Каждое приложение ÑвÑзываетÑÑ Ñ Ð¸Ñпользуемой по умолчанию библиотекой Android, в которой
+имеютÑÑ Ð±Ð°Ð·Ð¾Ð²Ñ‹Ðµ пакеты Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ (Ñо Ñтандартными клаÑÑами,
+например Activity, Service, Intent, View, Button, Application, ContentProvider
и так далее).
</p>
<p>
-Однако некоторые пакеты находÑÑ‚ÑÑ Ð² ÑобÑтвенных библиотеках. ЕÑли ваше приложение
-иÑпользует код из одного из таких пакетов, оно должно в Ñвном виде потребовать, чтобы его ÑвÑзали
-Ñ Ñтим пакетом. Файл манифеÑта должен Ñодержать отдельный Ñлемент
-<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
-Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ каждой библиотеки. (Ð˜Ð¼Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ можно найти в
+Однако некоторые пакеты находÑÑ‚ÑÑ Ð² ÑобÑтвенных библиотеках. ЕÑли ваше приложение
+иÑпользует код из одного из таких пакетов, оно должно в Ñвном виде потребовать, чтобы его ÑвÑзали
+Ñ Ñтим пакетом. Файл манифеÑта должен Ñодержать отдельный Ñлемент
+<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ каждой библиотеки. (Ð˜Ð¼Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ можно найти в
документации по пакету.)
</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/ru/guide/topics/providers/calendar-provider.jd
index 2d12e1261d93..3533ad00f6a1 100644
--- a/docs/html-intl/intl/ru/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/ru/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@ page.title=ПоÑтавщик календарÑ
<li><a href="#intent-view">ИÑпользование Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра данных календарÑ</a></li>
</ol>
</li>
-
+
<li><a href="#sync-adapter">Ðдаптеры Ñинхронизации</a></li>
</ol>
@@ -113,26 +113,26 @@ URI имеют формат <code><em>&lt;class&gt;</em>.CONTENT_URI</code>. ÐÐ
</tr>
<tr>
<td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-
+
<td>Ð’ Ñтой таблице находитÑÑ
Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ календарÑÑ…. Ð’ каждой Ñтроке Ñтой таблицы предÑтавлены ÑведениÑ
об отдельном календаре, например, его название, цвет, Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ Ñинхронизации и Ñ‚. д.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Events}</td>
-
+
<td>Ð’ Ñтой таблице находитÑÑ
Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ ÑобытиÑÑ…. Ð’ каждой Ñтроке Ñтой таблицы ÑодержитÑÑ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± отдельном
Ñобытии &mdash;например, заголовок ÑобытиÑ, меÑто проведениÑ, Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°, времÑ
Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¸ Ñ‚. д. Событие может быть однократным или повторÑющимÑÑ. Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± учаÑтниках,
-напоминаниÑÑ… и раÑширенные ÑвойÑтва хранÑÑ‚ÑÑ Ð² отдельных таблицах.
+напоминаниÑÑ… и раÑширенные ÑвойÑтва хранÑÑ‚ÑÑ Ð² отдельных таблицах.
Ð’ каждой из них имеетÑÑ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID},
ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑÑылаетÑÑ Ð½Ð° объект {@link android.provider.BaseColumns#_ID} в таблице Ñобытий.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances}</td>
-
+
<td>Ð’ Ñтой таблице ÑодержатÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ о времени
начала и Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ ÑобытиÑ. Ð’ каждой Ñтроке Ñтой таблицы
предÑтавлено одно повторение ÑобытиÑ. Однократные ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ ÑопоÑтавлÑÑŽÑ‚ÑÑ Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñми
@@ -141,7 +141,7 @@ URI имеют формат <code><em>&lt;class&gt;</em>.CONTENT_URI</code>. ÐÐ
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Attendees}</td>
-
+
<td>Ð’ Ñтой таблице находитÑÑ
Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± учаÑтниках (гоÑÑ‚ÑÑ…). Ð’ каждой Ñтроке Ñтой таблицы указан один
гоÑть. Ð’ ней указываютÑÑ Ñ‚Ð¸Ð¿ гоÑÑ‚Ñ Ð¸ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ том,
@@ -149,7 +149,7 @@ URI имеют формат <code><em>&lt;class&gt;</em>.CONTENT_URI</code>. ÐÐ
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Reminders}</td>
-
+
<td>Ð’ Ñтой таблице находÑÑ‚ÑÑ
данные уведомлений или оповещений. Ð’ каждой Ñтроке Ñтой таблицы указано одно уведомление или оповещение. Ð”Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾
ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ Ñоздать неÑколько напоминаний. МакÑимальное количеÑтво таких напоминаний Ð´Ð»Ñ ÑобытиÑ
@@ -159,7 +159,7 @@ URI имеют формат <code><em>&lt;class&gt;</em>.CONTENT_URI</code>. ÐÐ
указанным календарем. ÐÐ°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð·Ð°Ð´Ð°ÑŽÑ‚ÑÑ Ð² минутах до начала ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¸
имеют метод, который определÑет порÑдок ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ.</td>
</tr>
-
+
</table>
<p>API поÑтавщика ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ Ð¾Ð±ÐµÑпечивает доÑтаточную гибкоÑть и ÑффективноÑть. Ð’ то же времÑ
@@ -211,7 +211,7 @@ android.Manifest.permission#READ_CALENDAR}. Также в него
<p>Ð’ таблице {@link android.provider.CalendarContract.Calendars} ÑодержатÑÑ Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ñ‹Ðµ ÑведениÑ
о каждом отдельном календаре. ВыполнÑть запиÑÑŒ в указанные ниже Ñтолбцы
-Ñтой таблицы могут и приложение, и <a href="#sync-adapter">адаптер Ñинхронизации</a>.
+Ñтой таблицы могут и приложение, и <a href="#sync-adapter">адаптер Ñинхронизации</a>.
Полный ÑпиÑок поддерживаемых полей предÑтавлен в Ñправке по клаÑÑу
{@link android.provider.CalendarContract.Calendars}.</p>
<table>
@@ -229,7 +229,7 @@ android.Manifest.permission#READ_CALENDAR}. Также в него
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-
+
<td>ЛогичеÑкое значение, обозначающее, выбран ли календарь Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ. Значение
«0» указывает на то, что ÑобытиÑ, ÑвÑзанные Ñ
Ñтим календарем, не отображаютÑÑ. Значение «1» указывает на то, что ÑобытиÑ, ÑвÑзанные Ñ
@@ -240,7 +240,7 @@ android.provider.CalendarContract.Instances}.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-
+
<td>ЛогичеÑкое значение, обозначающее, Ñледует ли Ñинхронизировать календарь и хранить имеющиеÑÑ Ð² нем ÑобытиÑ
на уÑтройÑтве. Значение «0» указывает, что не Ñледует Ñинхронизировать Ñтот календарь или
хранить имеющиеÑÑ Ð² нем ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð½Ð° уÑтройÑтве. Значение «1» указывает, что Ñтот календарь Ñледует Ñинхронизировать и
@@ -268,13 +268,13 @@ public static final String[] EVENT_PROJECTION = new String[] {
Calendars.CALENDAR_DISPLAY_NAME, // 2
Calendars.OWNER_ACCOUNT // 3
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
-
+
<div class="sidebox-wrapper"> <div class="sidebox"> <h3>Зачем необходимо указывать параметр
ACCOUNT_TYPE?</h3> <p>При Ñоздании запроÑа {@link
@@ -289,7 +289,7 @@ Calendars.ACCOUNT_NAME} необходимо также
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}. Он иÑпользуетÑÑ Ð´Ð»Ñ ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€ÐµÐ¹,
которые не ÑвÑзаны Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð¾Ð¼ уÑтройÑтва. Ðккаунты {@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} не
-ÑинхронизируютÑÑ.</p> </div> </div>
+ÑинхронизируютÑÑ.</p> </div> </div>
<p> Ð’ Ñледующей чаÑти примера ÑоздаетÑÑ Ð·Ð°Ð¿Ñ€Ð¾Ñ. С помощью выбора определÑÑŽÑ‚ÑÑ
@@ -308,38 +308,38 @@ android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} не
<pre>// Run query
Cursor cur = null;
ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+Uri uri = Calendars.CONTENT_URI;
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+ Calendars.ACCOUNT_TYPE + " = ?) AND ("
+ Calendars.OWNER_ACCOUNT + " = ?))";
String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
- "sampleuser@gmail.com"};
-// Submit the query and get a Cursor object back.
+ "sampleuser@gmail.com"};
+// Submit the query and get a Cursor object back.
cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
<p>Ð’ Ñледующем разделе кода выполнÑетÑÑ Ð¿Ð¾ÑˆÐ°Ð³Ð¾Ð²Ñ‹Ð¹ обзор набора результатов Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ курÑора. Ð’ нем
иÑпользуютÑÑ ÐºÐ¾Ð½Ñтанты, которые были заданы в начале примера, Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹
Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ из полей.</p>
-
+
<pre>// Use the cursor to step through the returned records
while (cur.moveToNext()) {
long calID = 0;
String displayName = null;
String accountName = null;
String ownerName = null;
-
+
// Get the field values
calID = cur.getLong(PROJECTION_ID_INDEX);
displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
-
+
// Do something with the values...
...
}
</pre>
-
+
<h3 id="modify-calendar">Изменение календарÑ</h3>
<p>Чтобы обновить календарь, можно указать {@link
@@ -350,7 +350,7 @@ android.provider.BaseColumns#_ID} календарÑ: либо в виде идÐ
либо в качеÑтве первого Ñлемента выделениÑ. Выделение
должно начинатьÑÑ Ñ <code>&quot;_id=?&quot;</code>, а первым аргументом
<code>selectionArg</code> должен быть {@link
-android.provider.BaseColumns#_ID} календарÑ.
+android.provider.BaseColumns#_ID} календарÑ.
Также Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ð¹ можно закодировать идентификатор в URI. Ð’ Ñтом примере длÑ
Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°ÐµÐ¼Ð¾Ð³Ð¾ имени ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ Ð¸ÑпользуетÑÑ
подход
@@ -387,7 +387,7 @@ android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}.
в <a href="#manifest">файл манифеÑта</a>
Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ включить разрешение {@link android.Manifest.permission#WRITE_CALENDAR}.</p>
-<p>ВыполнÑть запиÑÑŒ в указанные ниже Ñтолбцы Ñтой таблицы могут и приложение, и
+<p>ВыполнÑть запиÑÑŒ в указанные ниже Ñтолбцы Ñтой таблицы могут и приложение, и
адаптер Ñинхронизации. Полный ÑпиÑок поддерживаемых полей предÑтавлен в Ñправке по клаÑÑу {@link
android.provider.CalendarContract.Events}.</p>
@@ -434,7 +434,7 @@ android.provider.CalendarContract.Events}.</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
-
+
<td>ПродолжительноÑть ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð² формате <a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a>.
Ðапример, значение <code>&quot;PT1H&quot;</code> обозначает, что Ñобытие
должно длитьÑÑ Ð¾Ð´Ð¸Ð½ чаÑ, а значение <code>&quot;P2W&quot;</code> указывает на продолжительноÑть
@@ -444,39 +444,39 @@ android.provider.CalendarContract.Events}.</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
-
+
<td>Значение «1» обозначает, что Ñто Ñобытие занимает веÑÑŒ день по
меÑтному чаÑовому поÑÑу. Значение «0» указывает на то, что Ñто регулÑрное Ñобытие, которое может начатьÑÑ
и завершитьÑÑ Ð² любое Ð²Ñ€ÐµÐ¼Ñ Ð² течение днÑ.</td>
-
+
</tr>
-
-
+
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
-
+
<td>Правило Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° ÑобытиÑ. Ðапример,
<code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>. С другими
примерами можно ознакомитьÑÑ <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">здеÑÑŒ</a>.</td>
-
+
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
- <td>Даты Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ ÑобытиÑ.
+ <td>Даты Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ ÑобытиÑ.
Обычно {@link android.provider.CalendarContract.EventsColumns#RDATE}
иÑпользуетÑÑ Ð²Ð¼ÐµÑте Ñ {@link android.provider.CalendarContract.EventsColumns#RRULE}
Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð°Ð³Ñ€ÐµÐ³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð¾Ð³Ð¾ набора
повторÑющихÑÑ Ñобытий. Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñтавлены в <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">Ñпецификации RFC5545</a>.</td>
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
-
+
<td>ЕÑли Ñобытие ÑчитаетÑÑ ÐºÐ°Ðº занÑтое или как Ñвободное времÑ,
доÑтупное Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ. </td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
@@ -514,11 +514,11 @@ java.util.TimeZone#getAvailableIDs()}. Обратите внимание, что
вÑтавке ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ {@link
android.content.Intent#ACTION_INSERT INSERT}, как опиÑано в разделе <a href="#intent-insert">ИÑпользование Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²Ñтавки ÑобытиÑ</a>, &mdash; в Ñтом
Ñлучае иÑпользуетÑÑ Ñ‡Ð°Ñовой поÑÑ Ð¿Ð¾ умолчанию.</li>
-
+
<li>Ð”Ð»Ñ Ð¾Ð´Ð½Ð¾ÐºÑ€Ð°Ñ‚Ð½Ñ‹Ñ… Ñобытий необходимо указать {@link
android.provider.CalendarContract.EventsColumns#DTEND}. </li>
-
-
+
+
<li>Ð”Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÑющихÑÑ Ñобытий необходимо указать {@link
android.provider.CalendarContract.EventsColumns#DURATION} в дополнение к {@link
android.provider.CalendarContract.EventsColumns#RRULE} или {@link
@@ -528,7 +528,7 @@ android.content.Intent#ACTION_INSERT INSERT}, как опиÑано в раздÐ
Ñлучае можно иÑпользовать {@link
android.provider.CalendarContract.EventsColumns#RRULE} в Ñочетании Ñ {@link android.provider.CalendarContract.EventsColumns#DTSTART} и {@link android.provider.CalendarContract.EventsColumns#DTEND}; кроме того, приложение «Календарь»
автоматичеÑки преобразует указанный период в продолжительноÑть.</li>
-
+
</ul>
<p>Ðиже предÑтавлен пример вÑтавки ÑобытиÑ. Ð”Ð»Ñ Ð¿Ñ€Ð¾Ñтоты вÑе Ñто выполнÑетÑÑ Ð² потоке
@@ -539,8 +539,8 @@ android.provider.CalendarContract.EventsColumns#RRULE} в Ñочетании Ñ
<pre>
long calID = 3;
-long startMillis = 0;
-long endMillis = 0;
+long startMillis = 0;
+long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@ Uri uri = cr.insert(Events.CONTENT_URI, values);
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
-//
+//
// ... do something with event ID
//
//</pre>
@@ -598,7 +598,7 @@ ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
Uri updateUri = null;
// The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;);
+values.put(Events.TITLE, &quot;Kickboxing&quot;);
updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().update(updateUri, values, null, null);
Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows); </pre>
@@ -625,7 +625,7 @@ ContentValues values = new ContentValues();
Uri deleteUri = null;
deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().delete(deleteUri, null, null);
-Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
</pre>
<h2 id="attendees">Таблица учаÑтников</h2>
@@ -634,10 +634,10 @@ Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
указан один учаÑтник или гоÑть ÑобытиÑ. При вызове метода
{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
возвращаетÑÑ ÑпиÑок учаÑтников Ð´Ð»Ñ ÑобытиÑ
-Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}.
+Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}.
Этот {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
должен ÑоответÑтвовать {@link
-android.provider.BaseColumns#_ID} определенного ÑобытиÑ.</p>
+android.provider.BaseColumns#_ID} определенного ÑобытиÑ.</p>
<p>В таблице ниже указаны
полÑ, доÑтупные Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи. При вÑтавке нового учаÑтника необходимо указать вÑе Ñти полÑ, кроме
@@ -720,7 +720,7 @@ Uri uri = cr.insert(Attendees.CONTENT_URI, values);
<p>Ð’ каждой Ñтроке таблицы {@link android.provider.CalendarContract.Reminders}
указано одно напоминание о Ñобытии. При вызове метода
{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}возвращаетÑÑ ÑпиÑок напоминаний Ð´Ð»Ñ ÑобытиÑ
-Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼
+Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼
{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}.</p>
@@ -780,9 +780,9 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
возможноÑть запрашивать Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ Ñобытий. </p>
<p>Ð’ таблице ниже перечиÑлены некоторые из полей, которые можно запроÑить Ð´Ð»Ñ ÑкземплÑра. Обратите внимание,
-что чаÑовой поÑÑ Ð·Ð°Ð´Ð°ÐµÑ‚ÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸
-{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
-и
+что чаÑовой поÑÑ Ð·Ð°Ð´Ð°ÐµÑ‚ÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
+и
{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}.</p>
@@ -801,18 +801,18 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
-
+
<td>День Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ ÑкземплÑра по юлианÑкому календарю отноÑительно чаÑового поÑÑа
-Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Â«ÐšÐ°Ð»ÐµÐ½Ð´Ð°Ñ€ÑŒÂ».
-
+Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Â«ÐšÐ°Ð»ÐµÐ½Ð´Ð°Ñ€ÑŒÂ».
+
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
-
+
<td>Минута Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ ÑкземплÑра, вычиÑÐ»ÐµÐ½Ð½Ð°Ñ Ð¾Ñ‚ полуночи по чаÑовому поÑÑу
Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Â«ÐšÐ°Ð»ÐµÐ½Ð´Ð°Ñ€ÑŒÂ».</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
@@ -820,27 +820,27 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
- <td>День начала ÑкземплÑра по юлианÑкому календарю отноÑительно чаÑового поÑÑа Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Â«ÐšÐ°Ð»ÐµÐ½Ð´Ð°Ñ€ÑŒÂ».
+ <td>День начала ÑкземплÑра по юлианÑкому календарю отноÑительно чаÑового поÑÑа Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Â«ÐšÐ°Ð»ÐµÐ½Ð´Ð°Ñ€ÑŒÂ».
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-
+
<td>Минута начала ÑкземплÑра, вычиÑÐ»ÐµÐ½Ð½Ð°Ñ Ð¾Ñ‚ полуночи по чаÑовому поÑÑу
-Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Â«ÐšÐ°Ð»ÐµÐ½Ð´Ð°Ñ€ÑŒÂ».
+Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Â«ÐšÐ°Ð»ÐµÐ½Ð´Ð°Ñ€ÑŒÂ».
</td>
-
+
</tr>
</table>
<h3 id="query-instances">Ð—Ð°Ð¿Ñ€Ð¾Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ ÑкземплÑров</h3>
-<p>Чтобы запроÑить таблицу ÑкземплÑров, необходимо указать промежуток времени Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа в
+<p>Чтобы запроÑить таблицу ÑкземплÑров, необходимо указать промежуток времени Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа в
URI. Ð’ Ñтом примере {@link android.provider.CalendarContract.Instances}
получает доÑтуп к полю {@link
android.provider.CalendarContract.EventsColumns#TITLE} поÑредÑтвом Ñвоей реализации
-интерфейÑа {@link android.provider.CalendarContract.EventsColumns}.
+интерфейÑа {@link android.provider.CalendarContract.EventsColumns}.
Другими Ñловами, {@link
android.provider.CalendarContract.EventsColumns#TITLE}
возвращаетÑÑ Ð¿Ð¾ÑредÑтвом Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ðº базе данных, а не путем запроÑа таблицы {@link
@@ -853,7 +853,7 @@ public static final String[] INSTANCE_PROJECTION = new String[] {
Instances.BEGIN, // 1
Instances.TITLE // 2
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_BEGIN_INDEX = 1;
@@ -868,7 +868,7 @@ long startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2011, 10, 24, 8, 0);
long endMillis = endTime.getTimeInMillis();
-
+
Cursor cur = null;
ContentResolver cr = getContentResolver();
@@ -883,28 +883,28 @@ ContentUris.appendId(builder, startMillis);
ContentUris.appendId(builder, endMillis);
// Submit the query
-cur = cr.query(builder.build(),
- INSTANCE_PROJECTION,
- selection,
- selectionArgs,
+cur = cr.query(builder.build(),
+ INSTANCE_PROJECTION,
+ selection,
+ selectionArgs,
null);
-
+
while (cur.moveToNext()) {
String title = null;
long eventID = 0;
- long beginVal = 0;
-
+ long beginVal = 0;
+
// Get the field values
eventID = cur.getLong(PROJECTION_ID_INDEX);
beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
title = cur.getString(PROJECTION_TITLE_INDEX);
-
- // Do something with the values.
- Log.i(DEBUG_TAG, "Event: " + title);
+
+ // Do something with the values.
+ Log.i(DEBUG_TAG, "Event: " + title);
Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(beginVal);
+ calendar.setTimeInMillis(beginVal);
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
- Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
+ Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
}
}</pre>
@@ -923,8 +923,8 @@ while (cur.moveToNext()) {
{@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
<td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
СоÑлатьÑÑ Ð½Ð° URI также можно Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ
-{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}.
-Пример иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтого Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñтавлен в разделе <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">ИÑпользование намерений Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра данных календарÑ</a>.
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}.
+Пример иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтого Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñтавлен в разделе <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">ИÑпользование намерений Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра данных календарÑ</a>.
</td>
<td>Открытие ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ Ð²Ð¾ времÑ, заданное параметром <code>&lt;ms_since_epoch&gt;</code>.</td>
@@ -935,11 +935,11 @@ while (cur.moveToNext()) {
</td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
+
СоÑлатьÑÑ Ð½Ð° URI также можно Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
Пример иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтого Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñтавлен в разделе <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">ИÑпользование намерений Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра данных календарÑ</a>.
-
+
</td>
<td>ПроÑмотр ÑобытиÑ, указанного Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ <code>&lt;event_id&gt;</code>.</td>
@@ -952,12 +952,12 @@ while (cur.moveToNext()) {
<tr>
<td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
+
СоÑлатьÑÑ Ð½Ð° URI также можно Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
Пример иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтого Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñтавлен в разделе <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">ИÑпользование Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑобытиÑ</a>.
-
-
+
+
</td>
<td>Редактирование ÑобытиÑ, указанного Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ <code>&lt;event_id&gt;</code>.</td>
@@ -972,11 +972,11 @@ while (cur.moveToNext()) {
<br>
{@link android.content.Intent#ACTION_INSERT INSERT} </td>
<td><p><code>content://com.android.calendar/events</code></p>
-
+
СоÑлатьÑÑ Ð½Ð° URI также можно Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
Пример иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтого Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñтавлен в разделе <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">ИÑпользование Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑобытиÑ</a>.
-
+
</td>
<td>Создание ÑобытиÑ.</td>
@@ -996,7 +996,7 @@ while (cur.moveToNext()) {
<td>Ðазвание ÑобытиÑ.</td>
</tr>
<tr>
-
+
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<td>Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ (в миллиÑекундах) от Ñпохи.</td>
@@ -1004,25 +1004,25 @@ CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME}</td>
-
+
<td>Ð’Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ (в миллиÑекундах) от Ñпохи.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
-
+
<td>ЛогичеÑкое значение, обозначающее, что Ñто Ñобытие на веÑÑŒ день. Значение может быть
<code>true</code> или <code>false</code>.</td> </tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
Events.EVENT_LOCATION}</td>
-
+
<td>МеÑто Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÑобытиÑ.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
Events.DESCRIPTION}</td>
-
+
<td>ОпиÑание ÑобытиÑ.</td>
</tr>
<tr>
@@ -1039,16 +1039,16 @@ Events.DESCRIPTION}</td>
<td>
{@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
Events.ACCESS_LEVEL}</td>
-
+
<td>Указывает на то, ÑвлÑетÑÑ Ð»Ð¸ Ñобытие общедоÑтупным или закрытым.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
Events.AVAILABILITY}</td>
-
+
<td>ЕÑли Ñобытие ÑчитаетÑÑ ÐºÐ°Ðº занÑтое или как Ñвободное времÑ, доÑтупное Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ.</td>
-
-</table>
+
+</table>
<p>Ð’ разделах ниже указан порÑдок иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтих намерений.</p>
@@ -1059,14 +1059,14 @@ Events.AVAILABILITY}</td>
Ð‘Ð»Ð°Ð³Ð¾Ð´Ð°Ñ€Ñ Ñтому в <a href="#manifest">файл манифеÑта</a> вашего Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ нужно включать разрешение {@link
android.Manifest.permission#WRITE_CALENDAR}.</p>
-
+
<p>Когда пользователи работают Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼, в котором иÑпользуетÑÑ Ñ‚Ð°ÐºÐ¾Ð¹ подход, приложение отправлÑет
их в «Календарь» Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑобытиÑ. Ðамерение {@link
android.content.Intent#ACTION_INSERT INSERT} иÑпользует дополнительные полÑ
Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð² форме Ñведений о Ñобытии в приложении «Календарь». ПоÑле Ñтого пользователи
могут отменить Ñобытие, отредактировать форму или Ñохранить Ñобытие в Ñвоем
календаре.</p>
-
+
<p>Ðиже предÑтавлен фрагмент кода, в котором на 19 ÑнварÑ 2012 г. планируетÑÑ Ñобытие, которое будет проходить Ñ
@@ -1075,7 +1075,7 @@ android.content.Intent#ACTION_INSERT INSERT} иÑпользует дополни
<ul>
<li>Ð’ качеÑтве URI в нем задаетÑÑ
{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.</li>
-
+
<li>Ð’ нем иÑпользуютÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ Ð¿Ð¾Ð»Ñ {@link
android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME} и {@link
@@ -1083,10 +1083,10 @@ android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME} Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð² форме
Ñведений о времени ÑобытиÑ. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ должны быть указаны в формате UTC и в миллиÑекундах от
Ñпохи.</li>
-
+
<li>Ð’ нем иÑпользуетÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ поле {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑпиÑка учаÑтников, разделенных запÑтыми (их адреÑа Ñл. почты).</li>
-
+
</ul>
<pre>
Calendar beginTime = Calendar.getInstance();
@@ -1158,12 +1158,12 @@ startActivity(intent);
<ul>
<li>Ðдаптеру Ñинхронизации необходимо указать, что он ÑвлÑетÑÑ Ñ‚Ð°ÐºÐ¾Ð²Ñ‹Ð¼, задав Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} значение <code>true</code>.</li>
-
-
+
+
<li>Ðдаптеру Ñинхронизации необходимо предоÑтавить {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} и {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} в качеÑтве параметров запроÑа в URI. </li>
-
+
<li>Ðдаптер Ñинхронизации имеет доÑтуп на запиÑÑŒ к большему чиÑлу Ñтолбцов, чем приложение или виджет.
Ðапример, приложение может изменÑть только некоторые характериÑтики календарÑ,
такие как название, отображаемое имÑ, наÑтройки видимоÑти и
diff --git a/docs/html-intl/intl/ru/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/ru/guide/topics/providers/contacts-provider.jd
index 4d07856f250e..151f75bc7e83 100644
--- a/docs/html-intl/intl/ru/guide/topics/providers/contacts-provider.jd
+++ b/docs/html-intl/intl/ru/guide/topics/providers/contacts-provider.jd
@@ -467,7 +467,7 @@ Email.CONTENT_ITEM_TYPE}, в которой в Ñтолбце
</p>
<p>
При добавлении нового необработанного контакта,
-который не ÑоответÑтвует ни одному из ÑущеÑтвующих контактов, поÑтавщик контактов Ñоздает новый контакт. ПоÑтавщик поÑтупает аналогично в Ñлучае, еÑли
+который не ÑоответÑтвует ни одному из ÑущеÑтвующих контактов, поÑтавщик контактов Ñоздает новый контакт. ПоÑтавщик поÑтупает аналогично в Ñлучае, еÑли
данные в Ñтроке ÑущеÑтвующего необработанного контакта изменÑÑŽÑ‚ÑÑ Ñ‚Ð°ÐºÐ¸Ð¼ образом, что они больше не ÑоответÑтвуют контакту,
Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼ они ранее были ÑвÑзаны. При Ñоздании приложением или адаптером Ñинхронизации нового контакта,
который <em></em> ÑоответÑтвует ÑущеÑтвующему контакту, то новый контакт объединÑетÑÑ Ñ
@@ -543,7 +543,7 @@ Email.CONTENT_ITEM_TYPE}, в которой в Ñтолбце
</p>
<p>
ЕÑли необходимо передать данные из Ñлужбы в поÑтавщик контактов, необходимо Ñоздать
-ÑобÑтвенный адаптер Ñинхронизации. Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± Ñтом предÑтавлены в разделе
+ÑобÑтвенный адаптер Ñинхронизации. Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± Ñтом предÑтавлены в разделе
<a href="#SyncAdapters">Ðдаптеры Ñинхронизации поÑтавщика контактов</a>.
</p>
<p>
@@ -672,7 +672,7 @@ mProfileCursor =
Android.
<p>
Ðдаптеры Ñинхронизации, которые вноÑÑÑ‚ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² необработанные контакты или таблицы данных, должны вÑегда добавлÑть к иÑпользуемому ими URI
-контента Ñтроку
+контента Ñтроку
{@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER}. Это позволÑет предотвратить пометку таких Ñтрок поÑтавщиком как «грÑзных».
Ð’ противном Ñлучае изменениÑ, внеÑенные адаптером Ñинхронизации, будут раÑÑматриватьÑÑ ÐºÐ°Ðº локальные изменениÑ,
которые подлежат отправке на Ñервер, даже еÑли иÑточником таких изменений был Ñам Ñервер.
@@ -1809,7 +1809,7 @@ URI веб-Ñлужбы Ð´Ð»Ñ Ñинхронизации Ñ Ð¿Ð¾ÑтавщикÐ
<li>
<strong>ÐеобÑзательно:</strong> Ñлемент
<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
-Ð´Ð»Ñ Ñтруктуры проверки подлинноÑти указывает на файл XML
+Ð´Ð»Ñ Ñтруктуры проверки подлинноÑти указывает на файл XML
<code>res/xml/authenticator.xml</code>. Ð’ Ñвою очередь, в Ñтом файле задаетÑÑ
тип аккаунта, который поддерживает Ñтруктура проверки подлинноÑти, а также реÑурÑÑ‹ пользовательÑкого интерфейÑа,
которые отображаютÑÑ Ð² процеÑÑе аутентификации. Тип аккаунта, указанный в Ñтом
@@ -2022,7 +2022,7 @@ openAssetFileDescriptor()}, передав в него Ñтот URI, чтобы
</ul>
<p>
РегулÑÑ€Ð½Ð°Ñ ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñлементов потока Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ поÑтавщика контактов выполнÑетÑÑ Ñ‚Ð°Ðº же,
-как и Ð»ÑŽÐ±Ð°Ñ Ð´Ñ€ÑƒÐ³Ð°Ñ ÑинхронизациÑ. Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ Ñинхронизации предÑтавлены в разделе
+как и Ð»ÑŽÐ±Ð°Ñ Ð´Ñ€ÑƒÐ³Ð°Ñ ÑинхронизациÑ. Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ Ñинхронизации предÑтавлены в разделе
<a href="#SyncAdapters">Ðдаптеры Ñинхронизации поÑтавщика контактов</a>. РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹
и приглашение контактов раÑÑматриваютÑÑ Ð² Ñледующих двух разделах.
</p>
@@ -2092,7 +2092,7 @@ openAssetFileDescriptor()}, передав в него Ñтот URI, чтобы
<h4>ВзаимодейÑтвие Ñо Ñлужбой Ñоциальной Ñети</h4>
<p>
ПользователÑм не обÑзательно выходить из Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°Ð¼Ð¸, которое имеетÑÑ Ð½Ð° уÑтройÑтве, чтобы приглаÑить контакт на Ñайт
-Ñоциальной Ñети. ВмеÑто Ñтого приложение Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°Ð¼Ð¸ может отправить намерение Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ
+Ñоциальной Ñети. ВмеÑто Ñтого приложение Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°Ð¼Ð¸ может отправить намерение Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ
контакта в одну из ваших операций. Ð”Ð»Ñ Ñтого выполните указанные ниже дейÑтвиÑ.
</p>
<ol>
diff --git a/docs/html-intl/intl/ru/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/ru/guide/topics/providers/content-provider-basics.jd
index c912dbc03752..4d520e814dc0 100644
--- a/docs/html-intl/intl/ru/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html-intl/intl/ru/guide/topics/providers/content-provider-basics.jd
@@ -251,7 +251,7 @@ mCursor = getContentResolver().query(
</pre>
<p>
Ð’ таблице 2 указано ÑоответÑтвие аргументов Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð°
-{@link android.content.ContentResolver#query
+{@link android.content.ContentResolver#query
query(Uri,projection,selection,selectionArgs,sortOrder)} SQL-инÑтрукции SELECT.
</p>
<p class="table-caption">
@@ -701,7 +701,7 @@ if (mCursor != null) {
Ð´Ð»Ñ Ð²Ñтавки, Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ….
</p>
<p>
- Чтобы получить разрешениÑ, необходимые Ð´Ð»Ñ Ð´Ð¾Ñтупа к поÑтавщику, приложение запрашивает их Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлемента
+ Чтобы получить разрешениÑ, необходимые Ð´Ð»Ñ Ð´Ð¾Ñтупа к поÑтавщику, приложение запрашивает их Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлемента
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
в файле манифеÑта. При уÑтановке менеджером пакетов Android Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŽ необходимо
утвердить вÑе разрешениÑ, запрашиваемые приложением. Ð’ Ñлучае ÑƒÑ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð²Ñех разрешений
diff --git a/docs/html-intl/intl/ru/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/ru/guide/topics/providers/content-provider-creating.jd
index d8f787393eaa..d6697579b4a4 100644
--- a/docs/html-intl/intl/ru/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html-intl/intl/ru/guide/topics/providers/content-provider-creating.jd
@@ -485,7 +485,7 @@ public class ExampleProvider extends ContentProvider {
<h3 id="RequiredAccess">Ðеобходимые методы</h3>
<p>
Ð’ абÑтрактном клаÑÑе {@link android.content.ContentProvider} определены шеÑть абÑтрактных методов,
-которые необходимо реализовать в рамках вашего ÑобÑтвенного конкретного подклаÑÑа. Ð’Ñе указанные ниже методы, кроме
+которые необходимо реализовать в рамках вашего ÑобÑтвенного конкретного подклаÑÑа. Ð’Ñе указанные ниже методы, кроме
{@link android.content.ContentProvider#onCreate() onCreate()}, вызываютÑÑ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ñким приложением,
которое пытаетÑÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ доÑтуп к вашему поÑтавщику контента.
</p>
@@ -777,7 +777,7 @@ URI контента. Ðргумент {@link android.net.Uri} может выÑ
<p>
Ð”Ð»Ñ Ð¾Ð±Ñ‰Ð¸Ñ… типов данных, таких как текÑÑ‚, HTML или JPEG, метод
{@link android.content.ContentProvider#getType(Uri) getType()} должен возвращать Ñтандартный тип
-MIME. Полный ÑпиÑок Ñтандартных типов предÑтавлен на
+MIME. Полный ÑпиÑок Ñтандартных типов предÑтавлен на
веб-Ñайте
<a href="http://www.iana.org/assignments/media-types/index.htm">IANA MIME Media Types</a>.
</p>
@@ -870,8 +870,8 @@ ContentProvider.getStreamTypes()} при Ñтом должен возвращаÑ
<p>
КлаÑÑ-контракт предÑтавлÑет Ñобой клаÑÑ <code>public final</code>, в котором ÑодержатÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñтант длÑ
URI, имен Ñтолбцов, типов MIME и других метаданных поÑтавщика. КлаÑÑ
-уÑтанавливает контрактные Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ поÑтавщиком и другими приложениÑми путем обеÑпечениÑ
-прÑмого доÑтупа к поÑтавщику даже в Ñлучае Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°ÐºÑ‚Ð¸Ñ‡ÐµÑких значений URI, имен Ñтолбцов и
+уÑтанавливает контрактные Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ поÑтавщиком и другими приложениÑми путем обеÑпечениÑ
+прÑмого доÑтупа к поÑтавщику даже в Ñлучае Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°ÐºÑ‚Ð¸Ñ‡ÐµÑких значений URI, имен Ñтолбцов и
т. д.
</p>
<p>
@@ -928,7 +928,7 @@ Eclipse, могут автоматичеÑки заполнÑть имена кÐ
<h3>Ð ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ð¹</h3>
<p>
Любое приложение может выполнÑть чтение данных в поÑтавщике или запиÑывать их, даже еÑли ÑоответÑтвующие данные
-ÑвлÑÑŽÑ‚ÑÑ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼Ð¸, поÑкольку по умолчанию Ð´Ð»Ñ Ð¿Ð¾Ñтавщика не заданы разрешениÑ. Чтобы изменить Ñти наÑтройки,
+ÑвлÑÑŽÑ‚ÑÑ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼Ð¸, поÑкольку по умолчанию Ð´Ð»Ñ Ð¿Ð¾Ñтавщика не заданы разрешениÑ. Чтобы изменить Ñти наÑтройки,
задайте Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ñтавщика в файле манифеÑта Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ атрибутов Ñлемента
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
&lt;provider&gt;</a></code> или его дочерних Ñлементов. Можно задать разрешениÑ, которые применÑÑŽÑ‚ÑÑ ÐºÐ¾ вÑему поÑтавщику
diff --git a/docs/html-intl/intl/ru/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/ru/guide/topics/providers/document-provider.jd
index c594968490d4..c394e60cbcb3 100644
--- a/docs/html-intl/intl/ru/guide/topics/providers/document-provider.jd
+++ b/docs/html-intl/intl/ru/guide/topics/providers/document-provider.jd
@@ -567,7 +567,7 @@ SAF, напиÑав ÑобÑтвенный поÑтавщик документо
<li>Ðтрибут <code>android:exported</code>, уÑтановленный в значение <code>&quot;true&quot;</code>.
Ðеобходимо ÑкÑпортировать поÑтавщик, чтобы он был виден другим приложениÑм.</li>
-<li>Ðтрибут <code>android:grantUriPermissions</code>, уÑтановленный в значение
+<li>Ðтрибут <code>android:grantUriPermissions</code>, уÑтановленный в значение
<code>&quot;true&quot;</code>. Этот параметр позволÑет ÑиÑтеме предоÑтавлÑть другим приложениÑм доÑтуп
к контенту поÑтавщика. ОбÑуждение того, как Ñледует удерживать права доÑтупа
к конкретному документу Ñм. в разделе <a href="#permissions">Удержание прав доÑтупа</a>.</li>
@@ -776,7 +776,7 @@ public Cursor queryRoots(String[] projection) throws FileNotFoundException {
<h4 id="queryChildDocuments">Ð ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° queryChildDocuments</h4>
-<p>Ð ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð°
+<p>Ð ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð°
{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}
должна возвращать объект{@link android.database.Cursor}, указывающий на вÑе файлы в
заданном каталоге, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñтолбцы, определенные в
diff --git a/docs/html-intl/intl/ru/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/ru/guide/topics/resources/accessing-resources.jd
index 3d59ceb292a2..ccb7ad8f46f0 100644
--- a/docs/html-intl/intl/ru/guide/topics/resources/accessing-resources.jd
+++ b/docs/html-intl/intl/ru/guide/topics/resources/accessing-resources.jd
@@ -209,7 +209,7 @@ R.java} вручную &mdash; Ñтот файл ÑоздаетÑÑ Ð¸Ð½ÑтрÑ
<ul>
<li>{@code &lt;package_name&gt;} — Ñто Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°, в котором находитÑÑ Ñ€ÐµÑÑƒÑ€Ñ (не
требуетÑÑ Ð¿Ñ€Ð¸ Ñоздании ÑÑылок на реÑурÑÑ‹ из одного и того же пакета).</li>
- <li>{@code &lt;resource_type&gt;} — Ñто подклаÑÑ
+ <li>{@code &lt;resource_type&gt;} — Ñто подклаÑÑ
{@code R} Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° реÑурÑа.</li>
<li>{@code &lt;resource_name&gt;} — Ñто либо Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°
реÑурÑа (без раÑширениÑ), либо значение атрибута {@code android:name} в Ñлементе XML (Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñтых
@@ -222,7 +222,7 @@ R.java} вручную &mdash; Ñтот файл ÑоздаетÑÑ Ð¸Ð½ÑтрÑ
<h3>Примеры иÑпользованиÑ</h3>
-<p>Ð’ некоторых ÑлучаÑÑ… реÑÑƒÑ€Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ иÑпользовать в качеÑтве Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² Ñлементе XML (например, чтобы применить графичеÑкое изображение к
+<p>Ð’ некоторых ÑлучаÑÑ… реÑÑƒÑ€Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ иÑпользовать в качеÑтве Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² Ñлементе XML (например, чтобы применить графичеÑкое изображение к
виджету), однако вы также можете иÑпользовать реÑÑƒÑ€Ñ Ð² любом фрагменте XML, где ожидаетÑÑ Ð¿Ñ€Ð¾Ñтое значение. Ðапример,
еÑли имеетÑÑ Ñледующий файл реÑурÑа, включающий <a href="more-resources.html#Color">цветовой реÑурÑ</a> и <a href="string-resource.html">Ñтроковый реÑурÑ</a>:</p>
@@ -260,13 +260,13 @@ R.java} вручную &mdash; Ñтот файл ÑоздаетÑÑ Ð¸Ð½ÑтрÑ
</pre>
<p class="note"><strong>Примечание.</strong> Ð’Ñегда иÑпользуйте Ñтроковые реÑурÑÑ‹,
-поÑкольку ваше приложение может потребоватьÑÑ Ð¿ÐµÑ€ÐµÐ²ÐµÑти на другие Ñзыки.
+поÑкольку ваше приложение может потребоватьÑÑ Ð¿ÐµÑ€ÐµÐ²ÐµÑти на другие Ñзыки.
Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ Ñоздании альтернативных
реÑурÑов (например, локализованных Ñтрок) предÑтавлены в разделе <a href="providing-resources.html#AlternativeResources">ПредоÑтавление альтернативных
реÑурÑов</a>. Ð’ разделе <a href="localization.html">ЛокализациÑ</a> приведено полное руководÑтво по локализации
приложениÑ.</p>
-<p>Ð’Ñ‹ даже можете иÑпользовать реÑурÑÑ‹ в XML Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ñевдонимов. Ðапример, можно Ñоздать
+<p>Ð’Ñ‹ даже можете иÑпользовать реÑурÑÑ‹ в XML Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ñевдонимов. Ðапример, можно Ñоздать
Ñлемент дизайна, который будет Ñлужить пÑевдонимом Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñлемента дизайна:</p>
<pre>
diff --git a/docs/html-intl/intl/ru/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/ru/guide/topics/resources/providing-resources.jd
index be0af952896e..6a287b8972aa 100644
--- a/docs/html-intl/intl/ru/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/ru/guide/topics/resources/providing-resources.jd
@@ -495,7 +495,7 @@ android.content.res.Configuration#smallestScreenWidthDp}, которое ÑодÐ
Ñкрану VGA Ñредней плотноÑти.
Минимальный размер макета Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð³Ð¾ Ñкрана ÑоÑтавлÑет приблизительно 480x640 пикÑелов.
Примерами ÑвлÑÑŽÑ‚ÑÑ Ñкраны VGA и WVGA Ñредней плотноÑти.</li>
- <li>{@code xlarge}: Экраны значительно крупнее обычного
+ <li>{@code xlarge}: Экраны значительно крупнее обычного
Ñкрана HVGA Ñредней плотноÑти. Минимальный размер макета Ð´Ð»Ñ Ð¾Ñ‡ÐµÐ½ÑŒ большого Ñкрана ÑоÑтавлÑет
приблизительно 720x960 пикÑелов. Ð’ большинÑтве Ñлучаев уÑтройÑтва Ñ Ð¾Ñ‡ÐµÐ½ÑŒ большими
Ñкранами Ñлишком велики Ð´Ð»Ñ ÐºÐ°Ñ€Ð¼Ð°Ð½Ð½Ð¾Ð³Ð¾ иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸, Ñкорее вÑего,
@@ -510,7 +510,7 @@ android.content.res.Configuration#smallestScreenWidthDp}, которое ÑодÐ
аварийно завершитÑÑ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ (например, еÑли вÑе реÑурÑÑ‹ макета отмечены квалификатором {@code
xlarge}, но уÑтройÑтво оÑнащено Ñкраном нормального размера).</p>
<p><em>Добавлено в API ÑƒÑ€Ð¾Ð²Ð½Ñ 4.</em></p>
-
+
<p>Дополнительную информацию Ñм. в разделе <a href="{@docRoot}guide/practices/screens_support.html">Поддержка неÑкольких
Ñкранов</a>.</p>
<p>См. также поле конфигурации {@link android.content.res.Configuration#screenLayout}, которое
@@ -1088,7 +1088,7 @@ drawable-en-port/
чем чиÑло квалификаторов, которые точно ÑоответÑтвуют уÑтройÑтву. Ðапример, на шаге 4 выше, поÑледний
вариант в ÑпиÑке Ñодержит три квалификатора, которые точно ÑоответÑтвуют уÑтройÑтву (ориентациÑ, тип
ÑенÑорного Ñкрана и ÑпоÑоб ввода), в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº <code>drawable-en</code> Ñодержит только один подходÑщий параметр
-(Ñзык). Однако Ñзык имеет более выÑокий приоритет, чем Ñти оÑтальные квалификаторы, поÑтому
+(Ñзык). Однако Ñзык имеет более выÑокий приоритет, чем Ñти оÑтальные квалификаторы, поÑтому
<code>drawable-port-notouch-12key</code> вычеркиваетÑÑ.</p>
<p>Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации об иÑпользовании реÑурÑов в приложении перейдите к разделу <a href="accessing-resources.html">ДоÑтуп к реÑурÑам</a>.</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/ru/guide/topics/resources/runtime-changes.jd
index 5dc59c81559f..51337514566b 100644
--- a/docs/html-intl/intl/ru/guide/topics/resources/runtime-changes.jd
+++ b/docs/html-intl/intl/ru/guide/topics/resources/runtime-changes.jd
@@ -125,7 +125,7 @@ android.graphics.drawable.Drawable}, {@link android.widget.Adapter}, {@link andr
означает, что приложение удерживает их, и ÑиÑтема не может очиÑтить от них памÑть, поÑтому
может терÑтьÑÑ Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ объем памÑти).</p>
-<p>Затем иÑпользуйте {@link android.app.FragmentManager} Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð° в операцию.
+<p>Затем иÑпользуйте {@link android.app.FragmentManager} Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð° в операцию.
Можно получить объект данных из фрагмента, когда Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ запуÑкаетÑÑ Ð² результате Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸
в режиме выполнениÑ. Ð’ качеÑтве примера Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð° Ñледующим образом:</p>
@@ -168,7 +168,7 @@ public class MyActivity extends Activity {
<p>Ð’ Ñтом примере {@link android.app.Activity#onCreate(Bundle) onCreate()} добавлÑет фрагмент
или воÑÑтанавливает ÑÑылку на него. Метод {@link android.app.Activity#onCreate(Bundle) onCreate()} также
хранит объект, ÑохранÑющий ÑоÑтоÑние, внутри ÑкземплÑра фрагмента.
-Метод {@link android.app.Activity#onDestroy() onDestroy()} обновлÑет объект, ÑохранÑющий ÑоÑтоÑние, внутри
+Метод {@link android.app.Activity#onDestroy() onDestroy()} обновлÑет объект, ÑохранÑющий ÑоÑтоÑние, внутри
Ñохраненного ÑкземплÑра фрагмента.</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/controls.jd b/docs/html-intl/intl/ru/guide/topics/ui/controls.jd
index 62f4c76686f5..7e15a72c3e95 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@ Android. Ð’Ñе они имеютÑÑ Ð² пакете {@link android.widget}. Е
<tr>
<td><a href="controls/radiobutton.html">Переключатель</a></td>
<td>Этот Ñлемент ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñ‡ÐµÐ½ флажку, за иÑключением того, что в группе Ñлементов можно выбрать только один вариант.</td>
- <td>{@link android.widget.RadioGroup RadioGroup}
+ <td>{@link android.widget.RadioGroup RadioGroup}
<br>{@link android.widget.RadioButton RadioButton} </td>
</tr>
<tr>
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/ru/guide/topics/ui/declaring-layout.jd
index 71428f6e1cdd..b5db656d0e60 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/declaring-layout.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/declaring-layout.jd
@@ -219,9 +219,9 @@ LayoutParams также включают дополнительные парам
<p>Как правило, не рекомендуетÑÑ Ð·Ð°Ð´Ð°Ð²Ð°Ñ‚ÑŒ абÑолютные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ñ‹ и выÑоты макета
(например, в пикÑелах). ВмеÑто Ñтого иÑпользуйте отноÑительные единицы измерениÑ, такие как
пикÑелы, не завиÑÑщие от Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñкрана (<var>dp</var>), <var>wrap_content</var>или
-<var>match_parent</var>Это гарантирует одинаковое отображение
+<var>match_parent</var>Это гарантирует одинаковое отображение
вашего Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° уÑтройÑтвах Ñ Ñкранами разных размеров.
-ПринÑтые типы Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ñ‹ в
+ПринÑтые типы Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ñ‹ в
документе
<a href="{@docRoot}guide/topics/resources/available-resources.html#dimension">ДоÑтупные реÑурÑÑ‹</a>.</p>
@@ -325,7 +325,7 @@ div.layout.first {
Android.</p>
<p class="note"><strong>Примечание.</strong> ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то, что Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑкого интерфейÑа один
-макет может Ñодержать один или неÑколько вложенных макетов, рекомендуетÑÑ Ð¸Ñпользовать как можно более проÑтую
+макет может Ñодержать один или неÑколько вложенных макетов, рекомендуетÑÑ Ð¸Ñпользовать как можно более проÑтую
иерархию макетов. Чем меньше в макете вложенных Ñлементов, тем быÑтрее выполнÑетÑÑ ÐµÐ³Ð¾ отриÑовка (Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¸ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ
предÑтавлений намного лучше вертикальной).</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/ru/guide/topics/ui/dialogs.jd
index 515ecc6a0130..7e5d9087894f 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@ page.tags=alertdialog,dialogfragment
<li>{@link android.app.DialogFragment}</li>
<li>{@link android.app.AlertDialog}</li>
</ol>
-
+
<h2>См. также:</h2>
<ol>
<li><a href="{@docRoot}design/building-blocks/dialogs.html">РуководÑтво по дизайну диалоговых окон</a></li>
@@ -235,8 +235,8 @@ AlertDialog dialog = builder.create();
</pre>
<p>Методы <code>set...Button()</code> предполагают заголовок Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ (реализуемый
-через <a href="{@docRoot}guide/topics/resources/string-resource.html">Ñтроковый реÑурÑ</a>) и
-{@link android.content.DialogInterface.OnClickListener}, который определÑет дейÑтвие,
+через <a href="{@docRoot}guide/topics/resources/string-resource.html">Ñтроковый реÑурÑ</a>) и
+{@link android.content.DialogInterface.OnClickListener}, который определÑет дейÑтвие,
Ñледующее за нажатием кнопки пользователем.</p>
<p>Реализована возможноÑть добавлÑть три различных вида кнопок дейÑтвий:</p>
@@ -248,7 +248,7 @@ AlertDialog dialog = builder.create();
<dt>Ðейтральные</dt>
<dd>ИÑпользуютÑÑ Ð² ÑлучаÑÑ…, когда пользователь может не желать продолжить дейÑтвие,
но при Ñтом необÑзательно хочет его отменить. ПоÑвлÑетÑÑ Ð¼ÐµÐ¶Ð´Ñƒ положительными и отрицательнымиI
- кнопками. Примером такого дейÑÑ‚Ð²Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ быть «Ðапомнить позже».</dd>
+ кнопками. Примером такого дейÑÑ‚Ð²Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ быть «Ðапомнить позже».</dd>
</dl>
<p>Можно добавлÑть только одну кнопку каждого вида в {@link
@@ -271,7 +271,7 @@ android.app.AlertDialog}. Это означает, что Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸ÑпоÐ
<li>Интерактивный ÑпиÑок Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð¾Ð¼ неÑкольких вариантов (флажки)</li>
</ul>
-<p>Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑпиÑка Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð¾Ð¼ одного варианта, как на риÑунке 3,
+<p>Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑпиÑка Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð¾Ð¼ одного варианта, как на риÑунке 3,
иÑпользуйте метод{@link android.app.AlertDialog.Builder#setItems setItems()}:</p>
<pre style="clear:right">
@@ -289,9 +289,9 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
}
</pre>
-<p>ПоÑкольку ÑпиÑок отображаетÑÑ Ð² облаÑти Ñодержимого диалогового окна,
+<p>ПоÑкольку ÑпиÑок отображаетÑÑ Ð² облаÑти Ñодержимого диалогового окна,
диалоговое окно не может показать одновременно Ñообщение и ÑпиÑок, поÑтому необходимо задать заголовок
-диалогового окна Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ {@link android.app.AlertDialog.Builder#setTitle setTitle()}.
+диалогового окна Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ {@link android.app.AlertDialog.Builder#setTitle setTitle()}.
Ð”Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñлементов ÑпиÑка необходимо вызвать {@link
android.app.AlertDialog.Builder#setItems setItems()}, передающий указатель.
Ð’ качеÑтве другого варианта можно указать ÑпиÑок Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ {@link
@@ -320,8 +320,8 @@ android.app.AlertDialog.Builder#setAdapter setAdapter()}. Ðаполнение Ñ
<p>Ð”Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑпиÑка Ñ Ð½ÐµÑколькими вариантами ответов (флажки) или
ÑпиÑка Ñ Ð¾Ð´Ð½Ð¸Ð¼ вариантом ответа (переключатели) иÑпользуйте методы
{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} или
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} или
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()} ÑоответÑтвенно.</p>
<p>Ðапример, таким образом можно Ñоздать ÑпиÑок Ñ Ð½ÐµÑколькими вариантами ответов, как на
@@ -346,7 +346,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
- // Else, if the item is already in the array, remove it
+ // Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
@@ -371,9 +371,9 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
}
</pre>
-<p>ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то, что и традиционный ÑпиÑок, и ÑпиÑок Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð°Ñ‚ÐµÐ»Ñми
+<p>ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то, что и традиционный ÑпиÑок, и ÑпиÑок Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð°Ñ‚ÐµÐ»Ñми
предполагают дейÑтвие по выбору одного Ñлемента, вам необходимо иÑпользовать {@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()}, чтобы Ñохранить выбор пользователÑ.
Это значит, что при повторном открытии диалогового окна будет отображатьÑÑ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ выбор пользователÑ,
а затем ÑоздаетÑÑ ÑпиÑок Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð°Ñ‚ÐµÐ»Ñми.</p>
@@ -442,7 +442,7 @@ android.app.AlertDialog.Builder}.</p>
одинаковые Ñтили шрифта.</p>
<p>Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð°ÐºÐµÑ‚Ð° в вашем {@link android.support.v4.app.DialogFragment}
-вам понадобитÑÑ {@link android.view.LayoutInflater} Ñ
+вам понадобитÑÑ {@link android.view.LayoutInflater} Ñ
{@link android.app.Activity#getLayoutInflater()} и вызов
{@link android.view.LayoutInflater#inflate inflate()}, где первым параметром будет ÑвлÑтьÑÑ
ID реÑурÑа макета, а вторым параметром — иÑходный вид макета.
@@ -470,7 +470,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
- });
+ });
return builder.create();
}
</pre>
@@ -505,7 +505,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<pre>
public class NoticeDialogFragment extends DialogFragment {
-
+
/* The activity that creates an instance of this dialog fragment must
* implement this interface in order to receive event callbacks.
* Each method passes the DialogFragment in case the host needs to query it. */
@@ -513,10 +513,10 @@ public class NoticeDialogFragment extends DialogFragment {
public void onDialogPositiveClick(DialogFragment dialog);
public void onDialogNegativeClick(DialogFragment dialog);
}
-
+
// Use this instance of the interface to deliver action events
NoticeDialogListener mListener;
-
+
// Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
&#64;Override
public void onAttach(Activity activity) {
@@ -543,7 +543,7 @@ public class NoticeDialogFragment extends DialogFragment {
public class MainActivity extends FragmentActivity
implements NoticeDialogFragment.NoticeDialogListener{
...
-
+
public void showNoticeDialog() {
// Create an instance of the dialog fragment and show it
DialogFragment dialog = new NoticeDialogFragment();
@@ -638,7 +638,7 @@ android.support.v4.app.Fragment}.</p>
<p>Тем не менее, в Ñтом Ñлучае Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать{@link android.app.AlertDialog.Builder AlertDialog.Builder}
или другие объекты {@link android.app.Dialog} Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð¾Ð²Ð¾Ð³Ð¾ окна. ЕÑли
-необходимо Ñделать {@link android.support.v4.app.DialogFragment}
+необходимо Ñделать {@link android.support.v4.app.DialogFragment}
вÑтраиваемым, нужно определить пользовательÑкий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð¾Ð²Ð¾Ð³Ð¾ окна в макете методом обратного вызова
{@link android.support.v4.app.DialogFragment#onCreateView
onCreateView()}.</p>
@@ -656,7 +656,7 @@ public class CustomDialogFragment extends DialogFragment {
// Inflate the layout to use as dialog or embedded fragment
return inflater.inflate(R.layout.purchase_items, container, false);
}
-
+
/** The system calls this only when creating the layout in a dialog. */
&#64;Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
@@ -678,7 +678,7 @@ public class CustomDialogFragment extends DialogFragment {
public void showDialog() {
FragmentManager fragmentManager = getSupportFragmentManager();
CustomDialogFragment newFragment = new CustomDialogFragment();
-
+
if (mIsLargeLayout) {
// The device is using a large layout, so show the fragment as a dialog
newFragment.show(fragmentManager, "dialog");
@@ -695,12 +695,12 @@ public void showDialog() {
}
</pre>
-<p>Подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ выполнении операций Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ приведены в руководÑтве
+<p>Подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ выполнении операций Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ приведены в руководÑтве
<a href="{@docRoot}guide/components/fragments.html">Фрагменты</a>.</p>
<p>Ð’ приведенном примере <code>mIsLargeLayout</code> булеан указывает, должно ли текущее уÑтройÑтво иÑпользовать
большой макет Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ (и отображать фрагмент как диалоговое окно, а не
-в полноÑкранном режиме). Лучшим ÑпоÑобом уÑтановить такой вид булеана ÑвлÑетÑÑ Ð¾Ð±ÑŠÑвление
+в полноÑкранном режиме). Лучшим ÑпоÑобом уÑтановить такой вид булеана ÑвлÑетÑÑ Ð¾Ð±ÑŠÑвление
<a href="{@docRoot}guide/topics/resources/more-resources.html#Bool">Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð±ÑƒÐ»ÐµÐ²Ð¾Ð¹ переменной</a>
Ñ <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">альтернативным</a> значением Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… размеров Ñкранов. Ð’ качеÑтве примера приведены два
варианта булевых реÑурÑов Ð´Ð»Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ñ… размеров Ñкранов:</p>
@@ -776,7 +776,7 @@ android.support.v4.app.DialogFragment#onDismiss onDismiss()} в {@link
android.support.v4.app.DialogFragment}.</p>
<p>Также можно <em>отменить</em> диалоговое окно. Это оÑобое Ñобытие, возникающее, когда пользователь
-покинул диалоговое окно, не завершив задачу. Так проиÑходит, когда пользователь нажимает кнопку
+покинул диалоговое окно, не завершив задачу. Так проиÑходит, когда пользователь нажимает кнопку
<em>Ðазад</em>, каÑаетÑÑ Ñкрана за облаÑтью диалогового окна,
либо когда задано {@link android.app.Dialog#cancel()} в {@link
android.app.Dialog} (например, в качеÑтве отклика на нажатие кнопки «Отмена» в диалоговом окне).</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/menus.jd b/docs/html-intl/intl/ru/guide/topics/ui/menus.jd
index 2f3ce1eb9580..885918f3e58d 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/menus.jd
@@ -66,13 +66,13 @@ parent.link=index.html
<p>ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то что оформление и поведение некоторых пунктов меню изменилиÑÑŒ, Ñемантика Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ
набора дейÑтвий и вариантов по-прежнему оÑнована на API-интерфейÑах клаÑÑа {@link android.view.Menu}. Ð’ Ñтом
-руководÑтве раÑÑказываетÑÑ, как Ñоздавать три оÑновополагающих типа меню или предÑтавлений дейÑтвий в ÑиÑтеме
+руководÑтве раÑÑказываетÑÑ, как Ñоздавать три оÑновополагающих типа меню или предÑтавлений дейÑтвий в ÑиÑтеме
Android вÑех верÑий:</p>
<dl>
<dt><strong>Меню параметров и Ñтрока дейÑтвий</strong></dt>
<dd>Пункты <a href="#options-menu">меню параметров</a> предÑтавлÑÑŽÑ‚ Ñобой оÑновные варианты выбора дейÑтвий в пределах
-операции. Именно здеÑÑŒ Ñледует размещать дейÑтвиÑ, которые затрагивают приложение в целом, например:
+операции. Именно здеÑÑŒ Ñледует размещать дейÑтвиÑ, которые затрагивают приложение в целом, например:
"ПоиÑк", "СоÑтавить Ñообщение Ñл. почты" и "ÐаÑтройки".
<p>При разработке приложений Ð´Ð»Ñ Ð²ÐµÑ€Ñии Android 2.3 или более ранних верÑий пользователи могут
открыть панель меню параметров нажатием кнопки <em>Меню</em>.</p>
@@ -83,9 +83,9 @@ Android вÑех верÑий:</p>
Ñтроки дейÑтвий.</p>
<p>См. раздел <a href="#options-menu">Создание меню параметров</a></p>
</dd>
-
+
<dt><strong>КонтекÑтное меню и режим контекÑтных дейÑтвий</strong></dt>
-
+
<dd>КонтекÑтное меню ― Ñто <a href="#FloatingContextMenu">плавающее меню</a>, которое открываетÑÑ, когда
пользователь длительно нажимает на Ñлемент. Ð’ нем ÑодержатÑÑ Ð´ÐµÐ¹ÑтвиÑ, которые затрагивают выбранный контент или
контекÑтный кадр.
@@ -94,11 +94,11 @@ Android вÑех верÑий:</p>
выбрать Ñразу неÑколько Ñлементов.</p>
<p>См. раздел <a href="#context-menu">Создание контекÑтного меню</a></p>
</dd>
-
+
<dt><strong>Ð’Ñплывающее меню</strong></dt>
<dd>Во вÑплывающем меню отображаетÑÑ Ð²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ ÑпиÑок пунктов, который привÑзан к предÑтавлению,
вызвавшему меню. Он хорошо подходит Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñти дополнительных вариантов дейÑтвий, отноÑÑщихÑÑ Ðº определенному контенту или
-Ð´Ð»Ñ Ð²Ñ‹Ð´Ð°Ñ‡Ð¸ вариантов Ð´Ð»Ñ Ð²Ñ‚Ð¾Ñ€Ð¾Ð¹ чаÑти команды. ДейÑÑ‚Ð²Ð¸Ñ Ð²Ð¾ вÑплывающем меню
+Ð´Ð»Ñ Ð²Ñ‹Ð´Ð°Ñ‡Ð¸ вариантов Ð´Ð»Ñ Ð²Ñ‚Ð¾Ñ€Ð¾Ð¹ чаÑти команды. ДейÑÑ‚Ð²Ð¸Ñ Ð²Ð¾ вÑплывающем меню
<strong>не</strong> должны напрÑмую затрагивать ÑоответÑтвующий контент &mdash; Ð´Ð»Ñ Ñтого предназначены контекÑтные
дейÑтвиÑ. Ð’Ñплывающее меню предназначено Ð´Ð»Ñ Ñ€Ð°Ñширенных дейÑтвий, отноÑÑщихÑÑ Ðº облаÑÑ‚Ñм контента в вашей
операции.
@@ -135,7 +135,7 @@ Android вÑех верÑий:</p>
<dt><code>&lt;item></code></dt>
<dd>Создает клаÑÑ {@link android.view.MenuItem}, который предÑтавлÑет один пункт меню. Этот
Ñлемент может Ñодержать вложенный Ñлемент <code>&lt;menu></code> Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ñ… меню.</dd>
-
+
<dt><code>&lt;group></code></dt>
<dd>ÐеобÑзательный, невидимый контейнер Ð´Ð»Ñ Ñлементов {@code &lt;item&gt;}. Он позволÑет
разделÑть пункты меню на категории и назначать им одинаковые ÑвойÑтва, такие как активное ÑоÑтоÑние и видимоÑть. Подробные
@@ -322,7 +322,7 @@ android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} д
должен быть общедоÑтупным и принимать один параметр {@link android.view.MenuItem}, &mdash; когда ÑиÑтема
вызывает Ñтот метод, она передает ему выбранный пункт меню. Подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸ пример Ñм. в документе <a href="{@docRoot}guide/topics/resources/menu-resource.html">РеÑÑƒÑ€Ñ Ð¼ÐµÐ½ÑŽ</a>.</p>
-<p class="note"><strong>Совет.</strong> ЕÑли в приложении предуÑмотрено неÑколько операций и
+<p class="note"><strong>Совет.</strong> ЕÑли в приложении предуÑмотрено неÑколько операций и
в некоторых из них имеютÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ‹Ðµ меню параметров, раÑÑмотрите возможноÑть ÑозданиÑ
операции, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ иÑпользовать иÑключительно методы {@link android.app.Activity#onCreateOptionsMenu(Menu)
onCreateOptionsMenu()} и {@link android.app.Activity#onOptionsItemSelected(MenuItem)
@@ -346,7 +346,7 @@ onCreateOptionsMenu()}, она Ñохранит заполненный вами
android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} Ñледует иÑпользовать только Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾
ÑоÑтоÑÐ½Ð¸Ñ Ð¼ÐµÐ½ÑŽ, а не Ð´Ð»Ñ Ð²Ð½ÐµÑÐµÐ½Ð¸Ñ Ð² него изменений в течение жизненного цикла операции.</p>
-<p>ЕÑли вам требуетÑÑ Ð¸Ð·Ð¼ÐµÐ½Ñть меню параметров в завиÑимоÑти от
+<p>ЕÑли вам требуетÑÑ Ð¸Ð·Ð¼ÐµÐ½Ñть меню параметров в завиÑимоÑти от
Ñобытий, которые возникают в течение жизненного цикла операции, Ñделать Ñто можно в
методе{@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}. Этот
метод передает объект {@link android.view.Menu} в том виде, в котором он в данный момент ÑущеÑтвует. Его-то и можно изменить
@@ -363,7 +363,7 @@ onPrepareOptionsMenu()} каждый раз, когда пользователь
вызвать метод {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()}, чтобы запроÑить у
ÑиÑтемы вызов метода {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}.</p>
-<p class="note"><strong>Примечание.</strong>
+<p class="note"><strong>Примечание.</strong>
Ðикогда не Ñледует изменÑть пункты меню параметров Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ клаÑÑа {@link android.view.View}, дейÑтвующего
в данный момент. Ð’ ÑенÑорном режиме (когда пользователь не иÑпользует трекбол или кнопки Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ) фокуÑ
не может переводитьÑÑ Ð½Ð° предÑтавлениÑ, поÑтому никогда не Ñледует иÑпользовать Ñ„Ð¾ÐºÑƒÑ Ð² качеÑтве оÑновы Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ
@@ -525,7 +525,7 @@ android.widget.ListView} или {@link android.widget.GridView} (что позв
предÑтавлениÑ, то вам Ñледует:</p>
<ol>
<li>Реализовать Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ {@link android.view.ActionMode.Callback}. Ð’ его методах обратного вызова вы
-можете указать дейÑÑ‚Ð²Ð¸Ñ Ð´Ð»Ñ Ñтроки контекÑтных дейÑтвий, реагировать на Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ Ð¿ÑƒÐ½ÐºÑ‚Ð¾Ð² дейÑтвий и
+можете указать дейÑÑ‚Ð²Ð¸Ñ Ð´Ð»Ñ Ñтроки контекÑтных дейÑтвий, реагировать на Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ Ð¿ÑƒÐ½ÐºÑ‚Ð¾Ð² дейÑтвий и
обрабатывать другие ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¶Ð¸Ð·Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ цикла Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° дейÑтвий.</li>
<li>Вызывайте {@link android.app.Activity#startActionMode startActionMode()}, когда требуетÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ñ‚ÑŒ
Ñтроку (например, когда пользователь выполнÑет длительное нажатие предÑтавлениÑ).</li>
@@ -582,12 +582,12 @@ android.view.ActionMode} можно вноÑить различные измен
android.view.ActionMode#setSubtitle setSubtitle()} (удобно Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑтва выбранных
Ñлементов).</p>
-<p>Также обратите внимание, что приведенный выше образец кода задает Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ {@code mActionMode} значение null, когда
+<p>Также обратите внимание, что приведенный выше образец кода задает Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ {@code mActionMode} значение null, когда
режим дейÑÑ‚Ð²Ð¸Ñ Ð¿Ñ€ÐµÐºÑ€Ð°Ñ‰Ð°ÐµÑ‚ Ñвое ÑущеÑтвование. Далее вы узнаете, каким образом он инициализируетÑÑ Ð¸ чем может быть
полезно Ñохранение ÑоÑтавной переменной в операции или фрагменте.</p>
</li>
- <li>Ð”Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° контекÑтных дейÑтвий, когда Ñто необходимо,
+ <li>Ð”Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° контекÑтных дейÑтвий, когда Ñто необходимо,
например, в ответ на длительное нажатие {@link
android.view.View}, вызывайте {@link android.app.Activity#startActionMode startActionMode()}:</p>
@@ -727,7 +727,7 @@ android.widget.AbsListView.MultiChoiceModeListener#onCreateActionMode onCreateAc
<p>ЕÑли Ð´Ð»Ñ <a href="#xml">Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¼ÐµÐ½ÑŽ иÑпользуетÑÑ XML</a>, вот каким образом можно показать вÑплывающее меню:</p>
<ol>
- <li>Создайте ÑкземплÑÑ€ клаÑÑа {@link android.widget.PopupMenu} Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ его конÑтруктора, принимающий
+ <li>Создайте ÑкземплÑÑ€ клаÑÑа {@link android.widget.PopupMenu} Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ его конÑтруктора, принимающий
текущие {@link android.content.Context} и {@link android.view.View} приложениÑ, к которым
должно быть привÑзано меню.</li>
<li>С помощью {@link android.view.MenuInflater} загрузите Ñвой реÑÑƒÑ€Ñ Ð¼ÐµÐ½ÑŽ в объект {@link
@@ -742,8 +742,8 @@ android.widget.PopupMenu#getMenu() PopupMenu.getMenu()}. Ðа API ÑƒÑ€Ð¾Ð²Ð½Ñ 1
<pre>
&lt;ImageButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:src="@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup" />
@@ -901,7 +901,7 @@ android.view.MenuItem#setChecked(boolean) setChecked()}.</p>
(например {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}). Именно
здеÑÑŒ необходимо задать ÑоÑтоÑние флажка, поÑкольку флажок или переключатель не
изменÑет Ñвое ÑоÑтоÑние автоматичеÑки. ЗапроÑить текущее ÑоÑтоÑние пункта (в котором он находилÑÑ Ð´Ð¾ того, как был
-выбран пользователем) можно Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ{@link android.view.MenuItem#isChecked()}, а затем задать помеченное ÑоÑтоÑние Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ
+выбран пользователем) можно Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ{@link android.view.MenuItem#isChecked()}, а затем задать помеченное ÑоÑтоÑние Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ
{@link android.view.MenuItem#setChecked(boolean) setChecked()}. Ðапример:</p>
<pre>
@@ -1023,9 +1023,9 @@ Intent. Ðапример:</p>
&lt;/intent-filter>
</pre>
-<p>Подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ напиÑании фильтров Intent Ñм. в документе
+<p>Подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ напиÑании фильтров Intent Ñм. в документе
<a href="/guide/components/intents-filters.html">Объекты Intent и фильтры объектов Intent</a>.</p>
-<p>Образец приложениÑ, в котором иÑпользуетÑÑ Ñта методика, Ñм. в образце кода
+<p>Образец приложениÑ, в котором иÑпользуетÑÑ Ñта методика, Ñм. в образце кода
<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Note
Pad</a>.</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/ru/guide/topics/ui/notifiers/notifications.jd
index d072b77eae24..c286431c00fe 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/notifiers/notifications.jd
@@ -92,7 +92,7 @@ page.title=УведомлениÑ
<p>ПоÑкольку ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑвлÑÑŽÑ‚ÑÑ ÐºÐ°Ðº важной ÑоÑтавной чаÑтью пользовательÑкого интерфейÑа Android, Ð´Ð»Ñ Ð½Ð¸Ñ… имеютÑÑ ÑобÑтвенные инÑтрукции по проектированию.
ПоÑвившиеÑÑ Ð² Android 5.0 (уровень API 21) значительные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½Ð° имеют оÑобо важное
значение, поÑтому Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации вам Ñледует ознакомитьÑÑ Ñ ÑƒÑ‡ÐµÐ±Ð½Ð¸ÐºÐ¾Ð¼ по интерфейÑу <a href="{@docRoot}training/material/index.html">Material Design</a>
-. Чтобы узнать, как проектировать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ взаимодейÑтвие Ñ Ð½Ð¸Ð¼Ð¸, прочитайте руководÑтво по проектированию
+. Чтобы узнать, как проектировать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ взаимодейÑтвие Ñ Ð½Ð¸Ð¼Ð¸, прочитайте руководÑтво по проектированию
<a href="{@docRoot}design/patterns/notifications.html">УведомлениÑ</a>.</p>
<h2 id="CreateNotification">Создание уведомлениÑ</h2>
@@ -294,7 +294,7 @@ mBuilder.setStyle(inBoxStyle);
ОбеÑпечьте доÑтуп к Ñтой функции операции {@link android.app.Activity} вÑех пользователей,
Ñделав так, чтобы Ñта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿ÑƒÑкалаÑÑŒ, когда пользователь нажимает уведомление. Ð”Ð»Ñ Ñтого
Ñоздайте объект {@link android.app.PendingIntent}
- Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸ {@link android.app.Activity}. Вызовите
+ Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸ {@link android.app.Activity}. Вызовите
{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
setContentIntent()}, чтобы добавить объект {@link android.app.PendingIntent} в уведомление.
</li>
@@ -333,7 +333,7 @@ mBuilder.setStyle(inBoxStyle);
вызова метода {@link android.app.NotificationManager#notify(int, android.app.Notification) NotificationManager.notify()}.
Чтобы изменить Ñто уведомление, поÑле того как оно выдано,
обновите или Ñоздайте объект {@link android.support.v4.app.NotificationCompat.Builder},
- поÑтройте на его оÑнове объект {@link android.app.Notification} и выдайте
+ поÑтройте на его оÑнове объект {@link android.app.Notification} и выдайте
объект {@link android.app.Notification} Ñ Ñ‚ÐµÐ¼ же идентификатором, который иÑпользовалÑÑ Ñ€Ð°Ð½ÐµÐµ. ЕÑли
предыдущее уведомление вÑе еще отображаетÑÑ Ð½Ð° Ñкране, ÑиÑтема обновит его Ñ Ð¸Ñпользованием Ñодержимого
объекта{@link android.app.Notification}. ЕÑли предыдущее уведомление было закрыто, то
@@ -451,14 +451,14 @@ numMessages = 0;
Добавьте поддержку Ð´Ð»Ñ Ð²ÐµÑ€Ñии Android 4.0.3 и более ранних верÑий. Ð”Ð»Ñ Ñтого укажите родительÑкий объект операции
{@link android.app.Activity}, которую запуÑкаете, добавив Ñлемент
<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
- в качеÑтве дочернего Ð´Ð»Ñ Ñлемента
+ в качеÑтве дочернего Ð´Ð»Ñ Ñлемента
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>.
<p>
Ð”Ð»Ñ Ñтого Ñлемента задайте
<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a>="android.support.PARENT_ACTIVITY"</code>.
Задайте
<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#val">android:value</a>="&lt;parent_activity_name&gt;"</code>,
- где <code>&lt;parent_activity_name&gt;</code> ― Ñто значение
+ где <code>&lt;parent_activity_name&gt;</code> ― Ñто значение
<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a></code>
Ð´Ð»Ñ Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÑкого Ñлемента
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
@@ -466,7 +466,7 @@ numMessages = 0;
</p>
</li>
<li>
- Также добавьте поддержку Ð´Ð»Ñ Ð²ÐµÑ€Ñии Android 4.1 и более поздних верÑий. Ð”Ð»Ñ Ñтого добавьте атрибут
+ Также добавьте поддержку Ð´Ð»Ñ Ð²ÐµÑ€Ñии Android 4.1 и более поздних верÑий. Ð”Ð»Ñ Ñтого добавьте атрибут
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">android:parentActivityName</a></code>
в Ñлемент
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
@@ -513,7 +513,7 @@ numMessages = 0;
запуÑкает {@link android.app.Activity}. Этот метод также добавлÑет флаги, которые запуÑкают
Ñтек в новой задаче.
<p class="note">
- <strong>Примечание.</strong> ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то что аргумент
+ <strong>Примечание.</strong> ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то что аргумент
{@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}
ÑвлÑетÑÑ ÑÑылкой на запуÑкаемую операцию {@link android.app.Activity}, при вызове Ñтого метода
не добавлÑетÑÑ Ð¾Ð±ÑŠÐµÐºÑ‚ {@link android.content.Intent}, который запуÑкает операцию
@@ -536,7 +536,7 @@ numMessages = 0;
в нее Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ дейÑÑ‚Ð²Ð¸Ñ <i>"Ðазад"</i>.
</li>
<li>
- Получите объект {@link android.app.PendingIntent} Ð´Ð»Ñ Ñтого Ñтека переходов назад путем вызова метода
+ Получите объект {@link android.app.PendingIntent} Ð´Ð»Ñ Ñтого Ñтека переходов назад путем вызова метода
{@link android.support.v4.app.TaskStackBuilder#getPendingIntent getPendingIntent()}.
Затем Ñтот объект {@link android.app.PendingIntent} можно будет иÑпользовать в качеÑтве аргумента Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð°
{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
@@ -576,7 +576,7 @@ mNotificationManager.notify(id, builder.build());
ОÑобой операции {@link android.app.Activity} не требуетÑÑ Ñтек перехода назад, поÑтому не нужно
определÑть иерархию объектов {@link android.app.Activity} в файле манифеÑта и
вызывать
- метод {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()} Ð´Ð»Ñ Ð¿Ð¾ÑтроениÑ
+ метод {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()} Ð´Ð»Ñ Ð¿Ð¾ÑтроениÑ
Ñтека перехода назад. ВмеÑто Ñтого в файле манифеÑта задайте параметры задачи {@link android.app.Activity}
и Ñоздайте объект {@link android.app.PendingIntent} путем вызова метода
{@link android.app.PendingIntent#getActivity getActivity()}:
@@ -597,7 +597,7 @@ mNotificationManager.notify(id, builder.build());
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">android:taskAffinity</a>=""</code>
</dt>
<dd>
- Ð’ Ñочетании Ñ
+ Ð’ Ñочетании Ñ
флагом {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK},
который вы задали в коде, Ñто гарантирует, что Ð´Ð°Ð½Ð½Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ {@link android.app.Activity} не
перейдет в задачу приложениÑ, иÑпользуемую по умолчанию. Любые ÑущеÑтвующие задачи, имеющие
@@ -629,11 +629,11 @@ mNotificationManager.notify(id, builder.build());
ПоÑтроение и выдача уведомлениÑ:
<ol style="list-style-type: lower-alpha;">
<li>
- Создайте объект {@link android.content.Intent}, который запуÑкает операцию
+ Создайте объект {@link android.content.Intent}, который запуÑкает операцию
{@link android.app.Activity}.
</li>
<li>
- ÐаÑтройте операцию {@link android.app.Activity}, запуÑкаемую в новой пуÑтой задаче, путем вызова метода
+ ÐаÑтройте операцию {@link android.app.Activity}, запуÑкаемую в новой пуÑтой задаче, путем вызова метода
{@link android.content.Intent#setFlags setFlags()} Ñ Ñ„Ð»Ð°Ð³Ð°Ð¼Ð¸
{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
и
@@ -714,7 +714,7 @@ mNotificationManager.notify(id, builder.build());
{@link android.support.v4.app.NotificationCompat.Builder#setProgress
setProgress(max, progress, false)}, а затем выдайте уведомление. По мере выполнениÑ
увеличивайте значение <code>progress</code> и обновлÑйте уведомление. По окончании операции
- <code>progress</code> должен быть равен <code>max</code>. Стандартный ÑпоÑоб вызова метода
+ <code>progress</code> должен быть равен <code>max</code>. Стандартный ÑпоÑоб вызова метода
{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}
заключаетÑÑ Ð² Ñледующем: задать значение <code>max</code> равным 100 Ñ Ð¿Ð¾Ñледующим увеличением <code>progress</code> в виде
величины "процента выполнениÑ" операции.
@@ -841,7 +841,7 @@ mNotifyManager.notify(0, mBuilder.build());
<p>Примеры Ñитуаций, в которых могут быть вызваны ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ heads-up:</p>
<ul>
- <li>Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑетÑÑ Ð² полноÑкранном режиме (приложение иÑпользует
+ <li>Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑетÑÑ Ð² полноÑкранном режиме (приложение иÑпользует
{@link android.app.Notification#fullScreenIntent}) или;</li>
<li>уведомление имеет выÑокий приоритет и иÑпользует рингтоны или
вибрацию.</li>
@@ -915,7 +915,7 @@ Notification notification = new Notification.Builder(context)
</pre>
<p class="note"><strong>Примечание.</strong> Прекращение иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»Ð°ÑÑа {@link android.media.RemoteControlClient}
-имеет и другие поÑледÑÑ‚Ð²Ð¸Ñ Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ð¸Ð°. Подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ новых API-интерфейÑах Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑеанÑами воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ð¸Ð° Ñм. в разделе
+имеет и другие поÑледÑÑ‚Ð²Ð¸Ñ Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ð¸Ð°. Подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ новых API-интерфейÑах Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑеанÑами воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ð¸Ð° Ñм. в разделе
<a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">Управление воÑпроизведением мультимедиа</a>
.</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/overview.jd b/docs/html-intl/intl/ru/guide/topics/ui/overview.jd
index 0e9628b6d016..8bb953f80d01 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@ XML позволÑет Ñоздавать удобочитаемую ÑтрукÑ
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
+ android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
&lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@ XML позволÑет Ñоздавать удобочитаемую ÑтрукÑ
<p>Полное руководÑтво по Ñозданию макета пользовательÑкого интерфейÑа Ñм. в документе <a href="declaring-layout.html">Макеты
XML</a>.
-
+
<h2 id="UIComponents">Компоненты пользовательÑкого интерфейÑа</h2>
<p>Ðе обÑзательно Ñоздавать вÑе Ñлементы пользовательÑкого интерфейÑа Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ объектов {@link android.view.View} и {@link
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/settings.jd b/docs/html-intl/intl/ru/guide/topics/ui/settings.jd
index 4325439721de..9adfd6230515 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/settings.jd
@@ -82,7 +82,7 @@ API-интерфейÑÑ‹ {@link android.preference.Preference} ÑиÑтемы An
<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
<p class="img-caption"><strong>РиÑунок 1.</strong> Снимки Ñкранов наÑтроек Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Android
-Ð´Ð»Ñ Ð¾Ð±Ð¼ÐµÐ½Ð° ÑообщениÑми. Выбор Ñлемента, заданного поÑредÑтвом {@link android.preference.Preference},
+Ð´Ð»Ñ Ð¾Ð±Ð¼ÐµÐ½Ð° ÑообщениÑми. Выбор Ñлемента, заданного поÑредÑтвом {@link android.preference.Preference},
открывает Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ.</p>
@@ -143,7 +143,7 @@ android.preference.PreferenceFragment} опиÑана в разделах <a hre
<p>ÐšÐ°Ð¶Ð´Ð°Ñ Ð½Ð°Ñтройка Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñтавлена конкретным подклаÑÑом клаÑÑа {@link
android.preference.Preference}. Каждый подклаÑÑ Ñодержит набор оÑновных ÑвойÑтв, которые позволÑÑŽÑ‚ вам
указывать, например, заголовок Ð´Ð»Ñ Ð½Ð°Ñтройки и ее значение по умолчанию. Каждый подклаÑÑ Ñ‚Ð°ÐºÐ¶Ðµ Ñодержит
-ÑобÑтвенные Ñпециализированные ÑвойÑтва и пользовательÑкий интерфейÑ. Ð’ качеÑтве примера на риÑунке 1 показан Ñнимок Ñкрана наÑтроек
+ÑобÑтвенные Ñпециализированные ÑвойÑтва и пользовательÑкий интерфейÑ. Ð’ качеÑтве примера на риÑунке 1 показан Ñнимок Ñкрана наÑтроек
Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Android Ð´Ð»Ñ Ð¾Ð±Ð¼ÐµÐ½Ð° ÑообщениÑми. Каждый Ñлемент ÑпиÑка на Ñкране наÑтроек возвращаетÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ð¼ объектом {@link
android.preference.Preference}.</p>
@@ -226,7 +226,7 @@ android.preference.ListPreference}. Оба Ñодержат Ñледующие Ñ
<dt>{@code android:key}</dt>
<dd>Этот атрибут необходим Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ð¹, которые ÑохранÑÑŽÑ‚ значение данных. Он задает уникальный
ключ (Ñтроку), который иÑпользует ÑиÑтема при Ñохранении Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñтой наÑтройки в {@link
-android.content.SharedPreferences}.
+android.content.SharedPreferences}.
<p>Этот атрибут <em>не ÑвлÑетÑÑ Ð¾Ð±Ñзательным</em> только когда предпочтение предÑтавлÑет Ñобой
{@link android.preference.PreferenceCategory} или {@link android.preference.PreferenceScreen}, либо
предпочтение указывает намерение {@link android.content.Intent} Ð´Ð»Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð° (поÑредÑтвом Ñлемента <a href="#Intents">{@code &lt;intent&gt;}</a>) или фрагмент {@link android.app.Fragment} Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ (Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ атрибута <a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
@@ -271,7 +271,7 @@ android.preference.PreferenceCategory &lt;PreferenceCategory&gt;}. <br/><b>2.</b
</ul>
<p>Ð’Ñ‹ можете пользоватьÑÑ Ð¾Ð´Ð½Ð¸Ð¼ или обоими из Ñтих методов группировки Ð´Ð»Ñ Ð¾Ñ€Ð³Ð°Ð½Ð¸Ð·Ð°Ñ†Ð¸Ð¸ наÑтроек в вашем приложении. ПринимаÑ
-решение об иÑпользуемом варианте и о разделении наÑтроек на группы, вы должны Ñледовать инÑтрукциÑм в разделе
+решение об иÑпользуемом варианте и о разделении наÑтроек на группы, вы должны Ñледовать инÑтрукциÑм в разделе
<a href="{@docRoot}design/patterns/settings.html">ÐаÑтройки</a> руководÑтва «Дизайн Ð´Ð»Ñ Android».</p>
@@ -285,7 +285,7 @@ android.preference.PreferenceCategory}.</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;PreferenceCategory
+ &lt;PreferenceCategory
android:title="&#64;string/pref_sms_storage_title"
android:key="pref_key_storage_settings">
&lt;CheckBoxPreference
@@ -293,12 +293,12 @@ android.preference.PreferenceCategory}.</p>
android:summary="&#64;string/pref_summary_auto_delete"
android:title="&#64;string/pref_title_auto_delete"
android:defaultValue="false"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_sms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
android:title="&#64;string/pref_title_sms_delete"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_mms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
@@ -430,7 +430,7 @@ public class SettingsActivity extends PreferenceActivity {
<p>При разработке приложений Ð´Ð»Ñ Android 3.0 (API ÑƒÑ€Ð¾Ð²Ð½Ñ 11) и более поздних верÑий необходимо иÑпользовать {@link
android.preference.PreferenceFragment} Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÑпиÑка
-объектов {@link android.preference.Preference}. Ð’Ñ‹ можете добавить {@link android.preference.PreferenceFragment} в любую операцию, при Ñтом
+объектов {@link android.preference.Preference}. Ð’Ñ‹ можете добавить {@link android.preference.PreferenceFragment} в любую операцию, при Ñтом
необÑзательно иÑпользовать {@link android.preference.PreferenceActivity}.</p>
<p><a href="{@docRoot}guide/components/fragments.html">Фрагменты</a> обеÑпечивают более
@@ -588,11 +588,11 @@ android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()}, чтоб
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
@@ -636,7 +636,7 @@ public static class SettingsFragment extends PreferenceFragment {
<h3 id="DisplayHeaders">Отображение заголовков</h3>
<p>Чтобы отобразить заголовки предпочтений, вы должны реализовать метод обратного вызова {@link
-android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} и вызвать
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} и вызвать
{@link android.preference.PreferenceActivity#loadHeadersFromResource
loadHeadersFromResource()}. Ðапример:</p>
@@ -672,38 +672,38 @@ android.preference.Preference &lt;Preference&gt;} отправлÑет намеÑ
Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸.</p>
<p>Ð’ качеÑтве примера приведен XML-файл Ð´Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð² предпочтений, который иÑпользуетÑÑ Ð² Android верÑии 3.0
-и более поздних верÑий ({@code res/xml/preference_headers.xml}):</p>
+и более поздних верÑий ({@code res/xml/preference_headers.xml}):</p>
<pre>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" />
&lt;/preference-headers>
</pre>
-<p>РздеÑÑŒ предÑтавлен файл предпочтений, который Ñодержит те же Ñамые заголовки Ð´Ð»Ñ Ð²ÐµÑ€Ñий Ñтарше
+<p>РздеÑÑŒ предÑтавлен файл предпочтений, который Ñодержит те же Ñамые заголовки Ð´Ð»Ñ Ð²ÐµÑ€Ñий Ñтарше
Android 3.0 ({@code res/xml/preference_headers_legacy.xml}):</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_ONE" />
&lt;/Preference>
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_TWO" />
@@ -975,11 +975,11 @@ android.preference.DialogPreference}, в котором объÑвлÑетÑÑ Ð
public class NumberPickerPreference extends DialogPreference {
public NumberPickerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
-
+
setDialogLayoutResource(R.layout.numberpicker_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
-
+
setDialogIcon(null);
}
...
@@ -992,7 +992,7 @@ public class NumberPickerPreference extends DialogPreference {
<p>Ð’Ñ‹ можете Ñохранить значение наÑтройки в любой момент, вызвав один из методов {@code persist*()} клаÑÑа {@link
android.preference.Preference}, например, {@link
-android.preference.Preference#persistInt persistInt()}, еÑли наÑтройка имеет целое значение, или
+android.preference.Preference#persistInt persistInt()}, еÑли наÑтройка имеет целое значение, или
{@link android.preference.Preference#persistBoolean persistBoolean()} Ð´Ð»Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого значениÑ.</p>
<p class="note"><strong>Примечание.</strong> Каждое предпочтение {@link android.preference.Preference} может ÑохранÑть только один
@@ -1071,7 +1071,7 @@ android.preference.Preference#getPersistedInt getPersistedInt()} не может
<h3 id="CustomDefault">ПредоÑтавление Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию</h3>
-<p>ЕÑли ÑкземплÑÑ€ вашего клаÑÑа {@link android.preference.Preference} указывает значение по умолчанию
+<p>ЕÑли ÑкземплÑÑ€ вашего клаÑÑа {@link android.preference.Preference} указывает значение по умолчанию
(Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ атрибута {@code android:defaultValue}),
ÑиÑтема вызывает {@link android.preference.Preference#onGetDefaultValue
onGetDefaultValue()}, когда она Ñоздает ÑкземплÑÑ€ объекта Ð´Ð»Ñ Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ. Ð’Ñ‹ должны реализовать
@@ -1194,7 +1194,7 @@ protected void onRestoreInstanceState(Parcelable state) {
// Cast state to custom BaseSavedState and pass to superclass
SavedState myState = (SavedState) state;
super.onRestoreInstanceState(myState.getSuperState());
-
+
// Set this Preference's widget to reflect the restored state
mNumberPicker.setValue(myState.value);
}
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/ru/guide/topics/ui/ui-events.jd
index cd2b4813cf83..9f3609bea789 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/ui-events.jd
@@ -30,7 +30,7 @@ parent.link=index.html
которые называютÑÑ <a href="#EventListeners">приемниками Ñобытий</a>, и Ñлужат перехватчиками дейÑтвий Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ð²Ð°ÑˆÐ¸Ð¼ пользовательÑким интерфейÑом.</p>
<p>ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то, что вы будете чаще иÑпользовать приемники Ñобытий Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð²Ð°Ñ‚Ð° дейÑтвий пользователÑ, может
-наÑтупить момент, когда вам не захочетÑÑ Ð½Ð°Ñледовать клаÑÑ View, чтобы Ñоздать неÑтандартный компонент.
+наÑтупить момент, когда вам не захочетÑÑ Ð½Ð°Ñледовать клаÑÑ View, чтобы Ñоздать неÑтандартный компонент.
Возможно, вы захотите наÑледовать клаÑÑ {@link android.widget.Button},
чтобы Ñделать нечто более необычное. Ð’ Ñтом Ñлучае вы Ñможете определить поведение ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿Ð¾ умолчанию Ð´Ð»Ñ Ñвоего
клаÑÑа Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ <a href="#EventHandlers">обработчиков Ñобытий</a> клаÑÑа.</p>
@@ -46,27 +46,27 @@ parent.link=index.html
<dl>
<dt><code>onClick()</code></dt>
- <dd>Из объекта {@link android.view.View.OnClickListener}.
+ <dd>Из объекта {@link android.view.View.OnClickListener}.
Этот метод вызываетÑÑ, когда пользователь каÑаетÑÑ Ñлемента
(в режиме каÑаниÑ), или переводит Ñ„Ð¾ÐºÑƒÑ Ð½Ð° Ñлемент Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ клавиш Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ трекбола и
нажимает ÑоответÑтвующую клавишу «ввода» или нажимает на трекбол.</dd>
<dt><code>onLongClick()</code></dt>
- <dd>Из объекта {@link android.view.View.OnLongClickListener}.
+ <dd>Из объекта {@link android.view.View.OnLongClickListener}.
Этот метод вызываетÑÑ, когда пользователь каÑаетÑÑ Ñлемента и удерживает его (в режиме каÑаниÑ),
или переводит Ñ„Ð¾ÐºÑƒÑ Ð½Ð° Ñлемент Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ клавиш Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ трекбола и
нажимает и удерживает ÑоответÑтвующую клавишу «ввода» или трекбол (в течение одной Ñекунды).</dd>
<dt><code>onFocusChange()</code></dt>
- <dd>Из объекта {@link android.view.View.OnFocusChangeListener}.
+ <dd>Из объекта {@link android.view.View.OnFocusChangeListener}.
Этот метод вызываетÑÑ, когда пользователь перемещаетÑÑ Ð² Ñлемент или из него Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ клавиш Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ трекбола.</dd>
<dt><code>onKey()</code></dt>
- <dd>Из объекта {@link android.view.View.OnKeyListener}.
+ <dd>Из объекта {@link android.view.View.OnKeyListener}.
Этот метод вызываетÑÑ, когда пользователь переноÑит Ñ„Ð¾ÐºÑƒÑ Ð½Ð° Ñлемент и нажимает или отпуÑкает аппаратную клавишу на уÑтройÑтве.</dd>
<dt><code>onTouch()</code></dt>
- <dd>Из объекта {@link android.view.View.OnTouchListener}.
+ <dd>Из объекта {@link android.view.View.OnTouchListener}.
Этот метод вызываетÑÑ, когда пользователь выполнÑет дейÑтвие, ÑчитающееÑÑ Ñобытием каÑаниÑ, например, нажимает, отпуÑкает
или выполнÑет любой жеÑÑ‚ на Ñкране (в пределах границ Ñлемента).</dd>
<dt><code>onCreateContextMenu()</code></dt>
- <dd>Из объекта {@link android.view.View.OnCreateContextMenuListener}.
+ <dd>Из объекта {@link android.view.View.OnCreateContextMenuListener}.
Этот метод вызываетÑÑ, когда ÑоздаетÑÑ ÐºÐ¾Ð½Ñ‚ÐµÐºÑтное меню (в результате длительного «длительного нажатиÑ»). См. обÑуждение
контекÑтных меню в руководÑтве
Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ¾Ð² <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Меню</a>.</dd>
@@ -75,8 +75,8 @@ parent.link=index.html
<p>Эти методы ÑвлÑÑŽÑ‚ÑÑ ÐµÐ´Ð¸Ð½Ñтвенными ÑоÑтавными чаÑÑ‚Ñми ÑоответÑтвующих интерфейÑов. Чтобы определить один из Ñтих методов
и обрабатывать ÑобытиÑ, реализуйте вложенный Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð² вашем процеÑÑ Ð¸Ð»Ð¸ определите его, как анонимный клаÑÑ.
Затем передайте ÑкземплÑÑ€ реализации
-в ÑоответÑтвующий метод <code>View.set...Listener()</code>. (Ðапример, вызовите
-<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>
+в ÑоответÑтвующий метод <code>View.set...Listener()</code>. (Ðапример, вызовите
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>
и передайте ему Ñвою реализацию {@link android.view.View.OnClickListener OnClickListener}.)</p>
<p>Ð’ Ñледующем примере показано, как зарегиÑтрировать приемник ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Â«Ð¿Ð¾ клику» (on-click) Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸. </p>
@@ -122,7 +122,7 @@ public class ExampleActivity extends Activity implements OnClickListener {
завиÑит от ÑобытиÑ. Ð”Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… методов, которые возвращают значениÑ, причина опиÑана ниже:</p>
<ul>
<li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> —
-Ñтот метод возвращает логичеÑкое значение, указывающее, что вы обработали Ñто Ñобытие и его более не Ñледует хранить.
+Ñтот метод возвращает логичеÑкое значение, указывающее, что вы обработали Ñто Ñобытие и его более не Ñледует хранить.
Рименно, верните значение <em>true</em>, чтобы указать, что вы обработали Ñобытие и его Ñледует оÑтановить;
верните значение <em>false</em>, еÑли вы не обработали его и/или Ñобытие должно продолжатьÑÑ Ð´Ð»Ñ Ð»ÑŽÐ±Ñ‹Ñ… других
приемников ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ on-click.</li>
@@ -181,14 +181,14 @@ dispatchKeyEvent()}</code>. Ð’ качеÑтве альтернативы к пе
макета, учитывайте и другие методы:</p>
<ul>
<li><code>{@link android.app.Activity#dispatchTouchEvent(MotionEvent)
- Activity.dispatchTouchEvent(MotionEvent)}</code> — Ñтот метод позволÑет вашей операции {@link
+ Activity.dispatchTouchEvent(MotionEvent)}</code> — Ñтот метод позволÑет вашей операции {@link
android.app.Activity} перехватывать вÑе ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ ÐºÐ°Ñаний перед их отправкой в окно.</li>
<li><code>{@link android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> — Ñтот метод позволÑет объекту {@link
android.view.ViewGroup} проÑматривать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´ их отправкой в дочерние отображаемые объекты.</li>
<li><code>{@link android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> — вызовите Ñтот метод
-в родительÑком отображаемом объекте, чтобы указать ему, что он не должен перехватывать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ ÐºÐ°ÑÐ°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ <code>{@link
+в родительÑком отображаемом объекте, чтобы указать ему, что он не должен перехватывать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ ÐºÐ°ÑÐ°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ <code>{@link
android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li>
</ul>
@@ -199,7 +199,7 @@ dispatchKeyEvent()}</code>. Ð’ качеÑтве альтернативы к пе
какой Ñлемент будет принимать ввод. Однако, еÑли уÑтройÑтво поддерживает ÑенÑорный ввод, и пользователь
начинает взаимодейÑтвовать Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñом, прикаÑаÑÑÑŒ к его Ñлементам, иÑчезает необходимоÑть
выделÑть Ñлементы или передавать Ñ„Ð¾ÐºÑƒÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð¾Ð¼Ñƒ отображаемому объекту. Следовательно, ÑущеÑтвует режим
-взаимодейÑтвиÑ, который называетÑÑ Â«Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð¼ каÑаниÑ».
+взаимодейÑтвиÑ, который называетÑÑ Â«Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð¼ каÑаниÑ».
</p>
<p>
Как только пользователь каÑаетÑÑ Ñкрана, уÑтройÑтво, поддерживающее ÑенÑорный ввод,
@@ -214,7 +214,7 @@ dispatchKeyEvent()}</code>. Ð’ качеÑтве альтернативы к пе
Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑким интерфейÑом без каÑÐ°Ð½Ð¸Ñ Ñкрана.
</p>
<p>
-СоÑтоÑние режима каÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ÑÑ Ð²Ð¾ вÑей ÑиÑтеме (Ð´Ð»Ñ Ð²Ñех окон и операций).
+СоÑтоÑние режима каÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ÑÑ Ð²Ð¾ вÑей ÑиÑтеме (Ð´Ð»Ñ Ð²Ñех окон и операций).
Чтобы узнать текущее ÑоÑтоÑние, можно вызвать
{@link android.view.View#isInTouchMode} и поÑмотреть, находитÑÑ Ð»Ð¸ уÑтройÑтво в режиме каÑаниÑ.
</p>
@@ -282,7 +282,7 @@ dispatchKeyEvent()}</code>. Ð’ качеÑтве альтернативы к пе
the framework will take care of measuring, laying out, and drawing the tree
as appropriate.</li>
</ol>
-
+
<p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
the UI thread when calling any method on any View.
If you are doing work on other threads and want to update the state of a View
diff --git a/docs/html-intl/intl/ru/preview/api-overview.jd b/docs/html-intl/intl/ru/preview/api-overview.jd
index d4e60427a98a..887ea630e79c 100644
--- a/docs/html-intl/intl/ru/preview/api-overview.jd
+++ b/docs/html-intl/intl/ru/preview/api-overview.jd
@@ -456,7 +456,7 @@ API-Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹, который позволÑет пÐ
<h2 id="android_for_work">Android for Work</h2>
<p>Ð’ Android for Work добавлены много новых возможноÑтей и API-интерфейÑов Ð´Ð»Ñ ÑƒÑтройÑтв под управлением Android N.
-Ðекоторые из них приведены ниже. Полный ÑпиÑок обновлений Android for Work, каÑающихÑÑ
+Ðекоторые из них приведены ниже. Полный ÑпиÑок обновлений Android for Work, каÑающихÑÑ
Android N, ÑодержитÑÑ Ð² ÑпиÑке изменений Android for Work.</p>
<h3 id="work_profile_security_challenge">Пароль безопаÑноÑти Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ³Ð¾ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ </h3>
diff --git a/docs/html-intl/intl/ru/preview/download.jd b/docs/html-intl/intl/ru/preview/download.jd
index b286cad7a7a9..3af4a5a80ac8 100644
--- a/docs/html-intl/intl/ru/preview/download.jd
+++ b/docs/html-intl/intl/ru/preview/download.jd
@@ -107,7 +107,7 @@ page.image=images/cards/card-n-downloads_2x.png
9.3. Google вправе в любое Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€ÐµÐºÑ€Ð°Ñ‚Ð¸Ñ‚ÑŒ дейÑтвие наÑтоÑщего Лицензионного ÑоглашениÑ, отправив предварительное уведомление или без него.
9.4 ДейÑтвие наÑтоÑщего Лицензионного ÑÐ¾Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки прекращаетÑÑ Ð±ÐµÐ· предварительного ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ‹Ñ… дейÑтвий Ñразу поÑле Ñледующего:
-(A) ÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ Google прекращает предоÑтавление Preview или определенных чаÑтей Preview пользователÑм в той Ñтране, в которой вы проживаете или иÑпользуете уÑлуги компании;
+(A) ÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ Google прекращает предоÑтавление Preview или определенных чаÑтей Preview пользователÑм в той Ñтране, в которой вы проживаете или иÑпользуете уÑлуги компании;
(B) ÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ Google выпуÑкает окончательную верÑию Android SDK.
9.5 Ð’ Ñлучае Ð¿Ñ€ÐµÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ Ð½Ð°ÑтоÑщего Лицензионного ÑÐ¾Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐºÑ€Ð°Ñ‰Ð°ÐµÑ‚ÑÑ Ð´ÐµÐ¹Ñтвие лицензии, предоÑтавленной в рамках Лицензионного ÑоглашениÑ, и вам Ñледует незамедлительно прекратить любое иÑпользование Preview, тогда как положениÑ, изложенные в разделах 10, 11, 12 и 14 продолжают дейÑтвовать беÑÑрочно.
@@ -264,7 +264,7 @@ Preview одним из Ñледующих ÑпоÑобов.
вручную запиÑать его во флÑш-памÑть уÑтройÑтва. См. информацию в Ñледующей таблице, чтобы загрузить ÑиÑтемный образ
Ð´Ð»Ñ Ñвоего теÑтового уÑтройÑтва. ЗапиÑÑŒ вручную во флÑш-памÑть уÑтройÑтва удобна, еÑли требуетÑÑ
точное управление Ñредой теÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ чаÑÑ‚Ð°Ñ Ð¿ÐµÑ€ÐµÑƒÑтановка,
-например при автоматичеÑком теÑтировании.
+например при автоматичеÑком теÑтировании.
</p>
<!-- You can flash by ota or system image --><p>
@@ -289,7 +289,7 @@ Preview одним из Ñледующих ÑпоÑобов.
ЕÑли вы захотите получить Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ беÑпроводной ÑвÑзи поÑле запиÑи на уÑтройÑтво вручную,
вам нужно проÑто зарегиÑтрировать уÑтройÑтво в <a href="https://g.co/androidbeta">программе
бета-теÑтировании Android</a>. Ð’Ñ‹ можете зарегиÑтрировать уÑтройÑтво в любое Ð²Ñ€ÐµÐ¼Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñледующего Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ верÑии
-по беÑпроводной ÑвÑзи.
+по беÑпроводной ÑвÑзи.
</p>
<table>
@@ -300,64 +300,73 @@ Preview одним из Ñледующих ÑпоÑобов.
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
- MD5: b5cf874021023b398f5b983b24913f5d<br>
- SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+ MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+ SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
- MD5: af183638cf34e0eb944a1957d7696f60<br>
- SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+ MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+ SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
- MD5: bc4934ea7bd325753eee1606d3725a24<br>
- SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+ MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+ SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
- MD5: c901334c6158351e945f188167ae56f4<br>
- SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-npd90g-factory-41b55406.tgz</a><br>
+ MD5: cefa78950141da2a7c75e887717e3c8f<br>
+ SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
- MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
- SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-npd90g-factory-610492be.tgz</a><br>
+ MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+ SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
- MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
- SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-npd90g-factory-0fe95694.tgz</a><br>
+ MD5: f4cb48f919e4c29c631de21416c612e2<br>
+ SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
- MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
- SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-npd90g-factory-f4da981c.tgz</a><br>
+ MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+ SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
</td>
</tr>
+
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
- MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
- SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+ MD5: 0ed565c509594072822d71c65b48ec8e<br>
+ SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
</td>
</tr>
diff --git a/docs/html-intl/intl/ru/preview/features/direct-boot.jd b/docs/html-intl/intl/ru/preview/features/direct-boot.jd
index b49624bf9216..3392c1355f8f 100644
--- a/docs/html-intl/intl/ru/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/ru/preview/features/direct-boot.jd
@@ -103,7 +103,7 @@ FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
<p>Шифрованное хранилище уÑтройÑтва Ñледует иÑпользовать только длÑ
информации, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть доÑтупна в режиме Direct Boot.
Шифрованное хранилище уÑтройÑтва не Ñледует иÑпользовать в качеÑтве шифрованного хранилища общего назначениÑ.
-Ð”Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ шифрованных данных, которые не требуютÑÑ Ð² режиме
+Ð”Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ шифрованных данных, которые не требуютÑÑ Ð² режиме
Direct Boot, Ñледует иÑпользовать шифрованное хранилище, требующее ввода учетных данных.</p>
<h2 id="notification">Уведомление о разблокировке пользователем</h2>
@@ -148,7 +148,7 @@ ACTION_BOOT_COMPLETED}, которое теперь указывает, что Ñ
Direct Boot на поддерживаемых уÑтройÑтвах Ñ Android N, выполните одну из Ñледующих поÑледовательноÑтей дейÑтвий.</p>
<ul>
-<li>Включите на уÑтройÑтве параметры разработчика <b>Developer options</b>, еÑли вы еще не Ñделали Ñтого ранее. Ð”Ð»Ñ Ñтого
+<li>Включите на уÑтройÑтве параметры разработчика <b>Developer options</b>, еÑли вы еще не Ñделали Ñтого ранее. Ð”Ð»Ñ Ñтого
перейдите на Ñкран <b>Settings &gt; About phone</b> и нажмите Ñемь раз <b>Build number</b>.
Когда параметры разработчика Ñтанут доÑтупны, откройте раздел
<b>Settings &gt; Developer options</b> и выберите
diff --git a/docs/html-intl/intl/ru/preview/features/multi-window.jd b/docs/html-intl/intl/ru/preview/features/multi-window.jd
index f1a8ea603ddd..b45766c169a1 100644
--- a/docs/html-intl/intl/ru/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/ru/preview/features/multi-window.jd
@@ -356,7 +356,7 @@ android:supportsPictureInPicture=["true" | "false"]
<p>
Чтобы перевеÑти операцию в режим "картинка в картинке",
вызовите новый метод <code>Activity.enterPictureInPicture()</code>. Этот метод игнорируетÑÑ, еÑли
- уÑтройÑтво не поддерживает режим "картинка в картинке". Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÑодержитÑÑ Ð² документации
+ уÑтройÑтво не поддерживает режим "картинка в картинке". Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÑодержитÑÑ Ð² документации
<a href="picture-in-picture.html">Режим "картинка в картинке"</a>.
</p>
diff --git a/docs/html-intl/intl/ru/preview/features/multilingual-support.jd b/docs/html-intl/intl/ru/preview/features/multilingual-support.jd
index 83dd2b4d1545..83e9968f73da 100644
--- a/docs/html-intl/intl/ru/preview/features/multilingual-support.jd
+++ b/docs/html-intl/intl/ru/preview/features/multilingual-support.jd
@@ -208,7 +208,7 @@ it_IT<br>
конечных пользователей. ПоÑтому при разработке приложений Ð´Ð»Ñ Android N
Ñледует иÑпользовать ÑредÑтва форматированиÑ, а не жеÑткое кодирование Ñтрок Ñ Ñ‡Ð¸Ñлами и датами.</p>
-<p>Ð’ качеÑтве наглÑдного примера можно привеÑти арабÑкий Ñзык, поддержка которого в Android N раÑширена
+<p>Ð’ качеÑтве наглÑдного примера можно привеÑти арабÑкий Ñзык, поддержка которого в Android N раÑширена
Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ {@code ar_EG} до 27 Ñзыковых Ñтандартов. БольшинÑтво реÑурÑов Ñтих Ñзыковых Ñтандартов общие, но
в некоторых из них иÑпользуютÑÑ Ñ†Ð¸Ñ„Ñ€Ñ‹ формата ASCII, а в других — ÑобÑтвенные цифры. Ðапример,
еÑли вы хотите Ñоздать предложение Ñ Ñ‡Ð¸Ñловой переменной
diff --git a/docs/html-intl/intl/ru/preview/features/notification-updates.jd b/docs/html-intl/intl/ru/preview/features/notification-updates.jd
index 9c7cb9347719..54b3bc36f5d4 100644
--- a/docs/html-intl/intl/ru/preview/features/notification-updates.jd
+++ b/docs/html-intl/intl/ru/preview/features/notification-updates.jd
@@ -203,7 +203,7 @@ Builder.setGroup()}.</p>
</p>
-<p>Добавление уведомлений в группу опиÑано в разделе
+<p>Добавление уведомлений в группу опиÑано в разделе
<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Добавление
каждого ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð² группу</a>.</p>
diff --git a/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd
index a39230c252fe..51a4c4d55f79 100644
--- a/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd
@@ -113,7 +113,7 @@ startActivityForResult(intent, request_code);
<h2 id="best">Советы и рекомендации</h2>
<p>По возможноÑти оÑтавлÑйте поÑтоÑнный URI Ð´Ð»Ñ Ð´Ð¾Ñтупа к внешнему каталогу, чтобы приложению не
-приходилоÑÑŒ многократно запрашивать у Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ на доÑтуп. ПоÑле предоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупа пользователем вызовите метод
+приходилоÑÑŒ многократно запрашивать у Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ на доÑтуп. ПоÑле предоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупа пользователем вызовите метод
<code>getContentResolver().takePersistableUriPermssion()</code> длÑ
URI доÑтупа к каталогу. СиÑтема Ñохранит поÑтоÑнный URI и при поÑледующих запроÑах
доÑтупа будет возвращать ответ <code>RESULT_OK</code>. Таким образом, приложение не будет поÑтоÑнно выводить
diff --git a/docs/html-intl/intl/ru/preview/features/security-config.jd b/docs/html-intl/intl/ru/preview/features/security-config.jd
index de117d68a83e..5294a4f6bbbd 100644
--- a/docs/html-intl/intl/ru/preview/features/security-config.jd
+++ b/docs/html-intl/intl/ru/preview/features/security-config.jd
@@ -133,7 +133,7 @@ page.image=images/cards/card-nyc_2x.jpg
</p>
<p>
- Добавьте Ñамозаверенный Ñертификат или Ñертификат закрытого ЦС в формате PEM или DER в
+ Добавьте Ñамозаверенный Ñертификат или Ñертификат закрытого ЦС в формате PEM или DER в
{@code res/raw/my_ca}.
</p>
@@ -209,7 +209,7 @@ page.image=images/cards/card-nyc_2x.jpg
При отладке приложениÑ, которое иÑпользует Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð» HTTPS, вам может потребоватьÑÑ
подключение к локальному Ñерверу разработки, у которого нет Ñертификата SSL
Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ³Ð¾ Ñервера. Чтобы выполнить отладку без Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°
- приложениÑ, вы можете указать ЦС Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸,
+ приложениÑ, вы можете указать ЦС Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸,
которые входÑÑ‚ в чиÑло доверенных, <i>только</i> еÑли Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
android:debuggable</a>
уÑтановлено значение {@code true} Ñ Ð¸Ñпользованием {@code debug-overrides}. Обычно Ñреды разработки и инÑтрументы
diff --git a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/index.jd b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/index.jd
index b8de11ecea67..29f1730998e0 100644
--- a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/index.jd
+++ b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/index.jd
@@ -34,12 +34,12 @@ startpage=true
</div>
</div>
-<p>Во Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð¾ вашему приложению ÑкземплÑры
+<p>Во Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð¾ вашему приложению ÑкземплÑры
{@link android.app.Activity} внутри Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð°ÑŽÑ‚ÑÑ Ð¼ÐµÐ¶Ð´Ñƒ разными ÑоÑтоÑниÑми их
жизненного цикла Ðапример, при первом запуÑке
операции она получает выÑокий приоритет в ÑиÑтеме и привлекает внимание
пользователÑ. Во Ð²Ñ€ÐµÐ¼Ñ Ñтого процеÑÑа ÑиÑтема Android вызывает Ñерию методов жизненного цикла
-операции, позволÑÑ Ð½Ð°Ñтроить пользовательÑкий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¸ другие компоненты. ЕÑли пользователь выполнÑет
+операции, позволÑÑ Ð½Ð°Ñтроить пользовательÑкий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¸ другие компоненты. ЕÑли пользователь выполнÑет
дейÑтвие, запуÑкающее другую операцию, или переключаетÑÑ Ð½Ð° другое приложение, ÑиÑтема вызывает другой набор
методов жизненного цикла Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸, поÑкольку она переноÑитÑÑ Ð½Ð° фоновый уровень (Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐµ не
отображаетÑÑ, но ÑкземплÑÑ€ и ÑоÑтоÑние оÑтаютÑÑ Ð±ÐµÐ· изменений).</p>
@@ -50,12 +50,12 @@ startpage=true
а Ñетевое Ñоединение разрывалоÑÑŒ. ПоÑле возврата Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»ÑŒ может Ñнова подключитьÑÑ Ðº Ñети, и пользователь Ñможет возобновить воÑпроизведение
видео Ñ Ñ‚Ð¾Ð³Ð¾ же Ñамого меÑта.</p>
-<p>Ð’ Ñтом учебном курÑе разъÑÑнÑÑŽÑ‚ÑÑ Ð²Ð°Ð¶Ð½Ñ‹Ðµ методы обратного вызова жизненного цикла, которые получает каждый ÑкземплÑÑ€ {@link
+<p>Ð’ Ñтом учебном курÑе разъÑÑнÑÑŽÑ‚ÑÑ Ð²Ð°Ð¶Ð½Ñ‹Ðµ методы обратного вызова жизненного цикла, которые получает каждый ÑкземплÑÑ€ {@link
android.app.Activity}, и опиÑываетÑÑ ÐºÐ°Ðº их иÑпользовать, чтобы Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑлаÑÑŒ так, как Ñтого ожидает
пользователь, и не потреблÑла ÑиÑтемные реÑурÑÑ‹, когда они ей не нужны.</p>
<h2>Уроки</h2>
-
+
<dl>
<dt><b><a href="starting.html">ЗапуÑк операции</a></b></dt>
<dd>Из Ñтого урока вы узнаете об оÑновах жизненного цикла операций, ÑпоÑобах запуÑка вашего Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñми и вариантах
@@ -68,5 +68,5 @@ android.app.Activity}, и опиÑываетÑÑ ÐºÐ°Ðº их иÑпользовÐ
<dt><b><a href="recreating.html">Повторное Ñоздание операции</a></b></dt>
<dd>Ð’Ñ‹ узнаете, что проиÑходит при полном прекращении операции, и как можно воÑÑтановить ее ÑоÑтоÑние
в Ñлучае необходимоÑти.</dd>
-</dl>
+</dl>
diff --git a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd
index c4837809acf2..8d1ce9265511 100644
--- a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>Содержание Ñтого урока</h2>
<ol>
<li><a href="#Pause">ПриоÑтановка операции</a></li>
<li><a href="#Resume">Возобновление операции</a></li>
</ol>
-
+
<h2>См. также:</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">Операции</a>
@@ -59,7 +59,7 @@ android.app.Activity#onPause()}, Ñто может указывать, что о
<h2 id="Pause">ПриоÑтановка операции</h2>
-
+
<p>Когда ÑиÑтема вызывает {@link android.app.Activity#onPause()} Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸, Ñто
техничеÑки означает, что Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾ÑтаетÑÑ Ñ‡Ð°Ñтично видимой. Однако чаще вÑего Ñто означает, что
пользователь покидает операцию, и вÑкоре она войдет в ÑоÑтоÑние оÑтановки. Обратный вызов
diff --git a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/recreating.jd b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/recreating.jd
index acb89fa29621..c36ccf4038d0 100644
--- a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>Содержание Ñтого урока</h2>
<ol>
<li><a href="#SaveState">Сохранение ÑоÑтоÑÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸</a></li>
<li><a href="#RestoreState">ВоÑÑтановление ÑоÑтоÑÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸</a></li>
</ol>
-
+
<h2>См. также:</h2>
<ul>
<li><a href="{@docRoot}training/basics/supporting-devices/screens.html">Поддержка
@@ -105,7 +105,7 @@ public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-
+
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
@@ -138,7 +138,7 @@ onCreate()}:</p>
&#64;Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Always call the superclass first
-
+
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore value of members from saved state
@@ -157,12 +157,12 @@ android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}, котоÑ
поÑле метода {@link android.app.Activity#onStart()}. СиÑтема вызывает {@link
android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} только при наличии Ñохраненного ÑоÑтоÑниÑ
Ð´Ð»Ñ Ð²Ð¾ÑÑтановлениÑ, и поÑтому вам не нужно проверÑть, имеет ли {@link android.os.Bundle} значение null:</p>
-
+
<pre>
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
-
+
// Restore state members from saved instance
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/starting.jd b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/starting.jd
index ef8be5b5347e..19f713469a70 100644
--- a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>Содержание Ñтого урока</h2>
<ol>
<li><a href="#lifecycle-states">Изучение обратных вызовов жизненного цикла</a></li>
@@ -17,7 +17,7 @@ trainingnavtop=true
<li><a href="#Create">Создание нового ÑкземплÑра</a></li>
<li><a href="#Destroy">Уничтожение операции</a></li>
</ol>
-
+
<h2>См. также:</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">Операции</a></li>
@@ -34,7 +34,7 @@ trainingnavtop=true
</div>
<p>Ð’ отличие от других парадигм программированиÑ, где Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑƒÑкаютÑÑ Ñ Ð¸Ñпользованием метода {@code main()}, ÑиÑтема
-Android запуÑкает код в {@link android.app.Activity}ÑкземплÑре поÑредÑтвом активации определенных
+Android запуÑкает код в {@link android.app.Activity}ÑкземплÑре поÑредÑтвом активации определенных
методов обратного вызова, ÑоответÑтвующих определенным Ñтапам его
жизненного цикла. СущеÑтвует поÑледовательноÑть методов обратного вызова, которые запуÑкают операцию и поÑледовательноÑть
методов обратного вызова, уничтожающих операцию.</p>
@@ -83,7 +83,7 @@ Android запуÑкает код в {@link android.app.Activity}ÑкземплÑ
</ul>
<!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
methods.</p>
<table>
<tr>
@@ -138,7 +138,7 @@ android.app.Activity#onResume()}.</p>
-<h2 id="launching-activity">Указание операции, запуÑкающей приложение</h2>
+<h2 id="launching-activity">Указание операции, запуÑкающей приложение</h2>
<p>Когда пользователь выбирает значок Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° главном Ñкране, ÑиÑтема вызывает метод {@link
android.app.Activity#onCreate onCreate()} Ð´Ð»Ñ {@link android.app.Activity} в вашем приложении
@@ -151,7 +151,7 @@ android.app.Activity#onCreate onCreate()} Ð´Ð»Ñ {@link android.app.Activity} в
<p>ОÑÐ½Ð¾Ð²Ð½Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° декларироватьÑÑ Ð² манифеÑте Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ фильтра <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
<intent-filter>}</a>, включающего дейÑтвие {@link
android.content.Intent#ACTION_MAIN MAIN} и категорию
-{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER}. Ðапример:</p>
+{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER}. Ðапример:</p>
<pre>
&lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -200,10 +200,10 @@ public void onCreate(Bundle savedInstanceState) {
// Set the user interface layout for this Activity
// The layout file is defined in the project res/layout/main_activity.xml file
setContentView(R.layout.main_activity);
-
+
// Initialize member TextView so we can manipulate it later
mTextView = (TextView) findViewById(R.id.text_message);
-
+
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// For the main activity, make sure the app icon in the action bar
@@ -221,7 +221,7 @@ public void onCreate(Bundle savedInstanceState) {
<p>ПоÑле Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ {@link android.app.Activity#onCreate onCreate()} ÑиÑтема
быÑтро вызывает методы {@link android.app.Activity#onStart()} и {@link android.app.Activity#onResume()} по
очереди. ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° не оÑтаетÑÑ Ð² ÑоÑтоÑнии ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ запуÑка. ТехничеÑки
-Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ ÑтановитÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ð¹ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ñ€Ð¸ вызове {@link android.app.Activity#onStart()}, однако затем Ñразу же проиÑходит
+Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ ÑтановитÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ð¹ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ñ€Ð¸ вызове {@link android.app.Activity#onStart()}, однако затем Ñразу же проиÑходит
{@link android.app.Activity#onResume()} и Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾ÑтаетÑÑ Ð² ÑоÑтоÑнии возобновлениÑ,
пока что-то не произойдет, например пока не поÑтупит телефонный звонок, пользователь не переключитÑÑ
на другую операцию или Ñкран уÑтройÑтва не выключитÑÑ.</p>
@@ -268,7 +268,7 @@ android.app.Activity#onDestroy}.</p>
&#64;Override
public void onDestroy() {
super.onDestroy(); // Always call the superclass
-
+
// Stop method tracing that the activity started during onCreate()
android.os.Debug.stopMethodTracing();
}
diff --git a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/stopping.jd b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/stopping.jd
index 27c771f1ffe4..f78e4efb0c00 100644
--- a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>Содержание Ñтого урока</h2>
<ol>
<li><a href="#Stop">ОÑтановка операции</a></li>
<li><a href="#Start">ЗапуÑк/перезапуÑк операции</a></li>
</ol>
-
+
<h2>См. также:</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">Операции</a>
@@ -118,7 +118,7 @@ protected void onStop() {
<p class="note"><strong>Примечание.</strong> Даже еÑли ÑиÑтема уничтожит операцию в период оÑтановки,
она Ñохранит ÑоÑтоÑние объектов {@link android.view.View} (например, текÑта в {@link
android.widget.EditText}) в {@link android.os.Bundle} (наборе пар "ключ-значение") и воÑÑтановит
-их, еÑли пользователь вернетÑÑ Ð² тот же ÑкземплÑÑ€ операции (на <a href="recreating.html">Ñледующем уроке</a> мы более подробно поговорим об иÑпользовании {@link android.os.Bundle} Ð´Ð»Ñ ÑохранениÑ
+их, еÑли пользователь вернетÑÑ Ð² тот же ÑкземплÑÑ€ операции (на <a href="recreating.html">Ñледующем уроке</a> мы более подробно поговорим об иÑпользовании {@link android.os.Bundle} Ð´Ð»Ñ ÑохранениÑ
других данных ÑоÑтоÑÐ½Ð¸Ñ Ð² Ñлучае ÑƒÐ½Ð¸Ñ‡Ñ‚Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ воÑÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²Ð°ÑˆÐµÐ¹ операции).</p>
@@ -152,13 +152,13 @@ android.app.Activity#onStart()} как при Ñоздании операции,
&#64;Override
protected void onStart() {
super.onStart(); // Always call the superclass method first
-
+
// The activity is either being restarted or started for the first time
// so this is where we should make sure that GPS is enabled
- LocationManager locationManager =
+ LocationManager locationManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-
+
if (!gpsEnabled) {
// Create a dialog here that requests the user to enable GPS, and use an intent
// with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -169,8 +169,8 @@ protected void onStart() {
&#64;Override
protected void onRestart() {
super.onRestart(); // Always call the superclass method first
-
- // Activity being restarted from stopped state
+
+ // Activity being restarted from stopped state
}
</pre>
diff --git a/docs/html-intl/intl/ru/training/basics/data-storage/databases.jd b/docs/html-intl/intl/ru/training/basics/data-storage/databases.jd
index 418d28866eee..bd1a4b71ae10 100644
--- a/docs/html-intl/intl/ru/training/basics/data-storage/databases.jd
+++ b/docs/html-intl/intl/ru/training/basics/data-storage/databases.jd
@@ -118,11 +118,11 @@ private static final String SQL_DELETE_ENTRIES =
по умолчанию недоÑтупна другим приложениÑм.</p>
<p>Полезный набор API-интерфейÑов ÑодержитÑÑ Ð² клаÑÑе {@link
-android.database.sqlite.SQLiteOpenHelper}.
+android.database.sqlite.SQLiteOpenHelper}.
ЕÑли вы иÑпользуете Ñтот клаÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÑÑылок на Ñвою базу данных, ÑиÑтема
выполнÑет потенциально
долговременные операции ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных только тогда, когда Ñто
-необходимо, а <em>не при запуÑке приложениÑ</em>. Ð”Ð»Ñ Ñтого нужно иÑпользовать вызов
+необходимо, а <em>не при запуÑке приложениÑ</em>. Ð”Ð»Ñ Ñтого нужно иÑпользовать вызов
{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} или
{@link android.database.sqlite.SQLiteOpenHelper#getReadableDatabase}.</p>
@@ -245,7 +245,7 @@ Cursor c = db.query(
);
</pre>
-<p>Чтобы поÑмотреть на Ñтроку в меÑте курÑора, иÑпользуйте один из методов перемещениÑ
+<p>Чтобы поÑмотреть на Ñтроку в меÑте курÑора, иÑпользуйте один из методов перемещениÑ
{@link android.database.Cursor}, которые вÑегда нужно вызывать перед Ñчитыванием значений. Обычно Ñледует начинать
Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð° {@link android.database.Cursor#moveToFirst}, который помещает "позицию чтениÑ"
на первую запиÑÑŒ в результатах. Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ Ñтроки значение Ñтолбца можно прочитать, вызвав один из методов
diff --git a/docs/html-intl/intl/ru/training/basics/data-storage/shared-preferences.jd b/docs/html-intl/intl/ru/training/basics/data-storage/shared-preferences.jd
index 61a00376d0b1..9a52e3eaf918 100644
--- a/docs/html-intl/intl/ru/training/basics/data-storage/shared-preferences.jd
+++ b/docs/html-intl/intl/ru/training/basics/data-storage/shared-preferences.jd
@@ -79,7 +79,7 @@ SharedPreferences sharedPref = context.getSharedPreferences(
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
</pre>
-<p class="caution"><strong>Внимание!</strong> ЕÑли вы Ñоздадите общий файл наÑтроек
+<p class="caution"><strong>Внимание!</strong> ЕÑли вы Ñоздадите общий файл наÑтроек
Ñ {@link android.content.Context#MODE_WORLD_READABLE} или {@link
android.content.Context#MODE_WORLD_WRITEABLE}, ваши данные будут доÑтупны вÑем другим приложениÑм, которым извеÑтен идентификатор
файла.</p>
diff --git a/docs/html-intl/intl/ru/training/basics/intents/result.jd b/docs/html-intl/intl/ru/training/basics/intents/result.jd
index 8ab03d42cdaf..c413725e801d 100644
--- a/docs/html-intl/intl/ru/training/basics/intents/result.jd
+++ b/docs/html-intl/intl/ru/training/basics/intents/result.jd
@@ -37,7 +37,7 @@ startActivity()}).</p>
результат отправлÑетÑÑ ÐºÐ°Ðº другой объект {@link android.content.Intent}. Ваша Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð°ÐµÑ‚
его в обратном вызове {@link android.app.Activity#onActivityResult onActivityResult()}.</p>
-<p class="note"><strong>Примечание.</strong> Ð’Ñ‹ можете иÑпользовать Ñвные и неÑвные результаты при вызове
+<p class="note"><strong>Примечание.</strong> Ð’Ñ‹ можете иÑпользовать Ñвные и неÑвные результаты при вызове
{@link android.app.Activity#startActivityForResult startActivityForResult()}. При запуÑке ÑобÑтвенной
операции Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð° вы должны иÑпользовать Ñвные результаты, чтобы получить
именно ожидаемый результат.</p>
@@ -104,7 +104,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Android Контакты или Люди, предоÑтавлÑÑŽÑ‚ контент {@link android.net.Uri}, который идентифицирует
выбранный пользователем контакт.</p>
-<p>Ð”Ð»Ñ ÑƒÑпешной обработки результатов необходимо понимать, каким будет формат Ñтих результатов
+<p>Ð”Ð»Ñ ÑƒÑпешной обработки результатов необходимо понимать, каким будет формат Ñтих результатов
{@link android.content.Intent}. Это проÑто, еÑли результат возвращаетÑÑ Ð¾Ð´Ð½Ð¾Ð¹ из ваших
ÑобÑтвенных операций. ПриложениÑ, входÑщие в ÑоÑтав платформы Android, имеют ÑобÑтвенные прикладные интерфейÑÑ‹, так что
вы можете раÑÑчитывать на получение определенных результатов. Ðапример, приложение "Люди" (приложение "Контакты" в Ñтарых
diff --git a/docs/html-intl/intl/ru/training/material/animations.jd b/docs/html-intl/intl/ru/training/material/animations.jd
index 9808a9fc7af1..ab59ea534c02 100644
--- a/docs/html-intl/intl/ru/training/material/animations.jd
+++ b/docs/html-intl/intl/ru/training/material/animations.jd
@@ -173,7 +173,7 @@ anim.start();
</ul>
<p>Любой переход, ÑвлÑющийÑÑ Ð½Ð°Ñледованием клаÑÑа {@link android.transition.Visibility}, поддерживаетÑÑ ÐºÐ°Ðº начальный или конечный переход.
- Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñтавлены в Ñправке по API Ð´Ð»Ñ ÐºÐ»Ð°ÑÑа
+ Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñтавлены в Ñправке по API Ð´Ð»Ñ ÐºÐ»Ð°ÑÑа
{@link android.transition.Transition}.</p>
<p>Ð’ Android 5.0 (уровень API 21) также поддерживаютÑÑ Ñледующие переходы общих Ñлементов:</p>
@@ -230,7 +230,7 @@ anim.start();
{@link android.transition.ChangeImageTransform}. Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñтавлены в Ñправке по API Ð´Ð»Ñ {@link android.transition.Transition}.
</p>
-<p>Чтобы активировать в Ñвоем коде переходы Ñодержимого окна, вызовите метод
+<p>Чтобы активировать в Ñвоем коде переходы Ñодержимого окна, вызовите метод
{@link android.view.Window#requestFeature Window.requestFeature()}:</p>
<pre>
@@ -263,7 +263,7 @@ setSharedElementEnterTransition()} задают начальный перехоÐ
Ð’ противном Ñлучае Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿ÑƒÑтит конечный переход, однако будет выполнен переход окна (например, маÑштабирование или затемнение).
</p>
-<p>Чтобы запуÑтить начальный переход как можно раньше, иÑпользуйте в вызываемой операции метод
+<p>Чтобы запуÑтить начальный переход как можно раньше, иÑпользуйте в вызываемой операции метод
{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
. Это позволит Ñделать начальные переходы более Ñффектными.</p>
@@ -289,7 +289,7 @@ startActivity(intent,
<li>Ðктивируйте в Ñвоей теме переходы Ñодержимого окна.</li>
<li>Ð’ определении ÑÑ‚Ð¸Ð»Ñ ÑƒÐºÐ°Ð¶Ð¸Ñ‚Ðµ переходы общих Ñлементов.</li>
<li>Определите Ñвой переход как XML-реÑурÑ.</li>
-<li>ПриÑвойте одинаковое Ð¸Ð¼Ñ Ð¾Ð±Ñ‰Ð¸Ð¼ Ñлементам в обоих макетах, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð´Ð»Ñ Ñтого атрибут
+<li>ПриÑвойте одинаковое Ð¸Ð¼Ñ Ð¾Ð±Ñ‰Ð¸Ð¼ Ñлементам в обоих макетах, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð´Ð»Ñ Ñтого атрибут
<code>android:transitionName</code>.</li>
<li>ВоÑпользуйтеÑÑŒ методом {@link android.app.ActivityOptions#makeSceneTransitionAnimation
ActivityOptions.makeSceneTransitionAnimation()}.</li>
@@ -321,7 +321,7 @@ imgContainerView.setOnClickListener(new View.OnClickListener() {
{@link android.view.View#setTransitionName View.setTransitionName()} Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾Ð³Ð¾ имени Ñлемента в обеих операциÑÑ….
</p>
-<p>Чтобы выполнить анимацию обратного перехода по завершении второй операции, вызовите метод
+<p>Чтобы выполнить анимацию обратного перехода по завершении второй операции, вызовите метод
{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
вмеÑто{@link android.app.Activity#finish Activity.finish()}.</p>
@@ -414,15 +414,15 @@ android.animation.StateListAnimator} в качеÑтве XML-реÑурÑа:</p>
&lt;/selector>
</pre>
-<p>Чтобы приÑоединить к предÑтавлению наÑтраиваемые анимации ÑоÑтоÑÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑтавлениÑ, определите аниматор, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñлемент
+<p>Чтобы приÑоединить к предÑтавлению наÑтраиваемые анимации ÑоÑтоÑÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑтавлениÑ, определите аниматор, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñлемент
<code>selector</code> в файле XML-реÑурÑа (как в Ñтом примере), а затем назначьте его Ñвоему предÑтавлению
Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ атрибута <code>android:stateListAnimator</code>. Чтобы в Ñвоем коде назначить предÑтавлению аниматор
ÑпиÑка ÑоÑтоÑний, иÑпользуйте метод {@link android.animation.AnimatorInflater#loadStateListAnimator
-AnimationInflater.loadStateListAnimator()}, а затем назначьте аниматор Ñвоему предÑтавлению Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ метода
+AnimationInflater.loadStateListAnimator()}, а затем назначьте аниматор Ñвоему предÑтавлению Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ метода
{@link android.view.View#setStateListAnimator View.setStateListAnimator()}.</p>
<p>ЕÑли ваша тема ÑвлÑетÑÑ Ñ€Ð°Ñширением темы Material Design, по умолчанию у кнопок имеетÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñть анимации по оÑи Z. Чтобы отключить
-такое поведение кнопок, задайте Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° <code>android:stateListAnimator</code> значение
+такое поведение кнопок, задайте Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° <code>android:stateListAnimator</code> значение
<code>@null</code>.</p>
<p>С помощью клаÑÑа {@link android.graphics.drawable.AnimatedStateListDrawable} можно Ñоздавать Ñлементы, которые Ñлужат Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸ между изменениÑми ÑоÑтоÑÐ½Ð¸Ñ ÑвÑзанного предÑтавлениÑ.
diff --git a/docs/html-intl/intl/ru/training/material/drawables.jd b/docs/html-intl/intl/ru/training/material/drawables.jd
index 2554f0717290..c1924e37945e 100644
--- a/docs/html-intl/intl/ru/training/material/drawables.jd
+++ b/docs/html-intl/intl/ru/training/material/drawables.jd
@@ -38,7 +38,7 @@ page.title=Работа Ñ Ñлементами дизайна
<p>Тонирование можно применить к объектам {@link android.graphics.drawable.BitmapDrawable} и {@link
android.graphics.drawable.NinePatchDrawable} Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ метода {@code setTint()}. Также можно
-задать цвет и ÑпоÑоб Ñ‚Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² макетах, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð´Ð»Ñ Ñтого атрибуты <code>android:tint</code> и
+задать цвет и ÑпоÑоб Ñ‚Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² макетах, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð´Ð»Ñ Ñтого атрибуты <code>android:tint</code> и
<code>android:tintMode</code>.</p>
diff --git a/docs/html-intl/intl/ru/training/material/get-started.jd b/docs/html-intl/intl/ru/training/material/get-started.jd
index 476de7f1bcf5..6a0340d1ef78 100644
--- a/docs/html-intl/intl/ru/training/material/get-started.jd
+++ b/docs/html-intl/intl/ru/training/material/get-started.jd
@@ -59,7 +59,7 @@ page.title=Ðачало работы
<h2 id="ApplyTheme">Применение темы Material Design</h2>
-<p>Чтобы применить тему Material Design в Ñвоем приложении, укажите Ñтиль, который наÑледует от
+<p>Чтобы применить тему Material Design в Ñвоем приложении, укажите Ñтиль, который наÑледует от
<code>android:Theme.Material</code>:</p>
<pre>
diff --git a/docs/html-intl/intl/ru/training/material/index.jd b/docs/html-intl/intl/ru/training/material/index.jd
index 0b3f1c4fc0ba..e609557490cd 100644
--- a/docs/html-intl/intl/ru/training/material/index.jd
+++ b/docs/html-intl/intl/ru/training/material/index.jd
@@ -1,7 +1,7 @@
-page.title=Создание приложений Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Material Design
-page.type=проектирование
+page.title=Создание приложений Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Material Design
+page.type=проектирование
page.image=images/cards/material_2x.png
-page.metaDescription=ÐаучитеÑÑŒ применÑть Material Design к Ñвоим приложениÑм.
+page.metaDescription=ÐаучитеÑÑŒ применÑть Material Design к Ñвоим приложениÑм.
@jd:body
diff --git a/docs/html-intl/intl/ru/training/material/lists-cards.jd b/docs/html-intl/intl/ru/training/material/lists-cards.jd
index 44ff1601734f..fa0db14989b7 100644
--- a/docs/html-intl/intl/ru/training/material/lists-cards.jd
+++ b/docs/html-intl/intl/ru/training/material/lists-cards.jd
@@ -90,7 +90,7 @@ android.support.v7.widget.RecyclerView}. Ð”Ð»Ñ Ð½Ð°Ñтройки такой а
<h3 id="RVExamples">Примеры</h3>
-<p>Ð’ Ñледующем примере демонÑтрируетÑÑ, как включить в макет виджет
+<p>Ð’ Ñледующем примере демонÑтрируетÑÑ, как включить в макет виджет
{@link android.support.v7.widget.RecyclerView}:</p>
<pre>
@@ -253,7 +253,7 @@ android.support.v7.widget.CardView} могут отбраÑывать тени Ð
<p> Виджеты {@link android.support.v7.widget.RecyclerView} и {@link android.support.v7.widget.CardView}
входÑÑ‚ во <a href="{@docRoot}tools/support-library/features.html#v7">вÑпомогательные
-библиотеки v7</a>. Чтобы иÑпользовать Ñти виджеты в Ñвоем проекте, добавьте в модуль Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñледующие
+библиотеки v7</a>. Чтобы иÑпользовать Ñти виджеты в Ñвоем проекте, добавьте в модуль Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñледующие
<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">завиÑимоÑти Gradle</a>:
</p>
diff --git a/docs/html-intl/intl/ru/training/material/shadows-clipping.jd b/docs/html-intl/intl/ru/training/material/shadows-clipping.jd
index a1c41fcd93d8..293b525854cf 100644
--- a/docs/html-intl/intl/ru/training/material/shadows-clipping.jd
+++ b/docs/html-intl/intl/ru/training/material/shadows-clipping.jd
@@ -31,7 +31,7 @@ page.title=Определение теней и обрезка предÑтавÐ
<p>УÑтановка выÑоты также полезна Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸, когда виджеты временно поднимаютÑÑ Ð²Ñ‹ÑˆÐµ плоÑкоÑти предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ выполнении какого-либо дейÑтвиÑ.
</p>
-<p>Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± уÑтановке выÑоты в Material Design предÑтавлены на Ñтранице
+<p>Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± уÑтановке выÑоты в Material Design предÑтавлены на Ñтранице
<a href="http://www.google.com/design/spec/what-is-material/objects-in-3d-space.html">Объекты в трехмерном проÑтранÑтве</a>.
</p>
@@ -59,13 +59,13 @@ View.setTranslationZ()}.</p>
<p>Ðовые методы {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} и {@link
android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} позволÑÑŽÑ‚ Ñ Ð»ÐµÐ³ÐºÐ¾Ñтью анимировать изменение выÑоты предÑтавлений.
- Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. в Ñправке по API длÑ
+ Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. в Ñправке по API длÑ
{@link android.view.ViewPropertyAnimator}, а также в руководÑтве по <a href="{@docRoot}guide/topics/graphics/prop-animation.html">анимации ÑвойÑтв</a> Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ¾Ð².
</p>
<p>Также можно иÑпользовать клаÑÑ {@link android.animation.StateListAnimator} Ð´Ð»Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтих анимаций.
Это оÑобенно полезно в тех ÑлучаÑÑ…, когда Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿ÑƒÑкаетÑÑ Ð¿Ñ€Ð¸ изменении ÑоÑтоÑниÑ, например, когда пользователь нажимает на кнопку.
- Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. в разделе
+ Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. в разделе
<a href="{@docRoot}training/material/animations.html#ViewState">ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ ÑоÑтоÑÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑтавлениÑ</a>.</p>
<p>Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Z измерÑÑŽÑ‚ÑÑ Ð² dp (пикÑели, не завиÑÑщие от плотноÑти).</p>
@@ -110,7 +110,7 @@ android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ
android.view.View#setOutlineProvider View.setOutlineProvider()}.</li>
</ol>
-<p>Можно Ñоздавать овальные и прÑмоугольные контуры Ñо Ñкругленными углами, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð´Ð»Ñ Ñтого методы клаÑÑа
+<p>Можно Ñоздавать овальные и прÑмоугольные контуры Ñо Ñкругленными углами, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð´Ð»Ñ Ñтого методы клаÑÑа
{@link android.graphics.Outline}. Стандартный иÑточник контуров получает контуры из фона предÑтавлениÑ.
Чтобы предÑтавление не отбраÑывало тень, задайте Ð´Ð»Ñ Ð¸Ñточника контуров значение <code>null</code>.
</p>
diff --git a/docs/html-intl/intl/ru/training/material/theme.jd b/docs/html-intl/intl/ru/training/material/theme.jd
index 320f308312bf..62c310f7dc7f 100644
--- a/docs/html-intl/intl/ru/training/material/theme.jd
+++ b/docs/html-intl/intl/ru/training/material/theme.jd
@@ -42,7 +42,7 @@ page.title=ИÑпользование темы Material Design
<li><code>@android:style/Theme.Material.Light.DarkActionBar</code>.</li>
</ul>
-<p>СпиÑок доÑтупных Ñтилей Material Design Ñм. в Ñправке по API длÑ
+<p>СпиÑок доÑтупных Ñтилей Material Design Ñм. в Ñправке по API длÑ
{@link android.R.style R.style}.</p>
<!-- two columns, dark/light material theme example -->
@@ -66,7 +66,7 @@ page.title=ИÑпользование темы Material Design
<strong>Примечание.</strong> Темы Material Design доÑтупны только в ОС Android 5.0 (уровень API 21) и более поздних верÑий.
Во <a href="{@docRoot}tools/support-library/features.html#v7">вÑпомогательных библиотеках v7</a>
предÑтавлены темы Ñо ÑтилÑми Material Design Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… виджетов. Эти библиотеки также обеÑпечивают поддержку наÑтройки цветовой палитры.
- Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. на Ñтранице
+ Дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. на Ñтранице
<a href="{@docRoot}training/material/compatibility.html">ОбеÑпечение ÑовмеÑтимоÑти</a>.
</p>
@@ -108,7 +108,7 @@ page.title=ИÑпользование темы Material Design
<p>Кроме того, можно ÑамоÑтоÑтельно размеÑтить Ñлемент за Ñтрокой ÑоÑтоÑниÑ. Ðапример, еÑли требуетÑÑ Ð½Ð°Ð»Ð¾Ð¶Ð¸Ñ‚ÑŒ прозрачную Ñтроку ÑоÑтоÑÐ½Ð¸Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ… фотографии, применив еле уловимый темный градиент, чтобы были видны белые значки ÑоÑтоÑниÑ.
- Ð”Ð»Ñ Ñтого задайте Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° <code>android:statusBarColor</code> значение
+ Ð”Ð»Ñ Ñтого задайте Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° <code>android:statusBarColor</code> значение
<code>&#64;android:color/transparent</code> и наÑтройте флаги окна требуемым образом. Также можно воÑпользоватьÑÑ
методом {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸ или Ñффекта поÑтепенного иÑчезаниÑ.
</p>
diff --git a/docs/html-intl/intl/ru/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/intl/ru/training/monitoring-device-state/battery-monitoring.jd
index 26daf04bd1ce..a8e5843aee61 100644
--- a/docs/html-intl/intl/ru/training/monitoring-device-state/battery-monitoring.jd
+++ b/docs/html-intl/intl/ru/training/monitoring-device-state/battery-monitoring.jd
@@ -7,8 +7,8 @@ next.title=Determining and Monitoring the Docking State and Type
next.link=docking-monitoring.html
@jd:body
-
-<div id="tb-wrapper">
+
+<div id="tb-wrapper">
<div id="tb">
<h2>Содержание урока</h2>
@@ -24,9 +24,9 @@ next.link=docking-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">ÐÐ°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¸ фильтры намерений</a>
</ul>
-</div>
</div>
-
+</div>
+
<p>ЕÑли вы хотите изменить чаÑтоту фоновых обновлений, чтобы продлить Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ уÑтройÑтва от батареи, Ñначала рекомендуетÑÑ Ð¿Ñ€Ð¾Ð²ÐµÑ€Ð¸Ñ‚ÑŒ текущий уровень зарÑда и ÑоÑтоÑние зарÑдки.</p>
<p>Именно от Ñтих двух факторов завиÑит, как Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²Ð»Ð¸ÑÑŽÑ‚ на Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ уÑтройÑтва от батареи. Когда уÑтройÑтво подключено к Ñети переменного тока, приложение можно обновлÑть макÑимально чаÑто, поÑкольку процеÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ будет ÑказыватьÑÑ Ð½Ð° уровне зарÑда батареи. ЕÑли уÑтройÑтво не подключено к Ñети, Ñледует воздержатьÑÑ Ð¾Ñ‚ обновлений, чтобы продлить Ð²Ñ€ÐµÐ¼Ñ ÐµÐ³Ð¾ работы от батареи.</p>
@@ -34,8 +34,8 @@ next.link=docking-monitoring.html
<p>ЕÑли зарÑд батареи практичеÑки иÑчерпан, можно Ñнизить чаÑтоту обновлений (вплоть до их полного прекращениÑ).</p>
-<h2 id="DetermineChargeState">Определение текущего ÑоÑтоÑÐ½Ð¸Ñ Ð·Ð°Ñ€Ñдки</h2>
-
+<h2 id="DetermineChargeState">Определение текущего ÑоÑтоÑÐ½Ð¸Ñ Ð·Ð°Ñ€Ñдки</h2>
+
<p>Ðачните Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ ÑоÑтоÑÐ½Ð¸Ñ Ð·Ð°Ñ€Ñдки. {@link android.os.BatteryManager} передает вÑе ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ батарее и зарÑдке в закрепленном намерении {@link android.content.Intent}, которое Ñодержит также информацию о ÑоÑтоÑнии зарÑдки.</p>
<p>ПоÑкольку Ñто намерение ÑвлÑетÑÑ Ð·Ð°ÐºÑ€ÐµÐ¿Ð»ÐµÐ½Ð½Ñ‹Ð¼, региÑтрировать {@link android.content.BroadcastReceiver} не нужно. Чтобы получить текущее ÑоÑтоÑние батареи в виде намерениÑ, нужно вызвать {@code registerReceiver}, передав {@code null} в качеÑтве приемника, как показано в коде ниже. Можно также передать фактичеÑкий объект {@link android.content.BroadcastReceiver}, но Ñто необÑзательно, поÑкольку обработка обновлений будет выполнÑтьÑÑ Ð¿Ð¾Ð·Ð´Ð½ÐµÐµ.</p>
@@ -58,7 +58,7 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
<p>Как правило, еÑли уÑтройÑтво подключено к Ñети переменного тока, фоновые Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ выполнÑть Ñ Ð¼Ð°ÐºÑимальной чаÑтотой. ЕÑли уÑтройÑтво зарÑжаетÑÑ Ñ‡ÐµÑ€ÐµÐ· USB, чаÑтоту можно неÑколько Ñократить, а еÑли уÑтройÑтво не подключено к Ñети&nbsp;– Ñократить еще больше.</p>
-<h2 id="MonitorChargeState">ОтÑлеживание изменений ÑоÑтоÑÐ½Ð¸Ñ Ð·Ð°Ñ€Ñдки</h2>
+<h2 id="MonitorChargeState">ОтÑлеживание изменений ÑоÑтоÑÐ½Ð¸Ñ Ð·Ð°Ñ€Ñдки</h2>
<p>СоÑтоÑние зарÑдки изменÑетÑÑ Ð²ÑÑкий раз, когда пользователь подключает уÑтройÑтво к иÑточнику питаниÑ. ПоÑкольку Ñто ÑлучаетÑÑ Ð´Ð¾Ð²Ð¾Ð»ÑŒÐ½Ð¾ чаÑто, важно отÑлеживать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтого ÑоÑтоÑÐ½Ð¸Ñ Ð¸ ÑоответÑтвующим образом корректировать чаÑтоту Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ.</p>
@@ -75,11 +75,11 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
<pre>public class PowerConnectionReceiver extends BroadcastReceiver {
&#64;Override
- public void onReceive(Context context, Intent intent) {
+ public void onReceive(Context context, Intent intent) {
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
-
+
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
@@ -87,7 +87,7 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
}</pre>
-<h2 id="CurrentLevel">Определение текущего ÑƒÑ€Ð¾Ð²Ð½Ñ Ð·Ð°Ñ€Ñда батареи</h2>
+<h2 id="CurrentLevel">Определение текущего ÑƒÑ€Ð¾Ð²Ð½Ñ Ð·Ð°Ñ€Ñда батареи</h2>
<p>Ð’ некоторых ÑлучаÑÑ… целеÑообразно определÑть текущий уровень зарÑда батареи. ЕÑли он ниже определенного значениÑ, чаÑтоту фоновых обновлений Ñледует уменьшить.</p>
@@ -99,7 +99,7 @@ int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale;</pre>
-<h2 id="MonitorLevel">ОтÑлеживание ÑущеÑтвенных изменений ÑƒÑ€Ð¾Ð²Ð½Ñ Ð·Ð°Ñ€Ñда батареи</h2>
+<h2 id="MonitorLevel">ОтÑлеживание ÑущеÑтвенных изменений ÑƒÑ€Ð¾Ð²Ð½Ñ Ð·Ð°Ñ€Ñда батареи</h2>
<p>ОтÑлеживать ÑоÑтоÑние батареи непрерывно не Ñледует,</p>
diff --git a/docs/html-intl/intl/ru/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/intl/ru/training/monitoring-device-state/connectivity-monitoring.jd
index ca1a9423692f..d37243193e9e 100644
--- a/docs/html-intl/intl/ru/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html-intl/intl/ru/training/monitoring-device-state/connectivity-monitoring.jd
@@ -11,7 +11,7 @@ next.link=manifest-receivers.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>Содержание урока</h2>
@@ -27,7 +27,7 @@ next.link=manifest-receivers.html
<li><a href="{@docRoot}guide/components/intents-filters.html">ÐÐ°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¸ фильтры намерений</a>
</ul>
-</div>
+</div>
</div>
<p>Чаще вÑего повторÑющиеÑÑ Ð¾Ð¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¸ фоновые Ñлужбы иÑпользуютÑÑ Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð· Интернета, кÑÑˆÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ загрузки больших объемов данных. Однако еÑли подключение к Интернету не уÑтановлено или ÑкороÑть ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñлишком низкаÑ, выполнÑть загрузку не имеет ÑмыÑла.</p>
@@ -35,18 +35,18 @@ next.link=manifest-receivers.html
<p>Проверить наличие Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Интернету и его тип можно Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ {@link android.net.ConnectivityManager}.</p>
-<h2 id="DetermineConnection">Определение Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Интернету</h2>
-
+<h2 id="DetermineConnection">Определение Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Интернету</h2>
+
<p>ЕÑли подключение отÑутÑтвует, нет ÑмыÑла планировать обновление из Интернета. Ð’ приведенном ниже коде показано, как иÑпользовать {@link android.net.ConnectivityManager} Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ запроÑов об активной Ñети и определÑть возможноÑти подключениÑ.</p>
<pre>ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
-
+
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
-<h2 id="DetermineType">Определение типа Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Интернету</h2>
+<h2 id="DetermineType">Определение типа Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Интернету</h2>
<p>Также можно определить тип доÑтупного в наÑтоÑщий момент Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Интернету.</p>
@@ -59,7 +59,7 @@ boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
<p>Когда Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ‹, необходимо отÑлеживать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупных Ñоединений, чтобы возобновить их Ñразу поÑле Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÑƒÑтройÑтва к Интернету.</p>
-<h2 id="MonitorChanges">ОтÑлеживание Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñтей подключениÑ</h2>
+<h2 id="MonitorChanges">ОтÑлеживание Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñтей подключениÑ</h2>
<p>{@link android.net.ConnectivityManager} передает дейÑтвие {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION} ({@code "android.net.conn.CONNECTIVITY_CHANGE"}) при каждом изменении Ñведений о подключении. ЗарегиÑтрируйте в манифеÑте приемник широковещательных намерений, чтобы отÑлеживать Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ запуÑкать (или приоÑтанавливать) фоновые Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑоответÑтвующим образом.</p>
diff --git a/docs/html-intl/intl/ru/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/intl/ru/training/monitoring-device-state/docking-monitoring.jd
index d94f3570458c..002f35155a22 100644
--- a/docs/html-intl/intl/ru/training/monitoring-device-state/docking-monitoring.jd
+++ b/docs/html-intl/intl/ru/training/monitoring-device-state/docking-monitoring.jd
@@ -10,7 +10,7 @@ next.link=connectivity-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>Содержание урока</h2>
@@ -26,7 +26,7 @@ next.link=connectivity-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">ÐÐ°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¸ фильтры намерений</a>
</ul>
-</div>
+</div>
</div>
<p>УÑтройÑтва под управлением ОС Android можно подключать к неÑкольким типам док-Ñтанций: наÑтольным, которые делÑÑ‚ÑÑ Ð½Ð° цифровые и аналоговые, и автомобильным. Ð’ большинÑтве Ñлучаев уÑтройÑтва зарÑжаютÑÑ Ð¿Ñ€Ð¸ подключении к док-Ñтанции, поÑтому ÑоÑтоÑние Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº док-Ñтанции чаÑто ÑвÑзано Ñ ÑоÑтоÑнием зарÑдки.</p>
@@ -36,8 +36,8 @@ next.link=connectivity-monitoring.html
<p>СоÑтоÑние Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº док-Ñтанции также передаетÑÑ Ð² виде закрепленного Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ {@link android.content.Intent}, что позволÑет запрашивать ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ наличии Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº док-Ñтанции и ее типе.</p>
-<h2 id="CurrentDockState">Определение текущего ÑоÑтоÑÐ½Ð¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº док-Ñтанции</h2>
-
+<h2 id="CurrentDockState">Определение текущего ÑоÑтоÑÐ½Ð¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº док-Ñтанции</h2>
+
<p>Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ ÑоÑтоÑнии Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº док-Ñтанции передаютÑÑ Ð² качеÑтве дополнительных данных в закрепленном оповещении дейÑÑ‚Ð²Ð¸Ñ {@link android.content.Intent#ACTION_DOCK_EVENT}. ПоÑкольку Ñто закрепленное намерение, региÑтрировать {@link android.content.BroadcastReceiver} не требуетÑÑ. ДоÑтаточно вызвать {@link android.content.Context#registerReceiver registerReceiver()}, передав {@code null} в качеÑтве приемника широковещательных намерений, как показано в коде ниже.</p>
<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
@@ -49,9 +49,9 @@ Intent dockStatus = context.registerReceiver(null, ifilter);</pre>
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
-<h2 id="DockType">Определение типа док-Ñтанции</h2>
+<h2 id="DockType">Определение типа док-Ñтанции</h2>
-<p>Док-ÑтанциÑ, к которой подключено уÑтройÑтво, может быть одного из четырех типов:
+<p>Док-ÑтанциÑ, к которой подключено уÑтройÑтво, может быть одного из четырех типов:
<ul><li>автомобильнаÑ;</li>
<li>наÑтольнаÑ;</li>
<li>наÑÑ‚Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ñ‹Ð¼ набором функций (аналоговаÑ);</li>
@@ -60,12 +60,12 @@ boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
<p>Обратите внимание, что поÑледние два типа поддерживаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на уровне API&nbsp;11, поÑтому, даже еÑли Ð²Ð°Ñ Ð½Ðµ интереÑует, ÑвлÑетÑÑ Ð»Ð¸ док-ÑÑ‚Ð°Ð½Ñ†Ð¸Ñ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¾Ð¹ или аналоговой, а интереÑует только ее тип, рекомендуетÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñть проверку по вÑем трем типам:</p>
<pre>boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
-boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
+boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
dockState == EXTRA_DOCK_STATE_LE_DESK ||
dockState == EXTRA_DOCK_STATE_HE_DESK;</pre>
-<h2 id="MonitorDockState">ОтÑлеживание изменений ÑоÑтоÑÐ½Ð¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº док-Ñтанции и ее типа</h2>
+<h2 id="MonitorDockState">ОтÑлеживание изменений ÑоÑтоÑÐ½Ð¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº док-Ñтанции и ее типа</h2>
<p>При каждом подключении уÑтройÑтва к док-Ñтанции или отключении от нее передаетÑÑ Ð´ÐµÐ¹Ñтвие {@link android.content.Intent#ACTION_DOCK_EVENT}. Чтобы отÑлеживать ÑоÑтоÑние Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº док-Ñтанции, доÑтаточно зарегиÑтрировать в манифеÑте Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ÐµÐ¼Ð½Ð¸Ðº широковещательных намерений, как показано ниже.</p>
diff --git a/docs/html-intl/intl/ru/training/monitoring-device-state/index.jd b/docs/html-intl/intl/ru/training/monitoring-device-state/index.jd
index c87d9af5da4d..e26af09a9c2b 100644
--- a/docs/html-intl/intl/ru/training/monitoring-device-state/index.jd
+++ b/docs/html-intl/intl/ru/training/monitoring-device-state/index.jd
@@ -7,10 +7,10 @@ next.link=battery-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
-<h2>ТребованиÑ</h2>
+<h2>ТребованиÑ</h2>
<ul>
<li>Android 2.0 (API уровнÑ&nbsp;5) или более поздней верÑии</li>
<li>Опыт работы Ñ <a href="{@docRoot}guide/components/intents-filters.html">намерениÑми и фильтрами намерений</a></li>
@@ -21,19 +21,19 @@ next.link=battery-monitoring.html
<li><a href="{@docRoot}guide/components/services.html">Службы</a>
</ul>
-</div>
+</div>
</div>
<p>КачеÑтвенное приложение должно оказывать минимальное влиÑние на Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ уÑтройÑтва от батареи. Ð’ Ñтом уроке вы научитеÑÑŒ Ñоздавать приложениÑ, ÑпоÑобные изменÑть функционал и режим работы в завиÑимоÑти от ÑоÑтоÑÐ½Ð¸Ñ ÑƒÑтройÑтва.</p>
<p>Отключение Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… фоновых Ñлужб при потере Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸ Ñнижение чаÑтоты Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ низком зарÑде батареи позволÑет Ñнизить раÑход Ñнергии и продлить работу уÑтройÑтва без подзарÑдки.</p>
-<h2>Уроки</h2>
-
+<h2>Уроки</h2>
+
<!-- Create a list of the lessons in this class along with a short description of each lesson.
These should be short and to the point. It should be clear from reading the summary whether someone
-will want to jump to a lesson or not.-->
-
+will want to jump to a lesson or not.-->
+
<dl>
<dt><b><a href="battery-monitoring.html">ОтÑлеживание ÑƒÑ€Ð¾Ð²Ð½Ñ Ð·Ð°Ñ€Ñда батареи и ÑоÑтоÑÐ½Ð¸Ñ Ð·Ð°Ñ€Ñдки</a></b></dt>
<dd>Ð’Ñ‹ узнаете, как изменÑть чаÑтоту Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ, определÑÑ Ð¸ отÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ уровень зарÑда батареи и изменение ÑоÑтоÑÐ½Ð¸Ñ Ð·Ð°Ñ€Ñдки.</dd>
@@ -46,4 +46,4 @@ will want to jump to a lesson or not.-->
<dt><b><a href="manifest-receivers.html">Операции Ñ Ð¿Ñ€Ð¸ÐµÐ¼Ð½Ð¸ÐºÐ°Ð¼Ð¸ широковещательных намерений по запроÑу</a></b></dt>
<dd>Приемники широковещательных намерений, объÑвленные в манифеÑте, можно включать и отключать во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ приложениÑ. Это позволÑет отключать ненужные приемники в завиÑимоÑти от ÑоÑтоÑÐ½Ð¸Ñ ÑƒÑтройÑтва. Ð’Ñ‹ узнаете, как повыÑить ÑффективноÑть путем включениÑ, Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ каÑÐºÐ°Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ÐµÐ¼Ð½Ð¸ÐºÐ¾Ð² Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ Ð¸ как отложить дейÑтвие до момента перехода уÑтройÑтва в заданное ÑоÑтоÑние.</dd>
-</dl> \ No newline at end of file
+</dl> \ No newline at end of file
diff --git a/docs/html-intl/intl/ru/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/intl/ru/training/monitoring-device-state/manifest-receivers.jd
index 724ee93e2822..2bd0fb93658e 100644
--- a/docs/html-intl/intl/ru/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html-intl/intl/ru/training/monitoring-device-state/manifest-receivers.jd
@@ -9,7 +9,7 @@ previous.link=connectivity-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>Содержание урока</h2>
@@ -23,7 +23,7 @@ previous.link=connectivity-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">ÐÐ°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¸ фильтры намерений</a>
</ul>
-</div>
+</div>
</div>
<p>Самый проÑтой ÑпоÑоб отÑлеживать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ ÑƒÑтройÑтва&nbsp;– Ñоздать приемники {@link android.content.BroadcastReceiver} Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ отÑлеживаемого ÑоÑтоÑÐ½Ð¸Ñ Ð¸ зарегиÑтрировать их в манифеÑте приложениÑ. Затем в каждом из Ñтих приемников можно переопределÑть график повторÑющихÑÑ Ð¾Ð¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ð¹ в завиÑимоÑти от текущего ÑоÑтоÑÐ½Ð¸Ñ ÑƒÑтройÑтва.</p>
@@ -31,10 +31,10 @@ previous.link=connectivity-monitoring.html
<p>Этот ÑпоÑоб имеет недоÑтатки: приложение активирует уÑтройÑтво при каждом запуÑке любого из Ñтих приемников, что далеко не вÑегда оправданно.</p>
<p>Оптимальный вариант&nbsp;– включать и выключать приемники широковещательных намерений во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ приложениÑ. Это позволÑет иÑпользовать приемники, объÑвленные в манифеÑте, как паÑÑивные оповещениÑ, которые инициируютÑÑ ÑиÑтемными ÑобытиÑми только в Ñлучае необходимоÑти.</p>
-
-<h2 id="ToggleReceivers">Включение, отключение и каÑкадирование приемников Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ ÑффективноÑти </h2>
-
+
+<h2 id="ToggleReceivers">Включение, отключение и каÑкадирование приемников Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ ÑффективноÑти </h2>
+
<p>{@link android.content.pm.PackageManager} позволÑет включать и выключать любые компоненты, определенные в манифеÑте, в том чиÑле вÑе приемники широковещательных намерений:</p>
<pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
diff --git a/docs/html-intl/intl/ru/training/multiscreen/adaptui.jd b/docs/html-intl/intl/ru/training/multiscreen/adaptui.jd
index 490a64ad2de6..ee1dd9dcd167 100644
--- a/docs/html-intl/intl/ru/training/multiscreen/adaptui.jd
+++ b/docs/html-intl/intl/ru/training/multiscreen/adaptui.jd
@@ -10,9 +10,9 @@ previous.link=screendensities.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
-
+<div id="tb-wrapper">
+<div id="tb">
+
<h2>Содержание урока</h2>
<ol>
@@ -27,17 +27,17 @@ previous.link=screendensities.html
<ul>
<li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Поддержка планшетных ПК и мобильных телефонов</a></li>
</ul>
-
+
<h2>Упражнение</h2>
-
+
<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
<p>Ðлгоритм пользовательÑкого интерфейÑа завиÑит от макета, который в данный момент отображаетÑÑ. Ðапример, еÑли приложение работает в двухпанельном режиме, то при нажатии на Ñлемент в левой панели Ñодержание отобразитÑÑ Ð² правой. Ð’ однопанельном режиме Ñодержание откроетÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð¾ (в другой активноÑти).</p>
@@ -56,7 +56,7 @@ public class NewsReaderActivity extends FragmentActivity {
setContentView(R.layout.main_layout);
View articleView = findViewById(R.id.article);
- mIsDualPane = articleView != null &amp;&amp;
+ mIsDualPane = articleView != null &amp;&amp;
articleView.getVisibility() == View.VISIBLE;
}
}
@@ -116,7 +116,7 @@ public void onCreate(Bundle savedInstanceState) {
else {
/* use list navigation (spinner) */
actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
- SpinnerAdapter adap = new ArrayAdapter<String>(this,
+ SpinnerAdapter adap = new ArrayAdapter<String>(this,
R.layout.headline_item, CATEGORIES);
actionBar.setListNavigationCallbacks(adap, handler);
}
@@ -168,7 +168,7 @@ public class HeadlinesFragment extends ListFragment {
public class HeadlinesFragment extends ListFragment {
...
&#64;Override
- public void onItemClick(AdapterView&lt;?&gt; parent,
+ public void onItemClick(AdapterView&lt;?&gt; parent,
View view, int position, long id) {
if (null != mHeadlineSelectedListener) {
mHeadlineSelectedListener.onHeadlineSelected(position);
diff --git a/docs/html-intl/intl/ru/training/multiscreen/index.jd b/docs/html-intl/intl/ru/training/multiscreen/index.jd
index 84b9b8b5bdf0..66cf968edf9b 100644
--- a/docs/html-intl/intl/ru/training/multiscreen/index.jd
+++ b/docs/html-intl/intl/ru/training/multiscreen/index.jd
@@ -7,10 +7,10 @@ next.link=screensizes.html
@jd:body
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>ТребованиÑ</h2>
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>ТребованиÑ</h2>
<ul>
<li>Android 1.6 или более поздней верÑии (Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка учебного Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ Ð²ÐµÑ€ÑÐ¸Ñ 2.1 или более позднÑÑ)</li>
@@ -27,17 +27,17 @@ href="{@docRoot}tools/support-library/index.html">вÑпомогательной
<ul>
<li><a href="{@docRoot}guide/practices/screens_support.html">Поддержка неÑкольких Ñкранов</a></li>
</ul>
-
-<h2>Упражнение</h2>
-
-<div class="download-box">
+
+<h2>Упражнение</h2>
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-</div>
-</div>
-
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
+
<p>Ðа платформе Android работают уÑтройÑтва Ñ Ñамыми разными размерами Ñкрана: от телефонов до телевизоров. Чтобы Ñ Ð²Ð°ÑˆÐ¸Ð¼ приложением могли работать как можно больше пользователей, оно должно корректно отображатьÑÑ Ð½Ð° вÑех Ñтих уÑтройÑтвах.</p>
<p>Однако ÑовмеÑтимоÑть Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ типами уÑтройÑтв&nbsp;– Ñто еще не вÑе. От размера Ñкрана завиÑит, какие возможноÑти будет иметь пользователь при работе Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼. Чтобы пользователи дейÑтвительно оÑталиÑÑŒ довольны вашим приложением, оно должно не проÑто <em>поддерживать</em> разные Ñкраны, но и быть <em>оптимизировано</em> Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ из них.</p>
@@ -48,17 +48,17 @@ href="{@docRoot}tools/support-library/index.html">вÑпомогательной
<p class="note"><strong>Примечание</strong>. Ð’ Ñтом модуле и в учебном приложении иÑпользуетÑÑ <a
href="{@docRoot}tools/support-library/index.html">вÑÐ¿Ð¾Ð¼Ð¾Ð³Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°</a>, позволÑÑŽÑ‰Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ API <PH>{@link android.app.Fragment}</PH> в верÑиÑÑ… до Android 3.0. Чтобы иметь возможноÑть иÑпользовать вÑе необходимые API, загрузите библиотеку и добавьте ее в Ñвое приложение.</p>
-
-
-<h2>Уроки</h2>
-
-<dl>
- <dt><b><a href="screensizes.html">Поддержка разных размеров Ñкрана</a></b></dt>
- <dd>Ð’ Ñтом уроке раÑÑказываетÑÑ, как Ñоздать макет, который адаптируетÑÑ Ðº разным размерам Ñкрана, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¼Ð°Ñштабируемые предÑтавлениÑ, объекты <PH>{@link android.widget.RelativeLayout}</PH>, квалификаторы размера и ориентации, фильтры пÑевдонимов и раÑтровые изображений формата nine-patch.</dd>
-
- <dt><b><a href="screendensities.html">Поддержка разных разрешений Ñкрана</a></b></dt>
- <dd>Ð’ Ñтом уроке раÑÑказываетÑÑ, как работать Ñ Ñкранами разного Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ не завиÑÑщих от Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¿Ð¸ÐºÑелей и как подготовить раÑтровые Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ из них.</dd>
-
- <dt><b><a href="adaptui.html">Ð ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð°Ð´Ð°Ð¿Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… алгоритмов работы пользовательÑкого интерфейÑа</a></b></dt>
- <dd>Ð’ Ñтом уроке раÑÑказываетÑÑ, как реализовать алгоритм работы интерфейÑа, адаптирующийÑÑ Ðº размеру и разрешению Ñкрана, то еÑть ÑпоÑобный определÑть активный макет во Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ, выбирать дальнейшие дейÑÑ‚Ð²Ð¸Ñ Ð½Ð° оÑнове текущего макета и обрабатывать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸ Ñкрана.</dd>
-</dl>
+
+
+<h2>Уроки</h2>
+
+<dl>
+ <dt><b><a href="screensizes.html">Поддержка разных размеров Ñкрана</a></b></dt>
+ <dd>Ð’ Ñтом уроке раÑÑказываетÑÑ, как Ñоздать макет, который адаптируетÑÑ Ðº разным размерам Ñкрана, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¼Ð°Ñштабируемые предÑтавлениÑ, объекты <PH>{@link android.widget.RelativeLayout}</PH>, квалификаторы размера и ориентации, фильтры пÑевдонимов и раÑтровые изображений формата nine-patch.</dd>
+
+ <dt><b><a href="screendensities.html">Поддержка разных разрешений Ñкрана</a></b></dt>
+ <dd>Ð’ Ñтом уроке раÑÑказываетÑÑ, как работать Ñ Ñкранами разного Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ не завиÑÑщих от Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¿Ð¸ÐºÑелей и как подготовить раÑтровые Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ из них.</dd>
+
+ <dt><b><a href="adaptui.html">Ð ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð°Ð´Ð°Ð¿Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… алгоритмов работы пользовательÑкого интерфейÑа</a></b></dt>
+ <dd>Ð’ Ñтом уроке раÑÑказываетÑÑ, как реализовать алгоритм работы интерфейÑа, адаптирующийÑÑ Ðº размеру и разрешению Ñкрана, то еÑть ÑпоÑобный определÑть активный макет во Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ, выбирать дальнейшие дейÑÑ‚Ð²Ð¸Ñ Ð½Ð° оÑнове текущего макета и обрабатывать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸ Ñкрана.</dd>
+</dl>
diff --git a/docs/html-intl/intl/ru/training/multiscreen/screendensities.jd b/docs/html-intl/intl/ru/training/multiscreen/screendensities.jd
index cfd472462824..ffcdbbca2327 100644
--- a/docs/html-intl/intl/ru/training/multiscreen/screendensities.jd
+++ b/docs/html-intl/intl/ru/training/multiscreen/screendensities.jd
@@ -12,8 +12,8 @@ next.link=adaptui.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
+<div id="tb-wrapper">
+<div id="tb">
<h2>Содержание урока</h2>
<ol>
@@ -29,15 +29,15 @@ next.link=adaptui.html
</ul>
<h2>Упражнение</h2>
-
-<div class="download-box">
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
<p>Ð’ Ñтом уроке раÑÑказываетÑÑ, как Ñоздать интерфейÑ, поддерживающий разные Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñкрана, за Ñчет иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ€Ð°Ð·Ð½Ñ‹Ñ… реÑурÑов и не завиÑÑщих от Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ† измерениÑ.</p>
@@ -48,8 +48,8 @@ next.link=adaptui.html
<p>Ðапример, еÑли вы задаете раÑÑтоÑние между Ð´Ð²ÑƒÐ¼Ñ Ð¿Ñ€ÐµÐ´ÑтавлениÑми, рекомендуетÑÑ Ð¸Ñпользовать <code>dp</code>, а не <code>px</code>:</p>
<pre>
-&lt;Button android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+&lt;Button android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:text="&#64;string/clickme"
android:layout_marginTop="20dp" /&gt;
</pre>
@@ -57,8 +57,8 @@ next.link=adaptui.html
<p>Ð”Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° шрифта вÑегда иÑпользуйте <code>sp</code>:</p>
<pre>
-&lt;TextView android:layout_width="match_parent"
- android:layout_height="wrap_content"
+&lt;TextView android:layout_width="match_parent"
+ android:layout_height="wrap_content"
android:textSize="20sp" /&gt;
</pre>
diff --git a/docs/html-intl/intl/ru/training/multiscreen/screensizes.jd b/docs/html-intl/intl/ru/training/multiscreen/screensizes.jd
index 9684d77486dd..57496d9b18bf 100644
--- a/docs/html-intl/intl/ru/training/multiscreen/screensizes.jd
+++ b/docs/html-intl/intl/ru/training/multiscreen/screensizes.jd
@@ -10,8 +10,8 @@ next.link=screendensities.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
+<div id="tb-wrapper">
+<div id="tb">
<h2>Содержание урока</h2>
<ol>
@@ -30,26 +30,26 @@ next.link=screendensities.html
<li><a href="{@docRoot}guide/practices/screens_support.html">Поддержка неÑкольких Ñкранов</a></li>
</ul>
-<h2>Упражнение</h2>
-
-<div class="download-box">
+<h2>Упражнение</h2>
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
<p>Ð’ Ñтом уроке опиÑаны Ñледующие аÑпекты обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ ÑовмеÑтимоÑти интерфейÑа Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ Ñкранами:</p>
-<ul>
- <li>обеÑпечение ÑпоÑобноÑти макета адаптироватьÑÑ Ðº размеру Ñкрана;</li>
- <li>выбор макета интерфейÑа, отвечающего конфигурации Ñкрана;</li>
+<ul>
+ <li>обеÑпечение ÑпоÑобноÑти макета адаптироватьÑÑ Ðº размеру Ñкрана;</li>
+ <li>выбор макета интерфейÑа, отвечающего конфигурации Ñкрана;</li>
<li>контроль правильноÑти применÑемого макета;</li>
- <li>иÑпользование маÑштабируемых раÑтровых изображений.</li>
-</ul>
+ <li>иÑпользование маÑштабируемых раÑтровых изображений.</li>
+</ul>
-<h2 id="TaskUseWrapMatchPar">ИÑпользование параметров wrap_content и match_parent</h2>
+<h2 id="TaskUseWrapMatchPar">ИÑпользование параметров wrap_content и match_parent</h2>
<p>Чтобы Ñоздать маÑштабируемый макет, ÑпоÑобный адаптироватьÑÑ Ðº разным Ñкранам, иÑпользуйте в качеÑтве значений ширины и выÑоты отдельных компонентов предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ <code>"wrap_content"</code> и <code>"match_parent"</code>. ЕÑли иÑпользуетÑÑ <code>"wrap_content"</code>, Ð´Ð»Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ñ‹ или выÑоты предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÑтанавливаетÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ðµ значение, позволÑющее умеÑтить Ñодержание на Ñкран, а параметр <code>"match_parent"</code> (извеÑтный как <code>"fill_parent"</code> в API до 8&nbsp;уровнÑ) Ñлужит Ð´Ð»Ñ Ñ€Ð°ÑÑ‚ÑÐ³Ð¸Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð° по размеру родительÑкого предÑтавлениÑ.</p>
@@ -65,7 +65,7 @@ next.link=screendensities.html
<p class="img-caption"><strong>РиÑунок 1</strong>. Приложение News Reader при вертикальной (Ñлева) и горизонтальной (Ñправа) ориентации.</p>
-<h2 id="TaskUseRelativeLayout">ИÑпользование объекта RelativeLayout</h2>
+<h2 id="TaskUseRelativeLayout">ИÑпользование объекта RelativeLayout</h2>
<p>С помощью вложенных ÑкземплÑров объекта <PH>{@link android.widget.LinearLayout}</PH> и параметров <code>"wrap_content"</code> и <code>"match_parent"</code> можно Ñоздавать доÑтаточно Ñложные макеты. Однако <PH>{@link android.widget.LinearLayout}</PH> не дает возможноÑти точно управлÑть взаимным раÑположением дочерних предÑтавлений: в <PH>{@link android.widget.LinearLayout}</PH> они проÑто помещаютÑÑ Ð² Ñ€Ñд друг за другом. ЕÑли необходимо раÑположить дочерние предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ‹Ð¼ образом, иÑпользуйте объект <PH>{@link android.widget.RelativeLayout}</PH>, позволÑющий задать отноÑительные позиции компонентов. Ðапример, одно дочернее предÑтавление можно выровнÑть по левому краю Ñкрана, а другое&nbsp;– по правому.</p>
@@ -115,8 +115,8 @@ next.link=screendensities.html
<p>Обратите внимание: неÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° изменение размера компонентов их взаимное раÑположение оÑтаетÑÑ Ð¿Ñ€ÐµÐ¶Ð½Ð¸Ð¼, так как оно задано объектом <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH>.</p>
-
-<h2 id="TaskUseSizeQuali">ИÑпользование квалификаторов размера</h2>
+
+<h2 id="TaskUseSizeQuali">ИÑпользование квалификаторов размера</h2>
<p>МаÑштабируемые или отноÑительные макеты, один из которых продемонÑтрирован выше, имеют Ñвои ограничениÑ. Ð¥Ð¾Ñ‚Ñ Ð¾Ð½Ð¸ позволÑÑŽÑ‚ Ñоздать интерфейÑ, ÑпоÑобный адаптироватьÑÑ Ðº разным Ñкранам за Ñчет раÑÑ‚ÑÐ³Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾ÑтранÑтва внутри и вокруг компонентов, пользователю может оказатьÑÑ Ð½Ðµ Ñлишком удобно работать Ñ Ñ‚Ð°ÐºÐ¸Ð¼ интерфейÑом. ПоÑтому в приложении должен иÑпользоватьÑÑ Ð½Ðµ один маÑштабируемый макет, а неÑколько альтернативных вариантов Ð´Ð»Ñ Ñ€Ð°Ð·Ð½Ñ‹Ñ… конфигураций Ñкрана. Их можно Ñоздать Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">квалификаторов конфигураций</a>, которые позволÑÑŽÑ‚ оперативно выбирать реÑурÑÑ‹, отвечающие текущим параметрам Ñкрана (например, разные варианты макетов Ð´Ð»Ñ Ñкранов разных размеров).</p>
@@ -158,7 +158,7 @@ next.link=screendensities.html
<p>Следует учеÑть, что на Android-уÑтройÑтвах до верÑии 3.2 квалификатор <code>sw600dp</code> не будет работать, поÑтому Ð´Ð»Ñ Ð½Ð¸Ñ… по-прежнему нужно иÑпользовать <code>large</code>. Таким образом, вам потребуетÑÑ ÐµÑ‰Ðµ один файл Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ <code>res/layout-large/main.xml</code>, идентичный файлу <code>res/layout-sw600dp/main.xml</code>. Ð’ Ñледующем разделе вы познакомитеÑÑŒ Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð¼, который позволÑет избежать Ð´ÑƒÐ±Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð°ÐºÐ¸Ñ… файлов макета.</p>
-<h2 id="TaskUseAliasFilters">ИÑпользование пÑевдонимов макетов</h2>
+<h2 id="TaskUseAliasFilters">ИÑпользование пÑевдонимов макетов</h2>
<p>Квалификатор Smallest-width работает только на уÑтройÑтвах Android 3.2 или более поздних верÑий. Ð”Ð»Ñ ÑовмеÑтимоÑти Ñ Ð±Ð¾Ð»ÐµÐµ ранними уÑтройÑтвами по-прежнему Ñледует иÑпользовать абÑтрактные размеры (small, normal, large и xlarge). Ðапример, чтобы Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°Ð»ÑÑ Ð² однопанельном режиме на телефонах и в многопанельном на планшетных ПК Ñ 7-дюймовым Ñкраном, телевизорах и других крупных уÑтройÑтвах, подготовьте Ñледующие файлы:</p>
@@ -202,7 +202,7 @@ next.link=screendensities.html
<PH>{@code large}</PH>, а Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ новых&nbsp;– <code>sw600dp</code>).</p>
-<h2 id="TaskUseOriQuali">ИÑпользование квалификаторов ориентации</h2>
+<h2 id="TaskUseOriQuali">ИÑпользование квалификаторов ориентации</h2>
<p>Ð¥Ð¾Ñ‚Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ макеты одинаково хорошо ÑмотрÑÑ‚ÑÑ Ð² вертикальной и горизонтальной ориентациÑÑ…, в большинÑтве Ñлучаев Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð²Ñе же приходитÑÑ Ð°Ð´Ð°Ð¿Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ. Ðиже показано, как изменÑетÑÑ Ð¼Ð°ÐºÐµÑ‚ в приложении News Reader в завиÑимоÑти от размера и ориентации Ñкрана.</p>
diff --git a/docs/html-intl/intl/vi/design/patterns/navigation.jd b/docs/html-intl/intl/vi/design/patterns/navigation.jd
index 98490db0e5b6..a3d6003dd416 100644
--- a/docs/html-intl/intl/vi/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/vi/design/patterns/navigation.jd
@@ -168,7 +168,7 @@ cần chụp ảnh có thể kích hoạt ứng dụng Camera, ứng dụng này
thông tin và tất cả hành động liên kết mà ngưá»i dùng có thể thá»±c hiện. Ứng dụng cá»§a bạn là tập hợp
cá»§a nhiá»u hoạt động, bao gồm cả hoạt động do bạn tạo và hoạt động mà bạn sá»­ dụng lại từ các ứng dụng khác.</p>
-<p><strong>Tác vụ</strong> là trình tá»± các hoạt động mà má»™t ngưá»i dùng tuân theo để hoàn thành má»™t mục tiêu.
+<p><strong>Tác vụ</strong> là trình tá»± các hoạt động mà má»™t ngưá»i dùng tuân theo để hoàn thành má»™t mục tiêu.
Tác vụ đơn có thể sá»­ dụng các hoạt động từ chỉ má»™t ứng dụng, hoặc có thể dá»±a trên hoạt động từ nhiá»u
ứng dụng khác nhau.</p>
diff --git a/docs/html-intl/intl/vi/guide/components/activities.jd b/docs/html-intl/intl/vi/guide/components/activities.jd
index 83e7669a7f76..304b73c87995 100644
--- a/docs/html-intl/intl/vi/guide/components/activities.jd
+++ b/docs/html-intl/intl/vi/guide/components/activities.jd
@@ -57,7 +57,7 @@ hoạt động có thể bắt đầu một hoạt động khác để thực hi
mới bắt đầu, hoạt động trước đó sẽ bị dừng lại, nhưng hệ thống vẫn giữ nguyên hoạt động
trong một ngăn xếp ("back stack"). Khi một hoạt động mới bắt đầu, nó được đẩy lên ngăn xếp và
chiếm lấy tiêu Ä‘iểm cá»§a ngưá»i dùng. Ngăn xếp sẽ tuân theo cÆ¡ chế xếp chồng cÆ¡ bản "vào cuối, ra đầu",
-vì thế, khi ngưá»i dùng kết thúc hoạt động hiện tại và nhấn nút <em>Quay lại</em>, nó
+vì thế, khi ngưá»i dùng kết thúc hoạt động hiện tại và nhấn nút <em>Quay lại</em>, nó
sẽ được đẩy ra khá»i ngăn xếp (và bị há»§y) và hoạt động trước đó sẽ tiếp tục. (Ngăn xếp được
đỠcập kỹ hơn trong tài liệu <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tác vụ
và Ngăn Xếp</a>.)</p>
@@ -139,7 +139,7 @@ setContentView()}.</p>
<h3 id="Declaring">Khai báo hoạt động trong bản kê khai</h3>
<p>Bạn phải khai báo hoạt động của mình trong tệp bản kê khai để hoạt động
-có thể truy cập được vào hệ thống. Äể khai báo hoạt động cá»§a mình, hãy mở tệp bản kê khai cá»§a bạn và thêm má»™t phần tá»­ <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+có thể truy cập được vào hệ thống. Äể khai báo hoạt động cá»§a mình, hãy mở tệp bản kê khai cá»§a bạn và thêm má»™t phần tá»­ <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
làm con của phần tử <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
. Ví dụ:</p>
@@ -161,7 +161,7 @@ bạn phát hành ứng dụng của mình, bạn không nên thay đổi tên n
má»™t số tính năng, chẳng hạn như các lối tắt cá»§a ứng dụng (hãy Ä‘á»c bài đăng trên blog, <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Những Äiá»u
Không Thay Äổi ÄÆ°á»£c</a>).</p>
-<p>Xem tài liệu tham khảo phần tử <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+<p>Xem tài liệu tham khảo phần tử <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
để biết thêm thông tin vỠviệc khai báo hoạt động của bạn trong bản kê khai.</p>
@@ -200,7 +200,7 @@ tự mình bắt đầu chúng bằng cách sử dụng các ý định rõ ràn
<p>Tuy nhiên, nếu bạn muốn hoạt động của mình phản hồi lại những ý định ngầm mà được chuyển giao từ
các ứng dụng khác (và chính bạn), thì bạn phải định nghÄ©a các bá»™ lá»c ý định bổ sung cho hoạt động
của mình. Với mỗi loại ý định mà bạn muốn phản hồi, bạn phải nêu một <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
-&lt;intent-filter&gt;}</a> bao gồm một phần tử
+&lt;intent-filter&gt;}</a> bao gồm một phần tử
<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
&lt;action&gt;}</a> và, không bắt buộc, một phần tử <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
&lt;category&gt;}</a> và/hoặc một phần tử <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
@@ -324,7 +324,7 @@ finish()} của nó. Bạn cũng có thể tắt một hoạt động riêng mà
bằng cách sá»­ dụng những phương pháp này. Như đỠcập trong phần sau vá» vòng Ä‘á»i cá»§a hoạt động, hệ thống
Android quản lý tuổi thỠcủa một hoạt động cho bạn, vì vậy bạn không cần kết thúc các hoạt động
cá»§a chính mình. Việc gá»i những phương pháp này có thể ảnh hưởng tiêu cá»±c tá»›i trải nghiệm ngưá»i dùng
-kỳ vá»ng và chỉ nên được sá»­ dụng khi bạn tuyệt đối không muốn ngưá»i dùng quay lại thá»±c thể này cá»§a
+kỳ vá»ng và chỉ nên được sá»­ dụng khi bạn tuyệt đối không muốn ngưá»i dùng quay lại thá»±c thể này cá»§a
hoạt động.</p>
@@ -350,7 +350,7 @@ che toàn bá»™ màn hình. Trạng thái tạm dừng hoàn toàn Ä‘ang hoạt Ä
trình quản lý cá»­a sổ), nhưng có thể bị hệ thống tắt bá» trong trưá»ng hợp bá»™ nhá»› cá»±c kỳ thấp.</dd>
<dt><i>Dừng</i></dt>
- <dd>Hoạt động bị che khuất hoàn toàn bởi một hoạt động khác (hoạt động hiện đang
+ <dd>Hoạt động bị che khuất hoàn toàn bởi một hoạt động khác (hoạt động hiện đang
“dưới ná»n"). Hoạt động dừng cÅ©ng vẫn Ä‘ang hoạt động ({@link android.app.Activity}
đối tượng được giữ lại trong bộ nhớ, nó duy trì tất cả thông tin vỠtrạng thái và thành viên, nhưng <em>không</em>
gắn vá»›i trình quản lý cá»­a sổ). Tuy nhiên, hoạt động không còn hiển thị vá»›i ngưá»i dùng nữa và hệ thống
@@ -608,7 +608,7 @@ android.app.Activity#onSaveInstanceState onSaveInstanceState()}.</p>
<p>Hệ thống gá»i {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
trước khi khiến hoạt động dễ bị hủy. Hệ thống chuyển cho phương pháp này
-một {@link android.os.Bundle} trong đó bạn có thể lưu
+một {@link android.os.Bundle} trong đó bạn có thể lưu
thông tin trạng thái vỠhoạt động như cặp tên giá trị, bằng cách sử dụng các phương pháp như {@link
android.os.Bundle#putString putString()} và {@link
android.os.Bundle#putInt putInt()}. Sau đó, nếu hệ thống tắt bỠtiến trình ứng dụng của bạn
diff --git a/docs/html-intl/intl/vi/guide/components/bound-services.jd b/docs/html-intl/intl/vi/guide/components/bound-services.jd
index 7a2ddbaf6321..9d19e05513ee 100644
--- a/docs/html-intl/intl/vi/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/vi/guide/components/bound-services.jd
@@ -357,7 +357,7 @@ handleMessage()}.</li>
<p>Theo cách này, không có "phương pháp" nào để máy khách gá»i đối vá»›i dịch vụ. Thay vào đó, máy khách
-gửi “thông báo†(đối tượng {@link android.os.Message}) mà dịch vụ nhận được trong
+gửi “thông báo†(đối tượng {@link android.os.Message}) mà dịch vụ nhận được trong
{@link android.os.Handler} của mình.</p>
<p>Sau đây là một dịch vụ ví dụ đơn giản sử dụng một giao diện {@link android.os.Messenger}:</p>
@@ -539,7 +539,7 @@ kỹ hơn ở bên dưới.)</p>
</ol>
<p>Ví dụ, đoạn mã HTML sau sẽ kết nối máy khách với dịch vụ được tạo bên trên bằng cách
-<a href="#Binder">mở rộng lớp Trình gắn kết</a>, vì vậy tất cả những việc mà nó phải làm là đổi kiểu
+<a href="#Binder">mở rộng lớp Trình gắn kết</a>, vì vậy tất cả những việc mà nó phải làm là đổi kiểu
{@link android.os.IBinder} được trả vỠthành lớp {@code LocalService} và yêu cầu thực thể {@code
LocalService}:</p>
diff --git a/docs/html-intl/intl/vi/guide/components/fragments.jd b/docs/html-intl/intl/vi/guide/components/fragments.jd
index 95d9c76337fc..7b6346c4d6fd 100644
--- a/docs/html-intl/intl/vi/guide/components/fragments.jd
+++ b/docs/html-intl/intl/vi/guide/components/fragments.jd
@@ -36,7 +36,7 @@ parent.link=activities.html
<li>{@link android.app.FragmentManager}</li>
<li>{@link android.app.FragmentTransaction}</li>
</ol>
-
+
<h2>Xem thêm</h2>
<ol>
<li><a href="{@docRoot}training/basics/fragments/index.html">Xây dá»±ng má»™t UI Äá»™ng bằng các Phân Ä‘oạn</a></li>
@@ -148,7 +148,7 @@ của bạn.</p>
khởi tạo các thành phần thiết yếu của phân đoạn mà bạn muốn giữ lại khi phân đoạn
bị tạm dừng hoặc dừng hẳn, sau đó tiếp tục.</dd>
<dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
- <dd>Hệ thống sẽ gá»i phương pháp này khi đến lúc phân Ä‘oạn vẽ giao diện ngưá»i dùng cá»§a nó
+ <dd>Hệ thống sẽ gá»i phương pháp này khi đến lúc phân Ä‘oạn vẽ giao diện ngưá»i dùng cá»§a nó
lần đầu tiên. Äể vẽ má»™t UI cho phân Ä‘oạn cá»§a mình, bạn phải trả vá» má»™t {@link android.view.View} từ phương pháp
này, đây là gốc của bố trí phân đoạn của bạn. Bạn có thể trả vỠgiá trị rỗng nếu phân đoạn không
cung cấp UI.</dd>
@@ -303,7 +303,7 @@ phân đoạn:</p>
<ul>
<li>Cung cấp thuộc tính {@code android:id} với một ID duy nhất.</li>
<li>Cung cấp thuộc tính {@code android:tag} với một xâu duy nhất.</li>
- <li>Nếu bạn không cung cấp được thuộc tính nào, hệ thống sẽ sử dụng ID của dạng xem
+ <li>Nếu bạn không cung cấp được thuộc tính nào, hệ thống sẽ sử dụng ID của dạng xem
của bộ chứa.</li>
</ul>
</div>
@@ -362,7 +362,7 @@ findFragmentByTag()}.</p>
<p>Äể biết ví dụ vá» hoạt động sá»­ dụng phân Ä‘oạn như má»™t trình thá»±c hiện ná»n, không có UI, hãy xem mẫu {@code
FragmentRetainInstance.java}, mẫu này có trong các mẫu SDK (có sẵn thông qua
-Trình quản lý SDK Android) và nằm trên hệ thống của bạn như là
+Trình quản lý SDK Android) và nằm trên hệ thống của bạn như là
<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>.</p>
@@ -378,7 +378,7 @@ có nó, hãy gá»i {@link android.app.Activity#getFragmentManager()} từ hoạ
<li>Nhận các phân đoạn tồn tại trong hoạt động, bằng {@link
android.app.FragmentManager#findFragmentById findFragmentById()} (đối với các phân đoạn cung cấp UI trong
bố trí hoạt động) hoặc {@link android.app.FragmentManager#findFragmentByTag
-findFragmentByTag()} (đối với các phân đoạn có hoặc không cung cấp UI).</li>
+findFragmentByTag()} (đối với các phân đoạn có hoặc không cung cấp UI).</li>
<li>Lấy phân Ä‘oạn ra khá»i ngăn xếp, bằng {@link
android.app.FragmentManager#popBackStack()} (mô phá»ng má»™t câu lệnh <em>Quay lại</em> cá»§a ngưá»i dùng).</li>
<li>Äăng ký má»™t đối tượng theo dõi cho những thay đổi đối vá»›i ngăn xếp, bằng {@link
@@ -562,9 +562,9 @@ public static class FragmentA extends ListFragment {
}
</pre>
-<p>Nếu hoạt động chưa triển khai giao diện, khi đó phân đoạn sẽ đưa ra lỗi
+<p>Nếu hoạt động chưa triển khai giao diện, khi đó phân đoạn sẽ đưa ra lỗi
{@link java.lang.ClassCastException}.
-Nếu thành công, thành viên {@code mListener} giữ một tham chiếu tới triển khai
+Nếu thành công, thành viên {@code mListener} giữ một tham chiếu tới triển khai
{@code OnArticleSelectedListener}cá»§a hoạt động, sao cho phân Ä‘oạn A có thể chia sẻ sá»± kiện vá»›i hoạt động bằng cách gá»i các phương pháp
được định nghĩa bởi giao diện {@code OnArticleSelectedListener}. Ví dụ, nếu phân đoạn A là một
phần mở rộng của {@link android.app.ListFragment}, mỗi lần
@@ -785,7 +785,7 @@ android.widget.FrameLayout}), hoặc bắt đầu má»™t hoạt động má»›i (tá
<p>Phân Ä‘oạn thứ hai, {@code DetailsFragment} sẽ hiển thị tóm tắt vở kịch cho mục được chá»n từ
danh sách trong {@code TitlesFragment}:</p>
-
+
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
<p>Nhá»› lại ở lá»›p {@code TitlesFragment} rằng, nếu ngưá»i dùng nhấp vào má»™t mục danh sách và bố trí
@@ -798,7 +798,7 @@ tóm tắt vở kịch được chá»n khi màn hình ở hướng đứng:</p>
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
details_activity}
-
+
<p>Lưu ý rằng hoạt động này tự kết thúc nếu cấu hình là khổ ngang, sao cho hoạt động
chính có thể chiếm lấy và hiển thị {@code DetailsFragment} bên cạnh {@code TitlesFragment}.
Äiá»u này có thể xảy ra nếu ngưá»i dùng bắt đầu {@code DetailsActivity} ở dạng hướng đứng, nhưng
diff --git a/docs/html-intl/intl/vi/guide/components/fundamentals.jd b/docs/html-intl/intl/vi/guide/components/fundamentals.jd
index 4b70140723d9..725c68dacb68 100644
--- a/docs/html-intl/intl/vi/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/vi/guide/components/fundamentals.jd
@@ -295,16 +295,16 @@ android.app.Activity} và các thuộc tính {@code android:label} quy định m
<p>Bạn phải khai báo tất cả thành phần của ứng dụng như sau:</p>
<ul>
<li>Các phần tử <code><a
-href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
cho hoạt động</li>
<li>Các phần tử <code><a
href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> cho
dịch vụ</li>
<li>Các phần tử <code><a
-href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
+href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
cho hàm nhận quảng bá</li>
<li>Các phần tử <code><a
-href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
cho trình cung cấp nội dung</li>
</ul>
@@ -379,7 +379,7 @@ chúng, nhưng các dịch vụ bên ngoài như Google Play thì có Ä‘á»c Ä‘á
cho ngưá»i dùng khi há» tìm kiếm ứng dụng từ thiết bị cá»§a mình.</p>
<p>Ví dụ, nếu ứng dụng của bạn yêu cầu máy ảnh và sử dụng các API được giới thiệu trong Android 2.1 (<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Mức</a> 7),
-bạn cần khai báo những Ä‘iá»u này như yêu cầu trong tệp bản kê khai cá»§a mình như sau:</p>
+bạn cần khai báo những Ä‘iá»u này như yêu cầu trong tệp bản kê khai cá»§a mình như sau:</p>
<pre>
&lt;manifest ... >
diff --git a/docs/html-intl/intl/vi/guide/components/index.jd b/docs/html-intl/intl/vi/guide/components/index.jd
index 966597d999c2..87b51c2849b0 100644
--- a/docs/html-intl/intl/vi/guide/components/index.jd
+++ b/docs/html-intl/intl/vi/guide/components/index.jd
@@ -1,7 +1,7 @@
page.title=Thành phần Ứng dụng
page.landing=true
-page.landing.intro=Khuôn khổ ứng dụng cá»§a Android cho phép bạn tạo lập nhiá»u ứng dụng Ä‘a dạng và sáng tạo bằng cách sá»­ dụng má»™t tập hợp các thành phần có thể tái sá»­ dụng. Phần này giải thích cách bạn có thể xây dá»±ng các thành phần định nghÄ©a các khối dá»±ng cho ứng dụng cá»§a mình và cách kết nối chúng vá»›i nhau bằng cách sá»­ dụng ý định.
-page.metaDescription=Khuôn khổ ứng dụng cá»§a Android cho phép bạn tạo lập nhiá»u ứng dụng Ä‘a dạng và sáng tạo bằng cách sá»­ dụng má»™t tập hợp các thành phần có thể tái sá»­ dụng. Phần này giải thích cách bạn có thể xây dá»±ng các thành phần định nghÄ©a các khối dá»±ng cho ứng dụng cá»§a mình và cách kết nối chúng vá»›i nhau bằng cách sá»­ dụng ý định.
+page.landing.intro=Khuôn khổ ứng dụng cá»§a Android cho phép bạn tạo lập nhiá»u ứng dụng Ä‘a dạng và sáng tạo bằng cách sá»­ dụng má»™t tập hợp các thành phần có thể tái sá»­ dụng. Phần này giải thích cách bạn có thể xây dá»±ng các thành phần định nghÄ©a các khối dá»±ng cho ứng dụng cá»§a mình và cách kết nối chúng vá»›i nhau bằng cách sá»­ dụng ý định.
+page.metaDescription=Khuôn khổ ứng dụng cá»§a Android cho phép bạn tạo lập nhiá»u ứng dụng Ä‘a dạng và sáng tạo bằng cách sá»­ dụng má»™t tập hợp các thành phần có thể tái sá»­ dụng. Phần này giải thích cách bạn có thể xây dá»±ng các thành phần định nghÄ©a các khối dá»±ng cho ứng dụng cá»§a mình và cách kết nối chúng vá»›i nhau bằng cách sá»­ dụng ý định.
page.landing.image=images/develop/app_components.png
page.image=images/develop/app_components.png
@@ -11,7 +11,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>Bài viết Blog</h3>
-
+
<a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
<h4>Sử dụng DialogFragments</h4>
<p>Trong bài viết này, tôi sẽ trình bày cách sá»­ dụng DialogFragments bằng thư viện há»— trợ v4 (cho khả năng tương thích ngược trên các thiết bị chạy phiên bản trước Honeycomb) để hiển thị má»™t há»™p thoại chỉnh sá»­a đơn giản và trả vá» má»™t kết quả cho lệnh gá»i Hoạt động bằng cách sá»­ dụng má»™t giao diện.</p>
@@ -21,7 +21,7 @@ page.image=images/develop/app_components.png
<h4>Phân đoạn cho Tất cả</h4>
<p>Hôm nay, chúng tôi đã phát hành má»™t thư viện tÄ©nh giá»›i thiệu API Phân Ä‘oạn (cÅ©ng như LoaderManager má»›i và má»™t vài lá»›p khác) tương tá»± sao cho các ứng dụng tương thích vá»›i phiên bản Android 1.6 hoặc má»›i hÆ¡n có thể sá»­ dụng phân Ä‘oạn để tạo các giao diện ngưá»i dùng tương thích vá»›i máy tính bảng. </p>
</a>
-
+
<a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
<h4>Tạo đa luồng cho Hiệu năng</h4>
<p>Một cách làm hay trong khi tạo các ứng dụng hồi đáp đó là đảm bảo luồng UI chính của bạn
@@ -32,7 +32,7 @@ xử lý trong một luồng khác.</p>
<div class="col-6">
<h3>Äào tạo</h3>
-
+
<a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
<h4>Quản lý Vòng Ä‘á»i cá»§a Hoạt động</h4>
<p>Lá»›p này giải thích các phương pháp gá»i lại vòng Ä‘á»i quan trá»ng mà má»—i thá»±c thể
diff --git a/docs/html-intl/intl/vi/guide/components/loaders.jd b/docs/html-intl/intl/vi/guide/components/loaders.jd
index b6d277f3d527..0585076cedbc 100644
--- a/docs/html-intl/intl/vi/guide/components/loaders.jd
+++ b/docs/html-intl/intl/vi/guide/components/loaders.jd
@@ -21,14 +21,14 @@ parent.link=activities.html
</ol>
</li>
</ol>
-
+
<h2>Lớp khóa</h2>
<ol>
<li>{@link android.app.LoaderManager}</li>
<li>{@link android.content.Loader}</li>
- </ol>
-
+ </ol>
+
<h2>Các mẫu liên quan</h2>
<ol>
<li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -51,7 +51,7 @@ thay đổi.</li>
tạo lại sau khi cấu hình thay đổi. Vì thế, chúng không cần truy vấn lại dữ liệu
của mình.</li>
</ul>
-
+
<h2 id="summary">Tổng quan vỠAPI Trình tải</h2>
<p>Có nhiá»u lá»›p và giao diện có thể có liên quan trong khi sá»­ dụng
@@ -129,10 +129,10 @@ của {@link android.content.Loader} hoặc {@link android.content.AsyncTaskLoad
dữ liệu từ một số nguồn khác.</li>
<li>Một triển khai cho {@link android.app.LoaderManager.LoaderCallbacks}.
Äây là nÆ¡i bạn tạo trình tải má»›i và quản lý các tham chiếu cá»§a mình tá»›i các
-trình tải hiện có.</li>
+trình tải hiện có.</li>
<li>Một cách để hiển thị dữ liệu của trình tải, chẳng hạn như {@link
android.widget.SimpleCursorAdapter}.</li>
- <li>Một nguồn dữ liệu, chẳng hạn như một {@link android.content.ContentProvider}, khi sử dụng một
+ <li>Một nguồn dữ liệu, chẳng hạn như một {@link android.content.ContentProvider}, khi sử dụng một
{@link android.content.CursorLoader}.</li>
</ul>
<h3 id="starting">Khởi động một Trình tải</h3>
@@ -140,7 +140,7 @@ android.widget.SimpleCursorAdapter}.</li>
<p>{@link android.app.LoaderManager} quản lý má»™t hoặc nhiá»u thá»±c thể {@link
android.content.Loader} trong một {@link android.app.Activity} hoặc
{@link android.app.Fragment}. Chỉ có một {@link
-android.app.LoaderManager} trên mỗi hoạt động hoặc phân đoạn.</p>
+android.app.LoaderManager} trên mỗi hoạt động hoặc phân đoạn.</p>
<p>Thông thưá»ng, bạn
sẽ khởi tạo một {@link android.content.Loader} bên trong phương pháp {@link
@@ -157,13 +157,13 @@ tham số sau:</p>
<ul>
<li>Một ID duy nhất xác định trình tải. Trong ví dụ này, ID là 0.</li>
<li>Các tham đối tùy chá»n để cung cấp cho trình tải khi
-xây dựng (<code>null</code> trong ví dụ này).</li>
+xây dựng (<code>null</code> trong ví dụ này).</li>
-<li>Triển khai {@link android.app.LoaderManager.LoaderCallbacks}, phương pháp mà
+<li>Triển khai {@link android.app.LoaderManager.LoaderCallbacks}, phương pháp mà
{@link android.app.LoaderManager} gá»i để báo cáo các sá»± kiện trình tải. Trong ví dụ này
, lớp cục bộ triển khai giao diện {@link
android.app.LoaderManager.LoaderCallbacks}, vì thế nó chuyển một tham chiếu
-tới chính nó, {@code this}.</li>
+tới chính nó, {@code this}.</li>
</ul>
<p>Lệnh gá»i {@link android.app.LoaderManager#initLoader initLoader()} đảm bảo rằng má»™t trình tải
được khởi tạo và hiện hoạt. Nó có hai kết quả có thể xảy ra:</p>
@@ -193,7 +193,7 @@ vòng Ä‘á»i cá»§a trình tải. {@link android.app.LoaderManager}
khởi động và dừng tải khi cần và duy trì trạng thái của trình tải
và nội dung đi kèm của nó. Như hàm ý, bạn hiếm khi tương tác trực tiếp với các trình tải
(thông qua một ví dụ vỠviệc sử dụng các phương pháp trình tải để tinh chỉnh hành vi
-của một trình tải, hãy xem ví dụ <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>).
+của một trình tải, hãy xem ví dụ <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>).
Bạn thưá»ng sá»­ dụng nhất là các phương pháp {@link
android.app.LoaderManager.LoaderCallbacks} để can thiệp vào tiến trình tải
khi diá»…n ra má»™t sá»± kiện đặc biệt. Äể thảo luận thêm vá» chá»§ đỠnày, hãy xem phần <a href="#callback">Sá»­ dụng Phương pháp Gá»i lại LoaderManager</a>.</p>
@@ -245,7 +245,7 @@ Khởi tạo và trả vỠmột {@link android.content.Loader} mới cho ID đ
— ÄÆ°á»£c gá»i khi má»™t trình tải được tạo trước đó đã hoàn tất việc tải.
</li></ul>
<ul>
- <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
+ <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
— ÄÆ°á»£c gá»i khi má»™t trình tải được tạo trước đó Ä‘ang được đặt lại, vì thế mà khiến dữ liệu
của nó không sẵn có.
</li>
@@ -315,7 +315,7 @@ public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
<p>Phương pháp này được gá»i khi má»™t trình tải được tạo trước đó đã hoàn thành việc tải cá»§a mình.
Phương pháp này được bảo đảm sẽ được gá»i trước khi giải phóng dữ liệu cuối cùng
được cung cấp cho trình tải này. Tại Ä‘iểm này, bạn nên loại bá» má»i trưá»ng hợp sá»­ dụng
-dữ liệu cũ (do nó sẽ được giải phóng sớm), nhưng không nên
+dữ liệu cũ (do nó sẽ được giải phóng sớm), nhưng không nên
tự mình giải phóng dữ liệu do trình tải sở hữu dữ liệu và sẽ đảm nhận việc này.</p>
@@ -340,11 +340,11 @@ public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
<h4 id="onLoaderReset">onLoaderReset</h4>
-<p>Phương pháp này được gá»i khi má»™t trình tải được tạo trước đó Ä‘ang được đặt lại, vì thế mà khiến
+<p>Phương pháp này được gá»i khi má»™t trình tải được tạo trước đó Ä‘ang được đặt lại, vì thế mà khiến
dữ liệu cá»§a nó không sẵn có. Lệnh gá»i lại này cho phép bạn tìm hiểu xem khi nào thì dữ liệu
sẽ được giải phóng để bạn có thể loại bỠtham chiếu của mình tới nó.  </p>
-<p>Sá»± triển khai này gá»i ra
-{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
+<p>Sá»± triển khai này gá»i ra
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
với một giá trị <code>null</code>:</p>
<pre>
@@ -366,7 +366,7 @@ public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
android.app.Fragment} có chức năng hiển thị một {@link android.widget.ListView} chứa
kết quả của một truy vấn đối với trình cung cấp nội dung danh bạ. Nó sử dụng một {@link
android.content.CursorLoader} để quản lý truy vấn trên trình cung cấp.</p>
-
+
<p>Äể má»™t ứng dụng truy cập danh bạ cá»§a má»™t ngưá»i dùng, như minh há»a trong ví dụ này, bản kê khai
cá»§a nó phải bao gồm quyá»n
{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}.</p>
diff --git a/docs/html-intl/intl/vi/guide/components/processes-and-threads.jd b/docs/html-intl/intl/vi/guide/components/processes-and-threads.jd
index 390ca156a1f0..b9933edc07fe 100644
--- a/docs/html-intl/intl/vi/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/vi/guide/components/processes-and-threads.jd
@@ -120,7 +120,7 @@ bắt buá»™c để đảm bảo giao diện ngưá»i dùng có phản hồi.</p>
<ul>
<li>Nó lưu trữ má»™t {@link android.app.Activity} mà không nằm trong tiá»n cảnh, nhưng vẫn
-hiển thị vá»›i ngưá»i dùng (phương pháp {@link android.app.Activity#onPause onPause()} cá»§a nó đã được gá»i).
+hiển thị vá»›i ngưá»i dùng (phương pháp {@link android.app.Activity#onPause onPause()} cá»§a nó đã được gá»i).
Äiá»u này có thể xảy ra, ví dụ, nếu hoạt động tiá»n cảnh đã bắt đầu má»™t há»™p thoại, nó cho phép
hoạt động trước được nhìn thấy phía sau nó.</li>
@@ -202,7 +202,7 @@ gá»i lại cá»§a hệ thống (chẳng hạn như {@link android.view.View#onKe
hoặc má»™t phương pháp gá»i lại vòng Ä‘á»i) sẽ luôn chạy trong luồng UI cá»§a tiến trình.</p>
<p>Ví dụ, khi ngưá»i dùng chạm vào má»™t nút trên màn hình, luồng UI cá»§a ứng dụng cá»§a bạn sẽ phân phối
-sự kiện chạm tới widget, đến lượt mình, widget sẽ đặt trạng thái được nhấn và đăng một yêu cầu vô hiệu hóa tới
+sự kiện chạm tới widget, đến lượt mình, widget sẽ đặt trạng thái được nhấn và đăng một yêu cầu vô hiệu hóa tới
hàng đợi sá»± kiện. Luồng UI loại yêu cầu khá»i hàng đợi và thông báo vá»›i widget rằng nó nên tá»± vẽ lại
.</p>
@@ -319,7 +319,7 @@ private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
-
+
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
diff --git a/docs/html-intl/intl/vi/guide/components/recents.jd b/docs/html-intl/intl/vi/guide/components/recents.jd
index 0a176145f9ca..271c05d9142e 100644
--- a/docs/html-intl/intl/vi/guide/components/recents.jd
+++ b/docs/html-intl/intl/vi/guide/components/recents.jd
@@ -180,7 +180,7 @@ sau khi ngưá»i dùng mở má»™t tài liệu bằng ứng dụng:</p>
bất kỳ hoạt động nào mà ngưá»i dùng đã gá»i ra cuối cùng.</dd>
</dl>
-<p class="note"><strong>Lưu ý:</strong> Äối vá»›i những giá trị ngoài {@code none} và {@code never}
+<p class="note"><strong>Lưu ý:</strong> Äối vá»›i những giá trị ngoài {@code none} và {@code never}
hoạt động phải được định nghĩa bằng {@code launchMode="standard"}. Nếu thuộc tính này không được quy định thì
{@code documentLaunchMode="none"} sẽ được sử dụng.</p>
@@ -191,7 +191,7 @@ hoàn thành. Bạn có thể khống chế hành vi này bằng lớp {@link an
bằng một cỠ{@link android.content.Intent}, hoặc bằng một thuộc tính<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
&lt;activity&gt;</a></code>.</p>
-<p>Bạn có thể luôn loại trừ hoàn toàn má»™t tác vụ khá»i màn hình tổng quan bằng cách thiết đặt thuá»™c tính
+<p>Bạn có thể luôn loại trừ hoàn toàn má»™t tác vụ khá»i màn hình tổng quan bằng cách thiết đặt thuá»™c tính
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
, <a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">
{@code android:excludeFromRecents}</a> thành {@code true}.</p>
diff --git a/docs/html-intl/intl/vi/guide/components/services.jd b/docs/html-intl/intl/vi/guide/components/services.jd
index 9e3e6c75eccf..fc2a7eaeb77f 100644
--- a/docs/html-intl/intl/vi/guide/components/services.jd
+++ b/docs/html-intl/intl/vi/guide/components/services.jd
@@ -199,7 +199,7 @@ con của phần tử <a href="{@docRoot}guide/topics/manifest/application-eleme
&lt;/manifest&gt;
</pre>
-<p>Xem tham chiếu phần tử <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
+<p>Xem tham chiếu phần tử <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
để biết thêm thông tin vỠviệc khai báo dịch vụ của bạn trong bản kê khai.</p>
<p>Có các thuộc tính khác mà bạn có thể bao gồm trong phần tử <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> để
@@ -605,7 +605,7 @@ tài liệu riêng vỠ<a href="{@docRoot}guide/components/bound-services.html"
<p>Sau khi chạy, má»™t dịch vụ có thể thông báo cho ngưá»i dùng vá» sá»± kiện bằng cách sá»­ dụng <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Thông báo Cá»­a sổ</a> hoặc <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Thông báo Thanh Trạng thái</a>.</p>
-<p>Thông báo cửa sổ là một thông báo xuất hiện một lúc trên bỠmặt của cửa sổ hiện tại
+<p>Thông báo cửa sổ là một thông báo xuất hiện một lúc trên bỠmặt của cửa sổ hiện tại
rồi biến mất, trong khi thông báo thanh trạng thái cung cấp một biểu tượng trong thanh trạng thái cùng một
thông báo, ngưá»i dùng có thể chá»n nó để thá»±c hiện má»™t hành động (chẳng hạn như bắt đầu má»™t hoạt động).</p>
diff --git a/docs/html-intl/intl/vi/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/vi/guide/components/tasks-and-back-stack.jd
index 85afffff5ba5..76df1dd2e075 100644
--- a/docs/html-intl/intl/vi/guide/components/tasks-and-back-stack.jd
+++ b/docs/html-intl/intl/vi/guide/components/tasks-and-back-stack.jd
@@ -190,7 +190,7 @@ trạng thái của các hoạt động của mình bằng cách sử dụng cá
<p>Khi hệ thống dừng một trong các hoạt động của bạn (chẳng hạn như khi một hoạt động mới bắt đầu hoặc tác vụ
di chuyển vá» ná»n), hệ thống có thể hoàn toàn há»§y hoạt động đó nếu nó cần khôi phục
-bộ nhá»› hệ thống. Khi Ä‘iá»u này xảy ra, thông tin vá» trạng thái cá»§a hoạt động sẽ bị mất. Nếu Ä‘iá»u này xảy ra,
+bộ nhá»› hệ thống. Khi Ä‘iá»u này xảy ra, thông tin vá» trạng thái cá»§a hoạt động sẽ bị mất. Nếu Ä‘iá»u này xảy ra,
hệ thống vẫn
biết rằng hoạt động có một vị trí trong ngăn xếp, nhưng khi hoạt động được đưa tới vị trí trên cùng
cá»§a chồng, hệ thống phải tạo lại nó (thay vì tiếp tục). Äể tránh
@@ -314,7 +314,7 @@ hoạt động nằm trên cùng cá»§a ngăn xếp <em>không</em> phải là má
<p>Ví dụ, giả sử ngăn xếp của một tác vụ bao gồm hoạt động gốc A với các hoạt động B, C,
và D ở trên cùng (chồng là A-B-C-D; D ở trên cùng). Một ý định đến cho loại hoạt động D.
Nếu D có chế độ khởi chạy {@code "standard"} mặc định, một thực thể mới của lớp sẽ được khởi chạy và
-chồng trở thành A-B-C-D-D. Tuy nhiên, nếu chế độ khởi chạy của D là {@code "singleTop"}, thực thể hiện tại
+chồng trở thành A-B-C-D-D. Tuy nhiên, nếu chế độ khởi chạy của D là {@code "singleTop"}, thực thể hiện tại
của D sẽ nhận ý định thông qua {@link
android.app.Activity#onNewIntent onNewIntent()}, bởi nó nằm ở vị trí trên cùng của chồng&mdash;chồng
vẫn là A-B-C-D. Tuy nhiên, nếu một ý định đến cho hoạt động loại B, khi đó một thực thể
@@ -557,9 +557,9 @@ tác vụ má»›i và ngưá»i dùng dành má»™t khoảng thá»i gian làm việc
. Lúc này, tác vụ được gá»­i tá»›i ná»n và không hiển thị. Bây giá», ngưá»i dùng không có cách nào để quay lại
tác vụ bởi nó không được biểu diễn trong trình khởi chạy ứng dụng.</p>
-<p>Äối vá»›i những trưá»ng hợp mà bạn không muốn ngưá»i dùng có thể quay lại má»™t hoạt động, hãy đặt giá trị cá»§a phần tá»­
+<p>Äối vá»›i những trưá»ng hợp mà bạn không muốn ngưá»i dùng có thể quay lại má»™t hoạt động, hãy đặt giá trị cá»§a phần tá»­
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
-,
+,
<a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">{@code finishOnTaskLaunch}</a>
thành {@code "true"} (xem <a href="#Clearing">Xóa chồng</a>).</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/vi/guide/topics/manifest/manifest-intro.jd
index ca2ed26270f2..06668b4c685c 100644
--- a/docs/html-intl/intl/vi/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/vi/guide/topics/manifest/manifest-intro.jd
@@ -31,27 +31,27 @@ page.title=Bản kê khai Ứng dụng
<li>Nó đặt tên gói Java cho ứng dụng.
Tên gói đóng vai trò như một mã nhận diện duy nhất cho ứng dụng.</li>
-<li>Nó mô tả các thành phần của ứng dụng &mdash; hoạt động,
-dịch vụ, hàm nhận quảng bá, và trình cung cấp nội dung mà ứng dụng
-được soạn bởi. Nó đặt tên các lớp triển khai từng thành phần và
-công bố các khả năng của chúng (ví dụ, những tin nhắn {@link android.content.Intent
-Intent} mà chúng có thể xử lý). Những khai báo này cho phép hệ thống Android
+<li>Nó mô tả các thành phần của ứng dụng &mdash; hoạt động,
+dịch vụ, hàm nhận quảng bá, và trình cung cấp nội dung mà ứng dụng
+được soạn bởi. Nó đặt tên các lớp triển khai từng thành phần và
+công bố các khả năng của chúng (ví dụ, những tin nhắn {@link android.content.Intent
+Intent} mà chúng có thể xử lý). Những khai báo này cho phép hệ thống Android
biết các thành phần là gì và chúng có thể được khởi chạy trong những Ä‘iá»u kiện nào.</li>
-<li>Nó xác định những tiến trình nào sẽ lưu trữ các thành phần ứng dụng.</li>
+<li>Nó xác định những tiến trình nào sẽ lưu trữ các thành phần ứng dụng.</li>
-<li>Nó khai báo các quyá»n mà ứng dụng phải có để
-truy cập các phần được bảo vệ của API và tương tác với các ứng dụng khác.</li>
+<li>Nó khai báo các quyá»n mà ứng dụng phải có để
+truy cập các phần được bảo vệ của API và tương tác với các ứng dụng khác.</li>
-<li>Nó cÅ©ng khai báo các quyá»n mà ứng dụng khác phải có để
+<li>Nó cÅ©ng khai báo các quyá»n mà ứng dụng khác phải có để
tương tác với các thành phần của ứng dụng.</li>
-<li>Nó liệt kê các lớp {@link android.app.Instrumentation} cung cấp
-tính năng tạo hồ sơ và các thông tin khác khi ứng dụng đang chạy. Những khai báo này
-chỉ xuất hiện trong bản kê khai khi ứng dụng đang được phát triển và
+<li>Nó liệt kê các lớp {@link android.app.Instrumentation} cung cấp
+tính năng tạo hồ sơ và các thông tin khác khi ứng dụng đang chạy. Những khai báo này
+chỉ xuất hiện trong bản kê khai khi ứng dụng đang được phát triển và
thử nghiệm; chúng bị loại bỠtrước khi ứng dụng được công bố.</li>
-<li>Nó khai báo mức tối thiểu của API Android mà ứng dụng
+<li>Nó khai báo mức tối thiểu của API Android mà ứng dụng
yêu cầu.</li>
<li>Nó liệt kê các thư viện mà ứng dụng phải được liên kết với.</li>
@@ -61,12 +61,12 @@ yêu cầu.</li>
<h2 id="filestruct">Cấu trúc của Tệp Bản kê khai</h2>
<p>
-SÆ¡ đồ bên dưới minh há»a cấu trúc chung cá»§a tệp bản kê khai và má»i
-phần tử mà nó có thể chứa. Từng phần tử, cùng với tất cả thuộc tính
-cá»§a mình, sẽ được lập tài liệu theo dõi đầy đủ vào má»™t tệp riêng. Äể xem thông tin
-chi tiết vá» má»i phần tá»­, hãy nhấp vào tên phần tá»­ trong sÆ¡ đồ,
+SÆ¡ đồ bên dưới minh há»a cấu trúc chung cá»§a tệp bản kê khai và má»i
+phần tử mà nó có thể chứa. Từng phần tử, cùng với tất cả thuộc tính
+cá»§a mình, sẽ được lập tài liệu theo dõi đầy đủ vào má»™t tệp riêng. Äể xem thông tin
+chi tiết vá» má»i phần tá»­, hãy nhấp vào tên phần tá»­ trong sÆ¡ đồ,
trong danh sách các phần tử theo thứ tự chữ cái mà tuân theo sơ đồ, hoặc trên bất kỳ
-nội dung nào khác đỠcập tới tên phần tử.
+nội dung nào khác đỠcập tới tên phần tử.
</p>
<pre>
@@ -126,9 +126,9 @@ nội dung nào khác đỠcập tới tên phần tử.
</pre>
<p>
-Tất cả phần tử có thể xuất hiện trong tệp bản kê khai được liệt kê ở bên dưới
-theo thứ tá»± chữ cái. Äây là những phần tá»­ hợp pháp duy nhất; bạn không thể
-thêm các phần tử hay thuộc tính của chính mình.
+Tất cả phần tử có thể xuất hiện trong tệp bản kê khai được liệt kê ở bên dưới
+theo thứ tá»± chữ cái. Äây là những phần tá»­ hợp pháp duy nhất; bạn không thể
+thêm các phần tử hay thuộc tính của chính mình.
</p>
<p style="margin-left: 2em">
@@ -158,74 +158,74 @@ thêm các phần tử hay thuộc tính của chính mình.
</p>
-
+
<h2 id="filec">Các Quy ước Tệp</h2>
<p>
-Một số quy ước và quy tắc áp dụng chung cho tất cả các phần tử và thuộc tính
+Một số quy ước và quy tắc áp dụng chung cho tất cả các phần tử và thuộc tính
trong bản kê khai:
</p>
<dl>
<dt><b>Phần tử</b></dt>
-<dd>Chỉ các phần tử
+<dd>Chỉ các phần tử
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> và
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-là bắt buá»™c phải có, chúng Ä‘á»u phải có mặt và chỉ có thể xảy ra má»™t lần.
-Hầu hết các phần tá»­ khác có thể xảy ra nhiá»u lần hoặc không xảy ra &mdash; mặc dù ít
-nhất một vài trong số chúng phải có mặt để bản kê khai thực sự có
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+là bắt buá»™c phải có, chúng Ä‘á»u phải có mặt và chỉ có thể xảy ra má»™t lần.
+Hầu hết các phần tá»­ khác có thể xảy ra nhiá»u lần hoặc không xảy ra &mdash; mặc dù ít
+nhất một vài trong số chúng phải có mặt để bản kê khai thực sự có
ý nghĩa nào đó.
<p>
-Nếu một phần tử chứa bất kỳ nội dung nào, nó có thể chứa các phần tử khác.
+Nếu một phần tử chứa bất kỳ nội dung nào, nó có thể chứa các phần tử khác.
Tất cả giá trị sẽ được đặt thông qua thuộc tính, chứ không phải là dữ liệu ký tự trong một phần tử.
</p>
<p>
Các phần tá»­ cùng cấp thưá»ng không theo thứ tá»±. Ví dụ, các phần tá»­
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
-<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>, và
-<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
-có thể được trộn lẫn với nhau theo bất kỳ trình tự nào. (Phần tử
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>, và
+<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+có thể được trộn lẫn với nhau theo bất kỳ trình tự nào. (Phần tử
<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
-là trưá»ng hợp ngoại lệ đối vá»›i quy tắc này: Nó phải tuân theo
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+là trưá»ng hợp ngoại lệ đối vá»›i quy tắc này: Nó phải tuân theo
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
, đối tượng mà nó là bí danh cho.)
</p></dd>
<dt><b>Thuộc tính</b></dt>
-<dd>Theo cách hiểu thông thưá»ng, tất cả thuá»™c tính Ä‘á»u mang tính tùy chá»n. Tuy nhiên, có má»™t số thuá»™c tính
-phải được quy định cho một phần tử để hoàn thành mục đích của nó. Sử dụng
+<dd>Theo cách hiểu thông thưá»ng, tất cả thuá»™c tính Ä‘á»u mang tính tùy chá»n. Tuy nhiên, có má»™t số thuá»™c tính
+phải được quy định cho một phần tử để hoàn thành mục đích của nó. Sử dụng
tài liệu làm hướng dẫn. Äối vá»›i những thuá»™c tính thá»±c sá»± tùy chá»n, nó đỠcập tá»›i má»™t giá trị
mặc định hoặc thông báo Ä‘iá»u gì sẽ xảy ra nếu không có má»™t đặc tả.
-<p>Ngoài một số thuộc tính của phần tử
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
-gốc, tất cả tên thuá»™c tính Ä‘á»u bắt đầu bằng má»™t tiá»n tố {@code android:}&mdash;
-ví dụ, {@code android:alwaysRetainTaskState}. Do tiá»n tố này
-phổ dụng, tài liệu thưá»ng bá» sót nó khi tham chiếu tá»›i các thuá»™c tính
+<p>Ngoài một số thuộc tính của phần tử
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+gốc, tất cả tên thuá»™c tính Ä‘á»u bắt đầu bằng má»™t tiá»n tố {@code android:}&mdash;
+ví dụ, {@code android:alwaysRetainTaskState}. Do tiá»n tố này
+phổ dụng, tài liệu thưá»ng bá» sót nó khi tham chiếu tá»›i các thuá»™c tính
theo tên.</p></dd>
<dt><b>Khai báo tên lớp</b></dt>
-<dd>Nhiá»u thuá»™c tính tương ứng vá»›i các đối tượng Java, bao gồm các phần tá»­ cho
-chính ứng dụng (phần tử
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-) và các thành phần chính của nó &mdash; hoạt động
-(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
-dịch vụ
-(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
-hàm nhận quảng bá
-(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>),
-và trình cung cấp nội dung
-(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
+<dd>Nhiá»u thuá»™c tính tương ứng vá»›i các đối tượng Java, bao gồm các phần tá»­ cho
+chính ứng dụng (phần tử
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+) và các thành phần chính của nó &mdash; hoạt động
+(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
+dịch vụ
+(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
+hàm nhận quảng bá
+(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>),
+và trình cung cấp nội dung
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
<p>
-Nếu bạn định nghĩa một lớp con như vẫn luôn làm đối với lớp thành phần
-({@link android.app.Activity}, {@link android.app.Service},
-{@link android.content.BroadcastReceiver}, và {@link android.content.ContentProvider}),
-lớp con sẽ được khai báo thông qua một thuộc tính {@code name}. Tên phải bao gồm
-chỉ định gói đầy đủ.
+Nếu bạn định nghĩa một lớp con như vẫn luôn làm đối với lớp thành phần
+({@link android.app.Activity}, {@link android.app.Service},
+{@link android.content.BroadcastReceiver}, và {@link android.content.ContentProvider}),
+lớp con sẽ được khai báo thông qua một thuộc tính {@code name}. Tên phải bao gồm
+chỉ định gói đầy đủ.
Ví dụ, một lớp con {@link android.app.Service} có thể được khai báo như sau:
</p>
@@ -239,12 +239,12 @@ Ví dụ, má»™t lá»›p con {@link android.app.Service} có thể được khai bÃ
&lt;/manifest&gt;</pre>
<p>
-Tuy nhiên, do cách viết tốc ký, nếu ký tự đầu tiên của xâu là một dấu chấm,
-xâu sẽ được nối với tên gói của ứng dụng (như được quy định bởi
-thuộc tính của phần tử <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+Tuy nhiên, do cách viết tốc ký, nếu ký tự đầu tiên của xâu là một dấu chấm,
+xâu sẽ được nối với tên gói của ứng dụng (như được quy định bởi
+thuộc tính của phần tử <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
-<code>, <a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
-). Cách gán sau cũng giống như trên:
+<code>, <a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
+). Cách gán sau cũng giống như trên:
</p>
<pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -257,13 +257,13 @@ thuộc tính của phần tử <code><a href="{@docRoot}guide/topics/manifest/m
&lt;/manifest&gt;</pre>
<p>
-Khi khởi động một thành phần, Android sẽ tạo một thực thể của lớp con được nêu tên.
+Khi khởi động một thành phần, Android sẽ tạo một thực thể của lớp con được nêu tên.
Nếu lớp con không được quy định, nó sẽ tạo một thực thể của lớp cơ sở.
</p></dd>
<dt><b>Nhiá»u giá trị</b></dt>
-<dd>Nếu có thể quy định nhiá»u hÆ¡n má»™t giá trị, phần tá»­ gần như luôn
-được lặp lại, thay vì liệt kê nhiá»u giá trị trong má»™t phần tá»­ duy nhất.
+<dd>Nếu có thể quy định nhiá»u hÆ¡n má»™t giá trị, phần tá»­ gần như luôn
+được lặp lại, thay vì liệt kê nhiá»u giá trị trong má»™t phần tá»­ duy nhất.
Ví dụ, má»™t bá»™ lá»c ý định có thể liệt kê vài hành động:
<pre>&lt;intent-filter . . . &gt;
@@ -274,24 +274,24 @@ Ví dụ, má»™t bá»™ lá»c ý định có thể liệt kê vài hành động:
&lt;/intent-filter&gt;</pre></dd>
<dt><b>Giá trị tài nguyên</b></dt>
-<dd>Má»™t số thuá»™c tính có các giá trị có thể được hiển thị vá»›i ngưá»i dùng &mdash; ví
-dụ, một nhãn và một biểu tượng cho một hoạt động. Giá trị của những thuộc tính này
-cần được cục bá»™ hóa và vì thế phải được thiết đặt từ má»™t tài nguyên hoặc chá»§ Ä‘á». Giá trị
+<dd>Má»™t số thuá»™c tính có các giá trị có thể được hiển thị vá»›i ngưá»i dùng &mdash; ví
+dụ, một nhãn và một biểu tượng cho một hoạt động. Giá trị của những thuộc tính này
+cần được cục bá»™ hóa và vì thế phải được thiết đặt từ má»™t tài nguyên hoặc chá»§ Ä‘á». Giá trị
tài nguyên được biểu diễn theo định dạng sau,</p>
<p style="margin-left: 2em">{@code @[<i>gói</i>:]<i>kiểu</i>:<i>tên</i>}</p>
<p>
-trong đó <i>gói</i> có thể được bỠqua nếu tài nguyên nằm trong cùng gói
-với ứng dụng, <i>kiểu</i> là kiểu của tài nguyên &mdash; chẳng hạn như "xâu" hoặc
-&mdash; "vẽ được" và <i>tên</i> là tên nhận biết tài nguyên cụ thể.
+trong đó <i>gói</i> có thể được bỠqua nếu tài nguyên nằm trong cùng gói
+với ứng dụng, <i>kiểu</i> là kiểu của tài nguyên &mdash; chẳng hạn như "xâu" hoặc
+&mdash; "vẽ được" và <i>tên</i> là tên nhận biết tài nguyên cụ thể.
Ví dụ:
</p>
<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
<p>
-Các giá trị từ một chủ đỠđược biểu diễn theo cách tương tự, nhưng với một '{@code ?}'
+Các giá trị từ một chủ đỠđược biểu diễn theo cách tương tự, nhưng với một '{@code ?}'
thay vì '{@code @}' ở đầu:
</p>
@@ -299,8 +299,8 @@ thay vì '{@code @}' ở đầu:
</p></dd>
<dt><b>Giá trị xâu</b></dt>
-<dd>Trưá»ng hợp giá trị cá»§a má»™t thuá»™c tính là má»™t xâu, phải sá»­ dụng hai dấu xuyệc ngược ('{@code \\}')
-để thoát các ký tự &mdash; ví dụ, '{@code \\n}' đối với
+<dd>Trưá»ng hợp giá trị cá»§a má»™t thuá»™c tính là má»™t xâu, phải sá»­ dụng hai dấu xuyệc ngược ('{@code \\}')
+để thoát các ký tự &mdash; ví dụ, '{@code \\n}' đối với
một dòng tin tức hoặc '{@code \\uxxxx}' đối với một ký tự Unicode.</dd>
</dl>
@@ -308,7 +308,7 @@ một dòng tin tức hoặc '{@code \\uxxxx}' đối với một ký tự Unico
<h2 id="filef">Các Tính năng Tệp</h2>
<p>
-Phần sau đây mô tả cách phản ánh một số tính năng của Android
+Phần sau đây mô tả cách phản ánh một số tính năng của Android
trong tệp bản kê khai.
</p>
@@ -316,23 +316,23 @@ trong tệp bản kê khai.
<h3 id="ifs">Bá»™ lá»c à định</h3>
<p>
-Các thành phần cốt lõi của một ứng dụng (hoạt động, dịch vụ và hàm nhận
-quảng bá) được kích hoạt bởi <i>ý định</i>. à định là một
-gói thông tin (một đối tượng {@link android.content.Intent}) mô tả một
-hành động mong muốn &mdash; bao gồm dữ liệu sẽ được dựa trên, thể loại của
-thành phần mà sẽ thực hiện hành động, và các chỉ dẫn thích hợp khác.
-Android định vị một thành phần phù hợp để hồi đáp ý định, khởi chạy
-một thực thể mới của thành phần nếu cần, và chuyển cho nó đối tượng đó
+Các thành phần cốt lõi của một ứng dụng (hoạt động, dịch vụ và hàm nhận
+quảng bá) được kích hoạt bởi <i>ý định</i>. à định là một
+gói thông tin (một đối tượng {@link android.content.Intent}) mô tả một
+hành động mong muốn &mdash; bao gồm dữ liệu sẽ được dựa trên, thể loại của
+thành phần mà sẽ thực hiện hành động, và các chỉ dẫn thích hợp khác.
+Android định vị một thành phần phù hợp để hồi đáp ý định, khởi chạy
+một thực thể mới của thành phần nếu cần, và chuyển cho nó đối tượng đó
à định.
</p>
<p>
-Các thành phần sẽ quảng cáo khả năng của mình &mdash; các kiểu ý định mà chúng có thể
-hồi đáp &mdash; thông qua <i>các bá»™ lá»c ý định</i>. Do hệ thống Android phải
-tìm hiểu một thành phần có thể xử lý những ý định nào trước khi khởi chạy thành phần đó,
-bá»™ lá»c ý định được quy định trong bản kê khai như là các phần tá»­
+Các thành phần sẽ quảng cáo khả năng của mình &mdash; các kiểu ý định mà chúng có thể
+hồi đáp &mdash; thông qua <i>các bá»™ lá»c ý định</i>. Do hệ thống Android phải
+tìm hiểu một thành phần có thể xử lý những ý định nào trước khi khởi chạy thành phần đó,
+bá»™ lá»c ý định được quy định trong bản kê khai như là các phần tá»­
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
-. Má»™t thành phần có thể có nhiá»u bá»™ lá»c, má»—i bá»™ lá»c lại mô tả
+. Má»™t thành phần có thể có nhiá»u bá»™ lá»c, má»—i bá»™ lá»c lại mô tả
một khả năng khác nhau.
</p>
@@ -344,9 +344,9 @@ thành phần.
</p>
<p>
-Äể biết thông tin vá» cách các đối tượng à định được kiểm tra thông qua bá»™ lá»c ý định,
-hãy xem tài liệu riêng có tiêu Ä‘á»
-<a href="{@docRoot}guide/components/intents-filters.html">à định
+Äể biết thông tin vá» cách các đối tượng à định được kiểm tra thông qua bá»™ lá»c ý định,
+hãy xem tài liệu riêng có tiêu Ä‘á»
+<a href="{@docRoot}guide/components/intents-filters.html">à định
và Bá»™ lá»c à định</a>.
</p>
@@ -354,42 +354,42 @@ và Bá»™ lá»c à định</a>.
<h3 id="iconlabel">Biểu tượng và Nhãn</h3>
<p>
-Nhiá»u phần tá»­ có thuá»™c tính {@code icon} và {@code label} cho má»™t
-biểu tượng nhá» và nhãn văn bản mà có thể được hiển thị vá»›i ngưá»i dùng. Má»™t số cÅ©ng có thuá»™c tính
-{@code description} cho văn bản giải trình dài hơn mà cũng có thể
-được hiển thị trên màn hình. Ví dụ, phần tử
+Nhiá»u phần tá»­ có thuá»™c tính {@code icon} và {@code label} cho má»™t
+biểu tượng nhá» và nhãn văn bản mà có thể được hiển thị vá»›i ngưá»i dùng. Má»™t số cÅ©ng có thuá»™c tính
+{@code description} cho văn bản giải trình dài hơn mà cũng có thể
+được hiển thị trên màn hình. Ví dụ, phần tử
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-có cả ba thuá»™c tính này, vì thế khi ngưá»i dùng được há»i xem có
-cấp quyá»n cho má»™t ứng dụng yêu cầu hay không, biểu tượng thể hiện
+có cả ba thuá»™c tính này, vì thế khi ngưá»i dùng được há»i xem có
+cấp quyá»n cho má»™t ứng dụng yêu cầu hay không, biểu tượng thể hiện
quyá»n, tên cá»§a quyá»n, và mô tả ná»™i dung
cá»§a quyá»n đó Ä‘á»u có thể được trình bày cho ngưá»i dùng xem.
</p>
<p>
-Trong má»i trưá»ng hợp, biểu tượng và nhãn được đặt trong má»™t phần tá»­ chứa sẽ trở thành các thiết đặt
-{@code icon} và {@code label} mặc định cho tất cả phần tử con của bộ chứa đó.
-Vì thế, biểu tượng và nhãn được đặt trong phần tử
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-là biểu tượng và nhãn mặc định cho từng thành phần của ứng dụng.
-Tương tự, biểu tượng và nhãn được đặt cho một thành phần &mdash; ví dụ, một phần tử
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
-&mdash; sẽ là các cài đặt mặc định cho từng phần tử
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+Trong má»i trưá»ng hợp, biểu tượng và nhãn được đặt trong má»™t phần tá»­ chứa sẽ trở thành các thiết đặt
+{@code icon} và {@code label} mặc định cho tất cả phần tử con của bộ chứa đó.
+Vì thế, biểu tượng và nhãn được đặt trong phần tử
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+là biểu tượng và nhãn mặc định cho từng thành phần của ứng dụng.
+Tương tự, biểu tượng và nhãn được đặt cho một thành phần &mdash; ví dụ, một phần tử
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+&mdash; sẽ là các cài đặt mặc định cho từng phần tử
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
của thành phần đó. Nếu một phần tử
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-thiết đặt má»™t nhãn, nhưng hoạt động và bá»™ lá»c ý định cá»§a nó thì không,
-nhãn ứng dụng sẽ được coi là nhãn của cả hoạt động và
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+thiết đặt má»™t nhãn, nhưng hoạt động và bá»™ lá»c ý định cá»§a nó thì không,
+nhãn ứng dụng sẽ được coi là nhãn của cả hoạt động và
bá»™ lá»c ý định.
</p>
<p>
-Biểu tượng và nhãn được đặt cho má»™t bá»™ lá»c ý định sẽ được sá»­ dụng để biểu diá»…n má»™t thành phần
+Biểu tượng và nhãn được đặt cho má»™t bá»™ lá»c ý định sẽ được sá»­ dụng để biểu diá»…n má»™t thành phần
bất cứ khi nào thành phần đó được trình bày vá»›i ngưá»i dùng để thá»±c hiện chức năng
-mà bá»™ lá»c đã quảng cáo. Ví dụ, má»™t bá»™ lá»c vá»›i các thiết đặt
-"{@code android.intent.action.MAIN}" và
-"{@code android.intent.category.LAUNCHER}" quảng cáo một hoạt động
+mà bá»™ lá»c đã quảng cáo. Ví dụ, má»™t bá»™ lá»c vá»›i các thiết đặt
+"{@code android.intent.action.MAIN}" và
+"{@code android.intent.category.LAUNCHER}" quảng cáo một hoạt động
là hoạt động khởi đầu một ứng dụng &mdash; cụ thể, là
-hoạt động sẽ được hiển thị trong trình khởi chạy ứng dụng. Vì thế, biểu tượng và nhãn
+hoạt động sẽ được hiển thị trong trình khởi chạy ứng dụng. Vì thế, biểu tượng và nhãn
được đặt trong bá»™ lá»c là những ná»™i dung được hiển thị trong trình khởi chạy.
</p>
@@ -397,14 +397,14 @@ hoạt động sẽ được hiển thị trong trình khởi chạy ứng dụn
<h3 id="perms">Quyá»n</h3>
<p>
-Má»™t <i>quyá»n</i> là sá»± hạn chế giá»›i hạn truy cập vào má»™t phần cá»§a mã
-hoặc vào dữ liệu trên thiết bị. Giới hạn này được áp đặt nhằm bảo vệ dữ liệu
-và mã trá»ng yếu, có thể bị lạm dụng để bóp méo hoặc làm há»ng trải nghiệm ngưá»i dùng.
+Má»™t <i>quyá»n</i> là sá»± hạn chế giá»›i hạn truy cập vào má»™t phần cá»§a mã
+hoặc vào dữ liệu trên thiết bị. Giới hạn này được áp đặt nhằm bảo vệ dữ liệu
+và mã trá»ng yếu, có thể bị lạm dụng để bóp méo hoặc làm há»ng trải nghiệm ngưá»i dùng.
</p>
<p>
-Má»—i quyá»n được nhận biết bằng má»™t nhãn duy nhất. Thông thưá»ng, nhãn cho biết
-hành động bị hạn chế. Ví dụ, sau đây là má»™t số quyá»n được định nghÄ©a
+Má»—i quyá»n được nhận biết bằng má»™t nhãn duy nhất. Thông thưá»ng, nhãn cho biết
+hành động bị hạn chế. Ví dụ, sau đây là má»™t số quyá»n được định nghÄ©a
bởi Android:
</p>
@@ -418,25 +418,25 @@ Má»™t tính năng có thể được bảo vệ bởi nhiá»u nhất má»™t quyá»
</p>
<p>
-Nếu má»™t ứng dụng cần truy cập vào má»™t tính năng được bảo vệ bởi má»™t quyá»n,
-nó phải khai báo rằng nó yêu cầu quyá»n đó cùng vá»›i má»™t phần tá»­
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
-trong bản kê khai. Lúc đó, khi ứng dụng được cài đặt trên
-thiết bị, trình cài đặt sẽ xác định xem có cấp quyá»n
-được yêu cầu hay không bằng cách kiểm tra các thẩm quyá»n đã ký chứng chỉ
-cá»§a ứng dụng và trong má»™t số trưá»ng hợp, bằng cách há»i ngưá»i dùng.
-Nếu quyá»n được cấp, ứng dụng có thể sá»­ dụng các tính năng
+Nếu má»™t ứng dụng cần truy cập vào má»™t tính năng được bảo vệ bởi má»™t quyá»n,
+nó phải khai báo rằng nó yêu cầu quyá»n đó cùng vá»›i má»™t phần tá»­
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+trong bản kê khai. Lúc đó, khi ứng dụng được cài đặt trên
+thiết bị, trình cài đặt sẽ xác định xem có cấp quyá»n
+được yêu cầu hay không bằng cách kiểm tra các thẩm quyá»n đã ký chứng chỉ
+cá»§a ứng dụng và trong má»™t số trưá»ng hợp, bằng cách há»i ngưá»i dùng.
+Nếu quyá»n được cấp, ứng dụng có thể sá»­ dụng các tính năng
được bảo vệ. Nếu không, việc thử truy cập những tính năng đó sẽ thất bại
-mà không có bất kỳ thông báo nào cho ngưá»i dùng.
+mà không có bất kỳ thông báo nào cho ngưá»i dùng.
</p>
<p>
-Một ứng dụng cũng có thể bảo vệ các thành phần của chính nó (hoạt động, dịch vụ,
-hàm nhận quảng bá và trình cung cấp ná»™i dung) bằng các quyá»n. Nó có thể sá»­ dụng
-bất kỳ quyá»n nào được định nghÄ©a bởi Android (được liệt kê trong
-{@link android.Manifest.permission android.Manifest.permission}) hoặc được khai báo
-bởi các ứng dụng khác. Hoặc nó có thể tá»± định nghÄ©a quyá»n cá»§a mình. Má»™t quyá»n má»›i được khai báo
-bằng phần tử
+Một ứng dụng cũng có thể bảo vệ các thành phần của chính nó (hoạt động, dịch vụ,
+hàm nhận quảng bá và trình cung cấp ná»™i dung) bằng các quyá»n. Nó có thể sá»­ dụng
+bất kỳ quyá»n nào được định nghÄ©a bởi Android (được liệt kê trong
+{@link android.Manifest.permission android.Manifest.permission}) hoặc được khai báo
+bởi các ứng dụng khác. Hoặc nó có thể tá»± định nghÄ©a quyá»n cá»§a mình. Má»™t quyá»n má»›i được khai báo
+bằng phần tử
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
. Ví dụ, một hoạt động có thể được bảo vệ như sau:
</p>
@@ -457,43 +457,43 @@ bằng phần tử
</pre>
<p>
-Lưu ý rằng trong ví dụ này, quyá»n {@code DEBIT_ACCT} không chỉ
-được khai báo bằng phần tử
+Lưu ý rằng trong ví dụ này, quyá»n {@code DEBIT_ACCT} không chỉ
+được khai báo bằng phần tử
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-, việc sá»­ dụng quyá»n cÅ©ng được yêu cầu bằng phần tá»­
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
-. Phải yêu cầu sá»­ dụng quyá»n để các thành phần khác cá»§a
-ứng dụng nhằm khởi chạy hoạt động được bảo vệ, mặc dù việc bảo vệ
-do chính ứng dụng áp đặt.
+, việc sá»­ dụng quyá»n cÅ©ng được yêu cầu bằng phần tá»­
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+. Phải yêu cầu sá»­ dụng quyá»n để các thành phần khác cá»§a
+ứng dụng nhằm khởi chạy hoạt động được bảo vệ, mặc dù việc bảo vệ
+do chính ứng dụng áp đặt.
</p>
<p>
-Trong cùng ví dụ này, nếu thuá»™c tính {@code permission} được đặt thành má»™t quyá»n
-được khai báo ở nơi khác
-(chẳng hạn như {@code android.permission.CALL_EMERGENCY_NUMBERS}, sẽ không
-cần phải khai báo lại nó bằng một phần tử
+Trong cùng ví dụ này, nếu thuá»™c tính {@code permission} được đặt thành má»™t quyá»n
+được khai báo ở nơi khác
+(chẳng hạn như {@code android.permission.CALL_EMERGENCY_NUMBERS}, sẽ không
+cần phải khai báo lại nó bằng một phần tử
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-. Tuy nhiên, sẽ vẫn cần phải yêu cầu sử dụng nó bằng
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
+. Tuy nhiên, sẽ vẫn cần phải yêu cầu sử dụng nó bằng
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
</p>
<p>
-Phần tử
-<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
-sẽ khai báo má»™t vùng tên cho nhóm quyá»n mà sẽ được định nghÄ©a trong
-mã. Và
+Phần tử
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+sẽ khai báo má»™t vùng tên cho nhóm quyá»n mà sẽ được định nghÄ©a trong
+mã. Và
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
-sẽ định nghÄ©a má»™t nhãn cho má»™t tập hợp quyá»n (cả được khai báo trong bản kê khai bằng phần tá»­
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-và được khai báo ở chá»— khác). Nó chỉ ảnh hưởng tá»›i cách các quyá»n được
-nhóm lại khi được trình bày vá»›i ngưá»i dùng. Phần tá»­
+sẽ định nghÄ©a má»™t nhãn cho má»™t tập hợp quyá»n (cả được khai báo trong bản kê khai bằng phần tá»­
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+và được khai báo ở chá»— khác). Nó chỉ ảnh hưởng tá»›i cách các quyá»n được
+nhóm lại khi được trình bày vá»›i ngưá»i dùng. Phần tá»­
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
-không quy định những quyá»n nào thuá»™c vá» nhóm;
+không quy định những quyá»n nào thuá»™c vá» nhóm;
nó chỉ đặt cho nhóm má»™t cái tên. Má»™t quyá»n được đặt vào nhóm
bằng cách gán tên nhóm với thuộc tính của phần tử
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-,
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+,
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
.
</p>
@@ -501,17 +501,17 @@ bằng cách gán tên nhóm với thuộc tính của phần tử
<h3 id="libs">Thư viện</h3>
<p>
-Má»i ứng dụng Ä‘á»u được liên kết vá»›i thư viện Android mặc định, nó
-bao gồm các gói cơ bản để xây dựng ứng dụng (bằng các lớp thông dụng
-chẳng hạn như Hoạt động, Dịch vụ, à định, Dạng xem, Nút, Ứng dụng, Trình cung cấp Nội dung,
+Má»i ứng dụng Ä‘á»u được liên kết vá»›i thư viện Android mặc định, nó
+bao gồm các gói cơ bản để xây dựng ứng dụng (bằng các lớp thông dụng
+chẳng hạn như Hoạt động, Dịch vụ, à định, Dạng xem, Nút, Ứng dụng, Trình cung cấp Nội dung,
v.v.).
</p>
<p>
-Tuy nhiên, một số gói nằm trong thư viện của chính mình. Nếu ứng dụng của bạn
-sử dụng mã từ bất kỳ gói nào trong những gói này, nó phải công khai yêu cầu được liên kết
-với chúng. Bản kê khai phải chứa một phần tử
-<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
-riêng để đặt tên cho từng thư viện. (Tên thư viện có thể được tìm thấy trong tài liệu
+Tuy nhiên, một số gói nằm trong thư viện của chính mình. Nếu ứng dụng của bạn
+sử dụng mã từ bất kỳ gói nào trong những gói này, nó phải công khai yêu cầu được liên kết
+với chúng. Bản kê khai phải chứa một phần tử
+<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+riêng để đặt tên cho từng thư viện. (Tên thư viện có thể được tìm thấy trong tài liệu
của gói.)
</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/vi/guide/topics/providers/calendar-provider.jd
index e2ecdb32b2e8..c9d779b11483 100644
--- a/docs/html-intl/intl/vi/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/vi/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@ page.title=Trình cung cấp Lịch
<li><a href="#intent-view">Sử dụng ý định để xem dữ liệu lịch</a></li>
</ol>
</li>
-
+
<li><a href="#sync-adapter">Trình Ä‘iá»u hợp Äồng bá»™</a></li>
</ol>
@@ -63,8 +63,8 @@ các thao tác trên lịch, sá»± kiện, ngưá»i dá»±, nhắc nhở, v.v.</p>
<p>API Trình cung cấp Lịch có thể được sá»­ dụng bởi các ứng dụng và trình Ä‘iá»u hợp đồng bá»™. Các quy tắc
thay đổi tùy vào loại chương trình Ä‘ang thá»±c hiện lệnh gá»i. Tài liệu này
-tập trung chá»§ yếu vào việc sá»­ dụng API Trình cung cấp Lịch như má»™t ứng dụng. Äể bàn
-vá» việc các trình Ä‘iá»u hợp đồng bá»™ khác nhau như thế nào, hãy xem phần
+tập trung chá»§ yếu vào việc sá»­ dụng API Trình cung cấp Lịch như má»™t ứng dụng. Äể bàn
+vá» việc các trình Ä‘iá»u hợp đồng bá»™ khác nhau như thế nào, hãy xem phần
<a href="#sync-adapter">Trình Ä‘iá»u hợp Äồng bá»™</a>.</p>
@@ -79,17 +79,17 @@ và cÅ©ng không cần cung cấp má»™t giao diện ngưá»i dùng để xem hoá
<h2 id="overview">Nội dung Cơ bản</h2>
-<p><a href="{@docRoot}guide/topics/providers/content-providers.html">Các trình cung cấp nội dung</a> sẽ lưu trữ dữ liệu và cho phép truy cập
+<p><a href="{@docRoot}guide/topics/providers/content-providers.html">Các trình cung cấp nội dung</a> sẽ lưu trữ dữ liệu và cho phép truy cập
ứng dụng. Trình cung cấp ná»™i dung được ná»n tảng Android giá»›i thiệu (bao gồm Trình cung cấp Lịch) thưá»ng trình bày dữ liệu như má»™t tập hợp gồm nhiá»u bảng dá»±a trên má»™t
mô hình cơ sở dữ liệu quan hệ, trong đó mỗi hàng là một bản ghi và mỗi cột là dữ liệu thuộc
một loại và có ý nghĩa cụ thể. Thông qua API Trình cung cấp Lịch, các ứng dụng
và trình Ä‘iá»u hợp đồng bá»™ có thể nhận được quyá»n truy cập Ä‘á»c/ghi vào các bảng trong cÆ¡ sở dữ liệu là nÆ¡i chứa
dữ liệu lịch cá»§a ngưá»i dùng.</p>
-<p>Má»i trình cung cấp ná»™i dung Ä‘á»u đưa ra má»™t URI công khai (được bẻ dòng như má»™t đối tượng
+<p>Má»i trình cung cấp ná»™i dung Ä‘á»u đưa ra má»™t URI công khai (được bẻ dòng như má»™t đối tượng
{@link android.net.Uri}
) để xác định tập dữ liệu cá»§a nó má»™t cách duy nhất. Trình cung cấp ná»™i dung mà kiểm soát nhiá»u
- tập dữ liệu (nhiá»u bảng) sẽ đưa ra má»™t URI riêng cho từng bảng. Tất cả
+ tập dữ liệu (nhiá»u bảng) sẽ đưa ra má»™t URI riêng cho từng bảng. Tất cả
URI cho trình cung cấp Ä‘á»u bắt đầu bằng xâu "content://". Äiá»u này
sẽ xác định dữ liệu là đang được kiểm soát bởi một trình cung cấp nội dung. Trình cung cấp
Lịch định nghĩa các hằng số cho URI đối với từng lớp (bảng) của nó. Những URI
@@ -113,26 +113,26 @@ các bảng chính và các trưá»ng liên kết chúng vá»›i nhau.</p>
</tr>
<tr>
<td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-
- <td>Bảng này chứa
+
+ <td>Bảng này chứa
thông tin riêng của lịch. Mỗi hàng trong bảng này chứa chi tiết của
một lịch duy nhất, chẳng hạn như tên, màu, thông tin đồng bộ, v.v.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Events}</td>
-
+
<td>Bảng này chứa
thông tin riêng theo sự kiện. Mỗi hàng trong bảng có thông tin cho một
sá»± kiện duy nhất&mdash;ví dụ: tiêu đỠsá»± kiện, địa Ä‘iểm, thá»i gian bắt đầu
, thá»i gian kết thúc, v.v. Sá»± kiện có thể xảy ra má»™t lần hoặc lặp lại nhiá»u lần. Ngưá»i dá»±,
-nhắc nhở, và các tính chất mở rộng được lưu trữ trong các bảng riêng.
-Má»—i mục Ä‘á»u có má»™t {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+nhắc nhở, và các tính chất mở rộng được lưu trữ trong các bảng riêng.
+Má»—i mục Ä‘á»u có má»™t {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
tham chiếu tới {@link android.provider.BaseColumns#_ID} trong bảng Sự kiện.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances}</td>
-
+
<td>Bảng này chứa
thá»i gian bắt đầu và thá»i gian kết thúc cá»§a má»—i lần xảy ra má»™t sá»± kiện. Má»—i hàng trong bảng này
đại diện cho một lần xảy ra sự kiện. Với các sự kiện xảy ra một lần thì có một ánh xạ 1:1
@@ -141,7 +141,7 @@ cá»§a thá»±c thể tá»›i sá»± kiện. Äối vá»›i các sá»± kiện định kỳ
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Attendees}</td>
-
+
<td>Bảng này chứa
thông tin vá» ngưá»i dá»± (khách) cá»§a sá»± kiện. Má»—i hàng đại diện má»™t khách duy nhất cá»§a
một sự kiện. Nó quy định loại khách và phản hồi tham dự của khách
@@ -149,17 +149,17 @@ cho một sự kiện.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Reminders}</td>
-
+
<td>Bảng này chứa
dữ liệu vỠcảnh báo/thông báo. Mỗi hàng đại diện một cảnh báo duy nhất cho một sự kiện. Một
sá»± kiện có thể có nhiá»u nhắc nhở. Số nhắc nhở tối Ä‘a cá»§a má»™t sá»± kiện
-được quy định trong
-{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS},
+được quy định trong
+{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS},
được đặt bởi trình Ä‘iá»u hợp đồng bá»™ Ä‘ang
sở hữu lịch đã cho. Nhắc nhở được quy định bằng số phút trước khi diễn ra sự kiện
và có má»™t phương pháp để xác định cách ngưá»i dùng sẽ được cảnh báo.</td>
</tr>
-
+
</table>
<p>API Trình cung cấp Lịch được thiết kế để linh hoạt và mạnh mẽ. Äồng
@@ -178,9 +178,9 @@ Lịch</a>.</p>
<li><strong>Trình Ä‘iá»u hợp đồng bá»™.</strong> Trình Ä‘iá»u hợp đồng bá»™ có chức năng đồng bá»™ dữ liệu lịch
-lên thiết bị cá»§a má»™t ngưá»i dùng bằng má»™t máy chá»§ hoặc nguồn dữ liệu khác. Trong bảng
+lên thiết bị cá»§a má»™t ngưá»i dùng bằng má»™t máy chá»§ hoặc nguồn dữ liệu khác. Trong bảng
{@link android.provider.CalendarContract.Calendars} và
-{@link android.provider.CalendarContract.Events},
+{@link android.provider.CalendarContract.Events},
có các cá»™t để cho trình Ä‘iá»u hợp đồng bá»™ sá»­ dụng.
Trình cung cấp và ứng dụng không nên sửa đổi chúng. Trên thực tế, chúng không
hiển thị trừ khi được truy cập như má»™t trình Ä‘iá»u hợp đồng bá»™. Äể biết thêm thông tin vá»
@@ -209,9 +209,9 @@ phải bao gồm quyá»n {@link android.Manifest.permission#WRITE_CALENDAR}
<h2 id="calendar">Bảng Lịch</h2>
-<p>Bảng {@link android.provider.CalendarContract.Calendars} chứa thông tin chi tiết
+<p>Bảng {@link android.provider.CalendarContract.Calendars} chứa thông tin chi tiết
cho từng lịch. Các cột
-Lịch sau có thể ghi được bởi cả ứng dụng và <a href="#sync-adapter">trình Ä‘iá»u hợp đồng bá»™</a>.
+Lịch sau có thể ghi được bởi cả ứng dụng và <a href="#sync-adapter">trình Ä‘iá»u hợp đồng bá»™</a>.
Äể xem danh sách đầy đủ vá» các trưá»ng được há»— trợ, hãy xem tài liệu tham khảo
{@link android.provider.CalendarContract.Calendars}.</p>
<table>
@@ -229,7 +229,7 @@ Lịch sau có thể ghi được bởi cả ứng dụng và <a href="#sync-ada
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-
+
<td>Má»™t boolean cho biết lịch có được chá»n để hiển thị hay không. Giá trị
bằng 0 cho biết các sự kiện liên kết với lịch này sẽ không được
hiển thị. Giá trị bằng 1 cho biết các sự kiện liên kết với lịch này sẽ được
@@ -240,10 +240,10 @@ android.provider.CalendarContract.Instances}.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-
+
<td>Một boolean cho biết lịch sẽ được đồng bộ và có các sự kiện
của mình được lưu trữ trên thiết bị hay không. Giá trị bằng 0 tức là không đồng bộ lịch này hay
-lưu giữ các sự kiện của nó lên thiết bị. Giá trị bằng 1 tức là đồng bộ các sự kiện cho lịch này
+lưu giữ các sự kiện của nó lên thiết bị. Giá trị bằng 1 tức là đồng bộ các sự kiện cho lịch này
và lưu trữ các sự kiện của nó lên thiết bị.</td>
</tr>
</table>
@@ -253,8 +253,8 @@ và lưu trữ các sự kiện của nó lên thiết bị.</td>
<p>Sau đây là má»™t ví dụ vá» cách nhận được lịch do má»™t ngưá»i dùng
cụ thể sở hữu. Äể đơn giản, trong ví dụ này, thao tác truy vấn được thể hiện trong
luồng giao diện ngưá»i dùng ("luồng chính"). Trong thá»±c hành, nên làm Ä‘iá»u này trong má»™t luồng
-không đồng bá»™ thay vì trên luồng chính. Äể bàn thêm, hãy xem phần
-<a href="{@docRoot}guide/components/loaders.html">Trình tải</a>. Nếu bạn đang không chỉ
+không đồng bá»™ thay vì trên luồng chính. Äể bàn thêm, hãy xem phần
+<a href="{@docRoot}guide/components/loaders.html">Trình tải</a>. Nếu bạn đang không chỉ
Ä‘á»c dữ liệu mà còn sá»­a đổi nó, hãy xem {@link android.content.AsyncQueryHandler}.
</p>
@@ -268,18 +268,18 @@ public static final String[] EVENT_PROJECTION = new String[] {
Calendars.CALENDAR_DISPLAY_NAME, // 2
Calendars.OWNER_ACCOUNT // 3
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
-
+
<div class="sidebox-wrapper"> <div class="sidebox"> <h3>Tại sao bạn phải nêu
ACCOUNT_TYPE?</h3> <p>Nếu bạn truy vấn trên một {@link
android.provider.CalendarContract.Calendars#ACCOUNT_NAME
-Calendars.ACCOUNT_NAME}, bạn cũng phải nêu
+Calendars.ACCOUNT_NAME}, bạn cũng phải nêu
{@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}
trong lá»±a chá»n. Äó là vì má»™t tài khoản đã cho chỉ
được coi là duy nhất nếu có cả <code>ACCOUNT_NAME</code> và
@@ -289,7 +289,7 @@ trình xác thá»±c tài khoản mà đã được sá»­ dụng khi tài khoản Ä
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} dành cho các lịch
không liên kết với một tài khoản thiết bị. Tài khoản {@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} không được
-đồng bộ.</p> </div> </div>
+đồng bộ.</p> </div> </div>
<p> Trong phần tiếp theo cá»§a ví dụ, bạn sẽ xây dá»±ng truy vấn cá»§a mình. Lá»±a chá»n
@@ -301,58 +301,58 @@ các lịch có <code>ACCOUNT_NAME</code>
đã xem, không chỉ các lịch mà ngưá»i dùng sở hữu, hãy bá» qua <code>OWNER_ACCOUNT</code>.
Truy vấn sẽ trả vỠđối tượng {@link android.database.Cursor}
mà bạn có thể sử dụng để xem xét tập kết quả được trả vỠbởi truy vấn
-cÆ¡ sở dữ liệu. Äể bàn thêm vá» việc sá»­ dụng các truy vấn trong trình cung cấp ná»™i dung,
+cÆ¡ sở dữ liệu. Äể bàn thêm vá» việc sá»­ dụng các truy vấn trong trình cung cấp ná»™i dung,
hãy xem phần <a href="{@docRoot}guide/topics/providers/content-providers.html">Trình cung cấp Nội dung</a>.</p>
<pre>// Run query
Cursor cur = null;
ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+Uri uri = Calendars.CONTENT_URI;
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+ Calendars.ACCOUNT_TYPE + " = ?) AND ("
+ Calendars.OWNER_ACCOUNT + " = ?))";
String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
- "sampleuser@gmail.com"};
-// Submit the query and get a Cursor object back.
+ "sampleuser@gmail.com"};
+// Submit the query and get a Cursor object back.
cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
<p>Phần tiếp theo sử dụng con chạy để duyệt qua tập kết quả. Nó sử dụng
các hằng số được thiết lập ngay từ đầu ví dụ để trả vỠcác giá trị
cho má»—i trưá»ng.</p>
-
+
<pre>// Use the cursor to step through the returned records
while (cur.moveToNext()) {
long calID = 0;
String displayName = null;
String accountName = null;
String ownerName = null;
-
+
// Get the field values
calID = cur.getLong(PROJECTION_ID_INDEX);
displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
-
+
// Do something with the values...
...
}
</pre>
-
+
<h3 id="modify-calendar">Sửa đổi một lịch</h3>
<p>Äể thá»±c hiện cập nhật má»™t lịch, bạn có thể cung cấp {@link
android.provider.BaseColumns#_ID} của lịch hoặc dưới dạng ID được nối vào cho
-Uri
+Uri
-({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
hoặc dưới dạng mục chá»n đầu tiên. Lá»±a chá»n
nên bắt đầu bằng <code>&quot;_id=?&quot;</code>, và
<code>selectionArg</code> đầu tiên sẽ là {@link
-android.provider.BaseColumns#_ID} của lịch.
+android.provider.BaseColumns#_ID} của lịch.
Bạn cÅ©ng có thể thá»±c hiện cập nhật bằng cách mã hoÌa ID trong URI. Ví dụ này thay đổi tên hiển thị
-của một lịch bằng cách sử dụng phương pháp
+của một lịch bằng cách sử dụng phương pháp
({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
:</p>
@@ -375,7 +375,7 @@ má»™t ứng dụng cần tạo má»™t lịch cục bá»™, nó có thể làm Ä‘iá»
chèn lịch dưới dạng má»™t trình Ä‘iá»u hợp đồng bá»™, sá»­ dụng {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} cá»§a {@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}.
-{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
+{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
là một loại tài khoản đặc biệt dành cho các lịch không
liên kết vá»›i má»™t tài khoản thiết bị. Các lịch loại này không được đồng bá»™ vá»›i má»™t máy chá»§. Äể
bàn vá» trình Ä‘iá»u hợp đồng bá»™, hãy xem phần <a href="#sync-adapter">Trình Ä‘iá»u hợp Äồng bá»™</a>.</p>
@@ -434,7 +434,7 @@ android.provider.CalendarContract.Events}.</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
-
+
<td>Thá»i lượng cá»§a sá»± kiện theo định dạng <a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a>.
Ví dụ, giá trị bằng <code>&quot;PT1H&quot;</code> cho biết sự kiện sẽ kéo dài
một giỠvà giá trị bằng <code>&quot;P2W&quot;</code> cho biết
@@ -444,39 +444,39 @@ thá»i lượng là 2 tuần. </td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
-
+
<td>Giá trị bằng 1 cho biết sự kiện này chiếm cả ngày, được xác định bởi
múi giá» tại địa phương. Giá trị bằng 0 cho biết đó là má»™t sá»± kiện thưá»ng xuyên mà có thể bắt đầu
và kết thúc vào bất cứ lúc nào trong một ngày.</td>
-
+
</tr>
-
-
+
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
-
+
<td>Quy tắc lặp lại đối với định dạng sự kiện. Ví
dụ, <code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>. Bạn có thể tìm thêm
nhiá»u ví dụ hÆ¡n <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">ở đây</a>.</td>
-
+
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
- <td>Ngày lặp lại đối với sự kiện.
- Bạn thưá»ng sá»­ dụng {@link android.provider.CalendarContract.EventsColumns#RDATE}
- cùng với {@link android.provider.CalendarContract.EventsColumns#RRULE}
+ <td>Ngày lặp lại đối với sự kiện.
+ Bạn thưá»ng sá»­ dụng {@link android.provider.CalendarContract.EventsColumns#RDATE}
+ cùng với {@link android.provider.CalendarContract.EventsColumns#RRULE}
để định nghĩa một tập tổng hợp
các trưá»ng hợp xảy ra lặp lại. Äể bàn thêm, hãy xem phần <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">RFC5545 spec</a>.</td>
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
-
- <td>Xem sá»± kiện này được tính là thá»i gian bận hay là thá»i gian rảnh có thể được
+
+ <td>Xem sá»± kiện này được tính là thá»i gian bận hay là thá»i gian rảnh có thể được
xếp lại lịch. </td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
@@ -514,11 +514,11 @@ java.util.TimeZone#getAvailableIDs()}. Lưu ý rằng quy tắc này không áp
bạn đang chèn một sự kiện thông qua à định {@link
android.content.Intent#ACTION_INSERT INSERT} như được mô tả trong <a href="#intent-insert">Sử dụng ý định để chèn một sự kiện</a>&mdash;trong kịch bản
đó, một múi giỠmặc định sẽ được cung cấp.</li>
-
+
<li>Äối vá»›i các sá»± kiện không định kỳ, bạn phải đưa vào {@link
android.provider.CalendarContract.EventsColumns#DTEND}. </li>
-
-
+
+
<li>Äối vá»›i các sá»± kiện định kỳ, bạn phải đưa vào má»™t {@link
android.provider.CalendarContract.EventsColumns#DURATION} bên cạnh {@link
android.provider.CalendarContract.EventsColumns#RRULE} hay {@link
@@ -526,9 +526,9 @@ android.provider.CalendarContract.EventsColumns#RDATE}. Lưu ý rằng quy tắc
bạn đang chèn một sự kiện thông qua à định {@link
android.content.Intent#ACTION_INSERT INSERT} như được mô tả trong <a href="#intent-insert">Sử dụng ý định để chèn một sự kiện</a>&mdash;trong kịch bản
đó, bạn có thể sử dụng một {@link
-android.provider.CalendarContract.EventsColumns#RRULE} cùng với {@link android.provider.CalendarContract.EventsColumns#DTSTART} và {@link android.provider.CalendarContract.EventsColumns#DTEND}, và ứng dụng Lịch
+android.provider.CalendarContract.EventsColumns#RRULE} cùng với {@link android.provider.CalendarContract.EventsColumns#DTSTART} và {@link android.provider.CalendarContract.EventsColumns#DTEND}, và ứng dụng Lịch
sẽ tá»± động chuyển nó thành má»™t thá»i lượng.</li>
-
+
</ul>
<p>Sau đây là một ví dụ vỠcách chèn một sự kiện. Ví dụ này đang được thực hiện trong luồng
@@ -539,8 +539,8 @@ thông tin, hãy xem phần {@link android.content.AsyncQueryHandler}.</p>
<pre>
long calID = 3;
-long startMillis = 0;
-long endMillis = 0;
+long startMillis = 0;
+long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@ Uri uri = cr.insert(Events.CONTENT_URI, values);
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
-//
+//
// ... do something with event ID
//
//</pre>
@@ -578,14 +578,14 @@ ngưá»i dá»± hoặc nhắc nhở vào má»™t sá»± kiện.</p>
bạn nên sử dụng một à định {@link android.content.Intent#ACTION_EDIT EDIT} như được mô tả
trong <a href="#intent-edit">Sử dụng ý định để chỉnh sửa một sự kiện</a>.
Tuy nhiên, nếu cần, bạn có thể chỉnh sá»­a sá»± kiện trá»±c tiếp. Äể thá»±c hiện cập nhật
-một Sự kiện, bạn có thể cung cấp <code>_ID</code> của sự kiện
+một Sự kiện, bạn có thể cung cấp <code>_ID</code> của sự kiện
hoặc dưới dạng ID được nối vào cho Uri ({@link
-android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
-hoặc dưới dạng mục chá»n đầu tiên.
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+hoặc dưới dạng mục chá»n đầu tiên.
Lá»±a chá»n nên bắt đầu bằng <code>&quot;_id=?&quot;</code>, và
<code>selectionArg</code> đầu tiên nên là <code>_ID</code> của sự kiện. Bạn cũng có thể
thá»±c hiện cập nhật bằng cách sá»­ dụng má»™t lá»±a chá»n không có ID. Sau đây là má»™t ví dụ vá» cách cập nhật má»™t
-sự kiện. Nó thay đổi tiêu đỠcủa sự kiện bằng cách sử dụng phương pháp
+sự kiện. Nó thay đổi tiêu đỠcủa sự kiện bằng cách sử dụng phương pháp
{@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}
:</p>
@@ -598,7 +598,7 @@ ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
Uri updateUri = null;
// The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;);
+values.put(Events.TITLE, &quot;Kickboxing&quot;);
updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().update(updateUri, values, null, null);
Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows); </pre>
@@ -625,22 +625,22 @@ ContentValues values = new ContentValues();
Uri deleteUri = null;
deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().delete(deleteUri, null, null);
-Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
</pre>
<h2 id="attendees">Bảng Ngưá»i dá»±</h2>
<p>Mỗi hàng của bảng {@link android.provider.CalendarContract.Attendees} đại diện
-cho má»™t ngưá»i dá»± hoặc khách duy nhất cá»§a má»™t sá»± kiện. Gá»i
-{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
+cho má»™t ngưá»i dá»± hoặc khách duy nhất cá»§a má»™t sá»± kiện. Gá»i
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
sẽ trả vá» má»™t danh sách ngưá»i dá»± cho sá»± kiện
-với {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} đã cho.
+với {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} đã cho.
{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} này
phải khớp với {@link
-android.provider.BaseColumns#_ID} của một sự kiện cụ thể.</p>
+android.provider.BaseColumns#_ID} của một sự kiện cụ thể.</p>
<p>Bảng sau liệt kê các trưá»ng
-có thể ghi được. Khi chèn má»™t ngưá»i dá»± má»›i, bạn phải Ä‘iá»n tất cả
+có thể ghi được. Khi chèn má»™t ngưá»i dá»± má»›i, bạn phải Ä‘iá»n tất cả
ngoại trừ <code>ATTENDEE_NAME</code>.
</p>
@@ -698,7 +698,7 @@ ngoại trừ <code>ATTENDEE_NAME</code>.
<h3 id="add-attendees">Thêm Ngưá»i dá»±</h3>
<p>Sau đây là má»™t ví dụ vá» cách thêm má»™t ngưá»i dá»± vào má»™t sá»± kiện. Lưu ý rằng
-{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
là bắt buộc:</p>
<pre>
@@ -718,17 +718,17 @@ Uri uri = cr.insert(Attendees.CONTENT_URI, values);
<h2 id="reminders">Bảng Nhắc nhở</h2>
<p>Mỗi hàng của bảng {@link android.provider.CalendarContract.Reminders} đại diện
-cho má»™t nhắc nhở cá»§a má»™t sá»± kiện. Gá»i
+cho má»™t nhắc nhở cá»§a má»™t sá»± kiện. Gá»i
{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} sẽ trả vỠmột danh sách nhắc nhở cho
-sự kiện với
+sự kiện với
{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} đã cho.</p>
<p>Bảng sau liệt kê các trưá»ng ghi được đối vá»›i nhắc nhở. Tất cả Ä‘á»u phải được
đưa vào khi chèn má»™t nhắc nhở má»›i. Lưu ý rằng các trình Ä‘iá»u hợp đồng bá»™ quy định
các loại nhắc nhở chúng hỗ trợ trong bảng {@link
-android.provider.CalendarContract.Calendars}. Xem
-{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
+android.provider.CalendarContract.Calendars}. Xem
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
để biết chi tiết.</p>
@@ -773,16 +773,16 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
<h2 id="instances">Bảng Thực thể</h2>
-<p>Bảng
+<p>Bảng
{@link android.provider.CalendarContract.Instances} chứa
thá»i gian bắt đầu và thá»i gian kết thúc cá»§a các lần xảy ra má»™t sá»± kiện. Má»—i hàng trong bảng này
đại diện cho một lần xảy ra sự kiện. Bảng thực thể không ghi được và chỉ
đưa ra một cách để truy vấn các lần xảy ra sự kiện. </p>
-<p>Bảng sau liệt kê má»™t số trưá»ng mà bạn có thể truy vấn đối vá»›i má»™t thá»±c thể. Lưu ý
-rằng múi giỠđược định nghĩa bởi
-{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
-và
+<p>Bảng sau liệt kê má»™t số trưá»ng mà bạn có thể truy vấn đối vá»›i má»™t thá»±c thể. Lưu ý
+rằng múi giỠđược định nghĩa bởi
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
+và
{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}.</p>
@@ -801,18 +801,18 @@ và
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
-
+
<td>Ngày kết thúc theo lịch Julian cá»§a thá»±c thể theo múi giá»
-của Lịch.
-
+của Lịch.
+
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
-
+
<td>Phút kết thúc cá»§a thá»±c thể được xác định từ ná»­a đêm theo múi giá»
của Lịch.</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
@@ -820,16 +820,16 @@ của Lịch.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
- <td>Ngày bắt đầu theo lịch Julian của thực thể theo múi giỠcủa Lịch.
+ <td>Ngày bắt đầu theo lịch Julian của thực thể theo múi giỠcủa Lịch.
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-
+
<td>Phút bắt đầu cá»§a thá»±c thể được xác định từ ná»­a đêm theo múi giá»
-của Lịch.
+của Lịch.
</td>
-
+
</tr>
</table>
@@ -840,7 +840,7 @@ của Lịch.
trong URI. Trong ví dụ này, {@link android.provider.CalendarContract.Instances}
có quyá»n truy cập trưá»ng {@link
android.provider.CalendarContract.EventsColumns#TITLE} thông qua việc
-triển khai giao diện {@link android.provider.CalendarContract.EventsColumns} của nó.
+triển khai giao diện {@link android.provider.CalendarContract.EventsColumns} của nó.
Nói cách khác, {@link
android.provider.CalendarContract.EventsColumns#TITLE} được trả vỠqua một
chế độ xem cơ sở dữ liệu, chứ không qua việc truy vấn bảng {@link
@@ -853,7 +853,7 @@ public static final String[] INSTANCE_PROJECTION = new String[] {
Instances.BEGIN, // 1
Instances.TITLE // 2
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_BEGIN_INDEX = 1;
@@ -868,7 +868,7 @@ long startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2011, 10, 24, 8, 0);
long endMillis = endTime.getTimeInMillis();
-
+
Cursor cur = null;
ContentResolver cr = getContentResolver();
@@ -883,28 +883,28 @@ ContentUris.appendId(builder, startMillis);
ContentUris.appendId(builder, endMillis);
// Submit the query
-cur = cr.query(builder.build(),
- INSTANCE_PROJECTION,
- selection,
- selectionArgs,
+cur = cr.query(builder.build(),
+ INSTANCE_PROJECTION,
+ selection,
+ selectionArgs,
null);
-
+
while (cur.moveToNext()) {
String title = null;
long eventID = 0;
- long beginVal = 0;
-
+ long beginVal = 0;
+
// Get the field values
eventID = cur.getLong(PROJECTION_ID_INDEX);
beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
title = cur.getString(PROJECTION_TITLE_INDEX);
-
- // Do something with the values.
- Log.i(DEBUG_TAG, "Event: " + title);
+
+ // Do something with the values.
+ Log.i(DEBUG_TAG, "Event: " + title);
Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(beginVal);
+ calendar.setTimeInMillis(beginVal);
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
- Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
+ Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
}
}</pre>
@@ -922,9 +922,9 @@ while (cur.moveToNext()) {
<td><br>
{@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
<td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
- Bạn cũng có thể tham khảo tới URI bằng
-{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}.
-Äể xem má»™t ví dụ vá» cách sá»­ dụng ý định này, hãy xem <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Sá»­ dụng ý định để xem dữ liệu lịch</a>.
+ Bạn cũng có thể tham khảo tới URI bằng
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}.
+Äể xem má»™t ví dụ vá» cách sá»­ dụng ý định này, hãy xem <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Sá»­ dụng ý định để xem dữ liệu lịch</a>.
</td>
<td>Mở lịch đến thá»i gian được chỉ định bởi <code>&lt;ms_since_epoch&gt;</code>.</td>
@@ -935,11 +935,11 @@ while (cur.moveToNext()) {
</td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
- Bạn cũng có thể tham khảo tới URI bằng
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+
+ Bạn cũng có thể tham khảo tới URI bằng
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
Äể xem má»™t ví dụ vá» cách sá»­ dụng ý định này, hãy xem <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Sá»­ dụng ý định để xem dữ liệu lịch</a>.
-
+
</td>
<td>Xem sự kiện được chỉ định bởi <code>&lt;event_id&gt;</code>.</td>
@@ -952,12 +952,12 @@ while (cur.moveToNext()) {
<tr>
<td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
- Bạn cũng có thể tham khảo tới URI bằng
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+
+ Bạn cũng có thể tham khảo tới URI bằng
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
Äể xem má»™t ví dụ vá» cách sá»­ dụng ý định này, hãy xem <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">Sá»­ dụng ý định để chỉnh sá»­a má»™t sá»± kiện</a>.
-
-
+
+
</td>
<td>Chỉnh sửa sự kiện được chỉ định bởi <code>&lt;event_id&gt;</code>.</td>
@@ -972,11 +972,11 @@ while (cur.moveToNext()) {
<br>
{@link android.content.Intent#ACTION_INSERT INSERT} </td>
<td><p><code>content://com.android.calendar/events</code></p>
-
- Bạn cũng có thể tham khảo tới URI bằng
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+
+ Bạn cũng có thể tham khảo tới URI bằng
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
Äể xem má»™t ví dụ vá» cách sá»­ dụng ý định này, hãy xem <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">Sá»­ dụng ý định để chèn má»™t sá»± kiện</a>.
-
+
</td>
<td>Tạo một sự kiện.</td>
@@ -996,7 +996,7 @@ while (cur.moveToNext()) {
<td>Tên cho sự kiện.</td>
</tr>
<tr>
-
+
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<td>Thá»i gian bắt đầu sá»± kiện tính bằng mili giây trôi qua kể từ giá» epoch.</td>
@@ -1004,25 +1004,25 @@ CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME}</td>
-
+
<td>Thá»i gian kết thúc sá»± kiện tính bằng mili giây trôi qua kể từ giá» epoch.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
-
+
<td>Một boolean cho biết đó là một sự kiện cả ngày. Giá trị có thể bằng
<code>true</code> hoặc <code>false</code>.</td> </tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
Events.EVENT_LOCATION}</td>
-
+
<td>Äịa Ä‘iểm cá»§a sá»± kiện.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
Events.DESCRIPTION}</td>
-
+
<td>Mô tả sự kiện.</td>
</tr>
<tr>
@@ -1039,16 +1039,16 @@ Events.DESCRIPTION}</td>
<td>
{@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
Events.ACCESS_LEVEL}</td>
-
+
<td>Sự kiện là riêng tư hay công khai.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
Events.AVAILABILITY}</td>
-
+
<td>Xem sá»± kiện này tính là thá»i gian bận hay là thá»i gian rảnh có thể được xếp lại lịch.</td>
-
-</table>
+
+</table>
<p>Các phần sau mô tả cách sử dụng những ý định này.</p>
@@ -1059,23 +1059,23 @@ Events.AVAILABILITY}</td>
Bằng cách này, ứng dụng cá»§a bạn thậm chí không cần phải có quyá»n {@link
android.Manifest.permission#WRITE_CALENDAR} được bao gồm trong <a href="#manifest">tệp bản kê khai</a> của mình.</p>
-
+
<p>Khi ngưá»i dùng chạy má»™t ứng dụng mà sá»­ dụng cách này, ứng dụng sẽ gá»­i
chúng tới Lịch để hoàn thành việc thêm một sự kiện. à định {@link
android.content.Intent#ACTION_INSERT INSERT} sá»­ dụng các trưá»ng phụ thêm để
Ä‘iá»n trước vào má»™t mẫu bằng các chi tiết cá»§a sá»± kiện trong Lịch. Khi đó, ngưá»i dùng có thể
hủy bỠsự kiện, chỉnh sửa mẫu nếu cần, hoặc lưu sự kiện vào lịch
của mình.</p>
-
+
<p>Sau đây là một đoạn mã HTML lập biểu một sự kiện vào ngày 19/1/2012, diễn ra
từ 7:30 sáng đến 8:30 sáng. Lưu ý Ä‘iá»u sau đây vá» Ä‘oạn mã HTML này:</p>
<ul>
- <li>Nó quy định {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}
+ <li>Nó quy định {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}
là Uri.</li>
-
+
<li>Nó sá»­ dụng các trưá»ng phụ {@link
android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME} và {@link
@@ -1083,10 +1083,10 @@ android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME} để Ä‘iá»n trước thá»i gian cá»§a sá»± kiện
vào mẫu. Các giá trị đối vá»›i những thá»i gian này phải tính bằng mili giây UTC
trôi qua kể từ giỠepoch.</li>
-
+
<li>Nó sá»­ dụng trưá»ng phụ {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
để cung cấp má»™t danh sách ngưá»i được má»i phân cách bằng dấu phẩy, được chỉ định theo địa chỉ e-mail.</li>
-
+
</ul>
<pre>
Calendar beginTime = Calendar.getInstance();
@@ -1158,18 +1158,18 @@ truy cập Trình cung cấp Lịch:</p>
<ul>
<li>Trình Ä‘iá»u hợp đồng bá»™ cần chỉ định rằng nó là má»™t trình Ä‘iá»u hợp đồng bá»™ bằng cách đặt {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} thành <code>true</code>.</li>
-
-
+
+
<li>Trình Ä‘iá»u hợp đồng bá»™ cần cung cấp má»™t {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} và một {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} làm tham số truy vấn trong URI. </li>
-
+
<li>Trình Ä‘iá»u hợp đồng bá»™ có quyá»n truy nhập ghi vào nhiá»u cá»™t hÆ¡n ứng dụng hay widget.
- Ví dụ, một ứng dụng chỉ có thể sửa đổi một vài đặc điểm của một lịch,
+ Ví dụ, một ứng dụng chỉ có thể sửa đổi một vài đặc điểm của một lịch,
chẳng hạn như tên lịch, tên hiển thị, thiết đặt hiển thị, và lịch có được
đồng bá»™ hay không. Nếu so sánh, má»™t trình Ä‘iá»u hợp đồng bá»™ có thể truy cập không chỉ những cá»™t đó, mà còn nhiá»u cá»™t khác,
chẳng hạn như màu lịch, múi giá», mức truy nhập, địa Ä‘iểm, v.v.
-Tuy nhiên, trình Ä‘iá»u hợp đồng bá»™ bị hạn chế đối vá»›i <code>ACCOUNT_NAME</code> và
+Tuy nhiên, trình Ä‘iá»u hợp đồng bá»™ bị hạn chế đối vá»›i <code>ACCOUNT_NAME</code> và
<code>ACCOUNT_TYPE</code> mà nó quy định.</li> </ul>
<p>Sau đây là má»™t phương pháp hữu ích hÆ¡n mà bạn có thể sá»­ dụng để trả vá» má»™t URI để dùng vá»›i má»™t trình Ä‘iá»u hợp đồng bá»™:</p>
@@ -1180,5 +1180,5 @@ Tuy nhiên, trình Ä‘iá»u hợp đồng bá»™ bị hạn chế đối vá»›i <cod
.appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
}
</pre>
-<p>Äể biết việc triển khai mẫu trình Ä‘iá»u hợp đồng bá»™ (không liên quan cụ thể tá»›i Lịch), hãy xem phần
+<p>Äể biết việc triển khai mẫu trình Ä‘iá»u hợp đồng bá»™ (không liên quan cụ thể tá»›i Lịch), hãy xem phần
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>.
diff --git a/docs/html-intl/intl/vi/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/vi/guide/topics/providers/contacts-provider.jd
index 2fa2ed3c9bdf..2d94e10c7ab8 100644
--- a/docs/html-intl/intl/vi/guide/topics/providers/contacts-provider.jd
+++ b/docs/html-intl/intl/vi/guide/topics/providers/contacts-provider.jd
@@ -253,7 +253,7 @@ page.title=Trình cung cấp Danh bạ
Ví dụ, nếu bạn muốn ứng dụng cá»§a mình duy trì dữ liệu danh bạ cho dịch vụ dá»±a trên ná»n web cá»§a mình
vá»›i miá»n {@code com.example.dataservice}, và tài khoản cá»§a ngưá»i dùng cho dịch vụ cá»§a bạn
là {@code becky.sharp@dataservice.example.com}, trước tiên, ngưá»i dùng phải thêm
- "loại" tài khoản ({@code com.example.dataservice}) và "tên" tài khoản
+ "loại" tài khoản ({@code com.example.dataservice}) và "tên" tài khoản
({@code becky.smart@dataservice.example.com}) trước khi ứng dụng của bạn có thể thêm hàng liên lạc thô.
Bạn có thể giải thích yêu cầu này vá»›i ngưá»i dùng bằng tài liệu, hoặc bạn có thể nhắc
ngưá»i dùng thêm loại và tên này, hoặc cả hai. Loại tài khoản và tên tài khoản
@@ -1697,7 +1697,7 @@ startActivity(insertIntent);
<p>
Nếu dịch vụ chấp nhận thông tin xác thực, trình xác thực có thể
lưu giữ thông tin xác thực đó để sử dụng sau. Vì khuôn khổ trình xác thực bổ trợ,
- {@link android.accounts.AccountManager} có thể cung cấp quyá»n truy cập bất kỳ token xác thá»±c nào mà má»™t trình xác thá»±c
+ {@link android.accounts.AccountManager} có thể cung cấp quyá»n truy cập bất kỳ token xác thá»±c nào mà má»™t trình xác thá»±c
há»— trợ và chá»n hiện ra, chẳng hạn như token xác thá»±c OAuth2.
</p>
<p>
@@ -1821,7 +1821,7 @@ mà cung cấp dữ liệu cụ thể cho
</dl>
<h2 id="SocialStream">Dữ liệu từ Luồng Xã hội</h2>
<p>
- Các bảng {@code android.provider.ContactsContract.StreamItems} và
+ Các bảng {@code android.provider.ContactsContract.StreamItems} và
{@code android.provider.ContactsContract.StreamItemPhotos} quản lý
dữ liệu đến từ các mạng xã há»™i. Bạn có thể ghi má»™t trình Ä‘iá»u hợp đồng bá»™ mà thêm dữ liệu luồng từ
mạng cá»§a chính mình vào những bảng này, hoặc bạn có thể Ä‘á»c dữ liệu luồng từ những bảng này và
@@ -1830,7 +1830,7 @@ mà cung cấp dữ liệu cụ thể cho
</p>
<h3 id="StreamText">Văn bản từ luồng xã hội</h3>
<p>
- Các mục dòng dữ liệu luôn được liên kết với một liên lạc thô.
+ Các mục dòng dữ liệu luôn được liên kết với một liên lạc thô.
{@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID} liên kết với giá trị
<code>_ID</code> của liên lạc thô mới. Loại tài khoản và tên tài khoản của liên lạc thô
cũng được lưu giữ trong hàng mục dòng.
@@ -1934,7 +1934,7 @@ mà cung cấp dữ liệu cụ thể cho
Cột này có sẵn để tương thích ngược với các phiên bản trước của Trình cung cấp
Danh bạ mà đã sử dụng nó để lưu giữ ảnh. Tuy nhiên, trong phiên bản hiện tại
bạn không nên sử dụng cột này để lưu giữ ảnh. Thay vào đó, hãy sử dụng
- hoặc {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} hoặc
+ hoặc {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} hoặc
{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI} (cả hai
Ä‘á»u được mô tả trong các Ä‘iểm sau) để lưu giữ ảnh trong má»™t tệp. Lúc này, cá»™t này
chứa má»™t hình thu nhá» cá»§a ảnh sẵn sàng để Ä‘á»c.
@@ -2344,7 +2344,7 @@ mà cung cấp dữ liệu cụ thể cho
việc truy xuất thông tin ảnh. Không có lá»›p thuận tiện cho việc truy xuất hình thu nhá»
chính đối với một liên lạc thô, nhưng bạn có thể gửi một truy vấn tới bảng
{@link android.provider.ContactsContract.Data}, chá»n
- {@code android.provider.BaseColumns#_ID} của liên lạc thô,
+ {@code android.provider.BaseColumns#_ID} của liên lạc thô,
{@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
Photo.CONTENT_ITEM_TYPE}, và cột {@link android.provider.ContactsContract.Data#IS_PRIMARY}
để tìm hàng ảnh chính của liên lạc thô.
diff --git a/docs/html-intl/intl/vi/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/vi/guide/topics/providers/content-provider-basics.jd
index 5f868cacf5ae..808c0f712a34 100644
--- a/docs/html-intl/intl/vi/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html-intl/intl/vi/guide/topics/providers/content-provider-basics.jd
@@ -236,7 +236,7 @@ page.title=Nội dung Cơ bản vỠTrình cung cấp Nội dung
Ví dụ, để có má»™t danh sách các từ và ná»™i dung bản địa cá»§a chúng từ Trình cung cấp Từ Ä‘iển Ngưá»i dùng,
bạn hãy gá»i {@link android.content.ContentResolver#query ContentResolver.query()}.
Phương pháp {@link android.content.ContentResolver#query query()} sẽ gá»i phương pháp
- {@link android.content.ContentProvider#query ContentProvider.query()} được định nghĩa bởi
+ {@link android.content.ContentProvider#query ContentProvider.query()} được định nghĩa bởi
Trình cung cấp Từ Ä‘iển Ngưá»i dùng. Các dòng mã sau thể hiện má»™t lệnh gá»i
{@link android.content.ContentResolver#query ContentResolver.query()}:
<p>
@@ -251,7 +251,7 @@ mCursor = getContentResolver().query(
</pre>
<p>
Bảng 2 cho biết các tham đối tới
- {@link android.content.ContentResolver#query
+ {@link android.content.ContentResolver#query
query(Uri,projection,selection,selectionArgs,sortOrder)} khớp với một câu lệnh SQL SELECT như thế nào:
</p>
<p class="table-caption">
@@ -292,7 +292,7 @@ mCursor = getContentResolver().query(
<td align="center"><code>sortOrder</code></td>
<td align="center"><code>ORDER BY <em>col,col,...</em></code></td>
<td>
- <code>sortOrder</code> quy định thứ tự các hàng xuất hiện trong
+ <code>sortOrder</code> quy định thứ tự các hàng xuất hiện trong
{@link android.database.Cursor} được trả vá».
</td>
</tr>
@@ -344,7 +344,7 @@ Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
</p>
<p class="note">
<strong>Lưu ý:</strong> Các lớp {@link android.net.Uri} và {@link android.net.Uri.Builder}
- chứa các phương pháp thuận tiện để xây dựng đối tượng URI định dạng tốt từ các xâu.
+ chứa các phương pháp thuận tiện để xây dựng đối tượng URI định dạng tốt từ các xâu.
{@link android.content.ContentUris} chứa các phương pháp thuận tiện để nối các giá trị id với
má»™t URI. Äoạn mã HTML trước sá»­ dụng {@link android.content.ContentUris#withAppendedId
withAppendedId()} để nối má»™t id vá»›i URI ná»™i dung Từ Ä‘iển Ngưá»i dùng.
@@ -359,8 +359,8 @@ withAppendedId()} để nối má»™t id vá»›i URI ná»™i dung Từ Ä‘iển Ngưá»
</p>
<p class="note">
Äể giải thích rõ, Ä‘oạn mã HTML trong phần này gá»i
- {@link android.content.ContentResolver#query ContentResolver.query()} trên "luồng UI"". Tuy nhiên, trong
- mã thực sự, bạn nên thực hiện các truy vấn không đồng bộ trên một luồng riêng. Một cách để làm
+ {@link android.content.ContentResolver#query ContentResolver.query()} trên "luồng UI"". Tuy nhiên, trong
+ mã thực sự, bạn nên thực hiện các truy vấn không đồng bộ trên một luồng riêng. Một cách để làm
Ä‘iá»u này đó là sá»­ dụng lá»›p {@link android.content.CursorLoader}, nó được mô tả chi tiết hÆ¡n
trong hướng dẫn <a href="{@docRoot}guide/components/loaders.html">
Trình tải</a>. Bênh cạnh đó, các dòng mã chỉ là đoạn mã HTML; chúng không thể hiện một ứng dụng
@@ -428,7 +428,7 @@ String[] mSelectionArgs = {""};
<p>
Äoạn mã HTML tiếp theo cho biết cách sá»­ dụng
{@link android.content.ContentResolver#query ContentResolver.query()}, bằng cách sử dụng Trình cung cấp Từ điển
- Ngưá»i dùng như má»™t ví dụ. Truy vấn máy khách trình cung cấp tương tá»± như má»™t truy vấn SQL, và nó chứa má»™t
+ Ngưá»i dùng như má»™t ví dụ. Truy vấn máy khách trình cung cấp tương tá»± như má»™t truy vấn SQL, và nó chứa má»™t
tập hợp các cá»™t để trả vá», má»™t tập hợp các tiêu chí lá»±a chá»n, và má»™t thứ tá»± sắp xếp.
</p>
<p>
@@ -438,8 +438,8 @@ String[] mSelectionArgs = {""};
<p>
Biểu thức để chỉ định các hàng cần truy xuất sẽ được chia thành má»™t mệnh đỠlá»±a chá»n và
tham đối lá»±a chá»n. Mệnh đỠlá»±a chá»n là sá»± kết hợp giữa các biểu thức lô-gic và biểu thức Boolean,
- tên cột, và giá trị (biến <code>mSelectionClause</code>). Nếu bạn chỉ định
- tham số thay thế được <code>?</code> thay vì một giá trị, phương pháp truy vấn sẽ truy xuất giá trị
+ tên cột, và giá trị (biến <code>mSelectionClause</code>). Nếu bạn chỉ định
+ tham số thay thế được <code>?</code> thay vì một giá trị, phương pháp truy vấn sẽ truy xuất giá trị
từ mảng tham đối lá»±a chá»n (biến <code>mSelectionArgs</code>).
</p>
<p>
@@ -565,14 +565,14 @@ selectionArgs[0] = mUserInput;
<!-- Displaying the results -->
<h3 id="DisplayResults">Hiển thị các kết quả truy vấn</h3>
<p>
- Phương pháp máy khách {@link android.content.ContentResolver#query ContentResolver.query()} luôn trả vá»
- một {@link android.database.Cursor} chứa các cột được chỉ định bởi dự thảo của
- truy vấn cho các hàng khá»›p vá»›i các tiêu chí lá»±a chá»n cá»§a truy vấn. Má»™t đối tượng
- {@link android.database.Cursor} cung cấp truy cập Ä‘á»c ngẫu nhiên vào các hàng và cá»™t mà nó
- chứa. Bằng cách sử dụng phương pháp {@link android.database.Cursor}, bạn có thể lặp lại các hàng trong
+ Phương pháp máy khách {@link android.content.ContentResolver#query ContentResolver.query()} luôn trả vá»
+ một {@link android.database.Cursor} chứa các cột được chỉ định bởi dự thảo của
+ truy vấn cho các hàng khá»›p vá»›i các tiêu chí lá»±a chá»n cá»§a truy vấn. Má»™t đối tượng
+ {@link android.database.Cursor} cung cấp truy cập Ä‘á»c ngẫu nhiên vào các hàng và cá»™t mà nó
+ chứa. Bằng cách sử dụng phương pháp {@link android.database.Cursor}, bạn có thể lặp lại các hàng trong
kết quả, xác định kiểu dữ liệu cá»§a từng cá»™t, lấy dữ liệu ra khá»i cá»™t, và kiểm tra các tính chất khác
- của kết quả. Một số triển khai {@link android.database.Cursor} sẽ tự động
- cập nhật đối tượng khi dữ liệu của trình cung cấp thay đổi, hoặc kích khởi các phương pháp trong một đối tượng quan sát
+ của kết quả. Một số triển khai {@link android.database.Cursor} sẽ tự động
+ cập nhật đối tượng khi dữ liệu của trình cung cấp thay đổi, hoặc kích khởi các phương pháp trong một đối tượng quan sát
khi {@link android.database.Cursor} thay đổi, hoặc cả hai.
</p>
<p class="note">
@@ -703,14 +703,14 @@ if (mCursor != null) {
<p>
Äể nhận các quyá»n cần để truy cập má»™t trình cung cấp, ứng dụng yêu cầu chúng bằng má»™t phần tá»­
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
- trong tệp bản kê khai cá»§a nó. Khi Trình quản lý Gói Android cài đặt các ứng dụng, ngưá»i dùng
+ trong tệp bản kê khai cá»§a nó. Khi Trình quản lý Gói Android cài đặt các ứng dụng, ngưá»i dùng
phải phê chuẩn tất cả quyá»n mà ứng dụng yêu cầu. Nếu ngưá»i dùng phê chuẩn tất cả quyá»n, khi đó
Trình quản lý Gói sẽ tiếp tục cài đặt; nếu ngưá»i dùng không phê chuẩn chúng, Trình quản lý Gói sẽ
hủy bỠviệc cài đặt.
</p>
<p>
Phần tử
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
sau yêu cầu quyá»n truy cập Ä‘á»c vào Trình cung cấp Từ Ä‘iển Ngưá»i dùng:
</p>
<pre>
@@ -793,8 +793,8 @@ content://user_dictionary/words/&lt;id_value&gt;
Äể cập nhật má»™t hàng, bạn sá»­ dụng má»™t đối tượng {@link android.content.ContentValues} vá»›i các giá trị
được cập nhật giống như cách bạn làm vá»›i việc chèn, và các tiêu chí lá»±a chá»n giống như cách bạn làm vá»›i truy vấn.
Phương pháp máy khách mà bạn sử dụng là
- {@link android.content.ContentResolver#update ContentResolver.update()}. Bạn chỉ cần thêm
- các giá trị vào đối tượng {@link android.content.ContentValues} cho các cột mà bạn đang cập nhật. Nếu bạn
+ {@link android.content.ContentResolver#update ContentResolver.update()}. Bạn chỉ cần thêm
+ các giá trị vào đối tượng {@link android.content.ContentValues} cho các cột mà bạn đang cập nhật. Nếu bạn
muốn xóa các nội dung của một cột, hãy đặt giá trị thành <code>null</code>.
</p>
<p>
@@ -828,7 +828,7 @@ mRowsUpdated = getContentResolver().update(
</pre>
<p>
Bạn cÅ©ng nên thanh lá»c thông tin đầu vào cá»§a ngưá»i dùng khi gá»i
- {@link android.content.ContentResolver#update ContentResolver.update()}. Äể tìm hiểu thêm vá»
+ {@link android.content.ContentResolver#update ContentResolver.update()}. Äể tìm hiểu thêm vá»
Ä‘iá»u này, hãy Ä‘á»c phần <a href="#Injection">Bảo vệ trước mục nhập độc hại</a>.
</p>
<h3 id="Deleting">Xóa dữ liệu</h3>
@@ -858,7 +858,7 @@ mRowsDeleted = getContentResolver().delete(
</pre>
<p>
Bạn cÅ©ng nên thanh lá»c thông tin đầu vào cá»§a ngưá»i dùng khi gá»i
- {@link android.content.ContentResolver#delete ContentResolver.delete()}. Äể tìm hiểu thêm vá»
+ {@link android.content.ContentResolver#delete ContentResolver.delete()}. Äể tìm hiểu thêm vá»
Ä‘iá»u này, hãy Ä‘á»c phần <a href="#Injection">Bảo vệ trước mục nhập độc hại</a>.
</p>
<!-- Provider Data Types -->
@@ -929,7 +929,7 @@ mRowsDeleted = getContentResolver().delete(
</li>
<li>
<a href="#Intents">Truy cập dữ liệu thông qua ý định</a>: Mặc dù không thể gửi một ý định
- trực tiếp tới một trình cung cấp, bạn có thể gửi một ý định tới ứng dụng của trình cung cấp đó,
+ trực tiếp tới một trình cung cấp, bạn có thể gửi một ý định tới ứng dụng của trình cung cấp đó,
đây thưá»ng là cách tốt nhất để sá»­a đổi dữ liệu cá»§a trình cung cấp.
</li>
</ul>
@@ -947,14 +947,14 @@ mRowsDeleted = getContentResolver().delete(
bạn tạo một mảng đối tượng {@link android.content.ContentProviderOperation} rồi
phân phối chúng tới một trình cung cấp nội dung bằng
{@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. Bạn chuyển
- <em>quyá»n</em> cá»§a trình cung cấp ná»™i dung cho phương pháp này thay vì má»™t URI ná»™i dung cụ thể.
+ <em>quyá»n</em> cá»§a trình cung cấp ná»™i dung cho phương pháp này thay vì má»™t URI ná»™i dung cụ thể.
Äiá»u này cho phép đối tượng {@link android.content.ContentProviderOperation} trong mảng có tác dụng
đối vá»›i má»™t bảng khác. Má»™t lệnh gá»i tá»›i {@link android.content.ContentResolver#applyBatch
ContentResolver.applyBatch()} trả vỠmột mảng kết quả.
</p>
<p>
Mô tả lớp hợp đồng {@link android.provider.ContactsContract.RawContacts}
- bao gồm một đoạn mã HTML thể hiện việc chèn hàng loạt. Ứng dụng mẫu
+ bao gồm một đoạn mã HTML thể hiện việc chèn hàng loạt. Ứng dụng mẫu
<a href="{@docRoot}resources/samples/ContactManager/index.html">Trình quản lý Danh bạ</a>
có một ví dụ vỠtruy cập hàng loạt trong tệp nguồn <code>ContactAdder.java</code>
của nó.
@@ -1053,7 +1053,7 @@ mRowsDeleted = getContentResolver().delete(
trả kiểm soát vỠứng dụng của bạn.
</li>
<li>
- Hoạt động cá»§a bạn trả vá» tiá»n cảnh, và hệ thống sẽ gá»i phương pháp
+ Hoạt động cá»§a bạn trả vá» tiá»n cảnh, và hệ thống sẽ gá»i phương pháp
{@link android.app.Activity#onActivityResult onActivityResult()}
cá»§a hoạt động cá»§a bạn. Phương pháp này nhận được ý định kết quả do hoạt động lá»±a chá»n tạo trong
ứng dụng Danh bạ.
diff --git a/docs/html-intl/intl/vi/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/vi/guide/topics/providers/content-provider-creating.jd
index 2e8579a1e92e..fcc9b0eb60ef 100644
--- a/docs/html-intl/intl/vi/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html-intl/intl/vi/guide/topics/providers/content-provider-creating.jd
@@ -221,7 +221,7 @@ page.title=Tạo một Trình cung cấp Nội dung
có một trình cung cấp cho phép kết hợp dữ liệu bảng và các tệp.
</li>
<li>
- Äể làm việc vá»›i dữ liệu trên ná»n mạng, hãy sá»­ dụng các lá»›p trong {@link java.net} và
+ Äể làm việc vá»›i dữ liệu trên ná»n mạng, hãy sá»­ dụng các lá»›p trong {@link java.net} và
{@link android.net}. Bạn cÅ©ng có thể đồng bá»™ hoá dữ liệu trên ná»n mạng vá»›i má»™t kho lưu trữ dữ liệu cục bá»™
chẳng hạn như một cơ sở dữ liệu, rồi cung cấp dữ liệu dưới dạng bảng hoặc tệp.
Ứng dụng mẫu <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
@@ -381,7 +381,7 @@ page.title=Tạo một Trình cung cấp Nội dung
</dt>
<dd>
Khớp với một URI nội dung cho các bảng <code>dataset1</code>
- và <code>dataset2</code>, nhưng không khớp với URI nội dung cho <code>table1</code> hoặc
+ và <code>dataset2</code>, nhưng không khớp với URI nội dung cho <code>table1</code> hoặc
<code>table3</code>.
</dd>
<dt>
@@ -614,7 +614,7 @@ public class ExampleProvider extends ContentProvider {
</p>
<h3 id="Delete">Triển khai phương pháp delete()</h3>
<p>
- Phương pháp {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
+ Phương pháp {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
không cần phải xóa hàng thá»±c chất khá»i kho lưu trữ dữ liệu cá»§a bạn. Nếu bạn Ä‘ang sá»­ dụng má»™t trình Ä‘iá»u hợp đồng bá»™
với trình cung cấp của mình, bạn nên cân nhắc đánh dấu một hàng đã xóa
bằng cá» "xóa" thay vì gỡ bá» hàng má»™t cách hoàn toàn. Trình Ä‘iá»u hợp đồng bá»™ có thể
@@ -626,7 +626,7 @@ public class ExampleProvider extends ContentProvider {
update()} lấy cùng tham đối {@link android.content.ContentValues} được sử dụng bởi
{@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}, và
cùng tham đối <code>selection</code> và <code>selectionArgs</code> được sử dụng bởi
- {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} và
+ {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} và
{@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
ContentProvider.query()}. Äiá»u này có thể cho phép bạn sá»­ dụng lại mã giữa những phương pháp này.
</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/vi/guide/topics/providers/document-provider.jd
index 30844d7c277e..7948fc259409 100644
--- a/docs/html-intl/intl/vi/guide/topics/providers/document-provider.jd
+++ b/docs/html-intl/intl/vi/guide/topics/providers/document-provider.jd
@@ -146,7 +146,7 @@ không thay đổi giữa các lần khởi động lại thiết bị.</li>
<li>Tài liệu có thể là một tệp mở được (có một kiểu MIME cụ thể), hoặc một
-thư mục chứa các tài liệu bổ sung (có kiểu MIME
+thư mục chứa các tài liệu bổ sung (có kiểu MIME
{@link android.provider.DocumentsContract.Document#MIME_TYPE_DIR}).</li>
<li>Mỗi tài liệu có thể có các khả năng khác nhau như được mô tả bởi
@@ -177,7 +177,7 @@ có thể sử dụng kho lưu trữ đám mây dựa trên tag cho dữ liệu
trá»±c tiếp vá»›i nhau. Má»™t máy khách yêu cầu quyá»n để tương tác
vá»›i tệp (cụ thể là quyá»n Ä‘á»c, chỉnh sá»­a, tạo hoặc xóa tệp).</li>
-<li>Tương tác bắt đầu khi một ứng dụng (trong ví dụ này này một ứng dụng ảnh) thể hiện ý định
+<li>Tương tác bắt đầu khi một ứng dụng (trong ví dụ này này một ứng dụng ảnh) thể hiện ý định
{@link android.content.Intent#ACTION_OPEN_DOCUMENT} hoặc {@link android.content.Intent#ACTION_CREATE_DOCUMENT}. à định có thể bao gồm các bá»™ lá»c
để cụ thể hơn các tiêu chí&mdash;ví dụ, "cấp cho tôi tất cả tệp mở được
có kiểu MIME là 'image'."</li>
diff --git a/docs/html-intl/intl/vi/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/vi/guide/topics/resources/accessing-resources.jd
index b5491dcdee2c..0054562cde1a 100644
--- a/docs/html-intl/intl/vi/guide/topics/resources/accessing-resources.jd
+++ b/docs/html-intl/intl/vi/guide/topics/resources/accessing-resources.jd
@@ -259,8 +259,8 @@ tham chiếu một tài nguyên hệ thống, bạn sẽ cần đưa vào tên g
android:text=&quot;&#64;string/hello&quot; /&gt;
</pre>
-<p class="note"><strong>Lưu ý:</strong> Bạn nên sử dụng các tài nguyên xâu
-vào má»i lúc, để ứng dụng cá»§a bạn có thể được bản địa hóa cho các ngôn ngữ khác.
+<p class="note"><strong>Lưu ý:</strong> Bạn nên sử dụng các tài nguyên xâu
+vào má»i lúc, để ứng dụng cá»§a bạn có thể được bản địa hóa cho các ngôn ngữ khác.
Äể biết thông tin vá» việc tạo các tài nguyên
thay thế (chẳng hạn như xâu được bản địa hóa), hãy xem phần <a href="providing-resources.html#AlternativeResources">Cung cấp Tài nguyên
Thay thế</a>. Äể được hướng dẫn đầy đủ vá» việc bản địa hóa ứng dụng cá»§a bạn cho các ngôn ngữ khác,
diff --git a/docs/html-intl/intl/vi/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/vi/guide/topics/resources/providing-resources.jd
index b733643e75cd..ef1c6b6d4c77 100644
--- a/docs/html-intl/intl/vi/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/vi/guide/topics/resources/providing-resources.jd
@@ -190,7 +190,7 @@ phải được lưu ở đây, chẳng hạn như một <a href="{@docRoot}guid
</tr>
</table>
-<p class="caution"><strong>Chú ý:</strong> Không được lưu tệp tài nguyên trực tiếp vào trong thư mục
+<p class="caution"><strong>Chú ý:</strong> Không được lưu tệp tài nguyên trực tiếp vào trong thư mục
{@code res/}&mdash;nó sẽ gây ra lỗi với trình biên dịch.</p>
<p>Äể biết thêm thông tin vá» các loại tài nguyên, hãy xem tài liệu <a href="available-resources.html">Các Loại Tài nguyên</a>.</p>
@@ -312,7 +312,7 @@ mã mạng di động hiện tại.</p>
v.v.
</td>
<td><p>Ngôn ngữ được định nghĩa bằng một mã ngôn ngữ <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
- 639-1</a> gồm hai chữ cái, có thể theo sau là một mã khu vực
+ 639-1</a> gồm hai chữ cái, có thể theo sau là một mã khu vực
<a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO
3166-1-alpha-2</a> dài hai chữ cái (đằng trước là "{@code r}" chữ thưá»ng).
</p><p>
@@ -498,7 +498,7 @@ Nhiá»u Màn hình</a>.</p>
<li>{@code xlarge}: Các màn hình lớn hơn đáng kể so với màn hình
HVGA mật độ trung bình truyá»n thống. Kích cỡ bố trí tối thiểu đối vá»›i má»™t màn hình siêu lá»›n
bằng xấp xỉ 720x960 đơn vị dp. Trong hầu hết trưá»ng hợp, những thiết bị có màn hình
- siêu lớn sẽ quá lớn để mang trong túi và gần như là
+ siêu lớn sẽ quá lớn để mang trong túi và gần như là
thiết bị kiểu máy tính bảng. <em>ÄÆ°á»£c thêm trong API mức 9.</em></li>
</ul>
<p class="note"><strong>Lưu ý:</strong> Việc sử dụng một hạn định kích cỡ không hàm ý rằng các
@@ -510,7 +510,7 @@ bất kỳ tài nguyên nào <a href="#BestMatch">phù hợp nhất</a>.</p>
ứng dụng cá»§a bạn sẽ bị lá»—i vào thá»i gian chạy (ví dụ, nếu tất cả tài nguyên bố trí được gắn thẻ hạn định {@code
xlarge} nhưng thiết bị lại có màn hình kích cỡ bình thưá»ng).</p>
<p><em>ÄÆ°á»£c thêm trong API mức 4.</em></p>
-
+
<p>Xem <a href="{@docRoot}guide/practices/screens_support.html">Há»— trợ Nhiá»u
Màn hình</a> để biết thêm thông tin.</p>
<p>Xem thêm trưá»ng cấu hình {@link android.content.res.Configuration#screenLayout},
@@ -530,7 +530,7 @@ hay lá»›n.</p>
<li>{@code notlong}: Màn hình không dài, chẳng hạn như QVGA, HVGA và VGA</li>
</ul>
<p><em>ÄÆ°á»£c thêm trong API mức 4.</em></p>
- <p>Giá trị này thuần túy được dựa trên tỷ lệ khung ảnh của màn hình (màn hình "dài" sẽ rộng hơn). Nó
+ <p>Giá trị này thuần túy được dựa trên tỷ lệ khung ảnh của màn hình (màn hình "dài" sẽ rộng hơn). Nó
không liên quan tới hướng của màn hình.</p>
<p>Xem thêm trưá»ng cấu hình {@link android.content.res.Configuration#screenLayout},
ở đó cho biết màn hình có dài không.</p>
@@ -628,7 +628,7 @@ Mức 8</em></li>
<li>{@code xxhdpi}: Màn hình mật độ siêu siêu cao; xấp xỉ 480dpi. <em>ÄÆ°á»£c thêm trong API
Mức 16</em></li>
<li>{@code xxxhdpi}: Mật độ siêu siêu siêu cao sử dụng (chỉ biểu tượng trình khởi chạy, xem
- <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">ghi chú</a>
+ <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">ghi chú</a>
trong <em>Há»— trợ Nhiá»u Màn hình</em>); xấp xỉ 640dpi. <em>ÄÆ°á»£c thêm trong API
Mức 18</em></li>
<li>{@code nodpi}: Loại này có thể được sử dụng cho tài nguyên bitmap mà bạn không muốn được định cỡ
@@ -950,7 +950,7 @@ layout-land/} cho khổ ngang và {@code layout-port/} cho khổ dá»c, hãy Ä‘á
cấu hình mà bạn chưa nghĩ đến, mà còn bởi các phiên bản Android mới đôi khi thêm
hạn định cấu hình mà những phiên bản cũ hơn không hỗ trợ. Nếu bạn sử dụng một hạn định tài nguyên mới,
nhưng vẫn duy trì tính tương thích vỠmã với các phiên bản cũ hơn của Android thì khi một phiên bản cũ hơn của
-Android chạy trên ứng dụng của bạn, nó sẽ bị lỗi nếu bạn không cung cấp tài nguyên mặc định, do nó
+Android chạy trên ứng dụng của bạn, nó sẽ bị lỗi nếu bạn không cung cấp tài nguyên mặc định, do nó
không thể sử dụng tài nguyên được đặt tên bằng hạn định mới. Ví dụ, nếu <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
minSdkVersion}</a> của bạn được đặt bằng 4, và bạn xác định tất cả tài nguyên vẽ được của mình bằng cách sử dụng <a href="#NightQualifier">chế độ ban đêm</a> ({@code night} hoặc {@code notnight}, đã được thêm trong API
Mức 8), khi đó má»™t thiết bị API mức 4 sẽ không thể truy cập tài nguyên vẽ được cá»§a bạn và sẽ bị lá»—i. Trong trưá»ng hợp
diff --git a/docs/html-intl/intl/vi/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/vi/guide/topics/resources/runtime-changes.jd
index 4a9c38ccfe60..328b8ec3ad8e 100644
--- a/docs/html-intl/intl/vi/guide/topics/resources/runtime-changes.jd
+++ b/docs/html-intl/intl/vi/guide/topics/resources/runtime-changes.jd
@@ -82,12 +82,12 @@ hoạt động của mình để giữ lại các đối tượng có trạng th
<p>Äể giữ lại các đối tượng có trạng thái trong má»™t phân Ä‘oạn trong khi thay đổi cấu hình thá»i gian chạy:</p>
<ol>
- <li>Mở rộng lớp {@link android.app.Fragment} và khai báo các tham chiếu tới đối tượng
+ <li>Mở rộng lớp {@link android.app.Fragment} và khai báo các tham chiếu tới đối tượng
có trạng thái của bạn.</li>
<li>Gá»i {@link android.app.Fragment#setRetainInstance(boolean)} khi phân Ä‘oạn được tạo.
</li>
<li>Thêm phân đoạn vào hoạt động của bạn.</li>
- <li>Sử dụng {@link android.app.FragmentManager} để truy xuất phân đoạn khi hoạt động
+ <li>Sử dụng {@link android.app.FragmentManager} để truy xuất phân đoạn khi hoạt động
được khởi động lại.</li>
</ol>
@@ -125,8 +125,8 @@ rò rỉ tất cả dạng xem và tài nguyên của thực thể hoạt độn
có nghÄ©a là ứng dụng cá»§a bạn duy trì việc lưu giữ tài nguyên và chúng không thể được thu dá»n bá»™ nhá»› rác, vì thế
rất nhiá»u bá»™ nhá»› có thể bị mất.)</p>
-<p>Khi đó, hãy sử dụng {@link android.app.FragmentManager} để thêm phân đoạn vào hoạt động.
-Bạn có thể thu được đối tượng dữ liệu từ phân đoạn khi hoạt động bắt đầu lại trong khi
+<p>Khi đó, hãy sử dụng {@link android.app.FragmentManager} để thêm phân đoạn vào hoạt động.
+Bạn có thể thu được đối tượng dữ liệu từ phân đoạn khi hoạt động bắt đầu lại trong khi
thay đổi cấu hình thá»i gian chạy. Ví dụ, định nghÄ©a hoạt động cá»§a bạn như sau:</p>
<pre>
@@ -168,7 +168,7 @@ public class MyActivity extends Activity {
<p>Trong ví dụ này, {@link android.app.Activity#onCreate(Bundle) onCreate()} thêm một phân đoạn
hoặc khôi phục một tham chiếu đến nó. {@link android.app.Activity#onCreate(Bundle) onCreate()} cũng
lưu trữ đối tượng có trạng thái bên trong thực thể phân đoạn đó.
-{@link android.app.Activity#onDestroy() onDestroy()} cập nhật đối tượng có trạng thái bên trong
+{@link android.app.Activity#onDestroy() onDestroy()} cập nhật đối tượng có trạng thái bên trong
thực thể phân đoạn được giữ lại.</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/controls.jd b/docs/html-intl/intl/vi/guide/topics/ui/controls.jd
index 37fe81c8c73a..eda00506d0af 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@ kiểu Ä‘iá»u khiển nhập liệu cụ thể, bạn có thể xây dá»±ng <a
<tr>
<td><a href="controls/radiobutton.html">Nút chá»n má»™t</a></td>
<td>Tương tá»± như há»™p kiểm, chỉ khác ở chá»— chỉ có thể chá»n má»™t tùy chá»n trong nhóm.</td>
- <td>{@link android.widget.RadioGroup RadioGroup}
+ <td>{@link android.widget.RadioGroup RadioGroup}
<br>{@link android.widget.RadioButton RadioButton} </td>
</tr>
<tr>
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/vi/guide/topics/ui/declaring-layout.jd
index 6add812d89f7..54852000a50f 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/declaring-layout.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/declaring-layout.jd
@@ -107,7 +107,7 @@ trong thư mục dá»± án <code>res/layout/</code> Android cá»§a bạn để biÃ
<h2 id="load">Nạp Tài nguyên XML</h2>
-<p>Khi bạn biên dịch ứng dụng của mình, từng tệp bố trí XML được biên dịch thành một tài nguyên
+<p>Khi bạn biên dịch ứng dụng của mình, từng tệp bố trí XML được biên dịch thành một tài nguyên
{@link android.view.View}. Bạn nên nạp tài nguyên bố trí từ mã ứng dụng cá»§a mình, trong triển khai gá»i lại
{@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()} của bạn.
Làm vậy bằng cách gá»i <code>{@link android.app.Activity#setContentView(int) setContentView()}</code>,
@@ -260,7 +260,7 @@ Tài nguyên Có sẵn</a>.</p>
</p>
<p>
- Cặp thứ nhất được gá»i là <em>chiá»u rá»™ng Ä‘o được</em> và
+ Cặp thứ nhất được gá»i là <em>chiá»u rá»™ng Ä‘o được</em> và
<em>chiá»u cao Ä‘o được</em>. Những kích thước này xác định má»™t dạng xem muốn phóng lá»›n bao nhiêu
trong dạng xem mẹ của nó. Các
kích thước Ä‘o được có thể thu được bằng cách gá»i {@link android.view.View#getMeasuredWidth()}
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/vi/guide/topics/ui/dialogs.jd
index 1fa45508ef0c..00d523014a64 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@ page.tags=alertdialog,dialogfragment
<li>{@link android.app.DialogFragment}</li>
<li>{@link android.app.AlertDialog}</li>
</ol>
-
+
<h2>Xem thêm</h2>
<ol>
<li><a href="{@docRoot}design/building-blocks/dialogs.html">Hướng dẫn thiết kế hộp thoại</a></li>
@@ -235,8 +235,8 @@ AlertDialog dialog = builder.create();
</pre>
<p>Các phương pháp <code>set...Button()</code> yêu cầu một tiêu đỠcho nút (được cung cấp
-bởi một <a href="{@docRoot}guide/topics/resources/string-resource.html">tài nguyên xâu</a>) và một
-{@link android.content.DialogInterface.OnClickListener} có chức năng định nghĩa hành động sẽ tiến hành
+bởi một <a href="{@docRoot}guide/topics/resources/string-resource.html">tài nguyên xâu</a>) và một
+{@link android.content.DialogInterface.OnClickListener} có chức năng định nghĩa hành động sẽ tiến hành
khi ngưá»i dùng nhấn nút.</p>
<p>Có ba nút hành động khác nhau mà bạn có thể thêm:</p>
@@ -248,7 +248,7 @@ khi ngưá»i dùng nhấn nút.</p>
<dt>Trung lập</dt>
<dd>Bạn nên sá»­ dụng nút này khi ngưá»i dùng có thể không muốn tiếp tục vá»›i hành động,
nhưng không hẳn muốn há»§y bá». Nó nằm ở giữa nút
- tích cực và tiêu cực. Ví dụ, hành động có thể là "Nhắc tôi sau."</dd>
+ tích cực và tiêu cực. Ví dụ, hành động có thể là "Nhắc tôi sau."</dd>
</dl>
<p>Bạn chỉ có thể thêm một nút mỗi loại vào một {@link
@@ -271,7 +271,7 @@ Hộp thoại có tiêu đỠvà danh sách.</p>
<li>Danh sách nhiá»u lá»±a chá»n cố định (há»™p kiểm)</li>
</ul>
-<p>Äể tạo danh sách má»™t lá»±a chá»n như danh sách trong hình 3,
+<p>Äể tạo danh sách má»™t lá»±a chá»n như danh sách trong hình 3,
hãy sử dụng phương pháp {@link android.app.AlertDialog.Builder#setItems setItems()}:</p>
<pre style="clear:right">
@@ -291,7 +291,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<p>Vì danh sách xuất hiện trong vùng nội dung của hộp thoại,
hộp thoại không thể hiển thị cả thông báo và danh sách và bạn nên đặt một tiêu đỠcho hộp thoại
-bằng {@link android.app.AlertDialog.Builder#setTitle setTitle()}.
+bằng {@link android.app.AlertDialog.Builder#setTitle setTitle()}.
Äể chỉ định các mục cho danh sách, hãy gá»i {@link
android.app.AlertDialog.Builder#setItems setItems()}, chuyển một mảng.
Hoặc, bạn có thể chỉ định một danh sách bằng cách sử dụng {@link
@@ -317,11 +317,11 @@ Danh sách nhiá»u mục lá»±a chá»n.</p>
<h4 id="Checkboxes">Thêm má»™t danh sách nhiá»u lá»±a chá»n hoặc má»™t lá»±a chá»n cố định</h4>
-<p>Äể thêm má»™t danh sách nhiá»u lá»±a chá»n (há»™p kiểm) hoặc
+<p>Äể thêm má»™t danh sách nhiá»u lá»±a chá»n (há»™p kiểm) hoặc
má»™t lá»±a chá»n (nút chá»n má»™t), hãy sá»­ dụng các phương pháp
{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} hoặc
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} hoặc
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()} tương ứng.</p>
<p>Ví dụ, sau đây là cách bạn có thể tạo má»™t danh sách nhiá»u lá»±a chá»n như
@@ -346,7 +346,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
- // Else, if the item is already in the array, remove it
+ // Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
@@ -373,7 +373,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<p>Mặc dù cả danh sách truyá»n thống và danh sách có nút chá»n má»™t
Ä‘á»u cung cấp hành động "má»™t lá»±a chá»n", bạn nên sá»­ dụng {@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()} nếu bạn muốn cố định lá»±a chá»n cá»§a ngưá»i dùng.
Cụ thể, nếu việc mở há»™p thoại lại sau này báo hiệu lá»±a chá»n hiện tại cá»§a ngưá»i dùng, khi đó
bạn hãy tạo má»™t danh sách vá»›i các nút chá»n má»™t.</p>
@@ -442,7 +442,7 @@ bạn nên đổi há» phông thành {@code "sans-serif"} sao cho cả hai trưá
một kiểu phông thống nhất.</p>
<p>Äể bung bố trí ra trong {@link android.support.v4.app.DialogFragment} cá»§a bạn,
-hãy lấy một {@link android.view.LayoutInflater} với
+hãy lấy một {@link android.view.LayoutInflater} với
{@link android.app.Activity#getLayoutInflater()} và gá»i
{@link android.view.LayoutInflater#inflate inflate()}, trong đó tham số đầu tiên
là ID tài nguyên bố trí và tham số thứ hai là một dạng xem mẹ cho bố trí.
@@ -470,7 +470,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
- });
+ });
return builder.create();
}
</pre>
@@ -505,7 +505,7 @@ giao diện mà thông qua đó, nó sẽ chuyển các sự kiện lại cho ho
<pre>
public class NoticeDialogFragment extends DialogFragment {
-
+
/* The activity that creates an instance of this dialog fragment must
* implement this interface in order to receive event callbacks.
* Each method passes the DialogFragment in case the host needs to query it. */
@@ -513,10 +513,10 @@ public class NoticeDialogFragment extends DialogFragment {
public void onDialogPositiveClick(DialogFragment dialog);
public void onDialogNegativeClick(DialogFragment dialog);
}
-
+
// Use this instance of the interface to deliver action events
NoticeDialogListener mListener;
-
+
// Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
&#64;Override
public void onAttach(Activity activity) {
@@ -543,7 +543,7 @@ của hộp thoại thông qua triển khai giao diện {@code NoticeDialogListe
public class MainActivity extends FragmentActivity
implements NoticeDialogFragment.NoticeDialogListener{
...
-
+
public void showNoticeDialog() {
// Create an instance of the dialog fragment and show it
DialogFragment dialog = new NoticeDialogFragment();
@@ -656,7 +656,7 @@ public class CustomDialogFragment extends DialogFragment {
// Inflate the layout to use as dialog or embedded fragment
return inflater.inflate(R.layout.purchase_items, container, false);
}
-
+
/** The system calls this only when creating the layout in a dialog. */
&#64;Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
@@ -678,7 +678,7 @@ hay UI toàn màn hình, dựa vào kích cỡ màn hình:</p>
public void showDialog() {
FragmentManager fragmentManager = getSupportFragmentManager();
CustomDialogFragment newFragment = new CustomDialogFragment();
-
+
if (mIsLargeLayout) {
// The device is using a large layout, so show the fragment as a dialog
newFragment.show(fragmentManager, "dialog");
@@ -776,7 +776,7 @@ android.support.v4.app.DialogFragment#onDismiss onDismiss()} trong {@link
android.support.v4.app.DialogFragment} của mình.</p>
<p>Bạn cÅ©ng có thể <em>há»§y bá»</em> má»™t há»™p thoại. Äây là má»™t sá»± kiện đặc biệt chỉ báo ngưá»i dùng
-chá»§ ý rá»i khá»i há»™p thoại mà không hoàn thành tác vụ. Äiá»u này xảy ra nếu ngưá»i dùng nhấn nút
+chá»§ ý rá»i khá»i há»™p thoại mà không hoàn thành tác vụ. Äiá»u này xảy ra nếu ngưá»i dùng nhấn nút
<em>Quay lại</em>, chạm vào màn hình ngoài vùng hộp thoại,
hoặc nếu bạn công khai gá»i {@link android.app.Dialog#cancel()} trên {@link
android.app.Dialog} (chẳng hạn như khi hồi đáp lại má»™t nút "Há»§y bá»" trong há»™p thoại).</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/menus.jd b/docs/html-intl/intl/vi/guide/topics/ui/menus.jd
index 8e9e1c412c5a..7950907d88bb 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/menus.jd
@@ -83,9 +83,9 @@ không có), vì thế bạn nên chuyển sang sử dụng thanh hành động
các tùy chá»n khác.</p>
<p>Xem phần vá» <a href="#options-menu">Tạo má»™t Menu Tùy chá»n</a>.</p>
</dd>
-
+
<dt><strong>Menu ngữ cảnh và chế độ hành động theo ngữ cảnh</strong></dt>
-
+
<dd>Menu ngữ cảnh là một <a href="#FloatingContextMenu">menu nổi</a> xuất hiện khi
ngưá»i dùng thá»±c hiện nhấp giữ trên má»™t phần tá»­. Nó cung cấp các hành động ảnh hưởng tá»›i ná»™i dung hoặc
khung ngữ cảnh được chá»n.
@@ -94,7 +94,7 @@ các mục hành động ảnh hưởng tá»›i ná»™i dung được chá»n trong m
chá»n nhiá»u mục.</p>
<p>Xem phần nói vỠ<a href="#context-menu">Tạo Menu Ngữ cảnh</a>.</p>
</dd>
-
+
<dt><strong>Menu bật lên</strong></dt>
<dd>Menu bật lên sẽ hiển thị danh sách các mục trong một danh sách thẳng đứng được neo vào dạng xem
đã gá»i ra menu. Nên cung cấp má»™t phần tràn gồm các hành động liên quan tá»›i ná»™i dung cụ thể hoặc
@@ -128,14 +128,14 @@ kích cỡ màn hình khác nhau và các cấu hình khác bằng cách tận d
dự án của bạn và xây dựng menu với các phần tử sau:</p>
<dl>
<dt><code>&lt;menu></code></dt>
- <dd>Äịnh nghÄ©a má»™t {@link android.view.Menu}, đó là má»™t bá»™ chứa các mục menu. Phần tá»­
+ <dd>Äịnh nghÄ©a má»™t {@link android.view.Menu}, đó là má»™t bá»™ chứa các mục menu. Phần tá»­
<code>&lt;menu></code> phải là má»™t nút gốc cho tệp và có thể giữ má»™t hoặc nhiá»u phần tá»­
<code>&lt;item></code> và <code>&lt;group></code>.</dd>
<dt><code>&lt;item></code></dt>
<dd>Tạo một {@link android.view.MenuItem}, nó biểu diễn một mục đơn trong một menu. Phần tử
này có thể chứa một phần tử <code>&lt;menu></code> được lồng nhau để tạo một menu con.</dd>
-
+
<dt><code>&lt;group></code></dt>
<dd>Má»™t bá»™ chứa tùy chá»n, vô hình cho các phần tá»­ {@code &lt;item&gt;}. Nó cho phép bạn
phân loại các mục menu sao cho chúng chia sẻ các tính chất như trạng thái hiện hoạt và khả năng hiển thị. Äể biết thêm
@@ -273,7 +273,7 @@ tính chất của chúng bằng các API {@link android.view.MenuItem}.</p>
<p>Nếu bạn phát triển ứng dụng cá»§a mình cho phiên bản Android 2.3.x và thấp hÆ¡n, hệ thống gá»i {@link
android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} để tạo menu tùy chá»n
-khi ngưá»i dùng mở menu lần đầu tiên. Nếu bạn phát triển cho phiên bản Android 3.0 vào cao hÆ¡n,
+khi ngưá»i dùng mở menu lần đầu tiên. Nếu bạn phát triển cho phiên bản Android 3.0 vào cao hÆ¡n,
hệ thống sẽ gá»i {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} khi
bắt đầu hoạt động để hiển thị các mục cho thanh hành động.</p>
@@ -346,7 +346,7 @@ trừ khi menu bị vô hiệu hóa vì lý do nào đó. Tuy nhiên, bạn chá»
android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} để tạo trạng thái menu
ban đầu chứ không phải để thá»±c hiện thay đổi trong vòng Ä‘á»i cá»§a hoạt động.</p>
-<p>Nếu bạn muốn sá»­a đổi menu tùy chá»n dá»±a trên
+<p>Nếu bạn muốn sá»­a đổi menu tùy chá»n dá»±a trên
các sá»± kiện xảy ra trong vòng Ä‘á»i cá»§a hoạt động, bạn có thể làm vậy trong phương pháp
{@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}. Phương pháp
này chuyển cho bạn đối tượng {@link android.view.Menu} như hiện đang có để bạn có thể sửa đổi nó,
@@ -363,7 +363,7 @@ trình bày trong thanh hành động. Khi một sự kiện xảy ra và bạn
gá»i {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()} để yêu cầu
hệ thống gá»i {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}.</p>
-<p class="note"><strong>Lưu ý:</strong>
+<p class="note"><strong>Lưu ý:</strong>
Bạn không nên thay đổi các mục trong menu tùy chá»n dá»±a trên {@link android.view.View} Ä‘ang
trong tiêu Ä‘iểm. Khi ở chế độ cảm ứng (khi ngưá»i dùng không sá»­ dụng bi xoay hay d-pad), các dạng xem
không thể lấy tiêu điểm, vì thế bạn không nên sử dụng tiêu điểm làm cơ sở để sửa đổi
@@ -609,7 +609,7 @@ someView.setOnLongClickListener(new View.OnLongClickListener() {
<p>Khi bạn gá»i {@link android.app.Activity#startActionMode startActionMode()}, hệ thống sẽ trả vá»
{@link android.view.ActionMode} được tạo. Bằng cách lưu Ä‘iá»u này trong má»™t biến thành viên, bạn có thể
-thực hiện thay đổi thanh hành động theo ngữ cảnh để hồi đáp những sự kiện khác. Trong mẫu trên,
+thực hiện thay đổi thanh hành động theo ngữ cảnh để hồi đáp những sự kiện khác. Trong mẫu trên,
{@link android.view.ActionMode} được sử dụng để đảm bảo rằng thực thể {@link android.view.ActionMode} không
được tạo lại nếu nó đã hiện hoạt, bằng cách kiểm tra xem thành viên có rỗng không trước khi khởi động
chế độ hành động.</p>
@@ -742,8 +742,8 @@ hiển thị một menu bật lên:</p>
<pre>
&lt;ImageButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:src="@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup" />
@@ -1026,6 +1026,6 @@ bá»™ lá»c ý định. Ví dụ:</p>
<p>Tìm hiểu thêm vá» việc ghi các bá»™ lá»c ý định trong tài liệu
<a href="/guide/components/intents-filters.html">à định và Bá»™ lá»c à định</a>.</p>
-<p>Äể tham khảo má»™t ứng dụng mẫu sá»­ dụng kỹ thuật này, hãy xem mã mẫu
+<p>Äể tham khảo má»™t ứng dụng mẫu sá»­ dụng kỹ thuật này, hãy xem mã mẫu
<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Note
Pad</a>.</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/vi/guide/topics/ui/notifiers/notifications.jd
index 5890cb331b96..8b6e1c8458c9 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/notifiers/notifications.jd
@@ -150,7 +150,7 @@ thông báo, bạn chuyển đối tượng {@link android.app.Notification} tá»
{@link android.app.PendingIntent} chứa một
{@link android.content.Intent} có chức năng bắt đầu
má»™t {@link android.app.Activity} trong ứng dụng cá»§a bạn. Äể liên kết
- {@link android.app.PendingIntent} vá»›i má»™t cá»­ chỉ, hãy gá»i phương pháp
+ {@link android.app.PendingIntent} vá»›i má»™t cá»­ chỉ, hãy gá»i phương pháp
{@link android.support.v4.app.NotificationCompat.Builder} phù hợp. Ví dụ, nếu bạn muốn bắt đầu
{@link android.app.Activity} khi ngưá»i dùng nhấp vào văn bản thông báo trong
ngăn kéo thông báo, bạn hãy thêm {@link android.app.PendingIntent} bằng cách gá»i
@@ -449,7 +449,7 @@ numMessages = 0;
<ol style="list-style-type: lower-alpha;">
<li>
Thêm há»— trợ cho phiên bản Android 4.0.3 và trước đó. Äể làm Ä‘iá»u này, hãy quy định mẹ cá»§a
- {@link android.app.Activity} mà bạn đang bắt đầu bằng cách thêm phần tử
+ {@link android.app.Activity} mà bạn đang bắt đầu bằng cách thêm phần tử
<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
làm con của
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>.
@@ -466,9 +466,9 @@ numMessages = 0;
</p>
</li>
<li>
- CÅ©ng thêm há»— trợ cho phiên bản Android 4.1 và sau đó. Äể làm Ä‘iá»u này, hãy thêm thuá»™c tính
+ CÅ©ng thêm há»— trợ cho phiên bản Android 4.1 và sau đó. Äể làm Ä‘iá»u này, hãy thêm thuá»™c tính
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">android:parentActivityName</a></code>
- vào phần tử
+ vào phần tử
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
của {@link android.app.Activity} mà bạn đang bắt đầu.
</li>
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/overview.jd b/docs/html-intl/intl/vi/guide/topics/ui/overview.jd
index 7bd45527c7b4..260b40d9e19c 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@ và má»™t phần tá»­ <code>&lt;LinearLayout&gt;</code> tạo ra má»™t nhóm dáº
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
+ android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
&lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@ bố trí.</p>
<p>Äể xem hướng dẫn đầy đủ vá» tạo bố trí UI, hãy xem phần <a href="declaring-layout.html">Bố trí
XML</a>.
-
+
<h2 id="UIComponents">Thành phần Giao diện Ngưá»i dùng</h2>
<p>Bạn không phải xây dựng tất cả UI của mình bằng cách sử dụng các đối tượng {@link android.view.View} và {@link
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/settings.jd b/docs/html-intl/intl/vi/guide/topics/ui/settings.jd
index 8e19b979d0ac..47a5c27d1f08 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/settings.jd
@@ -82,7 +82,7 @@ cách xây dựng thiết đặt ứng dụng của bạn bằng cách sử dụ
<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
<p class="img-caption"><strong>Hình 1.</strong> Ảnh chụp màn hình từ thiết đặt của ứng dụng
-Messaging trên Android. Chá»n má»™t mục được định nghÄ©a bởi má»™t {@link android.preference.Preference}
+Messaging trên Android. Chá»n má»™t mục được định nghÄ©a bởi má»™t {@link android.preference.Preference}
sẽ mở ra một giao diện để thay đổi thiết đặt.</p>
@@ -121,7 +121,7 @@ sau:</p>
<p>Vì thiết đặt của ứng dụng của bạn được xây dựng bằng cách sử dụng các đối tượng {@link android.preference.Preference}
thay vì đối tượng
-{@link android.view.View}, bạn nên sử dụng một lớp con {@link android.app.Activity} hoặc
+{@link android.view.View}, bạn nên sử dụng một lớp con {@link android.app.Activity} hoặc
{@link android.app.Fragment} chuyên dụng để hiển thị thiết đặt danh sách:</p>
<ul>
@@ -226,7 +226,7 @@ android.preference.ListPreference}. Cả hai mục Ä‘á»u bao gồm ba thuá»™c t
<dt>{@code android:key}</dt>
<dd>Thuá»™c tính này được yêu cầu cho các tùy chá»n duy trì má»™t giá trị dữ liệu. Nó quy định khóa
(xâu) duy nhất mà hệ thống sử dụng khi lưu giá trị của thiết đặt này trong {@link
-android.content.SharedPreferences}.
+android.content.SharedPreferences}.
<p>Các thá»±c thể duy nhất mà thuá»™c tính này không <em>được yêu cầu</em> là khi tùy chá»n là má»™t
{@link android.preference.PreferenceCategory} hoặc {@link android.preference.PreferenceScreen}, hoặc
tùy chá»n quy định má»™t {@link android.content.Intent} để gá»i ra (bằng phần tá»­ <a href="#Intents">{@code &lt;intent&gt;}</a>) hoặc {@link android.app.Fragment} để hiển thị (bằng thuá»™c tính <a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
@@ -285,7 +285,7 @@ android.preference.PreferenceCategory}.</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;PreferenceCategory
+ &lt;PreferenceCategory
android:title="&#64;string/pref_sms_storage_title"
android:key="pref_key_storage_settings">
&lt;CheckBoxPreference
@@ -293,12 +293,12 @@ android.preference.PreferenceCategory}.</p>
android:summary="&#64;string/pref_summary_auto_delete"
android:title="&#64;string/pref_title_auto_delete"
android:defaultValue="false"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_sms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
android:title="&#64;string/pref_title_sms_delete"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_mms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
@@ -569,7 +569,7 @@ cÅ© hÆ¡n (xem phần nói vá» <a href="#BackCompatHeaders">Há»— trợ các phiÃ
vá»›i tiêu đỠtùy chá»n</a>).</p>
<img src="{@docRoot}images/ui/settings/settings-headers-tablet.png" alt="" />
-<p class="img-caption"><strong>Hình 4.</strong> Bố trí có hai bảng vá»›i tiêu Ä‘á». <br/><b>1.</b>
+<p class="img-caption"><strong>Hình 4.</strong> Bố trí có hai bảng vá»›i tiêu Ä‘á». <br/><b>1.</b>
Tiêu đỠđược định nghĩa trong một tệp tiêu đỠXML. <br/><b>2.</b> Mỗi nhóm thiết đặt được định nghĩa bởi một
{@link android.preference.PreferenceFragment}, được quy định bởi má»™t phần tá»­ {@code &lt;header&gt;} trong tệp tiêu Ä‘á»
.</p>
@@ -588,11 +588,11 @@ tiêu Ä‘á».</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
@@ -672,15 +672,15 @@ android.preference.Preference &lt;Preference&gt;} sẽ gửi một {@link androi
tải.</p>
<p>Ví dụ, sau đây là má»™t tệp XML cho các tiêu đỠtùy chá»n được sá»­ dụng trên Android 3.0
-trở lên ({@code res/xml/preference_headers.xml}):</p>
+trở lên ({@code res/xml/preference_headers.xml}):</p>
<pre>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" />
@@ -692,18 +692,18 @@ Android 3.0 ({@code res/xml/preference_headers_legacy.xml}):</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_ONE" />
&lt;/Preference>
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_TWO" />
@@ -834,7 +834,7 @@ android.preference.Preference#setSummary setSummary()} khi thiết đặt thay Ä
trạng thái hiện tại (chẳng hạn như thiết đặt Ngá»§ như minh há»a trong hình 5).</p>
<p class="note"><strong>Lưu ý:</strong> Như đã mô tả trong tài liệu Thiết kế Android vỠ<a href="{@docRoot}design/patterns/settings.html">Thiết đặt</a>, chúng tôi khuyên bạn nên cập nhật
-tóm tắt cho {@link android.preference.ListPreference} má»—i khi ngưá»i dùng thay đổi tùy chá»n để
+tóm tắt cho {@link android.preference.ListPreference} má»—i khi ngưá»i dùng thay đổi tùy chá»n để
mô tả thiết đặt hiện tại.</p>
<p>Äể quản lý vòng Ä‘á»i trong hoạt động cho phù hợp, chúng tôi khuyên rằng bạn nên đăng ký và bỠđăng ký
@@ -902,7 +902,7 @@ cá»§a ứng dụng cá»§a bạn từ dưới ná»n, bạn nên sá»­ dụng kết
ngưá»i dùng tinh chỉnh mức sá»­ dụng dữ liệu cho ứng dụng cá»§a bạn thông qua thiết đặt ứng dụng.<p>
<p>Ví dụ, bạn có thể cho phép ngưá»i dùng kiểm soát tần suất ứng dụng cá»§a bạn đồng bá»™ dữ liệu, ứng dụng cá»§a bạn
-chỉ được thực hiện tải lên/tải xuống khi trên Wi-Fi, ứng dụng của bạn sử dụng dữ liệu trong khi đang chuyển vùng dữ liệu, v.v... hay không. Với
+chỉ được thực hiện tải lên/tải xuống khi trên Wi-Fi, ứng dụng của bạn sử dụng dữ liệu trong khi đang chuyển vùng dữ liệu, v.v... hay không. Với
những kiểm soát này, ngưá»i dùng sẽ ít có khả năng vô hiệu hóa truy cập dữ liệu cá»§a ứng dụng cá»§a bạn
hÆ¡n nhiá»u khi hỠđạt gần mức giá»›i hạn đặt ra trong Thiết đặt hệ thống, vì thay vào đó, há» có thể kiểm soát chính xác
lượng dữ liệu mà ứng dụng của bạn sử dụng.</p>
@@ -946,7 +946,7 @@ mà bạn cần làm:</p>
<ul>
<li>Quy định giao diện ngưá»i dùng sẽ xuất hiện khi ngưá»i dùng chá»n thiết đặt.</li>
<li>Lưu giá trị của thiết đặt khi phù hợp.</li>
- <li>Khởi tạo {@link android.preference.Preference} bằng giá trị hiện tại (hoặc mặc định)
+ <li>Khởi tạo {@link android.preference.Preference} bằng giá trị hiện tại (hoặc mặc định)
khi xét tới dạng xem.</li>
<li>Cung cấp giá trị mặc định khi hệ thống yêu cầu.</li>
<li>Nếu {@link android.preference.Preference} cung cấp UI của chính mình (chẳng hạn như một hộp thoại), hãy lưu
@@ -975,11 +975,11 @@ các nút hộp thoại tích cực và tiêu cực mặc định:</p>
public class NumberPickerPreference extends DialogPreference {
public NumberPickerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
-
+
setDialogLayoutResource(R.layout.numberpicker_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
-
+
setDialogIcon(null);
}
...
@@ -1034,7 +1034,7 @@ với bạn xem thiết đặt có giá trị được duy trì hay không. Nế
cho bạn giá trị mặc định.</p>
<p>Phương pháp {@link android.preference.Preference#onSetInitialValue onSetInitialValue()} chuyển một
-boolean, <code>restorePersistedValue</code>, để cho biết liệu giá trị đã được duy trì
+boolean, <code>restorePersistedValue</code>, để cho biết liệu giá trị đã được duy trì
cho thiết đặt hay không. Nếu nó là <code>true</code>, khi đó bạn nên truy xuất giá trị được duy trì bằng cách gá»i
một trong các phương pháp của lớp {@link
android.preference.Preference}, {@code getPersisted*()}, chẳng hạn như {@link
@@ -1060,7 +1060,7 @@ protected void onSetInitialValue(boolean restorePersistedValue, Object defaultVa
</pre>
<p>Mỗi phương pháp {@code getPersisted*()} sẽ lấy một tham đối quy định
-giá trị mặc định sẽ sá»­ dụng trong trưá»ng hợp thá»±c sá»± không có giá trị được duy trì hoặc khóa không tồn tại. Trong
+giá trị mặc định sẽ sá»­ dụng trong trưá»ng hợp thá»±c sá»± không có giá trị được duy trì hoặc khóa không tồn tại. Trong
ví dụ trên, má»™t hằng số cục bá»™ được sá»­ dụng để quy định giá trị mặc định trong trưá»ng hợp {@link
android.preference.Preference#getPersistedInt getPersistedInt()} không thể trả vỠmột giá trị được duy trì.</p>
@@ -1194,7 +1194,7 @@ protected void onRestoreInstanceState(Parcelable state) {
// Cast state to custom BaseSavedState and pass to superclass
SavedState myState = (SavedState) state;
super.onRestoreInstanceState(myState.getSuperState());
-
+
// Set this Preference's widget to reflect the restored state
mNumberPicker.setValue(myState.value);
}
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/vi/guide/topics/ui/ui-events.jd
index b4d1635d1caa..c2b337ce7870 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/ui-events.jd
@@ -20,8 +20,8 @@ parent.link=index.html
Khi xem xét các sá»± kiện trong giao diện ngưá»i dùng cá»§a bạn, cách tiếp cận là chụp lại sá»± kiện từ
đối tượng Dạng xem cụ thể mà ngưá»i dùng tương tác vá»›i. Lá»›p Dạng xem sẽ cung cấp phương thức để làm việc này.</p>
-<p>Trong các lá»›p Dạng xem khác nhau mà bạn sẽ sá»­ dụng để soạn bố trí cá»§a mình, bạn có thể thấy má»™t vài phương pháp gá»i lại
-công khai dưá»ng như hữu ích đối vá»›i sá»± kiện UI. Những phương pháp này được khuôn khổ Android gá»i khi
+<p>Trong các lá»›p Dạng xem khác nhau mà bạn sẽ sá»­ dụng để soạn bố trí cá»§a mình, bạn có thể thấy má»™t vài phương pháp gá»i lại
+công khai dưá»ng như hữu ích đối vá»›i sá»± kiện UI. Những phương pháp này được khuôn khổ Android gá»i khi
xảy ra hành động tương ứng trên đối tượng đó. Ví dụ, khi một Dạng xem (chẳng hạn như một Nút) được chạm vào,
phương pháp <code>onTouchEvent()</code> được gá»i trên đối tượng đó. Tuy nhiên, để can thiệp vào Ä‘iá»u này, bạn phải mở rá»™ng
lá»›p và khống chế phương pháp đó. Tuy nhiên, việc mở rá»™ng má»i đối tượng Dạng xem
@@ -30,7 +30,7 @@ má»™t tập hợp giao diện lồng nhau cùng các phương pháp gá»i lại
được gá»i là <a href="#EventListeners">đối tượng theo dõi sá»± kiện</a>, là tấm vé để bạn chụp lại tương tác giữa ngưá»i dùng vá»›i UI cá»§a bạn.</p>
<p>Trong khi các đối tượng theo dõi sá»± kiện sẽ thưá»ng được sá»­ dụng để theo dõi tương tác cá»§a ngưá»i dùng, có thể
-có lúc bạn muốn mở rộng một lớp Dạng xem để xây dựng một thành phần tùy chỉnh.
+có lúc bạn muốn mở rộng một lớp Dạng xem để xây dựng một thành phần tùy chỉnh.
Có thể là bạn muốn mở rộng lớp {@link android.widget.Button}
để khiến cái gì đó trông ấn tượng hÆ¡n. Trong trưá»ng hợp này, bạn sẽ có thể định nghÄ©a các hành vi sá»± kiện mặc định cho lá»›p
của mình bằng cách sử dụng <a href="#EventHandlers">bộ xử lý sự kiện</a> của lớp.</p>
@@ -38,7 +38,7 @@ của mình bằng cách sử dụng <a href="#EventHandlers">bộ xử lý sự
<h2 id="EventListeners">Äối tượng theo dõi Sá»± kiện</h2>
-<p>Äối tượng theo dõi sá»± kiện là má»™t giao diện trong lá»›p {@link android.view.View} chứa má»™t phương pháp gá»i lại
+<p>Äối tượng theo dõi sá»± kiện là má»™t giao diện trong lá»›p {@link android.view.View} chứa má»™t phương pháp gá»i lại
đơn lẻ. Những phương pháp này sẽ được khuôn khổ Android gá»i khi Dạng xem mà đối tượng theo dõi đã
được đăng ký vá»›i bị kích khởi bởi tương tác giữa ngưá»i dùng vá»›i mục trong UI.</p>
@@ -46,27 +46,27 @@ của mình bằng cách sử dụng <a href="#EventHandlers">bộ xử lý sự
<dl>
<dt><code>onClick()</code></dt>
- <dd>Từ {@link android.view.View.OnClickListener}.
- Phương pháp này được gá»i khi ngưá»i dùng chạm vào mục
+ <dd>Từ {@link android.view.View.OnClickListener}.
+ Phương pháp này được gá»i khi ngưá»i dùng chạm vào mục
(khi ở chế độ cảm ứng), hoặc lấy tiêu Ä‘iểm vào má»™t mục bằng phím Ä‘iá»u hướng hoặc bi xoay và
nhấn phím "enter" phù hợp hoặc nhấn bi xoay.</dd>
<dt><code>onLongClick()</code></dt>
- <dd>Từ {@link android.view.View.OnLongClickListener}.
- Phương pháp này được gá»i khi ngưá»i gá»i chạm và giữ mục (khi ở chế độ cảm ứng), hoặc
+ <dd>Từ {@link android.view.View.OnLongClickListener}.
+ Phương pháp này được gá»i khi ngưá»i gá»i chạm và giữ mục (khi ở chế độ cảm ứng), hoặc
lấy tiêu Ä‘iểm vào má»™t mục bằng phím Ä‘iá»u hướng hoặc bi xoay và
nhấn và giữ phím "enter" phù hợp hoặc nhấn và giữ bi xoay (trong một giây).</dd>
<dt><code>onFocusChange()</code></dt>
- <dd>Từ {@link android.view.View.OnFocusChangeListener}.
+ <dd>Từ {@link android.view.View.OnFocusChangeListener}.
Phương pháp này được gá»i khi ngưá»i dùng Ä‘iá»u hướng lên hoặc ra khá»i má»™t mục bằng cách sá»­ dụng các phím Ä‘iá»u hướng hoặc bi xoay.</dd>
<dt><code>onKey()</code></dt>
- <dd>Từ {@link android.view.View.OnKeyListener}.
+ <dd>Từ {@link android.view.View.OnKeyListener}.
Phương pháp này được gá»i khi ngưá»i dùng được lấy tiêu Ä‘iểm vào má»™t mục và nhấn hoặc nhả phím cứng trên thiết bị.</dd>
<dt><code>onTouch()</code></dt>
- <dd>Từ {@link android.view.View.OnTouchListener}.
+ <dd>Từ {@link android.view.View.OnTouchListener}.
Phương pháp này được gá»i khi ngưá»i dùng thá»±c hiện má»™t hành động được coi như má»™t sá»± kiện chạm, bao gồm nhấn, nhả,
hoặc bất kỳ động tác chuyển động nào trên màn hình (trong đưá»ng biên cá»§a mục đó).</dd>
<dt><code>onCreateContextMenu()</code></dt>
- <dd>Từ {@link android.view.View.OnCreateContextMenuListener}.
+ <dd>Từ {@link android.view.View.OnCreateContextMenuListener}.
Phương pháp này được gá»i khi má»™t Menu Ngữ cảnh Ä‘ang được xây dá»±ng (kết quả cá»§a má»™t sá»± kiện "nhấp giữ" kéo dài). Xem phần thảo luận vá»
menu ngữ cảnh trong hướng dẫn dành cho nhà phát triển <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Menu</a>
.</dd>
@@ -75,8 +75,8 @@ của mình bằng cách sử dụng <a href="#EventHandlers">bộ xử lý sự
<p>Những phương pháp này là phương pháp duy nhất nằm trong giao diện tương ứng cá»§a chúng. Äể định nghÄ©a má»™t trong những phương pháp này
và xử lý sự kiện của bạn, hãy triển khai giao diện lồng nhau trong Hoạt động của bạn hoặc định nghĩa nó thành một lớp vô danh.
Sau đó, chuyển một thực thể triển khai của bạn
-tá»›i phương pháp <code>View.set...Listener()</code> tương ứng. (Ví dụ, gá»i
-<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>
+tá»›i phương pháp <code>View.set...Listener()</code> tương ứng. (Ví dụ, gá»i
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>
và chuyển cho nó triển khai {@link android.view.View.OnClickListener OnClickListener} của bạn.)</p>
<p>Ví dụ bên dưới cho biết cách đăng ký một đối tượng theo dõi khi nhấp cho một Nút. </p>
@@ -121,17 +121,17 @@ public class ExampleActivity extends Activity implements OnClickListener {
trả vá», nhưng má»™t số phương pháp đối tượng theo dõi sá»± kiện khác phải trả vá» má»™t boolean. Lý do
này phụ thuộc vào sự kiện. Với số ít sự kiện thực hiện như vậy, sau đây là lý do:</p>
<ul>
- <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> -
- Trả vỠmột boolean cho biết bạn đã xử lý sự kiện và sự kiện không nên được tiếp tục hay không.
- Cụ thể, trả vỠ<em>true</em> để cho biết rằng bạn đã xử lý sự kiện và nó nên dừng ở đây;
+ <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> -
+ Trả vỠmột boolean cho biết bạn đã xử lý sự kiện và sự kiện không nên được tiếp tục hay không.
+ Cụ thể, trả vỠ<em>true</em> để cho biết rằng bạn đã xử lý sự kiện và nó nên dừng ở đây;
trả vỠ<em>false</em> nếu bạn chưa xử lý nó và/hoặc sự kiện sẽ tiếp tục đối với bất kỳ
đối tượng theo dõi khi nhấp nào khác.</li>
- <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> -
+ <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> -
Trả vỠmột boolean cho biết bạn đã xử lý sự kiện và sự kiện không nên được tiếp tục hay không.
- Cụ thể, trả vỠ<em>true</em> sẽ cho biết rằng bạn đã xử lý sự kiện và nó nên dừng ở đây;
+ Cụ thể, trả vỠ<em>true</em> sẽ cho biết rằng bạn đã xử lý sự kiện và nó nên dừng ở đây;
trả vỠ<em>false</em> nếu bạn chưa xử lý nó và/hoặc sự kiện sẽ tiếp tục đối với bất kỳ
đối tượng theo dõi trên phím nào khác.</li>
- <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> -
+ <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> -
Trả vá» má»™t boolean cho biết đối tượng theo dõi cá»§a bạn có xá»­ lý sá»± kiện này hay không. Äiá»u quan trá»ng đó là
sá»± kiện này có thể có nhiá»u hành động nối tiếp nhau. Vì vậy, nếu bạn trả vá» <em>false</em> khi
nhận được sự kiện hành động hướng xuống, bạn sẽ cho biết rằng mình chưa xử lý sự kiện và cũng
@@ -176,19 +176,19 @@ bao gồm:</p>
<li><code>{@link android.view.View#onTouchEvent}</code> - ÄÆ°á»£c gá»i khi xảy ra má»™t sá»± kiện chuyển động màn hình cảm ứng.</li>
<li><code>{@link android.view.View#onFocusChanged}</code> - ÄÆ°á»£c gá»i khi dạng xem có hoặc mất tiêu Ä‘iểm.</li>
</ul>
-<p>Có một số phương pháp khác mà bạn cần lưu ý, chúng không thuộc lớp Dạng xem,
-nhưng có thể tác động trực tiếp tới cách bạn có thể xử lý sự kiện. Vì thế, khi quản lý các sự kiện phức tạp hơn bên trong
+<p>Có một số phương pháp khác mà bạn cần lưu ý, chúng không thuộc lớp Dạng xem,
+nhưng có thể tác động trực tiếp tới cách bạn có thể xử lý sự kiện. Vì thế, khi quản lý các sự kiện phức tạp hơn bên trong
một bố trí, hãy xét những phương pháp khác sau:</p>
<ul>
<li><code>{@link android.app.Activity#dispatchTouchEvent(MotionEvent)
- Activity.dispatchTouchEvent(MotionEvent)}</code> - Phương pháp này cho phép {@link
+ Activity.dispatchTouchEvent(MotionEvent)}</code> - Phương pháp này cho phép {@link
android.app.Activity} của bạn can thiệp vào tất cả sự kiện chạm trước khi chúng được phân phối tới cửa sổ.</li>
<li><code>{@link android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - Phương pháp này cho phép một {@link
android.view.ViewGroup} xem sự kiện khi chúng được phân phối tới Dạng xem con.</li>
<li><code>{@link android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - Gá»i phương pháp
- này trên Dạng xem mẹ để cho biết rằng nó sẽ không can thiệp vào các sự kiện chạm bằng <code>{@link
+ này trên Dạng xem mẹ để cho biết rằng nó sẽ không can thiệp vào các sự kiện chạm bằng <code>{@link
android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li>
</ul>
@@ -199,7 +199,7 @@ lấy tiêu điểm tới các mục có thể hành động (như nút) sao cho
mục nào sẽ chấp nhận nhập liệu. Tuy nhiên, nếu thiết bị có khả năng cảm ứng, và ngưá»i dùng
bắt đầu tương tác với giao diện bằng cách chạm vào nó, khi đó không còn cần
tô sáng mục hay lấy tiêu điểm tới một Dạng xem cụ thể nữa. Do đó, có một chế độ cho
-tương tác có tên là "chế độ cảm ứng."
+tương tác có tên là "chế độ cảm ứng."
</p>
<p>
Äối vá»›i thiết bị có khả năng cảm ứng, sau khi ngưá»i dùng chạm vào màn hình, thiết bị
@@ -214,7 +214,7 @@ thoát chế độ cảm ứng, và tìm má»™t dạng xem để lấy tiêu Ä‘iá
vá»›i giao diện ngưá»i dùng mà không chạm vào màn hình.
</p>
<p>
-Trạng thái chế độ cảm ứng sẽ được duy trì trên toàn bộ hệ thống (tất cả cửa sổ và hoạt động).
+Trạng thái chế độ cảm ứng sẽ được duy trì trên toàn bộ hệ thống (tất cả cửa sổ và hoạt động).
Äể truy vấn trạng thái hiện tại, bạn có thể gá»i
{@link android.view.View#isInTouchMode} để xem liệu thiết bị có đang ở trong chế độ cảm ứng hay không.
</p>
@@ -254,10 +254,10 @@ tiêu Ä‘iểm Ä‘ang rá»i khá»i. Äịnh nghÄ©a giá trị cá»§a thuá»™c tính
<p>Thông thưởng, trong bố trí thẳng đứng này, việc Ä‘iá»u hướng lên từ Nút đầu tiên sẽ không
Ä‘i tá»›i đâu hết và việc Ä‘iá»u hướng xuống từ Nút thứ hai cÅ©ng vậy. Giá» thì khi Nút trên cùng
-đã định nghÄ©a Nút dưới cùng là <var>nextFocusUp</var> (và ngược lại), tiêu Ä‘iểm Ä‘iá»u hướng sẽ
+đã định nghÄ©a Nút dưới cùng là <var>nextFocusUp</var> (và ngược lại), tiêu Ä‘iểm Ä‘iá»u hướng sẽ
luân chuyển từ trên-xuống-dưới và dưới-lên-trên.</p>
-<p>Nếu bạn muốn khai báo má»™t Dạng xem là có thể lấy tiêu Ä‘iểm trong UI cá»§a mình (thông thưá»ng thì không),
+<p>Nếu bạn muốn khai báo má»™t Dạng xem là có thể lấy tiêu Ä‘iểm trong UI cá»§a mình (thông thưá»ng thì không),
hãy thêm thuộc tính XML <code>android:focusable</code> vào Dạng xem, trong khai báo bố trí của bạn.
Äặt giá trị <var>true</var>. Bạn cÅ©ng có thể khai báo má»™t Dạng xem
là có thể lấy tiêu điểm trong khi ở Chế độ Cảm ứng bằng <code>android:focusableInTouchMode</code>.</p>
@@ -282,7 +282,7 @@ như được đỠcập trong phần <a href="#EventListeners">Äối tượng
the framework will take care of measuring, laying out, and drawing the tree
as appropriate.</li>
</ol>
-
+
<p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
the UI thread when calling any method on any View.
If you are doing work on other threads and want to update the state of a View
diff --git a/docs/html-intl/intl/vi/preview/api-overview.jd b/docs/html-intl/intl/vi/preview/api-overview.jd
index 0e2c35e0e228..5abc2f8829b9 100644
--- a/docs/html-intl/intl/vi/preview/api-overview.jd
+++ b/docs/html-intl/intl/vi/preview/api-overview.jd
@@ -336,7 +336,7 @@ cá»§a chúng &mdash; ngưá»i dùng chỉ cần kéo và thả để thêm hoặ
<h2 id="number-blocking">Chặn số</h2>
<p>Android N đã há»— trợ chặn số Ä‘iện thoại trong ná»n tảng này và cung cấp má»™t
- API khuôn khổ cho phép các nhà cung cấp dịch vụ duy trì một danh sách số bị chặn.
+ API khuôn khổ cho phép các nhà cung cấp dịch vụ duy trì một danh sách số bị chặn.
Ứng dụng SMS mặc định, ứng dụng gá»i Ä‘iện mặc định và các ứng dụng cá»§a nhà cung cấp có thể Ä‘á»c và
ghi vào danh sách số bị chặn. Các ứng dụng khác không thể truy cập vào danh sách này.</p>
diff --git a/docs/html-intl/intl/vi/preview/behavior-changes.jd b/docs/html-intl/intl/vi/preview/behavior-changes.jd
index 2c287504190c..3060fbfe734f 100644
--- a/docs/html-intl/intl/vi/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/vi/preview/behavior-changes.jd
@@ -67,7 +67,7 @@ page.image=images/cards/card-n-changes_2x.png
<p>
ÄÆ°á»£c đưa vào Android 6.0 (Mức API 23), Chế độ Ngá»§ sâu cải thiện thá»i lượng pin bằng cách
trì hoãn các hoạt động cá»§a CPU và mạng khi ngưá»i dùng không cắm sạc,
- không di chuyển và tắt màn hình thiết bị. Android N
+ không di chuyển và tắt màn hình thiết bị. Android N
thêm các cải tiến cho Chế độ Ngủ sâu bằng cách sử dụng một tập con các hạn chế của CPU và mạng
khi thiết bị không được cắm sạc với màn hình bị tắt, nhưng không nhất thiết
phải để má»™t chá»—, ví dụ như má»™t thiết bị cầm tay di chuyển trong túi cá»§a ngưá»i dùng.
@@ -250,7 +250,7 @@ page.image=images/cards/card-n-changes_2x.png
<ul>
<li>Nếu một ứng dụng nhắm mục tiêu mức API 23 hoặc thấp hơn thì hệ thống sẽ tự động tắt
tất cả các tiến trình chạy ngầm cá»§a ứng dụng đó. Äiá»u này có nghÄ©a là nếu má»™t ngưá»i dùng rá»i khá»i
- ứng dụng đó để mở màn hình <em>Settings</em> và thay đổi
+ ứng dụng đó để mở màn hình <em>Settings</em> và thay đổi
<strong>Display size</strong> thì hệ thống sẽ tắt ứng dụng giống
như trong trưá»ng hợp thiết bị thiếu bá»™ nhá»›. Nếu ứng dụng đó có bất kỳ tiến trình nào
chạy ở tiá»n cảnh thì hệ thống sẽ thông báo cho các tiến trình đó vá» thay đổi cấu hình như
@@ -418,7 +418,7 @@ JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
<li>GiỠđây các hạn chế đặt lại mật khẩu cho ngưá»i quản lý thiết bị sẽ áp dụng vá»›i ngưá»i sở hữu
cấu hình. Ngưá»i quản lý thiết bị không thể sá»­ dụng
- <code>DevicePolicyManager.resetPassword()</code> được nữa để xóa mật khẩu hoặc thay đổi
+ <code>DevicePolicyManager.resetPassword()</code> được nữa để xóa mật khẩu hoặc thay đổi
các mật khẩu đã đặt. Ngưá»i quản lý thiết bị vẫn có thể đặt má»™t mật khẩu nhưng chỉ
khi thiết bị không có mật khẩu, mã PIN hoặc mẫu hình.
</li>
diff --git a/docs/html-intl/intl/vi/preview/download.jd b/docs/html-intl/intl/vi/preview/download.jd
index f6aa7ccc67e9..8b2a272a9a92 100644
--- a/docs/html-intl/intl/vi/preview/download.jd
+++ b/docs/html-intl/intl/vi/preview/download.jd
@@ -209,7 +209,7 @@ page.image=images/cards/card-n-downloads_2x.png
<h2 id="device-preview">Thiết lập thiết bị phần cứng</h2>
<p>
- Bản N Developer Preview cung cấp các cập nhật hệ thống cho một loạt các thiết bị phần cứng
+ Bản N Developer Preview cung cấp các cập nhật hệ thống cho một loạt các thiết bị phần cứng
mà bạn có thể sử dụng để kiểm thử ứng dụng của bạn, từ điện thoại tới máy tính bảng và TV.
</p>
@@ -220,8 +220,8 @@ page.image=images/cards/card-n-downloads_2x.png
<ul>
<li><strong>Äăng ký cập nhật hệ thống tá»± động qua vô tuyến cho thiết bị</strong> thông qua
- <a href="https://g.co/androidbeta">Chương trình Android Beta</a>. Sau khi đăng ký, thiết bị của bạn sẽ nhận được
- qua sóng vô tuyến các cập nhật định kỳ vỠtất cả bản dựng theo mốc trong bản N Developer Preview. Cách tiếp cận này
+ <a href="https://g.co/androidbeta">Chương trình Android Beta</a>. Sau khi đăng ký, thiết bị của bạn sẽ nhận được
+ qua sóng vô tuyến các cập nhật định kỳ vỠtất cả bản dựng theo mốc trong bản N Developer Preview. Cách tiếp cận này
được khuyến khích bởi nó cho phép bạn chuyển tiếp liá»n mạch từ môi trưá»ng hiện tại cá»§a bạn
qua nhiá»u bản phát hành khác nhau cá»§a N Developer Preview.</li>
<li><strong>Tải xuống ảnh hệ thống của Developer Preview và flash thiết bị</strong>.
@@ -264,7 +264,7 @@ page.image=images/cards/card-n-downloads_2x.png
flash thủ công nó vào thiết bị của bạn. Xem bảng dưới đây để tải xuống ảnh hệ thống
cho thiết bị kiểm thử của bạn. Việc flash thủ công thiết bị sẽ hữu ích nếu bạn cần
kiểm soát chính xác môi trưá»ng kiểm thá»­ hoặc cần phải cài đặt lại thưá»ng xuyên,
- chẳng hạn như cho kiểm thử tự động.
+ chẳng hạn như cho kiểm thử tự động.
</p>
<!-- You can flash by ota or system image --><p>
@@ -286,10 +286,10 @@ page.image=images/cards/card-n-downloads_2x.png
</p>
<p>
- Nếu bạn quyết định muốn nhận cập nhật qua vô tuyến sau khi đã flash thủ công thiết bị,
+ Nếu bạn quyết định muốn nhận cập nhật qua vô tuyến sau khi đã flash thủ công thiết bị,
tất cả những gì bạn cần làm là đăng ký <a href="https://g.co/androidbeta">Chương trình Android
Beta</a> cho thiết bị. Bạn có thể đăng ký thiết bị bất cứ lúc nào để nhận được
- bản cập nhật qua vô tuyến tiếp theo của Preview.
+ bản cập nhật qua vô tuyến tiếp theo của Preview.
</p>
<table>
@@ -300,64 +300,73 @@ page.image=images/cards/card-n-downloads_2x.png
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
- MD5: b5cf874021023b398f5b983b24913f5d<br>
- SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+ MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+ SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
- MD5: af183638cf34e0eb944a1957d7696f60<br>
- SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+ MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+ SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
- MD5: bc4934ea7bd325753eee1606d3725a24<br>
- SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+ MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+ SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
- MD5: c901334c6158351e945f188167ae56f4<br>
- SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-npd90g-factory-41b55406.tgz</a><br>
+ MD5: cefa78950141da2a7c75e887717e3c8f<br>
+ SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
- MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
- SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-npd90g-factory-610492be.tgz</a><br>
+ MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+ SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
- MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
- SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-npd90g-factory-0fe95694.tgz</a><br>
+ MD5: f4cb48f919e4c29c631de21416c612e2<br>
+ SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
- MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
- SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-npd90g-factory-f4da981c.tgz</a><br>
+ MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+ SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
</td>
</tr>
+
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
- MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
- SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+ MD5: 0ed565c509594072822d71c65b48ec8e<br>
+ SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
</td>
</tr>
@@ -423,7 +432,7 @@ bộ giả lập.</p>
<li>Nhấp vào tab <strong>SDK Tools</strong>, rồi chá»n
<strong>Android SDK Build Tools</strong>, <strong>Android SDK
- Platform-Tools</strong>, và các hộp kiểm <strong>Android SDK Tools</strong>
+ Platform-Tools</strong>, và các hộp kiểm <strong>Android SDK Tools</strong>
.
</li>
@@ -464,7 +473,7 @@ Android Studio 1.5.</p>
<p class="note"><strong>Lưu ý:</strong>
Nếu bạn hiện đang sử dụng Android Studio 2.0 Beta, một vấn đỠđã được biết đến
- sẽ ngăn cản bạn tạo AVD bằng ảnh hệ thống của N Preview, vì vậy
+ sẽ ngăn cản bạn tạo AVD bằng ảnh hệ thống của N Preview, vì vậy
hiện bạn cần sử dụng preview của Android Studio 2.1 để tạo các AVD.
</p>
diff --git a/docs/html-intl/intl/vi/preview/features/background-optimization.jd b/docs/html-intl/intl/vi/preview/features/background-optimization.jd
index 9554725f25a3..39e1c15b7a8b 100644
--- a/docs/html-intl/intl/vi/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/vi/preview/features/background-optimization.jd
@@ -60,7 +60,7 @@ page.image=images/cards/card-nyc_2x.jpg
<ul>
<li>Các ứng dụng nhắm đến Preview không nhận được truyá»n phát {@link
- android.net.ConnectivityManager#CONNECTIVITY_ACTION} nếu chúng
+ android.net.ConnectivityManager#CONNECTIVITY_ACTION} nếu chúng
đăng ký nhận truyá»n phát trong bản kê khai cá»§a chúng. Các ứng dụng Ä‘ang chạy ở tiá»n cảnh
vẫn có thể theo dõi {@code CONNECTIVITY_CHANGE} trên luồng chính của chúng bằng cách
đăng ký{@link android.content.BroadcastReceiver} với {@link
@@ -119,7 +119,7 @@ page.image=images/cards/card-nyc_2x.jpg
</h3>
<p>
- Khi sử dụng lớp{@link android.app.job.JobInfo.Builder JobInfo.Builder}
+ Khi sử dụng lớp{@link android.app.job.JobInfo.Builder JobInfo.Builder}
để xây dựng đối tượng {@link android.app.job.JobInfo} của bạn, hãy áp dụng phương thức {@link
android.app.job.JobInfo.Builder#setRequiredNetworkType
setRequiredNetworkType()} và chuyển {@link android.app.job.JobInfo
@@ -145,7 +145,7 @@ public static void scheduleJob(Context context) {
</pre>
<p>
- Khi các Ä‘iá»u kiện cho tác vụ cá»§a bạn đã được đáp ứng, ứng dụng cá»§a bạn sẽ nhận được lệnh gá»i lại để chạy
+ Khi các Ä‘iá»u kiện cho tác vụ cá»§a bạn đã được đáp ứng, ứng dụng cá»§a bạn sẽ nhận được lệnh gá»i lại để chạy
phương thức{@link android.app.job.JobService#onStartJob onStartJob()}trong
{@code JobService.class} được chỉ định. Äể xem thêm các ví dụ vá» triển khai {@link
android.app.job.JobScheduler} , hãy xem <a href="{@docRoot}samples/JobScheduler/index.html">ứng dụng mẫu JobScheduler</a>.
@@ -243,7 +243,7 @@ public static void scheduleJob(Context context) {
</dl>
<p class="note">
- <strong>Lưu ý:</strong> {@code TriggerContentUri()} không thể được sử dụng
+ <strong>Lưu ý:</strong> {@code TriggerContentUri()} không thể được sử dụng
kết hợp với {@link android.app.job.JobInfo.Builder#setPeriodic
setPeriodic()} hoặc {@link android.app.job.JobInfo.Builder#setPersisted
setPersisted()}. Äể tiếp tục theo dõi các thay đổi ná»™i dung, hãy lên lịch má»™t
@@ -313,7 +313,7 @@ public static void scheduleJob(Context context) {
<p>
Mã mẫu sau sẽ ghi đè lên phương thức {@link
- android.app.job.JobService#onStartJob JobService.onStartJob()} và
+ android.app.job.JobService#onStartJob JobService.onStartJob()} và
và ghi lại các thẩm quyá»n ná»™i dung và URI đã kích hoạt tác vụ.
</p>
@@ -357,7 +357,7 @@ public boolean onStartJob(JobParameters params) {
bá»™ nhá»› ít có thể cải thiện hiệu suất và trải nghiệm cá»§a ngưá»i dùng. Loại bá»
các thành phần phụ thuá»™c trên các dịch vụ chạy ngầm và bá»™ thu truyá»n phát không biểu thị đã đăng ký tÄ©nh
có thể giúp ứng dụng của bạn chạy tốt hơn trên các thiết bị như vậy. Mặc dù
- N Developer Preview thực hiện các bước để giảm bớt một vài trong số các vấn đỠnày, nhưng chúng tôi
+ N Developer Preview thực hiện các bước để giảm bớt một vài trong số các vấn đỠnày, nhưng chúng tôi
khuyến nghị bạn nên tối ưu ứng dụng của bạn để chạy hoàn toàn không cần sử dụng
các tiến trình chạy ngầm này.
</p>
diff --git a/docs/html-intl/intl/vi/preview/features/direct-boot.jd b/docs/html-intl/intl/vi/preview/features/direct-boot.jd
index d95d83103b15..9b2a557c2b16 100644
--- a/docs/html-intl/intl/vi/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/vi/preview/features/direct-boot.jd
@@ -81,7 +81,7 @@ bá»™ lá»c ý định cho <code>LOCKED_BOOT_COMPLETED</code> trong bản kê kha
&lt;/receiver&gt;
</pre>
-<p>Khi ngưá»i dùng đã mở khóa thiết bị thì má»i thành phần có thể truy cập
+<p>Khi ngưá»i dùng đã mở khóa thiết bị thì má»i thành phần có thể truy cập
cả bộ nhớ lưu trữ mã hóa thiết bị lẫn bộ nhớ lưu trữ mã hóa thông tin xác thực.</p>
<h2 id="access">Truy cập Bộ nhớ Lưu trữ Mã hóa của Thiết bị</h2>
@@ -89,7 +89,7 @@ cả bộ nhớ lưu trữ mã hóa thiết bị lẫn bộ nhớ lưu trữ mã
<p>Äể truy cập bá»™ nhá»› lưu trữ mã hóa thiết bị, hãy tạo má»™t thá»±c thể
{@link android.content.Context} thứ hai bằng cách gá»i
<code>Context.createDeviceEncryptedStorageContext()</code>. Tất cả các lệnh gá»i
-API bá»™ nhá»› lưu trữ Ä‘á»u sá»­ dụng bối cảnh này để truy cập bá»™ nhá»› lưu trữ mã hóa thiết bị.
+API bá»™ nhá»› lưu trữ Ä‘á»u sá»­ dụng bối cảnh này để truy cập bá»™ nhá»› lưu trữ mã hóa thiết bị.
Ví dụ sau sẽ truy cập bộ nhớ lưu trữ mã hóa của thiết bị và mở một tệp
dữ liệu ứng dụng có sẵn:</p>
diff --git a/docs/html-intl/intl/vi/preview/features/icu4j-framework.jd b/docs/html-intl/intl/vi/preview/features/icu4j-framework.jd
index 63f6825df8ba..ffb57994a881 100644
--- a/docs/html-intl/intl/vi/preview/features/icu4j-framework.jd
+++ b/docs/html-intl/intl/vi/preview/features/icu4j-framework.jd
@@ -51,7 +51,7 @@ page.image=images/cards/card-nyc_2x.jpg
<p>
Android N cung cấp một tập nhỠcác API ICU4J thông qua
- gói <code>android.icu</code> thay vì gói <code>com.ibm.icu</code>.
+ gói <code>android.icu</code> thay vì gói <code>com.ibm.icu</code>.
Khuôn khổ Android có thể chá»n không
cung cấp các API ICU4J vì nhiá»u lý do; ví dụ, Android N không cung cấp
một số API bị loại bỠhoặc những API chưa được đội ngũ ICU công bố là
@@ -79,7 +79,7 @@ Khuôn khổ Android có thể chá»n không
<ul>
<li>Các API khuôn khổ Android ICU4J không có tất cả các API của ICU4J.</li>
<li>Các nhà phát triển NDK cần biết rằng ICU4C Android không được hỗ trợ.</li>
-<li>Các API trong khuôn khổ Android không thay thế hỗ trợ của Android cho
+<li>Các API trong khuôn khổ Android không thay thế hỗ trợ của Android cho
<a href="{@docRoot}guide/topics/resources/localization.html">việc bản địa hóa bằng
các tài nguyên</a>.</li>
</ul>
@@ -87,7 +87,7 @@ các tài nguyên</a>.</li>
<h2 id="migration">Chuyển nhập sang gói android.icu từ com.ibm.icu</h2>
<p>
- Nếu bạn đã sử dụng các API ICU4J trong ứng dụng và
+ Nếu bạn đã sử dụng các API ICU4J trong ứng dụng và
các API <code>android.icu</code> đáp ứng yêu cầu của bạn thì việc chuyển nhập sang
các API cá»§a khuôn khổ đòi há»i bạn phải thay đổi thành phần nhập vào cá»§a Java
từ <code>com.ibm.icu</code> sang <code>android.icu</code>. Khi đó bạn có thể
diff --git a/docs/html-intl/intl/vi/preview/features/multi-window.jd b/docs/html-intl/intl/vi/preview/features/multi-window.jd
index 485bc284786f..5b2cb54cbc1c 100644
--- a/docs/html-intl/intl/vi/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/vi/preview/features/multi-window.jd
@@ -33,7 +33,7 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<p>
Nếu bạn dựng ứng dụng của bạn bằng N Preview SDK, bạn có thể cấu hình cách ứng dụng của bạn
- xử lý hiển thị đa cửa sổ. Ví dụ, bạn có thể quy định
+ xử lý hiển thị đa cửa sổ. Ví dụ, bạn có thể quy định
các kích thước tối thiểu cho phép của hoạt động của bạn. Bạn cũng có thể vô hiệu hóa hiển thị đa cửa sổ cho
ứng dụng của bạn, đảm bảo rằng hệ thống chỉ hiển thị ứng dụng của bạn trong chế độ
toàn màn hình.
@@ -117,7 +117,7 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<p class="note">
<strong>Lưu ý:</strong> Trong chế độ đa cửa sổ, một ứng dụng có thể trong trạng thái
- tạm dừng và vẫn hiển thị vá»›i ngưá»i dùng. Ứng dụng có thể cần tiếp tục
+ tạm dừng và vẫn hiển thị vá»›i ngưá»i dùng. Ứng dụng có thể cần tiếp tục
các hoạt động của nó thậm chí trong khi đamg bị tạm dừng. Ví dụ, một ứng dụng phát video đang ở trong
chế độ tạm dừng nhưng vẫn hiển thị thì sẽ tiếp tục hiển thị video của nó. Vì lý do
này, chúng tôi đỠnghị các hoạt động phát video <em>không</em> tạm dừng
@@ -129,13 +129,13 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<p>
Khi ngưá»i dùng đặt má»™t ứng dụng vào trong chế độ Ä‘a cá»­a sổ, hệ thống sẽ thông báo vá»
- hoạt động thay đổi cấu hình đó, như được quy định trong <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Xử lý Thay đổi
+ hoạt động thay đổi cấu hình đó, như được quy định trong <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Xử lý Thay đổi
Thá»i gian chạy</a>. Vá» cÆ¡ bản, thay đổi này có ngụ ý vá» vòng Ä‘á»i hoạt động tương tá»±
vì khi hệ thống thông báo cho ứng dụng rằng thiết bị đã chuyển
từ chế độ hướng dá»c sang chế độ ngang, ngoại trừ trưá»ng hợp các kích thước cá»§a thiết bị
đã được thay đổi thay vì chỉ bị hoán đổi. Như đã thảo luận trong phần <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Xử lý Thay đổi
Thá»i gian chạy</a>, hoạt động cá»§a bạn có thể tá»± xá»­ lý thay đổi cấu hình này, hoặc nó
- có thể cho phép hệ thống hủy hoạt động này và tạo lại nó với
+ có thể cho phép hệ thống hủy hoạt động này và tạo lại nó với
các kích thước mới.
</p>
@@ -207,7 +207,7 @@ android:supportsPictureInPicture=["true" | "false"]
<h3 id="layout">Thuộc tính bố trí</h3>
<p>
- Với Android N, phần tử bản kê khai <code>&lt;layout&gt;</code>
+ Với Android N, phần tử bản kê khai <code>&lt;layout&gt;</code>
có hỗ trợ một số thuộc tính sẽ ảnh hưởng đến cách hoạt động có hành vi như thế nào trong
chế độ đa cửa sổ:
</p>
@@ -244,7 +244,7 @@ android:supportsPictureInPicture=["true" | "false"]
<dd>
Chiá»u cao và chiá»u rá»™ng tối thiểu cho hoạt động trong cả chế độ chia màn hình
- và chế độ hình dạng tá»± do. Nếu ngưá»i dùng di chuyển thanh phân chia trong chế độ chia màn hình
+ và chế độ hình dạng tá»± do. Nếu ngưá»i dùng di chuyển thanh phân chia trong chế độ chia màn hình
để làm cho hoạt động nhỠhơn mức tối thiểu quy định, hệ thống sẽ cắt xén
hoạt động đó thành kích cỡ mà ngưá»i dùng yêu cầu.
</dd>
@@ -295,7 +295,7 @@ android:supportsPictureInPicture=["true" | "false"]
<p>
Các phương thức mới sau đây đã được thêm vào lớp {@link android.app.Activity}
- để há»— trợ hiển thị Ä‘a cá»­a sổ. Äể biết chi tiết vá» má»—i phương thức, xem
+ để há»— trợ hiển thị Ä‘a cá»­a sổ. Äể biết chi tiết vá» má»—i phương thức, xem
<a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham chiếu N Preview SDK</a>.
</p>
@@ -560,7 +560,7 @@ android:supportsPictureInPicture=["true" | "false"]
</li>
<li>Thực hiện một vài thao tác thay đổi kích cỡ nối tiếp nhau thật nhanh. Xác minh rằng ứng dụng
- cá»§a bạn không bị lá»—i hoặc bị rò rỉ bá»™ nhá»›. Äể biết thông tin vá» kiểm tra việc sá»­ dụng bá»™ nhá»› cá»§a
+ cá»§a bạn không bị lá»—i hoặc bị rò rỉ bá»™ nhá»›. Äể biết thông tin vá» kiểm tra việc sá»­ dụng bá»™ nhá»› cá»§a
ứng dụng, xem <a href="{@docRoot}tools/debugging/debugging-memory.html">
Kiểm tra Sử dụng RAM của bạn</a>.
</li>
diff --git a/docs/html-intl/intl/vi/preview/features/notification-updates.jd b/docs/html-intl/intl/vi/preview/features/notification-updates.jd
index d80cf6c08f5e..f60646a46f43 100644
--- a/docs/html-intl/intl/vi/preview/features/notification-updates.jd
+++ b/docs/html-intl/intl/vi/preview/features/notification-updates.jd
@@ -37,7 +37,7 @@ hiện có để há»— trợ trả lá»i giữa dòng trên thiết bị cầm ta
thông báo, từng thông báo một từ khu vực hiển thị thông báo.
</p>
-<p>Cuối cùng, Android N cũng thêm các API mới cho phép bạn tận dụng các trang trí
+<p>Cuối cùng, Android N cũng thêm các API mới cho phép bạn tận dụng các trang trí
của hệ thống trong các dạng xem thông báo tùy chỉnh của ứng dụng của bạn. Các API này giúp
đảm bảo rằng dạng xem thông báo có chung một cách trình bày nhất quán
với các mẫu tiêu chuẩn.</p>
@@ -69,9 +69,9 @@ cá»§a thông báo. Trên thiết bị cầm tay, hành động trả lá»i giữ
</p>
<ol>
-<li>Tạo thực thể{@link android.support.v4.app.RemoteInput.Builder}
+<li>Tạo thực thể{@link android.support.v4.app.RemoteInput.Builder}
mà bạn có thể thêm vào hành động
-thông báo của bạn. Hàm dựng của lớp này sẽ chấp nhận xâu mà hệ thống sử dụng làm khóa
+thông báo của bạn. Hàm dựng của lớp này sẽ chấp nhận xâu mà hệ thống sử dụng làm khóa
cho nhập liệu văn bản. Sau đó, ứng dụng cầm tay của bạn sử dụng khóa đó để truy xuất văn bản
nhập liệu.
diff --git a/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd b/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd
index 4b3cb400f72e..65799dbb0ca3 100644
--- a/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd
@@ -128,7 +128,7 @@ các hành động ở chế độ PIP trên thanh Ä‘iá»u khiển và sá»­ dụ
video. Hãy xóa các phần tử UI trước khi hoạt động của bạn vào chế độ PIP,
và khôi phục các phần tử này khi hoạt động quay lại chế độ toàn màn hình.
Ghi đè phương thức <code>Activity.onPictureInPictureChanged()</code> hoặc
-<code>Fragment.onPictureInPictureChanged()</code> và bật hoặc
+<code>Fragment.onPictureInPictureChanged()</code> và bật hoặc
tắt các phần tử UI khi cần thiết, ví dụ:</p>
<pre>
@@ -150,7 +150,7 @@ public void onPictureInPictureChanged(boolean inPictureInPicture) {
<p>Khi hoạt động của bạn chuyển sang chế độ PIP thì hệ thống sẽ coi hoạt động đó đang ở trong
trạng thái tạm dừng và sẽ gá»i phương thức <code>onPause()</code> cá»§a hoạt động. Việc phát lại
video không nên được tạm dừng và cần được tiếp tục phát nếu hoạt động
-bị tạm dừng do chế độ PIP. Hãy kiểm tra chế độ PIP trong phương thức
+bị tạm dừng do chế độ PIP. Hãy kiểm tra chế độ PIP trong phương thức
<code>onPause()</code> của hoạt động và xử lý việc phát lại cho phù hợp, ví
dụ:</p>
diff --git a/docs/html-intl/intl/vi/preview/overview.jd b/docs/html-intl/intl/vi/preview/overview.jd
index a71bf61b34ab..f7094896a4e4 100644
--- a/docs/html-intl/intl/vi/preview/overview.jd
+++ b/docs/html-intl/intl/vi/preview/overview.jd
@@ -175,7 +175,7 @@ page.tags="preview", "developer", "android"
</p>
<p>
- Tại <strong>Preview 4 và 5</strong> bạn sẽ được sử dụng <strong>các
+ Tại <strong>Preview 4 và 5</strong> bạn sẽ được sử dụng <strong>các
API và SDK N cuối cùng</strong> để phát triển, và cả các ảnh hệ thống gần hoàn thiện
để kiểm thử các hành vi, tính năng của hệ thống. Android N sẽ cung cấp một mức
API chuẩn vào thá»i Ä‘iểm này. Bạn có thể tiến hành kiểm thá»­ khả năng tương thích cuối cùng đối vá»›i các ứng dụng
@@ -321,7 +321,7 @@ Android N</a> có
Hành vi</a> chỉ ra cho bạn các phần chính yếu để kiểm thử.</li>
<li> Tổng quan vỠcác API mới, bao gồm một phần <a href="{@docRoot}preview/api-overview.html">Tổng quan vỠAPI</a>, bản tải xuống được
<a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo
- API</a> và các hướng dẫn chi tiết cho nhà phát triển đối vá»›i các tính năng quan trá»ng như
+ API</a> và các hướng dẫn chi tiết cho nhà phát triển đối vá»›i các tính năng quan trá»ng như
hỗ trợ đa cửa sổ, thông báo gộp, hỗ trợ đa bản địa và các tính năng khác.
<li> <a href="{@docRoot}preview/samples.html">Mã mẫu</a> trong đó
minh há»a cách há»— trợ các quyá»n và tính năng má»›i.
diff --git a/docs/html-intl/intl/vi/training/material/animations.jd b/docs/html-intl/intl/vi/training/material/animations.jd
index e93c99d64508..9299d3c931a8 100644
--- a/docs/html-intl/intl/vi/training/material/animations.jd
+++ b/docs/html-intl/intl/vi/training/material/animations.jd
@@ -21,7 +21,7 @@ page.title=Äịnh nghÄ©a Hoạt hình Tùy chỉnh
</div>
-<p>Hoạt hình theo phong cách material design phản hồi hành động cá»§a ngưá»i dùng và cung cấp
+<p>Hoạt hình theo phong cách material design phản hồi hành động cá»§a ngưá»i dùng và cung cấp
tính liên tục trá»±c quan khi ngưá»i dùng tương tác vá»›i ứng dụng cá»§a bạn. Giao diện material cung cấp má»™t số hoạt hình
mặc định cho các nút và chuyển tiếp hoạt động, và Android 5.0 (API mức 21) và cao hơn cho phép bạn tùy chỉnh
những hoạt hình này và tạo các hoạt hình mới:</p>
@@ -160,7 +160,7 @@ trung tâm.</li>
<li>Chuyển tiếp <strong>phần tử chung</strong> xác định các dạng xem chung giữa hai hoạt động
sẽ chuyển tiếp như thế nào giữa những hoạt động này. Ví dụ, nếu hai hoạt động có cùng
-hình ảnh ở các vị trí và kích cỡ khác nhau, chuyển tiếp phần tử chung <em>changeImageTransform</em>
+hình ảnh ở các vị trí và kích cỡ khác nhau, chuyển tiếp phần tử chung <em>changeImageTransform</em>
sẽ thể hiện và co giãn hình ảnh một cách mượt mà giữa những hoạt động này.</li>
</ul>
@@ -329,7 +329,7 @@ thay vì {@link android.app.Activity#finish Activity.finish()}.</p>
<p>Äể tạo má»™t hoạt hình chuyển tiếp cảnh giữa hai hoạt động có nhiá»u hÆ¡n má»™t phần tá»­
chung, hãy định nghĩa các phần tử chung trong cả hai bố trí bằng thuộc tính <code>android:transitionName</code>
- (hoặc sử dụng phương thức {@link android.view.View#setTransitionName View.setTransitionName()}
+ (hoặc sử dụng phương thức {@link android.view.View#setTransitionName View.setTransitionName()}
trong cả hai hoạt động), và tạo một đối tượng {@link android.app.ActivityOptions} như sau:</p>
<pre>
diff --git a/docs/html-intl/intl/vi/training/material/compatibility.jd b/docs/html-intl/intl/vi/training/material/compatibility.jd
index e19a745dd9b9..2f5c0160f675 100644
--- a/docs/html-intl/intl/vi/training/material/compatibility.jd
+++ b/docs/html-intl/intl/vi/training/material/compatibility.jd
@@ -94,7 +94,7 @@ r21 và cao hơn gồm những tính năng material design sau:</p>
<h3>Bảng màu</h3>
-<p>Äể có được các kiểu phong cách material design và tùy chỉnh bảng màu bằng Thư viện Há»— trợ v7
+<p>Äể có được các kiểu phong cách material design và tùy chỉnh bảng màu bằng Thư viện Há»— trợ v7
của Android, hãy áp dụng một trong các chủ đỠ<code>Theme.AppCompat</code>:</p>
<pre>
diff --git a/docs/html-intl/intl/vi/training/material/drawables.jd b/docs/html-intl/intl/vi/training/material/drawables.jd
index 175e77d629e8..db69412c544e 100644
--- a/docs/html-intl/intl/vi/training/material/drawables.jd
+++ b/docs/html-intl/intl/vi/training/material/drawables.jd
@@ -57,7 +57,7 @@ Lớp này trích xuất những màu nổi bật sau:</p>
<li>Sáng lặng</li>
</ul>
-<p>Äể trích xuất những màu này, hãy chuyển má»™t đối tượng {@link android.graphics.Bitmap} cho phương thức tÄ©nh
+<p>Äể trích xuất những màu này, hãy chuyển má»™t đối tượng {@link android.graphics.Bitmap} cho phương thức tÄ©nh
{@link android.support.v7.graphics.Palette#generate Palette.generate()} trong
luồng chạy ngầm nÆ¡i bạn tải hình ảnh cá»§a mình. Nếu bạn không thể sá»­ dụng luồng đó, hãy gá»i phương thức
{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} và
diff --git a/docs/html-intl/intl/vi/training/material/get-started.jd b/docs/html-intl/intl/vi/training/material/get-started.jd
index 9e612ad10c07..45d7c09e3e0b 100644
--- a/docs/html-intl/intl/vi/training/material/get-started.jd
+++ b/docs/html-intl/intl/vi/training/material/get-started.jd
@@ -94,7 +94,7 @@ bố trí cá»§a bạn, hãy đặc biệt chú ý tá»›i Ä‘iá»u sau đây:</p>
<h2 id="Depth">Quy định Äá»™ cao trong Dạng xem cá»§a Bạn</h2>
-<p>Dạng xem có thể đổ bóng và giá trị độ cao của một dạng xem
+<p>Dạng xem có thể đổ bóng và giá trị độ cao của một dạng xem
xác định kích cỡ bóng và thứ tá»± vẽ cá»§a nó. Äể đặt độ cao cá»§a má»™t dạng xem, hãy sá»­ dụng thuá»™c tính
<code>android:elevation</code> trong bố trí của bạn:</p>
@@ -122,7 +122,7 @@ chạm</a>.</p>
<p>{@link android.support.v7.widget.RecyclerView} là một phiên bản dễ ghép nối hơn của {@link
android.widget.ListView} có hỗ trợ các kiểu bố trí khác nhau và cung cấp những cải tiến vỠhiệu năng.
{@link android.support.v7.widget.CardView} cho phép bạn hiện các mẩu thông tin bên trong thẻ với
-má»™t diện mạo nhất quán giữa các ứng dụng. Ví dụ vá» mã sau đây minh há»a cách thêm
+má»™t diện mạo nhất quán giữa các ứng dụng. Ví dụ vá» mã sau đây minh há»a cách thêm
{@link android.support.v7.widget.CardView} vào bố trí của bạn:</p>
<pre>
diff --git a/docs/html-intl/intl/vi/training/material/index.jd b/docs/html-intl/intl/vi/training/material/index.jd
index 44b74e1826fd..eb489457e7c2 100644
--- a/docs/html-intl/intl/vi/training/material/index.jd
+++ b/docs/html-intl/intl/vi/training/material/index.jd
@@ -17,7 +17,7 @@ page.metaDescription=Tìm hiểu cách áp dụng material design cho ứng dụ
<p>Material design là một hướng dẫn toàn diện vỠthiết kế trực quan, chuyển động
và tương tác giữa nhiá»u ná»n tảng và thiết bị. Äể sá»­ dụng material design trong ứng dụng Androi cá»§a mình, hãy làm theo hướng dẫn
-mô tả trong
+mô tả trong
<a href="http://www.google.com/design/spec/material-design/introduction.html">đặc tả
material design</a> và sử dụng những thành phần và tính năng mới sẵn có trong Android 5.0
(API mức 21).</p>
diff --git a/docs/html-intl/intl/vi/training/material/lists-cards.jd b/docs/html-intl/intl/vi/training/material/lists-cards.jd
index 7127649bda83..47a7d6f8f3b4 100644
--- a/docs/html-intl/intl/vi/training/material/lists-cards.jd
+++ b/docs/html-intl/intl/vi/training/material/lists-cards.jd
@@ -210,7 +210,7 @@ android.support.v7.widget.CardView} có thể có đổ bóng và góc bo tròn.
Äể biết thêm thông tin, hãy xem phần <a href="{@docRoot}training/material/compatibility.html">Duy trì
Tính tương thích</a>.</p>
-<p>Sử dụng những thuộc tính sau để tùy chỉnh diện mạo của widget
+<p>Sử dụng những thuộc tính sau để tùy chỉnh diện mạo của widget
{@link android.support.v7.widget.CardView}:</p>
<ul>
diff --git a/docs/html-intl/intl/vi/training/material/shadows-clipping.jd b/docs/html-intl/intl/vi/training/material/shadows-clipping.jd
index e9091f289fcb..f4ce4025963f 100644
--- a/docs/html-intl/intl/vi/training/material/shadows-clipping.jd
+++ b/docs/html-intl/intl/vi/training/material/shadows-clipping.jd
@@ -22,7 +22,7 @@ page.title=Äịnh nghÄ©a Äổ bóng và Dạng xem Cắt hình
tầm quan trá»ng tương đối cá»§a từng phần tá»­ và tập chung sá»± chú ý cá»§a há» vào tác vụ hiện có.</p>
<p>Äá»™ cao cá»§a má»™t dạng xem, được biểu diá»…n bằng thuá»™c tính Z, sẽ xác định diện mạo trá»±c quan cá»§a
-bóng đổ: dạng xem có giá trị Z cao hÆ¡n sẽ đổ bóng lá»›n hÆ¡n, má»m hÆ¡n. Dạng xem có giá trị Z cao hÆ¡n sẽ che khuất dạng xem
+bóng đổ: dạng xem có giá trị Z cao hÆ¡n sẽ đổ bóng lá»›n hÆ¡n, má»m hÆ¡n. Dạng xem có giá trị Z cao hÆ¡n sẽ che khuất dạng xem
có giá trị Z thấp hơn; tuy nhiên, giá trị Z của một dạng xem không ảnh hưởng tới kích cỡ của dạng xem.</p>
<p>Äổ bóng được vẽ bởi dạng xem mẹ cá»§a dạng xem cao hÆ¡n, do vậy nó phụ thuá»™c vào tiêu chuẩn cắt dạng xem,
@@ -51,7 +51,7 @@ trong không gian 3D</a>.</p>
<p class="img-caption"><strong>Hình 1</strong> - Äổ bóng cho các độ cao dạng xem khác nhau.</p>
<p>Äể đặt độ cao cá»§a dạng xem trong má»™t định nghÄ©a bố trí, hãy sá»­ dụng thuá»™c tính <code>android:elevation</code>
-. Äể đặt độ cao cá»§a dạng xem trong mã cá»§a má»™t hoạt động, hãy sá»­ dụng phương thức
+. Äể đặt độ cao cá»§a dạng xem trong mã cá»§a má»™t hoạt động, hãy sá»­ dụng phương thức
{@link android.view.View#setElevation View.setElevation()}.</p>
<p>Äể đặt độ dịch cá»§a dạng xem, hãy sá»­ dụng phương thức {@link android.view.View#setTranslationZ
@@ -59,7 +59,7 @@ View.setTranslationZ()}.</p>
<p>Các phương thức {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} và {@link
android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} mới cho phép
-bạn dá»… dàng tạo hiệu ứng hoạt hình cho độ cao cá»§a dạng xem. Äể biết thêm thông tin, hãy xem tài liệu tham khảo API cho
+bạn dá»… dàng tạo hiệu ứng hoạt hình cho độ cao cá»§a dạng xem. Äể biết thêm thông tin, hãy xem tài liệu tham khảo API cho
{@link android.view.ViewPropertyAnimator} và hướng dẫn cho nhà phát triển vỠ<a href="{@docRoot}guide/topics/graphics/prop-animation.html">Hoạt hình Thuộc tính</a>
.</p>
diff --git a/docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd b/docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd
index 8e20975eb512..81591450ec8f 100644
--- a/docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd
+++ b/docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd
@@ -430,7 +430,7 @@ sdk.platform.apiLevel=21
<p>当系统检测到åˆé€‚的网络时,它将连接到该网络并调用 {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()} 回调。您å¯ä»¥åœ¨å›žè°ƒä¸­ä½¿ç”¨ {@link android.net.Network} 对象æ¥èŽ·å–关于该网络的更多信æ¯ï¼Œæˆ–者指示通信使用选定的网络。</p>
<h3 id="BluetoothBroadcasting">低功耗è“牙</h3>
-<p>Android 4.3 中作为é‡å¤´æˆå¼•入了对<a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">低功耗è“牙</a>(“低功耗è“牙â€<em></em>ï¼‰çš„å¹³å°æ”¯æŒã€‚在 Android 5.0 中,Android 设备现在å¯ä»¥ç”¨ä½œä½ŽåŠŸè€—è“牙<em>外围设备</em>。应用å¯ä»¥ä½¿ç”¨æ­¤åŠŸèƒ½ä½¿é™„è¿‘çš„è®¾å¤‡çŸ¥é“它的存在。例如,您å¯ä»¥æž„建相应的应用æ¥å…许设备用作计步器或å¥åº·æ£€æµ‹å™¨å¹¶ä¸Žå¦ä¸€ä½ŽåŠŸè€—è“牙设备交æ¢å…¶æ•°æ®ã€‚</p>
+<p>Android 4.3 中作为é‡å¤´æˆå¼•入了对<a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">低功耗è“牙</a>(“低功耗è“牙â€<em></em>ï¼‰çš„å¹³å°æ”¯æŒã€‚在 Android 5.0 中,Android 设备现在å¯ä»¥ç”¨ä½œä½ŽåŠŸè€—è“牙<em>外围设备</em>。应用å¯ä»¥ä½¿ç”¨æ­¤åŠŸèƒ½ä½¿é™„è¿‘çš„è®¾å¤‡çŸ¥é“它的存在。例如,您å¯ä»¥æž„建相应的应用æ¥å…许设备用作计步器或å¥åº·æ£€æµ‹å™¨å¹¶ä¸Žå¦ä¸€ä½ŽåŠŸè€—è“牙设备交æ¢å…¶æ•°æ®ã€‚</p>
<p>æ–°çš„ {@link android.bluetooth.le} API å…许您的应用对公告进行广播,扫æå“应,以åŠä¸Žé™„近的低功能è“牙设备建立连接。è¦ä½¿ç”¨æ–°çš„公告和扫æåŠŸèƒ½ï¼Œè¯·åœ¨æ‚¨çš„æ¸…å•中添加 {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} æƒé™ã€‚当用户从 Play å•†åº—æ›´æ–°æˆ–ä¸‹è½½æ‚¨çš„åº”ç”¨æ—¶ï¼Œä¼šè¦æ±‚他们呿‚¨çš„应用授予以下æƒé™ï¼šâ€œè“牙连接信æ¯ï¼šå…许应用控制è“牙,包括å‘附近的è“牙设备进行广播以åŠèŽ·å–关于这些设备的信æ¯ã€‚â€</p>
<p>è¦å¼€å§‹ä½ŽåŠŸè€—è“牙公告以便其他设备å¯ä»¥å‘现您的应用,请调用 {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} å¹¶ä¼ å…¥ {@link android.bluetooth.le.AdvertiseCallback} 类的一个实施。回调对象将收到关于公告æ“作æˆåŠŸæˆ–å¤±è´¥çš„æŠ¥å‘Šã€‚</p>
diff --git a/docs/html-intl/intl/zh-cn/design/style/writing.jd b/docs/html-intl/intl/zh-cn/design/style/writing.jd
index 7944c24c1ed2..c0c3e5408897 100644
--- a/docs/html-intl/intl/zh-cn/design/style/writing.jd
+++ b/docs/html-intl/intl/zh-cn/design/style/writing.jd
@@ -174,7 +174,7 @@ page.type=设计
<li>使用缩写è¯ã€‚</li>
<li>ä½¿ç”¨â€œæ‚¨â€æˆ–“你â€ç›´æŽ¥ä¸Žè¯»è€…对è¯ã€‚</li>
<li>语气应轻æ¾è‡ªç„¶ï¼Œä½†è¦é¿å…使用俚语。</li>
-
+
</ul>
<p><em>é¿å…使用令人困惑或令人厌烦的表达</em></p>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/about.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/about.jd
index bfdb210ee0d9..382c4c729515 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/about.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/about.jd
@@ -6,7 +6,7 @@ page.image=/distribute/images/about-play.jpg
@jd:body
- <div id="qv-wrapper">
+ <div id="qv-wrapper">
<div id="qv">
<h2>关于 Google Play</h2>
<ol style="list-style-type:none;">
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/developer-console.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/developer-console.jd
index 7d0bd55ca307..d9255662f762 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/developer-console.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/developer-console.jd
@@ -4,8 +4,8 @@ page.image=/distribute/images/developer-console.jpg
Xnonavpage=true
@jd:body
-
- <div id="qv-wrapper">
+
+ <div id="qv-wrapper">
<div id="qv">
<h2>å‘布功能</h2>
<ol>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/families/faq.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/families/faq.jd
index ea8bb613cda3..7b0cf1db1e2f 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/families/faq.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@ page.metaDescription=“为家庭设计â€è®¡åˆ’的问答
font-weight:bold;
}
</style>
-
+
<div id="qv-wrapper">
<ol id="qv">
<h2>本文内容</h2>
@@ -141,7 +141,7 @@ page.metaDescription=“为家庭设计â€è®¡åˆ’的问答
å‡è®¾æ‚¨çš„应用符åˆè¯¥è®¡åˆ’çš„æ‰€æœ‰è¦æ±‚,我们预计å‘布时间ä¸ä¼šè¶…过正常时间;但是,如果在“为家庭设计â€å®¡æŸ¥æ—¶è¢«æ‹’ç»ï¼Œåˆ™åº”用的å‘布å¯èƒ½ä¼šå»¶è¿Ÿã€‚
-
+
</dd>
<dt>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/families/start.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/families/start.jd
index aab4b5aaa95b..e81bac5843fe 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/families/start.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/families/start.jd
@@ -78,7 +78,7 @@ ESRB 10+ 分级的应用åªèƒ½é€‰æ‹©ä¸€ä¸ªç›®æ ‡å¹´é¾„:9-12 岿ˆ–一般å—ä¼—
<p class="note">
<strong>注æ„</strong>:在“为家庭设计â€è®¡åˆ’中å‘布的应用也å¯ä¾›
- Google Play 上的所有用户使用。
+ Google Play 上的所有用户使用。
</p>
<p>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/guide.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/guide.jd
index b70bcb5c79ee..7b280cf1baea 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/guide.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/guide.jd
@@ -18,7 +18,7 @@ page.image=distribute/images/play_dev_guide.png
<ul>
<li>
<strong>在 Google Play 上å‘布</strong> &mdash;使用 Google Play
- 的开å‘者控制å°ï¼Œå°†æ‚¨çš„应用分å‘给全çƒè¶…过 10 亿
+ 的开å‘者控制å°ï¼Œå°†æ‚¨çš„应用分å‘给全çƒè¶…过 10 亿
Android 用户。
</li>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/auto.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/auto.jd
index a590446f4dfb..9f61a35a0113 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/auto.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/auto.jd
@@ -162,7 +162,7 @@ page.image=/distribute/images/gp-auto-quality.png
<tr>
<td rowspan="3" id="layout">
- 布局
+ 布局
</td>
<td id="AU-SC">
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/core.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/core.jd
index 0dae9e170e58..793d110e6f87 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/core.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/core.jd
@@ -12,7 +12,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="#listing">Google Play</a></li>
</ol>
-
+
<h2>测试</h2>
<ol>
<li><a href="#test-environment">设置测试环境</a></li>
@@ -24,7 +24,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="{@docRoot}distribute/essentials/quality/tablets.html">å¹³æ¿ç”µè„‘应用的质é‡</a></li>
<li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">优化您的应用</a></li>
</ol>
-
+
</div>
</div>
@@ -84,7 +84,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<th style="width:54px;">
ID
</th>
-
+
<th>
说明
@@ -746,7 +746,7 @@ data-cardsizes="6x3" data-maxresults="6">
<li>应用商å“详情包括高å“质的置顶大图。
</li>
- <li>置顶大图ä¸èƒ½åŒ…å«è®¾å¤‡å›¾ç‰‡ã€å±å¹•截图,也ä¸èƒ½åŒ…å«ç¼©å°åŽä»¥åŠåœ¨åº”用适é…的最å°å°ºå¯¸å±å¹•ä¸Šæ˜¾ç¤ºæ—¶éš¾ä»¥è¾¨è®¤çš„å°æ–‡å­—。
+ <li>置顶大图ä¸èƒ½åŒ…å«è®¾å¤‡å›¾ç‰‡ã€å±å¹•截图,也ä¸èƒ½åŒ…å«ç¼©å°åŽä»¥åŠåœ¨åº”用适é…的最å°å°ºå¯¸å±å¹•ä¸Šæ˜¾ç¤ºæ—¶éš¾ä»¥è¾¨è®¤çš„å°æ–‡å­—。
</li>
@@ -1049,7 +1049,7 @@ data-cardsizes="6x3,6x3,6x3,6x3,6x3,6x3" data-maxresults="6">
<p style="margin-bottom:.25em;">
è¦å¼ºåˆ¶å¯åŠ¨ç¡¬ä»¶åŠ é€Ÿï¼ˆåœ¨è®¾å¤‡æ”¯æŒçš„æƒ…况下),请将
- <code>hardware-accelerated="true"</code>æ·»åŠ åˆ°åº”ç”¨æ¸…å•æ–‡ä»¶ä¸­çš„<code>&lt;application&gt;</code>并釿–°ç¼–译。
+ <code>hardware-accelerated="true"</code>æ·»åŠ åˆ°åº”ç”¨æ¸…å•æ–‡ä»¶ä¸­çš„<code>&lt;application&gt;</code>并釿–°ç¼–译。
</p>
</td>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tablets.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tablets.jd
index 1d9d620fca35..3df311aa7612 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tablets.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tablets.jd
@@ -48,7 +48,7 @@ Xnonavpage=true
</p>
<p>
- 本文档中æä¾›äº†ç›¸å…³èµ„æºçš„链接,这些资æºå¯å¸®åŠ©æ‚¨äº†è§£æ–‡ä¸­ç»™å‡ºçš„å„æ¡å»ºè®®ã€‚
+ 本文档中æä¾›äº†ç›¸å…³èµ„æºçš„链接,这些资æºå¯å¸®åŠ©æ‚¨äº†è§£æ–‡ä¸­ç»™å‡ºçš„å„æ¡å»ºè®®ã€‚
</p>
@@ -56,7 +56,7 @@ Xnonavpage=true
<p>为了打造上佳的平æ¿ç”µè„‘åº”ç”¨ä½“éªŒï¼Œé¦–å…ˆè¦æ ¹æ®åº”用适é…çš„æ‰€æœ‰è®¾å¤‡å’Œæœºåž‹ï¼Œç¡®ä¿æ‚¨çš„应用满足相应的<em>åº”ç”¨æ ¸å¿ƒè´¨é‡æ ‡å‡†</em>。
-有关完整信æ¯ï¼Œè¯·å‚阅<a href="{@docRoot}distribute/essentials/quality/core.html">应用核心质é‡å‡†åˆ™</a>。
+有关完整信æ¯ï¼Œè¯·å‚阅<a href="{@docRoot}distribute/essentials/quality/core.html">应用核心质é‡å‡†åˆ™</a>。
</p>
<p>
@@ -116,7 +116,7 @@ style="font-weight:500;">èˆå¼ƒæ‹‰ä¼¸å˜å½¢çš„界é¢ï¼šåœ¨å¹³æ¿ç”µè„‘上,å•ç
<ul>
- <li>æ ¹æ®éœ€è¦ï¼Œé’ˆå¯¹ <code>large</code> å’Œ
+ <li>æ ¹æ®éœ€è¦ï¼Œé’ˆå¯¹ <code>large</code> å’Œ
<code>xlarge</code> å±å¹•æä¾›è‡ªå®šä¹‰å¸ƒå±€ã€‚您还å¯ä»¥æä¾›å¯æ ¹æ®å±å¹•çš„<a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">最短尺寸</a>或<a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">最å°å¯ç”¨å®½åº¦å’Œé«˜åº¦</a>加载的布局。
@@ -207,8 +207,8 @@ style="font-weight:500;">å¤åˆè§†å›¾å°†æ‰‹æœºç•Œé¢çš„多个å•一视图<em>(
android.app.Fragment} å­ç±»å®žçްå„ä¸ªå†…å®¹é¢æ¿ã€‚这样一æ¥ï¼Œæ‚¨å¯ä»¥åœ¨å…±ç”¨å†…容的ä¸åŒæœºåž‹å’Œä¸åŒå±å¹•间最大程度地é‡å¤ä½¿ç”¨ä»£ç ã€‚
</li>
-<li>确定è¦åœ¨å“ªäº›å±å¹•尺寸上使用多窗格界é¢ï¼Œç„¶åŽåœ¨ç›¸åº”çš„å±å¹•尺寸å•元(例如
-<code>large</code>/<code>xlarge</code>)中æä¾›ä¸åŒçš„布局,或最å°å±å¹•宽度(例如
+<li>确定è¦åœ¨å“ªäº›å±å¹•尺寸上使用多窗格界é¢ï¼Œç„¶åŽåœ¨ç›¸åº”çš„å±å¹•尺寸å•元(例如
+<code>large</code>/<code>xlarge</code>)中æä¾›ä¸åŒçš„布局,或最å°å±å¹•宽度(例如
<code>sw600dp</code>/<code>sw720</code>)。
</li>
</ul>
@@ -309,7 +309,7 @@ android.app.Fragment} å­ç±»å®žçްå„ä¸ªå†…å®¹é¢æ¿ã€‚这样一æ¥ï¼Œæ‚¨å¯ä»¥å
data-cardSizes="9x3"
data-maxResults="6"></div>
-<div class="headerLine"><h2 id="adjust-font-sizes">5.
+<div class="headerLine"><h2 id="adjust-font-sizes">5.
调整字体大å°å’Œè§¦æŽ§ç›®æ ‡</h2></div>
<p>è¦ç¡®ä¿æ‚¨çš„应用在平æ¿ç”µè„‘上易于使用,请花些时间针对您è¦é€‚é…çš„å„ç§å±å¹•é…置调整平æ¿ç”µè„‘界é¢ä¸­çš„字体大å°å’Œè§¦æŽ§ç›®æ ‡ã€‚
@@ -345,7 +345,7 @@ android.app.Fragment} å­ç±»å®žçްå„ä¸ªå†…å®¹é¢æ¿ã€‚这样一æ¥ï¼Œæ‚¨å¯ä»¥å
<div class="headerLine"><h2 id="adjust-widgets">6. 调整主å±å¹•å°éƒ¨ä»¶çš„尺寸</h2></div>
-<p>如果您的应用中包å«ä¸»å±å¹•å°éƒ¨ä»¶ï¼Œéœ€è¦æ³¨æ„以下几点,以确ä¿ç”¨æˆ·åœ¨å¹³æ¿ç”µè„‘å±å¹•上获得良好体验:
+<p>如果您的应用中包å«ä¸»å±å¹•å°éƒ¨ä»¶ï¼Œéœ€è¦æ³¨æ„以下几点,以确ä¿ç”¨æˆ·åœ¨å¹³æ¿ç”µè„‘å±å¹•上获得良好体验:
</p>
<ul>
@@ -411,7 +411,7 @@ android.app.Fragment} å­ç±»å®žçްå„ä¸ªå†…å®¹é¢æ¿ã€‚这样一æ¥ï¼Œæ‚¨å¯ä»¥å
为确ä¿åˆ†å‘到尽å¯èƒ½å¤šçš„å¹³æ¿ç”µè„‘,务必让应用适é…å„ç§æ”¯æŒå¹³æ¿ç”µè„‘çš„ Android 版本。
对平æ¿ç”µè„‘çš„æ”¯æŒæ˜¯ä»Ž <a href="{@docRoot}about/versions/android-3.0.html">Android 3.0</a>(API 级别 11)开始的。
- 对平æ¿ç”µè„‘ã€æ‰‹æœºåŠå…¶ä»–è®¾å¤‡çš„ç»Ÿä¸€ç•Œé¢æ¡†æž¶æ”¯æŒæ˜¯ä»Ž <a href="{@docRoot}about/versions/android-4.0.html">Android
+ 对平æ¿ç”µè„‘ã€æ‰‹æœºåŠå…¶ä»–è®¾å¤‡çš„ç»Ÿä¸€ç•Œé¢æ¡†æž¶æ”¯æŒæ˜¯ä»Ž <a href="{@docRoot}about/versions/android-4.0.html">Android
4.0</a> 开始的
</p>
@@ -494,8 +494,8 @@ android.app.Fragment} å­ç±»å®žçްå„ä¸ªå†…å®¹é¢æ¿ã€‚这样一æ¥ï¼Œæ‚¨å¯ä»¥å
<li>ä¸Žæ­¤ç±»ä¼¼ï¼Œè¿˜è¯·æ£€æŸ¥æ¸…å•æ–‡ä»¶ï¼Œæ‰¾å‡º
<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">è¡¨æ˜Žç¡¬ä»¶åŠŸèƒ½è¦æ±‚</a>ä¸é€‚用于平æ¿ç”µè„‘çš„ <a href="{@docRoot}guide/topics/manifest/permission-element.html"><code>&lt;permission&gt;</code></a> 元素。
-如果您找到这样的æƒé™ï¼Œè¯·åŠ¡å¿…ä¸ºåŠŸèƒ½æ˜Žç¡®å£°æ˜Žå¯¹åº”çš„
-<code>&lt;uses-feature&gt;</code> 元素并加入
+如果您找到这样的æƒé™ï¼Œè¯·åŠ¡å¿…ä¸ºåŠŸèƒ½æ˜Žç¡®å£°æ˜Žå¯¹åº”çš„
+<code>&lt;uses-feature&gt;</code> 元素并加入
<code>android:required=â€falseâ€</code> 属性。
</li>
</ul>
@@ -529,21 +529,21 @@ android.app.Fragment} å­ç±»å®žçްå„ä¸ªå†…å®¹é¢æ¿ã€‚这样一æ¥ï¼Œæ‚¨å¯ä»¥å
</p>
<ul>
- <li>如果声明
+ <li>如果声明
<a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code>&lt;supports-screens&gt;</code></a>
元素,就ä¸è¦æŒ‡å®š <code>android:largeScreens="false"</code>
或 <code>android:xlargeScreens="false"</code>。</li>
- <li>如果应用适é…çš„ <code>minSdkVersion</code> 值å°äºŽ 13,必须使用
+ <li>如果应用适é…çš„ <code>minSdkVersion</code> 值å°äºŽ 13,必须使用
<code>android:largeScreens="true"</code> 和 <code>android:xlargeScreens="true"</code>
声明 <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code>&lt;supports-screens&gt;</code></a>
元素。</li>
</ul>
-<p>å¦‚æžœåº”ç”¨åœ¨æ¸…å•æ–‡ä»¶ä¸­å£°æ˜Žäº†
+<p>å¦‚æžœåº”ç”¨åœ¨æ¸…å•æ–‡ä»¶ä¸­å£°æ˜Žäº†
<a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html"><code>&lt;compatible-screens&gt;</code></a>
元素,该元素应包å«ç›¸å…³å±žæ€§ï¼Œ
以列举应用支æŒçš„<em>å¹³æ¿ç”µè„‘å±å¹•的所有尺寸和密度组åˆ</em>。
-请注æ„,如果å¯èƒ½ï¼Œæ‚¨åº”é¿å…在应用中使用
+请注æ„,如果å¯èƒ½ï¼Œæ‚¨åº”é¿å…在应用中使用
<a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html"><code>&lt;compatible-screens&gt;</code></a>
元素。</p>
@@ -586,7 +586,7 @@ android.app.Fragment} å­ç±»å®žçްå„ä¸ªå†…å®¹é¢æ¿ã€‚这样一æ¥ï¼Œæ‚¨å¯ä»¥å
<li>添加在 7 英寸和 10 英寸平æ¿ç”µè„‘上截å–çš„å±å¹•截图。
</li>
- <li>如果å¯èƒ½ï¼Œæ·»åŠ æ¨ªå±å’Œç«–屿ˆªå–çš„å±å¹•截图。
+ <li>如果å¯èƒ½ï¼Œæ·»åŠ æ¨ªå±å’Œç«–屿ˆªå–çš„å±å¹•截图。
</li>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tv.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tv.jd
index 6a609457bc58..99a12d585b7e 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tv.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tv.jd
@@ -133,7 +133,7 @@ page.image=/distribute/images/gp-tv-quality.png
<tr>
<td rowspan="5" id="layout">
- 布局
+ 布局
</td>
<td id="TV-LO">
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/wear.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/wear.jd
index 99483eccc760..eb9166de7b04 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/wear.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/wear.jd
@@ -91,7 +91,7 @@ page.image=/distribute/images/gp-wear-quality.png
<td>
<p style="margin-bottom:.5em;">
手æŒç±»åº”用包括具有å¯ç©¿æˆ´è®¾å¤‡ç‰¹æœ‰åŠŸèƒ½çš„é€šçŸ¥æˆ–ç›´æŽ¥åœ¨ç©¿æˆ´è®¾å¤‡ä¸Šè¿è¡Œçš„å¯ç©¿æˆ´ç±»åº”用。
-
+
(<a href="{@docRoot}training/building-wearables.html">了解方法</a>)
</p>
</td>
@@ -441,7 +441,7 @@ data-sortorder="-timestamp" data-cardsizes="6x2" data-maxresults="6">
<p style="margin-top:30px;">
- <strong>如果我的应用ä¸ç¬¦åˆç©¿æˆ´è®¾å¤‡çš„è¦æ±‚,是å¦ä»ä¼šåœ¨ Google Play
+ <strong>如果我的应用ä¸ç¬¦åˆç©¿æˆ´è®¾å¤‡çš„è¦æ±‚,是å¦ä»ä¼šåœ¨ Google Play
ä¸Šå‘æ‰‹æœºå’Œå¹³æ¿ç”µè„‘显示我的新应用或更新版本并且ä»å¯åœ¨å¯ç©¿æˆ´è®¾å¤‡ä¸Šå®‰è£…?</strong>
</p>
<p>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/tv.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/tv.jd
index e557024186a9..a1b2f4c22a16 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/tv.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/tv.jd
@@ -88,7 +88,7 @@ Android TV çš„ Google Play 体验仅<strong>展示å¯åœ¨ç”µè§†ä¸Šä½¿ç”¨çš„应用
<p>
在考虑您的电视应用时,请查看<a href="{@docRoot}training/tv/start/index.html">å¼€å‘者文档</a>å’Œå¯ç”¨æ€§å‡†åˆ™ï¼Œå¹¶ä¸”å°½å¯èƒ½æ”¯æŒè¿™äº›å‡†åˆ™ã€‚
-ç¡®ä¿ä¸ºç”¨æˆ·è®¾è®¡ä¸€ç§å‡ºè‰² Leanback 观看体验,并使用 SDK 中éšé™„çš„
+ç¡®ä¿ä¸ºç”¨æˆ·è®¾è®¡ä¸€ç§å‡ºè‰² Leanback 观看体验,并使用 SDK 中éšé™„çš„
Leanback åº“æ¥æ‰“造这ç§ä½“验。您想针对电视用例优化应用的其他部分,最好在开å‘过程的早期确定这些部分。
@@ -261,7 +261,7 @@ Google Play 将展示优质应用,以便用户能够在 Google Play 中轻æ¾å
当您进行必è¦çš„调整åŽï¼Œå°±å¯ä»¥å°†åº”用的新版本上传到开å‘者控制å°ã€‚
-
+
</p>
<p>
@@ -282,7 +282,7 @@ Google Play 将展示优质应用,以便用户能够在 Google Play 中轻æ¾å
<li>
<em>已批准</em> — 您的应用已被审查并获得批准。该应用将直接æä¾›ç»™ Android TV 用户。
-
+
</li>
<li>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/wear.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/wear.jd
index 182abdf81d1f..480ce5db33a9 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/wear.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/wear.jd
@@ -60,7 +60,7 @@ page.metaDescription=å°†æ‚¨çš„åº”ç”¨ã€æ¸¸æˆå’Œå†…容分å‘到 Android Wear。
<p>
为了åšå¥½å‡†å¤‡ï¼Œä»¥ä¾¿åœ¨ Android Wear 上æˆåŠŸæŽ¨å‡ºåº”ç”¨ï¼Œé¦–å…ˆè¦æŸ¥é˜…在穿戴设备上æä¾›å‡ºè‰²åº”用体验的准则。
-请å‚考 <a href="{@docRoot}design/wear/index.html">Android
+请å‚考 <a href="{@docRoot}design/wear/index.html">Android
Wear 设计准则</a>ï¼Œäº†è§£æœ‰å…³é’ˆå¯¹ç©¿æˆ´è®¾å¤‡æ‰©å±•åº”ç”¨çš„å»ºè®®ï¼Œä»¥åŠæœ‰å…³è®¾è®¡å’Œå¯ç”¨æ€§çš„详情。
</p>
@@ -120,7 +120,7 @@ Wear 设计准则</a>,了解有关针对穿戴设备扩展应用的建议,ä»
<p>
您的穿戴设备应用应表现出色,在 Android Wear 上看起æ¥å¼•人入胜,并且æä¾›å°½å¯èƒ½æœ€ä½³çš„用户体验。
Google Play 将展示精选的优质穿戴设备应用,以便用户轻æ¾å‘现。
-以下说明了您如何加入平å°ï¼Œæäº¤ç”¨æˆ·å–œçˆ±çš„
+以下说明了您如何加入平å°ï¼Œæäº¤ç”¨æˆ·å–œçˆ±çš„
Android Wear 应用:
</p>
diff --git a/docs/html-intl/intl/zh-cn/distribute/resources.jd b/docs/html-intl/intl/zh-cn/distribute/resources.jd
index 71bd4665a23e..4c5644c9dda2 100644
--- a/docs/html-intl/intl/zh-cn/distribute/resources.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/resources.jd
@@ -8,7 +8,7 @@ page.metaDescription=我们翻译了以下一些网站资æºï¼Œå¸Œæœ›èƒ½å¸®åŠ©ä½
@jd:body
<div class="jd-descr" itemprop="articleBody">
- <div class="resource-widget resource-carousel-layout col-16"
+ <div class="resource-widget resource-carousel-layout col-16"
style="height:420px;margin-top:0px;padding-top:0"
data-query="collection:overview/carousel/zhcn"
data-sortOdrder="-timestamp"
diff --git a/docs/html-intl/intl/zh-cn/distribute/tools/launch-checklist.jd b/docs/html-intl/intl/zh-cn/distribute/tools/launch-checklist.jd
index 19a25c5cf9f8..900dc0d75c34 100644
--- a/docs/html-intl/intl/zh-cn/distribute/tools/launch-checklist.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/tools/launch-checklist.jd
@@ -79,8 +79,8 @@ page.image=/distribute/images/launch-checklist.jpg
</p>
<p>
- 当您基本熟悉å‘布æµç¨‹åŽï¼Œè¯·ç»§ç»­é˜…读以了解在
-Google Play 上å‘布应用时应考虑哪些问题。
+ 当您基本熟悉å‘布æµç¨‹åŽï¼Œè¯·ç»§ç»­é˜…读以了解在
+Google Play 上å‘布应用时应考虑哪些问题。
</p>
@@ -334,7 +334,7 @@ Google Play 会根æ®è¯¥è®¾ç½®æ¥ç­›é€‰åº”用,因此您选择的内容分级å
</div>
<p>
- å‘布应用之å‰ï¼Œè¯·åŠ¡å¿…ç¡®ä¿æ‚¨çš„应用å¯åœ¨ç›®æ ‡ Android å¹³å°ç‰ˆæœ¬å’Œè®¾å¤‡å±å¹•尺寸上正常è¿è¡Œã€‚
+ å‘布应用之å‰ï¼Œè¯·åŠ¡å¿…ç¡®ä¿æ‚¨çš„应用å¯åœ¨ç›®æ ‡ Android å¹³å°ç‰ˆæœ¬å’Œè®¾å¤‡å±å¹•尺寸上正常è¿è¡Œã€‚
</p>
@@ -400,7 +400,7 @@ Google Play 会根æ®è¯¥è®¾ç½®æ¥ç­›é€‰åº”用,因此您选择的内容分级å
<li>
<p>
将应用å‘布为å…费应用åŽï¼Œæ‚¨æ— æ³•å†å°†å…¶æ”¹æˆä»˜è´¹åº”用。
-ä¸è¿‡ï¼Œæ‚¨ä»èƒ½é€šè¿‡ Google Play
+ä¸è¿‡ï¼Œæ‚¨ä»èƒ½é€šè¿‡ Google Play
çš„<a href="{@docRoot}google/play/billing/index.html">应用内结算</a>æœåС销售<a href="{@docRoot}google/play/billing/billing_overview.html#products">应用内商å“</a>
和<a href="{@docRoot}google/play/billing/billing_subscriptions.html">订阅</a>。
</p>
@@ -449,9 +449,9 @@ Google Play 会根æ®è¯¥è®¾ç½®æ¥ç­›é€‰åº”用,因此您选择的内容分级å
<p>
å¦‚æžœæ‚¨å¸Œæœ›æ‰¾åˆ°æ›´å¤šæ–¹æ³•é€šè¿‡åº”ç”¨èŽ·åˆ©å¹¶å»ºç«‹ä¸Žç”¨æˆ·çš„äº’åŠ¨ï¼Œåˆ™åº”è€ƒè™‘ä½¿ç”¨â€œåº”ç”¨å†…ç»“ç®—â€æˆ–â€œå³æ—¶è´­ä¹°â€ã€‚
这些æœåŠ¡æ·±å—用户和开å‘者的欢迎。
-è¦ä½¿ç”¨â€œåº”ç”¨å†…ç»“ç®—â€æˆ–â€œå³æ—¶è´­ä¹°â€ï¼Œæ‚¨éœ€è¦å¯¹åº”用的二进制文件进行更改,因此,您需è¦å…ˆå®Œæˆæ›´æ”¹å¹¶æµ‹è¯•å®žçŽ°æ–¹æ³•ï¼Œç„¶åŽæ‰èƒ½åˆ›å»ºå‘布版 APK。
+è¦ä½¿ç”¨â€œåº”ç”¨å†…ç»“ç®—â€æˆ–â€œå³æ—¶è´­ä¹°â€ï¼Œæ‚¨éœ€è¦å¯¹åº”用的二进制文件进行更改,因此,您需è¦å…ˆå®Œæˆæ›´æ”¹å¹¶æµ‹è¯•å®žçŽ°æ–¹æ³•ï¼Œç„¶åŽæ‰èƒ½åˆ›å»ºå‘布版 APK。
+
-
</p>
<h3 class="rel-resources clearfloat">相关资æº</h3>
@@ -955,7 +955,7 @@ Google Play 团队会为用户æä¾›ä¸‹è½½ã€å®‰è£…和付款方é¢çš„æ”¯æŒï¼Œä½
<ul>
<li>
<p>
- ç»å¸¸æŸ¥çœ‹æ‚¨åº”用的商å“详情页上的评分和评论。
+ ç»å¸¸æŸ¥çœ‹æ‚¨åº”用的商å“详情页上的评分和评论。
注æ„åå¤å‡ºçŽ°çš„ä¸»é¢˜ï¼Œè¿™å¯èƒ½è¡¨ç¤ºå­˜åœ¨é”™è¯¯æˆ–其他问题。
</p>
</li>
@@ -991,7 +991,7 @@ Google Play 团队会为用户æä¾›ä¸‹è½½ã€å®‰è£…和付款方é¢çš„æ”¯æŒï¼Œä½
<li>
<p>
- ç¡®è®¤å¹¶ä¿®æ­£æ‚¨åº”ç”¨ä¸­å‡ºçŽ°çš„é—®é¢˜ã€‚ä¿æŒå…¬å¼€é€æ˜Žå¹¶ä¸»åŠ¨åœ¨å•†å“详情页上列出已知问题是有益之举。
+ ç¡®è®¤å¹¶ä¿®æ­£æ‚¨åº”ç”¨ä¸­å‡ºçŽ°çš„é—®é¢˜ã€‚ä¿æŒå…¬å¼€é€æ˜Žå¹¶ä¸»åŠ¨åœ¨å•†å“详情页上列出已知问题是有益之举。
</p>
</li>
diff --git a/docs/html-intl/intl/zh-cn/distribute/tools/localization-checklist.jd b/docs/html-intl/intl/zh-cn/distribute/tools/localization-checklist.jd
index 522b7f5e4d4d..e37f04337fbf 100644
--- a/docs/html-intl/intl/zh-cn/distribute/tools/localization-checklist.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/tools/localization-checklist.jd
@@ -62,7 +62,7 @@ page.image=/distribute/images/localization-checklist.jpg
用户å¯ä»¥æŽ§åˆ¶å…¶ Android 设备上使用的语言和语言区域,å过æ¥è¿™äº›å› ç´ ä¹Ÿä¼šå½±å“应用的显示方å¼ã€‚
-
+
</p>
<p>
@@ -820,7 +820,7 @@ data-sortorder="-timestamp" data-cardsizes="9x3" data-maxresults="6">
</h4>
<p>
- 如果您正在准备国际化è¥é”€ï¼Œè¯·åŠ¡å¿…åŠ å…¥<a href="{@docRoot}distribute/tools/promote/badges.html">本地化的 Google Play
+ 如果您正在准备国际化è¥é”€ï¼Œè¯·åŠ¡å¿…åŠ å…¥<a href="{@docRoot}distribute/tools/promote/badges.html">本地化的 Google Play
徽章</a>ï¼Œè®©ç”¨æˆ·çŸ¥é“æ‚¨æ˜¯åœ¨ Google Play 上å‘布应用的。您å¯ä»¥ä½¿ç”¨å¾½ç« ç”Ÿæˆå™¨å¿«é€Ÿæž„建本地化的徽章,然åŽç”¨åˆ°æ‚¨çš„网站或è¥é”€ææ–™ä¸­ã€‚
您还å¯ä»¥èŽ·å¾—é«˜åˆ†è¾¨çŽ‡çš„èµ„æºã€‚
diff --git a/docs/html-intl/intl/zh-cn/distribute/tools/promote/linking.jd b/docs/html-intl/intl/zh-cn/distribute/tools/promote/linking.jd
index c7cf7cf700b1..e9b13c02f002 100644
--- a/docs/html-intl/intl/zh-cn/distribute/tools/promote/linking.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/tools/promote/linking.jd
@@ -13,7 +13,7 @@ page.metaDescription=了解如何构建链接,把用户从æµè§ˆæˆ–æœç´¢å¸¦åˆ
</div>
</div>
- <p>Google Play æä¾›å¤šç§é“¾æŽ¥æ ¼å¼ï¼Œå¯è®©ä½ æŒ‰è‡ªå·±éœ€è¦çš„æ–¹å¼å°†ç”¨æˆ·ä»Ž Android 应用ã€ç½‘页ã€å¹¿å‘Šã€è¯„è®ºã€æ–‡ç« ã€ç¤¾äº¤åª’体帖å­ç­‰é“¾æŽ¥åˆ°ä½ çš„商å“。</p>
+ <p>Google Play æä¾›å¤šç§é“¾æŽ¥æ ¼å¼ï¼Œå¯è®©ä½ æŒ‰è‡ªå·±éœ€è¦çš„æ–¹å¼å°†ç”¨æˆ·ä»Ž Android 应用ã€ç½‘页ã€å¹¿å‘Šã€è¯„è®ºã€æ–‡ç« ã€ç¤¾äº¤åª’体帖å­ç­‰é“¾æŽ¥åˆ°ä½ çš„商å“。</p>
<p>这些链接格å¼å¯è®©ä½ ï¼š</p>
<ul>
diff --git a/docs/html-intl/intl/zh-cn/google/play/billing/api.jd b/docs/html-intl/intl/zh-cn/google/play/billing/api.jd
index fbdbac6c2843..ba1d63760e11 100644
--- a/docs/html-intl/intl/zh-cn/google/play/billing/api.jd
+++ b/docs/html-intl/intl/zh-cn/google/play/billing/api.jd
@@ -32,7 +32,7 @@ parent.link=index.html
<h2>å¦è¯·å‚è§</h2>
<ol>
<li><a href="{@docRoot}training/in-app-billing/index.html">销售应用内商å“</a></li>
- </ol>
+ </ol>
</div>
</div>
@@ -68,7 +68,7 @@ parent.link=index.html
<ol type="a">
<li>Google Play 返回的 <code>Bundle</code> ä¸­åŒ…å« <code>PendingIntent</code>,您的应用å¯ç”¨å®ƒæ¥å¯åŠ¨è´­ä¹°ç»“å¸ç•Œé¢ã€‚</li>
<li>您的应用通过调用 <code>startIntentSenderForResult</code> 方法æ¥å¯åЍ PendingIntent。</li>
- <li>å½“ç»“å¸æµç¨‹ç»“æŸåŽï¼ˆå³ç”¨æˆ·æˆåŠŸè´­ä¹°å•†å“æˆ–å–æ¶ˆè´­ä¹°ï¼‰ï¼ŒGoogle Play ä¼šå‘æ‚¨çš„ <code>onActivityResult</code> 方法å‘é€å“应 <code>Intent</code>。<code>onActivityResult</code> 的结果代ç ä¸­æœ‰ä¸€ä¸ªä»£ç å°†ç”¨äºŽè¡¨æ˜Žç”¨æˆ·æ˜¯å®Œæˆäº†è´­ä¹°è¿˜æ˜¯å–消了购买。å“应 <code>Intent</code> ä¸­ä¼šåŒ…å«æ‰€è´­å•†å“的相关信æ¯ï¼Œå…¶ä¸­åŒ…括 Google Play 为了唯一标识此次购买交易而生æˆçš„ <code>purchaseToken</code> 字符串。<code>Intent</code> 中还包å«ä½¿ç”¨æ‚¨çš„ç§äººå¼€å‘者密钥签署的购买签å。</li>
+ <li>å½“ç»“å¸æµç¨‹ç»“æŸåŽï¼ˆå³ç”¨æˆ·æˆåŠŸè´­ä¹°å•†å“æˆ–å–æ¶ˆè´­ä¹°ï¼‰ï¼ŒGoogle Play ä¼šå‘æ‚¨çš„ <code>onActivityResult</code> 方法å‘é€å“应 <code>Intent</code>。<code>onActivityResult</code> 的结果代ç ä¸­æœ‰ä¸€ä¸ªä»£ç å°†ç”¨äºŽè¡¨æ˜Žç”¨æˆ·æ˜¯å®Œæˆäº†è´­ä¹°è¿˜æ˜¯å–消了购买。å“应 <code>Intent</code> ä¸­ä¼šåŒ…å«æ‰€è´­å•†å“的相关信æ¯ï¼Œå…¶ä¸­åŒ…括 Google Play 为了唯一标识此次购买交易而生æˆçš„ <code>purchaseToken</code> 字符串。<code>Intent</code> 中还包å«ä½¿ç”¨æ‚¨çš„ç§äººå¼€å‘者密钥签署的购买签å。</li>
</ol>
</li>
</ol>
diff --git a/docs/html-intl/intl/zh-cn/google/play/billing/billing_admin.jd b/docs/html-intl/intl/zh-cn/google/play/billing/billing_admin.jd
index 989c0e7d59a2..50e2fe3f226d 100644
--- a/docs/html-intl/intl/zh-cn/google/play/billing/billing_admin.jd
+++ b/docs/html-intl/intl/zh-cn/google/play/billing/billing_admin.jd
@@ -15,7 +15,7 @@ parent.link=index.html
<li><a href="#billing-support">获å–相关支æŒ</a></li>
</ol>
-
+
<h2>å¦è¯·å‚è§</h2>
<ol>
<li><a href="{@docRoot}google/play/billing/billing_overview.html">应用内结算概述</a></li>
diff --git a/docs/html-intl/intl/zh-cn/google/play/filters.jd b/docs/html-intl/intl/zh-cn/google/play/filters.jd
index 9d68faf41bdf..87df676bfe2b 100644
--- a/docs/html-intl/intl/zh-cn/google/play/filters.jd
+++ b/docs/html-intl/intl/zh-cn/google/play/filters.jd
@@ -166,7 +166,7 @@ targetSdkVersion</a></code> 设置为 4 或更大时,所有属性的默认值å
</p>
<p><strong>示例 2<br />
</strong>æ¸…å•æ–‡ä»¶å£°æ˜Ž <code>&lt;uses-sdk android:minSdkVersion="3"
- android:targetSdkVersion="4"&gt;</code> 并且ä¸åŒ…括
+ android:targetSdkVersion="4"&gt;</code> 并且ä¸åŒ…括
<code>&lt;supports-screens&gt;</code> 元素。
<strong>结果</strong>:Google Play 将呿‰€æœ‰è®¾å¤‡çš„用户显示该应用,除éžè¿˜æœ‰å…¶ä»–筛选器。
</p>
@@ -400,10 +400,10 @@ Google Play ç„¶åŽæ ¹æ®
这样,您å¯ä»¥åªåŒ…括æ¯ç§è®¾å¤‡é…置所需的纹ç†ï¼Œä»Žè€Œå‡å°
APK 文件的大å°ã€‚
-æ ¹æ®æ¯ä¸ªè®¾å¤‡æ˜¯å¦æ”¯æŒæ‚¨çš„纹ç†åŽ‹ç¼©æ ¼å¼ï¼ŒGoogle Play
+æ ¹æ®æ¯ä¸ªè®¾å¤‡æ˜¯å¦æ”¯æŒæ‚¨çš„纹ç†åŽ‹ç¼©æ ¼å¼ï¼ŒGoogle Play
å°†å‘å…¶æä¾›æ‚¨å·²å£°æ˜Žæ”¯æŒè¯¥è®¾å¤‡çš„ APK。</p>
-<p>ç›®å‰ï¼Œåªæœ‰åœ¨æ¯ä¸ª APK æ ¹æ®ä»¥ä¸‹é…ç½®æä¾›ä¸åŒç­›é€‰æ—¶ï¼ŒGoogle Play
+<p>ç›®å‰ï¼Œåªæœ‰åœ¨æ¯ä¸ª APK æ ¹æ®ä»¥ä¸‹é…ç½®æä¾›ä¸åŒç­›é€‰æ—¶ï¼ŒGoogle Play
æ‰å…许您为åŒä¸€åº”用å‘布多个 APK:</p>
<ul>
<li>OpenGL 纹ç†åŽ‹ç¼©æ ¼å¼
diff --git a/docs/html-intl/intl/zh-cn/guide/components/activities.jd b/docs/html-intl/intl/zh-cn/guide/components/activities.jd
index efc1fb1ba711..0e7c4fda89a9 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/activities.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/activities.jd
@@ -1,5 +1,5 @@
page.title=Activity
-page.tags=Activity, Intent
+page.tags=Activity, Intent
@jd:body
<div id="qv-wrapper">
@@ -215,7 +215,7 @@ That Cannot Change</a>
<h2 id="StartingAnActivity">å¯åЍ Activity</h2>
<p>您å¯ä»¥é€šè¿‡è°ƒç”¨ {@link android.app.Activity#startActivity
- startActivity()},并将其传递给æè¿°æ‚¨æƒ³å¯åŠ¨çš„ Activity çš„ {@link android.content.Intent}
+ startActivity()},并将其传递给æè¿°æ‚¨æƒ³å¯åŠ¨çš„ Activity çš„ {@link android.content.Intent}
æ¥å¯åЍå¦ä¸€ä¸ª Activity。Intent 对象会指定您想å¯åŠ¨çš„å…·ä½“ Activity 或æè¿°æ‚¨æƒ³æ‰§è¡Œçš„æ“ä½œç±»åž‹ï¼ˆç³»ç»Ÿä¼šä¸ºæ‚¨é€‰æ‹©åˆé€‚çš„ Activity,甚至是æ¥è‡ªå…¶ä»–应用的 Activity)。
@@ -608,7 +608,7 @@ android.app.Activity#onSaveInstanceState onSaveInstanceState()}。
<p>系统会先调用
{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()},然åŽå†ä½¿ Activity å˜å¾—易于销æ¯ã€‚系统会å‘该方法传递一个
-{@link android.os.Bundle},您å¯ä»¥åœ¨å…¶ä¸­ä½¿ç”¨
+{@link android.os.Bundle},您å¯ä»¥åœ¨å…¶ä¸­ä½¿ç”¨
{@link
android.os.Bundle#putString putString()} 和 {@link
android.os.Bundle#putInt putInt()} 等方法以åç§°-值对形å¼ä¿å­˜æœ‰å…³ Activity 状æ€çš„ä¿¡æ¯ã€‚ç„¶åŽï¼Œå¦‚果系统终止您的应用进程,并且用户返回您的 Activity,则系统会é‡å»ºè¯¥ Activity,并将
diff --git a/docs/html-intl/intl/zh-cn/guide/components/bound-services.jd b/docs/html-intl/intl/zh-cn/guide/components/bound-services.jd
index ed6aaf6ecbf8..fda6ba704506 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/bound-services.jd
@@ -636,7 +636,7 @@ onStartCommand()}
android.content.Context#stopService stopService()}
为止,无论其是å¦ç»‘定到任何客户端。</p>
-<p>此外,如果您的æœåС已å¯åŠ¨å¹¶æŽ¥å—绑定,则当系统调用您的 {@link android.app.Service#onUnbind onUnbind()} 方法时,如果您想在客户端下一次绑定到æœåŠ¡æ—¶æŽ¥æ”¶
+<p>此外,如果您的æœåС已å¯åŠ¨å¹¶æŽ¥å—绑定,则当系统调用您的 {@link android.app.Service#onUnbind onUnbind()} 方法时,如果您想在客户端下一次绑定到æœåŠ¡æ—¶æŽ¥æ”¶
{@link android.app.Service#onRebind
onRebind()} è°ƒç”¨ï¼ˆè€Œä¸æ˜¯æŽ¥æ”¶ {@link
android.app.Service#onBind onBind()} 调用),则å¯é€‰æ‹©è¿”回
diff --git a/docs/html-intl/intl/zh-cn/guide/components/fragments.jd b/docs/html-intl/intl/zh-cn/guide/components/fragments.jd
index a4c2cbb82499..12a26e25863a 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/fragments.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/fragments.jd
@@ -36,7 +36,7 @@ parent.link=activities.html
<li>{@link android.app.FragmentManager}</li>
<li>{@link android.app.FragmentTransaction}</li>
</ol>
-
+
<h2>å¦è¯·å‚阅</h2>
<ol>
<li><a href="{@docRoot}training/basics/fragments/index.html">åˆ©ç”¨ç‰‡æ®µæž„å»ºåŠ¨æ€ UI</a></li>
@@ -362,7 +362,7 @@ findFragmentByTag()}。</p>
<p>如需查看将没有 UI 的片段用作åŽå°å·¥ä½œçº¿ç¨‹çš„示例 Activity,请å‚阅 {@code
FragmentRetainInstance.java} 示例,该示例包括在 SDK 示例(通过
-Android SDK 管ç†å™¨æä¾›ï¼‰ä¸­ï¼Œä»¥
+Android SDK 管ç†å™¨æä¾›ï¼‰ä¸­ï¼Œä»¥
<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code> å½¢å¼ä½äºŽæ‚¨çš„系统中。</p>
@@ -378,7 +378,7 @@ Android SDK 管ç†å™¨æä¾›ï¼‰ä¸­ï¼Œä»¥
<li>通过 {@link
android.app.FragmentManager#findFragmentById findFragmentById()}(对于在 Activity 布局中æä¾› UI
的片段)或 {@link android.app.FragmentManager#findFragmentByTag
-findFragmentByTag()}(对于æä¾›æˆ–䏿供 UI çš„ç‰‡æ®µï¼‰èŽ·å– Activity 中存在的片段</li>
+findFragmentByTag()}(对于æä¾›æˆ–䏿供 UI çš„ç‰‡æ®µï¼‰èŽ·å– Activity 中存在的片段</li>
<li>通过 {@link
android.app.FragmentManager#popBackStack()}(模拟用户å‘出的 <em>Back</em> 命令)将片段从返回栈中弹出</li>
<li>通过 {@link
@@ -785,7 +785,7 @@ android.widget.FrameLayout}),也å¯èƒ½ä¼šå¯åŠ¨ä¸€ä¸ªæ–°æ´»åŠ¨ï¼ˆåœ¨è¯¥æ´»åŠ
<p>第二个片段 {@code DetailsFragment} 显示从
{@code TitlesFragment} 的列表中选择的项目的æˆå‰§æ‘˜è¦ï¼š</p>
-
+
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
<p>从 {@code TitlesFragment} ç±»ä¸­é‡æ–°è°ƒç”¨ï¼Œå¦‚果用户点击æŸä¸ªåˆ—表项,且当å‰å¸ƒå±€â€œæ ¹æœ¬ä¸â€<em></em>包括 {@code R.id.details}
@@ -798,7 +798,7 @@ Activity 以显示该项目的内容。</p>
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
details_activity}
-
+
<p>请注æ„,如果é…置为横å‘,则此 Activity 会自行完æˆï¼Œä»¥ä¾¿ä¸» Activity å¯ä»¥æŽ¥ç®¡å¹¶æ²¿ {@code TitlesFragment}
显示
{@code DetailsFragment}ã€‚å¦‚æžœç”¨æˆ·åœ¨çºµå‘æ˜¾ç¤ºæ—¶å¯åЍ
diff --git a/docs/html-intl/intl/zh-cn/guide/components/fundamentals.jd b/docs/html-intl/intl/zh-cn/guide/components/fundamentals.jd
index 4ff22b64acbe..faaa0a3ffb6f 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/fundamentals.jd
@@ -379,7 +379,7 @@ Google Play
等外部æœåŠ¡ä¼šè¯»å–它们,以便当用户在其设备中æœç´¢åº”用时为用户æä¾›è¿‡æ»¤åŠŸèƒ½ã€‚</p>
<p>例如,如果您的应用需è¦ç›¸æœºï¼Œå¹¶ä½¿ç”¨ Android 2.1(<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API</a> 7 级)中引入的
-API,您应该åƒä¸‹é¢è¿™æ ·åœ¨æ¸…啿–‡ä»¶ä¸­ä»¥è¦æ±‚å½¢å¼å£°æ˜Žè¿™äº›ä¿¡æ¯ï¼š</p>
+API,您应该åƒä¸‹é¢è¿™æ ·åœ¨æ¸…啿–‡ä»¶ä¸­ä»¥è¦æ±‚å½¢å¼å£°æ˜Žè¿™äº›ä¿¡æ¯ï¼š</p>
<pre>
&lt;manifest ... >
@@ -390,7 +390,7 @@ API,您应该åƒä¸‹é¢è¿™æ ·åœ¨æ¸…啿–‡ä»¶ä¸­ä»¥è¦æ±‚å½¢å¼å£°æ˜Žè¿™äº›ä¿¡æ
&lt;/manifest>
</pre>
-<p>现在,<em>没有</em>相机且
+<p>现在,<em>没有</em>相机且
Android 版本<em>低于</em> 2.1 的设备将无法从 Google Play 安装您的应用。</p>
<p>ä¸è¿‡ï¼Œæ‚¨ä¹Ÿå¯ä»¥å£°æ˜Žæ‚¨çš„应用使用相机,但并ä¸<em>è¦æ±‚</em>必须使用。
diff --git a/docs/html-intl/intl/zh-cn/guide/components/index.jd b/docs/html-intl/intl/zh-cn/guide/components/index.jd
index 53e81849c550..73c1bdf2d7b2 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/index.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/index.jd
@@ -11,7 +11,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>åšå®¢æ–‡ç« </h3>
-
+
<a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
<h4>使用 DialogFragments</h4>
<p>在这篇帖å­ä¸­ï¼Œæˆ‘将介ç»å¦‚何使用带有 v4 支æŒåº“ï¼ˆæ—¨åœ¨æ”¯æŒ Honeycomb 之å‰çš„设备实现å‘åŽå…¼å®¹ï¼‰çš„ DialogFragments 显示一个简å•çš„ç¼–è¾‘å¯¹è¯æ¡†ï¼Œå¹¶ä½¿ç”¨ä¸€ä¸ªæŽ¥å£å‘调用 Activity 返回一个结果。</p>
@@ -21,7 +21,7 @@ page.image=images/develop/app_components.png
<h4>通用片段</h4>
<p>今天,我们已å‘å¸ƒä¸€ä¸ªå±•ç¤ºç›¸åŒ Fragments API çš„é™æ€åº“ï¼ˆä»¥åŠæ–°çš„ LoaderManager 和其他几个类)。因此,与 Android 1.6 或更高版本兼容的应用å¯ä»¥ä½¿ç”¨ Fragment 创建与平æ¿ç”µè„‘兼容的用户界é¢ã€‚ </p>
</a>
-
+
<a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
<h4>多线程处ç†ï¼Œæ€§èƒ½å“è¶Š</h4>
<p>创建快速å“åº”çš„åº”ç”¨çš„æœ‰æ•ˆæ–¹æ³•æ˜¯ï¼šç¡®ä¿æœ€å¤§ç¨‹åº¦åœ°å‡å°‘主 UI
@@ -32,7 +32,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>培训</h3>
-
+
<a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
<h4>ç®¡ç† Activity 生命周期</h4>
<p>æœ¬è¯¾ç¨‹ä»‹ç»æ¯ä¸ª Activity 实例将收到的é‡è¦ç”Ÿå‘½å‘¨æœŸå›žè°ƒæ–¹æ³•,é˜è¿°å¯ä»¥å¦‚何利用这些方法使 Activity 达到用户预期,且é¿å…它们在 Activity ä¸éœ€è¦ä½¿ç”¨æ—¶æ¶ˆè€—系统资æºã€‚
diff --git a/docs/html-intl/intl/zh-cn/guide/components/loaders.jd b/docs/html-intl/intl/zh-cn/guide/components/loaders.jd
index d8427b0cd109..d7681887a3ce 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/loaders.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/loaders.jd
@@ -21,14 +21,14 @@ parent.link=activities.html
</ol>
</li>
</ol>
-
+
<h2>关键类</h2>
<ol>
<li>{@link android.app.LoaderManager}</li>
<li>{@link android.content.Loader}</li>
- </ol>
-
+ </ol>
+
<h2>相关示例</h2>
<ol>
<li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -51,7 +51,7 @@ android.app.Fragment}。</li>
å› æ­¤ï¼Œå®ƒä»¬æ— éœ€é‡æ–°æŸ¥è¯¢å…¶æ•°æ®ã€‚
</li>
</ul>
-
+
<h2 id="summary">Loader API 摘è¦</h2>
<p>在应用中使用加载器时,å¯èƒ½ä¼šæ¶‰åŠåˆ°å¤šä¸ªç±»å’ŒæŽ¥å£ã€‚
@@ -129,7 +129,7 @@ android.content.ContentProvider} 支æŒçš„æ•°æ®ã€‚您也å¯ä»¥å®žçŽ°è‡ªå·±çš„
或 {@link android.content.AsyncTaskLoader} å­ç±»ï¼Œä»Žå…¶ä»–æºä¸­åŠ è½½æ•°æ®ã€‚</li>
<li>一个
{@link android.app.LoaderManager.LoaderCallbacks}
-实现。您å¯ä»¥ä½¿ç”¨å®ƒæ¥åˆ›å»ºæ–°åŠ è½½å™¨ï¼Œå¹¶ç®¡ç†å¯¹çŽ°æœ‰åŠ è½½å™¨çš„å¼•ç”¨ã€‚</li>
+实现。您å¯ä»¥ä½¿ç”¨å®ƒæ¥åˆ›å»ºæ–°åŠ è½½å™¨ï¼Œå¹¶ç®¡ç†å¯¹çŽ°æœ‰åŠ è½½å™¨çš„å¼•ç”¨ã€‚</li>
<li>ä¸€ç§æ˜¾ç¤ºåŠ è½½å™¨æ•°æ®çš„æ–¹æ³•,如 {@link
android.widget.SimpleCursorAdapter}。</li>
<li>使用
@@ -140,11 +140,11 @@ android.widget.SimpleCursorAdapter}。</li>
<p>{@link android.app.LoaderManager} å¯åœ¨ {@link android.app.Activity} 或
{@link android.app.Fragment} 内管ç†ä¸€ä¸ªæˆ–多个 {@link
android.content.Loader} 实例。æ¯ä¸ª Activity æˆ–ç‰‡æ®µåªæœ‰ä¸€ä¸ª {@link
-android.app.LoaderManager}。</p>
+android.app.LoaderManager}。</p>
<p>通常,您会使用 Activity 的 {@link
android.app.Activity#onCreate onCreate()} 方法或片段的
-{@link android.app.Fragment#onActivityCreated onActivityCreated()}
+{@link android.app.Fragment#onActivityCreated onActivityCreated()}
方法åˆå§‹åŒ– {@link android.content.Loader}。您执行æ“作如下:
</p>
@@ -157,13 +157,13 @@ getLoaderManager().initLoader(0, null, this);</pre>
<ul>
<li>用于标识加载器的唯一 ID。在此示例中,ID 为 0。</li>
<li>在构建时æä¾›ç»™åŠ è½½å™¨çš„å¯é€‰å‚数(在此示例中为 <code>null</code>
-)。</li>
+)。</li>
<li>{@link android.app.LoaderManager.LoaderCallbacks} 实现,
{@link android.app.LoaderManager} å°†è°ƒç”¨æ­¤å®žçŽ°æ¥æŠ¥å‘ŠåŠ è½½å™¨äº‹ä»¶ã€‚åœ¨æ­¤ç¤ºä¾‹ä¸­ï¼Œæœ¬åœ°ç±»å®žçŽ°
{@link
android.app.LoaderManager.LoaderCallbacks}
-接å£ï¼Œå› æ­¤å®ƒä¼šå°†å¼•用 {@code this} 传递给自己。</li>
+接å£ï¼Œå› æ­¤å®ƒä¼šå°†å¼•用 {@code this} 传递给自己。</li>
</ul>
<p>{@link android.app.LoaderManager#initLoader initLoader()}
调用确ä¿åŠ è½½å™¨å·²åˆå§‹åŒ–且处于Activity状æ€ã€‚è¿™å¯èƒ½ä¼šå‡ºçް䏤ç§ç»“果:</p>
@@ -362,11 +362,11 @@ public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
<h2 id="example">示例</h2>
-<p>以下是一个
+<p>以下是一个
{@link
android.app.Fragment} 完整实现示例。它展示了一个 {@link android.widget.ListView},其中包å«é’ˆå¯¹è”系人内容æä¾›ç¨‹åºçš„æŸ¥è¯¢ç»“果。它使用 {@link
android.content.CursorLoader} ç®¡ç†æä¾›ç¨‹åºçš„æŸ¥è¯¢ã€‚</p>
-
+
<p>应用如需访问用户è”ç³»äººï¼ˆæ­£å¦‚æ­¤ç¤ºä¾‹ä¸­æ‰€ç¤ºï¼‰ï¼Œå…¶æ¸…å•æ–‡ä»¶å¿…须包括æƒé™
{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}。
</p>
diff --git a/docs/html-intl/intl/zh-cn/guide/components/processes-and-threads.jd b/docs/html-intl/intl/zh-cn/guide/components/processes-and-threads.jd
index c88ecf4b81e8..3f7c3cfa6d90 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/processes-and-threads.jd
@@ -47,7 +47,7 @@ Linux 进程。默认情况下,åŒä¸€åº”用的所有组件在相åŒçš„进程å’
&lt;activity&gt;}</a>ã€<a href="{@docRoot}guide/topics/manifest/service-element.html">{@code
&lt;service&gt;}</a>ã€<a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code
&lt;receiver&gt;}</a> 和 <a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
-&lt;provider&gt;}</a>&mdash;凿”¯æŒ
+&lt;provider&gt;}</a>&mdash;凿”¯æŒ
{@code android:process} 属性,此属性å¯ä»¥æŒ‡å®šè¯¥ç»„件应在哪个进程è¿è¡Œã€‚您å¯ä»¥è®¾ç½®æ­¤å±žæ€§ï¼Œä½¿æ¯ä¸ªç»„ä»¶å‡åœ¨å„自的进程中è¿è¡Œï¼Œæˆ–者使一些组件共享一个进程,而其他组件则ä¸å…±äº«ã€‚
此外,您还å¯ä»¥è®¾ç½® {@code android:process},使ä¸åŒåº”用的组件在相åŒçš„进程中è¿è¡Œï¼Œä½†å‰ææ˜¯è¿™äº›åº”用共享相åŒçš„ Linux 用户 ID 并使用相åŒçš„è¯ä¹¦è¿›è¡Œç­¾ç½²ã€‚
@@ -319,7 +319,7 @@ private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
-
+
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
diff --git a/docs/html-intl/intl/zh-cn/guide/components/recents.jd b/docs/html-intl/intl/zh-cn/guide/components/recents.jd
index 2bf1a5bd4ff3..bc218f44d072 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/recents.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/recents.jd
@@ -118,7 +118,7 @@ public void createNewDocument(View view) {
如果未找到任务或者 Intent 包å«
{@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}
标志,则会以该 Activity 作为其根创建新任务。如果找到的è¯ï¼Œåˆ™ä¼šå°†è¯¥ä»»åŠ¡è½¬åˆ°å‰å°å¹¶å°†æ–°
- Intent
+ Intent
传递给
{@link android.app.Activity#onNewIntent onNewIntent()}。新 Activity 将获得 Intent 并在概览å±å¹•中创建新文档,如下例所示:</p>
@@ -176,7 +176,7 @@ protected void onNewIntent(Intent intent) {
<dd>该 Activity ä¸ä¼šä¸ºæ–‡æ¡£åˆ›å»ºæ–°ä»»åŠ¡ã€‚è®¾ç½®æ­¤å€¼ä¼šæ›¿ä»£
{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
和 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 标志的行为(如果在
- Intent
+ Intent
中设置了其中一个标志),并且概览å±å¹•将为应用显示å•ä¸ªä»»åŠ¡ï¼Œè¯¥ä»»åŠ¡å°†ä»Žç”¨æˆ·ä¸Šæ¬¡è°ƒç”¨çš„ä»»æ„ Activity 开始继续执行。</dd>
</dl>
diff --git a/docs/html-intl/intl/zh-cn/guide/components/services.jd b/docs/html-intl/intl/zh-cn/guide/components/services.jd
index 9a00e704fa38..c7c848b75e39 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/services.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/services.jd
@@ -244,7 +244,7 @@ android.content.Context#startService startService()} 方法并传递 {@link andr
{@link android.app.Service#onStartCommand
onStartCommand()} 方法接收此 {@link android.content.Intent}。</p>
-<p>例如,å‡è®¾æŸ Activity 需è¦å°†ä¸€äº›æ•°æ®ä¿å­˜åˆ°åœ¨çº¿æ•°æ®åº“中。该 Activity å¯ä»¥å¯åŠ¨ä¸€ä¸ªååŒæœåŠ¡ï¼Œå¹¶é€šè¿‡å‘
+<p>例如,å‡è®¾æŸ Activity 需è¦å°†ä¸€äº›æ•°æ®ä¿å­˜åˆ°åœ¨çº¿æ•°æ®åº“中。该 Activity å¯ä»¥å¯åŠ¨ä¸€ä¸ªååŒæœåŠ¡ï¼Œå¹¶é€šè¿‡å‘
{@link
android.content.Context#startService startService()} 传递一个 Intent,为该æœåŠ¡æä¾›è¦ä¿å­˜çš„æ•°æ®ã€‚æœåŠ¡é€šè¿‡
{@link
diff --git a/docs/html-intl/intl/zh-cn/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/zh-cn/guide/components/tasks-and-back-stack.jd
index 07fdf6e80a02..88aa78ebb516 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/tasks-and-back-stack.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/tasks-and-back-stack.jd
@@ -45,7 +45,7 @@ Android 多任务è¿è¡Œæœºåˆ¶</a></li>
<p>一个 Activity 甚至å¯ä»¥å¯åŠ¨è®¾å¤‡ä¸Šå…¶ä»–åº”ç”¨ä¸­å­˜åœ¨çš„ Activity。例如,如果应用想è¦å‘é€ç”µå­é‚®ä»¶ï¼Œåˆ™å¯å°† Intent 定义为执行“å‘é€â€æ“作并加入一些数æ®ï¼Œå¦‚电å­é‚®ä»¶åœ°å€å’Œç”µå­é‚®ä»¶ã€‚
ç„¶åŽï¼Œç³»ç»Ÿå°†æ‰“å¼€å…¶ä»–åº”ç”¨ä¸­å£°æ˜Žè‡ªå·±å¤„ç†æ­¤ç±»
- Intent çš„ Activityã€‚åœ¨è¿™ç§æƒ…况下, Intent
+ Intent çš„ Activityã€‚åœ¨è¿™ç§æƒ…况下, Intent
是è¦å‘é€ç”µå­é‚®ä»¶ï¼Œå› æ­¤å°†å¯åŠ¨ç”µå­é‚®ä»¶åº”用的“撰写â€Activity(如果多个 Activity 支æŒç›¸åŒ
Intent,则系统会让用户选择è¦ä½¿ç”¨çš„ Activity)。å‘é€ç”µå­é‚®ä»¶æ—¶ï¼ŒActivity å°†æ¢å¤ï¼Œçœ‹èµ·æ¥å¥½åƒç”µå­é‚®ä»¶ Activity 是您的应用的一部分。
å³ä½¿è¿™ä¸¤ä¸ª Activity å¯èƒ½æ¥è‡ªä¸åŒçš„应用,但是
@@ -246,7 +246,7 @@ B)。与该应用交互之åŽï¼Œç”¨æˆ·å†æ¬¡è¿”回主å±å¹•并选择最åˆå¯å
<li>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</li>
</ul>
-<p>åœ¨ä¸‹æ–‡ä¸­ï¼Œæ‚¨å°†äº†è§£å¦‚ä½•ä½¿ç”¨è¿™äº›æ¸…å•æ–‡ä»¶å±žæ€§å’Œ Intent
+<p>åœ¨ä¸‹æ–‡ä¸­ï¼Œæ‚¨å°†äº†è§£å¦‚ä½•ä½¿ç”¨è¿™äº›æ¸…å•æ–‡ä»¶å±žæ€§å’Œ Intent
标志定义 Activity ä¸Žä»»åŠ¡çš„å…³è”æ–¹å¼ï¼Œä»¥åŠ Activity 在返回栈中的行为方å¼ã€‚</p>
<p>此外,我们还å•独介ç»äº†æœ‰å…³å¦‚何在概览å±å¹•中显示和管ç†ä»»åŠ¡ä¸Ž Activity 的注æ„事项。
@@ -282,7 +282,7 @@ A å¯åЍ Activity B,则 Activity B å¯ä»¥åœ¨å…¶æ¸…啿–‡ä»¶ä¸­å®šä¹‰å®ƒåº”该å
B çš„è¯·æ±‚ï¼ˆå¦‚å…¶æ¸…å•æ–‡ä»¶ä¸­æ‰€å®šä¹‰ï¼‰ã€‚</p>
<p class="note"><strong>注:</strong>æŸäº›é€‚ç”¨äºŽæ¸…å•æ–‡ä»¶çš„å¯åЍ
-模å¼ä¸å¯ç”¨ä½œ Intent æ ‡å¿—ï¼ŒåŒæ ·ï¼ŒæŸäº›å¯ç”¨ä½œ Intent
+模å¼ä¸å¯ç”¨ä½œ Intent æ ‡å¿—ï¼ŒåŒæ ·ï¼ŒæŸäº›å¯ç”¨ä½œ Intent
标志的å¯åŠ¨æ¨¡å¼æ— æ³•åœ¨æ¸…å•æ–‡ä»¶ä¸­å®šä¹‰ã€‚</p>
@@ -370,7 +370,7 @@ Android æµè§ˆå™¨çš„
å±žæ€§å’Œå¯æŽ¥å—的值。</p>
<p class="note"><strong>注:</strong>使用 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
-属性为 Activity 指定的行为å¯ç”± Intent
+属性为 Activity 指定的行为å¯ç”± Intent
附带的 Activity å¯åŠ¨æ ‡å¿—æ›¿ä»£ï¼Œä¸‹æ–‡å°†å¯¹æ­¤è¿›è¡Œè®¨è®ºã€‚</p>
@@ -378,7 +378,7 @@ Android æµè§ˆå™¨çš„
<h4 id="#IntentFlagsForTasks">使用 Intent 标志</h4>
<p>å¯åЍ Activity 时,您å¯ä»¥é€šè¿‡åœ¨ä¼ é€’ç»™ {@link
-android.app.Activity#startActivity startActivity()} çš„ Intent
+android.app.Activity#startActivity startActivity()} çš„ Intent
中加入相应的标志,修改 Activity ä¸Žå…¶ä»»åŠ¡çš„é»˜è®¤å…³è”æ–¹å¼ã€‚å¯ç”¨äºŽä¿®æ”¹é»˜è®¤è¡Œä¸ºçš„æ ‡å¿—包括:
</p>
@@ -404,7 +404,7 @@ android.app.Activity#startActivity startActivity()} çš„ Intent
属性没有值。</p>
<p>{@code FLAG_ACTIVITY_CLEAR_TOP} 通常与
{@code FLAG_ACTIVITY_NEW_TASK}
-结åˆä½¿ç”¨ã€‚一起使用时,通过这些标志,å¯ä»¥æ‰¾åˆ°å…¶ä»–任务中的现有 Activity,并将其放入å¯ä»Žä¸­å“应 Intent
+结åˆä½¿ç”¨ã€‚一起使用时,通过这些标志,å¯ä»¥æ‰¾åˆ°å…¶ä»–任务中的现有 Activity,并将其放入å¯ä»Žä¸­å“应 Intent
çš„ä½ç½®ã€‚ </p>
<p class="note"><strong>注:</strong>如果指定 Activity çš„å¯åŠ¨æ¨¡å¼ä¸º
{@code "standard"},则该 Activity 也会从堆栈中删除,并在其ä½ç½®å¯åŠ¨ä¸€ä¸ªæ–°å®žä¾‹ï¼Œä»¥ä¾¿å¤„ç†ä¼ å…¥çš„ Intent。
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/zh-cn/guide/topics/manifest/manifest-intro.jd
index c7ade4f392db..65b3b232df42 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/manifest/manifest-intro.jd
@@ -34,14 +34,14 @@ Android 系统æä¾›æœ‰å…³æ‚¨çš„应用的基本信æ¯ï¼Œç³»ç»Ÿå¿…须获得这些
<li>æè¿°åº”用的å„个组件,å³ï¼šæž„æˆåº”用的 Activityã€æœåŠ¡ã€å¹¿æ’­æŽ¥æ”¶å™¨å’Œå†…容æä¾›ç¨‹åºã€‚
为实现æ¯ä¸ªç»„件的类命åå¹¶å‘布其功能(例如,它们å¯ä»¥å¤„ç†çš„
-{@link android.content.Intent
+{@link android.content.Intent
Intent} 消æ¯ï¼‰ã€‚æ ¹æ®è¿™äº›å£°æ˜Žï¼ŒAndroid
系统å¯ä»¥äº†è§£è¿™ç»„件具体是什么,以åŠåœ¨ä»€ä¹ˆæ¡ä»¶ä¸‹å¯ä»¥å¯åŠ¨å®ƒä»¬</li>
-<li>确定将托管应用组件的进程</li>
+<li>确定将托管应用组件的进程</li>
<li>声明应用必须具备哪些æƒé™æ‰èƒ½è®¿é—®
-API 中å—ä¿æŠ¤çš„éƒ¨åˆ†å¹¶ä¸Žå…¶ä»–åº”ç”¨äº¤äº’</li>
+API 中å—ä¿æŠ¤çš„éƒ¨åˆ†å¹¶ä¸Žå…¶ä»–åº”ç”¨äº¤äº’</li>
<li>还声明其他应用与该应用组件交互所需具备的æƒé™
</li>
@@ -66,7 +66,7 @@ API 中å—ä¿æŠ¤çš„éƒ¨åˆ†å¹¶ä¸Žå…¶ä»–åº”ç”¨äº¤äº’</li>
è¦æŸ¥çœ‹æœ‰å…³ä»»ä½•元素的详细信æ¯ï¼Œè¯·ç‚¹å‡»è¯¥å›¾ä¸­æˆ–å…¶åŽæŒ‰å­—æ¯é¡ºåºæŽ’列的元素列表中相应的元素å称,或者点击任何其他地方æåˆ°çš„相应元素å称。
-
+
</p>
<pre>
@@ -128,7 +128,7 @@ API 中å—ä¿æŠ¤çš„éƒ¨åˆ†å¹¶ä¸Žå…¶ä»–åº”ç”¨äº¤äº’</li>
<p>
å¯å‡ºçŽ°åœ¨æ¸…å•æ–‡ä»¶ä¸­çš„æ‰€æœ‰å…ƒç´ æŒ‰å­—æ¯é¡ºåºç½—列如下。
è¿™äº›æ˜¯ä»…æœ‰çš„åˆæ³•元素;您无法添加自己的元素或属性。
-
+
</p>
<p style="margin-left: 2em">
@@ -158,7 +158,7 @@ API 中å—ä¿æŠ¤çš„éƒ¨åˆ†å¹¶ä¸Žå…¶ä»–åº”ç”¨äº¤äº’</li>
</p>
-
+
<h2 id="filec">文件约定</h2>
@@ -218,7 +218,7 @@ Activity
(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>)ã€å¹¿æ’­æŽ¥æ”¶å™¨
(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>)
以åŠå†…容æä¾›ç¨‹åº
-(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>)。
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>)。
<p>
如果按照您针对组件类({@link android.app.Activity}ã€{@link android.app.Service}ã€{@link android.content.BroadcastReceiver}
@@ -244,7 +244,7 @@ Activity
元素的
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
属性中所指定)。
-以下赋值与上述方法相åŒï¼š
+以下赋值与上述方法相åŒï¼š
</p>
<pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -339,7 +339,7 @@ Android 系统在å¯åЍæŸç»„件之å‰å¿…须了解该组件å¯ä»¥å¤„ç†å“ªäº› In
<p>
显å¼å‘½å目标组件的
Intent 将激活该组件;过滤器ä¸èµ·ä½œç”¨ã€‚ä½†æ˜¯ï¼Œä¸æŒ‰å称指定目标的
- Intent
+ Intent
åªæœ‰åœ¨èƒ½å¤Ÿé€šè¿‡ç»„件的一个过滤器时æ‰å¯æ¿€æ´»è¯¥ç»„件。
</p>
@@ -399,7 +399,7 @@ Android 系统在å¯åЍæŸç»„件之å‰å¿…须了解该组件å¯ä»¥å¤„ç†å“ªäº› In
<p>
<i>æƒé™</i> 是一ç§é™åˆ¶ï¼Œç”¨äºŽé™åˆ¶å¯¹éƒ¨åˆ†ä»£ç æˆ–设备上数æ®çš„访问。
施加é™åˆ¶æ˜¯ä¸ºäº†ä¿æŠ¤å¯èƒ½è¢«è¯¯ç”¨ä»¥è‡´ç ´å或æŸå®³ç”¨æˆ·ä½“验的关键数æ®å’Œä»£ç ã€‚
-
+
</p>
<p>
@@ -427,7 +427,7 @@ Android 定义的一些æƒé™ï¼š
如果授予æƒé™ï¼Œåˆ™åº”用能够使用å—ä¿æŠ¤çš„åŠŸèƒ½ã€‚
å¦åˆ™ï¼Œå…¶è®¿é—®è¿™äº›åŠŸèƒ½çš„å°è¯•将会失败,并且ä¸ä¼šå‘用户å‘é€ä»»ä½•通知。
-
+
</p>
<p>
@@ -464,7 +464,7 @@ Android
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
元素æ¥è¯·æ±‚。è¦è®©åº”用的其他组件也能够å¯åЍå—ä¿æŠ¤çš„ Activity,就必须请求其使用æƒé™ï¼Œå³ä¾¿ä¿æŠ¤æ˜¯ç”±åº”用本身施加的亦如此。
-
+
</p>
<p>
@@ -474,7 +474,7 @@ Android
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
å…ƒç´ å†æ¬¡å£°æ˜Žã€‚
ä½†æ˜¯ï¼Œä»æœ‰å¿…è¦é€šè¿‡
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 请求使用它。
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 请求使用它。
</p>
<p>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/zh-cn/guide/topics/providers/calendar-provider.jd
index 59682843897d..b34cd8bf2891 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@ page.title=日历æä¾›ç¨‹åº
<li><a href="#intent-view">使用 Intent 对象查看日历数æ®</a></li>
</ol>
</li>
-
+
<li><a href="#sync-adapter">åŒæ­¥é€‚é…器</a></li>
</ol>
@@ -113,14 +113,14 @@ URI 的格å¼ä¸º <code><em>&lt;class&gt;</em>.CONTENT_URI</code>。例如,{@li
</tr>
<tr>
<td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-
+
<td>此表储存日历特定信æ¯ã€‚
此表中的æ¯ä¸€è¡Œéƒ½åŒ…å«ä¸€ä¸ªæ—¥åŽ†çš„è¯¦ç»†ä¿¡æ¯ï¼Œä¾‹å¦‚åç§°ã€é¢œè‰²ã€åŒæ­¥ä¿¡æ¯ç­‰ã€‚
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Events}</td>
-
+
<td>此表储存事件特定信æ¯ã€‚
此表中的æ¯ä¸€è¡Œéƒ½åŒ…å«ä¸€ä¸ªäº‹ä»¶çš„ä¿¡æ¯&mdash;例如事件åç§°ã€åœ°ç‚¹ã€å¼€å§‹æ—¶é—´ã€ç»“æŸæ—¶é—´ç­‰ã€‚
@@ -132,7 +132,7 @@ URI 的格å¼ä¸º <code><em>&lt;class&gt;</em>.CONTENT_URI</code>。例如,{@li
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances}</td>
-
+
<td>此表储存æ¯ä¸ªäº‹ä»¶å®žä¾‹çš„å¼€å§‹æ—¶é—´å’Œç»“æŸæ—¶é—´ã€‚
此表中的æ¯ä¸€è¡Œéƒ½è¡¨ç¤ºä¸€ä¸ªäº‹ä»¶å®žä¾‹ã€‚
对于一次性事件,实例与事件为 1:1
@@ -141,7 +141,7 @@ URI 的格å¼ä¸º <code><em>&lt;class&gt;</em>.CONTENT_URI</code>。例如,{@li
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Attendees}</td>
-
+
<td>此表储存事件å‚加者(æ¥å®¾ï¼‰ä¿¡æ¯ã€‚
æ¯ä¸€è¡Œéƒ½è¡¨ç¤ºäº‹ä»¶çš„䏀使¥å®¾ã€‚
它指定æ¥å®¾çš„类型以åŠäº‹ä»¶çš„æ¥å®¾å‡ºå¸­å“应。
@@ -149,7 +149,7 @@ URI 的格å¼ä¸º <code><em>&lt;class&gt;</em>.CONTENT_URI</code>。例如,{@li
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Reminders}</td>
-
+
<td>此表储存æé†’/通知数æ®ã€‚
æ¯ä¸€è¡Œéƒ½è¡¨ç¤ºäº‹ä»¶çš„一个æé†’。一个事件å¯ä»¥æœ‰å¤šä¸ªæé†’。
æ¯ä¸ªäº‹ä»¶çš„æœ€å¤§æé†’æ•°é‡åœ¨
@@ -159,7 +159,7 @@ URI 的格å¼ä¸º <code><em>&lt;class&gt;</em>.CONTENT_URI</code>。例如,{@li
中指定,åŽè€…ç”±æ‹¥æœ‰ç»™å®šæ—¥åŽ†çš„åŒæ­¥é€‚é…器设置。æé†’以事件å‘生å‰çš„åˆ†é’Ÿæ•°å½¢å¼æŒ‡å®šï¼Œå…¶å…·æœ‰ä¸€ä¸ªå¯å†³å®šç”¨æˆ·æé†’æ–¹å¼çš„æ–¹æ³•。
</td>
</tr>
-
+
</table>
<p>Calendar Provider API ä»¥çµæ´»ã€å¼ºå¤§ä¸ºè®¾è®¡å®—旨。æä¾›è‰¯å¥½çš„æœ€ç»ˆç”¨æˆ·ä½“验以åŠä¿æŠ¤æ—¥åކåŠå…¶æ•°æ®çš„å®Œæ•´æ€§ä¹ŸåŒæ ·é‡è¦ã€‚
@@ -229,7 +229,7 @@ android.Manifest.permission#READ_CALENDAR} æƒé™ã€‚文件中必须包括用于å
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-
+
<td>表示是å¦é€‰æ‹©æ˜¾ç¤ºè¯¥æ—¥åŽ†çš„å¸ƒå°”å€¼ã€‚å€¼ä¸º 0 表示ä¸åº”显示与该日历关è”的事件。
值为 1
@@ -240,7 +240,7 @@ android.provider.CalendarContract.Instances} 表中行的生æˆã€‚</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-
+
<td>一个布尔值,表示是å¦åº”åŒæ­¥æ—¥åŽ†å¹¶å°†å…¶äº‹ä»¶å­˜å‚¨åœ¨è®¾å¤‡ä¸Šã€‚
值为 0
表示ä¸åŒæ­¥è¯¥æ—¥åŽ†ï¼Œä¹Ÿä¸å°†å…¶äº‹ä»¶å­˜å‚¨åœ¨è®¾å¤‡ä¸Šã€‚值为 1
@@ -268,13 +268,13 @@ public static final String[] EVENT_PROJECTION = new String[] {
Calendars.CALENDAR_DISPLAY_NAME, // 2
Calendars.OWNER_ACCOUNT // 3
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
-
+
<div class="sidebox-wrapper"> <div class="sidebox"> <h3>为何必须加入
ACCOUNT_TYPE?</h3> <p>如果您查询 {@link
@@ -289,7 +289,7 @@ Calendars.ACCOUNT_NAME},还必须将
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
çš„ç‰¹æ®Šå¸æˆ·ç±»åž‹ï¼Œç”¨äºŽæœªå…³è”è®¾å¤‡å¸æˆ·çš„æ—¥åŽ†ã€‚{@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
-叿ˆ·ä¸ä¼šè¿›è¡ŒåŒæ­¥ã€‚</p> </div> </div>
+叿ˆ·ä¸ä¼šè¿›è¡ŒåŒæ­¥ã€‚</p> </div> </div>
<p> åœ¨ç¤ºä¾‹çš„ä¸‹ä¸€éƒ¨åˆ†ï¼Œæ‚¨éœ€è¦æž„建查询。选定范围指定查询的æ¡ä»¶ã€‚
@@ -308,38 +308,38 @@ android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
<pre>// Run query
Cursor cur = null;
ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+Uri uri = Calendars.CONTENT_URI;
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+ Calendars.ACCOUNT_TYPE + " = ?) AND ("
+ Calendars.OWNER_ACCOUNT + " = ?))";
String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
- "sampleuser@gmail.com"};
-// Submit the query and get a Cursor object back.
+ "sampleuser@gmail.com"};
+// Submit the query and get a Cursor object back.
cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
<p>以下åŽç»­éƒ¨åˆ†ä½¿ç”¨æ¸¸æ ‡å•æ­¥è°ƒè¯•ç»“æžœé›†ã€‚å®ƒä½¿ç”¨åœ¨ç¤ºä¾‹å¼€å¤´è®¾ç½®çš„å¸¸é‡æ¥è¿”回æ¯ä¸ªå­—段的值。
</p>
-
+
<pre>// Use the cursor to step through the returned records
while (cur.moveToNext()) {
long calID = 0;
String displayName = null;
String accountName = null;
String ownerName = null;
-
+
// Get the field values
calID = cur.getLong(PROJECTION_ID_INDEX);
displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
-
+
// Do something with the values...
...
}
</pre>
-
+
<h3 id="modify-calendar">修改日历</h3>
<p>如需执行日历更新,您å¯ä»¥é€šè¿‡
@@ -434,7 +434,7 @@ android.provider.CalendarContract.Events} å‚考资料。</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
-
+
<td><a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a>
æ ¼å¼çš„事件æŒç»­æ—¶é—´ã€‚例如,值为
<code>&quot;PT1H&quot;</code> 表示事件应æŒç»­ä¸€å°æ—¶ï¼Œå€¼ä¸º
@@ -444,39 +444,39 @@ android.provider.CalendarContract.Events} å‚考资料。</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
-
+
<td>值为 1
表示此事件å ç”¨ä¸€æ•´å¤©ï¼ˆæŒ‰ç…§æœ¬åœ°æ—¶åŒºçš„定义)。值为 0
表示它是常规事件,å¯åœ¨ä¸€å¤©å†…的任何时间开始和结æŸã€‚</td>
-
+
</tr>
-
-
+
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
-
+
<td>事件的é‡å¤å‘生规则格å¼ã€‚例如,<code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>。
您å¯ä»¥åœ¨<a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">此处</a>找到更多示例。
</td>
-
+
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
<td>事件的é‡å¤å‘生日期。
-{@link android.provider.CalendarContract.EventsColumns#RDATE}
-与 {@link android.provider.CalendarContract.EventsColumns#RRULE}
+{@link android.provider.CalendarContract.EventsColumns#RDATE}
+与 {@link android.provider.CalendarContract.EventsColumns#RRULE}
通常è”åˆç”¨äºŽå®šä¹‰ä¸€ç»„èšåˆé‡å¤å®žä¾‹ã€‚
如需查看更详细的介ç»ï¼Œè¯·å‚阅 <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">RFC5545 规范</a>。</td>
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
-
+
<td>将此事件视为忙碌时间还是å¯è°ƒåº¦çš„空闲时间。
</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
@@ -514,11 +514,11 @@ java.util.TimeZone#getAvailableIDs()}。请注æ„,如果您按<a href="#intent
{@link
android.content.Intent#ACTION_INSERT INSERT} Intent 对象æ’入事件,则此规则ä¸é€‚用&mdash;在该情形下,系统会æä¾›é»˜è®¤æ—¶åŒºã€‚
</li>
-
+
<li>对于éžé‡å¤äº‹ä»¶ï¼Œæ‚¨å¿…须加入 {@link
android.provider.CalendarContract.EventsColumns#DTEND}。 </li>
-
-
+
+
<li>对于é‡å¤äº‹ä»¶ï¼Œæ‚¨å¿…须加入 {@link
android.provider.CalendarContract.EventsColumns#DURATION} ä»¥åŠ {@link
android.provider.CalendarContract.EventsColumns#RRULE} 或 {@link
@@ -528,7 +528,7 @@ android.content.Intent#ACTION_INSERT INSERT} Intent 对象æ’入事件,则此è
android.provider.CalendarContract.EventsColumns#RRULE} 与 {@link android.provider.CalendarContract.EventsColumns#DTSTART} 和 {@link android.provider.CalendarContract.EventsColumns#DTEND}
è”用,日历应用会自动将其转æ¢ä¸ºæŒç»­æ—¶é—´ã€‚
</li>
-
+
</ul>
<p>以下是一个æ’入事件的示例。为了简便起è§ï¼Œæ­¤æ“作是在 UI
@@ -539,8 +539,8 @@ android.provider.CalendarContract.EventsColumns#RRULE} 与 {@link android.provid
<pre>
long calID = 3;
-long startMillis = 0;
-long endMillis = 0;
+long startMillis = 0;
+long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@ Uri uri = cr.insert(Events.CONTENT_URI, values);
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
-//
+//
// ... do something with event ID
//
//</pre>
@@ -598,7 +598,7 @@ ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
Uri updateUri = null;
// The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;);
+values.put(Events.TITLE, &quot;Kickboxing&quot;);
updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().update(updateUri, values, null, null);
Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows); </pre>
@@ -625,19 +625,19 @@ ContentValues values = new ContentValues();
Uri deleteUri = null;
deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().delete(deleteUri, null, null);
-Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
</pre>
<h2 id="attendees">å‚加者表</h2>
<p>{@link android.provider.CalendarContract.Attendees}
-表的æ¯ä¸€è¡Œéƒ½è¡¨ç¤ºäº‹ä»¶çš„一ä½å‚加者或æ¥å®¾ã€‚调用
-{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
+表的æ¯ä¸€è¡Œéƒ½è¡¨ç¤ºäº‹ä»¶çš„一ä½å‚加者或æ¥å®¾ã€‚调用
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
会返回一个å‚加者列表,其中包å«å…·æœ‰ç»™å®š {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
的事件的å‚加者。
-æ­¤ {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+æ­¤ {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
必须匹é…特定事件的 {@link
-android.provider.BaseColumns#_ID}。</p>
+android.provider.BaseColumns#_ID}。</p>
<p>下表列出了å¯å†™å…¥çš„字段。
æ’入新å‚加者时,您必须加入除 <code>ATTENDEE_NAME</code> 之外的所有字段。
@@ -718,7 +718,7 @@ Uri uri = cr.insert(Attendees.CONTENT_URI, values);
<h2 id="reminders">æé†’表</h2>
<p>{@link android.provider.CalendarContract.Reminders}
-表的æ¯ä¸€è¡Œéƒ½è¡¨ç¤ºäº‹ä»¶çš„一个æé†’。调用
+表的æ¯ä¸€è¡Œéƒ½è¡¨ç¤ºäº‹ä»¶çš„一个æé†’。调用
{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
会返回一个æé†’列表,其中包å«å…·æœ‰ç»™å®š {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 的事件的æé†’。
</p>
@@ -727,7 +727,7 @@ Uri uri = cr.insert(Attendees.CONTENT_URI, values);
<p>下表列出了æé†’çš„å¯å†™å…¥å­—段。æ’入新æé†’时,必须加入所有字段。
请注æ„ï¼ŒåŒæ­¥é€‚é…器指定它们在
{@link
-android.provider.CalendarContract.Calendars} 表中支æŒçš„æé†’类型。详情请å‚阅
+android.provider.CalendarContract.Calendars} 表中支æŒçš„æé†’类型。详情请å‚阅
{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
。</p>
@@ -780,9 +780,9 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
</p>
<p>下表列出了一些您å¯ä»¥æ‰§è¡Œå®žä¾‹æŸ¥è¯¢çš„字段。请注æ„,
-时区由
-{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
-和
+时区由
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
+和
{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES} 定义。</p>
@@ -801,18 +801,18 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
-
+
<td>ä¸Žæ—¥åŽ†æ—¶åŒºç›¸åº”çš„å®žä¾‹å„’ç•¥åŽ†ç»“æŸæ—¥ã€‚
-
-
+
+
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
-
+
<td>从日历时区åˆå¤œå¼€å§‹è®¡ç®—çš„å®žä¾‹ç»“æŸæ—¶é—´ï¼ˆåˆ†é’Ÿï¼‰ã€‚
</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
@@ -820,16 +820,16 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
- <td>与日历时区相应的实例儒略历开始日。
+ <td>与日历时区相应的实例儒略历开始日。
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-
+
<td>从日历时区åˆå¤œå¼€å§‹è®¡ç®—的实例开始时间(分钟)。
-
+
</td>
-
+
</tr>
</table>
@@ -853,7 +853,7 @@ public static final String[] INSTANCE_PROJECTION = new String[] {
Instances.BEGIN, // 1
Instances.TITLE // 2
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_BEGIN_INDEX = 1;
@@ -868,7 +868,7 @@ long startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2011, 10, 24, 8, 0);
long endMillis = endTime.getTimeInMillis();
-
+
Cursor cur = null;
ContentResolver cr = getContentResolver();
@@ -883,28 +883,28 @@ ContentUris.appendId(builder, startMillis);
ContentUris.appendId(builder, endMillis);
// Submit the query
-cur = cr.query(builder.build(),
- INSTANCE_PROJECTION,
- selection,
- selectionArgs,
+cur = cr.query(builder.build(),
+ INSTANCE_PROJECTION,
+ selection,
+ selectionArgs,
null);
-
+
while (cur.moveToNext()) {
String title = null;
long eventID = 0;
- long beginVal = 0;
-
+ long beginVal = 0;
+
// Get the field values
eventID = cur.getLong(PROJECTION_ID_INDEX);
beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
title = cur.getString(PROJECTION_TITLE_INDEX);
-
- // Do something with the values.
- Log.i(DEBUG_TAG, "Event: " + title);
+
+ // Do something with the values.
+ Log.i(DEBUG_TAG, "Event: " + title);
Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(beginVal);
+ calendar.setTimeInMillis(beginVal);
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
- Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
+ Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
}
}</pre>
@@ -922,9 +922,9 @@ while (cur.moveToNext()) {
<td><br>
{@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
<td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
- 您还å¯ä»¥é€šè¿‡
+ 您还å¯ä»¥é€šè¿‡
{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI} 引用 URI。
-如需查看使用该 Intent 对象的示例,请å‚阅<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">使用 Intent 对象查看日历数æ®</a>。
+如需查看使用该 Intent 对象的示例,请å‚阅<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">使用 Intent 对象查看日历数æ®</a>。
</td>
<td>打开日历åŽå®šä½åˆ° <code>&lt;ms_since_epoch&gt;</code> 指定的时间。</td>
@@ -935,11 +935,11 @@ while (cur.moveToNext()) {
</td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
- 您还å¯ä»¥é€šè¿‡
+
+ 您还å¯ä»¥é€šè¿‡
{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 引用 URI。
如需查看使用该 Intent 对象的示例,请å‚阅<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">使用 Intent 对象查看日历数æ®</a>。
-
+
</td>
<td>查看 <code>&lt;event_id&gt;</code> 指定的事件。</td>
@@ -952,12 +952,12 @@ while (cur.moveToNext()) {
<tr>
<td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
- 您还å¯ä»¥é€šè¿‡
+
+ 您还å¯ä»¥é€šè¿‡
{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 引用 URI。
如需查看使用该 Intent 对象的示例,请å‚阅<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">使用 Intent 对象编辑事件</a>。
-
-
+
+
</td>
<td>编辑 <code>&lt;event_id&gt;</code> 指定的事件。</td>
@@ -972,11 +972,11 @@ while (cur.moveToNext()) {
<br>
{@link android.content.Intent#ACTION_INSERT INSERT} </td>
<td><p><code>content://com.android.calendar/events</code></p>
-
- 您还å¯ä»¥é€šè¿‡
+
+ 您还å¯ä»¥é€šè¿‡
{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 引用 URI。
如需查看使用该 Intent 对象的示例,请å‚阅<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">使用 Intent 对象æ’入事件</a>。
-
+
</td>
<td>创建事件。</td>
@@ -996,7 +996,7 @@ while (cur.moveToNext()) {
<td>事件的å称。</td>
</tr>
<tr>
-
+
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<td>事件开始时间,以从公元纪年开始计算的毫秒数表示。</td>
@@ -1004,25 +1004,25 @@ CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME}</td>
-
+
<td>äº‹ä»¶ç»“æŸæ—¶é—´ï¼Œä»¥ä»Žå…¬å…ƒçºªå¹´å¼€å§‹è®¡ç®—的毫秒数表示。</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
-
+
<td>一个布尔值,表示事件属于全天事件。值å¯ä»¥æ˜¯
<code>true</code> 或 <code>false</code>。</td> </tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
Events.EVENT_LOCATION}</td>
-
+
<td>事件的地点。</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
Events.DESCRIPTION}</td>
-
+
<td>事件æè¿°ã€‚</td>
</tr>
<tr>
@@ -1039,16 +1039,16 @@ Events.DESCRIPTION}</td>
<td>
{@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
Events.ACCESS_LEVEL}</td>
-
+
<td>事件是ç§äººæ€§è´¨è¿˜æ˜¯å…¬å…±æ€§è´¨ã€‚</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
Events.AVAILABILITY}</td>
-
+
<td>将此事件视为忙碌时间还是å¯è°ƒåº¦çš„空闲时间。</td>
-
-</table>
+
+</table>
<p>下文æè¿°å¦‚何使用这些 Intent 对象。</p>
@@ -1059,23 +1059,23 @@ Events.AVAILABILITY}</td>
{@link
android.Manifest.permission#WRITE_CALENDAR} æƒé™ã€‚</p>
-
+
<p>当用户è¿è¡Œä½¿ç”¨æ­¤æ–¹æ³•的应用时,应用会将其转到日历æ¥å®Œæˆäº‹ä»¶æ·»åŠ æ“作。
{@link
android.content.Intent#ACTION_INSERT INSERT} Intent 利用 extra
字段为表å•预填充日历中事件的详细信æ¯ã€‚用户éšåŽå¯å–æ¶ˆäº‹ä»¶ã€æ ¹æ®éœ€è¦ç¼–è¾‘è¡¨å•æˆ–将事件ä¿å­˜åˆ°æ—¥åŽ†ä¸­ã€‚
</p>
-
+
<p>ä»¥ä¸‹æ˜¯ä¸€ä¸ªä»£ç æ®µï¼Œç”¨äºŽå®‰æŽ’一个在 2012 å¹´ 1 月 19 日上åˆ
7:30 开始ã€8:30 结æŸçš„事件。请注æ„è¯¥ä»£ç æ®µä¸­çš„以下内容:</p>
<ul>
- <li>它将 {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}
+ <li>它将 {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}
指定为 URI。</li>
-
+
<li>它使用 {@link
android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME} 和 {@link
@@ -1083,10 +1083,10 @@ android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME} extra
字段为表å•预填充事件的时间。这些时间的值必须以从公元纪年开始计算的å调世界时毫秒数表示。
</li>
-
+
<li>它使用 {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
extra 字段æä¾›ä»¥é€—å·åˆ†éš”çš„å—邀者电å­é‚®ä»¶åœ°å€åˆ—表。</li>
-
+
</ul>
<pre>
Calendar beginTime = Calendar.getInstance();
@@ -1158,18 +1158,18 @@ startActivity(intent);
<ul>
<li>åŒæ­¥é€‚é…器需è¦é€šè¿‡å°† {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} 设置为 <code>true</code> æ¥è¡¨æ˜Žå®ƒæ˜¯åŒæ­¥é€‚é…器。</li>
-
-
+
+
<li>åŒæ­¥é€‚é…å™¨éœ€è¦æä¾› {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} 和 {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} 作为 URI ä¸­çš„æŸ¥è¯¢å‚æ•°ã€‚ </li>
-
+
<li>与应用或å°å·¥å…·ç›¸æ¯”ï¼ŒåŒæ­¥é€‚é…器拥有写入æƒé™çš„列更多。
例如,应用åªèƒ½ä¿®æ”¹æ—¥åŽ†çš„å°‘æ•°å‡ ç§ç‰¹æ€§ï¼Œ
例如其åç§°ã€æ˜¾ç¤ºåç§°ã€èƒ½è§åº¦è®¾ç½®ä»¥åŠæ˜¯å¦åŒæ­¥æ—¥åŽ†ã€‚
ç›¸æ¯”ä¹‹ä¸‹ï¼ŒåŒæ­¥é€‚é…器ä¸ä»…å¯ä»¥è®¿é—®è¿™äº›åˆ—,还能访问许多其他列,
ä¾‹å¦‚æ—¥åŽ†é¢œè‰²ã€æ—¶åŒºã€è®¿é—®çº§åˆ«ã€åœ°ç‚¹ç­‰ç­‰ã€‚ä¸è¿‡ï¼ŒåŒæ­¥é€‚é…器å—é™äºŽå®ƒæŒ‡å®šçš„
-<code>ACCOUNT_NAME</code> 和
+<code>ACCOUNT_NAME</code> 和
<code>ACCOUNT_TYPE</code>。</li> </ul>
<p>您å¯ä»¥åˆ©ç”¨ä»¥ä¸‹ helper æ–¹æ³•è¿”å›žä¾›ä¸ŽåŒæ­¥é€‚é…器一起使用的 URI:</p>
@@ -1180,5 +1180,5 @@ android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} 作为 URI 中的查
.appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
}
</pre>
-<p>å¦‚éœ€æŸ¥çœ‹åŒæ­¥é€‚é…器的实现示例(并éžä»…é™ä¸Žæ—¥åŽ†æœ‰å…³çš„å®žçŽ°ï¼‰ï¼Œè¯·å‚阅
+<p>å¦‚éœ€æŸ¥çœ‹åŒæ­¥é€‚é…器的实现示例(并éžä»…é™ä¸Žæ—¥åŽ†æœ‰å…³çš„å®žçŽ°ï¼‰ï¼Œè¯·å‚阅
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>。
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-basics.jd
index 4c91d3a19c96..b1a1c5ab49c8 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-basics.jd
@@ -251,7 +251,7 @@ mCursor = getContentResolver().query(
</pre>
<p>
表 2 显示了
- {@link android.content.ContentResolver#query
+ {@link android.content.ContentResolver#query
query(Uri,projection,selection,selectionArgs,sortOrder)} çš„å‚æ•°å¦‚ä½•åŒ¹é… SQL SELECT 语å¥ï¼š
</p>
<p class="table-caption">
@@ -717,7 +717,7 @@ if (mCursor != null) {
&lt;uses-permission android:name="android.permission.READ_USER_DICTIONARY"&gt;
</pre>
<p>
-
+
<a href="{@docRoot}guide/topics/security/security.html">安全与æƒé™</a>指å—中详细介ç»äº†æƒé™å¯¹æä¾›ç¨‹åºè®¿é—®çš„å½±å“。
</p>
@@ -944,7 +944,7 @@ mRowsDeleted = getContentResolver().delete(
</p>
<p>
è¦åœ¨â€œæ‰¹é‡æ¨¡å¼â€ä¸‹è®¿é—®æä¾›ç¨‹åºï¼Œ
-您å¯ä»¥åˆ›å»º {@link android.content.ContentProviderOperation} 对象数组,然åŽä½¿ç”¨ {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}
+您å¯ä»¥åˆ›å»º {@link android.content.ContentProviderOperation} 对象数组,然åŽä½¿ç”¨ {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}
将其分派给内容æä¾›ç¨‹åºã€‚
您需将内容æä¾›ç¨‹åºçš„<em>授æƒ</em>ä¼ é€’ç»™æ­¤æ–¹æ³•ï¼Œè€Œä¸æ˜¯ç‰¹å®šå†…容 URI。这样å¯ä½¿æ•°ç»„中的æ¯ä¸ª {@link android.content.ContentProviderOperation} 对象都能适用于其他表。
@@ -1191,6 +1191,6 @@ vnd.android.cursor.<strong>item</strong>/vnd.example.line2
</p>
<p>
-
+
<a href="#ContentURIs">内容 URI</a> 部分介ç»äº†å•个行的内容 URI。
</p>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-creating.jd
index 6da57435f43d..329754e1c5d8 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-creating.jd
@@ -277,7 +277,7 @@ page.title=创建内容æä¾›ç¨‹åº
</p>
<p>
-
+
<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">内容æä¾›ç¨‹åºåŸºç¡€çŸ¥è¯†</a>主题中æè¿°äº†å†…容 URI 的基础知识。
</p>
@@ -569,7 +569,7 @@ public class ExampleProvider extends ContentProvider {
</ul>
<h3 id="Query">实现 query() 方法</h3>
<p>
-
+
{@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
ContentProvider.query()} 方法必须返回 {@link android.database.Cursor} å¯¹è±¡ã€‚å¦‚æžœå¤±è´¥ï¼Œåˆ™ä¼šå¼•å‘ {@link java.lang.Exception}。
如果您使用 SQLite æ•°æ®åº“作为数æ®å­˜å‚¨ï¼Œåˆ™åªéœ€è¿”回由 {@link android.database.sqlite.SQLiteDatabase} 类的其中一个
@@ -831,7 +831,7 @@ vnd.android.cursor.<strong>item</strong>/vnd.com.example.provider.table1
</pre>
<h3 id="FileMIMETypes">文件的 MIME 类型</h3>
<p>
- 如果您的æä¾›ç¨‹åºæä¾›æ–‡ä»¶ï¼Œè¯·å®žçް
+ 如果您的æä¾›ç¨‹åºæä¾›æ–‡ä»¶ï¼Œè¯·å®žçް
{@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}。
该方法会为您的æä¾›ç¨‹åºå¯ä»¥ä¸ºç»™å®šå†…容 URI 返回的文件返回一个 MIME 类型 {@link java.lang.String} 数组。您应该通过 MIME ç±»åž‹è¿‡æ»¤å™¨å‚æ•°è¿‡æ»¤æ‚¨æä¾›çš„ MIME 类型,以便åªè¿”回客户端想处ç†çš„那些 MIME 类型。
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/zh-cn/guide/topics/providers/document-provider.jd
index fd36e2963606..db5b1a4f09d0 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/providers/document-provider.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/providers/document-provider.jd
@@ -177,7 +177,7 @@ URI 授æƒï¼›</li>
中,æä¾›ç¨‹åºå’Œå®¢æˆ·ç«¯å¹¶ä¸ç›´æŽ¥äº¤äº’。客户端请求与文件交互(å³è¯»å–ã€ç¼–辑ã€åˆ›å»ºæˆ–删除文件)的æƒé™ï¼›
</li>
-<li>äº¤äº’åœ¨åº”ç”¨ï¼ˆåœ¨æœ¬ç¤ºä¾‹ä¸­ä¸ºç…§ç‰‡åº”ç”¨ï¼‰è§¦å‘ Intent
+<li>äº¤äº’åœ¨åº”ç”¨ï¼ˆåœ¨æœ¬ç¤ºä¾‹ä¸­ä¸ºç…§ç‰‡åº”ç”¨ï¼‰è§¦å‘ Intent
{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 或 {@link android.content.Intent#ACTION_CREATE_DOCUMENT} åŽå¼€å§‹ã€‚Intent å¯èƒ½åŒ…括进一步细化æ¡ä»¶çš„过滤器&mdash;例如,“为我æä¾›æ‰€æœ‰ MIME
类型为‘图åƒâ€™çš„坿‰“开文件â€ï¼›
</li>
@@ -460,7 +460,7 @@ DocumentsContract.deleteDocument(getContentResolver(), uri);
<p>您å¯ä»¥ä½¿ç”¨ SAF
å°±åœ°ç¼–è¾‘æ–‡æœ¬æ–‡æ¡£ã€‚ä»¥ä¸‹ä»£ç æ®µä¼šè§¦å‘
-{@link android.content.Intent#ACTION_OPEN_DOCUMENT} Intent
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} Intent
并使用类别 {@link android.content.Intent#CATEGORY_OPENABLE}
以仅显示å¯ä»¥æ‰“开的文档。它会进一步过滤以仅显示文本文件:</p>
@@ -589,7 +589,7 @@ SAF
</ul></li>
<li>一个包括
-{@code android.content.action.DOCUMENTS_PROVIDER} æ“作的 Intent
+{@code android.content.action.DOCUMENTS_PROVIDER} æ“作的 Intent
过滤器,以便在系统æœç´¢æä¾›ç¨‹åºæ—¶è®©æ‚¨çš„æä¾›ç¨‹åºå‡ºçŽ°åœ¨é€‰å–器中。</li>
</ul>
@@ -623,7 +623,7 @@ SAF
Android 4.4 åŠæ›´é«˜ç‰ˆæœ¬çš„è®¾å¤‡ã€‚å¦‚æžœæ‚¨æƒ³è®©åº”ç”¨æ”¯æŒ {@link android.content.Intent#ACTION_GET_CONTENT}
以适应è¿è¡Œ Android 4.3
åŠæ›´ä½Žç‰ˆæœ¬çš„è®¾å¤‡ï¼Œåˆ™åº”åœ¨æ‚¨çš„æ¸…å•æ–‡ä»¶ä¸­ä¸ºè¿è¡Œ Android 4.4
-或更高版本的设备ç¦ç”¨ {@link android.content.Intent#ACTION_GET_CONTENT} Intent
+或更高版本的设备ç¦ç”¨ {@link android.content.Intent#ACTION_GET_CONTENT} Intent
过滤器。应将文档æä¾›ç¨‹åºå’Œ
{@link android.content.Intent#ACTION_GET_CONTENT}
è§†ä¸ºå…·æœ‰äº’æ–¥æ€§ã€‚å¦‚æžœæ‚¨åŒæ—¶æ”¯æŒè¿™ä¸¤è€…,您的应用将在系统选å–器
@@ -631,7 +631,7 @@ UI
中出现两次,æä¾›ä¸¤ç§ä¸åŒçš„æ–¹å¼æ¥è®¿é—®æ‚¨å­˜å‚¨çš„æ•°æ®ã€‚这会给用户造æˆå›°æƒ‘。</p>
<p>建议按照以下步骤为è¿è¡Œ Android 4.4 版或更高版本的设备ç¦ç”¨
-{@link android.content.Intent#ACTION_GET_CONTENT} Intent
+{@link android.content.Intent#ACTION_GET_CONTENT} Intent
过滤器:</p>
<ol>
@@ -643,7 +643,7 @@ UI
<li>添加一个<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">Activity别å</a>,为
4.4 版(API 19
-级)或更高版本ç¦ç”¨ {@link android.content.Intent#ACTION_GET_CONTENT} Intent
+级)或更高版本ç¦ç”¨ {@link android.content.Intent#ACTION_GET_CONTENT} Intent
过滤器。例如:
<pre>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/zh-cn/guide/topics/resources/providing-resources.jd
index ea46d86152a4..1516814ccf47 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/resources/providing-resources.jd
@@ -398,7 +398,7 @@ UI。因此,使用的值应该是布局所需è¦<em></em>的实际最å°å°ºå¯¸
<li>600,适用于 600x1024 mdpi 之类的å±å¹•(7 英寸平æ¿ç”µè„‘)。</li>
<li>720,适用于 720x1280 mdpi 之类的å±å¹•(10 英寸平æ¿ç”µè„‘)。</li>
</ul>
- <p>应用为多个资æºç›®å½•æä¾›ä¸åŒçš„
+ <p>应用为多个资æºç›®å½•æä¾›ä¸åŒçš„
smallestWidth é™å®šç¬¦å€¼æ—¶ï¼Œç³»ç»Ÿä¼šä½¿ç”¨æœ€æŽ¥è¿‘(但未超出)设备
smallestWidth 的值。 </p>
<p><em>此项为 API 级别 13 中新增é…置。</em></p>
@@ -428,7 +428,7 @@ smallestWidth 值。</p>
<p>应用为多个资æºç›®å½•æä¾›ä¸åŒçš„æ­¤é…置值时,系统会使用最接近(但未超出)设备当å‰å±å¹•宽度的值。
此处的值考虑到了å±å¹•装饰元素,因此如果设备显示å±çš„左边缘或å³è¾¹ç¼˜ä¸Šæœ‰ä¸€äº›æ°¸ä¹…性 UI
-元素,考虑到这些 UI
+元素,考虑到这些 UI
元素,它会使用å°äºŽå®žé™…å±å¹•尺寸的宽度值,这样会å‡å°‘应用的å¯ç”¨ç©ºé—´ã€‚
</p>
@@ -456,7 +456,7 @@ smallestWidth 值。</p>
<p>应用为多个资æºç›®å½•æä¾›ä¸åŒçš„æ­¤é…置值时,系统会使用最接近(但未超出)设备当å‰å±å¹•高度的值。
此处的值考虑到了å±å¹•装饰元素,因此如果设备显示å±çš„上边缘或下边缘有一些永久性 UI
-元素,考虑到这些 UI
+元素,考虑到这些 UI
å…ƒç´ ï¼ŒåŒæ—¶ä¸ºå‡å°‘应用的å¯ç”¨ç©ºé—´ï¼Œå®ƒä¼šä½¿ç”¨å°äºŽå®žé™…å±å¹•尺寸的高度值。
éžå›ºå®šçš„å±å¹•è£…é¥°å…ƒç´ ï¼ˆä¾‹å¦‚ï¼Œå…¨å±æ—¶å¯éšè—çš„æ‰‹æœºçŠ¶æ€æ ï¼‰å¹¶ä¸<em></em>åœ¨è€ƒè™‘èŒƒå›´å†…ï¼Œæ ‡é¢˜æ æˆ–æ“作æ ç­‰çª—å£è£…饰也ä¸åœ¨è€ƒè™‘范围内,因此应用必须准备好处ç†ç¨å°äºŽå…¶æ‰€æŒ‡å®šå€¼çš„空间。
@@ -510,7 +510,7 @@ xlarge} é™å®šç¬¦æ ‡è®°ï¼Œä½†è®¾å¤‡æ˜¯æ ‡å‡†å°ºå¯¸çš„å±å¹•)。
</p>
<p><em>此项为 API 级别 4 中新增é…置。</em></p>
-
+
<p>如需了解详细信æ¯ï¼Œè¯·å‚阅<a href="{@docRoot}guide/practices/screens_support.html">支æŒå¤šä¸ªå±å¹•</a>。
</p>
<p>å¦è¯·å‚阅 {@link android.content.res.Configuration#screenLayout} é…置字段,该字段表示å±å¹•是å°å°ºå¯¸ã€æ ‡å‡†å°ºå¯¸è¿˜æ˜¯å¤§å°ºå¯¸ã€‚
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/controls.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/controls.jd
index 0f1a543d1f66..3d78bdc57259 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@ parent.link=index.html
<tr>
<td><a href="controls/radiobutton.html">å•选按钮</a></td>
<td>与å¤é€‰æ¡†ç±»ä¼¼ï¼Œä¸åŒçš„æ˜¯åªèƒ½é€‰æ‹©ç»„中的一个选项。</td>
- <td>{@link android.widget.RadioGroup RadioGroup}
+ <td>{@link android.widget.RadioGroup RadioGroup}
<br>{@link android.widget.RadioButton RadioButton} </td>
</tr>
<tr>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/dialogs.jd
index 84922b40e445..595407d87d25 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@ page.tags=æé†’å¯¹è¯æ¡†,å¯¹è¯æ¡†ç‰‡æ®µ
<li>{@link android.app.DialogFragment}</li>
<li>{@link android.app.AlertDialog}</li>
</ol>
-
+
<h2>å¦è¯·å‚阅</h2>
<ol>
<li><a href="{@docRoot}design/building-blocks/dialogs.html">å¯¹è¯æ¡†è®¾è®¡æŒ‡å—</a></li>
@@ -248,7 +248,7 @@ AlertDialog dialog = builder.create();
<dt>中性</dt>
<dd>您应该在用户å¯èƒ½ä¸æƒ³ç»§ç»­æ‰§è¡Œæ“作,但也ä¸ä¸€å®šæƒ³è¦å–消æ“作时使用此按钮。
它出现在肯定按钮和å¦å®šæŒ‰é’®ä¹‹é—´ã€‚
-例如,实际æ“作å¯èƒ½æ˜¯â€œç¨åŽæé†’æˆ‘â€ã€‚</dd>
+例如,实际æ“作å¯èƒ½æ˜¯â€œç¨åŽæé†’æˆ‘â€ã€‚</dd>
</dl>
<p>对于æ¯ç§æŒ‰é’®ç±»åž‹ï¼Œæ‚¨åªèƒ½ä¸º {@link
@@ -317,10 +317,10 @@ android.app.AlertDialog.Builder#setAdapter setAdapter()} 指定一个列表。è¿
<h4 id="Checkboxes">添加永久性多选列表或å•选列表</h4>
-<p>è¦æƒ³æ·»åŠ å¤šé€‰é¡¹ï¼ˆå¤é€‰æ¡†ï¼‰æˆ–å•选项(å•选按钮)列表,请分别使用
+<p>è¦æƒ³æ·»åŠ å¤šé€‰é¡¹ï¼ˆå¤é€‰æ¡†ï¼‰æˆ–å•选项(å•选按钮)列表,请分别使用
{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} 或
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} 或
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()}
方法。</p>
@@ -346,7 +346,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
- // Else, if the item is already in the array, remove it
+ // Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
@@ -373,7 +373,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<p>尽管传统列表和具有å•选按钮的列表都能æä¾›â€œå•é€‰â€æ“作,但如果您想æŒä¹…ä¿å­˜ç”¨æˆ·çš„选择,则应使用
{@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()}。也就是说,如果ç¨åŽå†æ¬¡æ‰“å¼€å¯¹è¯æ¡†æ—¶ç³»ç»Ÿåº”指示用户的当å‰é€‰æ‹©ï¼Œé‚£ä¹ˆæ‚¨å°±éœ€è¦åˆ›å»ºä¸€ä¸ªå…·æœ‰å•选按钮的列表。
</p>
@@ -442,7 +442,7 @@ android.app.AlertDialog.Builder#setView setView()} 将其添加到 {@link androi
{@code "sans-serif"},以便两个文本字段都使用匹é…的字体样å¼ã€‚</p>
<p>è¦æ‰©å±• {@link android.support.v4.app.DialogFragment}
-中的布局,请通过 {@link android.app.Activity#getLayoutInflater()}
+中的布局,请通过 {@link android.app.Activity#getLayoutInflater()}
获å–一个 {@link android.view.LayoutInflater} 并调用
{@link android.view.LayoutInflater#inflate inflate()}ï¼Œå…¶ä¸­ç¬¬ä¸€ä¸ªå‚æ•°æ˜¯å¸ƒå±€èµ„æº
IDï¼Œç¬¬äºŒä¸ªå‚æ•°æ˜¯å¸ƒå±€çš„父视图。然åŽï¼Œæ‚¨å¯ä»¥è°ƒç”¨
@@ -470,7 +470,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
- });
+ });
return builder.create();
}
</pre>
@@ -505,7 +505,7 @@ API。
<pre>
public class NoticeDialogFragment extends DialogFragment {
-
+
/* The activity that creates an instance of this dialog fragment must
* implement this interface in order to receive event callbacks.
* Each method passes the DialogFragment in case the host needs to query it. */
@@ -513,10 +513,10 @@ public class NoticeDialogFragment extends DialogFragment {
public void onDialogPositiveClick(DialogFragment dialog);
public void onDialogNegativeClick(DialogFragment dialog);
}
-
+
// Use this instance of the interface to deliver action events
NoticeDialogListener mListener;
-
+
// Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
&#64;Override
public void onAttach(Activity activity) {
@@ -543,7 +543,7 @@ public class NoticeDialogFragment extends DialogFragment {
public class MainActivity extends FragmentActivity
implements NoticeDialogFragment.NoticeDialogListener{
...
-
+
public void showNoticeDialog() {
// Create an instance of the dialog fragment and show it
DialogFragment dialog = new NoticeDialogFragment();
@@ -656,7 +656,7 @@ public class CustomDialogFragment extends DialogFragment {
// Inflate the layout to use as dialog or embedded fragment
return inflater.inflate(R.layout.purchase_items, container, false);
}
-
+
/** The system calls this only when creating the layout in a dialog. */
&#64;Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
@@ -678,7 +678,7 @@ UI:</p>
public void showDialog() {
FragmentManager fragmentManager = getSupportFragmentManager();
CustomDialogFragment newFragment = new CustomDialogFragment();
-
+
if (mIsLargeLayout) {
// The device is using a large layout, so show the fragment as a dialog
newFragment.show(fragmentManager, "dialog");
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/menus.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/menus.jd
index b77f3bf497da..bafbc65e7167 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/menus.jd
@@ -83,9 +83,9 @@ Android 3.0 åŠæ›´é«˜ç‰ˆæœ¬çš„系统中,<a href="{@docRoot}guide/topics/ui/act
</p>
<p>请å‚阅<a href="#options-menu">创建选项èœå•</a>部分。</p>
</dd>
-
+
<dt><strong>上下文èœå•和上下文æ“作模å¼</strong></dt>
-
+
<dd>上下文èœå•是用户长按æŸä¸€å…ƒç´ æ—¶å‡ºçŽ°çš„<a href="#FloatingContextMenu">浮动èœå•</a>。
它æä¾›çš„æ“ä½œå°†å½±å“æ‰€é€‰å†…容或上下文框架。
@@ -94,7 +94,7 @@ Android 3.0 åŠæ›´é«˜ç‰ˆæœ¬çš„系统中,<a href="{@docRoot}guide/topics/ui/act
</p>
<p>请å‚阅<a href="#context-menu">创建上下文èœå•</a>部分。</p>
</dd>
-
+
<dt><strong>弹出èœå•</strong></dt>
<dd>弹出èœå•å°†ä»¥åž‚ç›´åˆ—è¡¨å½¢å¼æ˜¾ç¤ºä¸€ç³»åˆ—项目,这些项目将锚定到调用该èœå•的视图中。
它特别适用于æä¾›ä¸Žç‰¹å®šå†…å®¹ç›¸å…³çš„å¤§é‡æ“作,或者为命令的å¦ä¸€éƒ¨åˆ†æä¾›é€‰é¡¹ã€‚
@@ -135,7 +135,7 @@ XML <a href="{@docRoot}guide/topics/resources/menu-resource.html">èœå•资æº</
<dt><code>&lt;item></code></dt>
<dd>创建 {@link android.view.MenuItem},此元素表示èœå•中的一项,å¯èƒ½åŒ…å«åµŒå¥—çš„ <code>&lt;menu></code>
元素,以便创建å­èœå•。</dd>
-
+
<dt><code>&lt;group></code></dt>
<dd>{@code &lt;item&gt;} 元素的ä¸å¯è§å®¹å™¨ï¼ˆå¯é€‰ï¼‰ã€‚å®ƒæ”¯æŒæ‚¨å¯¹èœå•项进行分类,使其共享活动状æ€å’Œå¯è§æ€§ç­‰å±žæ€§ã€‚
如需了解详细信æ¯ï¼Œè¯·å‚阅<a href="#groups">创建èœå•组</a>部分。
@@ -742,8 +742,8 @@ android.view.Menu} 对象中。在 API 级别 14 åŠæ›´é«˜ç‰ˆæœ¬ä¸­ï¼Œæ‚¨å¯ä»¥æ
<pre>
&lt;ImageButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:src="@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup" />
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/notifiers/notifications.jd
index c0bd74cdd3ac..890831841457 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/notifiers/notifications.jd
@@ -321,7 +321,7 @@ Android 4.1 åŠæ›´é«˜ç‰ˆæœ¬çš„系统中å¯ç”¨ã€‚
</p>
<p class="note">
- <strong>注:</strong>此
+ <strong>注:</strong>此
Gmail 功能需è¦â€œæ”¶ä»¶ç®±â€æ‰©å±•布局,该布局是自 Android 4.1 版本起å¯ç”¨çš„æ‰©å±•通知功能的一部分。
</p>
<p>
@@ -409,7 +409,7 @@ numMessages = 0;
您è¦å¯åŠ¨çš„
{@link android.app.Activity} 是应用的正常工作æµçš„ä¸€éƒ¨åˆ†ã€‚åœ¨è¿™ç§æƒ…况下,请设置 {@link android.app.PendingIntent}
以å¯åŠ¨å…¨æ–°ä»»åŠ¡å¹¶ä¸º
-{@link android.app.PendingIntent}æä¾›è¿”回栈,这将é‡çŽ°åº”ç”¨çš„æ­£å¸¸â€œè¿”å›žâ€è¡Œä¸ºã€‚ <i> </i>
+{@link android.app.PendingIntent}æä¾›è¿”回栈,这将é‡çŽ°åº”ç”¨çš„æ­£å¸¸â€œè¿”å›žâ€è¡Œä¸ºã€‚ <i> </i>
<p>
Gmail 应用中的通知演示了这一点。点击一å°ç”µå­é‚®ä»¶æ¶ˆæ¯çš„通知时,您将看到消æ¯å…·ä½“内容。
触摸<b>返回</b>将使您从
@@ -533,7 +533,7 @@ Gmail ä¸­æ’°å†™æ¶ˆæ¯æ—¶ç‚¹å‡»äº†ä¸€å°ç”µå­é‚®ä»¶çš„通知,则会立å³è½¬åˆ
TaskStackBuilder.editIntentAt()} å‘堆栈中的 {@link android.content.Intent}
å¯¹è±¡æ·»åŠ å‚æ•°ã€‚有时,需è¦ç¡®ä¿ç›®æ ‡ {@link android.app.Activity} 在用户使用“返回â€å¯¼èˆªå›žå®ƒæ—¶ä¼šæ˜¾ç¤ºæœ‰æ„义的数æ®ã€‚
- <i> </i>
+ <i> </i>
</li>
<li>
通过调用
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/overview.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/overview.jd
index 5097c76e4027..78f4734fde59 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@ UI
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
+ android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
&lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@ UI
<p>有关创建 UI 布局的完整指å—,请å‚阅 <a href="declaring-layout.html">XML
布局</a>。
-
+
<h2 id="UIComponents">用户界é¢ç»„ä»¶</h2>
<p>您无需使用 {@link android.view.View} 和 {@link
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/settings.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/settings.jd
index f9be97be8c2e..71b185da2ba2 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/settings.jd
@@ -226,7 +226,7 @@ android.preference.ListPreference}。这两项å‡åŒ…括以下三个属性:</p>
<dt>{@code android:key}</dt>
<dd>对于è¦ä¿ç•™æ•°æ®å€¼çš„首选项,必须拥有此属性。它指定系统在将此设置的值ä¿å­˜åœ¨
{@link
-android.content.SharedPreferences} 中时所用的唯一键(字符串)。
+android.content.SharedPreferences} 中时所用的唯一键(字符串)。
<p>ä¸éœ€è¦æ­¤å±žæ€§çš„仅有情形是:首选项是
{@link android.preference.PreferenceCategory} 或{@link android.preference.PreferenceScreen},或者首选项指定è¦è°ƒç”¨çš„
{@link android.content.Intent}(使用 <a href="#Intents">{@code &lt;intent&gt;}</a> å…ƒç´ ï¼‰æˆ–è¦æ˜¾ç¤ºçš„ {@link android.app.Fragment}(使用 <a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
@@ -285,7 +285,7 @@ android.preference.PreferenceCategory} 内。</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;PreferenceCategory
+ &lt;PreferenceCategory
android:title="&#64;string/pref_sms_storage_title"
android:key="pref_key_storage_settings">
&lt;CheckBoxPreference
@@ -293,12 +293,12 @@ android.preference.PreferenceCategory} 内。</p>
android:summary="&#64;string/pref_summary_auto_delete"
android:title="&#64;string/pref_title_auto_delete"
android:defaultValue="false"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_sms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
android:title="&#64;string/pref_title_sms_delete"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_mms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
@@ -588,11 +588,11 @@ XML 标头文件定义。 <br/><b>2.</b>æ¯ç»„设置å‡ç”±
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
@@ -672,15 +672,15 @@ android.preference.Preference &lt;Preference&gt;} 元素å‡ä¼šå‘ {@link android
</p>
<p>例如,下é¢å°±æ˜¯ä¸€ä¸ªç”¨äºŽ Android 3.0
-åŠæ›´é«˜ç‰ˆæœ¬ç³»ç»Ÿçš„首选项标头 XML 文件 ({@code res/xml/preference_headers.xml}):</p>
+åŠæ›´é«˜ç‰ˆæœ¬ç³»ç»Ÿçš„首选项标头 XML 文件 ({@code res/xml/preference_headers.xml}):</p>
<pre>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" />
@@ -692,18 +692,18 @@ Android 3.0 版本的系统æä¾›ç›¸åŒæ ‡å¤´çš„首选项文件 ({@code res/xml/
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_ONE" />
&lt;/Preference>
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_TWO" />
@@ -920,7 +920,7 @@ android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} 添加 Intent 过滤器。ä¾
&lt;/activity>
</pre>
-<p>æ­¤ Intent
+<p>æ­¤ Intent
过滤器指示系统此 Activity 控制应用的数æ®ä½¿ç”¨æƒ…况。因此,当用户从系统的“设置â€åº”用检查应用所使用的数æ®é‡æ—¶ï¼Œå¯ä»¥ä½¿ç”¨â€œæŸ¥çœ‹åº”ç”¨è®¾ç½®â€æŒ‰é’®å¯åЍ
{@link android.preference.PreferenceActivity},这样,用户就能够优化应用使用的数æ®é‡ã€‚
@@ -975,11 +975,11 @@ android.preference.DialogPreference}
public class NumberPickerPreference extends DialogPreference {
public NumberPickerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
-
+
setDialogLayoutResource(R.layout.numberpicker_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
-
+
setDialogIcon(null);
}
...
@@ -1194,7 +1194,7 @@ protected void onRestoreInstanceState(Parcelable state) {
// Cast state to custom BaseSavedState and pass to superclass
SavedState myState = (SavedState) state;
super.onRestoreInstanceState(myState.getSuperState());
-
+
// Set this Preference's widget to reflect the restored state
mNumberPicker.setValue(myState.value);
}
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/ui-events.jd
index f9e976302d34..faa294d0e6b4 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/ui-events.jd
@@ -181,14 +181,14 @@ dispatchKeyEvent()}</code> 方法的分派过程。除了通过视图æ•获按é”
</p>
<ul>
<li><code>{@link android.app.Activity#dispatchTouchEvent(MotionEvent)
- Activity.dispatchTouchEvent(MotionEvent)}</code>:此方法å…许 {@link
+ Activity.dispatchTouchEvent(MotionEvent)}</code>:此方法å…许 {@link
android.app.Activity} 在分派给窗å£ä¹‹å‰æˆªèŽ·æ‰€æœ‰è§¦æ‘¸äº‹ä»¶ã€‚</li>
<li><code>{@link android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
ViewGroup.onInterceptTouchEvent(MotionEvent)}</code>:此方法å…许 {@link
android.view.ViewGroup} 监视分派给å­è§†å›¾çš„事件。</li>
<li><code>{@link android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code>:
-对父视图调用此方法表明ä¸åº”使用 <code>{@link
+对父视图调用此方法表明ä¸åº”使用 <code>{@link
android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code> 截获触摸事件。</li>
</ul>
@@ -199,7 +199,7 @@ dispatchKeyEvent()}</code> 方法的分派过程。除了通过视图æ•获按é”
但是,如果设备具有触摸功能且用户开始通过触摸界é¢ä¸Žä¹‹äº¤äº’,则ä¸å†éœ€è¦çªå‡ºæ˜¾ç¤ºé¡¹ç›®æˆ–èšç„¦åˆ°ç‰¹å®šè§†å›¾å¯¹è±¡ä¸Šã€‚
因此,有一ç§äº¤äº’模å¼ç§°ä¸ºâ€œè§¦æ‘¸æ¨¡å¼â€ã€‚
-
+
</p>
<p>
对于支æŒè§¦æ‘¸åŠŸèƒ½çš„è®¾å¤‡ï¼Œå½“ç”¨æˆ·è§¦æ‘¸å±å¹•时,设备会立å³è¿›å…¥è§¦æ‘¸æ¨¡å¼ã€‚
@@ -282,7 +282,7 @@ ID。<em></em>例如:</p>
the framework will take care of measuring, laying out, and drawing the tree
as appropriate.</li>
</ol>
-
+
<p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
the UI thread when calling any method on any View.
If you are doing work on other threads and want to update the state of a View
diff --git a/docs/html-intl/intl/zh-cn/preview/api-overview.jd b/docs/html-intl/intl/zh-cn/preview/api-overview.jd
index 495692ac2d85..f4f889d18021 100644
--- a/docs/html-intl/intl/zh-cn/preview/api-overview.jd
+++ b/docs/html-intl/intl/zh-cn/preview/api-overview.jd
@@ -762,7 +762,7 @@ Android 扩展包</a></a> (AEP) 的所有扩展(<code>EXT_texture_sRGB_decode<
<p>
虽然我们建议您对您的应用采用 APK Signature Scheme v2,但这项新方案并éžå¼ºåˆ¶æ€§çš„。
如果您的应用在使用 APK Signature Scheme v2 æ—¶ä¸èƒ½æ­£ç¡®æž„建,您å¯ä»¥åœç”¨è¿™é¡¹æ–°æ–¹æ¡ˆã€‚
-ç¦ç”¨è¿‡ç¨‹ä¼šå¯¼è‡´ Android Studio 2.2 å’Œ Android Gradle 2.2 æ’ä»¶ä»…ä½¿ç”¨ä¼ ç»Ÿç­¾åæ–¹æ¡ˆæ¥ç­¾ç½²æ‚¨çš„应用。
+ç¦ç”¨è¿‡ç¨‹ä¼šå¯¼è‡´ Android Studio 2.2 å’Œ Android Gradle 2.2 æ’ä»¶ä»…ä½¿ç”¨ä¼ ç»Ÿç­¾åæ–¹æ¡ˆæ¥ç­¾ç½²æ‚¨çš„应用。
è‹¥è¦ä»…用传统方案签署,打开多层 <code>build.gradle</code> 文件,然åŽå°†è¡Œ <code>v2SigningEnabled false</code> 添加到您的版本签åé…置中:
@@ -970,7 +970,7 @@ API æä¾›äº†ä¸€ä¸ªåŒ…å«è®¡æ—¶æ•°æ®çš„ {@code FrameMetrics} 对象,其渲染
<em></em>虚拟文件功能å¯ä»¥è®©æ‚¨çš„ {@link android.provider.DocumentsProvider} 返回å¯ä¸Ž {@link android.content.Intent#ACTION_VIEW}Intent 使用的文件 URI,å³ä½¿å®ƒä»¬æ²¡æœ‰ç›´æŽ¥å­—节ç è¡¨ç¤ºã€‚
-Android N 还å…许您为用户文件(虚拟或其他类)æä¾›å¤‡ç”¨æ ¼å¼ã€‚
+Android N 还å…许您为用户文件(虚拟或其他类)æä¾›å¤‡ç”¨æ ¼å¼ã€‚
</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/download-ota.jd b/docs/html-intl/intl/zh-cn/preview/download-ota.jd
index ab1408f38753..5d17abcc1efa 100644
--- a/docs/html-intl/intl/zh-cn/preview/download-ota.jd
+++ b/docs/html-intl/intl/zh-cn/preview/download-ota.jd
@@ -202,65 +202,73 @@ page.title=应用设备 OTA 映åƒ
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
- MD5:15fe2eba9b01737374196bdf0a792fe9<br>
- SHA-1:5014b2bba77f9e1a680ac3f90729621c85a14283
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-ota-npd90g-0a874807.zip</a><br>
+ MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+ SHA-1: a9920bcc8d475ce322cada097d085448512635e2
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
- MD5: e8b12f7721c53af9a450f7058928a5fc<br>
- SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-ota-npd90g-06f5d23d.zip</a><br>
+ MD5: 513570bb3a91878c2d1a5807d2340420<br>
+ SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
- MD5:3fac09fef759dde26e57cb80b20b6477<br>
- SHA-1:27d6caa786577d8a38b2da5bf94b33b4524a1a1c
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-ota-npd90g-5baa69c2.zip</a><br>
+ MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+ SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
- MD5:58312c4a5971818ef5c77a3f446003da<br>
- SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-ota-npd90g-c04785e1.zip</a><br>
+ MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+ SHA-1: 31633180635b831e59271a7d904439f278586f49
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
- MD5:92b7d1fa252f7394e70f957c72d4aac8<br>
- SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+ MD5: 0493fa79763d67bcdde8007299e1888d<br>
+ SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
- MD5:1461622ad53ea842b2722fa7b49b8172<br>
- SHA-1:409c061668ab270774877d7f3eae44fa48d2b931
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-ota-npd90g-3a0643ae.zip</a><br>
+ MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+ SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
- MD5: c60117f3640cc6db12386fd632289c7d<br>
- SHA-1:87349c767c69efb4172c90ce1d88cf578c3d28b3
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-ota-npd90g-ec931914.zip</a><br>
+ MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+ SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
- MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
- SHA-1:6f33742290eb46f2561891f38ca2e754b4e50c6a
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+ MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+ SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
</td>
</tr>
diff --git a/docs/html-intl/intl/zh-cn/preview/download.jd b/docs/html-intl/intl/zh-cn/preview/download.jd
index 0aa115fbf35f..2d3b88373282 100644
--- a/docs/html-intl/intl/zh-cn/preview/download.jd
+++ b/docs/html-intl/intl/zh-cn/preview/download.jd
@@ -300,72 +300,73 @@ page.image=images/cards/card-n-downloads_2x.png
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
- MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
- SHA-1:5ba4053577007d15c96472206e3a79bc80ab194c
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+ MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+ SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
- MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
- SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+ MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+ SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
- MD5: e93de7949433339856124c3729c15ebb<br>
- SHA-1:81c341d57ef2cd139569b055d5d59e9e592a7abd
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+ MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+ SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
- MD5:565be87ebb2d5937e2abe1a42645864b<br>
- SHA-1:2b50e19dae2667b27f911e3c61ed64860caf43e1
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-npd90g-factory-41b55406.tgz</a><br>
+ MD5: cefa78950141da2a7c75e887717e3c8f<br>
+ SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
- MD5: a8464e15c6683fe2afa378a63e205fda<br>
- SHA-1:2e89ebe67a46b2f3beb050746c13341cd11fa678
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-npd90g-factory-610492be.tgz</a><br>
+ MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+ SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
- MD5: c0dbb7db671f61b2785da5001cedefcb<br>
- SHA-1:1de74874f8d83e14d642f13b5a2130fc2aa55873
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-npd90g-factory-0fe95694.tgz</a><br>
+ MD5: f4cb48f919e4c29c631de21416c612e2<br>
+ SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
- MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
- SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-npd90g-factory-f4da981c.tgz</a><br>
+ MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+ SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
- MD5:7d34a9774fdd6e025d485ce6cfc23c4c<br>
- SHA-1:5ab1212bc9417269d391aacf1e672fff24b4ecc5
- </td>
- </tr>
-
- <tr id="xperia">
- <td>Sony Xperia Z3 <br> (D6603 和 D6653)</td>
- <td>下载:<a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
- 如需了解详细信æ¯ï¼Œè¯·å‚阅<a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">为 Xperia Z3 å°è¯• Android N Developer Preview</a>。
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+ MD5: 0ed565c509594072822d71c65b48ec8e<br>
+ SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
</td>
</tr>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/afw.jd b/docs/html-intl/intl/zh-cn/preview/features/afw.jd
index 04e680224fbe..0d4c56268e79 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/afw.jd
+++ b/docs/html-intl/intl/zh-cn/preview/features/afw.jd
@@ -127,7 +127,7 @@ page.keywords="android for work", "android N", "enterprise", "QR code"
android.app.admin.DevicePolicyManager#setPasswordMinimumLength
setPasswordMinimumLength()}。
-个人资料所有者还能通过使用由新的 <code>DevicePolicyManager.getParentProfileInstance()</code> 方法返回的 {@link android.app.admin.DevicePolicyManager} 实例æ¥è®¾ç½®è®¾å¤‡é”定,
+个人资料所有者还能通过使用由新的 <code>DevicePolicyManager.getParentProfileInstance()</code> 方法返回的 {@link android.app.admin.DevicePolicyManager} 实例æ¥è®¾ç½®è®¾å¤‡é”定,
此外,个人资料所有者å¯ä»¥ä½¿ç”¨ {@link android.app.admin.DevicePolicyManager} 类的新 <code>setOrganizationColor()</code> å’Œ <code>setOrganizationName()</code> 方法æ¥è‡ªå®šä¹‰å·¥ä½œæŒ‘战的凭æ®å±å¹•。
@@ -286,7 +286,7 @@ page.keywords="android for work", "android N", "enterprise", "QR code"
<ul>
<li>
- 新类 <code>android.app.admin.SecurityLog</code> 和它的方法
+ 新类 <code>android.app.admin.SecurityLog</code> 和它的方法
</li>
@@ -539,7 +539,7 @@ Location Settings 中的一个å•独的ä½ç½®è®¿é—®å¼€å…³å…许用户拒ç»å¯¹å·
<h2 id="lock-user-icon">é”定用户图标</h2>
<p>
- 新的用户é™åˆ¶ (<code>DISALLOW_SET_USER_ICON</code>) 阻止用户更改其用户图标。
+ 新的用户é™åˆ¶ (<code>DISALLOW_SET_USER_ICON</code>) 阻止用户更改其用户图标。
用户的设备所有者或个人资料所有者ä»å¯ä»¥æ›´æ”¹å›¾æ ‡ã€‚
但是个人资料所有者åªèƒ½æ›´æ”¹å…¶æŽ§åˆ¶çš„个人资料的用户图标。
diff --git a/docs/html-intl/intl/zh-cn/preview/features/background-optimization.jd b/docs/html-intl/intl/zh-cn/preview/features/background-optimization.jd
index 5392329e2a77..4ce58aa0e933 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/zh-cn/preview/features/background-optimization.jd
@@ -61,7 +61,7 @@ page.image=images/cards/card-nyc_2x.jpg
<ul>
<li>é¢å‘ Preview 的应用ä¸ä¼šæ”¶åˆ° {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION} 广播,å³ä½¿å®ƒä»¬åœ¨æ¸…å•中注册接收这些广播。
-è¿è¡Œçš„应用如果使用 {@link android.content.Context#registerReceiver Context.registerReceiver()} 注册
+è¿è¡Œçš„应用如果使用 {@link android.content.Context#registerReceiver Context.registerReceiver()} 注册
{@link android.content.BroadcastReceiver},则ä»å¯åœ¨ä¸»çº¿ç¨‹ä¸Šä¾¦å¬ {@code CONNECTIVITY_CHANGE}。
diff --git a/docs/html-intl/intl/zh-cn/preview/features/security-config.jd b/docs/html-intl/intl/zh-cn/preview/features/security-config.jd
index ca20c44b379c..e029a035ca06 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/security-config.jd
+++ b/docs/html-intl/intl/zh-cn/preview/features/security-config.jd
@@ -739,7 +739,7 @@ CA è¯ä¹¦çš„æ¥æºï¼Œå¯ä»¥æ˜¯
</dt>
<dd>
- ç”¨äºŽç”Ÿæˆ PKP 的摘è¦ç®—法。目å‰ä»…支æŒ
+ ç”¨äºŽç”Ÿæˆ PKP 的摘è¦ç®—法。目å‰ä»…支æŒ
{@code "SHA-256"}。
</dd>
</dl>
diff --git a/docs/html-intl/intl/zh-cn/preview/overview.jd b/docs/html-intl/intl/zh-cn/preview/overview.jd
index 06a905ff2235..8bbd120f9393 100644
--- a/docs/html-intl/intl/zh-cn/preview/overview.jd
+++ b/docs/html-intl/intl/zh-cn/preview/overview.jd
@@ -117,7 +117,7 @@ page.tags="preview", "developer", "android"
<p>
使用 <a href="{@docRoot}preview/bug">Issue Tracker</a> 呿ˆ‘们报告问题并æä¾›å馈。
-与
+与
<a href="{@docRoot}preview/dev-community">N&nbsp;å¼€å‘者社区</a>中的其他开å‘者建立è”系。
</p>
@@ -381,7 +381,7 @@ page.tags="preview", "developer", "android"
</p>
<p>
- Android N Developer Preview æä¾›<strong>预览版 API</strong> 功能
+ Android N Developer Preview æä¾›<strong>预览版 API</strong> 功能
&mdash; 在最终的 SDK å‘布之å‰ï¼Œè¿™äº› API éƒ½ä¸æ˜¯æ­£å¼çš„ API。目å‰ï¼Œæœ€ç»ˆçš„ SDK 计划于 2016 年第三季度å‘布。
è¿™æ„味ç€ä¸€æ®µæ—¶æœŸå†…,特别是该计划的最åˆå‡ å‘¨å†…,
<strong>API å¯èƒ½ä¼šå‡ºçŽ°ç»†å¾®å˜åŒ–</strong>。
diff --git a/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd b/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
index 872ad7c9e14e..c629cd9c4ecc 100644
--- a/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
+++ b/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
@@ -55,7 +55,7 @@ page.image=images/cards/card-n-sdk_2x.png
</p>
<ol>
- <li>点击 <strong>Tools &gt;Android &gt;
+ <li>点击 <strong>Tools &gt;Android &gt;
SDK Manager</strong> æ¥æ‰“å¼€ SDK 管ç†å™¨ã€‚</li>
<li>在 <strong>SDK Platforms</strong> 选项å¡ä¸­é€‰ä¸­ <strong>Android N Preview</strong> å¤é€‰æ¡†ã€‚
@@ -92,7 +92,7 @@ SDK Manager</strong> æ¥æ‰“å¼€ SDK 管ç†å™¨ã€‚</li>
<a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
<td width="100%">
MD5:19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
- SHA-1:9224bd4445cd7f653c4c294d362ccb195a2101e7
+ SHA-1:9224bd4445cd7f653c4c294d362ccb195a2101e7
</td>
</tr>
<table>
diff --git a/docs/html-intl/intl/zh-cn/preview/support.jd b/docs/html-intl/intl/zh-cn/preview/support.jd
index 9efb5b22c83c..353a71ddd513 100644
--- a/docs/html-intl/intl/zh-cn/preview/support.jd
+++ b/docs/html-intl/intl/zh-cn/preview/support.jd
@@ -223,7 +223,7 @@ WebView 团队正在寻求关于 N 中的兼容性和è¿è¡Œæ—¶æ€§èƒ½çš„å馈,
<dd>
系统现在使用 Activity çš„å…ƒæ•°æ®æ¥å†³å®šå›¾å—模å¼ã€‚
(之å‰å¹³é“ºæ¨¡å¼æ˜¯ç”± <code>TileService.onTileAdded()</code> 的返回值决定。)
-如需了解详细信æ¯ï¼Œè¯·å‚阅å¯ä¸‹è½½çš„ <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API å‚考</a> 中的
+如需了解详细信æ¯ï¼Œè¯·å‚阅å¯ä¸‹è½½çš„ <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API å‚考</a> 中的
<code>TileService.META_DATA_ACTIVE_TILE</code>。
</dd>
</dl>
@@ -334,7 +334,7 @@ WebView 团队正在寻求关于 N 中的兼容性和è¿è¡Œæ—¶æ€§èƒ½çš„å馈,
</h4>
<ul>
- <li>在将一个è¿è¡Œ Android 6.0 或更早版本的设备更新到 N Developer Preview 时,Google 键盘ä¸ä¼šä¿ç•™é¦–选项数æ®ï¼Œå¦‚最近的表情符å·å’Œå£°éŸ³è®¾ç½®ã€‚
+ <li>在将一个è¿è¡Œ Android 6.0 或更早版本的设备更新到 N Developer Preview 时,Google 键盘ä¸ä¼šä¿ç•™é¦–选项数æ®ï¼Œå¦‚最近的表情符å·å’Œå£°éŸ³è®¾ç½®ã€‚
</li>
diff --git a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/index.jd b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/index.jd
index dad22089fc92..e401aae783d4 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/index.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/index.jd
@@ -55,7 +55,7 @@ android.app.Activity} 实例接收的é‡è¦ç”Ÿå‘½å‘¨æœŸå›žè°ƒæ–¹æ³•ä»¥åŠæ‚¨å¦‚ä
</p>
<h2>课程</h2>
-
+
<dl>
<dt><b><a href="starting.html">开始Activity</a></b></dt>
<dd>学习有关Activity生命周期ã€ç”¨æˆ·å¦‚何å¯åŠ¨æ‚¨çš„åº”ç”¨ä»¥åŠå¦‚何执行基本Activity创建æ“作的基础知识。
@@ -68,5 +68,5 @@ android.app.Activity} 实例接收的é‡è¦ç”Ÿå‘½å‘¨æœŸå›žè°ƒæ–¹æ³•ä»¥åŠæ‚¨å¦‚ä
<dt><b><a href="recreating.html">釿–°åˆ›å»ºActivity</a></b></dt>
<dd>学习您的Activityè¢«é”€æ¯æ—¶çš„æƒ…å†µä»¥åŠæ‚¨å¦‚何能够根æ®éœ€è¦é‡æ–°æž„建Activity。
</dd>
-</dl>
+</dl>
diff --git a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/pausing.jd
index ef5b0d57a4ec..c73a9e83708d 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>æœ¬è¯¾ç¨‹å°†å‘æ‚¨å±•示如何</h2>
<ol>
<li><a href="#Pause">æš‚åœActivity</a></li>
<li><a href="#Resume">ç»§ç»­Activity</a></li>
</ol>
-
+
<h2>您还应阅读</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">Activity</a>
@@ -59,7 +59,7 @@ android.app.Activity#onPause()} 的调用时,å¯èƒ½æ„味ç€Activity将暂åœ
<h2 id="Pause">æš‚åœActivity</h2>
-
+
<p>当系统为您的Activity调用 {@link android.app.Activity#onPause()} 时,它从技术角度看æ„å‘³ç€æ‚¨çš„Activityä»ç„¶å¤„于部分å¯è§çжæ€ï¼Œä½†å¾€å¾€è¯´æ˜Žç”¨æˆ·å³å°†ç¦»å¼€Activity并且它很快就è¦è¿›å…¥â€œåœæ­¢â€çжæ€ã€‚
您通常应使用
diff --git a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/recreating.jd b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/recreating.jd
index a7971d80a53e..76afe17f1d57 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>æœ¬è¯¾ç¨‹å°†å‘æ‚¨å±•示如何</h2>
<ol>
<li><a href="#SaveState">ä¿å­˜Activity状æ€</a></li>
<li><a href="#RestoreState">æ¢å¤Activity状æ€</a></li>
</ol>
-
+
<h2>您还应阅读</h2>
<ul>
<li><a href="{@docRoot}training/basics/supporting-devices/screens.html">支æŒä¸åŒå±å¹•</a>
@@ -105,7 +105,7 @@ public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-
+
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
@@ -138,7 +138,7 @@ onCreate()} 中æ¢å¤ä¸€äº›çŠ¶æ€æ•°æ®ï¼š</p>
&#64;Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Always call the superclass first
-
+
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore value of members from saved state
@@ -157,12 +157,12 @@ android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} ï¼Œè€Œä¸æ
系统åªåœ¨å­˜åœ¨è¦æ¢å¤çš„å·²ä¿å­˜çŠ¶æ€æ—¶è°ƒç”¨ {@link
android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}
,因此您无需检查 {@link android.os.Bundle} 是å¦ä¸º null:</p>
-
+
<pre>
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
-
+
// Restore state members from saved instance
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/starting.jd b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/starting.jd
index cebd7484d179..04f380d7d0db 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>æœ¬è¯¾ç¨‹å°†å‘æ‚¨å±•示如何</h2>
<ol>
<li><a href="#lifecycle-states">了解生命周期回调</a></li>
@@ -17,7 +17,7 @@ trainingnavtop=true
<li><a href="#Create">创建一个新实例</a></li>
<li><a href="#Destroy">销æ¯Activity</a></li>
</ol>
-
+
<h2>您还应阅读</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">Activity</a></li>
@@ -83,7 +83,7 @@ Activity还å¯ä»¥ä»Žâ€œæš‚åœâ€å’Œâ€œåœæ­¢â€çжæ€å›žåˆ°ç»§ç»­çжæ€ã€‚
</ul>
<!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
methods.</p>
<table>
<tr>
@@ -128,7 +128,7 @@ methods.</p>
</dl>
<p>其他状æ€ï¼ˆâ€œåˆ›å»ºâ€å’Œâ€œå¼€å§‹â€ï¼‰æ˜¯çž¬æ€ï¼Œç³»ç»Ÿä¼šé€šè¿‡è°ƒç”¨ä¸‹ä¸€ä¸ªç”Ÿå‘½å‘¨æœŸå›žè°ƒæ–¹æ³•从这些状æ€å¿«é€Ÿç§»åˆ°ä¸‹ä¸€ä¸ªçжæ€ã€‚
-也就是说,在系统调用
+也就是说,在系统调用
{@link android.app.Activity#onCreate onCreate()} 之åŽï¼Œå®ƒä¼šå¿«é€Ÿè°ƒç”¨ {@link
android.app.Activity#onStart()},紧接ç€å¿«é€Ÿè°ƒç”¨ {@link
android.app.Activity#onResume()}。</p>
@@ -138,7 +138,7 @@ android.app.Activity#onResume()}。</p>
-<h2 id="launching-activity">指定您的应用的å¯åЍ噍Activity</h2>
+<h2 id="launching-activity">指定您的应用的å¯åЍ噍Activity</h2>
<p>当用户从主å±å¹•选择您的应用图标时,系统会为您已声明为“å¯åЍ噍â€ï¼ˆ 或“主è¦â€ï¼‰Activity的应用中的 {@link android.app.Activity} 调用 {@link
android.app.Activity#onCreate onCreate()} 方法。
@@ -151,7 +151,7 @@ android.app.Activity#onCreate onCreate()} 方法。
<p>您的应用的主Activity必须使用 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
<intent-filter>}</a>(包括 {@link
android.content.Intent#ACTION_MAIN MAIN} æ“作和
-{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} 类别)在宣示说明中声明。例如:</p>
+{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} 类别)在宣示说明中声明。例如:</p>
<pre>
&lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -200,10 +200,10 @@ public void onCreate(Bundle savedInstanceState) {
// Set the user interface layout for this Activity
// The layout file is defined in the project res/layout/main_activity.xml file
setContentView(R.layout.main_activity);
-
+
// Initialize member TextView so we can manipulate it later
mTextView = (TextView) findViewById(R.id.text_message);
-
+
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// For the main activity, make sure the app icon in the action bar
@@ -214,7 +214,7 @@ public void onCreate(Bundle savedInstanceState) {
}
</pre>
-<p class="caution"><strong>注æ„:</strong>使用 {@link android.os.Build.VERSION#SDK_INT}
+<p class="caution"><strong>注æ„:</strong>使用 {@link android.os.Build.VERSION#SDK_INT}
å¯é˜²æ­¢æ—§ç‰ˆç³»ç»Ÿä»¥è¿™ç§æ–¹å¼ä»…在 Android 2.0 (API 级别5)和更高级别执行新 API 工作。
较旧版本会é‡åˆ°è¿è¡Œæ—¶å¼‚常。</p>
@@ -268,7 +268,7 @@ android.app.Activity#onDestroy} 期间终止它们。
&#64;Override
public void onDestroy() {
super.onDestroy(); // Always call the superclass
-
+
// Stop method tracing that the activity started during onCreate()
android.os.Debug.stopMethodTracing();
}
diff --git a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/stopping.jd b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/stopping.jd
index 630817cbd85b..dd6d4a649d59 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>æœ¬è¯¾ç¨‹å°†å‘æ‚¨å±•示如何</h2>
<ol>
<li><a href="#Stop">åœæ­¢Activity</a></li>
<li><a href="#Start">开始/釿–°å¼€å§‹Activity</a></li>
</ol>
-
+
<h2>您还应阅读</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">Activity</a>
@@ -152,13 +152,13 @@ android.app.Activity#onStart()} 。
&#64;Override
protected void onStart() {
super.onStart(); // Always call the superclass method first
-
+
// The activity is either being restarted or started for the first time
// so this is where we should make sure that GPS is enabled
- LocationManager locationManager =
+ LocationManager locationManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-
+
if (!gpsEnabled) {
// Create a dialog here that requests the user to enable GPS, and use an intent
// with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -169,8 +169,8 @@ protected void onStart() {
&#64;Override
protected void onRestart() {
super.onRestart(); // Always call the superclass method first
-
- // Activity being restarted from stopped state
+
+ // Activity being restarted from stopped state
}
</pre>
diff --git a/docs/html-intl/intl/zh-cn/training/basics/data-storage/databases.jd b/docs/html-intl/intl/zh-cn/training/basics/data-storage/databases.jd
index a6c919350121..78fa2f393207 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/data-storage/databases.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/data-storage/databases.jd
@@ -201,7 +201,7 @@ newRowId = db.insert(
</pre>
<p>{@link android.database.sqlite.SQLiteDatabase#insert insert()}
-çš„ç¬¬ä¸€ä¸ªå‚æ•°å³ä¸ºè¡¨æ ¼åç§°ã€‚ç¬¬äºŒä¸ªå‚æ•°æŒ‡å®šåœ¨
+çš„ç¬¬ä¸€ä¸ªå‚æ•°å³ä¸ºè¡¨æ ¼åç§°ã€‚ç¬¬äºŒä¸ªå‚æ•°æŒ‡å®šåœ¨
{@link android.content.ContentValues} 为空的情况下框架å¯åœ¨å…¶ä¸­æ’å…¥ NULL 的列的å称(如果您将其设置为 {@code "null"},
那么框架将ä¸ä¼šåœ¨æ²¡æœ‰å€¼æ—¶æ’入行。)
</p>
diff --git a/docs/html-intl/intl/zh-cn/training/basics/fragments/fragment-ui.jd b/docs/html-intl/intl/zh-cn/training/basics/fragments/fragment-ui.jd
index 51a4e278e5bc..1ef1662753fd 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/fragments/fragment-ui.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/fragments/fragment-ui.jd
@@ -4,7 +4,7 @@ page.type=培训
@jd:body
<div id="tb-wrapper">
- <div id="tb">
+ <div id="tb">
<h2>本课程所教授的内容:</h2>
<ol>
<li><a href="#AddAtRuntime">在è¿è¡Œæ—¶å‘ Activity 添加 Fragment</a></li>
@@ -39,7 +39,7 @@ page.type=培训
- <h2 id="AddAtRuntime">在è¿è¡Œæ—¶å‘ Activity 添加 Fragment</h2>
+ <h2 id="AddAtRuntime">在è¿è¡Œæ—¶å‘ Activity 添加 Fragment</h2>
<p>ä½ å¯ä»¥åœ¨ Activity è¿è¡Œæ—¶å‘其添加 Fragment,而ä¸ç”¨åƒ<a href="creating.html">上一课</a>中介ç»çš„那样,使用 <code>&lt;fragment&gt;</code> 元素在布局文件中为 Activity 定义 Fragment。如果你打算在 Activity è¿è¡Œå‘¨æœŸå†…更改 Fragment,就必须这样åšã€‚</p>
@@ -88,11 +88,11 @@ page.type=培训
return;
}
- // åˆ›å»ºä¸€ä¸ªè¦æ”¾å…¥ Activity 布局中的新 Fragment
+ // åˆ›å»ºä¸€ä¸ªè¦æ”¾å…¥ Activity 布局中的新 Fragment
HeadlinesFragment firstFragment = new HeadlinesFragment();
// 如果此 Activity 是通过 Intent å‘出的特殊指令æ¥å¯åŠ¨çš„ï¼Œ
- // 请将该 Intent çš„ extras 以傿•°å½¢å¼ä¼ é€’给该 Fragment
+ // 请将该 Intent çš„ extras 以傿•°å½¢å¼ä¼ é€’给该 Fragment
firstFragment.setArguments(getIntent().getExtras());
// 将该 Fragment 添加到“fragment_containerâ€FrameLayout 中
diff --git a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/battery-monitoring.jd
index 0e1ccb739168..42b3c89fe07f 100644
--- a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/battery-monitoring.jd
+++ b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/battery-monitoring.jd
@@ -7,8 +7,8 @@ next.title=确定和监控基座对接状æ€å’Œç±»åž‹
next.link=docking-monitoring.html
@jd:body
-
-<div id="tb-wrapper">
+
+<div id="tb-wrapper">
<div id="tb">
<h2>本教程将指导您</h2>
@@ -24,9 +24,9 @@ next.link=docking-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>
</ul>
-</div>
</div>
-
+</div>
+
<p>å¦‚æžœæ‚¨è¦æ›´æ”¹åŽå°æ›´æ–°é¢‘率,从而å‡å°‘更新对电池使用时间的影å“,最好先查看当å‰çš„电池电é‡å’Œå……电状æ€ã€‚</p>
<p>对应用进行更新会影å“电池使用时间,具体å–决于设备的电池电é‡å’Œå……电状æ€ã€‚如果用户正在通过交æµç”µæºä¸ºè®¾å¤‡å……电,更新应用的影å“å°±å¯ä»¥å¿½ç•¥ä¸è®¡ã€‚因此,在大多数情况下,åªè¦è®¾å¤‡è¿žæŽ¥äº†å……电器,您就å¯ä»¥æœ€å¤§ç¨‹åº¦åœ°æé«˜åˆ·æ–°é¢‘率。相å,如果设备在消耗电池电é‡ï¼Œé‚£ä¹ˆé™ä½Žæ›´æ–°é¢‘率就å¯ä»¥å»¶é•¿ç”µæ± ä½¿ç”¨æ—¶é—´ã€‚</p>
@@ -34,8 +34,8 @@ next.link=docking-monitoring.html
<p>åŒæ ·ï¼Œæ‚¨ä¹Ÿå¯ä»¥æŸ¥çœ‹ç”µæ± ç”µé‡ï¼Œå¦‚果电é‡å³å°†è€—尽,您就å¯ä»¥é™ä½Žæ›´æ–°é¢‘çŽ‡ï¼Œç”šè‡³åœæ­¢æ›´æ–°ã€‚</p>
-<h2 id="DetermineChargeState">确定当å‰çš„充电状æ€</h2>
-
+<h2 id="DetermineChargeState">确定当å‰çš„充电状æ€</h2>
+
<p>请先确定当å‰çš„充电状æ€ã€‚{@link android.os.BatteryManager} 会通过一个包å«å……电状æ€çš„æŒç»­ {@link android.content.Intent} 广播所有的电池详情和充电详情。</p>
<p>由于这是个æŒç»­ intent,因此您无需通过将传入 {@code null} çš„ {@code registerReceiver} ä½œä¸ºæŽ¥æ”¶å™¨ç›´æŽ¥è°ƒç”¨ï¼ˆå¦‚ä¸‹ä¸€ä»£ç æ®µæ‰€ç¤ºï¼‰æ¥æ³¨å†Œ {@link android.content.BroadcastReceiver},系统会返回当å‰ç”µæ± çŠ¶æ€ intent。您å¯ä»¥åœ¨æ­¤å¤„传入实际的 {@link android.content.BroadcastReceiver} 对象,ä¸è¿‡æˆ‘们会在下文中介ç»å¦‚ä½•å¤„ç†æ›´æ–°ï¼Œå› æ­¤æ‚¨ä¸ä¸€å®šè¦æ‰§è¡Œæ­¤æ“作。</p>
@@ -58,7 +58,7 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
<p>通常,如果设备连接了交æµå……电器,您就应最大程度地æé«˜åŽå°æ›´æ–°é¢‘率;如果设备通过 USB 充电,请é™ä½Žæ›´æ–°é¢‘率;如果电池在耗电,请进一步é™ä½Žæ›´æ–°é¢‘率。</p>
-<h2 id="MonitorChargeState">监控充电状æ€çš„å˜åŒ–</h2>
+<h2 id="MonitorChargeState">监控充电状æ€çš„å˜åŒ–</h2>
<p>充电状æ€çš„æ”¹å˜å°±åƒè®¾å¤‡è¿žæŽ¥ç”µæºé‚£æ ·å®¹æ˜“,因此监控充电状æ€çš„å˜åŒ–并相应地调整刷新频率就很é‡è¦äº†ã€‚</p>
@@ -75,11 +75,11 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
<pre>public class PowerConnectionReceiver extends BroadcastReceiver {
&#64;Override
- public void onReceive(Context context, Intent intent) {
+ public void onReceive(Context context, Intent intent) {
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
-
+
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
@@ -87,7 +87,7 @@ boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
}</pre>
-<h2 id="CurrentLevel">确定当å‰çš„电池电é‡</h2>
+<h2 id="CurrentLevel">确定当å‰çš„电池电é‡</h2>
<p>在æŸäº›æƒ…况下,确定当å‰çš„电池电é‡ä¼šå¯¹æ‚¨æœ‰æ‰€å¸®åŠ©ã€‚å¦‚æžœç”µæ± ç”µé‡ä½ŽäºŽä¸€å®šæ°´å¹³ï¼Œæ‚¨å¯ä»¥é™ä½ŽåŽå°æ›´æ–°é¢‘率。</p>
@@ -99,7 +99,7 @@ int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale;</pre>
-<h2 id="MonitorLevel">监控电池电é‡çš„æ˜¾è‘—å˜åŒ–</h2>
+<h2 id="MonitorLevel">监控电池电é‡çš„æ˜¾è‘—å˜åŒ–</h2>
<p>您无法轻æ¾åœ°å¯¹ç”µæ± çжæ€è¿›è¡ŒæŒç»­ç›‘控,ä¸è¿‡ä¹Ÿæ— éœ€è¿™ä¹ˆåšã€‚</p>
diff --git a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/connectivity-monitoring.jd
index 8313e089b908..b5f48a9e9a0d 100644
--- a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/connectivity-monitoring.jd
@@ -11,7 +11,7 @@ next.link=manifest-receivers.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>本教程将指导您</h2>
@@ -27,7 +27,7 @@ next.link=manifest-receivers.html
<li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>
</ul>
-</div>
+</div>
</div>
<p>é‡å¤æé†’å’ŒåŽå°æœåŠ¡æœ€å¸¸è§çš„用途之一,就是为æ¥è‡ªäº’è”网资æºçš„应用数æ®ã€ç¼“存数æ®å®‰æŽ’定期更新或执行长时间è¿è¡Œçš„下载任务。但是,如果您没有连接互è”网,或因连接过慢而无法完æˆä¸‹è½½ï¼Œé‚£å°±æ ¹æœ¬æ²¡å¿…è¦å”¤é†’设备并安排更新了。</p>
@@ -35,18 +35,18 @@ next.link=manifest-receivers.html
<p>您å¯ä»¥ä½¿ç”¨ {@link android.net.ConnectivityManager} 查看是å¦ç¡®å®žå·²è¿žæŽ¥äº’è”网,如果已连接,您还å¯ä»¥äº†è§£å½“å‰çš„连接类型。</p>
-<h2 id="DetermineConnection">确定是å¦å·²è¿žæŽ¥äº’è”网</h2>
-
+<h2 id="DetermineConnection">确定是å¦å·²è¿žæŽ¥äº’è”网</h2>
+
<p>如果设备未连接互è”ç½‘ï¼Œå°±æ²¡æœ‰å¿…è¦æ ¹æ®äº’è”网资æºå®‰æŽ’æ›´æ–°äº†ã€‚ä»¥ä¸‹ä»£ç æ®µè¯´æ˜Žå¦‚何使用 {@link android.net.ConnectivityManager} 查询有效网络并确定该网络是å¦å·²è¿žæŽ¥äº’è”网。</p>
<pre>ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
-
+
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
-<h2 id="DetermineType">确定互è”网连接的类型</h2>
+<h2 id="DetermineType">确定互è”网连接的类型</h2>
<p>您也å¯ä»¥ç¡®å®šå½“å‰å¯ç”¨çš„互è”网连接的类型。</p>
@@ -59,7 +59,7 @@ boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
<p>åœç”¨æ›´æ–°åŽï¼Œè¯·åŠ¡å¿…ä¾¦å¬è¿žæŽ¥æƒ…况的å˜åŒ–,以便在建立互è”ç½‘è¿žæŽ¥åŽæ¢å¤æ›´æ–°ã€‚</p>
-<h2 id="MonitorChanges">监控连接情况的å˜åŒ–</h2>
+<h2 id="MonitorChanges">监控连接情况的å˜åŒ–</h2>
<p>åªè¦è¿žæŽ¥çš„具体情况å‘生å˜åŒ–,{@link android.net.ConnectivityManager} 就会广播 {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION} ({@code "android.net.conn.CONNECTIVITY_CHANGE"}) æ“作。您å¯ä»¥åœ¨æ¸…å•中注册广播接收器,以便侦å¬è¿™äº›å˜åŒ–并相应地æ¢å¤ï¼ˆæˆ–æš‚åœï¼‰åŽå°æ›´æ–°ã€‚</p>
diff --git a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/docking-monitoring.jd
index 53b951dd584e..c5ed38e78e8e 100644
--- a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/docking-monitoring.jd
+++ b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/docking-monitoring.jd
@@ -10,7 +10,7 @@ next.link=connectivity-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>本教程将指导您</h2>
@@ -26,7 +26,7 @@ next.link=connectivity-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>
</ul>
-</div>
+</div>
</div>
<p>Android 设备支æŒå‡ ç§ä¸åŒç±»åž‹çš„åŸºåº§ã€‚è¿™äº›ç±»åž‹åŒ…æ‹¬è½¦è½½æˆ–å®¶ç”¨åŸºåº§ä»¥åŠæ•°å­—和模拟基座。许多基座å¯ç”¨äºŽä¸ºæ’入的设备充电,因此基座状æ€é€šå¸¸ä¸Žå……电状æ€ç´§å¯†ç›¸å…³ã€‚</p>
@@ -36,8 +36,8 @@ next.link=connectivity-monitoring.html
<p>系统是以æŒç»­ {@link android.content.Intent} 的形å¼å¹¿æ’­åŸºåº§çжæ€çš„,这样您就å¯ä»¥æŸ¥è¯¢è®¾å¤‡æ˜¯å¦æ’入了基座,如果已æ’入,您还å¯ä»¥æŸ¥è¯¢åŸºåº§ç±»åž‹ã€‚</p>
-<h2 id="CurrentDockState">确定当å‰çš„基座状æ€</h2>
-
+<h2 id="CurrentDockState">确定当å‰çš„基座状æ€</h2>
+
<p>基座状æ€è¯¦æƒ…是以附加信æ¯çš„å½¢å¼åŒ…å«åœ¨ {@link android.content.Intent#ACTION_DOCK_EVENT} æ“作的æŒç»­å¹¿æ’­ä¸­çš„。由于这属于æŒç»­å¹¿æ’­ï¼Œå› æ­¤æ‚¨æ— éœ€æ³¨å†Œ {@link android.content.BroadcastReceiver}。您å¯ä»¥å°†ä¼ å…¥ {@code null} çš„ {@link android.content.Context#registerReceiver registerReceiver()} ä½œä¸ºå¹¿æ’­æŽ¥æ”¶å™¨ç›´æŽ¥è°ƒç”¨ï¼Œå…·ä½“å¦‚ä¸‹ä¸€ä»£ç æ®µæ‰€ç¤ºã€‚</p>
<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
@@ -49,9 +49,9 @@ Intent dockStatus = context.registerReceiver(null, ifilter);</pre>
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
-<h2 id="DockType">确定当å‰çš„基座类型</h2>
+<h2 id="DockType">确定当å‰çš„基座类型</h2>
-<p>用户å¯ä»¥å°†è®¾å¤‡æ’入以下四ç§ç±»åž‹çš„基座:
+<p>用户å¯ä»¥å°†è®¾å¤‡æ’入以下四ç§ç±»åž‹çš„基座:
<ul><li>车载基座</li>
<li>桌é¢åŸºåº§</li>
<li>低端(模拟)桌é¢åŸºåº§</li>
@@ -60,12 +60,12 @@ boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
<p>请注æ„,åŽä¸¤ç§ç±»åž‹ä»…适用于 API 级别为 11 åŠä»¥ä¸Šçš„ Android,因此如果您åªå…³æ³¨åŸºåº§ç±»åž‹ï¼Œè€Œä¸åœ¨æ„基座究竟是数字的还是模拟的,那么比较åˆé€‚çš„åšæ³•就是查看全部三ç§ç±»åž‹ï¼š</p>
<pre>boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
-boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
+boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
dockState == EXTRA_DOCK_STATE_LE_DESK ||
dockState == EXTRA_DOCK_STATE_HE_DESK;</pre>
-<h2 id="MonitorDockState">ç›‘æŽ§åŸºåº§çŠ¶æ€æˆ–类型的å˜åŒ–</h2>
+<h2 id="MonitorDockState">ç›‘æŽ§åŸºåº§çŠ¶æ€æˆ–类型的å˜åŒ–</h2>
<p>æ— è®ºè®¾å¤‡æ˜¯å¦æ’入了基座,系统都会广播 {@link android.content.Intent#ACTION_DOCK_EVENT} æ“作。è¦ç›‘控设备基座状æ€çš„å˜åŒ–,您åªéœ€åœ¨åº”用清å•中注册广播接收器å³å¯ï¼Œå…·ä½“å¦‚ä»¥ä¸‹ä»£ç æ®µæ‰€ç¤ºï¼š</p>
diff --git a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/index.jd b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/index.jd
index 308ad7b8a9f5..2efed8b6c05c 100644
--- a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/index.jd
+++ b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/index.jd
@@ -7,10 +7,10 @@ next.link=battery-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
-<h2>ä¾å­˜å…³ç³»å’Œå‰ææ¡ä»¶</h2>
+<h2>ä¾å­˜å…³ç³»å’Œå‰ææ¡ä»¶</h2>
<ul>
<li>Android 2.0(API 级别 5)或更高版本</li>
<li><a href="{@docRoot}guide/components/intents-filters.html">intent å’Œ intent 过滤器</a>的使用ç»éªŒ</li>
@@ -21,19 +21,19 @@ next.link=battery-monitoring.html
<li><a href="{@docRoot}guide/components/services.html">æœåŠ¡</a>
</ul>
-</div>
+</div>
</div>
<p>为了打造一个优秀的应用,您应设法é™ä½Žåº”用对电池使用时间的影å“。阅读完本教程åŽï¼Œæ‚¨å°±å¯ä»¥è®©è‡ªå·±æž„建的应用根æ®å…¶æ‰€åœ¨è®¾å¤‡çš„çŠ¶æ€æ¥ç›‘控和调整自身的功能和行为。</p>
<p>è¦ç¡®ä¿åœ¨ä¸å½±å“用户体验的情况下最大程度地é™ä½Žåº”用对电池使用时间的影å“,您å¯ä»¥é‡‡å–一些措施,例如在网络连接断开时åœç”¨åŽå°æœåŠ¡æ›´æ–°ï¼Œæˆ–åœ¨ç”µæ± ç”µé‡è¾ƒä½Žæ—¶é™ä½Žæ­¤ç±»æ›´æ–°çš„频率。</p>
-<h2>教程</h2>
-
+<h2>教程</h2>
+
<!-- Create a list of the lessons in this class along with a short description of each lesson.
These should be short and to the point. It should be clear from reading the summary whether someone
-will want to jump to a lesson or not.-->
-
+will want to jump to a lesson or not.-->
+
<dl>
<dt><b><a href="battery-monitoring.html">监控电池电é‡å’Œå……电状æ€</a></b></dt>
<dd>了解如何通过确定和监控当å‰çš„电池电é‡å’Œå……电状æ€çš„å˜åŒ–æ¥ç›¸åº”地调整应用的更新频率。</dd>
@@ -46,4 +46,4 @@ will want to jump to a lesson or not.-->
<dt><b><a href="manifest-receivers.html">æ ¹æ®éœ€è¦æ“作广播接收器</a></b></dt>
<dd>您å¯ä»¥åœ¨è¿è¡Œæ—¶åˆ‡æ¢è‡ªå·±åœ¨æ¸…å•中声明的广播接收器,以便根æ®å½“å‰è®¾å¤‡çжæ€åœç”¨ä¸éœ€è¦çš„æŽ¥æ”¶å™¨ã€‚了解如何在设备未处于特定状æ€çš„æƒ…况下切æ¢å’Œå±‚å çжæ€å˜åŒ–接收器和延迟æ“作,以便æé«˜æ•ˆçŽ‡ã€‚</dd>
-</dl> \ No newline at end of file
+</dl> \ No newline at end of file
diff --git a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/manifest-receivers.jd
index 07c014f10a31..ed1b6ceb0354 100644
--- a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/manifest-receivers.jd
@@ -9,7 +9,7 @@ previous.link=connectivity-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>本教程将指导您</h2>
@@ -23,7 +23,7 @@ previous.link=connectivity-monitoring.html
<li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>
</ul>
-</div>
+</div>
</div>
<p>监控设备状æ€å˜åŒ–çš„æœ€ç®€å•æ–¹æ³•就是,为您监控的æ¯ç§çжæ€åˆ›å»º {@link android.content.BroadcastReceiver} 并在应用清å•中é€ä¸€è¿›è¡Œæ³¨å†Œã€‚ç„¶åŽï¼Œæ‚¨åªéœ€æ ¹æ®å½“å‰è®¾å¤‡çжæ€åœ¨æ¯ä¸ªæŽ¥æ”¶å™¨ä¸­é‡æ–°å®‰æŽ’é‡å¤æé†’å³å¯ã€‚</p>
@@ -31,10 +31,10 @@ previous.link=connectivity-monitoring.html
<p>此方法的负é¢å½±å“在于,åªè¦ç³»ç»Ÿè§¦å‘了这些接收器中的任何一个,相关应用就会唤醒设备,其频率å¯èƒ½ä¼šè¿œè¿œè¶…过所需的水平。</p>
<p>更好的方法是在è¿è¡Œæ—¶åœç”¨æˆ–å¯ç”¨å¹¿æ’­æŽ¥æ”¶å™¨ã€‚这样的è¯ï¼Œæ‚¨å°±å¯ä»¥å°†è‡ªå·±åœ¨æ¸…å•中声明的接收器用作被动æé†’ï¼Œåªæœ‰åœ¨éœ€è¦æ—¶æ‰ä¼šç”±ç³»ç»Ÿäº‹ä»¶è§¦å‘。</p>
-
-<h2 id="ToggleReceivers">切æ¢å’Œå±‚å çжæ€å˜åŒ–接收器以æé«˜æ•ˆçއ </h2>
-
+
+<h2 id="ToggleReceivers">切æ¢å’Œå±‚å çжæ€å˜åŒ–接收器以æé«˜æ•ˆçއ </h2>
+
<p>您å¯ä»¥ä½¿ç”¨ {@link android.content.pm.PackageManager} åˆ‡æ¢æ¸…å•中定义的任æ„组件的å¯ç”¨çжæ€ï¼ˆåŒ…括您è¦å¯ç”¨æˆ–åœç”¨çš„ä»»æ„广播接收器),具体如以下片段所示:</p>
<pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
diff --git a/docs/html-intl/intl/zh-cn/training/multiscreen/adaptui.jd b/docs/html-intl/intl/zh-cn/training/multiscreen/adaptui.jd
index 89908fe46ef9..f9e32258f716 100644
--- a/docs/html-intl/intl/zh-cn/training/multiscreen/adaptui.jd
+++ b/docs/html-intl/intl/zh-cn/training/multiscreen/adaptui.jd
@@ -10,9 +10,9 @@ previous.link=screendensities.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
-
+<div id="tb-wrapper">
+<div id="tb">
+
<h2>本教程将指导您</h2>
<ol>
@@ -27,17 +27,17 @@ previous.link=screendensities.html
<ul>
<li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">支æŒå¹³æ¿ç”µè„‘和手æŒè®¾å¤‡</a></li>
</ul>
-
+
<h2>试试看</h2>
-
+
<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">下载示例应用</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
<p>æ ¹æ®æ‚¨çš„åº”ç”¨å½“å‰æ˜¾ç¤ºçš„å¸ƒå±€ï¼Œç”¨æˆ·ç•Œé¢æµç¨‹å¯èƒ½ä¼šæœ‰æ‰€ä¸åŒã€‚例如,如果您的应用处于åŒé¢æ¿æ¨¡å¼ä¸‹ï¼Œç‚¹å‡»å·¦ä¾§é¢æ¿ä¸Šçš„项å³å¯ç›´æŽ¥åœ¨å³ä¾§é¢æ¿ä¸Šæ˜¾ç¤ºç›¸å…³å†…容;如果该应用处于å•颿¿æ¨¡å¼ä¸‹ï¼Œç›¸å…³å†…容就应以其他活动的形å¼åœ¨åŒä¸€é¢æ¿ä¸Šæ˜¾ç¤ºã€‚</p>
@@ -56,7 +56,7 @@ public class NewsReaderActivity extends FragmentActivity {
setContentView(R.layout.main_layout);
View articleView = findViewById(R.id.article);
- mIsDualPane = articleView != null &amp;&amp;
+ mIsDualPane = articleView != null &amp;&amp;
articleView.getVisibility() == View.VISIBLE;
}
}
@@ -116,7 +116,7 @@ public void onCreate(Bundle savedInstanceState) {
else {
/* use list navigation (spinner) */
actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
- SpinnerAdapter adap = new ArrayAdapter<String>(this,
+ SpinnerAdapter adap = new ArrayAdapter<String>(this,
R.layout.headline_item, CATEGORIES);
actionBar.setListNavigationCallbacks(adap, handler);
}
@@ -168,7 +168,7 @@ public class HeadlinesFragment extends ListFragment {
public class HeadlinesFragment extends ListFragment {
...
&#64;Override
- public void onItemClick(AdapterView&lt;?&gt; parent,
+ public void onItemClick(AdapterView&lt;?&gt; parent,
View view, int position, long id) {
if (null != mHeadlineSelectedListener) {
mHeadlineSelectedListener.onHeadlineSelected(position);
diff --git a/docs/html-intl/intl/zh-cn/training/multiscreen/index.jd b/docs/html-intl/intl/zh-cn/training/multiscreen/index.jd
index 02c687aaaef8..5ac0d8c4ae00 100644
--- a/docs/html-intl/intl/zh-cn/training/multiscreen/index.jd
+++ b/docs/html-intl/intl/zh-cn/training/multiscreen/index.jd
@@ -7,10 +7,10 @@ next.link=screensizes.html
@jd:body
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>ä¾å­˜å…³ç³»å’Œå‰ææ¡ä»¶</h2>
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>ä¾å­˜å…³ç³»å’Œå‰ææ¡ä»¶</h2>
<ul>
<li>Android 1.6 æˆ–æ›´é«˜ç‰ˆæœ¬ï¼ˆç¤ºä¾‹åº”ç”¨åˆ™éœ€è¦ 2.1 或更高版本)</li>
@@ -27,17 +27,17 @@ href="{@docRoot}tools/support-library/index.html">支æŒåº“</a></li>
<ul>
<li><a href="{@docRoot}guide/practices/screens_support.html">支æŒå¤šç§å±å¹•</a></li>
</ul>
-
-<h2>试试看</h2>
-
-<div class="download-box">
+
+<h2>试试看</h2>
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">下载示例应用</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-</div>
-</div>
-
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
+
<p>Android æ”¯æŒæ•°ç™¾ç§å±å¹•尺寸ä¸åŒçš„设备,包括å°åž‹æ‰‹æœºå’Œå¤§åž‹ç”µè§†æœºã€‚因此,请务必将您的应用设计为与所有的å±å¹•尺寸兼容,以便让尽å¯èƒ½å¤šçš„用户使用该应用。</p>
<p>ä¸è¿‡ï¼Œä¸Žå„ç§ç±»åž‹çš„设备兼容还远远ä¸å¤Ÿã€‚由于å„ç§å±å¹•尺寸对用户互动产生的利弊有所ä¸åŒï¼Œå› æ­¤è¦çœŸæ­£æ»¡è¶³ç”¨æˆ·éœ€æ±‚并广获好评,您的应用ä¸ä»…éœ€è¦æ”¯æŒå¤šç§å±å¹•,还应针对å„ç±»å±å¹•é…置的用户体验进行优化。<em></em><em></em></p>
@@ -48,17 +48,17 @@ href="{@docRoot}tools/support-library/index.html">支æŒåº“</a></li>
<p class="note"><strong>请注æ„</strong>:本教程和相关的示例使用了<a
href="{@docRoot}tools/support-library/index.html">支æŒåº“</a>,以便在 3.0 版以下的 Android 上使用 <PH>{@link android.app.Fragment}</PH> API。因此,您需è¦ä¸‹è½½è¯¥åº“并将其添加到您的应用,æ‰èƒ½ä½¿ç”¨æœ¬æ•™ç¨‹ä¸­æ¶‰åŠçš„æ‰€æœ‰ API。</p>
-
-
-<h2>教程</h2>
-
-<dl>
- <dt><b><a href="screensizes.html">支æŒå„ç§å±å¹•尺寸</a></b></dt>
- <dd>æœ¬æ•™ç¨‹å°†å‘æ‚¨ä»‹ç»å¦‚何设计å¯é€‚应多ç§å±å¹•å°ºå¯¸çš„å¸ƒå±€ï¼ˆä½¿ç”¨çµæ´»çš„视图尺寸〠<PH>{@link android.widget.RelativeLayout}</PH>ã€å±å¹•尺寸和å±å¹•æ–¹å‘é™å®šç¬¦ã€åˆ«å过滤器以åŠè‡ªåŠ¨æ‹‰ä¼¸ä½å›¾ï¼‰ã€‚</dd>
-
- <dt><b><a href="screendensities.html">支æŒå„ç§å±å¹•密度</a></b></dt>
- <dd>æœ¬æ•™ç¨‹å°†å‘æ‚¨ä»‹ç»å¦‚何支æŒå…·æœ‰ä¸åŒåƒç´ å¯†åº¦çš„å±å¹•(使用éžå¯†åº¦åˆ¶çº¦åƒç´ å¹¶æä¾›å„ç§å¯†åº¦çš„相应ä½å›¾ï¼‰ã€‚</dd>
-
- <dt><b><a href="adaptui.html">å®žæ–½è‡ªé€‚åº”ç”¨æˆ·ç•Œé¢æµç¨‹</a></b></dt>
- <dd>æœ¬æ•™ç¨‹å°†å‘æ‚¨ä»‹ç»å¦‚何以å¯é€‚应多ç§å±å¹•尺寸/å±å¹•密度组åˆçš„æ–¹å¼å®žæ–½ç”¨æˆ·ç•Œé¢æµç¨‹ï¼ˆè¿è¡Œæ—¶å¯¹å½“å‰å¸ƒå±€çš„æ£€æµ‹ï¼Œæ ¹æ®å½“å‰å¸ƒå±€åšå‡ºå“应,处ç†å±å¹•é…ç½®å˜åŒ–)。</dd>
-</dl>
+
+
+<h2>教程</h2>
+
+<dl>
+ <dt><b><a href="screensizes.html">支æŒå„ç§å±å¹•尺寸</a></b></dt>
+ <dd>æœ¬æ•™ç¨‹å°†å‘æ‚¨ä»‹ç»å¦‚何设计å¯é€‚应多ç§å±å¹•å°ºå¯¸çš„å¸ƒå±€ï¼ˆä½¿ç”¨çµæ´»çš„视图尺寸〠<PH>{@link android.widget.RelativeLayout}</PH>ã€å±å¹•尺寸和å±å¹•æ–¹å‘é™å®šç¬¦ã€åˆ«å过滤器以åŠè‡ªåŠ¨æ‹‰ä¼¸ä½å›¾ï¼‰ã€‚</dd>
+
+ <dt><b><a href="screendensities.html">支æŒå„ç§å±å¹•密度</a></b></dt>
+ <dd>æœ¬æ•™ç¨‹å°†å‘æ‚¨ä»‹ç»å¦‚何支æŒå…·æœ‰ä¸åŒåƒç´ å¯†åº¦çš„å±å¹•(使用éžå¯†åº¦åˆ¶çº¦åƒç´ å¹¶æä¾›å„ç§å¯†åº¦çš„相应ä½å›¾ï¼‰ã€‚</dd>
+
+ <dt><b><a href="adaptui.html">å®žæ–½è‡ªé€‚åº”ç”¨æˆ·ç•Œé¢æµç¨‹</a></b></dt>
+ <dd>æœ¬æ•™ç¨‹å°†å‘æ‚¨ä»‹ç»å¦‚何以å¯é€‚应多ç§å±å¹•尺寸/å±å¹•密度组åˆçš„æ–¹å¼å®žæ–½ç”¨æˆ·ç•Œé¢æµç¨‹ï¼ˆè¿è¡Œæ—¶å¯¹å½“å‰å¸ƒå±€çš„æ£€æµ‹ï¼Œæ ¹æ®å½“å‰å¸ƒå±€åšå‡ºå“应,处ç†å±å¹•é…ç½®å˜åŒ–)。</dd>
+</dl>
diff --git a/docs/html-intl/intl/zh-cn/training/multiscreen/screendensities.jd b/docs/html-intl/intl/zh-cn/training/multiscreen/screendensities.jd
index cdb9b7fe54c6..342ee9519bbd 100644
--- a/docs/html-intl/intl/zh-cn/training/multiscreen/screendensities.jd
+++ b/docs/html-intl/intl/zh-cn/training/multiscreen/screendensities.jd
@@ -12,8 +12,8 @@ next.link=adaptui.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
+<div id="tb-wrapper">
+<div id="tb">
<h2>本教程将指导您</h2>
<ol>
@@ -29,15 +29,15 @@ next.link=adaptui.html
</ul>
<h2>试试看</h2>
-
-<div class="download-box">
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">下载示例应用</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
<p>æœ¬æ•™ç¨‹å°†å‘æ‚¨ä»‹ç»å¦‚何通过æä¾›ä¸åŒèµ„æºå’Œä½¿ç”¨ç‹¬ç«‹äºŽåˆ†è¾¨çŽ‡çš„æµ‹é‡å•使¥æ”¯æŒä¸åŒå±å¹•密度。</p>
@@ -48,8 +48,8 @@ next.link=adaptui.html
<p>例如,请使用 <code>dp</code>ï¼ˆè€Œéž <code>px</code>)指定两个视图间的间è·ï¼š</p>
<pre>
-&lt;Button android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+&lt;Button android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:text="&#64;string/clickme"
android:layout_marginTop="20dp" /&gt;
</pre>
@@ -57,8 +57,8 @@ next.link=adaptui.html
<p>请务必使用 <code>sp</code> 指定文字大å°ï¼š</p>
<pre>
-&lt;TextView android:layout_width="match_parent"
- android:layout_height="wrap_content"
+&lt;TextView android:layout_width="match_parent"
+ android:layout_height="wrap_content"
android:textSize="20sp" /&gt;
</pre>
diff --git a/docs/html-intl/intl/zh-cn/training/multiscreen/screensizes.jd b/docs/html-intl/intl/zh-cn/training/multiscreen/screensizes.jd
index 904d09790a21..2d47d1d33cf9 100644
--- a/docs/html-intl/intl/zh-cn/training/multiscreen/screensizes.jd
+++ b/docs/html-intl/intl/zh-cn/training/multiscreen/screensizes.jd
@@ -10,8 +10,8 @@ next.link=screendensities.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
+<div id="tb-wrapper">
+<div id="tb">
<h2>本教程将指导您</h2>
<ol>
@@ -30,26 +30,26 @@ next.link=screendensities.html
<li><a href="{@docRoot}guide/practices/screens_support.html">支æŒå¤šç§å±å¹•</a></li>
</ul>
-<h2>试试看</h2>
-
-<div class="download-box">
+<h2>试试看</h2>
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">下载示例应用</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
<p>æ­¤æ•™ç¨‹å°†å‘æ‚¨ä»‹ç»å¦‚何通过以下方法支æŒå„ç§å°ºå¯¸çš„å±å¹•:</p>
-<ul>
- <li>ç¡®ä¿ç³»ç»Ÿå¯ä»¥é€‚当地调整您布局的尺寸以便适应å±å¹•</li>
- <li>æ ¹æ®å±å¹•é…ç½®æä¾›åˆé€‚的用户界é¢å¸ƒå±€</li>
+<ul>
+ <li>ç¡®ä¿ç³»ç»Ÿå¯ä»¥é€‚当地调整您布局的尺寸以便适应å±å¹•</li>
+ <li>æ ¹æ®å±å¹•é…ç½®æä¾›åˆé€‚的用户界é¢å¸ƒå±€</li>
<li>ç¡®ä¿æ­£ç¡®çš„布局应用到了正确的å±å¹•上</li>
- <li>æä¾›å¯æ­£ç¡®ç¼©æ”¾çš„ä½å›¾</li>
-</ul>
+ <li>æä¾›å¯æ­£ç¡®ç¼©æ”¾çš„ä½å›¾</li>
+</ul>
-<h2 id="TaskUseWrapMatchPar">使用“wrap_contentâ€å’Œâ€œmatch_parentâ€</h2>
+<h2 id="TaskUseWrapMatchPar">使用“wrap_contentâ€å’Œâ€œmatch_parentâ€</h2>
<p>è¦ç¡®ä¿å¸ƒå±€çš„çµæ´»æ€§å¹¶é€‚应å„ç§å°ºå¯¸çš„å±å¹•,您应使用 <code>"wrap_content"</code> å’Œ <code>"match_parent"</code> 控制æŸäº›è§†å›¾ç»„件的宽度和高度。如果您使用 <code>"wrap_content"</code>ï¼Œç³»ç»Ÿå°±ä¼šå°†è§†å›¾çš„å®½åº¦æˆ–é«˜åº¦è®¾ç½®æˆæ‰€éœ€çš„æœ€å°å°ºå¯¸ä»¥é€‚应视图中的内容,而 <code>"match_parent"</code>(在低于 API 级别 8 的级别中称为 <code>"fill_parent"</code>)则会展开组件以匹é…其父视图的尺寸。</p>
@@ -65,7 +65,7 @@ next.link=screendensities.html
<p class="img-caption"><strong>图 1</strong>ã€‚çºµå‘æ¨¡å¼ï¼ˆå·¦ï¼‰å’Œæ¨ªå‘模å¼ï¼ˆå³ï¼‰ä¸‹çš„æ–°é—»é˜…读器示例应用。</p>
-<h2 id="TaskUseRelativeLayout">使用相对布局</h2>
+<h2 id="TaskUseRelativeLayout">使用相对布局</h2>
<p>您å¯ä»¥ä½¿ç”¨ <PH>{@link android.widget.LinearLayout}</PH> çš„åµŒå¥—å®žä¾‹å¹¶ç»“åˆ <code>"wrap_content"</code> å’Œ <code>"match_parent"</code> å°ºå¯¸ï¼Œä»¥ä¾¿æž„å»ºç›¸å½“å¤æ‚的布局。ä¸è¿‡ï¼Œæ‚¨æ— æ³•通过 <PH>{@link android.widget.LinearLayout}</PH> 精确控制å­è§†å›¾çš„特殊关系;系统会将 <PH>{@link android.widget.LinearLayout}</PH> 中的视图直接并排列出。如果您需è¦å°†å­è§†å›¾æŽ’列出å„ç§æ•ˆæžœè€Œä¸æ˜¯ä¸€æ¡ç›´çº¿ï¼Œé€šå¸¸æ›´åˆé€‚的解决方法是使用 <PH>{@link android.widget.RelativeLayout}</PH>,这样您就å¯ä»¥æ ¹æ®å„组件之间的特殊关系指定布局了。例如,您å¯ä»¥å°†æŸä¸ªå­è§†å›¾å¯¹é½åˆ°å±å¹•å·¦ä¾§ï¼ŒåŒæ—¶å°†å¦ä¸€ä¸ªè§†å›¾å¯¹é½åˆ°å±å¹•å³ä¾§ã€‚</p>
@@ -115,8 +115,8 @@ next.link=screendensities.html
<p>请注æ„,虽然组件的尺寸有所å˜åŒ–,但它们的空间关系ä»ä¼šä¿ç•™ï¼Œå…·ä½“ç”± <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH> 指定。</p>
-
-<h2 id="TaskUseSizeQuali">使用尺寸é™å®šç¬¦</h2>
+
+<h2 id="TaskUseSizeQuali">使用尺寸é™å®šç¬¦</h2>
<p>ä¸Šæ–‡æ‰€è¿°çš„çµæ´»å¸ƒå±€æˆ–相对布局å¯ä»¥ä¸ºæ‚¨å¸¦æ¥çš„ä¼˜åŠ¿å°±åªæœ‰è¿™ä¹ˆå¤šäº†ã€‚虽然这些布局å¯ä»¥æ‹‰ä¼¸ç»„件内外的空间以适应å„ç§å±å¹•,但它们ä¸ä¸€å®šèƒ½ä¸ºæ¯ç§å±å¹•都æä¾›æœ€ä½³çš„用户体验。因此,您的应用ä¸ä»…åº”å®žæ–½çµæ´»å¸ƒå±€ï¼Œè¿˜åº”针对å„ç§å±å¹•é…ç½®æä¾›ä¸€äº›å¤‡ç”¨å¸ƒå±€ã€‚è¦åšåˆ°è¿™ä¸€ç‚¹ï¼Œæ‚¨å¯ä»¥ä½¿ç”¨<a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">é…ç½®é™å®šç¬¦</a>,这样就å¯ä»¥åœ¨è¿è¡Œæ—¶æ ¹æ®å½“å‰çš„设备é…置自动选择åˆé€‚的资æºäº†ï¼ˆä¾‹å¦‚æ ¹æ®å„ç§å±å¹•尺寸选择ä¸åŒçš„布局)。</p>
@@ -158,7 +158,7 @@ next.link=screendensities.html
<p>但 Android 版本低于 3.2 çš„è®¾å¤‡ä¸æ”¯æŒæ­¤æŠ€æœ¯ï¼ŒåŽŸå› æ˜¯è¿™äº›è®¾å¤‡æ— æ³•å°† <code>sw600dp</code> 识别为尺寸é™å®šç¬¦ï¼Œå› æ­¤æ‚¨ä»éœ€ä½¿ç”¨ <code>large</code> é™å®šç¬¦ã€‚这样一æ¥ï¼Œå°±ä¼šæœ‰ä¸€ä¸ªå称为 <code>res/layout-large/main.xml</code> 的文件(与 <code>res/layout-sw600dp/main.xml</code> 一样)。您将在下一教程中了解到é¿å…此类布局文件出现é‡å¤çš„æŠ€æœ¯ã€‚</p>
-<h2 id="TaskUseAliasFilters">使用布局别å</h2>
+<h2 id="TaskUseAliasFilters">使用布局别å</h2>
<p>最å°å®½åº¦é™å®šç¬¦ä»…适用于 Android 3.2 åŠæ›´é«˜ç‰ˆæœ¬ã€‚因此,您ä»éœ€ä½¿ç”¨ä¸Žè¾ƒä½Žç‰ˆæœ¬å…¼å®¹çš„æ¦‚括尺寸范围(å°ã€æ­£å¸¸ã€å¤§å’Œç‰¹å¤§ï¼‰ã€‚例如,如果您è¦å°†ç”¨æˆ·ç•Œé¢è®¾è®¡æˆåœ¨æ‰‹æœºä¸Šæ˜¾ç¤ºå•颿¿ï¼Œä½†åœ¨ 7 英寸平æ¿ç”µè„‘ã€ç”µè§†å’Œå…¶ä»–è¾ƒå¤§çš„è®¾å¤‡ä¸Šæ˜¾ç¤ºå¤šé¢æ¿ï¼Œè¯·æä¾›ä»¥ä¸‹æ–‡ä»¶ï¼š</p>
@@ -198,11 +198,11 @@ next.link=screendensities.html
</li>
</ul></p>
-<p>åŽä¸¤ä¸ªæ–‡ä»¶çš„内容相åŒï¼Œä½†å®ƒä»¬å¹¶æœªå®žé™…å®šä¹‰å¸ƒå±€ã€‚å®ƒä»¬åªæ˜¯å°† <PH>{@code main}</PH> 设置æˆäº† <PH>{@code main_twopanes}</PH> 的别åã€‚ç”±äºŽè¿™äº›æ–‡ä»¶åŒ…å« <code>large</code> å’Œ <code>sw600dp</code> 选择器,因此无论 Android 版本如何,系统都会将这些文件应用到平æ¿ç”µè„‘和电视上(版本低于 3.2 的平æ¿ç”µè„‘和电视会匹é…
+<p>åŽä¸¤ä¸ªæ–‡ä»¶çš„内容相åŒï¼Œä½†å®ƒä»¬å¹¶æœªå®žé™…å®šä¹‰å¸ƒå±€ã€‚å®ƒä»¬åªæ˜¯å°† <PH>{@code main}</PH> 设置æˆäº† <PH>{@code main_twopanes}</PH> 的别åã€‚ç”±äºŽè¿™äº›æ–‡ä»¶åŒ…å« <code>large</code> å’Œ <code>sw600dp</code> 选择器,因此无论 Android 版本如何,系统都会将这些文件应用到平æ¿ç”µè„‘和电视上(版本低于 3.2 的平æ¿ç”µè„‘和电视会匹é…
<PH>{@code large}</PH>,版本低于 3.2 的平æ¿ç”µè„‘å’Œç”µè§†åˆ™ä¼šåŒ¹é… <code>sw600dp</code>)。</p>
-<h2 id="TaskUseOriQuali">使用å±å¹•æ–¹å‘é™å®šç¬¦</h2>
+<h2 id="TaskUseOriQuali">使用å±å¹•æ–¹å‘é™å®šç¬¦</h2>
<p>æŸäº›å¸ƒå±€ä¼šåŒæ—¶æ”¯æŒæ¨ªå‘模å¼å’Œçºµå‘模å¼ï¼Œä½†æ‚¨å¯ä»¥é€šè¿‡è°ƒæ•´ä¼˜åŒ–其中大部分布局的效果。在新闻阅读器示例应用中,æ¯ç§å±å¹•尺寸和å±å¹•æ–¹å‘下的布局行为方å¼å¦‚下所示:</p>
diff --git a/docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd b/docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd
index 6b3637bd3c6b..8952a359954d 100644
--- a/docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd
+++ b/docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd
@@ -428,7 +428,7 @@ sdk.platform.apiLevel=21
<p>ç•¶ç³»çµ±åµæ¸¬åˆ°é©ç”¨ç¶²è·¯æ™‚,就會自動連線並å«ç”¨ {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()} 回呼。您å¯ä»¥ä½¿ç”¨å›žå‘¼çš„ {@link android.net.Network} 物件,以å–得網路的é¡å¤–資訊,或是將æµé‡å°Žå‘所é¸çš„網路。</p>
<h3 id="BluetoothBroadcasting">è—牙低功耗技術</h3>
-<p>Android 4.3 å¹³å°é¦–度導入了<a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">è—牙低功耗技術</a> (<em>Bluetooth LE</em>) 支æ´åŠŸèƒ½ï¼Œè®“è£ç½®ä»¥ä¸»æ©Ÿè§’色建立連線。在 Android 5.0 中,Android è£ç½®å‰‡å¯ä»¥æ‰®æ¼” Bluetooth LE「周邊è£ç½®ã€<em></em>的角色。應用程å¼å¯ä»¥é€éŽé€™é …功能,輕鬆讓附近的è£ç½®åµæ¸¬åˆ°ã€‚舉例來說,您å¯ä»¥æ‰“造應用程å¼ï¼Œè®“è£ç½®åŒ–身為計步器或å¥åº·ç›£æ¸¬å™¨ï¼Œä¸¦å°‡è³‡æ–™å‚³é€çµ¦å¦ä¸€å° Bluetooth LE è£ç½®ã€‚</p>
+<p>Android 4.3 å¹³å°é¦–度導入了<a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">è—牙低功耗技術</a> (<em>Bluetooth LE</em>) 支æ´åŠŸèƒ½ï¼Œè®“è£ç½®ä»¥ä¸»æ©Ÿè§’色建立連線。在 Android 5.0 中,Android è£ç½®å‰‡å¯ä»¥æ‰®æ¼” Bluetooth LE「周邊è£ç½®ã€<em></em>的角色。應用程å¼å¯ä»¥é€éŽé€™é …功能,輕鬆讓附近的è£ç½®åµæ¸¬åˆ°ã€‚舉例來說,您å¯ä»¥æ‰“造應用程å¼ï¼Œè®“è£ç½®åŒ–身為計步器或å¥åº·ç›£æ¸¬å™¨ï¼Œä¸¦å°‡è³‡æ–™å‚³é€çµ¦å¦ä¸€å° Bluetooth LE è£ç½®ã€‚</p>
<p>全新的 {@link android.bluetooth.le} API å¯è®“æ‚¨çš„æ‡‰ç”¨ç¨‹å¼æ’­é€å»£å‘Šã€æŽƒæå›žæ‡‰ï¼Œä»¥åŠèˆ‡é™„è¿‘çš„ Bluetooth LE è£ç½®å»ºç«‹é€£ç·šã€‚如è¦ä½¿ç”¨å…¨æ–°çš„廣告和掃æåŠŸèƒ½ï¼Œè«‹åœ¨æ‚¨çš„è³‡è¨Šæ¸…å–®ä¸­æ–°å¢ž {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} 權é™ã€‚當使用者從 Play å•†åº—æ›´æ–°æˆ–ä¸‹è¼‰æ‚¨çš„æ‡‰ç”¨ç¨‹å¼æ™‚,會看到以下的權é™è¦æ±‚æç¤ºï¼šã€Œè—牙連線資訊:å…è¨±æ‡‰ç”¨ç¨‹å¼æŽ§åˆ¶è—牙功能,包括å°é™„è¿‘çš„è—牙è£ç½®æ’­é€è³‡è¨Šï¼Œæˆ–是從附近的è—牙è£ç½®å–得資訊。ã€</p>
<p>如è¦é–‹å§‹ Bluetooth LE 廣告功能,以便其他è£ç½®ç™¼æŽ˜æ‚¨çš„æ‡‰ç”¨ç¨‹å¼ï¼Œè«‹å‘¼å« {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} ä¸¦å‚³éž {@link android.bluetooth.le.AdvertiseCallback} 類別實作。回呼物件會收到廣告作業æˆåŠŸæˆ–å¤±æ•—çš„å ±å‘Šã€‚</p>
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/about.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/about.jd
index f63501f5a204..5e0eec3957c5 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/about.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/about.jd
@@ -6,7 +6,7 @@ page.image=/distribute/images/about-play.jpg
@jd:body
-<div id="qv-wrapper">
+<div id="qv-wrapper">
<div id="qv">
<h2>關於 Google Play</h2>
<ol style="list-style-type:none;">
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/auto.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/auto.jd
index 8fe944d9a7a3..88236c195044 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/auto.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/auto.jd
@@ -160,4 +160,4 @@ page.metaDescription=將您的應用程å¼èˆ‡å…§å®¹æ•£ä½ˆè‡³ Android Auto。
data-query="collection:autolanding"
data-cardSizes="9x6, 6x3x2"
data-maxResults="6">
- </div>
+ </div>
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/developer-console.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/developer-console.jd
index a0093bb729af..b14095b9274f 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/developer-console.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/developer-console.jd
@@ -5,7 +5,7 @@ Xnonavpage=true
@jd:body
-<div id="qv-wrapper">
+<div id="qv-wrapper">
<div id="qv">
<h2>發行功能</h2>
<ol>
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/families/about.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/families/about.jd
index b362ae9bd33e..38c2ac1370f2 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/families/about.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/families/about.jd
@@ -36,4 +36,4 @@ page.tags="families"
<div class="paging-links" style="padding-top:.75em;">
<a href="{@docRoot}distribute/googleplay/families/start.html" class="next-class-link">å¾ŒçºŒå…§å®¹ï¼šé¸æ“‡</a>
-</div>
+</div>
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/families/faq.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/families/faq.jd
index 696478900894..057e58373e67 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/families/faq.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@ page.metaDescription=有關 Designed for Families çš„å•題與回答
font-weight:bold;
}
</style>
-
+
<div id="qv-wrapper">
<ol id="qv">
<h2>本文件內容</h2>
@@ -106,7 +106,7 @@ page.metaDescription=有關 Designed for Families çš„å•題與回答
</dt>
<dd>
- åœ¨æ‚¨é¸æ“‡åŠ å…¥ Designed for Families 後,Google Play 會檢閱您的應用程å¼ï¼Œä»¥ç¢ºèªå…¶æ˜¯å¦é©åˆå®¶åº­ä½¿ç”¨ã€‚若您的應用程å¼ç¬¦åˆæ‰€æœ‰è¨ˆåŠƒéœ€æ±‚ï¼Œé è¨ˆç™¼è¡Œæ™‚間䏿œƒé•·æ–¼ä¸€èˆ¬ç™¼è¡Œæ™‚間;但是,若在 Designed for Families 檢閱期間拒絕應用程å¼ï¼Œå‰‡è©²æ‡‰ç”¨ç¨‹å¼çš„發行å¯èƒ½æœƒå‡ºç¾å»¶é²ã€‚
+ åœ¨æ‚¨é¸æ“‡åŠ å…¥ Designed for Families 後,Google Play 會檢閱您的應用程å¼ï¼Œä»¥ç¢ºèªå…¶æ˜¯å¦é©åˆå®¶åº­ä½¿ç”¨ã€‚若您的應用程å¼ç¬¦åˆæ‰€æœ‰è¨ˆåŠƒéœ€æ±‚ï¼Œé è¨ˆç™¼è¡Œæ™‚間䏿œƒé•·æ–¼ä¸€èˆ¬ç™¼è¡Œæ™‚間;但是,若在 Designed for Families 檢閱期間拒絕應用程å¼ï¼Œå‰‡è©²æ‡‰ç”¨ç¨‹å¼çš„發行å¯èƒ½æœƒå‡ºç¾å»¶é²ã€‚
</dd>
<dt>
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/families/start.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/families/start.jd
index bf7a7259739f..ca44a282178a 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/families/start.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/families/start.jd
@@ -51,7 +51,7 @@ page.metaDescription=åªéœ€å¹¾å€‹ç°¡æ˜“步驟å³å¯åŠ å…¥ Designed for Familiesã
</p>
<p class="note">
- <strong>注æ„:</strong>Designed for Families 計劃中已發行的應用程å¼ä¹Ÿå¯ä¾› Google Play 上的所有使用者使用。
+ <strong>注æ„:</strong>Designed for Families 計劃中已發行的應用程å¼ä¹Ÿå¯ä¾› Google Play 上的所有使用者使用。
</p>
<p>
@@ -67,4 +67,4 @@ page.metaDescription=åªéœ€å¹¾å€‹ç°¡æ˜“步驟å³å¯åŠ å…¥ Designed for Familiesã
<div class="paging-links" style="padding-top:.75em;">
<a href="{@docRoot}distribute/googleplay/families/faq.html" class="next-class-link">後續內容:常見å•題</a>
-</div> \ No newline at end of file
+</div> \ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/guide.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/guide.jd
index 0165279f6898..e70eaa3e25c8 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/guide.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/guide.jd
@@ -54,4 +54,4 @@ page.image=distribute/images/play_dev_guide.png
data-query="collection:play_dev_guide"
data-cardSizes="9x6"
data-maxResults="1">
- </div> \ No newline at end of file
+ </div> \ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/auto.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/auto.jd
index bf7b702e6852..d724869350a6 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/auto.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/auto.jd
@@ -431,4 +431,4 @@ data-sortorder="-timestamp" data-cardsizes="9x3" data-maxresults="6">
<p class="caution">
<strong>é‡è¦èªªæ˜Žï¼š</strong>由於存在這一é™åˆ¶ï¼Œå› æ­¤æ‚¨ä¸æ‡‰å°‡ç”Ÿç”¢ APK 用於 Auto 支æ´åŽŸåž‹è¨­è¨ˆã€‚
-</p> \ No newline at end of file
+</p> \ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/core.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/core.jd
index feabc2002fda..3435ec2a4e19 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/core.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/core.jd
@@ -13,7 +13,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="#listing">Google Play</a></li>
</ol>
-
+
<h2>測試</h2>
<ol>
<li><a href="#test-environment">設定測試環境</a></li>
@@ -25,7 +25,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="{@docRoot}distribute/essentials/quality/tablets.html">å¹³æ¿é›»è…¦æ‡‰ç”¨ç¨‹å¼å“質</a></li>
<li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">最佳化您的應用程å¼</a></li>
</ol>
-
+
</div>
</div>
@@ -70,7 +70,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<th style="width:54px;">
ID
</th>
-
+
<th>
æè¿°
@@ -1011,4 +1011,4 @@ data-cardsizes="6x3,6x3,6x3,6x3,6x3,6x3" data-maxresults="6">
<p>
請確ä¿ä½¿ç”¨{@link android.os.StrictMode.ThreadPolicy.Builder#penaltyFlashScreen() penaltyFlashScreen()}é‡å° <code>ThreadPolicy</code> 啟用政策é•犯的<strong>視覺通知</strong>。
-</p> \ No newline at end of file
+</p> \ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/tablets.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/tablets.jd
index 3c16f9daa50b..d584e5375095 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/tablets.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/tablets.jd
@@ -46,7 +46,7 @@ Xnonavpage=true
<div class="headerLine"><h2 id="core-app-quality">1.測試基本平æ¿é›»è…¦æ‡‰ç”¨ç¨‹å¼å“質</h2></div>
-<p>æä¾›å¹³æ¿é›»è…¦æ‡‰ç”¨ç¨‹å¼çµ•佳體驗的第一步,是確ä¿å…¶ç¬¦åˆæ‡‰ç”¨ç¨‹å¼æ‰€é‡å°æ‰€æœ‰è£ç½®åŠå°ºå¯¸è¦æ ¼çš„<em>核心應用程å¼å“質準則</em>。如需完備資訊,請åƒé–±<a href="{@docRoot}distribute/essentials/quality/core.html">核心應用程å¼å“質指導方é‡</a>。
+<p>æä¾›å¹³æ¿é›»è…¦æ‡‰ç”¨ç¨‹å¼çµ•佳體驗的第一步,是確ä¿å…¶ç¬¦åˆæ‡‰ç”¨ç¨‹å¼æ‰€é‡å°æ‰€æœ‰è£ç½®åŠå°ºå¯¸è¦æ ¼çš„<em>核心應用程å¼å“質準則</em>。如需完備資訊,請åƒé–±<a href="{@docRoot}distribute/essentials/quality/core.html">核心應用程å¼å“質指導方é‡</a>。
</p>
<p>
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/wear.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/wear.jd
index 47a2d916a604..6dc85e856b5d 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/wear.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/wear.jd
@@ -395,4 +395,4 @@ data-sortorder="-timestamp" data-cardsizes="6x2" data-maxresults="6">
</p>
<p>
是。上述需求僅判斷在 Google Play 上是å¦å°‡æ‚¨çš„æ‡‰ç”¨ç¨‹å¼è¦–為 Android Wear 應用程å¼ï¼Œä»¥åŠè©²æ‡‰ç”¨ç¨‹å¼æ˜¯å¦å¯ä¾› Android Wear ä½¿ç”¨è€…æ›´è¼•é¬†åœ°æŽ¢å°‹ã€‚è‹¥æœªæŽ¥å—æ‚¨çš„æ‡‰ç”¨ç¨‹å¼ç‚º Wear 應用程å¼ï¼Œä»æœƒå‘å…¶ä»–è£ç½®é¡žåž‹ (例如手機或平æ¿é›»è…¦) æä¾›è©²æ‡‰ç”¨ç¨‹å¼ï¼Œä¸¦ä¸”仿œƒå®‰è£åœ¨ç©¿æˆ´å¼è£ç½®ä¸Šã€‚
-</p> \ No newline at end of file
+</p> \ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/start.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/start.jd
index 3364e49bbdca..8bff67d02eb7 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/start.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/start.jd
@@ -134,4 +134,4 @@ href="https://support.google.com/googleplay/android-developer/bin/answer.py?hl=e
data-query="collection:distribute/googleplay/gettingstarted"
data-sortOrder="-timestamp"
data-cardSizes="9x3"
- data-maxResults="6"></div> \ No newline at end of file
+ data-maxResults="6"></div> \ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/tv.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/tv.jd
index c4f7a7cd089c..aa2096ad4cdd 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/tv.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/tv.jd
@@ -173,7 +173,7 @@ page.metaDescription=將您的應用程å¼ã€éŠæˆ²èˆ‡å…§å®¹æ•£ä½ˆè‡³ Android é›
<h3 id="track_review">5.追蹤您的檢閱與核准</h3>
<p>
- 若您的應用程å¼ç¬¦åˆ Android 電視的技術與å“質準則 (如上所述)ï¼Œå‰‡æœƒå‘ Android 電視的使用者æä¾›æ‚¨çš„æ‡‰ç”¨ç¨‹å¼ã€‚若您的應用程å¼ä¸ç¬¦åˆè©²æº–則,您將收到<strong>傳é€è‡³æ‚¨é–‹ç™¼äººå“¡å¸³æˆ¶åœ°å€çš„通知電å­éƒµä»¶</strong>,內å«éœ€è¦ä¿®æ­£çš„領域的摘è¦ã€‚若您已進行所需調整,å¯ä»¥å°‡æ–°ç‰ˆæœ¬çš„æ‡‰ç”¨ç¨‹å¼ä¸Šå‚³è‡³ Developer Console。
+ 若您的應用程å¼ç¬¦åˆ Android 電視的技術與å“質準則 (如上所述)ï¼Œå‰‡æœƒå‘ Android 電視的使用者æä¾›æ‚¨çš„æ‡‰ç”¨ç¨‹å¼ã€‚若您的應用程å¼ä¸ç¬¦åˆè©²æº–則,您將收到<strong>傳é€è‡³æ‚¨é–‹ç™¼äººå“¡å¸³æˆ¶åœ°å€çš„通知電å­éƒµä»¶</strong>,內å«éœ€è¦ä¿®æ­£çš„領域的摘è¦ã€‚若您已進行所需調整,å¯ä»¥å°‡æ–°ç‰ˆæœ¬çš„æ‡‰ç”¨ç¨‹å¼ä¸Šå‚³è‡³ Developer Console。
</p>
<p>
@@ -190,7 +190,7 @@ page.metaDescription=將您的應用程å¼ã€éŠæˆ²èˆ‡å…§å®¹æ•£ä½ˆè‡³ Android é›
</li>
<li>
- <em>已核准</em> - 已檢閱並核准您的應用程å¼ã€‚æœƒç›´æŽ¥å‘ Android 電視使用者æä¾›è©²æ‡‰ç”¨ç¨‹å¼ã€‚
+ <em>已核准</em> - 已檢閱並核准您的應用程å¼ã€‚æœƒç›´æŽ¥å‘ Android 電視使用者æä¾›è©²æ‡‰ç”¨ç¨‹å¼ã€‚
</li>
<li>
@@ -207,4 +207,4 @@ page.metaDescription=將您的應用程å¼ã€éŠæˆ²èˆ‡å…§å®¹æ•£ä½ˆè‡³ Android é›
data-query="collection:tvlanding"
data-cardSizes="9x6, 6x3x2"
data-maxResults="6">
- </div> \ No newline at end of file
+ </div> \ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/wear.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/wear.jd
index 19a48f56a5b5..f4aca5cca51a 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/wear.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/wear.jd
@@ -196,4 +196,4 @@ page.metaDescription=將您的應用程å¼ã€éŠæˆ²èˆ‡å…§å®¹æ•£ä½ˆè‡³ Android We
data-query="collection:wearlanding"
data-cardSizes="6x2"
data-maxResults="3">
- </div> \ No newline at end of file
+ </div> \ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/tools/launch-checklist.jd b/docs/html-intl/intl/zh-tw/distribute/tools/launch-checklist.jd
index 6e974174849b..167c4f10d5ac 100644
--- a/docs/html-intl/intl/zh-tw/distribute/tools/launch-checklist.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/tools/launch-checklist.jd
@@ -789,4 +789,4 @@ data-maxresults="6">
data-query="collection:distribute/toolsreference/launchchecklist/afterlaunch"
data-sortOrder="-timestamp"
data-cardSizes="9x3,9x3,9x3,9x3,9x3,9x3"
- data-maxResults="6"></div> \ No newline at end of file
+ data-maxResults="6"></div> \ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/tools/localization-checklist.jd b/docs/html-intl/intl/zh-tw/distribute/tools/localization-checklist.jd
index 1b95d0b3458d..c34fcee498bc 100644
--- a/docs/html-intl/intl/zh-tw/distribute/tools/localization-checklist.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/tools/localization-checklist.jd
@@ -713,4 +713,4 @@ data-maxresults="6">
data-query="collection:distribute/toolsreference/localizationchecklist/supportlaunch"
data-sortOrder="-timestamp"
data-cardSizes="9x3,9x3,6x3,9x3,9x3,9x3"
- data-maxResults="6"></div> \ No newline at end of file
+ data-maxResults="6"></div> \ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/google/play/filters.jd b/docs/html-intl/intl/zh-tw/google/play/filters.jd
index e96b9ddcacd8..eec87ac75156 100644
--- a/docs/html-intl/intl/zh-tw/google/play/filters.jd
+++ b/docs/html-intl/intl/zh-tw/google/play/filters.jd
@@ -263,4 +263,4 @@ href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-featur
<p class="caution"><strong>注æ„:</strong>é‡å°åŒä¸€æ‡‰ç”¨ç¨‹å¼ç™¼è¡Œå¤šå€‹ APK 是進階功能,<strong>å¤šæ•¸æ‡‰ç”¨ç¨‹å¼æ‡‰åƒ…發行為諸多è£ç½®çµ„æ…‹æä¾›æ”¯æ´çš„單一 APK</strong>。發行多個 APK éœ€è¦æ‚¨éµå¾ªç¯©é¸å™¨ä¸­çš„特定è¦å‰‡ï¼Œä¸¦æ ¼å¤–æ³¨æ„æ¯å€‹ APK çš„ç‰ˆæœ¬ä»£ç¢¼ï¼Œä»¥ç¢ºä¿æ¯å€‹çµ„態使用正確的更新路徑。</p>
-<p>è‹¥æ‚¨éœ€è¦æœ‰é—œå¦‚何在 Google Play 上發行多個 APK 的詳細資訊,請åƒé–±<a href="{@docRoot}google/play/publishing/multiple-apks.html">多 APK 支æ´</a>。</p> \ No newline at end of file
+<p>è‹¥æ‚¨éœ€è¦æœ‰é—œå¦‚何在 Google Play 上發行多個 APK 的詳細資訊,請åƒé–±<a href="{@docRoot}google/play/publishing/multiple-apks.html">多 APK 支æ´</a>。</p> \ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/guide/components/bound-services.jd b/docs/html-intl/intl/zh-tw/guide/components/bound-services.jd
index da47634b894f..e26e993fd672 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/bound-services.jd
@@ -303,7 +303,7 @@ public class BindingActivity extends Activity {
}
</pre>
-<p>上述範例顯示:用戶端如何使用
+<p>上述範例顯示:用戶端如何使用
{@link android.content.ServiceConnection} 的實作和 {@link
android.content.ServiceConnection#onServiceConnected onServiceConnected()} 回呼,繫çµè‡³æœå‹™ã€‚下一節æä¾›é—œæ–¼ç¹«çµè‡³æœå‹™è™•ç†ç¨‹åºçš„詳細資訊。
</p>
@@ -334,7 +334,7 @@ android.os.Messenger} 讓æœå‹™ä¸€æ¬¡è™•ç†ä¸€å€‹å‘¼å«ã€‚如果您的æœå‹™å¿…é
</div>
</div>
-<p>如果æœå‹™è¦å’Œé ç«¯è™•ç†ç¨‹åºæºé€šï¼Œå‰‡å¯ä»¥ä½¿ç”¨
+<p>如果æœå‹™è¦å’Œé ç«¯è™•ç†ç¨‹åºæºé€šï¼Œå‰‡å¯ä»¥ä½¿ç”¨
{@link android.os.Messenger} 為您的æœå‹™æä¾›ä»‹é¢ã€‚此技術讓您ä¸éœ€è¦ä½¿ç”¨ AIDL,就å¯ä»¥åŸ·è¡Œè™•ç†ç¨‹åºé–“通訊 (IPC)。
</p>
@@ -636,7 +636,7 @@ android.content.Context#stopService stopService()} åŠ ä»¥åœæ­¢ï¼Œå¦å‰‡æœå‹™æœ
</p>
-<p>此外,如果您的æœå‹™å·²å•Ÿå‹•並且接å—繫çµï¼Œç•¶ç³»çµ±å‘¼å«æ‚¨çš„ {@link android.app.Service#onUnbind onUnbind()} 方法時,å¯ä»¥é¸æ“‡å‚³å›ž
+<p>此外,如果您的æœå‹™å·²å•Ÿå‹•並且接å—繫çµï¼Œç•¶ç³»çµ±å‘¼å«æ‚¨çš„ {@link android.app.Service#onUnbind onUnbind()} 方法時,å¯ä»¥é¸æ“‡å‚³å›ž
{@code true} (如果您希望用戶端下次繫çµè‡³æœå‹™æ™‚,å¯ä»¥æŽ¥æ”¶ {@link android.app.Service#onRebind
onRebind()} 呼å«ï¼Œè€Œä¸æ˜¯æŽ¥æ”¶ {@link
android.app.Service#onBind onBind()} 的呼å«)。{@link android.app.Service#onRebind
diff --git a/docs/html-intl/intl/zh-tw/guide/components/fragments.jd b/docs/html-intl/intl/zh-tw/guide/components/fragments.jd
index e54769b0c88b..dfef8f1ffaa9 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/fragments.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/fragments.jd
@@ -36,7 +36,7 @@ parent.link=activities.html
<li>{@link android.app.FragmentManager}</li>
<li>{@link android.app.FragmentTransaction}</li>
</ol>
-
+
<h2>å¦è«‹åƒé–±</h2>
<ol>
<li><a href="{@docRoot}training/basics/fragments/index.html">使用片段建置動態 UI</a></li>
@@ -46,7 +46,7 @@ parent.link=activities.html
</div>
</div>
-<p>{@link android.app.Fragment} 代表一種行為或
+<p>{@link android.app.Fragment} 代表一種行為或
{@link android.app.Activity} 中的一部分使用者介é¢ã€‚您å¯ä»¥åˆä½µå–®ä¸€ Activity 中的多個片段,藉此建置
多窗格 UI 以åŠåœ¨å¤šå€‹ Activity 中é‡è¤‡ä½¿ç”¨ç‰‡æ®µã€‚您å¯ä»¥å°‡ç‰‡æ®µæƒ³æˆæ˜¯ Activity çš„æ¨¡çµ„åŒ–å€æ®µï¼Œç‰‡æ®µæ“æœ‰è‡ªå·±çš„ç”Ÿå‘½é€±æœŸã€æŽ¥æ”¶è‡ªå·±çš„è¼¸å…¥äº‹ä»¶ï¼Œè€Œä¸”æ‚¨å¯ä»¥åœ¨ Activity 執行時新增或移除片段 (æœ‰é»žåƒæ˜¯æ‚¨å¯ä»¥åœ¨ä¸åŒ Activity 中é‡è¤‡ä½¿ç”¨çš„ã€Œå­ Activityã€)。
@@ -204,11 +204,11 @@ android.app.ListFragment} çš„å­é¡žåˆ¥ï¼Œå‰‡å¯¦ä½œå®Œç•¢å¾Œç³»çµ±é è¨­æœƒå‚³å›ž
{@link android.widget.ListView},因此您ä¸å¿…加以實作。</p>
<p>如è¦å¾ž {@link
-android.app.Fragment#onCreateView onCreateView()} 傳回版é¢é…置,您å¯ä»¥å¾ž XML 中定義的<a href="{@docRoot}guide/topics/resources/layout-resource.html">l版é¢é…置資æº</a>擴大它。為å”助您完æˆé€™é …作業,{@link android.app.Fragment#onCreateView onCreateView()} æä¾›äº†
+android.app.Fragment#onCreateView onCreateView()} 傳回版é¢é…置,您å¯ä»¥å¾ž XML 中定義的<a href="{@docRoot}guide/topics/resources/layout-resource.html">l版é¢é…置資æº</a>擴大它。為å”助您完æˆé€™é …作業,{@link android.app.Fragment#onCreateView onCreateView()} æä¾›äº†
{@link android.view.LayoutInflater} 物件。
</p>
-<p>例如,以下是 {@link android.app.Fragment} çš„å­é¡žåˆ¥ï¼Œå¯å¾ž
+<p>例如,以下是 {@link android.app.Fragment} çš„å­é¡žåˆ¥ï¼Œå¯å¾ž
{@code example_fragment.xml} 檔案載入版é¢é…置:</p>
<pre>
@@ -378,7 +378,7 @@ FragmentRetainInstance.java} 範例 (å¯é€éŽ Android SDK Manager å­˜å–)<code>
<li>使用 {@link
android.app.FragmentManager#findFragmentById findFragmentById()} (é‡å°åœ¨ Activity 版é¢é…置中æä¾› UI 的片段) 或 {@link android.app.FragmentManager#findFragmentByTag
findFragmentByTag()} (é‡å°æœªæä¾› UI 的片段) å–å¾— Activity ä¸­çš„ç¾æœ‰ç‰‡æ®µã€‚
-</li>
+</li>
<li>使用 {@link
android.app.FragmentManager#popBackStack()} (模擬使用者的「返回ã€<em></em>命令) 將片段從返回堆疊中推出。</li>
<li>使用 {@link
@@ -563,7 +563,7 @@ public static class FragmentA extends ListFragment {
</pre>
<p>如果 Activity 並未實作介é¢ï¼Œé‚£éº¼ç‰‡æ®µæœƒæ“²å›ž
-{@link java.lang.ClassCastException}。æˆåŠŸæ“²å›žæ™‚ï¼Œ{@code mListener} æˆå“¡æœƒä¿ç•™ Activity 所實作
+{@link java.lang.ClassCastException}。æˆåŠŸæ“²å›žæ™‚ï¼Œ{@code mListener} æˆå“¡æœƒä¿ç•™ Activity 所實作
{@code OnArticleSelectedListener} çš„åƒç…§è³‡æ–™ï¼Œä»¥ä¾¿ç‰‡æ®µ A å‘¼å« {@code OnArticleSelectedListener} 介é¢å®šç¾©çš„æ–¹æ³•與 Activity 分享事件。
例如,å‡è¨­ç‰‡æ®µ A 是
@@ -739,7 +739,7 @@ android.app.Activity#onCreate onCreate()} 回呼後,Activity 中的片段就ä¸
這個 Activity ç¯„ä¾‹åŒæ™‚示範了如何根據螢幕設定æä¾›ä¸åŒçš„片段設定。
</p>
-<p class="note"><strong>注æ„:</strong>如需這個 Activity 的完整原始碼,請查閱
+<p class="note"><strong>注æ„:</strong>如需這個 Activity 的完整原始碼,請查閱
<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html">{@code
FragmentLayout.java}</a>。</p>
@@ -785,7 +785,7 @@ android.widget.FrameLayout}),或是啟動新的 Activity (藉此顯示片段)ã
<p>第二個片段 {@code DetailsFragment} 則會é‡å°
{@code TitlesFragment} ä¸­ï¼Œä½¿ç”¨è€…æ‰€é¸æ¸…單項目的劇本摘è¦ï¼š</p>
-
+
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
<p>é‡å° {@code TitlesFragment} 類別發出的回呼,如果使用者點擊清單項目,而且目å‰çš„版é¢é…置「並未ã€<em></em>åŒ…å« {@code R.id.details} 檢視 ({@code DetailsFragment} 所屬的檢視)ï¼Œå‰‡æ‡‰ç”¨ç¨‹å¼æœƒåŸ·è¡Œ {@code DetailsActivity} Activity 來顯示項目內容。
@@ -798,7 +798,7 @@ android.widget.FrameLayout}),或是啟動新的 Activity (藉此顯示片段)ã
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
details_activity}
-
+
<p>請注æ„,這個 Activity 會在螢幕採用橫å‘版é¢é…置的情æ³ä¸‹è‡ªè¡ŒçµæŸï¼Œå› æ­¤ä¸»è¦ Activity 會接續顯示 {@code TitlesFragment} æ—çš„ {@code DetailsFragment}。如果使用者在採用直å‘版é¢é…置的è£ç½®ä¸ŠåŸ·è¡Œ {@code DetailsActivity},然後將該è£ç½®æ—‹è½‰æˆæ©«å‘ (é€™æœƒé‡æ–°åŸ·è¡Œç›®å‰çš„ Activity),就å¯èƒ½æœƒç™¼ç”Ÿé€™ç¨®æƒ…æ³ã€‚
diff --git a/docs/html-intl/intl/zh-tw/guide/components/fundamentals.jd b/docs/html-intl/intl/zh-tw/guide/components/fundamentals.jd
index d3b3c2899614..9e4079e5e35e 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/fundamentals.jd
@@ -309,7 +309,7 @@ href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a
</ul>
<p>系統看ä¸åˆ°æ‚¨ç´å…¥ä¾†æºä½†æœªåœ¨å®£ç¤ºèªªæ˜Žä¸­å®£å‘Šçš„ Activityã€æœå‹™å’Œå…§å®¹ä¾›æ‡‰ç¨‹å¼ï¼Œå› æ­¤ç³»çµ±ç„¡æ³•執行這些項目。
-ä¸éŽï¼Œæ‚¨å¯åœ¨å®£ç¤ºèªªæ˜Žå®£å‘Šå»£æ’­æŽ¥æ”¶å™¨ï¼Œæˆ–是é€éŽç¨‹å¼ç¢¼ä»¥å‹•æ…‹æ–¹å¼å»ºç«‹å»£æ’­æŽ¥æ”¶å™¨ (將廣播接收器建立為
+ä¸éŽï¼Œæ‚¨å¯åœ¨å®£ç¤ºèªªæ˜Žå®£å‘Šå»£æ’­æŽ¥æ”¶å™¨ï¼Œæˆ–是é€éŽç¨‹å¼ç¢¼ä»¥å‹•æ…‹æ–¹å¼å»ºç«‹å»£æ’­æŽ¥æ”¶å™¨ (將廣播接收器建立為
{@link android.content.BroadcastReceiver} 物件)ï¼Œç„¶å¾Œå‘¼å« {@link android.content.Context#registerReceiver registerReceiver()}
å‘系統註冊廣播接收器。
@@ -379,7 +379,7 @@ startActivity()},系統就å¯èƒ½æœƒå•Ÿå‹•您的 Activity 讓使用者撰寫åŠ
</p>
<p>例如,å‡è¨­æ‚¨çš„æ‡‰ç”¨ç¨‹å¼éœ€è¦ç›¸æ©Ÿä¸”採用 Android 2.1 (<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API 級別</a> 7) 導入的 API,建議您用下列方å¼åœ¨å®£ç¤ºèªªæ˜Žæª”案中宣告這些需求:
-</p>
+</p>
<pre>
&lt;manifest ... >
diff --git a/docs/html-intl/intl/zh-tw/guide/components/index.jd b/docs/html-intl/intl/zh-tw/guide/components/index.jd
index f34c7120e8ad..a59bcd465cb9 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/index.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/index.jd
@@ -11,7 +11,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>éƒ¨è½æ ¼æ–‡ç« </h3>
-
+
<a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
<h4>使用 DialogFragments</h4>
<p>本文示範如何æ­é… v4 支æ´ç¨‹å¼åº« (å¯é‡å° Honeycomb 以下版本è£ç½®æä¾›å‘下相容性支æ´) 使用 DialogFragments 來顯示簡易的編輯å°è©±æ–¹å¡Šï¼Œä»¥åŠé€éŽä»‹é¢å°‡çµæžœå›žå‚³çµ¦å‘¼å«ã€ŒActivityã€ã€‚</p>
@@ -21,7 +21,7 @@ page.image=images/develop/app_components.png
<h4>é©ç”¨æ–¼å„種è£ç½®çš„片段</h4>
<p>æˆ‘å€‘æ–¼ä»Šæ—¥æŽ¨å‡ºçš„éœæ…‹ç¨‹å¼åº«å¯åˆ—出相åŒçš„ Fragments API (ä»¥åŠæ–°çš„ LoaderManager 和些許其他類別),讓與 Android 1.6 以下版本相容的應用程å¼èƒ½å¤ ä½¿ç”¨ç‰‡æ®µä¾†å»ºç«‹ç›¸å®¹æ–¼å¹³æ¿é›»è…¦çš„使用者介é¢ã€‚ </p>
</a>
-
+
<a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
<h4>é‹ç”¨å¤šå€‹åŸ·è¡Œç·’來æå‡æ•ˆèƒ½</h4>
<p>å»ºç«‹å›žæ‡‰å¼æ‡‰ç”¨ç¨‹å¼çš„å»ºè­°åšæ³•是,最å°åŒ–æ‚¨çš„ä¸»è¦ UI 執行緒所執行的工作數。
@@ -32,7 +32,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>培訓</h3>
-
+
<a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
<h4>ç®¡ç† Activity 生命週期</h4>
<p>本課程說明æ¯å€‹ã€ŒActivityã€åŸ·è¡Œå€‹é«”都會接收的生命週期é‡è¦å›žå‘¼æ–¹æ³•,並且說明如何使用這些方法,讓 Activity çš„é‹ä½œèƒ½ç¬¦åˆä½¿ç”¨è€…çš„é æœŸï¼Œä»¥åŠè®“ Activity 在ä¸éœ€è¦ç³»çµ±è³‡æºæ™‚ä¸è€—用這類資æºã€‚
diff --git a/docs/html-intl/intl/zh-tw/guide/components/loaders.jd b/docs/html-intl/intl/zh-tw/guide/components/loaders.jd
index 89bfc80744d9..112993a66085 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/loaders.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/loaders.jd
@@ -21,14 +21,14 @@ parent.link=activities.html
</ol>
</li>
</ol>
-
+
<h2>é‡è¦é¡žåˆ¥</h2>
<ol>
<li>{@link android.app.LoaderManager}</li>
<li>{@link android.content.Loader}</li>
- </ol>
-
+ </ol>
+
<h2>相關範例</h2>
<ol>
<li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">LoaderCursor
@@ -51,7 +51,7 @@ android.app.Fragment} 。</li>
å› æ­¤ä¸éœ€è¦é‡æ–°æŸ¥è©¢è³‡æ–™ã€‚
</li>
</ul>
-
+
<h2 id="summary">載入器 API 摘è¦</h2>
<p>有多個類別和介é¢å¯èƒ½èˆ‡åœ¨æ‡‰ç”¨ç¨‹å¼ä¸­ä½¿ç”¨è¼‰å…¥å™¨æœ‰é—œã€‚
@@ -129,7 +129,7 @@ android.content.ContentProvider} 所備份資料的 {@link android.content.Curso
</li>
<li>{@link android.app.LoaderManager.LoaderCallbacks} 的實作。
您å¯ä»¥åœ¨é€™è£¡å»ºç«‹æ–°çš„載入器和管ç†å°ç¾æœ‰è¼‰å…¥å™¨çš„åƒç…§ã€‚
-</li>
+</li>
<li>顯示載入器資料的一種方å¼ï¼Œä¾‹å¦‚ {@link
android.widget.SimpleCursorAdapter}。</li>
<li>使用 {@link android.content.CursorLoader} 時的資料來æºï¼Œä¾‹å¦‚ {@link android.content.ContentProvider}。
@@ -140,7 +140,7 @@ android.widget.SimpleCursorAdapter}。</li>
<p>{@link android.app.LoaderManager} å¯åœ¨ {@link android.app.Activity} 或 {@link android.app.Fragment} 內管ç†ä¸€æˆ–多個 {@link
android.content.Loader} 執行個體。
æ¯å€‹ Activity 或片段åªèƒ½æœ‰ä¸€å€‹ {@link
-android.app.LoaderManager}。</p>
+android.app.LoaderManager}。</p>
<p>您通常會在 Activity 的 {@link
android.app.Activity#onCreate onCreate()} 方法內或在片段的 {@link android.app.Fragment#onActivityCreated onActivityCreated()} 方法內,åˆå§‹åŒ– {@link android.content.Loader},
@@ -157,13 +157,13 @@ getLoaderManager().initLoader(0, null, this);</pre>
<ul>
<li>å¯è­˜åˆ¥è¼‰å…¥å™¨çš„ä¸é‡è¤‡ ID。在本範例中,此 ID 為 0。</li>
<li>å¯åœ¨å»ºæ§‹æ™‚æä¾›çµ¦è¼‰å…¥å™¨çš„é¸ç”¨å¼•數 (在本範例中為<code>null</code>)。
-</li>
+</li>
<li>{@link android.app.LoaderManager.LoaderCallbacks} 實作,
{@link android.app.LoaderManager} æœƒå‘¼å«æ­¤å¯¦ä½œä¾†å›žå ±è¼‰å…¥å™¨äº‹ä»¶ã€‚在本範例中,本機類別會實作 {@link
android.app.LoaderManager.LoaderCallbacks} 執行個體,以將åƒç…§å‚³é€çµ¦å®ƒè‡ªå·± ({@code this})。
-</li>
+</li>
</ul>
<p>{@link android.app.LoaderManager#initLoader initLoader()} 呼å«å¯ç¢ºä¿è¼‰å…¥å™¨å·²åˆå§‹åŒ–且處於有效狀態。
å¯èƒ½æœƒæœ‰å…©ç¨®çµæžœï¼š</p>
@@ -343,7 +343,7 @@ public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
<p>這個方法是在正è¦é‡è¨­å…ˆå‰å»ºç«‹çš„載入器時呼å«ï¼Œä»¥ä¾¿ä½¿å…¶è³‡æ–™ç„¡æ³•使用。
此回呼方法å¯è®“您知é“å³å°‡è¦ç™¼ä½ˆè³‡æ–™ï¼Œè€Œèƒ½å…ˆè¡Œå°‡å…¶åƒç…§ç§»é™¤ã€‚
 </p>
-<p>此實作會以 <code>null</code> 的值呼å«
+<p>此實作會以 <code>null</code> 的值呼å«
{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}:
</p>
@@ -366,7 +366,7 @@ public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
android.app.Fragment} 的完整實作,
其顯示的 {@link android.widget.ListView} 包å«è¯çµ¡äººå…§å®¹ä¾›æ‡‰ç¨‹å¼çš„æŸ¥è©¢çµæžœã€‚它使用 {@link
android.content.CursorLoader} 管ç†å°ä¾›æ‡‰ç¨‹å¼çš„æŸ¥è©¢ã€‚</p>
-
+
<p>如本範例所示,é‡å°è¦å­˜å–使用者è¯çµ¡äººçš„æ‡‰ç”¨ç¨‹å¼ï¼Œå®ƒçš„å®£ç¤ºèªªæ˜Žå¿…é ˆåŒ…å« {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS} 權é™ã€‚
</p>
diff --git a/docs/html-intl/intl/zh-tw/guide/components/processes-and-threads.jd b/docs/html-intl/intl/zh-tw/guide/components/processes-and-threads.jd
index 74dbb8ebb3f1..56027ceb88a3 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/processes-and-threads.jd
@@ -49,7 +49,7 @@ page.tags=生命週期ã€èƒŒæ™¯
&lt;receiver&gt;}</a> 和 <a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
&lt;provider&gt;}</a> &mdash; çš„å®£ç¤ºèªªæ˜Žé …ç›®éƒ½æ”¯æ´ {@code android:process} 屬性,這項屬性能指定元件應在哪個處ç†ç¨‹åºåŸ·è¡Œã€‚
您å¯ä»¥è¨­å®šæ­¤å±¬æ€§è®“æ¯å€‹å…ƒä»¶éƒ½ä»¥è‡ªå·±çš„處ç†ç¨‹åºåŸ·è¡Œï¼Œæˆ–åªè®“當中的部分元件共用åŒä¸€è™•ç†ç¨‹åºã€‚
-您也å¯ä»¥è¨­å®š
+您也å¯ä»¥è¨­å®š
{@code android:process},讓ä¸åŒæ‡‰ç”¨ç¨‹å¼çš„元件以相åŒçš„處ç†ç¨‹åºåŸ·è¡Œï¼Œåªè¦é€™äº›æ‡‰ç”¨ç¨‹å¼åˆ†äº«ç›¸åŒçš„ Linux 使用者 ID 並以相åŒçš„æ†‘證簽署。
</p>
@@ -142,7 +142,7 @@ android.content.Context#startService startService()} 方法啟動的æœå‹™çš„處
</li>
<li><b>背景處ç†ç¨‹åº</b>
- <p>這種處ç†ç¨‹åºæœƒä¿ç•™ä½¿ç”¨è€…ç›®å‰çœ‹ä¸è¦‹çš„ Activity (å·²å‘¼å« Activity çš„
+ <p>這種處ç†ç¨‹åºæœƒä¿ç•™ä½¿ç”¨è€…ç›®å‰çœ‹ä¸è¦‹çš„ Activity (å·²å‘¼å« Activity çš„
{@link android.app.Activity#onStop onStop()} 方法)。這些處ç†ç¨‹åºæœƒé–“æŽ¥å½±éŸ¿ä½¿ç”¨è€…é«”é©—ï¼Œä¸”ç³»çµ±èƒ½éš¨æ™‚å°‡å…¶çµ‚æ­¢ï¼Œè—‰æ­¤å›žæ”¶è¨˜æ†¶é«”ä»¥ä¾›å‰æ™¯ã€å¯è¦‹æˆ–æœå‹™è™•ç†ç¨‹åºä½¿ç”¨ã€‚
@@ -319,7 +319,7 @@ private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
-
+
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
diff --git a/docs/html-intl/intl/zh-tw/guide/components/recents.jd b/docs/html-intl/intl/zh-tw/guide/components/recents.jd
index d56c12c0e87b..5ac0e2625bef 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/recents.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/recents.jd
@@ -181,7 +181,7 @@ protected void onNewIntent(Intent intent) {
</dl>
<p class="note"><strong>注æ„:</strong>å¦‚æžœå€¼ä¸æ˜¯ {@code none} 與 {@code never},則 Activity 必須使用 {@code launchMode="standard"} 定義。
-如果沒有指定此屬性,則會使用
+如果沒有指定此屬性,則會使用
{@code documentLaunchMode="none"}。</p>
<h2 id="removing">移除工作</h2>
diff --git a/docs/html-intl/intl/zh-tw/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/zh-tw/guide/components/tasks-and-back-stack.jd
index e23301d641bc..e3ce58f7770d 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/tasks-and-back-stack.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/tasks-and-back-stack.jd
@@ -440,13 +440,13 @@ android.app.Activity#startActivity startActivity()} çš„æ„åœ–ä¸­åŒ…å«æ——標,ä
<p>在兩種情æ³ä¸‹æœƒç”¨åˆ°è¦ªå’Œæ€§ï¼š</p>
<ul>
- <li>當啟動 Activity çš„æ„圖包å«
+ <li>當啟動 Activity çš„æ„圖包å«
{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK} 旗標。
<p>根據é è¨­ï¼Œæ–°çš„ Activity 會啟動至 Activity (å為 {@link android.app.Activity#startActivity startActivity()}) 的工作中。
系統會將它推入至與呼å«ç«¯ç›¸åŒçš„返回堆疊。
-ä¸éŽï¼Œå¦‚果傳é€è‡³
+ä¸éŽï¼Œå¦‚果傳é€è‡³
{@link android.app.Activity#startActivity startActivity()} çš„æ„åœ–åŒ…å« {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK} 旗標,則系統會找尋ä¸åŒçš„工作來放置新的 Activity。
這通常是新工作。
@@ -455,7 +455,7 @@ android.app.Activity#startActivity startActivity()} çš„æ„åœ–ä¸­åŒ…å«æ——標,ä
<p>如果此旗標導致 Activity 開始新的工作,而使用者按 [首é ] æŒ‰éˆ•é›¢é–‹å®ƒï¼Œå¿…é ˆè¦æœ‰æ–¹æ³•å¯ä»¥è®“使用者回來ç€è¦½é€™å€‹å·¥ä½œã€‚<em></em>
-有些實體 (例如,通知管ç†å“¡) 總是從外部工作開始 Activity,從來ä¸ä½¿ç”¨è‡ªå·±çš„工作,因此他們都會將 {@code FLAG_ACTIVITY_NEW_TASK} 放入傳é€åˆ°
+有些實體 (例如,通知管ç†å“¡) 總是從外部工作開始 Activity,從來ä¸ä½¿ç”¨è‡ªå·±çš„工作,因此他們都會將 {@code FLAG_ACTIVITY_NEW_TASK} 放入傳é€åˆ°
{@link android.app.Activity#startActivity startActivity()} çš„æ„圖。
如果您的 Activity å¯ä»¥ç”±å¤–部實體呼å«ä¸”å¯èƒ½ä½¿ç”¨æ­¤æ——æ¨™ï¼Œè¨˜å¾—è¦æä¾›ä½¿ç”¨è€…ç¨ç«‹çš„æ–¹æ³•回到啟動的工作,例如,é€éŽå•Ÿå‹•組件圖示 (工作的根 Activity 有一個 {@link android.content.Intent#CATEGORY_LAUNCHER} æ„圖篩é¸å™¨ï¼›è«‹åƒé–±ä¸‹æ–¹çš„<a href="#Starting">開始工作</a>)。
@@ -505,7 +505,7 @@ href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetain
href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
<dd>如果這項屬性在工作的根 Activity 中設為 {@code "true"},則剛æè¿°çš„é è¨­è¡Œç‚ºä¸æœƒç™¼ç”Ÿã€‚
å³ä½¿éŽäº†å¾ˆé•·çš„一段時間,工作ä»ç„¶æœƒåœ¨å †ç–Šä¿ç•™æ‰€æœ‰çš„ Activity。
-æ›å¥è©±èªªï¼Œå®ƒèˆ‡
+æ›å¥è©±èªªï¼Œå®ƒèˆ‡
<a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
{@code alwaysRetainTaskState}</a> 相å。å³ä¾¿ä½¿ç”¨è€…åªé›¢é–‹å·¥ä½œä¸€å°æ®µæ™‚間,使用者還是會回到工作的起始狀態。
</dd>
@@ -526,8 +526,8 @@ href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTask
<h3 id="Starting">開始工作</h3>
-<p>您å¯ä»¥çµ¦äºˆ Activity 一個æ„圖篩é¸å™¨ï¼Œå°‡
-{@code "android.intent.action.MAIN"} 設定為指定的動作,
+<p>您å¯ä»¥çµ¦äºˆ Activity 一個æ„圖篩é¸å™¨ï¼Œå°‡
+{@code "android.intent.action.MAIN"} 設定為指定的動作,
{@code "android.intent.category.LAUNCHER"} 設定為指定的類別,以便將該 Activity 設定為工作的進入點。
例如:</p>
@@ -547,7 +547,7 @@ href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTask
</p>
<p>第二項功能很é‡è¦ï¼šä½¿ç”¨è€…必須能夠在離開工作後,使用此 Activity 啟動組件回到此工作。
-由於這個原因,兩個將 Activity 標示為一律啟動工作的<a href="#LaunchModes">啟動模å¼</a> {@code "singleTask"} å’Œ
+由於這個原因,兩個將 Activity 標示為一律啟動工作的<a href="#LaunchModes">啟動模å¼</a> {@code "singleTask"} å’Œ
{@code "singleInstance"},應åªèƒ½åœ¨ Activity 有 {@link android.content.Intent#ACTION_MAIN} å’Œ {@link android.content.Intent#CATEGORY_LAUNCHER} 篩é¸å™¨æ™‚æ‰èƒ½ä½¿ç”¨ã€‚
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/zh-tw/guide/topics/manifest/manifest-intro.jd
index 5e42e37d91fc..77a2b80d49f4 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/manifest/manifest-intro.jd
@@ -33,15 +33,15 @@ page.title=應用程å¼å®£ç¤ºèªªæ˜Ž
<li>æè¿°æ‡‰ç”¨ç¨‹å¼çš„元件 &mdash; çµ„æˆæ‡‰ç”¨ç¨‹å¼çš„ Activityã€æœå‹™ã€å»£æ’­æŽ¥æ”¶å™¨å’Œå…§å®¹ä¾›æ‡‰ç¨‹å¼ã€‚
-為實作æ¯å€‹å…ƒä»¶çš„類別命å以åŠç™¼ä½ˆé¡žåˆ¥çš„功能 (例如,類別å¯è™•ç†çš„ {@link android.content.Intent
+為實作æ¯å€‹å…ƒä»¶çš„類別命å以åŠç™¼ä½ˆé¡žåˆ¥çš„功能 (例如,類別å¯è™•ç†çš„ {@link android.content.Intent
Intent} 訊æ¯)。
這些宣告å¯è®“ Android 系統瞭解元件為何以åŠå¯åœ¨å“ªäº›æƒ…æ³ä¸‹å•Ÿå‹•。
</li>
-<li>決定代管應用程å¼å…ƒä»¶çš„程åºã€‚</li>
+<li>決定代管應用程å¼å…ƒä»¶çš„程åºã€‚</li>
<li>宣告應用程å¼å¿…é ˆæ“æœ‰å“ªäº›æ¬Šé™ï¼Œæ‰èƒ½å­˜å– API å—ä¿è­·çš„部分以åŠèˆ‡å…¶ä»–應用程å¼äº’動。
-</li>
+</li>
<li>宣示說明亦å¯å®£å‘Šå…¶ä»–é …ç›®å¿…é ˆæ“æœ‰å“ªäº›æ¬Šé™ï¼Œæ‰èƒ½èˆ‡æ‡‰ç”¨ç¨‹å¼çš„元件互動。
</li>
@@ -66,7 +66,7 @@ Intent} 訊æ¯)。
å¦‚è¦æŸ¥çœ‹ä»»ä¸€å…ƒç´ çš„詳細資訊,åªè¦æŒ‰ä¸€ä¸‹åœ–表中的元素å稱ã€åœ–表後方按字æ¯é †åºåˆ—出的元素清單,或在他處æåŠçš„任何元素å稱。
-
+
</p>
<pre>
@@ -128,7 +128,7 @@ Intent} 訊æ¯)。
<p>
下方按字æ¯é †åºåˆ—出å¯å‡ºç¾åœ¨å®£ç¤ºèªªæ˜Žæª”案中的所有元素。
åªæœ‰é€™äº›æ‰æ˜¯ç¬¦åˆè³‡æ ¼çš„元素,您無法新增自己的元素或屬性。
-
+
</p>
<p style="margin-left: 2em">
@@ -158,7 +158,7 @@ Intent} 訊æ¯)。
</p>
-
+
<h2 id="filec">檔案轉æ›</h2>
@@ -185,7 +185,7 @@ Intent} 訊æ¯)。
<p>
ç³»çµ±é€šå¸¸ä¸æœƒå°‡ä½æ–¼ç›¸åŒå±¤ç´šçš„元素排åºã€‚例如,
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>ã€
-<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 和
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 和
<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> å…ƒç´ èƒ½ä»¥ä»»ä½•é †åºæŽ’åˆ—çµ„åˆã€‚
(
<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code> 元素是這項è¦å‰‡çš„例外狀æ³ï¼š
@@ -218,7 +218,7 @@ Intent} 訊æ¯)。
-
+
<p>
如果您一如往常定義元件類別 ({@link android.app.Activity}ã€{@link android.app.Service}ã€
@@ -244,7 +244,7 @@ Intent} 訊æ¯)。
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code> 屬性指定)。
-ä¸‹åˆ—çš„æŒ‡æ´¾çµæžœæœƒå’Œä¸Šè¿°ç›¸åŒï¼š
+ä¸‹åˆ—çš„æŒ‡æ´¾çµæžœæœƒå’Œä¸Šè¿°ç›¸åŒï¼š
</p>
<pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -375,7 +375,7 @@ Android 會找出é©ç•¶çš„元件來回應æ„圖ã€è¦–需è¦å•Ÿå‹•元件的新執
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> 元素é è¨­å€¼ã€‚
-如果
+如果
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 元素設有一個標籤,但 Activity 與其æ„圖篩é¸å™¨ä¸¦æœªè¨­å®šè©²æ¨™ç±¤ï¼Œç³»çµ±æœƒå°‡æ‡‰ç”¨ç¨‹å¼æ¨™ç±¤è¦–為 Activity å’Œæ„圖篩é¸å™¨çš„æ¨™ç±¤ã€‚
@@ -399,7 +399,7 @@ Android 會找出é©ç•¶çš„元件來回應æ„圖ã€è¦–需è¦å•Ÿå‹•元件的新執
<p>
單一 <i>權é™</i> 是指一項é™åˆ¶ï¼Œå¯é™åˆ¶æŸéƒ¨åˆ†ç¨‹å¼ç¢¼æˆ–è£ç½®ä¸Šè³‡æ–™çš„å­˜å–æ¬Šã€‚
系統會強制實施這項é™åˆ¶ï¼Œä»¥ä¿è­·æœƒé­åˆ°èª¤ç”¨è€Œæ‰­æ›²æˆ–æå®³ä½¿ç”¨è€…體驗的é‡è¦è³‡æ–™èˆ‡ç¨‹å¼ç¢¼ã€‚
-
+
</p>
<p>
@@ -427,12 +427,12 @@ Android 會找出é©ç•¶çš„元件來回應æ„圖ã€è¦–需è¦å•Ÿå‹•元件的新執
如果授予權é™ï¼Œè©²æ‡‰ç”¨ç¨‹å¼å°±èƒ½å¤ ä½¿ç”¨å—ä¿è­·çš„功能。
å¦‚æžœä¸æŽˆäºˆæ¬Šé™ï¼Œå­˜å–ç›¸é—œåŠŸèƒ½çš„å˜—è©¦å°±æœƒå¤±æ•—ï¼Œä½†ä½¿ç”¨è€…ä¸æœƒæ”¶åˆ°ä»»ä½•通知。
-
+
</p>
<p>
應用程å¼ä¹Ÿèƒ½åˆ©ç”¨æ¬Šé™ä¾†ä¿è­·è‡ªå·±çš„元件 (Activityã€æœå‹™ã€å»£æ’­æŽ¥æ”¶å™¨å’Œå…§å®¹ä¾›æ‡‰ç¨‹å¼)。
-它能使用 Android å®šç¾©çš„ä»»ä½•æ¬Šé™ (列於
+它能使用 Android å®šç¾©çš„ä»»ä½•æ¬Šé™ (列於
{@link android.Manifest.permission android.Manifest.permission}) 或其他應用程å¼å®£å‘Šçš„任何權é™ã€‚
此外,應用程å¼ä¹Ÿèƒ½è‡ªè¡Œå®šç¾©æ¬Šé™ã€‚æ–°çš„æ¬Šé™æ˜¯ä»¥
@@ -458,13 +458,13 @@ Android 會找出é©ç•¶çš„元件來回應æ„圖ã€è¦–需è¦å•Ÿå‹•元件的新執
<p>
請注æ„,在本範例中,ä¸åªä»¥
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 元素宣告 {@code DEBIT_ACCT} 權é™ï¼Œé‚„使用
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 元素宣告 {@code DEBIT_ACCT} 權é™ï¼Œé‚„使用
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> å…ƒç´ ä¾†è¦æ±‚使用此權é™ã€‚
å³ä½¿ä¿è­·æ˜¯ç”±æ‡‰ç”¨ç¨‹å¼æœ¬èº«å¼·åˆ¶æ–½è¡Œï¼Œé‚„æ˜¯å¿…é ˆè¦æ±‚使用該權é™ï¼Œæ‡‰ç”¨ç¨‹å¼çš„其他元件æ‰èƒ½å•Ÿå‹•å—ä¿è­·çš„ Activity。
-
+
</p>
<p>
@@ -474,7 +474,7 @@ Android 會找出é©ç•¶çš„元件來回應æ„圖ã€è¦–需è¦å•Ÿå‹•元件的新執
ä¸éŽï¼Œé‚„是必須利用
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> ä¾†è¦æ±‚使用。
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> ä¾†è¦æ±‚使用。
</p>
<p>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/zh-tw/guide/topics/providers/calendar-provider.jd
index 42434e4b30e8..682e82de8071 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@ page.title=日曆供應程å¼
<li><a href="#intent-view">使用æ„圖檢視日曆資料</a></li>
</ol>
</li>
-
+
<li><a href="#sync-adapter">åŒæ­¥é…接器</a></li>
</ol>
@@ -86,7 +86,7 @@ page.title=日曆供應程å¼
</p>
-<p>æ¯å€‹å…§å®¹ä¾›æ‡‰ç¨‹å¼éƒ½æœƒå…¬é–‹ä¸€å€‹å…¬ç”¨ URI (包è£ç‚º
+<p>æ¯å€‹å…§å®¹ä¾›æ‡‰ç¨‹å¼éƒ½æœƒå…¬é–‹ä¸€å€‹å…¬ç”¨ URI (包è£ç‚º
{@link android.net.Uri} 物件),å¯å”¯ä¸€è­˜åˆ¥å…¶è³‡æ–™é›†ã€‚
控制多個資料集 (多個表格) çš„å…§å®¹ä¾›æ‡‰ç¨‹å¼æœƒç‚ºæ¯å€‹è³‡æ–™é›†å…¬é–‹å€‹åˆ¥çš„ URI。
ä¾›æ‡‰ç¨‹å¼æ‰€æœ‰ URI 的開頭字串為「content://ã€ã€‚
@@ -113,14 +113,14 @@ page.title=日曆供應程å¼
</tr>
<tr>
<td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-
+
<td>æ­¤è¡¨æ ¼å…§å«æ—¥æ›†ç‰¹å®šçš„資訊。
此表格中的æ¯ä¸€åˆ—包å«å–®ä¸€æ—¥æ›†çš„詳細資訊,例如å稱ã€è‰²å½©ã€åŒæ­¥è³‡è¨Šç­‰ç­‰ã€‚
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Events}</td>
-
+
<td>æ­¤è¡¨æ ¼å…§å«æ´»å‹•特定的資訊。
此表格中的æ¯ä¸€åˆ—包å«å–®ä¸€æ´»å‹•的資訊 &mdash; 例如,活動標題ã€ä½ç½®ã€é–‹å§‹æ™‚é–“ã€çµæŸæ™‚間等等。
@@ -132,7 +132,7 @@ page.title=日曆供應程å¼
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances}</td>
-
+
<td>æ­¤è¡¨æ ¼å…§å«æ´»å‹•æ¯æ¬¡ç™¼ç”Ÿçš„é–‹å§‹å’ŒçµæŸæ™‚間。
此表格的æ¯ä¸€åˆ—代表單一活動發生。
å–®æ¬¡æ´»å‹•åŸ·è¡Œå€‹é«”å’Œæ´»å‹•çš„å°æ‡‰ç‚º 1:1。
@@ -141,7 +141,7 @@ page.title=日曆供應程å¼
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Attendees}</td>
-
+
<td>æ­¤è¡¨æ ¼å…§å«æ´»å‹•åƒèˆ‡è€… (邀請å°è±¡) 的資訊。
æ¯ä¸€åˆ—代表一個活動的單一邀請å°è±¡ã€‚
其中會指出邀請å°è±¡é¡žåž‹ï¼Œä»¥åŠé‚€è«‹å°è±¡æ˜¯å¦å‡ºå¸­è©²æ´»å‹•的回應。
@@ -149,17 +149,17 @@ page.title=日曆供應程å¼
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Reminders}</td>
-
+
<td>此表格內å«è­¦ç¤º/通知資訊。
æ¯ä¸€åˆ—代表一個活動的單一警示。一個活動å¯ä»¥è¨­å®šå¤šå€‹æé†’。
-æ¯å€‹æ´»å‹•çš„æœ€å¤§æ•¸é‡æé†’æŒ‡å®šæ–¼
+æ¯å€‹æ´»å‹•çš„æœ€å¤§æ•¸é‡æé†’æŒ‡å®šæ–¼
{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS}ï¼Œæ­¤é …æ˜¯ç”±æ“æœ‰æŒ‡å®šæ—¥æ›†çš„åŒæ­¥é…接器所設定。
æé†’æ˜¯ä»¥åˆ†é˜æ•¸æŒ‡å®šæ´»å‹•發生å‰çš„æ™‚間,而且有一個方法用於決定通知使用者的方å¼ã€‚
</td>
</tr>
-
+
</table>
<p>「日曆供應程å¼ã€API 的設計具備彈性且功能強大。æä¾›è‰¯å¥½çš„使用者體驗,以åŠä¿è­·æ—¥æ›†åŠå…¶è³‡æ–™çš„完整性,兩者一樣é‡è¦ã€‚
@@ -178,7 +178,7 @@ page.title=日曆供應程å¼
<li><strong>åŒæ­¥é…接器。</strong>åŒæ­¥é…接器會將使用者è£ç½®çš„æ—¥æ›†è³‡æ–™èˆ‡å¦ä¸€å°ä¼ºæœå™¨æˆ–資料來æºé€²è¡ŒåŒæ­¥ã€‚
-在
+在
{@link android.provider.CalendarContract.Calendars} 和
{@link android.provider.CalendarContract.Events} 表格中,會ä¿ç•™æŸäº›æ¬„è®“åŒæ­¥é…接器使用。供應程å¼å’Œæ‡‰ç”¨ç¨‹å¼ä¸æ‡‰åŠ ä»¥ä¿®æ”¹ã€‚
@@ -229,7 +229,7 @@ android.Manifest.permission#READ_CALENDAR} 權é™ã€‚宣示說明檔案必須包å
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-
+
<td>指出是å¦é¸æ“‡è¦é¡¯ç¤ºæ—¥æ›†çš„布林值。值 0 表示與此日曆關è¯çš„æ´»å‹•䏿‡‰é¡¯ç¤ºã€‚
值 1 表示與此日曆關è¯çš„æ´»å‹•應顯示。
@@ -240,7 +240,7 @@ android.provider.CalendarContract.Instances} 表格中列的產生。</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-
+
<td>æŒ‡å‡ºæ—¥æ›†æ˜¯å¦æ‡‰åŒæ­¥ï¼Œä¸¦ä¸”讓日曆的活動儲存在è£ç½®ä¸Šçš„布林值。
值 0 表示ä¸åŒæ­¥æ­¤æ—¥æ›†ï¼Œä¸¦ä¸”ä¸è¦åœ¨è£ç½®ä¸Šå„²å­˜å…¶æ´»å‹•。
值 1 è¡¨ç¤ºåŒæ­¥æ­¤æ—¥æ›†çš„æ´»å‹•,並且在è£ç½®ä¸Šå„²å­˜å…¶æ´»å‹•。
@@ -268,18 +268,18 @@ public static final String[] EVENT_PROJECTION = new String[] {
Calendars.CALENDAR_DISPLAY_NAME, // 2
Calendars.OWNER_ACCOUNT // 3
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
-
+
<div class="sidebox-wrapper"> <div class="sidebox"> <h3>為什麼一定è¦åŒ…å« ACCOUNT_TYPE?
</h3> <p>如果您è¦é‡å° {@link
android.provider.CalendarContract.Calendars#ACCOUNT_NAME
-Calendars.ACCOUNT_NAME} 進行查詢,也必須在é¸é …中包å«
+Calendars.ACCOUNT_NAME} 進行查詢,也必須在é¸é …中包å«
{@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}。
é€™æ˜¯å› ç‚ºåªæœ‰åŒæ™‚æä¾›æŒ‡å®šå¸³æˆ¶çš„ <code>ACCOUNT_NAME</code> å’Œ
<code>ACCOUNT_TYPE</code> 情æ³ä¸‹ï¼Œæ­¤å¸³æˆ¶æ‰æœƒè¦–為唯一的。
@@ -289,7 +289,7 @@ Calendars.ACCOUNT_NAME} 進行查詢,也必須在é¸é …中包å«
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}。{@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} å¸³æˆ¶ä¸æœƒé€²è¡ŒåŒæ­¥ã€‚
-</p> </div> </div>
+</p> </div> </div>
<p> 在範例的下一個部分,您將建構查詢。é¸é …會指定查詢的æ¢ä»¶ã€‚
@@ -308,49 +308,49 @@ android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} å¸³æˆ¶ä¸æœƒé€²è¡ŒåŒæ­¥ã€
<pre>// Run query
Cursor cur = null;
ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+Uri uri = Calendars.CONTENT_URI;
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+ Calendars.ACCOUNT_TYPE + " = ?) AND ("
+ Calendars.OWNER_ACCOUNT + " = ?))";
String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
- "sampleuser@gmail.com"};
-// Submit the query and get a Cursor object back.
+ "sampleuser@gmail.com"};
+// Submit the query and get a Cursor object back.
cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
<p>ä¸‹ä¸€ç¯€æœƒä½¿ç”¨æ¸¸æ¨™é€æ­¥æª¢è¦–çµæžœé›†ã€‚它會使用範例一開始設定好的常數,傳回æ¯å€‹æ¬„ä½çš„值。
</p>
-
+
<pre>// Use the cursor to step through the returned records
while (cur.moveToNext()) {
long calID = 0;
String displayName = null;
String accountName = null;
String ownerName = null;
-
+
// Get the field values
calID = cur.getLong(PROJECTION_ID_INDEX);
displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
-
+
// Do something with the values...
...
}
</pre>
-
+
<h3 id="modify-calendar">修改日曆</h3>
<p>如è¦åŸ·è¡Œæ—¥æ›†çš„æ›´æ–°ï¼Œæ‚¨å¯ä»¥æä¾›æ—¥æ›†çš„ {@link
-android.provider.BaseColumns#_ID},å¯ä»¥æ˜¯ URI 的附加 ID
+android.provider.BaseColumns#_ID},å¯ä»¥æ˜¯ URI 的附加 ID
({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) æˆ–ä»¥ç¬¬ä¸€å€‹é¸æ“‡é …ç›®æ–¹å¼æä¾›ã€‚
-é¸é …的開頭應該是 <code>&quot;_id=?&quot;</code>,而且第一個
+é¸é …的開頭應該是 <code>&quot;_id=?&quot;</code>,而且第一個
<code>selectionArg</code> 應該是日曆的 {@link
android.provider.BaseColumns#_ID}。
-您也å¯ä»¥é€éŽå°‡ ID 編碼在 URI 中,以執行更新。此範例會使用
+您也å¯ä»¥é€éŽå°‡ ID 編碼在 URI 中,以執行更新。此範例會使用
({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) æ–¹å¼è®Šæ›´æ—¥æ›†çš„顯示å稱:
@@ -434,7 +434,7 @@ android.provider.CalendarContract.Events} åƒç…§ã€‚</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
-
+
<td>活動的æŒçºŒæœŸé–“,以 <a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a> æ ¼å¼è¡¨ç¤ºã€‚例如,值 <code>&quot;PT1H&quot;</code> 表示活動æŒçºŒä¸€å°æ™‚,而值 <code>&quot;P2W&quot;</code> 指出æŒçºŒ 2 週。
@@ -444,24 +444,24 @@ android.provider.CalendarContract.Events} åƒç…§ã€‚</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
-
+
<td>值 1 è¡¨ç¤ºæ­¤æ´»å‹•éœ€è¦æ•´å¤©ï¼Œå¦‚åŒç•¶åœ°æ™‚倿‰€å®šç¾©ã€‚
值 0 è¡¨ç¤ºå®šæœŸæ´»å‹•ï¼Œæœƒåœ¨ä¸€å¤©ä¸­çš„ä»»ä½•æ™‚é–“é–‹å§‹å’ŒçµæŸã€‚
</td>
-
+
</tr>
-
-
+
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
-
+
<td>活動的週期è¦å‰‡ã€‚例如,<code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>。
您å¯ä»¥åœ¨<a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">這裡</a>查看更多範例。
</td>
-
+
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
<td>活動é‡è¤‡ç™¼ç”Ÿçš„æ—¥æœŸã€‚您通常會將 {@link android.provider.CalendarContract.EventsColumns#RDATE} å’Œ {@link android.provider.CalendarContract.EventsColumns#RRULE} 一起使用,以定義週期性活動的彙總集åˆã€‚
@@ -470,13 +470,13 @@ android.provider.CalendarContract.Events} åƒç…§ã€‚</p>
如需更多討論,請åƒé–± <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">RFC5545 è¦æ ¼</a>。</td>
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
-
+
<td>活動è¦è¦–為忙碌或有空 (å¯ä»¥å®‰æŽ’其他活動) 的時間。
</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
@@ -494,7 +494,7 @@ android.provider.CalendarContract.Events} åƒç…§ã€‚</p>
<h3 id="add-event">新增活動</h3>
-<p>æ‚¨çš„æ‡‰ç”¨ç¨‹å¼æ’入新活動時,我們建議您使用
+<p>æ‚¨çš„æ‡‰ç”¨ç¨‹å¼æ’入新活動時,我們建議您使用
{@link android.content.Intent#ACTION_INSERT INSERT} æ„圖 (如åŒ<a href="#intent-insert">使用æ„圖æ’入活動</a>所述)。ä¸éŽï¼Œå¦‚果需è¦ï¼Œæ‚¨ä¹Ÿå¯ä»¥ç›´æŽ¥æ’入活動。
本節將æè¿°å¦‚何執行此動作。
</p>
@@ -514,11 +514,11 @@ java.util.TimeZone#getAvailableIDs()}。
android.content.Intent#ACTION_INSERT INSERT} æ„圖 (如åŒ<a href="#intent-insert">使用æ„圖æ’入活動</a> &mdash; 所æè¿°çš„æ¡ˆä¾‹) æ’入活動,則ä¸é©ç”¨æ­¤è¦å‰‡ï¼Œå°‡æœƒæä¾›é è¨­æ™‚å€ã€‚
</li>
-
+
<li>å°æ–¼éžé€±æœŸæ€§æ´»å‹•,您必須包括 {@link
android.provider.CalendarContract.EventsColumns#DTEND}。 </li>
-
-
+
+
<li>å°æ–¼é€±æœŸæ€§æ´»å‹•,您必須包括 {@link
android.provider.CalendarContract.EventsColumns#DURATION}ï¼Œä»¥åŠ {@link
android.provider.CalendarContract.EventsColumns#RRULE} 或 {@link
@@ -528,7 +528,7 @@ android.provider.CalendarContract.EventsColumns#RRULE} æ­é… {@link android.pro
</li>
-
+
</ul>
<p>以下是æ’入活動的範例。為了簡化,會在 UI 執行緒中執行此示範。
@@ -539,8 +539,8 @@ android.provider.CalendarContract.EventsColumns#RRULE} æ­é… {@link android.pro
<pre>
long calID = 3;
-long startMillis = 0;
-long endMillis = 0;
+long startMillis = 0;
+long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@ Uri uri = cr.insert(Events.CONTENT_URI, values);
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
-//
+//
// ... do something with event ID
//
//</pre>
@@ -581,11 +581,11 @@ long eventID = Long.parseLong(uri.getLastPathSegment());
android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) æˆ–ä»¥ç¬¬ä¸€å€‹é¸æ“‡é …ç›®æ–¹å¼æä¾›ã€‚
-é¸é …的開頭應該是 <code>&quot;_id=?&quot;</code>,而且第一個
+é¸é …的開頭應該是 <code>&quot;_id=?&quot;</code>,而且第一個
<code>selectionArg</code> 應該是活動的 <code>_ID</code>。
您也å¯ä»¥ä½¿ç”¨ä¸å« ID çš„é¸é …進行更新。以下是更新活動的範例。
-它使用
+它使用
{@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()} æ–¹å¼è®Šæ›´æ´»å‹•的標題:
</p>
@@ -598,7 +598,7 @@ ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
Uri updateUri = null;
// The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;);
+values.put(Events.TITLE, &quot;Kickboxing&quot;);
updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().update(updateUri, values, null, null);
Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows); </pre>
@@ -625,19 +625,19 @@ ContentValues values = new ContentValues();
Uri deleteUri = null;
deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().delete(deleteUri, null, null);
-Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
</pre>
<h2 id="attendees">åƒèˆ‡è€…表格</h2>
<p>{@link android.provider.CalendarContract.Attendees} 表格的æ¯ä¸€åˆ—都代表活動的單一åƒèˆ‡è€…或邀請å°è±¡ã€‚
-呼å«
+呼å«
{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} 會傳回指定 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 活動的åƒèˆ‡è€…清單。
æ­¤ {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 必須符åˆç‰¹å®šæ´»å‹•çš„ {@link
android.provider.BaseColumns#_ID}。
-</p>
+</p>
<p>下表列出å¯å¯«å…¥çš„æ¬„ä½ã€‚
æ’入新的åƒèˆ‡è€…時,您必須包括 <code>ATTENDEE_NAME</code> 以外的所有項目。
@@ -718,8 +718,8 @@ Uri uri = cr.insert(Attendees.CONTENT_URI, values);
<h2 id="reminders">æé†’表格</h2>
<p>{@link android.provider.CalendarContract.Reminders} 表格的æ¯ä¸€åˆ—都代表活動的單一æé†’。
-呼å«
-{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} 會傳回指定
+呼å«
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} 會傳回指定
{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 活動的æé†’清單。
</p>
@@ -727,7 +727,7 @@ Uri uri = cr.insert(Attendees.CONTENT_URI, values);
<p>下表列出æé†’å¯å¯«å…¥çš„æ¬„ä½ã€‚æ’入新的æé†’時,必須包括所有項目。
請注æ„ï¼ŒåŒæ­¥é…接器會在 {@link
android.provider.CalendarContract.Calendars} è¡¨æ ¼ä¸­æŒ‡å‡ºåŒæ­¥é…接器支æ´çš„æé†’類型。
-如需詳細資料,請åƒé–±
+如需詳細資料,請åƒé–±
{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}。
</p>
@@ -779,8 +779,8 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
執行個體表格無法寫入,僅供查詢活動的發生。
</p>
-<p>下表列出您å¯ä»¥é‡å°åŸ·è¡Œå€‹é«”查詢的欄ä½ã€‚請注æ„ï¼Œæ™‚å€æ˜¯ç”±
-{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} 和
+<p>下表列出您å¯ä»¥é‡å°åŸ·è¡Œå€‹é«”查詢的欄ä½ã€‚請注æ„ï¼Œæ™‚å€æ˜¯ç”±
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} 和
{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES} 所定義。
</p>
@@ -801,18 +801,18 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
-
+
<td>åŸ·è¡Œå€‹é«”çš„å‡±æ’’æ›†çµæŸæ—¥ï¼Œèˆ‡ã€Œæ—¥æ›†ã€çš„æ™‚å€ç›¸é—œã€‚
-
-
+
+
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
-
+
<td>åŸ·è¡Œå€‹é«”çš„çµæŸåˆ†é˜ï¼Œå¾žã€Œæ—¥æ›†ã€æ™‚å€çš„åˆå¤œé–‹å§‹è¨ˆç®—。
</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
@@ -820,16 +820,16 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
- <td>執行個體的凱撒曆開始日,與「日曆ã€çš„æ™‚å€ç›¸é—œã€‚
+ <td>執行個體的凱撒曆開始日,與「日曆ã€çš„æ™‚å€ç›¸é—œã€‚
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-
+
<td>執行個體的開始分é˜ï¼Œå¾žåˆå¤œé–‹å§‹è¨ˆç®—,與「日曆ã€çš„æ™‚å€ç›¸é—œã€‚
-
+
</td>
-
+
</tr>
</table>
@@ -853,7 +853,7 @@ public static final String[] INSTANCE_PROJECTION = new String[] {
Instances.BEGIN, // 1
Instances.TITLE // 2
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_BEGIN_INDEX = 1;
@@ -868,7 +868,7 @@ long startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2011, 10, 24, 8, 0);
long endMillis = endTime.getTimeInMillis();
-
+
Cursor cur = null;
ContentResolver cr = getContentResolver();
@@ -883,28 +883,28 @@ ContentUris.appendId(builder, startMillis);
ContentUris.appendId(builder, endMillis);
// Submit the query
-cur = cr.query(builder.build(),
- INSTANCE_PROJECTION,
- selection,
- selectionArgs,
+cur = cr.query(builder.build(),
+ INSTANCE_PROJECTION,
+ selection,
+ selectionArgs,
null);
-
+
while (cur.moveToNext()) {
String title = null;
long eventID = 0;
- long beginVal = 0;
-
+ long beginVal = 0;
+
// Get the field values
eventID = cur.getLong(PROJECTION_ID_INDEX);
beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
title = cur.getString(PROJECTION_TITLE_INDEX);
-
- // Do something with the values.
- Log.i(DEBUG_TAG, "Event: " + title);
+
+ // Do something with the values.
+ Log.i(DEBUG_TAG, "Event: " + title);
Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(beginVal);
+ calendar.setTimeInMillis(beginVal);
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
- Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
+ Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
}
}</pre>
@@ -922,9 +922,9 @@ while (cur.moveToNext()) {
<td><br>
{@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
<td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
- 您也å¯ä»¥ä½¿ç”¨
+ 您也å¯ä»¥ä½¿ç”¨
{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI} åƒç…§ URI。如需使用此æ„圖的範例,請åƒé–±<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">使用æ„圖檢視日曆資料</a>。
-
+
</td>
<td>開啟日曆到 <code>&lt;ms_since_epoch&gt;</code> 指定的時間。</td>
@@ -935,11 +935,11 @@ while (cur.moveToNext()) {
</td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
- 您也å¯ä»¥ä½¿ç”¨
+
+ 您也å¯ä»¥ä½¿ç”¨
{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} åƒç…§ URI。如需使用此æ„圖的範例,請åƒé–±<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">使用æ„圖檢視日曆資料</a>。
-
+
</td>
<td>檢視 <code>&lt;event_id&gt;</code> 指定的活動。</td>
@@ -952,12 +952,12 @@ while (cur.moveToNext()) {
<tr>
<td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
- 您也å¯ä»¥ä½¿ç”¨
+
+ 您也å¯ä»¥ä½¿ç”¨
{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} åƒç…§ URI。如需使用此æ„圖的範例,請åƒé–±<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">使用æ„圖編輯活動</a>。
-
-
+
+
</td>
<td>編輯 <code>&lt;event_id&gt;</code> 指定的活動。</td>
@@ -972,11 +972,11 @@ while (cur.moveToNext()) {
<br>
{@link android.content.Intent#ACTION_INSERT INSERT} </td>
<td><p><code>content://com.android.calendar/events</code></p>
-
- 您也å¯ä»¥ä½¿ç”¨
+
+ 您也å¯ä»¥ä½¿ç”¨
{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} åƒç…§ URI。如需使用此æ„圖的範例,請åƒé–±<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">使用æ„圖æ’入活動</a>。
-
+
</td>
<td>建立活動。</td>
@@ -996,7 +996,7 @@ while (cur.moveToNext()) {
<td>活動的å稱。</td>
</tr>
<tr>
-
+
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<td>活動開始時間,以紀元元年 1 月 1 日零時起算經éŽçš„æ¯«ç§’數為單ä½ã€‚</td>
@@ -1004,25 +1004,25 @@ CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME}</td>
-
+
<td>æ´»å‹•çµæŸæ™‚間,以紀元元年 1 月 1 日零時起算經éŽçš„æ¯«ç§’數為單ä½ã€‚</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
-
- <td>指出活動為整天的布林值。值å¯ä»¥æ˜¯
+
+ <td>指出活動為整天的布林值。值å¯ä»¥æ˜¯
<code>true</code> 或 <code>false</code>。</td> </tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
Events.EVENT_LOCATION}</td>
-
+
<td>活動的地點。</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
Events.DESCRIPTION}</td>
-
+
<td>活動æè¿°ã€‚</td>
</tr>
<tr>
@@ -1039,16 +1039,16 @@ Events.DESCRIPTION}</td>
<td>
{@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
Events.ACCESS_LEVEL}</td>
-
+
<td>活動為ç§äººæˆ–公開性質。</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
Events.AVAILABILITY}</td>
-
+
<td>活動è¦è¦–為忙碌或有空 (å¯ä»¥å®‰æŽ’其他活動) 的時間。</td>
-
-</table>
+
+</table>
<p>以下å„節說明如何使用這些æ„圖。</p>
@@ -1059,14 +1059,14 @@ android.Manifest.permission#WRITE_CALENDAR} 權é™åŒ…括在其<a href="#manifest
</p>
-
+
<p>使用者執行採用此方å¼çš„æ‡‰ç”¨ç¨‹å¼æ™‚ï¼Œæ­¤æ‡‰ç”¨ç¨‹å¼æœƒå°‡ä½¿ç”¨è€…
傳é€åˆ°ã€Œæ—¥æ›†ã€ä»¥å®Œæˆæ–°å¢žæ´»å‹•çš„æ“作。{@link
android.content.Intent#ACTION_INSERT INSERT} æ„圖會使用é¡å¤–的欄ä½å°‡ã€Œæ—¥æ›†ã€ä¸­æ´»å‹•的詳細資訊,é å…ˆå¡«å…¥è¡¨å–®ã€‚
然後,使用者å¯ä»¥å–消活動ã€è¦–需è¦ç·¨è¼¯è¡¨å–®æˆ–將活動儲存到其日曆。
</p>
-
+
<p>以下的程å¼ç¢¼ç‰‡æ®µæœƒåœ¨ 2012 å¹´ 1 月 19 æ—¥å®‰æŽ’æ´»å‹•ï¼Œæ­¤æ´»å‹•çš„æœŸé–“æ˜¯å¾žä¸Šåˆ 7:30 åˆ°ä¸Šåˆ 8:30。
@@ -1075,7 +1075,7 @@ android.content.Intent#ACTION_INSERT INSERT} æ„圖會使用é¡å¤–的欄ä½å°‡ã€
<ul>
<li>它指定 {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 作為 URI。
</li>
-
+
<li>它使用 {@link
android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME} 和 {@link
@@ -1083,10 +1083,10 @@ android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME} é¡å¤–欄ä½ï¼Œå°‡æ´»å‹•的時間é å…ˆå¡«å…¥è¡¨å–®ã€‚
這些時間值必須以自紀元元年 1 月 1 日零時起算經éŽçš„ UTC 毫秒數為單ä½ã€‚
</li>
-
+
<li>它使用 {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL} é¡å¤–æ¬„ä½æä¾›é€—è™Ÿåˆ†éš”çš„å—邀者清單 (以電å­éƒµä»¶åœ°å€æŒ‡å®š)。
</li>
-
+
</ul>
<pre>
Calendar beginTime = Calendar.getInstance();
@@ -1158,16 +1158,16 @@ startActivity(intent);
<ul>
<li>åŒæ­¥é…接器需è¦é€éŽå°‡ {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} 設定為 <code>true</code>ï¼Œä»¥æŒ‡å‡ºé€™æ˜¯åŒæ­¥é…接器。</li>
-
-
+
+
<li>åŒæ­¥é…接器需è¦åœ¨ URI 中æä¾› {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} 和 {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} ä½œç‚ºæŸ¥è©¢åƒæ•¸ã€‚ </li>
-
+
<li>åŒæ­¥é…æŽ¥å™¨èˆ‡æ‡‰ç”¨ç¨‹å¼æˆ–å°å·¥å…·ç›¸æ¯”,有更多欄的寫入權é™ã€‚
例如,應用程å¼åªèƒ½ä¿®æ”¹æ—¥æ›†çš„一些特性,例如å稱ã€é¡¯ç¤ºå稱ã€èƒ½è¦‹åº¦è¨­å®šï¼Œä»¥åŠæ—¥æ›†æ˜¯å¦åŒæ­¥ã€‚
-ç›¸è¼ƒä¹‹ä¸‹ï¼ŒåŒæ­¥é…接器ä¸åªèƒ½å­˜å–這些欄,還å¯ä»¥å­˜å–å¾ˆå¤šå…¶ä»–æ¬„ï¼Œä¾‹å¦‚æ—¥æ›†è‰²å½©ã€æ™‚å€ã€å­˜å–級別ã€ä½ç½®ç­‰ç­‰ã€‚ç„¶è€Œï¼ŒåŒæ­¥é…接器å—陿–¼æ‰€æŒ‡å®šçš„ <code>ACCOUNT_NAME</code> å’Œ
+ç›¸è¼ƒä¹‹ä¸‹ï¼ŒåŒæ­¥é…接器ä¸åªèƒ½å­˜å–這些欄,還å¯ä»¥å­˜å–å¾ˆå¤šå…¶ä»–æ¬„ï¼Œä¾‹å¦‚æ—¥æ›†è‰²å½©ã€æ™‚å€ã€å­˜å–級別ã€ä½ç½®ç­‰ç­‰ã€‚ç„¶è€Œï¼ŒåŒæ­¥é…接器å—陿–¼æ‰€æŒ‡å®šçš„ <code>ACCOUNT_NAME</code> å’Œ
<code>ACCOUNT_TYPE</code>。
</li> </ul>
@@ -1180,5 +1180,5 @@ android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} ä½œç‚ºæŸ¥è©¢åƒæ•¸ã€
.appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
}
</pre>
-<p>å¦‚éœ€å¯¦ä½œåŒæ­¥é…接器的範例 (並éžèˆ‡ã€Œæ—¥æ›†ã€ç‰¹åˆ¥ç›¸é—œ),請åƒé–±
+<p>å¦‚éœ€å¯¦ä½œåŒæ­¥é…接器的範例 (並éžèˆ‡ã€Œæ—¥æ›†ã€ç‰¹åˆ¥ç›¸é—œ),請åƒé–±
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>。
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/zh-tw/guide/topics/providers/contacts-provider.jd
index b5f888012eed..2bcc3e62b3d3 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/providers/contacts-provider.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/providers/contacts-provider.jd
@@ -614,7 +614,7 @@ Email.CONTENT_ITEM_TYPE} (å…§å«ä½¿ç”¨è€…åç¨±ï¼Œè€Œä¸æ˜¯é›»å­éƒµä»¶åœ°å€) ç
<p>
å¦‚è¦æ“·å–å…§å«ä½¿ç”¨è€…的設定檔的è¯çµ¡äººåˆ—ï¼Œè«‹å‘¼å« {@link android.content.ContentResolver#query(Uri,String[], String, String[], String)
ContentResolver.query()}。
-將內容 URI 設為
+將內容 URI 設為
{@link android.provider.ContactsContract.Profile#CONTENT_URI},並且ä¸è¦æä¾›ä»»ä½•é¸å–æ¢ä»¶ã€‚
您也å¯ä»¥ä½¿ç”¨æ­¤å…§å®¹ URI åšç‚ºæ“·å–原始è¯çµ¡äººæˆ–設定檔資料的基礎 URI。
例如,以下程å¼ç¢¼ç‰‡æ®µæœƒæ“·å–設定檔資料:
@@ -932,7 +932,7 @@ public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
您應該儘å¯èƒ½é€éŽå»ºç«‹
{@link android.content.ContentProviderOperation} 物件的{@link java.util.ArrayList},然後呼å«
{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()},以「批次模å¼ã€åœ¨è¯çµ¡äººä¾›æ‡‰ç¨‹å¼ä¸­é€²è¡Œè³‡æ–™çš„æ’å…¥ã€æ›´æ–°ä»¥åŠåˆªé™¤ã€‚
-因為è¯çµ¡äººä¾›æ‡‰ç¨‹å¼æœƒåœ¨å–®ä¸€äº¤æ˜“中執行
+因為è¯çµ¡äººä¾›æ‡‰ç¨‹å¼æœƒåœ¨å–®ä¸€äº¤æ˜“中執行
{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 的所有æ“作,所以您所åšçš„ä¿®æ”¹ä¸æœƒè®“è¯çµ¡äººå­˜æ”¾åº«è™•æ–¼ä¸ä¸€è‡´çš„狀態。
@@ -1004,7 +1004,7 @@ public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
<code>previousResult</code>
</dt>
<dd>
-
+
{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 中的
{@link android.content.ContentProviderResult} 物件以 0 開始的陣列索引值。套用批次æ“ä½œæ™‚ï¼Œæ¯æ¬¡æ“ä½œçµæžœéƒ½æœƒå„²å­˜åœ¨çµæžœçš„中繼陣列。
@@ -1758,7 +1758,7 @@ onPerformSync()} 方法完æˆã€‚
<dd>
{@link android.accounts.AccountManager} 會啟動此æœä»¥é–‹å§‹é©—證程åºã€‚
æœå‹™çš„ {@link android.app.Service#onCreate()} 方法會具ç¾åŒ–為驗證器物件。
-系統需驗證應用程å¼åŒæ­¥é…æŽ¥å™¨çš„ä½¿ç”¨è€…å¸³æˆ¶æ™‚ï¼Œæœƒå‘¼å«æœå‹™çš„
+系統需驗證應用程å¼åŒæ­¥é…æŽ¥å™¨çš„ä½¿ç”¨è€…å¸³æˆ¶æ™‚ï¼Œæœƒå‘¼å«æœå‹™çš„
{@link android.app.Service#onBind(Intent) onBind()} 方法以å–得驗證器的
{@link android.os.IBinder}。
這樣å¯ä»¥è®“系統以跨處ç†ç¨‹åºçš„æ–¹å¼å‘¼å«é©—證器的方法。
@@ -2115,7 +2115,7 @@ openAssetFileDescriptor()} å¯å–得相片檔案的控制代碼。
</ul>
<code><em>activityclass</em></code> 值是 Activity 的完整類別å稱,以此 Activity 接收æ„圖。
<code><em>invite_action_label</em></code> 值是顯示在è£ç½®è¯çµ¡äººæ‡‰ç”¨ç¨‹å¼å…§ [新增連線]<strong></strong> é¸å–®ä¸­çš„æ–‡å­—字串。
-
+
</li>
</ol>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-basics.jd
index 78314784ba9e..a00caed1f435 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-basics.jd
@@ -237,7 +237,7 @@ page.title=內容供應程å¼åŸºæœ¬æ¦‚念
{@link android.content.ContentResolver#query query()} 方法會呼å«ä½¿ç”¨è€…å­—å…¸ä¾›æ‡‰ç¨‹å¼æ‰€å®šç¾©çš„
{@link android.content.ContentProvider#query ContentProvider.query()} 方法。
-以下是
+以下是
{@link android.content.ContentResolver#query ContentResolver.query()} 呼å«çš„程å¼ç¢¼ï¼š
<p>
<pre>
@@ -250,7 +250,7 @@ mCursor = getContentResolver().query(
mSortOrder); // The sort order for the returned rows
</pre>
<p>
- 表 2 列出
+ 表 2 列出
{@link android.content.ContentResolver#query
query(Uri,projection,selection,selectionArgs,sortOrder)} 的引數åŠç›¸å°æ‡‰çš„ SQL SELECT 陳述å¼ï¼š
</p>
@@ -284,7 +284,7 @@ query(Uri,projection,selection,selectionArgs,sortOrder)} 的引數åŠç›¸å°æ‡‰çš
<tr>
<td align="center"><code>selectionArgs</code></td>
<td align="center">
- (æ²’æœ‰ä»»ä½•ç›¸å°æ‡‰çš„é—œéµå­—/åƒæ•¸ã€‚é¸å–引數會å–代é¸å–å­å¥ä¸­çš„
+ (æ²’æœ‰ä»»ä½•ç›¸å°æ‡‰çš„é—œéµå­—/åƒæ•¸ã€‚é¸å–引數會å–代é¸å–å­å¥ä¸­çš„
<code>?</code> é ç•™ä½ç½®ã€‚)
</td>
</tr>
@@ -581,7 +581,7 @@ selectionArgs[0] = mUserInput;
</p>
<p>
- 如果沒有任何資料欄符åˆé¸å–æ¢ä»¶ï¼Œå‰‡ä¾›æ‡‰ç¨‹å¼æœƒå‚³å›ž {@link android.database.Cursor#getCount Cursor.getCount()} 為 0 çš„
+ 如果沒有任何資料欄符åˆé¸å–æ¢ä»¶ï¼Œå‰‡ä¾›æ‡‰ç¨‹å¼æœƒå‚³å›ž {@link android.database.Cursor#getCount Cursor.getCount()} 為 0 çš„
{@link android.database.Cursor} 物件 (峿²’有任何內容的游標)。
</p>
@@ -595,7 +595,7 @@ selectionArgs[0] = mUserInput;
</p>
<p>
- 以下程å¼ç¢¼ç‰‡æ®µæ˜¯ä¸Šä¸€å€‹ç¨‹å¼ç¢¼ç‰‡æ®µçš„å»¶ä¼¸ã€‚å®ƒæœƒå»ºç«‹å…§å«æŸ¥è©¢æ‰€æ“·å– {@link android.database.Cursor} çš„
+ 以下程å¼ç¢¼ç‰‡æ®µæ˜¯ä¸Šä¸€å€‹ç¨‹å¼ç¢¼ç‰‡æ®µçš„å»¶ä¼¸ã€‚å®ƒæœƒå»ºç«‹å…§å«æŸ¥è©¢æ‰€æ“·å– {@link android.database.Cursor} çš„
{@link android.widget.SimpleCursorAdapter} 物件,並將該物件設定為 {@link android.widget.ListView} çš„é…æŽ¥å™¨ï¼š
@@ -674,7 +674,7 @@ if (mCursor != null) {
<p>
{@link android.database.Cursor} å¯¦ä½œæ–¹æ³•åŒ…å«æ•¸å€‹ç”¨æ–¼å¾žç‰©ä»¶æ“·å–ä¸åŒè³‡æ–™é¡žåž‹çš„「getã€æ–¹æ³•。
例如,上方程å¼ç¢¼ç‰‡æ®µä½¿ç”¨äº† {@link android.database.Cursor#getString getString()}。
-此外,這種實作方法還包括
+此外,這種實作方法還包括
{@link android.database.Cursor#getType getType()} 方法,å¯å‚³å›žæŒ‡å®šè³‡æ–™æ¬„資料類型的值。
</p>
@@ -709,7 +709,7 @@ if (mCursor != null) {
</p>
<p>
- 以下的
+ 以下的
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
å…ƒç´ æœƒè¦æ±‚使用者字典供應程å¼çš„讀å–å­˜å–æ¬Šï¼š
</p>
@@ -733,7 +733,7 @@ if (mCursor != null) {
</p>
<h3 id="Inserting">æ’入資料</h3>
<p>
- 如è¦åœ¨ä¾›æ‡‰ç¨‹å¼ä¸­æ’入資料,請呼å«
+ 如è¦åœ¨ä¾›æ‡‰ç¨‹å¼ä¸­æ’入資料,請呼å«
{@link android.content.ContentResolver#insert ContentResolver.insert()} 方法。
這個方法會在供應程å¼ä¸­æ’入新的資料列,並傳回該列的內容 URI。
以下程å¼ç¢¼ç‰‡æ®µç¤ºç¯„如何在使用者字典供應程å¼ä¸­æ’入新的字詞:
@@ -785,14 +785,14 @@ content://user_dictionary/words/&lt;id_value&gt;
</p>
<p>
- 如è¦å¾žå‚³å›žçš„ {@link android.net.Uri} å–å¾— <code>_ID</code> 的值,請呼å«
+ 如è¦å¾žå‚³å›žçš„ {@link android.net.Uri} å–å¾— <code>_ID</code> 的值,請呼å«
{@link android.content.ContentUris#parseId ContentUris.parseId()}。
</p>
<h3 id="Updating">更新資料</h3>
<p>
å¦‚è¦æ›´æ–°è³‡æ–™åˆ—,請使用內å«ç¶“éŽæ›´æ–°çš„值 (與您在æ’入資料時所使用的值相åŒ) 以åŠé¸å–æ¢ä»¶ (與您在建立查詢時所使用的é¸å–æ¢ä»¶ç›¸åŒ) çš„ {@link android.content.ContentValues} 物件。
- 您所使用的用戶端方法為
+ 您所使用的用戶端方法為
{@link android.content.ContentResolver#update ContentResolver.update()}。您åªéœ€é‡å°è¦æ›´æ–°çš„資料欄,將相關值加到 {@link android.content.ContentValues} 物件å³å¯ã€‚
如果您想清除資料欄的內容,請將值設定為 <code>null</code>。
@@ -901,7 +901,7 @@ Cursor.getType()} 來確èªå¯ç”¨çš„資料類型。
例如,è¯çµ¡äººä¾›æ‡‰ç¨‹å¼ä¸­çš„ {@link android.provider.ContactsContract.Data} 表格會使用 MIME 類型為æ¯å€‹è³‡æ–™åˆ—中儲存的è¯çµ¡äººè³‡æ–™åŠ ä¸Šæ¨™ç±¤ã€‚
-如è¦å–得與內容 URI ç›¸å°æ‡‰çš„ MIME 類型,請呼å«
+如è¦å–得與內容 URI ç›¸å°æ‡‰çš„ MIME 類型,請呼å«
{@link android.content.ContentResolver#getType ContentResolver.getType()}。
</p>
<p>
@@ -1009,13 +1009,13 @@ ContentResolver.applyBatch()}ï¼Œå‰‡ç³»çµ±æœƒå‚³å›žä¸€ç³»åˆ—çµæžœã€‚
</p>
<p>
- ä¾›æ‡‰ç¨‹å¼æœƒä½¿ç”¨
+ ä¾›æ‡‰ç¨‹å¼æœƒä½¿ç”¨
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
- 元素的
+ 元素的
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code>
- 屬性以åŠ
+ 屬性以åŠ
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
- 元素的
+ 元素的
<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
å­å…ƒç´ åœ¨æœ¬èº«çš„宣示說明中為內容 URI 定義 URI 權é™ã€‚如è¦é€²ä¸€æ­¥çž­è§£ URI 權é™çš„é‹ä½œæ©Ÿåˆ¶ï¼Œè«‹åƒé–±<a href="{@docRoot}guide/topics/security/security.html">安全性和權é™</a>指å—的「URI 權é™ã€ã€‚
@@ -1032,8 +1032,8 @@ ContentResolver.applyBatch()}ï¼Œå‰‡ç³»çµ±æœƒå‚³å›žä¸€ç³»åˆ—çµæžœã€‚
<ol>
<li>
您的應用程å¼ä½¿ç”¨ {@link android.app.Activity#startActivityForResult
-startActivityForResult()} 方法,傳é€äº†å…§å«
-{@link android.content.Intent#ACTION_PICK} 動作的æ„圖以åŠã€Œè¯çµ¡äººã€MIME 類型
+startActivityForResult()} 方法,傳é€äº†å…§å«
+{@link android.content.Intent#ACTION_PICK} 動作的æ„圖以åŠã€Œè¯çµ¡äººã€MIME 類型
{@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE}。
</li>
@@ -1043,9 +1043,9 @@ startActivityForResult()} 方法,傳é€äº†å…§å«
</li>
<li>
在é¸å– Activity 中,使用者é¸å–äº†è¦æ›´æ–°çš„è¯çµ¡äººã€‚
-一旦使用者進行這項動作,é¸å– Activity 便會呼å«
+一旦使用者進行這項動作,é¸å– Activity 便會呼å«
{@link android.app.Activity#setResult setResult(resultcode, intent)} 來設定è¦å‚³å›žæ‚¨æ‡‰ç”¨ç¨‹å¼çš„æ„åœ–ã€‚
-該æ„圖包å«ä½¿ç”¨è€…所é¸è¯çµ¡äººçš„內容 URI,以åŠã€Œé¡å¤–ã€çš„æ——標
+該æ„圖包å«ä½¿ç”¨è€…所é¸è¯çµ¡äººçš„內容 URI,以åŠã€Œé¡å¤–ã€çš„æ——標
{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}。
這些旗標å¯å°‡ URI æ¬Šé™æŽˆäºˆæ‚¨çš„æ‡‰ç”¨ç¨‹å¼ï¼Œä»¥ä¾¿å…¶è®€å–內容 URI 指å‘çš„è¯çµ¡äººè³‡æ–™ã€‚é¸å– Activity éš¨å¾Œæœƒå‘¼å« {@link android.app.Activity#finish()} 來傳回您應用程å¼çš„æŽ§åˆ¶æ¬Šã€‚
@@ -1053,7 +1053,7 @@ startActivityForResult()} 方法,傳é€äº†å…§å«
</li>
<li>
- 您的 Activity è¿”å›žå‰æ™¯ï¼Œè€Œç³»çµ±å‘¼å«æ‚¨ Activity çš„
+ 您的 Activity è¿”å›žå‰æ™¯ï¼Œè€Œç³»çµ±å‘¼å«æ‚¨ Activity çš„
{@link android.app.Activity#onActivityResult onActivityResult()} 方法。
é€™å€‹æ–¹æ³•å¯æŽ¥æ”¶è¯çµ¡äººæ‡‰ç”¨ç¨‹å¼ä¸­çš„é¸å– Activity æ‰€å»ºç«‹çš„çµæžœæ„圖。
@@ -1071,7 +1071,7 @@ startActivityForResult()} 方法,傳é€äº†å…§å«
</p>
<p>
- ä¾‹å¦‚ï¼Œæ—¥æ›†æ‡‰ç”¨ç¨‹å¼æŽ¥å—å¯è®“æ‚¨å•Ÿç”¨æ‡‰ç”¨ç¨‹å¼æ’å…¥ UI çš„
+ ä¾‹å¦‚ï¼Œæ—¥æ›†æ‡‰ç”¨ç¨‹å¼æŽ¥å—å¯è®“æ‚¨å•Ÿç”¨æ‡‰ç”¨ç¨‹å¼æ’å…¥ UI çš„
{@link android.content.Intent#ACTION_INSERT} æ„圖。您å¯ä»¥åœ¨è©²æ„圖中傳入「é¡å¤–ã€çš„資料,供應用程å¼ç”¨æ–¼é å…ˆå¡«å…¥ä½¿ç”¨è€…介é¢ã€‚由於週期性活動的語法較為複雜,因此建議您利用 {@link android.content.Intent#ACTION_INSERT} 啟用日曆應用程å¼ï¼Œç„¶å¾Œè®“使用者é€éŽè©²æ‡‰ç”¨ç¨‹å¼å°‡æ´»å‹•æ’入日曆供應程å¼ã€‚
@@ -1089,7 +1089,7 @@ Android å¹³å°å…§å»ºçš„大多數供應程å¼éƒ½å¯åœ¨ {@link android.provider} å
</p>
<p>
ä¾‹å¦‚ï¼Œä½¿ç”¨è€…å­—å…¸ä¾›æ‡‰ç¨‹å¼æœ‰ä¸€å€‹å…§å«å…§å®¹ URI 和欄å稱常數的 {@link android.provider.UserDictionary} åˆç´„類別。
-「字詞ã€è¡¨æ ¼çš„內容 URI 是在
+「字詞ã€è¡¨æ ¼çš„內容 URI 是在
{@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI} 常數中定義。
此外,{@link android.provider.UserDictionary.Words} é¡žåˆ¥ä¹ŸåŒ…å«æ¬„å稱常數,å¯ç”¨æ–¼æœ¬æŒ‡å—中的程å¼ç¢¼ç‰‡æ®µç¯„例。
@@ -1106,7 +1106,7 @@ String[] mProjection =
</pre>
<p>
è¯çµ¡äººä¾›æ‡‰ç¨‹å¼çš„å¦ä¸€å€‹åˆç´„類別為 {@link android.provider.ContactsContract}。
- 此類別的åƒè€ƒæ–‡ä»¶é™„有程å¼ç¢¼ç‰‡æ®µç¯„例。其中一個
+ 此類別的åƒè€ƒæ–‡ä»¶é™„有程å¼ç¢¼ç‰‡æ®µç¯„例。其中一個
{@link android.provider.ContactsContract.Intents.Insert} å­é¡žåˆ¥ç‚ºå…§å«æ„圖常數和æ„圖資料的åˆç´„類別。
</p>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-creating.jd
index 3d46ee4b4c80..9f1ca3176af1 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-creating.jd
@@ -239,7 +239,7 @@ page.title=建立內容供應程å¼
表格資料一律需包å«ã€Œä¸»ç´¢å¼•éµã€æ¬„,方便供應程å¼ä¿å­˜æ¯å€‹è³‡æ–™åˆ—的數值。
您å¯ä»¥ä½¿ç”¨é€™äº›å€¼å°‡è³‡æ–™åˆ—連çµè‡³å…¶ä»–表格中的相關資料列 (也就是將這些值當作「外部索引éµã€ä½¿ç”¨)。
事實上,您也å¯ä»¥ä½¿ç”¨æ­¤è³‡æ–™æ¬„的任何å稱進行連çµï¼Œä½†ä½¿ç”¨ {@link android.provider.BaseColumns#_ID BaseColumns._ID} æ˜¯æœ€ä½³åšæ³•,這是因為將供應程å¼çš„æŸ¥è©¢çµæžœé€£çµè‡³
-{@link android.widget.ListView} 時需è¦å°‡æŸå€‹æ“·å–出的資料列命å為
+{@link android.widget.ListView} 時需è¦å°‡æŸå€‹æ“·å–出的資料列命å為
<code>_ID</code>。
@@ -288,14 +288,14 @@ MIME 類型欄中的值會決定 BLOB 欄的資料定義,
此外,也請é‡å° Android 套件åç¨±æŽ¡å–æ­¤å»ºè­°åšæ³•ï¼›æ‚¨å¯ä»¥å°‡ä¾›æ‡‰ç¨‹å¼æŽˆæ¬Šå®šç¾©ç‚ºå…§å«ä¾›æ‡‰ç¨‹å¼çš„套件å稱的副檔å。
例如,å‡è¨­æ‚¨ Android 套件的å稱為
- <code>com.example.&lt;appname&gt;</code>,則請將供應程å¼çš„æŽˆæ¬Šå®šç¾©ç‚º
+ <code>com.example.&lt;appname&gt;</code>,則請將供應程å¼çš„æŽˆæ¬Šå®šç¾©ç‚º
<code>com.example.&lt;appname&gt;.provider</code>。
</p>
<h3>è¨­è¨ˆè·¯å¾‘çµæ§‹</h3>
<p>
開發人員通常åªè¦é™„加指å‘個別表格的路徑,å³å¯å¾žæŽˆæ¬Šå»ºç«‹å…§å®¹ URI。
-例如,å‡è¨­æ‚¨æœ‰ã€Œtable1ã€<em></em>和「table2ã€<em></em>這兩個表格,則您å¯ä»¥çµåˆä¸Šè¿°ç¯„例中的授權來產生內容 URI
-<code>com.example.&lt;appname&gt;.provider/table1</code> 和
+例如,å‡è¨­æ‚¨æœ‰ã€Œtable1ã€<em></em>和「table2ã€<em></em>這兩個表格,則您å¯ä»¥çµåˆä¸Šè¿°ç¯„例中的授權來產生內容 URI
+<code>com.example.&lt;appname&gt;.provider/table1</code> 和
<code>com.example.&lt;appname&gt;.provider/table2</code>。
路徑並ä¸ä¾·é™æ–¼å–®ä¸€å€éš”,而您也ä¸å¿…為æ¯å€‹è·¯å¾‘層級產生表格。
@@ -350,11 +350,11 @@ MIME 類型欄中的值會決定 BLOB 欄的資料定義,
<code>content://com.example.app.provider/table1</code>:å稱為 <code>table1</code> 的表格。
</li>
<li>
- <code>content://com.example.app.provider/table2/dataset1</code>:å稱為
+ <code>content://com.example.app.provider/table2/dataset1</code>:å稱為
<code>dataset1</code> 的表格。
</li>
<li>
- <code>content://com.example.app.provider/table2/dataset2</code>:å稱為
+ <code>content://com.example.app.provider/table2/dataset2</code>:å稱為
<code>dataset2</code> 的表格。
</li>
<li>
@@ -380,7 +380,7 @@ MIME 類型欄中的值會決定 BLOB 欄的資料定義,
<code>content://com.example.app.provider/table2/*</code>:
</dt>
<dd>
- 與 <code>dataset1</code> 和 <code>dataset2</code> 表格的內容 URI 相符,但與 <code>table1</code> 或
+ 與 <code>dataset1</code> 和 <code>dataset2</code> 表格的內容 URI 相符,但與 <code>table1</code> 或
<code>table3</code> 的內容 URI ä¸ç¬¦ã€‚
</dd>
@@ -393,8 +393,8 @@ MIME 類型欄中的值會決定 BLOB 欄的資料定義,
</dl>
<p>
以下程å¼ç¢¼ç‰‡æ®µèªªæ˜Žå„種方法在 {@link android.content.UriMatcher} 中的é‹ä½œæ–¹å¼ã€‚
- 這個程å¼ç¢¼æœƒä»¥ä¸åŒæ–¹å¼è™•ç†æ•´å€‹è¡¨æ ¼çš„ URI 以åŠå–®ä¸€è³‡æ–™åˆ—çš„ URIï¼›é‡å°è¡¨æ ¼ä½¿ç”¨å…§å®¹ URI 模å¼
-<code>content://&lt;authority&gt;/&lt;path&gt;</code>,é‡å°å–®ä¸€è³‡æ–™åˆ—則使用
+ 這個程å¼ç¢¼æœƒä»¥ä¸åŒæ–¹å¼è™•ç†æ•´å€‹è¡¨æ ¼çš„ URI 以åŠå–®ä¸€è³‡æ–™åˆ—çš„ URIï¼›é‡å°è¡¨æ ¼ä½¿ç”¨å…§å®¹ URI 模å¼
+<code>content://&lt;authority&gt;/&lt;path&gt;</code>,é‡å°å–®ä¸€è³‡æ–™åˆ—則使用
<code>content://&lt;authority&gt;/&lt;path&gt;/&lt;id&gt;</code>。
</p>
@@ -469,8 +469,8 @@ public class ExampleProvider extends ContentProvider {
</pre>
<p>
å¦ä¸€å€‹ {@link android.content.ContentUris} é¡žåˆ¥å¯æä¾›ä½¿ç”¨å…§å®¹ URI çš„ <code>id</code> 部分的簡便方法。
-{@link android.net.Uri} 和
-{@link android.net.Uri.Builder} é¡žåˆ¥å‰‡å¯æä¾›å‰–æžç¾æœ‰
+{@link android.net.Uri} 和
+{@link android.net.Uri.Builder} é¡žåˆ¥å‰‡å¯æä¾›å‰–æžç¾æœ‰
{@link android.net.Uri} 物件åŠå»ºç½®æ–°ç‰©ä»¶çš„簡便方法。
</p>
@@ -485,7 +485,7 @@ public class ExampleProvider extends ContentProvider {
<h3 id="RequiredAccess">å¿…è¦æ–¹æ³•</h3>
<p>
抽象類別 {@link android.content.ContentProvider} 會定義 6 ç¨®æ–¹æ³•ï¼Œè€Œæ‚¨å¿…é ˆå°‡é€™äº›æ–¹æ³•å¯¦ä½œæˆæ‚¨æ‰€æ“有å­é¡žåˆ¥çš„一部分。
-å˜—è©¦å­˜å–æ‚¨å…§å®¹ä¾›æ‡‰ç¨‹å¼çš„ç”¨æˆ¶ç«¯æ‡‰ç”¨ç¨‹å¼æœƒå‘¼å«ä»¥ä¸‹æ‰€æœ‰æ–¹æ³•
+å˜—è©¦å­˜å–æ‚¨å…§å®¹ä¾›æ‡‰ç¨‹å¼çš„ç”¨æˆ¶ç«¯æ‡‰ç”¨ç¨‹å¼æœƒå‘¼å«ä»¥ä¸‹æ‰€æœ‰æ–¹æ³•
({@link android.content.ContentProvider#onCreate() onCreate()} 除外):
</p>
@@ -539,7 +539,7 @@ public class ExampleProvider extends ContentProvider {
</dd>
</dl>
<p>
- 請注æ„,上述方法採用的簽å與åŒåçš„
+ 請注æ„,上述方法採用的簽å與åŒåçš„
{@link android.content.ContentResolver} 方法相åŒã€‚
</p>
<p>
@@ -641,7 +641,7 @@ Android å¯ä»¥é‡å°ä¸‹åˆ—例外狀æ³åŸ·è¡Œé€™é …動作,藉此å”助解決查
</p>
<p>
- 例如,如果您採用 SQLite 資料庫,您å¯ä»¥é€éŽ
+ 例如,如果您採用 SQLite 資料庫,您å¯ä»¥é€éŽ
{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} 建立新的 {@link android.database.sqlite.SQLiteOpenHelper} ç‰©ä»¶ï¼Œç„¶å¾Œåœ¨åˆæ¬¡é–‹å•Ÿè³‡æ–™åº«æ™‚建立 SQL 表格。
為了加快這個程åºï¼Œç•¶æ‚¨åˆæ¬¡å‘¼å« {@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase
@@ -651,10 +651,10 @@ SQLiteOpenHelper.onCreate()} 方法。
</p>
<p>
- 以下兩個程å¼ç¢¼ç‰‡æ®µå±•示了
+ 以下兩個程å¼ç¢¼ç‰‡æ®µå±•示了
{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} 與 {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
SQLiteOpenHelper.onCreate()} 之間的互動éŽç¨‹ã€‚
-而第一個程å¼ç¢¼ç‰‡æ®µæ˜¯ç”¨æ–¼å¯¦ä½œ
+而第一個程å¼ç¢¼ç‰‡æ®µæ˜¯ç”¨æ–¼å¯¦ä½œ
{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}:
</p>
<pre class="prettyprint">
@@ -808,7 +808,7 @@ protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
<code>&lt;name&gt;</code> 必須是全域唯一值,而 <code>&lt;type&gt;</code> å¿…é ˆç‚ºç›¸å°æ‡‰ URI 模å¼çš„專屬值。
建議您使用貴公å¸çš„å稱或您應用程å¼çš„部分 Android 套件å稱åšç‚º <code>&lt;name&gt;</code>。
-é‡å°
+é‡å°
<code>&lt;type&gt;</code>,則建議您使用å¯è­˜åˆ¥èˆ‡ URI 相關的表格的字串。
</p>
@@ -816,8 +816,8 @@ protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
</li>
</ul>
<p>
- 例如,å‡è¨­ä¾›æ‡‰ç¨‹å¼çš„æŽˆæ¬Šç‚º
-<code>com.example.app.provider</code>ï¼Œè€Œè©²æŽˆæ¬Šå¯æä¾›
+ 例如,å‡è¨­ä¾›æ‡‰ç¨‹å¼çš„æŽˆæ¬Šç‚º
+<code>com.example.app.provider</code>ï¼Œè€Œè©²æŽˆæ¬Šå¯æä¾›
<code>table1</code> 這個表格,則 <code>table1</code> 中多個資料列的 MIME 類型會如下所示:
</p>
<pre>
@@ -940,7 +940,7 @@ ContentProvider.getStreamTypes()} 會傳回如下所示的陣列:
為了將權é™è¨­ç‚ºåƒ…é©ç”¨æ–¼æ‚¨çš„供應程å¼ï¼Œè«‹é‡å°
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#nm">
android:name</a></code> 屬性使用 Java å¼ç¯„åœã€‚
-ä¾‹å¦‚ï¼Œè«‹å°‡è®€å–æ¬Šé™å‘½å為
+ä¾‹å¦‚ï¼Œè«‹å°‡è®€å–æ¬Šé™å‘½å為
<code>com.example.app.provider.permission.READ_PROVIDER</code>。
</p>
@@ -955,7 +955,7 @@ ContentProvider.getStreamTypes()} 會傳回如下所示的陣列:
</dt>
<dd>
é€™é …æ¬Šé™æ˜¯ç”± <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
- &lt;provider&gt;</a></code> 元素的
+ &lt;provider&gt;</a></code> 元素的
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
android:permission</a></code> å±¬æ€§æ‰€æŒ‡å®šï¼Œå¯æŽ§åˆ¶æ•´å€‹ä¾›æ‡‰ç¨‹å¼çš„讀å–åŠå¯«å…¥å­˜å–權。
@@ -967,10 +967,10 @@ ContentProvider.getStreamTypes()} 會傳回如下所示的陣列:
整個供應程å¼çš„è®€å–æ¬Šé™åŠå¯«å…¥æ¬Šé™ã€‚您å¯ä»¥ä½¿ç”¨ <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
&lt;provider&gt;</a></code> 元素的
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
- android:readPermission</a></code> 和
+ android:readPermission</a></code> 和
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
android:writePermission</a></code> 屬性指定這兩項權é™ã€‚
-這些權é™çš„優先等級比
+這些權é™çš„優先等級比
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
android:permission</a></code> 所需的權é™ä¾†å¾—高。
</dd>
@@ -1037,9 +1037,9 @@ Context.revokeUriPermission()}。
</p>
<p>
- 如è¦å°‡è‡¨æ™‚å­˜å–æ¬Šå§”æ´¾çµ¦æŸæ¬¾æ‡‰ç”¨ç¨‹å¼ï¼Œæ‚¨å°±å¿…須在æ„圖中加入
-{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} 或
-{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION} æ——æ¨™ï¼Œæˆ–æ˜¯åŒæ™‚加入以上兩者。請使用
+ 如è¦å°‡è‡¨æ™‚å­˜å–æ¬Šå§”æ´¾çµ¦æŸæ¬¾æ‡‰ç”¨ç¨‹å¼ï¼Œæ‚¨å°±å¿…須在æ„圖中加入
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} 或
+{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION} æ——æ¨™ï¼Œæˆ–æ˜¯åŒæ™‚加入以上兩者。請使用
{@link android.content.Intent#setFlags(int) setFlags()} 方法設定這些旗標。
</p>
<p>
@@ -1187,7 +1187,7 @@ Context.revokeUriPermission()}。
<h2 id="Intents">æ„åœ–å’Œè³‡æ–™å­˜å–æ¬Š</h2>
<p>
應用程å¼å¯é€éŽ {@link android.content.Intent} 以間接方å¼å­˜å–內容供應程å¼ã€‚
- åˆ©ç”¨é€™ç¨®å­˜å–æ–¹å¼çš„æ‡‰ç”¨ç¨‹å¼ä¸æœƒå‘¼å« {@link android.content.ContentResolver} 或
+ åˆ©ç”¨é€™ç¨®å­˜å–æ–¹å¼çš„æ‡‰ç”¨ç¨‹å¼ä¸æœƒå‘¼å« {@link android.content.ContentResolver} 或
{@link android.content.ContentProvider} 的任何方法,而是會傳é€å¯å•Ÿå‹• Activity (æ­¤ Activity é€šå¸¸å±¬æ–¼ä¾›æ‡‰ç¨‹å¼æœ¬èº«çš„æ‡‰ç”¨ç¨‹å¼) çš„æ„圖。
目標 Activity 會負責擷å–資料並在本身的 UI 中顯示該資料。視æ„圖中的動作而定,目標 Activity 也å¯èƒ½æœƒæç¤ºä½¿ç”¨è€…修改供應程å¼çš„資料。
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/zh-tw/guide/topics/providers/document-provider.jd
index 1dc7c46f4387..a6af7586b884 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/providers/document-provider.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/providers/document-provider.jd
@@ -213,7 +213,7 @@ Android 4.4 å„²å­˜ç©ºé–“å­˜å–æž¶æ§‹ï¼šç”¨æˆ¶ç«¯</a></li>
</p>
-<p>é‡å°æ­è¼‰ Android 4.4 以上版本的è£ç½®ï¼Œæ‚¨çš„æ‡‰ç”¨ç¨‹å¼é‚„å¯ä»¥å‘¼å«
+<p>é‡å°æ­è¼‰ Android 4.4 以上版本的è£ç½®ï¼Œæ‚¨çš„æ‡‰ç”¨ç¨‹å¼é‚„å¯ä»¥å‘¼å«
{@link android.content.Intent#ACTION_OPEN_DOCUMENT} æ„圖,以顯示系統所控管的挑é¸å™¨ UI,方便使用者ç€è¦½å…¶ä»–æ‡‰ç”¨ç¨‹å¼æä¾›çš„æ‰€æœ‰æª”æ¡ˆã€‚
é€éŽé€™å€‹å–®ä¸€ UI,使用者å¯ä»¥å¾žä»»ä½•å—æ”¯æ´çš„æ‡‰ç”¨ç¨‹å¼æŒ‘鏿ª”案。
@@ -560,7 +560,7 @@ getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
<li>供應程å¼çš„å稱 (也就是供應程å¼çš„類別å稱),包括套件å稱。範例:<code>com.example.android.storageprovider.MyCloudProvider</code>。
</li>
-<li>授權的å稱 (也就是套件的å稱;在此範例中為
+<li>授權的å稱 (也就是套件的å稱;在此範例中為
<code>com.example.android.storageprovider</code>) 以åŠå…§å®¹ä¾›æ‡‰ç¨‹å¼çš„類型
(<code>documents</code>)。範例:{@code com.example.android.storageprovider.documents}。</li>
@@ -588,7 +588,7 @@ getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
<pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;true&lt;/bool&gt;</pre></li>
</ul></li>
-<li>å…§å«
+<li>å…§å«
{@code android.content.action.DOCUMENTS_PROVIDER} 動作的æ„圖篩é¸å™¨ï¼Œè®“您的供應程å¼èƒ½å¤ åœ¨ç³»çµ±æœå°‹ä¾›æ‡‰ç¨‹å¼æ™‚顯示在挑é¸å™¨ä¸­ã€‚
</li>
@@ -618,7 +618,7 @@ getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
<h4 id="43">æ”¯æ´æ­è¼‰ Android 4.3 以下版本的è£ç½®</h4>
-<p>åªæœ‰æ­è¼‰ Android 4.4 以上版本的è£ç½®å¯ä½¿ç”¨
+<p>åªæœ‰æ­è¼‰ Android 4.4 以上版本的è£ç½®å¯ä½¿ç”¨
{@link android.content.Intent#ACTION_OPEN_DOCUMENT} æ„åœ–ã€‚å¦‚æžœæ‚¨æƒ³è®“æ‡‰ç”¨ç¨‹å¼æ”¯æ´ {@link android.content.Intent#ACTION_GET_CONTENT} 以便與æ­è¼‰ Android 4.3 以下版本的è£ç½®ç›¸å®¹ï¼Œè«‹é‡å°æ­è¼‰ Android 4.4 以上版本的è£ç½®åœç”¨å®£ç¤ºèªªæ˜Žä¸­çš„ {@link android.content.Intent#ACTION_GET_CONTENT} æ„圖篩é¸å™¨ã€‚
@@ -833,7 +833,7 @@ public Cursor queryDocument(String documentId, String[] projection) throws
<h4 id="openDocument">實作 openDocument</h4>
<p>您必須實作 {@link android.provider.DocumentsProvider#openDocument
-openDocument()} 來傳回代表特定檔案的
+openDocument()} 來傳回代表特定檔案的
{@link android.os.ParcelFileDescriptor}。其他應用程å¼å¯åˆ©ç”¨å‚³å›žçš„ {@link android.os.ParcelFileDescriptor} 傳輸資料。
使用者é¸å–檔案而且用戶端應用程å¼å‘¼å«
{@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()} è¦æ±‚å­˜å–該檔案後,系統就會呼å«é€™å€‹æ–¹æ³•。範例:
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/zh-tw/guide/topics/resources/accessing-resources.jd
index 3a5a96121d94..d1ac69cde5db 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/resources/accessing-resources.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/resources/accessing-resources.jd
@@ -101,12 +101,12 @@ android.content.res.Resources} (以 {@link android.content.Context#getResources(
<div class="sidebox">
<h2>å­˜å–原始檔案</h2>
-<p>é›–ç„¶ä¸å¸¸è¦‹ï¼Œä½†æ‚¨æœ‰æ™‚需è¦å­˜å–原始檔案和目錄。如果有此需求,則ä¸èƒ½å°‡æª”案儲存在 {@code res/},因為è¦å¾ž
-{@code res/} 讀å–資æºçš„å”¯ä¸€æ–¹å¼æ˜¯é€éŽè³‡æº ID。ä¸éŽï¼Œæ‚¨å¯ä»¥å°‡è³‡æºå„²å­˜åœ¨
+<p>é›–ç„¶ä¸å¸¸è¦‹ï¼Œä½†æ‚¨æœ‰æ™‚需è¦å­˜å–原始檔案和目錄。如果有此需求,則ä¸èƒ½å°‡æª”案儲存在 {@code res/},因為è¦å¾ž
+{@code res/} 讀å–資æºçš„å”¯ä¸€æ–¹å¼æ˜¯é€éŽè³‡æº ID。ä¸éŽï¼Œæ‚¨å¯ä»¥å°‡è³‡æºå„²å­˜åœ¨
{@code assets/} 目錄。
</p>
<p>儲存在 {@code assets/} ç›®éŒ„ä¸­çš„æª”æ¡ˆã€Œä¸æœƒã€<em></em>æŒ‡å®šè³‡æº ID,因此您無法é€éŽ {@code R} 類別或從 XML 資æºåƒç…§é€™äº›æª”案。
-您å¯ä»¥æ”¹ç‚ºæŸ¥è©¢ {@code assets/} 目錄中的檔案,就åƒä¸€èˆ¬æª”案系統一樣,並使用
+您å¯ä»¥æ”¹ç‚ºæŸ¥è©¢ {@code assets/} 目錄中的檔案,就åƒä¸€èˆ¬æª”案系統一樣,並使用
{@link android.content.res.AssetManager} 讀å–原始資料。
</p>
<p>ä¸éŽï¼Œå¦‚æžœæ‚¨åªæ˜¯è¦è®€å–原始資料 (例如影片或音訊檔案),å¯ä»¥å°‡æª”案儲存在 {@code res/raw/} 目錄,然後使用 {@link
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/zh-tw/guide/topics/resources/providing-resources.jd
index 0938dc00e12d..01e0d9ccfb86 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/resources/providing-resources.jd
@@ -510,7 +510,7 @@ xlarge} é™å®šè©žï¼Œä½†è£ç½®ç‚ºä¸€èˆ¬å¤§å°èž¢å¹•)。
</p>
<p>已新增至 API 級別 4。<em></em></p>
-
+
<p>è«‹åƒé–±<a href="{@docRoot}guide/practices/screens_support.html">支æ´å¤šå€‹èž¢å¹•</a>以å–得詳細資訊。
</p>
<p>å¦è«‹æŸ¥çœ‹ {@link android.content.res.Configuration#screenLayout} 設定欄ä½ï¼Œè©²æ¬„使œƒæŒ‡å‡ºèž¢å¹•為å°èž¢å¹•ã€ä¸€èˆ¬èž¢å¹•或大螢幕。
@@ -824,7 +824,7 @@ orientation" described above.</p>
åç¨±ä¸­çš„ä»»ä½•å¤§å¯«åªæ˜¯ç‚ºäº†æ–¹ä¾¿é–±è®€ã€‚</li>
<li>æ¯å€‹é™å®šè©žé¡žåž‹åªæ”¯æ´ä¸€å€‹å€¼ã€‚例如,如果您想在西ç­ç‰™æ–‡å’Œæ³•文使用相åŒçš„å¯ç¹ªé …目檔案,則ä¸èƒ½å°‡ç›®éŒ„命å為 <em></em>
<code>drawable-rES-rFR/</code>。
-您必須有兩個資æºç›®éŒ„,例如
+您必須有兩個資æºç›®éŒ„,例如
<code>drawable-rES/</code> å’Œ <code>drawable-rFR/</code>,這兩個目錄è¦åŒ…å«é©ç•¶çš„æª”案。
但是,您ä¸éœ€è¦å¯¦éš›å°‡ç›¸åŒçš„æª”案複製到這兩ä½ç½®ã€‚您å¯ä»¥ç‚ºè³‡æºå»ºç«‹åˆ¥å。
è«‹åƒé–±ä¸‹æ–¹çš„
@@ -877,7 +877,7 @@ res/drawable-en-rCA/} 建立一個 {@code icon.xml} 檔案,以åŠå»ºç«‹ {@code
android:src="@drawable/icon_ca" />
</pre>
-<p>å¦‚æžœæ‚¨å°‡æ­¤æª”æ¡ˆå„²å­˜æˆ {@code icon.xml} (在替代資æºç›®éŒ„ä¸­ï¼Œåƒæ˜¯
+<p>å¦‚æžœæ‚¨å°‡æ­¤æª”æ¡ˆå„²å­˜æˆ {@code icon.xml} (在替代資æºç›®éŒ„ä¸­ï¼Œåƒæ˜¯
{@code res/drawable-en-rCA/}),系統會將它編譯æˆå¯ç•¶ä½œ {@code R.drawable.icon} åƒç…§çš„資æºï¼Œä½†å®ƒå¯¦éš›ä¸Šæ˜¯ {@code
R.drawable.icon_ca} è³‡æº (儲存在 {@code res/drawable/}) 的別å。
</p>
@@ -1025,7 +1025,7 @@ drawable-port-ldpi/
drawable-port-notouch-12key/
</pre>
<p class="note"><strong>例外狀æ³ï¼š</strong>螢幕åƒç´ å¯†åº¦æ˜¯å”¯ä¸€æ²’有因為è¡çªè€Œè¢«æŽ’除的é™å®šè©žã€‚
-å³ä½¿è£ç½®çš„螢幕密度是 hdpi 但ä»ç„¶æ²’有排除
+å³ä½¿è£ç½®çš„螢幕密度是 hdpi 但ä»ç„¶æ²’有排除
<code>drawable-port-ldpi/</code>,因為此刻æ¯å€‹èž¢å¹•密度都視為相符。
如需詳細資訊,請åƒé–±<a href="{@docRoot}guide/practices/screens_support.html">支æ´å¤šå€‹èž¢å¹•</a>文件。
</p></li>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/zh-tw/guide/topics/resources/runtime-changes.jd
index 7a8b3ae7fc3a..817844458422 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/resources/runtime-changes.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/resources/runtime-changes.jd
@@ -22,7 +22,7 @@ page.tags=Activityã€ç”Ÿå‘½é€±æœŸ
</div>
<p>有些è£ç½®è¨­å®šå¯ä»¥åœ¨åŸ·è¡ŒéšŽæ®µæœŸé–“進行變更 (例如,螢幕方å‘ã€éµç›¤å¯ç”¨æ€§å’Œèªžè¨€)。
-進行這類變更時,Android æœƒé‡æ–°å•Ÿå‹•執行中的
+進行這類變更時,Android æœƒé‡æ–°å•Ÿå‹•執行中的
{@link android.app.Activity} (å‘¼å« {@link android.app.Activity#onDestroy()},後é¢åŠ ä¸Š {@link
android.app.Activity#onCreate(Bundle) onCreate()})。
釿–°å•Ÿå‹•è¡Œç‚ºçš„è¨­è¨ˆæ˜¯ä»¥ç¬¦åˆæ–°è£ç½®è¨­å®šçš„æ›¿ä»£è³‡æºè‡ªå‹•釿–°è¼‰å…¥æ‚¨çš„æ‡‰ç”¨ç¨‹å¼ï¼Œä»¥å”助您的應用程å¼é©æ‡‰æ–°çš„設定。
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/controls.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/controls.jd
index 0f27ae4e8803..1ab66c3f12f3 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@ parent.link=index.html
<tr>
<td><a href="controls/radiobutton.html">圓形按鈕</a></td>
<td>åŠŸç”¨èˆ‡æ ¸å–æ–¹å¡Šé¡žä¼¼ï¼Œä½†æœƒé™åˆ¶ä½¿ç”¨è€…åªèƒ½å¾žä¸€çµ„é¸é …中é¸å–一個é¸é …。</td>
- <td>{@link android.widget.RadioGroup RadioGroup}
+ <td>{@link android.widget.RadioGroup RadioGroup}
<br>{@link android.widget.RadioButton RadioButton} </td>
</tr>
<tr>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/declaring-layout.jd
index 72755715e3a2..580ee230363a 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/declaring-layout.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/declaring-layout.jd
@@ -272,7 +272,7 @@ android.view.ViewGroup.LayoutParams} 的巢狀類別。這個å­é¡žåˆ¥åŒ…å«å®šç
å¯å®šç¾©æª¢è¦–åœ¨èž¢å¹•ä¸­çš„å¯¦éš›å¤§å° (æç¹ªæœŸé–“以åŠç‰ˆé¢é…置之後)。
這些值å¯èƒ½ (但未必) 會與寬度和高度測é‡å€¼ä¸åŒã€‚
-您å¯ä»¥å‘¼å«
+您å¯ä»¥å‘¼å«
{@link android.view.View#getWidth()} å’Œ {@link android.view.View#getHeight()} 來å–得尺寸æç¹ªå€¼ã€‚
</p>
@@ -421,7 +421,7 @@ ArrayAdapter&lt;String> adapter = new ArrayAdapter&lt;String>(this,
<li>嫿œ‰é™£åˆ—中所有字串的 {@link android.widget.TextView} 的版é¢é…ç½®</li>
<li>字串陣列</li>
</ul>
-<p>接著,é‡å°æ‚¨çš„ {@link android.widget.ListView} 呼å«
+<p>接著,é‡å°æ‚¨çš„ {@link android.widget.ListView} 呼å«
{@link android.widget.ListView#setAdapter setAdapter()}:</p>
<pre>
ListView listView = (ListView) findViewById(R.id.listview);
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/dialogs.jd
index b0ae12ea3a19..6e6db354ee77 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@ page.tags=alertdialog,dialogfragment
<li>{@link android.app.DialogFragment}</li>
<li>{@link android.app.AlertDialog}</li>
</ol>
-
+
<h2>å¦è«‹åƒé–±</h2>
<ol>
<li><a href="{@docRoot}design/building-blocks/dialogs.html">å°è©±æ–¹å¡Šè¨­è¨ˆæŒ‡å—</a></li>
@@ -248,7 +248,7 @@ AlertDialog dialog = builder.create();
<dt>中立</dt>
<dd>å¦‚æžœä½¿ç”¨è€…ä¸æƒ³ç¹¼çºŒé€²è¡Œç‰¹å®šå‹•作,但並éžè¦å–消動作,請使用這種按鈕。
這種按鈕會顯示在正é¢å’Œè² é¢æŒ‰éˆ•之間。
-範例:[ç¨å¾Œæé†’我] 按鈕。</dd>
+範例:[ç¨å¾Œæé†’我] 按鈕。</dd>
</dl>
<p>您å¯ä»¥å°‡ä»¥ä¸Šå…¶ä¸­ä¸€ç¨®æŒ‰éˆ•加入 {@link
@@ -320,7 +320,7 @@ android.app.AlertDialog.Builder#setAdapter setAdapter()} 指定清單。
<p>如è¦åŠ å…¥å¤šé‡é¸é … (æ ¸å–æ–¹å¡Š) 或單一é¸é … (圓形按鈕),請使用
{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} 或
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()} 方法。
</p>
@@ -346,7 +346,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
- // Else, if the item is already in the array, remove it
+ // Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
@@ -372,7 +372,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
</pre>
<p>雖然傳統清單和包å«åœ“å½¢æŒ‰éˆ•çš„æ¸…å–®éƒ½å¯æä¾›ã€Œå–®é¸ã€å‹•作,但如果您想ä¿ç•™ä½¿ç”¨è€…çš„é¸æ“‡ï¼Œè«‹ä½¿ç”¨ {@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()}。也就是說,如果您想讓å°è©±æ–¹å¡Šå†æ¬¡é–‹å•Ÿæ™‚é¡¯ç¤ºä½¿ç”¨è€…ç›®å‰æ‰€é¸çš„é¸é …,請建立包å«åœ“形按鈕的清單。
@@ -470,7 +470,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
- });
+ });
return builder.create();
}
</pre>
@@ -479,7 +479,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<p><strong>æç¤ºï¼š</strong>如果您想自訂å°è©±æ–¹å¡Šï¼Œè«‹æ”¹ç‚ºå°‡ {@link android.app.Activity} 顯示為å°è©±æ–¹å¡Šï¼Œè€Œä¸æ˜¯ä½¿ç”¨ {@link android.app.Dialog} API。
方法很簡單,åªè¦å»ºç«‹ Activity 然後在 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
-&lt;activity&gt;}</a> 宣示說明元素中將其主題設為
+&lt;activity&gt;}</a> 宣示說明元素中將其主題設為
{@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog} å³å¯ï¼š
</p>
@@ -505,7 +505,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<pre>
public class NoticeDialogFragment extends DialogFragment {
-
+
/* The activity that creates an instance of this dialog fragment must
* implement this interface in order to receive event callbacks.
* Each method passes the DialogFragment in case the host needs to query it. */
@@ -513,10 +513,10 @@ public class NoticeDialogFragment extends DialogFragment {
public void onDialogPositiveClick(DialogFragment dialog);
public void onDialogNegativeClick(DialogFragment dialog);
}
-
+
// Use this instance of the interface to deliver action events
NoticeDialogListener mListener;
-
+
// Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
&#64;Override
public void onAttach(Activity activity) {
@@ -543,7 +543,7 @@ public class NoticeDialogFragment extends DialogFragment {
public class MainActivity extends FragmentActivity
implements NoticeDialogFragment.NoticeDialogListener{
...
-
+
public void showNoticeDialog() {
// Create an instance of the dialog fragment and show it
DialogFragment dialog = new NoticeDialogFragment();
@@ -656,7 +656,7 @@ public class CustomDialogFragment extends DialogFragment {
// Inflate the layout to use as dialog or embedded fragment
return inflater.inflate(R.layout.purchase_items, container, false);
}
-
+
/** The system calls this only when creating the layout in a dialog. */
&#64;Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
@@ -678,7 +678,7 @@ public class CustomDialogFragment extends DialogFragment {
public void showDialog() {
FragmentManager fragmentManager = getSupportFragmentManager();
CustomDialogFragment newFragment = new CustomDialogFragment();
-
+
if (mIsLargeLayout) {
// The device is using a large layout, so show the fragment as a dialog
newFragment.show(fragmentManager, "dialog");
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/menus.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/menus.jd
index be1fa7f0dfda..6f7405bc00ef 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/menus.jd
@@ -83,9 +83,9 @@ parent.link=index.html
</p>
<p>è«‹åƒé–±<a href="#options-menu">建立é¸é …é¸å–®</a>。</p>
</dd>
-
+
<dt><strong>內容é¸å–®å’Œå…§å®¹é—œè¯å‹•作模å¼</strong></dt>
-
+
<dd>內容é¸å–®æ˜¯æœƒåœ¨ä½¿ç”¨è€…長按æŸå…ƒç´ æ™‚顯示的<a href="#FloatingContextMenu">浮動é¸å–®</a>。
它æä¾›çš„動作會影響所é¸å–內容或內容畫é¢ã€‚
@@ -94,7 +94,7 @@ parent.link=index.html
</p>
<p>è«‹åƒé–±<a href="#context-menu">建立內容關è¯é¸å–®</a>。</p>
</dd>
-
+
<dt><strong>彈出å¼é¸å–®</strong></dt>
<dd>彈出å¼é¸å–®é¡¯ç¤ºçš„項目清單會以垂直清單的方å¼ï¼ŒéŒ¨å®šåœ¨å‘¼å«è©²é¸å–®çš„æª¢è¦–。
它很é©åˆç”¨ä¾†æä¾›èˆ‡ç‰¹å®šå…§å®¹æœ‰é—œçš„動作溢出,或é‡å°ç¬¬äºŒéƒ¨åˆ†çš„命令æä¾›é¸é …。
@@ -135,7 +135,7 @@ parent.link=index.html
<dt><code>&lt;item></code></dt>
<dd>建立代表é¸å–®ä¸­å–®ä¸€é …目的 {@link android.view.MenuItem}。此元素å¯ä»¥åŒ…å«å·¢ç‹€
<code>&lt;menu></code> 元素以建立å­é¸å–®ã€‚</dd>
-
+
<dt><code>&lt;group></code></dt>
<dd>å¯ä¾› {@code &lt;item&gt;} 元素é¸ç”¨çš„ä¸å¯è¦‹å®¹å™¨ã€‚它å¯è®“您將é¸å–®é …目分類,以便分享屬性,例如有效狀態與å¯è¦‹åº¦ã€‚
如需詳細資訊,請åƒé–±<a href="#groups">建立é¸å–®ç¾¤çµ„</a>。
@@ -742,8 +742,8 @@ android.widget.PopupMenu#getMenu() PopupMenu.getMenu()} 所傳回的 {@link andr
<pre>
&lt;ImageButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:src="@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup" />
@@ -900,7 +900,7 @@ android.view.MenuItem#setChecked(boolean) setChecked()} 方法在程å¼ç¢¼ä¸­è®Š
<p>å·²é¸å–å¯å‹¾é¸é …ç›®æ™‚ï¼Œç³»çµ±æœƒå‘¼å«æ‰€é¸å–個別項目的回呼方法 (例如 {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()})。
æ‚¨å¿…é ˆåœ¨é€™è£¡è¨­å®šæ ¸å–æ–¹å¡Šçš„ç‹€æ…‹ï¼ŒåŽŸå› æ˜¯æ ¸å–æ–¹å¡Šæˆ–é¸é …æŒ‰éˆ•ä¸¦ä¸æœƒè‡ªå‹•變更其狀態。
-您å¯ä»¥åˆ©ç”¨
+您å¯ä»¥åˆ©ç”¨
{@link android.view.MenuItem#isChecked()} 來查詢項目的目å‰ç‹€æ…‹ (使用者é¸å–它之å‰çš„狀態),然後利用
{@link android.view.MenuItem#setChecked(boolean) setChecked()} 來設定勾é¸ç‹€æ…‹ã€‚例如:</p>
@@ -1010,7 +1010,7 @@ addIntentOptions()} 時,它會覆寫第一個引數中所指定é¸å–®ç¾¤çµ„中
<p>您也能å‘å…¶ä»–æ‡‰ç”¨ç¨‹å¼æä¾› Activity çš„æœå‹™ï¼Œé€™æ¨£å³å¯åœ¨å…¶ä»–應用程å¼çš„é¸å–®ä¸­åŒ…嫿‚¨çš„æ‡‰ç”¨ç¨‹å¼ (與上述的角色顛倒)。
</p>
-<p>如è¦åŒ…å«åœ¨å…¶ä»–應用程å¼é¸å–®ä¸­ï¼Œæ‚¨å¿…須照常定義æ„圖篩é¸å™¨ï¼Œä½†å‹™å¿…為æ„圖篩é¸å™¨é¡žåˆ¥ç´å…¥
+<p>如è¦åŒ…å«åœ¨å…¶ä»–應用程å¼é¸å–®ä¸­ï¼Œæ‚¨å¿…須照常定義æ„圖篩é¸å™¨ï¼Œä½†å‹™å¿…為æ„圖篩é¸å™¨é¡žåˆ¥ç´å…¥
{@link android.content.Intent#CATEGORY_ALTERNATIVE} 和/或 {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 值。
例如:</p>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/notifiers/notifications.jd
index b8537445cff0..d7bf46997853 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/notifiers/notifications.jd
@@ -81,7 +81,7 @@ page.title=通知
<strong>圖 2.</strong>通知匣中的通知。
</p>
-<p class="note"><strong>注æ„:</strong>除éžå¦å¤–註明,å¦å‰‡æœ¬æŒ‡å—åƒç…§<a href="{@docRoot}tools/support-library/index.html">支æ´ç¨‹å¼åº«</a> 4 版中的
+<p class="note"><strong>注æ„:</strong>除éžå¦å¤–註明,å¦å‰‡æœ¬æŒ‡å—åƒç…§<a href="{@docRoot}tools/support-library/index.html">支æ´ç¨‹å¼åº«</a> 4 版中的
{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} 類別。類別 {@link android.app.Notification.Builder Notification.Builder} 是在 Android 3.0 (API 級別 11) 新增。
@@ -97,10 +97,10 @@ page.title=通知
<h2 id="CreateNotification">建立通知</h2>
-<p>您會為
+<p>您會為
{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} 物件中的通知指定 UI 資訊與動作。
-如è¦å»ºç«‹é€šçŸ¥æœ¬èº«ï¼Œæ‚¨å¯ä»¥å‘¼å«
-{@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()},其傳回的
+如è¦å»ºç«‹é€šçŸ¥æœ¬èº«ï¼Œæ‚¨å¯ä»¥å‘¼å«
+{@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()},其傳回的
{@link android.app.Notification} ç‰©ä»¶æœƒåŒ…å«æ‚¨çš„è¦æ ¼ã€‚如è¦ç™¼å‡ºé€šçŸ¥ï¼Œæ‚¨å¯ä»¥å‘¼å« {@link android.app.NotificationManager#notify NotificationManager.notify()} å°‡ {@link android.app.Notification} 物件傳é€è‡³ç³»çµ±ã€‚
</p>
@@ -149,7 +149,7 @@ page.title=通知
在 {@link android.app.Notification} 內,動作本身是由
{@link android.app.PendingIntent} 完æˆå®šç¾©ï¼Œå…¶ä¸­åŒ…å«çš„
{@link android.content.Intent} 會啟動您應用程å¼ä¸­çš„
-{@link android.app.Activity}。如è¦å°‡
+{@link android.app.Activity}。如è¦å°‡
{@link android.app.PendingIntent} 與手勢關è¯ï¼Œå¯å‘¼å«
{@link android.support.v4.app.NotificationCompat.Builder} çš„é©ç•¶æ–¹æ³•。例如,如果當使用者按一下通知匣中的通知文字時,您希望啟動
{@link android.app.Activity},å¯å‘¼å«
@@ -394,7 +394,7 @@ numMessages = 0;
<h2 id="NotificationResponse">啟動 Activity 時ä¿ç•™å°Žè¦½</h2>
<p>
當您從通知啟動 {@link android.app.Activity} 時,您必須ä¿ç•™ä½¿ç”¨è€…é æœŸçš„導覽體驗。
-按一下 <i>[返回]</i> 應å¯å°‡ä½¿ç”¨è€…從應用程å¼çš„一般工作æµç¨‹å¸¶å›žä¸»èž¢å¹•,而按一下
+按一下 <i>[返回]</i> 應å¯å°‡ä½¿ç”¨è€…從應用程å¼çš„一般工作æµç¨‹å¸¶å›žä¸»èž¢å¹•,而按一下
<i>[近期記錄]</i> 應會將
{@link android.app.Activity} 顯示為個別的工作。如è¦ä¿ç•™å°Žè¦½é«”驗,請以全新的工作啟動
{@link android.app.Activity}。您該如何設定
@@ -466,7 +466,7 @@ numMessages = 0;
</p>
</li>
<li>
- æ­¤å¤–æ‚¨é‚„éœ€è¦æ–°å¢ž Android 4.1 以上版本的支æ´ã€‚為此,請將
+ æ­¤å¤–æ‚¨é‚„éœ€è¦æ–°å¢ž Android 4.1 以上版本的支æ´ã€‚為此,請將
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">android:parentActivityName</a></code> 屬性新增到您è¦å•Ÿå‹• {@link android.app.Activity} çš„
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 元素。
@@ -722,7 +722,7 @@ setProgress(max, progress, false)} 將該列新增至您的通知,然後發出
<p>
ç•¶æ“ä½œå®Œæˆæ™‚,您å¯ä»¥ç¹¼çºŒé¡¯ç¤ºé€²åº¦åˆ—或將其移除。ä¸è«–是任何一種情æ³ï¼Œéƒ½å‹™å¿…更新通知文字來指出æ“作已完æˆã€‚
- 如è¦ç§»é™¤é€²åº¦åˆ—,請呼å«
+ 如è¦ç§»é™¤é€²åº¦åˆ—,請呼å«
{@link android.support.v4.app.NotificationCompat.Builder#setProgress
setProgress(0, 0, false)}。例如:
</p>
@@ -933,7 +933,7 @@ Notification notification = new Notification.Builder(context)
</p>
<p>
- 如è¦å®šç¾©è‡ªè¨‚通知版é¢é…置,請從具ç¾åŒ–坿“´å¤§ XML é…置檔案的
+ 如è¦å®šç¾©è‡ªè¨‚通知版é¢é…置,請從具ç¾åŒ–坿“´å¤§ XML é…置檔案的
{@link android.widget.RemoteViews} ç‰©ä»¶è‘—æ‰‹ã€‚æŽ¥è‘—ï¼Œæ”¹ç‚ºå‘¼å« {@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}ï¼Œè€Œä¸æ˜¯å‘¼å«åƒæ˜¯ {@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()} 的方法。
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/overview.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/overview.jd
index 44d05a82ebc2..0ac4002cf424 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@ XML æä¾›é¡žä¼¼æ–¼ HTML 且人類看得懂的版é¢é…ç½®çµæ§‹ã€‚</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
+ android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
&lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@ XML æä¾›é¡žä¼¼æ–¼ HTML 且人類看得懂的版é¢é…ç½®çµæ§‹ã€‚</p>
<p>如需建立 UI 版é¢é…置的完整指å—,請åƒé–± <a href="declaring-layout.html">XML 版é¢é…ç½®</a>。
-
+
<h2 id="UIComponents">使用者介é¢å…ƒä»¶</h2>
<p>您ä¸å¿…使用 {@link android.view.View} 與 {@link
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/settings.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/settings.jd
index 91ac929e0fa1..7a7ff9b7973c 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/settings.jd
@@ -226,7 +226,7 @@ android.preference.ListPreference}。這兩個項目都包å«ä¸‹åˆ—三個屬性ï
<dt>{@code android:key}</dt>
<dd>需è¦é€™å€‹å±¬æ€§æ‰èƒ½ä¿ç•™è³‡æ–™å€¼çš„å好設定。它會指定當系統將此設定值儲存於 {@link
android.content.SharedPreferences} 時è¦ä½¿ç”¨çš„å”¯ä¸€ç´¢å¼•éµ (字串)。
-
+
<p>åªæœ‰åœ¨ä¸‹åˆ—情æ³ä¸‹ä¸éœ€è¦æ­¤å±¬æ€§ï¼š<em></em>å好設定為 {@link android.preference.PreferenceCategory} 或 {@link android.preference.PreferenceScreen},或者å好設定指定 {@link android.content.Intent} é€²è¡Œå‘¼å« (æ­é… <a href="#Intents">{@code &lt;intent&gt;}</a> 元素) 或 {@link android.app.Fragment} 進行顯示 (æ­é… <a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
android:fragment}</a> 屬性)。
@@ -285,7 +285,7 @@ android.preference.PreferenceCategory}。
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;PreferenceCategory
+ &lt;PreferenceCategory
android:title="&#64;string/pref_sms_storage_title"
android:key="pref_key_storage_settings">
&lt;CheckBoxPreference
@@ -293,12 +293,12 @@ android.preference.PreferenceCategory}。
android:summary="&#64;string/pref_summary_auto_delete"
android:title="&#64;string/pref_title_auto_delete"
android:defaultValue="false"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_sms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
android:title="&#64;string/pref_title_sms_delete"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_mms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
@@ -588,11 +588,11 @@ android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} 回呼以
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
@@ -672,15 +672,15 @@ android.preference.Preference &lt;Preference&gt;} 元素會傳é€ä¸€å€‹ {@link a
</p>
<p>例如,下列為使用 Android 3.0åŠæ›´æ–°ç‰ˆæœ¬çš„å好設定標頭 XML 檔案 ({@code res/xml/preference_headers.xml}):
-</p>
+</p>
<pre>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" />
@@ -692,18 +692,18 @@ android.preference.Preference &lt;Preference&gt;} 元素會傳é€ä¸€å€‹ {@link a
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_ONE" />
&lt;/Preference>
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_TWO" />
@@ -975,11 +975,11 @@ android.preference.DialogPreference} 的建構函å¼ï¼Œè©²å好設定宣告版é
public class NumberPickerPreference extends DialogPreference {
public NumberPickerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
-
+
setDialogLayoutResource(R.layout.numberpicker_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
-
+
setDialogIcon(null);
}
...
@@ -1194,7 +1194,7 @@ protected void onRestoreInstanceState(Parcelable state) {
// Cast state to custom BaseSavedState and pass to superclass
SavedState myState = (SavedState) state;
super.onRestoreInstanceState(myState.getSuperState());
-
+
// Set this Preference's widget to reflect the restored state
mNumberPicker.setValue(myState.value);
}
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/ui-events.jd
index 68714e8b2b59..8e009e0d3bea 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/ui-events.jd
@@ -187,7 +187,7 @@ android.app.Activity} 能在發é€è‡³è¦–çª—ä¹‹å‰æ””截所有輕觸事件。</li
ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - 這讓 {@link
android.view.ViewGroup} 在發é€è‡³å­æª¢è¦–時能監控事件。</li>
<li><code>{@link android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
- ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - 呼å«é€™å€‹çˆ¶æª¢è¦–ä»¥æŒ‡å‡ºä¸æ‡‰è©²ä½¿ç”¨ <code>{@link
+ ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - 呼å«é€™å€‹çˆ¶æª¢è¦–ä»¥æŒ‡å‡ºä¸æ‡‰è©²ä½¿ç”¨ <code>{@link
android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code> 攔截輕觸事件。
</li>
</ul>
@@ -199,11 +199,11 @@ android.view.ViewGroup} 在發é€è‡³å­æª¢è¦–時能監控事件。</li>
ä¸éŽï¼Œå¦‚æžœè£ç½®å…·æœ‰è¼•觸功能,而且使用者é€éŽè¼•觸方å¼é–‹å§‹èˆ‡ä»‹é¢äº’動,就ä¸éœ€è¦å†å°‡é …ç›®å白顯示,或是å°ç‰¹å®šæª¢è¦–æä¾›ç„¦é»žã€‚
因此,這就是å稱為「輕觸模å¼ã€çš„互動模å¼ã€‚
-
+
</p>
<p>
如果是具備輕觸功能的è£ç½®ï¼Œä½¿ç”¨è€…輕觸螢幕之後,è£ç½®å°±æœƒé€²å…¥è¼•觸模å¼ã€‚
-å¾žé€™é»žä»¥æ­¤é¡žæŽ¨ï¼Œåªæœ‰
+å¾žé€™é»žä»¥æ­¤é¡žæŽ¨ï¼Œåªæœ‰
{@link android.view.View#isFocusableInTouchMode} 為 true 的檢視æ‰å¯è¨­å®šç„¦é»žï¼Œä¾‹å¦‚文字編輯å°å·¥å…·ã€‚
å…¶ä»–å¯è¼•è§¸çš„æª¢è¦–ï¼Œä¾‹å¦‚æŒ‰éˆ•ï¼Œåœ¨è¼•è§¸æ™‚ä¸æœƒæˆç‚ºç„¦é»žï¼›æŒ‰ä¸‹æ™‚ï¼Œåªæœƒè§¸ç™¼ on-click 接è½å™¨ã€‚
@@ -214,7 +214,7 @@ android.view.ViewGroup} 在發é€è‡³å­æª¢è¦–時能監控事件。</li>
</p>
<p>
-整個系統 (所有視窗和 Activity) 都會ä¿ç•™è¼•觸模å¼çš„ç‹€æ…‹ã€‚å¦‚è¦æŸ¥è©¢ç›®å‰çš„狀態,您å¯ä»¥å‘¼å«
+整個系統 (所有視窗和 Activity) 都會ä¿ç•™è¼•觸模å¼çš„ç‹€æ…‹ã€‚å¦‚è¦æŸ¥è©¢ç›®å‰çš„狀態,您å¯ä»¥å‘¼å«
{@link android.view.View#isInTouchMode} 以查看è£ç½®ç›®å‰æ˜¯å¦è™•於輕觸模å¼ã€‚
</p>
@@ -282,7 +282,7 @@ android.view.ViewGroup} 在發é€è‡³å­æª¢è¦–時能監控事件。</li>
the framework will take care of measuring, laying out, and drawing the tree
as appropriate.</li>
</ol>
-
+
<p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
the UI thread when calling any method on any View.
If you are doing work on other threads and want to update the state of a View
diff --git a/docs/html-intl/intl/zh-tw/preview/api-overview.jd b/docs/html-intl/intl/zh-tw/preview/api-overview.jd
index aeace5bdddb2..e5fdf8d6d61b 100644
--- a/docs/html-intl/intl/zh-tw/preview/api-overview.jd
+++ b/docs/html-intl/intl/zh-tw/preview/api-overview.jd
@@ -414,7 +414,7 @@ android.os.PowerManager.WakeLock}, {@link android.app.AlarmManager} 鬧é˜å’Œ GP
-
+
</p>
<p>
diff --git a/docs/html-intl/intl/zh-tw/preview/download.jd b/docs/html-intl/intl/zh-tw/preview/download.jd
index a98000a61bbf..caa2a55588e2 100644
--- a/docs/html-intl/intl/zh-tw/preview/download.jd
+++ b/docs/html-intl/intl/zh-tw/preview/download.jd
@@ -264,7 +264,7 @@ page.image=images/cards/card-n-downloads_2x.png
-
+
</p>
<!-- You can flash by ota or system image --><p>
@@ -289,7 +289,7 @@ page.image=images/cards/card-n-downloads_2x.png
如果您決定手動更新è£ç½®å¾Œè¦æŽ¥æ”¶ OTA 更新,您唯一è¦åšçš„事是在 <a href="https://g.co/androidbeta">Android Beta 計劃</a>中註冊è£ç½®ã€‚您å¯ä»¥éš¨æ™‚註冊è£ç½®ï¼Œä»¥éš”ç©ºå‚³è¼¸æ–¹å¼æŽ¥æ”¶ä¸‹ä¸€å€‹ã€ŒPreviewã€æ›´æ–°ã€‚
-
+
</p>
<table>
@@ -300,64 +300,73 @@ page.image=images/cards/card-n-downloads_2x.png
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
- <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
- MD5:b5cf874021023b398f5b983b24913f5d<br>
- SHA-1:6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+ <td><a href="#top" onclick="onDownload(this)"
+ >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+ MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+ SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
- MD5:af183638cf34e0eb944a1957d7696f60<br>
- SHA-1:54b13c6703d369cc79a8fd8728fe4103c6343973
+ <td><a href="#top" onclick="onDownload(this)"
+ >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+ MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+ SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
- <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
- MD5:bc4934ea7bd325753eee1606d3725a24<br>
- SHA-1:85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+ <td><a href="#top" onclick="onDownload(this)"
+ >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+ MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+ SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
- MD5:c901334c6158351e945f188167ae56f4<br>
- SHA-1:0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantis-npd90g-factory-41b55406.tgz</a><br>
+ MD5: cefa78950141da2a7c75e887717e3c8f<br>
+ SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
- <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
- MD5:7bb95bebc478d7257cccb4652899d1b4<br>
- SHA-1:1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+ <td><a href="#top" onclick="onDownload(this)"
+ >volantisg-npd90g-factory-610492be.tgz</a><br>
+ MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+ SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
- MD5:f5d3d8f75836ccfe4c70e8162e498be4<br>
- SHA-1:7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+ <td><a href="#top" onclick="onDownload(this)"
+ >fugu-npd90g-factory-0fe95694.tgz</a><br>
+ MD5: f4cb48f919e4c29c631de21416c612e2<br>
+ SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
- <td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
- MD5:4e21fb183bbbf467bee91598d587fd2e<br>
- SHA-1:335a86a435ee51f18464de343ad2e071c38f0e92
+ <td><a href="#top" onclick="onDownload(this)"
+ >ryu-npd90g-factory-f4da981c.tgz</a><br>
+ MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+ SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
</td>
</tr>
+
<tr id="seed">
- <td>一般行動è£ç½® 4G (Android One) <br>"seed"</td>
- <td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
- MD5:983e083bc7cd0c4a2d39d6ebaa20202a<br>
- SHA-1:82472ebc9a6054a103f53cb400a1351913c95127
+ <td>General Mobile 4G (Android One) <br>"seed"</td>
+ <td><a href="#top" onclick="onDownload(this)"
+ >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+ MD5: 0ed565c509594072822d71c65b48ec8e<br>
+ SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
</td>
</tr>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/background-optimization.jd b/docs/html-intl/intl/zh-tw/preview/features/background-optimization.jd
index d0883810fed0..123498b08b89 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/zh-tw/preview/features/background-optimization.jd
@@ -88,7 +88,7 @@ page.image=images/cards/card-nyc_2x.jpg
</p>
<p>
- 在此文件中,我們將學習如何使用替代方法 (例如
+ 在此文件中,我們將學習如何使用替代方法 (例如
{@link android.app.job.JobScheduler}) 改寫您的應用程å¼ä»¥é…åˆé€™äº›æ–°çš„é™åˆ¶ã€‚
</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd b/docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd
index a42ec11b940d..7e4ea732b244 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd
@@ -87,7 +87,7 @@ page.image=images/cards/card-nyc_2x.jpg
<h2 id="access">å­˜å–è£ç½®åŠ å¯†çš„å„²å­˜ç©ºé–“</h2>
<p>如果è¦å­˜å–è£ç½®åŠ å¯†çš„å„²å­˜ç©ºé–“ï¼Œè«‹é€éŽå‘¼å«
-<code>Context.createDeviceEncryptedStorageContext()</code> 以建立第二個
+<code>Context.createDeviceEncryptedStorageContext()</code> 以建立第二個
{@link android.content.Context} 實例。使用此內容建立的所有儲存 API 呼å«éƒ½å¯ä»¥å­˜å–è£ç½®åŠ å¯†çš„å„²å­˜ç©ºé–“ã€‚
下列範例會存å–è£ç½®åŠ å¯†çš„å„²å­˜ç©ºé–“ä¸¦é–‹å•Ÿç¾æœ‰çš„æ‡‰ç”¨ç¨‹å¼è³‡æ–™æª”案:
diff --git a/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd b/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd
index 788951c8fb98..5ea247bd4b5e 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd
@@ -170,7 +170,7 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<h4 id="resizeableActivity">android:resizeableActivity</h4>
<p>
- 在宣示說明的 <code>&lt;activity&gt;</code> 或
+ 在宣示說明的 <code>&lt;activity&gt;</code> 或
<code>&lt;application&gt;</code> 節點中,設定此屬性以啟用或åœç”¨å¤šè¦–窗顯示:
</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd b/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd
index b0ee8b8360cb..6b8a17805fa5 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd
@@ -150,7 +150,7 @@ public void onPictureInPictureChanged(boolean inPictureInPicture) {
<p>當您的活動切æ›åˆ° PIP 時,系統會將活動視為暫åœç‹€æ…‹ä¸¦å‘¼å«æ‚¨æ´»å‹•çš„ <code>onPause()</code> 方法。
å½±ç‰‡æ’­æ”¾ä¸æ‡‰è©²æš«åœï¼Œè€Œä¸”活動因為 PIP 模å¼è€Œæš«åœæ™‚,影片應該繼續播放。
-查看您活動的
+查看您活動的
<code>onPause()</code> 方法中的 PIP 並é©ç•¶åœ°è™•ç†æ’­æ”¾ï¼Œä¾‹å¦‚:
</p>
diff --git a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/index.jd b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/index.jd
index 4225184c8021..acee1d421fc4 100644
--- a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/index.jd
+++ b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/index.jd
@@ -55,7 +55,7 @@ android.app.Activity} 執行個體都會接收的生命週期é‡è¦å›žå‘¼æ–¹æ³•ï
</p>
<h2>課程</h2>
-
+
<dl>
<dt><b><a href="starting.html">啟動應用行為顯示</a></b></dt>
<dd>了解應用行為顯示生命週期的有關基本概念ã€ä½¿ç”¨è€…啟動應用程å¼çš„æ–¹å¼ï¼Œä»¥åŠå»ºç«‹åŸºæœ¬æ‡‰ç”¨è¡Œç‚ºé¡¯ç¤ºçš„執行方å¼ã€‚
@@ -68,5 +68,5 @@ android.app.Activity} 執行個體都會接收的生命週期é‡è¦å›žå‘¼æ–¹æ³•ï
<dt><b><a href="recreating.html">釿–°å»ºç«‹æ‡‰ç”¨è¡Œç‚ºé¡¯ç¤º</a></b></dt>
<dd>了解在應用行為顯示é­çµ‚çµæ™‚的狀æ³ï¼Œä»¥åŠå¦‚ä½•åœ¨éœ€è¦æ™‚釿–°å»ºç½®æ‡‰ç”¨è¡Œç‚ºé¡¯ç¤ºç‹€æ…‹ã€‚
</dd>
-</dl>
+</dl>
diff --git a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/pausing.jd
index 8c0843da6a3a..f47768a68c9d 100644
--- a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>本課程示範</h2>
<ol>
<li><a href="#Pause">æš«åœæ‚¨çš„æ‡‰ç”¨è¡Œç‚ºé¡¯ç¤º</a></li>
<li><a href="#Resume">繼續您的應用行為顯示</a></li>
</ol>
-
+
<h2>您也應該閱讀</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">應用行為顯示</a>
@@ -59,7 +59,7 @@ android.app.Activity#onPause()} 的呼å«ï¼Œå¯èƒ½è¡¨ç¤ºè©²æ‡‰ç”¨è¡Œç‚ºé¡¯ç¤ºå°‡
<h2 id="Pause">æš«åœæ‚¨çš„æ‡‰ç”¨è¡Œç‚ºé¡¯ç¤º</h2>
-
+
<p>è‹¥ç³»çµ±ç‚ºæ‚¨çš„æ‡‰ç”¨è¡Œç‚ºé¡¯ç¤ºå‘¼å« {@link android.app.Activity#onPause()},嚴格來說æ„å‘³è‘—æ‚¨çš„æ‡‰ç”¨è¡Œç‚ºé¡¯ç¤ºä»æ˜¯éƒ¨åˆ†å¯è¦‹ï¼Œä½†å¤šæ•¸æƒ…æ³ä¸‹è¡¨ç¤ºä½¿ç”¨è€…é›¢é–‹æ‡‰ç”¨è¡Œç‚ºé¡¯ç¤ºï¼Œè©²æ‡‰ç”¨è¡Œç‚ºé¡¯ç¤ºå¾ˆå¿«å°‡é€²å…¥ã€Œå·²åœæ­¢ã€ç‹€æ…‹ã€‚
通常,您應使用 {@link android.app.Activity#onPause()} 回呼執行以下æ“作:
diff --git a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/recreating.jd b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/recreating.jd
index 4b0efdaa3d85..ad23786584f5 100644
--- a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>本課程示範</h2>
<ol>
<li><a href="#SaveState">儲存您的應用行為顯示狀態</a></li>
<li><a href="#RestoreState">還原您的應用行為顯示狀態</a></li>
</ol>
-
+
<h2>您也應該閱讀</h2>
<ul>
<li><a href="{@docRoot}training/basics/supporting-devices/screens.html">支æ´ä¸åŒçš„螢幕</a>
@@ -105,7 +105,7 @@ public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-
+
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
@@ -138,7 +138,7 @@ onCreate()} 中還原æŸäº›ç‹€æ…‹è³‡æ–™ï¼š</p>
&#64;Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Always call the superclass first
-
+
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore value of members from saved state
@@ -157,12 +157,12 @@ android.app.Activity#onRestoreInstanceState onRestoreInstanceState()},系統æœ
åªæœ‰å­˜åœ¨è¦é‚„åŽŸçš„å·²å„²å­˜ç‹€æ…‹æ™‚ï¼Œç³»çµ±æ‰æœƒå‘¼å« {@link
android.app.Activity#onRestoreInstanceState onRestoreInstanceState()},因此您無需檢查 {@link android.os.Bundle} 是å¦ç‚º null:
</p>
-
+
<pre>
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
-
+
// Restore state members from saved instance
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/starting.jd b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/starting.jd
index fae2fa35091d..b03f22be9200 100644
--- a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>本課程示範</h2>
<ol>
<li><a href="#lifecycle-states">了解生命週期回呼</a></li>
@@ -17,7 +17,7 @@ trainingnavtop=true
<li><a href="#Create">建立新執行個體</a></li>
<li><a href="#Destroy">çµ‚çµæ‡‰ç”¨è¡Œç‚ºé¡¯ç¤º</a></li>
</ol>
-
+
<h2>您也應該閱讀</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">應用行為顯示</a></li>
@@ -83,7 +83,7 @@ trainingnavtop=true
</ul>
<!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
methods.</p>
<table>
<tr>
@@ -138,7 +138,7 @@ android.app.Activity#onResume()}。
-<h2 id="launching-activity">指定您應用程å¼çš„啟動器應用行為顯示</h2>
+<h2 id="launching-activity">指定您應用程å¼çš„啟動器應用行為顯示</h2>
<p>若使用者從主螢幕中é¸å–您的應用程å¼åœ–示,系統會é‡å°æ‡‰ç”¨ç¨‹å¼ä¸­æ‚¨å·²å®£å‘Šä½œç‚ºã€Œå•Ÿå‹•器ã€(或「主程å¼ã€) 應用行為顯示的 {@link android.app.Activity}ï¼Œå‘¼å« {@link
android.app.Activity#onCreate onCreate()} 方法。
@@ -151,7 +151,7 @@ android.app.Activity#onCreate onCreate()} 方法。
<p>必須在宣示說明中使用 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
<intent-filter>}</a> (包括 {@link
android.content.Intent#ACTION_MAIN MAIN} 行為與 {@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} 類別) 宣告您應用程å¼çš„ä¸»è¦æ‡‰ç”¨è¡Œç‚ºé¡¯ç¤ºã€‚
-例如:</p>
+例如:</p>
<pre>
&lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -200,10 +200,10 @@ public void onCreate(Bundle savedInstanceState) {
// Set the user interface layout for this Activity
// The layout file is defined in the project res/layout/main_activity.xml file
setContentView(R.layout.main_activity);
-
+
// Initialize member TextView so we can manipulate it later
mTextView = (TextView) findViewById(R.id.text_message);
-
+
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// For the main activity, make sure the app icon in the action bar
@@ -268,7 +268,7 @@ android.app.Activity#onDestroy} 期間終止這些執行緒或資æºã€‚
&#64;Override
public void onDestroy() {
super.onDestroy(); // Always call the superclass
-
+
// Stop method tracing that the activity started during onCreate()
android.os.Debug.stopMethodTracing();
}
diff --git a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/stopping.jd b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/stopping.jd
index a2da5cab11b1..9d9ea5d95410 100644
--- a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>本課程示範</h2>
<ol>
<li><a href="#Stop">åœæ­¢æ‚¨çš„æ‡‰ç”¨è¡Œç‚ºé¡¯ç¤º</a></li>
<li><a href="#Start">啟動/釿–°å•Ÿå‹•您的應用行為顯示</a></li>
</ol>
-
+
<h2>您也應該閱讀</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">應用行為顯示</a>
@@ -152,13 +152,13 @@ android.app.Activity#onStart()}。
&#64;Override
protected void onStart() {
super.onStart(); // Always call the superclass method first
-
+
// The activity is either being restarted or started for the first time
// so this is where we should make sure that GPS is enabled
- LocationManager locationManager =
+ LocationManager locationManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-
+
if (!gpsEnabled) {
// Create a dialog here that requests the user to enable GPS, and use an intent
// with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -169,8 +169,8 @@ protected void onStart() {
&#64;Override
protected void onRestart() {
super.onRestart(); // Always call the superclass method first
-
- // Activity being restarted from stopped state
+
+ // Activity being restarted from stopped state
}
</pre>
diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml
index 4a9cab6d239f..4cfe8087a1ef 100644
--- a/docs/html/_redirects.yaml
+++ b/docs/html/_redirects.yaml
@@ -1146,47 +1146,47 @@ redirects:
# Android Studio help button redirects
- from: /r/studio-ui/vector-asset-studio.html
- to: /studio/write/vector-asset-studio.html
+ to: /studio/write/vector-asset-studio.html?utm_medium=android-studio
- from: /r/studio-ui/image-asset-studio.html
- to: /studio/write/image-asset-studio.html
+ to: /studio/write/image-asset-studio.html?utm_medium=android-studio
- from: /r/studio-ui/project-structure.html
- to: /studio/projects/index.html
+ to: /studio/projects/index.html?utm_medium=android-studio
- from: /r/studio-ui/android-monitor.html
- to: /studio/profile/android-monitor.html
+ to: /studio/profile/android-monitor.html?utm_medium=android-studio
- from: /r/studio-ui/am-logcat.html
- to: /studio/debug/am-logcat.html
+ to: /studio/debug/am-logcat.html?utm_medium=android-studio
- from: /r/studio-ui/am-memory.html
- to: /studio/profile/am-memory.html
+ to: /studio/profile/am-memory.html?utm_medium=android-studio
- from: /r/studio-ui/am-cpu.html
- to: /studio/profile/am-cpu.html
+ to: /studio/profile/am-cpu.html?utm_medium=android-studio
- from: /r/studio-ui/am-gpu.html
- to: /studio/profile/am-gpu.html
+ to: /studio/profile/am-gpu.html?utm_medium=android-studio
- from: /r/studio-ui/am-network.html
- to: /studio/profile/am-network.html
+ to: /studio/profile/am-network.html?utm_medium=android-studio
- from: /r/studio-ui/am-hprof.html
- to: /studio/profile/am-hprof.html
+ to: /studio/profile/am-hprof.html?utm_medium=android-studio
- from: /r/studio-ui/am-allocation.html
- to: /studio/profile/am-allocation.html
+ to: /studio/profile/am-allocation.html?utm_medium=android-studio
- from: /r/studio-ui/am-methodtrace.html
- to: /studio/profile/am-methodtrace.html
+ to: /studio/profile/am-methodtrace.html?utm_medium=android-studio
- from: /r/studio-ui/am-sysinfo.html
- to: /studio/profile/am-sysinfo.html
+ to: /studio/profile/am-sysinfo.html?utm_medium=android-studio
- from: /r/studio-ui/am-screenshot.html
- to: /studio/debug/am-screenshot.html
+ to: /studio/debug/am-screenshot.html?utm_medium=android-studio
- from: /r/studio-ui/am-video.html
- to: /studio/debug/am-video.html
+ to: /studio/debug/am-video.html?utm_medium=android-studio
- from: /r/studio-ui/avd-manager.html
- to: /studio/run/managing-avds.html
+ to: /studio/run/managing-avds.html?utm_medium=android-studio
- from: /r/studio-ui/rundebugconfig.html
- to: /studio/run/rundebugconfig.html
+ to: /studio/run/rundebugconfig.html?utm_medium=android-studio
- from: /r/studio-ui/devicechooser.html
- to: /studio/run/emulator.html
+ to: /studio/run/emulator.html?utm_medium=android-studio
- from: /r/studio-ui/virtualdeviceconfig.html
- to: /studio/run/managing-avds.html
+ to: /studio/run/managing-avds.html?utm_medium=android-studio
- from: /r/studio-ui/emulator.html
- to: /studio/run/emulator.html
+ to: /studio/run/emulator.html?utm_medium=android-studio
- from: /r/studio-ui/instant-run.html
- to: /studio/run/index.html#instant-run
+ to: /studio/run/index.html?utm_medium=android-studio#instant-run
- from: /r/studio-ui/test-recorder.html
to: http://tools.android.com/tech-docs/test-recorder
- from: /r/studio-ui/export-licenses.html
@@ -1194,6 +1194,10 @@ redirects:
- from: /r/studio-ui/experimental-to-stable-gradle.html
to: http://tools.android.com/tech-docs/new-build-system/gradle-experimental/experimental-to-stable-gradle
- from: /r/studio-ui/sdk-manager.html
- to: https://developer.android.com/studio/intro/update.html#sdk-manager
+ to: /studio/intro/update.html?utm_medium=android-studio#sdk-manager
- from: /r/studio-ui/newjclass.html
- to: /studio/write/index.html
+ to: /studio/write/index.html?utm_medium=android-studio
+- from: /r/studio-ui/menu-help.html
+ to: /studio/intro/index.html?utm_medium=android-studio
+- from: /r/studio-ui/menu-start.html
+ to: /training/index.html?utm_medium=android-studio
diff --git a/docs/html/about/android.jd b/docs/html/about/android.jd
index e3b6958db73e..6e573906c728 100644
--- a/docs/html/about/android.jd
+++ b/docs/html/about/android.jd
@@ -26,11 +26,11 @@ the fastest-growing mobile OS.</p>
<blockquote>Every day more than a million new Android devices are activated worldwide.</blockquote>
<p>Android’s openness has made it a favorite for consumers and developers alike,
-driving strong growth in app consumption. Android users download
+driving strong growth in app consumption. Android users download
billions of apps and games from Google Play each month. </p>
<p>With its partners, Android is continuously pushing the boundaries of hardware and software
-forward to bring new capabilities to users and developers. For developers,
+forward to bring new capabilities to users and developers. For developers,
Android innovation lets you build powerful, differentiated applications
that use the latest mobile technologies.</p>
@@ -59,7 +59,7 @@ devices&mdash;from phones to tablets and beyond.</p>
advantage of the hardware capabilities available on each device. It
automatically adapts your UI to look its best on each device, while giving you
as much control as you want over your UI on different device
-types. </p>
+types. </p>
<p>For example, you can create a single app binary that's optimized for
both phone and tablet form factors. You declare your UI in lightweight sets of XML
@@ -70,7 +70,7 @@ density, locale,
and so on.</p>
-<p>To help you develop efficiently, the <a href="{@docRoot}tools/index.html">Android
+<p>To help you develop efficiently, the <a href="{@docRoot}tools/index.html">Android
Developer Tools</a>
offer a full Java IDE with advanced features for developing, debugging, and
packaging Android apps. Using the IDE, you can develop on any available Android
diff --git a/docs/html/about/index.jd b/docs/html/about/index.jd
index 22f504edc408..274a5115c612 100644
--- a/docs/html/about/index.jd
+++ b/docs/html/about/index.jd
@@ -34,11 +34,11 @@ the fastest-growing mobile OS.</p>
<blockquote>Every day more than 1 million new Android devices are activated worldwide.</blockquote>
<p>Android’s openness has made it a favorite for consumers and developers alike,
-driving strong growth in app consumption. Android users download more than
+driving strong growth in app consumption. Android users download more than
1.5 billion apps and games from Google Play each month. </p>
<p>With its partners, Android is continuously pushing the boundaries of hardware and software
-forward to bring new capabilities to users and developers. For developers,
+forward to bring new capabilities to users and developers. For developers,
Android innovation lets you build powerful, differentiated applications
that use the latest mobile technologies.</p>
@@ -68,7 +68,7 @@ devices&mdash;from phones to tablets and beyond.</p>
advantage of the hardware capabilities available on each device. It
automatically adapts your UI to look its best on each device, while giving you
as much control as you want over your UI on different device
-types. </p>
+types. </p>
<p>For example, you can create a single app binary that's optimized for
both phone and tablet form factors. You declare your UI in lightweight sets of XML
@@ -79,7 +79,7 @@ density, locale,
and so on.</p>
-<p>To help you develop efficiently, the <a href="{@docRoot}tools/index.html">Android
+<p>To help you develop efficiently, the <a href="{@docRoot}tools/index.html">Android
Developer Tools</a>
offer a full Java IDE with advanced features for developing, debugging, and
packaging Android apps. Using the IDE, you can develop on any available Android
diff --git a/docs/html/about/versions/android-1.1.jd b/docs/html/about/versions/android-1.1.jd
index b2a16153e294..e7d059e1f27b 100644
--- a/docs/html/about/versions/android-1.1.jd
+++ b/docs/html/about/versions/android-1.1.jd
@@ -9,7 +9,7 @@ sys.date=February 2009
<em>API Level:</em>&nbsp;<strong>2</strong></p>
-<p>This document provides version notes for the Android 1.1 system image included in the SDK.
+<p>This document provides version notes for the Android 1.1 system image included in the SDK.
<ul>
<li><a href="#overview">Overview</a>
@@ -29,7 +29,7 @@ counterpart to the Android 1.1 production system image, deployable to
Android-powered handsets starting in February 2009. </p>
<p>The Android 1.1 system image delivers an updated version of the framework
-API. As with the Android 1.0 API, the Android 1.1 API
+API. As with the Android 1.0 API, the Android 1.1 API
is assigned an integer identifier &mdash; <strong>2</strong> &mdash; that is
stored in the system itself. This identifier, called the "API Level", allows the
system to correctly determine whether an application is compatible with
@@ -37,8 +37,8 @@ the system, prior to installing the application. </p>
<p>Applications indicate the lowest system API Level that they are compatible with by adding
a value to the <code>android:minSdkVersion</code> attribute.
-The value of the attribute is an integer corresponding to an API Level
-identifier. Prior to installing an application, the system checks the value of
+The value of the attribute is an integer corresponding to an API Level
+identifier. Prior to installing an application, the system checks the value of
<code>android:minSdkVersion</code> and allows the install only
if the referenced integer is less than or equal to the API Level integer stored
in the system itself. </p>
@@ -139,7 +139,7 @@ listed below.</p>
<li>German (de) </li>
</ul>
-<p>Localized UI strings match the locales that are displayable in
+<p>Localized UI strings match the locales that are displayable in
the emulator, accessible through the device Settings application.</p>
<h2 id="resolved-issues">Resolved Issues</h2>
diff --git a/docs/html/about/versions/android-1.5-highlights.jd b/docs/html/about/versions/android-1.5-highlights.jd
index dd4d218365b7..e0bae48b4a99 100644
--- a/docs/html/about/versions/android-1.5-highlights.jd
+++ b/docs/html/about/versions/android-1.5-highlights.jd
@@ -7,7 +7,7 @@ excludeFromSuggestions=true
</p>
-<p>The Android 1.5 platform introduces many new features for users and developers.
+<p>The Android 1.5 platform introduces many new features for users and developers.
The list below provides an overview of the changes. </p>
<ul>
@@ -65,7 +65,7 @@ The list below provides an overview of the changes. </p>
<ul>
<li>Widgets
<ul>
- <li>Bundled home screen widgets include: analog clock, calendar,
+ <li>Bundled home screen widgets include: analog clock, calendar,
music player, picture frame, and search</li>
</ul></li>
<li>Live folders</li>
@@ -121,7 +121,7 @@ The list below provides an overview of the changes. </p>
<li>Google applications (not available in the Android 1.5 System Image that is
included in the Android SDK)
<ul>
- <li>View Google Talk friends' status in Contacts, SMS, MMS, GMail, and
+ <li>View Google Talk friends' status in Contacts, SMS, MMS, GMail, and
Email applications</li>
<li>Batch actions such as archive, delete, and label on Gmail messages</li>
<li>Upload videos to Youtube</li>
@@ -165,7 +165,7 @@ framework</a> on the Android Developer's Blog.</li>
</ul>
</li>
-<li>Input Method framework
+<li>Input Method framework
<ul>
<li>{@link android.inputmethodservice.InputMethodService Input Method
Service} framework</li>
diff --git a/docs/html/about/versions/android-1.5.jd b/docs/html/about/versions/android-1.5.jd
index 775561bffe8b..45a27eefb733 100644
--- a/docs/html/about/versions/android-1.5.jd
+++ b/docs/html/about/versions/android-1.5.jd
@@ -55,7 +55,7 @@ download the platform into your Android 1.6 or later SDK.</p>
<h2 id="features">Platform Highlights</h2>
<p>For a list of new user features and platform highlights, see the <a
-href="http://developer.android.com/about/versions/android-{@sdkPlatformVersion}-highlights.html">Android
+href="http://developer.android.com/about/versions/android-{@sdkPlatformVersion}-highlights.html">Android
{@sdkPlatformVersion} Platform Highlights</a> document.</p>
<h2 id="relnotes">Revisions</h2>
@@ -119,10 +119,10 @@ function toggleDiv(link) {
<dt>Tools:</dt>
<dd>
-<ul>
+<ul>
<li>Adds support for library projects in the Ant build system.</li>
<li>Fixes test project build in the Ant build system.</li>
-</ul>
+</ul>
</dd>
</dl>
@@ -256,8 +256,8 @@ android.speech.RecognizerIntent RecognizerIntent}.</li>
<h3 id="api-diff">API differences report</h3>
-<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to
-the previous version, see the <a href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
+<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to
+the previous version, see the <a href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report</a>.</p>
@@ -300,8 +300,8 @@ built-in applications:</p>
<p>The system image included in the downloadable platform provides a variety of
built-in locales. In some cases, region-specific strings are available for the
locales. In other cases, a default version of the language is used. The
-languages that are available in the Android {@sdkPlatformVersion} system
-image are listed below (with <em>language</em>_<em>country/region</em>
+languages that are available in the Android {@sdkPlatformVersion} system
+image are listed below (with <em>language</em>_<em>country/region</em>
locale descriptor).</p>
<table style="border:0;padding-bottom:0;margin-bottom:0;">
@@ -341,7 +341,7 @@ locale descriptor).</p>
</tr>
</table>
-<p>Localized UI strings match the locales that are accessible
+<p>Localized UI strings match the locales that are accessible
through Settings.</p>
<h2 id="skins">Emulator Skins</h2>
diff --git a/docs/html/about/versions/android-1.6-highlights.jd b/docs/html/about/versions/android-1.6-highlights.jd
index 88c0f55c8fc1..91795798bb00 100644
--- a/docs/html/about/versions/android-1.6-highlights.jd
+++ b/docs/html/about/versions/android-1.6-highlights.jd
@@ -28,13 +28,13 @@ sdk.date=September 2009
<object width="278" height="180">
<param name="movie" value="http://www.youtube.com/v/MBRFkLKRwFw&hl=en&fs=1&"></param>
<param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
-<embed src="//www.youtube.com/v/MBRFkLKRwFw&hl=en&fs=1&" type="application/x-shockwave-flash"
+<embed src="//www.youtube.com/v/MBRFkLKRwFw&hl=en&fs=1&" type="application/x-shockwave-flash"
allowscriptaccess="always" allowfullscreen="true" width="278" height="180"></embed>
</object>
</div>
-<p>The Android 1.6 platform introduces new features for users and developers.
+<p>The Android 1.6 platform introduces new features for users and developers.
This page provides an overview of some new features and technologies.</p>
<ul>
@@ -44,7 +44,7 @@ This page provides an overview of some new features and technologies.</p>
</ul>
-
+
<h2 id="UserFeatures" style="clear:right">New User Features</h2>
<!-- screenshots float right -->
@@ -53,7 +53,7 @@ This page provides an overview of some new features and technologies.</p>
<img src="{@docRoot}sdk/images/search.png" class="screenshot" alt="" /><br/>
Quick Search Box
</div>
-
+
<div class="screenshot">
<img src="{@docRoot}sdk/images/camera.png" class="screenshot" alt="" /><br/>
New Camera/Camcorder UI
@@ -67,32 +67,32 @@ Battery Usage Indicator
<h3 id="QuickSearchBox">Quick Search Box for Android</h3>
-<p>Android 1.6 includes a redesigned search framework that provides a quick,
-effective, and consistent way for users to search across multiple sources&mdash;such as
-browser bookmarks &amp; history, contacts, and the web&mdash;directly from
+<p>Android 1.6 includes a redesigned search framework that provides a quick,
+effective, and consistent way for users to search across multiple sources&mdash;such as
+browser bookmarks &amp; history, contacts, and the web&mdash;directly from
the home screen.</p>
-<p>The system constantly learns which search results are more relevant based on what is
-clicked. So popular contacts or apps that have previously been picked will bubble up to
+<p>The system constantly learns which search results are more relevant based on what is
+clicked. So popular contacts or apps that have previously been picked will bubble up to
the top when a user types the first few letters of a relevant query.</p>
-<p>The search framework also provides developers a way to easily expose relevant
+<p>The search framework also provides developers a way to easily expose relevant
content from their applications in Quick Search Box.</p>
<h3 id="Camera">Camera, Camcorder, and Gallery</h3>
-<p>An updated user interface provides an integrated camera, camcorder, and gallery experience.
-Users can quickly toggle between still and video capture modes. Additionally, the gallery
+<p>An updated user interface provides an integrated camera, camcorder, and gallery experience.
+Users can quickly toggle between still and video capture modes. Additionally, the gallery
enables users to select multiple photos for deletion.</p>
<p>Android 1.6 also provides a much faster camera experience.
-Compared to the previous release, launching the camera is now 39% faster,
+Compared to the previous release, launching the camera is now 39% faster,
and there is a 28% improvement in the time from completing one shot to the next.</p>
<h3 id="VPN">VPN, 802.1x</h3>
-<p>A new Virtual Private Network (VPN) control panel in Settings allows users
+<p>A new Virtual Private Network (VPN) control panel in Settings allows users
to configure and connect to the following types of VPNs:</p>
<ul>
@@ -105,8 +105,8 @@ to configure and connect to the following types of VPNs:</p>
<h3 id="Battery">Battery usage indicator</h3>
-<p>A new battery usage screen lets users see which apps and services are consuming
-battery power. If the user determines that a particular service or application is
+<p>A new battery usage screen lets users see which apps and services are consuming
+battery power. If the user determines that a particular service or application is
using too much power, they can take action to save the battery by
adjusting settings, stopping the application, or uninstalling the application.</p>
@@ -132,11 +132,11 @@ it easier for users to discover great apps and games from developers.</p>
<ul>
<li>At the homescreen, users can choose among <em>Apps</em>, <em>Games</em>, and <em>Downloads</em>.</li>
<li>Inside a category, users can explore titles that are <em>Top paid</em>, <em>Top free</em>, and <em>Just in</em>.</li>
- <li>For each title, users can now see screenshots submitted by developers in addition to
+ <li>For each title, users can now see screenshots submitted by developers in addition to
reviews from other users.</li>
</ul>
-
-
+
+
<h2 id="PlatformTechnologies" style="clear:right">New Platform Technologies</h2>
@@ -145,44 +145,44 @@ it easier for users to discover great apps and games from developers.</p>
<p>The Android search framework has been redesigned and expanded to provide
third-party applications the opportunity to surface
-content from their applications in Quick Search Box, the global search tool.
-To do this, developers will need to make their app "searchable" and provide
+content from their applications in Quick Search Box, the global search tool.
+To do this, developers will need to make their app "searchable" and provide
suggestions in response to user queries.
-To enable application search suggestions, users simply select each application from which
+To enable application search suggestions, users simply select each application from which
they'd like to receive suggestions, under Searchable items in the Search settings.</p>
<h3 id="TTS">Text-to-speech engine</h3>
-<p>Android 1.6 features a multi-lingual speech synthesis engine called Pico.
-It allows any Android application to "speak" a string of text with an accent that matches the language.
-The engine supports the following languages: English (American and British accents), French,
-Italian, German and Spanish. If you're using a T-Mobile G1 or Dream device, you'll need to download the
-SpeechSynthesis Data Installer from Google Play, which includes the "voices" needed by the
+<p>Android 1.6 features a multi-lingual speech synthesis engine called Pico.
+It allows any Android application to "speak" a string of text with an accent that matches the language.
+The engine supports the following languages: English (American and British accents), French,
+Italian, German and Spanish. If you're using a T-Mobile G1 or Dream device, you'll need to download the
+SpeechSynthesis Data Installer from Google Play, which includes the "voices" needed by the
text-to-speech engine.</p>
<h3 id="Gestures">Gestures</h3>
-<p>A new gestures framework provides application developers with a framework for creating, storing,
+<p>A new gestures framework provides application developers with a framework for creating, storing,
loading, and recognizing gestures and associating them with specific actions.</p>
-<p>Developers can use the new GestureBuilder tool included in the Android 1.6 SDK to generate libraries
+<p>Developers can use the new GestureBuilder tool included in the Android 1.6 SDK to generate libraries
of gestures to include with their application.</p>
<h3 id="A11y">Accessibility</h3>
-<p>Android 1.6 provides a new accessibility framework.
-With this framework, developers can create accessibility plugins that respond to user input,
-such as making a sound when a new window is shown, vibrating when navigating to the top of
+<p>Android 1.6 provides a new accessibility framework.
+With this framework, developers can create accessibility plugins that respond to user input,
+such as making a sound when a new window is shown, vibrating when navigating to the top of
a list, and providing spoken feedback.</p>
<h3 id="Screens">Expanded support for screen densities and resolutions</h3>
-<p>Android 1.6 adds screen support that enables applications to be rendered properly on different
-display resolutions and densities. Developers can also specify the types of screens supported by their
+<p>Android 1.6 adds screen support that enables applications to be rendered properly on different
+display resolutions and densities. Developers can also specify the types of screens supported by their
application.</p>
@@ -208,7 +208,7 @@ application.</p>
<h3 id="DeveloperAPIs">New Framework APIs</h3>
-<p>For a detailed overview of new APIs, see the
-<a href="{@docRoot}about/versions/android-1.6.html#api-changes">Version Notes</a>.
-For a complete report of all API changes, see the
+<p>For a detailed overview of new APIs, see the
+<a href="{@docRoot}about/versions/android-1.6.html#api-changes">Version Notes</a>.
+For a complete report of all API changes, see the
<a href="{@docRoot}sdk/api_diff/4/changes.html">API Differences Report</a>.
diff --git a/docs/html/about/versions/android-2.0-highlights.jd b/docs/html/about/versions/android-2.0-highlights.jd
index c16088ad8021..3f7e1c8cd238 100644
--- a/docs/html/about/versions/android-2.0-highlights.jd
+++ b/docs/html/about/versions/android-2.0-highlights.jd
@@ -33,7 +33,7 @@ sdk.date=October 2009
<object width="278 height="180">
<param name="movie" value="http://www.youtube.com/v/opZ69P-0Jbc&hl=en&fs=1&"></param>
<param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
-<embed src="//www.youtube.com/v/opZ69P-0Jbc&hl=en&fs=1&" type="application/x-shockwave-flash"
+<embed src="//www.youtube.com/v/opZ69P-0Jbc&hl=en&fs=1&" type="application/x-shockwave-flash"
allowscriptaccess="always" allowfullscreen="true" width="278" height="180"></embed>
</object>
</div>
@@ -49,7 +49,7 @@ and technologies in Android 2.0.</p>
</ul>
-
+
<h2 id="UserFeatures" style="clear:right">New User Features</h2>
<!-- screenshots float right -->
@@ -99,10 +99,10 @@ when you touch a contact photo or status icon.</li>
<!--
<ul>
- <li>Sync support for contacts from multiple data sources including Exchange.
- Handset manufacturers can choose whether or not to include Exchange support
+ <li>Sync support for contacts from multiple data sources including Exchange.
+ Handset manufacturers can choose whether or not to include Exchange support
in their devices.</li>
- <li>New way to hover on a person to see more info and select communication
+ <li>New way to hover on a person to see more info and select communication
mode (for example, phone, SMS, email).</li>
</ul>
-->
@@ -150,7 +150,7 @@ when you touch a contact photo or status icon.</li>
<h3 id="Browser">Browser</h3>
<ul>
- <li>Refreshed UI with actionable browser URL bar enables users to directly
+ <li>Refreshed UI with actionable browser URL bar enables users to directly
tap the address bar for instant searches and navigation.</li>
<li>Bookmarks with web page thumbnails.</li>
<li>Support for double-tap zoom.</li>
@@ -192,10 +192,10 @@ hardware acceleration.</p>
<h3 id="DeveloperAPIs">New Framework APIs</h3>
<p>Android 2.0 includes several new developer APIs.
-For an overview of new APIs, see the
+For an overview of new APIs, see the
<a href="{@docRoot}about/versions/android-2.0.html#api">Android 2.0 version notes</a>.</p>
-<p>For a complete report of all API changes, see the
+<p>For a complete report of all API changes, see the
<a href="{@docRoot}sdk/api_diff/5/changes.html">API Differences Report</a>.</p>
diff --git a/docs/html/about/versions/android-2.0.1.jd b/docs/html/about/versions/android-2.0.1.jd
index 48f7ae892fa7..b0f4db6c9e83 100644
--- a/docs/html/about/versions/android-2.0.1.jd
+++ b/docs/html/about/versions/android-2.0.1.jd
@@ -162,8 +162,8 @@ third-party sync adapters.</p>
<p>The system image included in the downloadable platform provides a variety of
built-in locales. In some cases, region-specific strings are available for the
locales. In other cases, a default version of the language is used. The
-languages that are available in the Android {@sdkPlatformVersion} system
-image are listed below (with <em>language</em>_<em>country/region</em> locale
+languages that are available in the Android {@sdkPlatformVersion} system
+image are listed below (with <em>language</em>_<em>country/region</em> locale
descriptor).</p>
<table style="border:0;padding-bottom:0;margin-bottom:0;">
@@ -203,7 +203,7 @@ descriptor).</p>
</tr>
</table>
-<p>Localized UI strings match the locales that are accessible
+<p>Localized UI strings match the locales that are accessible
through Settings.</p>
<h2 id="skins">Emulator Skins</h2>
@@ -263,8 +263,8 @@ stored in the system itself. This identifier, called the "API Level", allows the
system to correctly determine whether an application is compatible with
the system, prior to installing the application. </p>
-<p>To use APIs introduced in Android {@sdkPlatformVersion} in your application, you need to
-set the proper value, "{@sdkPlatformApiLevel}", in the attributes of the <code>&lt;uses-sdk&gt;</code>
+<p>To use APIs introduced in Android {@sdkPlatformVersion} in your application, you need to
+set the proper value, "{@sdkPlatformApiLevel}", in the attributes of the <code>&lt;uses-sdk&gt;</code>
element in your application's manifest. </p>
<p>For more information about how to use API Level, see the <a
@@ -345,10 +345,10 @@ package name, rather than the process name.</li>
<h3 id="api-diff">API differences report</h3>
-<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to
+<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to
API Level 5, see the <a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
-Differences Report</a>. There are very few API changes in API Level 6,
+Differences Report</a>. There are very few API changes in API Level 6,
so you might also be interested in reviewing the <a
href="{@docRoot}sdk/api_diff/5/changes.html">API
differences between 4 and 5</a>.</p>
diff --git a/docs/html/about/versions/android-2.0.jd b/docs/html/about/versions/android-2.0.jd
index 329af3cf1d69..03236860c5f3 100644
--- a/docs/html/about/versions/android-2.0.jd
+++ b/docs/html/about/versions/android-2.0.jd
@@ -50,7 +50,7 @@ download the platform into your SDK.</p>
<h2 id="features">Platform Highlights</h2>
<p>For a list of new user features and platform highlights, see the <a
-href="http://developer.android.com/about/versions/android-{@sdkPlatformVersion}-highlights.html">Android
+href="http://developer.android.com/about/versions/android-{@sdkPlatformVersion}-highlights.html">Android
{@sdkPlatformVersion} Platform Highlights</a> document.</p>
<h2 id="relnotes">Revisions</h2>
@@ -151,8 +151,8 @@ built-in applications:</p>
<p>The system image included in the downloadable platform provides a variety of
built-in locales. In some cases, region-specific strings are available for the
locales. In other cases, a default version of the language is used. The
-languages that are available in the Android {@sdkPlatformVersion} system
-image are listed below (with <em>language</em>_<em>country/region</em> locale
+languages that are available in the Android {@sdkPlatformVersion} system
+image are listed below (with <em>language</em>_<em>country/region</em> locale
descriptor).</p>
<table style="border:0;padding-bottom:0;margin-bottom:0;">
@@ -192,7 +192,7 @@ descriptor).</p>
</tr>
</table>
-<p>Localized UI strings match the locales that are accessible
+<p>Localized UI strings match the locales that are accessible
through Settings.</p>
<h2 id="skins">Emulator Skins</h2>
@@ -242,14 +242,14 @@ through Settings.</p>
<h3 id="api-level">API level</h3>
<p>The Android {@sdkPlatformVersion} platform delivers an updated version of the framework
-API. As with previous versions, the Android {@sdkPlatformVersion} API
+API. As with previous versions, the Android {@sdkPlatformVersion} API
is assigned an integer identifier &mdash; <strong>{@sdkPlatformApiLevel}</strong> &mdash; that is
stored in the system itself. This identifier, called the "API Level", allows the
system to correctly determine whether an application is compatible with
the system, prior to installing the application. </p>
-<p>To use APIs introduced in Android {@sdkPlatformVersion} in your application, you need to
-set the proper value, "{@sdkPlatformApiLevel}", in the attributes of the <code>&lt;uses-sdk&gt;</code>
+<p>To use APIs introduced in Android {@sdkPlatformVersion} in your application, you need to
+set the proper value, "{@sdkPlatformApiLevel}", in the attributes of the <code>&lt;uses-sdk&gt;</code>
element in your application's manifest. </p>
<p>For more information about how to use API Level, see the <a
@@ -319,8 +319,8 @@ href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Level
<p>Android 2.0 is designed to run on devices that use virtual keys for HOME,
MENU, BACK, and SEARCH, rather than physical keys. To support the best user
experience on those devices, the Android platform now executes these buttons at
-key-up, for a key-down/key-up pair, rather than key-down. This helps prevent
-accidental button events and lets the user press the button area and then drag
+key-up, for a key-down/key-up pair, rather than key-down. This helps prevent
+accidental button events and lets the user press the button area and then drag
out of it without generating an event. </p>
<p>This change in behavior should only affect your application if it is
@@ -332,7 +332,7 @@ make sure that your application is handling the key events properly. </p>
however, if your application is doing so and it invokes some action on
key-down, rather than key-up, you should modify your code. </p>
-<p>If your application will use APIs introduced in Android 2.0 (API Level 5),
+<p>If your application will use APIs introduced in Android 2.0 (API Level 5),
you can take advantage of new APIs for managing key-event pairs:</p>
<ul>
@@ -363,16 +363,16 @@ method), then invoke the action at key up. Here's a pattern you can use:</li>
</ul>
<p>If you want to update a legacy application so that its handling of the BACK
-key works properly for both Android 2.0 and older platform versions, you
+key works properly for both Android 2.0 and older platform versions, you
can use an approach similar to that shown above. Your code can catch the
-target button event on key-down, set a flag to track the key event, and
-then also catch the event on key-up, executing the desired action if the tracking
-flag is set. You'll also want to watch for focus changes and clear the tracking
+target button event on key-down, set a flag to track the key event, and
+then also catch the event on key-up, executing the desired action if the tracking
+flag is set. You'll also want to watch for focus changes and clear the tracking
flag when gaining/losing focus.</p>
<h3 id="api-diff">API differences report</h3>
-<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to
+<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to
the previous version, see the <a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API Differences Report</a>.</p>
diff --git a/docs/html/about/versions/android-2.1.jd b/docs/html/about/versions/android-2.1.jd
index ce6f1b20516c..5f8f6240c1cc 100644
--- a/docs/html/about/versions/android-2.1.jd
+++ b/docs/html/about/versions/android-2.1.jd
@@ -113,10 +113,10 @@ class="toggle-content-img" alt="" />
<dt>Tools:</dt>
<dd>
-<ul>
+<ul>
<li>Adds support for library projects in the Ant build system.</li>
<li>Adds improved layout rendering in ADT’s visual layout editor.</li>
-</ul>
+</ul>
</dd>
</dl>
diff --git a/docs/html/about/versions/android-2.3.3.jd b/docs/html/about/versions/android-2.3.3.jd
index eec0735b0842..91f1d282d1f6 100644
--- a/docs/html/about/versions/android-2.3.3.jd
+++ b/docs/html/about/versions/android-2.3.3.jd
@@ -81,7 +81,7 @@ tag technologies, based on two new intent actions &mdash;
<code>android.nfc.action.NDEF_DISCOVERED</code> and
<code>android.nfc.action.TECH_DISCOVERED</code>.</p>
-<p>The NFC API is available in the {@link android.nfc} and
+<p>The NFC API is available in the {@link android.nfc} and
{@link android.nfc.tech} packages. The key classes are: </p>
<ul>
@@ -89,7 +89,7 @@ tag technologies, based on two new intent actions &mdash;
<li>{@link android.nfc.NdefMessage}, which represents an NDEF data message,
the standard format in which "records" carrying data are transmitted between
devices and tags. An NDEF message certain many NDEF records of different types.
-Applications can receive these messages from
+Applications can receive these messages from
{@link android.nfc.NfcAdapter#ACTION_NDEF_DISCOVERED NDEF_DISCOVERED},
{@link android.nfc.NfcAdapter#ACTION_TECH_DISCOVERED TECH_DISCOVERED}, or
{@link android.nfc.NfcAdapter#ACTION_TAG_DISCOVERED TAG_DISCOVERED} Intents.</li>
@@ -124,15 +124,15 @@ NFC. To request filtering, add
<code>&lt;uses-feature android:name="android.hardware.nfc"
android:required="true"&gt;</code> to the application's manifest.</p>
-<p class="note">For more information, read the
+<p class="note">For more information, read the
<a href="{@docRoot}guide/topics/connectivity/nfc/index.html">NFC</a> developer guide.</p>
<h3 id="bluetooth">Bluetooth</h3>
<p>Android 2.3.3 adds platform and API support for Bluetooth nonsecure socket
connections. This lets applications communicate with simple devices that may not
-offer a UI for authentication. See
-{@link android.bluetooth.BluetoothDevice#createInsecureRfcommSocketToServiceRecord(java.util.UUID)} and
+offer a UI for authentication. See
+{@link android.bluetooth.BluetoothDevice#createInsecureRfcommSocketToServiceRecord(java.util.UUID)} and
{@link android.bluetooth.BluetoothAdapter#listenUsingInsecureRfcommWithServiceRecord(java.lang.String, java.util.UUID)}
for more information. </p>
@@ -183,7 +183,7 @@ the system, prior to installing the application. </p>
<p>To use APIs introduced in Android {@sdkPlatformVersion} in your application,
you need compile the application against the Android library that is provided in
-the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might
+the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might
also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
manifest. If your application is designed to run only on Android 2.3 and higher,
diff --git a/docs/html/about/versions/android-2.3.4.jd b/docs/html/about/versions/android-2.3.4.jd
index 963df9a7f51c..8705d1d50dec 100644
--- a/docs/html/about/versions/android-2.3.4.jd
+++ b/docs/html/about/versions/android-2.3.4.jd
@@ -31,7 +31,7 @@ Differences Report &raquo;</a> </li>
<p>Android 2.3.4 ({@link android.os.Build.VERSION_CODES#GINGERBREAD_MR1})
is a maintenance release that adds several bug fixes and patches
-to the Android 2.3 platform, without any API changes from Android 2.3.3. Additionally,
+to the Android 2.3 platform, without any API changes from Android 2.3.3. Additionally,
Android 2.3.4 brings support for the Open Accessory API to mobile devices,
through the optional <a href="#usb">Open Accessory Library</a>. </p>
diff --git a/docs/html/about/versions/android-2.3.jd b/docs/html/about/versions/android-2.3.jd
index 34fdb526a7e8..bc549035f486 100644
--- a/docs/html/about/versions/android-2.3.jd
+++ b/docs/html/about/versions/android-2.3.jd
@@ -240,7 +240,7 @@ reboots. </p>
<li>Applications can obtain an instance of the {@link android.app.DownloadManager}
class by calling {@link
android.content.Context#getSystemService(String)} and passing
-{@link android.content.Context#DOWNLOAD_SERVICE}. Applications that request
+{@link android.content.Context#DOWNLOAD_SERVICE}. Applications that request
downloads through this API should register a broadcast receiver for {@link
android.app.DownloadManager#ACTION_NOTIFICATION_CLICKED}, to appropriately
handle when the user clicks on a running download in a notification or from the
@@ -690,7 +690,7 @@ the system, prior to installing the application. </p>
<p>To use APIs introduced in Android {@sdkPlatformVersion} in your application,
you need compile the application against the Android library that is provided in
-the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might
+the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might
also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
manifest. If your application is designed to run only on Android 2.3 and higher,
diff --git a/docs/html/about/versions/android-3.0-highlights.jd b/docs/html/about/versions/android-3.0-highlights.jd
index 21dbda6af4ce..e9d2b392ed98 100644
--- a/docs/html/about/versions/android-3.0-highlights.jd
+++ b/docs/html/about/versions/android-3.0-highlights.jd
@@ -40,7 +40,7 @@ page.title=Honeycomb
<p>Welcome to Android 3.0!</p>
-<p>The Android 3.0 platform introduces many new and exciting features for users and developers.
+<p>The Android 3.0 platform introduces many new and exciting features for users and developers.
This document provides a glimpse of some of the new features and technologies, as delivered in
Android 3.0. For a more detailed look at new developer APIs, see the <a
href="{@docRoot}about/versions/android-3.0.html">Android 3.0 Platform</a> document.</p>
@@ -61,7 +61,7 @@ src="{@docRoot}sdk/images/3.0/home_hero1.png" alt="" height="280" /></a></div>
<p>Android 3.0 is a new version of the Android platform that is specifically optimized for devices with larger screen sizes, particularly tablets. It introduces a brand new, truly virtual and “holographic†UI design, as well as an elegant, content-focused interaction model.</p>
-<p>Android 3.0 builds on the things people love most about Android &mdash; refined multitasking, rich notifications, Home screen customization, widgets, and more &mdash; and transforms them with a vibrant, 3D experience and deeper interactivity, making them familiar but even better than before.</p>
+<p>Android 3.0 builds on the things people love most about Android &mdash; refined multitasking, rich notifications, Home screen customization, widgets, and more &mdash; and transforms them with a vibrant, 3D experience and deeper interactivity, making them familiar but even better than before.</p>
<p>The new UI brings fresh paradigms for interaction, navigation, and customization and makes them available to all applications &mdash; even those built for earlier versions of the platform. Applications written for Android 3.0 are able to use an extended set of UI objects, powerful graphics, and media capabilities to engage users in new ways.</p>
diff --git a/docs/html/about/versions/android-3.0.jd b/docs/html/about/versions/android-3.0.jd
index 51847433f50a..3175d3ca3afa 100644
--- a/docs/html/about/versions/android-3.0.jd
+++ b/docs/html/about/versions/android-3.0.jd
@@ -392,7 +392,7 @@ Demos</a> application.</p>
<h3>Extended UI framework</h3>
<ul>
-
+
<li><b>Multiple-choice selection for ListView and GridView</b>
<p>New {@link android.widget.AbsListView#CHOICE_MODE_MULTIPLE_MODAL} mode for {@link
@@ -419,9 +419,9 @@ java</a>
class in the API Demos sample application.</p>
</li>
-
+
<li><b>New APIs to transform views</b>
-
+
<p>New APIs allow you to easily apply 2D and 3D transformations to views in your activity
layout. New transformations are made possible with a set of object properties that define the view's
layout position, orientation, transparency and more.</p>
@@ -452,7 +452,7 @@ animator.start();
</pre>
</li>
-
+
<li><b>New holographic themes</b>
<p>The standard system widgets and overall look have been redesigned and incorporate a new
@@ -475,55 +475,55 @@ href="{@docRoot}guide/topics/ui/themes.html#SelectATheme">select a theme based o
version</a>.</p>
</li>
-
-
+
+
<li><b>New widgets</b>
<ul>
<li>{@link android.widget.AdapterViewAnimator}
<p>Base class for an {@link android.widget.AdapterView} that performs animations when switching
between its views.</p></li>
-
+
<li>{@link android.widget.AdapterViewFlipper}
<p>Simple {@link android.widget.ViewAnimator} that animates between two or more views that have
been added to it. Only one child is shown at a time. If requested, it can automatically flip
between
each child at a regular interval.</p></li>
-
+
<li>{@link android.widget.CalendarView}
<p>Allows users to select dates from a calendar by touching the date and can scroll or fling the
calendar to a desired date. You can configure the range of dates available in the widget.</p></li>
-
+
<li>{@link android.widget.ListPopupWindow}
<p>Anchors itself to a host view and displays a list of choices, such as for a list of
suggestions when typing into an {@link android.widget.EditText} view.</p></li>
-
+
<li>{@link android.widget.NumberPicker}
<p>Enables the user to select a number from a predefined range. The widget presents an input
field and up and down buttons for selecting a number. Touching the input field allows the user to
scroll through values or touch again to directly edit the current value. It also allows you to map
positions to strings, so that the corresponding string is displayed instead of the index
position.</p></li>
-
+
<li>{@link android.widget.PopupMenu}
<p>Displays a {@link android.view.Menu} in a modal popup window that's anchored to a view. The
popup appears below the anchor view if there is room, or above it if there is not. If the IME (soft
keyboard) is visible, the popup does not overlap the IME it until the user touches the
menu.</p></li>
-
+
<li>{@link android.widget.SearchView}
<p>Provides a search box that you can configure to deliver search queries to a specified
activity and display search suggestions (in the same manner as the traditional search dialog). This
widget is particularly useful for offering a search widget in the Action Bar. For more information,
see <a href="{@docRoot}guide/topics/search/search-dialog.html">Creating a Search Interface.</p></li>
-
+
<li>{@link android.widget.StackView}
<p>A view that displays its children in a 3D stack and allows users to swipe through
views like a rolodex.</p></li>
-
+
</ul>
</li>
-
+
</ul>
@@ -545,7 +545,7 @@ smoother scrolling, and overall better performance and response to user interact
<li><b>View support for hardware and software layers</b>
-
+
<p>By default, a {@link android.view.View} has no layer specified. You can specify that the
view be backed by either a hardware or software layer, specified by values {@link
android.view.View#LAYER_TYPE_HARDWARE} and {@link android.view.View#LAYER_TYPE_SOFTWARE}, using
@@ -563,7 +563,7 @@ software layer, which can potentially be slow.</p>
<p>For more information, see the {@link android.view.View#LAYER_TYPE_HARDWARE} and {@link
android.view.View#LAYER_TYPE_SOFTWARE} documentation.</p>
</li>
-
+
<li><b>Renderscript 3D graphics engine</b>
@@ -591,7 +591,7 @@ android.media.MediaRecorder#setCaptureRate setCaptureRate()} sets the rate at wh
should be captured.</p></li>
<li><b>Texture support for image streams</b>
-
+
<p>New {@link android.graphics.SurfaceTexture} allows you to capture an image stream as an OpenGL ES
texture. By calling {@link android.hardware.Camera#setPreviewTexture setPreviewTexture()} for your
{@link android.hardware.Camera} instance, you can specify the {@link
@@ -599,7 +599,7 @@ android.graphics.SurfaceTexture} upon which to draw video playback or preview fr
camera.</p></li>
<li><b>HTTP Live streaming</b>
-
+
<p>Applications can now pass an M3U playlist URL to the media framework to begin an HTTP Live
streaming session. The media framework supports most of the HTTP Live streaming specification,
including adaptive bit rate. See the <a
@@ -607,7 +607,7 @@ href="{@docRoot}guide/appendix/media-formats.html">Supported Media Formats</a> d
more information.</p></li>
<li><b>EXIF data</b>
-
+
<p>The {@link android.media.ExifInterface} includes new fields for photo aperture, ISO, and exposure
time.</p></li>
@@ -810,7 +810,7 @@ expressed with acceleration and rotation rate data. A web page can register for
events by calling {@code window.addEventListener} with event type {@code "deviceorientation"}
and register for motion events by registering the {@code "devicemotion"} event type.</p>
</li>
-
+
<li><b>CSS 3D Transforms</b>
<p>As defined by the <a href="http://www.w3.org/TR/css3-3d-transforms/">CSS 3D Transform
Module</a> specification, the Browser allows elements rendered by CSS to be transformed in three
@@ -967,7 +967,7 @@ the system, prior to installing the application. </p>
<p>To use APIs introduced in Android {@sdkPlatformVersion} in your application,
you need compile the application against the Android library that is provided in
-the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might
+the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might
also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
manifest. If your application is designed to run only on Android 2.3 and higher,
diff --git a/docs/html/about/versions/android-3.1-highlights.jd b/docs/html/about/versions/android-3.1-highlights.jd
index 5283c2a45861..2a706989f471 100644
--- a/docs/html/about/versions/android-3.1-highlights.jd
+++ b/docs/html/about/versions/android-3.1-highlights.jd
@@ -93,7 +93,7 @@ device.</p>
<p>The platform also adds new support for USB accessories &mdash; external
hardware devices designed to attach to Android-powered devices as USB hosts. When an
accessory is attached, the framework will look for a corresponding application
-and offer to launch it for the user. The accessory can also present a URL
+and offer to launch it for the user. The accessory can also present a URL
to the user, for downloading an appropriate application if one is not already
installed. Users can interact with the application to control powered accessories such
as robotics controllers; docking stations; diagnostic and musical equipment;
@@ -215,7 +215,7 @@ indicator to let users see how much space is available.</p>
<div style="padding-top:0em;">
<div style="margin-right:1em;float:left;margin-left:0em;"><img src="{@docRoot}sdk/images/3.1/resizeable.png" alt="" width="170" target="_android" style="margin-bottom:0;" />
-<div style="padding-left:1.4em;padding-bottom:1em;width:180px;font-size:.9em"><strong>Figure
+<div style="padding-left:1.4em;padding-bottom:1em;width:180px;font-size:.9em"><strong>Figure
4.</strong> Home screen widgets can now be resized.</div></div>
<p><strong>Calendar</strong></p>
diff --git a/docs/html/about/versions/android-3.1.jd b/docs/html/about/versions/android-3.1.jd
index cdcf51eee629..e1486bef7da8 100644
--- a/docs/html/about/versions/android-3.1.jd
+++ b/docs/html/about/versions/android-3.1.jd
@@ -240,7 +240,7 @@ and game controllers include
android.view.MotionEvent#AXIS_HAT_Y}, {@link
android.view.MotionEvent#AXIS_RTRIGGER}, {@link
android.view.MotionEvent#AXIS_ORIENTATION}, {@link
-android.view.MotionEvent#AXIS_THROTTLE}, and many others.
+android.view.MotionEvent#AXIS_THROTTLE}, and many others.
Existing {@link android.view.MotionEvent} axes are represented by {@link
android.view.MotionEvent#AXIS_X}, {@link android.view.MotionEvent#AXIS_Y},
{@link android.view.MotionEvent#AXIS_PRESSURE}, {@link
@@ -299,7 +299,7 @@ each axis value.</p>
<p>Finally, since the motion events from joysticks, gamepads, mice, and
trackballs are not touch events, the platform adds a new callback method for
passing them to a {@link android.view.View} as "generic" motion events.
-Specifically, it reports the non-touch motion events to
+Specifically, it reports the non-touch motion events to
{@link android.view.View}s through a call to {@link
android.view.View#onGenericMotionEvent(android.view.MotionEvent)
onGenericMotionEvent()}, rather than to {@link
@@ -318,7 +318,7 @@ onGenericMotionEvent()} there instead.</p>
<p class="note">To look at a sample application that uses joystick motion
events, see <a
-href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/GameControllerInput.html">GameControllerInput</a>
+href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/GameControllerInput.html">GameControllerInput</a>
and <a
href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/GameView.html">GameView</a>.</p>
diff --git a/docs/html/about/versions/android-3.2.jd b/docs/html/about/versions/android-3.2.jd
index 887755cfefb2..c6df7f5ddab6 100644
--- a/docs/html/about/versions/android-3.2.jd
+++ b/docs/html/about/versions/android-3.2.jd
@@ -132,7 +132,7 @@ provides these tools:</p>
<ul>
<li>New resource qualifiers for targeting layouts and other resources to a
-minimum smallestWidth, width, or height, and</li>
+minimum smallestWidth, width, or height, and</li>
<li>New manifest attributes, for specifying the app's maximum
screen compatibility range</li>
</ul>
@@ -201,7 +201,7 @@ the resource should be used, measured in "dp" units. As mentioned above, a
screen's smallestWidth is constant, regardless of orientation. Examples:
<code>sw320dp</code>, <code>sw720dp</code>, <code>sw720dp</code>.</li>
-<li><code>wNNNdp</code> and <code>hNNNdp</code> &mdash; Specifies the minimum
+<li><code>wNNNdp</code> and <code>hNNNdp</code> &mdash; Specifies the minimum
width or height on which the resource should be used, measured in "dp" units. As
mentioned above, a screen's width and height are relative to the orientation of
the screen and change whenever the orientation changes. Examples:
@@ -214,7 +214,7 @@ dp, others for wider than 600 dp, and others for wider than 720 dp. When
multiple resource configurations are qualified for a given screen, the system
selects the configuration that is the closest match. For precise control over
which resources are loaded on a given screen, you can tag resources with one
-qualifier or combine several new or existing qualifiers.
+qualifier or combine several new or existing qualifiers.
<p>Based on the typical dimensions listed earlier, here are some examples of how
you could use the new qualifiers:</p>
diff --git a/docs/html/about/versions/android-4.0.3.jd b/docs/html/about/versions/android-4.0.3.jd
index 3be684df63b2..bcfa35c94bce 100644
--- a/docs/html/about/versions/android-4.0.3.jd
+++ b/docs/html/about/versions/android-4.0.3.jd
@@ -102,16 +102,16 @@ android:name="android.permission.WRITE_SOCIAL_STREAM"&gt;</code> in their manife
<li>Adds the class {@link android.provider.CalendarContract.Colors} to represent
a color table in the <a href="{@docRoot}guide/topics/providers/calendar-provider.html">Calendar
Provider</a>. The class provides fields for accessing
-colors available for a given account. Colors are referenced by
+colors available for a given account. Colors are referenced by
{@link android.provider.CalendarContract.ColorsColumns#COLOR_KEY COLOR_KEY}
which must be unique for a given account name/type. These values can only be
updated by the sync adapter.</li>
<li>Adds {@link android.provider.CalendarContract.CalendarColumns#ALLOWED_AVAILABILITY ALLOWED_AVAILABILITY}
-and
+and
{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_ATTENDEE_TYPES ALLOWED_ATTENDEE_TYPES}
for exchange/sync support.</li>
<li>Adds {@link android.provider.CalendarContract.AttendeesColumns#TYPE_RESOURCE}
-(such as conference rooms) for attendees and
+(such as conference rooms) for attendees and
{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY_TENTATIVE},
as well as {@link android.provider.CalendarContract.EventsColumns#EVENT_COLOR_KEY}
for events.</li>
@@ -123,7 +123,7 @@ for events.</li>
own padding. Instead, the system now automatically adds padding for each widget,
based the characteristics of the current screen. This leads to a more uniform,
consistent presentation of widgets in a grid. To assist applications that host
-home screen widgets, the platform provides a new method
+home screen widgets, the platform provides a new method
{@link android.appwidget.AppWidgetHostView#getDefaultPaddingForWidget(android.content.Context, android.content.ComponentName, android.graphics.Rect)
getDefaultPaddingForWidget()}. Applications can call this method to get the
system-defined padding and account for it when computing the number of cells to
@@ -136,7 +136,7 @@ allocate to the widget.</p>
android.view.textservice.SpellCheckerSession#cancel() cancel()} method cancels
any pending and running spell-checker tasks in a session.</li>
-<li>For spell-checker services, a new suggestions flag,
+<li>For spell-checker services, a new suggestions flag,
{@link android.view.textservice.SuggestionsInfo#RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS},
lets the services distinguish higher-confidence suggestions from
lower-confidence ones. For example, a spell-checker could set the flag if an
@@ -206,8 +206,8 @@ the inflated layout.</li>
allow apps to get and set the maximum scroll offset for an
{@link android.view.accessibility.AccessibilityRecord} object.</li>
-<li>When touch-exploration mode is enabled, a new secure setting
-{@link android.provider.Settings.Secure#ACCESSIBILITY_SPEAK_PASSWORD}
+<li>When touch-exploration mode is enabled, a new secure setting
+{@link android.provider.Settings.Secure#ACCESSIBILITY_SPEAK_PASSWORD}
indicates whether the user requests the IME to speak text entered in password fields, even when
a headset is not in use. By default, no password text is spoken unless a headset
is in use.</li>
diff --git a/docs/html/about/versions/android-4.0.jd b/docs/html/about/versions/android-4.0.jd
index 43185827b4f6..48afcd48164f 100644
--- a/docs/html/about/versions/android-4.0.jd
+++ b/docs/html/about/versions/android-4.0.jd
@@ -99,7 +99,7 @@ device.</p>
<h4>User Profile</h4>
<p>Android now includes a personal profile that represents the device owner, as defined by the
-{@link android.provider.ContactsContract.Profile} table. Social apps that maintain a user identity
+{@link android.provider.ContactsContract.Profile} table. Social apps that maintain a user identity
can contribute to the user's profile data by creating a new {@link
android.provider.ContactsContract.RawContacts} entry within the {@link
android.provider.ContactsContract.Profile}. That is, raw contacts that represent the device user do
@@ -210,7 +210,7 @@ used by the sync adapter. The provider takes no action with items in this table
them when their related events are deleted.</li>
</ul>
-<p>To access a user’s calendar data with the Calendar Provider, your application must request
+<p>To access a user’s calendar data with the Calendar Provider, your application must request
the {@link android.Manifest.permission#READ_CALENDAR} permission (for read access) and
{@link android.Manifest.permission#WRITE_CALENDAR} (for write access).</p>
@@ -850,7 +850,7 @@ android.view.accessibility.AccessibilityRecord} (there may be several records at
event).</li>
<li>From either {@link android.view.accessibility.AccessibilityEvent} or an individual {@link
-android.view.accessibility.AccessibilityRecord}, you can call {@link
+android.view.accessibility.AccessibilityRecord}, you can call {@link
android.view.accessibility.AccessibilityRecord#getSource() getSource()} to retrieve a {@link
android.view.accessibility.AccessibilityNodeInfo} object.
<p>An {@link android.view.accessibility.AccessibilityNodeInfo} represents a single node
diff --git a/docs/html/about/versions/android-4.1.jd b/docs/html/about/versions/android-4.1.jd
index 4131c36fe1ca..4d7cb85f4335 100644
--- a/docs/html/about/versions/android-4.1.jd
+++ b/docs/html/about/versions/android-4.1.jd
@@ -103,8 +103,8 @@ useful new APIs for app developers.</p>
<div class="sidebox-wrapper">
-<div class="sidebox">
-
+<div class="sidebox">
+
<h3 id="ApiLevel">Declare your app API Level</h3>
<p>To better optimize your app for devices running Android {@sdkPlatformVersion},
@@ -117,7 +117,7 @@ test it, then publish an update with this change.</p>
can use APIs in Android {@sdkPlatformVersion} while also supporting older versions by adding
conditions to your code that check for the system API level before executing
APIs not supported by your <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a>.
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a>.
To learn more about
maintaining backward-compatibility, read <a
href="{@docRoot}training/backward-compatible-ui/index.html">Creating Backward-Compatible
@@ -148,15 +148,15 @@ app on Android 4.1.</p>
<h3 id="Isolated">Isolated services</h3>
-<p>By specifying <a href="{@docRoot}guide/topics/manifest/service-element.html#isolated">{@code android:isolatedProcess="true"}</a> in the
+<p>By specifying <a href="{@docRoot}guide/topics/manifest/service-element.html#isolated">{@code android:isolatedProcess="true"}</a> in the
<a href="{@docRoot}guide/topics/manifest/service-element.html">{@code <service>}</a> tag, your {@link android.app.Service} will run under
its own isolated user ID process that has no permissions of its own.</p>
<h3 id="Memory">Memory management</h3>
-<p>New {@link android.content.ComponentCallbacks2} constants such as {@link
-android.content.ComponentCallbacks2#TRIM_MEMORY_RUNNING_LOW} and {@link
+<p>New {@link android.content.ComponentCallbacks2} constants such as {@link
+android.content.ComponentCallbacks2#TRIM_MEMORY_RUNNING_LOW} and {@link
android.content.ComponentCallbacks2#TRIM_MEMORY_RUNNING_CRITICAL} provide foreground
processes more information about
memory state before the system calls {@link android.app.Activity#onLowMemory()}.</p>
@@ -178,7 +178,7 @@ app.</p>
<h3 id="LiveWallpapers">Live Wallpapers</h3>
<p>New intent protocol to directly launch the live wallpaper preview activity so you can help
- users easily select your live wallpaper without forcing them to leave
+ users easily select your live wallpaper without forcing them to leave
your app and navigate through the Home wallpaper picker.</p>
<p>To launch the live wallpaper picker, call {@link android.content.Context#startActivity
@@ -207,7 +207,7 @@ creates the appropriate activity.</p>
<p>This is particularly powerful for scenarios in which the user enters one of your app's activities
through a "deep dive" intent such as from a notification or an intent from
-different app (as described in the design guide for <a
+different app (as described in the design guide for <a
href="{@docRoot}design/patterns/navigation.html#between-apps">Navigating Between Apps</a>). When
the user enters your activity this way, your app may not naturally have a back stack of
activities that can be resumed as the user navigates up. However, when you supply the <a
@@ -216,12 +216,12 @@ android:parentActivityName}</a> attribute for your activities, the system recogn
whether or not your app already contains a back stack of parent activities and, if not, constructs
a synthetic back stack that contains all parent activities.</p>
-<p class="note"><strong>Note:</strong> When the user enters a deep activity in your app and
- it creates a new task for your app, the system actually inserts the stack of parent activities
+<p class="note"><strong>Note:</strong> When the user enters a deep activity in your app and
+ it creates a new task for your app, the system actually inserts the stack of parent activities
into the task. As such, pressing the Back button also navigates back through the stack of parent
activities.</p>
-<p>When the system creates a synthetic back stack for your app, it builds a basic {@link
+<p>When the system creates a synthetic back stack for your app, it builds a basic {@link
android.content.Intent} to create a new instance of each parent activity. So there's no
saved state for the parent activities the way you'd expect had the user naturally navigated
through
@@ -251,9 +251,9 @@ you want to modify the {@link android.content.Intent} for the activity's parent,
the length of the array with {@link android.app.TaskStackBuilder#getIntentCount()} and pass that
value to {@link android.app.TaskStackBuilder#editIntentAt editIntentAt()}.</p>
-<p>If your app structure is more complex, there are several other APIs
+<p>If your app structure is more complex, there are several other APIs
available that allow you to handle the behavior of Up navigation and
- fully customize the synthetic back stack. Some of the APIs that give you additional
+ fully customize the synthetic back stack. Some of the APIs that give you additional
control include:</p>
<dl>
<dt>{@link android.app.Activity#onNavigateUp}</dt>
@@ -342,7 +342,7 @@ android.media.MediaCodec#queueInputBuffer queueInputBuffer()}.</p>
<!--
<h3 id="Routing">Media routing</h3>
-<p>The new {@link android.media.MediaRouter} class allows you to route media channels and
+<p>The new {@link android.media.MediaRouter} class allows you to route media channels and
streams from the current device to external speakers and other devices. You
can acquire an instance of {@link android.media.MediaRouter} by calling {@link
android.content.Context#getSystemService getSystemService(}{@link
@@ -354,7 +354,7 @@ android.content.Context#MEDIA_ROUTER_SERVICE MEDIA_ROUTER_SERVICE)}.</p>
<p>New method {@link android.media.AudioRecord#startRecording startRecording()} allows
you to begin audio recording based on a cue defined by a {@link android.media.MediaSyncEvent}.
-The {@link android.media.MediaSyncEvent} specifies an audio session
+The {@link android.media.MediaSyncEvent} specifies an audio session
(such as one defined by {@link android.media.MediaPlayer}), which when complete, triggers
the audio recorder to begin recording. For example, you can use this functionality to
play an audio tone that indicates the beginning of a recording session and recording
@@ -423,7 +423,7 @@ standard mechanisms and UI for choosing where to play media.
for changes to the auto focus movement. You can register your interface with {@link
android.hardware.Camera#setAutoFocusMoveCallback setAutoFocusMoveCallback()}. Then when the camera
is in a continuous autofocus mode ({@link
-android.hardware.Camera.Parameters#FOCUS_MODE_CONTINUOUS_VIDEO} or
+android.hardware.Camera.Parameters#FOCUS_MODE_CONTINUOUS_VIDEO} or
{@link android.hardware.Camera.Parameters#FOCUS_MODE_CONTINUOUS_PICTURE}), you'll receive a call
to {@link android.hardware.Camera.AutoFocusMoveCallback#onAutoFocusMoving onAutoFocusMoving()},
which tells you whether auto focus has started moving or has stopped moving.</p>
@@ -434,7 +434,7 @@ which tells you whether auto focus has started moving or has stopped moving.</p>
standard sounds made by the camera or other media actions. You should use these APIs to play
the appropriate sound when building a custom still or video camera.</p>
-<p>To play a sound, simply instantiate a {@link android.media.MediaActionSound} object, call
+<p>To play a sound, simply instantiate a {@link android.media.MediaActionSound} object, call
{@link android.media.MediaActionSound#load load()} to pre-load the desired sound, then at the
appropriate time, call {@link android.media.MediaActionSound#play play()}.</p>
@@ -483,7 +483,7 @@ connect to devices.</p>
<p>To register your service, you must first create an {@link android.net.nsd.NsdServiceInfo}
object and define the various properties of your service with methods such as
- {@link android.net.nsd.NsdServiceInfo#setServiceName setServiceName()},
+ {@link android.net.nsd.NsdServiceInfo#setServiceName setServiceName()},
{@link android.net.nsd.NsdServiceInfo#setServiceType setServiceType()}, and
{@link android.net.nsd.NsdServiceInfo#setPort setPort()}.
</p>
@@ -498,7 +498,7 @@ with your {@link android.net.nsd.NsdServiceInfo}.</p>
<p>When your {@link
android.net.nsd.NsdManager.DiscoveryListener} receives callbacks about services
-found, you need to resolve the service by calling
+found, you need to resolve the service by calling
{@link android.net.nsd.NsdManager#resolveService resolveService()}, passing it an
implementation of {@link android.net.nsd.NsdManager.ResolveListener} that receives
an {@link android.net.nsd.NsdServiceInfo} object that contains information about the
@@ -515,13 +515,13 @@ Discovery allows you to discover a service on an existing connected network (suc
network).</p>
<p>To broadcast your app as a service over Wi-Fi so that other devices can discover
- your app and connect to it, call {@link
+ your app and connect to it, call {@link
android.net.wifi.p2p.WifiP2pManager#addLocalService addLocalService()} with a
{@link android.net.wifi.p2p.nsd.WifiP2pServiceInfo} object that describes your app services.</p>
<p>To initiate discover of nearby devices over Wi-Fi, you need to first decide whether you'll
communicate using Bonjour or Upnp. To use Bonjour, first set up some callback listeners with
- {@link android.net.wifi.p2p.WifiP2pManager#setDnsSdResponseListeners setDnsSdResponseListeners()}, which takes both a {@link android.net.wifi.p2p.WifiP2pManager.DnsSdServiceResponseListener} and {@link android.net.wifi.p2p.WifiP2pManager.DnsSdTxtRecordListener}. To use Upnp, call
+ {@link android.net.wifi.p2p.WifiP2pManager#setDnsSdResponseListeners setDnsSdResponseListeners()}, which takes both a {@link android.net.wifi.p2p.WifiP2pManager.DnsSdServiceResponseListener} and {@link android.net.wifi.p2p.WifiP2pManager.DnsSdTxtRecordListener}. To use Upnp, call
{@link android.net.wifi.p2p.WifiP2pManager#setUpnpServiceResponseListener setUpnpServiceResponseListener()}, which takes a {@link android.net.wifi.p2p.WifiP2pManager.UpnpServiceResponseListener}.</p>
<p>Before you can start discovering services on local devices, you also need to call {@link android.net.wifi.p2p.WifiP2pManager#addServiceRequest addServiceRequest()}. When the {@link android.net.wifi.p2p.WifiP2pManager.ActionListener} you pass to this method receives a
@@ -644,7 +644,7 @@ deprecated.</p>
<h3 id="ActivityOptions">Activity launch animations</h3>
<p>You can now launch an {@link android.app.Activity} using zoom animations or
-your own custom animations. To specify the animation you want, use the {@link
+your own custom animations. To specify the animation you want, use the {@link
android.app.ActivityOptions} APIs to build a {@link android.os.Bundle} that you can
then pass to any of the
methods that start an activity, such as {@link
@@ -659,8 +659,8 @@ type of animation you may want to show as your activity opens:</p>
Android 4.1 uses this when opening an app.</dd>
<dt>{@link android.app.ActivityOptions#makeThumbnailScaleUpAnimation
makeThumbnailScaleUpAnimation()}</dt>
- <dd>Creates an animation that scales up the activity window starting from a specified
- position and a provided thumbnail image. For example, the Recent Apps window in
+ <dd>Creates an animation that scales up the activity window starting from a specified
+ position and a provided thumbnail image. For example, the Recent Apps window in
Android 4.1 uses this when returning to an app.</dd>
<dt>{@link android.app.ActivityOptions#makeCustomAnimation
makeCustomAnimation()}</dt>
@@ -672,7 +672,7 @@ type of animation you may want to show as your activity opens:</p>
<h3 id="TimeAnimator">Time animator</h3>
-<p>The new {@link android.animation.TimeAnimator} provides a simple callback
+<p>The new {@link android.animation.TimeAnimator} provides a simple callback
mechanism with the {@link android.animation.TimeAnimator.TimeListener} that notifies
you upon every frame of the animation. There is no duration, interpolation, or object value-setting with this Animator. The listener's callback receives information for each frame including
total elapsed time and the elapsed time since the previous animation frame.</p>
@@ -692,7 +692,7 @@ type of animation you may want to show as your activity opens:</p>
<p>The new method {@link android.app.Notification.Builder#setStyle setStyle()} allows you to specify
one of three new styles for your notification that each offer a larger content region. To
-specify the style for your large content region, pass {@link
+specify the style for your large content region, pass {@link
android.app.Notification.Builder#setStyle setStyle()} one of the following objects:</p>
<dl>
<dt>{@link android.app.Notification.BigPictureStyle}</dt>
@@ -720,7 +720,7 @@ android.app.Notification.Builder#setStyle setStyle()} one of the following objec
order of your notification in the list by setting
the priority with {@link android.app.Notification.Builder#setPriority setPriority()}. You
can pass this one of five different priority levels defined by {@code PRIORITY_*} constants
-in the {@link android.app.Notification} class. The default is {@link
+in the {@link android.app.Notification} class. The default is {@link
android.app.Notification#PRIORITY_DEFAULT}, and there's two levels higher and two levels lower.</p>
<p>High priority notifications are things that users generally want to respond to quickly,
@@ -738,17 +738,17 @@ and passing the following flags:</p>
<dl>
<dt>{@link android.view.View#SYSTEM_UI_FLAG_FULLSCREEN}</dt>
- <dd>Hides non-critical system UI (such as the status bar).
+ <dd>Hides non-critical system UI (such as the status bar).
If your activity uses the action bar in overlay mode (by
enabling <a href="{@docRoot}reference/android/R.attr.html#windowActionBarOverlay">{@code
android:windowActionBarOverlay}</a>), then this flag also hides the action bar and does
so with a coordinated animation when both hiding and showing the two.</dd>
-
+
<dt>{@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN}</dt>
<dd>Sets your activity layout to use the same screen area that's available when you've
enabled {@link android.view.View#SYSTEM_UI_FLAG_FULLSCREEN} even if the system UI elements
are still visible. Although parts of your layout will be overlayed by the
- system UI, this is useful if your app often hides and shows the system UI with
+ system UI, this is useful if your app often hides and shows the system UI with
{@link android.view.View#SYSTEM_UI_FLAG_FULLSCREEN}, because it avoids your layout from
adjusting to the new layout bounds each time the system UI hides or appears.</dd>
@@ -779,7 +779,7 @@ and passing the following flags:</p>
<h3 id="RemoteViews">Remote views</h3>
-<p>{@link android.widget.GridLayout} and {@link android.view.ViewStub}
+<p>{@link android.widget.GridLayout} and {@link android.view.ViewStub}
are now remotable views so you can use them in layouts for your
app widgets and notification custom layouts.</p>
@@ -787,7 +787,7 @@ and passing the following flags:</p>
<h3 id="Fonts">Font families</h3>
-<p>Android 4.1 adds several more variants of the Roboto font style for a total of 10 variants,
+<p>Android 4.1 adds several more variants of the Roboto font style for a total of 10 variants,
and they're all usable by apps. Your apps now have access to the full set of both light and
condensed variants.</p>
@@ -820,14 +820,14 @@ condensed variants.</p>
{@code "bold"} and {@code "italic"}. You can apply both like so: {@code
android:textStyle="bold|italic"}.</p>
-<p>You can also use {@link android.graphics.Typeface#create Typeface.create()}.
+<p>You can also use {@link android.graphics.Typeface#create Typeface.create()}.
For example, {@code Typeface.create("sans-serif-light", Typeface.NORMAL)}.</p>
-
+
<h2 id="Input">Input Framework</h2>
@@ -864,7 +864,7 @@ by calling {@link android.view.InputDevice#getVibrator()} on the {@link android.
<dl>
<dt>{@link android.Manifest.permission#READ_EXTERNAL_STORAGE}</dt>
- <dd>Provides protected read access to external storage. In Android 4.1 by
+ <dd>Provides protected read access to external storage. In Android 4.1 by
default all applications still have read
access. This will be changed in a future release to require that applications explicitly request
read access using this permission. If your application already requests write access, it will
@@ -898,9 +898,9 @@ a television interface, declare this feature in your manifest file with the <a h
&lt;/manifest&gt;
</pre>
-<p>This feature defines "television" to be a typical living room television experience:
- displayed on a big screen, where the user is sitting far away and the dominant form of
- input is be something like a d-pad, and generally not through touch or a
+<p>This feature defines "television" to be a typical living room television experience:
+ displayed on a big screen, where the user is sitting far away and the dominant form of
+ input is be something like a d-pad, and generally not through touch or a
mouse/pointer-device.</p>
diff --git a/docs/html/about/versions/android-4.2.jd b/docs/html/about/versions/android-4.2.jd
index c26d4a2b552b..34fa1d4f4bdb 100755
--- a/docs/html/about/versions/android-4.2.jd
+++ b/docs/html/about/versions/android-4.2.jd
@@ -6,7 +6,7 @@ sdk.platform.apiLevel=17
<div id="qv-wrapper">
<div id="qv">
-
+
<h2>In this document</h2>
<ol>
<li><a href="#Behaviors">Important Behavior Changes</a></li>
@@ -46,8 +46,8 @@ Then build your apps against the Android 4.2 platform to begin using the latest
<div class="sidebox-wrapper">
-<div class="sidebox">
-
+<div class="sidebox">
+
<h3 id="ApiLevel">Declare your app API Level</h3>
<p>To better optimize your app for devices running Android {@sdkPlatformVersion},
@@ -60,7 +60,7 @@ test it, then publish an update with this change.</p>
can use APIs in Android {@sdkPlatformVersion} while also supporting older versions by adding
conditions to your code that check for the system API level before executing
APIs not supported by your <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a>.
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a>.
To learn more about
maintaining backward-compatibility, read <a
href="{@docRoot}training/backward-compatible-ui/index.html">Creating Backward-Compatible
@@ -94,7 +94,7 @@ android:targetSdkVersion}</a> or <a href="{@docRoot}guide/topics/manifest/uses-s
android:minSdkVersion}</a> to 17 or higher. Otherwise, the default value is still {@code “true"}
even when running on Android 4.2 and higher.</p>
</li>
-
+
<li>Compared to previous versions of Android, <b>user location</b> results may be less accurate
if your app requests the {@link android.Manifest.permission#ACCESS_COARSE_LOCATION} permission but
does not request the {@link android.Manifest.permission#ACCESS_FINE_LOCATION} permission.
@@ -102,7 +102,7 @@ does not request the {@link android.Manifest.permission#ACCESS_FINE_LOCATION} pe
coarse location (and not fine location), the system will not provide a user location estimate
that’s more accurate than a city block.</p>
</li>
-
+
<li>Some <b>device settings</b> defined by {@link android.provider.Settings.System} are now
read-only. If your app attempts to write changes to settings defined in {@link
android.provider.Settings.System} that have moved to {@link android.provider.Settings.Global},
@@ -410,7 +410,7 @@ there are two basic levels of optimization:</p>
<ol>
<li>Convert left- and right-oriented layout properties to start- and end-oriented layout
-properties.
+properties.
<p>For example, use {@link android.R.attr#layout_marginStart android:layout_marginStart}
in place of {@code android:layout_marginLeft} and {@link android.R.attr#layout_marginEnd
android:layout_marginEnd} in place of {@code android:layout_marginRight}.
@@ -526,7 +526,7 @@ add all the scripts, create the connections between the
scripts by calling {@link android.renderscript.ScriptGroup.Builder#addConnection addConnection()}.
When you are done adding the connections, call {@link android.renderscript.ScriptGroup.Builder#create create()}
to create the script group. Before executing the script group, specify the input
-{@link android.renderscript.Allocation} and initial script to run with the
+{@link android.renderscript.Allocation} and initial script to run with the
{@link android.renderscript.ScriptGroup#setInput} method and provide the output
{@link android.renderscript.Allocation} where the result will be written to and final script to
run with {@link android.renderscript.ScriptGroup#setOutput setOutput()}. Finally, call
diff --git a/docs/html/about/versions/android-4.4.jd b/docs/html/about/versions/android-4.4.jd
index b898fe35c67f..cbc8e6eb261d 100644
--- a/docs/html/about/versions/android-4.4.jd
+++ b/docs/html/about/versions/android-4.4.jd
@@ -318,7 +318,7 @@ href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targe
<h3 id="Ratings">Ratings from remote controllers</h3>
-<p>Android 4.4 builds upon the existing capabilities for remote control clients (apps that receive media control events with the {@link android.media.RemoteControlClient}) by adding the ability for users to rate the current track from the remote controller.</p>
+<p>Android 4.4 builds upon the existing capabilities for remote control clients (apps that receive media control events with the {@link android.media.RemoteControlClient}) by adding the ability for users to rate the current track from the remote controller.</p>
<p>The new {@link android.media.Rating} class encapsulates information about a user rating. A rating is defined by its rating style (either {@link android.media.Rating#RATING_HEART}, {@link android.media.Rating#RATING_THUMB_UP_DOWN}, {@link android.media.Rating#RATING_3_STARS}, {@link android.media.Rating#RATING_4_STARS}, {@link android.media.Rating#RATING_5_STARS} or {@link android.media.Rating#RATING_PERCENTAGE}) and the rating value that's appropriate for that style.</p>
diff --git a/docs/html/about/versions/jelly-bean.jd b/docs/html/about/versions/jelly-bean.jd
index 25f88e3eb2b5..82cac2b14159 100644
--- a/docs/html/about/versions/jelly-bean.jd
+++ b/docs/html/about/versions/jelly-bean.jd
@@ -21,13 +21,13 @@ function revealSection(hashy) {
link = $("#title-tabs a[href$="+sectionId+"]");
link.parent().addClass("selected");
link.parent().siblings().removeClass("selected");
-
+
sectionDiv = $(".version-section"+link.attr("href"));
if (sectionDiv.length) {
$(".version-section").hide();
sectionDiv.show();
}
-
+
$('html, body').animate({
scrollTop: $(hashy).offset().top
}, 100);
@@ -672,7 +672,7 @@ this GPU integration <strong>without recompiling</strong>.</p>
<div style="float:left;margin:16px 24px 12px 0px;">
<a href="" target="_android">
<img src="{@docRoot}images/jb-nexus10-1.png" alt="10-inch tablet running Android 4.2" width="380" height="281" /></a>
-</div>
+</div>
<h2 id="42-ui" style="margin-top:2em;">Refined, refreshed UI</h2>
@@ -902,7 +902,7 @@ equivalents. The system then handles the mirroring and display of your UI as
appropriate.</p>
<p>For precise control over your app UI, Android 4.2 includes new APIs that let
-you manage layout direction, text direction, text alignment, gravity, and
+you manage layout direction, text direction, text alignment, gravity, and
locale direction in View components. You can even create custom versions of
layout, drawables, and other resources for display when a right-to-left script
is in use.</p>
@@ -1005,7 +1005,7 @@ compatibility and improved optimization across CPUs, GPUs, and DSPs.</p>
<p>Filterscript is ideal for hardware-accelerating simple image-processing and
computation operations such as those that might be written for OpenGL ES
fragment shaders. Because it places a relaxed set of constraints on hardware,
-your operations are optimized and accelerated on more types of device chipsets.
+your operations are optimized and accelerated on more types of device chipsets.
Any app targeting API level 17 or higher can make use of Filterscript.</p>
<h3 id="42-rs-intrinsics">Script intrinsics</h3>
@@ -1028,7 +1028,7 @@ could not do if the scripts were executed individually.</p>
<div style="float:right;padding-top:1em;width:400px;margin-left:2em;">
<img src="{@docRoot}images/jb-rs-chart-versions.png" alt="Renderscipt optimizations chart" width="360" height="252"
style="border:1px solid #ddd;border-radius: 6px;" />
-<p style="image-caption">Renderscript image-processing
+<p style="image-caption">Renderscript image-processing
benchmarks run on different Android platform versions (Android 4.0, 4.1, and 4.2)
in CPU only on a Galaxy Nexus device.</p>
<img src="{@docRoot}images/jb-rs-chart-gpu.png" style="border:1px solid #ddd;border-radius: 6px; alt="" width="360" height="252" />
@@ -1143,7 +1143,7 @@ validation failure if the certificate does not chain to a set of expected
certificates. This protects against possible compromise of Certificate
Authorities.</li>
<li><strong>Improved display of Android permissions</strong> &mdash; Permissions
-have been organized into groups that are more easily understood by users.
+have been organized into groups that are more easily understood by users.
During review of the permissions, the user can click on the permission to see
more detailed information about the permission.</li>
<li><strong>installd hardening</strong> &mdash; The installd daemon does not run
@@ -1196,7 +1196,7 @@ such as burst mode capture with processing controls.
Android 4.2 introduces support for controllers based on the NCI standard from
the NFC-Forum. NCI provides a standard communication protocol between an NFC
Controller (NFCC) and a device Host, and the new NFC stack developed in
-collaboration between Google and Broadcom supports it.
+collaboration between Google and Broadcom supports it.
<h3 id="42-dalvik">Dalvik runtime optimizations</h3>
@@ -1248,7 +1248,7 @@ a wider range of architectures:</p>
</div>
<p>Welcome to Android 4.1 the first version of Jelly Bean!</p>
-<p>Android 4.1 is the fastest and smoothest version of Android yet. We’ve made
+<p>Android 4.1 is the fastest and smoothest version of Android yet. We’ve made
improvements throughout the platform and added great new features
for users and developers. This document provides a glimpse of what's new for developers.
@@ -1552,7 +1552,7 @@ data and sessions, even where there is no cell network or Wi-Fi available.</p>
<h3 id="gps">Google Play services</h3>
-<p>Google Play services helps developers to <strong>integrate Google services</strong> such as authentication and Google+ into their apps delivered through Google Play.</p>
+<p>Google Play services helps developers to <strong>integrate Google services</strong> such as authentication and Google+ into their apps delivered through Google Play.</p>
<p>Google Play services is automatically provisioned to end user devices by Google Play, so all you need is a <strong>thin client library</strong> in your apps.</p>
diff --git a/docs/html/about/versions/kitkat.jd b/docs/html/about/versions/kitkat.jd
index 2987bd491440..b73e70d1364f 100644
--- a/docs/html/about/versions/kitkat.jd
+++ b/docs/html/about/versions/kitkat.jd
@@ -13,13 +13,13 @@ function revealSection(hashy) {
link = $("#title-tabs a[href$="+sectionId+"]");
link.parent().addClass("selected");
link.parent().siblings().removeClass("selected");
-
+
sectionDiv = $(".version-section"+link.attr("href"));
if (sectionDiv.length) {
$(".version-section").hide();
sectionDiv.show();
}
-
+
$('html, body').animate({
scrollTop: $(hashy).offset().top
}, 100);
diff --git a/docs/html/auto/images/logos/auto/borgward.png b/docs/html/auto/images/logos/auto/borgward.png
new file mode 100644
index 000000000000..90298d49a043
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/borgward.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/lada.png b/docs/html/auto/images/logos/auto/lada.png
new file mode 100644
index 000000000000..d1724601a98e
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/lada.png
Binary files differ
diff --git a/docs/html/auto/index.jd b/docs/html/auto/index.jd
index 5b67641c8a83..167ed7b8bd45 100644
--- a/docs/html/auto/index.jd
+++ b/docs/html/auto/index.jd
@@ -372,6 +372,12 @@ nonavpage=true
</a>
</div>
<div class="col-5">
+ <a href="http://www.borgward.com/en/">
+ <img src="{@docRoot}auto/images/logos/auto/borgward.png"
+ width="120" height="120" class="img-logo" />
+ </a>
+ </div>
+ <div class="col-5">
<a href="http://www.buick.com/">
<img src="{@docRoot}auto/images/logos/auto/buick.png"
width="120" height="120" class="img-logo" />
@@ -383,15 +389,15 @@ nonavpage=true
width="120" height="120" class="img-logo" />
</a>
</div>
+ </div>
+
+ <div class="cols cols-leftp">
<div class="col-5">
<a href="http://www.chevrolet.com/">
<img src="{@docRoot}auto/images/logos/auto/chevrolet.png"
width="120" height="120" class="img-logo" />
</a>
</div>
- </div>
-
- <div class="cols cols-leftp">
<div class="col-5">
<a href="http://www.chrysler.com/">
<img src="{@docRoot}auto/images/logos/auto/chrysler.png"
@@ -410,15 +416,15 @@ nonavpage=true
width="120" height="120" class="img-logo" />
</a>
</div>
+ </div>
+
+ <div class="cols cols-leftp">
<div class="col-5">
<a href="http://www.driveds.com/">
<img src="{@docRoot}auto/images/logos/auto/citroen_ds.png"
width="120" height="120" class="img-logo" />
</a>
</div>
- </div>
-
- <div class="cols cols-leftp">
<div class="col-5">
<a href="http://www.fiat.com/">
<img src="{@docRoot}auto/images/logos/auto/fiat.png"
@@ -437,23 +443,20 @@ nonavpage=true
width="120" height="120" class="img-logo" />
</a>
</div>
-
- <div class="col-5">
- <a href="http://www.gmc.com/">
+ </div>
+ <div class="cols cols-leftp">
+ <div class="col-5">
+ <a href="http://www.gmc.com/">
<img src="{@docRoot}auto/images/logos/auto/gmc.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
- </div>
- <div class="cols cols-leftp">
+ </a>
+ </div>
<div class="col-5">
<a href="http://www.holden.com/">
<img src="{@docRoot}auto/images/logos/auto/holden.png"
width="120" height="120" class="img-logo" />
</a>
</div>
-
-
<div class="col-5">
<a href="http://www.honda.com/">
<img src="{@docRoot}auto/images/logos/auto/honda.png"
@@ -466,196 +469,197 @@ nonavpage=true
width="120" height="120" class="img-logo" />
</a>
</div>
- <div class="col-5">
- <a href="http://www.infiniti.com/">
+ </div>
+ <div class="cols cols-leftp">
+ <div class="col-5">
+ <a href="http://www.infiniti.com/">
<img src="{@docRoot}auto/images/logos/auto/infinity.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
- </div>
- <div class="cols cols-leftp">
- <div class="col-5">
- <a href="http://www.jaguar.com/index.html">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href="http://www.jaguar.com/index.html">
<img src="{@docRoot}auto/images/logos/auto/jaguar.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
- <div class="col-5">
- <a href="http://www.jeep.com/">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href="http://www.jeep.com/">
<img src="{@docRoot}auto/images/logos/auto/jeep.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
+ </a>
+ </div>
- <div class="col-5">
- <a href="http://www.kia.com/worldwide/">
+ <div class="col-5">
+ <a href="http://www.kia.com/worldwide/">
<img src="{@docRoot}auto/images/logos/auto/kia.png"
width="120" height="120" class="img-logo" />
- </a>
+ </a>
+ </div>
</div>
- <div class="col-5">
- <a href=" http://www.lamborghini.com/">
+ <div class="cols cols-leftp">
+ <div class="col-5">
+ <a href=" http://www.lada.ru/en/">
+ <img src="{@docRoot}auto/images/logos/auto/lada.png"
+ width="120" height="120" class="img-logo" />
+ </a>
+ </div>
+ <div class="col-5">
+ <a href=" http://www.lamborghini.com/">
<img src="{@docRoot}auto/images/logos/auto/lambo.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
- </div>
- <div class="cols cols-leftp">
- <div class="col-5">
- <a href=" http://www.landrover.com/">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href=" http://www.landrover.com/">
<img src="{@docRoot}auto/images/logos/auto/landrover.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
- <div class="col-5">
- <a href=" http://www.lincoln.com/">
- <img src="{@docRoot}auto/images/logos/auto/lincoln.png"
+ </a>
+ </div>
+ <div class="col-5">
+ <a href=" http://www.lincoln.com/">
+ <img src="{@docRoot}auto/images/logos/auto/lincoln.png"
width="120" height="120" class="img-logo" />
- </a>
+ </a>
+ </div>
</div>
- <div class="col-5">
- <a href="http://www.mahindra.com/">
+ <div class="cols cols-leftp">
+ <div class="col-5">
+ <a href="http://www.mahindra.com/">
<img src="{@docRoot}auto/images/logos/auto/mahindra.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
- <div class="col-5">
- <a href="http://www.maserati.com/">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href="http://www.maserati.com/">
<img src="{@docRoot}auto/images/logos/auto/maserati.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
- </div>
- <div class="cols cols-leftp">
- <div class="col-5">
- <a href="http://www.mazda.com/">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href="http://www.mazda.com/">
<img src="{@docRoot}auto/images/logos/auto/mazda.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
+ </a>
+ </div>
- <div class="col-5">
- <a href="http://www.mercedes-benz.com/">
+ <div class="col-5">
+ <a href="http://www.mercedes-benz.com/">
<img src="{@docRoot}auto/images/logos/auto/mbenz.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
- <div class="col-5">
- <a href="http://www.mitsubishi-motors.com/">
+ </a>
+ </div>
+ </div>
+ <div class="cols cols-leftp">
+ <div class="col-5">
+ <a href="http://www.mitsubishi-motors.com/">
<img src="{@docRoot}auto/images/logos/auto/mitsubishi.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
-
- <div class="col-5">
- <a href="http://www.nissan-global.com/">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href="http://www.nissan-global.com/">
<img src="{@docRoot}auto/images/logos/auto/nissan.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
- </div>
- <div class="cols cols-leftp">
- <div class="col-5">
- <a href="http://www.opel.com/">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href="http://www.opel.com/">
<img src="{@docRoot}auto/images/logos/auto/opel.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
+ </a>
+ </div>
- <div class="col-5">
- <a href="http://www.peugeot.com/">
+ <div class="col-5">
+ <a href="http://www.peugeot.com/">
<img src="{@docRoot}auto/images/logos/auto/peugeot.png"
width="120" height="120" class="img-logo" />
- </a>
+ </a>
+ </div>
</div>
-
- <div class="col-5">
- <a href="http://www.ramtrucks.com/">
+
+ <div class="cols cols-leftp">
+ <div class="col-5">
+ <a href="http://www.ramtrucks.com/">
<img src="{@docRoot}auto/images/logos/auto/ram.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
-
- <div class="col-5">
- <a href="http://www.renault.com/">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href="http://www.renault.com/">
<img src="{@docRoot}auto/images/logos/auto/renault.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
- </div>
- <div class="cols cols-leftp">
- <div class="col-5">
- <a href="http://www.renaultsamsungm.com/ ">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href="http://www.renaultsamsungm.com/ ">
<img src="{@docRoot}auto/images/logos/auto/rsm.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
+ </a>
+ </div>
- <div class="col-5">
- <a href="http://www.seat.com/">
+ <div class="col-5">
+ <a href="http://www.seat.com/">
<img src="{@docRoot}auto/images/logos/auto/seat.png"
width="120" height="120" class="img-logo" />
- </a>
+ </a>
+ </div>
</div>
-
- <div class="col-5">
- <a href="http://www.skoda-auto.com/">
+ <div class="cols cols-leftp">
+ <div class="col-5">
+ <a href="http://www.skoda-auto.com/">
<img src="{@docRoot}auto/images/logos/auto/skoda.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
-
- <div class="col-5">
- <a href="http://www.smotor.com/">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href="http://www.smotor.com/">
<img src="{@docRoot}auto/images/logos/auto/ssangyong.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
- </div>
- <div class="cols cols-leftp">
- <div class="col-5">
- <a href="http://www.subaru-global.com/">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href="http://www.subaru-global.com/">
<img src="{@docRoot}auto/images/logos/auto/subaru.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
+ </a>
+ </div>
- <div class="col-5">
- <a href="http://www.globalsuzuki.com/automobile/">
+ <div class="col-5">
+ <a href="http://www.globalsuzuki.com/automobile/">
<img src="{@docRoot}auto/images/logos/auto/suzuki.png"
width="120" height="120" class="img-logo" />
- </a>
+ </a>
+ </div>
</div>
-
- <div class="col-5">
- <a href="http://www.tatamotors.com/">
+
+ <div class="cols cols-leftp">
+ <div class="col-5">
+ <a href="http://www.tatamotors.com/">
<img src="{@docRoot}auto/images/logos/auto/tata.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
-
- <div class="col-5">
- <a href="http://www.vauxhall.co.uk/">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href="http://www.vauxhall.co.uk/">
<img src="{@docRoot}auto/images/logos/auto/vauxhall.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
- </div>
- <div class="cols cols-leftp">
- <div class="col-5">
- <a href="http://www.volkswagen.com/">
+ </a>
+ </div>
+ <div class="col-5">
+ <a href="http://www.volkswagen.com/">
<img src="{@docRoot}auto/images/logos/auto/volkswagen.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
+ </a>
+ </div>
- <div class="col-5">
- <a href="http://www.volvocars.com/intl">
+ <div class="col-5">
+ <a href="http://www.volvocars.com/intl">
<img src="{@docRoot}auto/images/logos/auto/volvo.png"
width="120" height="120" class="img-logo" />
- </a>
- </div>
+ </a>
+ </div>
</div>
</div>
</div>
diff --git a/docs/html/design/index.jd b/docs/html/design/index.jd
index b4e909f4db15..1a0c1257ad67 100644
--- a/docs/html/design/index.jd
+++ b/docs/html/design/index.jd
@@ -18,7 +18,7 @@ nonavpage=true
<h1 class="dac-hero-title">Up and running with material design</h1>
<p class="dac-hero-description">
Android uses a new design metaphor inspired by paper and ink that provides a reassuring
- sense of tactility. Visit the <a href="https://www.google.com/design/spec/material-design/introduction.html">material design</a> site for more resources.
+ sense of tactility. Visit the <a href="https://www.google.com/design/spec/material-design/introduction.html">material design</a> site for more resources.
</p>
<a class="dac-hero-cta" href="https://www.google.com/design/spec/material-design/introduction.html">
<span class="dac-sprite dac-auto-chevron"></span>
diff --git a/docs/html/design/patterns/help.jd b/docs/html/design/patterns/help.jd
index 6ef155a2c894..b5ee05ec3026 100644
--- a/docs/html/design/patterns/help.jd
+++ b/docs/html/design/patterns/help.jd
@@ -76,7 +76,7 @@ page.tags=settings,preferences
</div>
<div class="col-5">
<img src="{@docRoot}design/media/help_evenbetter.png">
- </div>
+ </div>
</div>
<div class="cols">
diff --git a/docs/html/distribute/analyze/build-better-apps.jd b/docs/html/distribute/analyze/build-better-apps.jd
index 823562aa5abd..d0db3924465d 100644
--- a/docs/html/distribute/analyze/build-better-apps.jd
+++ b/docs/html/distribute/analyze/build-better-apps.jd
@@ -108,7 +108,7 @@ page.tags="analytics, user behavior"
</h2>
</div>
-<div class="resource-widget resource-flow-layout col-13"
+<div class="resource-widget resource-flow-layout col-13"
data-query="collection:distribute/analyzebuild"
data-sortorder="-timestamp"
data-cardsizes="6x3"
diff --git a/docs/html/distribute/analyze/google-services.jd b/docs/html/distribute/analyze/google-services.jd
index 0d82c8a1c39a..44eed8efcb2d 100644
--- a/docs/html/distribute/analyze/google-services.jd
+++ b/docs/html/distribute/analyze/google-services.jd
@@ -109,7 +109,7 @@ page.tags="analytics, user behavior"
</h2>
</div>
-<div class="resource-widget resource-flow-layout col-13"
+<div class="resource-widget resource-flow-layout col-13"
data-query="collection:distribute/analyzeact"
data-sortorder="-timestamp"
data-cardsizes="6x3"
diff --git a/docs/html/distribute/analyze/improve-roi.jd b/docs/html/distribute/analyze/improve-roi.jd
index 6c0596213958..95c4db5df176 100644
--- a/docs/html/distribute/analyze/improve-roi.jd
+++ b/docs/html/distribute/analyze/improve-roi.jd
@@ -155,7 +155,7 @@ page.tags="analytics, user behavior"
</h2>
</div>
-<div class="resource-widget resource-flow-layout col-13"
+<div class="resource-widget resource-flow-layout col-13"
data-query="collection:distribute/analyzeimprove"
data-sortorder="-timestamp"
data-cardsizes="6x3"
diff --git a/docs/html/distribute/analyze/measure.jd b/docs/html/distribute/analyze/measure.jd
index 5b29e95b51cd..4cb9bde9d405 100644
--- a/docs/html/distribute/analyze/measure.jd
+++ b/docs/html/distribute/analyze/measure.jd
@@ -82,7 +82,7 @@ dimensions you can break down your analysis by:
<li>Analyze how far shoppers get in the shopping funnel and where they drop
off</li>
<li>Understand which products are viewed most, which are frequently abandoned
-in cart, and which ones convert well</li>
+in cart, and which ones convert well</li>
<li>Upload rich product metadata to slice and dice your data</li>
<li>Create rich user segments to delve deeper into your users’ shopping
behavior and the products they interact with</li>
diff --git a/docs/html/distribute/analyze/start.jd b/docs/html/distribute/analyze/start.jd
index 0221f72ef65f..0a90b4fa4d04 100644
--- a/docs/html/distribute/analyze/start.jd
+++ b/docs/html/distribute/analyze/start.jd
@@ -36,7 +36,7 @@ page.image=images/cards/card-analytics_2x.png
<li><a href="https://accounts.google.com/SignUp?continue=https%3A%2F%2Fwww.google.com%2Fanalytics%2Fmobile%2F&hl=en">Create
your Google Analytics account</a>.</li>
<li>Write down your tracking ID. </li>
-<li>Initialize Google Analytics in your app to start measuring activity immediately.</li>
+<li>Initialize Google Analytics in your app to start measuring activity immediately.</li>
</ul>
<p>
@@ -97,7 +97,7 @@ your Google Analytics account</a>.</li>
</h2>
</div>
-<div class="resource-widget resource-flow-layout col-13"
+<div class="resource-widget resource-flow-layout col-13"
data-query="collection:distribute/analyzestart"
data-sortorder="-timestamp"
data-cardsizes="6x3"
diff --git a/docs/html/distribute/analyze/understand-user-value.jd b/docs/html/distribute/analyze/understand-user-value.jd
index 99fd11a1cda8..6bc192deac39 100644
--- a/docs/html/distribute/analyze/understand-user-value.jd
+++ b/docs/html/distribute/analyze/understand-user-value.jd
@@ -45,7 +45,7 @@ page.tags="analytics, user behavior"
</p>
-<h2 id="audiencereporting">Know your users with Audience Reporting and Demographic
+<h2 id="audiencereporting">Know your users with Audience Reporting and Demographic
and Interest reports</h2>
<p>
@@ -230,7 +230,7 @@ customers, to help you understand what drives users to become loyal customers.</
</h2>
</div>
-<div class="resource-widget resource-flow-layout col-13"
+<div class="resource-widget resource-flow-layout col-13"
data-query="collection:distribute/analyzeunderstand"
data-sortorder="-timestamp"
data-cardsizes="6x3"
diff --git a/docs/html/distribute/engage/ads.jd b/docs/html/distribute/engage/ads.jd
index 10dbea63a5c2..8cfbdf2548db 100644
--- a/docs/html/distribute/engage/ads.jd
+++ b/docs/html/distribute/engage/ads.jd
@@ -54,7 +54,7 @@ conversions in your app.
<h2 id="related_resources">Related resources</h2>
-<div class="resource-widget resource-flow-layout col-13"
+<div class="resource-widget resource-flow-layout col-13"
data-query="collection:distribute/engage/reengage"
data-sortorder="-timestamp"
data-cardsizes="9x3"
diff --git a/docs/html/distribute/engage/analytics.jd b/docs/html/distribute/engage/analytics.jd
index 5f7cade1dbb9..0343def45c83 100644
--- a/docs/html/distribute/engage/analytics.jd
+++ b/docs/html/distribute/engage/analytics.jd
@@ -42,7 +42,7 @@ page.image=/images/gp-analytics.jpg
</h2>
</div>
-<div class="resource-widget resource-flow-layout col-13"
+<div class="resource-widget resource-flow-layout col-13"
data-query="collection:distribute/engage/analytics"
data-sortorder="-timestamp"
data-cardsizes="9x3"
diff --git a/docs/html/distribute/engage/deep-linking.jd b/docs/html/distribute/engage/deep-linking.jd
index 713bfbb413e9..510fa5c4fa8e 100644
--- a/docs/html/distribute/engage/deep-linking.jd
+++ b/docs/html/distribute/engage/deep-linking.jd
@@ -8,7 +8,7 @@ page.tags="engagement", "app indexing", "search", "deep linking"
Users who have your app installed might overlook it as a way to get the answers
they need. With App Indexing, deep links to your Android app appear in Google Search
results so users can get to your native mobile experience quickly, landing exactly
- on the right content within the app.
+ on the right content within the app.
</p>
<p>
diff --git a/docs/html/distribute/engage/easy-signin.jd b/docs/html/distribute/engage/easy-signin.jd
index 924c5b448b70..5c04064e7fbe 100644
--- a/docs/html/distribute/engage/easy-signin.jd
+++ b/docs/html/distribute/engage/easy-signin.jd
@@ -1,70 +1,66 @@
-page.title=Add Quick and Secure Google Sign-in
+page.title=Add Quick and Secure Google Sign-In
page.metaDescription=Increase conversion rates while helping users minimize typing by letting users sign in with Google+.
page.tags="google", "identity", "signin"
page.image=images/cards/google-sign-in_2x.png
@jd:body
-<p>Get people into your apps quickly and securely, using a registration system they
-already use and trust – their Google account. With minimal effort, you can increase
-registration and sign-in conversion by adding trusted registration system that's
-familiar to users, consistent across devices, and quick and easy to use.</p>
+<div class="figure">
+ <img src="{@docRoot}images/distribute/google-sign-in-banner.png" style="width:512px;">
+</div>
+<p>
+ Get customers into your apps quickly and securely using a registration system that they
+ already use and trust &ndash; their Google account. With minimal effort, you can increase
+ registration and sign-in conversion by adding a trusted registration system that's familiar
+ to users, consistent across devices, and quick and easy to use.
+</p>
-<p>Get started <a href="https://developers.google.com/identity/sign-in/">integrating
-Google sign-in into your apps and games</a>.</p>
+<h2 id="tips">Benefits</h2>
-<div class="wrap">
- <div class="cols" style="margin-top:2em;">
- <div class="col-3of12">
- <h3>Quick and secure app access</h3>
- <p>A secure authentication system that makes sign-in easy for your users by
- letting them use their Google account, which they already use with Gmail,
- Play, Google+, and other Google services.</p>
- </div>
- <div class="col-8of12 col-push-1of12">
- <img src="{@docRoot}images/distribute/signin-secure.png" style="padding-top:1em;">
- </div>
- </div>
+<p>These are some of the ways Sign-In can improve your app:</p>
- <div class="cols" style="margin-top:2em;">
- <div class="col-3of12">
- <h3>Seamless experience across screens</h3>
- <p>Keep your users engaged, no matter what device they pick up or sit down at.
- Offer a seamless app experience across devices and into your website, securely
- from a one-time consent. </p>
- </div>
- <div class="col-8of12 col-push-1of12">
- <img src="{@docRoot}images/distribute/signin-seamless.png" style="padding-top:1em;">
- </div>
- </div>
+<ul>
+ <li>
+ <strong>Quick and secure app access</strong>: Google Sign-In is a secure authentication
+ system that makes sign-in easy for your users by letting them use their Google account,
+ which they already use with Gmail, Google Play, Google+, and other Google services.
+ </li>
- <div class="cols" style="margin-top:2em;">
- <div class="col-3of12">
- <h3>Help your users take action with Google</h3>
- <p>Securely connect users with Google services and let them pay with Google
- Wallet, share with Google contacts, save files to Drive, add events to
- Calendar, and more.</p>
- </div>
- <div class="col-8of12 col-push-1of12">
- <img src="{@docRoot}images/distribute/signin-apps.png" style="padding-top:1em;">
- </div>
- </div>
-</div>
+ <li>
+ <strong>Seamless experience across screens</strong>: Keep your users engaged, no matter
+ what device they choose. Offer a secure and seamless app experience across devices and
+ into your website, from a one-time consent.
+ </li>
+
+ <li>
+ <strong>Convenient access to Google services</strong>: Securely connect users with
+ Google services and let them pay with Google Wallet, share with Google Contacts, save files
+ to Google Drive, and add events to Google Calendar.
+ </li>
+</ul>
+<p>Get started integrating<a href="https://developers.google.com/identity/sign-in/">
+Google Sign-In</a> into your apps and games.</p>
-<h2>Tips</h2>
+<h2 id="tips">Tips</h2>
+
+<p>Here are some suggestions for enhancing the Sign-In user experience:</p>
<ul>
-<li>Add <strong>over-the-air installs</strong> to your website. After signing in with Google
- on the web, users will have the option to send your Android app to their device instantly,
- without them ever leaving your website.</li>
- <li>With Google sign-in, you can take advantage of other <strong>Google+ platform
- features</strong> like adding a +1 button so users can make recommendations and the ability
- to share rich content to the Google+ stream.</li>
-</ul>
+ <li>
+ Add <strong>over-the-air installs</strong> to your website. After signing in with Google
+ on the web, users have the option to send your Android app to their device instantly,
+ without ever leaving your website.
+ </li>
+ <li>
+ With Google Sign-In, you can take advantage of other <strong>Google+ platform
+ features</strong>, like adding a +1 button so users can make recommendations and have
+ the ability to share rich content to their Google+ streams.
+ </li>
+</ul>
-<h2 style="clear:both" id="related-resources">Related Resources</h2>
+<h2 style="clear:both" id="related-resources">Related resources</h2>
<div class="resource-widget resource-flow-layout col-13"
data-query="collection:distribute/engage/gplus"
@@ -72,5 +68,3 @@ Google sign-in into your apps and games</a>.</p>
data-cardsizes="9x3"
data-maxresults="4">
</div>
-
-
diff --git a/docs/html/distribute/engage/gcm.jd b/docs/html/distribute/engage/gcm.jd
index 55bd40ab11d1..9fa9d5f00777 100644
--- a/docs/html/distribute/engage/gcm.jd
+++ b/docs/html/distribute/engage/gcm.jd
@@ -43,7 +43,7 @@ page.image=/images/cards/card-google-cloud-messaging_16-9_2x.png
</div>
-<div class="resource-widget resource-flow-layout col-13"
+<div class="resource-widget resource-flow-layout col-13"
data-query="collection:distribute/engage/gcm"
data-sortorder="-timestamp"
data-cardsizes="9x3"
diff --git a/docs/html/distribute/engage/intents.jd b/docs/html/distribute/engage/intents.jd
index 07791e8d7d30..33ed1259a877 100644
--- a/docs/html/distribute/engage/intents.jd
+++ b/docs/html/distribute/engage/intents.jd
@@ -1,5 +1,5 @@
page.title=Increase Usage with Android Intents
-page.metaDescription=Use Android Intents to make your app available to users as they perform tasks in other apps.
+page.metaDescription=Use Android Intents to make your app available to users as they perform tasks in other apps.
page.tags="engagement, intents"
@jd:body
diff --git a/docs/html/distribute/engage/notifications.jd b/docs/html/distribute/engage/notifications.jd
index 1aa0637e5564..c38f649a25a0 100644
--- a/docs/html/distribute/engage/notifications.jd
+++ b/docs/html/distribute/engage/notifications.jd
@@ -51,7 +51,7 @@ page.image=/design/media/notifications_pattern_anatomy.png
</h2>
</div>
-<div class="resource-widget resource-flow-layout col-13"
+<div class="resource-widget resource-flow-layout col-13"
data-query="collection:distribute/getusers/notifications"
data-sortorder="-timestamp"
data-cardsizes="9x3"
diff --git a/docs/html/distribute/engage/video.jd b/docs/html/distribute/engage/video.jd
index c5a4997c4970..cf06ce0730de 100644
--- a/docs/html/distribute/engage/video.jd
+++ b/docs/html/distribute/engage/video.jd
@@ -1,5 +1,5 @@
page.title=Delight Users with Videos
-page.metaDescription=Videos are one of the most effective ways to get users excited about your apps.
+page.metaDescription=Videos are one of the most effective ways to get users excited about your apps.
page.tags="engagement"
page.image=/images/gp-engage-smule.jpg
diff --git a/docs/html/distribute/engage/widgets.jd b/docs/html/distribute/engage/widgets.jd
index 6adb55cb7f5b..a6623ba99a45 100644
--- a/docs/html/distribute/engage/widgets.jd
+++ b/docs/html/distribute/engage/widgets.jd
@@ -37,7 +37,7 @@ page.image=/images/gp-engage-0.jpg
</h2>
</div>
-<div class="resource-widget resource-flow-layout col-13"
+<div class="resource-widget resource-flow-layout col-13"
data-query="collection:distribute/engage/widgets"
data-sortorder="-timestamp"
data-cardsizes="9x3"
diff --git a/docs/html/distribute/essentials/optimizing-your-app.jd b/docs/html/distribute/essentials/optimizing-your-app.jd
index 696ef53a3621..09c52d4ca2b9 100644
--- a/docs/html/distribute/essentials/optimizing-your-app.jd
+++ b/docs/html/distribute/essentials/optimizing-your-app.jd
@@ -4,7 +4,7 @@ page.image=/distribute/images/gp-optimize-card.jpg
@jd:body
-<div id="qv-wrapper">
+<div id="qv-wrapper">
<div id="qv">
<h2>Strategies</h2>
<ol>
diff --git a/docs/html/distribute/essentials/quality/billions.jd b/docs/html/distribute/essentials/quality/billions.jd
index 70421433e0bb..2e14b37e393a 100644
--- a/docs/html/distribute/essentials/quality/billions.jd
+++ b/docs/html/distribute/essentials/quality/billions.jd
@@ -1,5 +1,5 @@
page.title=Building for Billions
-page.metaDescription=Best practices on how to optimize Android apps for low- and no-bandwidth and low-cost devices.
+page.metaDescription=Best practices on how to optimize Android apps for low- and no-bandwidth and low-cost devices.
page.image=/distribute/images/billions-guidelines.png
@jd:body
@@ -18,7 +18,7 @@ page.image=/distribute/images/billions-guidelines.png
<li><a href="#compatibility">Backward compatibility</a></li>
<li><a href="#memory">Efficient memory usage</a></li>
</ol>
-
+
<h2><a href="#cost">Data Cost</a></h2>
<ol>
<li><a href="#appsize">Reduce app size</a></li>
@@ -42,14 +42,14 @@ page.image=/distribute/images/billions-guidelines.png
<!-- intro -->
<p>Internet use—and smartphone penetration—is growing fastest in markets with
- low, intermittent, or expensive connectivity. Successful apps in these
- markets need to perform across a variety of speeds and devices, as well as
+ low, intermittent, or expensive connectivity. Successful apps in these
+ markets need to perform across a variety of speeds and devices, as well as
conserve and share information about battery and data consumption.</p>
<p>To help you address these important considerations, we’ve compiled the
- following checklist. These do not follow a particular order, and as
- always it's a good idea to research particularities of any market or country
- you're targeting.
+ following checklist. These do not follow a particular order, and as
+ always it's a good idea to research particularities of any market or country
+ you're targeting.
</p>
<!-- connectivity -->
@@ -67,40 +67,40 @@ page.image=/distribute/images/billions-guidelines.png
<h4 id="images-format">Serve WebP images</h4>
<ul>
<li>Serve <a
- href="https://developers.google.com/speed/webp/">WebP</a> files over the
- network. WebP reduces image load times, saves network bandwidth, and often
- results in smaller file sizes than its PNG and JPG counterparts, with at
- least the same image quality. Even at lossy settings, WebP can produce a
- nearly identical image. Android has had lossy <a
- href="{@docRoot}guide/appendix/media-formats.html">WebP support</a> since
- Android 4.0 (API level 14: Ice Cream Sandwich) and support for lossless /
+ href="https://developers.google.com/speed/webp/">WebP</a> files over the
+ network. WebP reduces image load times, saves network bandwidth, and often
+ results in smaller file sizes than its PNG and JPG counterparts, with at
+ least the same image quality. Even at lossy settings, WebP can produce a
+ nearly identical image. Android has had lossy <a
+ href="{@docRoot}guide/appendix/media-formats.html">WebP support</a> since
+ Android 4.0 (API level 14: Ice Cream Sandwich) and support for lossless /
transparent WebP since Android 4.2 (API level 17: Jelly Bean).</li>
</ul>
<h4 id="images-sizing">Dynamic image sizing</h4>
<ul>
<li>Have your apps request images at the targeted rendering size, and have
- your server provide those images to fit; the target rendering size will
- vary based on device specifications. Doing this minimizes the network
- overhead and reduces the amount of memory needed to hold each image,
+ your server provide those images to fit; the target rendering size will
+ vary based on device specifications. Doing this minimizes the network
+ overhead and reduces the amount of memory needed to hold each image,
resulting in improved performance and user satisfaction.</li>
<li>Your user experience degrades when users are waiting for images to
- download. Using appropriate image sizes helps to address these issues.
- Consider making image size requests based on network type or network
+ download. Using appropriate image sizes helps to address these issues.
+ Consider making image size requests based on network type or network
quality; this size could be smaller than the target rendering size.</li>
<li>Dynamic placeholders like <a
href="{@docRoot}reference/android/support/v7/graphics/Palette.html">
- pre-computed palette values</a> or low-resolution thumbnails can improve
+ pre-computed palette values</a> or low-resolution thumbnails can improve
the user experience while the image is being fetched.</li>
</ul>
<h4 id="images-libraries">Use image loading libraries</h4>
<ul>
<li>Your app should not have to fetch any image more than once. Image
- loading libraries such as <a class="external-link"
- href="https://github.com/bumptech/glide">Glide</a> and <a
- class="external-link" href="http://square.github.io/picasso/">Picasso</a>
- fetch the image, cache it, and provide hooks into your Views to show
- placeholder images until the actual images are ready. Because images are
- cached, these libraries return the local copy the next time they are
+ loading libraries such as <a class="external-link"
+ href="https://github.com/bumptech/glide">Glide</a> and <a
+ class="external-link" href="http://square.github.io/picasso/">Picasso</a>
+ fetch the image, cache it, and provide hooks into your Views to show
+ placeholder images until the actual images are ready. Because images are
+ cached, these libraries return the local copy the next time they are
requested.</li>
<li>Image-loading libraries manage their cache, holding onto the most recent
images so that your app storage doesn’t grow indefinitely.</li>
@@ -110,59 +110,59 @@ page.image=/distribute/images/billions-guidelines.png
<h4 id="network-offline">Make your app usable offline</h4>
<ul>
<li>In places like subways, planes, elevators, and parking garages, it is
- common for devices to lose network connectivity. Creating a useful offline
- state results in users being able to interact with the app at all times, by
- presenting cached information. Ensure that your app is usable offline or
- when network connectivity is poor by storing data locally, caching data,
+ common for devices to lose network connectivity. Creating a useful offline
+ state results in users being able to interact with the app at all times, by
+ presenting cached information. Ensure that your app is usable offline or
+ when network connectivity is poor by storing data locally, caching data,
and queuing outbound requests for when connectivity is restored.</li>
<li>Where possible, apps should not notify users that connectivity has
- been lost. It is only when the user performs an operation where connectivity
+ been lost. It is only when the user performs an operation where connectivity
is essential that the user needs to be notified.</li>
<li>When a device lacks connectivity, your app should batch up network
- requests&mdash;on behalf of the user&mdash;that can be executed when
- connectivity is restored. An example of this is an email client that allows
- users to compose, send, read, move, and delete existing mails even when the
- device is offline. These operations can be cached and executed when
- connectivity is restored. In doing so, the app is able to provide a similar
+ requests&mdash;on behalf of the user&mdash;that can be executed when
+ connectivity is restored. An example of this is an email client that allows
+ users to compose, send, read, move, and delete existing mails even when the
+ device is offline. These operations can be cached and executed when
+ connectivity is restored. In doing so, the app is able to provide a similar
user experience whether the device is online or offline.</li>
</ul>
<h4 id="network-arch">Use GcmNetworkManager and/or Content Providers</h4>
<ul>
<li>Ensure that your app stores all data on disk via a database or similar
- structure so that it performs optimally regardless of network conditions
- (for example, via SQLite + ContentProvider). The <a
+ structure so that it performs optimally regardless of network conditions
+ (for example, via SQLite + ContentProvider). The <a
href="https://developers.google.com/cloud-messaging/network-manager">
- GCM Network Manager</a>
+ GCM Network Manager</a>
(<a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
- <code>GcmNetworkManager</code></a>) can result in a robust mechanism to
- sync data with servers while <a
- href="{@docRoot}guide/topics/providers/content-providers.html">content
- providers</a> ({@link android.content.ContentProvider}) cache that data,
+ <code>GcmNetworkManager</code></a>) can result in a robust mechanism to
+ sync data with servers while <a
+ href="{@docRoot}guide/topics/providers/content-providers.html">content
+ providers</a> ({@link android.content.ContentProvider}) cache that data,
combining to provide an architecture that enables a useful offline state.</li>
<li>Apps should cache content that is fetched from the network. Before making
- subsequent requests, apps should display locally cached data. This ensures
- that the app is functional regardless of whether the device is offline or
+ subsequent requests, apps should display locally cached data. This ensures
+ that the app is functional regardless of whether the device is offline or
on a slow/unreliable network.</li>
</ul>
<h4 id="network-duplicate">Deduplicate network requests</h4>
<ul>
<li>An offline-first architecture initially tries to fetch data from local
- storage and, failing that, requests the data from the network. After being
- retrieved from the network, the data is cached locally for future
- retrieval. This helps to ensure that network requests for the same piece of
- data only occur once—the rest of the requests are satisfied locally. To
- achieve this, use a local database for long-lived data (usually
- {@link android.database.sqlite} or
+ storage and, failing that, requests the data from the network. After being
+ retrieved from the network, the data is cached locally for future
+ retrieval. This helps to ensure that network requests for the same piece of
+ data only occur once—the rest of the requests are satisfied locally. To
+ achieve this, use a local database for long-lived data (usually
+ {@link android.database.sqlite} or
{@link android.content.SharedPreferences}).</li>
<li>An offline-first architecture always looks for data locally first, then
- makes the request over the network. The response is cached and then returned
- locally. Such an architecture simplifies an app’s flow between offline and
- online states as one side fetches from the network to the cache, while the
+ makes the request over the network. The response is cached and then returned
+ locally. Such an architecture simplifies an app’s flow between offline and
+ online states as one side fetches from the network to the cache, while the
other retrieves data from the cache to present to the user.</li>
<li>For transitory data, use a bounded disk cache such as a <a class="external-link"
href="https://github.com/JakeWharton/DiskLruCache"><code>DiskLruCache</code>
- </a>. Data that doesn’t typically change should only be requested once over
- the network and cached for future use. Examples of such data are images and
+ </a>. Data that doesn’t typically change should only be requested once over
+ the network and cached for future use. Examples of such data are images and
non-temporal documents like news articles or social posts.</li>
</ul>
@@ -170,29 +170,29 @@ page.image=/distribute/images/billions-guidelines.png
<h4 id="transfer-prioritize">Prioritize bandwidth</h4>
<ul>
<li>Writers of apps should not assume that any network that the device is
- connected to is long-lasting or reliable. For this reason, apps should
- prioritize network requests to display the most useful information to the
+ connected to is long-lasting or reliable. For this reason, apps should
+ prioritize network requests to display the most useful information to the
user as soon as possible.</li>
<li>Presenting users with visible and relevant information immediately is a
- better user experience than making them wait for information that might not
- be necessary. This reduces the time that the user has to wait and
+ better user experience than making them wait for information that might not
+ be necessary. This reduces the time that the user has to wait and
increases the usefulness of the app on slow networks.</li>
<li>To achieve this, sequence your network requests such that text is
- fetched before rich media. Text requests tend to be smaller, compress
- better, and hence transfer faster, meaning that your app can display useful
- content quickly. For more information on managing network requests, visit
- the Android training on <a
- href="{@docRoot}training/basics/network-ops/managing.html">Managing Network
+ fetched before rich media. Text requests tend to be smaller, compress
+ better, and hence transfer faster, meaning that your app can display useful
+ content quickly. For more information on managing network requests, visit
+ the Android training on <a
+ href="{@docRoot}training/basics/network-ops/managing.html">Managing Network
Usage</a>.</li>
</ul>
<h4 id="network-bandwidth">Use less bandwidth on slower connections</h4>
<ul>
<li>The ability for your app to transfer data in a timely fashion is
- dependent on the network connection. Detecting the quality of the network
- and adjusting the way your app uses it can help provide an excellent user
+ dependent on the network connection. Detecting the quality of the network
+ and adjusting the way your app uses it can help provide an excellent user
experience.</li>
<li>You can use the following methods to detect the underlying network
- quality. Using the data from these methods, your app should tailor its use
+ quality. Using the data from these methods, your app should tailor its use
of the network to continue to provide a timely response to user actions:
<ul>
<li>{@link android.net.ConnectivityManager}>
@@ -206,27 +206,27 @@ page.image=/distribute/images/billions-guidelines.png
</ul>
</li>
<li>On slower connections, consider downloading only lower-resolution media
- or perhaps none at all. This ensures that your users are still able to use
- the app on slow connections. Where you don’t have an image or the image is
- still loading, you should always show a placeholder. You can create a
- dynamic placeholder by using the <a
+ or perhaps none at all. This ensures that your users are still able to use
+ the app on slow connections. Where you don’t have an image or the image is
+ still loading, you should always show a placeholder. You can create a
+ dynamic placeholder by using the <a
href="{@docRoot}tools/support-library/features.html#v7-palette">
- Palette library</a> to generate placeholder colors that match the target
+ Palette library</a> to generate placeholder colors that match the target
image.</li>
<li>Prioritize network requests such that text is fetched before rich media.
- Text requests tend to be smaller, compress better, and hence transfer
- faster, meaning that your app can display useful content quickly. For more
- information on adjusting bandwidth based on network connection, see the
- Android training on <a
- href="{@docRoot}training/basics/network-ops/managing.html">Managing Network
+ Text requests tend to be smaller, compress better, and hence transfer
+ faster, meaning that your app can display useful content quickly. For more
+ information on adjusting bandwidth based on network connection, see the
+ Android training on <a
+ href="{@docRoot}training/basics/network-ops/managing.html">Managing Network
Usage</a>.</li>
</ul>
<h4 id="network-behavior">Detect network changes, then change app behavior</h4>
<ul>
<li>Network quality is not static; it changes based on location, network
- traffic, and local population density. Apps should detect changes in
- network and adjust bandwidth accordingly. By doing so, your app can tailor
- the user experience to the network quality. Detect network state using
+ traffic, and local population density. Apps should detect changes in
+ network and adjust bandwidth accordingly. By doing so, your app can tailor
+ the user experience to the network quality. Detect network state using
these methods:
<ul>
<li>{@link android.net.ConnectivityManager}>
@@ -238,26 +238,26 @@ page.image=/distribute/images/billions-guidelines.png
</ul>
</li>
<li>As the network quality degrades, scale down the number and size of
- requests. As the connection quality improves, you can scale up your
+ requests. As the connection quality improves, you can scale up your
requests to optimal levels.</li>
<li>On higher quality, unmetered networks, consider <a
href="{@docRoot}training/efficient-downloads/efficient-network-access.html#PrefetchData">
- prefetching data</a> to make it available ahead of time. From a user
- experience standpoint, this might mean that news reader apps only fetch
- three articles at a time on 2G but fetch twenty articles at a time on
- Wi-Fi. For more information on adjusting app behavior based on network changes,
- visit the Android training on <a
+ prefetching data</a> to make it available ahead of time. From a user
+ experience standpoint, this might mean that news reader apps only fetch
+ three articles at a time on 2G but fetch twenty articles at a time on
+ Wi-Fi. For more information on adjusting app behavior based on network changes,
+ visit the Android training on <a
href="{@docRoot}training/monitoring-device-state/connectivity-monitoring.html">
Monitoring the Connectivity Status</a>.</li>
<li>The broadcast <a
href="{@docRoot}reference/android/net/ConnectivityManager.html#CONNECTIVITY_ACTION">
- <code>CONNECTIVITY_CHANGE</code></a> is sent when a change in network
- connectivity occurs. When your app is in the foreground, you can call <a
+ <code>CONNECTIVITY_CHANGE</code></a> is sent when a change in network
+ connectivity occurs. When your app is in the foreground, you can call <a
href="{@docRoot}reference/android/content/Context.html#registerReceiver(android.content.BroadcastReceiver,%20android.content.IntentFilter)">
- <code>registerReceiver</code></a> to receive this broadcast. After receiving
- the broadcast, you should reevaluate the current network state and adjust
- your UI and network usage appropriately. You should not declare this receiver
- in your manifest, as it will no longer function beginning with Android N.
+ <code>registerReceiver</code></a> to receive this broadcast. After receiving
+ the broadcast, you should reevaluate the current network state and adjust
+ your UI and network usage appropriately. You should not declare this receiver
+ in your manifest, as it will no longer function beginning with Android N.
For more details see <a href="{@docRoot}preview/behavior-changes.html">
Android N behavior changes</a>.</li>
</ul>
@@ -274,55 +274,55 @@ page.image=/distribute/images/billions-guidelines.png
<h2 id="capability">Device Capability</h2>
</div>
<p>Reaching new users means supporting an increasing variety of Android
- platform versions and device specifications. Optimize for common RAM and
+ platform versions and device specifications. Optimize for common RAM and
screen sizes and resolutions to improve the user experience. </p>
<h3 id="screens">Support varying screen sizes</h3>
<h4 id="screens-dp">Use density-independent pixels (dp)</h4>
<ul>
<li>Defining layout dimensions with pixels is a problem because different
- screens have different pixel densities, so the same number of pixels may
- correspond to different physical sizes on different devices. The
- density-independent pixel (dp) corresponds to the physical size of a pixel
+ screens have different pixel densities, so the same number of pixels may
+ correspond to different physical sizes on different devices. The
+ density-independent pixel (dp) corresponds to the physical size of a pixel
at 160 dots per inch (mdpi density).</li>
<li>Defining layouts with dp ensures that the physical size of your user
- interface is consistent regardless of device. Visit the Android
- guide on <a
+ interface is consistent regardless of device. Visit the Android
+ guide on <a
href="https://developer.android.com/guide/practices/screens_support.html">
- Supporting Multiple Screens</a> for best practices using
+ Supporting Multiple Screens</a> for best practices using
density-independent pixels.</li>
</ul>
<h4 id="screens-density">Test graphics on ldpi/mdpi screen densities</h4>
<ul>
<li>Ensure that your app layouts work well on low- and medium-density
- (ldpi/mdpi) screens because these are <a
+ (ldpi/mdpi) screens because these are <a
href="https://developer.android.com/about/dashboards/index.html#Screens">
- common densities</a>, especially in lower-cost devices. Testing on
- lower-density screens helps to validate that your layouts are legible on
+ common densities</a>, especially in lower-cost devices. Testing on
+ lower-density screens helps to validate that your layouts are legible on
lower-density screens.</li>
<li>Lower-density screens can result in unclear text where the finer details
- aren't visible. The Material Design guidelines describe <a
+ aren't visible. The Material Design guidelines describe <a
class="external-link" href="https://www.google.com/design/spec/layout/metrics-keylines.html">
- metrics and keylines</a> to ensure that your layouts can scale across
+ metrics and keylines</a> to ensure that your layouts can scale across
screen densities.</li>
<li>Devices with lower-density screens tend to have lower hardware
- specifications. To ensure that your app performs well on these devices,
- consider reducing or eliminating heavy loads, such as animations and
- transitions. For more information on supporting different densities, see
- the Android training on <a
+ specifications. To ensure that your app performs well on these devices,
+ consider reducing or eliminating heavy loads, such as animations and
+ transitions. For more information on supporting different densities, see
+ the Android training on <a
href="https://developer.android.com/training/multiscreen/screendensities.html">
Supporting Different Densities</a>.</li>
</ul>
<h4 id="screens-sizes">Test layouts on small/medium screen sizes</h4>
<ul>
<li>Validate that your layouts scale down by testing on smaller screens. As
- screen sizes shrink, be very selective about visible UI elements, because
+ screen sizes shrink, be very selective about visible UI elements, because
there is limited space for them.</li>
<li>Devices with smaller screens tend to have lower hardware specifications.
- To ensure that your app performs well on these devices, try reducing or
- eliminating heavy loads, such as animations or transitions. For more
- information on supporting different screen sizes, see the Android
- training on <a
+ To ensure that your app performs well on these devices, try reducing or
+ eliminating heavy loads, such as animations or transitions. For more
+ information on supporting different screen sizes, see the Android
+ training on <a
href="https://developer.android.com/training/multiscreen/screendensities.html">
Supporting Different Screen Sizes</a>.</li>
</ul>
@@ -332,57 +332,57 @@ page.image=/distribute/images/billions-guidelines.png
appropriately</h4>
<ul>
<li>Apps should build and target a recent version of Android to ensure most
- current behavior across a broad range of devices; this still provides
- backward compatibility to older versions. Here are the best practices for
+ current behavior across a broad range of devices; this still provides
+ backward compatibility to older versions. Here are the best practices for
targeting API levels appropriately:
<ul>
<li><a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">
- {@code targetSdkVersion}</a> should be the latest version of Android.
- Targeting the most recent version ensures that your app inherits newer
- runtime behaviors when running newer versions of Android. Be sure to
- test your app on newer Android versions when updating the
+ {@code targetSdkVersion}</a> should be the latest version of Android.
+ Targeting the most recent version ensures that your app inherits newer
+ runtime behaviors when running newer versions of Android. Be sure to
+ test your app on newer Android versions when updating the
targetSdkVersion as it can affect app behavior.</li>
<li><a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">
- {@code minSdkVersion}</a> sets the minimum supported Android version.
- Use Android 4.0 (API level 14: Ice Cream Sandwich) or Android 4.1 (API
- level 16: Jelly Bean)—these versions give maximum coverage for modern
- devices. Setting {@code minSdkVersion} also results in the Android build
- tools reporting incorrect use of new APIs that might not be available in
- older versions of the platform. By doing so, developers are protected
+ {@code minSdkVersion}</a> sets the minimum supported Android version.
+ Use Android 4.0 (API level 14: Ice Cream Sandwich) or Android 4.1 (API
+ level 16: Jelly Bean)—these versions give maximum coverage for modern
+ devices. Setting {@code minSdkVersion} also results in the Android build
+ tools reporting incorrect use of new APIs that might not be available in
+ older versions of the platform. By doing so, developers are protected
from inadvertently breaking backward compatibility.</li>
</ul>
</li>
<li>Consult the <a
href="https://developer.android.com/about/dashboards/index.html#Platform">
- Android dashboards</a>, the <a class="external-link"
- href="https://play.google.com/apps/publish/">Google Play Developer
- Console</a> for your app, and industry research in your target markets to
+ Android dashboards</a>, the <a class="external-link"
+ href="https://play.google.com/apps/publish/">Google Play Developer
+ Console</a> for your app, and industry research in your target markets to
gauge which versions of Android to target, based on your target users.</li>
</ul>
<h4 id="compatibility-libraries">Use the Android Support libraries</h4>
<ul>
<li>Ensure your app provides a consistent experience across OS versions by
using the Google-provided support libraries such as AppCompat and the Design
- Support Library. The Android Support Library package is a set of code
- libraries that provides backward-compatible versions of Android framework
+ Support Library. The Android Support Library package is a set of code
+ libraries that provides backward-compatible versions of Android framework
APIs as well as features that are only available through the library APIs.
</li>
<li>Some of the the highlights include:
<ul>
<li>v4 & v7 support library: Many framework APIs for older versions of
- Android such as {@link android.support.v4.view.ViewPager},
- {@link android.app.ActionBar},
- {@link android.support.v7.widget.RecyclerView}, and
+ Android such as {@link android.support.v4.view.ViewPager},
+ {@link android.app.ActionBar},
+ {@link android.support.v7.widget.RecyclerView}, and
{@link android.support.v7.graphics.Palette}.</li>
<li><a href="{@docRoot}tools/support-library/features.html#design">Design
- Support</a> library: APIs to support adding Material Design components
+ Support</a> library: APIs to support adding Material Design components
and patterns to your apps.</li>
<li><a href="{@docRoot}tools/support-library/features.html#multidex">
- Multidex Support</a> library: provides support for large apps that have
- more than 65K methods. This can happen if your app is using many
- libraries.</li>
+ Multidex Support</a> library: provides support for large apps that have
+ more than 65K methods. This can happen if your app is using many
+ libraries.</li>
</ul>
</li>
<li>For more information on the available support libraries, see the <a
@@ -392,14 +392,14 @@ page.image=/distribute/images/billions-guidelines.png
<h4 id="compatibility-playservices">Use Google Play services</h4>
<ul>
<li>Google Play services brings the best of Google APIs independent of
- Android platform version. Consider using features from Google Play services
+ Android platform version. Consider using features from Google Play services
to offer the most streamlined Google experience on Android devices.</li>
- <li>Google Play services also include useful APIs such as <a
+ <li>Google Play services also include useful APIs such as <a
href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
- <code>GcmNetworkManager</code></a>, which provides much of Android 5.0’s
+ <code>GcmNetworkManager</code></a>, which provides much of Android 5.0’s
{@link android.app.job.JobScheduler} API for older versions of Android. </li>
<li>Updates to Google Play services are distributed automatically by the
- Google Play Store, and new versions of the client library are delivered
+ Google Play Store, and new versions of the client library are delivered
through the Android SDK Manager. </li>
</ul>
<h3 id="memory">Efficient memory usage</h3>
@@ -408,44 +408,44 @@ page.image=/distribute/images/billions-guidelines.png
<li>Adjusting your memory footprint dynamically helps to ensure compatibility
across devices with different RAM configurations.</li>
<li>Methods such as {@link android.app.ActivityManager#isLowRamDevice} and
- {@link android.app.ActivityManager#getMemoryClass()} help determine memory
- constraints at runtime. Based on this information, you can scale down your
- memory usage. As an example, you can use lower resolution images on low memory
+ {@link android.app.ActivityManager#getMemoryClass()} help determine memory
+ constraints at runtime. Based on this information, you can scale down your
+ memory usage. As an example, you can use lower resolution images on low memory
devices.</li>
<li>For more information on managing your app’s memory, see the Android
- training on <a href="{@docRoot}training/articles/memory.html">Managing
+ training on <a href="{@docRoot}training/articles/memory.html">Managing
Your App's Memory</a>.</li>
</ul>
<h4 id="memory-longprocesses">Avoid long-running processes</h4>
<ul>
<li>Long-running processes stay resident in memory and can result in slowing
- down the device. In most situations, your app should wake up for a given
- event, process data, and shut down. You should use <a
- href="https://developers.google.com/cloud-messaging">Google Cloud Messaging
- (GCM)</a> and/or <a
+ down the device. In most situations, your app should wake up for a given
+ event, process data, and shut down. You should use <a
+ href="https://developers.google.com/cloud-messaging">Google Cloud Messaging
+ (GCM)</a> and/or <a
href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
- <code>GcmNetworkManager</code></a> to avoid long running background
+ <code>GcmNetworkManager</code></a> to avoid long running background
services and reduce memory pressure on the user’s device.</li>
</ul>
<h4 id="memory-benchmark">Benchmark memory usage</h4>
<ul>
<li>Android Studio provides memory benchmarking and profiling tools, enabling
you to measure memory usage at run time. Benchmarking your app’s memory
- footprint enables you to monitor memory usage over multiple versions of
- the app. This can help catch unintentional memory footprint growth. These
+ footprint enables you to monitor memory usage over multiple versions of
+ the app. This can help catch unintentional memory footprint growth. These
tools can be used in the following ways:
<ul>
<li>Use the <a
- href="{@docRoot}tools/performance/memory-monitor/index.html">Memory
- Monitor</a> tool to find out whether undesirable garbage collection (GC)
- event patterns might be causing performance problems.</li>
+ href="{@docRoot}tools/performance/memory-monitor/index.html">Memory
+ Monitor</a> tool to find out whether undesirable garbage collection (GC)
+ event patterns might be causing performance problems.</li>
<li>Run <a
href="{@docRoot}tools/performance/heap-viewer/index.html">Heap Viewer</a>
- to identify object types that get or stay allocated unexpectedly or
+ to identify object types that get or stay allocated unexpectedly or
unnecessarily.</li>
<li>Use <a
href="{@docRoot}tools/performance/allocation-tracker/index.html">
- Allocation Tracker</a> to identify where in your code the problem might
+ Allocation Tracker</a> to identify where in your code the problem might
be.</li>
</ul>
</li>
@@ -466,35 +466,35 @@ page.image=/distribute/images/billions-guidelines.png
<h2 id="cost">Data Cost</h2>
</div>
<p>Data plans in some countries can cost upwards of 10% of monthly income.
- Conserve data and give control to optimize user experience. Reduce data
+ Conserve data and give control to optimize user experience. Reduce data
consumption and give users control over your app’s use of data.</p>
<h3 id="appsize">Reduce app size</h3>
<h4 id="appsize-graphics">Reduce APK graphical asset size</h4>
<ul>
<li>Graphical assets are often the largest contributor to the size of the
- APK. Optimizing these can result in smaller downloads and thus faster
+ APK. Optimizing these can result in smaller downloads and thus faster
installation times for users.</li>
<li>For graphical assets like icons, use Scalable Vector Graphics (SVG)
- format. SVG images are relatively tiny in size and can be rendered at
- runtime to any resolution. The <a
- href="{@docRoot}tools/support-library/index.html">Android Support</a>
- library provides a backward-compatible implementation for vector resources as
- far back as Android 2.1 (API level 7). Get started with vectors with <a
- class="external-link"
+ format. SVG images are relatively tiny in size and can be rendered at
+ runtime to any resolution. The <a
+ href="{@docRoot}tools/support-library/index.html">Android Support</a>
+ library provides a backward-compatible implementation for vector resources as
+ far back as Android 2.1 (API level 7). Get started with vectors with <a
+ class="external-link"
href="https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88">
this Medium post</a>. </li>
<li>For non-vector images, like photos, use <a
- href="https://developers.google.com/speed/webp/">WebP</a>. WebP reduces
- image load times, saves network bandwidth, and is proven to result in
- smaller file sizes than its PNG and JPG counterparts, with at least the
- same image quality. Even at lossy settings, WebP can produce a nearly
- identical image. Android has had lossy WebP support since Android 4.0 (API
+ href="https://developers.google.com/speed/webp/">WebP</a>. WebP reduces
+ image load times, saves network bandwidth, and is proven to result in
+ smaller file sizes than its PNG and JPG counterparts, with at least the
+ same image quality. Even at lossy settings, WebP can produce a nearly
+ identical image. Android has had lossy WebP support since Android 4.0 (API
level 14: Ice Cream Sandwich) and support for lossless / transparent WebP since Android 4.2 (API level 17: Jelly Bean).</li>
<li>If you have many large images across multiple densities, consider
- using <a href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple
- APK support</a> to split your APK by density. This results in builds
- targeted for specific densities, meaning users with low-density devices
+ using <a href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple
+ APK support</a> to split your APK by density. This results in builds
+ targeted for specific densities, meaning users with low-density devices
won’t have to incur the penalty of unused high-density assets.</li>
<li>A detailed guide on reducing your APK size can be found in <a
class="external-link" href="https://medium.com/@wkalicinski/smallerapk-part-4-multi-apk-through-abi-and-density-splits-477083989006">
@@ -503,84 +503,84 @@ page.image=/distribute/images/billions-guidelines.png
<h4 id="appsize-code">Reduce code size</h4>
<ul>
<li>Be careful about using external libraries because not all libraries are
- meant to be used in mobile apps. Ensure that the libraries your app is
+ meant to be used in mobile apps. Ensure that the libraries your app is
using are optimized for mobile use.</li>
<li>Every library in your Android project is adding potentially unused code
- to your APK. There are also some libraries that aren’t designed with mobile
- development in mind. These libraries can end up contributing to significant
+ to your APK. There are also some libraries that aren’t designed with mobile
+ development in mind. These libraries can end up contributing to significant
APK bloat.</li>
<li>Consider optimizing your compiled code using a tool such as <a
- href="{@docRoot}tools/help/proguard.html">ProGuard</a>. ProGuard identifies
- code that isn’t being used and removes it from your APK. Also <a
- class="external-link"
+ href="{@docRoot}tools/help/proguard.html">ProGuard</a>. ProGuard identifies
+ code that isn’t being used and removes it from your APK. Also <a
+ class="external-link"
href="http://tools.android.com/tech-docs/new-build-system/resource-shrinking">
- enable resource shrinking</a> at build time by setting
- <code>minifyEnabled=true</code>, <code>shrinkResources=true</code> in
- <code>build.gradle</code>—this automatically removes unused resources from
+ enable resource shrinking</a> at build time by setting
+ <code>minifyEnabled=true</code>, <code>shrinkResources=true</code> in
+ <code>build.gradle</code>—this automatically removes unused resources from
your APK.</li>
<li>When using Google Play services, you should <a
href="{@docRoot}google/play-services/setup.html#add_google_play_services_to_your_project">
selectively include</a> only the necessary APIs into your APK.</li>
<li>For more information on reducing code size in your APK, see the Android
- training on how to <a
- href="{@docRoot}training/articles/memory.html#DependencyInjection">Avoid
+ training on how to <a
+ href="{@docRoot}training/articles/memory.html#DependencyInjection">Avoid
dependency injection frameworks</a>.</li>
</ul>
<h4 id="appsize-external">Allow app to be moved to external (SD) storage</h4>
<ul>
<li>Low-cost devices often come with little on-device storage. Users can
- extend this with SD cards; however, apps need to explicitly declare that
+ extend this with SD cards; however, apps need to explicitly declare that
they support being installed to external storage before users can move them.
</li>
<li>Allow your app to be installed to external storage using the <a
href="{@docRoot}guide/topics/manifest/manifest-element.html#install"><code>
- android:installLocation</code></a> flag in your AndroidManifest. For more
- information on enabling your app to be moved to external storage, see the
- Android guide on <a
- href="{@docRoot}guide/topics/data/install-location.html">App Install
+ android:installLocation</code></a> flag in your AndroidManifest. For more
+ information on enabling your app to be moved to external storage, see the
+ Android guide on <a
+ href="{@docRoot}guide/topics/data/install-location.html">App Install
Location</a>.</li>
</ul>
<h4 id="appsize-postinstall">Reduce post-install app disk usage</h4>
<ul>
<li>Keeping your app’s disk usage low means that users are less likely to
- uninstall your app when the device is low on free space. When using caches,
- it’s important to apply bounds around your caches—this prevents your app’s
- disk usage from growing indefinitely. Be sure you put your cached data in
- {@link android.content.Context#getCacheDir()}—the system can delete files
- placed here as needed, so they won’t show up as storage committed to the
+ uninstall your app when the device is low on free space. When using caches,
+ it’s important to apply bounds around your caches—this prevents your app’s
+ disk usage from growing indefinitely. Be sure you put your cached data in
+ {@link android.content.Context#getCacheDir()}—the system can delete files
+ placed here as needed, so they won’t show up as storage committed to the
app.</li>
</ul>
<h3 id="configurablenetwork">Offer configurable network usage</h3>
-<h4 id="configurablenetwork-onboarding">Provide onboarding experiences for
+<h4 id="configurablenetwork-onboarding">Provide onboarding experiences for
subjective user choices</h4>
<ul>
<li>Apps that allow users to reduce data usage are well received, even if
- they demand heavy data requirements. If your app uses a considerable amount
- of bandwidth (for example, video streaming apps), you can provide an
- onboarding experience for users to configure network usage. For example,
- you could allow the user to force lower-bitrate video streams on cellular
+ they demand heavy data requirements. If your app uses a considerable amount
+ of bandwidth (for example, video streaming apps), you can provide an
+ onboarding experience for users to configure network usage. For example,
+ you could allow the user to force lower-bitrate video streams on cellular
networks. </li>
<li>Additional settings for users to control data syncing, prefetching, and
- network usage behavior (for example, prefetch all starred news categories on
+ network usage behavior (for example, prefetch all starred news categories on
Wi-Fi only), also help users tailor your app’s behavior to their needs.</li>
<li>For more information on managing network usage, see the Android training
- on <a href="{@docRoot}training/basics/network-ops/managing.html">Managing
+ on <a href="{@docRoot}training/basics/network-ops/managing.html">Managing
Network Usage</a>.</li>
</ul>
-<h4 id="configurablenetwork-preferences">Provide a network preferences
+<h4 id="configurablenetwork-preferences">Provide a network preferences
screen</h4>
<ul>
<li>You can navigate to the app’s network settings from outside the app by
- means of a network preferences screen. You can invoke this screen from
+ means of a network preferences screen. You can invoke this screen from
either the system settings screen or the system data usage screen.</li>
<li>To provide a network preferences screen that users can access from within
- your app as well as from the system settings, in your app include an
- activity that supports the
+ your app as well as from the system settings, in your app include an
+ activity that supports the
{@link android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} action.</li>
<li>For further information on adding a network preferences screen, see the
- Android training on <a
+ Android training on <a
href="{@docRoot}training/basics/network-ops/managing.html#prefs">
Implementing a Preferences Activity</a>.</li>
</ul>
@@ -599,57 +599,57 @@ screen</h4>
<div class="headerLine">
<h2 id="consumption">Battery Consumption</h2>
</div>
-<p>Access to reliable power supplies varies, and outages can disrupt planned
-charges. Defend your users' batteries against unnecessary drain by benchmarking
-your battery use, avoiding wakelocks, scheduling tasks, and monitoring sensor
+<p>Access to reliable power supplies varies, and outages can disrupt planned
+charges. Defend your users' batteries against unnecessary drain by benchmarking
+your battery use, avoiding wakelocks, scheduling tasks, and monitoring sensor
requests.</p>
<h3 id="consumption-reduce">Reduce battery consumption</h3>
<ul>
<li>Your app should do minimal activity when in the background and when the
device is running on battery power.</li>
<li><a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">Wake
- locks</a> are mechanisms to keep devices on so that they can perform
- background activities. Avoid using wake locks because they prevent the
+ locks</a> are mechanisms to keep devices on so that they can perform
+ background activities. Avoid using wake locks because they prevent the
device from going into low-power states.</li>
<li>To reduce the number of device wake-ups, batch network activity. For more
- information on batching, see the Android training on <a
+ information on batching, see the Android training on <a
href="{@docRoot}training/efficient-downloads/efficient-network-access.html">
Optimizing Downloads for Efficient Network Access</a>.</li>
- <li><a
+ <li><a
href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
- <code>GcmNetworkManager</code></a> schedules tasks and lets Google Play
- services batch operations across the system. This greatly
- simplifies the implementation of common patterns, such as waiting for
- network connectivity, device charging state, retries, and backoff. Use
- <code>GcmNetworkManager</code> to perform non-essential background activity
+ <code>GcmNetworkManager</code></a> schedules tasks and lets Google Play
+ services batch operations across the system. This greatly
+ simplifies the implementation of common patterns, such as waiting for
+ network connectivity, device charging state, retries, and backoff. Use
+ <code>GcmNetworkManager</code> to perform non-essential background activity
when the device is charging and is connected to an unmetered network.</li>
<li>Sensors, like GPS, can also have a significant drain on the battery. The
- recommended way to request location is to use the FusedLocationProvider API.
- The <a
- href="https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi">FusedLocationProvider</a> API manages the
- underlying location technology and provides a simple API so that you can
- specify requirements&mdash;like high accuracy or low power&mdash;at a high
- level. It also optimizes the device's use of battery power by caching
- locations and batching requests across apps. For more information on the
- ideal ways to request location, see the <a
- href="{@docRoot}training/location/retrieve-current.html">Getting the Last
+ recommended way to request location is to use the FusedLocationProvider API.
+ The <a
+ href="https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi">FusedLocationProvider</a> API manages the
+ underlying location technology and provides a simple API so that you can
+ specify requirements&mdash;like high accuracy or low power&mdash;at a high
+ level. It also optimizes the device's use of battery power by caching
+ locations and batching requests across apps. For more information on the
+ ideal ways to request location, see the <a
+ href="{@docRoot}training/location/retrieve-current.html">Getting the Last
Known Location</a> training guide.
</li>
</ul>
<h3 id="consumption-benchmark">Benchmark battery usage</h3>
<ul>
<li>Benchmarking your app’s usage in a controlled environment helps you
- understand the battery-heavy tasks in your app. It is a good practice to
- benchmark your app’s battery usage to gauge efficiency and track changes
+ understand the battery-heavy tasks in your app. It is a good practice to
+ benchmark your app’s battery usage to gauge efficiency and track changes
over time.
</li>
<li><a
href="{@docRoot}tools/performance/batterystats-battery-historian/index.html">
- Batterystats</a> collects battery data about your apps, and <a
+ Batterystats</a> collects battery data about your apps, and <a
href="{@docRoot}tools/performance/batterystats-battery-historian/index.html">
- Battery Historian</a> converts that data into an HTML visualization. For
- more information on reducing battery usage, see the Android training on <a
- href="{@docRoot}training/monitoring-device-state/index.html">Optimizing
+ Battery Historian</a> converts that data into an HTML visualization. For
+ more information on reducing battery usage, see the Android training on <a
+ href="{@docRoot}training/monitoring-device-state/index.html">Optimizing
Battery Life</a>.</li>
</ul>
@@ -665,55 +665,55 @@ requests.</p>
<h2 id="contentsection">Content</h2>
</div>
<p>Make sure that your app works well on a variety of screens: offering good,
- crisp graphics and appropriate layouts on low resolution and physically small
- screens. Ensure that your app is designed to be easily localized by
- accommodating the variations between languages: allow for spacing, density,
- order, emphasis, and wording variations. Also make sure that date, time, and
- the like are internationalized and displayed according to the phone’s
+ crisp graphics and appropriate layouts on low resolution and physically small
+ screens. Ensure that your app is designed to be easily localized by
+ accommodating the variations between languages: allow for spacing, density,
+ order, emphasis, and wording variations. Also make sure that date, time, and
+ the like are internationalized and displayed according to the phone’s
settings.</p>
<h3 id="content-responsive">Fast and responsive UI</h3>
<h4 id="content-feedback">Touch feedback on all touchable items</h4>
<ul>
<li>Touch feedback adds a tactile feeling to the user interface. You should
- ensure your app provides touch feedback on all touchable elements to reduce
+ ensure your app provides touch feedback on all touchable elements to reduce
the perceived app latency as much as possible.
</li>
<li><a
href="https://www.google.com/design/spec/animation/responsive-interaction.html">
- Responsive interaction</a> encourages deeper exploration of an app by
- creating timely, logical, and delightful screen reactions to user input.
- Responsive interaction elevates an app from an information-delivery service
- to an experience that communicates using multiple visual and tactile
+ Responsive interaction</a> encourages deeper exploration of an app by
+ creating timely, logical, and delightful screen reactions to user input.
+ Responsive interaction elevates an app from an information-delivery service
+ to an experience that communicates using multiple visual and tactile
responses.</li>
<li>For more information, see the Android training on <a
- href="{@docRoot}training/material/animations.html#Touch">Customizing Touch
+ href="{@docRoot}training/material/animations.html#Touch">Customizing Touch
Feedback</a>.</li>
</ul>
<h4 id="content-interactive">UI should always be interactive</h4>
<ul>
<li>Apps that are unresponsive when performing background activity feel slow
- and reduce user satisfaction. Ensure your app always has a responsive UI
- regardless of any background activity. Achieve this by performing network
- operations or any heavy-duty operations in a background thread—keep the UI
+ and reduce user satisfaction. Ensure your app always has a responsive UI
+ regardless of any background activity. Achieve this by performing network
+ operations or any heavy-duty operations in a background thread—keep the UI
thread as idle as you can.</li>
<li>Material Design apps use minimal visual changes when your app is loading
- content by representing each operation with a single activity indicator.
- Avoid blocking dialogs with <a
+ content by representing each operation with a single activity indicator.
+ Avoid blocking dialogs with <a
href="https://www.google.com/design/spec/components/progress-activity.html">
loading indicators</a>.</li>
<li><a
- href="http://www.google.com/design/spec/patterns/empty-states.html">Empty
- states</a> occur when the regular content of a view can’t be shown. It might
- be a list that has no items or a search that returns no results. Avoid
- completely empty states. The most basic empty state displays a
- non-interactive image and a text tagline. Where you don’t have an image, or
- the image is still loading, you should always show either a static
- placeholder, or create a dynamic placeholder by using the <a
- href="{@docRoot}tools/support-library/features.html#v7-palette">Palette
+ href="http://www.google.com/design/spec/patterns/empty-states.html">Empty
+ states</a> occur when the regular content of a view can’t be shown. It might
+ be a list that has no items or a search that returns no results. Avoid
+ completely empty states. The most basic empty state displays a
+ non-interactive image and a text tagline. Where you don’t have an image, or
+ the image is still loading, you should always show either a static
+ placeholder, or create a dynamic placeholder by using the <a
+ href="{@docRoot}tools/support-library/features.html#v7-palette">Palette
library</a> to generate placeholder colors that match the target image.</li>
<li>For more information, see the Android training on <a
- href="{@docRoot}training/articles/perf-anr.html">Keeping Your App
+ href="{@docRoot}training/articles/perf-anr.html">Keeping Your App
Responsive</a>.</li>
</ul>
<h4 id="content-60fps">Target 60 frames per second on low-cost devices</h4>
@@ -721,34 +721,34 @@ requests.</p>
<li>Ensure that your app always runs fast and smoothly, even on low-cost
devices.</li>
<li>Overdraw can significantly slow down your app—it occurs when the pixels
- are being drawn more than once per pass. An example of this is when you have
- an image with a button placed on top of it. While some overdraw is
- unavoidable, it should be minimized to ensure a smooth frame rate. Perform
- <a href="{@docRoot}tools/performance/debug-gpu-overdraw/index.html">Debug
+ are being drawn more than once per pass. An example of this is when you have
+ an image with a button placed on top of it. While some overdraw is
+ unavoidable, it should be minimized to ensure a smooth frame rate. Perform
+ <a href="{@docRoot}tools/performance/debug-gpu-overdraw/index.html">Debug
GPU overdraw</a> on your app to ensure it is minimized.</li>
<li>Android devices refresh the screen at 60 frames per second (fps), meaning
- your app has to update the screen within roughly 16 milliseconds. <a
- href="{@docRoot}tools/performance/profile-gpu-rendering/index.html">Profile
- your app</a> using on-device tools to see if and when your app is not
+ your app has to update the screen within roughly 16 milliseconds. <a
+ href="{@docRoot}tools/performance/profile-gpu-rendering/index.html">Profile
+ your app</a> using on-device tools to see if and when your app is not
meeting this 16-ms average.</li>
<li>Reduce or remove animations on low-cost devices to lessen the burden on
- the device’s CPU and GPU. For more information, see the Android training on
- <a href="{@docRoot}training/improving-layouts/index.html">Improving Layout
+ the device’s CPU and GPU. For more information, see the Android training on
+ <a href="{@docRoot}training/improving-layouts/index.html">Improving Layout
Performance</a>. </li>
</ul>
-<h4 id="content-firstload">If anticipated start speed is low, use launch screen
+<h4 id="content-firstload">If anticipated start speed is low, use launch screen
on first load</h4>
<ul>
<li>The launch screen is a user’s first experience of your application.
- Launching your app while displaying a blank canvas increases its perceived
- loading time, so consider using a placeholder UI or a branded launch screen
+ Launching your app while displaying a blank canvas increases its perceived
+ loading time, so consider using a placeholder UI or a branded launch screen
to reduce the perceived loading time.</li>
<li>A<a href="https://www.google.com/design/spec/patterns/launch-screens.html#launch-screens-types-of-launch-screens">
- placeholder UI</a> is the most seamless launch transition, appropriate for
+ placeholder UI</a> is the most seamless launch transition, appropriate for
both app launches and in-app activity transitions.</li>
<li><a
href="https://www.google.com/design/spec/patterns/launch-screens.html#launch-screens-placeholder-ui">
- Branded launch screens</a> provide momentary brand exposure, freeing the UI
+ Branded launch screens</a> provide momentary brand exposure, freeing the UI
to focus on content.</li>
<li>For more information on implementing splash screens, see the <a
href="https://www.google.com/design/spec/patterns/launch-screens.html">
@@ -758,24 +758,24 @@ on first load</h4>
<ul>
<li><a
href="https://www.google.com/design/spec/material-design/introduction.html">
- Material Design</a> is a visual language that synthesizes the classic
- principles of good design with the innovation and possibility of technology
- and science. Material Design aims to develop a single underlying system that
- allows for a unified experience across platforms and device sizes. Consider
- using key Material Design components so that users intuitively know how to
+ Material Design</a> is a visual language that synthesizes the classic
+ principles of good design with the innovation and possibility of technology
+ and science. Material Design aims to develop a single underlying system that
+ allows for a unified experience across platforms and device sizes. Consider
+ using key Material Design components so that users intuitively know how to
use your app.</li>
<li>Ready-to-use Material Design components are available via the <a
- href="{@docRoot}tools/support-library/features.html#design">Design Support
- library</a>. These components are supported in Android 2.1 (API level 7) and
+ href="{@docRoot}tools/support-library/features.html#design">Design Support
+ library</a>. These components are supported in Android 2.1 (API level 7) and
above.</li>
</ul>
<h3 id="localization">Localization</h3>
<ul>
<li>Your users could be from any part of the world and their first language
- may not be yours. If you don’t present your app in a language that your
- users can read, it is a missed opportunity. You should therefore
+ may not be yours. If you don’t present your app in a language that your
+ users can read, it is a missed opportunity. You should therefore
localize your app for key regional languages.</li>
- <li>To learn more, visit the Android training on <a
+ <li>To learn more, visit the Android training on <a
href="{@docRoot}training/basics/supporting-devices/languages.html">
Supporting Different Languages</a>.</li>
</ul>
diff --git a/docs/html/distribute/essentials/quality/core.jd b/docs/html/distribute/essentials/quality/core.jd
index 0ff44eb97e00..637eaac56ce4 100644
--- a/docs/html/distribute/essentials/quality/core.jd
+++ b/docs/html/distribute/essentials/quality/core.jd
@@ -12,7 +12,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="#listing">Google Play</a></li>
</ol>
-
+
<h2>Testing</h2>
<ol>
<li><a href="#test-environment">Setting Up a Test Environment</a></li>
@@ -24,7 +24,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<li><a href="{@docRoot}distribute/essentials/quality/tablets.html">Tablet App Quality</a></li>
<li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">Optimize Your App</a></li>
</ol>
-
+
</div>
</div>
@@ -85,7 +85,7 @@ page.image=/distribute/images/core-quality-guidelines.jpg
<th style="width:54px;">
ID
</th>
-
+
<th>
Description
diff --git a/docs/html/distribute/essentials/quality/tablets.jd b/docs/html/distribute/essentials/quality/tablets.jd
index 2b2a5ae2d6ae..3ff35f751842 100644
--- a/docs/html/distribute/essentials/quality/tablets.jd
+++ b/docs/html/distribute/essentials/quality/tablets.jd
@@ -57,7 +57,7 @@ Xnonavpage=true
<p>The first step in delivering a great tablet app experience is making sure
that it meets the <em>core app quality criteria</em> for all of the devices
and form factors that the app is targeting. For complete information, see the <a
-href="{@docRoot}distribute/essentials/quality/core.html">Core App Quality Guidelines</a>.
+href="{@docRoot}distribute/essentials/quality/core.html">Core App Quality Guidelines</a>.
</p>
<p>
@@ -73,7 +73,7 @@ Before publishing, also ensure that your app passes the basic technical checks a
</ul>
<p>If your app is already uploaded to the Google Play Developer Console, you
- can see how it is doing against these checks
+ can see how it is doing against these checks
by visiting the <a href="#google-play-optimization-tips">Optimization
Tips page</a>.</p>
@@ -505,7 +505,7 @@ attribute.
<pre>&lt;uses-feature android:name="android.hardware.telephony" android:required="false" /&gt;</pre></li>
-<li>Similarly, check the manifest for <a href="{@docRoot}guide/topics/manifest/permission-element.html"><code>&lt;permission&gt;</code></a> elements that
+<li>Similarly, check the manifest for <a href="{@docRoot}guide/topics/manifest/permission-element.html"><code>&lt;permission&gt;</code></a> elements that
<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">imply hardware
feature requirements</a> that not be appropriate for tablets. If you find such
permissions, make sure to explicitly declare a corresponding
diff --git a/docs/html/distribute/googleplay/cast.jd b/docs/html/distribute/googleplay/cast.jd
index 937ab58901a6..3112f8100c3e 100644
--- a/docs/html/distribute/googleplay/cast.jd
+++ b/docs/html/distribute/googleplay/cast.jd
@@ -26,7 +26,7 @@ take full advantage of multiscreen experiences via Cast.
<p>
<a href="https://developers.google.com/cast/">Find out how to get your app Google
- Cast-ready</a>.
+ Cast-ready</a>.
</p>
<h2 id="tips">Tips</h2>
diff --git a/docs/html/distribute/googleplay/families/faq.jd b/docs/html/distribute/googleplay/families/faq.jd
index 363dc91c114b..663850f54df1 100644
--- a/docs/html/distribute/googleplay/families/faq.jd
+++ b/docs/html/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@ page.metaDescription=Questions and answers about Designed for Families
font-weight:bold;
}
</style>
-
+
<div id="qv-wrapper">
<ol id="qv">
<h2>In this document</h2>
@@ -84,7 +84,7 @@ page.metaDescription=Questions and answers about Designed for Families
<dd>
No, you do not need to translate your privacy policy. However, if you
distribute your apps in a few select countries, it is advised that you do
- translate your privacy policy.
+ translate your privacy policy.
</dd>
<dt>
@@ -173,7 +173,7 @@ page.metaDescription=Questions and answers about Designed for Families
confirm that it is appropriate for families. Assuming your app complies with all program
requirements, we expect that publishing time should not take any longer
than normal; however, there may be a delay in publishing the app if it is
- rejected during the Designed for Families review.
+ rejected during the Designed for Families review.
</dd>
<dt>
@@ -301,7 +301,7 @@ page.metaDescription=Questions and answers about Designed for Families
<dd>
House ads are allowed, but they must comply with <a
- href="https://support.google.com/googleplay/android-developer/answer/6184502#ads">ads policies</a>.
+ href="https://support.google.com/googleplay/android-developer/answer/6184502#ads">ads policies</a>.
</dd>
<dt>
diff --git a/docs/html/distribute/googleplay/families/start.jd b/docs/html/distribute/googleplay/families/start.jd
index 0e773bd11c3a..f174dae26da2 100644
--- a/docs/html/distribute/googleplay/families/start.jd
+++ b/docs/html/distribute/googleplay/families/start.jd
@@ -86,7 +86,7 @@ page.metaDescription=Join Designed for Families in just a few simple steps.
<p class="note">
<strong>Note</strong>: Published apps in the Designed for Families program
- are also available to all users on Google Play.
+ are also available to all users on Google Play.
</p>
<p>
diff --git a/docs/html/distribute/googleplay/tv.jd b/docs/html/distribute/googleplay/tv.jd
index a35edbc45470..981ba510dd76 100644
--- a/docs/html/distribute/googleplay/tv.jd
+++ b/docs/html/distribute/googleplay/tv.jd
@@ -275,7 +275,7 @@ page.metaDescription=Distribute your apps, games, and content to Android TV.
the criteria, you’ll receive a <strong>notification email sent to your developer account
address</strong>, with a summary of the areas that you need to address. When you’ve made
the necessary adjustments, you can upload a new version of your app to the Developer
- Console.
+ Console.
</p>
<p>
@@ -296,7 +296,7 @@ page.metaDescription=Distribute your apps, games, and content to Android TV.
<li>
<em>Approved</em> — Your app was reviewed and approved. The app will be
- made available directly to Android TV users.
+ made available directly to Android TV users.
</li>
<li>
diff --git a/docs/html/distribute/tools/promote/device-art.jd b/docs/html/distribute/tools/promote/device-art.jd
index 9b4dd1481aeb..7fef02ff11e5 100644
--- a/docs/html/distribute/tools/promote/device-art.jd
+++ b/docs/html/distribute/tools/promote/device-art.jd
@@ -221,7 +221,7 @@ feature image or screenshots for your Google Play app listing.</p>
landOffset: [489,327],
portRes: ['shadow', 'back', 'fore'],
portOffset: [327,489],
- portSize: [1440, 2560],
+ portSize: [1440, 2560],
archived: true
},
{
diff --git a/docs/html/distribute/tools/promote/linking.jd b/docs/html/distribute/tools/promote/linking.jd
index 025480b1f1bd..13b15744d405 100644
--- a/docs/html/distribute/tools/promote/linking.jd
+++ b/docs/html/distribute/tools/promote/linking.jd
@@ -18,7 +18,7 @@ page.metaDescription=Learn how to build links that take users to your published
<p>Google Play provides several link formats that let you bring users to your
products in the way you want, from Android apps, web pages, ads, reviews,
-articles, social media posts, and more.</p>
+articles, social media posts, and more.</p>
<p>The link formats let you:</p>
<ul>
diff --git a/docs/html/google/backup/signup.jd b/docs/html/google/backup/signup.jd
index 598003dbe23b..86518b6458f9 100644
--- a/docs/html/google/backup/signup.jd
+++ b/docs/html/google/backup/signup.jd
@@ -105,7 +105,7 @@ This is the terms of service for the Android Backup Service.
8.4 You agree that you shall not remove, obscure, or alter any proprietary rights notices (including copyright, trade mark notices) which may be affixed to or contained within the Service.
<h3>9. License from Google</h3>
-9.1 Subject to terms and conditions of these Terms, Google gives you a personal, worldwide, royalty-free, non-assignable and non-exclusive license to use the Service as provided to you by Google. This license is for the sole purpose of enabling you to use and enjoy the benefit of the Service as provided by Google, in the manner permitted by the Terms.
+9.1 Subject to terms and conditions of these Terms, Google gives you a personal, worldwide, royalty-free, non-assignable and non-exclusive license to use the Service as provided to you by Google. This license is for the sole purpose of enabling you to use and enjoy the benefit of the Service as provided by Google, in the manner permitted by the Terms.
9.2 You may not (and you may not permit anyone else to) copy, modify, create a derivative work of, reverse engineer, decompile or otherwise attempt to extract the source code from the Service or any part thereof, unless this is expressly permitted or required by law, or unless you have been specifically told that you may do so by Google, in writing.
@@ -208,7 +208,7 @@ with the Android Backup Service Terms of Service</label>
<input id="pname" type="text" name="pname" size="47" value="" onkeyup="onFormInput()"
onfocus="boxFocusChanged(this,true)" onblur="boxFocusChanged(this,false)"/>
</p>
-<p><a href="" class="dac-button dac-raised dac-primary disabled ndk" id="registerButton"
+<p><a href="" class="dac-button dac-raised dac-primary disabled ndk" id="registerButton"
onclick="onRegister(); return false;" >Register with Android Backup Service</a></p>
</div>
@@ -234,7 +234,7 @@ onclick="onRegister(); return false;" >Register with Android Backup Service</a><
);
}
}
-
+
function boxFocusChanged(obj, focused) {
if (focused) {
if(obj.value == DEFAULT_TEXT){
@@ -248,14 +248,14 @@ onclick="onRegister(); return false;" >Register with Android Backup Service</a><
}
}
}
-
-
+
+
function onFormInput() {
/* verify that the TOS is agreed and a bit version is chosen */
var packagename = $("#pname").val();
if ($("input#agree").is(":checked")
&& packagename.length
- && packagename != DEFAULT_TEXT) {
+ && packagename != DEFAULT_TEXT) {
/* reveal the button */
$("a#registerButton").removeClass('disabled');
} else {
diff --git a/docs/html/google/index.jd b/docs/html/google/index.jd
index 027ba23a6e5b..9b7ff0b8b48f 100644
--- a/docs/html/google/index.jd
+++ b/docs/html/google/index.jd
@@ -53,7 +53,7 @@ footer.hide=1
<section class="dac-section dac-invert dac-darken-bg" style="background-image: url(/images/distribute/google-play-bg.jpg)"><div class="wrap">
<h1 class="dac-section-title">Google Play developer tools</h1>
<div class="dac-section-subtitle">
- Scale your publishing, manage your catalog, build revenue using Google Play developer tools.
+ Scale your publishing, manage your catalog, build revenue using Google Play developer tools.
</div>
<div class="resource-widget resource-flow-layout col-16"
data-query="collection:google/landing/googleplay"
diff --git a/docs/html/google/play/billing/api.jd b/docs/html/google/play/billing/api.jd
index 6816ff16264f..62f3367752a9 100644
--- a/docs/html/google/play/billing/api.jd
+++ b/docs/html/google/play/billing/api.jd
@@ -34,7 +34,7 @@ page.tags="billing, inapp, iap"
<h2>See also</h2>
<ol>
<li><a href="{@docRoot}training/in-app-billing/index.html">Selling In-app Products</a></li>
- </ol>
+ </ol>
</div>
</div>
diff --git a/docs/html/google/play/billing/billing_admin.jd b/docs/html/google/play/billing/billing_admin.jd
index 05f3ad593b9d..292cfcce0c36 100644
--- a/docs/html/google/play/billing/billing_admin.jd
+++ b/docs/html/google/play/billing/billing_admin.jd
@@ -748,10 +748,9 @@ you at the conclusion of the purchase flow, as the value of the
intent.</p>
<p class="note">
- <strong>Note:</strong> When a user completes a test purchase, the
- <code>orderId</code> field remains blank. To track test transactions, use
- the <code>purchaseToken</code> field instead. For more information about
- working with test purchases, see <a
+ <strong>Note:</strong> Test purchases don't have an <code>orderId</code>
+ field. To track test transactions, you use the <code>purchaseToken</code>
+ field instead. For more information about working with test purchases, see <a
href="{@docRoot}google/play/billing/billing_testing.html">Testing In-app
Billing</a>.
</p>
@@ -766,14 +765,14 @@ assigned and managed by Google.</p>
<p>For transactions dated 5 December 2012 or later, Google payments assigns a
Merchant Order Number (rather than a Google Order Number) and reports the Merchant
-Order Number as the value of <code>orderID</code>. Here's an
+Order Number as the value of <code>orderId</code>. Here's an
example:</p>
<pre>"orderId" : "GPA.1234-5678-9012-34567"</pre>
<p>For transactions dated previous to 5 December 2012, Google checkout assigned
a Google Order Number and reported that number as the value of
-<code>orderID</code>. Here's an example of an <code>orderID</code> holding a
+<code>orderId</code>. Here's an example of an <code>orderId</code> holding a
Google Order Number:</p>
<pre>"orderId" : "556515565155651"</pre>
diff --git a/docs/html/google/play/billing/billing_testing.jd b/docs/html/google/play/billing/billing_testing.jd
index 755f3ffd6220..44b7ad3081cf 100644
--- a/docs/html/google/play/billing/billing_testing.jd
+++ b/docs/html/google/play/billing/billing_testing.jd
@@ -81,8 +81,8 @@ accounts.</p>
<p>
Once authorized for testing access, those users can make purchases without
- being charged. The <code>orderId</code> field for test purchases remains
- blank, ensuring that there are no actual charges to user accounts.
+ being charged. Test purchases don't have an <code>orderId</code> field, which
+ ensures that there are no actual charges to user accounts.
</p>
<p class="note">
@@ -127,11 +127,11 @@ account. Users can confirm the account that is making a purchase by expanding th
purchase dialog.</p>
<p class="note">
- <strong>Note:</strong> For test purchases, leave the {@code orderId} field
- blank. You can use the {@code purchaseToken} field to identify test purchases.
+ <strong>Note:</strong> Test purchases don't have an <code>orderId</code>
+ field. To track test purchases, you use the <code>purchaseToken</code> field
+ instead.
</p>
-
<h4 id="tp-account">Test purchases and developer account</h4>
<p>Authorized license test accounts are associated with your developer account
in Google Play, rather than with a specific APK or package name. Identifying an
diff --git a/docs/html/google/play/licensing/adding-licensing.jd b/docs/html/google/play/licensing/adding-licensing.jd
index 3bf4c1a61333..bfd4f91d83a1 100644
--- a/docs/html/google/play/licensing/adding-licensing.jd
+++ b/docs/html/google/play/licensing/adding-licensing.jd
@@ -7,7 +7,7 @@ parent.link=index.html
<div id="qv-wrapper">
<div id="qv">
-
+
<h2>In this document</h2>
<ol>
<li><a href="#manifest-permission">Adding the Licensing Permission</a></li>
@@ -42,7 +42,7 @@ to close IPC connections</a></li>
<li><a href="#app-publishing">Publishing a Licensed Application</a></li>
<li><a href="#support">Where to Get Support</a></li>
</ol>
-
+
</div>
</div>
@@ -572,7 +572,7 @@ the <code>dontAllow()</code> method on {@code LicenseCheckerCallback}. </li>
</li>
<li>In case of a recoverable local or server error, such as when the network is
not available to send the request, {@code LicenseChecker} passes a {@code RETRY} response to
-your {@code Policy} object's <code>processServerResponse()</code> method.
+your {@code Policy} object's <code>processServerResponse()</code> method.
<p>Also, both the {@code allow()} and {@code dontAllow()} callback methods receive a
<code>reason</code> argument. The {@code allow()} method's reason is usually {@code
Policy.LICENSED} or {@code Policy.RETRY} and the {@code dontAllow()} reason is usually {@code
@@ -672,7 +672,7 @@ private class MyLicenseCheckerCallback implements LicenseCheckerCallback {
return;
}
displayResult(getString(R.string.dont_allow));
-
+
if (reason == Policy.RETRY) {
// If the reason received from the policy is RETRY, it was probably
// due to a loss of connection with the service, so we should give the
@@ -854,9 +854,9 @@ sample application calls <code>checkAccess()</code> from a
<h3 id="account-key">Embed your public key for licensing</h3>
<p>For each application, the Google Play service automatically
-generates a 2048-bit RSA public/private key pair that is used for
-licensing and in-app billing. The key pair is uniquely associated with the
-application. Although associated with the application, the key pair is
+generates a 2048-bit RSA public/private key pair that is used for
+licensing and in-app billing. The key pair is uniquely associated with the
+application. Although associated with the application, the key pair is
<em>not</em> the same as the key that you use to sign your applications (or derived from it).</p>
<p>The Google Play Developer Console exposes the public key for licensing to any
@@ -876,11 +876,11 @@ your application's public key for licensing:</p>
href="http://play.google.com/apps/publish">Developer Console</a> and sign in.
Make sure that you sign in to the account from which the application you are
licensing is published (or will be published). </li>
-<li>In the application details page, locate the <strong>Services & APIs</strong>
+<li>In the application details page, locate the <strong>Services & APIs</strong>
link and click it. </li>
-<li>In the <strong>Services & APIs</strong> page, locate the
-<strong>Licensing & In-App Billing</strong> section. Your public key for
-licensing is given in the
+<li>In the <strong>Services & APIs</strong> page, locate the
+<strong>Licensing & In-App Billing</strong> section. Your public key for
+licensing is given in the
<strong>Your License Key For This Application</strong> field. </li>
</ol>
diff --git a/docs/html/google/play/licensing/licensing-reference.jd b/docs/html/google/play/licensing/licensing-reference.jd
index d4ca79a77cb8..2b16299448c9 100644
--- a/docs/html/google/play/licensing/licensing-reference.jd
+++ b/docs/html/google/play/licensing/licensing-reference.jd
@@ -7,7 +7,7 @@ parent.link=index.html
<div id="qv-wrapper">
<div id="qv">
-
+
<h2>In this document</h2>
<ol>
<li><a href="#lvl-summary">LVL Classes and Interfaces</a></li>
@@ -418,7 +418,7 @@ responses in the <code>allow()</code> method. The count of {@code RETRY} respons
maintained in the <code>processServerResponse()</code> method, not shown. </p>
-<pre>
+<pre>
public boolean allowAccess() {
long ts = System.currentTimeMillis();
if (mLastResponse == LicenseResponse.LICENSED) {
diff --git a/docs/html/google/play/licensing/overview.jd b/docs/html/google/play/licensing/overview.jd
index ecb384dc74ed..8d7977e1cb00 100755
--- a/docs/html/google/play/licensing/overview.jd
+++ b/docs/html/google/play/licensing/overview.jd
@@ -6,14 +6,14 @@ parent.link=index.html
<div id="qv-wrapper">
<div id="qv">
-
+
<h2>Quickview</h2>
<ul>
<li>Licensing allows you to verify your app was purchased from Google Play</li>
<li>Your app maintains control of how it enforces its licensing status</li>
<li>The service is free for all developers who publish on Google Play</li>
</ul>
-
+
<h2>In this document</h2>
<ol>
<li><a href="#Secure">License Responses are Secure</a></li>
@@ -21,7 +21,7 @@ parent.link=index.html
<li><a href="#Reqs">Requirements and Limitations</a></li>
<li><a href="#CopyProtection">Replacement for Copy Protection</a></li>
</ol>
-
+
</div>
</div>
@@ -107,10 +107,10 @@ response data using an RSA key pair that is shared exclusively between the Googl
server and you.</p>
<p>The licensing service generates a single licensing key pair for each
-application and exposes the public key in your application's
-<strong>Services & APIs</strong> page in the Developer Console. You must copy
-the public key from the Developer Console and embed it in your application
-source code. The server retains the private key internally and uses it to sign
+application and exposes the public key in your application's
+<strong>Services & APIs</strong> page in the Developer Console. You must copy
+the public key from the Developer Console and embed it in your application
+source code. The server retains the private key internally and uses it to sign
license responses for the applications you publish with that account.</p>
<p>When your application receives a signed response, it uses the embedded public
@@ -209,7 +209,7 @@ practices in the following documents, you can help ensure that your implementati
secure.</li>
<li>Adding licensing to an application does not affect the way the application
functions when run on a device that does not offer Google Play.</li>
-<li>You can implement licensing controls for a free app, but only if you're using the service to
+<li>You can implement licensing controls for a free app, but only if you're using the service to
provide <a
href="{@docRoot}google/play/expansion-files.html">APK expansion files</a>.</li>
</ul>
diff --git a/docs/html/google/play/publishing/multiple-apks.jd b/docs/html/google/play/publishing/multiple-apks.jd
index fd4481dc076a..a878fb3ab1ad 100644
--- a/docs/html/google/play/publishing/multiple-apks.jd
+++ b/docs/html/google/play/publishing/multiple-apks.jd
@@ -250,11 +250,11 @@ If you can't avoid using both, be aware that for any conflicts in agreement betw
</li>
<li><strong>Device feature sets</strong>
- <p>This is based on your manifest file's <a
+ <p>This is based on your manifest file's <a
href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code <uses-feature>}</a>
element(s).</p>
<p>For example, you can provide one APK for devices that support multitouch and another
-APK for devices that do not support multitouch. See
+APK for devices that do not support multitouch. See
<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#features-reference">Features
Reference</a> for a list of features supported by the platform.</p>
<br/>
diff --git a/docs/html/guide/appendix/app-intents.jd b/docs/html/guide/appendix/app-intents.jd
index 8898927f240f..5fb004fff856 100644
--- a/docs/html/guide/appendix/app-intents.jd
+++ b/docs/html/guide/appendix/app-intents.jd
@@ -89,13 +89,13 @@ excludeFromSuggestions=true
<tr><td>pitch</td><td>Panorama center-of-view in degrees from
-90 (look straight up) to 90 (look straight down.)</td></tr>
<tr><td>zoom</td><td>Panorama zoom. 1.0 = normal zoom, 2.0 = zoomed in 2x, 3.0 = zoomed in 4x, and so on.<br />
- A zoom of 1.0 is 90 degree horizontal FOV for a nominal
- landscape mode 4 x 3 aspect ratio display.
- Android phones in portrait mode will adjust the zoom so that
- the vertical FOV is approximately the same as the landscape vertical
- FOV. This means that the horizontal FOV of an Android phone in portrait
- mode is much narrower than in landscape mode. This is done to minimize
- the fisheye lens effect that would be present if a 90 degree horizontal
+ A zoom of 1.0 is 90 degree horizontal FOV for a nominal
+ landscape mode 4 x 3 aspect ratio display.
+ Android phones in portrait mode will adjust the zoom so that
+ the vertical FOV is approximately the same as the landscape vertical
+ FOV. This means that the horizontal FOV of an Android phone in portrait
+ mode is much narrower than in landscape mode. This is done to minimize
+ the fisheye lens effect that would be present if a 90 degree horizontal
FOV was used in portrait mode.</td></tr>
<tr><td>mapZoom</td><td>The map zoom of the map location associated with this panorama. This value is passed on to the
Maps activity when the Street View "Go to Maps" menu item is chosen. It corresponds to the <em>z</em> parameter in
diff --git a/docs/html/guide/appendix/g-app-intents.jd b/docs/html/guide/appendix/g-app-intents.jd
index 9ec72db2411f..21c927b913b7 100644
--- a/docs/html/guide/appendix/g-app-intents.jd
+++ b/docs/html/guide/appendix/g-app-intents.jd
@@ -83,7 +83,7 @@ href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filter
</td>
</tr>
<tr>
- <td>Google Streetview</td>
+ <td>Google Streetview</td>
<td>google.streetview:cbll=<em>lat</em>,<em>lng</em>&amp;cbp=1,<em>yaw</em>,,<em>pitch</em>,<em>zoom</em>&amp;mz=<em>mapZoom</em>
</td>
<td>VIEW</td>
diff --git a/docs/html/guide/appendix/glossary.jd b/docs/html/guide/appendix/glossary.jd
index a200a6c0ff0e..75a533ad9084 100755
--- a/docs/html/guide/appendix/glossary.jd
+++ b/docs/html/guide/appendix/glossary.jd
@@ -15,7 +15,7 @@ excludeFromSuggestions=true
</dd>
<dt id="dex">.dex file </dt>
- <dd>Compiled Android application code file.
+ <dd>Compiled Android application code file.
<p>Android programs are compiled into .dex (Dalvik Executable) files, which
are in turn zipped into a single .apk file on the device. .dex files can
be created by automatically translating compiled applications written in
@@ -26,7 +26,7 @@ excludeFromSuggestions=true
a string value assigned to an Intent. Action strings can be defined by Android
or by a third-party developer. For example, android.intent.action.VIEW
for a Web URL, or com.example.rumbler.SHAKE_PHONE for a custom application
- to vibrate the phone.
+ to vibrate the phone.
<p>Related: <a href="#intent">Intent</a>.</p>
</dd>
@@ -41,8 +41,8 @@ excludeFromSuggestions=true
<dt id="adb">adb</dt>
<dd>Android Debug Bridge, a command-line debugging application included with the
SDK. It provides tools to browse the device, copy tools on the device, and
- forward ports for debugging. If you are developing in Android Studio,
- adb is integrated into your development environment. See
+ forward ports for debugging. If you are developing in Android Studio,
+ adb is integrated into your development environment. See
<a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>
for more information. </dd>
@@ -90,7 +90,7 @@ excludeFromSuggestions=true
<dt id="ddms">DDMS</dt>
<dd>Dalvik Debug Monitor Service, a GUI debugging application included
with the SDK. It provides screen capture, log dump, and process
- examination capabilities. If you are developing in Android Studio,
+ examination capabilities. If you are developing in Android Studio,
DDMS is integrated into your development environment. See <a
href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a> to learn more about the program.</dd>
@@ -100,7 +100,7 @@ excludeFromSuggestions=true
is not intended to persist in the history stack, contain complex layout,
or perform complex actions. Android provides a default simple dialog for
you with optional buttons, though you can define your own dialog layout.
- The base class for dialogs is {@link android.app.Dialog Dialog}.
+ The base class for dialogs is {@link android.app.Dialog Dialog}.
<p>Related: <a href="#activity">Activity</a>.</p></dd>
<dt id="drawable">Drawable</dt>
@@ -113,7 +113,7 @@ excludeFromSuggestions=true
&mdash; xml or bitmap files that describe the image. Drawable resources
are compiled into subclasses of {@link android.graphics.drawable}. For
more information about drawables and other resources, see <a
- href="{@docRoot}guide/topics/resources/resources-i18n.html">Resources</a>.
+ href="{@docRoot}guide/topics/resources/resources-i18n.html">Resources</a>.
<p>Related: <a href="#resources">Resources</a>, <a href="#canvas">Canvas
</a></p></dd>
@@ -133,7 +133,7 @@ excludeFromSuggestions=true
based on the criteria supplied in the Intent and the Intent Filters
defined by other applications. For more information, see <a
href="{@docRoot}guide/components/intents-filters.html">Intents and
- Intent Filters</a>.
+ Intent Filters</a>.
<p>Related: <a href="#intentfilter">Intent Filter</a>, <a
href="#broadcastreceiver">Broadcast Receiver</a>.</p></dd>
@@ -147,7 +147,7 @@ excludeFromSuggestions=true
application/activity that best matches the Intent and criteria. For more
information, see <a
href="{@docRoot}guide/components/intents-filters.html">Intents and
- Intent Filters</a>.
+ Intent Filters</a>.
<p>Related: <a href="#intent">Intent</a>, <a
href="#broadcastreceiver">Broadcast Receiver</a>.</p></dd>
@@ -155,12 +155,12 @@ excludeFromSuggestions=true
<dd>An application class that listens for Intents that are broadcast,
rather than being sent to a single target application/activity. The system
delivers a broadcast Intent to all interested broadcast receivers, which
- handle the Intent sequentially.
- <p>Related: <a href="#intent">Intent</a>, <a href="#intentfilter">Intent
+ handle the Intent sequentially.
+ <p>Related: <a href="#intent">Intent</a>, <a href="#intentfilter">Intent
Filter</a>.</p> </dd>
-
+
<dt id="layoutresource">Layout Resource</dt>
- <dd>An XML file that describes the layout of an Activity screen.
+ <dd>An XML file that describes the layout of an Activity screen.
<p>Related: <a href="#resources">Resources</a></p></dd>
<dt id="manifest">Manifest File</dt>
@@ -175,15 +175,15 @@ excludeFromSuggestions=true
<dd>A resizeable bitmap resource that can be used for backgrounds or other
images on the device. See <a
href="{@docRoot}guide/topics/resources/available-resources.html#ninepatch">
- Nine-Patch Stretchable Image</a> for more information.
+ Nine-Patch Stretchable Image</a> for more information.
<p>Related: <a href="#resources">Resources</a>.</p></dd>
<dt id="opengles">OpenGL ES</dt>
<dd> Android provides OpenGL ES libraries that you can use for fast,
complex 3D images. It is harder to use than a Canvas object, but
- better for 3D objects. The {@link android.opengl} and
- {@link javax.microedition.khronos.opengles} packages expose
- OpenGL ES functionality.
+ better for 3D objects. The {@link android.opengl} and
+ {@link javax.microedition.khronos.opengles} packages expose
+ OpenGL ES functionality.
<p>Related: <a href="#canvas">Canvas</a>, <a href="#surface">Surface</a></p></dd>
<dt id="resources">Resources</dt>
@@ -205,15 +205,15 @@ excludeFromSuggestions=true
<dt id="service">Service</dt>
<dd>An object of class {@link android.app.Service} that runs in the
background (without any UI presence) to perform various persistent
- actions, such as playing music or monitoring network activity.
+ actions, such as playing music or monitoring network activity.
<p>Related: <a href="#activity">Activity</a></p></dd>
<dt id="surface">Surface</dt>
<dd>An object of type {@link android.view.Surface} representing a block of
memory that gets composited to the screen. A Surface holds a Canvas object
for drawing, and provides various helper methods to draw layers and resize
- the surface. You should not use this class directly; use
- {@link android.view.SurfaceView} instead.
+ the surface. You should not use this class directly; use
+ {@link android.view.SurfaceView} instead.
<p>Related: <a href="#canvas">Canvas</a></p></dd>
<dt id="surfaceview">SurfaceView</dt>
@@ -249,7 +249,7 @@ excludeFromSuggestions=true
windows, and so on). It receives calls from its parent object (see
viewgroup, below)to draw itself, and informs its parent object about where
and how big it would like to be (which may or may not be respected by the
- parent). For more information, see {@link android.view.View}.
+ parent). For more information, see {@link android.view.View}.
<p>Related: <a href="#viewgroup">Viewgroup</a>, <a href="#widget">Widget
</a></p></dd>
@@ -259,18 +259,18 @@ excludeFromSuggestions=true
they can be, as well as for calling each to draw itself when appropriate.
Some viewgroups are invisible and are for layout only, while others have
an intrinsic UI (for instance, a scrolling list box). Viewgroups are all
- in the {@link android.widget widget} package, but extend
- {@link android.view.ViewGroup ViewGroup}.
+ in the {@link android.widget widget} package, but extend
+ {@link android.view.ViewGroup ViewGroup}.
<p>Related: <a href="#view">View</a></p></dd>
<dt id="widget">Widget</dt>
<dd>One of a set of fully implemented View subclasses that render form
elements and other UI components, such as a text box or popup menu.
Because a widget is fully implemented, it handles measuring and drawing
- itself and responding to screen events. Widgets are all in the
+ itself and responding to screen events. Widgets are all in the
{@link android.widget} package. </dd>
- <!--
+ <!--
<dt id="panel">Panel</dt>
<dd> A panel is a concept not backed by a specific class. It is a View of
some sort that is tied in closely to a parent window, but can handle
diff --git a/docs/html/guide/components/activities.jd b/docs/html/guide/components/activities.jd
index 070154d805e7..e757288424d8 100644
--- a/docs/html/guide/components/activities.jd
+++ b/docs/html/guide/components/activities.jd
@@ -622,7 +622,7 @@ android.app.Activity#onSaveInstanceState onSaveInstanceState()}.</p>
<p>The system calls {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
before making the activity vulnerable to destruction. The system passes this method
-a {@link android.os.Bundle} in which you can save
+a {@link android.os.Bundle} in which you can save
state information about the activity as name-value pairs, using methods such as {@link
android.os.Bundle#putString putString()} and {@link
android.os.Bundle#putInt putInt()}. Then, if the system kills your application
diff --git a/docs/html/guide/components/fragments.jd b/docs/html/guide/components/fragments.jd
index f9c2a26d62e9..951d04211bde 100644
--- a/docs/html/guide/components/fragments.jd
+++ b/docs/html/guide/components/fragments.jd
@@ -36,7 +36,7 @@ parent.link=activities.html
<li>{@link android.app.FragmentManager}</li>
<li>{@link android.app.FragmentTransaction}</li>
</ol>
-
+
<h2>See also</h2>
<ol>
<li><a href="{@docRoot}training/basics/fragments/index.html">Building a Dynamic UI with Fragments</a></li>
@@ -306,7 +306,7 @@ ID for a fragment:</p>
<ul>
<li>Supply the {@code android:id} attribute with a unique ID.</li>
<li>Supply the {@code android:tag} attribute with a unique string.</li>
- <li>If you provide neither of the previous two, the system uses the ID of the container
+ <li>If you provide neither of the previous two, the system uses the ID of the container
view.</li>
</ul>
</div>
@@ -365,7 +365,7 @@ findFragmentByTag()}.</p>
<p>For an example activity that uses a fragment as a background worker, without a UI, see the {@code
FragmentRetainInstance.java} sample, which is included in the SDK samples (available through the
-Android SDK Manager) and located on your system as
+Android SDK Manager) and located on your system as
<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>.</p>
@@ -381,7 +381,7 @@ get it, call {@link android.app.Activity#getFragmentManager()} from your activit
<li>Get fragments that exist in the activity, with {@link
android.app.FragmentManager#findFragmentById findFragmentById()} (for fragments that provide a UI in
the activity layout) or {@link android.app.FragmentManager#findFragmentByTag
-findFragmentByTag()} (for fragments that do or don't provide a UI).</li>
+findFragmentByTag()} (for fragments that do or don't provide a UI).</li>
<li>Pop fragments off the back stack, with {@link
android.app.FragmentManager#popBackStack()} (simulating a <em>Back</em> command by the user).</li>
<li>Register a listener for changes to the back stack, with {@link
@@ -568,7 +568,7 @@ public static class FragmentA extends ListFragment {
<p>If the activity has not implemented the interface, then the fragment throws a
{@link java.lang.ClassCastException}.
-On success, the {@code mListener} member holds a reference to activity's implementation of
+On success, the {@code mListener} member holds a reference to activity's implementation of
{@code OnArticleSelectedListener}, so that fragment A can share events with the activity by calling
methods defined by the {@code OnArticleSelectedListener} interface. For example, if fragment A is an
extension of {@link android.app.ListFragment}, each time
@@ -798,7 +798,7 @@ android.widget.FrameLayout}), or start a new activity (where the fragment can be
<p>The second fragment, {@code DetailsFragment} shows the play summary for the item selected from
the list from {@code TitlesFragment}:</p>
-
+
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
<p>Recall from the {@code TitlesFragment} class, that, if the user clicks a list item and the
@@ -811,7 +811,7 @@ the selected play summary when the screen is in portrait orientation:</p>
{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
details_activity}
-
+
<p>Notice that this activity finishes itself if the configuration is landscape, so that the main
activity can take over and display the {@code DetailsFragment} alongside the {@code TitlesFragment}.
This can happen if the user begins the {@code DetailsActivity} while in portrait orientation, but
diff --git a/docs/html/guide/components/index.jd b/docs/html/guide/components/index.jd
index 811d015b82bc..d596b3be3462 100644
--- a/docs/html/guide/components/index.jd
+++ b/docs/html/guide/components/index.jd
@@ -1,7 +1,7 @@
page.title=App Components
page.landing=true
-page.landing.intro=Android's application framework lets you create rich and innovative apps using a set of reusable components. This section explains how you can build the components that define the building blocks of your app and how to connect them together using intents.
-page.metaDescription=Android's application framework lets you create rich and innovative apps using a set of reusable components. This section explains how you can build the components that define the building blocks of your app and how to connect them together using intents.
+page.landing.intro=Android's application framework lets you create rich and innovative apps using a set of reusable components. This section explains how you can build the components that define the building blocks of your app and how to connect them together using intents.
+page.metaDescription=Android's application framework lets you create rich and innovative apps using a set of reusable components. This section explains how you can build the components that define the building blocks of your app and how to connect them together using intents.
page.landing.image=images/develop/app_components.png
page.image=images/develop/app_components.png
@@ -11,7 +11,7 @@ page.image=images/develop/app_components.png
<div class="col-6">
<h3>Blog Articles</h3>
-
+
<a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
<h4>Using DialogFragments</h4>
<p>In this post, I’ll show how to use DialogFragments with the v4 support library (for backward compatibility on pre-Honeycomb devices) to show a simple edit dialog and return a result to the calling Activity using an interface.</p>
@@ -21,7 +21,7 @@ page.image=images/develop/app_components.png
<h4>Fragments For All</h4>
<p>Today we’ve released a static library that exposes the same Fragments API (as well as the new LoaderManager and a few other classes) so that applications compatible with Android 1.6 or later can use fragments to create tablet-compatible user interfaces. </p>
</a>
-
+
<a
href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
<h4>Multithreading for Performance</h4>
@@ -33,7 +33,7 @@ handled in a different thread.</p>
<div class="col-6">
<h3>Training</h3>
-
+
<a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
<h4>Managing the Activity Lifecycle</h4>
<p>This class explains important lifecycle callback methods that each Activity
diff --git a/docs/html/guide/components/loaders.jd b/docs/html/guide/components/loaders.jd
index ddd513b2a2c5..7c4baa846ae3 100644
--- a/docs/html/guide/components/loaders.jd
+++ b/docs/html/guide/components/loaders.jd
@@ -21,14 +21,14 @@ parent.link=activities.html
</ol>
</li>
</ol>
-
+
<h2>Key classes</h2>
<ol>
<li>{@link android.app.LoaderManager}</li>
<li>{@link android.content.Loader}</li>
- </ol>
-
+ </ol>
+
<h2>Related samples</h2>
<ol>
<li> <a
@@ -53,7 +53,7 @@ content changes.</li>
recreated after a configuration change. Thus, they don't need to re-query their
data.</li>
</ul>
-
+
<h2 id="summary">Loader API Summary</h2>
<p>There are multiple classes and interfaces that may be involved in using
@@ -131,10 +131,10 @@ of {@link android.content.Loader} or {@link android.content.AsyncTaskLoader} to
load data from some other source.</li>
<li>An implementation for {@link android.app.LoaderManager.LoaderCallbacks}.
This is where you create new loaders and manage your references to existing
-loaders.</li>
+loaders.</li>
<li>A way of displaying the loader's data, such as a {@link
android.widget.SimpleCursorAdapter}.</li>
- <li>A data source, such as a {@link android.content.ContentProvider}, when using a
+ <li>A data source, such as a {@link android.content.ContentProvider}, when using a
{@link android.content.CursorLoader}.</li>
</ul>
<h3 id="starting">Starting a Loader</h3>
@@ -142,7 +142,7 @@ android.widget.SimpleCursorAdapter}.</li>
<p>The {@link android.app.LoaderManager} manages one or more {@link
android.content.Loader} instances within an {@link android.app.Activity} or
{@link android.app.Fragment}. There is only one {@link
-android.app.LoaderManager} per activity or fragment.</p>
+android.app.LoaderManager} per activity or fragment.</p>
<p>You typically
initialize a {@link android.content.Loader} within the activity's {@link
@@ -159,13 +159,13 @@ the following parameters:</p>
<ul>
<li>A unique ID that identifies the loader. In this example, the ID is 0.</li>
<li>Optional arguments to supply to the loader at
-construction (<code>null</code> in this example).</li>
+construction (<code>null</code> in this example).</li>
<li>A {@link android.app.LoaderManager.LoaderCallbacks} implementation, which
the {@link android.app.LoaderManager} calls to report loader events. In this
example, the local class implements the {@link
android.app.LoaderManager.LoaderCallbacks} interface, so it passes a reference
-to itself, {@code this}.</li>
+to itself, {@code this}.</li>
</ul>
<p>The {@link android.app.LoaderManager#initLoader initLoader()} call ensures that a loader
is initialized and active. It has two possible outcomes:</p>
@@ -196,7 +196,7 @@ the life of the loader automatically. The {@link android.app.LoaderManager}
starts and stops loading when necessary, and maintains the state of the loader
and its associated content. As this implies, you rarely interact with loaders
directly (though for an example of using loader methods to fine-tune a loader's
-behavior, see the <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> sample).
+behavior, see the <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> sample).
You most commonly use the {@link
android.app.LoaderManager.LoaderCallbacks} methods to intervene in the loading
process when particular events occur. For more discussion of this topic, see <a
@@ -249,7 +249,7 @@ Instantiate and return a new {@link android.content.Loader} for the given ID.
&#8212; Called when a previously created loader has finished its load.
</li></ul>
<ul>
- <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
+ <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
&#8212; Called when a previously created loader is being reset, thus making its
data unavailable.
</li>
@@ -344,11 +344,11 @@ public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
<h4 id="onLoaderReset">onLoaderReset</h4>
-<p>This method is called when a previously created loader is being reset, thus
+<p>This method is called when a previously created loader is being reset, thus
making its data unavailable. This callback lets you find out when the data is
about to be released so you can remove your reference to it.  </p>
-<p>This implementation calls
-{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
+<p>This implementation calls
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
with a value of <code>null</code>:</p>
<pre>
@@ -370,7 +370,7 @@ public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
android.app.Fragment} that displays a {@link android.widget.ListView} containing
the results of a query against the contacts content provider. It uses a {@link
android.content.CursorLoader} to manage the query on the provider.</p>
-
+
<p>For an application to access a user's contacts, as shown in this example, its
manifest must include the permission
{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}.</p>
diff --git a/docs/html/guide/components/processes-and-threads.jd b/docs/html/guide/components/processes-and-threads.jd
index 7bb3c65a373b..250799853c92 100644
--- a/docs/html/guide/components/processes-and-threads.jd
+++ b/docs/html/guide/components/processes-and-threads.jd
@@ -121,7 +121,7 @@ required to keep the user interface responsive.</p></li>
<ul>
<li>It hosts an {@link android.app.Activity} that is not in the foreground, but is still
-visible to the user (its {@link android.app.Activity#onPause onPause()} method has been called).
+visible to the user (its {@link android.app.Activity#onPause onPause()} method has been called).
This might occur, for example, if the foreground activity started a dialog, which allows the
previous activity to be seen behind it.</li>
diff --git a/docs/html/guide/practices/index.jd b/docs/html/guide/practices/index.jd
index b61272b91ad7..f34a6ba2eef4 100644
--- a/docs/html/guide/practices/index.jd
+++ b/docs/html/guide/practices/index.jd
@@ -1,7 +1,7 @@
page.title=Best Practices
excludeFromSuggestions=true
page.landing=true
-page.landing.intro=Design and build apps the right way. Learn how to create apps that look great and perform well on as many devices as possible, from phones to tablets and more.
+page.landing.intro=Design and build apps the right way. Learn how to create apps that look great and perform well on as many devices as possible, from phones to tablets and more.
page.landing.image=
@jd:body
@@ -10,20 +10,20 @@ page.landing.image=
<div class="col-12">
<h3>Blog Articles</h3>
-
+
<a href="http://android-developers.blogspot.com/2010/10/improving-app-quality.html">
<h4>Improving App Quality</h4>
<p>One way of improving your app’s visibility in the ecosystem is by deploying well-targeted
mobile advertising campaigns and cross-app promotions. However, there’s another time-tested method
of fueling the impression-install-ranking cycle: improve the product!</p>
</a>
-
+
<a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">
<h4>Say Goodbye to the Menu Button</h4>
<p>As Ice Cream Sandwich rolls out to more devices, it's important that you begin to migrate
your designs to the action bar in order to promote a consistent Android user experience.</p>
</a>
-
+
<a href="http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html">
<h4>New Tools For Managing Screen Sizes</h4>
<p>Android 3.2 includes new tools for supporting devices with a wide range of screen sizes.
@@ -31,14 +31,14 @@ One important result is better support for a new size of screen; what is typical
tablet. This release also offers several new APIs to simplify developers’ work in adjusting to
different screen sizes.</p>
</a>
-
+
<a href="http://android-developers.blogspot.com/2011/03/identifying-app-installations.html">
<h4>Identifying App Installations</h4>
<p>It is very common, and perfectly reasonable, for a developer to want to track individual
installations of their apps. It sounds plausible just to call TelephonyManager.getDeviceId() and use
that value to identify the installation. There are problems with this</p>
</a>
-
+
<a
href="http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html">
<h4>Making Android Games that Play Nice</h4>
@@ -46,7 +46,7 @@ href="http://android-developers.blogspot.com/2011/11/making-android-games-that-p
often multi-core, multi-purpose system like Android is trickier. Even the best developers frequently
make mistakes in the way they interact with the Android system and with other applications</p>
</a>
-
+
</div>
diff --git a/docs/html/guide/practices/optimizing-for-3.0.jd b/docs/html/guide/practices/optimizing-for-3.0.jd
index 8d07eb9847d8..db45e19ce0da 100644
--- a/docs/html/guide/practices/optimizing-for-3.0.jd
+++ b/docs/html/guide/practices/optimizing-for-3.0.jd
@@ -4,7 +4,7 @@ excludeFromSuggestions=true
<div id="deprecatedSticker">
- <a href="#"
+ <a href="#"
onclick="$('#naMessage').show();$('#deprecatedSticker').hide();return false">
<strong>This doc is deprecated</strong></a>
</div>
@@ -181,7 +181,7 @@ larger screens.</p>
<li>Perform your usual tests to be sure everything works and looks as expected.</li>
</ol>
</li>
-
+
<li><b>Apply the new "holographic" theme to your application</b>
<ol>
<li>Open your manifest file and update the <a
@@ -191,7 +191,7 @@ href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code
android:targetSdkVersion}</a> to {@code "11"}. For example:
<pre>
&lt;manifest ... >
- &lt;uses-sdk android:minSdkVersion="4"
+ &lt;uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="11" /&gt;
&lt;application ... >
...
@@ -446,7 +446,7 @@ Multi-choice List</a>: An example of how to provide multiple-choice selection fo
GridView.</li>
<li><a
href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html">
-Content Loaders</a>: An example using new Loader APIs to asynchronously load data.</li>
+Content Loaders</a>: An example using new Loader APIs to asynchronously load data.</li>
<li><a
href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/animation/index.html">
Property Animation</a>: Several samples using the new animation APIs to animate object
@@ -624,7 +624,7 @@ landscape orientation and that is how most users will use them. So, you should e
application can function in landscape. Even if you want to avoid rotating the screen while your
application is running, you should not assume that portrait is the device's default orientation. You
should either ensure that your layout is usable in both portrait and landscape orientations or
-provide an <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources"
+provide an <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources"
>alternative layout resource</a> for landscape orientation.</p>
<p>If you believe your application or game provides its best experience when the screen is tall,
diff --git a/docs/html/guide/practices/screen-compat-mode.jd b/docs/html/guide/practices/screen-compat-mode.jd
index 34580ba824cf..18a089e1d119 100644
--- a/docs/html/guide/practices/screen-compat-mode.jd
+++ b/docs/html/guide/practices/screen-compat-mode.jd
@@ -75,7 +75,7 @@ android:targetSdkVersion}</a> to {@code "4"} or higher, or set <a
href="{@docRoot}guide/topics/manifest/supports-screens-element.html#resizeable">{@code
android:resizeable}</a> to {@code "true"}.</p>
</dd>
-
+
<dt>Version 2 (Android 3.2 and greater)</dt>
<dd>The system draws the application's layout the same as
it would on a normal size handset (approximately emulating a 320dp x 480dp screen), then scales it
@@ -151,9 +151,9 @@ android:xlargeScreens}</a> attribute to {@code "true"}:</p>
system will always resize your layout to fit the screen. This works regardless of what values
you've set in the <a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code <uses-sdk>}</a>
-attributes.</p>
+attributes.</p>
</li>
-
+
<li><strong>Easy but has other effects:</strong>
<p>In your manifest's <a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code <uses-sdk>}</a>
diff --git a/docs/html/guide/practices/screens_support.jd b/docs/html/guide/practices/screens_support.jd
index 2223dbf3096d..ea9f988daac7 100644
--- a/docs/html/guide/practices/screens_support.jd
+++ b/docs/html/guide/practices/screens_support.jd
@@ -139,7 +139,7 @@ or position in a density-independent way.
<p>The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is
the baseline density assumed by the system for a "medium" density screen. At runtime, the system
transparently handles any scaling of the dp units, as necessary, based on the actual density of the
-screen in use. The conversion of dp units to screen pixels is simple:
+screen in use. The conversion of dp units to screen pixels is simple:
<nobr><code>px = dp * (dpi / 160)</code></nobr>.
For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. You should always use dp units
when defining your application's UI, to ensure proper display of your UI on screens with different
@@ -214,7 +214,7 @@ changes in screen density.</p>
</ul>
<p class="note"><strong>Note:</strong> These minimum screen sizes were not as well defined prior to
-Android 3.0, so you may encounter some devices that are mis-classified between normal and large.
+Android 3.0, so you may encounter some devices that are mis-classified between normal and large.
These are also based on the physical resolution of the screen, so may vary across devices&mdash;for
example a 1024x720 tablet with a system bar actually has a bit less space available to the
application due to it being used by the system bar.</p>
@@ -904,7 +904,7 @@ href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;support
manifest element:</p>
<dl>
-
+
<dt><a
href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">
{@code android:requiresSmallestWidthDp}</a></dt>
diff --git a/docs/html/guide/practices/tablets-and-handsets.jd b/docs/html/guide/practices/tablets-and-handsets.jd
index 85327b6d7036..a1bafd3d7dec 100644
--- a/docs/html/guide/practices/tablets-and-handsets.jd
+++ b/docs/html/guide/practices/tablets-and-handsets.jd
@@ -89,7 +89,7 @@ href="{@docRoot}guide/components/fragments.html">Fragments</a> developer guide.<
</li>
- <li><strong>Use the action bar</strong>, but follow best practices and ensure your design
+ <li><strong>Use the action bar</strong>, but follow best practices and ensure your design
is flexible enough for the system to adjust the action bar layout based on the screen size.
<p>The {@link android.app.ActionBar} is a UI component for activities that replaces the traditional
diff --git a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
index f6669e4f36b4..b66fdd42a1f4 100644
--- a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
+++ b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
@@ -8,7 +8,7 @@ parent.link=index.html
<div id="deprecatedSticker">
- <a href="#"
+ <a href="#"
onclick="$('#naMessage').show();$('#deprecatedSticker').hide();return false">
<strong>This doc is deprecated</strong></a>
</div>
@@ -105,7 +105,7 @@ need to</a></li>
<p>
It illustrates activities and tasks with examples, and describes some
of their underlying principles and mechanisms, such as navigation,
- multitasking, activity re-use, intents, and the activity stack.
+ multitasking, activity re-use, intents, and the activity stack.
The document also highlights design decisions that are available to you
and what control they give you over the UI of your application.
</p>
@@ -146,7 +146,7 @@ document),
<p>
An Android <em>application</em> typically consists of one or more
- related, loosely bound activities <!--(and possibly
+ related, loosely bound activities <!--(and possibly
<a href=#services_broadcast_receivers title="other components">other
components</a>)--> for the user to interact with, typically bundled up
in a single file (with an .apk suffix). Android ships with a rich set
@@ -186,10 +186,10 @@ document),
seamless, activity after activity, <a href="#tasks">task</a> after
task.
</p>
-
+
<p>
An activity handles a particular type of content (data) and accepts a
- set of related user actions. Each activity has a
+ set of related user actions. Each activity has a
<a href="{@docRoot}guide/components/activities.html#Lifecycle">lifecycle</a> that is
independent of the other
activities in its application or task &mdash; each activity is
@@ -283,7 +283,7 @@ independent of the other
to the activity stack, so that pressing <em>Back</em> displays the previous
activity on the stack. However, the user cannot use the <em>Back</em> button to go
back further than the last visit to Home. The adding of an activity to
- the current stack happens whether or not that activity begins a new
+ the current stack happens whether or not that activity begins a new
<a href=#tasks title=task>task</a> (as long as that task was started
without going Home), so going back can let the user go back to
activities in previous tasks. The user can get to tasks earlier than
@@ -297,7 +297,7 @@ independent of the other
designing the navigation, if you have screen A and you want the user
to be able go to a subsequent screen B and then use the <em>Back</em> button to go
back to screen A, then the screen A needs to be implemented as an
- activity. The one exception to this rule is if your application
+ activity. The one exception to this rule is if your application
<a href="#taking_over_back_key">takes control of the <em>Back</em> button</a> and manages the
navigation
itself.
@@ -340,7 +340,7 @@ itself.
Send a text message with an attachment
</li>
<li>
- View a YouTube video and share it by email with someone else
+ View a YouTube video and share it by email with someone else
</li>
</ul>
@@ -666,7 +666,7 @@ itself.
mailto:info@example.com link, they are actually initiating an Intent
object, or just an <em>intent</em>, which then gets resolved to a
particular component (we consider only activity components here).
- So, the result of a user touching a mailto: link is an Intent object
+ So, the result of a user touching a mailto: link is an Intent object
that the system tries to match to an activity. If that Intent object was
written explicitly naming an activity (an <em>explicit intent</em>),
then the system immediately launches that activity in response to the user
@@ -925,7 +925,7 @@ href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filter
For instance, you could disable the user control that initiates
the Intent object, or display a message to the user that lets them go
to a location, such as Google Play, to download its application.
- In this way, your code can start the activity (using either startActivity()
+ In this way, your code can start the activity (using either startActivity()
or startActivityForResult()) only if the intent has tested to resolve
to an activity that is actually present.
</p>
@@ -947,7 +947,7 @@ href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filter
launcher</em> (typically implemented as a sliding drawer on the
Home screen), or from a shortcut icon on the Home screen, or
from the task switcher. (The mechanism for this is for the
- activity to have an
+ activity to have an
<a href={@docRoot}guide/components/intents-filters.html>intent filter</a> with action
MAIN and
category LAUNCHER.)
@@ -1103,7 +1103,7 @@ MAIN and
activity to be run.
</p>
-
+
<h3 id="notifications_get_back_tip">Notifications and App Widgets should provide consistent back behavior</h3>
<p>
Notifications and app widgets are two common ways that a user can launch
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design.jd b/docs/html/guide/practices/ui_guidelines/icon_design.jd
index 07266607ed4c..6b546c9fd21d 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design.jd
@@ -58,7 +58,7 @@ Screens</a></li>
<div class="note design">
-<p><strong>New Guides for App Designers!</strong></p>
+<p><strong>New Guides for App Designers!</strong></p>
<p>Check out the new documents for designers at <strong><a
href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
@@ -72,13 +72,13 @@ professional to users.</p>
<p>This document provides information to help you create icons for various parts
of your application’s user interface that match the general styles used by the
-Android 2.x framework. Following these guidelines will help you to create a
+Android 2.x framework. Following these guidelines will help you to create a
polished and unified experience for the user.</p>
<p>The following documents discuss detailed guidelines for the common types of
icons used throughout Android applications:</p>
-<dl>
+<dl>
<dt><strong><a href="icon_design_launcher.html">Launcher Icons</a></strong></dt>
<dd>A Launcher icon is a graphic that represents your application on the
device's Home screen and in the Launcher window.</dd>
@@ -103,7 +103,7 @@ icons used throughout Android applications:</p>
graphically represent list items. An example is the Settings application.</dd>
</dl>
-<p>To get started creating your icons more quickly, you can download
+<p>To get started creating your icons more quickly, you can download
the Android Icon Templates Pack.</p>
@@ -142,7 +142,7 @@ section in the box at the top-right corner of this page.</p>
<p>Android is designed to run on a variety of devices that offer a range of
screen sizes and resolutions. When you design the icons for your application,
it's important keep in mind that your application may be installed on any of
-those devices. As described in the <a
+those devices. As described in the <a
href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
Screens</a> document, the Android platform makes it straightforward for you to
provide icons in such a way that they will be displayed properly on any device,
@@ -158,7 +158,7 @@ your application, see <a
href="{@docRoot}guide/practices/screens_support.html#qualifiers">Resource
directory qualifiers for screen size and density</a>. </p>
-<p>For tips on how to create and manage icon sets for multiple densities, see
+<p>For tips on how to create and manage icon sets for multiple densities, see
<a href="#design-tips">Tips for Designers</a>.</p>
@@ -290,7 +290,7 @@ initially draw launcher icons on an 864x864 artboard, it will be easier and
cleaner to tweak the icons when you scale the artboard down to the target
sizes for final asset creation.</p>
-
+
<h3>When scaling, redraw bitmap layers as needed</h3>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd b/docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd
index 831de4569edd..37657f4d1ecc 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd
@@ -31,7 +31,7 @@ Screens</a></li>
</div>
<div class="note design">
-<p><strong>New Guides for App Designers!</strong></p>
+<p><strong>New Guides for App Designers!</strong></p>
<p>Check out the new documents for designers at <strong><a
href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd b/docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd
index c958ed9a655e..a7ee73f41a78 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd
@@ -29,7 +29,7 @@ Screens</a></li>
</div>
<div class="note design">
-<p><strong>New Guides for App Designers!</strong></p>
+<p><strong>New Guides for App Designers!</strong></p>
<p>Check out the new documents for designers at <strong><a
href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd b/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd
index f47e186790a9..3bb1a627c85c 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd
@@ -28,7 +28,7 @@ Screens</a></li>
<div class="note design">
-<p><strong>New Guides for App Designers!</strong></p>
+<p><strong>New Guides for App Designers!</strong></p>
<p>Check out the new documents for designers at <strong><a
href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd b/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd
index 2df3a2250ef5..483e076ac52f 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd
@@ -95,7 +95,7 @@ but rather they are meant to emphasize the common approaches that your icons can
share with others on the device. Figure 1, at right, provides examples. </p>
<div class="figure">
- <img src="{@docRoot}images/icon_design/IconGraphic_Icons_i.png"
+ <img src="{@docRoot}images/icon_design/IconGraphic_Icons_i.png"
width="340">
<p class="img-caption">
<strong>Figure 1.</strong> Example launcher icons for Android 2.0 and
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_list.jd b/docs/html/guide/practices/ui_guidelines/icon_design_list.jd
index 29e1a9380de7..fa350bc2b6a7 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_list.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_list.jd
@@ -30,7 +30,7 @@ Screens</a></li>
<div class="note design">
-<p><strong>New Guides for App Designers!</strong></p>
+<p><strong>New Guides for App Designers!</strong></p>
<p>Check out the new documents for designers at <strong><a
href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_menu.jd b/docs/html/guide/practices/ui_guidelines/icon_design_menu.jd
index a5b35977fc0e..25b23d0f628c 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_menu.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_menu.jd
@@ -34,7 +34,7 @@ Screens</a></li>
<div class="note design">
-<p><strong>New Guides for App Designers!</strong></p>
+<p><strong>New Guides for App Designers!</strong></p>
<p>Check out the new documents for designers at <strong><a
href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
@@ -267,7 +267,7 @@ menu icon <a href="#palette1">color palette</a>. </li>
appropriate. For example, in Figure 3 the logical place for rounded corners is
the roof and not the rest of the building.</span></li>
-<li>All dimensions specified on this page are based on a 48x48 pixel artboard
+<li>All dimensions specified on this page are based on a 48x48 pixel artboard
size with a 6 pixel safeframe.</li>
<li>The menu icon effect (the outer glow) described in <a
@@ -277,7 +277,7 @@ safeframe.</li>
<li><strong>Final art must be exported as a transparent PNG file.</strong></li>
-<li>Templates for creating menu icons in Adobe Photoshop are available in the
+<li>Templates for creating menu icons in Adobe Photoshop are available in the
Icon Templates Pack.</li>
</ul>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd b/docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd
index 4993adb0328b..27df450e1673 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd
@@ -42,7 +42,7 @@ Screens</a></li>
<div class="note design">
-<p><strong>New Guides for App Designers!</strong></p>
+<p><strong>New Guides for App Designers!</strong></p>
<p>Check out the new documents for designers at <strong><a
href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_tab.jd b/docs/html/guide/practices/ui_guidelines/icon_design_tab.jd
index cbe6706fb067..308e6d092c1e 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_tab.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_tab.jd
@@ -34,7 +34,7 @@ Screens</a></li>
<div class="note design">
-<p><strong>New Guides for App Designers!</strong></p>
+<p><strong>New Guides for App Designers!</strong></p>
<p>Check out the new documents for designers at <strong><a
href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
@@ -291,10 +291,10 @@ your application. </p>
the Android platform.</p>
<p class="warning"><strong>Warning:</strong>
-Because these resources can change between platform versions, you
+Because these resources can change between platform versions, you
should not reference the system's copy of the resources. If you want to
use any icons or other internal drawable resources, you should store a
-local copy of those icons or drawables in your application resources,
+local copy of those icons or drawables in your application resources,
then reference the local copy from your application code. In that way, you can
maintain control over the appearance of your icons, even if the system's
copy changes. Note that the grid below is not intended to be complete.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/index.jd b/docs/html/guide/practices/ui_guidelines/index.jd
index 91a0725b82e3..713109cf2bcf 100644
--- a/docs/html/guide/practices/ui_guidelines/index.jd
+++ b/docs/html/guide/practices/ui_guidelines/index.jd
@@ -7,7 +7,7 @@ excludeFromSuggestions=true
<div class="note design" style="background:none;overflow:auto;padding:10px 5px">
<a href="{@docRoot}design/index.html"><img src="{@docRoot}images/home/android-design.png" alt=""
style="float:left;margin:0 1em 0 0;"/></a>
-<p><strong>New Guides for App Designers!</strong></p>
+<p><strong>New Guides for App Designers!</strong></p>
<p>The Android UX team has put together a set of guidelines for the interaction and
visual design of Android applications. The new collection provides an overview of
Android styles, design patterns, building blocks for exceptional Android designs, and more.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/menu_design.jd b/docs/html/guide/practices/ui_guidelines/menu_design.jd
index bf87bdd124e7..949752588a12 100644
--- a/docs/html/guide/practices/ui_guidelines/menu_design.jd
+++ b/docs/html/guide/practices/ui_guidelines/menu_design.jd
@@ -8,7 +8,7 @@ parent.link=index.html
<div id="deprecatedSticker">
- <a href="#"
+ <a href="#"
onclick="$('#naMessage').show();$('#deprecatedSticker').hide();return false">
<strong>This doc is deprecated</strong></a>
</div>
@@ -16,7 +16,7 @@ parent.link=index.html
<div id="naMessage" style="display:block">
<div><p><strong>This document has been deprecated.</strong></p>
- <p>For design guidelines about adding user actions and other options, read the design guidelines
+ <p>For design guidelines about adding user actions and other options, read the design guidelines
for <a href="{@docRoot}design/patterns/actionbar.html">Action Bar</a> or the developer guide about
<a href="{@docRoot}guide/topics/ui/menus.html">Menus</a>.</p>
@@ -25,7 +25,7 @@ for <a href="{@docRoot}design/patterns/actionbar.html">Action Bar</a> or the dev
onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" />
</div>
</div>
-
+
@@ -37,7 +37,7 @@ onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" />
<div id="qv-wrapper">
<div id="qv">
-
+
<h2>Quickview</h2>
<ul>
@@ -85,15 +85,15 @@ onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" />
</ol>
</div>
-</div>
+</div>
<p>
A menu holds a set of commands (user actions) that are normally hidden, and
are accessible by a button, key, or gesture. Menu commands provide a means
- for performing operations and for navigating to other parts of your
+ for performing operations and for navigating to other parts of your
application or other applications. Menus are useful for freeing screen space,
as an alternative to placing functionality and navigation, in buttons or other
- user controls in the content area of your application.
+ user controls in the content area of your application.
</p>
<p>
@@ -102,7 +102,7 @@ onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" />
the functionality and navigation for your application. Briefly:
<ul>
<li>The <em>Options menu</em> contains primary functionality that applies
- globally to the current activity or starts a related activity.
+ globally to the current activity or starts a related activity.
It is typically invoked by a user pressing a hard button, often labeled <em>Menu</em>.</li>
<li>The <em>Context menu</em> contains secondary functionality for the currently
selected item. It is typically invoked by a user's touch &amp; hold
@@ -113,11 +113,11 @@ onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" />
<p>
All but the simplest applications have menus. The system automatically
- lays the menus out and provides standard ways for users to access them.
+ lays the menus out and provides standard ways for users to access them.
In this sense, they are familiar and dependable ways for users to access
functionality across all applications. All menus are panels that "float"
on top of the activity screen and are smaller than full screen, so that the
- application is still visible around its edges. This is a visual reminder
+ application is still visible around its edges. This is a visual reminder
that a menu is an intermediary operation that disappears once it's used.
</p>
@@ -127,8 +127,8 @@ onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" />
<h2 id="tour_of_the_menus">Tour of the Menus</h2>
-<p class="note"><strong>Note:</strong> Your menus and screens might not look
-like those shown in this document; they may vary from one version of Android
+<p class="note"><strong>Note:</strong> Your menus and screens might not look
+like those shown in this document; they may vary from one version of Android
or device to another.
</p>
@@ -137,13 +137,13 @@ or device to another.
<p>
The Options menu contains commands that apply globally across the current
activity, or can start another activity. They do not apply to a selected
- item in the content (a <a href="#context_menu">Context menu</a> does that).
+ item in the content (a <a href="#context_menu">Context menu</a> does that).
</p>
<p>
- On most devices, a user presses the <em>Menu</em> button to access the Options menu,
- as shown in the screenshot below. To close the menu, the user presses
- <em>Menu</em> again, or presses the <em>Back</em> button.
+ On most devices, a user presses the <em>Menu</em> button to access the Options menu,
+ as shown in the screenshot below. To close the menu, the user presses
+ <em>Menu</em> again, or presses the <em>Back</em> button.
In fact, to cancel out of any menu, press the <em>Back</em> button. (Pressing the <em>Menu</em>
button or touching outside the menu also works.) Note that how to invoke this
menu may be different on different devices.
@@ -153,15 +153,15 @@ or device to another.
Each
<a href="{@docRoot}guide/practices/ui_guidelines/activity_task_design.html#activities">activity</a>
activity has its own set of operations and therefore its own Options menu.
- An application with multiple activities would have a different Options menu
- for each activity.
+ An application with multiple activities would have a different Options menu
+ for each activity.
</p>
<p>
For example, in the message list view of an email program, the Options menu
- might let you search the messages, compose a new message, refresh the list,
- or change the email settings. The compose view of an email program would
- have a different Options menu, such as adding a CC field, attaching a file,
+ might let you search the messages, compose a new message, refresh the list,
+ or change the email settings. The compose view of an email program would
+ have a different Options menu, such as adding a CC field, attaching a file,
or discarding the message.
</p>
@@ -179,7 +179,7 @@ or device to another.
<li>
<b>Options expanded menu</b> - If the activity has more menu items than will
fit on the icon menu, then the last icon is labeled "More" &mdash; selecting it
- displays a list that can contain any number of menu items and will scroll
+ displays a list that can contain any number of menu items and will scroll
as necessary.
</li>
</ul>
@@ -202,18 +202,18 @@ or device to another.
<p>
A user can touch &amp; hold on content on the screen to
- access a Context menu (if one exists), as shown in the screenshot below.
+ access a Context menu (if one exists), as shown in the screenshot below.
A Context menu is a list of menu items (commands) that can operate
on the selected content. The command can either be part of the current
- activity, or the system can pass the selected content along to
- an operation in another activity (by way of an
+ activity, or the system can pass the selected content along to
+ an operation in another activity (by way of an
<a href="{@docRoot}guide/practices/ui_guidelines/activity_task_design.html#intents">intent</a>).
</p>
<p>
For example, in an email message list, a user can touch &amp; hold on
an email message to open a Context menu containing commands to read,
- archive, or delete the message.
+ archive, or delete the message.
</p>
<p id="location">
@@ -231,7 +231,7 @@ or device to another.
In the above example, if the user performs touch &amp; hold on the contact
"Obi Wan Kenobi", a Context menu opens. The commands provided in
this Context menu are the complete set of actions that can be performed
- on this contact.
+ on this contact.
</p>
<p>
@@ -246,7 +246,7 @@ or device to another.
<p>
Also note, as shown in the following screenshot, the Context menu and the
next screen both hold the same complete set of commands that can be performed
- on this contact. The Context menu displays the commands in a list,
+ on this contact. The Context menu displays the commands in a list,
while the "View contact" activity splits them into various items in the
Options menu, icon buttons and list items.
</p>
@@ -268,10 +268,10 @@ or device to another.
<h4>Text Commands in Context Menu</h4>
<p>
- Text links and text fields in the content both have system-provided operations
+ Text links and text fields in the content both have system-provided operations
that are common across all applications: operations such as "Select all", "Select text",
- "Copy all", and "Add to dictionary". If the text field is editable, it also
- has other operations, such as "Cut all" and "Input Method", and if text
+ "Copy all", and "Add to dictionary". If the text field is editable, it also
+ has other operations, such as "Cut all" and "Input Method", and if text
is also on the clipboard, it has "Paste". The system automatically inserts
the appropriate menu items into the Context menu of text links and text
fields, as shown in the following screenshot.
@@ -342,7 +342,7 @@ or device to another.
An example of a selection-specific Context menu is when a user performs a
touch &amp; hold on a person's name in a list view of a contacts application.
The Context menu would typically contain commands "View contact", "Call contact",
- and "Edit contact".
+ and "Edit contact".
</p>
<h3 id="most_frequently_used">Place the most frequently used operations first</h3>
@@ -365,7 +365,7 @@ or device to another.
<h3 id="dont_put_commands">Don't put commands <em>only</em> in a Context menu</h3>
<p>
- If a user can fully access your application without using Context menus,
+ If a user can fully access your application without using Context menus,
then it's designed properly! In general, if part of your application is inaccessible
without using Context menus, then you need to duplicate those commands elsewhere.
</p>
@@ -373,8 +373,8 @@ or device to another.
<p>
Before opening a Context menu, it has no visual representation that identifies
its presence (whereas the Options menu has the <em>Menu</em> button), and so is not
- particularly discoverable.
- Therefore, in general, a Context menu should <em>duplicate</em> commands
+ particularly discoverable.
+ Therefore, in general, a Context menu should <em>duplicate</em> commands
found in the corresponding activity screen. For example, while it's useful to
let the user call a phone number from a Context menu invoked by touch
&amp; hold on a name in a list of contacts, that operation should <em>also</em>
@@ -388,7 +388,7 @@ or device to another.
As described under <a href="#context_menu_shortcut">shortcut</a>,
touching on an item in the content should activate the same command as touching
the first item in the Context menu. Both cases should be the most intuitive
- operation for that item.
+ operation for that item.
</p>
<h3 id="selecting_content_item">Selecting an item in the content should perform the most intuitive operation</h3>
@@ -427,13 +427,13 @@ or device to another.
<h3 id="context_menu_should_identify">A Context menu should identify the selected item</h3>
<p>
- When a user does touch &amp; hold on an item, the Context menu should
- contain the name of the selected item. Therefore,
+ When a user does touch &amp; hold on an item, the Context menu should
+ contain the name of the selected item. Therefore,
when creating a Context menu, be sure to include a title and the name of the
- selected item so that it's clear to the user what the context is.
+ selected item so that it's clear to the user what the context is.
For example, if a user selects a contact "Joan of Arc", put that name in the
title of the Context menu (using
- {@link android.view.ContextMenu#setHeaderTitle(java.lang.CharSequence) setHeaderTitle}).
+ {@link android.view.ContextMenu#setHeaderTitle(java.lang.CharSequence) setHeaderTitle}).
Likewise, a command to edit the contact should be called "Edit contact",
not just "Edit".
</p>
@@ -442,7 +442,7 @@ or device to another.
<h3 id="most_important_commands">Put only the most important commands fixed on the screen</h3>
<p>
- By putting commands in menus, you free up the screen to hold more content.
+ By putting commands in menus, you free up the screen to hold more content.
On the other hand, fixing commands in the content area of an activity
makes them more prominent and easy to use.
</p>
@@ -456,7 +456,7 @@ or device to another.
To give a command the highest prominence, ensuring the command is obvious and won't be overlooked.<br>
Example: A "Buy" button in a store application.
</li>
- <li>
+ <li>
When quick access to the command is important and going to the menu would be
tedious or slow.<br>
Example: Next/Previous buttons or Zoom In/Out buttons in an image viewing application.
@@ -494,7 +494,7 @@ or device to another.
When a dialog is displayed, pressing the <em>Menu</em> button should do nothing. This also holds
true
for activities that look like dialogs. A dialog box is recognizable by being
- smaller than full-screen, having zero to three buttons, is non-scrollable, and
+ smaller than full-screen, having zero to three buttons, is non-scrollable, and
possibly a list of selectable items that can include checkboxes or radio buttons.
<!--For examples of dialogs, see Text Guidelines.-->
</p>
@@ -520,12 +520,12 @@ true
<p>
Sometimes a menu item's action cannot be performed &mdash; for example,
- the "Forward" button in a browser cannot work until after the "Back"
+ the "Forward" button in a browser cannot work until after the "Back"
button has been pressed. We recommend:
</p>
<ul>
- <li>
+ <li>
<b>In Options menu</b> - disable the menu item, which dims the text and icon,
turning it gray. This applies to menu items in both the icon menu and the
"More" menu. It would be disorienting for the icon menu to change from 6
diff --git a/docs/html/guide/practices/ui_guidelines/widget_design.jd b/docs/html/guide/practices/ui_guidelines/widget_design.jd
index cf2cd64d483a..95c594dba972 100644
--- a/docs/html/guide/practices/ui_guidelines/widget_design.jd
+++ b/docs/html/guide/practices/ui_guidelines/widget_design.jd
@@ -46,7 +46,7 @@ parent.link=index.html
<div class="note design">
-<p><strong>New Guides for App Designers!</strong></p>
+<p><strong>New Guides for App Designers!</strong></p>
<p>Check out the new documents for designers at <strong><a
href="{@docRoot}design/index.html">Android Design</a></strong>.</p>
</div>
diff --git a/docs/html/guide/topics/admin/device-admin.jd b/docs/html/guide/topics/admin/device-admin.jd
index e2fef04b7537..2a8583a83e7d 100644
--- a/docs/html/guide/topics/admin/device-admin.jd
+++ b/docs/html/guide/topics/admin/device-admin.jd
@@ -135,60 +135,60 @@ can require PIN or passwords to have at least six characters. </td> </tr>
combination of letters and numbers. They may include symbolic characters.
</td>
</tr>
-
+
<tr>
<td>Complex password required</td>
<td>Requires that passwords must contain at least a letter, a numerical digit, and a special symbol. Introduced in Android 3.0.
</td>
</tr>
-
-<tr>
+
+<tr>
<td>Minimum letters required in password</td> <td>The minimum number of
-letters required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
+letters required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
</tr>
-
-
- <tr>
- <td>Minimum lowercase letters required in password</td>
- <td>The minimum number of lowercase
-letters required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
+
+
+ <tr>
+ <td>Minimum lowercase letters required in password</td>
+ <td>The minimum number of lowercase
+letters required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
</tr>
-
- <tr>
- <td>Minimum non-letter characters required in password</td>
+
+ <tr>
+ <td>Minimum non-letter characters required in password</td>
<td>The minimum number of
-non-letter characters required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
+non-letter characters required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
</tr>
-
-<tr>
- <td>Minimum numerical digits required in password</td>
- <td>The minimum number of numerical digits required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
+
+<tr>
+ <td>Minimum numerical digits required in password</td>
+ <td>The minimum number of numerical digits required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
</tr>
-<tr>
- <td>Minimum symbols required in password</td>
- <td>The minimum number of symbols required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
+<tr>
+ <td>Minimum symbols required in password</td>
+ <td>The minimum number of symbols required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
</tr>
-<tr>
- <td>Minimum uppercase letters required in password</td>
- <td>The minimum number of uppercase letters required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
+<tr>
+ <td>Minimum uppercase letters required in password</td>
+ <td>The minimum number of uppercase letters required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
</tr>
-<tr>
- <td>Password expiration timeout</td>
- <td>When the password will expire, expressed as a delta in milliseconds from when a device admin sets the expiration timeout. Introduced in Android 3.0.</td>
+<tr>
+ <td>Password expiration timeout</td>
+ <td>When the password will expire, expressed as a delta in milliseconds from when a device admin sets the expiration timeout. Introduced in Android 3.0.</td>
</tr>
-<tr>
- <td>Password history restriction</td>
+<tr>
+ <td>Password history restriction</td>
<td>This policy prevents users from reusing the last <em>n</em> unique passwords.
This policy is typically used in conjunction with
{@link android.app.admin.DevicePolicyManager#setPasswordExpirationTimeout(android.content.ComponentName,long) setPasswordExpirationTimeout()}, which forces
users to update their passwords after a specified amount of time has elapsed.
-Introduced in Android 3.0.</td>
+Introduced in Android 3.0.</td>
</tr>
-
+
<tr>
<td>Maximum failed password attempts </td>
<td>Specifies how many times a user can enter the wrong password before the
@@ -203,18 +203,18 @@ pressed a button before the device locks the screen. When this happens, users
need to enter their PIN or passwords again before they can use their devices and
access data. The value can be between 1 and 60 minutes.</td> </tr>
-<tr>
-<td>Require storage encryption</td>
-<td>Specifies that the storage area should be encrypted, if the device supports it.
+<tr>
+<td>Require storage encryption</td>
+<td>Specifies that the storage area should be encrypted, if the device supports it.
Introduced in Android 3.0.</td> </tr>
<tr>
<td>Disable camera</td>
-
+
<td>Specifies that the camera should be disabled. Note that this doesn't have
to be a permanent disabling. The camera can be enabled/disabled dynamically
based on context, time, and so on. Introduced in Android 4.0.</td>
-
+
</tr>
@@ -234,7 +234,7 @@ Administration API lets you do the following:</p> <ul>
<p>The examples used in this document are based on the Device Administration API
sample, which is included in the SDK samples (available through the
-Android SDK Manager) and located on your system as
+Android SDK Manager) and located on your system as
<code>&lt;sdk_root&gt;/ApiDemos/app/src/main/java/com/example/android/apis/app/DeviceAdminSample.java</code>.</p>
<p>The sample application offers a demo of device admin features. It presents users
@@ -250,8 +250,8 @@ policies, the system returns an error.</li>
<li>Set how many failed password attempts can occur before the device is wiped
(that is, restored to factory settings).</li>
<li>Set how long from now the password will expire.</li>
-<li>Set the password history length (<em>length</em> refers to number of old passwords stored in the history).
-This prevents users from reusing
+<li>Set the password history length (<em>length</em> refers to number of old passwords stored in the history).
+This prevents users from reusing
one of the last <em>n</em> passwords they previously used.</li>
<li>Specify that the storage area should be encrypted, if the device supports it.</li>
<li>Set the maximum amount of inactive time that can elapse before the device
@@ -259,7 +259,7 @@ locks.</li>
<li>Make the device lock immediately.</li>
<li>Wipe the device's data (that is, restore factory settings).</li>
<li>Disable the camera.</li>
-
+
</ul>
@@ -454,8 +454,8 @@ changes to prompt the user to activate the device admin application, as shown in
<img src="{@docRoot}images/admin/device-admin-activate-prompt.png"/>
<p class="img-caption"><strong>Figure 2.</strong> Sample Application: Activating the Application</p>
-<p>Below is the code that gets executed when the user clicks the <strong>Enable Admin</strong> checkbox. This has the effect of triggering the
-{@link android.preference.Preference.OnPreferenceChangeListener#onPreferenceChange(android.preference.Preference, java.lang.Object) onPreferenceChange()}
+<p>Below is the code that gets executed when the user clicks the <strong>Enable Admin</strong> checkbox. This has the effect of triggering the
+{@link android.preference.Preference.OnPreferenceChangeListener#onPreferenceChange(android.preference.Preference, java.lang.Object) onPreferenceChange()}
callback. This callback is invoked when the value of this {@link android.preference.Preference} has been changed by the user and is about to be set and/or persisted. If the user is enabling the application, the display
changes to prompt the user to activate the device admin application, as shown in figure
2. Otherwise, the device admin application is disabled. </p>
@@ -556,7 +556,7 @@ containing at least numeric characters.</dd>
<dt>{@link
android.app.admin.DevicePolicyManager#PASSWORD_QUALITY_COMPLEX}</dt><dd>The user
must have entered a password containing at least a letter, a numerical digit and
-a special symbol.</dd>
+a special symbol.</dd>
<dt>{@link
android.app.admin.DevicePolicyManager#PASSWORD_QUALITY_SOMETHING}</dt><dd>The
policy requires some kind
@@ -581,7 +581,7 @@ example, you could set a policy that states that passwords must contain at least
contents:</p>
<ul>
-<li>{@link android.app.admin.DevicePolicyManager#setPasswordMinimumLetters(android.content.ComponentName,int) setPasswordMinimumLetters()}</li>
+<li>{@link android.app.admin.DevicePolicyManager#setPasswordMinimumLetters(android.content.ComponentName,int) setPasswordMinimumLetters()}</li>
<li>{@link android.app.admin.DevicePolicyManager#setPasswordMinimumLowerCase(android.content.ComponentName,int) setPasswordMinimumLowerCase()}</li>
@@ -622,8 +622,8 @@ int maxFailedPw;
mDPM.setMaximumFailedPasswordsForWipe(mDeviceAdminSample, maxFailedPw);</pre>
<h5 id="expiration">Set password expiration timeout</h5>
-<p>Beginning with Android 3.0, you can use the
-{@link android.app.admin.DevicePolicyManager#setPasswordExpirationTimeout(android.content.ComponentName,long) setPasswordExpirationTimeout()}
+<p>Beginning with Android 3.0, you can use the
+{@link android.app.admin.DevicePolicyManager#setPasswordExpirationTimeout(android.content.ComponentName,long) setPasswordExpirationTimeout()}
method to set when a password will expire, expressed as a delta in milliseconds from when a device admin sets the expiration timeout. For example:</p>
<pre>DevicePolicyManager mDPM;
@@ -632,18 +632,18 @@ long pwExpiration;
...
mDPM.setPasswordExpirationTimeout(mDeviceAdminSample, pwExpiration);
</pre>
-
+
<h5 id="history">Restrict password based on history</h5>
-<p>Beginning with Android 3.0, you can use the
-{@link android.app.admin.DevicePolicyManager#setPasswordHistoryLength(android.content.ComponentName,int) setPasswordHistoryLength()}
+<p>Beginning with Android 3.0, you can use the
+{@link android.app.admin.DevicePolicyManager#setPasswordHistoryLength(android.content.ComponentName,int) setPasswordHistoryLength()}
method to limit users'
ability to reuse old passwords. This method takes a <em>length</em>
parameter, which specifies how many old
passwords are stored. When this policy is active, users cannot enter a new
password that matches the last <em>n</em> passwords. This prevents
users from using the same password over and over. This policy is typically used
-in conjunction with
+in conjunction with
{@link android.app.admin.DevicePolicyManager#setPasswordExpirationTimeout(android.content.ComponentName,long) setPasswordExpirationTimeout()},
which forces users
to update their passwords after a specified amount of time has elapsed. </p>
@@ -705,7 +705,7 @@ mDPM.setCameraDisabled(mDeviceAdminSample, mDisableCameraCheckbox.isChecked());<
<h4 id="storage">Storage encryption</h4>
<p>Beginning with Android 3.0, you can use the
-{@link android.app.admin.DevicePolicyManager#setStorageEncryption(android.content.ComponentName,boolean) setStorageEncryption()}
+{@link android.app.admin.DevicePolicyManager#setStorageEncryption(android.content.ComponentName,boolean) setStorageEncryption()}
method to set a policy requiring encryption of the storage area, where supported.</p>
<p>For example:</p>
diff --git a/docs/html/guide/topics/appwidgets/host.jd b/docs/html/guide/topics/appwidgets/host.jd
index 169e388918e2..7b00019239be 100644
--- a/docs/html/guide/topics/appwidgets/host.jd
+++ b/docs/html/guide/topics/appwidgets/host.jd
@@ -4,7 +4,7 @@ page.tags=AppWidgetHost,home screen,launcher
<div id="qv-wrapper">
<div id="qv">
-
+
<h2>In this document</h2>
<ol>
<li><a href="#host-binding">Binding App Widgets</a>
@@ -32,58 +32,58 @@ to embed <a href="{@docRoot}guide/topics/appwidgets/index.html">app widgets</a>
access to content. If you're building a Home replacement or a similar app,
you can also allow the user to embed app widgets by implementing an
{@link android.appwidget.AppWidgetHost}.
-This is not something that most apps will ever need to do, but if you are
-creating your own host, it's important to understand the contractual obligations
+This is not something that most apps will ever need to do, but if you are
+creating your own host, it's important to understand the contractual obligations
a host implicitly agrees to.</p>
-<p>This document focuses on the responsibilities involved in implementing a custom
-{@link android.appwidget.AppWidgetHost}. For an example of how to implement an
+<p>This document focuses on the responsibilities involved in implementing a custom
+{@link android.appwidget.AppWidgetHost}. For an example of how to implement an
{@link android.appwidget.AppWidgetHost}, see the source code for the
-Android Home screen
+Android Home screen
<a href="https://android.googlesource.com/platform/packages/apps/Launcher2/+/master/src/com/android/launcher2/Launcher.java">
-Launcher</a>.
+Launcher</a>.
-<p>Here is an overview of key classes and concepts involved in implementing a custom
+<p>Here is an overview of key classes and concepts involved in implementing a custom
{@link android.appwidget.AppWidgetHost}:</p>
<ul>
- <li><strong>App Widget Host</strong>&mdash;
- The {@link android.appwidget.AppWidgetHost} provides the interaction
-with the AppWidget service for apps, like the home screen, that want to embed
-app widgets in their UI. An {@link android.appwidget.AppWidgetHost} must have
-an ID that is unique within the host's own package. This ID remains persistent
+ <li><strong>App Widget Host</strong>&mdash;
+ The {@link android.appwidget.AppWidgetHost} provides the interaction
+with the AppWidget service for apps, like the home screen, that want to embed
+app widgets in their UI. An {@link android.appwidget.AppWidgetHost} must have
+an ID that is unique within the host's own package. This ID remains persistent
across all uses of the host. The ID is typically a hard-coded value that you assign
in your application.</li>
-
+
<li><strong>App Widget ID</strong>&mdash;
- Each app widget instance is assigned a unique ID at the time of binding
-(see {@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed bindAppWidgetIdIfAllowed()},
-discussed in more detail in <a href="#binding">Binding app widgets</a>).
-The unique ID is obtained by the host using {@link android.appwidget.AppWidgetHost#allocateAppWidgetId() allocateAppWidgetId()}. This ID is persistent across the lifetime of the widget,
-that is, until it is deleted from the host. Any host-specific state (such as the
-size and location of the widget) should be persisted by the hosting package and
+ Each app widget instance is assigned a unique ID at the time of binding
+(see {@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed bindAppWidgetIdIfAllowed()},
+discussed in more detail in <a href="#binding">Binding app widgets</a>).
+The unique ID is obtained by the host using {@link android.appwidget.AppWidgetHost#allocateAppWidgetId() allocateAppWidgetId()}. This ID is persistent across the lifetime of the widget,
+that is, until it is deleted from the host. Any host-specific state (such as the
+size and location of the widget) should be persisted by the hosting package and
associated with the app widget ID.
</li>
-
- <li><strong>App Widget Host View</strong>&mdash;
- {@link android.appwidget.AppWidgetHostView} can be thought of as a frame
-that the widget is wrapped in whenever it needs to be displayed. An app widget
-is assigned to an {@link android.appwidget.AppWidgetHostView} every time the
+
+ <li><strong>App Widget Host View</strong>&mdash;
+ {@link android.appwidget.AppWidgetHostView} can be thought of as a frame
+that the widget is wrapped in whenever it needs to be displayed. An app widget
+is assigned to an {@link android.appwidget.AppWidgetHostView} every time the
widget is inflated by the host. </li>
<li><strong>Options Bundle</strong>&mdash;
-The {@link android.appwidget.AppWidgetHost} uses the options bundle to communicate
-information to the {@link android.appwidget.AppWidgetProvider} about how the
-widget is being displayed (for example, size range, and whether the widget is on
-a lockscreen or the home screen). This information allows the
-{@link android.appwidget.AppWidgetProvider} to tailor the widget's contents
+The {@link android.appwidget.AppWidgetHost} uses the options bundle to communicate
+information to the {@link android.appwidget.AppWidgetProvider} about how the
+widget is being displayed (for example, size range, and whether the widget is on
+a lockscreen or the home screen). This information allows the
+{@link android.appwidget.AppWidgetProvider} to tailor the widget's contents
and appearance based on how and where it is displayed.
-You use
+You use
{@link android.appwidget.AppWidgetHostView#updateAppWidgetOptions(android.os.Bundle) updateAppWidgetOptions()}
-and
+and
{@link android.appwidget.AppWidgetHostView#updateAppWidgetSize updateAppWidgetSize()}
-to modify an app widget's
-bundle. Both of these methods trigger a callback to the
+to modify an app widget's
+bundle. Both of these methods trigger a callback to the
{@link android.appwidget.AppWidgetProvider}.</p></li>
</ul>
@@ -98,15 +98,15 @@ app is running on.</p>
<h3 id="binding-pre">Binding app widgets on Android 4.0 and lower</h3>
-<p>On devices running Android version 4.0 and lower, users add app widgets
-via a system activity that allows users to select a widget. This implicitly
-does a permission check&mdash;that is, by adding the app widget, the user is
-implicitly granting permission to your app to add app widgets to the host.
-Here is an example that illustrates
-this approach, taken from the original
-<a href="https://android.googlesource.com/platform/packages/apps/Launcher/+/master/src/com/android/launcher/Launcher.java">Launcher</a>. In this snippet, an event handler invokes
-{@link android.app.Activity#startActivityForResult(android.content.Intent,int) startActivityForResult()}
-with the request code {@code REQUEST_PICK_APPWIDGET} in response to a
+<p>On devices running Android version 4.0 and lower, users add app widgets
+via a system activity that allows users to select a widget. This implicitly
+does a permission check&mdash;that is, by adding the app widget, the user is
+implicitly granting permission to your app to add app widgets to the host.
+Here is an example that illustrates
+this approach, taken from the original
+<a href="https://android.googlesource.com/platform/packages/apps/Launcher/+/master/src/com/android/launcher/Launcher.java">Launcher</a>. In this snippet, an event handler invokes
+{@link android.app.Activity#startActivityForResult(android.content.Intent,int) startActivityForResult()}
+with the request code {@code REQUEST_PICK_APPWIDGET} in response to a
user action:</p>
<pre>
@@ -118,9 +118,9 @@ public void onClick(DialogInterface dialog, int which) {
...
case AddAdapter.ITEM_APPWIDGET: {
...
- int appWidgetId =
+ int appWidgetId =
Launcher.this.mAppWidgetHost.allocateAppWidgetId();
- Intent pickIntent =
+ Intent pickIntent =
new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK);
pickIntent.putExtra
(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
@@ -135,7 +135,7 @@ public void onClick(DialogInterface dialog, int which) {
app widget to your activity. In the following example, the activity responds
by calling {@code addAppWidget()} to add the app widget:</p>
-<pre>public final class Launcher extends Activity
+<pre>public final class Launcher extends Activity
implements View.OnClickListener, OnLongClickListener {
...
&#64;Override
@@ -152,7 +152,7 @@ by calling {@code addAppWidget()} to add the app widget:</p>
completeAddAppWidget(data, mAddItemCellInfo, !mDesktopLocked);
break;
}
- }
+ }
...
}
}</pre>
@@ -164,7 +164,7 @@ needs to be configured before it's added:</p>
int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
String customWidget = data.getStringExtra(EXTRA_CUSTOM_WIDGET);
- AppWidgetProviderInfo appWidget =
+ AppWidgetProviderInfo appWidget =
mAppWidgetManager.getAppWidgetInfo(appWidgetId);
if (appWidget.configure != null) {
@@ -183,7 +183,7 @@ see <a href="{@docRoot}guide/topics/appwidgets/index.html#Configuring">Creating
App Widget Configuration Activity</a>.</p>
<p>Once the app widget is ready, the next step is to do the
-actual work of adding it to the workspace. The
+actual work of adding it to the workspace. The
<a href="https://android.googlesource.com/platform/packages/apps/Launcher/+/master/src/com/android/launcher/Launcher.java">original Launcher</a> uses a method called {@code completeAddAppWidget()}
to do this.</p>
@@ -201,12 +201,12 @@ binding. To use this improved process, your app must declare the
<p>But this is just the first step. At runtime the user must
explicitly grant permission to your app to allow it to add app widgets
to the host. To test whether your app has permission to add the widget,
-you use the
-{@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed bindAppWidgetIdIfAllowed()}
-method.
+you use the
+{@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed bindAppWidgetIdIfAllowed()}
+method.
If {@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed bindAppWidgetIdIfAllowed()}
returns {@code false}, your app must display a dialog prompting the
-user to grant permission
+user to grant permission
("allow" or "always allow," to cover all future app widget additions).
This snippet gives an example of how to display the dialog:</p>
@@ -218,9 +218,9 @@ intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS, options);
startActivityForResult(intent, REQUEST_BIND_APPWIDGET);
</pre>
-<p>The host also has to check whether the user added
+<p>The host also has to check whether the user added
an app widget that needs configuration. For more discussion of this topic,
-see
+see
<a href="{@docRoot}guide/topics/appwidgets/index.html#Configuring">Creating
an App Widget Configuration Activity</a>.</p>
@@ -229,23 +229,23 @@ an App Widget Configuration Activity</a>.</p>
<div class="sidebox-wrapper">
<div class="sidebox">
<h2>What Version are You Targeting?</h2>
- <p>The approach you use in implementing your host should depend on what Android version
-you're targeting. Many of the features described in this section were introduced
+ <p>The approach you use in implementing your host should depend on what Android version
+you're targeting. Many of the features described in this section were introduced
in 3.0 or later. For example:</p>
<ul>
<li>Android 3.0 (API Level 11) introduces auto-advance behavior for widgets.</li>
<li>Android 3.1 (API Level 12) introduces the ability to resize widgets.</li>
<li>Android 4.0 (API Level 15) introduces a change in padding policy that
-puts the responsibility on the
+puts the responsibility on the
host to manage padding.</li>
<li>Android 4.1 (API Level 16) adds an API that allows the widget provider
to get more detailed information about the environment in which its
widget instances are being hosted.</li>
-<li>Android 4.2 (API Level 17) introduces the options bundle and the
-{@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed(int,android.content.ComponentName,android.os.Bundle) bindAppWidgetIdIfAllowed()}
+<li>Android 4.2 (API Level 17) introduces the options bundle and the
+{@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed(int,android.content.ComponentName,android.os.Bundle) bindAppWidgetIdIfAllowed()}
method. It also introduces lockscreen widgets.</li>
</ul>
-<p>If you are targeting earlier devices, refer to the original
+<p>If you are targeting earlier devices, refer to the original
<a href="https://android.googlesource.com/platform/packages/apps/Launcher/+/master/src/com/android/launcher/Launcher.java">Launcher</a> as an example.
</div>
</div>
@@ -273,7 +273,7 @@ from the Configuration Activity</a>. This is a necessary step for many app widge
they can be properly displayed.</li>
<li>Every app widget specifies a minimum width and height in dps, as defined in the {@link android.appwidget.AppWidgetProviderInfo} metadata
-(using {@link android.appwidget.AppWidgetProviderInfo#minWidth android:minWidth} and
+(using {@link android.appwidget.AppWidgetProviderInfo#minWidth android:minWidth} and
{@link android.appwidget.AppWidgetProviderInfo#minHeight android:minHeight}).
Make sure that the widget is laid out with at least this many dps.
For example, many hosts align icons and widgets in a grid. In this scenario,
@@ -379,7 +379,7 @@ so it is not explicitly required to set this for a home screen host.</p>
for your app&mdash;for example, if your host is a home screen, ensure
that the
{@link android.appwidget.AppWidgetProviderInfo#widgetCategory android:widgetCategory}
-attribute in the
+attribute in the
{@link android.appwidget.AppWidgetProviderInfo} metadata includes
the flag {@link android.appwidget.AppWidgetProviderInfo#WIDGET_CATEGORY_HOME_SCREEN}.
Similarly, for the lockscreen, ensure that field includes the flag {@link android.appwidget.AppWidgetProviderInfo#WIDGET_CATEGORY_KEYGUARD}. For more
diff --git a/docs/html/guide/topics/appwidgets/index.jd b/docs/html/guide/topics/appwidgets/index.jd
index c9575e025f05..7d555ed2d8d8 100644
--- a/docs/html/guide/topics/appwidgets/index.jd
+++ b/docs/html/guide/topics/appwidgets/index.jd
@@ -4,7 +4,7 @@ page.tags=home,AppWidgetProvider
<div id="qv-wrapper">
<div id="qv">
-
+
<h2>In this document</h2>
<ol>
<li><a href="#Basics">The Basics</a></li>
@@ -21,7 +21,7 @@ Intents</a></li>
Activity</a>
<ol>
<li><a href="#UpdatingFromTheConfiguration">Updating the App Widget
-from
+from
the Configuration Activity</a></li>
</ol>
</li>
@@ -33,7 +33,7 @@ from
collections
</a></li>
<li><a href="#fresh">Keeping Collection Data Fresh</a></li>
- </ol>
+ </ol>
</li>
</ol>
@@ -50,10 +50,10 @@ collections
<p>App Widgets are miniature application views that can be embedded in other
applications
(such as the Home screen) and receive periodic updates. These views are
-referred
+referred
to as Widgets in the user interface,
and you can publish one with an App Widget provider. An application component
-that is
+that is
able to hold other App Widgets is called an App Widget host. The screenshot
below shows
the Music App Widget.</p>
@@ -85,14 +85,14 @@ update frequency,
<dd>Defines the basic methods that allow you to programmatically interface
with the App Widget,
based on broadcast events. Through it, you will receive broadcasts when the
-App Widget is updated,
+App Widget is updated,
enabled, disabled and deleted.</dd>
<dt>View layout</dt>
<dd>Defines the initial layout for the App Widget, defined in XML.</dd>
</dl>
<p>Additionally, you can implement an App Widget configuration Activity. This is
-an optional
+an optional
{@link android.app.Activity} that launches when the user adds your App Widget
and allows him or her
to modify App Widget settings at create-time.</p>
@@ -117,7 +117,7 @@ application's
</pre>
<p>The <code>&lt;receiver&gt;</code> element requires the
-<code>android:name</code>
+<code>android:name</code>
attribute, which specifies the {@link android.appwidget.AppWidgetProvider} used
by the App Widget.</p>
@@ -133,7 +133,7 @@ automatically sends all other App Widget broadcasts to the AppWidgetProvider as
necessary.</p>
<p>The <code>&lt;meta-data&gt;</code> element specifies the
-{@link android.appwidget.AppWidgetProviderInfo} resource and requires the
+{@link android.appwidget.AppWidgetProviderInfo} resource and requires the
following attributes:</p>
<ul>
<li><code>android:name</code> - Specifies the metadata name. Use
@@ -141,21 +141,21 @@ following attributes:</p>
to identify the data as the {@link android.appwidget.AppWidgetProviderInfo}
descriptor.</li>
<li><code>android:resource</code> - Specifies the {@link
-android.appwidget.AppWidgetProviderInfo}
+android.appwidget.AppWidgetProviderInfo}
resource location.</li>
</ul>
<h2 id="MetaData">Adding the AppWidgetProviderInfo Metadata</h2>
-<p>The {@link android.appwidget.AppWidgetProviderInfo} defines the essential
+<p>The {@link android.appwidget.AppWidgetProviderInfo} defines the essential
qualities of an App Widget, such as its minimum layout dimensions, its initial
layout resource,
how often to update the App Widget, and (optionally) a configuration Activity to
launch at create-time.
Define the AppWidgetProviderInfo object in an XML resource using a single
<code>&lt;appwidget-provider></code> element and save it in the project's
-<code>res/xml/</code>
+<code>res/xml/</code>
folder.</p>
<p>For example:</p>
@@ -167,7 +167,7 @@ folder.</p>
android:updatePeriodMillis="86400000"
android:previewImage="@drawable/preview"
android:initialLayout="@layout/example_appwidget"
- android:configure="com.example.android.ExampleAppWidgetConfigure"
+ android:configure="com.example.android.ExampleAppWidgetConfigure"
android:resizeMode="horizontal|vertical"
android:widgetCategory="home_screen">
&lt;/appwidget-provider>
@@ -206,33 +206,33 @@ folder.</p>
<li>The <code>updatePeriodMillis</code> attribute defines how often the App
Widget framework should request an update from the {@link
-android.appwidget.AppWidgetProvider} by calling the
-{@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context,android.appwidget.AppWidgetManager,int[]) onUpdate()}
+android.appwidget.AppWidgetProvider} by calling the
+{@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context,android.appwidget.AppWidgetManager,int[]) onUpdate()}
callback method. The actual update
is not guaranteed to occur exactly on time with this value and we suggest
updating as infrequently as possible&mdash;perhaps no more than once an hour to
conserve the battery. You might also allow the user to adjust the frequency in a
configuration&mdash;some people might want a stock ticker to update every 15
-minutes, or maybe only four times a day.
+minutes, or maybe only four times a day.
<p class="note"><strong>Note:</strong> If the device is asleep when it
-is time for an update
+is time for an update
(as defined by <code>updatePeriodMillis</code>), then the device will
-wake up in order
+wake up in order
to perform the update. If you don't update more than once per hour, this
-probably won't
+probably won't
cause significant problems for the battery life. If, however, you need
-to update more
+to update more
frequently and/or you do not need to update while the device is asleep,
-then you can instead
+then you can instead
perform updates based on an alarm that will not wake the device. To do
-so, set an alarm with
+so, set an alarm with
an Intent that your AppWidgetProvider receives, using the {@link
-android.app.AlarmManager}.
+android.app.AlarmManager}.
Set the alarm type to either {@link
-android.app.AlarmManager#ELAPSED_REALTIME} or
+android.app.AlarmManager#ELAPSED_REALTIME} or
{@link android.app.AlarmManager#RTC}, which will only
deliver the alarm when the device is awake. Then set
-<code>updatePeriodMillis</code> to
+<code>updatePeriodMillis</code> to
zero (<code>"0"</code>).</p>
</li>
<li>The <code>initialLayout</code> attribute points to the layout resource
@@ -244,7 +244,7 @@ android.app.Activity} to launch when
Widget properties. This is optional
(read <a href="#Configuring">Creating an App Widget Configuration
Activity</a> below).</li>
-
+
<li>The <code>previewImage</code> attribute specifies a preview of what the
app widget will look like after it's configured, which the user sees when
selecting the app widget. If not supplied, the user instead sees your
@@ -255,7 +255,7 @@ using <code>previewImage</code>, see <a href="#preview">Setting a Preview
Image</a>. Introduced in Android 3.0.</li>
<li>The <code>autoAdvanceViewId</code> attribute specifies the view ID of the
-app widget subview that should be auto-advanced by the widget's host. Introduced in Android 3.0.</li>
+app widget subview that should be auto-advanced by the widget's host. Introduced in Android 3.0.</li>
<li>The <code>resizeMode</code> attribute specifies the rules by which a widget
can be resized. You use this attribute to make homescreen widgets
@@ -264,7 +264,7 @@ widget to show its resize handles, then drag the horizontal and/or vertical
handles to change the size on the layout grid. Values for the
<code>resizeMode</code> attribute include "horizontal", "vertical", and "none".
To declare a widget as resizeable horizontally and vertically, supply the value
-"horizontal|vertical". Introduced in Android 3.1.</li>
+"horizontal|vertical". Introduced in Android 3.1.</li>
<li>The <code>minResizeHeight</code> attribute specifies the minimum height (in dps) to which
the widget can be resized. This field has no effect if it is greater than {@code minHeight} or if
@@ -296,7 +296,7 @@ View objects listed
below, but before you begin designing your App Widget, please read and
understand the
<a href="{@docRoot}guide/practices/ui_guidelines/widget_design.html">App Widget
-Design
+Design
Guidelines</a>.</p>
<p>Creating the App Widget layout is simple if you're
@@ -306,7 +306,7 @@ However, you must be aware that App Widget layouts are based on {@link
android.widget.RemoteViews},
which do not support every kind of layout or view widget.</p>
-<p>A RemoteViews object (and, consequently, an App Widget) can support the
+<p>A RemoteViews object (and, consequently, an App Widget) can support the
following layout classes:</p>
<ul class="nolist">
@@ -334,7 +334,7 @@ following layout classes:</p>
<p>Descendants of these classes are not supported.</p>
-<p>RemoteViews also supports {@link android.view.ViewStub}, which is an invisible, zero-sized View you can use
+<p>RemoteViews also supports {@link android.view.ViewStub}, which is an invisible, zero-sized View you can use
to lazily inflate layout resources at runtime.</p>
@@ -386,7 +386,7 @@ to lazily inflate layout resources at runtime.</p>
<div class="sidebox-wrapper">
<div class="sidebox">
<p>You must declare your AppWidgetProvider class implementation as a
-broadcast receiver
+broadcast receiver
using the <code>&lt;receiver></code> element in the AndroidManifest (see
<a href="#Manifest">Declaring an App Widget in the Manifest</a> above).</p>
</div>
@@ -403,11 +403,11 @@ method calls:</p>
<dl>
<dt>
- {@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context,android.appwidget.AppWidgetManager,int[]) onUpdate()}
+ {@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context,android.appwidget.AppWidgetManager,int[]) onUpdate()}
</dt>
<dd>This is called to update the App Widget at intervals defined by the
<code>updatePeriodMillis</code>
- attribute in the AppWidgetProviderInfo (see <a href="#MetaData">Adding the
+ attribute in the AppWidgetProviderInfo (see <a href="#MetaData">Adding the
AppWidgetProviderInfo Metadata</a> above). This method is also called
when the user adds the App Widget, so it should perform the essential setup,
such as define event handlers for Views and start a temporary
@@ -415,25 +415,25 @@ method calls:</p>
configuration
Activity, <strong>this method is not called</strong> when the user adds the
App Widget,
- but is called for the subsequent updates. It is the responsibility of the
+ but is called for the subsequent updates. It is the responsibility of the
configuration Activity to perform the first update when configuration is
done.
(See <a href="#Configuring">Creating an App Widget Configuration
-Activity</a> below.)</dd>
+Activity</a> below.)</dd>
<dt>
- {@link android.appwidget.AppWidgetProvider#onAppWidgetOptionsChanged onAppWidgetOptionsChanged()}
+ {@link android.appwidget.AppWidgetProvider#onAppWidgetOptionsChanged onAppWidgetOptionsChanged()}
</dt>
<dd>
This is called when the widget is first placed and any time the widget is resized. You can use this callback to show or hide content based on the widget's size ranges. You get the size ranges by calling {@link android.appwidget.AppWidgetManager#getAppWidgetOptions getAppWidgetOptions()}, which returns a {@link android.os.Bundle} that includes the following:<br /><br />
<ul>
- <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MIN_WIDTH}&mdash;Contains
+ <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MIN_WIDTH}&mdash;Contains
the lower bound on the current width, in dp units, of a widget instance.</li>
- <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MIN_HEIGHT}&mdash;Contains
+ <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MIN_HEIGHT}&mdash;Contains
the lower bound on the current height, in dp units, of a widget instance.</li>
<li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MAX_WIDTH}&mdash;Contains
the upper bound on the current width, in dp units, of a widget instance.</li>
- <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MAX_HEIGHT}&mdash;Contains
+ <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MAX_HEIGHT}&mdash;Contains
the upper bound on the current width, in dp units, of a widget instance.</li>
</ul>
@@ -444,34 +444,34 @@ This callback was introduced in API Level 16 (Android 4.1). If you implement thi
host.</dd>
<dt>{@link android.appwidget.AppWidgetProvider#onEnabled(Context)}</dt>
<dd>This is called when an instance the App Widget is created for the first
-time. For example, if the user
+time. For example, if the user
adds two instances of your App Widget, this is only called the first time.
If you need to open a new database or perform other setup that only needs to
-occur once
- for all App Widget instances, then this is a good place to do it.</dd>
+occur once
+ for all App Widget instances, then this is a good place to do it.</dd>
<dt>{@link android.appwidget.AppWidgetProvider#onDisabled(Context)}</dt>
<dd>This is called when the last instance of your App Widget is deleted from
-the App Widget host.
- This is where you should clean up any work done in
- {@link android.appwidget.AppWidgetProvider#onEnabled(Context)},
- such as delete a temporary database.</dd>
+the App Widget host.
+ This is where you should clean up any work done in
+ {@link android.appwidget.AppWidgetProvider#onEnabled(Context)},
+ such as delete a temporary database.</dd>
<dt>{@link android.appwidget.AppWidgetProvider#onReceive(Context,Intent)}</dt>
<dd>This is called for every broadcast and before each of the above callback
methods.
You normally don't need to implement this method because the default
-AppWidgetProvider
- implementation filters all App Widget broadcasts and calls the above
- methods as appropriate.</dd>
+AppWidgetProvider
+ implementation filters all App Widget broadcasts and calls the above
+ methods as appropriate.</dd>
</dl>
-<p>The most important AppWidgetProvider callback is
-{@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]) onUpdate()}
+<p>The most important AppWidgetProvider callback is
+{@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]) onUpdate()}
because it is called when
each App Widget is added to a host (unless you use a configuration Activity). If
your App Widget accepts any user interaction events, then you need to register
the event handlers in this callback. If your App Widget doesn't create temporary
-files or databases, or perform other work that requires clean-up, then
-{@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]) onUpdate()}
+files or databases, or perform other work that requires clean-up, then
+{@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]) onUpdate()}
may be the only callback
method you need to define. For example, if you want an App Widget with a button
that launches an Activity when clicked, you could use the following
@@ -503,9 +503,9 @@ public class ExampleAppWidgetProvider extends AppWidgetProvider {
}
</pre>
-<p>This AppWidgetProvider defines only the
+<p>This AppWidgetProvider defines only the
{@link
-android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]) onUpdate()}
+android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]) onUpdate()}
method for the purpose of
defining a {@link android.app.PendingIntent} that launches an {@link
android.app.Activity} and attaching it to the App Widget's button with {@link
@@ -528,8 +528,8 @@ running after the callback methods return (see {@link
android.content.BroadcastReceiver} for information about the broadcast
lifecycle). If your App Widget setup process can take several seconds (perhaps
while performing web requests) and you require that your process continues,
-consider starting a {@link android.app.Service} in the
-{@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()}
+consider starting a {@link android.app.Service} in the
+{@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()}
method. From within the Service, you can perform your own updates
to the App Widget without worrying about the AppWidgetProvider closing down due
to an <a href="{@docRoot}guide/practices/responsiveness.html">Application
@@ -537,7 +537,7 @@ Not Responding</a> (ANR) error. See the <a
href="http://code.google.com/p/wiktionary-android/source/browse/trunk/Wiktionary/src/com/example/android/wiktionary/WordWidget.java">Wiktionary sample's AppWidgetProvider</a> for an example of an App Widget running a {@link
android.app.Service}.</p>
-<p>Also see the <a
+<p>Also see the <a
href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.html">ExampleAppWidgetProvider.java</a>
sample class.</p>
@@ -546,9 +546,9 @@ sample class.</p>
<p>{@link android.appwidget.AppWidgetProvider} is just a convenience class. If
you would like
-to receive the App Widget broadcasts directly, you can implement your own
-{@link android.content.BroadcastReceiver} or override the
-{@link android.appwidget.AppWidgetProvider#onReceive(Context,Intent)} callback.
+to receive the App Widget broadcasts directly, you can implement your own
+{@link android.content.BroadcastReceiver} or override the
+{@link android.appwidget.AppWidgetProvider#onReceive(Context,Intent)} callback.
The Intents you need to care about are as follows:</p>
<ul>
<li>{@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_UPDATE}</li>
@@ -565,11 +565,11 @@ The Intents you need to care about are as follows:</p>
<p>If you would like the user to configure settings when he or she adds a new
App Widget,
you can create an App Widget configuration Activity. This {@link
-android.app.Activity}
+android.app.Activity}
will be automatically launched by the App Widget host and allows the user to
configure
available settings for the App Widget at create-time, such as the App Widget
-color, size,
+color, size,
update period or other functionality settings.</p>
<p>The configuration Activity should be declared as a normal Activity in the
@@ -588,8 +588,8 @@ so the Activity needs to accept this Intent. For example:</p>
</pre>
<p>Also, the Activity must be declared in the AppWidgetProviderInfo XML file,
-with the
-<code>android:configure</code> attribute (see <a href="#MetaData">Adding
+with the
+<code>android:configure</code> attribute (see <a href="#MetaData">Adding
the AppWidgetProviderInfo Metadata</a> above). For example, the configuration
Activity
can be declared like this:</p>
@@ -597,13 +597,13 @@ can be declared like this:</p>
<pre>
&lt;appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
...
- android:configure="com.example.android.ExampleAppWidgetConfigure"
+ android:configure="com.example.android.ExampleAppWidgetConfigure"
... >
&lt;/appwidget-provider>
</pre>
<p>Notice that the Activity is declared with a fully-qualified namespace,
-because
+because
it will be referenced from outside your package scope.</p>
<p>That's all you need to get started with a configuration Activity. Now all you
@@ -612,21 +612,21 @@ Activity. There are, however, two important things to remember when you
implement the Activity:</p>
<ul>
<li>The App Widget host calls the configuration Activity and the configuration
-Activity should always
+Activity should always
return a result. The result should include the App Widget ID
passed by the Intent that launched the Activity (saved in the Intent extras
as
{@link android.appwidget.AppWidgetManager#EXTRA_APPWIDGET_ID}).</li>
- <li>The
- {@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()}
+ <li>The
+ {@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()}
method <strong>will not be called</strong> when the App Widget
is created
(the system will not send the ACTION_APPWIDGET_UPDATE broadcast when a
configuration Activity
is launched). It is the responsibility of the configuration Activity to
-request an update from the
- AppWidgetManager when the App Widget is first created. However,
-{@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()}
+request an update from the
+ AppWidgetManager when the App Widget is first created. However,
+{@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()}
will be called for subsequent updates&mdash;it is only skipped
the first time.</li>
</ul>
@@ -641,8 +641,8 @@ configuration Activity</h3>
<p>When an App Widget uses a configuration Activity, it is the responsibility of
the Activity
-to update the App Widget when configuration is complete.
-You can do so by requesting an update directly from the
+to update the App Widget when configuration is complete.
+You can do so by requesting an update directly from the
{@link android.appwidget.AppWidgetManager}.</p>
<p>Here's a summary of the procedure to properly update the App Widget and close
@@ -655,7 +655,7 @@ Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
mAppWidgetId = extras.getInt(
- AppWidgetManager.EXTRA_APPWIDGET_ID,
+ AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
</pre>
@@ -696,7 +696,7 @@ reaching the end, the App Widget host is notified that the configuration was
cancelled and the
App Widget will not be added.</p>
-<p>See the <a
+<p>See the <a
href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.html">ExampleAppWidgetConfigure.java</a>
sample class in ApiDemos for an example.</p>
@@ -708,7 +708,7 @@ sample class in ApiDemos for an example.</p>
android.appwidget.AppWidgetProviderInfo#previewImage} field, which specifies a
preview of what the app widget looks like. This preview is shown to the user from the
widget picker. If this field is not supplied, the app widget's icon is used for
-the preview.</p>
+the preview.</p>
<p>This is how you specify this setting in XML:</p>
@@ -742,12 +742,12 @@ list. For an example, see the Gmail app widget. </dd>
<dt>{@link android.widget.GridView}</dt>
<dd>A view that shows items in
two-dimensional scrolling grid. For an example, see the Bookmarks app
-widget.</dd>
+widget.</dd>
<dt>{@link android.widget.StackView}</dt>
<dd>A
stacked card view (kind of like a rolodex), where the user can flick the front
card up/down to see the previous/next card, respectively. Examples include
-the YouTube and Books app widgets. </dd>
+the YouTube and Books app widgets. </dd>
<dt>{@link android.widget.AdapterViewFlipper}</dt>
<dd>An adapter-backed simple
{@link
@@ -764,7 +764,7 @@ must include extra architecture to support their use in app widgets. In the
context of an app widget, the {@link android.widget.Adapter} is replaced by a
{@link android.widget.RemoteViewsService.RemoteViewsFactory RemoteViewsFactory},
which is simply a thin wrapper around the {@link android.widget.Adapter}
-interface.
+interface.
When
requested for a specific item in the collection, the {@link
android.widget.RemoteViewsService.RemoteViewsFactory RemoteViewsFactory} creates
@@ -782,7 +782,7 @@ interface for an adapter between a collection view (such as {@link
android.widget.ListView}, {@link android.widget.GridView}, and so on) and the
underlying data for that view. From the <a
href="{@docRoot}resources/samples/StackWidget/index.html">StackView Widget
-sample</a>, here is an example of the boilerplate code you use to implement
+sample</a>, here is an example of the boilerplate code you use to implement
this service and interface:
</p>
@@ -813,13 +813,13 @@ sample</a>:</p>
<p>This sample consists of a stack of 10 views, which display the values
<code>&quot;0!&quot;</code> through <code>&quot;9!&quot;</code> The sample
-app widget has these primary behaviors:</p>
+app widget has these primary behaviors:</p>
<ul>
<li>The user can vertically fling the top view in the
app widget to display the next or previous view. This is a built-in StackView
-behavior.</li>
+behavior.</li>
<li>Without any user interaction, the app widget automatically advances
through
@@ -828,17 +828,17 @@ its views in sequence, like a slide show. This is due to the setting
<code>res/xml/stackwidgetinfo.xml</code> file. This setting applies to the view
ID,
which in this case is the view ID of the stack view.</li>
-
+
<li>If the user touches the top view, the app widget displays the {@link
android.widget.Toast} message &quot;Touched view <em>n</em>,&quot; where
<em>n</em> is the index (position) of the touched view. For more discussion of
-how this is implemented, see
+how this is implemented, see
<a href="#behavior">Adding behavior to individual items</a>.</li>
</ul>
<h3 id="implementing_collections">Implementing app widgets with collections</h3>
-<p>To implement an app widget with collections, you follow the same basic steps
+<p>To implement an app widget with collections, you follow the same basic steps
you would use to implement any app widget. The following sections describe the
additional steps you need to perform to implement an app widget with
collections.</p>
@@ -940,7 +940,7 @@ collection:</p>
int[] appWidgetIds) {
// update each of the app widgets with the remote adapter
for (int i = 0; i &lt; appWidgetIds.length; ++i) {
-
+
// Set up the intent that starts the StackViewService, which will
// provide the views for this collection.
Intent intent = new Intent(context, StackWidgetService.class);
@@ -949,13 +949,13 @@ int[] appWidgetIds) {
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
// Instantiate the RemoteViews object for the app widget layout.
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
- // Set up the RemoteViews object to use a RemoteViews adapter.
+ // Set up the RemoteViews object to use a RemoteViews adapter.
// This adapter connects
// to a RemoteViewsService through the specified intent.
// This is how you populate the data.
rv.setRemoteAdapter(appWidgetIds[i], R.id.stack_view, intent);
-
- // The empty view is displayed when the collection has no items.
+
+ // The empty view is displayed when the collection has no items.
// It should be in the same layout used to instantiate the RemoteViews
// object above.
rv.setEmptyView(R.id.stack_view, R.id.empty_view);
@@ -963,12 +963,12 @@ int[] appWidgetIds) {
//
// Do additional processing specific to this app widget...
//
-
- appWidgetManager.updateAppWidget(appWidgetIds[i], rv);
+
+ appWidgetManager.updateAppWidget(appWidgetIds[i], rv);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}</pre>
-
+
<h4>RemoteViewsService class</h4>
<div class="sidebox-wrapper">
@@ -984,7 +984,7 @@ lifecycle.</p> </div>
<p>As described above, your {@link android.widget.RemoteViewsService} subclass
provides the {@link android.widget.RemoteViewsService.RemoteViewsFactory
-RemoteViewsFactory} used to populate the remote collection view.</p>
+RemoteViewsFactory} used to populate the remote collection view.</p>
<p>Specifically, you need to
perform these steps:</p>
@@ -993,7 +993,7 @@ perform these steps:</p>
<li>Subclass {@link android.widget.RemoteViewsService}. {@link
android.widget.RemoteViewsService} is the service through which
a remote adapter can request {@link android.widget.RemoteViews}. </li>
-
+
<li>In your {@link android.widget.RemoteViewsService} subclass, include a
class that implements the {@link
android.widget.RemoteViewsService.RemoteViewsFactory RemoteViewsFactory}
@@ -1027,12 +1027,12 @@ functions as an adapter to glue the data to the remote collection view.</p>
<p>The two most important methods you need to implement for your
{@link android.widget.RemoteViewsService.RemoteViewsFactory RemoteViewsFactory}
-subclass are
+subclass are
{@link android.widget.RemoteViewsService.RemoteViewsFactory#onCreate()
onCreate()} and
{@link android.widget.RemoteViewsService.RemoteViewsFactory#getViewAt(int)
getViewAt()}
-.</p>
+.</p>
<p>The system calls {@link
android.widget.RemoteViewsService.RemoteViewsFactory#onCreate() onCreate()} when
@@ -1047,7 +1047,7 @@ array and the text they contain is displayed </p>
<p>Here is an excerpt from the <a
href="{@docRoot}resources/samples/StackWidget/index.html">StackView Widget</a>
-sample's
+sample's
{@link android.widget.RemoteViewsService.RemoteViewsFactory
RemoteViewsFactory} implementation that shows portions of the {@link
android.widget.RemoteViewsService.RemoteViewsFactory#onCreate() onCreate()}
@@ -1081,7 +1081,7 @@ RemoteViewsService.RemoteViewsFactory {
RemoteViewsFactory} method {@link
android.widget.RemoteViewsService.RemoteViewsFactory#getViewAt(int) getViewAt()}
returns a {@link android.widget.RemoteViews} object corresponding to the data at
-the specified <code>position</code> in the data set. Here is an excerpt from
+the specified <code>position</code> in the data set. Here is an excerpt from
the <a
href="http://developer.android.com/resources/samples/StackWidget/index.html">
StackView Widget</a> sample's {@link
@@ -1089,8 +1089,8 @@ android.widget.RemoteViewsService.RemoteViewsFactory RemoteViewsFactory}
implementation:</p>
<pre>public RemoteViews getViewAt(int position) {
-
- // Construct a remote views item based on the app widget item XML file,
+
+ // Construct a remote views item based on the app widget item XML file,
// and set the text based on the position.
RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.widget_item);
rv.setTextViewText(R.id.widget_item, mWidgetItems.get(position).text);
@@ -1104,7 +1104,7 @@ implementation:</p>
<p>The above sections show you how to bind your data to your app widget
collection. But what if you want to add dynamic behavior to the individual items
-in your collection view?</p>
+in your collection view?</p>
<p> As described in <a href="#AppWidgetProvider">Using the AppWidgetProvider
Class</a>, you normally use {@link
@@ -1122,7 +1122,7 @@ android.widget.RemoteViews#setOnClickFillInIntent(int, android.content.Intent)
setOnClickFillInIntent()}. This entails setting up up a pending intent template
for your collection view, and then setting a fill-in intent on each item in the
collection via your {@link android.widget.RemoteViewsService.RemoteViewsFactory
-RemoteViewsFactory}.</p>
+RemoteViewsFactory}.</p>
<p>This section uses the <a
href="{@docRoot}resources/samples/StackWidget/index.html">StackView Widget
sample</a> to describe how to add behavior to individual items. In the <a
@@ -1138,7 +1138,7 @@ android.appwidget.AppWidgetProvider} subclass) creates a pending intent that has
a custom action called <code>TOAST_ACTION</code>.</li>
<li>When the user touches a view, the intent is fired and it broadcasts
<code>TOAST_ACTION</code>.</li>
-
+
<li>This broadcast is intercepted by the <code>StackWidgetProvider</code>'s
{@link android.appwidget.AppWidgetProvider#onReceive(android.content.Context,
android.content.Intent) onReceive()} method, and the app widget displays the
@@ -1154,7 +1154,7 @@ href="{@docRoot}resources/samples/StackWidget/index.html">StackView Widget
sample</a> uses a broadcast, but typically an app widget would simply launch an
activity in a scenario like this one.</p>
-<h5>Setting up the pending intent template</h5>
+<h5>Setting up the pending intent template</h5>
<p>The <code>StackWidgetProvider</code> ({@link
android.appwidget.AppWidgetProvider} subclass) sets up a pending intent.
@@ -1162,7 +1162,7 @@ Individuals items of a collection cannot set up their own pending intents.
Instead, the collection as a whole sets up a pending intent template, and the
individual items set a fill-in intent to create unique behavior on an
item-by-item
-basis.</p>
+basis.</p>
<p>This class also receives the broadcast that is sent when the user touches a
view. It processes this event in its {@link
@@ -1179,7 +1179,7 @@ message for the current view.</p>
    ...
// Called when the BroadcastReceiver receives an Intent broadcast.
- // Checks to see whether the intent's action is TOAST_ACTION. If it is, the app widget
+ // Checks to see whether the intent's action is TOAST_ACTION. If it is, the app widget
// displays a Toast message for the current item.
&#64;Override
public void onReceive(Context context, Intent intent) {
@@ -1192,12 +1192,12 @@ message for the current view.</p>
    }
    super.onReceive(context, intent);
}
-
+
&#64;Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// update each of the app widgets with the remote adapter
    for (int i = 0; i &lt; appWidgetIds.length; ++i) {
-
+
    // Sets up the intent that points to the StackViewService that will
    // provide the views for this collection.
    Intent intent = new Intent(context, StackWidgetService.class);
@@ -1207,7 +1207,7 @@ message for the current view.</p>
    intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
    RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
    rv.setRemoteAdapter(appWidgetIds[i], R.id.stack_view, intent);
-
+
    // The empty view is displayed when the collection has no items. It should be a sibling
    // of the collection view.
    rv.setEmptyView(R.id.stack_view, R.id.empty_view);
@@ -1227,13 +1227,13 @@ message for the current view.</p>
    PendingIntent toastPendingIntent = PendingIntent.getBroadcast(context, 0, toastIntent,
    PendingIntent.FLAG_UPDATE_CURRENT);
    rv.setPendingIntentTemplate(R.id.stack_view, toastPendingIntent);
-
+
    appWidgetManager.updateAppWidget(appWidgetIds[i], rv);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}</pre>
-
+
<h5><strong>Setting the fill-in Intent</strong></h5>
<p>Your {@link android.widget.RemoteViewsService.RemoteViewsFactory
@@ -1274,17 +1274,17 @@ class StackRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory {
       ...
    }
    ...
-
- // Given the position (index) of a WidgetItem in the array, use the item's text value in
+
+ // Given the position (index) of a WidgetItem in the array, use the item's text value in
// combination with the app widget item XML file to construct a RemoteViews object.
    public RemoteViews getViewAt(int position) {
        // position will always range from 0 to getCount() - 1.
-
+
        // Construct a RemoteViews item based on the app widget item XML file, and set the
        // text based on the position.
        RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.widget_item);
        rv.setTextViewText(R.id.widget_item, mWidgetItems.get(position).text);
-
+
        // Next, set a fill-intent, which will be used to fill in the pending intent template
        // that is set on the collection view in StackWidgetProvider.
        Bundle extras = new Bundle();
@@ -1294,9 +1294,9 @@ class StackRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory {
// Make it possible to distinguish the individual on-click
// action of a given item
    rv.setOnClickFillInIntent(R.id.widget_item, fillInIntent);
-
+
    ...
-
+
    // Return the RemoteViews object.
    return rv;
}
diff --git a/docs/html/guide/topics/connectivity/bluetooth-le.jd b/docs/html/guide/topics/connectivity/bluetooth-le.jd
index 3d606863052a..ba742eeef8a2 100644
--- a/docs/html/guide/topics/connectivity/bluetooth-le.jd
+++ b/docs/html/guide/topics/connectivity/bluetooth-le.jd
@@ -171,7 +171,7 @@ include the following in your app's manifest:</p>
</pre>
<p>However, if you want to make your app available to devices that don't support BLE,
-you should still include this element in your app's manifest, but set {@code required="false"}.
+you should still include this element in your app's manifest, but set {@code required="false"}.
Then at run-time you can determine BLE availability by using
{@link android.content.pm.PackageManager#hasSystemFeature PackageManager.hasSystemFeature()}:
diff --git a/docs/html/guide/topics/connectivity/bluetooth.jd b/docs/html/guide/topics/connectivity/bluetooth.jd
index 96008c5c5701..07fcd09a751c 100644
--- a/docs/html/guide/topics/connectivity/bluetooth.jd
+++ b/docs/html/guide/topics/connectivity/bluetooth.jd
@@ -4,55 +4,55 @@ page.tags=wireless,bluetoothadapter,bluetoothdevice
<div id="qv-wrapper">
<div id="qv">
-
+
<h2>In this document</h2>
- <ol>
+ <ol>
<li><a href="#TheBasics">The Basics</a></li>
<li><a href="#Permissions">Bluetooth Permissions</a></li>
- <li><a href="#SettingUp">Setting Up Bluetooth</a></li>
- <li><a href="#FindingDevices">Finding Devices</a>
- <ol>
- <li><a href="#QueryingPairedDevices">Querying paired devices</a></li>
- <li><a href="#DiscoveringDevices">Discovering devices</a></li>
- </ol></li>
- <li><a href="#ConnectingDevices">Connecting Devices</a>
- <ol>
- <li><a href="#ConnectingAsAServer">Connecting as a server</a></li>
- <li><a href="#ConnectingAsAClient">Connecting as a client</a></li>
- </ol></li>
+ <li><a href="#SettingUp">Setting Up Bluetooth</a></li>
+ <li><a href="#FindingDevices">Finding Devices</a>
+ <ol>
+ <li><a href="#QueryingPairedDevices">Querying paired devices</a></li>
+ <li><a href="#DiscoveringDevices">Discovering devices</a></li>
+ </ol></li>
+ <li><a href="#ConnectingDevices">Connecting Devices</a>
+ <ol>
+ <li><a href="#ConnectingAsAServer">Connecting as a server</a></li>
+ <li><a href="#ConnectingAsAClient">Connecting as a client</a></li>
+ </ol></li>
<li><a href="#ManagingAConnection">Managing a Connection</a></li>
- <li><a href="#Profiles">Working with Profiles</a>
+ <li><a href="#Profiles">Working with Profiles</a>
<ol>
<li><a href="#AT-Commands">Vendor-specific AT commands</a>
<li><a href="#HDP">Health Device Profile</a>
</ol></li>
- </ol>
-
- <h2>Key classes</h2>
- <ol>
- <li>{@link android.bluetooth.BluetoothAdapter}</li>
- <li>{@link android.bluetooth.BluetoothDevice}</li>
- <li>{@link android.bluetooth.BluetoothSocket}</li>
- <li>{@link android.bluetooth.BluetoothServerSocket}</li>
- </ol>
-
- <h2>Related samples</h2>
- <ol>
- <li><a href="{@docRoot}resources/samples/BluetoothChat/index.html">Bluetooth Chat</a></li>
+ </ol>
+
+ <h2>Key classes</h2>
+ <ol>
+ <li>{@link android.bluetooth.BluetoothAdapter}</li>
+ <li>{@link android.bluetooth.BluetoothDevice}</li>
+ <li>{@link android.bluetooth.BluetoothSocket}</li>
+ <li>{@link android.bluetooth.BluetoothServerSocket}</li>
+ </ol>
+
+ <h2>Related samples</h2>
+ <ol>
+ <li><a href="{@docRoot}resources/samples/BluetoothChat/index.html">Bluetooth Chat</a></li>
<li><a href="{@docRoot}resources/samples/BluetoothHDP/index.html">Bluetooth HDP (Health Device Profile)</a></li>
- </ol>
-
-</div>
-</div>
-
-
+ </ol>
+
+</div>
+</div>
+
+
<p>The Android platform includes support for the Bluetooth network stack,
which allows a device to wirelessly exchange data with other Bluetooth devices.
The application framework provides access to the Bluetooth functionality through
the Android Bluetooth APIs. These APIs let applications wirelessly
connect to other Bluetooth devices, enabling point-to-point and multipoint
-wireless features.</p>
-
+wireless features.</p>
+
<p>Using the Bluetooth APIs, an Android application can perform the
following:</p>
<ul>
@@ -75,14 +75,14 @@ see <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">Bluetooth Lo
<p>This document describes how to use the Android Bluetooth APIs to accomplish
the four major tasks necessary to communicate using Bluetooth: setting up
Bluetooth, finding devices that are either paired or available in the local
-area, connecting devices, and transferring data between devices.</p>
-
+area, connecting devices, and transferring data between devices.</p>
+
<p>All of the Bluetooth APIs are available in the {@link android.bluetooth}
package. Here's a summary of the classes and interfaces you will need to create Bluetooth
-connections:</p>
-
-<dl>
-<dt>{@link android.bluetooth.BluetoothAdapter}</dt>
+connections:</p>
+
+<dl>
+<dt>{@link android.bluetooth.BluetoothAdapter}</dt>
<dd>Represents the local Bluetooth adapter (Bluetooth radio). The
{@link android.bluetooth.BluetoothAdapter} is the entry-point for all Bluetooth
interaction. Using this,
@@ -90,49 +90,49 @@ you can discover other Bluetooth devices, query a list of bonded (paired)
devices, instantiate a {@link android.bluetooth.BluetoothDevice} using a known
MAC address, and create a {@link android.bluetooth.BluetoothServerSocket} to
listen for communications
-from other devices.</dd>
-
-<dt>{@link android.bluetooth.BluetoothDevice}</dt>
+from other devices.</dd>
+
+<dt>{@link android.bluetooth.BluetoothDevice}</dt>
<dd>Represents a remote Bluetooth device. Use this to request a connection
with a remote device through a {@link android.bluetooth.BluetoothSocket} or
query information about the
-device such as its name, address, class, and bonding state.</dd>
-
-<dt>{@link android.bluetooth.BluetoothSocket}</dt>
+device such as its name, address, class, and bonding state.</dd>
+
+<dt>{@link android.bluetooth.BluetoothSocket}</dt>
<dd>Represents the interface for a Bluetooth socket (similar to a TCP
{@link java.net.Socket}). This is the connection point that allows
an application to exchange data with another Bluetooth device via InputStream
-and OutputStream.</dd>
-
-<dt>{@link android.bluetooth.BluetoothServerSocket}</dt>
+and OutputStream.</dd>
+
+<dt>{@link android.bluetooth.BluetoothServerSocket}</dt>
<dd>Represents an open server socket that listens for incoming requests
(similar to a TCP {@link java.net.ServerSocket}). In order to connect two
Android devices, one device must open a server socket with this class. When a
remote Bluetooth device makes a connection request to the this device, the
{@link android.bluetooth.BluetoothServerSocket} will return a connected {@link
android.bluetooth.BluetoothSocket} when the
-connection is accepted.</dd>
-
-<dt>{@link android.bluetooth.BluetoothClass}</dt>
+connection is accepted.</dd>
+
+<dt>{@link android.bluetooth.BluetoothClass}</dt>
<dd>Describes the general characteristics and capabilities of a Bluetooth
device. This is a read-only set of properties that define the device's major and
minor device classes and its services. However, this does not reliably describe
all Bluetooth profiles and services supported by the device, but is useful as a
-hint to the device type.</dd>
-
+hint to the device type.</dd>
+
<dt>{@link android.bluetooth.BluetoothProfile}</dt> <dd>An interface that
represents a Bluetooth profile. A <em>Bluetooth profile</em> is a wireless
interface specification for Bluetooth-based communication between devices. An
example is the Hands-Free profile. For more discussion of profiles, see <a
-href="#Profiles">Working with Profiles</a></dd>
+href="#Profiles">Working with Profiles</a></dd>
<dt>{@link android.bluetooth.BluetoothHeadset}</dt> <dd>Provides support for
Bluetooth headsets to be used with mobile phones. This includes both Bluetooth
-Headset and Hands-Free (v1.5) profiles.</dd>
+Headset and Hands-Free (v1.5) profiles.</dd>
<dt>{@link android.bluetooth.BluetoothA2dp}</dt> <dd> Defines how high quality
audio can be streamed from one device to another over a Bluetooth connection.
-"A2DP" stands for Advanced Audio Distribution Profile.</dd>
+"A2DP" stands for Advanced Audio Distribution Profile.</dd>
<dt>{@link android.bluetooth.BluetoothHealth}</dt>
<dd> Represents a Health Device Profile proxy that controls the Bluetooth service.</dd>
@@ -146,23 +146,23 @@ application’s registration state and Bluetooth channel state.</dd>
<dt>{@link android.bluetooth.BluetoothHealthAppConfiguration}</dt>
-<dd>Represents an application configuration that the Bluetooth Health third-party
+<dd>Represents an application configuration that the Bluetooth Health third-party
application registers to communicate with a remote Bluetooth health
-device.</dd>
+device.</dd>
<dt>{@link android.bluetooth.BluetoothProfile.ServiceListener}</dt>
<dd>An interface that notifies {@link android.bluetooth.BluetoothProfile} IPC
clients when they have been connected to or disconnected from the service (that
is, the internal service that runs a particular profile). </dd>
-
-</dl>
-
-
-
-
-<h2 id="Permissions">Bluetooth Permissions</h2>
-
+
+</dl>
+
+
+
+
+<h2 id="Permissions">Bluetooth Permissions</h2>
+
<p>In order to use Bluetooth features in your application, you must declare
the Bluetooth permission {@link android.Manifest.permission#BLUETOOTH}.
You need this permission to perform any Bluetooth communication,
@@ -175,40 +175,40 @@ ability to discover local Bluetooth devices. The other abilities granted by this
permission should not be used, unless the application is a "power manager" that
will modify Bluetooth settings upon user request. <strong>Note:</strong> If you
use {@link android.Manifest.permission#BLUETOOTH_ADMIN} permission, then you must
-also have the {@link android.Manifest.permission#BLUETOOTH} permission.</p>
-
+also have the {@link android.Manifest.permission#BLUETOOTH} permission.</p>
+
<p>Declare the Bluetooth permission(s) in your application manifest file. For
-example:</p>
-
-<pre>
+example:</p>
+
+<pre>
&lt;manifest ... >
&lt;uses-permission android:name="android.permission.BLUETOOTH" />
...
&lt;/manifest>
-</pre>
-
+</pre>
+
<p>See the <a
-href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission></a>
-reference for more information about declaring application permissions.</p>
-
-
-<h2 id="SettingUp">Setting Up Bluetooth</h2>
-
-<div class="figure" style="width:200px">
-<img src="{@docRoot}images/bt_enable_request.png" />
+href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission></a>
+reference for more information about declaring application permissions.</p>
+
+
+<h2 id="SettingUp">Setting Up Bluetooth</h2>
+
+<div class="figure" style="width:200px">
+<img src="{@docRoot}images/bt_enable_request.png" />
<strong>Figure 1:</strong> The enabling Bluetooth dialog.
-</div>
-
+</div>
+
<p>Before your application can communicate over Bluetooth, you need to verify
-that Bluetooth is supported on the device, and if so, ensure that it is enabled.</p>
-
+that Bluetooth is supported on the device, and if so, ensure that it is enabled.</p>
+
<p>If Bluetooth is not supported, then you should gracefully disable any
Bluetooth features. If Bluetooth is supported, but disabled, then you can request that the
user enable Bluetooth without leaving your application. This setup is
-accomplished in two steps, using the {@link android.bluetooth.BluetoothAdapter}.</p>
-
-
-<ol>
+accomplished in two steps, using the {@link android.bluetooth.BluetoothAdapter}.</p>
+
+
+<ol>
<li>Get the {@link android.bluetooth.BluetoothAdapter}
<p>The {@link android.bluetooth.BluetoothAdapter} is required for any and all Bluetooth
activity. To get the {@link android.bluetooth.BluetoothAdapter}, call the static {@link
@@ -217,15 +217,15 @@ android.bluetooth.BluetoothAdapter#getDefaultAdapter()} method. This returns a
Bluetooth adapter (the Bluetooth radio). There's one Bluetooth adapter for the
entire system, and your application can interact with it using this object. If
{@link android.bluetooth.BluetoothAdapter#getDefaultAdapter()} returns null,
-then the device does not support Bluetooth and your story ends here. For example:</p>
-<pre>
+then the device does not support Bluetooth and your story ends here. For example:</p>
+<pre>
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null) {
// Device does not support Bluetooth
}
-</pre>
-</li>
-
+</pre>
+</li>
+
<li>Enable Bluetooth
<p>Next, you need to ensure that Bluetooth is enabled. Call {@link
android.bluetooth.BluetoothAdapter#isEnabled()} to check whether Bluetooth is
@@ -234,17 +234,17 @@ request that Bluetooth be enabled, call {@link
android.app.Activity#startActivityForResult(Intent,int) startActivityForResult()}
with the {@link android.bluetooth.BluetoothAdapter#ACTION_REQUEST_ENABLE} action Intent.
This will issue a request to enable Bluetooth through the system settings (without
-stopping your application). For example:</p>
-<pre>
+stopping your application). For example:</p>
+<pre>
if (!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
-</pre>
-
+</pre>
+
<p>A dialog will appear requesting user permission to enable Bluetooth, as shown
in Figure 1. If the user responds "Yes," the system will begin to enable Bluetooth
-and focus will return to your application once the process completes (or fails).</p>
+and focus will return to your application once the process completes (or fails).</p>
<p>The {@code REQUEST_ENABLE_BT} constant passed to {@link
android.app.Activity#startActivityForResult(Intent,int) startActivityForResult()} is a locally
@@ -259,9 +259,9 @@ android.app.Activity#onActivityResult(int,int,Intent) onActivityResult()}
callback. If Bluetooth was not enabled
due to an error (or the user responded "No") then the result code is {@link
android.app.Activity#RESULT_CANCELED}.</p>
-</li>
-</ol>
-
+</li>
+</ol>
+
<p>Optionally, your application can also listen for the
{@link android.bluetooth.BluetoothAdapter#ACTION_STATE_CHANGED} broadcast Intent, which
the system will broadcast whenever the Bluetooth state has changed. This broadcast contains
@@ -273,21 +273,21 @@ android.bluetooth.BluetoothAdapter#STATE_ON}, {@link
android.bluetooth.BluetoothAdapter#STATE_TURNING_OFF}, and {@link
android.bluetooth.BluetoothAdapter#STATE_OFF}. Listening for this
broadcast can be useful to detect changes made to the Bluetooth state while your
-app is running.</p>
-
+app is running.</p>
+
<p class="note"><strong>Tip:</strong> Enabling discoverability will automatically
enable Bluetooth. If you plan to consistently enable device discoverability before
performing Bluetooth activity, you can skip
step 2 above. Read about <a href="#EnablingDiscoverability">enabling discoverability</a>,
-below.</p>
-
-
-<h2 id="FindingDevices">Finding Devices</h2>
-
+below.</p>
+
+
+<h2 id="FindingDevices">Finding Devices</h2>
+
<p>Using the {@link android.bluetooth.BluetoothAdapter}, you can find remote Bluetooth
devices either through device discovery or by querying the list of paired (bonded)
-devices.</p>
-
+devices.</p>
+
<p>Device discovery is a scanning procedure that searches the local area for
Bluetooth enabled devices and then requesting some information about each one
(this is sometimes referred to as "discovering," "inquiring" or "scanning").
@@ -296,15 +296,15 @@ request only if it is currently enabled to be discoverable. If a device is
discoverable, it will respond to the discovery request by sharing some
information, such as the device name, class, and its unique MAC address. Using
this information, the device performing discovery can then choose to initiate a
-connection to the discovered device.</p>
-
+connection to the discovered device.</p>
+
<p>Once a connection is made with a remote device for the first time, a pairing
request is automatically presented to the user. When a device is
paired, the basic information about that device (such as the device name, class,
and MAC address) is saved and can be read using the Bluetooth APIs. Using the
known MAC address for a remote device, a connection can be initiated with it at
-any time without performing discovery (assuming the device is within range).</p>
-
+any time without performing discovery (assuming the device is within range).</p>
+
<p>Remember there is a difference between being paired and being connected. To
be paired means that two devices are aware of each other's existence, have a
shared link-key that can be used for authentication, and are capable of
@@ -312,28 +312,28 @@ establishing an encrypted connection with each other. To be connected means that
the devices currently share an RFCOMM channel and are able to transmit data with
each other. The current Android Bluetooth API's require devices to be paired
before an RFCOMM connection can be established. (Pairing is automatically performed
-when you initiate an encrypted connection with the Bluetooth APIs.)</p>
-
+when you initiate an encrypted connection with the Bluetooth APIs.)</p>
+
<p>The following sections describe how to find devices that have been paired, or
-discover new devices using device discovery.</p>
-
+discover new devices using device discovery.</p>
+
<p class="note"><strong>Note:</strong> Android-powered devices are not
discoverable by default. A user can make
the device discoverable for a limited time through the system settings, or an
application can request that the user enable discoverability without leaving the
-application. How to <a href="#EnablingDiscoverability">enable discoverability</a>
-is discussed below.</p>
-
-
-<h3 id="QueryingPairedDevices">Querying paired devices</h3>
-
+application. How to <a href="#EnablingDiscoverability">enable discoverability</a>
+is discussed below.</p>
+
+
+<h3 id="QueryingPairedDevices">Querying paired devices</h3>
+
<p>Before performing device discovery, its worth querying the set
of paired devices to see if the desired device is already known. To do so,
call {@link android.bluetooth.BluetoothAdapter#getBondedDevices()}. This
will return a Set of {@link android.bluetooth.BluetoothDevice}s representing
paired devices. For example, you can query all paired devices and then
-show the name of each device to the user, using an ArrayAdapter:</p>
-<pre>
+show the name of each device to the user, using an ArrayAdapter:</p>
+<pre>
Set&lt;BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
// If there are paired devices
if (pairedDevices.size() > 0) {
@@ -343,24 +343,24 @@ if (pairedDevices.size() > 0) {
mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
}
}
-</pre>
-
+</pre>
+
<p>All that's needed from the {@link android.bluetooth.BluetoothDevice} object
in order to initiate a connection is the MAC address. In this example, it's saved
as a part of an ArrayAdapter that's shown to the user. The MAC address can later
be extracted in order to initiate the connection. You can learn more about creating
-a connection in the section about <a href="#ConnectingDevices">Connecting Devices</a>.</p>
-
-
-<h3 id="DiscoveringDevices">Discovering devices</h3>
-
+a connection in the section about <a href="#ConnectingDevices">Connecting Devices</a>.</p>
+
+
+<h3 id="DiscoveringDevices">Discovering devices</h3>
+
<p>To start discovering devices, simply call {@link
android.bluetooth.BluetoothAdapter#startDiscovery()}. The
process is asynchronous and the method will immediately return with a boolean
indicating whether discovery has successfully started. The discovery process
usually involves an inquiry scan of about 12 seconds, followed by a page scan of
-each found device to retrieve its Bluetooth name.</p>
-
+each found device to retrieve its Bluetooth name.</p>
+
<p>Your application must register a BroadcastReceiver for the
{@link android.bluetooth.BluetoothDevice#ACTION_FOUND} Intent in
order to receive information about each
@@ -371,8 +371,8 @@ Intent carries the extra fields
{@link android.bluetooth.BluetoothDevice#EXTRA_CLASS}, containing a
{@link android.bluetooth.BluetoothDevice} and a {@link
android.bluetooth.BluetoothClass}, respectively. For example, here's how you can
-register to handle the broadcast when devices are discovered:</p>
-<pre>
+register to handle the broadcast when devices are discovered:</p>
+<pre>
// Create a BroadcastReceiver for ACTION_FOUND
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
@@ -389,15 +389,15 @@ private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
// Register the BroadcastReceiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy
-</pre>
-
+</pre>
+
<p>All that's needed from the {@link android.bluetooth.BluetoothDevice} object
in order to initiate a
connection is the MAC address. In this example, it's saved as a part of an
ArrayAdapter that's shown to the user. The MAC address can later be extracted in
order to initiate the connection. You can learn more about creating a connection
-in the section about <a href="#ConnectingDevices">Connecting Devices</a>.</p>
-
+in the section about <a href="#ConnectingDevices">Connecting Devices</a>.</p>
+
<p class="caution"><strong>Caution:</strong> Performing device discovery is
a heavy procedure for the Bluetooth
adapter and will consume a lot of its resources. Once you have found a device to
@@ -406,10 +406,10 @@ connect, be certain that you always stop discovery with
attempting a connection. Also, if you
already hold a connection with a device, then performing discovery can
significantly reduce the bandwidth available for the connection, so you should
-not perform discovery while connected.</p>
-
-<h4 id="EnablingDiscoverability">Enabling discoverability</h4>
-
+not perform discovery while connected.</p>
+
+<h4 id="EnablingDiscoverability">Enabling discoverability</h4>
+
<p>If you would like to make the local device discoverable to other devices,
call {@link android.app.Activity#startActivityForResult(Intent,int)} with the
{@link android.bluetooth.BluetoothAdapter#ACTION_REQUEST_DISCOVERABLE} action
@@ -420,30 +420,30 @@ discoverable for 120 seconds. You can define a different duration by adding the
extra. The maximum duration an app can set is 3600 seconds, and a value of 0
means the device is always discoverable. Any value below 0 or above 3600 is
automatically set to 120 secs). For example, this snippet sets the duration to
-300:</p>
+300:</p>
<pre>Intent discoverableIntent = new
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(discoverableIntent);
-</pre>
-
-<div class="figure" style="width:200px">
-<img src="{@docRoot}images/bt_enable_discoverable.png" />
+</pre>
+
+<div class="figure" style="width:200px">
+<img src="{@docRoot}images/bt_enable_discoverable.png" />
<strong>Figure 2:</strong> The enabling discoverability dialog.
-</div>
-
+</div>
+
<p>A dialog will be displayed, requesting user permission to make the device
discoverable, as shown in Figure 2. If the user responds "Yes," then the device
will become discoverable for the specified amount of time. Your activity will
then receive a call to the {@link android.app.Activity#onActivityResult(int,int,Intent)
onActivityResult())} callback, with the result code equal to the duration that the device
is discoverable. If the user responded "No" or if an error occurred, the result code will
-be {@link android.app.Activity#RESULT_CANCELED}.</p>
-
+be {@link android.app.Activity#RESULT_CANCELED}.</p>
+
<p class="note"><strong>Note:</strong> If Bluetooth has not been enabled on the device,
-then enabling device discoverability will automatically enable Bluetooth.</p>
-
+then enabling device discoverability will automatically enable Bluetooth.</p>
+
<p>The device will silently remain in discoverable mode for the allotted time.
If you would like to be notified when the discoverable mode has changed, you can
register a BroadcastReceiver for the {@link
@@ -457,18 +457,18 @@ new and old scan mode, respectively. Possible values for each are
android.bluetooth.BluetoothAdapter#SCAN_MODE_NONE},
which indicate that the device is either in discoverable mode, not in
discoverable mode but still able to receive connections, or not in discoverable
-mode and unable to receive connections, respectively.</p>
-
+mode and unable to receive connections, respectively.</p>
+
<p>You do not need to enable device discoverability if you will be initiating
the connection to a remote device. Enabling discoverability is only necessary when
you want your application to host a server socket that will accept incoming
connections, because the remote devices must be able to discover the device
-before it can initiate the connection.</p>
-
-
-
-<h2 id="ConnectingDevices">Connecting Devices</h2>
-
+before it can initiate the connection.</p>
+
+
+
+<h2 id="ConnectingDevices">Connecting Devices</h2>
+
<p>In order to create a connection between your application on two devices, you
must implement both the server-side and client-side mechanisms, because one
device must open a server socket and the other one must initiate the connection
@@ -478,36 +478,36 @@ client are considered connected to each other when they each have a connected
point, each device can obtain input and output streams and data transfer can
begin, which is discussed in the section about <a
href="#ManagingAConnection">Managing a Connection</a>. This section describes how
-to initiate the connection between two devices.</p>
-
+to initiate the connection between two devices.</p>
+
<p>The server device and the client device each obtain the required {@link
android.bluetooth.BluetoothSocket} in different ways. The server will receive it
when an incoming connection is accepted. The client will receive it when it
-opens an RFCOMM channel to the server.</p>
-
-<div class="figure" style="width:200px">
-<img src="{@docRoot}images/bt_pairing_request.png" />
+opens an RFCOMM channel to the server.</p>
+
+<div class="figure" style="width:200px">
+<img src="{@docRoot}images/bt_pairing_request.png" />
<strong>Figure 3:</strong> The Bluetooth pairing dialog.
-</div>
-
+</div>
+
<p>One implementation technique is to automatically prepare each device as a
server, so that each one has a server socket open and listening for connections.
Then either device can initiate a connection with the other and become the
client. Alternatively, one device can explicitly "host" the connection and open
a server socket on demand and the other device can simply initiate the
-connection.</p>
-
+connection.</p>
+
<p class="note"><strong>Note:</strong> If the two devices have not been previously paired,
then the Android framework will automatically show a pairing request notification or
dialog to the user during the connection procedure, as shown in Figure 3. So
when attempting to connect devices,
your application does not need to be concerned about whether or not the devices are
paired. Your RFCOMM connection attempt will block until the user has successfully paired,
-or will fail if the user rejects pairing, or if pairing fails or times out. </p>
-
-
-<h3 id="ConnectingAsAServer">Connecting as a server</h3>
-
+or will fail if the user rejects pairing, or if pairing fails or times out. </p>
+
+
+<h3 id="ConnectingAsAServer">Connecting as a server</h3>
+
<p>When you want to connect two devices, one must act as a server by holding an
open {@link android.bluetooth.BluetoothServerSocket}. The purpose of the server
socket is to listen for incoming connection requests and when one is accepted,
@@ -515,26 +515,26 @@ provide a connected {@link android.bluetooth.BluetoothSocket}. When the {@link
android.bluetooth.BluetoothSocket} is acquired from the {@link
android.bluetooth.BluetoothServerSocket},
the {@link android.bluetooth.BluetoothServerSocket} can (and should) be
-discarded, unless you want to accept more connections.</p>
-
-<div class="sidebox-wrapper">
-<div class="sidebox">
-<h2>About UUID</h2>
-
+discarded, unless you want to accept more connections.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>About UUID</h2>
+
<p>A Universally Unique Identifier (UUID) is a standardized 128-bit format for a string
ID used to uniquely identify information. The point of a UUID is that it's big
enough that you can select any random and it won't clash. In this case, it's
used to uniquely identify your application's Bluetooth service. To get a UUID to
use with your application, you can use one of the many random UUID generators on
the web, then initialize a {@link java.util.UUID} with {@link
-java.util.UUID#fromString(String)}.</p>
-</div>
-</div>
-
+java.util.UUID#fromString(String)}.</p>
+</div>
+</div>
+
<p>Here's the basic procedure to set up a server socket and accept a
-connection:</p>
-
-<ol>
+connection:</p>
+
+<ol>
<li>Get a {@link android.bluetooth.BluetoothServerSocket} by calling the
{@link
android.bluetooth.BluetoothAdapter#listenUsingRfcommWithServiceRecord(String,
@@ -546,9 +546,9 @@ UUID is also included in the SDP entry and will be the basis for the connection
agreement with the client device. That is, when the client attempts to connect
with this device, it will carry a UUID that uniquely identifies the service with
which it wants to connect. These UUIDs must match in order for the connection to
-be accepted (in the next step).</p>
-</li>
-
+be accepted (in the next step).</p>
+</li>
+
<li>Start listening for connection requests by calling
{@link android.bluetooth.BluetoothServerSocket#accept()}.
<p>This is a blocking call. It will return when either a connection has been
@@ -556,9 +556,9 @@ accepted or an exception has occurred. A connection is accepted only when a
remote device has sent a connection request with a UUID matching the one
registered with this listening server socket. When successful, {@link
android.bluetooth.BluetoothServerSocket#accept()} will
-return a connected {@link android.bluetooth.BluetoothSocket}.</p>
-</li>
-
+return a connected {@link android.bluetooth.BluetoothSocket}.</p>
+</li>
+
<li>Unless you want to accept additional connections, call
{@link android.bluetooth.BluetoothServerSocket#close()}.
<p>This releases the server socket and all its resources, but does <em>not</em> close the
@@ -567,10 +567,10 @@ android.bluetooth.BluetoothServerSocket#accept()}. Unlike TCP/IP, RFCOMM only al
connected client per channel at a time, so in most cases it makes sense to call {@link
android.bluetooth.BluetoothServerSocket#close()} on the {@link
android.bluetooth.BluetoothServerSocket} immediately after accepting a connected
-socket.</p>
-</li>
-</ol>
-
+socket.</p>
+</li>
+</ol>
+
<p>The {@link android.bluetooth.BluetoothServerSocket#accept()} call should not
be executed in the main activity UI thread because it is a blocking call and
will prevent any other interaction with the application. It usually makes
@@ -583,16 +583,16 @@ android.bluetooth.BluetoothServerSocket} (or {@link
android.bluetooth.BluetoothSocket}) from another thread and the blocked call will
immediately return. Note that all methods on a {@link
android.bluetooth.BluetoothServerSocket} or {@link android.bluetooth.BluetoothSocket}
-are thread-safe.</p>
-
-<h4>Example</h4>
-
+are thread-safe.</p>
+
+<h4>Example</h4>
+
<p>Here's a simplified thread for the server component that accepts incoming
-connections:</p>
-<pre>
+connections:</p>
+<pre>
private class AcceptThread extends Thread {
private final BluetoothServerSocket mmServerSocket;
-
+
public AcceptThread() {
// Use a temporary object that is later assigned to mmServerSocket,
// because mmServerSocket is final
@@ -603,7 +603,7 @@ private class AcceptThread extends Thread {
} catch (IOException e) { }
mmServerSocket = tmp;
}
-
+
public void run() {
BluetoothSocket socket = null;
// Keep listening until exception occurs or a socket is returned
@@ -622,7 +622,7 @@ private class AcceptThread extends Thread {
}
}
}
-
+
/** Will cancel the listening socket, and cause the thread to finish */
public void cancel() {
try {
@@ -630,37 +630,37 @@ private class AcceptThread extends Thread {
} catch (IOException e) { }
}
}
-</pre>
-
+</pre>
+
<p>In this example, only one incoming connection is desired, so as soon as a
connection is accepted and the {@link android.bluetooth.BluetoothSocket} is
acquired, the application
sends the acquired {@link android.bluetooth.BluetoothSocket} to a separate
thread, closes the
-{@link android.bluetooth.BluetoothServerSocket} and breaks the loop.</p>
-
+{@link android.bluetooth.BluetoothServerSocket} and breaks the loop.</p>
+
<p>Note that when {@link android.bluetooth.BluetoothServerSocket#accept()}
returns the {@link android.bluetooth.BluetoothSocket}, the socket is already
connected, so you should <em>not</em> call {@link
android.bluetooth.BluetoothSocket#connect()} (as you do from the
-client-side).</p>
-
+client-side).</p>
+
<p><code>manageConnectedSocket()</code> is a fictional method in the application
that will
initiate the thread for transferring data, which is discussed in the section
-about <a href="#ManagingAConnection">Managing a Connection</a>.</p>
-
+about <a href="#ManagingAConnection">Managing a Connection</a>.</p>
+
<p>You should usually close your {@link android.bluetooth.BluetoothServerSocket}
as soon as you are done listening for incoming connections. In this example, {@link
android.bluetooth.BluetoothServerSocket#close()} is called as soon
as the {@link android.bluetooth.BluetoothSocket} is acquired. You may also want
to provide a public method in your thread that can close the private {@link
android.bluetooth.BluetoothSocket} in the event that you need to stop listening on the
-server socket.</p>
-
-
-<h3 id="ConnectingAsAClient">Connecting as a client</h3>
-
+server socket.</p>
+
+
+<h3 id="ConnectingAsAClient">Connecting as a client</h3>
+
<p>In order to initiate a connection with a remote device (a device holding an
open
server socket), you must first obtain a {@link
@@ -669,11 +669,11 @@ android.bluetooth.BluetoothDevice} object that represents the remote device.
section about <a
href="#FindingDevices">Finding Devices</a>.) You must then use the
{@link android.bluetooth.BluetoothDevice} to acquire a {@link
-android.bluetooth.BluetoothSocket} and initiate the connection.</p>
-
-<p>Here's the basic procedure:</p>
-
-<ol>
+android.bluetooth.BluetoothSocket} and initiate the connection.</p>
+
+<p>Here's the basic procedure:</p>
+
+<ol>
<li>Using the {@link android.bluetooth.BluetoothDevice}, get a {@link
android.bluetooth.BluetoothSocket} by calling {@link
android.bluetooth.BluetoothDevice#createRfcommSocketToServiceRecord(UUID)}.
@@ -684,9 +684,9 @@ must match the UUID used by the server device when it opened its
android.bluetooth.BluetoothAdapter#listenUsingRfcommWithServiceRecord(String,
UUID)}). Using the same UUID is simply a matter of hard-coding the UUID string
into your application and then referencing it from both the server and client
-code.</p>
-</li>
-
+code.</p>
+</li>
+
<li>Initiate the connection by calling {@link
android.bluetooth.BluetoothSocket#connect()}.
<p>Upon this call, the system will perform an SDP lookup on the remote device in
@@ -697,34 +697,34 @@ android.bluetooth.BluetoothSocket#connect()} will return. This method is a
blocking call. If, for
any reason, the connection fails or the {@link
android.bluetooth.BluetoothSocket#connect()} method times out (after about
-12 seconds), then it will throw an exception.</p>
+12 seconds), then it will throw an exception.</p>
<p>Because {@link
android.bluetooth.BluetoothSocket#connect()} is a blocking call, this connection
procedure should always be performed in a thread separate from the main activity
-thread.</p>
+thread.</p>
<p class="note">Note: You should always ensure that the device is not performing
device discovery when you call {@link
android.bluetooth.BluetoothSocket#connect()}. If discovery is in progress, then
the
-connection attempt will be significantly slowed and is more likely to fail.</p>
-</li>
-</ol>
-
-<h4>Example</h4>
-
+connection attempt will be significantly slowed and is more likely to fail.</p>
+</li>
+</ol>
+
+<h4>Example</h4>
+
<p>Here is a basic example of a thread that initiates a Bluetooth
-connection:</p>
-<pre>
+connection:</p>
+<pre>
private class ConnectThread extends Thread {
private final BluetoothSocket mmSocket;
private final BluetoothDevice mmDevice;
-
+
public ConnectThread(BluetoothDevice device) {
// Use a temporary object that is later assigned to mmSocket,
// because mmSocket is final
BluetoothSocket tmp = null;
mmDevice = device;
-
+
// Get a BluetoothSocket to connect with the given BluetoothDevice
try {
// MY_UUID is the app's UUID string, also used by the server code
@@ -732,11 +732,11 @@ private class ConnectThread extends Thread {
} catch (IOException e) { }
mmSocket = tmp;
}
-
+
public void run() {
// Cancel discovery because it will slow down the connection
mBluetoothAdapter.cancelDiscovery();
-
+
try {
// Connect the device through the socket. This will block
// until it succeeds or throws an exception
@@ -748,11 +748,11 @@ private class ConnectThread extends Thread {
} catch (IOException closeException) { }
return;
}
-
+
// Do work to manage the connection (in a separate thread)
manageConnectedSocket(mmSocket);
}
-
+
/** Will cancel an in-progress connection, and close the socket */
public void cancel() {
try {
@@ -760,42 +760,42 @@ private class ConnectThread extends Thread {
} catch (IOException e) { }
}
}
-</pre>
-
+</pre>
+
<p>Notice that {@link android.bluetooth.BluetoothAdapter#cancelDiscovery()} is called
before the connection is made. You should always do this before connecting and it is safe
to call without actually checking whether it is running or not (but if you do want to
-check, call {@link android.bluetooth.BluetoothAdapter#isDiscovering()}).</p>
-
+check, call {@link android.bluetooth.BluetoothAdapter#isDiscovering()}).</p>
+
<p><code>manageConnectedSocket()</code> is a fictional method in the application
that will initiate the thread for transferring data, which is discussed in the section
-about <a href="#ManagingAConnection">Managing a Connection</a>.</p>
-
+about <a href="#ManagingAConnection">Managing a Connection</a>.</p>
+
<p>When you're done with your {@link android.bluetooth.BluetoothSocket}, always
call {@link android.bluetooth.BluetoothSocket#close()} to clean up.
Doing so will immediately close the connected socket and clean up all internal
-resources.</p>
-
-
-<h2 id="ManagingAConnection">Managing a Connection</h2>
-
+resources.</p>
+
+
+<h2 id="ManagingAConnection">Managing a Connection</h2>
+
<p>When you have successfully connected two (or more) devices, each one will
have a connected {@link android.bluetooth.BluetoothSocket}. This is where the fun
begins because you can share data between devices. Using the {@link
android.bluetooth.BluetoothSocket}, the general procedure to transfer arbitrary data is
-simple:</p>
-<ol>
+simple:</p>
+<ol>
<li>Get the {@link java.io.InputStream} and {@link java.io.OutputStream} that
handle transmissions through the socket, via {@link
android.bluetooth.BluetoothSocket#getInputStream()} and
-{@link android.bluetooth.BluetoothSocket#getOutputStream}, respectively.</li>
-
+{@link android.bluetooth.BluetoothSocket#getOutputStream}, respectively.</li>
+
<li>Read and write data to the streams with {@link
-java.io.InputStream#read(byte[])} and {@link java.io.OutputStream#write(byte[])}.</li>
-</ol>
-
-<p>That's it.</p>
-
+java.io.InputStream#read(byte[])} and {@link java.io.OutputStream#write(byte[])}.</li>
+</ol>
+
+<p>That's it.</p>
+
<p>There are, of course, implementation details to consider. First and foremost,
you should use a dedicated thread for all stream reading and writing. This is
important because both {@link java.io.InputStream#read(byte[])} and {@link
@@ -806,37 +806,37 @@ block, but can block for flow control if the remote device is not calling {@link
java.io.InputStream#read(byte[])} quickly enough and the intermediate buffers are full.
So, your main loop in the thread should be dedicated to reading from the {@link
java.io.InputStream}. A separate public method in the thread can be used to initiate
-writes to the {@link java.io.OutputStream}.</p>
-
-<h4>Example</h4>
-
-<p>Here's an example of how this might look:</p>
-<pre>
+writes to the {@link java.io.OutputStream}.</p>
+
+<h4>Example</h4>
+
+<p>Here's an example of how this might look:</p>
+<pre>
private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream;
-
+
public ConnectedThread(BluetoothSocket socket) {
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
-
+
// Get the input and output streams, using temp objects because
// member streams are final
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) { }
-
+
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
-
+
public void run() {
byte[] buffer = new byte[1024]; // buffer store for the stream
int bytes; // bytes returned from read()
-
+
// Keep listening to the InputStream until an exception occurs
while (true) {
try {
@@ -850,14 +850,14 @@ private class ConnectedThread extends Thread {
}
}
}
-
+
/* Call this from the main activity to send data to the remote device */
public void write(byte[] bytes) {
try {
mmOutStream.write(bytes);
} catch (IOException e) { }
}
-
+
/* Call this from the main activity to shutdown the connection */
public void cancel() {
try {
@@ -865,44 +865,44 @@ private class ConnectedThread extends Thread {
} catch (IOException e) { }
}
}
-</pre>
-
+</pre>
+
<p>The constructor acquires the necessary streams and once executed, the thread
will wait for data to come through the InputStream. When {@link
java.io.InputStream#read(byte[])} returns with
bytes from the stream, the data is sent to the main activity using a member
Handler from the parent class. Then it goes back and waits for more bytes from
-the stream.</p>
-
+the stream.</p>
+
<p>Sending outgoing data is as simple as calling the thread's
<code>write()</code> method from the main activity and passing in the bytes to
be sent. This method then simply calls {@link
-java.io.OutputStream#write(byte[])} to send the data to the remote device.</p>
-
+java.io.OutputStream#write(byte[])} to send the data to the remote device.</p>
+
<p>The thread's <code>cancel()</code> method is important so that the connection
can be
terminated at any time by closing the {@link android.bluetooth.BluetoothSocket}.
This should always be called when you're done using the Bluetooth
-connection.</p>
-
-<div class="special">
+connection.</p>
+
+<div class="special">
<p>For a demonstration of using the Bluetooth APIs, see the <a
-href="{@docRoot}resources/samples/BluetoothChat/index.html">Bluetooth Chat sample app</a>.</p>
-</div>
+href="{@docRoot}resources/samples/BluetoothChat/index.html">Bluetooth Chat sample app</a>.</p>
+</div>
-<h2 id="Profiles">Working with Profiles</h2>
+<h2 id="Profiles">Working with Profiles</h2>
<p>Starting in Android 3.0, the Bluetooth API includes support for working with
Bluetooth profiles. A <em>Bluetooth profile</em> is a wireless interface
specification for Bluetooth-based communication between devices. An example
is the Hands-Free profile. For a mobile phone to connect to a wireless headset,
-both devices must support the Hands-Free profile. </p>
+both devices must support the Hands-Free profile. </p>
<p>You can implement the interface {@link android.bluetooth.BluetoothProfile} to write
your own classes to support a particular Bluetooth profile. The Android
Bluetooth API provides implementations for the following Bluetooth
-profiles:</p>
-<ul>
+profiles:</p>
+<ul>
<li><strong>Headset</strong>. The Headset profile provides support for
Bluetooth headsets to be used with mobile phones. Android provides the {@link
@@ -917,7 +917,7 @@ For more discussion of this topic, see <a href="#AT-Commands">Vendor-specific AT
profile defines how high quality audio can be streamed from one device to
another over a Bluetooth connection. Android provides the {@link
android.bluetooth.BluetoothA2dp} class, which is a proxy for controlling
-the Bluetooth A2DP Service via IPC.</li>
+the Bluetooth A2DP Service via IPC.</li>
<li><strong>Health Device</strong>. Android 4.0 (API level 14) introduces
support for the Bluetooth Health Device Profile (HDP). This lets you create
@@ -928,50 +928,50 @@ specialization codes, refer to <strong>Bluetooth Assigned Numbers</strong> at <a
href="http://www.bluetooth.org">www.bluetooth.org</a>. Note that these values
are also referenced in the ISO/IEEE 11073-20601 [7] specification as
MDC_DEV_SPEC_PROFILE_* in the Nomenclature Codes Annex. For more discussion of
-HDP, see <a href="#HDP">Health Device Profile</a>.</li>
+HDP, see <a href="#HDP">Health Device Profile</a>.</li>
-</ul>
+</ul>
-<p>Here are the basic steps for working with a profile:</p>
-<ol>
+<p>Here are the basic steps for working with a profile:</p>
+<ol>
<li>Get the default adapter, as described in
<a href="{@docRoot}guide/topics/connectivity/bluetooth.html#SettingUp">Setting Up
- Bluetooth</a>.</li>
+ Bluetooth</a>.</li>
<li>Use {@link
android.bluetooth.BluetoothAdapter#getProfileProxy(android.content.Context,
android.bluetooth.BluetoothProfile.ServiceListener, int) getProfileProxy()} to
establish a connection to the profile proxy object associated with the profile.
In the example below, the profile proxy object is an instance of {@link
-android.bluetooth.BluetoothHeadset}. </li>
+android.bluetooth.BluetoothHeadset}. </li>
<li>Set up a {@link android.bluetooth.BluetoothProfile.ServiceListener}. This
listener notifies {@link android.bluetooth.BluetoothProfile} IPC clients when
-they have been connected to or disconnected from the service.</li>
+they have been connected to or disconnected from the service.</li>
<li>In {@link
android.bluetooth.BluetoothProfile.ServiceListener#onServiceConnected(int,
android.bluetooth.BluetoothProfile) onServiceConnected()}, get a handle
-to the profile proxy object.</li>
+to the profile proxy object.</li>
<li>Once you have the profile proxy object, you can use it to monitor the
state of the connection and perform other operations that are relevant to that
-profile.</li>
-</ol>
+profile.</li>
+</ol>
<p> For example, this code snippet shows how to connect to a {@link
android.bluetooth.BluetoothHeadset} proxy object so that you can control the
-Headset profile:</p>
+Headset profile:</p>
<pre>BluetoothHeadset mBluetoothHeadset;
-
+
// Get the default adapter
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
-
+
// Establish connection to the proxy.
mBluetoothAdapter.getProfileProxy(context, mProfileListener, BluetoothProfile.HEADSET);
-
+
private BluetoothProfile.ServiceListener mProfileListener = new BluetoothProfile.ServiceListener() {
public void onServiceConnected(int profile, BluetoothProfile proxy) {
if (profile == BluetoothProfile.HEADSET) {
@@ -984,16 +984,16 @@ private BluetoothProfile.ServiceListener mProfileListener = new BluetoothProfile
}
}
};
-
+
// ... call functions on mBluetoothHeadset
-
+
// Close proxy connection after use.
mBluetoothAdapter.closeProfileProxy(mBluetoothHeadset);
-</pre>
+</pre>
-<h3 id="AT-Commands">Vendor-specific AT commands</h3>
+<h3 id="AT-Commands">Vendor-specific AT commands</h3>
<p>Starting in Android 3.0, applications can register to receive system
broadcasts of pre-defined vendor-specific AT commands sent by headsets (such as
@@ -1060,7 +1060,7 @@ android.bluetooth.BluetoothProfile.ServiceListener#HEALTH} profile type to
establish a connection with the profile proxy object.</p> </li>
<li>Create a {@link android.bluetooth.BluetoothHealthCallback} and register an
-application configuration
+application configuration
({@link android.bluetooth.BluetoothHealthAppConfiguration})
that acts as a health
sink.</li>
diff --git a/docs/html/guide/topics/connectivity/nfc/index.jd b/docs/html/guide/topics/connectivity/nfc/index.jd
index f12facf75ecc..bc4f075c71f7 100644
--- a/docs/html/guide/topics/connectivity/nfc/index.jd
+++ b/docs/html/guide/topics/connectivity/nfc/index.jd
@@ -17,12 +17,12 @@ page.title=Near Field Communication
<p>Android-powered devices with NFC simultaneously support three main modes of operation:</p>
<ol>
-<li><strong>Reader/writer mode</strong>, allowing the NFC device to read and/or write
+<li><strong>Reader/writer mode</strong>, allowing the NFC device to read and/or write
passive NFC tags and stickers.</li>
-<li><strong>P2P mode</strong>, allowing the NFC device to exchange data with other NFC
+<li><strong>P2P mode</strong>, allowing the NFC device to exchange data with other NFC
peers; this operation mode is used by Android Beam.</li>
-<li><strong>Card emulation mode</strong>, allowing the NFC device itself to act as an NFC
-card. The emulated NFC card can then be accessed by an external NFC reader,
+<li><strong>Card emulation mode</strong>, allowing the NFC device itself to act as an NFC
+card. The emulated NFC card can then be accessed by an external NFC reader,
such as an NFC point-of-sale terminal.</li>
</ol>
diff --git a/docs/html/guide/topics/connectivity/sip.jd b/docs/html/guide/topics/connectivity/sip.jd
index d754894741e7..d8d6d277bbf9 100755
--- a/docs/html/guide/topics/connectivity/sip.jd
+++ b/docs/html/guide/topics/connectivity/sip.jd
@@ -12,10 +12,10 @@ page.tags=sipmanager,sipprofile,sipaudiocall,telephony
<li><a href="#manager">Creating a SIP Manager</a></li>
<li><a href="#profiles">Registering with a SIP Server</a></li>
<li><a href="#audio">Making an Audio Call</a></li>
- <li><a href="#receiving">Receiving Calls</a></li>
+ <li><a href="#receiving">Receiving Calls</a></li>
<li><a href="#testing">Testing SIP Applications</a></li>
</ol>
-
+
<h2>Key classes</h2>
<ol>
<li>{@link android.net.sip.SipManager}</li>
@@ -23,7 +23,7 @@ page.tags=sipmanager,sipprofile,sipaudiocall,telephony
<li>{@link android.net.sip.SipAudioCall}</li>
</ol>
-
+
<h2>Related samples</h2>
<ol>
<li> <a href="{@docRoot}resources/samples/SipDemo/index.html"> SipDemo</a></li>
@@ -46,9 +46,9 @@ record or playback directly.</p>
<h2 id="requirements">Requirements and Limitations</h2>
<p>Here are the requirements for developing a SIP application:</p>
<ul>
-
+
<li>You must have a mobile device that is running Android 2.3 or higher. </li>
-
+
<li>SIP runs over a wireless data connection, so your device must have a data
connection (with a mobile data service or Wi-Fi)</span>. This means that you
can't test on AVD&#8212;you can only test on a physical device. For details, see
@@ -139,7 +139,7 @@ capable of supporting SIP, add the following to your application's
manifest:</p>
<ul>
- <li><code>&lt;uses-sdk android:minSdkVersion=&quot;9&quot; /&gt;</code>. This
+ <li><code>&lt;uses-sdk android:minSdkVersion=&quot;9&quot; /&gt;</code>. This
indicates that your application requires Android 2.3 or higher. For more
information, see <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API
Levels</a> and the documentation for the <a
@@ -162,7 +162,7 @@ may also be needed, depending on your implementation. For more information,
see the documentation for the <a
href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-
feature&gt;</a> element.</li>
-
+
</ul>
<p>If your application is designed to receive calls, you must also define a receiver ({@link android.content.BroadcastReceiver} subclass) in the application's manifest: </p>
@@ -261,7 +261,7 @@ public void onRegistering(String localProfileUri) {
public void onRegistrationDone(String localProfileUri, long expiryTime) {
updateStatus(&quot;Ready&quot;);
}
-
+
public void onRegistrationFailed(String localProfileUri, int errorCode,
String errorMessage) {
updateStatus(&quot;Registration failed. Please check settings.&quot;);
@@ -291,8 +291,8 @@ example:</p>
<li>A {@link android.net.sip.SipProfile} that is making the call (the
&quot;local profile&quot;), and a valid SIP address to receive the call (the
-&quot;peer profile&quot;).
-
+&quot;peer profile&quot;).
+
<li>A {@link android.net.sip.SipManager} object. </li>
</ul>
@@ -304,7 +304,7 @@ established:</p>
<pre>
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
-
+
&#64;Override
public void onCallEstablished(SipAudioCall call) {
call.startAudio();
@@ -312,7 +312,7 @@ SipAudioCall.Listener listener = new SipAudioCall.Listener() {
call.toggleMute();
...
}
-
+
&#64;Override
public void onCallEnded(SipAudioCall call) {
// Do something.
@@ -326,12 +326,12 @@ make the call. The {@link android.net.sip.SipManager} method
<ul>
<li>A local SIP profile (the caller).</li>
<li>A peer SIP profile (the user being called).</li>
-
+
<li>A {@link android.net.sip.SipAudioCall.Listener} to listen to the call
events from {@link android.net.sip.SipAudioCall}. This can be <code>null</code>,
but as shown above, the listener is used to set things up once the call is
established.</li>
-
+
<li>The timeout value, in seconds.</li>
</ul>
<p>For example:</p>
@@ -349,15 +349,15 @@ your application:</p>
<code>&lt;receiver&gt;</code>. In <strong>SipDemo</strong>, this is
<code>&lt;receiver android:name=&quot;.IncomingCallReceiver&quot;
android:label=&quot;Call Receiver&quot;/&gt;</code>.</li>
-
+
<li>Implement the receiver, which is a subclass of {@link
android.content.BroadcastReceiver}. In <strong>SipDemo</strong>, this is
<code>IncomingCallReceiver</code>.</li>
-
+
<li>Initialize the local profile ({@link android.net.sip.SipProfile}) with a
pending intent that fires your receiver when someone calls the local profile.
</li>
-
+
<li>Set up an intent filter that filters by the action that represents an
incoming call. In <strong>SipDemo</strong>, this action is
<code>android.SipDemo.INCOMING_CALL</code>. </li>
@@ -427,16 +427,16 @@ action string provided by the application. In SipDemo, this action string is
android.net.sip.SipProfile} object gets created with a pending intent based on
the action string <code>android.SipDemo.INCOMING_CALL</code>. The
<code>PendingIntent</code> object will perform a broadcast when the {@link
-android.net.sip.SipProfile} receives a call:</p>
+android.net.sip.SipProfile} receives a call:</p>
<pre>
public SipManager mSipManager = null;
public SipProfile mSipProfile = null;
...
-Intent intent = new Intent();
-intent.setAction(&quot;android.SipDemo.INCOMING_CALL&quot;);
-PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, Intent.FILL_IN_DATA);
+Intent intent = new Intent();
+intent.setAction(&quot;android.SipDemo.INCOMING_CALL&quot;);
+PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, Intent.FILL_IN_DATA);
mSipManager.open(mSipProfile, pendingIntent, null);</pre>
<p>The broadcast will be intercepted by the intent filter, which will then fire
@@ -485,8 +485,8 @@ href="{@docRoot}tools/device.html">Developing on a Device</a>.</li>
href="{@docRoot}tools/device.html">Developing on a Device</a>.</li>
<li>If you are using Android Studio, you can view the application log output by
-opening the Event Log console (<strong>View > Tool Windows > Event Log</strong>).
-<li>Ensure your application is configured to launch Logcat automatically when it runs:
+opening the Event Log console (<strong>View > Tool Windows > Event Log</strong>).
+<li>Ensure your application is configured to launch Logcat automatically when it runs:
<ol TYPE=a>
<li>Select <strong>Run > Edit Configurations</strong>.
<li>Select the <strong>Miscellaneous</strong> tab in the <strong>Run/Debug Configurations</strong> window.
diff --git a/docs/html/guide/topics/connectivity/usb/accessory.jd b/docs/html/guide/topics/connectivity/usb/accessory.jd
index a2177678fc56..3942b3a951b9 100644
--- a/docs/html/guide/topics/connectivity/usb/accessory.jd
+++ b/docs/html/guide/topics/connectivity/usb/accessory.jd
@@ -169,7 +169,7 @@ UsbAccessory accessory = (UsbAccessory) intent.getParcelableExtra(UsbManager.EXT
include a <code>&lt;uses-feature&gt;</code> element that declares that your application uses
the <code>android.hardware.usb.accessory</code> feature.</li>
- <li>If you are using the
+ <li>If you are using the
<a href="http://code.google.com/android/add-ons/google-apis/index.html">add-on library</a>,
add the <code>&lt;uses-library&gt;</code> element specifying
<code>com.android.future.usb.accessory</code> for the library.</li>
@@ -347,7 +347,7 @@ UsbAccessory[] accessoryList = manager.getAcccessoryList();
private static final String ACTION_USB_PERMISSION =
"com.android.example.USB_PERMISSION";
private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
-
+
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ACTION_USB_PERMISSION.equals(action)) {
@@ -444,7 +444,7 @@ private void openAccessory() {
<pre>
BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
+ String action = intent.getAction();
if (UsbManager.ACTION_USB_ACCESSORY_DETACHED.equals(action)) {
UsbAccessory accessory = (UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
diff --git a/docs/html/guide/topics/connectivity/usb/host.jd b/docs/html/guide/topics/connectivity/usb/host.jd
index d2194e6d6f6d..856027d09d7f 100644
--- a/docs/html/guide/topics/connectivity/usb/host.jd
+++ b/docs/html/guide/topics/connectivity/usb/host.jd
@@ -263,7 +263,7 @@ UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE
obtain a device from the map.</p>
<pre>
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
-...
+...
HashMap&lt;String, UsbDevice&gt; deviceList = manager.getDeviceList();
UsbDevice device = deviceList.get("deviceName");
</pre>
@@ -317,7 +317,7 @@ private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
if(device != null){
//call method to set up device communication
}
- }
+ }
else {
Log.d(TAG, "permission denied for device " + device);
}
@@ -396,7 +396,7 @@ private boolean forceClaim = true;
UsbInterface intf = device.getInterface(0);
UsbEndpoint endpoint = intf.getEndpoint(0);
-UsbDeviceConnection connection = mUsbManager.openDevice(device);
+UsbDeviceConnection connection = mUsbManager.openDevice(device);
connection.claimInterface(intf, forceClaim);
connection.bulkTransfer(endpoint, bytes, bytes.length, TIMEOUT); //do in another thread
</pre>
@@ -422,7 +422,7 @@ connection.bulkTransfer(endpoint, bytes, bytes.length, TIMEOUT); //do in another
<pre>
BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
+ String action = intent.getAction();
if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
diff --git a/docs/html/guide/topics/connectivity/wifip2p.jd b/docs/html/guide/topics/connectivity/wifip2p.jd
index d7e1269696cf..b8eb40ea5014 100644
--- a/docs/html/guide/topics/connectivity/wifip2p.jd
+++ b/docs/html/guide/topics/connectivity/wifip2p.jd
@@ -66,7 +66,7 @@ a photo sharing application.</p>
methods. A {@link android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_PEERS_CHANGED_ACTION} intent is
also broadcast if the {@link android.net.wifi.p2p.WifiP2pManager#discoverPeers discoverPeers()}
method discovers that the peers list has changed.</p>
-
+
<h2 id="api">API Overview</h2>
<p>The {@link android.net.wifi.p2p.WifiP2pManager} class provides methods to allow you to interact with
@@ -135,7 +135,7 @@ a photo sharing application.</p>
are described in the following table:</p>
<p class="table-caption"><strong>Table 2.</strong> Wi-Fi P2P Listeners</p>
-
+
<table>
<tr>
<th>Listener interface</th>
@@ -395,7 +395,7 @@ protected void onPause() {
available peers that are in range. The call to this function is asynchronous and a success or
failure is communicated to your application with {@link
android.net.wifi.p2p.WifiP2pManager.ActionListener#onSuccess onSuccess()} and {@link
- android.net.wifi.p2p.WifiP2pManager.ActionListener#onFailure onFailure()} if you created a
+ android.net.wifi.p2p.WifiP2pManager.ActionListener#onFailure onFailure()} if you created a
{@link android.net.wifi.p2p.WifiP2pManager.ActionListener}. The
{@link android.net.wifi.p2p.WifiP2pManager.ActionListener#onSuccess onSuccess()} method only notifies you
that the discovery process succeeded and does not provide any information about the actual peers
diff --git a/docs/html/guide/topics/data/index.jd b/docs/html/guide/topics/data/index.jd
index 1e082b3fef95..169fc223d555 100644
--- a/docs/html/guide/topics/data/index.jd
+++ b/docs/html/guide/topics/data/index.jd
@@ -1,6 +1,6 @@
page.title=Data Storage
page.landing=true
-page.landing.intro=Store application data in databases, files, or preferences, in internal or removeable storage. You can also add a data backup service to let users store and recover application and system data.
+page.landing.intro=Store application data in databases, files, or preferences, in internal or removeable storage. You can also add a data backup service to let users store and recover application and system data.
page.landing.image=
@jd:body
@@ -10,14 +10,14 @@ page.landing.image=
<div class="col-12">
<h3>Training</h3>
-
+
<a href="http://developer.android.com/training/cloudsync/index.html">
<h4>Syncing to the Cloud</h4>
<p>This class covers different strategies for cloud enabled applications. It covers syncing
data with the cloud using your own back-end web application, and backing up data using the cloud so
that users can restore their data when installing your application on a new device.</p>
</a>
-
+
</div>
</div> \ No newline at end of file
diff --git a/docs/html/guide/topics/graphics/index.jd b/docs/html/guide/topics/graphics/index.jd
index 17f630994952..a87e404503ed 100644
--- a/docs/html/guide/topics/graphics/index.jd
+++ b/docs/html/guide/topics/graphics/index.jd
@@ -17,7 +17,7 @@ support hardware acceleration on tablets. With this new pipeline, all drawing op
by the UI toolkit are carried out using the GPU. You’ll be happy to hear that Android 4.0, Ice Cream
Sandwich, brings an improved version of the hardware-accelerated 2D rendering pipeline.</p>
</a>
-
+
<a
href="http://android-developers.blogspot.com/2011/05/introducing-viewpropertyanimator.html">
<h4>Introducing ViewPropertyAnimator</h4>
@@ -25,7 +25,7 @@ href="http://android-developers.blogspot.com/2011/05/introducing-viewpropertyani
including the new properties added to the View class in 3.0. In the 3.1 release, we added a small
utility class that makes animating these properties even easier.</p>
</a>
-
+
<a
href="http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html">
<h4>Android 3.0 Hardware Acceleration</h4>
@@ -43,7 +43,7 @@ applications can benefit from an extra boost in performance.</p>
that keeps your user interface (UI) components responsive and avoids exceeding your application
memory limit.</p>
</a>
-
+
</div>
</div> \ No newline at end of file
diff --git a/docs/html/guide/topics/graphics/overview.jd b/docs/html/guide/topics/graphics/overview.jd
index 66a675dc6491..98d80a0f51bf 100644
--- a/docs/html/guide/topics/graphics/overview.jd
+++ b/docs/html/guide/topics/graphics/overview.jd
@@ -6,7 +6,7 @@ page.title=Animation and Graphics Overview
and help you decide with approach is best for your needs.</p>
<h3 id="animation">Animation</h3>
-
+
<p>The Android framework provides two animation systems: property animation
and view animation. Both animation systems are viable options,
but the property animation system, in general, is the preferred method to use, because it
diff --git a/docs/html/guide/topics/graphics/prop-animation.jd b/docs/html/guide/topics/graphics/prop-animation.jd
index aed533de16ca..2be2b09ffea3 100755
--- a/docs/html/guide/topics/graphics/prop-animation.jd
+++ b/docs/html/guide/topics/graphics/prop-animation.jd
@@ -165,9 +165,9 @@ page.tags=valueanimator,objectanimator,layouttransition,ViewPropertyAnimator
"{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/animation/index.html">API
Demos</a> sample project provides many examples on how to use the property
animation system.</p>
-
+
<h2 id="property-vs-view">How Property Animation Differs from View Animation</h2>
-
+
<p>The view animation system provides the capability to only animate {@link android.view.View}
objects, so if you wanted to animate non-{@link android.view.View} objects, you have to implement
your own code to do so. The view animation system is also constrained in the fact that it only
@@ -594,7 +594,7 @@ implementations of the methods that you can choose to override.</p>
for just the {@link android.animation.Animator.AnimatorListener#onAnimationEnd onAnimationEnd()}
callback:</p>
<pre>
-ValueAnimatorAnimator fadeAnim = ObjectAnimator.ofFloat(newBall, "alpha", 1f, 0f);
+ValueAnimator fadeAnim = ObjectAnimator.ofFloat(newBall, "alpha", 1f, 0f);
fadeAnim.setDuration(250);
fadeAnim.addListener(new AnimatorListenerAdapter() {
public void onAnimationEnd(Animator animation) {
diff --git a/docs/html/guide/topics/location/strategies.jd b/docs/html/guide/topics/location/strategies.jd
index 32be463e687c..2dfed2ce6e8e 100755
--- a/docs/html/guide/topics/location/strategies.jd
+++ b/docs/html/guide/topics/location/strategies.jd
@@ -411,12 +411,12 @@ data to work.</p>
<h3 id="MockAVD">Using Android Studio</h3>
<p>Select <b>Tools</b> &gt; <b>Android</b> &gt; <b>AVD Manager</b>. In the Android Virtual
-Device Manager window, choose your AVD and launch it in the emulator by selecting the green
+Device Manager window, choose your AVD and launch it in the emulator by selecting the green
play arrow in the Actions column.</p>
<p>Then, select <b>Tools</b> &gt; <b>Android</b> &gt; <b>Android Device Monitor</b>.
-Select the Emulator Control tab in the Android Device Monitor window, and enter GPS coordinates
-under Location Controls as individual lat/long coordinates, with a GPX file for route playback,
+Select the Emulator Control tab in the Android Device Monitor window, and enter GPS coordinates
+under Location Controls as individual lat/long coordinates, with a GPX file for route playback,
or a KML file for multiple place marks.
</p>
diff --git a/docs/html/guide/topics/manifest/action-element.jd b/docs/html/guide/topics/manifest/action-element.jd
index fc6ce440579d..f3b340e2737a 100644
--- a/docs/html/guide/topics/manifest/action-element.jd
+++ b/docs/html/guide/topics/manifest/action-element.jd
@@ -13,10 +13,10 @@ parent.link=manifest-intro.html
<p>
<dt>description:</dt>
<dd itemprop="description">Adds an action to an intent filter.
-An <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element must contain
+An <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element must contain
one or more {@code <action>} elements. If it doesn't contain any, no
-Intent objects will get through the filter. See
-<a href="{@docRoot}guide/components/intents-filters.html">Intents and
+Intent objects will get through the filter. See
+<a href="{@docRoot}guide/components/intents-filters.html">Intents and
Intent Filters</a> for details on intent filters and the role of action
specifications within a filter.
</dd>
@@ -25,16 +25,16 @@ specifications within a filter.
<dd><dl class="attr">
<dt><a name="nm"></a>{@code android:name}</dt>
<dd>The name of the action. Some standard actions are defined in the
-{@link android.content.Intent#ACTION_CHOOSER Intent} class as
+{@link android.content.Intent#ACTION_CHOOSER Intent} class as
<code>ACTION_<i>string</i></code> constants. To assign one of these actions to
-this attribute, prepend "{@code android.intent.action.}" to the
+this attribute, prepend "{@code android.intent.action.}" to the
<code><i>string</i></code> that follows {@code ACTION_}.
For example, for {@code ACTION_MAIN}, use "{@code android.intent.action.MAIN}"
and for {@code ACTION_WEB_SEARCH}, use "{@code android.intent.action.WEB_SEARCH}".
<p>
For actions you define, it's best to use the package name as a prefix to
-ensure uniqueness. For example, a {@code TRANSMOGRIFY} action might be specified
+ensure uniqueness. For example, a {@code TRANSMOGRIFY} action might be specified
as follows:
</p>
diff --git a/docs/html/guide/topics/manifest/activity-alias-element.jd b/docs/html/guide/topics/manifest/activity-alias-element.jd
index 1427b55219bd..adb9937899fd 100644
--- a/docs/html/guide/topics/manifest/activity-alias-element.jd
+++ b/docs/html/guide/topics/manifest/activity-alias-element.jd
@@ -29,62 +29,62 @@ alias and it must be declared before the alias in the manifest.
<p>
The alias presents the target activity as a independent entity.
-It can have its own set of intent filters, and they, rather than the
-intent filters on the target activity itself, determine which intents
+It can have its own set of intent filters, and they, rather than the
+intent filters on the target activity itself, determine which intents
can activate the target through the alias and how the system
-treats the alias. For example, the intent filters on the alias may
-specify the "<code>{@link android.content.Intent#ACTION_MAIN
-android.intent.action.MAIN}</code>"
-and "<code>{@link android.content.Intent#CATEGORY_LAUNCHER
-android.intent.category.LAUNCHER}</code>" flags, causing it to be
-represented in the application launcher, even though none of the
+treats the alias. For example, the intent filters on the alias may
+specify the "<code>{@link android.content.Intent#ACTION_MAIN
+android.intent.action.MAIN}</code>"
+and "<code>{@link android.content.Intent#CATEGORY_LAUNCHER
+android.intent.category.LAUNCHER}</code>" flags, causing it to be
+represented in the application launcher, even though none of the
filters on the target activity itself set these flags.
</p>
<p>
With the exception of {@code targetActivity}, {@code <activity-alias>}
-attributes are a subset of <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> attributes.
+attributes are a subset of <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> attributes.
For attributes in the subset, none of the values set for the target carry over
-to the alias. However, for attributes not in the subset, the values set for
+to the alias. However, for attributes not in the subset, the values set for
the target activity also apply to the alias.
</p></dd>
<dt>attributes:</dt>
<dd><dl class="attr">
<dt><a name="enabled"></a>{@code android:enabled}</dt>
-<dd>Whether or not the target activity can be instantiated by the system through
-this alias &mdash; "{@code true}" if it can be, and "{@code false}" if not.
+<dd>Whether or not the target activity can be instantiated by the system through
+this alias &mdash; "{@code true}" if it can be, and "{@code false}" if not.
The default value is "{@code true}".
<p>
-The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
-application components, including activity aliases. The
+The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
+application components, including activity aliases. The
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> and {@code <activity-alias>}
-attributes must both be "{@code true}" for the system to be able to instantiate
-the target activity through the alias. If either is "{@code false}", the alias
+attributes must both be "{@code true}" for the system to be able to instantiate
+the target activity through the alias. If either is "{@code false}", the alias
does not work.
</p></dd>
<dt><a name="exported"></a>{@code android:exported}</dt>
-<dd>Whether or not components of other applications can launch the target activity
-through this alias &mdash; "{@code true}" if they can, and "{@code false}" if not.
-If "{@code false}", the target activity can be launched through the alias only by
-components of the same application as the alias or applications with the same user ID.
+<dd>Whether or not components of other applications can launch the target activity
+through this alias &mdash; "{@code true}" if they can, and "{@code false}" if not.
+If "{@code false}", the target activity can be launched through the alias only by
+components of the same application as the alias or applications with the same user ID.
<p>
-The default value depends on whether the alias contains intent filters. The
+The default value depends on whether the alias contains intent filters. The
absence of any filters means that the activity can be invoked through the alias
-only by specifying the exact name of the alias. This implies that the alias
-is intended only for application-internal use (since others would not know its name)
+only by specifying the exact name of the alias. This implies that the alias
+is intended only for application-internal use (since others would not know its name)
&mdash; so the default value is "{@code false}".
-On the other hand, the presence of at least one filter implies that the alias
+On the other hand, the presence of at least one filter implies that the alias
is intended for external use &mdash; so the default value is "{@code true}".
</p></dd>
<dt><a name="icon"></a>{@code android:icon}</dt>
-<dd>An icon for the target activity when presented to users through the alias.
-See the <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> element's
+<dd>An icon for the target activity when presented to users through the alias.
+See the <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> element's
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#icon">icon</a></code> attribute for more information.
<dt><a name="label"></a>{@code android:label}</dt>
@@ -95,31 +95,31 @@ See the <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&l
<dt><a name="nm">{@code android:name}</dt>
<dd>A unique name for the alias. The name should resemble a fully
-qualified class name. But, unlike the name of the target activity,
-the alias name is arbitrary; it does not refer to an actual class.
+qualified class name. But, unlike the name of the target activity,
+the alias name is arbitrary; it does not refer to an actual class.
</p></dd>
<dt><a name="prmsn"></a>{@code android:permission}</dt>
-<dd>The name of a permission that clients must have to launch the target activity
-or get it to do something via the alias. If a caller of
+<dd>The name of a permission that clients must have to launch the target activity
+or get it to do something via the alias. If a caller of
<code>{@link android.content.Context#startActivity startActivity()}</code> or
<code>{@link android.app.Activity#startActivityForResult startActivityForResult()}</code>
has not been granted the specified permission, the target activity will not be
-activated.
+activated.
<p>This attribute supplants any permission set for the target activity itself. If
it is not set, a permission is not needed to activate the target through the alias.
</p>
<p>
-For more information on permissions, see the
-<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#perms">Permissions</a>
+For more information on permissions, see the
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#perms">Permissions</a>
section in the introduction.
</p></dd>
<dt><a name="trgt"></a>{@code android:targetActivity}</dt>
<dd>The name of the activity that can be activated through the alias.
-This name must match the {@code name} attribute of an
+This name must match the {@code name} attribute of an
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> element that precedes
the alias in the manifest.
</p></dd>
diff --git a/docs/html/guide/topics/manifest/category-element.jd b/docs/html/guide/topics/manifest/category-element.jd
index 0034119fe7b2..d0f0edf6dd8c 100644
--- a/docs/html/guide/topics/manifest/category-element.jd
+++ b/docs/html/guide/topics/manifest/category-element.jd
@@ -12,19 +12,19 @@ parent.link=manifest-intro.html
<dt>description:</dt>
<dd itemprop="description">Adds a category name to an intent filter. See
-<a href="{@docRoot}guide/components/intents-filters.html">Intents and
+<a href="{@docRoot}guide/components/intents-filters.html">Intents and
Intent Filters</a> for details on intent filters and the role of category
specifications within a filter.</dd>
<dt>attributes:</dt>
<dd><dl class="attr">
<dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name of the category. Standard categories are defined in the
+<dd>The name of the category. Standard categories are defined in the
{@link android.content.Intent} class as <code>CATEGORY_<i>name</i></code>
-constants. The name assigned here can be derived from those constants
-by prefixing "{@code android.intent.category.}" to the
+constants. The name assigned here can be derived from those constants
+by prefixing "{@code android.intent.category.}" to the
<code><i>name</i></code> that follows {@code CATEGORY_}. For example,
-the string value for {@code CATEGORY_LAUNCHER} is
+the string value for {@code CATEGORY_LAUNCHER} is
"{@code android.intent.category.LAUNCHER}".
<p class="note"><strong>Note:</strong> In order to receive implicit intents, you must include the
@@ -39,7 +39,7 @@ your activity.</p>
Custom categories should use the package name as a prefix, to ensure
that they are unique.
</p></dd>
-</dl></dd>
+</dl></dd>
<!-- ##api level indication## -->
<dt>introduced in:</dt>
diff --git a/docs/html/guide/topics/manifest/grant-uri-permission-element.jd b/docs/html/guide/topics/manifest/grant-uri-permission-element.jd
index b2d9bb7a104e..a464e552c47d 100644
--- a/docs/html/guide/topics/manifest/grant-uri-permission-element.jd
+++ b/docs/html/guide/topics/manifest/grant-uri-permission-element.jd
@@ -14,24 +14,24 @@ parent.link=manifest-intro.html
<dt>description:</dt>
<dd itemprop="description">Specifies which data subsets of the parent content provider permission
-can be granted for. Data subsets are indicated by the path part of a
+can be granted for. Data subsets are indicated by the path part of a
{@code content:} URI. (The authority part of the URI identifies the
-content provider.)
-Granting permission is a way of enabling clients of the provider that don't
-normally have permission to access its data to overcome that restriction on
+content provider.)
+Granting permission is a way of enabling clients of the provider that don't
+normally have permission to access its data to overcome that restriction on
a one-time basis.
-<p>
-If a content provider's <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmns">grantUriPermissions</a></code>
-attribute is "{@code true}", permission can be granted for any the data under
-the provider's purview. However, if that attribute is "{@code false}", permission
-can be granted only to data subsets that are specified by this element.
+<p>
+If a content provider's <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmns">grantUriPermissions</a></code>
+attribute is "{@code true}", permission can be granted for any the data under
+the provider's purview. However, if that attribute is "{@code false}", permission
+can be granted only to data subsets that are specified by this element.
A provider can contain any number of {@code <grant-uri-permission>} elements.
Each one can specify only one path (only one of the three possible attributes).
</p>
<p>
-For information on how permission is granted, see the
+For information on how permission is granted, see the
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">grantUriPermissions</a></code> attribute.
</p></dd>
@@ -41,34 +41,34 @@ For information on how permission is granted, see the
<dt><a name="path"></a>{@code android:path}
<br/>{@code android:pathPrefix}
<br/>{@code android:pathPattern}</dt>
-<dd>A path identifying the data subset or subsets that permission can be
-granted for. The {@code path} attribute specifies a complete path;
-permission can be granted only to the particular data subset identified
-by that path.
-The {@code pathPrefix} attribute specifies the initial part of a path;
-permission can be granted to all data subsets with paths that share that
-initial part.
-The {@code pathPattern} attribute specifies a complete path, but one
+<dd>A path identifying the data subset or subsets that permission can be
+granted for. The {@code path} attribute specifies a complete path;
+permission can be granted only to the particular data subset identified
+by that path.
+The {@code pathPrefix} attribute specifies the initial part of a path;
+permission can be granted to all data subsets with paths that share that
+initial part.
+The {@code pathPattern} attribute specifies a complete path, but one
that can contain the following wildcards:
<ul>
<li>An asterisk ('{@code *}') matches a sequence of 0 to many occurrences of
the immediately preceding character.</li>
-<li><p>A period followed by an asterisk ("{@code .*}") matches any sequence of
+<li><p>A period followed by an asterisk ("{@code .*}") matches any sequence of
0 to many characters.</p></li>
</ul>
<p>
-Because '{@code \}' is used as an escape character when the string is read
-from XML (before it is parsed as a pattern), you will need to double-escape:
-For example, a literal '{@code *}' would be written as "{@code \\*}" and a
-literal '{@code \}' would be written as "{@code \\\\}". This is basically
+Because '{@code \}' is used as an escape character when the string is read
+from XML (before it is parsed as a pattern), you will need to double-escape:
+For example, a literal '{@code *}' would be written as "{@code \\*}" and a
+literal '{@code \}' would be written as "{@code \\\\}". This is basically
the same as what you would need to write if constructing the string in Java code.
</p>
<p>
-For more information on these types of patterns, see the descriptions of
+For more information on these types of patterns, see the descriptions of
{@link android.os.PatternMatcher#PATTERN_LITERAL},
{@link android.os.PatternMatcher#PATTERN_PREFIX}, and
{@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB} in the
@@ -81,10 +81,10 @@ For more information on these types of patterns, see the descriptions of
<dd>API Level 1</dd>
<dt>see also:</dt>
-<dd>the
+<dd>the
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmns">grantUriPermissions</a></code>
-attribute of the
-<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+attribute of the
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
element</dd>
diff --git a/docs/html/guide/topics/manifest/instrumentation-element.jd b/docs/html/guide/topics/manifest/instrumentation-element.jd
index 74be559db137..a476be3b72f1 100644
--- a/docs/html/guide/topics/manifest/instrumentation-element.jd
+++ b/docs/html/guide/topics/manifest/instrumentation-element.jd
@@ -23,15 +23,15 @@ object is instantiated before any of the application's components.</dd>
<dt>attributes:</dt>
<dd><dl class="attr">
<dt><a name="ftest"></a>{@code android:functionalTest}</dt>
-<dd>Whether or not the Instrumentation class should run as a functional test
+<dd>Whether or not the Instrumentation class should run as a functional test
&mdash; "{@code true}" if it should, and "{@code false}" if not. The
default value is "{@code false}".</dd>
<dt><a name="hprof"></a>{@code android:handleProfiling}</dt>
-<dd>Whether or not the Instrumentation object will turn profiling on and
-off &mdash; "{@code true}" if it determines when profiling starts and
-stops, and "{@code false}" if profiling continues the entire time it is
-running. A value of "{@code true}" enables the object to target profiling
+<dd>Whether or not the Instrumentation object will turn profiling on and
+off &mdash; "{@code true}" if it determines when profiling starts and
+stops, and "{@code false}" if profiling continues the entire time it is
+running. A value of "{@code true}" enables the object to target profiling
at a specific set of operations. The default value is "{@code false}".</dd>
<dt><a name="icon"></a>{@code android:icon}</dt>
@@ -43,11 +43,11 @@ be set as a reference to a drawable resource.</dd>
be set as a raw string or a reference to a string resource.</dd>
<dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name of the {@link android.app.Instrumentation} subclass.
-This should be a fully qualified class name (such as,
-"{@code com.example.project.StringInstrumentation}"). However, as a shorthand,
-if the first character of the name is a period, it is appended to the package
-name specified in the <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
+<dd>The name of the {@link android.app.Instrumentation} subclass.
+This should be a fully qualified class name (such as,
+"{@code com.example.project.StringInstrumentation}"). However, as a shorthand,
+if the first character of the name is a period, it is appended to the package
+name specified in the <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
<p>
There is no default. The name must be specified.
diff --git a/docs/html/guide/topics/manifest/intent-filter-element.jd b/docs/html/guide/topics/manifest/intent-filter-element.jd
index 14b4e03b64a8..13956c9ad430 100644
--- a/docs/html/guide/topics/manifest/intent-filter-element.jd
+++ b/docs/html/guide/topics/manifest/intent-filter-element.jd
@@ -27,23 +27,23 @@ parent.link=manifest-intro.html
<dt>description:</dt>
<dd itemprop="description">Specifies the types of intents that an activity, service, or broadcast
receiver can respond to. An intent filter declares the capabilities of its
-parent component &mdash; what an activity or service can do and what types
-of broadcasts a receiver can handle. It opens the component to receiving
-intents of the advertised type, while filtering out those that are not
+parent component &mdash; what an activity or service can do and what types
+of broadcasts a receiver can handle. It opens the component to receiving
+intents of the advertised type, while filtering out those that are not
meaningful for the component.
<p>
-Most of the contents of the filter are described by its
-<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>,
+Most of the contents of the filter are described by its
+<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>,
<code><a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category&gt;</a></code>, and
<code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code> subelements.
</p>
<p>
-For a more detailed discussion of filters, see the separate
-<a href="{@docRoot}guide/components/intents-filters.html">Intents
-and Intent Filters</a> document, as well as the
-<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#ifs">Intents Filters</a>
+For a more detailed discussion of filters, see the separate
+<a href="{@docRoot}guide/components/intents-filters.html">Intents
+and Intent Filters</a> document, as well as the
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#ifs">Intents Filters</a>
section in the introduction.
</p></dd>
@@ -51,19 +51,19 @@ section in the introduction.
<dd><dl class="attr">
<dt><a name="icon"></a>{@code android:icon}</dt>
<dd>An icon that represents the parent activity, service, or broadcast
-receiver when that component is presented to the user as having the
+receiver when that component is presented to the user as having the
capability described by the filter.
<p>
-This attribute must be set as a reference to a drawable resource
-containing the image definition. The default value is the icon set
-by the parent component's {@code icon} attribute. If the parent
+This attribute must be set as a reference to a drawable resource
+containing the image definition. The default value is the icon set
+by the parent component's {@code icon} attribute. If the parent
does not specify an icon, the default is the icon set by the
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element.
</p>
<p>
-For more on intent filter icons, see
+For more on intent filter icons, see
<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#iconlabel">Icons and Labels</a>
in the introduction.
</p></dd>
@@ -75,44 +75,44 @@ to the user as having the capability described by the filter.
<p>
The label should be set as a reference to a string resource, so that
-it can be localized like other strings in the user interface.
-However, as a convenience while you're developing the application,
+it can be localized like other strings in the user interface.
+However, as a convenience while you're developing the application,
it can also be set as a raw string.
</p>
<p>
-The default value is the label set by the parent component. If the
+The default value is the label set by the parent component. If the
parent does not specify a label, the default is the label set by the
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#label"> label</a></code> attribute.
</p>
<p>
-For more on intent filter labels, see
+For more on intent filter labels, see
<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#iconlabel">Icons and Labels</a>
in the introduction.
</p></dd>
<dt><a name="priority"></a>{@code android:priority}</dt>
<dd>The priority that should be given to the parent component with regard
-to handling intents of the type described by the filter. This attribute has
+to handling intents of the type described by the filter. This attribute has
meaning for both activities and broadcast receivers:
<ul>
-<li>It provides information about how able an activity is to respond to
+<li>It provides information about how able an activity is to respond to
an intent that matches the filter, relative to other activities that could
-also respond to the intent. When an intent could be handled by multiple
+also respond to the intent. When an intent could be handled by multiple
activities with different priorities, Android will consider only those with
higher priority values as potential targets for the intent.</li>
<li><p>It controls the order in which broadcast receivers are executed to
-receive broadcast messages. Those with higher priority
-values are called before those with lower values. (The order applies only
+receive broadcast messages. Those with higher priority
+values are called before those with lower values. (The order applies only
to synchronous messages; it's ignored for asynchronous messages.)</p></li>
</ul>
<p>
-Use this attribute only if you really need to impose a specific order in
+Use this attribute only if you really need to impose a specific order in
which the broadcasts are received, or want to force Android to prefer
one activity over others.
</p>
diff --git a/docs/html/guide/topics/manifest/meta-data-element.jd b/docs/html/guide/topics/manifest/meta-data-element.jd
index d3b41c391195..2d1bdfe59259 100644
--- a/docs/html/guide/topics/manifest/meta-data-element.jd
+++ b/docs/html/guide/topics/manifest/meta-data-element.jd
@@ -19,18 +19,18 @@ parent.link=manifest-intro.html
<dt>description:</dt>
<dd itemprop="description">A name-value pair for an item of additional, arbitrary data that can
-be supplied to the parent component. A component element can contain any
+be supplied to the parent component. A component element can contain any
number of {@code <meta-data>} subelements. The values from all of
-them are collected in a single {@link android.os.Bundle} object and made
-available to the component as the
-{@link android.content.pm.PackageItemInfo#metaData
+them are collected in a single {@link android.os.Bundle} object and made
+available to the component as the
+{@link android.content.pm.PackageItemInfo#metaData
PackageItemInfo.metaData} field.
<p>
-Ordinary values are specified through the <code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#value">value</a></code>
-attribute. However, to assign a resource ID as the value, use the
-<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#resource">resource</a></code> attribute instead. For example,
-the following code assigns whatever value is stored in the {@code @string/kangaroo}
+Ordinary values are specified through the <code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#value">value</a></code>
+attribute. However, to assign a resource ID as the value, use the
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#resource">resource</a></code> attribute instead. For example,
+the following code assigns whatever value is stored in the {@code @string/kangaroo}
resource to the "{@code zoo}" name:
</p>
@@ -44,22 +44,22 @@ the numeric ID of the resource, not the value stored in the resource:
<pre>&lt;meta-data android:name="zoo" android:resource="@string/kangaroo" /&gt;</pre>
<p>
-It is highly recommended that you avoid supplying related data as
+It is highly recommended that you avoid supplying related data as
multiple separate {@code <meta-data>} entries. Instead, if you
-have complex data to associate with a component, store it as a resource and
+have complex data to associate with a component, store it as a resource and
use the {@code resource} attribute to inform the component of its ID.
</p></dd>
<dt>attributes:</dt>
<dd><dl class="attr">
<dt><a name="nm"></a>{@code android:name}</dt>
-<dd>A unique name for the item. To ensure that the name is unique, use a
-Java-style naming convention &mdash; for example,
+<dd>A unique name for the item. To ensure that the name is unique, use a
+Java-style naming convention &mdash; for example,
"{@code com.example.project.activity.fred}".</dd>
<dt><a name="rsrc"></a>{@code android:resource}</dt>
-<dd>A reference to a resource. The ID of the resource is the value assigned
-to the item. The ID can be retrieved from the meta-data Bundle by the
+<dd>A reference to a resource. The ID of the resource is the value assigned
+to the item. The ID can be retrieved from the meta-data Bundle by the
{@link android.os.Bundle#getInt Bundle.getInt()} method.</dd>
<dt><a name="val"></a>{@code android:value}</dt>
@@ -70,7 +70,7 @@ to the item. The ID can be retrieved from the meta-data Bundle by the
<th>Type</th>
<th>Bundle method</th>
</tr><tr>
- <td>String value, using double backslashes ({@code \\}) to escape characters
+ <td>String value, using double backslashes ({@code \\}) to escape characters
&mdash; such as "{@code \\n}" and "{@code \\uxxxxx}" for a Unicode character.</td>
<td>{@link android.os.Bundle#getString(String) getString()}</td>
</tr><tr>
@@ -80,7 +80,7 @@ to the item. The ID can be retrieved from the meta-data Bundle by the
<td>Boolean value, either "{@code true}" or "{@code false}"</td>
<td>{@link android.os.Bundle#getBoolean(String) getBoolean()}</td>
</tr><tr>
- <td>Color value, in the form "{@code #rgb}", "{@code #argb}",
+ <td>Color value, in the form "{@code #rgb}", "{@code #argb}",
"{@code #rrggbb}", or "{@code #aarrggbb}"</td>
<td>{@link android.os.Bundle#getInt(String) getInt()}</td>
</tr><tr>
diff --git a/docs/html/guide/topics/manifest/path-permission-element.jd b/docs/html/guide/topics/manifest/path-permission-element.jd
index cdaf82b00f29..477470733151 100644
--- a/docs/html/guide/topics/manifest/path-permission-element.jd
+++ b/docs/html/guide/topics/manifest/path-permission-element.jd
@@ -33,9 +33,9 @@ specified multiple times to supply multiple paths.
<dd><dl class="attr">
<dt><a name="path"></a>{@code android:path}</dt>
-<dd>A complete URI path for a subset of content provider data.
-Permission can be granted only to the particular data identified by this path.
-When used to provide search suggestion content, it must be appended
+<dd>A complete URI path for a subset of content provider data.
+Permission can be granted only to the particular data identified by this path.
+When used to provide search suggestion content, it must be appended
with "/search_suggest_query".
</dd>
@@ -47,24 +47,24 @@ Permission can be granted to all data subsets with paths that share this initial
<dt><a name="pathPattern"></a>{@code android:pathPattern}</dt>
<dd>A complete URI path for a subset of content provider data,
but one that can use the following wildcards:
-
-<ul>
+
+<ul>
<li>An asterisk ('<code class="Code prettyprint">*</code>'). This matches a sequence of 0 to many occurrences of
-the immediately preceding character.</li>
-
-<li>A period followed by an asterisk ("<code class="Code prettyprint">.*</code>"). This matches any sequence of
-0 or more characters.</li>
-</ul>
-
-<p>
-Because '<code class="Code prettyprint">\</code>' is used as an escape character when the string is read
+the immediately preceding character.</li>
+
+<li>A period followed by an asterisk ("<code class="Code prettyprint">.*</code>"). This matches any sequence of
+0 or more characters.</li>
+</ul>
+
+<p>
+Because '<code class="Code prettyprint">\</code>' is used as an escape character when the string is read
from XML (before it is parsed as a pattern), you will need to double-escape.
-For example, a literal '<code class="Code prettyprint">*</code>' would be written as "<code class="Code prettyprint">\\*</code>" and a
-literal '<code class="Code prettyprint">\</code>' would be written as "<code class="Code prettyprint">\\</code>". This is basically
+For example, a literal '<code class="Code prettyprint">*</code>' would be written as "<code class="Code prettyprint">\\*</code>" and a
+literal '<code class="Code prettyprint">\</code>' would be written as "<code class="Code prettyprint">\\</code>". This is basically
the same as what you would need to write if constructing the string in Java code.
-</p>
-<p>
-For more information on these types of patterns, see the descriptions of
+</p>
+<p>
+For more information on these types of patterns, see the descriptions of
<a href="/reference/android/os/PatternMatcher.html#PATTERN_LITERAL">PATTERN_LITERAL</a>,
<a href="/reference/android/os/PatternMatcher.html#PATTERN_PREFIX">PATTERN_PREFIX</a>, and
<a href="/reference/android/os/PatternMatcher.html#PATTERN_SIMPLE_GLOB">PATTERN_SIMPLE_GLOB</a> in the
@@ -74,20 +74,20 @@ For more information on these types of patterns, see the descriptions of
<dt><a name="permission"></a>{@code android:permission}</dt>
<dd>The name of a permission that clients must have in order to read or write the
-content provider's data. This attribute is a convenient way of setting a
-single permission for both reading and writing. However, the
-<code>readPermission</code> and
+content provider's data. This attribute is a convenient way of setting a
+single permission for both reading and writing. However, the
+<code>readPermission</code> and
<code>writePermission</code> attributes take precedence
over this one.
-</dd>
+</dd>
<dt><a name="readPermission"></a>{@code android:readPermission}</dt>
<dd>A permission that clients must have in order to query the content provider.
-</dd>
+</dd>
<dt><a name="writePermission"></a>{@code android:writePermission}</dt>
<dd>A permission that clients must have in order to make changes to the data controlled by the content provider.
-</dd>
+</dd>
diff --git a/docs/html/guide/topics/manifest/permission-group-element.jd b/docs/html/guide/topics/manifest/permission-group-element.jd
index 3221d4b68c36..85452b534fcf 100644
--- a/docs/html/guide/topics/manifest/permission-group-element.jd
+++ b/docs/html/guide/topics/manifest/permission-group-element.jd
@@ -20,17 +20,17 @@ permission join the group through the {@code permissionGroup} attribute of the
presented together in the user interface.
<p>
-Note that this element does not declare a permission itself, only a category in
-which permissions can be placed. See the
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> element for element for information
+Note that this element does not declare a permission itself, only a category in
+which permissions can be placed. See the
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> element for element for information
on declaring permissions and assigning them to groups.
</p></dd>
<dt>attributes:</dt>
<dd><dl class="attr">
<dt><a name="desc"></a>{@code android:description}</dt>
-<dd>User-readable text that describes the group. The text should be
-longer and more explanatory than the label. This attribute must be
+<dd>User-readable text that describes the group. The text should be
+longer and more explanatory than the label. This attribute must be
set as a reference to a string resource. Unlike the {@code label}
attribute, it cannot be a raw string.</dd>
@@ -39,10 +39,10 @@ attribute, it cannot be a raw string.</dd>
as a reference to a drawable resource containing the image definition.</dd>
<dt><a name="label"></a>{@code android:label}</dt>
-<dd>A user-readable name for the group. As a convenience, the label can
-be directly set as a raw string while you're developing the application.
-However, when the application is ready to be published, it should be set
-as a reference to a string resource, so that it can be localized like other
+<dd>A user-readable name for the group. As a convenience, the label can
+be directly set as a raw string while you're developing the application.
+However, when the application is ready to be published, it should be set
+as a reference to a string resource, so that it can be localized like other
strings in the user interface.</dd>
<dt><a name="nm"></a>{@code android:name}</dt>
diff --git a/docs/html/guide/topics/manifest/permission-tree-element.jd b/docs/html/guide/topics/manifest/permission-tree-element.jd
index 21d7352331f3..cbfd72cd8465 100644
--- a/docs/html/guide/topics/manifest/permission-tree-element.jd
+++ b/docs/html/guide/topics/manifest/permission-tree-element.jd
@@ -14,7 +14,7 @@ parent.link=manifest-intro.html
<dt>description:</dt>
<dd itemprop="description">Declares the base name for a tree of permissions. The application takes
-ownership of all names within the tree. It can dynamically add new permissions
+ownership of all names within the tree. It can dynamically add new permissions
to the tree by calling <code>{@link android.content.pm.PackageManager#addPermission PackageManager.addPermission()}</code>. Names within the tree are separated by
periods ('{@code .}'). For example, if the base name is
{@code com.example.project.taxes}, permissions like the following might be
@@ -25,30 +25,30 @@ added:
<br/>{@code com.example.project.taxes.deductions.EXAGGERATE}</p>
<p>
-Note that this element does not declare a permission itself, only a
-namespace in which further permissions can be placed. See the
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+Note that this element does not declare a permission itself, only a
+namespace in which further permissions can be placed. See the
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
element for information on declaring permissions.
<dt>attributes:</dt>
<dd><dl class="attr">
<dt><a name="icon"></a>{@code android:icon}</dt>
-<dd>An icon representing all the permissions in the tree. This attribute
-must be set as a reference to a drawable resource containing the image
+<dd>An icon representing all the permissions in the tree. This attribute
+must be set as a reference to a drawable resource containing the image
definition.</dd>
<dt><a name="label"></a>{@code android:label}</dt>
-<dd>A user-readable name for the group. As a convenience, the label can
-be directly set as a raw string for quick and dirty programming. However,
-when the application is ready to be published, it should be set as a
-reference to a string resource, so that it can be localized like other
+<dd>A user-readable name for the group. As a convenience, the label can
+be directly set as a raw string for quick and dirty programming. However,
+when the application is ready to be published, it should be set as a
+reference to a string resource, so that it can be localized like other
strings in the user interface.</dd>
<dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name that's at the base of the permission tree. It serves as
-a prefix to all permission names in the tree. Java-style scoping should
-be used to ensure that the name is unique. The name must have more than
-two period-separated segments in its path &mdash; for example,
+<dd>The name that's at the base of the permission tree. It serves as
+a prefix to all permission names in the tree. Java-style scoping should
+be used to ensure that the name is unique. The name must have more than
+two period-separated segments in its path &mdash; for example,
{@code com.example.base} is OK, but {@code com.example} is not.</dd>
</dl></dd>
diff --git a/docs/html/guide/topics/manifest/provider-element.jd b/docs/html/guide/topics/manifest/provider-element.jd
index 4b5c0c35bc2c..1947849e56f8 100644
--- a/docs/html/guide/topics/manifest/provider-element.jd
+++ b/docs/html/guide/topics/manifest/provider-element.jd
@@ -37,41 +37,41 @@ parent.link=manifest-intro.html
<dt>description:</dt>
<dd itemprop="description">
- Declares a content provider component. A content provider is a subclass of
- {@link android.content.ContentProvider} that supplies structured access to data managed by the
- application. All content providers in your application must be defined in a
+ Declares a content provider component. A content provider is a subclass of
+ {@link android.content.ContentProvider} that supplies structured access to data managed by the
+ application. All content providers in your application must be defined in a
{@code <provider>} element in the manifest file; otherwise, the system is unaware of them
and doesn't run them.
<p>
You only declare content providers that are part of your application. Content providers in
other applications that you use in your application should not be declared.
- </p>
+ </p>
<p>
The Android system stores references to content providers according to an <b>authority</b>
- string, part of the provider's <b>content URI</b>. For example, suppose you want to
+ string, part of the provider's <b>content URI</b>. For example, suppose you want to
access a content provider that stores information about health care professionals. To do
- this, you call the method
+ this, you call the method
{@link android.content.ContentResolver#query ContentResolver.query()}, which among other
arguments takes a URI that identifies the provider:
- </p>
+ </p>
<pre>
content://com.example.project.healthcareprovider/nurses/rn
</pre>
<p>
The <code>content:</code> <b>scheme</b> identifies the URI as a content URI pointing to
- an Android content provider. The authority
+ an Android content provider. The authority
<code>com.example.project.healthcareprovider</code> identifies the provider itself; the
- Android system looks up the authority in its list of known providers and their authorities.
- The substring <code>nurses/rn</code> is a <b>path</b>, which the content provider can use
+ Android system looks up the authority in its list of known providers and their authorities.
+ The substring <code>nurses/rn</code> is a <b>path</b>, which the content provider can use
to identify subsets of the provider data.
</p>
<p>
- Notice that when you define your provider in the <code>&lt;provider&gt;</code> element, you
+ Notice that when you define your provider in the <code>&lt;provider&gt;</code> element, you
don't include the scheme or the path in the <code>android:name</code> argument, only the
- authority.
+ authority.
</p>
<p>
- For information on using and developing content providers, see the API Guide,
+ For information on using and developing content providers, see the API Guide,
<a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>.
</p>
</dd>
@@ -82,8 +82,8 @@ content://com.example.project.healthcareprovider/nurses/rn
<dt><a name="auth"></a>{@code android:authorities}</dt>
<dd>
A list of one or more URI authorities that identify data offered by the content provider.
- Multiple authorities are listed by separating their names with a semicolon.
- To avoid conflicts, authority names should use a Java-style naming convention
+ Multiple authorities are listed by separating their names with a semicolon.
+ To avoid conflicts, authority names should use a Java-style naming convention
(such as {@code com.example.provider.cartoonprovider}). Typically, it's the name
of the {@link android.content.ContentProvider} subclass that implements the provider
<p>
@@ -92,92 +92,92 @@ content://com.example.project.healthcareprovider/nurses/rn
</dd>
<dt><a name="enabled"></a>{@code android:enabled}</dt>
- <dd>Whether or not the content provider can be instantiated by the system &mdash;
- "{@code true}" if it can be, and "{@code false}" if not. The default value
+ <dd>Whether or not the content provider can be instantiated by the system &mdash;
+ "{@code true}" if it can be, and "{@code false}" if not. The default value
is "{@code true}".
<p>
-The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
-application components, including content providers. The
+The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
+application components, including content providers. The
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> and {@code <provider>}
attributes must both be "{@code true}" (as they both
-are by default) for the content provider to be enabled. If either is
+are by default) for the content provider to be enabled. If either is
"{@code false}", the provider is disabled; it cannot be instantiated.
</p></dd>
<dt><a name="exported"></a>{@code android:exported}</dt>
<dd>
Whether the content provider is available for other applications to use:
- <ul>
+ <ul>
<li>
<code>true</code>: The provider is available to other applications. Any application can
use the provider's content URI to access it, subject to the permissions specified for
the provider.
</li>
<li>
- <code>false</code>: The provider is not available to other applications. Set
+ <code>false</code>: The provider is not available to other applications. Set
<code>android:exported="false"</code> to limit access to the provider to your
applications. Only applications that have the same user ID (UID) as the provider will
have access to it.
</li>
</ul>
<p>
- The default value is <code>"true"</code> for applications that set either
+ The default value is <code>"true"</code> for applications that set either
<code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">android:minSdkVersion</a></code>
- or
-<code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">android:targetSdkVersion</a></code> to
+ or
+<code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">android:targetSdkVersion</a></code> to
<code>"16"</code> or lower. For applications that
- set either of these attributes to <code>"17"</code> or higher, the default is
+ set either of these attributes to <code>"17"</code> or higher, the default is
<code>"false"</code>.
</p>
<p>
You can set <code>android:exported="false"</code> and still limit access to your
- provider by setting permissions with the
+ provider by setting permissions with the
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">permission</a></code>
attribute.
</p>
-</dd>
+</dd>
<dt><a name="gprmsn"></a>{@code android:grantUriPermissions}</dt>
-<dd>Whether or not those who ordinarily would not have permission to
+<dd>Whether or not those who ordinarily would not have permission to
access the content provider's data can be granted permission to do so,
temporarily overcoming the restriction imposed by the
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">readPermission</a></code>,
-<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">writePermission</a></code>, and
-<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">permission</a></code> attributes
-&mdash;
-"{@code true}" if permission can be granted, and "{@code false}" if not.
-If "{@code true}", permission can be granted to any of the content
-provider's data. If "{@code false}", permission can be granted only
-to the data subsets listed in
-<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code> subelements,
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">writePermission</a></code>, and
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">permission</a></code> attributes
+&mdash;
+"{@code true}" if permission can be granted, and "{@code false}" if not.
+If "{@code true}", permission can be granted to any of the content
+provider's data. If "{@code false}", permission can be granted only
+to the data subsets listed in
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code> subelements,
if any. The default value is "{@code false}".
<p>
-Granting permission is a way of giving an application component one-time
-access to data protected by a permission. For example, when an e-mail
-message contains an attachment, the mail application may call upon the
-appropriate viewer to open it, even though the viewer doesn't have general
-permission to look at all the content provider's data.
+Granting permission is a way of giving an application component one-time
+access to data protected by a permission. For example, when an e-mail
+message contains an attachment, the mail application may call upon the
+appropriate viewer to open it, even though the viewer doesn't have general
+permission to look at all the content provider's data.
</p>
-<p>
-In such cases, permission is granted by
-<code>{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}</code>
-and <code>{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}</code>
-flags in the Intent object that activates the component. For example, the
-mail application might put {@code FLAG_GRANT_READ_URI_PERMISSION} in the
-Intent passed to {@code Context.startActivity()}. The permission is specific
-to the URI in the Intent.
+<p>
+In such cases, permission is granted by
+<code>{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}</code>
+and <code>{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}</code>
+flags in the Intent object that activates the component. For example, the
+mail application might put {@code FLAG_GRANT_READ_URI_PERMISSION} in the
+Intent passed to {@code Context.startActivity()}. The permission is specific
+to the URI in the Intent.
</p>
<p>
If you enable this feature, either by setting this attribute to "{@code true}"
-or by defining <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
-subelements, you must call
-<code>{@link android.content.Context#revokeUriPermission
-Context.revokeUriPermission()}</code> when a covered URI is deleted from
+or by defining <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+subelements, you must call
+<code>{@link android.content.Context#revokeUriPermission
+Context.revokeUriPermission()}</code> when a covered URI is deleted from
the provider.
</p>
@@ -187,52 +187,52 @@ element.
</p></dd>
<dt><a name="icon"></a>{@code android:icon}</dt>
-<dd>An icon representing the content provider.
-This attribute must be set as a reference to a drawable resource containing
-the image definition. If it is not set, the icon specified for the application
-as a whole is used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+<dd>An icon representing the content provider.
+This attribute must be set as a reference to a drawable resource containing
+the image definition. If it is not set, the icon specified for the application
+as a whole is used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
element's <code><a href="{@docRoot}guide/topics/manifest/application-element.html#icon">icon</a></code> attribute).</dd>
<dt><a name="init"></a>{@code android:initOrder}</dt>
-<dd>The order in which the content provider should be instantiated,
-relative to other content providers hosted by the same process.
-When there are dependencies among content providers, setting this
-attribute for each of them ensures that they are created in the order
-required by those dependencies. The value is a simple integer,
+<dd>The order in which the content provider should be instantiated,
+relative to other content providers hosted by the same process.
+When there are dependencies among content providers, setting this
+attribute for each of them ensures that they are created in the order
+required by those dependencies. The value is a simple integer,
with higher numbers being initialized first.</dd>
<dt><a name="label"></a>{@code android:label}</dt>
-<dd>A user-readable label for the content provided.
-If this attribute is not set, the label set for the application as a whole is
-used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
+<dd>A user-readable label for the content provided.
+If this attribute is not set, the label set for the application as a whole is
+used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#label">label</a></code> attribute).
<p>
The label should be set as a reference to a string resource, so that
-it can be localized like other strings in the user interface.
-However, as a convenience while you're developing the application,
+it can be localized like other strings in the user interface.
+However, as a convenience while you're developing the application,
it can also be set as a raw string.
</p></dd>
<dt><a name="multi"></a>{@code android:multiprocess}</dt>
-<dd>Whether or not an instance of the content provider can be created in
+<dd>Whether or not an instance of the content provider can be created in
every client process &mdash; "{@code true}" if instances can run in multiple
processes, and "{@code false}" if not. The default value is "{@code false}".
<p>
-Normally, a content provider is instantiated in the process of the
-application that defined it. However, if this flag is set to "{@code true}",
-the system can create an instance in every process where there's a client
-that wants to interact with it, thus avoiding the overhead of interprocess
+Normally, a content provider is instantiated in the process of the
+application that defined it. However, if this flag is set to "{@code true}",
+the system can create an instance in every process where there's a client
+that wants to interact with it, thus avoiding the overhead of interprocess
communication.
</p></dd>
<dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name of the class that implements the content provider, a subclass of
-{@link android.content.ContentProvider}. This should be a fully qualified
-class name (such as, "{@code com.example.project.TransportationProvider}").
-However, as a shorthand, if the first character of the name is a period,
-it is appended to the package name specified in the
+<dd>The name of the class that implements the content provider, a subclass of
+{@link android.content.ContentProvider}. This should be a fully qualified
+class name (such as, "{@code com.example.project.TransportationProvider}").
+However, as a shorthand, if the first character of the name is a period,
+it is appended to the package name specified in the
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
<p>
@@ -242,58 +242,58 @@ There is no default. The name must be specified.
<dt><a name="prmsn"></a>{@code android:permission}</dt>
<dd>The name of a permission that clients must have to read or write the
-content provider's data. This attribute is a convenient way of setting a
-single permission for both reading and writing. However, the
-<code><a href="#rprmsn">readPermission</a></code> and
+content provider's data. This attribute is a convenient way of setting a
+single permission for both reading and writing. However, the
+<code><a href="#rprmsn">readPermission</a></code> and
<code><a href="#wprmsn">writePermission</a></code> attributes take precedence
-over this one. If the <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">readPermission</a></code>
+over this one. If the <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">readPermission</a></code>
attribute is also set, it controls access for querying the content provider.
And if the <code><a href="#wprmsn">writePermission</a></code> attribute is set,
it controls access for modifying the provider's data.
<p>
-For more information on permissions, see the
-<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a>
-section in the introduction and a separate document,
+For more information on permissions, see the
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a>
+section in the introduction and a separate document,
<a href="{@docRoot}guide/topics/security/security.html">Security and
Permissions</a>.
</p></dd>
<dt><a name="proc"></a>{@code android:process}</dt>
-<dd>The name of the process in which the content provider should run. Normally,
-all components of an application run in the default process created for the
-application. It has the same name as the application package. The
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code>
-attribute can set a different
+<dd>The name of the process in which the content provider should run. Normally,
+all components of an application run in the default process created for the
+application. It has the same name as the application package. The
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code>
+attribute can set a different
default for all components. But each component can override the default
-with its own {@code process} attribute, allowing you to spread your
+with its own {@code process} attribute, allowing you to spread your
application across multiple processes.
<p>
-If the name assigned to this attribute begins with a colon (':'), a new
-process, private to the application, is created when it's needed and
+If the name assigned to this attribute begins with a colon (':'), a new
+process, private to the application, is created when it's needed and
the activity runs in that process.
-If the process name begins with a lowercase character, the activity will run
+If the process name begins with a lowercase character, the activity will run
in a global process of that name, provided that it has permission to do so.
-This allows components in different applications to share a process, reducing
+This allows components in different applications to share a process, reducing
resource usage.
</p></dd>
<dt><a name="rprmsn"></a>{@code android:readPermission}</dt>
-<dd>A permission that clients must have to query the content provider.
-See also the <code><a href="#prmsn">permission</a></code> and
+<dd>A permission that clients must have to query the content provider.
+See also the <code><a href="#prmsn">permission</a></code> and
<code><a href="#wprmsn">writePermission</a></code> attributes.</dd>
<dt><a name="sync"></a>{@code android:syncable}</dt>
-<dd>Whether or not the data under the content provider's control
-is to be synchronized with data on a server &mdash; "{@code true}"
+<dd>Whether or not the data under the content provider's control
+is to be synchronized with data on a server &mdash; "{@code true}"
if it is to be synchronized, and "{@code false}" if not.</dd>
<dt><a name="wprmsn"></a>{@code android:writePermission}</dt>
-<dd>A permission that clients must have to make changes to the data
-controlled by the content provider.
-See also the <code><a href="#prmsn">permission</a></code> and
+<dd>A permission that clients must have to make changes to the data
+controlled by the content provider.
+See also the <code><a href="#prmsn">permission</a></code> and
<code><a href="#rprmsn">readPermission</a></code> attributes.</dd>
</dl></dd>
diff --git a/docs/html/guide/topics/manifest/receiver-element.jd b/docs/html/guide/topics/manifest/receiver-element.jd
index 081a191c38e1..800ee8a6e4c7 100644
--- a/docs/html/guide/topics/manifest/receiver-element.jd
+++ b/docs/html/guide/topics/manifest/receiver-element.jd
@@ -24,14 +24,14 @@ parent.link=manifest-intro.html
<dt>description:</dt>
<dd itemprop="description">Declares a broadcast receiver (a {@link android.content.BroadcastReceiver}
-subclass) as one of the application's components. Broadcast receivers enable
-applications to receive intents that are broadcast by the system or by other
+subclass) as one of the application's components. Broadcast receivers enable
+applications to receive intents that are broadcast by the system or by other
applications, even when other components of the application are not running.
<p>
There are two ways to make a broadcast receiver known to the system: One is
declare it in the manifest file with this element. The other is to create
-the receiver dynamically in code and register it with the <code>{@link
+the receiver dynamically in code and register it with the <code>{@link
android.content.Context#registerReceiver Context.registerReceiver()}</code>
method. See the {@link android.content.BroadcastReceiver} class description
for more on dynamically created receivers.
@@ -40,14 +40,14 @@ for more on dynamically created receivers.
<dt>attributes:</dt>
<dd><dl class="attr">
<dt><a name="enabled"></a>{@code android:enabled}</dt>
-<dd>Whether or not the broadcast receiver can be instantiated by the system &mdash;
-"{@code true}" if it can be, and "{@code false}" if not. The default value
+<dd>Whether or not the broadcast receiver can be instantiated by the system &mdash;
+"{@code true}" if it can be, and "{@code false}" if not. The default value
is "{@code true}".
<p>
-The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
-application components, including broadcast receivers. The
+The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
+application components, including broadcast receivers. The
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> and
{@code <receiver>} attributes must both be "{@code true}" for
the broadcast receiver to be enabled. If either is "{@code false}", it is
@@ -55,72 +55,72 @@ disabled; it cannot be instantiated.
</p></dd>
<dt><a name="exported"></a>{@code android:exported}</dt>
-<dd>Whether or not the broadcast receiver can receive messages from sources
-outside its application &mdash; "{@code true}" if it can, and "{@code false}"
-if not. If "{@code false}", the only messages the broadcast receiver can
-receive are those sent by components of the same application or applications
-with the same user ID.
+<dd>Whether or not the broadcast receiver can receive messages from sources
+outside its application &mdash; "{@code true}" if it can, and "{@code false}"
+if not. If "{@code false}", the only messages the broadcast receiver can
+receive are those sent by components of the same application or applications
+with the same user ID.
<p>
-The default value depends on whether the broadcast receiver contains intent filters.
+The default value depends on whether the broadcast receiver contains intent filters.
The absence of any filters means that it can be invoked only by Intent objects that
-specify its exact class name. This implies that the receiver is intended only for
-application-internal use (since others would not normally know the class name).
+specify its exact class name. This implies that the receiver is intended only for
+application-internal use (since others would not normally know the class name).
So in this case, the default value is "{@code false}".
-On the other hand, the presence of at least one filter implies that the broadcast
-receiver is intended to receive intents broadcast by the system or other applications,
+On the other hand, the presence of at least one filter implies that the broadcast
+receiver is intended to receive intents broadcast by the system or other applications,
so the default value is "{@code true}".
</p>
<p>
-This attribute is not the only way to limit a broadcast receiver's external exposure.
-You can also use a permission to limit the external entities that can send it messages
+This attribute is not the only way to limit a broadcast receiver's external exposure.
+You can also use a permission to limit the external entities that can send it messages
(see the <code><a href="{@docRoot}guide/topics/manifest/receiver-element.html#prmsn">permission</a></code> attribute).
</p></dd>
<dt><a name="icon"></a>{@code android:icon}</dt>
-<dd>An icon representing the broadcast receiver. This attribute must be set
-as a reference to a drawable resource containing the image definition.
-If it is not set, the icon specified for the application as a whole is used
-instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+<dd>An icon representing the broadcast receiver. This attribute must be set
+as a reference to a drawable resource containing the image definition.
+If it is not set, the icon specified for the application as a whole is used
+instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
element's <code><a href="{@docRoot}guide/topics/manifest/application-element.html#icon">icon</a></code> attribute).
<p>
-The broadcast receiver's icon &mdash; whether set here or by the
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the
-default icon for all the receiver's intent filters (see the
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#icon">icon</a></code> attribute).
+The broadcast receiver's icon &mdash; whether set here or by the
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the
+default icon for all the receiver's intent filters (see the
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#icon">icon</a></code> attribute).
</p></dd>
<dt><a name="label"></a>{@code android:label}</dt>
-<dd>A user-readable label for the broadcast receiver. If this attribute is not
-set, the label set for the application as a whole is
-used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
+<dd>A user-readable label for the broadcast receiver. If this attribute is not
+set, the label set for the application as a whole is
+used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#label">label</a></code> attribute).
<p>
-The broadcast receiver's label &mdash; whether set here or by the
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the
-default label for all the receiver's intent filters (see the
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#label">label</a></code> attribute).
+The broadcast receiver's label &mdash; whether set here or by the
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the
+default label for all the receiver's intent filters (see the
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#label">label</a></code> attribute).
</p>
<p>
The label should be set as a reference to a string resource, so that
-it can be localized like other strings in the user interface.
-However, as a convenience while you're developing the application,
+it can be localized like other strings in the user interface.
+However, as a convenience while you're developing the application,
it can also be set as a raw string.
</p></dd>
<dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name of the class that implements the broadcast receiver, a subclass of
-{@link android.content.BroadcastReceiver}. This should be a fully qualified
-class name (such as, "{@code com.example.project.ReportReceiver}"). However,
-as a shorthand, if the first character of the name is a period (for example,
-"{@code . ReportReceiver}"), it is appended to the package name specified in
-the <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
+<dd>The name of the class that implements the broadcast receiver, a subclass of
+{@link android.content.BroadcastReceiver}. This should be a fully qualified
+class name (such as, "{@code com.example.project.ReportReceiver}"). However,
+as a shorthand, if the first character of the name is a period (for example,
+"{@code . ReportReceiver}"), it is appended to the package name specified in
+the <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
<p>Once you publish your application, you <a
href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">should not
@@ -132,38 +132,38 @@ There is no default. The name must be specified.
</p></dd>
<dt><a name="prmsn"></a>{@code android:permission}</dt>
-<dd>The name of a permission that broadcasters must have to send a
+<dd>The name of a permission that broadcasters must have to send a
message to the broadcast receiver.
-If this attribute is not set, the permission set by the
+If this attribute is not set, the permission set by the
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#prmsn">permission</a></code> attribute applies
-to the broadcast receiver. If neither attribute is set, the receiver
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#prmsn">permission</a></code> attribute applies
+to the broadcast receiver. If neither attribute is set, the receiver
is not protected by a permission.
<p>
-For more information on permissions, see the
-<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a>
-section in the introduction and a separate document,
+For more information on permissions, see the
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a>
+section in the introduction and a separate document,
<a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>.
</p></dd>
<dt><a name="proc"></a>{@code android:process}</dt>
-<dd>The name of the process in which the broadcast receiver should run.
-Normally, all components of an application run in the default process created
-for the application. It has the same name as the application package. The
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code> attribute can set a different
+<dd>The name of the process in which the broadcast receiver should run.
+Normally, all components of an application run in the default process created
+for the application. It has the same name as the application package. The
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code> attribute can set a different
default for all components. But each component can override the default
-with its own {@code process} attribute, allowing you to spread your
+with its own {@code process} attribute, allowing you to spread your
application across multiple processes.
<p>
-If the name assigned to this attribute begins with a colon (':'), a new
-process, private to the application, is created when it's needed and
+If the name assigned to this attribute begins with a colon (':'), a new
+process, private to the application, is created when it's needed and
the broadcast receiver runs in that process.
-If the process name begins with a lowercase character, the receiver will run
+If the process name begins with a lowercase character, the receiver will run
in a global process of that name, provided that it has permission to do so.
-This allows components in different applications to share a process, reducing
+This allows components in different applications to share a process, reducing
resource usage.
</p></dd>
</dl></dd>
diff --git a/docs/html/guide/topics/manifest/service-element.jd b/docs/html/guide/topics/manifest/service-element.jd
index fca85f5793c8..9197a7f03435 100644
--- a/docs/html/guide/topics/manifest/service-element.jd
+++ b/docs/html/guide/topics/manifest/service-element.jd
@@ -25,108 +25,108 @@ parent.link=manifest-intro.html
<dt>description:</dt>
<dd itemprop="description">Declares a service (a {@link android.app.Service} subclass) as one
-of the application's components. Unlike activities, services lack a
-visual user interface. They're used to implement long-running background
-operations or a rich communications API that can be called by other
+of the application's components. Unlike activities, services lack a
+visual user interface. They're used to implement long-running background
+operations or a rich communications API that can be called by other
applications.
<p>
All services must be represented by {@code <service>} elements in
-the manifest file. Any that are not declared there will not be seen
+the manifest file. Any that are not declared there will not be seen
by the system and will never be run.
</p></dd>
<dt>attributes:</dt>
<dd><dl class="attr">
<dt><a name="enabled"></a>{@code android:enabled}</dt>
-<dd>Whether or not the service can be instantiated by the system &mdash;
-"{@code true}" if it can be, and "{@code false}" if not. The default value
+<dd>Whether or not the service can be instantiated by the system &mdash;
+"{@code true}" if it can be, and "{@code false}" if not. The default value
is "{@code true}".
<p>
-The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
-application components, including services. The
+The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
+application components, including services. The
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> and {@code <service>}
attributes must both be "{@code true}" (as they both
-are by default) for the service to be enabled. If either is
+are by default) for the service to be enabled. If either is
"{@code false}", the service is disabled; it cannot be instantiated.
</p></dd>
<dt><a name="exported"></a>{@code android:exported}</dt>
-<dd>Whether or not components of other applications can invoke
-the service or interact with it &mdash; "{@code true}" if they can, and
-"{@code false}" if not. When the value is "{@code false}", only
-components of the same application or applications
+<dd>Whether or not components of other applications can invoke
+the service or interact with it &mdash; "{@code true}" if they can, and
+"{@code false}" if not. When the value is "{@code false}", only
+components of the same application or applications
with the same user ID can start the service or bind to it.
<p>
-The default value depends on whether the service contains intent filters. The
-absence of any filters means that it can be invoked only by specifying
-its exact class name. This implies that the service is intended only for
-application-internal use (since others would not know the class name). So in
+The default value depends on whether the service contains intent filters. The
+absence of any filters means that it can be invoked only by specifying
+its exact class name. This implies that the service is intended only for
+application-internal use (since others would not know the class name). So in
this case, the default value is "{@code false}".
-On the other hand, the presence of at least one filter implies that the service
+On the other hand, the presence of at least one filter implies that the service
is intended for external use, so the default value is "{@code true}".
</p>
<p>
This attribute is not the only way to limit the exposure of a service to other
-applications. You can also use a permission to limit the external entities that
-can interact with the service (see the <code><a href="{@docRoot}guide/topics/manifest/service-element.html#prmsn">permission</a></code>
+applications. You can also use a permission to limit the external entities that
+can interact with the service (see the <code><a href="{@docRoot}guide/topics/manifest/service-element.html#prmsn">permission</a></code>
attribute).
</p></dd>
<dt><a name="icon"></a>{@code android:icon}</dt>
-<dd>An icon representing the service. This attribute must be set as a
-reference to a drawable resource containing the image definition.
-If it is not set, the icon specified for the application
-as a whole is used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+<dd>An icon representing the service. This attribute must be set as a
+reference to a drawable resource containing the image definition.
+If it is not set, the icon specified for the application
+as a whole is used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
element's <code><a href="{@docRoot}guide/topics/manifest/application-element.html#icon">icon</a></code> attribute).
</p>
<p>
-The service's icon &mdash; whether set here or by the
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the
-default icon for all the service's intent filters (see the
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
+The service's icon &mdash; whether set here or by the
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the
+default icon for all the service's intent filters (see the
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#icon">icon</a></code> attribute).
-</p></dd>
+</p></dd>
<dt><a name="isolated"></a>{@code android:isolatedProcess}</dt>
<dd>If set to true, this service will run under a special process that is isolated from the
rest of the system and has no permissions of its own.
- The only communication with it is through the Service API
+ The only communication with it is through the Service API
(binding and starting).</dd>
<dt><a name="label"></a>{@code android:label}</dt>
-<dd>A name for the service that can be displayed to users.
-If this attribute is not set, the label set for the application as a whole is
-used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
+<dd>A name for the service that can be displayed to users.
+If this attribute is not set, the label set for the application as a whole is
+used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#label">label</a></code> attribute).
<p>
-The service's label &mdash; whether set here or by the
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the
-default label for all the service's intent filters (see the
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#label">label</a></code> attribute).
+The service's label &mdash; whether set here or by the
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the
+default label for all the service's intent filters (see the
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#label">label</a></code> attribute).
</p>
<p>
The label should be set as a reference to a string resource, so that
-it can be localized like other strings in the user interface.
-However, as a convenience while you're developing the application,
+it can be localized like other strings in the user interface.
+However, as a convenience while you're developing the application,
it can also be set as a raw string.
</p></dd>
<dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name of the {@link android.app.Service} subclass that implements
-the service. This should be a fully qualified class name (such as,
-"{@code com.example.project.RoomService}"). However, as a shorthand, if
+<dd>The name of the {@link android.app.Service} subclass that implements
+the service. This should be a fully qualified class name (such as,
+"{@code com.example.project.RoomService}"). However, as a shorthand, if
the first character of the name is a period (for example, "{@code .RoomService}"),
-it is appended to the package name specified in the
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
+it is appended to the package name specified in the
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
<p>Once you publish your application, you <a
href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">should not
@@ -138,8 +138,8 @@ There is no default. The name must be specified.
</p></dd>
<dt><a name="prmsn"></a>{@code android:permission}</dt>
-<dd>The name of a permission that an entity must have in order to
-launch the service or bind to it. If a caller of
+<dd>The name of a permission that an entity must have in order to
+launch the service or bind to it. If a caller of
<code>{@link android.content.Context#startService startService()}</code>,
<code>{@link android.content.Context#bindService bindService()}</code>, or
<code>{@link android.content.Context#stopService stopService()}</code>,
@@ -147,38 +147,38 @@ has not been granted this permission, the method will not work and the
Intent object will not be delivered to the service.
<p>
-If this attribute is not set, the permission set by the
+If this attribute is not set, the permission set by the
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#prmsn">permission</a></code>
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#prmsn">permission</a></code>
attribute applies to the service. If neither attribute is set, the service is
not protected by a permission.
</p>
<p>
-For more information on permissions, see the
-<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#perms">Permissions</a>
-section in the introduction and a separate document,
+For more information on permissions, see the
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#perms">Permissions</a>
+section in the introduction and a separate document,
<a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>.
</p></dd>
<dt><a name="proc"></a>{@code android:process}</dt>
-<dd>The name of the process where the service is to run. Normally,
-all components of an application run in the default process created for the
-application. It has the same name as the application package. The
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code>
-attribute can set a different
+<dd>The name of the process where the service is to run. Normally,
+all components of an application run in the default process created for the
+application. It has the same name as the application package. The
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code>
+attribute can set a different
default for all components. But component can override the default
-with its own {@code process} attribute, allowing you to spread your
+with its own {@code process} attribute, allowing you to spread your
application across multiple processes.
<p>
-If the name assigned to this attribute begins with a colon (':'), a new
-process, private to the application, is created when it's needed and
+If the name assigned to this attribute begins with a colon (':'), a new
+process, private to the application, is created when it's needed and
the service runs in that process.
-If the process name begins with a lowercase character, the service will run
+If the process name begins with a lowercase character, the service will run
in a global process of that name, provided that it has permission to do so.
-This allows components in different applications to share a process, reducing
+This allows components in different applications to share a process, reducing
resource usage.
</p></dd>
</dl></dd>
diff --git a/docs/html/guide/topics/manifest/supports-gl-texture-element.jd b/docs/html/guide/topics/manifest/supports-gl-texture-element.jd
index ab751c217f05..a72fc818b74b 100644
--- a/docs/html/guide/topics/manifest/supports-gl-texture-element.jd
+++ b/docs/html/guide/topics/manifest/supports-gl-texture-element.jd
@@ -3,16 +3,16 @@ parent.title=The AndroidManifest.xml File
parent.link=manifest-intro.html
@jd:body
- <div class="sidebox-wrapper">
+ <div class="sidebox-wrapper">
<div class="sidebox">
- <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;">
- <p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
+ <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;">
+ <p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
<p style="padding-top:1em;">Google Play filters applications according
to the texture compression formats that they support, to ensure that
they can be installed only on devices that can handle their textures
properly. You can use texture compression filtering
as a way of targeting specific device types, based on GPU platform.</p>
-
+
<p style="margin-top:1em;">For important information about how
Google Play uses <code>&lt;supports-gl-texture&gt;</code> elements as
the basis for filtering, please read <a href="#market-texture-filtering">Google
diff --git a/docs/html/guide/topics/manifest/supports-screens-element.jd b/docs/html/guide/topics/manifest/supports-screens-element.jd
index a4546fa98f12..ce2bb8d20fd0 100644
--- a/docs/html/guide/topics/manifest/supports-screens-element.jd
+++ b/docs/html/guide/topics/manifest/supports-screens-element.jd
@@ -74,7 +74,7 @@ screens.</p>
transition from Android 1.5 to 1.6, when support for multiple screens was first introduced. You
should not use it.</p>
</dd>
-
+
<dt><a name="small"></a>{@code android:smallScreens}</dt>
<dd>Indicates whether the application supports smaller screen form-factors.
A small screen is defined as one with a smaller aspect ratio than
@@ -84,14 +84,14 @@ should not use it.</p>
the platform can do to make such an application work on a smaller screen. This is {@code "true"} by
default.
</dd>
-
+
<dt><a name="normal"></a>{@code android:normalScreens}</dt>
<dd>Indicates whether an application supports the "normal" screen
form-factors. Traditionally this is an HVGA medium density
screen, but WQVGA low density and WVGA high density are also
considered to be normal. This attribute is "true" by default.
</dd>
-
+
<dt><a name="large"></a>{@code android:largeScreens}</dt>
<dd>Indicates whether the application supports larger screen form-factors.
A large screen is defined as a screen that is significantly larger
@@ -116,7 +116,7 @@ generally enable <a href="{@docRoot}guide/practices/screen-compat-mode.html">scr
compatibility mode</a>.</p>
<p>This attribute was introduced in API level 9.</p>
</dd>
-
+
<dt><a name="any"></a>{@code android:anyDensity}</dt>
<dd>Indicates whether the application includes resources to accommodate any screen
density.
@@ -127,14 +127,14 @@ is if your app directly manipulates bitmaps (see the <a
href="{@docRoot}guide/practices/screens_support.html#DensityConsiderations">Supporting Multiple
Screens</a> document for more information).</p>
</dd>
-
+
<dt id="requiresSmallest">{@code android:requiresSmallestWidthDp}</dt>
<dd>Specifies the minimum smallestWidth required. The smallestWidth is the shortest dimension of
the screen space (in {@code dp} units) that must be available to your application UI&mdash;that is,
the shortest of the available screen's two dimensions. So, in order for a device to be considered
compatible with your application, the device's smallestWidth must be equal to or greater than this
value. (Usually, the value you supply for this is the "smallest width" that your layout supports,
-regardless of the screen's current orientation.)
+regardless of the screen's current orientation.)
<p>For example, a typical handset screen has a smallestWidth of 320dp, a 7" tablet has a
smallestWidth of 600dp, and a 10" tablet has a smallestWidth of 720dp. These values are generally
@@ -209,7 +209,7 @@ screens with a 320dp width, so screen compatibility mode is not applied if your
android:largestWidthLimitDp} is larger than 320.</p>
<p>This attribute was introduced in API level 13.</p>
</dd>
-
+
</dl></dd>
diff --git a/docs/html/guide/topics/manifest/uses-feature-element.jd b/docs/html/guide/topics/manifest/uses-feature-element.jd
index 5d163c0d5d56..06703486e914 100755
--- a/docs/html/guide/topics/manifest/uses-feature-element.jd
+++ b/docs/html/guide/topics/manifest/uses-feature-element.jd
@@ -33,7 +33,7 @@ page.tags=filtering,features,google play filters,permissions
<p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
<p style="padding-top:1em;">Google Play uses the <code>&lt;uses-feature&gt;</code>
elements declared in your app manifest to filter your app from devices
- that do not meet it's hardware and software feature requirements. </p>
+ that do not meet its hardware and software feature requirements. </p>
<p style="margin-top:1em;">By specifying the features that your application requires,
you enable Google Play to present your application only to users whose
@@ -150,23 +150,21 @@ device compatibility.</p>
<dd>
Boolean value that indicates whether the application requires the feature
specified in <code>android:name</code>.
- </dd>
-</dl>
-<ul>
-<li>When you declare <code>android:required="true"</code> for a feature,
-you are specifying that the application <em>cannot function, or is not
-designed to function</em>, when the specified feature is not present on the
-device. </li>
+ <ul>
+ <li>When you declare <code>android:required="true"</code> for a feature,
+ you are specifying that the application <em>cannot function, or is not
+ designed to function</em>, when the specified feature is not present on the
+ device. </li>
-<li>When you declare <code>android:required="false"</code> for a feature, it
-means that the application <em>prefers to use the feature</em> if present on
-the device, but that it <em>is designed to function without the specified
-feature</em>, if necessary. </li>
+ <li>When you declare <code>android:required="false"</code> for a feature, it
+ means that the application <em>prefers to use the feature</em> if present on
+ the device, but that it <em>is designed to function without the specified
+ feature</em>, if necessary. </li>
-</ul>
+ </ul>
-<p>The default value for <code>android:required</code> if not declared is
-<code>"true"</code>.</p>
+ <p>The default value for <code>android:required</code> if not declared is
+ <code>"true"</code>.</p>
</dd>
<dt><a name="glEsVersion"></a><code>android:glEsVersion</code></dt>
diff --git a/docs/html/guide/topics/manifest/uses-library-element.jd b/docs/html/guide/topics/manifest/uses-library-element.jd
index aa7ca8287eda..f8d8e62faf58 100644
--- a/docs/html/guide/topics/manifest/uses-library-element.jd
+++ b/docs/html/guide/topics/manifest/uses-library-element.jd
@@ -3,10 +3,10 @@ parent.title=The AndroidManifest.xml File
parent.link=manifest-intro.html
@jd:body
-<div class="sidebox-wrapper">
+<div class="sidebox-wrapper">
<div class="sidebox">
- <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;">
- <p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
+ <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;">
+ <p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
<p style="padding-top:1em;">Google Play uses the &lt;uses-library&gt; elements declared
in your app manifest to filter your app from devices that do not meet it's library
requirements. For more information about filtering, see the topic
diff --git a/docs/html/guide/topics/manifest/uses-permission-element.jd b/docs/html/guide/topics/manifest/uses-permission-element.jd
index 32fe21eb89ea..03a0dc15d75f 100644
--- a/docs/html/guide/topics/manifest/uses-permission-element.jd
+++ b/docs/html/guide/topics/manifest/uses-permission-element.jd
@@ -5,10 +5,10 @@ parent.link=manifest-intro.html
<dl class="xml">
-<div class="sidebox-wrapper">
+<div class="sidebox-wrapper">
<div class="sidebox">
-<img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;">
-<p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
+<img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;">
+<p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
<p style="clear:left;">In some cases, the permissions that you request
through <code>&lt;uses-permission&gt;</code> can affect how
@@ -43,24 +43,24 @@ href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions-feat
<dt>description:</dt>
<dd itemprop="description">Requests a permission that the application must be granted in
-order for it to operate correctly. Permissions are granted by the user when the
+order for it to operate correctly. Permissions are granted by the user when the
application is installed (on devices running Android 5.1 and lower) or while the app is running (on devices running Android 6.0 and higher).
<p>
-For more information on permissions, see the
-<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#perms">Permissions</a></code>
+For more information on permissions, see the
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#perms">Permissions</a></code>
section in the introduction and the separate
<a href="{@docRoot}guide/topics/security/permissions.html">System
Permissions</a> API guide.
-A list of permissions defined by the base platform can be found at
+A list of permissions defined by the base platform can be found at
{@link android.Manifest.permission android.Manifest.permission}.
<dt>attributes:</dt>
<dd><dl class="attr">
<dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name of the permission. It can be a permission defined by the
-application with the <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-element, a permission defined by another application, or one of the
+<dd>The name of the permission. It can be a permission defined by the
+application with the <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+element, a permission defined by another application, or one of the
standard system permissions (such as
{@link android.Manifest.permission#CAMERA "android.permission.CAMERA"}
or {@link android.Manifest.permission#READ_CONTACTS
diff --git a/docs/html/guide/topics/media/index.jd b/docs/html/guide/topics/media/index.jd
index a750c9a8809f..c66ab309515c 100644
--- a/docs/html/guide/topics/media/index.jd
+++ b/docs/html/guide/topics/media/index.jd
@@ -1,6 +1,6 @@
page.title=Media and Camera
page.landing=true
-page.landing.intro=Add video, audio, and photo capabilities to your app with Android's robust APIs for playing and recording media.
+page.landing.intro=Add video, audio, and photo capabilities to your app with Android's robust APIs for playing and recording media.
page.landing.image=
@jd:body
diff --git a/docs/html/guide/topics/media/jet/jetcreator_manual.jd b/docs/html/guide/topics/media/jet/jetcreator_manual.jd
index 214c79eed7b3..c2df25b1a435 100644
--- a/docs/html/guide/topics/media/jet/jetcreator_manual.jd
+++ b/docs/html/guide/topics/media/jet/jetcreator_manual.jd
@@ -21,7 +21,7 @@ format, that respond in real-time to game play events and user interaction.</p>
<p>JET works in conjunction with SONiVOX's
Embedded Audio Synthesizer (EAS) which is the MIDI
playback device for Android. Both the
-JET and EAS engines are integrated into the Android embedded platform through the
+JET and EAS engines are integrated into the Android embedded platform through the
{@link android.media.JetPlayer} class, as well
as inherent in the JET Creator application. As such, the JET content author can
be sure that the playback will sound exactly the same in both the JET Creator
@@ -387,34 +387,34 @@ JET Creator projects to other people.</p>
you first launch JET Creator you are presented with an open dialog like the
following.</p>
-
+
<p><img border=0 width=450 height=285
src="{@docRoot}images/jet/jc_open_dlg.png"
</p>
-
-
+
+
<p> <b>Open</b> will open an existing .jtc (JET Creator file) file. Use the browser
button to browse to the directory where you have saved your .jtc file.</p>
-
+
<p> <b>New</b> will create a new .jtc file.</p>
-
+
<p> <b>Import</b> will import a JET Archive (.zip) file.</p>
-
+
<p> <b>Cancel</b> will cancel the dialog and exit the application.</p>
-
-
+
+
<h1>5 Main Window </h1>
@@ -457,16 +457,16 @@ Creator Main Window<o:p></o:p></i></p>
<p>The buttons along the left side of main
window do the following:</p>
-<p>Add:
+<p>Add:
Displays the segment or event window for adding a new segment or event</p>
-<p>Revise:
+<p>Revise:
Displays the segment or event window for updating an existing segment or event</p>
-<p>Delete:
+<p>Delete:
Deletes the selected segment or event (will ask for confirmation)</p>
-<p>Move:
+<p>Move:
Displays the move window which allows you to move selected segments or events
in time</p>
@@ -476,11 +476,11 @@ in time</p>
<p>Dequeue All: Dequeues
(deselects) all segments</p>
-<p>Play:
+<p>Play:
Starts playback of all queued segments. This button changes to Stop if any
segments are playing</p>
-<p>Audition:
+<p>Audition:
Displays the Audition window (see below)</p>
diff --git a/docs/html/guide/topics/media/jetplayer.jd b/docs/html/guide/topics/media/jetplayer.jd
index f3d55f90f4ae..0f3212188c6f 100644
--- a/docs/html/guide/topics/media/jetplayer.jd
+++ b/docs/html/guide/topics/media/jetplayer.jd
@@ -1,5 +1,5 @@
page.title=JetPlayer
-parent.title=Multimedia and Camera
+parent.title=Multimedia and Camera
parent.link=index.html
@jd:body
diff --git a/docs/html/guide/topics/processes/process-lifecycle.jd b/docs/html/guide/topics/processes/process-lifecycle.jd
index 0380f945aef0..47ca1ec8912b 100644
--- a/docs/html/guide/topics/processes/process-lifecycle.jd
+++ b/docs/html/guide/topics/processes/process-lifecycle.jd
@@ -48,7 +48,7 @@ following conditions hold:
at the top of the screen that the user is interacting with (its
{@link android.app.Activity#onResume} method has been called).</li>
<li> It has a {@link android.content.BroadcastReceiver} that is currently running
- (its {@link android.content.BroadcastReceiver#onReceive
+ (its {@link android.content.BroadcastReceiver#onReceive
BroadcastReceiver.onReceive()} method is executing).</li>
<li>It has a {@link android.app.Service} that is currently executing code
in one of its callbacks ({@link android.app.Service#onCreate Service.onCreate()},
diff --git a/docs/html/guide/topics/providers/calendar-provider.jd b/docs/html/guide/topics/providers/calendar-provider.jd
index 3cd4511de9b0..485f3c167630 100644
--- a/docs/html/guide/topics/providers/calendar-provider.jd
+++ b/docs/html/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@ page.title=Calendar Provider
<li><a href="#intent-view">Using intents to view calendar data</a></li>
</ol>
</li>
-
+
<li><a href="#sync-adapter">Sync Adapters</a></li>
</ol>
@@ -63,8 +63,8 @@ operations on calendars, events, attendees, reminders, and so on.</p>
<p>The Calender Provider API can be used by applications and sync adapters. The
rules vary depending on what type of program is making the calls. This document
-focuses primarily on using the Calendar Provider API as an application. For
-a discussion of how sync adapters are different, see
+focuses primarily on using the Calendar Provider API as an application. For
+a discussion of how sync adapters are different, see
<a href="#sync-adapter">Sync Adapters</a>.</p>
@@ -79,17 +79,17 @@ nor does it need to provide a user interface to view or create events.</p>
<h2 id="overview">Basics</h2>
-<p><a href="{@docRoot}guide/topics/providers/content-providers.html">Content providers</a> store data and make it accessible to
+<p><a href="{@docRoot}guide/topics/providers/content-providers.html">Content providers</a> store data and make it accessible to
applications. The content providers offered by the Android platform (including the Calendar Provider) typically expose data as a set of tables based on a
relational database model, where each row is a record and each column is data of
a particular type and meaning. Through the Calendar Provider API, applications
and sync adapters can get read/write access to the database tables that hold a
user's calendar data.</p>
-<p>Every content provider exposes a public URI (wrapped as a
-{@link android.net.Uri}
+<p>Every content provider exposes a public URI (wrapped as a
+{@link android.net.Uri}
object) that uniquely identifies its data set. A content provider that controls
- multiple data sets (multiple tables) exposes a separate URI for each one. All
+ multiple data sets (multiple tables) exposes a separate URI for each one. All
URIs for providers begin with the string &quot;content://&quot;. This
identifies the data as being controlled by a content provider. The Calendar
Provider defines constants for the URIs for each of its classes (tables). These
@@ -113,26 +113,26 @@ main tables and the fields that link them to each other.</p>
</tr>
<tr>
<td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-
- <td>This table holds
+
+ <td>This table holds
the calendar-specific information. Each row in this table contains the details for
a single calendar, such as the name, color, sync information, and so on.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Events}</td>
-
+
<td>This table holds the
event-specific information. Each row in this table has the information for a single
event&mdash;for example, event title, location, start time, end
time, and so on. The event can occur one-time or can recur multiple times. Attendees,
-reminders, and extended properties are stored in separate tables.
-They each have an {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+reminders, and extended properties are stored in separate tables.
+They each have an {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
that references the {@link android.provider.BaseColumns#_ID} in the Events table.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances}</td>
-
+
<td>This table holds the
start and end time for each occurrence of an event. Each row in this table
represents a single event occurrence. For one-time events there is a 1:1 mapping
@@ -141,7 +141,7 @@ of instances to events. For recurring events, multiple rows are automatically
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Attendees}</td>
-
+
<td>This table holds the
event attendee (guest) information. Each row represents a single guest of an
event. It specifies the type of guest and the guest's attendance response
@@ -149,17 +149,17 @@ for the event.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Reminders}</td>
-
+
<td>This table holds the
alert/notification data. Each row represents a single alert for an event. An
event can have multiple reminders. The maximum number of reminders per event is
-specified in
-{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS},
+specified in
+{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS},
which is set by the sync adapter that
owns the given calendar. Reminders are specified in minutes before the event
and have a method that determines how the user will be alerted.</td>
</tr>
-
+
</table>
<p>The Calendar Provider API is designed to be flexible and powerful. At the
@@ -178,9 +178,9 @@ Intents</a>.</p>
<li><strong>Sync adapters.</strong> A sync adapter synchronizes the calendar data
-on a user's device with another server or data source. In the
+on a user's device with another server or data source. In the
{@link android.provider.CalendarContract.Calendars} and
-{@link android.provider.CalendarContract.Events} tables,
+{@link android.provider.CalendarContract.Events} tables,
there are columns that are reserved for the sync adapters to use.
The provider and applications should not modify them. In fact, they are not
visible unless they are accessed as a sync adapter. For more information about
@@ -209,9 +209,9 @@ to delete, insert or update calendar data:</p>
<h2 id="calendar">Calendars Table</h2>
-<p>The {@link android.provider.CalendarContract.Calendars} table contains details
+<p>The {@link android.provider.CalendarContract.Calendars} table contains details
for individual calendars. The following
-Calendars columns are writable by both an application and a <a href="#sync-adapter">sync adapter</a>.
+Calendars columns are writable by both an application and a <a href="#sync-adapter">sync adapter</a>.
For a full list of supported fields, see the
{@link android.provider.CalendarContract.Calendars} reference.</p>
<table>
@@ -229,7 +229,7 @@ For a full list of supported fields, see the
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-
+
<td>A boolean indicating whether the calendar is selected to be displayed. A
value of 0 indicates that events associated with this calendar should not be
shown. A value of 1 indicates that events associated with this calendar should
@@ -240,7 +240,7 @@ android.provider.CalendarContract.Instances} table.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-
+
<td>A boolean indicating whether the calendar should be synced and have its
events stored on the device. A value of 0 says do not sync this calendar or
store its events on the device. A value of 1 says sync events for this calendar
@@ -253,8 +253,8 @@ and store its events on the device.</td>
<p>Here is an example that shows how to get the calendars that are owned by a particular
user. For simplicity's sake, in this example the query operation is shown in the
user interface thread ("main thread"). In practice, this should be done in an asynchronous
-thread instead of on the main thread. For more discussion, see
-<a href="{@docRoot}guide/components/loaders.html">Loaders</a>. If you are not just
+thread instead of on the main thread. For more discussion, see
+<a href="{@docRoot}guide/components/loaders.html">Loaders</a>. If you are not just
reading data but modifying it, see {@link android.content.AsyncQueryHandler}.
</p>
@@ -268,18 +268,18 @@ public static final String[] EVENT_PROJECTION = new String[] {
Calendars.CALENDAR_DISPLAY_NAME, // 2
Calendars.OWNER_ACCOUNT // 3
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
-
+
<div class="sidebox-wrapper"> <div class="sidebox"> <h3>Why must you include
ACCOUNT_TYPE?</h3> <p>If you query on a {@link
android.provider.CalendarContract.Calendars#ACCOUNT_NAME
-Calendars.ACCOUNT_NAME}, you must also include
+Calendars.ACCOUNT_NAME}, you must also include
{@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}
in the selection. That is because a given account is
only considered unique given both its <code>ACCOUNT_NAME</code> and its
@@ -289,7 +289,7 @@ account authenticator that was used when the account was registered with the
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} for calendars not
associated with a device account. {@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} accounts do not get
-synced.</p> </div> </div>
+synced.</p> </div> </div>
<p> In the next part of the example, you construct your query. The selection
@@ -301,59 +301,59 @@ calendars that have the <code>ACCOUNT_NAME</code>
has viewed, not just calendars the user owns, omit the <code>OWNER_ACCOUNT</code>.
The query returns a {@link android.database.Cursor}
object that you can use to traverse the result set returned by the database
-query. For more discussion of using queries in content providers,
+query. For more discussion of using queries in content providers,
see <a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>.</p>
<pre>// Run query
Cursor cur = null;
ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+Uri uri = Calendars.CONTENT_URI;
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
+ Calendars.ACCOUNT_TYPE + " = ?) AND ("
+ Calendars.OWNER_ACCOUNT + " = ?))";
String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
- "sampleuser@gmail.com"};
-// Submit the query and get a Cursor object back.
+ "sampleuser@gmail.com"};
+// Submit the query and get a Cursor object back.
cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
<p>This next section uses the cursor to step through the result set. It uses the
constants that were set up at the beginning of the example to return the values
for each field.</p>
-
+
<pre>// Use the cursor to step through the returned records
while (cur.moveToNext()) {
long calID = 0;
String displayName = null;
String accountName = null;
String ownerName = null;
-
+
// Get the field values
calID = cur.getLong(PROJECTION_ID_INDEX);
displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
-
+
// Do something with the values...
...
}
</pre>
-
+
<h3 id="modify-calendar">Modifying a calendar</h3>
<p>To perform an update of an calendar, you can provide the {@link
android.provider.BaseColumns#_ID} of the calendar either as an appended ID to
-the Uri
+the Uri
-({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
or as the first selection item. The selection
should start with <code>&quot;_id=?&quot;</code>, and the first
<code>selectionArg</code> should be the {@link
-android.provider.BaseColumns#_ID} of the calendar.
+android.provider.BaseColumns#_ID} of the calendar.
You can also do updates by encoding the ID in the URI. This example changes a
-calendar's display name using the
-({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+calendar's display name using the
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
approach:</p>
<pre>private static final String DEBUG_TAG = "MyActivity";
@@ -375,7 +375,7 @@ an application needs to create a local calendar, it can do this by performing
the calendar insertion as a sync adapter, using an {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} of {@link
android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}.
-{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
+{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
is a special account type for calendars that are not
associated with a device account. Calendars of this type are not synced to a server. For a
discussion of sync adapters, see <a href="#sync-adapter">Sync Adapters</a>.</p>
@@ -434,7 +434,7 @@ android.provider.CalendarContract.Events} reference.</p>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
-
+
<td>The duration of the event in <a
href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a> format.
For example, a value of <code>&quot;PT1H&quot;</code> states that the event
@@ -445,41 +445,41 @@ duration of 2 weeks. </td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
-
+
<td>A value of 1 indicates this event occupies the entire day, as defined by
the local time zone. A value of 0 indicates it is a regular event that may start
and end at any time during a day.</td>
-
+
</tr>
-
-
+
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
-
+
<td>The recurrence rule for the event format. For
example, <code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>. You can find
more examples <a
href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">here</a>.</td>
-
+
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
- <td>The recurrence dates for the event.
- You typically use {@link android.provider.CalendarContract.EventsColumns#RDATE}
- in conjunction with {@link android.provider.CalendarContract.EventsColumns#RRULE}
+ <td>The recurrence dates for the event.
+ You typically use {@link android.provider.CalendarContract.EventsColumns#RDATE}
+ in conjunction with {@link android.provider.CalendarContract.EventsColumns#RRULE}
to define an aggregate set of
repeating occurrences. For more discussion, see the <a
href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">RFC5545 spec</a>.</td>
</tr>
-
+
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
-
- <td>If this event counts as busy time or is free time that can be
+
+ <td>If this event counts as busy time or is free time that can be
scheduled over. </td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
@@ -519,11 +519,11 @@ you're inserting an event through the {@link
android.content.Intent#ACTION_INSERT INSERT} Intent, described in <a
href="#intent-insert">Using an intent to insert an event</a>&mdash;in that
scenario, a default time zone is supplied.</li>
-
+
<li>For non-recurring events, you must include {@link
android.provider.CalendarContract.EventsColumns#DTEND}. </li>
-
-
+
+
<li>For recurring events, you must include a {@link
android.provider.CalendarContract.EventsColumns#DURATION} in addition to {@link
android.provider.CalendarContract.EventsColumns#RRULE} or {@link
@@ -532,9 +532,9 @@ you're inserting an event through the {@link
android.content.Intent#ACTION_INSERT INSERT} Intent, described in <a
href="#intent-insert">Using an intent to insert an event</a>&mdash;in that
scenario, you can use an {@link
-android.provider.CalendarContract.EventsColumns#RRULE} in conjunction with {@link android.provider.CalendarContract.EventsColumns#DTSTART} and {@link android.provider.CalendarContract.EventsColumns#DTEND}, and the Calendar application
+android.provider.CalendarContract.EventsColumns#RRULE} in conjunction with {@link android.provider.CalendarContract.EventsColumns#DTSTART} and {@link android.provider.CalendarContract.EventsColumns#DTEND}, and the Calendar application
converts it to a duration automatically.</li>
-
+
</ul>
<p>Here is an example of inserting an event. This is being performed in the UI
@@ -545,8 +545,8 @@ information, see {@link android.content.AsyncQueryHandler}.</p>
<pre>
long calID = 3;
-long startMillis = 0;
-long endMillis = 0;
+long startMillis = 0;
+long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
@@ -567,7 +567,7 @@ Uri uri = cr.insert(Events.CONTENT_URI, values);
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
-//
+//
// ... do something with event ID
//
//</pre>
@@ -584,14 +584,14 @@ attendees or reminders to an event.</p>
that you use an {@link android.content.Intent#ACTION_EDIT EDIT} Intent, as
described in <a href="#intent-edit">Using an intent to edit an event</a>.
However, if you need to, you can edit events directly. To perform an update of
-an Event, you can provide the <code>_ID</code> of the
+an Event, you can provide the <code>_ID</code> of the
event either as an appended ID to the Uri ({@link
-android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
-or as the first selection item.
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+or as the first selection item.
The selection should start with <code>&quot;_id=?&quot;</code>, and the first
<code>selectionArg</code> should be the <code>_ID</code> of the event. You can
also do updates using a selection with no ID. Here is an example of updating an
-event. It changes the title of the event using the
+event. It changes the title of the event using the
{@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}
approach:</p>
@@ -604,7 +604,7 @@ ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
Uri updateUri = null;
// The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;);
+values.put(Events.TITLE, &quot;Kickboxing&quot;);
updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().update(updateUri, values, null, null);
Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows); </pre>
@@ -631,22 +631,22 @@ ContentValues values = new ContentValues();
Uri deleteUri = null;
deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
int rows = getContentResolver().delete(deleteUri, null, null);
-Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
</pre>
<h2 id="attendees">Attendees Table</h2>
<p>Each row of the {@link android.provider.CalendarContract.Attendees} table
-represents a single attendee or guest of an event. Calling
-{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
+represents a single attendee or guest of an event. Calling
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
returns a list of attendees for the
-event with the given {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}.
-This {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+event with the given {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}.
+This {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
must match the {@link
-android.provider.BaseColumns#_ID} of a particular event.</p>
+android.provider.BaseColumns#_ID} of a particular event.</p>
<p>The following table lists the
-writable fields. When inserting a new attendee, you must include all of them
+writable fields. When inserting a new attendee, you must include all of them
except <code>ATTENDEE_NAME</code>.
</p>
@@ -704,7 +704,7 @@ except <code>ATTENDEE_NAME</code>.
<h3 id="add-attendees">Adding Attendees</h3>
<p>Here is an example that adds a single attendee to an event. Note that the
-{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
is required:</p>
<pre>
@@ -724,17 +724,17 @@ Uri uri = cr.insert(Attendees.CONTENT_URI, values);
<h2 id="reminders">Reminders Table</h2>
<p>Each row of the {@link android.provider.CalendarContract.Reminders} table
-represents a single reminder for an event. Calling
+represents a single reminder for an event. Calling
{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} returns a list of reminders for the
-event with the given
+event with the given
{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}.</p>
<p>The following table lists the writable fields for reminders. All of them must
be included when inserting a new reminder. Note that sync adapters specify the
types of reminders they support in the {@link
-android.provider.CalendarContract.Calendars} table. See
-{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
+android.provider.CalendarContract.Calendars} table. See
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
for details.</p>
@@ -779,16 +779,16 @@ Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
<h2 id="instances">Instances Table</h2>
-<p>The
+<p>The
{@link android.provider.CalendarContract.Instances} table holds the
start and end time for occurrences of an event. Each row in this table
represents a single event occurrence. The instances table is not writable and only
provides a way to query event occurrences. </p>
-<p>The following table lists some of the fields you can query on for an instance. Note
-that time zone is defined by
-{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
-and
+<p>The following table lists some of the fields you can query on for an instance. Note
+that time zone is defined by
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
+and
{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}.</p>
@@ -807,18 +807,18 @@ and
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
-
+
<td>The Julian end day of the instance, relative to the Calendar's time
-zone.
-
+zone.
+
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
-
+
<td>The end minute of the instance measured from midnight in the
Calendar's time zone.</td>
-
+
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
@@ -826,16 +826,16 @@ Calendar's time zone.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
- <td>The Julian start day of the instance, relative to the Calendar's time zone.
+ <td>The Julian start day of the instance, relative to the Calendar's time zone.
</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-
+
<td>The start minute of the instance measured from midnight, relative to the
-Calendar's time zone.
+Calendar's time zone.
</td>
-
+
</tr>
</table>
@@ -846,7 +846,7 @@ Calendar's time zone.
in the URI. In this example, {@link android.provider.CalendarContract.Instances}
gets access to the {@link
android.provider.CalendarContract.EventsColumns#TITLE} field through its
-implementation of the {@link android.provider.CalendarContract.EventsColumns} interface.
+implementation of the {@link android.provider.CalendarContract.EventsColumns} interface.
In other words, {@link
android.provider.CalendarContract.EventsColumns#TITLE} is returned through a
database view, not through querying the raw {@link
@@ -859,7 +859,7 @@ public static final String[] INSTANCE_PROJECTION = new String[] {
Instances.BEGIN, // 1
Instances.TITLE // 2
};
-
+
// The indices for the projection array above.
private static final int PROJECTION_ID_INDEX = 0;
private static final int PROJECTION_BEGIN_INDEX = 1;
@@ -874,7 +874,7 @@ long startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2011, 10, 24, 8, 0);
long endMillis = endTime.getTimeInMillis();
-
+
Cursor cur = null;
ContentResolver cr = getContentResolver();
@@ -889,28 +889,28 @@ ContentUris.appendId(builder, startMillis);
ContentUris.appendId(builder, endMillis);
// Submit the query
-cur = cr.query(builder.build(),
- INSTANCE_PROJECTION,
- selection,
- selectionArgs,
+cur = cr.query(builder.build(),
+ INSTANCE_PROJECTION,
+ selection,
+ selectionArgs,
null);
-
+
while (cur.moveToNext()) {
String title = null;
long eventID = 0;
- long beginVal = 0;
-
+ long beginVal = 0;
+
// Get the field values
eventID = cur.getLong(PROJECTION_ID_INDEX);
beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
title = cur.getString(PROJECTION_TITLE_INDEX);
-
- // Do something with the values.
- Log.i(DEBUG_TAG, "Event: " + title);
+
+ // Do something with the values.
+ Log.i(DEBUG_TAG, "Event: " + title);
Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(beginVal);
+ calendar.setTimeInMillis(beginVal);
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
- Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
+ Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
}
}</pre>
@@ -928,9 +928,9 @@ while (cur.moveToNext()) {
<td><br>
{@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
<td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
- You can also refer to the URI with
-{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}.
-For an example of using this intent, see <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Using intents to view calendar data</a>.
+ You can also refer to the URI with
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}.
+For an example of using this intent, see <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Using intents to view calendar data</a>.
</td>
<td>Open calendar to the time specified by <code>&lt;ms_since_epoch&gt;</code>.</td>
@@ -941,11 +941,11 @@ For an example of using this intent, see <a href="{@docRoot}guide/topics/provide
</td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
- You can also refer to the URI with
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+
+ You can also refer to the URI with
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
For an example of using this intent, see <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Using intents to view calendar data</a>.
-
+
</td>
<td>View the event specified by <code>&lt;event_id&gt;</code>.</td>
@@ -958,12 +958,12 @@ For an example of using this intent, see <a href="{@docRoot}guide/topics/provide
<tr>
<td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
<td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-
- You can also refer to the URI with
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+
+ You can also refer to the URI with
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
For an example of using this intent, see <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">Using an intent to edit an event</a>.
-
-
+
+
</td>
<td>Edit the event specified by <code>&lt;event_id&gt;</code>.</td>
@@ -978,11 +978,11 @@ For an example of using this intent, see <a href="{@docRoot}guide/topics/provide
<br>
{@link android.content.Intent#ACTION_INSERT INSERT} </td>
<td><p><code>content://com.android.calendar/events</code></p>
-
- You can also refer to the URI with
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
+
+ You can also refer to the URI with
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
For an example of using this intent, see <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">Using an intent to insert an event</a>.
-
+
</td>
<td>Create an event.</td>
@@ -1002,7 +1002,7 @@ For an example of using this intent, see <a href="{@docRoot}guide/topics/provide
<td>Name for the event.</td>
</tr>
<tr>
-
+
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<td>Event begin time in milliseconds from the epoch.</td>
@@ -1010,25 +1010,25 @@ CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME}</td>
-
+
<td>Event end time in milliseconds from the epoch.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
-
+
<td>A boolean that indicates that an event is all day. Value can be
<code>true</code> or <code>false</code>.</td> </tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
Events.EVENT_LOCATION}</td>
-
+
<td>Location of the event.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
Events.DESCRIPTION}</td>
-
+
<td>Event description.</td>
</tr>
<tr>
@@ -1045,16 +1045,16 @@ Events.DESCRIPTION}</td>
<td>
{@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
Events.ACCESS_LEVEL}</td>
-
+
<td>Whether the event is private or public.</td>
</tr>
<tr>
<td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
Events.AVAILABILITY}</td>
-
+
<td>If this event counts as busy time or is free time that can be scheduled over.</td>
-
-</table>
+
+</table>
<p>The following sections describe how to use these intents.</p>
@@ -1066,23 +1066,23 @@ With this approach, your application doesn't even need to have the {@link
android.Manifest.permission#WRITE_CALENDAR} permission included in its <a
href="#manifest">manifest file</a>.</p>
-
+
<p>When users run an application that uses this approach, the application sends
them to the Calendar to finish adding the event. The {@link
android.content.Intent#ACTION_INSERT INSERT} Intent uses extra fields to
pre-populate a form with the details of the event in the Calendar. Users can
then cancel the event, edit the form as needed, or save the event to their
calendars.</p>
-
+
<p>Here is a code snippet that schedules an event on January 19, 2012, that runs
from 7:30 a.m. to 8:30 a.m. Note the following about this code snippet:</p>
<ul>
- <li>It specifies {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}
+ <li>It specifies {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}
as the Uri.</li>
-
+
<li>It uses the {@link
android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
CalendarContract.EXTRA_EVENT_BEGIN_TIME} and {@link
@@ -1090,10 +1090,10 @@ android.provider.CalendarContract#EXTRA_EVENT_END_TIME
CalendarContract.EXTRA_EVENT_END_TIME} extra fields to pre-populate the form
with the time of the event. The values for these times must be in UTC milliseconds
from the epoch.</li>
-
+
<li>It uses the {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
extra field to provide a comma-separated list of invitees, specified by email address.</li>
-
+
</ul>
<pre>
Calendar beginTime = Calendar.getInstance();
@@ -1166,18 +1166,18 @@ access the Calendar Provider:</p>
<ul>
<li>A sync adapter needs to specify that it's a sync adapter by setting {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} to <code>true</code>.</li>
-
-
+
+
<li>A sync adapter needs to provide an {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} and an {@link
android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} as query parameters in the URI. </li>
-
+
<li>A sync adapter has write access to more columns than an application or widget.
- For example, an application can only modify a few characteristics of a calendar,
+ For example, an application can only modify a few characteristics of a calendar,
such as its name, display name, visibility setting, and whether the calendar is
synced. By comparison, a sync adapter can access not only those columns, but many others,
such as calendar color, time zone, access level, location, and so on.
-However, a sync adapter is restricted to the <code>ACCOUNT_NAME</code> and
+However, a sync adapter is restricted to the <code>ACCOUNT_NAME</code> and
<code>ACCOUNT_TYPE</code> it specified.</li> </ul>
<p>Here is a helper method you can use to return a URI for use with a sync adapter:</p>
@@ -1188,5 +1188,5 @@ However, a sync adapter is restricted to the <code>ACCOUNT_NAME</code> and
.appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
}
</pre>
-<p>For a sample implementation of a sync adapter (not specifically related to Calendar), see
+<p>For a sample implementation of a sync adapter (not specifically related to Calendar), see
<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>.
diff --git a/docs/html/guide/topics/providers/content-provider-basics.jd b/docs/html/guide/topics/providers/content-provider-basics.jd
index b7ae3d2cb85c..37df4e92c66e 100644
--- a/docs/html/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html/guide/topics/providers/content-provider-basics.jd
@@ -238,7 +238,7 @@ page.title=Content Provider Basics
For example, to get a list of the words and their locales from the User Dictionary Provider,
you call {@link android.content.ContentResolver#query ContentResolver.query()}.
The {@link android.content.ContentResolver#query query()} method calls the
- {@link android.content.ContentProvider#query ContentProvider.query()} method defined by the
+ {@link android.content.ContentProvider#query ContentProvider.query()} method defined by the
User Dictionary Provider. The following lines of code show a
{@link android.content.ContentResolver#query ContentResolver.query()} call:
<p>
@@ -253,7 +253,7 @@ mCursor = getContentResolver().query(
</pre>
<p>
Table 2 shows how the arguments to
- {@link android.content.ContentResolver#query
+ {@link android.content.ContentResolver#query
query(Uri,projection,selection,selectionArgs,sortOrder)} match an SQL SELECT statement:
</p>
<p class="table-caption">
@@ -361,8 +361,8 @@ Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
</p>
<p class="note">
For the sake of clarity, the code snippets in this section call
- {@link android.content.ContentResolver#query ContentResolver.query()} on the "UI thread"". In
- actual code, however, you should do queries asynchronously on a separate thread. One way to do
+ {@link android.content.ContentResolver#query ContentResolver.query()} on the "UI thread"". In
+ actual code, however, you should do queries asynchronously on a separate thread. One way to do
this is to use the {@link android.content.CursorLoader} class, which is described
in more detail in the <a href="{@docRoot}guide/components/loaders.html">
Loaders</a> guide. Also, the lines of code are snippets only; they don't show a complete
@@ -430,7 +430,7 @@ String[] mSelectionArgs = {""};
<p>
The next snippet shows how to use
{@link android.content.ContentResolver#query ContentResolver.query()}, using the User Dictionary
- Provider as an example. A provider client query is similar to an SQL query, and it contains a
+ Provider as an example. A provider client query is similar to an SQL query, and it contains a
set of columns to return, a set of selection criteria, and a sort order.
</p>
<p>
@@ -440,8 +440,8 @@ String[] mSelectionArgs = {""};
<p>
The expression that specifies the rows to retrieve is split into a selection clause and
selection arguments. The selection clause is a combination of logical and Boolean expressions,
- column names, and values (the variable <code>mSelectionClause</code>). If you specify the
- replaceable parameter <code>?</code> instead of a value, the query method retrieves the value
+ column names, and values (the variable <code>mSelectionClause</code>). If you specify the
+ replaceable parameter <code>?</code> instead of a value, the query method retrieves the value
from the selection arguments array (the variable <code>mSelectionArgs</code>).
</p>
<p>
@@ -567,14 +567,14 @@ selectionArgs[0] = mUserInput;
<!-- Displaying the results -->
<h3 id="DisplayResults">Displaying query results</h3>
<p>
- The {@link android.content.ContentResolver#query ContentResolver.query()} client method always
- returns a {@link android.database.Cursor} containing the columns specified by the query's
- projection for the rows that match the query's selection criteria. A
- {@link android.database.Cursor} object provides random read access to the rows and columns it
- contains. Using {@link android.database.Cursor} methods, you can iterate over the rows in the
+ The {@link android.content.ContentResolver#query ContentResolver.query()} client method always
+ returns a {@link android.database.Cursor} containing the columns specified by the query's
+ projection for the rows that match the query's selection criteria. A
+ {@link android.database.Cursor} object provides random read access to the rows and columns it
+ contains. Using {@link android.database.Cursor} methods, you can iterate over the rows in the
results, determine the data type of each column, get the data out of a column, and examine other
- properties of the results. Some {@link android.database.Cursor} implementations automatically
- update the object when the provider's data changes, or trigger methods in an observer object
+ properties of the results. Some {@link android.database.Cursor} implementations automatically
+ update the object when the provider's data changes, or trigger methods in an observer object
when the {@link android.database.Cursor} changes, or both.
</p>
<p class="note">
@@ -705,14 +705,14 @@ if (mCursor != null) {
<p>
To get the permissions needed to access a provider, an application requests them with a
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
- element in its manifest file. When the Android Package Manager installs the application, a user
- must approve all of the permissions the application requests. If the user approves all of them,
+ element in its manifest file. When the Android Package Manager installs the application, a user
+ must approve all of the permissions the application requests. If the user approves all of them,
Package Manager continues the installation; if the user doesn't approve them, Package Manager
aborts the installation.
</p>
<p>
The following
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
element requests read access to the User Dictionary Provider:
</p>
<pre>
@@ -795,8 +795,8 @@ content://user_dictionary/words/&lt;id_value&gt;
To update a row, you use a {@link android.content.ContentValues} object with the updated
values just as you do with an insertion, and selection criteria just as you do with a query.
The client method you use is
- {@link android.content.ContentResolver#update ContentResolver.update()}. You only need to add
- values to the {@link android.content.ContentValues} object for columns you're updating. If you
+ {@link android.content.ContentResolver#update ContentResolver.update()}. You only need to add
+ values to the {@link android.content.ContentValues} object for columns you're updating. If you
want to clear the contents of a column, set the value to <code>null</code>.
</p>
<p>
@@ -830,7 +830,7 @@ mRowsUpdated = getContentResolver().update(
</pre>
<p>
You should also sanitize user input when you call
- {@link android.content.ContentResolver#update ContentResolver.update()}. To learn more about
+ {@link android.content.ContentResolver#update ContentResolver.update()}. To learn more about
this, read the section <a href="#Injection">Protecting against malicious input</a>.
</p>
<h3 id="Deleting">Deleting data</h3>
@@ -860,7 +860,7 @@ mRowsDeleted = getContentResolver().delete(
</pre>
<p>
You should also sanitize user input when you call
- {@link android.content.ContentResolver#delete ContentResolver.delete()}. To learn more about
+ {@link android.content.ContentResolver#delete ContentResolver.delete()}. To learn more about
this, read the section <a href="#Injection">Protecting against malicious input</a>.
</p>
<!-- Provider Data Types -->
@@ -948,9 +948,9 @@ mRowsDeleted = getContentResolver().delete(
To access a provider in "batch mode",
you create an array of {@link android.content.ContentProviderOperation} objects and then
dispatch them to a content provider with
- {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. You pass the
- content provider's <em>authority</em> to this method, rather than a particular content URI.
- This allows each {@link android.content.ContentProviderOperation} object in the array to work
+ {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. You pass the
+ content provider's <em>authority</em> to this method, rather than a particular content URI.
+ This allows each {@link android.content.ContentProviderOperation} object in the array to work
against a different table. A call to {@link android.content.ContentResolver#applyBatch
ContentResolver.applyBatch()} returns an array of results.
</p>
@@ -1013,7 +1013,7 @@ mRowsDeleted = getContentResolver().delete(
<p>
A provider defines URI permissions for content URIs in its manifest, using the
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code>
- attribute of the
+ attribute of the
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
element, as well as the
<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
diff --git a/docs/html/guide/topics/providers/content-provider-creating.jd b/docs/html/guide/topics/providers/content-provider-creating.jd
index baa92e131dc7..ec6909c89136 100755
--- a/docs/html/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html/guide/topics/providers/content-provider-creating.jd
@@ -422,7 +422,7 @@ public class ExampleProvider extends ContentProvider {
* in the path
*/
sUriMatcher.addURI("com.example.app.provider", "table3", 1);
-
+
/*
* Sets the code for a single row to 2. In this case, the "#" wildcard is
* used. "content://com.example.app.provider/table3/3" matches, but
@@ -881,7 +881,7 @@ vnd.android.cursor.<strong>item</strong>/vnd.com.example.provider.table1
A contract class also helps developers because it usually has mnemonic names for its constants,
so developers are less likely to use incorrect values for column names or URIs. Since it's a
class, it can contain Javadoc documentation. Integrated development environments such as
- Android Studio can auto-complete constant names from the contract class and display Javadoc for
+ Android Studio can auto-complete constant names from the contract class and display Javadoc for
the constants.
</p>
<p>
diff --git a/docs/html/guide/topics/renderscript/compute.jd b/docs/html/guide/topics/renderscript/compute.jd
index fc795ff6a63f..861c9258f2c2 100755
--- a/docs/html/guide/topics/renderscript/compute.jd
+++ b/docs/html/guide/topics/renderscript/compute.jd
@@ -167,7 +167,7 @@ precision (such as SIMD CPU instructions).</p>
</ul>
<p>We strongly recommend using the Support Library APIs for accessing RenderScript because they
- provide a wider range of device compatibility. Developers targeting specific versions of
+ provide a wider range of device compatibility. Developers targeting specific versions of
Android can use {@link android.renderscript} if necessary.</p>
diff --git a/docs/html/guide/topics/resources/accessing-resources.jd b/docs/html/guide/topics/resources/accessing-resources.jd
index b971238c1773..953b27418efc 100644
--- a/docs/html/guide/topics/resources/accessing-resources.jd
+++ b/docs/html/guide/topics/resources/accessing-resources.jd
@@ -264,8 +264,8 @@ reference a system resource, you would need to include the package name. For exa
android:text=&quot;&#64;string/hello&quot; /&gt;
</pre>
-<p class="note"><strong>Note:</strong> You should use string resources at
-all times, so that your application can be localized for other languages.
+<p class="note"><strong>Note:</strong> You should use string resources at
+all times, so that your application can be localized for other languages.
For information about creating alternative
resources (such as localized strings), see <a
href="providing-resources.html#AlternativeResources">Providing Alternative
diff --git a/docs/html/guide/topics/resources/animation-resource.jd b/docs/html/guide/topics/resources/animation-resource.jd
index e5cac8874afb..05582f0e366d 100644
--- a/docs/html/guide/topics/resources/animation-resource.jd
+++ b/docs/html/guide/topics/resources/animation-resource.jd
@@ -12,7 +12,7 @@ parent.link=available-resources.html
<ol>
<li><a href="#Tween">Tween animation</a></li>
<li><a href="#Frame">Frame animation</a></li>
- </ol>
+ </ol>
</li>
</ol>
<h2>See also</h2>
@@ -94,7 +94,7 @@ In XML: <code>@[<em>package</em>:]animator/<em>filename</em></code>
&lt;/set&gt;
</pre>
-<p>The file must have a single root element: either
+<p>The file must have a single root element: either
<code>&lt;set&gt;</code>, <code>&lt;objectAnimator&gt;</code>, or <code>&lt;valueAnimator&gt;</code>. You can
group animation elements together inside the <code>&lt;set&gt;</code> element, including other
<code>&lt;set&gt;</code> elements.
@@ -109,7 +109,7 @@ group animation elements together inside the <code>&lt;set&gt;</code> element, i
<code>&lt;valueAnimator&gt;</code>, or other <code>&lt;set&gt;</code> elements). Represents
an {@link android.animation.AnimatorSet}.
<p>You can specify nested <code>&lt;set&gt;</code> tags to further
- group animations together. Each <code>&lt;set&gt;</code> can define its own
+ group animations together. Each <code>&lt;set&gt;</code> can define its own
<code>ordering</code> attribute.</p>
<p class="caps">attributes:</p>
@@ -119,11 +119,11 @@ group animation elements together inside the <code>&lt;set&gt;</code> element, i
</dt>
<dd>
<em>Keyword</em>. Specifies the play ordering of animations in this set.
- <table>
- <tr><th>Value</th><th>Description</th></tr>
- <tr><td><code>sequentially</code></td><td>Play animations in this set sequentially</td></tr>
- <tr><td><code>together</code> (default)</td><td>Play animations in this set at the same time.</td></tr>
- </table>
+ <table>
+ <tr><th>Value</th><th>Description</th></tr>
+ <tr><td><code>sequentially</code></td><td>Play animations in this set sequentially</td></tr>
+ <tr><td><code>together</code> (default)</td><td>Play animations in this set at the same time.</td></tr>
+ </table>
</dd>
</dl>
</dd>
@@ -131,11 +131,11 @@ group animation elements together inside the <code>&lt;set&gt;</code> element, i
<dt id="obj-animator-element"><code>&lt;objectAnimator&gt;</code></dt>
<dd>Animates a specific property of an object over a specific amount of time. Represents
an {@link android.animation.ObjectAnimator}.</p>
-
+
<p class="caps">attributes:</p>
<dl class="atn-list">
<dt>
- <code>android:propertyName</code>
+ <code>android:propertyName</code>
</dt>
<dd>
<em>String</em>. <strong>Required</strong>. The object's property to animate, referenced by its name. For example you can specify
@@ -206,11 +206,11 @@ group animation elements together inside the <code>&lt;set&gt;</code> element, i
<dd>
<em>Keyword</em>. Do not specify this attribute if the value is a color. The animation framework automatically handles color
values
- <table>
- <tr><th>Value</th><th>Description</th></tr>
- <tr><td><code>intType</code></td><td>Specifies that the animated values are integers</td></tr>
- <tr><td><code>floatType</code> (default)</td><td>Specifies that the animated values are floats</td></tr>
- </table>
+ <table>
+ <tr><th>Value</th><th>Description</th></tr>
+ <tr><td><code>intType</code></td><td>Specifies that the animated values are integers</td></tr>
+ <tr><td><code>floatType</code> (default)</td><td>Specifies that the animated values are floats</td></tr>
+ </table>
</dd>
</dl>
@@ -279,11 +279,11 @@ group animation elements together inside the <code>&lt;set&gt;</code> element, i
<dd>
<em>Keyword</em>. Do not specify this attribute if the value is a color. The animation framework automatically handles color
values.
- <table>
- <tr><th>Value</th><th>Description</th></tr>
- <tr><td><code>intType</code></td><td>Specifies that the animated values are integers</td></tr>
- <tr><td><code>floatType</code> (default)</td><td>Specifies that the animated values are floats</td></tr>
- </table>
+ <table>
+ <tr><th>Value</th><th>Description</th></tr>
+ <tr><td><code>intType</code></td><td>Specifies that the animated values are integers</td></tr>
+ <tr><td><code>floatType</code> (default)</td><td>Specifies that the animated values are floats</td></tr>
+ </table>
</dd>
</dl>
@@ -320,7 +320,7 @@ group animation elements together inside the <code>&lt;set&gt;</code> element, i
before starting the animation set. Calling {@link android.animation.AnimatorSet#setTarget
setTarget()} sets a single target object for all children of the {@link
android.animation.AnimatorSet} as a convenience. The following code shows how to do this:</p>
-
+
<pre>
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
R.anim.property_animator);
diff --git a/docs/html/guide/topics/resources/more-resources.jd b/docs/html/guide/topics/resources/more-resources.jd
index 1afbf70731e4..8488cdee7620 100644
--- a/docs/html/guide/topics/resources/more-resources.jd
+++ b/docs/html/guide/topics/resources/more-resources.jd
@@ -760,7 +760,7 @@ int color = colors.{@link android.content.res.TypedArray#getColor(int,int) getCo
</dd>
</dl>
-</dd>
+</dd>
<dt>example:</dt>
<dd>
@@ -781,7 +781,7 @@ int color = colors.{@link android.content.res.TypedArray#getColor(int,int) getCo
</dd>
</dl>
-</dd>
+</dd>
<dt>see also:</dt>
diff --git a/docs/html/guide/topics/resources/providing-resources.jd b/docs/html/guide/topics/resources/providing-resources.jd
index c919ed5e777d..80a989a57e28 100644
--- a/docs/html/guide/topics/resources/providing-resources.jd
+++ b/docs/html/guide/topics/resources/providing-resources.jd
@@ -523,7 +523,7 @@ is <em>larger</em> than the current screen, the system will <strong>not</strong>
application will crash at runtime (for example, if all layout resources are tagged with the {@code
xlarge} qualifier, but the device is a normal-size screen).</p>
<p><em>Added in API level 4.</em></p>
-
+
<p>See <a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
Screens</a> for more information.</p>
<p>Also see the {@link android.content.res.Configuration#screenLayout} configuration field,
@@ -608,7 +608,7 @@ which indicates the current device orientation.</p>
</ul>
<p><em>Added in API level 8, television added in API 13, watch added in API 20.</em></p>
<p>For information about how your app can respond when the device is inserted into or
- removed from a dock, read <a
+ removed from a dock, read <a
href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">Determining
and Monitoring the Docking State and Type</a>.</p>
<p>This can change during the life of your application if the user places the device in a
@@ -659,8 +659,8 @@ application during runtime.</p>
Level 8</em></li>
<li>{@code xxhdpi}: Extra-extra-high-density screens; approximately 480dpi. <em>Added in API
Level 16</em></li>
- <li>{@code xxxhdpi}: Extra-extra-extra-high-density uses (launcher icon only, see the
- <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">note</a>
+ <li>{@code xxxhdpi}: Extra-extra-extra-high-density uses (launcher icon only, see the
+ <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">note</a>
in <em>Supporting Multiple Screens</em>); approximately 640dpi. <em>Added in API
Level 18</em></li>
<li>{@code nodpi}: This can be used for bitmap resources that you do not want to be scaled
diff --git a/docs/html/guide/topics/resources/runtime-changes.jd b/docs/html/guide/topics/resources/runtime-changes.jd
index 8781d208d6ea..2e6f9b765edf 100644
--- a/docs/html/guide/topics/resources/runtime-changes.jd
+++ b/docs/html/guide/topics/resources/runtime-changes.jd
@@ -84,12 +84,12 @@ your activity to preserve stateful objects.</p>
<p>To retain stateful objects in a fragment during a runtime configuration change:</p>
<ol>
- <li>Extend the {@link android.app.Fragment} class and declare references to your stateful
+ <li>Extend the {@link android.app.Fragment} class and declare references to your stateful
objects.</li>
<li>Call {@link android.app.Fragment#setRetainInstance(boolean)} when the fragment is created.
</li>
<li>Add the fragment to your activity.</li>
- <li>Use {@link android.app.FragmentManager} to retrieve the fragment when the activity is
+ <li>Use {@link android.app.FragmentManager} to retrieve the fragment when the activity is
restarted.</li>
</ol>
@@ -127,8 +127,8 @@ leak all the views and resources of the original activity instance. (Leaking res
means that your application maintains a hold on them and they cannot be garbage-collected, so
lots of memory can be lost.)</p>
-<p>Then use {@link android.app.FragmentManager} to add the fragment to the activity.
-You can obtain the data object from the fragment when the activity starts again during runtime
+<p>Then use {@link android.app.FragmentManager} to add the fragment to the activity.
+You can obtain the data object from the fragment when the activity starts again during runtime
configuration changes. For example, define your activity as follows:</p>
<pre>
@@ -170,7 +170,7 @@ public class MyActivity extends Activity {
<p>In this example, {@link android.app.Activity#onCreate(Bundle) onCreate()} adds a fragment
or restores a reference to it. {@link android.app.Activity#onCreate(Bundle) onCreate()} also
stores the stateful object inside the fragment instance.
-{@link android.app.Activity#onDestroy() onDestroy()} updates the stateful object inside the
+{@link android.app.Activity#onDestroy() onDestroy()} updates the stateful object inside the
retained fragment instance.</p>
diff --git a/docs/html/guide/topics/sensors/index.jd b/docs/html/guide/topics/sensors/index.jd
index 09d27e7a9bd5..36d3adcb48a3 100644
--- a/docs/html/guide/topics/sensors/index.jd
+++ b/docs/html/guide/topics/sensors/index.jd
@@ -1,7 +1,7 @@
page.title=Location and Sensors APIs
page.landing=true
page.tags=location,sensors
-page.landing.intro=Use sensors on the device to add rich location and motion capabilities to your app, from GPS or network location to accelerometer, gyroscope, temperature, barometer, and more.
+page.landing.intro=Use sensors on the device to add rich location and motion capabilities to your app, from GPS or network location to accelerometer, gyroscope, temperature, barometer, and more.
page.landing.image=
@jd:body
@@ -10,7 +10,7 @@ page.landing.image=
<div class="col-6">
<h3>Blog Articles</h3>
-
+
<a href="http://android-developers.blogspot.com/2010/09/one-screen-turn-deserves-another.html">
<h4>One Screen Turn Deserves Another</h4>
<p>However, there’s a new wrinkle: recently, a few devices have shipped (see here and here)
@@ -18,7 +18,7 @@ that run Android on screens that are naturally landscape in their orientation. T
the default position, the screens are wider than they are tall. This introduces a few fairly subtle
issues that we’ve noticed causing problems in some apps.</p>
</a>
-
+
<a href="http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html">
<h4>A Deep Dive Into Location</h4>
<p>I’ve written an open-source reference app that incorporates all of the tips, tricks, and
@@ -29,7 +29,7 @@ venues - as well as providing a reasonable level of offline support</p>
<div class="col-6">
<h3>Training</h3>
-
+
<a href="http://developer.android.com/training/location/index.html">
<h4>Making Your App Location Aware</h4>
<p>This class teaches you how to incorporate location based services in your Android
diff --git a/docs/html/guide/topics/text/index.jd b/docs/html/guide/topics/text/index.jd
index 3865f25aee71..2bf46967339e 100644
--- a/docs/html/guide/topics/text/index.jd
+++ b/docs/html/guide/topics/text/index.jd
@@ -9,7 +9,7 @@ page.landing.image=
<div class="col-12">
<h3>Blog Articles</h3>
-
+
<a href="http://android-developers.blogspot.com/2011/12/add-voice-typing-to-your-ime.html">
<h4>Add Voice Typing To Your IME</h4>
<p>A new feature available in Android 4.0 is voice typing: the difference for users is that
diff --git a/docs/html/guide/topics/text/spell-checker-framework.jd b/docs/html/guide/topics/text/spell-checker-framework.jd
index a5d9932b26a7..7c059ce157cb 100644
--- a/docs/html/guide/topics/text/spell-checker-framework.jd
+++ b/docs/html/guide/topics/text/spell-checker-framework.jd
@@ -6,7 +6,7 @@ page.tags=input,spellcheckerservice
<h2>In This Document</h2>
<ol>
<li>
- <a href="#SpellCheckLifeCycle">Spell Check Lifecycle</a>
+ <a href="#SpellCheckLifeCycle">Spell Check Lifecycle</a>
</li>
<li>
<a href="#SpellCheckImplementation">Implementing a Spell Checker Service</a>
@@ -30,12 +30,12 @@ page.tags=input,spellcheckerservice
</div>
<p>
- The Android platform offers a spelling checker framework that lets you implement
- and access spell checking in your application. The framework is one of the
+ The Android platform offers a spelling checker framework that lets you implement
+ and access spell checking in your application. The framework is one of the
Text Service APIs offered by the Android platform.
</p>
<p>
- To use the framework in your app, you create a special type of Android service that
+ To use the framework in your app, you create a special type of Android service that
generates a spelling checker <strong>session</strong> object. Based on text you provide,
the session object returns spelling suggestions generated by the spelling checker.
</p>
diff --git a/docs/html/guide/topics/ui/accessibility/apps.jd b/docs/html/guide/topics/ui/accessibility/apps.jd
index eb639e37027d..26fb3cca9dc3 100644
--- a/docs/html/guide/topics/ui/accessibility/apps.jd
+++ b/docs/html/guide/topics/ui/accessibility/apps.jd
@@ -458,7 +458,7 @@ public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
// Call the super implementation to populate its text to the event, which
// calls onPopulateAccessibilityEvent() on API Level 14 and up.
boolean completed = super.dispatchPopulateAccessibilityEvent(event);
-
+
// In case this is running on a API revision earlier that 14, check
// the text content of the event and add an appropriate text
// description for this custom view:
diff --git a/docs/html/guide/topics/ui/binding.jd b/docs/html/guide/topics/ui/binding.jd
index a4fd25c2825e..48a1d409ef21 100644
--- a/docs/html/guide/topics/ui/binding.jd
+++ b/docs/html/guide/topics/ui/binding.jd
@@ -16,7 +16,7 @@ parent.link=index.html
<pre>
-// Get a Spinner and bind it to an ArrayAdapter that
+// Get a Spinner and bind it to an ArrayAdapter that
// references a String array.
Spinner s1 = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
@@ -31,7 +31,7 @@ private static String[] PROJECTION = new String[] {
Spinner s2 = (Spinner) findViewById(R.id.spinner2);
Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION, null, null);
-
+
SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item, // Use a template
// that displays a
@@ -41,7 +41,7 @@ SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,
// people database to...
new int[] {android.R.id.text1}); // The "text1" view defined in
// the XML template
-
+
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s2.setAdapter(adapter2);
</pre>
@@ -70,7 +70,7 @@ private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
// Now hook into our object and set its onItemClickListener member
// to our class handler object.
mHistoryView = (ListView)findViewById(R.id.history);
-mHistoryView.setOnItemClickListener(mMessageClickedHandler);
+mHistoryView.setOnItemClickListener(mMessageClickedHandler);
</pre>
<div class="special">
diff --git a/docs/html/guide/topics/ui/controls.jd b/docs/html/guide/topics/ui/controls.jd
index a58d9f9b380f..bb8c1a779588 100644
--- a/docs/html/guide/topics/ui/controls.jd
+++ b/docs/html/guide/topics/ui/controls.jd
@@ -71,7 +71,7 @@ href="{@docRoot}guide/topics/ui/custom-components.html">custom components</a>.</
<tr>
<td><a href="controls/radiobutton.html">Radio button</a></td>
<td>Similar to checkboxes, except that only one option can be selected in the group.</td>
- <td>{@link android.widget.RadioGroup RadioGroup}
+ <td>{@link android.widget.RadioGroup RadioGroup}
<br>{@link android.widget.RadioButton RadioButton} </td>
</tr>
<tr>
diff --git a/docs/html/guide/topics/ui/controls/button.jd b/docs/html/guide/topics/ui/controls/button.jd
index 295044f0b55d..a529d533de79 100644
--- a/docs/html/guide/topics/ui/controls/button.jd
+++ b/docs/html/guide/topics/ui/controls/button.jd
@@ -214,7 +214,7 @@ pressed (activated).</li>
<li>The second <code>&lt;item></code> defines the bitmap to use when the button is
focused (when the button is highlighted using the trackball or directional
pad).</li>
- <li>The third <code>&lt;item></code> defines the bitmap to use when the button is in the
+ <li>The third <code>&lt;item></code> defines the bitmap to use when the button is in the
default state (it's neither pressed nor focused).</li>
</ul>
<p class="note"><strong>Note:</strong> The order of the <code>&lt;item></code> elements is
diff --git a/docs/html/guide/topics/ui/controls/checkbox.jd b/docs/html/guide/topics/ui/controls/checkbox.jd
index 2a64e38d3bf4..f5feeb106a38 100644
--- a/docs/html/guide/topics/ui/controls/checkbox.jd
+++ b/docs/html/guide/topics/ui/controls/checkbox.jd
@@ -65,7 +65,7 @@ click event for both checkboxes:</p>
public void onCheckboxClicked(View view) {
// Is the view now checked?
boolean checked = ((CheckBox) view).isChecked();
-
+
// Check which checkbox was clicked
switch(view.getId()) {
case R.id.checkbox_meat:
diff --git a/docs/html/guide/topics/ui/controls/pickers.jd b/docs/html/guide/topics/ui/controls/pickers.jd
index c0667add65aa..9788f084022a 100644
--- a/docs/html/guide/topics/ui/controls/pickers.jd
+++ b/docs/html/guide/topics/ui/controls/pickers.jd
@@ -123,15 +123,15 @@ android.support.v4.app.DialogFragment#show show()}.</p>
<p>For example, here's a button that, when clicked, calls a method to show the dialog:</p>
<pre>
-&lt;Button
- android:layout_width="wrap_content"
+&lt;Button
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="@string/pick_time"
+ android:text="@string/pick_time"
android:onClick="showTimePickerDialog" />
</pre>
<p>When the user clicks this button, the system calls the following method:</p>
-
+
<pre>
public void showTimePickerDialog(View v) {
DialogFragment newFragment = new TimePickerFragment();
@@ -224,15 +224,15 @@ android.support.v4.app.DialogFragment#show show()}.</p>
<p>For example, here's a button that, when clicked, calls a method to show the dialog:</p>
<pre>
-&lt;Button
- android:layout_width="wrap_content"
+&lt;Button
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="@string/pick_date"
+ android:text="@string/pick_date"
android:onClick="showDatePickerDialog" />
</pre>
<p>When the user clicks this button, the system calls the following method:</p>
-
+
<pre>
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
diff --git a/docs/html/guide/topics/ui/controls/radiobutton.jd b/docs/html/guide/topics/ui/controls/radiobutton.jd
index b2556e1956ab..e1441d3f5fbf 100644
--- a/docs/html/guide/topics/ui/controls/radiobutton.jd
+++ b/docs/html/guide/topics/ui/controls/radiobutton.jd
@@ -72,7 +72,7 @@ click event for both radio buttons:</p>
public void onRadioButtonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();
-
+
// Check which radio button was clicked
switch(view.getId()) {
case R.id.radio_pirates:
diff --git a/docs/html/guide/topics/ui/controls/spinner.jd b/docs/html/guide/topics/ui/controls/spinner.jd
index 3b8aaad4613c..00b0432f9f70 100644
--- a/docs/html/guide/topics/ui/controls/spinner.jd
+++ b/docs/html/guide/topics/ui/controls/spinner.jd
@@ -4,7 +4,7 @@ page.tags=adapterview,spinneradapter
<div id="qv-wrapper">
<div id="qv">
-
+
<h2>In this document</h2>
<ol>
<li><a href="#Populate">Populate the Spinner with User Choices</a></li>
@@ -113,8 +113,8 @@ For example, here's an implementation of the interface in an {@link android.app.
<pre>
public class SpinnerActivity extends Activity implements OnItemSelectedListener {
...
-
- public void onItemSelected(AdapterView&lt;?> parent, View view,
+
+ public void onItemSelected(AdapterView&lt;?> parent, View view,
int pos, long id) {
// An item was selected. You can retrieve the selected item using
// parent.getItemAtPosition(pos)
diff --git a/docs/html/guide/topics/ui/controls/text.jd b/docs/html/guide/topics/ui/controls/text.jd
index f4d72b2a80f6..f5c2a4251788 100644
--- a/docs/html/guide/topics/ui/controls/text.jd
+++ b/docs/html/guide/topics/ui/controls/text.jd
@@ -4,7 +4,7 @@ page.tags=edittext,autocompletetextview
<div id="qv-wrapper">
<div id="qv">
-
+
<h2>In this document</h2>
<ol>
<li><a href="#Keyboard">Specifying the Keyboard Type</a>
@@ -279,7 +279,7 @@ that provides suggestions from an array, using {@link android.widget.ArrayAdapte
layout with only the text field:
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android"
+&lt;AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="&#64;+id/autocomplete_country"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
@@ -313,8 +313,8 @@ code to specify the adapter that supplies the suggestions:
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
// Get the string array
String[] countries = getResources().getStringArray(R.array.countries_array);
-// Create the adapter and set it to the AutoCompleteTextView
-ArrayAdapter&lt;String> adapter =
+// Create the adapter and set it to the AutoCompleteTextView
+ArrayAdapter&lt;String> adapter =
new ArrayAdapter&lt;String>(this, android.R.layout.simple_list_item_1, countries);
textView.setAdapter(adapter);
</pre>
diff --git a/docs/html/guide/topics/ui/custom-components.jd b/docs/html/guide/topics/ui/custom-components.jd
index b7249c56ea0b..bd3de1c29a24 100755
--- a/docs/html/guide/topics/ui/custom-components.jd
+++ b/docs/html/guide/topics/ui/custom-components.jd
@@ -14,37 +14,37 @@ page.tags=view,widget
</div>
</div>
-<p>Android offers a sophisticated and powerful componentized model for building your UI,
-based on the fundamental layout classes: {@link android.view.View} and
-{@link android.view.ViewGroup}. To start with, the platform includes a variety of prebuilt
-View and ViewGroup subclasses &mdash; called widgets and layouts, respectively &mdash;
+<p>Android offers a sophisticated and powerful componentized model for building your UI,
+based on the fundamental layout classes: {@link android.view.View} and
+{@link android.view.ViewGroup}. To start with, the platform includes a variety of prebuilt
+View and ViewGroup subclasses &mdash; called widgets and layouts, respectively &mdash;
that you can use to construct your UI.</p>
-<p>A partial list of available widgets includes {@link android.widget.Button Button},
-{@link android.widget.TextView TextView},
-{@link android.widget.EditText EditText},
+<p>A partial list of available widgets includes {@link android.widget.Button Button},
+{@link android.widget.TextView TextView},
+{@link android.widget.EditText EditText},
{@link android.widget.ListView ListView},
-{@link android.widget.CheckBox CheckBox},
-{@link android.widget.RadioButton RadioButton},
-{@link android.widget.Gallery Gallery},
-{@link android.widget.Spinner Spinner}, and the more special-purpose
-{@link android.widget.AutoCompleteTextView AutoCompleteTextView},
+{@link android.widget.CheckBox CheckBox},
+{@link android.widget.RadioButton RadioButton},
+{@link android.widget.Gallery Gallery},
+{@link android.widget.Spinner Spinner}, and the more special-purpose
+{@link android.widget.AutoCompleteTextView AutoCompleteTextView},
{@link android.widget.ImageSwitcher ImageSwitcher}, and
{@link android.widget.TextSwitcher TextSwitcher}. </p>
-<p>Among the layouts available are {@link android.widget.LinearLayout LinearLayout},
-{@link android.widget.FrameLayout FrameLayout}, {@link android.widget.RelativeLayout RelativeLayout},
+<p>Among the layouts available are {@link android.widget.LinearLayout LinearLayout},
+{@link android.widget.FrameLayout FrameLayout}, {@link android.widget.RelativeLayout RelativeLayout},
and others. For more examples, see <a href="layout-objects.html">Common Layout Objects</a>.</p>
-<p>If none of the prebuilt widgets or layouts meets your needs, you can create your own View subclass.
-If you only need to make small adjustments to an existing widget or layout, you can simply subclass
+<p>If none of the prebuilt widgets or layouts meets your needs, you can create your own View subclass.
+If you only need to make small adjustments to an existing widget or layout, you can simply subclass
the widget or layout and override its methods.
</p>
-<p>Creating your own View subclasses gives you precise control over the appearance and function
-of a screen element. To give an idea of the control you get with custom views, here are some
+<p>Creating your own View subclasses gives you precise control over the appearance and function
+of a screen element. To give an idea of the control you get with custom views, here are some
examples of what you could do with them:</p>
-
+
<ul>
<li>
You could create a completely custom-rendered View type, for example a "volume
@@ -60,7 +60,7 @@ examples of what you could do with them:</p>
</li>
<li>
You could override the way that an EditText component is rendered on the screen
- (the <a href="{@docRoot}resources/samples/NotePad/index.html">Notepad Tutorial</a> uses this to good effect,
+ (the <a href="{@docRoot}resources/samples/NotePad/index.html">Notepad Tutorial</a> uses this to good effect,
to create a lined-notepad page).
</li>
<li>
@@ -69,7 +69,7 @@ examples of what you could do with them:</p>
</li>
</ul>
<p>
-The sections below explain how to create custom Views and use them in your application.
+The sections below explain how to create custom Views and use them in your application.
For detailed reference information, see the {@link android.view.View} class. </p>
@@ -77,26 +77,26 @@ For detailed reference information, see the {@link android.view.View} class. </p
<p>Here is a high level overview of what you need to know to get started in creating your own
View components:</p>
-
+
<ol>
<li>
- Extend an existing {@link android.view.View View} class or subclass
+ Extend an existing {@link android.view.View View} class or subclass
with your own class.
</li>
<li>
- Override some of the methods from the superclass. The superclass methods
+ Override some of the methods from the superclass. The superclass methods
to override start with '<code>on</code>', for
- example, {@link android.view.View#onDraw onDraw()},
- {@link android.view.View#onMeasure onMeasure()}, and
+ example, {@link android.view.View#onDraw onDraw()},
+ {@link android.view.View#onMeasure onMeasure()}, and
{@link android.view.View#onKeyDown onKeyDown()}.
- This is similar to the <code>on...</code> events in {@link android.app.Activity Activity}
+ This is similar to the <code>on...</code> events in {@link android.app.Activity Activity}
or {@link android.app.ListActivity ListActivity}
that you override for lifecycle and other functionality hooks.
<li>
- Use your new extension class. Once completed, your new extension class
+ Use your new extension class. Once completed, your new extension class
can be used in place of the view upon which it was based.
</li>
-</ol>
+</ol>
<p class="note"><strong>Tip:</strong>
Extension classes can be defined as inner classes inside the activities
that use them. This is useful because it controls access to them but
@@ -119,7 +119,7 @@ way you like, limited perhaps only by your imagination, the size of the
screen, and the available processing power (remember that ultimately your
application might have to run on something with significantly less power
than your desktop workstation).</p>
-<p>To create a fully customized component:</p>
+<p>To create a fully customized component:</p>
<ol>
<li>
The most generic view you can extend is, unsurprisingly, {@link
@@ -170,11 +170,11 @@ slightly more complex by the requirements of limits from the parent
(which are passed in to the <code>onMeasure()</code> method) and by the
requirement to call the <code>setMeasuredDimension()</code> method with the
measured width and height once they have been calculated. If you fail to
-call this method from an overridden <code>onMeasure()</code> method, the
+call this method from an overridden <code>onMeasure()</code> method, the
result will be an exception at measurement time.</p>
-<p>At a high level, implementing <code>onMeasure()</code> looks something
+<p>At a high level, implementing <code>onMeasure()</code> looks something
like this:</p>
-
+
<ol>
<li>
The overridden <code>onMeasure()</code> method is called with width and
@@ -193,7 +193,7 @@ result will be an exception at measurement time.</p>
measurement width and height which will be required to render the
component. It should try to stay within the specifications passed in,
although it can choose to exceed them (in this case, the parent can
- choose what to do, including clipping, scrolling, throwing an exception,
+ choose what to do, including clipping, scrolling, throwing an exception,
or asking the <code>onMeasure()</code> to try again, perhaps with
different measurement specifications).
</li>
@@ -212,7 +212,7 @@ Here's a summary of some of the other standard methods that the framework calls
<thead>
<tr><th>Category</th> <th>Methods</th> <th>Description</th></tr>
</thead>
-
+
<tbody>
<tr>
<td rowspan="2">Creation</td>
@@ -228,7 +228,7 @@ Here's a summary of some of the other standard methods that the framework calls
<td>Called after a view and all of its children has been inflated
from XML.</td>
</tr>
-
+
<tr>
<td rowspan="3">Layout</td>
<td><code>{@link android.view.View#onMeasure}</code></td>
@@ -247,14 +247,14 @@ Here's a summary of some of the other standard methods that the framework calls
<td>Called when the size of this view has changed.
</td>
</tr>
-
+
<tr>
<td>Drawing</td>
<td><code>{@link android.view.View#onDraw}</code></td>
<td>Called when the view should render its content.
</td>
</tr>
-
+
<tr>
<td rowspan="4">Event processing</td>
<td><code>{@link android.view.View#onKeyDown}</code></td>
@@ -265,58 +265,58 @@ Here's a summary of some of the other standard methods that the framework calls
<td><code>{@link android.view.View#onKeyUp}</code></td>
<td>Called when a key up event occurs.
</td>
- </tr>
+ </tr>
<tr>
<td><code>{@link android.view.View#onTrackballEvent}</code></td>
<td>Called when a trackball motion event occurs.
</td>
- </tr>
+ </tr>
<tr>
<td><code>{@link android.view.View#onTouchEvent}</code></td>
<td>Called when a touch screen motion event occurs.
</td>
- </tr>
-
+ </tr>
+
<tr>
<td rowspan="2">Focus</td>
<td><code>{@link android.view.View#onFocusChanged}</code></td>
<td>Called when the view gains or loses focus.
</td>
</tr>
-
+
<tr>
<td><code>{@link android.view.View#onWindowFocusChanged}</code></td>
<td>Called when the window containing the view gains or loses focus.
</td>
</tr>
-
+
<tr>
<td rowspan="3">Attaching</td>
<td><code>{@link android.view.View#onAttachedToWindow()}</code></td>
<td>Called when the view is attached to a window.
</td>
</tr>
-
+
<tr>
<td><code>{@link android.view.View#onDetachedFromWindow}</code></td>
<td>Called when the view is detached from its window.
</td>
- </tr>
-
+ </tr>
+
<tr>
<td><code>{@link android.view.View#onWindowVisibilityChanged}</code></td>
<td>Called when the visibility of the window containing the view
has changed.
</td>
- </tr>
+ </tr>
</tbody>
-
+
</table>
<h3 id="customexample">A Custom View Example</h3>
-<p>The CustomView sample in the
+<p>The CustomView sample in the
<a href="{@docRoot}resources/samples/ApiDemos/index.html">API Demos</a> provides an example
of a customized View. The custom View is defined in the
<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/LabelView.html">LabelView</a>
@@ -359,9 +359,9 @@ combination of a single line EditText field and an adjacent button with an attac
something from the list, it populates the EditText field, but the user can
also type something directly into the EditText if they prefer.</p>
<p>In Android, there are actually two other Views readily available to do
-this: {@link android.widget.Spinner Spinner} and
-{@link android.widget.AutoCompleteTextView AutoCompleteTextView}, but
-regardless, the concept of a Combo Box makes an easy-to-understand
+this: {@link android.widget.Spinner Spinner} and
+{@link android.widget.AutoCompleteTextView AutoCompleteTextView}, but
+regardless, the concept of a Combo Box makes an easy-to-understand
example.</p>
<p>To create a compound component:</p>
<ol>
@@ -397,7 +397,7 @@ example.</p>
<li>
In the case of extending a Layout, you don't need to override the
<code>onDraw()</code> and <code>onMeasure()</code> methods since the
- layout will have default behavior that will likely work just fine. However,
+ layout will have default behavior that will likely work just fine. However,
you can still override them if you need to.
</li>
<li>
@@ -409,7 +409,7 @@ example.</p>
<p>
To summarize, the use of a Layout as the basis for a Custom Control has a
number of advantages, including:</p>
-
+
<ul>
<li>
You can specify the layout using the declarative XML files just like
@@ -433,7 +433,7 @@ number of advantages, including:</p>
SpeechView which extends LinearLayout to make a component for displaying
Speech quotes. The corresponding classes in the sample code are
<code>List4.java</code> and <code>List6.java</code>.</p>
-
+
<h2 id="modifying">Modifying an Existing View Type</h2>
@@ -450,7 +450,7 @@ samples. This demonstrates many aspects of using the Android platform, among
them is extending an EditText View to make a lined notepad. This is not a
perfect example, and the APIs for doing this might change from this early
preview, but it does demonstrate the principles.</p>
-<p>If you haven't done so already, import the
+<p>If you haven't done so already, import the
NotePad sample into Android Studio (or
just look at the source using the link provided). In particular look at the definition of
<code>MyEditText</code> in the <a
@@ -462,7 +462,7 @@ file.</p>
<strong>The Definition</strong>
<p>The class is defined with the following line:<br/>
<code>public static class MyEditText extends EditText</code></p>
-
+
<ul>
<li>
It is defined as an inner class within the <code>NoteEditor</code>
@@ -488,7 +488,7 @@ file.</p>
</li>
<li>
<strong>Class Initialization</strong>
- <p>As always, the super is called first. Furthermore,
+ <p>As always, the super is called first. Furthermore,
this is not a default constructor, but a parameterized one. The
EditText is created with these parameters when it is inflated from an
XML layout file, thus, our constructor needs to both take them and pass them
@@ -496,7 +496,7 @@ file.</p>
</li>
<li>
<strong>Overridden Methods</strong>
- <p>In this example, there is only one method to be overridden:
+ <p>In this example, there is only one method to be overridden:
<code>onDraw()</code> &mdash; but there could easily be others needed when you
create your own custom components.</p>
<p>For the NotePad sample, overriding the <code>onDraw()</code> method allows
@@ -513,7 +513,7 @@ file.</p>
<code>res/layout</code> folder.</p>
<pre>
&lt;view
- class=&quot;com.android.notepad.NoteEditor$MyEditText&quot;
+ class=&quot;com.android.notepad.NoteEditor$MyEditText&quot;
id=&quot;&#64;+id/note&quot;
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;fill_parent&quot;
@@ -522,7 +522,7 @@ file.</p>
android:scrollbars=&quot;vertical&quot;
android:fadingEdge=&quot;vertical&quot; /&gt;
</pre>
-
+
<ul>
<li>
The custom component is created as a generic view in the XML, and
@@ -531,7 +531,7 @@ file.</p>
<code>NoteEditor$MyEditText</code> notation which is a standard way to
refer to inner classes in the Java programming language.
<p>If your custom View component is not defined as an inner class, then you can,
- alternatively, declare the View component
+ alternatively, declare the View component
with the XML element name, and exclude the <code>class</code> attribute. For example:</p>
<pre>
&lt;com.android.notepad.MyEditText
diff --git a/docs/html/guide/topics/ui/dialogs.jd b/docs/html/guide/topics/ui/dialogs.jd
index e4469eae4e29..7ab4ca552b4d 100644
--- a/docs/html/guide/topics/ui/dialogs.jd
+++ b/docs/html/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@ page.tags=alertdialog,dialogfragment
<li>{@link android.app.DialogFragment}</li>
<li>{@link android.app.AlertDialog}</li>
</ol>
-
+
<h2>See also</h2>
<ol>
<li><a href="{@docRoot}design/building-blocks/dialogs.html">Dialogs design guide</a></li>
@@ -238,8 +238,8 @@ AlertDialog dialog = builder.create();
</pre>
<p>The <code>set...Button()</code> methods require a title for the button (supplied
-by a <a href="{@docRoot}guide/topics/resources/string-resource.html">string resource</a>) and a
-{@link android.content.DialogInterface.OnClickListener} that defines the action to take
+by a <a href="{@docRoot}guide/topics/resources/string-resource.html">string resource</a>) and a
+{@link android.content.DialogInterface.OnClickListener} that defines the action to take
when the user presses the button.</p>
<p>There are three different action buttons you can add:</p>
@@ -251,7 +251,7 @@ when the user presses the button.</p>
<dt>Neutral</dt>
<dd>You should use this when the user may not want to proceed with the action,
but doesn't necessarily want to cancel. It appears between the positive and negative
- buttons. For example, the action might be "Remind me later."</dd>
+ buttons. For example, the action might be "Remind me later."</dd>
</dl>
<p>You can add only one of each button type to an {@link
@@ -274,7 +274,7 @@ A dialog with a title and list.</p>
<li>A persistent multiple-choice list (checkboxes)</li>
</ul>
-<p>To create a single-choice list like the one in figure 3,
+<p>To create a single-choice list like the one in figure 3,
use the {@link android.app.AlertDialog.Builder#setItems setItems()} method:</p>
<pre style="clear:right">
@@ -294,7 +294,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<p>Because the list appears in the dialog's content area,
the dialog cannot show both a message and a list and you should set a title for the
-dialog with {@link android.app.AlertDialog.Builder#setTitle setTitle()}.
+dialog with {@link android.app.AlertDialog.Builder#setTitle setTitle()}.
To specify the items for the list, call {@link
android.app.AlertDialog.Builder#setItems setItems()}, passing an array.
Alternatively, you can specify a list using {@link
@@ -320,11 +320,11 @@ A list of multiple-choice items.</p>
<h4 id="Checkboxes">Adding a persistent multiple-choice or single-choice list</h4>
-<p>To add a list of multiple-choice items (checkboxes) or
+<p>To add a list of multiple-choice items (checkboxes) or
single-choice items (radio buttons), use the
{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} or
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} or
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()} methods, respectively.</p>
<p>For example, here's how you can create a multiple-choice list like the
@@ -349,7 +349,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
- // Else, if the item is already in the array, remove it
+ // Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
@@ -376,7 +376,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
<p>Although both a traditional list and a list with radio buttons
provide a "single choice" action, you should use {@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
setSingleChoiceItems()} if you want to persist the user's choice.
That is, if opening the dialog again later should indicate what the user's current choice is,
then you create a list with radio buttons.</p>
@@ -445,7 +445,7 @@ you should change its font family to {@code "sans-serif"} so that both text fiel
a matching font style.</p>
<p>To inflate the layout in your {@link android.support.v4.app.DialogFragment},
-get a {@link android.view.LayoutInflater} with
+get a {@link android.view.LayoutInflater} with
{@link android.app.Activity#getLayoutInflater()} and call
{@link android.view.LayoutInflater#inflate inflate()}, where the first parameter
is the layout resource ID and the second parameter is a parent view for the layout.
@@ -473,7 +473,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
- });
+ });
return builder.create();
}
</pre>
@@ -508,7 +508,7 @@ interface through which it delivers the events back to the host activity:</p>
<pre>
public class NoticeDialogFragment extends DialogFragment {
-
+
/* The activity that creates an instance of this dialog fragment must
* implement this interface in order to receive event callbacks.
* Each method passes the DialogFragment in case the host needs to query it. */
@@ -516,10 +516,10 @@ public class NoticeDialogFragment extends DialogFragment {
public void onDialogPositiveClick(DialogFragment dialog);
public void onDialogNegativeClick(DialogFragment dialog);
}
-
+
// Use this instance of the interface to deliver action events
NoticeDialogListener mListener;
-
+
// Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
&#64;Override
public void onAttach(Activity activity) {
@@ -546,7 +546,7 @@ events through an implementation of the {@code NoticeDialogListener} interface:<
public class MainActivity extends FragmentActivity
implements NoticeDialogFragment.NoticeDialogListener{
...
-
+
public void showNoticeDialog() {
// Create an instance of the dialog fragment and show it
DialogFragment dialog = new NoticeDialogFragment();
@@ -659,7 +659,7 @@ public class CustomDialogFragment extends DialogFragment {
// Inflate the layout to use as dialog or embedded fragment
return inflater.inflate(R.layout.purchase_items, container, false);
}
-
+
/** The system calls this only when creating the layout in a dialog. */
&#64;Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
@@ -681,7 +681,7 @@ or a fullscreen UI, based on the screen size:</p>
public void showDialog() {
FragmentManager fragmentManager = getSupportFragmentManager();
CustomDialogFragment newFragment = new CustomDialogFragment();
-
+
if (mIsLargeLayout) {
// The device is using a large layout, so show the fragment as a dialog
newFragment.show(fragmentManager, "dialog");
@@ -781,7 +781,7 @@ android.support.v4.app.DialogFragment#onDismiss onDismiss()} method in your {@li
android.support.v4.app.DialogFragment}.</p>
<p>You can also <em>cancel</em> a dialog. This is a special event that indicates the user
-explicitly left the dialog without completing the task. This occurs if the user presses the
+explicitly left the dialog without completing the task. This occurs if the user presses the
<em>Back</em> button, touches the screen outside the dialog area,
or if you explicitly call {@link android.app.Dialog#cancel()} on the {@link
android.app.Dialog} (such as in response to a "Cancel" button in the dialog).</p>
diff --git a/docs/html/guide/topics/ui/drag-drop.jd b/docs/html/guide/topics/ui/drag-drop.jd
index 4eb54f232568..8871c87f4f25 100644
--- a/docs/html/guide/topics/ui/drag-drop.jd
+++ b/docs/html/guide/topics/ui/drag-drop.jd
@@ -978,7 +978,7 @@ protected class myDragEventListener implements View.OnDragListener {
Log.e("DragDrop Example","Unknown action type received by OnDragListener.");
break;
}
-
+
return false;
}
};
diff --git a/docs/html/guide/topics/ui/how-android-draws.jd b/docs/html/guide/topics/ui/how-android-draws.jd
index 168f77b265cf..79563692d493 100644
--- a/docs/html/guide/topics/ui/how-android-draws.jd
+++ b/docs/html/guide/topics/ui/how-android-draws.jd
@@ -4,18 +4,18 @@ parent.link=index.html
@jd:body
-<p>When an {@link android.app.Activity} receives focus, it will be requested to
+<p>When an {@link android.app.Activity} receives focus, it will be requested to
draw its layout.
-The Android framework will handle the procedure for drawing, but the
+The Android framework will handle the procedure for drawing, but the
{@link android.app.Activity} must provide
the root node of its layout hierarchy.</p>
-<p>Drawing begins with the root node of the layout. It is requested to measure and
-draw the layout tree. Drawing is handled by walking the tree and rendering each
-{@link android.view.View} that intersects the invalid region. In turn, each
+<p>Drawing begins with the root node of the layout. It is requested to measure and
+draw the layout tree. Drawing is handled by walking the tree and rendering each
+{@link android.view.View} that intersects the invalid region. In turn, each
{@link android.view.ViewGroup} is responsible for requesting
-each of its children to be drawn
-(with the {@link android.view.View#draw(Canvas) draw()} method)
+each of its children to be drawn
+(with the {@link android.view.View#draw(Canvas) draw()} method)
and each {@link android.view.View} is responsible for drawing itself.
Because the tree is traversed in-order,
this means that parents will be drawn before (i.e., behind) their children, with
@@ -24,55 +24,55 @@ and each {@link android.view.View} is responsible for drawing itself.
<div class="sidebox-wrapper">
<div class="sidebox">
- <p>The framework will not draw {@link android.view.View} objects that are not
-in the invalid region, and also
+ <p>The framework will not draw {@link android.view.View} objects that are not
+in the invalid region, and also
will take care of drawing the {@link android.view.View} background for you.</p>
- <p>You can force a {@link android.view.View} to draw, by calling
+ <p>You can force a {@link android.view.View} to draw, by calling
{@link android.view.View#invalidate()}.
</p>
</div>
</div>
<p>
- Drawing the layout is a two pass process: a measure pass and a layout pass.
-The measuring pass is implemented in {@link android.view.View#measure(int, int)}
-and is a top-down traversal of the {@link android.view.View} tree. Each {@link android.view.View}
+ Drawing the layout is a two pass process: a measure pass and a layout pass.
+The measuring pass is implemented in {@link android.view.View#measure(int, int)}
+and is a top-down traversal of the {@link android.view.View} tree. Each {@link android.view.View}
pushes dimension specifications down the tree
- during the recursion. At the end of the measure pass, every
+ during the recursion. At the end of the measure pass, every
{@link android.view.View} has stored
its measurements. The second pass happens in
{@link android.view.View#layout(int,int,int,int)} and is also top-down. During
this pass each parent is responsible for positioning all of its children
using the sizes computed in the measure pass.
</p>
-
+
<p>
- When a {@link android.view.View} object's
-{@link android.view.View#measure(int, int) measure()} method
+ When a {@link android.view.View} object's
+{@link android.view.View#measure(int, int) measure()} method
returns, its {@link android.view.View#getMeasuredWidth()} and
- {@link android.view.View#getMeasuredHeight()} values must be set, along
- with those for all of that {@link android.view.View} object's descendants.
-A {@link android.view.View} object's measured width and
-measured height values must respect the constraints imposed by the
+ {@link android.view.View#getMeasuredHeight()} values must be set, along
+ with those for all of that {@link android.view.View} object's descendants.
+A {@link android.view.View} object's measured width and
+measured height values must respect the constraints imposed by the
{@link android.view.View} object's parents. This guarantees
that at the end of the measure pass, all parents accept all of their
- children's measurements. A parent {@link android.view.View} may call
+ children's measurements. A parent {@link android.view.View} may call
{@link android.view.View#measure(int, int) measure()} more than once on
its children. For example, the parent may measure each child once with
unspecified dimensions to find out how big they want to be, then call
- {@link android.view.View#measure(int, int) measure()} on them again with
+ {@link android.view.View#measure(int, int) measure()} on them again with
actual numbers if the sum of all the children's
- unconstrained sizes is too big or too small (that is, if the children
+ unconstrained sizes is too big or too small (that is, if the children
don't agree among themselves
- as to how much space they each get, the parent will intervene and set
+ as to how much space they each get, the parent will intervene and set
the rules on the second pass).
</p>
-
+
<div class="sidebox-wrapper">
<div class="sidebox"><p>
- To initiate a layout, call {@link android.view.View#requestLayout}.
+ To initiate a layout, call {@link android.view.View#requestLayout}.
This method is typically
- called by a {@link android.view.View} on itself
+ called by a {@link android.view.View} on itself
when it believes that is can no longer fit within
its current bounds.</p>
</div>
@@ -80,54 +80,54 @@ when it believes that is can no longer fit within
<p>
The measure pass uses two classes to communicate dimensions. The
- {@link android.view.ViewGroup.LayoutParams} class is used by
+ {@link android.view.ViewGroup.LayoutParams} class is used by
{@link android.view.View} objects to tell their parents how they
- want to be measured and positioned. The base
+ want to be measured and positioned. The base
{@link android.view.ViewGroup.LayoutParams} class just
- describes how big the {@link android.view.View} wants to be for both
+ describes how big the {@link android.view.View} wants to be for both
width and height. For each
dimension, it can specify one of:</p>
<ul>
<li> an exact number
- <li>{@link android.view.ViewGroup.LayoutParams#MATCH_PARENT MATCH_PARENT},
+ <li>{@link android.view.ViewGroup.LayoutParams#MATCH_PARENT MATCH_PARENT},
which means the {@link android.view.View} wants to be as big as its parent
(minus padding)</li>
- <li>{@link android.view.ViewGroup.LayoutParams#WRAP_CONTENT WRAP_CONTENT},
+ <li>{@link android.view.ViewGroup.LayoutParams#WRAP_CONTENT WRAP_CONTENT},
which means that the {@link android.view.View} wants to be just big enough to
enclose its content (plus padding).</li>
</ul>
- <p>There are subclasses of {@link android.view.ViewGroup.LayoutParams} for
+ <p>There are subclasses of {@link android.view.ViewGroup.LayoutParams} for
different subclasses of {@link android.view.ViewGroup}.
- For example, {@link android.widget.RelativeLayout} has its own subclass of
+ For example, {@link android.widget.RelativeLayout} has its own subclass of
{@link android.view.ViewGroup.LayoutParams}, which includes
- the ability to center child {@link android.view.View} objects
+ the ability to center child {@link android.view.View} objects
horizontally and vertically.
</p>
-
+
<p>
- {@link android.view.View.MeasureSpec MeasureSpec} objects are used to push
+ {@link android.view.View.MeasureSpec MeasureSpec} objects are used to push
requirements down the tree from parent to
- child. A {@link android.view.View.MeasureSpec MeasureSpec} can be in one of
+ child. A {@link android.view.View.MeasureSpec MeasureSpec} can be in one of
three modes:</p>
<ul>
- <li>{@link android.view.View.MeasureSpec#UNSPECIFIED UNSPECIFIED}: This is
+ <li>{@link android.view.View.MeasureSpec#UNSPECIFIED UNSPECIFIED}: This is
used by a parent to determine the desired dimension
- of a child {@link android.view.View}. For example, a
-{@link android.widget.LinearLayout} may call
+ of a child {@link android.view.View}. For example, a
+{@link android.widget.LinearLayout} may call
{@link android.view.View#measure(int, int) measure()} on its child
- with the height set to {@link android.view.View.MeasureSpec#UNSPECIFIED UNSPECIFIED}
-and a width of {@link android.view.View.MeasureSpec#EXACTLY EXACTLY} 240 to
-find out how tall the child {@link android.view.View} wants to be given a
+ with the height set to {@link android.view.View.MeasureSpec#UNSPECIFIED UNSPECIFIED}
+and a width of {@link android.view.View.MeasureSpec#EXACTLY EXACTLY} 240 to
+find out how tall the child {@link android.view.View} wants to be given a
width of 240 pixels.</li>
- <li>{@link android.view.View.MeasureSpec#EXACTLY EXACTLY}: This is used
+ <li>{@link android.view.View.MeasureSpec#EXACTLY EXACTLY}: This is used
by the parent to impose an exact size on the
child. The child must use this size, and guarantee that all of its
descendants will fit within this size.</li>
- <li>{@link android.view.View.MeasureSpec#AT_MOST AT MOST}: This is used by
+ <li>{@link android.view.View.MeasureSpec#AT_MOST AT MOST}: This is used by
the parent to impose a maximum size on the
child. The child must guarantee that it and all of its descendants will fit
within this size.</li>
</ul>
-
+
diff --git a/docs/html/guide/topics/ui/index.jd b/docs/html/guide/topics/ui/index.jd
index 0725eb73defc..ccdf200ecac6 100644
--- a/docs/html/guide/topics/ui/index.jd
+++ b/docs/html/guide/topics/ui/index.jd
@@ -1,6 +1,6 @@
page.title=User Interface
page.landing=true
-page.landing.intro=Your app's user interface is everything that the user can see and interact with. Android provides a variety of pre-built UI components such as structured layout objects and UI controls that allow you to build the graphical user interface for your app. Android also provides other UI modules for special interfaces such as dialogs, notifications, and menus.
+page.landing.intro=Your app's user interface is everything that the user can see and interact with. Android provides a variety of pre-built UI components such as structured layout objects and UI controls that allow you to build the graphical user interface for your app. Android also provides other UI modules for special interfaces such as dialogs, notifications, and menus.
page.landing.image=images/ui/ui_index.png
page.landing.next=overview.html
diff --git a/docs/html/guide/topics/ui/layout/grid.jd b/docs/html/guide/topics/ui/layout/grid.jd
index 3474f48c9d86..31f9b9ca4ead 100644
--- a/docs/html/guide/topics/ui/layout/grid.jd
+++ b/docs/html/guide/topics/ui/layout/grid.jd
@@ -32,7 +32,7 @@ cells empty, but cells cannot span columns, as they can in HTML.</p>
Each row has zero or more cells, each of which is defined by any kind of other View. So, the cells of a row may be
composed of a variety of View objects, like ImageView or TextView objects.
A cell may also be a ViewGroup object (for example, you can nest another TableLayout as a cell).</p>
-<p>The following sample layout has two rows and two cells in each. The accompanying screenshot shows the
+<p>The following sample layout has two rows and two cells in each. The accompanying screenshot shows the
result, with cell borders displayed as dotted lines (added for visual effect). </p>
<table class="columns">
@@ -71,7 +71,7 @@ result, with cell borders displayed as dotted lines (added for visual effect). <
<p>Columns can be hidden, marked to stretch and fill the available screen space,
or can be marked as shrinkable to force the column to shrink until the table
- fits the screen. See the {@link android.widget.TableLayout TableLayout reference}
+ fits the screen. See the {@link android.widget.TableLayout TableLayout reference}
documentation for more details. </p>
diff --git a/docs/html/guide/topics/ui/layout/linear.jd b/docs/html/guide/topics/ui/layout/linear.jd
index 7441782f5e6f..4224d17d07a7 100644
--- a/docs/html/guide/topics/ui/layout/linear.jd
+++ b/docs/html/guide/topics/ui/layout/linear.jd
@@ -59,7 +59,7 @@ href="{@docRoot}reference/android/widget/LinearLayout.LayoutParams.html#attr_and
>{@code android:layout_weight}</a> attribute.
This attribute assigns an "importance" value to a view in
terms of how much space it should occupy on the screen. A larger weight value allows it to expand
-to fill any remaining space in the parent view.
+to fill any remaining space in the parent view.
Child views can specify a weight value, and then any remaining space in the view group is
assigned to children in the proportion of their declared weight. Default
weight is zero.</p>
diff --git a/docs/html/guide/topics/ui/layout/listview.jd b/docs/html/guide/topics/ui/layout/listview.jd
index 3c6e32ca41cf..e6e5578e6fd8 100644
--- a/docs/html/guide/topics/ui/layout/listview.jd
+++ b/docs/html/guide/topics/ui/layout/listview.jd
@@ -80,7 +80,7 @@ public class ListViewLoader extends ListActivity
ContactsContract.Data.DISPLAY_NAME};
// This is the select criteria
- static final String SELECTION = "((" +
+ static final String SELECTION = "((" +
ContactsContract.Data.DISPLAY_NAME + " NOTNULL) AND (" +
ContactsContract.Data.DISPLAY_NAME + " != '' ))";
@@ -105,7 +105,7 @@ public class ListViewLoader extends ListActivity
// Create an empty adapter we will use to display the loaded data.
// We pass null for the cursor, then update it in onLoadFinished()
- mAdapter = new SimpleCursorAdapter(this,
+ mAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, null,
fromColumns, toViews, 0);
setListAdapter(mAdapter);
@@ -138,7 +138,7 @@ public class ListViewLoader extends ListActivity
mAdapter.swapCursor(null);
}
- &#64;Override
+ &#64;Override
public void onListItemClick(ListView l, View v, int position, long id) {
// Do something when a list item is clicked
}
diff --git a/docs/html/guide/topics/ui/layout/relative.jd b/docs/html/guide/topics/ui/layout/relative.jd
index ca5cb4838036..92735ae808bf 100644
--- a/docs/html/guide/topics/ui/layout/relative.jd
+++ b/docs/html/guide/topics/ui/layout/relative.jd
@@ -38,7 +38,7 @@ make one below another, centered in the screen, centered left, and so on. By def
views are drawn at the top-left of the layout, so you must define the position of each view
using the various layout properties available from {@link
android.widget.RelativeLayout.LayoutParams}.</p>
-
+
<p>Some of the many layout properties available to views in a {@link android.widget.RelativeLayout}
include:</p>
<dl>
diff --git a/docs/html/guide/topics/ui/menus.jd b/docs/html/guide/topics/ui/menus.jd
index ad2aa9b8bf29..73dec2095dca 100644
--- a/docs/html/guide/topics/ui/menus.jd
+++ b/docs/html/guide/topics/ui/menus.jd
@@ -77,9 +77,9 @@ activity. It's where you should place actions that have a global impact on the a
"Search," "Compose email," and "Settings."
<p>See the section about <a href="#options-menu">Creating an Options Menu</a>.</p>
</dd>
-
+
<dt><strong>Context menu and contextual action mode</strong></dt>
-
+
<dd>A context menu is a <a href="#FloatingContextMenu">floating menu</a> that appears when the
user performs a long-click on an element. It provides actions that affect the selected content or
context frame.
@@ -88,7 +88,7 @@ action items that affect the selected content in a bar at the top of the screen
to select multiple items.</p>
<p>See the section about <a href="#context-menu">Creating Contextual Menus</a>.</p>
</dd>
-
+
<dt><strong>Popup menu</strong></dt>
<dd>A popup menu displays a list of items in a vertical list that's anchored to the view that
invoked the menu. It's good for providing an overflow of actions that relate to specific content or
@@ -130,7 +130,7 @@ directory and build the menu with the following elements:</p>
<dt><code>&lt;item></code></dt>
<dd>Creates a {@link android.view.MenuItem}, which represents a single item in a menu. This
element may contain a nested <code>&lt;menu></code> element in order to create a submenu.</dd>
-
+
<dt><code>&lt;group></code></dt>
<dd>An optional, invisible container for {@code &lt;item&gt;} elements. It allows you to
categorize menu items so they share properties such as active state and visibility. For more
@@ -224,7 +224,7 @@ the sixth item and the rest into the overflow menu, which the user can open by s
<em>More</em>.</li>
<li>If you've developed your application for <strong>Android 3.0 (API level 11) and
-higher</strong>, items from the options menu are available in the
+higher</strong>, items from the options menu are available in the
app bar. By default, the system
places all items in the action overflow, which the user can reveal with the action overflow icon on
the right side of the app bar (or by pressing the device <em>Menu</em> button, if available). To
@@ -343,7 +343,7 @@ again unless the menu is invalidated for some reason. However, you should use {@
android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} only to create the initial
menu state and not to make changes during the activity lifecycle.</p>
-<p>If you want to modify the options menu based on
+<p>If you want to modify the options menu based on
events that occur during the activity lifecycle, you can do so in
the {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()} method. This
method passes you the {@link android.view.Menu} object as it currently exists so you can modify it,
@@ -360,7 +360,7 @@ presented in the app bar. When an event occurs and you want to perform a menu up
call {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()} to request that the
system call {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}.</p>
-<p class="note"><strong>Note:</strong>
+<p class="note"><strong>Note:</strong>
You should never change items in the options menu based on the {@link android.view.View} currently
in focus. When in touch mode (when the user is not using a trackball or d-pad), views
cannot take focus, so you should never use focus as the basis for modifying
@@ -738,8 +738,8 @@ that shows a popup menu:</p>
<pre>
&lt;ImageButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:src="@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup" />
@@ -1023,6 +1023,6 @@ category. For example:</p>
<p>Read more about writing intent filters in the
<a href="/guide/components/intents-filters.html">Intents and Intent Filters</a> document.</p>
-<p>For a sample application using this technique, see the
+<p>For a sample application using this technique, see the
<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Note
Pad</a> sample code.</p>
diff --git a/docs/html/guide/topics/ui/notifiers/toasts.jd b/docs/html/guide/topics/ui/notifiers/toasts.jd
index e5d4a0a35651..d9627274fa3e 100644
--- a/docs/html/guide/topics/ui/notifiers/toasts.jd
+++ b/docs/html/guide/topics/ui/notifiers/toasts.jd
@@ -2,14 +2,14 @@ page.title=Toasts
@jd:body
<div id="qv-wrapper">
- <div id="qv">
+ <div id="qv">
<h2>In this document</h2>
<ol>
<li><a href="#Basics">The Basics</a></li>
<li><a href="#Positioning">Positioning your Toast</a></li>
<li><a href="#CustomToastView">Creating a Custom Toast View</a></li>
</ol>
-
+
<h2>Key classes</h2>
<ol>
<li>{@link android.widget.Toast}</li>
@@ -19,14 +19,14 @@ page.title=Toasts
<p>A toast provides simple feedback about an operation in a small popup.
It only fills the amount of space required for the message and the current
-activity remains visible and interactive.
-For example, navigating away from an email before you send it triggers a
-"Draft saved" toast to let you know that you can continue editing later.
+activity remains visible and interactive.
+For example, navigating away from an email before you send it triggers a
+"Draft saved" toast to let you know that you can continue editing later.
Toasts automatically disappear after a timeout.</p>
<img src="{@docRoot}images/toast.png" alt="" />
-<p>If user response to a status message is required, consider instead using a
+<p>If user response to a status message is required, consider instead using a
<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Notification</a>.</p>
@@ -49,8 +49,8 @@ toast.show();
</pre>
<p>This example demonstrates everything you need for most toast notifications.
-You should rarely need anything else. You may, however, want to position the
-toast differently or even use your own layout instead of a simple text message.
+You should rarely need anything else. You may, however, want to position the
+toast differently or even use your own layout instead of a simple text message.
The following sections describe how you can do these things.</p>
<p>You can also chain your methods and avoid holding on to the Toast object, like this:</p>
@@ -61,7 +61,7 @@ The following sections describe how you can do these things.</p>
<p>A standard toast notification appears near the bottom of the screen, centered horizontally.
You can change this position with the {@link android.widget.Toast#setGravity(int,int,int)}
-method. This accepts three parameters: a {@link android.view.Gravity} constant,
+method. This accepts three parameters: a {@link android.view.Gravity} constant,
an x-position offset, and a y-position offset.</p>
<p>For example, if you decide that the toast should appear in the top-left corner, you can set the
@@ -70,7 +70,7 @@ gravity like this:</p>
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
</pre>
-<p>If you want to nudge the position to the right, increase the value of the second parameter.
+<p>If you want to nudge the position to the right, increase the value of the second parameter.
To nudge it down, increase the value of the last parameter.
@@ -103,7 +103,7 @@ with the following XML (saved as <em>toast_layout.xml</em>):</p>
android:textColor="#FFF"
/>
&lt;/LinearLayout>
-</pre>
+</pre>
<p>Notice that the ID of the LinearLayout element is "toast_layout_root". You must use this
ID to inflate the layout from the XML, as shown here:</p>
@@ -123,21 +123,21 @@ toast.setView(layout);
toast.show();
</pre>
-<p>First, retrieve the {@link android.view.LayoutInflater} with
-{@link android.app.Activity#getLayoutInflater()}
+<p>First, retrieve the {@link android.view.LayoutInflater} with
+{@link android.app.Activity#getLayoutInflater()}
(or {@link android.content.Context#getSystemService(String) getSystemService()}),
-and then inflate the layout from XML using
+and then inflate the layout from XML using
{@link android.view.LayoutInflater#inflate(int, ViewGroup)}. The first parameter
is the layout resource ID and the second is the root View. You can use
-this inflated layout to find more View objects in the layout, so now capture and
+this inflated layout to find more View objects in the layout, so now capture and
define the content for the ImageView and TextView elements. Finally, create
a new Toast with {@link android.widget.Toast#Toast(Context)} and set some properties
of the toast, such as the gravity and duration. Then call
{@link android.widget.Toast#setView(View)} and pass it the inflated layout.
-You can now display the toast with your custom layout by calling
+You can now display the toast with your custom layout by calling
{@link android.widget.Toast#show()}.</p>
-<p class="note"><strong>Note:</strong> Do not use the public constructor for a Toast
+<p class="note"><strong>Note:</strong> Do not use the public constructor for a Toast
unless you are going to define the layout with {@link android.widget.Toast#setView(View)}.
If you do not have a custom layout to use, you must use
{@link android.widget.Toast#makeText(Context,int,int)} to create the Toast.</p>
diff --git a/docs/html/guide/topics/ui/overview.jd b/docs/html/guide/topics/ui/overview.jd
index 85c5756de35c..f323d6c4926d 100644
--- a/docs/html/guide/topics/ui/overview.jd
+++ b/docs/html/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@ group. </p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
+ android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
&lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@ layout.</p>
<p>For a complete guide to creating a UI layout, see <a href="declaring-layout.html">XML
Layouts</a>.
-
+
<h2 id="UIComponents">User Interface Components</h2>
<p>You don't have to build all of your UI using {@link android.view.View} and {@link
diff --git a/docs/html/guide/topics/ui/settings.jd b/docs/html/guide/topics/ui/settings.jd
index 243c1c340eb3..9e304a3f603c 100644
--- a/docs/html/guide/topics/ui/settings.jd
+++ b/docs/html/guide/topics/ui/settings.jd
@@ -84,7 +84,7 @@ href="{@docRoot}design/patterns/settings.html">Settings</a> design guide.</p>
<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
<p class="img-caption"><strong>Figure 1.</strong> Screenshots from the Android Messaging app's
-settings. Selecting an item defined by a {@link android.preference.Preference}
+settings. Selecting an item defined by a {@link android.preference.Preference}
opens an interface to change the setting.</p>
@@ -230,7 +230,7 @@ android.preference.ListPreference}. Both items include the following three attri
<dt>{@code android:key}</dt>
<dd>This attribute is required for preferences that persist a data value. It specifies the unique
key (a string) the system uses when saving this setting's value in the {@link
-android.content.SharedPreferences}.
+android.content.SharedPreferences}.
<p>The only instances in which this attribute is <em>not required</em> is when the preference is a
{@link android.preference.PreferenceCategory} or {@link android.preference.PreferenceScreen}, or the
preference specifies an {@link android.content.Intent} to invoke (with an <a
@@ -291,7 +291,7 @@ android.preference.PreferenceCategory}.</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;PreferenceCategory
+ &lt;PreferenceCategory
android:title="&#64;string/pref_sms_storage_title"
android:key="pref_key_storage_settings">
&lt;CheckBoxPreference
@@ -299,12 +299,12 @@ android.preference.PreferenceCategory}.</p>
android:summary="&#64;string/pref_summary_auto_delete"
android:title="&#64;string/pref_title_auto_delete"
android:defaultValue="false"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_sms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
android:title="&#64;string/pref_title_sms_delete"... />
- &lt;Preference
+ &lt;Preference
android:key="pref_key_mms_delete_limit"
android:dependency="pref_key_auto_delete"
android:summary="&#64;string/pref_summary_delete_limit"
@@ -594,11 +594,11 @@ element inside a root {@code <preference-headers>} element. For example:</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
@@ -678,15 +678,15 @@ the {@link android.preference.PreferenceActivity} that specifies which preferenc
load.</p>
<p>For example, here's an XML file for preference headers that is used on Android 3.0
-and higher ({@code res/xml/preference_headers.xml}):</p>
+and higher ({@code res/xml/preference_headers.xml}):</p>
<pre>
&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentOne"
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" />
- &lt;header
+ &lt;header
android:fragment="com.example.prefs.SettingsFragmentTwo"
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" />
@@ -698,18 +698,18 @@ Android 3.0 ({@code res/xml/preference_headers_legacy.xml}):</p>
<pre>
&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_one"
android:summary="@string/prefs_summ_category_one" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_ONE" />
&lt;/Preference>
- &lt;Preference
+ &lt;Preference
android:title="@string/prefs_category_two"
android:summary="@string/prefs_summ_category_two" >
- &lt;intent
+ &lt;intent
android:targetPackage="com.example.prefs"
android:targetClass="com.example.prefs.SettingsActivity"
android:action="com.example.prefs.PREFS_TWO" />
@@ -982,11 +982,11 @@ default positive and negative dialog buttons:</p>
public class NumberPickerPreference extends DialogPreference {
public NumberPickerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
-
+
setDialogLayoutResource(R.layout.numberpicker_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
-
+
setDialogIcon(null);
}
...
@@ -1201,7 +1201,7 @@ protected void onRestoreInstanceState(Parcelable state) {
// Cast state to custom BaseSavedState and pass to superclass
SavedState myState = (SavedState) state;
super.onRestoreInstanceState(myState.getSuperState());
-
+
// Set this Preference's widget to reflect the restored state
mNumberPicker.setValue(myState.value);
}
diff --git a/docs/html/guide/topics/ui/themes.jd b/docs/html/guide/topics/ui/themes.jd
index f932dbdec191..436b789ea51f 100644
--- a/docs/html/guide/topics/ui/themes.jd
+++ b/docs/html/guide/topics/ui/themes.jd
@@ -177,7 +177,7 @@ You're probably familiar with some already, such as {@link android.R.attr#layout
<p>The best place to find properties that apply to a specific {@link android.view.View} is the
corresponding class reference, which lists all of the supported XML attributes. For example, all of the
attributes listed in the table of
-<a href="{@docRoot}reference/android/widget/TextView.html#lattrs">TextView XML
+<a href="{@docRoot}reference/android/widget/TextView.html#lattrs">TextView XML
attributes</a> can be used in a style definition for a {@link android.widget.TextView} element (or one of
its subclasses). One of the attributes listed in the reference is <a
href="{@docRoot}reference/android/widget/TextView.html#attr_android:inputType">{@code
@@ -279,14 +279,14 @@ does <em>not</em> use the <code>android:</code> namespace prefix.</p>
<h3 id="ApplyATheme">Apply a theme to an Activity or application</h3>
<p>To set a theme for all the activities of your application, open the {@code AndroidManifest.xml} file and
-edit the <code>&lt;application></code> tag to include the <code>android:theme</code> attribute with the
+edit the <code>&lt;application></code> tag to include the <code>android:theme</code> attribute with the
style name. For example:</p>
<pre>
&lt;application android:theme="@style/CustomTheme">
</pre>
-<p>If you want a theme applied to just one Activity in your application, then add the
+<p>If you want a theme applied to just one Activity in your application, then add the
<code>android:theme</code> attribute to the <code>&lt;activity></code> tag instead.</p>
<p>Just as Android provides other built-in resources, there are many pre-defined themes that you can use, to avoid
@@ -374,9 +374,9 @@ keeps your program code focused on application functionality, rather than style.
for you to change your theme programatically (perhaps based on a user preference), you can.</p>
<p>To set the theme in your program code, use the {@link android.content.ContextWrapper#setTheme(int)}
-method and pass it the theme resource ID. Note that, when doing so, you must be sure to set the theme <em>before</em>
-instantiating any Views in the context, for example, before calling
-<code>setContentView(View)</code> or <code>inflate(int, ViewGroup)</code>. This ensures that
+method and pass it the theme resource ID. Note that, when doing so, you must be sure to set the theme <em>before</em>
+instantiating any Views in the context, for example, before calling
+<code>setContentView(View)</code> or <code>inflate(int, ViewGroup)</code>. This ensures that
the system applies the same theme for all of your UI screens. Here's an example:</p>
<pre>
@@ -391,7 +391,7 @@ the system applies the same theme for all of your UI screens. Here's an example:
<p>If you are considering loading a theme programmatically for the main
screen of your application, note that the theme would not be applied
in any animations the system would use to start the activity, which
-would take place before your application opens. In most cases, if
+would take place before your application opens. In most cases, if
you want to apply a theme to your main screen, doing so in XML
is a better approach. </p>
diff --git a/docs/html/guide/topics/ui/ui-events.jd b/docs/html/guide/topics/ui/ui-events.jd
index 6d41b15f6c17..7dd24a44fa89 100644
--- a/docs/html/guide/topics/ui/ui-events.jd
+++ b/docs/html/guide/topics/ui/ui-events.jd
@@ -20,8 +20,8 @@ parent.link=index.html
When considering events within your user interface, the approach is to capture the events from
the specific View object that the user interacts with. The View class provides the means to do so.</p>
-<p>Within the various View classes that you'll use to compose your layout, you may notice several public callback
-methods that look useful for UI events. These methods are called by the Android framework when the
+<p>Within the various View classes that you'll use to compose your layout, you may notice several public callback
+methods that look useful for UI events. These methods are called by the Android framework when the
respective action occurs on that object. For instance, when a View (such as a Button) is touched,
the <code>onTouchEvent()</code> method is called on that object. However, in order to intercept this, you must extend
the class and override the method. However, extending every View object
@@ -30,7 +30,7 @@ a collection of nested interfaces with callbacks that you can much more easily d
called <a href="#EventListeners">event listeners</a>, are your ticket to capturing the user interaction with your UI.</p>
<p>While you will more commonly use the event listeners to listen for user interaction, there may
-come a time when you do want to extend a View class, in order to build a custom component.
+come a time when you do want to extend a View class, in order to build a custom component.
Perhaps you want to extend the {@link android.widget.Button}
class to make something more fancy. In this case, you'll be able to define the default event behaviors for your
class using the class <a href="#EventHandlers">event handlers</a>.</p>
@@ -38,7 +38,7 @@ class using the class <a href="#EventHandlers">event handlers</a>.</p>
<h2 id="EventListeners">Event Listeners</h2>
-<p>An event listener is an interface in the {@link android.view.View} class that contains a single
+<p>An event listener is an interface in the {@link android.view.View} class that contains a single
callback method. These methods will be called by the Android framework when the View to which the listener has
been registered is triggered by user interaction with the item in the UI.</p>
@@ -46,27 +46,27 @@ been registered is triggered by user interaction with the item in the UI.</p>
<dl>
<dt><code>onClick()</code></dt>
- <dd>From {@link android.view.View.OnClickListener}.
- This is called when the user either touches the item
+ <dd>From {@link android.view.View.OnClickListener}.
+ This is called when the user either touches the item
(when in touch mode), or focuses upon the item with the navigation-keys or trackball and
presses the suitable "enter" key or presses down on the trackball.</dd>
<dt><code>onLongClick()</code></dt>
- <dd>From {@link android.view.View.OnLongClickListener}.
- This is called when the user either touches and holds the item (when in touch mode), or
+ <dd>From {@link android.view.View.OnLongClickListener}.
+ This is called when the user either touches and holds the item (when in touch mode), or
focuses upon the item with the navigation-keys or trackball and
presses and holds the suitable "enter" key or presses and holds down on the trackball (for one second).</dd>
<dt><code>onFocusChange()</code></dt>
- <dd>From {@link android.view.View.OnFocusChangeListener}.
+ <dd>From {@link android.view.View.OnFocusChangeListener}.
This is called when the user navigates onto or away from the item, using the navigation-keys or trackball.</dd>
<dt><code>onKey()</code></dt>
- <dd>From {@link android.view.View.OnKeyListener}.
+ <dd>From {@link android.view.View.OnKeyListener}.
This is called when the user is focused on the item and presses or releases a hardware key on the device.</dd>
<dt><code>onTouch()</code></dt>
- <dd>From {@link android.view.View.OnTouchListener}.
+ <dd>From {@link android.view.View.OnTouchListener}.
This is called when the user performs an action qualified as a touch event, including a press, a release,
or any movement gesture on the screen (within the bounds of the item).</dd>
<dt><code>onCreateContextMenu()</code></dt>
- <dd>From {@link android.view.View.OnCreateContextMenuListener}.
+ <dd>From {@link android.view.View.OnCreateContextMenuListener}.
This is called when a Context Menu is being built (as the result of a sustained "long click"). See the discussion
on context menus in the <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Menus</a>
developer guide.</dd>
@@ -75,8 +75,8 @@ been registered is triggered by user interaction with the item in the UI.</p>
<p>These methods are the sole inhabitants of their respective interface. To define one of these methods
and handle your events, implement the nested interface in your Activity or define it as an anonymous class.
Then, pass an instance of your implementation
-to the respective <code>View.set...Listener()</code> method. (E.g., call
-<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>
+to the respective <code>View.set...Listener()</code> method. (E.g., call
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>
and pass it your implementation of the {@link android.view.View.OnClickListener OnClickListener}.)</p>
<p>The example below shows how to register an on-click listener for a Button. </p>
@@ -121,17 +121,17 @@ public class ExampleActivity extends Activity implements OnClickListener {
no return value, but some other event listener methods must return a boolean. The reason
depends on the event. For the few that do, here's why:</p>
<ul>
- <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> -
- This returns a boolean to indicate whether you have consumed the event and it should not be carried further.
- That is, return <em>true</em> to indicate that you have handled the event and it should stop here;
+ <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> -
+ This returns a boolean to indicate whether you have consumed the event and it should not be carried further.
+ That is, return <em>true</em> to indicate that you have handled the event and it should stop here;
return <em>false</em> if you have not handled it and/or the event should continue to any other
on-click listeners.</li>
- <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> -
+ <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> -
This returns a boolean to indicate whether you have consumed the event and it should not be carried further.
- That is, return <em>true</em> to indicate that you have handled the event and it should stop here;
+ That is, return <em>true</em> to indicate that you have handled the event and it should stop here;
return <em>false</em> if you have not handled it and/or the event should continue to any other
on-key listeners.</li>
- <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> -
+ <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> -
This returns a boolean to indicate whether your listener consumes this event. The important thing is that
this event can have multiple actions that follow each other. So, if you return <em>false</em> when the
down action event is received, you indicate that you have not consumed the event and are also
@@ -142,7 +142,7 @@ depends on the event. For the few that do, here's why:</p>
<p>Remember that hardware key events are always delivered to the View currently in focus. They are dispatched starting from the top
of the View hierarchy, and then down, until they reach the appropriate destination. If your View (or a child of your View)
currently has focus, then you can see the event travel through the <code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
-dispatchKeyEvent()}</code> method. As an alternative to capturing key events through your View, you can also receive
+dispatchKeyEvent()}</code> method. As an alternative to capturing key events through your View, you can also receive
all of the events inside your Activity with <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>
and <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code>.</p>
@@ -176,19 +176,19 @@ including:</p>
<li><code>{@link android.view.View#onTouchEvent}</code> - Called when a touch screen motion event occurs.</li>
<li><code>{@link android.view.View#onFocusChanged}</code> - Called when the view gains or loses focus.</li>
</ul>
-<p>There are some other methods that you should be aware of, which are not part of the View class,
-but can directly impact the way you're able to handle events. So, when managing more complex events inside
+<p>There are some other methods that you should be aware of, which are not part of the View class,
+but can directly impact the way you're able to handle events. So, when managing more complex events inside
a layout, consider these other methods:</p>
<ul>
<li><code>{@link android.app.Activity#dispatchTouchEvent(MotionEvent)
- Activity.dispatchTouchEvent(MotionEvent)}</code> - This allows your {@link
+ Activity.dispatchTouchEvent(MotionEvent)}</code> - This allows your {@link
android.app.Activity} to intercept all touch events before they are dispatched to the window.</li>
<li><code>{@link android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - This allows a {@link
android.view.ViewGroup} to watch events as they are dispatched to child Views.</li>
<li><code>{@link android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - Call this
- upon a parent View to indicate that it should not intercept touch events with <code>{@link
+ upon a parent View to indicate that it should not intercept touch events with <code>{@link
android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li>
</ul>
@@ -199,7 +199,7 @@ necessary to give focus to actionable items (like buttons) so the user can see
what will accept input. If the device has touch capabilities, however, and the user
begins interacting with the interface by touching it, then it is no longer necessary to
highlight items, or give focus to a particular View. Thus, there is a mode
-for interaction named "touch mode."
+for interaction named "touch mode."
</p>
<p>
For a touch-capable device, once the user touches the screen, the device
@@ -214,7 +214,7 @@ exit touch mode, and find a view to take focus. Now, the user may resume interac
with the user interface without touching the screen.
</p>
<p>
-The touch mode state is maintained throughout the entire system (all windows and activities).
+The touch mode state is maintained throughout the entire system (all windows and activities).
To query the current state, you can call
{@link android.view.View#isInTouchMode} to see whether the device is currently in touch mode.
</p>
@@ -254,10 +254,10 @@ the focus is leaving. Define the value of the attribute to be the id of the View
<p>Ordinarily, in this vertical layout, navigating up from the first Button would not go
anywhere, nor would navigating down from the second Button. Now that the top Button has
-defined the bottom one as the <var>nextFocusUp</var> (and vice versa), the navigation focus will
+defined the bottom one as the <var>nextFocusUp</var> (and vice versa), the navigation focus will
cycle from top-to-bottom and bottom-to-top.</p>
-<p>If you'd like to declare a View as focusable in your UI (when it is traditionally not),
+<p>If you'd like to declare a View as focusable in your UI (when it is traditionally not),
add the <code>android:focusable</code> XML attribute to the View, in your layout declaration.
Set the value <var>true</var>. You can also declare a View
as focusable while in Touch Mode with <code>android:focusableInTouchMode</code>.</p>
@@ -282,7 +282,7 @@ as discussed in the <a href="#EventListeners">Event Listeners</a> section, above
the framework will take care of measuring, laying out, and drawing the tree
as appropriate.</li>
</ol>
-
+
<p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
the UI thread when calling any method on any View.
If you are doing work on other threads and want to update the state of a View
diff --git a/docs/html/guide/webapps/debugging.jd b/docs/html/guide/webapps/debugging.jd
index a74797df3bd3..9e8e11337b73 100755
--- a/docs/html/guide/webapps/debugging.jd
+++ b/docs/html/guide/webapps/debugging.jd
@@ -92,7 +92,7 @@ expect from other web browsers.</p>
<h2 id="WebView">Using Console APIs in WebView</h2>
<p>All the console APIs shown above are also
-supported when debugging in {@link android.webkit.WebView}.
+supported when debugging in {@link android.webkit.WebView}.
If you're targeting Android 2.1 (API level 7) and higher, you must
provide a {@link android.webkit.WebChromeClient}
that implements the {@link android.webkit.WebChromeClient#onConsoleMessage(String,int,String)
diff --git a/docs/html/guide/webapps/targeting.jd b/docs/html/guide/webapps/targeting.jd
index 4a2ea1773c95..10259b115b29 100644
--- a/docs/html/guide/webapps/targeting.jd
+++ b/docs/html/guide/webapps/targeting.jd
@@ -108,7 +108,7 @@ should exactly match the device screen's width and that the ability to zoom shou
<p>When optimizing your site for mobile devices, you should usually set the width to
-{@code "device-width"} so the size fits exactly on all devices, then use CSS media queries to
+{@code "device-width"} so the size fits exactly on all devices, then use CSS media queries to
flexibly adapt layouts to suit different screen sizes.
<p class="note"><strong>Note:</strong> You should disable user scaling only when you're certain
diff --git a/docs/html/images/distribute/google-sign-in-banner.png b/docs/html/images/distribute/google-sign-in-banner.png
new file mode 100644
index 000000000000..ba046861a770
--- /dev/null
+++ b/docs/html/images/distribute/google-sign-in-banner.png
Binary files differ
diff --git a/docs/html/jd_extras_en.js b/docs/html/jd_extras_en.js
index 434f2116a0b4..5c4227781de2 100644
--- a/docs/html/jd_extras_en.js
+++ b/docs/html/jd_extras_en.js
@@ -2887,6 +2887,19 @@ METADATA['en'].extras = METADATA['en'].extras.concat([
"lang": "en",
"group": "",
"tags": [],
+ "url": "https://www.udacity.com/courses/ud876-3",
+ "timestamp": null,
+ "image": "distribute/images/advertising.jpg",
+ "title": "Learn how to show ads in your Android app",
+ "summary": "Take this online course to learn how to use AdMob to display ads in your Android app.",
+ "keywords": ["marketing", "analytics"],
+ "type": "distribute",
+ "titleFriendly": ""
+ },
+ {
+ "lang": "en",
+ "group": "",
+ "tags": [],
"url": "https://developers.google.com/mobile-ads-sdk/download",
"timestamp": null,
"image": "distribute/images/advertising.jpg",
@@ -2969,7 +2982,7 @@ METADATA['en'].extras = METADATA['en'].extras.concat([
"url": "https://developers.google.com/identity/sign-in/android/people",
"timestamp": 1383243492000,
"image": "images/cards/google-sign-in_2x.png",
- "title": "Get user profile details",
+ "title": "Get User Profile Details",
"summary": "After users sign-in with Google, you can access their age range, language, and public profile information.",
"keywords": ["signin", "identity", "google"],
"type": "distribute",
diff --git a/docs/html/license.jd b/docs/html/license.jd
index 4f4036b41211..e843c6b35e07 100644
--- a/docs/html/license.jd
+++ b/docs/html/license.jd
@@ -9,7 +9,7 @@ excludeFromSuggestions=true
<p>For the purposes of licensing, the content of this web site is divided
into two categories:</p>
<ul>
- <li>Documentation content, including both static documentation and content extracted from source
+ <li>Documentation content, including both static documentation and content extracted from source
code modules, as well as sample code, and </li>
<li>All other site content</li>
</ul>
@@ -66,7 +66,7 @@ it as an audiobook for the visually impaired, or even translate it. </p>
license, note that proprietary trademarks and brand features are not
included in that license.</li>
-<li>Google's trademarks and other brand features (including the
+<li>Google's trademarks and other brand features (including the
<img src="images/android-logo.png" alt="Android"
style="margin:0;padding:0 2px;vertical-align:baseline" /> stylized typeface logo) are not included
in the license.
@@ -74,7 +74,7 @@ Please see <a
href="{@docRoot}distribute/tools/promote/brand.html">Brand Guidelines</a> for
information about this usage. </li>
-<li>In some cases, a page may include content, such as an image, that is not
+<li>In some cases, a page may include content, such as an image, that is not
covered by the license. In that case, we will label the content that is not licensed. </li>
<li>In addition, content linked from a page on this site is not covered
@@ -92,22 +92,22 @@ Proper attribution is required when you reuse or create modified
versions of content that appears on a page made available under the
terms of the Creative Commons Attribution license. On this site, the
requirement for attribution applies only to the non-documentation
-content, as described earlier in this document. The complete
-requirements for attribution can be found in section 4b of the
+content, as described earlier in this document. The complete
+requirements for attribution can be found in section 4b of the
<a href="http://creativecommons.org/licenses/by/2.5/legalcode">
Creative Commons legal code</a>.
</p>
<p>
In practice we ask that you provide attribution to the Android Open
- Source project to the best of the ability of the medium in which you
- are producing the work. There are several typical ways in which this
+ Source project to the best of the ability of the medium in which you
+ are producing the work. There are several typical ways in which this
might apply:
</p>
<h3>Exact Reproductions</h3>
<p>
If your online work <em>exactly reproduces</em> text or images from this
site, in whole or in part, please include a paragraph at the bottom
- of your page that reads:
+ of your page that reads:
</p>
<p style="margin-left:20px;font-style:italic">
Portions of this page are reproduced from work created and <a
diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd
index 90b4e39d7ac2..c7ffb7a06b76 100644
--- a/docs/html/preview/api-overview.jd
+++ b/docs/html/preview/api-overview.jd
@@ -27,6 +27,7 @@ page.image=images/cards/card-n-apis_2x.png
<li><a href="#multi-locale_languages">Locales and Languages</a></li>
<li><a href="#emoji">New Emojis</a></li>
<li><a href="#icu4">ICU4J APIs in Android</a></li>
+ <li><a href="#webview">WebView</a></li>
<li><a href="#gles_32">OpenGL ES 3.2 API</a></li>
<li><a href="#android_tv_recording">Android TV Recording</a></li>
<li><a href="#android_for_work">Android for Work</a></li>
@@ -573,7 +574,85 @@ should follow, see <a href="{@docRoot}preview/features/multilingual-support.html
"{@docRoot}preview/features/icu4j-framework.html">ICU4J Support</a>.
</p>
+<h2 id="webview">WebView</h2>
+<h3>Chrome + WebView, Together</h3>
+
+<p>
+ Starting with Chrome version 51 on Android N and above, the Chrome APK on your device
+ is used to provide and render Android System WebViews. This approach improves memory
+ usage on the device itself and also reduces the bandwidth required to keep
+ WebView up to date (as the standalone WebView APK will no longer be updated
+ as long as Chrome remains enabled).
+</p>
+
+<p>
+ You can choose your WebView provider by enabling Developer Options and
+ selecting <strong>WebView implementation</strong>. You can use any compatible
+ Chrome version (Dev, Beta or Stable) that is installed on your device or the
+ standalone Webview APK to act as the WebView implementation.
+</p>
+
+<h3>Multiprocess</h3>
+
+<p>
+ Starting with Chrome version 51 in Android N, WebView will run web content in a
+ separate sandboxed process when the developer option "Multiprocess WebView"
+ is enabled.
+</p>
+
+<p>
+ We're looking for feedback on compatibility and runtime performance in N
+ before enabling multiprocess WebView in a future version of Android. In this
+ version, regressions in startup time, total memory usage and software
+ rendering performance are expected.
+</p>
+
+<p>
+ If you find unexpected issues in multiprocess mode we’d like to hear about
+ them. Please get in touch with the WebView team on the <a href=
+ "https://bugs.chromium.org/p/chromium/issues/entry?template=Webview%20Bugs"
+ >Chromium bug tracker</a>.
+</p>
+
+<h3>Javascript run before page load</h3>
+<p>
+ Starting with apps targeting Android N, the Javascript context will be reset
+ when a new page is loaded. Currently, the context is carried over for the
+ first page loaded in a new WebView instance.
+</p>
+
+<p>
+ Developers looking to inject Javascript into the WebView should execute the
+ script after the page has started to load.
+</p>
+
+<h3>Geolocation on insecure origins</h3>
+
+<p>
+ Starting with apps targeting Android N, the geolocation API will only be
+ allowed on secure origins (over HTTPS.) This policy is designed to protect
+ users’ private information when they’re using an insecure connection.
+</p>
+
+<h3>Testing with WebView Beta</h3>
+
+<p>
+ WebView is updated regularly, so we recommend that you test compatibility
+ with your app frequently using WebView’s beta channel. To get started testing
+ pre-release versions of WebView on Android N, download and install either
+ Chrome Dev or Chrome Beta, and select it as the WebView implementation under
+ developer options as described above. Please report issues via the <a href=
+ "https://bugs.chromium.org/p/chromium/issues/entry?template=Webview%20Bugs">Chromium
+ bug tracker</a> so that we can fix them before a new version of WebView is
+ released.
+</p>
+
+<p>
+ If you have any other questions or issues, feel free to reach out to the
+ WebView team via our <a href=
+ "https://plus.google.com/communities/105434725573080290360">G+ community</a>.
+</p>
<h2 id="gles_32">OpenGL&trade; ES 3.2 API</h2>
@@ -667,8 +746,9 @@ action <code>android.net.VpnService</code>. </p>
<p>
Users can also manually set Always on VPN clients that implement
- <code>VPNService</code> methods in the primary user using
- <strong>Settings&gt;More&gt;Vpn</strong>.
+ <code>VPNService</code> methods using
+ <strong>Settings&gt;More&gt;Vpn</strong>. The option to enable Always on VPN
+ from Settings is available only if VPN client targets API level 24.
</p>
<h3 id="custom_provisioning">Customized provisioning</h3>
diff --git a/docs/html/preview/behavior-changes.jd b/docs/html/preview/behavior-changes.jd
index 3a3729534462..ba08d9b16411 100644
--- a/docs/html/preview/behavior-changes.jd
+++ b/docs/html/preview/behavior-changes.jd
@@ -748,6 +748,40 @@ JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
to the trusted credentials storage via Settings UI separately, with a
DER-encoded format under a .crt or .cer file extension.
</li>
+
+ <li>Starting in Android N, fingerprint enrollment and storage are managed per user.
+ If a profile owner’s Device Policy Client (DPC) targets pre-N on an N device,
+ the user is still able to set fingerprint on the device, but work
+ applications cannot access device fingerprint. When the DPC targets N and
+ above, the user can set fingerprint specifically for work profile by going to
+ <strong>Settings &gt; Security &gt; Work profile security</strong>.
+ </li>
+
+ <li>A new encryption status <code>ENCRYPTION_STATUS_ACTIVE_PER_USER</code> is
+ returned by <code>DevicePolicyManager.getStorageEncryptionStatus()</code>, to
+ indicate that encryption is active and the encryption key is tied to the
+ user. The new status is only returned if DPC targets API Level 24 and above.
+ For apps targeting earlier API levels, <code>ENCRYPTION_STATUS_ACTIVE</code>
+ is returned, even if the encryption key is specific to the user or profile.
+ </li>
+
+ <li>In Android N, several methods that would ordinarily affect the entire
+ device behave differently if the device has a work profile installed with a
+ separate work challenge. Rather than affecting the entire device, these
+ methods apply only to the work profile. (The complete list of such methods is
+ in the {@link android.app.admin.DevicePolicyManager#getParentProfileInstance
+ DevicePolicyManager.getParentProfileInstance()} documentation.) For example,
+ {@link android.app.admin.DevicePolicyManager#lockNow
+ DevicePolicyManager.lockNow()} locks just the work profile, instead of
+ locking the entire device. For each of these methods, you can get the old
+ behavior by calling the method on the parent instance of the
+ {@link android.app.admin.DevicePolicyManager}; you can get this parent by
+ calling {@link android.app.admin.DevicePolicyManager#getParentProfileInstance
+ DevicePolicyManager.getParentProfileInstance()}. So for example, if you call
+ the parent instance's {@link android.app.admin.DevicePolicyManager#lockNow}
+ method, the entire device is locked.
+ </li>
+
</ul>
<p>
diff --git a/docs/html/preview/download-ota.jd b/docs/html/preview/download-ota.jd
index 18f3e8d01f0a..65f7f9f746f2 100644
--- a/docs/html/preview/download-ota.jd
+++ b/docs/html/preview/download-ota.jd
@@ -203,72 +203,72 @@ This is the Android SDK Preview License Agreement (the “License Agreementâ€).
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
<td><a href="#top" onclick="onDownload(this)"
- >bullhead-ota-npd56n-dd5c12ee.zip</a><br>
- MD5: af9a82e9a78925ca9c1c7f5f6fb851ec<br>
- SHA-1: e4aabd5634b7ebdeffa877cd9e49244c0be326e4
+ >bullhead-ota-npd90g-0a874807.zip</a><br>
+ MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+ SHA-1: a9920bcc8d475ce322cada097d085448512635e2
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
<td><a href="#top" onclick="onDownload(this)"
- >shamu-ota-npd56n-2818fd62.zip</a><br>
- MD5: d8df396b187a8667889260e5464bd676<br>
- SHA-1: c03c8ef8be587a574565855d4faa526254794e03
+ >shamu-ota-npd90g-06f5d23d.zip</a><br>
+ MD5: 513570bb3a91878c2d1a5807d2340420<br>
+ SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
<td><a href="#top" onclick="onDownload(this)"
- >angler-ota-npd56n-d2f2611c.zip</a><br>
- MD5: c3c206892d414d4fc7da892ff840eada<br>
- SHA-1: 2bdc79409ace5e163ef014ae51977d0a71b83df5
+ >angler-ota-npd90g-5baa69c2.zip</a><br>
+ MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+ SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
<td><a href="#top" onclick="onDownload(this)"
- >volantis-ota-npd56n-42228a60.zip</a><br>
- MD5: c80cf483d8b3c014fc7b27f80957a158<br>
- SHA-1: f437829320f47ea3aa5f8b70ce2f0bb3d30b3f4f
+ >volantis-ota-npd90g-c04785e1.zip</a><br>
+ MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+ SHA-1: 31633180635b831e59271a7d904439f278586f49
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
<td><a href="#top" onclick="onDownload(this)"
- >volantisg-ota-npd56n-9b4dbaac.zip</a><br>
- MD5: 9e55ac1650e4f07a662bafa7f082e91c<br>
- SHA-1: b9982be56c2817d122664869a1fbe9b13e9c72f7
+ >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+ MD5: 0493fa79763d67bcdde8007299e1888d<br>
+ SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
<td><a href="#top" onclick="onDownload(this)"
- >fugu-ota-npd56n-b305968a.zip</a><br>
- MD5: dfc980acad6772d8473ccaa9cbbb681a<br>
- SHA-1: d7bf8192649dea970afda165d181b4eea07abd7d
+ >fugu-ota-npd90g-3a0643ae.zip</a><br>
+ MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+ SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
<td><a href="#top" onclick="onDownload(this)"
- >ryu-ota-npd56n-5bf2fd66.zip</a><br>
- MD5: 1699e4bacfbef16a75ae6cf3f2e3d886<br>
- SHA-1: e20f3a8e43fcdd6acef21da80894afc8f9474e33
+ >ryu-ota-npd90g-ec931914.zip</a><br>
+ MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+ SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
<td><a href="#top" onclick="onDownload(this)"
- >seed_l8150-ota-npd56n-a322696c.zip</a><br>
- MD5: afc0e363ad2fd7418423e189a339a8e9<br>
- SHA-1: fc4d818878df51894eac29932dd0e9f6511329c6
+ >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+ MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+ SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
</td>
</tr>
diff --git a/docs/html/preview/download.jd b/docs/html/preview/download.jd
index ad82211d0e65..e4db8901b46f 100644
--- a/docs/html/preview/download.jd
+++ b/docs/html/preview/download.jd
@@ -219,14 +219,26 @@ This is the Android SDK Preview License Agreement (the “License Agreementâ€).
</p>
<ul>
- <li><strong>Enroll the device in automatic OTA system updates</strong> through the
- <a href="https://g.co/androidbeta">Android Beta Program</a>. Once enrolled, your device will receive regular
- over-the-air (OTA) updates of all milestone builds in the N Developer Preview. This
- approach is recommended because it lets you seamlessly transition from your current
- environment through the various releases of the N Developer Preview.</li>
- <li><strong>Download a Developer Preview system image and flash the device</strong>.
- OTA updates are not provided automatically for devices that you flash manually, but
- you can enroll those devices in Android Beta Program to get OTA updates. </li>
+ <li>
+ <strong>Enroll the device in automatic OTA system updates</strong> through
+ the <a href="https://g.co/androidbeta">Android Beta Program</a>. Once
+ enrolled, your device will receive regular over-the-air (OTA) updates of
+ all milestone builds in the N Developer Preview. When the next version of
+ Android is released, your device will automatically update to the final
+ version. This approach is recommended because it lets you seamlessly
+ transition from your current environment, through the various releases of
+ the N Developer Preview, to the release version.
+ </li>
+
+ <li>
+ <strong>Download a Developer Preview system image and flash the
+ device</strong>. OTA updates are not provided automatically for devices
+ that you flash manually, but you can enroll those devices in Android Beta
+ Program to get OTA updates. When the next version of Android is released,
+ you can download the final device image from the <a href=
+ "https://developers.google.com/android/nexus/images" type=
+ "external-link">factory images</a> page.
+ </li>
</ul>
<h3 id="ota">Enroll the device in automatic OTA updates</h3>
@@ -234,9 +246,11 @@ This is the Android SDK Preview License Agreement (the “License Agreementâ€).
<p>
If you have access to a supported device (see the list in the Downloads
table), you can receive over-the-air updates to preview versions of Android
- by enrolling that device in the <a href="https://g.co/androidbeta">Android Beta Program</a>. These updates are
- automatically downloaded and will update your device just like official
- system updates.
+ by enrolling that device in the <a href="https://g.co/androidbeta">Android
+ Beta Program</a>. These updates are automatically downloaded and will update
+ your device just like official system updates. When the next version of
+ Android is released, the device will automatically update to the production
+ version.
</p>
<p>
@@ -282,7 +296,8 @@ This is the Android SDK Preview License Agreement (the “License Agreementâ€).
<p>
Manually flashed system images <strong>do not
automatically receive OTA updates</strong> to later Developer Preview
- milestone builds. Make sure to keep your environment up-to-date and flash a
+ milestone builds or the final, production version. Make sure to keep your
+ environment up-to-date and flash a
new system image at each Developer Preview milestone.
</p>
@@ -302,81 +317,72 @@ This is the Android SDK Preview License Agreement (the “License Agreementâ€).
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
<td><a href="#top" onclick="onDownload(this)"
- >bullhead-npd56n-factory-996cac57.tgz</a><br>
- MD5: 5aadba91f60de00d58dc6198ef5cc3ba<br>
- SHA-1: 996cac575d83bde573315290da8f52cecc4127d2
+ >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+ MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+ SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
<td><a href="#top" onclick="onDownload(this)"
- >shamu-npd56n-factory-7936bf75.tgz</a><br>
- MD5: b7ed0db569f3bc2d6655fe8d8cea0e13<br>
- SHA-1: 7936bf75e6bfb771bd14485211a319b246311b96
+ >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+ MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+ SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
<td><a href="#top" onclick="onDownload(this)"
- >angler-npd56n-factory-1ce5ccad.tgz</a><br>
- MD5: f296eccaed4e2526d6435df8cf0e8df1<br>
- SHA-1: 1ce5ccad8a3eae143e0ecd9c7afbb1be2f1d41cc
+ >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+ MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+ SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
<td><a href="#top" onclick="onDownload(this)"
- >volantis-npd56n-factory-8b9f997e.tgz</a><br>
- MD5: 111c2fe5777dd6aae71fb8ef35dda9d3<br>
- SHA-1: 8b9f997ea39fdaf505527536bd346948ae1bae30
+ >volantis-npd90g-factory-41b55406.tgz</a><br>
+ MD5: cefa78950141da2a7c75e887717e3c8f<br>
+ SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
<td><a href="#top" onclick="onDownload(this)"
- >volantisg-npd56n-factory-ef05106a.tgz</a><br>
- MD5: 3a6f4d47b385966347bd26b7a922cd6e<br>
- SHA-1: ef05106a9e3becea5673ea67d6c0cc21a2ec09d4
+ >volantisg-npd90g-factory-610492be.tgz</a><br>
+ MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+ SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
<td><a href="#top" onclick="onDownload(this)"
- >fugu-npd56n-factory-a51674a1.tgz</a><br>
- MD5: b75dc745a64848ea24124db8fa9252ed<br>
- SHA-1: a51674a1303b17fec0405d513f9c0fe9f225780f
+ >fugu-npd90g-factory-0fe95694.tgz</a><br>
+ MD5: f4cb48f919e4c29c631de21416c612e2<br>
+ SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
<td><a href="#top" onclick="onDownload(this)"
- >ryu-npd56n-factory-e36c49b1.tgz</a><br>
- MD5: 0a2d660b09e19614a5b3573487b88066<br>
- SHA-1: e36c49b184843cdfe10278aebc04ce50b6d670b6
+ >ryu-npd90g-factory-f4da981c.tgz</a><br>
+ MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+ SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
<td><a href="#top" onclick="onDownload(this)"
- >seed_l8150-npd56n-factory-dd5d4fd2.tgz</a><br>
- MD5: 3420581b969af777753141dacc7f73b9<br>
- SHA-1: dd5d4fd203f9c5dad658434c0ff370c411b78835
- </td>
- </tr>
-
- <tr id="xperia">
- <td>Sony Xperia Z3 <br> (D6603 and D6653)</td>
- <td>Download: <a class="external-link"
- href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
- For more information, see <a class="external-link"
- href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Try Android N Developer Preview for Xperia Z3</a>.
+ >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+ MD5: 0ed565c509594072822d71c65b48ec8e<br>
+ SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
</td>
</tr>
diff --git a/docs/html/preview/features/notification-updates.jd b/docs/html/preview/features/notification-updates.jd
index af449cbecb5f..fd65e120d9e5 100644
--- a/docs/html/preview/features/notification-updates.jd
+++ b/docs/html/preview/features/notification-updates.jd
@@ -395,5 +395,6 @@ Notification notification = new Notification.Builder()
.addMessage("Hi", timestamp1, null) // Pass in null for user.
.addMessage("What's up?", timestamp2, "Coworker")
.addMessage("Not much", timestamp3, null)
- .addMessage("How about lunch?", timestamp4, "Coworker"));
+ .addMessage("How about lunch?", timestamp4, "Coworker"))
+ .build();
</pre>
diff --git a/docs/html/preview/overview.jd b/docs/html/preview/overview.jd
index faf48b8685fa..601442e95fef 100644
--- a/docs/html/preview/overview.jd
+++ b/docs/html/preview/overview.jd
@@ -157,7 +157,7 @@ page.tags="preview", "developer", "android"
<li><strong><a href="{@docRoot}preview/support.html#dp2">Preview 2</a></strong> (incremental update, alpha)</li>
<li><strong><a href="{@docRoot}preview/support.html#dp3">Preview 3</a></strong> (incremental update, beta)</li>
<li><strong><a href="{@docRoot}preview/support.html#dp4">Preview 4</a></strong> (final APIs and official SDK, Play publishing)</li>
- <li><strong>Preview 5</strong> (near-final system images for final testing)</li>
+ <li><strong><a href="{@docRoot}preview/support.html#dp5">Preview 5</a></strong> (near-final system images for final testing)</li>
<li><strong>Final release</strong> to AOSP and ecosystem</li>
</ul>
@@ -433,8 +433,10 @@ Android N</a> has
<li> Set up your environment by following the instructions for <a
href="{@docRoot}preview/setup-sdk.html">Setting up the Preview SDK</a>
and configuring test devices.</li>
- <li> Follow the <a href="https://developers.google.com/android/nexus/images">flashing
- instructions</a> to flash the latest Android N system image for your device. </li>
+ <li> Follow the <a href="{@docRoot}preview/download.html">
+ instructions</a> to update your device to the latest build of the N Developer
+ Preview. The easiest way is to enroll your device in
+ <a href="https://www.google.com/android/beta">Android Beta</a> program. </li>
<li> Review the <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API Reference</a>
and <a href="{@docRoot}preview/samples.html">Android N samples</a> to gain more
insight into new API features and how to use them in your app.
diff --git a/docs/html/preview/support.jd b/docs/html/preview/support.jd
index ef8a65293d47..0d0d9db2f1c8 100644
--- a/docs/html/preview/support.jd
+++ b/docs/html/preview/support.jd
@@ -12,14 +12,16 @@ page.image=images/cards/card-n-support_2x.png
<h2>In this document</h2>
<ul>
- <li><a href="#dp4">Developer Preview 4</a>
+ <li><a href="#dp5">Developer Preview 5</a>
<ul>
<li><a href="#general">General advisories</a></li>
- <li><a href="#new">New in DP4</a></li>
+ <li><a href="#new">New in DP5</a></li>
<li><a href="#ki">Known issues</a></li>
- <li><a href="#upgrade-notes">Notes on publishing apps that target API 24</a></li>
+ <li><a href="#upgrade-notes">Notes on publishing apps
+ that target API 24</a></li>
</ul>
</li>
+ <li><a href="#dp4">Developer Preview 4</a></li>
<li><a href="#dp3">Developer Preview 3</a></li>
<li><a href="#dp2">Developer Preview 2</a></li>
<li><a href="#dp1">Developer Preview 1</a></li>
@@ -50,6 +52,189 @@ page.image=images/cards/card-n-support_2x.png
community</a>.
</p>
+<h2 id="dp5">Developer Preview 5</h2>
+
+<div class="cols">
+ <div class="col-6of12">
+ <p>
+ <em>Date: July 2016<br>
+ Build: NPD90G<br>
+ Emulator support: x86 &amp; ARM (32/64-bit)<br>
+ Google Play services: 8.4</em>
+ </p>
+ </div>
+</div>
+
+<h3 id="general">General advisories</h3>
+
+<p>
+ This Developer Preview release is for <strong>app developers and other early
+ adopters</strong> and is available for daily use, development, or
+ compatibility testing. Please be aware of these general notes about the
+ release:
+</p>
+
+<ul>
+ <li>This release may have various <strong>stability issues</strong> on
+ supported devices.
+ </li>
+
+ <li>Some apps <strong>may not function as expected</strong> on the new
+ platform version. This includes Google’s apps as well as other apps.
+ </li>
+
+ <li>Developer Preview 5 is <strong>Compatibility Test Suite (CTS)
+ approved</strong> on these devices: Nexus 5X, Nexus 6, Nexus 6P, Nexus 9,
+ and Pixel C. Apps that depend on CTS approved builds should work normally
+ on these devices (Android Pay for example).
+ </li>
+
+ <li>Developer Preview 5 is <strong>available</strong> on Nexus 5X, Nexus 6, Nexus 6P,
+ Nexus 9, Nexus Player, Pixel C, and General Mobile 4G (Android One).
+ </li>
+</ul>
+
+
+<h3 id="new">New in DP5</h3>
+
+<h4>Updated system images for supported devices and emulator</h4>
+
+<p>
+ Developer Preview 5 includes <a href=
+ "{@docRoot}preview/download.html"><strong>near-final system
+ images</strong></a> for supported devices and the Android emulator. The
+ images include the final APIs (API level 24) for the upcoming Android N
+ platform. When you are done testing, you can publish apps using API
+ level 24 to Google Play, in alpha, beta, and production release channels.
+</p>
+
+
+<!--
+
+<h4 id="api-changes">Feature and API changes</h4>
+
+<ul>
+ <li>TODO</li>
+</ul>
+
+-->
+
+<h3 id="ki">Known Issues</h3>
+
+<h4>Stability</h4>
+
+<ul>
+ <li>Users may encounter system instability (such as kernel panics and
+ crashes).
+ </li>
+</ul>
+
+<h4>Multi-window</h4>
+<ul>
+ <li>MapView may be blank when resized in multi-window mode and not focused.
+ </li>
+</ul>
+
+<h4>Do Not Disturb</h4>
+<ul>
+ <li>Do Not Disturb mode may be set at device reboot. To work around
+ the issue, delete the existing rule for VR as follows: go to
+ <strong>Settings > Sound > Do not disturb > Automatic Rules</strong>
+ and tap the trash icon next to the VR rule.
+ </li>
+</ul>
+
+<h4>Screen zoom and multiple APKs in Google Play</h4>
+<ul>
+ <li>On devices running Developer Preview 5, Google Play services 9.0.83
+ incorrectly reports the current screen density rather than the stable screen
+ density. When screen zoom is enabled on these devices, this can cause Google
+ Play to select a version of a multi-APK app that’s designed for smaller
+ screens. This issue is fixed in the next version of Google Play services.
+ </li>
+</ul>
+
+<h4>Vulkan support and multiple APKs in Google Play</h4>
+<ul>
+ <li>On devices running Developer Preview 5, Google Play services 9.0.83
+ currently reports Vulkan support but not Vulkan version. This can cause
+ Google Play to select a version of a multi-APK app that’s designed for lower
+ Vulkan support on devices with higher version support. Currently, the Google
+ Play Store does not accept uploads of Apps which use Vulkan version
+ targeting. This support will be added to the Google Play Store in the
+ future any Android N devices using the Google Play services 9.0.83 will
+ continue to receive versions of Apps targeting basic Vulkan support.
+ </li>
+</ul>
+
+<h4>Android Auto</h4>
+<ul>
+ <li>The version of Google Maps included in Developer Preview 5 (9.30)
+ crashes when used with Android Auto. This issue will be fixed in the
+ next update to Google Maps (9.31), expected in the coming weeks.
+ </li>
+</ul>
+
+
+
+<!-- TBA, if any
+<h4>Device-specific issues</h4>
+
+<dl>
+ <dt>
+ <strong>Device Name</strong>
+ </dt>
+
+ <dd>
+ Issue 1
+ </dd>
+
+ <dd>
+ Issue 2
+ </dd>
+</dl>
+
+-->
+<!-- TBA, if any
+
+<h4 id="dp5-fixes">Fixes for issues reported by developers</h4>
+
+<p>
+ A number of issues reported by developers have been fixed, including:
+</p>
+
+<ul>
+ <li>TODO</li>
+</ul>
+
+-->
+
+<h3 id="upgrade-notes">Notes on publishing apps that target API 24</h3>
+
+<p>
+ Before publishing apps that target API 24 in Google Play, keep these points
+ in mind:
+</p>
+
+<ul>
+ <li>If your app’s current <code>targetSdkVersion</code> is 22 or lower and
+ you want to target API 24, you’ll need to support <a href=
+ "{@docRoot}about/versions/marshmallow/android-6.0-changes.html">behaviors
+ introduced with Android 6.0 (Marshmallow)</a>, such as <a href=
+ "{@docRoot}training/permissions/requesting.html">runtime permissions</a>, in
+ addition to Android N behaviors.
+ </li>
+
+ <li>Once you publish an app with <code>targetSdkVersion</code> set to 23 or
+ higher, you can't later publish a version of the app with a higher
+ <code>versionCode</code> that targets 22 or lower. This restriction applies
+ in alpha and beta channels as well as production channel.
+ </li>
+</ul>
+
+
+<!-- DP4 Release Notes Archive -->
+
<h2 id="dp4">Developer Preview 4</h2>
<div class="wrap">
@@ -65,7 +250,7 @@ page.image=images/cards/card-n-support_2x.png
</div>
</div>
-<h3 id="general">General advisories</h3>
+<h3 id="dp4-general">General advisories</h3>
<p>
This Developer Preview release is for <strong>app developers and other early
@@ -97,7 +282,7 @@ page.image=images/cards/card-n-support_2x.png
</ul>
-<h3 id="new">New in DP4</h3>
+<h3 id="dp4-new">New in DP4</h3>
<h4>Android N final APIs</h4>
@@ -129,7 +314,7 @@ page.image=images/cards/card-n-support_2x.png
your app ready for an update in the Play store.
</p>
-<h4 id="api-changes">Feature and API changes</h4>
+<h4 id="dp4-api-changes">Feature and API changes</h4>
<ul>
<li>In previous versions of Android, an app activates with all of its locale
@@ -156,7 +341,7 @@ page.image=images/cards/card-n-support_2x.png
</li>
</ul>
-<h3 id="ki">Known Issues</h3>
+<h3 id="dp4-ki">Known Issues</h3>
<h4>Stability</h4>
@@ -280,7 +465,7 @@ page.image=images/cards/card-n-support_2x.png
</li>
</ul>
-<h4 id="">Android Auto</h4>
+<h4>Android Auto</h4>
<p>
The version of Google Maps included in Developer Preview 4 (9.30) crashes
@@ -344,7 +529,7 @@ page.image=images/cards/card-n-support_2x.png
<p>For the full list of fixed issues, see <a href="https://goo.gl/6uCKtf">the
issue tracker</a>.</p>
-<h3 id="upgrade-notes">Notes on publishing apps that target API 24</h3>
+<h3 id="dp4-upgrade-notes">Notes on publishing apps that target API 24</h3>
<p>
Before publishing apps that target API 24 in Google Play, keep these points
diff --git a/docs/html/samples/index.jd b/docs/html/samples/index.jd
index 5885086fec58..240a54cdadaa 100644
--- a/docs/html/samples/index.jd
+++ b/docs/html/samples/index.jd
@@ -35,7 +35,7 @@ recommended method to retrieve Android code samples.</p>
from GitHub as a new project.
</p>
-<p>To view the Android code samples that you can import, see the
+<p>To view the Android code samples that you can import, see the
<a class="external-link" href="https://github.com/googlesamples/">Google Samples page</a> on GitHub.</p>
<h2>Download Samples</h2>
@@ -69,6 +69,6 @@ for your applications.</p>
<p class="note">
<strong>Note:</strong> At this time, the downloadable projects are designed for use with Gradle
- and Android Studio.
+ and Android Studio.
</p>
diff --git a/docs/html/sdk/OLD_RELEASENOTES.jd b/docs/html/sdk/OLD_RELEASENOTES.jd
index b7fd12f7cc5b..dfbeaeb0895d 100644
--- a/docs/html/sdk/OLD_RELEASENOTES.jd
+++ b/docs/html/sdk/OLD_RELEASENOTES.jd
@@ -14,7 +14,7 @@ excludeFromSuggestions=true
<a name="0.9_r1" id="0.9_r1"></a>
<h2>Android 0.9 SDK Beta (r1)</h2>
-<p>This beta SDK release contains a large number of bug fixes and improvements from the early-look SDKs.&nbsp;
+<p>This beta SDK release contains a large number of bug fixes and improvements from the early-look SDKs.&nbsp;
The sections below describe the highlights of the release.
<h3>New Features and Notable Changes</h3>
@@ -109,7 +109,7 @@ The sections below describe the highlights of the release.
</ul>
<p>Known issues/limitations for Graphical Layout Editor include:</p>
-
+
<ul>
<li>Font display is very close but not equals to on-device rendering since the font engine in Java slightly differs from the font engine in Android. This should not have any impact on your layouts.
</li>
@@ -123,7 +123,7 @@ The sections below describe the highlights of the release.
</li>
<li>No support for WebView, MapView and SurfaceView.
</li>
- <li>No UI support for &lt;merge&gt;, &lt;include&gt;, &lt;ViewStub&gt; elements. You can add these elements to your manifest using the xml editor only.
+ <li>No UI support for &lt;merge&gt;, &lt;include&gt;, &lt;ViewStub&gt; elements. You can add these elements to your manifest using the xml editor only.
</li>
<li>If a layout fails to render in a way that prevents the whole editor from opening, you can:
@@ -221,7 +221,7 @@ specify which port the emulator should bind to for the console. &lt;port&gt; mus
</li>
<li>The DDMS utility has been refactored into library form. This is not of direct interest to application developers, but may be of interest to vendors interested in integrating the Android SDK into their products. Watch for more information about the ddmlib library soon.
</li>
- <li>For performance and maintainability reasons, some APIs were moved into separate modules that must be explicitly included in the application via a directive in AndroidManifest.xml.&nbsp; Notable APIs that fall into this category are the MapView, and the java.awt.* classes, which each now reside in separate modules that must be imported.&nbsp; Developers who overlook this requirement will see ClassNotFoundExceptions that seem spurious.
+ <li>For performance and maintainability reasons, some APIs were moved into separate modules that must be explicitly included in the application via a directive in AndroidManifest.xml.&nbsp; Notable APIs that fall into this category are the MapView, and the java.awt.* classes, which each now reside in separate modules that must be imported.&nbsp; Developers who overlook this requirement will see ClassNotFoundExceptions that seem spurious.
</li>
<li>Developers who use 'adb push' to install applications must now use 'adb install', since the full package manager is now implemented. 'adb push' will no longer work to install .apk files.
</li>
@@ -386,14 +386,14 @@ specify which port the emulator should bind to for the console. &lt;port&gt; mus
<h4>Emulator Console</h4>
<ul>
-<li>Now provides support for emulating inbound SMS messages. The ADT plugin and DDMS provide integrated access to
-this capability. For more information about how to emulate inbound SMS from the console,
+<li>Now provides support for emulating inbound SMS messages. The ADT plugin and DDMS provide integrated access to
+this capability. For more information about how to emulate inbound SMS from the console,
see <a href="{@docRoot}tools/help/emulator.html#sms">SMS Emulation</a>. </li>
</ul>
<h4>Emulator</h4>
-<ul><li>The default emulator skin has been changed to HVGA-P from QVGA-L. For information
-about emulator skins and how to load a specific skin when starting the emulator, see
+<ul><li>The default emulator skin has been changed to HVGA-P from QVGA-L. For information
+about emulator skins and how to load a specific skin when starting the emulator, see
<a href="{@docRoot}tools/help/emulator.html#skins">Using Emulator Skins</a>.</li>
</ul>
diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd
index 8f124a5f9b44..d9df4063231a 100644
--- a/docs/html/sdk/RELEASENOTES.jd
+++ b/docs/html/sdk/RELEASENOTES.jd
@@ -64,13 +64,13 @@ changes include: </p>
<li>Emulator support for multiple screen sizes/densities, including new
skins. </li>
<li>Android SDK and AVD Manager, a graphical UI to let you manage your
-SDK and AVD environments more easily. The tool lets you create and manage
+SDK and AVD environments more easily. The tool lets you create and manage
your <a href="{@docRoot}tools/devices/managing-avds.html">Android Virtual
-Devices</a> and download new SDK packages (such as platform versions and
+Devices</a> and download new SDK packages (such as platform versions and
add-ons) into your environment.</li>
<li>Improved support for test packages in New Project Wizard</li>
- <li>The reference documentation now offers a "Filter by API Level"
-capability that lets you display only the parts of the API that are actually
+ <li>The reference documentation now offers a "Filter by API Level"
+capability that lets you display only the parts of the API that are actually
available to your application, based on the <code>android:minSdkVersion</code>
value the application declares in its manifest. For more information, see
<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API Levels</a></li>
@@ -114,7 +114,7 @@ href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin for Eclipse</a>. </p>
<h3>Android SDK and AVD Manager</h3>
-<p>The SDK offers a new tool called Android SDK and AVD Manager that lets you
+<p>The SDK offers a new tool called Android SDK and AVD Manager that lets you
manage your SDK and AVD environments more efficiently. </p>
<p>Using the tool, you can quickly check what Android platforms, add-ons,
@@ -129,15 +129,15 @@ environment that were not included in the SDK package.</p>
<p>The tool also lets you quickly create new AVDs, manage
their properties, and run a target AVD from a single window. </p>
-<p>If you are developing in Eclipse with ADT, you can access the Android SDK
+<p>If you are developing in Eclipse with ADT, you can access the Android SDK
and AVD Manager from the <strong>Window</strong> menu. </p>
-<p>If you are developing in another IDE, you can access the Android SDK and
+<p>If you are developing in another IDE, you can access the Android SDK and
AVD Manager through the <code>android</code> command-line tool, located in the
&lt;sdk&gt;/tools directory. You can launch the tool with a graphical UI by
using the <code>android</code> command without specifying any options. You can
also simply double-click the android.bat (Windows) or android (OS X/Linux) file.
-You can still use <code>android</code> commands to create and manage AVDs,
+You can still use <code>android</code> commands to create and manage AVDs,
including AVDs with custom hardware configurations.</p>
<h3>Integration with zipalign</h3>
@@ -160,9 +160,9 @@ manually from the command line if you choose. </p>
<li>If you are developing in Eclipse with ADT, support for
<code>zipalign</code> is integrated into the Export Wizard. When you use the
Wizard to export a signed application package, ADT signs and then automatically
-runs <code>zipalign</code> against the exported package. If you use the Wizard
-to export an unsigned application package, then it will not zipalign the
-package because zipalign must be performed only after the APK has been signed.
+runs <code>zipalign</code> against the exported package. If you use the Wizard
+to export an unsigned application package, then it will not zipalign the
+package because zipalign must be performed only after the APK has been signed.
You must manually sign and zipalign the package after export. </li>
<li>If you are developing using Ant and are compiling in release mode, the
build tools will automatically sign and then <code>zipalign</code> the
@@ -182,14 +182,14 @@ alignment.</p>
<h3>Support for Test Packages in New Project Wizard</h3>
<p>The New Project Wizard available in the ADT 0.9.3 now lets you add a test
-package containing Instrumentation or other classes of tests while you are
+package containing Instrumentation or other classes of tests while you are
creating or importing a new Android application project. </p>
<h3>New USB Driver for Windows</h3>
<p>If you are using Windows and want to develop or test your application on an
Android-powered device (such as the T-Mobile G1), you need an appropriate USB
-driver.
+driver.
<p>The Windows version of the Android 1.6 SDK includes a new, WinUSB-based
driver that you can install. The driver is compatible with both 32- and 64-bit
@@ -241,19 +241,19 @@ only) has been fixed.</li>
<h2 id="1.5_r3">Android 1.5 SDK, Release 3</h2>
<p>Provides an updated Android 1.5 system image that includes permissions
-fixes, as described below, and a new application &mdash; an IME for Japanese
-text input. Also provides the same set of developer tools included in the
+fixes, as described below, and a new application &mdash; an IME for Japanese
+text input. Also provides the same set of developer tools included in the
previous SDK, but with bug fixes and several new features.</p>
<h3>Permissions Fixes</h3>
-<p>The latest version of the Android platform, deployable to
+<p>The latest version of the Android platform, deployable to
Android-powered devices, includes fixes to the permissions-checking
in certain areas of the framework. Specifically, the Android system
now properly checks and enforces several existing permissions where it
-did not do so in the previous release. Because of these changes in
-enforcement, you are strongly encouraged to test your application
-against the new Android 1.5 system image included in this SDK, to ensure
+did not do so in the previous release. Because of these changes in
+enforcement, you are strongly encouraged to test your application
+against the new Android 1.5 system image included in this SDK, to ensure
that it functions normally. </p>
<p>In particular, if your application uses any of the system areas listed below,
@@ -292,14 +292,14 @@ Google APIs add-on and the library it provides, see:
href="http://code.google.com/android/add-ons/google-apis">http://code.google.com/android/add-ons/google-apis</a> </p></li>
<li>The SDK add-on architecture now lets device manufacturers specify a USB
-Vendor ID in their add-ons.
+Vendor ID in their add-ons.
<li>The <code>android</code> tool provides a new command that scans SDK add-ons
for their USB Vendor IDs and makes them available to adb (OS X and Linux
versions of the SDK only). The command is <code>android update adb</code>. On
Windows versions of the SDK, a custom USB driver is included that supports the
"Google" and "HTC" Vendor IDs, which allow adb to recognize G1 and HTC
-Magic devices. For other devices, contact the device manufacturer
-to obtain a USB driver, especially if you have an SDK add-on that defines
+Magic devices. For other devices, contact the device manufacturer
+to obtain a USB driver, especially if you have an SDK add-on that defines
a new USB Vendor ID.</li>
<li>The telephony, sensor, and geo fix issues in the emulator are now
fixed.</li>
@@ -329,12 +329,12 @@ changes include: </p>
<ul>
<li>Multiple versions of the Android platform are included (Android 1.1,
Android 1.5). The tools are updated to let you deploy your application
-on any platform in the SDK, which helps you ensure forward-compatibility and,
+on any platform in the SDK, which helps you ensure forward-compatibility and,
if applicable, backward-compatibility.</li>
<li>Introduces <a href="{@docRoot}tools/devices/managing-avds.html">Android
Virtual Devices</a> &mdash; (AVD) configurations of options that you
run in the emulator to better model actual devices. Each AVD gets its
-own dedicated storage area, making it much easier to work with multiple emulators
+own dedicated storage area, making it much easier to work with multiple emulators
that are running concurrently.</li>
<li>Support for SDK add-ons, which extend the
Android SDK to give you access to one or more external Android libraries and/or
@@ -383,13 +383,13 @@ is similar to any of the Android platform targets included in the SDK &mdash; it
includes an external library, a system image, as well as custom emulator skins
and system properties. The add-on differs in that the Android platform it
provides may include customized UI, resources, or behaviors, a different set of
-preinstalled applications, or other similar modifications.
+preinstalled applications, or other similar modifications.
<p>The SDK includes a single SDK add-on &mdash; the Google APIs add-on. The
Google APIs add-on gives your application access to the com.google.android.maps
-external library that is included on many (if not most) Android-powered devices.
+external library that is included on many (if not most) Android-powered devices.
The Google APIs add-on also includes a {@link android.location.Geocoder Geocoder}
-backend service implementation. For more information, see the "Maps External
+backend service implementation. For more information, see the "Maps External
Library" section below. </p>
<h3>Android Virtual Devices (AVDs)</h3>
@@ -401,7 +401,7 @@ compatible system image. There are two types of targets:</p>
<li>Targets that represent core Android platform versions. </li>
<li>Targets that are SDK add-ons, which typically provide application access to
one or more external libraries and/or a customized (but compliant) system image
-that can run in the emulator.
+that can run in the emulator.
</ul>
<p>A new tool called "android" lets you discover what targets and AVDs are
@@ -427,7 +427,7 @@ href="http://code.google.com/android/add-ons/google-apis">http://code.google.com
<p>For your convenience, the Google APIs add-on is included in the SDK. </p>
-<p>For information about how to register for a Maps API Key, see
+<p>For information about how to register for a Maps API Key, see
<a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">
Obtaining a Maps API Key</a>.</p>
@@ -566,8 +566,8 @@ service and receive a Maps API Key, which you then add to your MapView
for authentication to the server.</p>
<p>Developers should note that the registration service for MapView is now
-active and Google Maps is actively enforcing the Maps API Key requirement.
-For information about how to register for a Maps API Key, see
+active and Google Maps is actively enforcing the Maps API Key requirement.
+For information about how to register for a Maps API Key, see
<a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">
Obtaining a Maps API Key</a>.</p>
@@ -615,21 +615,21 @@ in Eclipse</a>.</li>
<li>In some cases, you may encounter problems when using the browser on an
emulator started with the command-line option <code>-http-proxy</code>. </li>
<li>On the OSX platform, if you manually remove the ~/.android directory
-using <code>rm -rf ~/.android</code>, then try to run
-the emulator, it crashes. This happens because the emulator fails to create
+using <code>rm -rf ~/.android</code>, then try to run
+the emulator, it crashes. This happens because the emulator fails to create
a new .android directory before attempting to create the child SDK1.0 directory.
To work around this issue, manually create a new .android directory using
-<code>mkdir ~/.android</code>, then run the emulator. The emulator
+<code>mkdir ~/.android</code>, then run the emulator. The emulator
creates the SDK1.0 directory and starts normally. </li>
-<li>We regret to inform developers that Android 1.1 will not include support
+<li>We regret to inform developers that Android 1.1 will not include support
for ARCNet network interfaces.</li>
<li>The final set of Intent patterns honored by Android 1.0 has not yet been
fully documented. Documentation will be provided in future releases.</li>
<li>In ADT Editor, you can add at most ten new resource values at a time,
-in a given res/values/*.xml, using the form in the Android Resources pane.
+in a given res/values/*.xml, using the form in the Android Resources pane.
If you add more than ten, the Android Resources pane will not display the
-attributes fields for the additional resource entries. To work around this
-problem, you can close the file in the editor and open it again, or you
+attributes fields for the additional resource entries. To work around this
+problem, you can close the file in the editor and open it again, or you
can edit the resource entries in the XML text mode. </li>
<li>The emulator's battery-control commands (<code>power &lt;option&gt</code>)
are not working in this release.</li>
@@ -657,7 +657,7 @@ href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin for Eclipse</a>.</p>
<p><strong>T-Mobile G1 Compatibility</strong></p>
-<p>This version of the SDK has been tested for compatibility with the first
+<p>This version of the SDK has been tested for compatibility with the first
Android-powered mobile device, the T-Mobile
G1. </p>
@@ -679,7 +679,7 @@ href="http://code.google.com/android/add-ons/google-apis/mapkey.html">http://cod
Android-powered device (such as the T-Mobile G1), you need an appropriate USB
driver. For your convenience, the Windows version of the Android SDK includes a
USB driver that you can install, to let you develop on the device. The USB
-driver files are located in the <code>&lt;SDK&gt;/usb_driver</code> directory.
+driver files are located in the <code>&lt;SDK&gt;/usb_driver</code> directory.
</p>
@@ -694,23 +694,23 @@ change across versions, so were not suitable for use by applications. You can
still access the platform's styleable attributes from your resources or code. To
do so, declare a custom resource element using a
<code>&lt;declare-styleable&gt;</code> in your project's res/values/R.attrs
-file, then declare the attribute inside. For examples, see
+file, then declare the attribute inside. For examples, see
&lt;sdk&gt;/samples/ApiDemos/res/values/attrs.xml. For more information about
custom resources, see <a
href="{@docRoot}guide/topics/resources/available-resources.html#customresources">Custom
Layout Resources</a>. Note that the android.R.styleable documentation is still
provided in the SDK, but only as a reference of the platform's styleable
attributes for the various elements.</li>
-<li>The VM now properly ensures that private classes are not
+<li>The VM now properly ensures that private classes are not
available to applications through reflection. If you were using reflection
-to access private classes in a previous release, you will now get a run-time
+to access private classes in a previous release, you will now get a run-time
error. </li>
<li>The Settings and Email applications are now included in the SDK and
available in the emulator.</li>
-<li>We regret to inform developers that SDK 1.0_r2 does not support MFM, RLL,
+<li>We regret to inform developers that SDK 1.0_r2 does not support MFM, RLL,
or Winchester hard disk drives.</li>
-<li>In the emulator, the control key for enabling/disabling trackball mode
+<li>In the emulator, the control key for enabling/disabling trackball mode
is changed from Control-T to F6. You can also enter trackball mode temporarily
using the Delete key. While the key is pressed, you can send trackball events.</li>
</ul>
@@ -783,19 +783,19 @@ emulator started with the command-line option <code>-http-proxy</code>. </li>
<li>We regret to inform developers that Android 1.0 will not include support for
dot-matrix printers.</li>
<li>On the OSX platform, if you manually remove the ~/.android directory
-using <code>rm -rf ~/.android</code>, then try to run
-the emulator, it crashes. This happens because the emulator fails to create
+using <code>rm -rf ~/.android</code>, then try to run
+the emulator, it crashes. This happens because the emulator fails to create
a new .android directory before attempting to create the child SDK1.0 directory.
To work around this issue, manually create a new .android directory using
-<code>mkdir ~/.android</code>, then run the emulator. The emulator
+<code>mkdir ~/.android</code>, then run the emulator. The emulator
creates the SDK1.0 directory and starts normally. </li>
<li>The final set of Intent patterns honored by Android 1.0 has not yet been
fully documented. Documentation will be provided in future releases.</li>
<li>In ADT Editor, you can add at most ten new resource values at a time,
-in a given res/values/*.xml, using the form in the Android Resources pane.
+in a given res/values/*.xml, using the form in the Android Resources pane.
If you add more than ten, the Android Resources pane will not display the
-attributes fields for the additional resource entries. To work around this
-problem, you can close the file in the editor and open it again, or you
+attributes fields for the additional resource entries. To work around this
+problem, you can close the file in the editor and open it again, or you
can edit the resource entries in the XML text mode. </li>
<li>The emulator's battery-control commands (<code>power &lt;option&gt</code>)
are not working in this release.</li>
diff --git a/docs/html/sdk/older_releases.jd b/docs/html/sdk/older_releases.jd
index bb64feb0fbc7..c4ed594779f2 100644
--- a/docs/html/sdk/older_releases.jd
+++ b/docs/html/sdk/older_releases.jd
@@ -74,7 +74,7 @@ sdk- linux_x86-1.6_r1.tgz</a>
<td>238224860 bytes</td>
<td>b4bf0e610ff6db2fb6fb09c49cba1e79</td>
</tr>
-
+
</table>
@@ -119,7 +119,7 @@ sdk- linux_x86-1.5_r3.zip</a>
<td>178117561 bytes</td>
<td>350d0211678ced38da926b8c9ffa4fac</td>
</tr>
-
+
</table>
@@ -167,7 +167,7 @@ linux_x86-1.1_r1.zip</a>
<td>79345522 bytes</td>
<td>ebcb16b0cd4aef198b4dd9a1418efbf1</td>
</tr>
-
+
</table>
@@ -215,7 +215,7 @@ linux_x86-1.0_r2.zip</a>
<td>94186463 bytes</td>
<td>a1f3b6d854596f850f5008856d0f380e</td>
</tr>
-
+
</table>
@@ -268,7 +268,7 @@ sdk- linux_x86-1.5_r2.zip</a>
<td>165035130 bytes</td>
<td>1d3c3d099e95a31c43a7b3e6ae307ed3</td>
</tr>
-
+
</table>
@@ -313,7 +313,7 @@ sdk- linux_x86-1.5_r1.zip</a>
<td>162938845 bytes</td>
<td>2addfd315da0ad8b5bde6b09d5ff3b06</td>
</tr>
-
+
</table>
@@ -358,7 +358,7 @@ sdk- linux_x86-1.0_r1.zip</a>
<td>87.8 MB bytes</td>
<td>2660b4029039b7d714e59827e9a9a11d</td>
</tr>
-
+
</table>
diff --git a/docs/html/topic/libraries/data-binding/index.jd b/docs/html/topic/libraries/data-binding/index.jd
index 293de51ea000..ec6e58c15ca1 100644
--- a/docs/html/topic/libraries/data-binding/index.jd
+++ b/docs/html/topic/libraries/data-binding/index.jd
@@ -515,8 +515,8 @@ If you need to use an expression with a predicate (e.g. ternary), you can use
<h5>Avoid Complex Listeners</h5>
Listener expressions are very powerful and can make your code very easy to read.
-On the other hand, listeners containing complex expressions make your layouts hard to read and unmaintainable.
-These expressions should be as simple as passing available data from your UI to your callback method. You should implement
+On the other hand, listeners containing complex expressions make your layouts hard to read and unmaintainable.
+These expressions should be as simple as passing available data from your UI to your callback method. You should implement
any business logic inside the callback method that you invoked from the listener expression.
<p>
diff --git a/docs/html/topic/libraries/support-library/revisions.jd b/docs/html/topic/libraries/support-library/revisions.jd
index 47d2ac18df01..7e78925e9587 100644
--- a/docs/html/topic/libraries/support-library/revisions.jd
+++ b/docs/html/topic/libraries/support-library/revisions.jd
@@ -6,9 +6,129 @@ page.metaDescription=This page provides details about the Support Library packag
<p>This page provides details about the Support Library package releases.</p>
<div class="toggle-content opened">
- <p id="rev24-0-0">
+ <p id="rev24-1-0">
<a href="#" onclick="return toggleContent(this)"><img src=
"{@docRoot}assets/images/styles/disclosure_up.png" class=
+ "toggle-content-img" alt="">Android Support Library, revision 24.1.0</a>
+ <em>(July 2016)</em>
+ </p>
+
+ <div class="toggle-content-toggleme">
+ <dl>
+ <dt>
+ Changes for <a href=
+ "{@docRoot}tools/support-library/features.html#v4">v4 Support
+ Library</a>:
+ </dt>
+
+ <dd>
+ <ul>
+ <li>{@link android.support.v4.app.NotificationCompat.Action.WearableExtender}
+ has new <code>getHintDisplayActionInline()</code> and
+ <code>setHintDisplayActionInline()</code> methods for compatibility with
+ <a href="{@docRoot}wear/preview/index.html">Android Wear 2.0 Preview</a>.
+ These methods allow an application to specify that an action should be
+ displayed inline with the notification.
+ </li>
+
+ <li>Calling {@link android.support.v4.app.Fragment#setUserVisibleHint
+ Fragment.setUserVisbileHint()} will no longer cause a fragment to become
+ <strong>started</strong> if the hint has been added to a {@link
+ android.support.v4.app.FragmentTransaction} that is not yet committed. This
+ affects users of {@link android.support.v4.app.FragmentPagerAdapter} that
+ override {@link android.support.v4.app.Fragment#setUserVisibleHint
+ setUserVisbileHint()} and assume a specific lifecycle state of the fragment
+ after calling <code>super.setUserVisibleHint()</code>. For more information,
+ see the reference page for docs for {@link
+ android.support.v4.app.Fragment#setUserVisibleHint
+ Fragment.setUserVisbileHint()}.
+ </li>
+ </ul>
+
+ </dl>
+ <p>Fixed issues:</p>
+
+ <ul>
+ <li>TabLayout.setCustomView(null) results in NullPointerException
+ (<a href="https://code.google.com/p/android/issues/detail?id=214753">AOSP
+ issue</a>)
+ </li>
+
+ <li>TabLayout incorrectly highlights custom tabs (<a href=
+ "https://code.google.com/p/android/issues/detail?id=214316">AOSP issue 214316</a>)
+ </li>
+
+ <li>AppCompatTextHelper uses incorrectly sorted attribute array (<a href=
+ "https://code.google.com/p/android/issues/detail?id=214366">AOSP issue 214366</a>)
+ </li>
+
+ <li>Unable to reference VectorDrawable from drawable container XML when using
+ custom ContextWrapper (<a href=
+ "https://code.google.com/p/android/issues/detail?id=214055">AOSP issue 214055</a>)
+ </li>
+
+ <li>ViewDragHelper.saveLastMotion() throws ArrayIndexOutOfBoundsException
+ (<a href="https://code.google.com/p/android/issues/detail?id=212945">AOSP
+ issue 212945</a>)
+ </li>
+
+ <li>BottomSheetBehavior expands to old content height when using
+ setState(STATE_EXPANDED) (<a href=
+ "https://code.google.com/p/android/issues/detail?id=213660">AOSP issue
+ 213660</a>)
+ </li>
+
+ <li>CollapsingToolbarLayout doesn’t handle pinnable children with top or
+ bottom margins (<a href=
+ "https://code.google.com/p/android/issues/detail?id=213001">AOSP issue
+ 213001</a>)
+ </li>
+
+ <li>Leanback browse title does not support RTL alignment (<a href=
+ "https://code.google.com/p/android/issues/detail?id=213461">AOSP issue
+ 213461</a>)
+ </li>
+
+ <li>PagerTabStrip disappears due to missing inherited annotation (<a href=
+ "https://code.google.com/p/android/issues/detail?id=213359">AOSP issue
+ 213359</a>)
+ </li>
+
+ <li>Data binding throws NullPointerException when using Boolean to set
+ conditional flags (<a href=
+ "https://code.google.com/p/android/issues/detail?id=191841">AOSP issue
+ 191841</a>)
+ </li>
+
+ <li>CoordinatorLayout does not respond to setFitsSystemWindows() (<a href=
+ "https://code.google.com/p/android/issues/detail?id=212720">AOSP issue
+ 212720</a>)
+ </li>
+
+ <li>BottomSheetBehavior crashes when setting initial state (<a href=
+ "https://code.google.com/p/android/issues/detail?id=203114">AOSP issue
+ 203114</a>)
+ </li>
+
+ <li>ViewPager skips pages if the page index is a large value (<a href=
+ "https://code.google.com/p/android/issues/detail?id=211734">AOSP issue
+ 211734</a>)
+ </li>
+
+ <li>BottomSheetBehavior does not work with dynamic layouts (<a href=
+ "https://code.google.com/p/android/issues/detail?id=205226">AOSP issue
+ 205226</a>)
+ </li>
+ </ul>
+ </div>
+</div>
+
+<!-- end of collapsible section: 24.1.0 -->
+
+<div class="toggle-content closed">
+ <p id="rev24-0-0">
+ <a href="#" onclick="return toggleContent(this)"><img src=
+ "{@docRoot}assets/images/styles/disclosure_down.png" class=
"toggle-content-img" alt="">Android Support Library, revision 24.0.0</a>
<em>(June 2016)</em>
</p>
@@ -120,7 +240,7 @@ page.metaDescription=This page provides details about the Support Library packag
<div class="toggle-content closed">
<p id="rev23-4-0">
<a href="#" onclick="return toggleContent(this)"><img src=
- "{@docRoot}assets/images/styles/disclosure_up.png" class=
+ "{@docRoot}assets/images/styles/disclosure_down.png" class=
"toggle-content-img" alt="">Android Support Library, revision 23.4.0</a>
<em>(May 2016)</em>
</p>
diff --git a/docs/html/topic/performance/optimizing-view-hierarchies.jd b/docs/html/topic/performance/optimizing-view-hierarchies.jd
index 1738acb049d6..27d3d163f853 100644
--- a/docs/html/topic/performance/optimizing-view-hierarchies.jd
+++ b/docs/html/topic/performance/optimizing-view-hierarchies.jd
@@ -381,7 +381,7 @@ your hierarchy by switching over to an entirely different layout type.
<p>
For example, you may find that a {@link android.widget.TableLayout}
provides the same functionality as a more complex layout with many
-positional dependencies. In the N release of Android, the
+positional dependencies. In the N release of Android, the
<a
href="http://tools.android.com/tech-docs/layout-editor">{@code ConstraintLayout}</a> class provides similar functionality to
{@link android.widget.RelativeLayout}, but at a significantly lower cost.
diff --git a/docs/html/topic/performance/scheduling.jd b/docs/html/topic/performance/scheduling.jd
index b6f0fdc1b230..c11cf9b4a227 100644
--- a/docs/html/topic/performance/scheduling.jd
+++ b/docs/html/topic/performance/scheduling.jd
@@ -264,7 +264,7 @@ Regardless of the solution you adopt, keep the following points in mind:
Internet-connectivity detection problems. A library or API may think the
Internet is available, but your service may not be accessible. Fail
gracefully and reschedule as few of your tasks as possible.</li>
- <li>Depending on the conditions you assign for running a task,
+ <li>Depending on the conditions you assign for running a task,
such as network availability, after the task is triggered, a
change may occur so that those conditions are no longer met.
In such a case, your operation may fail unexpectedly and repeatedly.
diff --git a/docs/html/training/accessibility/accessible-app.jd b/docs/html/training/accessibility/accessible-app.jd
index dd26febf0949..54c185c50529 100644
--- a/docs/html/training/accessibility/accessible-app.jd
+++ b/docs/html/training/accessibility/accessible-app.jd
@@ -55,7 +55,7 @@ href="https://play.google.com/store/apps/details?id=com.google.android.marvin.ta
If you have a label that's likely not to change during the lifecycle of the
application (such as "Pause" or "Purchase"), you can add it via the XML layout,
by setting a UI element's <a
-
+
href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription"
>{@code android:contentDescription}</a> attribute, like in this
example:</p>
@@ -163,7 +163,7 @@ supported can be found in the {@link
android.view.accessibility.AccessibilityEvent} reference documentation.
<p>As an example, if you want to extend an image view such that you can write
-captions by typing on the keyboard when it has focus, it makes sense to fire an
+captions by typing on the keyboard when it has focus, it makes sense to fire an
{@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_CHANGED}
event, even though that's not normally built into image views. The code to
generate that event would look like this:</p>
diff --git a/docs/html/training/accessibility/service.jd b/docs/html/training/accessibility/service.jd
index 5b99c46be67e..9935c97ba61f 100755
--- a/docs/html/training/accessibility/service.jd
+++ b/docs/html/training/accessibility/service.jd
@@ -67,7 +67,7 @@ public class MyAccessibilityService extends AccessibilityService {
<p>Like any other service, you also declare it in the manifest file.
Remember to specify that it handles the {@code android.accessibilityservice} intent,
-so that the service is called when applications fire an
+so that the service is called when applications fire an
{@link android.view.accessibility.AccessibilityEvent}.</p>
<pre>
diff --git a/docs/html/training/animation/screen-slide.jd b/docs/html/training/animation/screen-slide.jd
index a68d475f18ee..d953c0793f97 100644
--- a/docs/html/training/animation/screen-slide.jd
+++ b/docs/html/training/animation/screen-slide.jd
@@ -218,7 +218,7 @@ public class ScreenSlidePagerActivity extends FragmentActivity {
position of the page on the screen, which is obtained from the <code>position</code> parameter
of the {@link android.support.v4.view.ViewPager.PageTransformer#transformPage transformPage()} method.</p>
-<p>The <code>position</code> parameter indicates where a given page is located relative to the center of the screen.
+<p>The <code>position</code> parameter indicates where a given page is located relative to the center of the screen.
It is a dynamic property that changes as the user scrolls through the pages. When a page fills the screen, its position value is <code>0</code>.
When a page is drawn just off the right side of the screen, its position value is <code>1</code>. If the user scrolls halfway between pages one and two, page one has a position of -0.5 and page two has a position of 0.5. Based on the position of the pages on the screen, you can create custom slide animations by setting page properties with methods such as {@link android.view.View#setAlpha setAlpha()}, {@link android.view.View#setTranslationX setTranslationX()}, or
{@link android.view.View#setScaleY setScaleY()}.</p>
diff --git a/docs/html/training/animation/zoom.jd b/docs/html/training/animation/zoom.jd
index 6a38e7d8c71d..60de70e8c02c 100644
--- a/docs/html/training/animation/zoom.jd
+++ b/docs/html/training/animation/zoom.jd
@@ -297,13 +297,13 @@ private void zoomImageFromThumb(final View thumbView, int imageResId) {
set.play(ObjectAnimator
.ofFloat(expandedImageView, View.X, startBounds.left))
.with(ObjectAnimator
- .ofFloat(expandedImageView,
+ .ofFloat(expandedImageView,
View.Y,startBounds.top))
.with(ObjectAnimator
- .ofFloat(expandedImageView,
+ .ofFloat(expandedImageView,
View.SCALE_X, startScaleFinal))
.with(ObjectAnimator
- .ofFloat(expandedImageView,
+ .ofFloat(expandedImageView,
View.SCALE_Y, startScaleFinal));
set.setDuration(mShortAnimationDuration);
set.setInterpolator(new DecelerateInterpolator());
diff --git a/docs/html/training/app-indexing/deep-linking.jd b/docs/html/training/app-indexing/deep-linking.jd
index 2c4a1310fbf1..a68e5a3cc4c1 100644
--- a/docs/html/training/app-indexing/deep-linking.jd
+++ b/docs/html/training/app-indexing/deep-linking.jd
@@ -69,7 +69,7 @@ in your manifest for deep linking. The URIs {@code “example://gizmosâ€} and
&lt;!-- Accepts URIs that begin with "example://gizmos†--&gt;
&lt;data android:scheme="example"
android:host="gizmos" /&gt;
-
+
&lt;/intent-filter&gt;
&lt;/activity&gt;
</pre>
diff --git a/docs/html/training/articles/perf-anr.jd b/docs/html/training/articles/perf-anr.jd
index bbebec5a83e1..2eda4fa679ca 100644
--- a/docs/html/training/articles/perf-anr.jd
+++ b/docs/html/training/articles/perf-anr.jd
@@ -64,10 +64,10 @@ concern.)</p>
and Window Manager system services. Android will display the ANR dialog
for a particular application when it detects one of the following
conditions:</p>
-<ul>
- <li>No response to an input event (such as key press or screen touch events)
+<ul>
+ <li>No response to an input event (such as key press or screen touch events)
within 5 seconds.</li>
- <li>A {@link android.content.BroadcastReceiver BroadcastReceiver}
+ <li>A {@link android.content.BroadcastReceiver BroadcastReceiver}
hasn't finished executing within 10 seconds.</li>
</ul>
@@ -100,7 +100,7 @@ To post progress changes to the user, you can call
{@link android.os.AsyncTask#onProgressUpdate onProgressUpdate()} callback method. From your
implementation of {@link android.os.AsyncTask#onProgressUpdate onProgressUpdate()} (which
runs on the UI thread), you can notify the user. For example:</p>
-
+
<pre>
private class DownloadFilesTask extends AsyncTask&lt;URL, Integer, Long> {
// Do the long-running work in here
@@ -127,14 +127,14 @@ private class DownloadFilesTask extends AsyncTask&lt;URL, Integer, Long> {
}
}
</pre>
-
+
<p>To execute this worker thread, simply create an instance and
call {@link android.os.AsyncTask#execute execute()}:</p>
-
+
<pre>
new DownloadFilesTask().execute(url1, url2, url3);
</pre>
-
+
<p>Although it's more complicated than {@link android.os.AsyncTask}, you might want to instead
create your own {@link java.lang.Thread} or {@link android.os.HandlerThread} class. If you do,
@@ -143,7 +143,7 @@ android.os.Process#setThreadPriority Process.setThreadPriority()} and passing {@
android.os.Process#THREAD_PRIORITY_BACKGROUND}. If you don't set the thread to a lower priority
this way, then the thread could still slow down your app because it operates at the same priority
as the UI thread by default.</p>
-
+
<p>If you implement {@link java.lang.Thread} or {@link android.os.HandlerThread},
be sure that your UI thread does not block while waiting for the worker thread to
complete&mdash;do not call {@link java.lang.Thread#wait Thread.wait()} or
@@ -183,16 +183,16 @@ make your application seem responsive to users:</p>
<li>If your application is doing work in the background in response to
user input, show that progress is being made (such as with a {@link
android.widget.ProgressBar} in your UI).</li>
-
+
<li>For games specifically, do calculations for moves in a worker
thread.</li>
-
+
<li>If your application has a time-consuming initial setup phase, consider
showing a splash screen or rendering the main view as quickly as possible, indicate that
loading is in progress and fill the information asynchronously. In either case, you should
indicate somehow that progress is being made, lest the user perceive that
the application is frozen.</li>
-
+
<li>Use performance tools such as <a href="{@docRoot}tools/help/systrace.html">Systrace</a>
and <a href="{@docRoot}tools/help/traceview.html">Traceview</a> to determine bottlenecks
in your app's responsiveness.</li>
diff --git a/docs/html/training/articles/perf-jni.jd b/docs/html/training/articles/perf-jni.jd
index 5a9fa1e04b46..8d2fd9b2ebb6 100644
--- a/docs/html/training/articles/perf-jni.jd
+++ b/docs/html/training/articles/perf-jni.jd
@@ -564,9 +564,9 @@ be aware of:</p>
that looked through the weak globals table, the arguments, the locals
table, and the globals table in that order. The first time it found your
direct pointer, it would report that your reference was of the type it
- happened to be examining. This meant, for example, that if
+ happened to be examining. This meant, for example, that if
you called <code>GetObjectRefType</code> on a global jclass that happened
- to be the same as the jclass passed as an implicit argument to your static
+ to be the same as the jclass passed as an implicit argument to your static
native method, you'd get <code>JNILocalRefType</code> rather than
<code>JNIGlobalRefType</code>.
</ul>
diff --git a/docs/html/training/articles/smp.jd b/docs/html/training/articles/smp.jd
index 0b45987558d6..a95931b536a9 100644
--- a/docs/html/training/articles/smp.jd
+++ b/docs/html/training/articles/smp.jd
@@ -75,7 +75,7 @@ page.article=true
multiprocessor architectures. This document introduces issues that
can arise when writing code for symmetric multiprocessor systems in C, C++, and the Java
programming language (hereafter referred to simply as “Java†for the sake of
-brevity). It's intended as a primer for Android app developers, not as a complete
+brevity). It's intended as a primer for Android app developers, not as a complete
discussion on the subject. The focus is on the ARM CPU architecture.</p>
<p>If you’re in a hurry, you can skip the <a href="#theory">Theory</a> section
diff --git a/docs/html/training/articles/user-data-overview.jd b/docs/html/training/articles/user-data-overview.jd
index 8715d36cb76c..dc0df20fc06c 100644
--- a/docs/html/training/articles/user-data-overview.jd
+++ b/docs/html/training/articles/user-data-overview.jd
@@ -266,4 +266,4 @@ href="#references" style="color:#777;padding-left:.1em;">1</a></em></sup></span>
href="http://stackoverflow.com/questions/24374701/alternative-to-read-phone-state-permission-for-getting-notified-of-call">source</a>)</em></p>
<p>[2] <em>Using Personal Examples to Improve Risk Communication for Security and Privacy Decisions</em>, by M. Harbach, M. Hettig, S. Weber, and M. Smith. In Proceedings of ACM CHI 2014.</p>
<p>[3] <em>Modeling Users’ Mobile App Privacy Preferences: Restoring Usability in a Sea of Permission Settings</em>, by J. Lin B. Liu, N. Sadeh and J. Hong. In Proceedings of SOUPS 2014.</p>
-<p>[4] <em>Teens and Mobile Apps Privacy. (<a href="http://www.pewinternet.org/files/old-media/Files/Reports/2013/PIP_Teens%20and%20Mobile%20Apps%20Privacy.pdf">source</a>)</em></p>
+<p>[4] <em>Teens and Mobile Apps Privacy. (<a href="http://www.pewinternet.org/files/old-media/Files/Reports/2013/PIP_Teens%20and%20Mobile%20Apps%20Privacy.pdf">source</a>)</em></p>
diff --git a/docs/html/training/articles/user-data-permissions.jd b/docs/html/training/articles/user-data-permissions.jd
index edc755884e53..ace5f7ff0d35 100644
--- a/docs/html/training/articles/user-data-permissions.jd
+++ b/docs/html/training/articles/user-data-permissions.jd
@@ -56,7 +56,7 @@ Working With</a></li>
see <a href="{@docRoot}training/permissions/index.html">Working with System Permissions</a>.
For best practices for working with unique identifiers, please see <a href=
"{@docRoot}training/articles/user-data-ids.html">Best Practices for
- Unique Identifiers</a>.
+ Unique Identifiers</a>.
</p>
<h2 id="tenets_of_working_with_android_permissions">Tenets of Working
diff --git a/docs/html/training/basics/activity-lifecycle/index.jd b/docs/html/training/basics/activity-lifecycle/index.jd
index afeab867860c..95ed21efe048 100644
--- a/docs/html/training/basics/activity-lifecycle/index.jd
+++ b/docs/html/training/basics/activity-lifecycle/index.jd
@@ -41,7 +41,7 @@ class="button">Download the demo</a>
lifecycle. For instance, when your
activity starts for the first time, it comes to the foreground of the system and receives user
focus. During this process, the Android system calls a series of lifecycle methods on the
-activity in which you set up the user interface and other components. If the user performs an
+activity in which you set up the user interface and other components. If the user performs an
action that starts another activity or switches to another app, the system calls another set of
lifecycle methods on your activity as it moves into the background (where the activity is no
longer visible, but the instance and its state remains intact).</p>
@@ -57,7 +57,7 @@ android.app.Activity} instance receives and how you can use them so your activit
user expects and does not consume system resources when your activity doesn't need them.</p>
<h2>Lessons</h2>
-
+
<dl>
<dt><b><a href="starting.html">Starting an Activity</a></b></dt>
<dd>Learn the basics about the activity lifecycle, how the user can launch your app, and how
@@ -70,5 +70,5 @@ should do during these state changes.</dd>
<dt><b><a href="recreating.html">Recreating an Activity</a></b></dt>
<dd>Learn what happens when your activity is destroyed and how you can rebuild the activity
state when necessary.</dd>
-</dl>
+</dl>
diff --git a/docs/html/training/basics/activity-lifecycle/pausing.jd b/docs/html/training/basics/activity-lifecycle/pausing.jd
index 223e41a2b8a0..7ca97aa2d292 100644
--- a/docs/html/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>This lesson teaches you to</h2>
<ol>
<li><a href="#Pause">Pause Your Activity</a></li>
<li><a href="#Resume">Resume Your Activity</a></li>
</ol>
-
+
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">Activities</a>
@@ -32,7 +32,7 @@ class="button">Download the demo</a>
</div>
</div>
-<p>During normal app use, the foreground activity is sometimes obstructed by other
+<p>During normal app use, the foreground activity is sometimes obstructed by other
visual components that cause the activity to <em>pause</em>. For example, when a semi-transparent
activity opens (such as one in the style of a dialog), the previous activity pauses. As long as the
activity is still partially visible but currently not the activity in focus, it remains paused.</p>
@@ -60,7 +60,7 @@ system calls {@link android.app.Activity#onResume onResume()} (2).</p>
<h2 id="Pause">Pause Your Activity</h2>
-
+
<p>When the system calls {@link android.app.Activity#onPause()} for your activity, it
technically means your activity is still partially visible, but most often is an indication that
the user is leaving the activity and it will soon enter the Stopped state. You should usually use
diff --git a/docs/html/training/basics/activity-lifecycle/recreating.jd b/docs/html/training/basics/activity-lifecycle/recreating.jd
index a52d5fd61f17..60a337742df7 100644
--- a/docs/html/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>This lesson teaches you to</h2>
<ol>
<li><a href="#SaveState">Save Your Activity State</a></li>
<li><a href="#RestoreState">Restore Your Activity State</a></li>
</ol>
-
+
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}training/basics/supporting-devices/screens.html">Supporting
@@ -106,7 +106,7 @@ public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-
+
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
@@ -139,7 +139,7 @@ onCreate()}:</p>
&#64;Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Always call the superclass first
-
+
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore value of members from saved state
@@ -158,12 +158,12 @@ android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}, which the
after the {@link android.app.Activity#onStart()} method. The system calls {@link
android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} only if there is a saved
state to restore, so you do not need to check whether the {@link android.os.Bundle} is null:</p>
-
+
<pre>
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
-
+
// Restore state members from saved instance
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html/training/basics/activity-lifecycle/starting.jd b/docs/html/training/basics/activity-lifecycle/starting.jd
index 5b238b8b2b6e..06f3a6cfb943 100644
--- a/docs/html/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>This lesson teaches you to</h2>
<ol>
<li><a href="#lifecycle-states">Understand the Lifecycle Callbacks</a></li>
@@ -17,7 +17,7 @@ trainingnavtop=true
<li><a href="#Create">Create a New Instance</a></li>
<li><a href="#Destroy">Destroy the Activity</a></li>
</ol>
-
+
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">Activities</a></li>
@@ -84,7 +84,7 @@ landscape and portrait orientation.</li>
</ul>
<!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
methods.</p>
<table>
<tr>
@@ -139,7 +139,7 @@ specific lifecycle behaviors.</p>
-<h2 id="launching-activity">Specify Your App's Launcher Activity</h2>
+<h2 id="launching-activity">Specify Your App's Launcher Activity</h2>
<p>When the user selects your app icon from the Home screen, the system calls the {@link
android.app.Activity#onCreate onCreate()} method for the {@link android.app.Activity} in your app
@@ -154,7 +154,7 @@ at the root of your project directory.</p>
href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
<intent-filter>}</a> that includes the {@link
android.content.Intent#ACTION_MAIN MAIN} action and
-{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} category. For example:</p>
+{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} category. For example:</p>
<pre>
&lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -203,10 +203,10 @@ public void onCreate(Bundle savedInstanceState) {
// Set the user interface layout for this Activity
// The layout file is defined in the project res/layout/main_activity.xml file
setContentView(R.layout.main_activity);
-
+
// Initialize member TextView so we can manipulate it later
mTextView = (TextView) findViewById(R.id.text_message);
-
+
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// For the main activity, make sure the app icon in the action bar
@@ -271,7 +271,7 @@ android.app.Activity#onDestroy}.</p>
&#64;Override
public void onDestroy() {
super.onDestroy(); // Always call the superclass
-
+
// Stop method tracing that the activity started during onCreate()
android.os.Debug.stopMethodTracing();
}
diff --git a/docs/html/training/basics/activity-lifecycle/stopping.jd b/docs/html/training/basics/activity-lifecycle/stopping.jd
index 51c95ea6c97b..32463743ab52 100644
--- a/docs/html/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>This lesson teaches you to</h2>
<ol>
<li><a href="#Stop">Stop Your Activity</a></li>
<li><a href="#Start">Start/Restart Your Activity</a></li>
</ol>
-
+
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}guide/components/activities.html">Activities</a>
@@ -154,13 +154,13 @@ required system features are enabled:</p>
&#64;Override
protected void onStart() {
super.onStart(); // Always call the superclass method first
-
+
// The activity is either being restarted or started for the first time
// so this is where we should make sure that GPS is enabled
- LocationManager locationManager =
+ LocationManager locationManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-
+
if (!gpsEnabled) {
// Create a dialog here that requests the user to enable GPS, and use an intent
// with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -171,8 +171,8 @@ protected void onStart() {
&#64;Override
protected void onRestart() {
super.onRestart(); // Always call the superclass method first
-
- // Activity being restarted from stopped state
+
+ // Activity being restarted from stopped state
}
</pre>
diff --git a/docs/html/training/basics/data-storage/databases.jd b/docs/html/training/basics/data-storage/databases.jd
index 4a91d0d0a451..f42bf65d0aa6 100644
--- a/docs/html/training/basics/data-storage/databases.jd
+++ b/docs/html/training/basics/data-storage/databases.jd
@@ -119,11 +119,11 @@ application. Your data is secure, because by default this area is not
accessible to other applications.</p>
<p>A useful set of APIs is available in the {@link
-android.database.sqlite.SQLiteOpenHelper} class.
+android.database.sqlite.SQLiteOpenHelper} class.
When you use this class to obtain references to your database, the system
-performs the potentially
+performs the potentially
long-running operations of creating and updating the database only when
-needed and <em>not during app startup</em>. All you need to do is call
+needed and <em>not during app startup</em>. All you need to do is call
{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} or
{@link android.database.sqlite.SQLiteOpenHelper#getReadableDatabase}.</p>
diff --git a/docs/html/training/basics/fragments/communicating.jd b/docs/html/training/basics/fragments/communicating.jd
index 8c1ae21a7084..2e1207200068 100644
--- a/docs/html/training/basics/fragments/communicating.jd
+++ b/docs/html/training/basics/fragments/communicating.jd
@@ -7,14 +7,14 @@ trainingnavtop=true
@jd:body
<div id="tb-wrapper">
- <div id="tb">
+ <div id="tb">
<h2>This lesson teaches you to</h2>
<ol>
<li><a href="#DefineInterface">Define an Interface</a></li>
<li><a href="#Implement">Implement the Interface</a></li>
<li><a href="#Deliver">Deliver a Message to a Fragment</a></li>
</ol>
-
+
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}guide/components/fragments.html">Fragments</a></li>
@@ -31,21 +31,21 @@ class="button">Download the sample</a>
</div>
</div>
-<p>In order to reuse the Fragment UI components, you should build each as a completely
-self-contained, modular component that defines its own layout and behavior. Once you
-have defined these reusable Fragments, you can associate them with an Activity and
+<p>In order to reuse the Fragment UI components, you should build each as a completely
+self-contained, modular component that defines its own layout and behavior. Once you
+have defined these reusable Fragments, you can associate them with an Activity and
connect them with the application logic to realize the overall composite UI.</p>
-<p>Often you will want one Fragment to communicate with another, for example to change
-the content based on a user event. All Fragment-to-Fragment communication is done
+<p>Often you will want one Fragment to communicate with another, for example to change
+the content based on a user event. All Fragment-to-Fragment communication is done
through the associated Activity. Two Fragments should never communicate directly.</p>
<h2 id="DefineInterface">Define an Interface</h2>
-<p>To allow a Fragment to communicate up to its Activity, you can define an interface
-in the Fragment class and implement it within the Activity. The Fragment captures
-the interface implementation during its onAttach() lifecycle method and can then call
+<p>To allow a Fragment to communicate up to its Activity, you can define an interface
+in the Fragment class and implement it within the Activity. The Fragment captures
+the interface implementation during its onAttach() lifecycle method and can then call
the Interface methods in order to communicate with the Activity.</p>
<p>Here is an example of Fragment to Activity communication:</p>
@@ -62,7 +62,7 @@ public class HeadlinesFragment extends ListFragment {
&#64;Override
public void onAttach(Activity activity) {
super.onAttach(activity);
-
+
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
@@ -72,7 +72,7 @@ public class HeadlinesFragment extends ListFragment {
+ " must implement OnHeadlineSelectedListener");
}
}
-
+
...
}
</pre>
@@ -105,7 +105,7 @@ implement the interface defined in the fragment class.</p>
public static class MainActivity extends Activity
implements HeadlinesFragment.OnHeadlineSelectedListener{
...
-
+
public void onArticleSelected(int position) {
// The user selected the headline of an article from the HeadlinesFragment
// Do something here to display that article
@@ -118,12 +118,12 @@ public static class MainActivity extends Activity
<h2 id="Deliver">Deliver a Message to a Fragment</h2>
<p>The host activity can deliver messages to a fragment by capturing the {@link
-android.support.v4.app.Fragment} instance
+android.support.v4.app.Fragment} instance
with {@link android.support.v4.app.FragmentManager#findFragmentById findFragmentById()}, then
directly call the fragment's public methods.</p>
<p>For instance, imagine that the activity shown above may contain another fragment that's used to
-display the item specified by the data returned in the above callback method. In this case,
+display the item specified by the data returned in the above callback method. In this case,
the activity can pass the information received in the callback method to the other fragment that
will display the item:</p>
@@ -152,7 +152,7 @@ public static class MainActivity extends Activity
Bundle args = new Bundle();
args.putInt(ArticleFragment.ARG_POSITION, position);
newFragment.setArguments(args);
-
+
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
diff --git a/docs/html/training/basics/fragments/fragment-ui.jd b/docs/html/training/basics/fragments/fragment-ui.jd
index c0bd0a45a2aa..4cfec76f2055 100644
--- a/docs/html/training/basics/fragments/fragment-ui.jd
+++ b/docs/html/training/basics/fragments/fragment-ui.jd
@@ -7,13 +7,13 @@ trainingnavtop=true
@jd:body
<div id="tb-wrapper">
- <div id="tb">
+ <div id="tb">
<h2>This lesson teaches you to</h2>
<ol>
<li><a href="#AddAtRuntime">Add a Fragment to an Activity at Runtime</a></li>
<li><a href="#Replace">Replace One Fragment with Another</a></li>
</ol>
-
+
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}guide/components/fragments.html">Fragments</a></li>
@@ -52,14 +52,14 @@ remove, and replace fragments to an activity at runtime in order to create a dyn
-<h2 id="AddAtRuntime">Add a Fragment to an Activity at Runtime</h2>
+<h2 id="AddAtRuntime">Add a Fragment to an Activity at Runtime</h2>
<p>Rather than defining the fragments for an activity in the layout file&mdash;as shown in the
<a href="creating.html">previous lesson</a> with the {@code <fragment>} element&mdash;you can add
a fragment to the activity during the activity runtime. This is necessary
if you plan to change fragments during the life of the activity.</p>
-<p>To perform a transaction such as add or
+<p>To perform a transaction such as add or
remove a fragment, you must use the {@link android.support.v4.app.FragmentManager} to create a
{@link android.support.v4.app.FragmentTransaction}, which provides APIs to add, remove, replace,
and perform other fragment transactions.</p>
@@ -126,11 +126,11 @@ public class MainActivity extends FragmentActivity {
// Create a new Fragment to be placed in the activity layout
HeadlinesFragment firstFragment = new HeadlinesFragment();
-
+
// In case this activity was started with special instructions from an
// Intent, pass the Intent's extras to the fragment as arguments
firstFragment.setArguments(getIntent().getExtras());
-
+
// Add the fragment to the 'fragment_container' FrameLayout
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit();
diff --git a/docs/html/training/basics/fragments/index.jd b/docs/html/training/basics/fragments/index.jd
index aba645923fdb..4fb71e483848 100644
--- a/docs/html/training/basics/fragments/index.jd
+++ b/docs/html/training/basics/fragments/index.jd
@@ -56,7 +56,7 @@ app's user experience for devices with different screen sizes, all while continu
devices running versions as old as Android 1.6.</p>
<h2>Lessons</h2>
-
+
<dl>
<dt><b><a href="creating.html">Creating a Fragment</a></b></dt>
<dd>Learn how to build a fragment and implement basic behaviors within its callback
@@ -67,5 +67,5 @@ different screens.</dd>
<dt><b><a href="communicating.html">Communicating with Other Fragments</a></b></dt>
<dd>Learn how to set up communication paths from a fragment to the activity and other
fragments.</dd>
-</dl>
+</dl>
diff --git a/docs/html/training/basics/network-ops/connecting.jd b/docs/html/training/basics/network-ops/connecting.jd
index 798a9ee718d7..9651269e8743 100644
--- a/docs/html/training/basics/network-ops/connecting.jd
+++ b/docs/html/training/basics/network-ops/connecting.jd
@@ -7,8 +7,8 @@ next.title=Managing Network Usage
next.link=managing.html
@jd:body
-
-<div id="tb-wrapper">
+
+<div id="tb-wrapper">
<div id="tb">
@@ -20,7 +20,7 @@ next.link=managing.html
<li><a href="#AsyncTask">Perform Network Operations on a Separate Thread</a></li>
<li><a href="#download">Connect and Download Data</a></li>
<li><a href="#stream">Convert the InputStream to a String</a></li>
-
+
</ol>
<h2>You should also read</h2>
@@ -32,7 +32,7 @@ next.link=managing.html
<li><a href="{@docRoot}guide/components/fundamentals.html">Application Fundamentals</a></li>
</ul>
-</div>
+</div>
</div>
<p>This lesson shows you how to implement a simple application that connects to
@@ -57,11 +57,11 @@ IPv6, and connection pooling.</p>
<h2 id="connection">Check the Network Connection</h2>
<p>Before your app attempts to connect to the network, it should check to see whether a
-network connection is available using
+network connection is available using
{@link android.net.ConnectivityManager#getActiveNetworkInfo getActiveNetworkInfo()}
-and {@link android.net.NetworkInfo#isConnected isConnected()}.
+and {@link android.net.NetworkInfo#isConnected isConnected()}.
Remember, the device may be out of range of a
-network, or the user may have disabled both Wi-Fi and mobile data access.
+network, or the user may have disabled both Wi-Fi and mobile data access.
For more discussion of this topic, see the lesson <a
href="{@docRoot}training/basics/network-ops/managing.html">Managing Network
Usage</a>.</p>
@@ -69,7 +69,7 @@ Usage</a>.</p>
<pre>
public void myClickHandler(View view) {
...
- ConnectivityManager connMgr = (ConnectivityManager)
+ ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null &amp;&amp; networkInfo.isConnected()) {
@@ -98,28 +98,28 @@ android.os.AsyncTask}. <code>DownloadWebpageTask</code> implements the following
{@link android.os.AsyncTask} methods:</p>
<ul>
-
+
<li>{@link android.os.AsyncTask#doInBackground doInBackground()} executes
the method <code>downloadUrl()</code>. It passes the web page URL as a
parameter. The method <code>downloadUrl()</code> fetches and processes the web
page content. When it finishes, it passes back a result string.</li>
-
+
<li>{@link android.os.AsyncTask#onPostExecute onPostExecute()} takes the
returned string and displays it in the UI.</li>
-
-
+
+
</ul>
-
+
<pre>
public class HttpExampleActivity extends Activity {
private static final String DEBUG_TAG = "HttpExample";
private EditText urlText;
private TextView textView;
-
+
&#64;Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
+ setContentView(R.layout.main);
urlText = (EditText) findViewById(R.id.myUrl);
textView = (TextView) findViewById(R.id.myText);
}
@@ -129,7 +129,7 @@ public class HttpExampleActivity extends Activity {
public void myClickHandler(View view) {
// Gets the URL from the UI's text field.
String stringUrl = urlText.getText().toString();
- ConnectivityManager connMgr = (ConnectivityManager)
+ ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null &amp;&amp; networkInfo.isConnected()) {
@@ -139,7 +139,7 @@ public class HttpExampleActivity extends Activity {
}
}
- // Uses AsyncTask to create a task away from the main UI thread. This task takes a
+ // Uses AsyncTask to create a task away from the main UI thread. This task takes a
// URL string and uses it to create an HttpUrlConnection. Once the connection
// has been established, the AsyncTask downloads the contents of the webpage as
// an InputStream. Finally, the InputStream is converted into a string, which is
@@ -147,7 +147,7 @@ public class HttpExampleActivity extends Activity {
private class DownloadWebpageTask extends AsyncTask&lt;String, Void, String&gt; {
&#64;Override
protected String doInBackground(String... urls) {
-
+
// params comes from the execute() call: params[0] is the url.
try {
return downloadUrl(urls[0]);
@@ -167,28 +167,28 @@ public class HttpExampleActivity extends Activity {
<p>The sequence of events in this snippet is as follows:</p>
<ol>
- <li>When users click the button that invokes {@code myClickHandler()},
+ <li>When users click the button that invokes {@code myClickHandler()},
the app passes
the specified URL to the {@link android.os.AsyncTask} subclass
<code>DownloadWebpageTask</code>.</li>
-
+
<li>The {@link android.os.AsyncTask} method {@link
-android.os.AsyncTask#doInBackground doInBackground()} calls the
+android.os.AsyncTask#doInBackground doInBackground()} calls the
<code>downloadUrl()</code> method. </li>
-
+
<li>The <code>downloadUrl()</code> method takes a URL string as a parameter
and uses it to create a {@link java.net.URL} object.</li>
-
+
<li>The {@link java.net.URL} object is used to establish an {@link
java.net.HttpURLConnection}.</li>
-
+
<li>Once the connection has been established, the {@link
java.net.HttpURLConnection} object fetches the web page content as an {@link
java.io.InputStream}.</li>
-
+
<li>The {@link java.io.InputStream} is passed to the <code>readIt()</code>
method, which converts the stream to a string.</li>
-
+
<li>Finally, the {@link android.os.AsyncTask}'s {@link
android.os.AsyncTask#onPostExecute onPostExecute()} method displays the string
in the main activity's UI.</li>
@@ -196,19 +196,19 @@ in the main activity's UI.</li>
</ol>
<h2 id="download">Connect and Download Data</h2>
-
- <p>In your thread that performs your network transactions, you can use
- {@link java.net.HttpURLConnection} to perform a {@code GET} and download your data.
- After you call {@code connect()}, you can get an {@link java.io.InputStream} of the data
+
+ <p>In your thread that performs your network transactions, you can use
+ {@link java.net.HttpURLConnection} to perform a {@code GET} and download your data.
+ After you call {@code connect()}, you can get an {@link java.io.InputStream} of the data
by calling {@code getInputStream()}.
-
+
<p>In the following snippet, the {@link android.os.AsyncTask#doInBackground
doInBackground()} method calls the method <code>downloadUrl()</code>. The
<code>downloadUrl()</code> method takes the given URL and uses it to connect to
the network via {@link java.net.HttpURLConnection}. Once a connection has been
established, the app uses the method <code>getInputStream()</code> to retrieve
the data as an {@link java.io.InputStream}.</p>
-
+
<pre>
// Given a URL, establishes an HttpUrlConnection and retrieves
// the web page content as a InputStream, which it returns as
@@ -218,7 +218,7 @@ private String downloadUrl(String myurl) throws IOException {
// Only display the first 500 characters of the retrieved
// web page content.
int len = 500;
-
+
try {
URL url = new URL(myurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
@@ -235,13 +235,13 @@ private String downloadUrl(String myurl) throws IOException {
// Convert the InputStream into a string
String contentAsString = readIt(is, len);
return contentAsString;
-
+
// Makes sure that the InputStream is closed after the app is
// finished using it.
} finally {
if (is != null) {
is.close();
- }
+ }
}
}</pre>
@@ -252,7 +252,7 @@ code of 200 indicates success.</p>
<h2 id="stream">Convert the InputStream to a String</h2>
-<p>An {@link java.io.InputStream} is a readable source of bytes. Once you get an {@link java.io.InputStream},
+<p>An {@link java.io.InputStream} is a readable source of bytes. Once you get an {@link java.io.InputStream},
it's common to decode or convert it into a
target data type. For example, if you were downloading image data, you might
decode and display it like this:</p>
@@ -271,7 +271,7 @@ a string so that the activity can display it in the UI:</p>
<pre>// Reads an InputStream and converts it to a String.
public String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException {
Reader reader = null;
- reader = new InputStreamReader(stream, "UTF-8");
+ reader = new InputStreamReader(stream, "UTF-8");
char[] buffer = new char[len];
reader.read(buffer);
return new String(buffer);
diff --git a/docs/html/training/basics/network-ops/index.jd b/docs/html/training/basics/network-ops/index.jd
index 1f6493f1e581..14345624cf23 100644
--- a/docs/html/training/basics/network-ops/index.jd
+++ b/docs/html/training/basics/network-ops/index.jd
@@ -42,7 +42,7 @@ class="button">Download the sample</a>
<p>This class explains the basic tasks involved in connecting to the network,
monitoring the network connection (including connection changes), and giving
users control over an app's network usage. It also describes how to parse and
-consume XML data.</p>
+consume XML data.</p>
<p>This class includes a sample application that illustrates how to perform
common network operations. You can download the sample (to the right) and use it
@@ -66,18 +66,18 @@ of your app's network operations.</p>
<dl>
<dt><b><a href="connecting.html">Connecting to the Network</a></b></dt>
-
+
<dd>Learn how to connect to the network, choose an HTTP client, and perform
network operations outside of the UI thread.</dd>
<dt><b><a href="managing.html">Managing Network Usage</a></b></dt>
-
+
<dd>Learn how to check a
device's network connection, create a preferences UI for controlling network
usage, and respond to connection changes.</dd>
-
+
<dt><b><a href="xml.html">Parsing XML Data</a></b></dt>
<dd>Learn how to parse and consume XML data.</dd>
-</dl>
+</dl>
diff --git a/docs/html/training/basics/network-ops/managing.jd b/docs/html/training/basics/network-ops/managing.jd
index a645b3fcc0b3..2609db5a0160 100644
--- a/docs/html/training/basics/network-ops/managing.jd
+++ b/docs/html/training/basics/network-ops/managing.jd
@@ -10,8 +10,8 @@ next.title=Parsing XML Data
next.link=xml.html
@jd:body
-
-<div id="tb-wrapper">
+
+<div id="tb-wrapper">
<div id="tb">
<h2>This lesson teaches you to</h2>
@@ -37,7 +37,7 @@ class="button">Download the sample</a>
<p class="filename">NetworkUsage.zip</p>
</div>
-</div>
+</div>
</div>
<p>This lesson describes how to write applications that have fine-grained
@@ -50,19 +50,19 @@ less likely to disable your app’s access to background data when they approach
limits, because they can instead precisely control how much data your app
uses.</p>
-<p>For general guidelines on how to write apps that minimize the battery life
-impact of downloads and network connections, see
-<a href="{@docRoot}training/monitoring-device-state/index.html">Optimizing Battery Life</a>
+<p>For general guidelines on how to write apps that minimize the battery life
+impact of downloads and network connections, see
+<a href="{@docRoot}training/monitoring-device-state/index.html">Optimizing Battery Life</a>
and <a href="{@docRoot}training/efficient-downloads/index.html">Transferring Data Without Draining the Battery</a>.
<h2 id="check-connection">Check a Device's Network Connection</h2>
-<p>A device can have various types of network connections. This lesson
-focuses on using either a Wi-Fi or a mobile network connection. For the full
+<p>A device can have various types of network connections. This lesson
+focuses on using either a Wi-Fi or a mobile network connection. For the full
list of possible network types, see {@link android.net.ConnectivityManager}.<p>
<p>Wi-Fi is typically faster. Also, mobile data is often metered, which can get
-expensive.
+expensive.
A common strategy for apps is to only fetch large data
if a Wi-Fi network is available.</p>
@@ -77,11 +77,11 @@ the following classes:</p>
<li>{@link android.net.ConnectivityManager}: Answers queries about the state
of network connectivity. It also notifies applications when network
connectivity changes. </li>
-
+
<li>{@link android.net.NetworkInfo}: Describes the status of a network
interface of a given type (currently either Mobile or Wi-Fi).
</li>
-
+
</ul>
@@ -94,16 +94,16 @@ data): </p>
<pre>
private static final String DEBUG_TAG = &quot;NetworkStatusExample&quot;;
-...
-ConnectivityManager connMgr = (ConnectivityManager)
+...
+ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
-NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
boolean isWifiConn = networkInfo.isConnected();
networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
boolean isMobileConn = networkInfo.isConnected();
Log.d(DEBUG_TAG, "Wifi connected: " + isWifiConn);
Log.d(DEBUG_TAG, "Mobile connected: " + isMobileConn);
-</pre>
+</pre>
<p>Note that you should not base decisions on whether a network is
&quot;available.&quot; You should always check {@link
@@ -122,7 +122,7 @@ internet connection is not available):</p>
<pre>
public boolean isOnline() {
- ConnectivityManager connMgr = (ConnectivityManager)
+ ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnected());
@@ -148,37 +148,37 @@ availability, time interval, and so on.</li>
</ul>
-<p>To write an app that supports network access and managing
-network usage, your manifest must have the right permissions and
+<p>To write an app that supports network access and managing
+network usage, your manifest must have the right permissions and
intent filters.
</p>
<ul>
<li>The manifest excerpted below includes the following permissions:
<ul>
-
+
<li>{@link android.Manifest.permission#INTERNET
android.permission.INTERNET}&mdash;Allows applications to open network
sockets.</li>
-
+
<li>{@link android.Manifest.permission#ACCESS_NETWORK_STATE
android.permission.ACCESS_NETWORK_STATE}&mdash;Allows applications to access
information about networks.</li>
-
+
</ul>
</li>
-
- <li>You can declare the intent filter for the
+
+ <li>You can declare the intent filter for the
{@link android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} action (introduced in
Android 4.0) to indicate that your application defines an activity that offers
options to control data usage. {@link
android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} shows settings for managing
-the network data usage of a specific application. When your app has a settings activity
-that allows users to control network usage, you should declare this intent filter for that activity.
+the network data usage of a specific application. When your app has a settings activity
+that allows users to control network usage, you should declare this intent filter for that activity.
In the sample application, this action is handled by the class
<code>SettingsActivity</code>, which displays a preferences UI to let users
decide when to download a feed.</li>
-
+
</ul>
@@ -188,9 +188,9 @@ decide when to download a feed.</li>
package="com.example.android.networkusage"
...&gt;
- &lt;uses-sdk android:minSdkVersion="4"
+ &lt;uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="14" /&gt;
-
+
&lt;uses-permission android:name="android.permission.INTERNET" /&gt;
&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt;
@@ -213,7 +213,7 @@ decide when to download a feed.</li>
<code>SettingsActivity</code> has an intent filter for the {@link
android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} action.
<code>SettingsActivity</code> is a subclass of {@link
-android.preference.PreferenceActivity}. It displays a preferences screen
+android.preference.PreferenceActivity}. It displays a preferences screen
(shown in figure 1) that
lets users specify the following:</p>
@@ -221,10 +221,10 @@ lets users specify the following:</p>
<li>Whether to display summaries for each XML feed entry, or just a link for
each entry.</li>
-
+
<li>Whether to download the XML feed if any network connection is available,
or only if Wi-Fi is available.</li>
-
+
</ul>
<img src="{@docRoot}images/training/basics/network-settings1.png" alt="Preferences panel" />
@@ -232,49 +232,49 @@ or only if Wi-Fi is available.</li>
<img src="{@docRoot}images/training/basics/network-settings2.png" alt="Setting a network preference" />
<p class="img-caption"><strong>Figure 1.</strong> Preferences activity.</p>
-<p>Here is <code>SettingsActivity</code>. Note that it implements
-{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener OnSharedPreferenceChangeListener}.
+<p>Here is <code>SettingsActivity</code>. Note that it implements
+{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener OnSharedPreferenceChangeListener}.
When a user changes a preference, it fires
-{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged onSharedPreferenceChanged()},
-which sets {@code refreshDisplay} to true. This causes the display to refresh when the user
+{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged onSharedPreferenceChanged()},
+which sets {@code refreshDisplay} to true. This causes the display to refresh when the user
returns to the main activity:</p>
<pre>public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
-
+
&#64;Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
+
// Loads the XML preferences file
addPreferencesFromResource(R.xml.preferences);
}
-
+
&#64;Override
protected void onResume() {
super.onResume();
- // Registers a listener whenever a key changes
+ // Registers a listener whenever a key changes
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
-
+
&#64;Override
protected void onPause() {
super.onPause();
// Unregisters the listener set in onResume().
- // It's best practice to unregister listeners when your app isn't using them to cut down on
- // unnecessary system overhead. You do this in onPause().
- getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
+ // It's best practice to unregister listeners when your app isn't using them to cut down on
+ // unnecessary system overhead. You do this in onPause().
+ getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
-
- // When the user changes the preferences selection,
+
+ // When the user changes the preferences selection,
// onSharedPreferenceChanged() restarts the main activity as a new
// task. Sets the refreshDisplay flag to "true" to indicate that
// the main activity should update its display.
// The main activity queries the PreferenceManager to get the latest settings.
-
+
&#64;Override
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// Sets refreshDisplay to true so that when the user returns to the main
// activity, the display refreshes to reflect the new settings.
NetworkActivity.refreshDisplay = true;
@@ -295,31 +295,31 @@ public class NetworkActivity extends Activity {
public static final String WIFI = "Wi-Fi";
public static final String ANY = "Any";
private static final String URL = "http://stackoverflow.com/feeds/tag?tagnames=android&sort=newest";
-
+
// Whether there is a Wi-Fi connection.
- private static boolean wifiConnected = false;
+ private static boolean wifiConnected = false;
// Whether there is a mobile connection.
private static boolean mobileConnected = false;
// Whether the display should be refreshed.
public static boolean refreshDisplay = true;
-
+
// The user's current network preference setting.
public static String sPref = null;
-
+
// The BroadcastReceiver that tracks network connectivity changes.
private NetworkReceiver receiver = new NetworkReceiver();
-
+
&#64;Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
+
// Registers BroadcastReceiver to track network connection changes.
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
receiver = new NetworkReceiver();
this.registerReceiver(receiver, filter);
}
-
- &#64;Override
+
+ &#64;Override
public void onDestroy() {
super.onDestroy();
// Unregisters BroadcastReceiver when app is destroyed.
@@ -327,34 +327,34 @@ public class NetworkActivity extends Activity {
this.unregisterReceiver(receiver);
}
}
-
+
// Refreshes the display if the network connection and the
// pref settings allow it.
-
+
&#64;Override
public void onStart () {
- super.onStart();
-
+ super.onStart();
+
// Gets the user's network preference settings
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
-
+
// Retrieves a string value for the preferences. The second parameter
// is the default value to use if a preference value is not found.
sPref = sharedPrefs.getString("listPref", "Wi-Fi");
- updateConnectedFlags();
-
+ updateConnectedFlags();
+
if(refreshDisplay){
- loadPage();
+ loadPage();
}
}
-
+
// Checks the network connection and sets the wifiConnected and mobileConnected
- // variables accordingly.
+ // variables accordingly.
public void updateConnectedFlags() {
- ConnectivityManager connMgr = (ConnectivityManager)
+ ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
-
+
NetworkInfo activeInfo = connMgr.getActiveNetworkInfo();
if (activeInfo != null && activeInfo.isConnected()) {
wifiConnected = activeInfo.getType() == ConnectivityManager.TYPE_WIFI;
@@ -362,9 +362,9 @@ public class NetworkActivity extends Activity {
} else {
wifiConnected = false;
mobileConnected = false;
- }
+ }
}
-
+
// Uses AsyncTask subclass to download the XML feed from stackoverflow.com.
public void loadPage() {
if (((sPref.equals(ANY)) && (wifiConnected || mobileConnected))
@@ -376,7 +376,7 @@ public class NetworkActivity extends Activity {
}
}
...
-
+
}</pre>
<h2 id="detect-changes">Detect Connection Changes</h2>
@@ -388,36 +388,36 @@ the action {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION},
determines what the network connection status is, and sets the flags
<code>wifiConnected</code> and <code>mobileConnected</code> to true/false
accordingly. The upshot is that the next time the user returns to the app, the
-app will only download the latest feed and update the display if
+app will only download the latest feed and update the display if
<code>NetworkActivity.refreshDisplay</code> is set to <code>true</code>.</p>
-<p>Setting up a BroadcastReceiver that gets called unnecessarily can be a
+<p>Setting up a BroadcastReceiver that gets called unnecessarily can be a
drain on system resources.
-The sample application registers the
-{@link android.content.BroadcastReceiver} {@code NetworkReceiver} in
-{@link android.app.Activity#onCreate(android.os.Bundle) onCreate()},
-and it unregisters it in
-{@link android.app.Activity#onDestroy onDestroy()}. This is more lightweight
+The sample application registers the
+{@link android.content.BroadcastReceiver} {@code NetworkReceiver} in
+{@link android.app.Activity#onCreate(android.os.Bundle) onCreate()},
+and it unregisters it in
+{@link android.app.Activity#onDestroy onDestroy()}. This is more lightweight
than declaring a {@code <receiver>} in the manifest. When you declare a
{@code <receiver>} in the manifest, it can wake up your app at any time,
-even if you haven't run it for weeks. By registering and unregistering
-{@code NetworkReceiver} within the main activity, you ensure that the app won't
-be woken up after the user leaves the app.
+even if you haven't run it for weeks. By registering and unregistering
+{@code NetworkReceiver} within the main activity, you ensure that the app won't
+be woken up after the user leaves the app.
If you do declare a {@code <receiver>} in the manifest and you know exactly
-where you need it, you can use
+where you need it, you can use
{@link android.content.pm.PackageManager#setComponentEnabledSetting setComponentEnabledSetting()}
to enable and disable it as appropriate.</p>
<p>Here is <code>NetworkReceiver</code>:</p>
-<pre>public class NetworkReceiver extends BroadcastReceiver {
-
+<pre>public class NetworkReceiver extends BroadcastReceiver {
+
&#64;Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager conn = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = conn.getActiveNetworkInfo();
-
+
// Checks the user prefs and the network connection. Based on the result, decides whether
// to refresh the display or keep the current display.
// If the userpref is Wi-Fi only, checks to see if the device has a Wi-Fi connection.
@@ -432,9 +432,9 @@ public void onReceive(Context context, Intent intent) {
// (which by process of elimination would be mobile), sets refreshDisplay to true.
} else if (ANY.equals(sPref) && networkInfo != null) {
refreshDisplay = true;
-
+
// Otherwise, the app can't download content--either because there is no network
- // connection (mobile or Wi-Fi), or because the pref setting is WIFI, and there
+ // connection (mobile or Wi-Fi), or because the pref setting is WIFI, and there
// is no Wi-Fi connection.
// Sets refreshDisplay to false.
} else {
diff --git a/docs/html/training/basics/network-ops/xml.jd b/docs/html/training/basics/network-ops/xml.jd
index 0ea696d53684..3385a6365db3 100644
--- a/docs/html/training/basics/network-ops/xml.jd
+++ b/docs/html/training/basics/network-ops/xml.jd
@@ -9,7 +9,7 @@ previous.link=managing.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
@@ -38,7 +38,7 @@ class="button">Download the sample</a>
<p class="filename">NetworkUsage.zip</p>
</div>
-</div>
+</div>
</div>
<p>Extensible Markup Language (XML) is a set of rules for encoding documents in
@@ -55,11 +55,11 @@ maintainable way to parse XML on Android. Historically Android has had two
implementations of this interface:</p>
<ul>
- <li><a href="http://kxml.sourceforge.net/"><code>KXmlParser</code></a>
- via {@link org.xmlpull.v1.XmlPullParserFactory#newPullParser XmlPullParserFactory.newPullParser()}.
+ <li><a href="http://kxml.sourceforge.net/"><code>KXmlParser</code></a>
+ via {@link org.xmlpull.v1.XmlPullParserFactory#newPullParser XmlPullParserFactory.newPullParser()}.
</li>
- <li><code>ExpatPullParser</code>, via
- {@link android.util.Xml#newPullParser Xml.newPullParser()}.
+ <li><code>ExpatPullParser</code>, via
+ {@link android.util.Xml#newPullParser Xml.newPullParser()}.
</li>
</ul>
@@ -69,15 +69,15 @@ example in this section uses <code>ExpatPullParser</code>, via
<h2 id="analyze">Analyze the Feed</h2>
-<p>The first step in parsing a feed is to decide which fields you're interested in.
+<p>The first step in parsing a feed is to decide which fields you're interested in.
The parser extracts data for those fields and ignores the rest.</p>
<p>Here is an excerpt from the feed that's being parsed in the sample app. Each
post to <a href="http://stackoverflow.com">StackOverflow.com</a> appears in the
feed as an <code>entry</code> tag that contains several nested tags:</p>
-<pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
-&lt;feed xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:creativeCommons=&quot;http://backend.userland.com/creativeCommonsRssModule&quot; ...&quot;&gt;
+<pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;feed xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:creativeCommons=&quot;http://backend.userland.com/creativeCommonsRssModule&quot; ...&quot;&gt;
&lt;title type=&quot;text&quot;&gt;newest questions tagged android - Stack Overflow&lt;/title&gt;
...
&lt;entry&gt;
@@ -107,7 +107,7 @@ feed as an <code>entry</code> tag that contains several nested tags:</p>
...
&lt;/feed&gt;</pre>
-<p>The sample app
+<p>The sample app
extracts data for the <code>entry</code> tag and its nested tags
<code>title</code>, <code>link</code>, and <code>summary</code>.</p>
@@ -125,7 +125,7 @@ interested in:</p>
<pre>public class StackOverflowXmlParser {
// We don't use namespaces
private static final String ns = null;
-
+
public List<Entry> parse(InputStream in) throws XmlPullParserException, IOException {
try {
XmlPullParser parser = Xml.newPullParser();
@@ -137,7 +137,7 @@ interested in:</p>
in.close();
}
}
- ...
+ ...
}</pre>
<h2 id="read">Read the Feed</h2>
@@ -166,7 +166,7 @@ private List<Entry> readFeed(XmlPullParser parser) throws XmlPullParserException
} else {
skip(parser);
}
- }
+ }
return entries;
}</pre>
@@ -187,7 +187,7 @@ example extracts data for the <code>entry</code> tag and its nested tags
<li>A "read" method for each tag you're interested in. For example,
<code>readEntry()</code>, <code>readTitle()</code>, and so on. The parser reads
-tags from the input stream. When it encounters a tag named <code>entry</code>,
+tags from the input stream. When it encounters a tag named <code>entry</code>,
<code>title</code>,
<code>link</code> or <code>summary</code>, it calls the appropriate method
for that tag. Otherwise, it skips the tag.
@@ -201,7 +201,7 @@ parser to the next tag. For example:
<code>readText()</code>. This method extracts data for these tags by calling
<code>parser.getText()</code>.</li>
-<li>For the <code>link</code> tag, the parser extracts data for links by first
+<li>For the <code>link</code> tag, the parser extracts data for links by first
determining if the link is the kind
it's interested in. Then it uses <code>parser.getAttributeValue()</code> to
extract the link's value.</li>
@@ -215,7 +215,7 @@ object with the data members <code>title</code>, <code>link</code>, and
</li>
<li>A helper <code>skip()</code> method that's recursive. For more discussion of this topic, see <a href="#skip">Skip Tags You Don't Care About</a>.</li>
</ul>
-
+
</li>
</ol>
@@ -231,7 +231,7 @@ object with the data members <code>title</code>, <code>link</code>, and
this.link = link;
}
}
-
+
// Parses the contents of an entry. If it encounters a title, summary, or link tag, hands them off
// to their respective &quot;read&quot; methods for processing. Otherwise, skips the tag.
private Entry readEntry(XmlPullParser parser) throws XmlPullParserException, IOException {
@@ -264,18 +264,18 @@ private String readTitle(XmlPullParser parser) throws IOException, XmlPullParser
parser.require(XmlPullParser.END_TAG, ns, "title");
return title;
}
-
+
// Processes link tags in the feed.
private String readLink(XmlPullParser parser) throws IOException, XmlPullParserException {
String link = "";
parser.require(XmlPullParser.START_TAG, ns, "link");
String tag = parser.getName();
- String relType = parser.getAttributeValue(null, "rel");
+ String relType = parser.getAttributeValue(null, "rel");
if (tag.equals("link")) {
if (relType.equals("alternate")){
link = parser.getAttributeValue(null, "href");
parser.nextTag();
- }
+ }
}
parser.require(XmlPullParser.END_TAG, ns, "link");
return link;
@@ -350,7 +350,7 @@ which has 2 nested elements, <code>&lt;name&gt;</code> and
<ul>
<li>The first time through the <code>while</code> loop, the next tag the parser
-encounters after <code>&lt;author&gt;</code> is the <code>START_TAG</code> for
+encounters after <code>&lt;author&gt;</code> is the <code>START_TAG</code> for
<code>&lt;name&gt;</code>. The value for <code>depth</code> is incremented to
2.</li>
@@ -367,7 +367,7 @@ encounters is the <code>END_TAG</code> <code>&lt;/uri&gt;</code>. The value for
<code>depth</code> is decremented to 1.</li>
<li>The fifth time and final time through the <code>while</code> loop, the next
-tag the parser encounters is the <code>END_TAG</code>
+tag the parser encounters is the <code>END_TAG</code>
<code>&lt;/author&gt;</code>. The value for <code>depth</code> is decremented to
0, indicating that the <code>&lt;author&gt;</code> element has been successfully
skipped.</li>
@@ -377,7 +377,7 @@ skipped.</li>
<h2 id="consume">Consume XML Data</h2>
<p>The example application fetches and parses the XML feed within an {@link
-android.os.AsyncTask}. This takes the processing off the main UI thread. When
+android.os.AsyncTask}. This takes the processing off the main UI thread. When
processing is complete, the app updates the UI in the main activity
(<code>NetworkActivity</code>).</p>
<p>In the excerpt shown below, the <code>loadPage()</code> method does the
@@ -386,33 +386,33 @@ following:</p>
<ul>
<li>Initializes a string variable with the URL for the XML feed.</li>
-
+
<li>If the user's settings and the network connection allow it, invokes
-<code>new DownloadXmlTask().execute(url)</code>. This instantiates a new
+<code>new DownloadXmlTask().execute(url)</code>. This instantiates a new
<code>DownloadXmlTask</code> object ({@link android.os.AsyncTask} subclass) and
runs its {@link android.os.AsyncTask#execute execute()} method, which downloads
and parses the feed and returns a string result to be displayed in the UI.</li>
-
+
</ul>
<pre>
public class NetworkActivity extends Activity {
public static final String WIFI = "Wi-Fi";
public static final String ANY = "Any";
private static final String URL = "http://stackoverflow.com/feeds/tag?tagnames=android&sort=newest";
-
+
// Whether there is a Wi-Fi connection.
- private static boolean wifiConnected = false;
+ private static boolean wifiConnected = false;
// Whether there is a mobile connection.
private static boolean mobileConnected = false;
// Whether the display should be refreshed.
- public static boolean refreshDisplay = true;
+ public static boolean refreshDisplay = true;
public static String sPref = null;
...
-
+
// Uses AsyncTask to download the XML feed from stackoverflow.com.
- public void loadPage() {
-
+ public void loadPage() {
+
if((sPref.equals(ANY)) && (wifiConnected || mobileConnected)) {
new DownloadXmlTask().execute(URL);
}
@@ -420,25 +420,25 @@ public class NetworkActivity extends Activity {
new DownloadXmlTask().execute(URL);
} else {
// show error
- }
+ }
}</pre>
-
+
<p>The {@link android.os.AsyncTask} subclass shown below,
<code>DownloadXmlTask</code>, implements the following {@link
android.os.AsyncTask} methods:</p>
<ul>
-
+
<li>{@link android.os.AsyncTask#doInBackground doInBackground()} executes
the method <code>loadXmlFromNetwork()</code>. It passes the feed URL as a
parameter. The method <code>loadXmlFromNetwork()</code> fetches and processes
the feed. When it finishes, it passes back a result string.</li>
-
+
<li>{@link android.os.AsyncTask#onPostExecute onPostExecute()} takes the
returned string and displays it in the UI.</li>
-
+
</ul>
-
+
<pre>
// Implementation of AsyncTask used to download XML feed from stackoverflow.com.
private class DownloadXmlTask extends AsyncTask&lt;String, Void, String&gt; {
@@ -454,7 +454,7 @@ private class DownloadXmlTask extends AsyncTask&lt;String, Void, String&gt; {
}
&#64;Override
- protected void onPostExecute(String result) {
+ protected void onPostExecute(String result) {
setContentView(R.layout.main);
// Displays the HTML string in the UI via a WebView
WebView myWebView = (WebView) findViewById(R.id.webview);
@@ -464,28 +464,28 @@ private class DownloadXmlTask extends AsyncTask&lt;String, Void, String&gt; {
<p>Below is the method <code>loadXmlFromNetwork()</code> that is invoked from
<code>DownloadXmlTask</code>. It does the following:</p>
-
+
<ol>
-
+
<li>Instantiates a <code>StackOverflowXmlParser</code>. It also creates variables for
-a {@link java.util.List} of <code>Entry</code> objects (<code>entries</code>), and
+a {@link java.util.List} of <code>Entry</code> objects (<code>entries</code>), and
<code>title</code>, <code>url</code>, and <code>summary</code>, to hold the
values extracted from the XML feed for those fields.</li>
-
- <li>Calls <code>downloadUrl()</code>, which fetches the feed and returns it as
+
+ <li>Calls <code>downloadUrl()</code>, which fetches the feed and returns it as
an {@link java.io.InputStream}.</li>
-
- <li>Uses <code>StackOverflowXmlParser</code> to parse the {@link java.io.InputStream}.
- <code>StackOverflowXmlParser</code> populates a
+
+ <li>Uses <code>StackOverflowXmlParser</code> to parse the {@link java.io.InputStream}.
+ <code>StackOverflowXmlParser</code> populates a
{@link java.util.List} of <code>entries</code> with data from the feed.</li>
-
- <li>Processes the <code>entries</code> {@link java.util.List},
+
+ <li>Processes the <code>entries</code> {@link java.util.List},
and combines the feed data with HTML markup.</li>
-
+
<li>Returns an HTML string that is displayed in the main activity
UI by the {@link android.os.AsyncTask} method {@link
android.os.AsyncTask#onPostExecute onPostExecute()}.</li>
-
+
</ol>
<pre>
@@ -499,35 +499,35 @@ private String loadXmlFromNetwork(String urlString) throws XmlPullParserExceptio
String title = null;
String url = null;
String summary = null;
- Calendar rightNow = Calendar.getInstance();
+ Calendar rightNow = Calendar.getInstance();
DateFormat formatter = new SimpleDateFormat("MMM dd h:mmaa");
-
+
// Checks whether the user set the preference to include summary text
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean pref = sharedPrefs.getBoolean("summaryPref", false);
-
+
StringBuilder htmlString = new StringBuilder();
htmlString.append("&lt;h3&gt;" + getResources().getString(R.string.page_title) + "&lt;/h3&gt;");
- htmlString.append("&lt;em&gt;" + getResources().getString(R.string.updated) + " " +
+ htmlString.append("&lt;em&gt;" + getResources().getString(R.string.updated) + " " +
formatter.format(rightNow.getTime()) + "&lt;/em&gt;");
-
+
try {
- stream = downloadUrl(urlString);
+ stream = downloadUrl(urlString);
entries = stackOverflowXmlParser.parse(stream);
// Makes sure that the InputStream is closed after the app is
// finished using it.
} finally {
if (stream != null) {
stream.close();
- }
+ }
}
-
+
// StackOverflowXmlParser returns a List (called "entries") of Entry objects.
// Each Entry object represents a single post in the XML feed.
// This section processes the entries list to combine each entry with HTML markup.
// Each entry is displayed in the UI as a link that optionally includes
// a text summary.
- for (Entry entry : entries) {
+ for (Entry entry : entries) {
htmlString.append("&lt;p&gt;&lt;a href='");
htmlString.append(entry.link);
htmlString.append("'&gt;" + entry.title + "&lt;/a&gt;&lt;/p&gt;");
diff --git a/docs/html/training/basics/supporting-devices/index.jd b/docs/html/training/basics/supporting-devices/index.jd
index 4644c31c9cf6..c9f2e6cd51c5 100644
--- a/docs/html/training/basics/supporting-devices/index.jd
+++ b/docs/html/training/basics/supporting-devices/index.jd
@@ -35,7 +35,7 @@ resources and other features so your app can provide an optimized user experienc
variety of Android-compatible devices, using a single application package (APK).</p>
<h2>Lessons</h2>
-
+
<dl>
<dt><b><a href="languages.html">Supporting Different Languages</a></b></dt>
<dd>Learn how to support multiple languages with alternative string resources.</dd>
@@ -44,5 +44,5 @@ variety of Android-compatible devices, using a single application package (APK).
<dt><b><a href="platforms.html">Supporting Different Platform Versions</a></b></dt>
<dd>Learn how to use APIs available in new versions of Android while continuing to support
older versions of Android.</dd>
-</dl>
+</dl>
diff --git a/docs/html/training/basics/supporting-devices/languages.jd b/docs/html/training/basics/supporting-devices/languages.jd
index ba7c0160fe51..0ad1fafeb824 100644
--- a/docs/html/training/basics/supporting-devices/languages.jd
+++ b/docs/html/training/basics/supporting-devices/languages.jd
@@ -36,7 +36,7 @@ types. There are also a few default files such as <code>res/values/strings.xml</
your string values.</p>
-<h2 id="CreateDirs">Create Locale Directories and String Files</h2>
+<h2 id="CreateDirs">Create Locale Directories and String Files</h2>
<p>To add support for more languages, create additional <code>values</code> directories inside
<code>res/</code> that include a hyphen and the ISO language code at the end of the
@@ -63,7 +63,7 @@ MyProject/
<p>At runtime, the Android system uses the appropriate set of string resources based on the
locale currently set for the user's device.</p>
-
+
<p>For example, the following are some different string resource files for different languages.</p>
@@ -112,7 +112,7 @@ resource name defined by the {@code <string>} element's {@code name} attribute.<
<p>In your source code, you can refer to a string resource with the syntax {@code
R.string.<string_name>}. There are a variety of methods that accept a string resource this
way.</p>
-
+
<p>For example:</p>
<pre>
diff --git a/docs/html/training/basics/supporting-devices/platforms.jd b/docs/html/training/basics/supporting-devices/platforms.jd
index eecb3563344e..67120293b5e6 100644
--- a/docs/html/training/basics/supporting-devices/platforms.jd
+++ b/docs/html/training/basics/supporting-devices/platforms.jd
@@ -10,14 +10,14 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>This lesson teaches you to</h2>
<ol>
<li><a href="#sdk-versions">Specify Minimum and Target API Levels</a></li>
<li><a href="#version-codes">Check System Version at Runtime</a></li>
<li><a href="#style-themes">Use Platform Styles and Themes</a></li>
</ol>
-
+
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API Levels</a></li>
@@ -27,19 +27,19 @@ href="{@docRoot}tools/support-library/index.html">Android Support Library</a></l
</div>
</div>
-<p>While the latest versions of Android often provide great APIs for your app, you should continue
-to support older versions of Android until more devices get updated. This
-lesson shows you how to take advantage of the latest APIs while continuing to support older
+<p>While the latest versions of Android often provide great APIs for your app, you should continue
+to support older versions of Android until more devices get updated. This
+lesson shows you how to take advantage of the latest APIs while continuing to support older
versions as well.</p>
<p>The dashboard for <a
href="http://developer.android.com/about/dashboards/index.html">Platform Versions</a>
-is updated regularly to show the distribution of active
-devices running each version of Android, based on the number of devices that visit the Google Play
-Store. Generally, it’s a good practice to support about 90% of the active devices, while
+is updated regularly to show the distribution of active
+devices running each version of Android, based on the number of devices that visit the Google Play
+Store. Generally, it’s a good practice to support about 90% of the active devices, while
targeting your app to the latest version.</p>
-<p class="note"><strong>Tip:</strong> In order to provide the best features and
+<p class="note"><strong>Tip:</strong> In order to provide the best features and
functionality across several Android versions, you should use the <a
href="{@docRoot}tools/support-library/index.html">Android Support Library</a> in your app,
which allows you to use several recent platform APIs on older versions.</p>
@@ -49,8 +49,8 @@ which allows you to use several recent platform APIs on older versions.</p>
<h2 id="sdk-versions">Specify Minimum and Target API Levels</h2>
<p>The <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a> file
-describes details about your app and
-identifies which versions of Android it supports. Specifically, the <code>minSdkVersion</code>
+describes details about your app and
+identifies which versions of Android it supports. Specifically, the <code>minSdkVersion</code>
and <code>targetSdkVersion</code> attributes for the <a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code <uses-sdk>}</a> element
identify the lowest API level with which your app is compatible and the highest API level against
@@ -65,9 +65,9 @@ which you’ve designed and tested your app.</p>
&lt;/manifest>
</pre>
-<p>As new versions of Android are released, some style and behaviors may change.
+<p>As new versions of Android are released, some style and behaviors may change.
To allow your app to take advantage of these changes and ensure that your app fits the style of
-each user's device, you should set the
+each user's device, you should set the
<a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>
value to match the latest Android version
@@ -93,24 +93,24 @@ private void setUpActionBar() {
-<p class="note"><strong>Note:</strong> When parsing XML resources, Android ignores XML
+<p class="note"><strong>Note:</strong> When parsing XML resources, Android ignores XML
attributes that aren’t supported by the current device. So you can safely use XML attributes that
are only supported by newer versions without worrying about older versions breaking when they
-encounter that code. For example, if you set the
+encounter that code. For example, if you set the
<code>targetSdkVersion="11"</code>, your app includes the {@link android.app.ActionBar} by default
-on Android 3.0 and higher. To then add menu items to the action bar, you need to set
-<code>android:showAsAction="ifRoom"</code> in your menu resource XML. It's safe to do this
-in a cross-version XML file, because the older versions of Android simply ignore the
-<code>showAsAction</code> attribute (that is, you <em>do not</em> need a separate
+on Android 3.0 and higher. To then add menu items to the action bar, you need to set
+<code>android:showAsAction="ifRoom"</code> in your menu resource XML. It's safe to do this
+in a cross-version XML file, because the older versions of Android simply ignore the
+<code>showAsAction</code> attribute (that is, you <em>do not</em> need a separate
version in <code>res/menu-v11/</code>).</p>
-<h2 id="style-themes">Use Platform Styles and Themes</h2>
+<h2 id="style-themes">Use Platform Styles and Themes</h2>
-<p>Android provides user experience themes that give apps the look and feel of the
-underlying operating system. These themes can be applied to your app within the
-manifest file. By using these built in styles and themes, your app will
+<p>Android provides user experience themes that give apps the look and feel of the
+underlying operating system. These themes can be applied to your app within the
+manifest file. By using these built in styles and themes, your app will
naturally follow the latest look and feel of Android with each new release.</p>
<p>To make your activity look like a dialog box:</p>
@@ -126,7 +126,7 @@ naturally follow the latest look and feel of Android with each new release.</p>
<pre>&lt;activity android:theme="@style/CustomTheme"></pre>
<p>To apply a theme to your entire app (all activities), add the <code>android:theme</code>
-attribute
+attribute
to the <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
<application>}</a> element:</p>
diff --git a/docs/html/training/basics/supporting-devices/screens.jd b/docs/html/training/basics/supporting-devices/screens.jd
index 4b54de8e243c..9d5e7c17ce2e 100644
--- a/docs/html/training/basics/supporting-devices/screens.jd
+++ b/docs/html/training/basics/supporting-devices/screens.jd
@@ -8,13 +8,13 @@ trainingnavtop=true
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>This lesson teaches you to</h2>
<ol>
<li><a href="#create-layouts">Create Different Layouts</a></li>
<li><a href="#create-bitmaps">Create Different Bitmaps</a></li>
</ol>
-
+
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}training/multiscreen/index.html">Designing for Multiple
@@ -26,9 +26,9 @@ Screens</a></li>
</div>
</div>
-<p>Android categorizes device screens using two general properties: size and density. You should
-expect that your app will be installed on devices with screens that range in both size
-and density. As such, you should include some alternative resources that optimize your app’s
+<p>Android categorizes device screens using two general properties: size and density. You should
+expect that your app will be installed on devices with screens that range in both size
+and density. As such, you should include some alternative resources that optimize your app’s
appearance for different screen sizes and densities.</p>
<ul>
@@ -46,12 +46,12 @@ screen size, so many apps should revise the layout to optimize the user experien
orientation.</p>
-<h2 id="create-layouts">Create Different Layouts</h2>
+<h2 id="create-layouts">Create Different Layouts</h2>
<p>To optimize your user experience on different screen sizes, you should create a unique layout XML
-file for each screen size you want to support. Each layout should be
-saved into the appropriate resources directory, named with a <code>-&lt;screen_size></code>
-suffix. For example, a unique layout for large screens should be saved under
+file for each screen size you want to support. Each layout should be
+saved into the appropriate resources directory, named with a <code>-&lt;screen_size></code>
+suffix. For example, a unique layout for large screens should be saved under
<code>res/layout-large/</code>.</p>
<p class="note"><strong>Note:</strong> Android automatically scales your layout in order to
@@ -85,7 +85,7 @@ an optimized UI for the corresponding screen size.</p>
}
</pre>
-<p>The system loads the layout file from the appropriate layout directory based on screen size of
+<p>The system loads the layout file from the appropriate layout directory based on screen size of
the device on which your app is running. More information about how Android selects the
appropriate resource is available in the <a
href="{@docRoot}guide/topics/resources/providing-resources.html#BestMatch">Providing Resources</a>
@@ -120,7 +120,7 @@ MyProject/
main.xml
</pre>
-<p class="note"><strong>Note:</strong> Android 3.2 and above supports an advanced method of
+<p class="note"><strong>Note:</strong> Android 3.2 and above supports an advanced method of
defining screen sizes that allows you to specify resources for screen sizes based on
the minimum width and height in terms of density-independent pixels. This lesson does not cover
this new technique. For more information, read <a
@@ -128,14 +128,14 @@ href="{@docRoot}training/multiscreen/index.html">Designing for Multiple
Screens</a>.</p>
-
+
<h2 id="create-bitmaps">Create Different Bitmaps</h2>
<p>You should always provide bitmap resources that are properly scaled to each of the generalized
density buckets: low, medium, high and extra-high density. This helps you achieve good graphical
quality and performance on all screen densities.</p>
-<p>To generate these images, you should start with your raw resource in vector format and generate
+<p>To generate these images, you should start with your raw resource in vector format and generate
the images for each density using the following size scale:</p>
<ul>
<li>xhdpi: 2.0</li>
@@ -144,7 +144,7 @@ the images for each density using the following size scale:</p>
<li>ldpi: 0.75</li>
</ul>
-<p>This means that if you generate a 200x200 image for xhdpi devices, you should generate the same
+<p>This means that if you generate a 200x200 image for xhdpi devices, you should generate the same
resource in 150x150 for hdpi, 100x100 for mdpi, and 75x75 for ldpi devices.</p>
<p>Then, place the files in the appropriate drawable resource directory:</p>
@@ -162,14 +162,14 @@ MyProject/
awesomeimage.png
</pre>
-<p>Any time you reference <code>@drawable/awesomeimage</code>, the system selects the
+<p>Any time you reference <code>@drawable/awesomeimage</code>, the system selects the
appropriate bitmap based on the screen's density.</p>
<p class="note"><strong>Note:</strong> Low-density (ldpi) resources aren’t always necessary. When
you provide hdpi assets, the system scales them down by one half to properly fit ldpi
screens.</p>
-<p>For more tips and guidelines about creating icon assets for your app, see the
+<p>For more tips and guidelines about creating icon assets for your app, see the
<a href="{@docRoot}design/style/iconography.html">Iconography design guide</a>.</p>
diff --git a/docs/html/training/building-userinfo.jd b/docs/html/training/building-userinfo.jd
index 40e5b94c6d80..a08899d4d182 100644
--- a/docs/html/training/building-userinfo.jd
+++ b/docs/html/training/building-userinfo.jd
@@ -4,6 +4,6 @@ page.trainingcourse=true
@jd:body
-<p>These lessons teach you how to include contact information and authenticate users with the same
-credentials they use for Google. These features allow your app to connect users with people they
+<p>These lessons teach you how to include contact information and authenticate users with the same
+credentials they use for Google. These features allow your app to connect users with people they
care about and provide a personalized experience without creating new user accounts.</p>
diff --git a/docs/html/training/camera/cameradirect.jd b/docs/html/training/camera/cameradirect.jd
index 6f358a52befc..851c7db0d198 100644
--- a/docs/html/training/camera/cameradirect.jd
+++ b/docs/html/training/camera/cameradirect.jd
@@ -11,7 +11,7 @@ previous.link=videobasics.html
<div id="tb-wrapper">
<div id="tb">
-
+
<h2>This lesson teaches you to</h2>
<ol>
<li><a href="#TaskOpenCamera">Open the Camera Object</a></li>
@@ -22,7 +22,7 @@ previous.link=videobasics.html
<li><a href="#TaskRestartPreview">Restart the Preview</a></li>
<li><a href="#TaskReleaseCamera">Stop the Preview and Release the Camera</a></li>
</ol>
-
+
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}guide/topics/media/camera.html#custom-camera">Building
@@ -57,7 +57,7 @@ in a {@code try} block.</p>
<pre>
private boolean safeCameraOpen(int id) {
boolean qOpened = false;
-
+
try {
releaseCameraAndPreview();
mCamera = Camera.open(id);
@@ -67,7 +67,7 @@ private boolean safeCameraOpen(int id) {
e.printStackTrace();
}
- return qOpened;
+ return qOpened;
}
private void releaseCameraAndPreview() {
@@ -136,22 +136,22 @@ surfaceChanged()} callback method.</p>
<pre>
public void setCamera(Camera camera) {
if (mCamera == camera) { return; }
-
+
stopPreviewAndFreeCamera();
-
+
mCamera = camera;
-
+
if (mCamera != null) {
List&lt;Size> localSizes = mCamera.getParameters().getSupportedPreviewSizes();
mSupportedPreviewSizes = localSizes;
requestLayout();
-
+
try {
mCamera.setPreviewDisplay(mHolder);
} catch (IOException e) {
e.printStackTrace();
}
-
+
// Important: Call startPreview() to start updating the preview
// surface. Preview must be started before you can take a picture.
mCamera.startPreview();
@@ -260,12 +260,12 @@ private void stopPreviewAndFreeCamera() {
if (mCamera != null) {
// Call stopPreview() to stop updating the preview surface.
mCamera.stopPreview();
-
+
// Important: Call release() to release the camera for use by other
// applications. Applications should release the camera immediately
// during onPause() and re-open() it during onResume()).
mCamera.release();
-
+
mCamera = null;
}
}
diff --git a/docs/html/training/contacts-provider/display-contact-badge.jd b/docs/html/training/contacts-provider/display-contact-badge.jd
index b00ce0e4cabf..6c9616befe13 100644
--- a/docs/html/training/contacts-provider/display-contact-badge.jd
+++ b/docs/html/training/contacts-provider/display-contact-badge.jd
@@ -268,7 +268,7 @@ trainingnavtop=true
Uri.withAppendedPath(
contactUri, Photo.CONTENT_DIRECTORY);
}
-
+
/*
* Retrieves an AssetFileDescriptor object for the thumbnail
* URI
diff --git a/docs/html/training/contacts-provider/index.jd b/docs/html/training/contacts-provider/index.jd
index f380d9562e8a..9562977a8711 100644
--- a/docs/html/training/contacts-provider/index.jd
+++ b/docs/html/training/contacts-provider/index.jd
@@ -55,7 +55,7 @@ startpage=true
<a href="{@docRoot}guide/topics/providers/contacts-provider.html">Contacts Provider</a>.
</p>
<h2>Lessons</h2>
-
+
<dl>
<dt>
<b><a href="retrieve-names.html">Retrieving a List of Contacts</a></b>
diff --git a/docs/html/training/custom-views/index.jd b/docs/html/training/custom-views/index.jd
index 447da94dd9c8..d249fbd63925 100755
--- a/docs/html/training/custom-views/index.jd
+++ b/docs/html/training/custom-views/index.jd
@@ -67,7 +67,7 @@ own views that are robust and reusable.</p>
custom drawings run faster.
</dd>
-</dl>
+</dl>
diff --git a/docs/html/training/displaying-bitmaps/cache-bitmap.jd b/docs/html/training/displaying-bitmaps/cache-bitmap.jd
index 7b9216ef968c..d9622bca7bfc 100644
--- a/docs/html/training/displaying-bitmaps/cache-bitmap.jd
+++ b/docs/html/training/displaying-bitmaps/cache-bitmap.jd
@@ -187,7 +187,7 @@ be unpredictable.</p>
appropriate place to store cached images if they are accessed more frequently, for example in an
image gallery application.</p>
-<p>The sample code of this class uses a {@code DiskLruCache} implementation that is pulled from the
+<p>The sample code of this class uses a {@code DiskLruCache} implementation that is pulled from the
<a href="https://android.googlesource.com/platform/libcore/+/jb-mr2-release/luni/src/main/java/libcore/io/DiskLruCache.java">Android source</a>.
Here’s updated example code that adds a disk cache in addition to the existing memory cache:</p>
diff --git a/docs/html/training/displaying-bitmaps/index.jd b/docs/html/training/displaying-bitmaps/index.jd
index 831c64de1c65..aea473f7f624 100644
--- a/docs/html/training/displaying-bitmaps/index.jd
+++ b/docs/html/training/displaying-bitmaps/index.jd
@@ -56,7 +56,7 @@ exception:<br />{@code java.lang.OutofMemoryError: bitmap size exceeds VM budget
perform under this minimum memory limit. However, keep in mind many devices are configured with
higher limits.</li>
<li>Bitmaps take up a lot of memory, especially for rich images like photographs. For example, the
- camera on the <a href="http://www.android.com/devices/detail/galaxy-nexus">Galaxy Nexus</a> takes
+ camera on the <a href="http://www.android.com/devices/detail/galaxy-nexus">Galaxy Nexus</a> takes
photos up to 2592x1936 pixels (5 megapixels). If the bitmap configuration used is {@link
android.graphics.Bitmap.Config ARGB_8888} (the default from the Android 2.3 onward) then loading
this image into memory takes about 19MB of memory (2592*1936*4 bytes), immediately exhausting the
diff --git a/docs/html/training/displaying-bitmaps/manage-memory.jd b/docs/html/training/displaying-bitmaps/manage-memory.jd
index b7c72bc1c78f..ef3bd6c9525d 100644
--- a/docs/html/training/displaying-bitmaps/manage-memory.jd
+++ b/docs/html/training/displaying-bitmaps/manage-memory.jd
@@ -42,11 +42,11 @@ different versions of Android.</p>
<p>To set the stage for this lesson, here is how Android's management of
bitmap memory has evolved:</p>
-<ul>
+<ul>
<li>
-On Android Android 2.2 (API level 8) and lower, when garbage
+On Android Android 2.2 (API level 8) and lower, when garbage
collection occurs, your app's threads get stopped. This causes a lag that
-can degrade performance.
+can degrade performance.
<strong>Android 2.3 adds concurrent garbage collection, which means that
the memory is reclaimed soon after a bitmap is no longer referenced.</strong>
</li>
@@ -66,7 +66,7 @@ management for different Android versions.</p>
<h2 id="recycle">Manage Memory on Android 2.3.3 and Lower</h2>
-<p>On Android 2.3.3 (API level 10) and lower, using
+<p>On Android 2.3.3 (API level 10) and lower, using
{@link android.graphics.Bitmap#recycle recycle()}
is recommended. If you're displaying large amounts of bitmap data in your app,
you're likely to run into
@@ -82,12 +82,12 @@ and later attempt to draw the bitmap, you will get the error:
<p>The following code snippet gives an example of calling
{@link android.graphics.Bitmap#recycle recycle()}. It uses reference counting
-(in the variables {@code mDisplayRefCount} and {@code mCacheRefCount}) to track
+(in the variables {@code mDisplayRefCount} and {@code mCacheRefCount}) to track
whether a bitmap is currently being displayed or in the cache. The
code recycles the bitmap when these conditions are met:</p>
<ul>
-<li>The reference count for both {@code mDisplayRefCount} and
+<li>The reference count for both {@code mDisplayRefCount} and
{@code mCacheRefCount} is 0.</li>
<li>The bitmap is not {@code null}, and it hasn't been recycled yet.</li>
</ul>
@@ -142,7 +142,7 @@ private synchronized boolean hasValidBitmap() {
<p>Android 3.0 (API level 11) introduces the
{@link android.graphics.BitmapFactory.Options#inBitmap BitmapFactory.Options.inBitmap}
-field. If this option is set, decode methods that take the
+field. If this option is set, decode methods that take the
{@link android.graphics.BitmapFactory.Options Options} object
will attempt to reuse an existing bitmap when loading content. This means
that the bitmap's memory is reused, resulting in improved performance, and
@@ -154,7 +154,7 @@ removing both memory allocation and de-allocation. However, there are certain re
<h3>Save a bitmap for later use</h3>
<p>The following snippet demonstrates how an existing bitmap is stored for possible
-later use in the sample app. When an app is running on Android 3.0 or higher and
+later use in the sample app. When an app is running on Android 3.0 or higher and
a bitmap is evicted from the {@link android.util.LruCache},
a soft reference to the bitmap is placed
in a {@link java.util.HashSet}, for possible reuse later with
@@ -238,7 +238,7 @@ if it finds a suitable match (your code should never assume that a match will be
}
}
-// This method iterates through the reusable bitmaps, looking for one
+// This method iterates through the reusable bitmaps, looking for one
// to use for inBitmap:
protected Bitmap getBitmapFromReusableSet(BitmapFactory.Options options) {
Bitmap bitmap = null;
diff --git a/docs/html/training/efficient-downloads/connectivity_patterns.jd b/docs/html/training/efficient-downloads/connectivity_patterns.jd
index 81f154017aba..079e9670aad4 100644
--- a/docs/html/training/efficient-downloads/connectivity_patterns.jd
+++ b/docs/html/training/efficient-downloads/connectivity_patterns.jd
@@ -26,7 +26,7 @@ previous.link=redundant_redundant.html
</div>
<p>When it comes to impact on battery life, not all connection types are created equal. Not only does the Wi-Fi radio use significantly less battery than its wireless radio counterparts, but the radios used in different wireless radio technologies have different battery implications.</p>
-
+
<h2 id="WiFi">Use Wi-Fi</h2>
<p>In most cases a Wi-Fi radio will offer greater bandwidth at a significantly lower battery cost. As a result, you should endeavor to perform data transfers when connected over Wi-Fi whenever possible.</p>
@@ -50,22 +50,22 @@ previous.link=redundant_redundant.html
TelephonyManager tm =
(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
-
+
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
-
+
int PrefetchCacheSize = DEFAULT_PREFETCH_CACHE;
-
+
switch (activeNetwork.getType()) {
- case (ConnectivityManager.TYPE_WIFI):
+ case (ConnectivityManager.TYPE_WIFI):
PrefetchCacheSize = MAX_PREFETCH_CACHE; break;
case (ConnectivityManager.TYPE_MOBILE): {
switch (tm.getNetworkType()) {
- case (TelephonyManager.NETWORK_TYPE_LTE |
- TelephonyManager.NETWORK_TYPE_HSPAP):
+ case (TelephonyManager.NETWORK_TYPE_LTE |
+ TelephonyManager.NETWORK_TYPE_HSPAP):
PrefetchCacheSize *= 4;
break;
- case (TelephonyManager.NETWORK_TYPE_EDGE |
- TelephonyManager.NETWORK_TYPE_GPRS):
+ case (TelephonyManager.NETWORK_TYPE_EDGE |
+ TelephonyManager.NETWORK_TYPE_GPRS):
PrefetchCacheSize /= 2;
break;
default: break;
diff --git a/docs/html/training/efficient-downloads/efficient-network-access.jd b/docs/html/training/efficient-downloads/efficient-network-access.jd
index 1d3a8a59c681..7f061cae3807 100644
--- a/docs/html/training/efficient-downloads/efficient-network-access.jd
+++ b/docs/html/training/efficient-downloads/efficient-network-access.jd
@@ -32,9 +32,9 @@ next.link=regular_updates.html
<p>Using the wireless radio to transfer data is potentially one of your app's most significant sources of battery drain. To minimize the battery drain associated with network activity, it's critical that you understand how your connectivity model will affect the underlying radio hardware.</p>
<p>This lesson introduces the wireless radio state machine and explains how your app's connectivity model interacts with it. It goes on to propose ways to minimize your data connections, use prefetching, and bundle your transfers in order to minimize the battery drain associated with your data transfers.</p>
-
-<h2 id="RadioStateMachine">The Radio State Machine</h2>
-
+
+<h2 id="RadioStateMachine">The Radio State Machine</h2>
+
<p>A fully active wireless radio consumes significant power, so it transitions between different energy states in order to conserve power when not in use, while attempting to minimize latency associated with "powering up" the radio when it's required.</p>
<p>The state machine for a typical 3G network radio consists of three energy states:
@@ -57,9 +57,9 @@ next.link=regular_updates.html
<p>This approach is particularly effective for typical web browsing as it prevents unwelcome latency while users browse the web. The relatively low tail-time also ensures that once a browsing session has finished, the radio can move to a lower energy state.</p>
<p>Unfortunately, this approach can lead to inefficient apps on modern smartphone OSs like Android, where apps run both in the foreground (where latency is important) and in the background (where battery life should be prioritized).</p>
-
-<h2 id="AppsStateMachine">How Apps Impact the Radio State Machine</h2>
-
+
+<h2 id="AppsStateMachine">How Apps Impact the Radio State Machine</h2>
+
<p>Every time you create a new network connection, the radio transitions to the full power state. In the case of the typical 3G radio state machine described above, it will remain at full power for the duration of your transfer&mdash;plus an additional 5 seconds of tail time&mdash;followed by 12 seconds at the low energy state. So for a typical 3G device, every data transfer session will cause the radio to draw energy for almost 20 seconds.</p>
<p>In practice, this means an app that transfers unbundled data for 1 second every 18 seconds will keep the wireless radio perpetually active, moving it back to high power just as it was about to become idle. As a result, every minute it will consume battery at the high power state for 18 seconds, and at the low power state for the remaining 42 seconds.</p>
@@ -71,7 +71,7 @@ next.link=regular_updates.html
<img src="{@docRoot}images/efficient-downloads/graphs.png" />
<p class="img-caption"><strong>Figure 2.</strong> Relative wireless radio power use for bundled versus unbundled transfers.</p>
-<h2 id="PrefetchData">Prefetch Data</h2>
+<h2 id="PrefetchData">Prefetch Data</h2>
<p>Prefetching data is an effective way to reduce the number of independent data transfer sessions. Prefetching allows you to download all the data you are likely to need for a given time period in a single burst, over a single connection, at full capacity.</p>
@@ -135,7 +135,7 @@ Every time you initiate a connection&mdash;irrespective of the size of the assoc
<p>Rather than creating multiple simultaneous connections to download data, or chaining multiple consecutive GET requests, where possible you should bundle those requests into a single GET.</p>
-<p>For example, it would be more efficient to make a single request for every news article to be returned in a single request / response than to make multiple queries for several news categories.
+<p>For example, it would be more efficient to make a single request for every news article to be returned in a single request / response than to make multiple queries for several news categories.
The wireless radio needs to become active in order to transmit the termination / termination acknowledgement packets associated with server and client timeout, so it's also good practice to close your connections when they aren't in use, rather than waiting for these timeouts.</p>
<p>That said, closing a connection too early can prevent it from being reused, which then requires additional overhead for establishing a new connection. A useful compromise is not to close the connection immediately, but to still close it before the inherent timeout expires.</p>
diff --git a/docs/html/training/efficient-downloads/index.jd b/docs/html/training/efficient-downloads/index.jd
index d9d7ef078a44..a4c2aa16e7b5 100644
--- a/docs/html/training/efficient-downloads/index.jd
+++ b/docs/html/training/efficient-downloads/index.jd
@@ -26,18 +26,18 @@ startpage=true
<p>In this class you will learn to minimize the battery life impact of downloads and network connections, particularly in relation to the wireless radio.</P
-<p>This class demonstrates the best practices for scheduling and executing downloads using techniques such as caching, polling, and prefetching. You will learn how the power-use profile of the wireless radio can affect your choices on when, what, and how to transfer data in order to minimize impact on battery life.</p>
+<p>This class demonstrates the best practices for scheduling and executing downloads using techniques such as caching, polling, and prefetching. You will learn how the power-use profile of the wireless radio can affect your choices on when, what, and how to transfer data in order to minimize impact on battery life.</p>
+
+<h2>Lessons</h2>
-<h2>Lessons</h2>
-
<!-- Create a list of the lessons in this class along with a short description of each lesson.
These should be short and to the point. It should be clear from reading the summary whether someone
-will want to jump to a lesson or not.-->
-
-<dl>
+will want to jump to a lesson or not.-->
+
+<dl>
<dt><b><a href="efficient-network-access.html">Optimizing Downloads for Efficient Network Access</a></b></dt>
<dd>This lesson introduces the wireless radio state machine, explains how your app’s connectivity model interacts with it, and how you can minimize your data connection and use prefetching and bundling to minimize the battery drain associated with your data transfers.</dd>
-
+
<dt><b><a href="regular_updates.html">Minimizing the Effect of Regular Updates</a></b></dt>
<dd>This lesson will examine how your refresh frequency can be varied to best mitigate the effect of background updates on the underlying wireless radio state machine.</dd>
@@ -47,4 +47,4 @@ will want to jump to a lesson or not.-->
<dt><b><a href="connectivity_patterns.html">Modifying your Download Patterns Based on the Connectivity Type</a></b></dt>
<dd>When it comes to impact on battery life, not all connection types are created equal. Not only does the Wi-Fi radio use significantly less battery than its wireless radio counterparts, but the radios used in different wireless radio technologies have different battery implications.</dd>
-</dl>
+</dl>
diff --git a/docs/html/training/efficient-downloads/regular_updates.jd b/docs/html/training/efficient-downloads/regular_updates.jd
index 8e3842a80d4d..b87c5122e39f 100644
--- a/docs/html/training/efficient-downloads/regular_updates.jd
+++ b/docs/html/training/efficient-downloads/regular_updates.jd
@@ -33,9 +33,9 @@ next.link=redundant_redundant.html
<p><a href="{@docRoot}training/monitoring-device-state/index.html">Optimizing Battery Life</a> discusses how to build battery-efficient apps that modify their refresh frequency based on the state of the host device. That includes disabling background service updates when you lose connectivity and reducing the rate of updates when the battery level is low.</p>
<p>This lesson will examine how your refresh frequency can be varied to best mitigate the effect of background updates on the underlying wireless radio state machine.</p>
-
-<h2 id="GCM">Use Google Cloud Messaging as an Alternative to Polling</h2>
-
+
+<h2 id="GCM">Use Google Cloud Messaging as an Alternative to Polling</h2>
+
<p>Every time your app polls your server to check if an update is required, you activate the wireless radio, drawing power unnecessarily, for up to 20 seconds on a typical 3G connection.</p>
<p><a href="{@docRoot}google/gcm/index.html">Google Cloud Messaging for Android (GCM)</a> is a lightweight mechanism used to transmit data from a server to a particular app instance. Using GCM, your server can notify your app running on a particular device that there is new data available for it.</p>
@@ -46,7 +46,7 @@ next.link=redundant_redundant.html
<p>GCM is implemented using a persistent TCP/IP connection. While it's possible to implement your own push service, it's best practice to use GCM. This minimizes the number of persistent connections and allows the platform to optimize bandwidth and minimize the associated impact on battery life.</p>
-<h2 id="OptimizedPolling">Optimize Polling with Inexact Repeating Alarms and Exponential Backoffs</h2>
+<h2 id="OptimizedPolling">Optimize Polling with Inexact Repeating Alarms and Exponential Backoffs</h2>
<p>Where polling is required, it's good practice to set the default data refresh frequency of your app as low as possible without detracting from the user experience.</p>
@@ -68,14 +68,14 @@ alarmManager.setInexactRepeating(alarmType, start, interval, pi);</pre>
<p>One approach is to implement an exponential back-off pattern to reduce the frequency of your updates (and / or the degree of prefetching you perform) if the app hasn't been used since the previous update. It's often useful to assert a minimum update frequency and to reset the frequency whenever the app is used, for example:</p>
-<pre>SharedPreferences sp =
+<pre>SharedPreferences sp =
context.getSharedPreferences(PREFS, Context.MODE_WORLD_READABLE);
boolean appUsed = sp.getBoolean(PREFS_APPUSED, false);
long updateInterval = sp.getLong(PREFS_INTERVAL, DEFAULT_REFRESH_INTERVAL);
if (!appUsed)
- if ((updateInterval *= 2) > MAX_REFRESH_INTERVAL)
+ if ((updateInterval *= 2) > MAX_REFRESH_INTERVAL)
updateInterval = MAX_REFRESH_INTERVAL;
Editor spEdit = sp.edit();
@@ -92,10 +92,10 @@ executeUpdateOrPrefetch();</pre>
<pre>private void retryIn(long interval) {
boolean success = attemptTransfer();
-
+
if (!success) {
- retryIn(interval*2 < MAX_RETRY_INTERVAL ?
- interval*2 : MAX_RETRY_INTERVAL);
+ retryIn(interval*2 < MAX_RETRY_INTERVAL ?
+ interval*2 : MAX_RETRY_INTERVAL);
}
}</pre>
diff --git a/docs/html/training/gestures/detector.jd b/docs/html/training/gestures/detector.jd
index 97f039c709a8..0624e86335bc 100644
--- a/docs/html/training/gestures/detector.jd
+++ b/docs/html/training/gestures/detector.jd
@@ -48,48 +48,48 @@ phases to gesture detection:</p>
<ol>
<li>Gathering data about touch events.</li>
-
+
<li>Interpreting the data to see if it meets the criteria for any of the
-gestures your app supports. </li>
+gestures your app supports. </li>
</ol>
<h4>Support Library Classes</h4>
<p>The examples in this lesson use the {@link android.support.v4.view.GestureDetectorCompat}
-and {@link android.support.v4.view.MotionEventCompat} classes. These classes are in the
+and {@link android.support.v4.view.MotionEventCompat} classes. These classes are in the
<a href="{@docRoot}tools/support-library/index.html">Support Library</a>. You should use
-Support Library classes where possible to provide compatibility with devices
-running Android 1.6 and higher. Note that {@link android.support.v4.view.MotionEventCompat} is <em>not</em> a
-replacement for the {@link android.view.MotionEvent} class. Rather, it provides static utility
-methods to which you pass your {@link android.view.MotionEvent} object in order to receive
+Support Library classes where possible to provide compatibility with devices
+running Android 1.6 and higher. Note that {@link android.support.v4.view.MotionEventCompat} is <em>not</em> a
+replacement for the {@link android.view.MotionEvent} class. Rather, it provides static utility
+methods to which you pass your {@link android.view.MotionEvent} object in order to receive
the desired action associated with that event.</p>
<h2 id="data">Gather Data</h2>
<p>When a user places one or more fingers on the screen, this triggers the
-callback {@link android.view.View#onTouchEvent onTouchEvent()}
+callback {@link android.view.View#onTouchEvent onTouchEvent()}
on the View that received the touch events.
-For each sequence of touch events (position, pressure, size, addition of another finger, etc.)
+For each sequence of touch events (position, pressure, size, addition of another finger, etc.)
that is ultimately identified as a gesture,
{@link android.view.View#onTouchEvent onTouchEvent()} is fired several times.</p>
<p>The gesture starts when the user first touches the screen, continues as the system tracks
the position of the user's finger(s), and ends by capturing the final event of
-the user's fingers leaving the screen. Throughout this interaction,
-the {@link android.view.MotionEvent} delivered to {@link android.view.View#onTouchEvent onTouchEvent()}
-provides the details of every interaction. Your app can use the data provided by the {@link android.view.MotionEvent}
+the user's fingers leaving the screen. Throughout this interaction,
+the {@link android.view.MotionEvent} delivered to {@link android.view.View#onTouchEvent onTouchEvent()}
+provides the details of every interaction. Your app can use the data provided by the {@link android.view.MotionEvent}
to determine if a gesture it cares
about happened.</p>
<h3>Capturing touch events for an Activity or View</h3>
-<p><p>To intercept touch events in an Activity or View, override
+<p><p>To intercept touch events in an Activity or View, override
the {@link android.view.View#onTouchEvent onTouchEvent()} callback.</p>
-<p>The following snippet uses
+<p>The following snippet uses
{@link android.support.v4.view.MotionEventCompat#getActionMasked getActionMasked()}
-to extract the action the user performed from the {@code event} parameter. This gives you the raw
+to extract the action the user performed from the {@code event} parameter. This gives you the raw
data you need to determine if a gesture you care about occurred:</p>
<pre>
@@ -98,10 +98,10 @@ public class MainActivity extends Activity {
// This example shows an Activity, but you would use the same approach if
// you were subclassing a View.
&#64;Override
-public boolean onTouchEvent(MotionEvent event){
-
+public boolean onTouchEvent(MotionEvent event){
+
int action = MotionEventCompat.getActionMasked(event);
-
+
switch(action) {
case (MotionEvent.ACTION_DOWN) :
Log.d(DEBUG_TAG,"Action was DOWN");
@@ -118,10 +118,10 @@ public boolean onTouchEvent(MotionEvent event){
case (MotionEvent.ACTION_OUTSIDE) :
Log.d(DEBUG_TAG,"Movement occurred outside bounds " +
"of current screen element");
- return true;
- default :
+ return true;
+ default :
return super.onTouchEvent(event);
- }
+ }
}</pre>
<p>You can then do your own processing on these events to determine if a
@@ -143,22 +143,22 @@ setOnTouchListener()} method. This makes it possible to to listen for touch
events without subclassing an existing {@link android.view.View}. For
example:</p>
-<pre>View myView = findViewById(R.id.my_view);
+<pre>View myView = findViewById(R.id.my_view);
myView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
- // ... Respond to touch events
+ // ... Respond to touch events
return true;
}
});</pre>
-<p>Beware of creating a listener that returns {@code false} for the
-{@link android.view.MotionEvent#ACTION_DOWN} event. If you do this, the listener will
-not be called for the subsequent {@link android.view.MotionEvent#ACTION_MOVE}
+<p>Beware of creating a listener that returns {@code false} for the
+{@link android.view.MotionEvent#ACTION_DOWN} event. If you do this, the listener will
+not be called for the subsequent {@link android.view.MotionEvent#ACTION_MOVE}
and {@link android.view.MotionEvent#ACTION_UP} string of events. This is because
{@link android.view.MotionEvent#ACTION_DOWN} is the starting point for all touch events.</p>
-<p>If you are creating a custom View, you can override
-{@link android.view.View#onTouchEvent onTouchEvent()},
+<p>If you are creating a custom View, you can override
+{@link android.view.View#onTouchEvent onTouchEvent()},
as described above.</p>
<h2 id="detect">Detect Gestures</h2>
@@ -168,24 +168,24 @@ common gestures. Some of the gestures it supports include {@link
android.view.GestureDetector.OnGestureListener#onDown onDown()}, {@link
android.view.GestureDetector.OnGestureListener#onLongPress onLongPress()},
{@link android.view.GestureDetector.OnGestureListener#onFling onFling()}, and so
-on. You can use {@link android.view.GestureDetector} in conjunction with the
+on. You can use {@link android.view.GestureDetector} in conjunction with the
{@link android.view.View#onTouchEvent onTouchEvent()}
method described above.</p>
<h3>Detecting All Supported Gestures</h3>
-<p>When you instantiate a {@link android.support.v4.view.GestureDetectorCompat}
-object, one of the parameters it takes is a class that implements the
-{@link android.view.GestureDetector.OnGestureListener} interface.
-{@link android.view.GestureDetector.OnGestureListener} notifies users when
-a particular touch event has occurred. To make it possible for your
-{@link android.view.GestureDetector} object to receive events, you override
-the View or Activity's {@link android.view.View#onTouchEvent onTouchEvent()} method,
+<p>When you instantiate a {@link android.support.v4.view.GestureDetectorCompat}
+object, one of the parameters it takes is a class that implements the
+{@link android.view.GestureDetector.OnGestureListener} interface.
+{@link android.view.GestureDetector.OnGestureListener} notifies users when
+a particular touch event has occurred. To make it possible for your
+{@link android.view.GestureDetector} object to receive events, you override
+the View or Activity's {@link android.view.View#onTouchEvent onTouchEvent()} method,
and pass along all observed events to the detector instance.</p>
-<p>In the following snippet, a return value of {@code true} from the individual
+<p>In the following snippet, a return value of {@code true} from the individual
<code>on<em>&lt;TouchEvent&gt;</em></code> methods indicates that you
have handled the touch event. A return value of {@code false} passes events down
through the view stack until the touch has been successfully handled.</p>
@@ -195,14 +195,14 @@ you interact with the touch screen, and what the contents of the {@link
android.view.MotionEvent} are for each touch event. You will realize how much
data is being generated for even simple interactions.</p>
-<pre>public class MainActivity extends Activity implements
+<pre>public class MainActivity extends Activity implements
GestureDetector.OnGestureListener,
GestureDetector.OnDoubleTapListener{
-
+
private static final String DEBUG_TAG = "Gestures";
- private GestureDetectorCompat mDetector;
+ private GestureDetectorCompat mDetector;
- // Called when the activity is first created.
+ // Called when the activity is first created.
&#64;Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -216,21 +216,21 @@ data is being generated for even simple interactions.</p>
mDetector.setOnDoubleTapListener(this);
}
- &#64;Override
- public boolean onTouchEvent(MotionEvent event){
+ &#64;Override
+ public boolean onTouchEvent(MotionEvent event){
this.mDetector.onTouchEvent(event);
// Be sure to call the superclass implementation
return super.onTouchEvent(event);
}
&#64;Override
- public boolean onDown(MotionEvent event) {
- Log.d(DEBUG_TAG,"onDown: " + event.toString());
+ public boolean onDown(MotionEvent event) {
+ Log.d(DEBUG_TAG,"onDown: " + event.toString());
return true;
}
&#64;Override
- public boolean onFling(MotionEvent event1, MotionEvent event2,
+ public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
Log.d(DEBUG_TAG, "onFling: " + event1.toString()+event2.toString());
return true;
@@ -238,7 +238,7 @@ data is being generated for even simple interactions.</p>
&#64;Override
public void onLongPress(MotionEvent event) {
- Log.d(DEBUG_TAG, "onLongPress: " + event.toString());
+ Log.d(DEBUG_TAG, "onLongPress: " + event.toString());
}
&#64;Override
@@ -294,23 +294,23 @@ android.view.GestureDetector.SimpleOnGestureListener} and overrides {@link
android.view.GestureDetector.OnGestureListener#onFling onFling()} and {@link
android.view.GestureDetector.OnGestureListener#onDown onDown()}.</p>
-<p>Whether or not you use {@link android.view.GestureDetector.OnGestureListener},
-it's best practice to implement an
-{@link android.view.GestureDetector.OnGestureListener#onDown onDown()}
-method that returns {@code true}. This is because all gestures begin with an
-{@link android.view.GestureDetector.OnGestureListener#onDown onDown()} message. If you return
-{@code false} from {@link android.view.GestureDetector.OnGestureListener#onDown onDown()},
-as {@link android.view.GestureDetector.SimpleOnGestureListener} does by default,
-the system assumes that you want to ignore the rest of the gesture, and the other methods of
-{@link android.view.GestureDetector.OnGestureListener} never get called.
-This has the potential to cause unexpected problems in your app.
-The only time you should return {@code false} from
-{@link android.view.GestureDetector.OnGestureListener#onDown onDown()}
+<p>Whether or not you use {@link android.view.GestureDetector.OnGestureListener},
+it's best practice to implement an
+{@link android.view.GestureDetector.OnGestureListener#onDown onDown()}
+method that returns {@code true}. This is because all gestures begin with an
+{@link android.view.GestureDetector.OnGestureListener#onDown onDown()} message. If you return
+{@code false} from {@link android.view.GestureDetector.OnGestureListener#onDown onDown()},
+as {@link android.view.GestureDetector.SimpleOnGestureListener} does by default,
+the system assumes that you want to ignore the rest of the gesture, and the other methods of
+{@link android.view.GestureDetector.OnGestureListener} never get called.
+This has the potential to cause unexpected problems in your app.
+The only time you should return {@code false} from
+{@link android.view.GestureDetector.OnGestureListener#onDown onDown()}
is if you truly want to ignore an entire gesture. </p>
-<pre>public class MainActivity extends Activity {
-
- private GestureDetectorCompat mDetector;
+<pre>public class MainActivity extends Activity {
+
+ private GestureDetectorCompat mDetector;
&#64;Override
public void onCreate(Bundle savedInstanceState) {
@@ -319,23 +319,23 @@ is if you truly want to ignore an entire gesture. </p>
mDetector = new GestureDetectorCompat(this, new MyGestureListener());
}
- &#64;Override
- public boolean onTouchEvent(MotionEvent event){
+ &#64;Override
+ public boolean onTouchEvent(MotionEvent event){
this.mDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
-
+
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
- private static final String DEBUG_TAG = "Gestures";
-
+ private static final String DEBUG_TAG = "Gestures";
+
&#64;Override
- public boolean onDown(MotionEvent event) {
- Log.d(DEBUG_TAG,"onDown: " + event.toString());
+ public boolean onDown(MotionEvent event) {
+ Log.d(DEBUG_TAG,"onDown: " + event.toString());
return true;
}
&#64;Override
- public boolean onFling(MotionEvent event1, MotionEvent event2,
+ public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
Log.d(DEBUG_TAG, "onFling: " + event1.toString()+event2.toString());
return true;
diff --git a/docs/html/training/gestures/index.jd b/docs/html/training/gestures/index.jd
index 260cfff33073..fad1afafbbe9 100644
--- a/docs/html/training/gestures/index.jd
+++ b/docs/html/training/gestures/index.jd
@@ -60,7 +60,7 @@ for <a href="{@docRoot}design/style/touch-feedback.html">Touch Feedback</a>. </
<strong><a href="detector.html">Detecting Common Gestures</a></strong>
</dt>
<dd>
- Learn how to detect basic touch gestures such as scrolling, flinging, and double-tapping, using
+ Learn how to detect basic touch gestures such as scrolling, flinging, and double-tapping, using
{@link android.view.GestureDetector}.
</dd>
@@ -84,7 +84,7 @@ touch event. </dd>
</dt>
<dd>
Learn how to detect multi-pointer (finger) gestures.
- </dd>
+ </dd>
<dt>
<strong><a href="scale.html">Dragging and Scaling</a></strong>
</dt>
diff --git a/docs/html/training/gestures/movement.jd b/docs/html/training/gestures/movement.jd
index ed4928eb3041..0a611b3d6daf 100644
--- a/docs/html/training/gestures/movement.jd
+++ b/docs/html/training/gestures/movement.jd
@@ -55,13 +55,13 @@ detecting touch events is often based more on movement than on simple contact.
To help apps distinguish between movement-based gestures (such as a swipe) and
non-movement gestures (such as a single tap), Android includes the notion of
"touch slop." Touch slop refers to the distance in pixels a user's touch can wander
-before the gesture is interpreted as a movement-based gesture. For more discussion of this
+before the gesture is interpreted as a movement-based gesture. For more discussion of this
topic, see <a href="viewgroup.html#vc">Managing Touch Events in a ViewGroup</a>.</p>
<p>There are several different ways to track movement in a gesture, depending on
-the needs of your application. For example:</p>
+the needs of your application. For example:</p>
<ul>
@@ -89,8 +89,8 @@ details.</li>
<p> You could have a movement-based gesture that is simply based on the distance and/or direction the pointer traveled. But velocity often is a
determining factor in tracking a gesture's characteristics or even deciding
whether the gesture occurred. To make velocity calculation easier, Android
-provides the {@link android.view.VelocityTracker} class and the
-{@link android.support.v4.view.VelocityTrackerCompat} class in the
+provides the {@link android.view.VelocityTracker} class and the
+{@link android.support.v4.view.VelocityTrackerCompat} class in the
<a href="{@docRoot}tools/support-library/index.html">Support Library</a>.
{@link
android.view.VelocityTracker} helps you track the velocity of touch events. This
@@ -98,7 +98,7 @@ is useful for gestures in which velocity is part of the criteria for the
gesture, such as a fling.</p>
-<p>Here is a simple example that illustrates the purpose of the methods in the
+<p>Here is a simple example that illustrates the purpose of the methods in the
{@link android.view.VelocityTracker} API:</p>
<pre>public class MainActivity extends Activity {
@@ -126,16 +126,16 @@ gesture, such as a fling.</p>
break;
case MotionEvent.ACTION_MOVE:
mVelocityTracker.addMovement(event);
- // When you want to determine the velocity, call
- // computeCurrentVelocity(). Then call getXVelocity()
- // and getYVelocity() to retrieve the velocity for each pointer ID.
+ // When you want to determine the velocity, call
+ // computeCurrentVelocity(). Then call getXVelocity()
+ // and getYVelocity() to retrieve the velocity for each pointer ID.
mVelocityTracker.computeCurrentVelocity(1000);
// Log velocity of pixels per second
// Best practice to use VelocityTrackerCompat where possible.
- Log.d("", "X velocity: " +
- VelocityTrackerCompat.getXVelocity(mVelocityTracker,
+ Log.d("", "X velocity: " +
+ VelocityTrackerCompat.getXVelocity(mVelocityTracker,
pointerId));
- Log.d("", "Y velocity: " +
+ Log.d("", "Y velocity: " +
VelocityTrackerCompat.getYVelocity(mVelocityTracker,
pointerId));
break;
@@ -150,8 +150,8 @@ gesture, such as a fling.</p>
}
</pre>
-<p class="note"><strong>Note:</strong> Note that you should calculate velocity after an
-{@link android.view.MotionEvent#ACTION_MOVE} event,
-not after {@link android.view.MotionEvent#ACTION_UP}. After an {@link android.view.MotionEvent#ACTION_UP},
+<p class="note"><strong>Note:</strong> Note that you should calculate velocity after an
+{@link android.view.MotionEvent#ACTION_MOVE} event,
+not after {@link android.view.MotionEvent#ACTION_UP}. After an {@link android.view.MotionEvent#ACTION_UP},
the X and Y velocities will be 0.
</p>
diff --git a/docs/html/training/gestures/multi.jd b/docs/html/training/gestures/multi.jd
index 58404827682d..21860fcaeb2c 100644
--- a/docs/html/training/gestures/multi.jd
+++ b/docs/html/training/gestures/multi.jd
@@ -47,15 +47,15 @@ multiple pointers.</p>
<h2 id="track">Track Multiple Pointers</h2>
-<p>When multiple pointers touch the screen at the same time, the system generates the
+<p>When multiple pointers touch the screen at the same time, the system generates the
following touch events:</p>
<ul>
- <li>{@link android.view.MotionEvent#ACTION_DOWN}&mdash;For the first pointer that
-touches the screen. This starts the gesture. The pointer data for this pointer is
+ <li>{@link android.view.MotionEvent#ACTION_DOWN}&mdash;For the first pointer that
+touches the screen. This starts the gesture. The pointer data for this pointer is
always at index 0 in the {@link android.view.MotionEvent}.</li>
- <li>{@link android.support.v4.view.MotionEventCompat#ACTION_POINTER_DOWN}&mdash;For
-extra pointers that enter the screen beyond the first. The pointer data for this
+ <li>{@link android.support.v4.view.MotionEventCompat#ACTION_POINTER_DOWN}&mdash;For
+extra pointers that enter the screen beyond the first. The pointer data for this
pointer is at the index returned by {@link android.support.v4.view.MotionEventCompat#getActionIndex getActionIndex()}.</li>
<li>{@link android.view.MotionEvent#ACTION_MOVE}&mdash;A change has happened during a press gesture.</li>
<li>{@link android.support.v4.view.MotionEventCompat#ACTION_POINTER_UP}&mdash;Sent when a non-primary pointer goes up.</li>
@@ -66,20 +66,20 @@ pointer is at the index returned by {@link android.support.v4.view.MotionEventCo
android.view.MotionEvent} via each pointer's index and ID:</p>
<ul>
-<li><strong>Index</strong>: A {@link android.view.MotionEvent} effectively
-stores information about each pointer in an array. The index of a pointer is its position
+<li><strong>Index</strong>: A {@link android.view.MotionEvent} effectively
+stores information about each pointer in an array. The index of a pointer is its position
within this array. Most of the {@link
android.view.MotionEvent} methods you use to interact with pointers take the
pointer index as a parameter, not the pointer ID. </li>
-
-
+
+
<li><strong>ID</strong>: Each pointer also has an ID mapping that stays
-persistent across touch events to allow tracking an individual pointer across
+persistent across touch events to allow tracking an individual pointer across
the entire gesture.</li>
-
+
</ul>
-<p>The order in which individual pointers appear within a motion event is
+<p>The order in which individual pointers appear within a motion event is
undefined. Thus the index of a pointer can change from one event to the
next, but the pointer ID of a pointer is guaranteed to remain constant as long
as the pointer remains active. Use the {@link
@@ -91,7 +91,7 @@ the pointer index for a given pointer ID in that motion event. For example:</p>
<pre>private int mActivePointerId;
-
+
public boolean onTouchEvent(MotionEvent event) {
....
// Get the pointer ID
@@ -99,7 +99,7 @@ public boolean onTouchEvent(MotionEvent event) {
// ... Many touch events later...
- // Use the pointer ID to find the index of the active pointer
+ // Use the pointer ID to find the index of the active pointer
// and fetch its position
int pointerIndex = event.findPointerIndex(mActivePointerId);
// Get the pointer's current position
@@ -109,25 +109,25 @@ public boolean onTouchEvent(MotionEvent event) {
<h2 id="action">Get a MotionEvent's Action</h2>
-<p>You should always use the method
-{@link android.view.MotionEvent#getActionMasked getActionMasked()} (or better yet, the compatability version
-{@link android.support.v4.view.MotionEventCompat#getActionMasked MotionEventCompat.getActionMasked()}) to retrieve
+<p>You should always use the method
+{@link android.view.MotionEvent#getActionMasked getActionMasked()} (or better yet, the compatability version
+{@link android.support.v4.view.MotionEventCompat#getActionMasked MotionEventCompat.getActionMasked()}) to retrieve
the action of a
-{@link android.view.MotionEvent}. Unlike the older {@link android.view.MotionEvent#getAction getAction()}
-method, {@link android.support.v4.view.MotionEventCompat#getActionMasked getActionMasked()} is designed to work with
-multiple pointers. It returns the masked action
-being performed, without including the pointer index bits. You can then use
-{@link android.support.v4.view.MotionEventCompat#getActionIndex getActionIndex()} to return the index of
+{@link android.view.MotionEvent}. Unlike the older {@link android.view.MotionEvent#getAction getAction()}
+method, {@link android.support.v4.view.MotionEventCompat#getActionMasked getActionMasked()} is designed to work with
+multiple pointers. It returns the masked action
+being performed, without including the pointer index bits. You can then use
+{@link android.support.v4.view.MotionEventCompat#getActionIndex getActionIndex()} to return the index of
the pointer associated with the action. This is illustrated in the snippet below.</p>
-<p class="note"><strong>Note:</strong> This example uses the
+<p class="note"><strong>Note:</strong> This example uses the
{@link android.support.v4.view.MotionEventCompat}
-class. This class is in the
+class. This class is in the
<a href="{@docRoot}tools/support-library/index.html">Support Library</a>. You should use
{@link android.support.v4.view.MotionEventCompat} to provide the best support for a wide range of
-platforms. Note that {@link android.support.v4.view.MotionEventCompat} is <em>not</em> a
-replacement for the {@link android.view.MotionEvent} class. Rather, it provides static utility
-methods to which you pass your {@link android.view.MotionEvent} object in order to receive
+platforms. Note that {@link android.support.v4.view.MotionEventCompat} is <em>not</em> a
+replacement for the {@link android.view.MotionEvent} class. Rather, it provides static utility
+methods to which you pass your {@link android.view.MotionEvent} object in order to receive
the desired action associated with that event.</p>
<pre>int action = MotionEventCompat.getActionMasked(event);
@@ -137,17 +137,17 @@ int xPos = -1;
int yPos = -1;
Log.d(DEBUG_TAG,"The action is " + actionToString(action));
-
+
if (event.getPointerCount() > 1) {
- Log.d(DEBUG_TAG,"Multitouch event");
- // The coordinates of the current screen contact, relative to
- // the responding View or Activity.
+ Log.d(DEBUG_TAG,"Multitouch event");
+ // The coordinates of the current screen contact, relative to
+ // the responding View or Activity.
xPos = (int)MotionEventCompat.getX(event, index);
yPos = (int)MotionEventCompat.getY(event, index);
} else {
// Single touch event
- Log.d(DEBUG_TAG,"Single touch event");
+ Log.d(DEBUG_TAG,"Single touch event");
xPos = (int)MotionEventCompat.getX(event, index);
yPos = (int)MotionEventCompat.getY(event, index);
}
@@ -156,7 +156,7 @@ if (event.getPointerCount() > 1) {
// Given an action int, returns a string description
public static String actionToString(int action) {
switch (action) {
-
+
case MotionEvent.ACTION_DOWN: return "Down";
case MotionEvent.ACTION_MOVE: return "Move";
case MotionEvent.ACTION_POINTER_DOWN: return "Pointer Down";
@@ -168,7 +168,7 @@ public static String actionToString(int action) {
return "";
}</pre>
-
+
<p>For more discussion of multi-touch and some examples, see the lesson <a href="scale.html">Dragging and Scaling</a>.
diff --git a/docs/html/training/gestures/scale.jd b/docs/html/training/gestures/scale.jd
index f2e4eb82d122..d4aa91651db7 100644
--- a/docs/html/training/gestures/scale.jd
+++ b/docs/html/training/gestures/scale.jd
@@ -44,13 +44,13 @@ class="button">Download the sample</a>
<p>This lesson describes how to use touch gestures to drag and scale on-screen
objects, using {@link android.view.View#onTouchEvent onTouchEvent()} to intercept
-touch events.
+touch events.
</p>
<h2 id="drag">Drag an Object</h2>
-<p class="note">If you are targeting Android 3.0 or higher, you can use the built-in drag-and-drop event
-listeners with {@link android.view.View.OnDragListener}, as described in
+<p class="note">If you are targeting Android 3.0 or higher, you can use the built-in drag-and-drop event
+listeners with {@link android.view.View.OnDragListener}, as described in
<a href="{@docRoot}guide/topics/ui/drag-drop.html">Drag and Drop</a>.
<p>A common operation for a touch gesture is to use it to drag an object across
@@ -66,14 +66,14 @@ the touch screen and lifts the first finger. If your app is just tracking
individual pointers, it will regard the second pointer as the default and move
the image to that location.</li>
-<li>To prevent this from happening, your app needs to distinguish between the
-original pointer and any follow-on pointers. To do this, it tracks the
-{@link android.view.MotionEvent#ACTION_POINTER_DOWN} and
-{@link android.view.MotionEvent#ACTION_POINTER_UP} events described in
-<a href="multi.html">Handling Multi-Touch Gestures</a>.
-{@link android.view.MotionEvent#ACTION_POINTER_DOWN} and
-{@link android.view.MotionEvent#ACTION_POINTER_UP} are
-passed to the {@link android.view.View#onTouchEvent onTouchEvent()} callback
+<li>To prevent this from happening, your app needs to distinguish between the
+original pointer and any follow-on pointers. To do this, it tracks the
+{@link android.view.MotionEvent#ACTION_POINTER_DOWN} and
+{@link android.view.MotionEvent#ACTION_POINTER_UP} events described in
+<a href="multi.html">Handling Multi-Touch Gestures</a>.
+{@link android.view.MotionEvent#ACTION_POINTER_DOWN} and
+{@link android.view.MotionEvent#ACTION_POINTER_UP} are
+passed to the {@link android.view.View#onTouchEvent onTouchEvent()} callback
whenever a secondary pointer goes down or up. </li>
@@ -90,16 +90,16 @@ calculate the distance to move using data from the correct pointer.</li>
<p>The following snippet enables a user to drag an object around on the screen. It records the initial
position of the active pointer, calculates the distance the pointer traveled, and moves the object to the
new position. It correctly manages the possibility of additional pointers, as described
-above.</p>
+above.</p>
-<p>Notice that the snippet uses the {@link android.view.MotionEvent#getActionMasked getActionMasked()} method.
-You should always use this method (or better yet, the compatability version
-{@link android.support.v4.view.MotionEventCompat#getActionMasked MotionEventCompat.getActionMasked()})
+<p>Notice that the snippet uses the {@link android.view.MotionEvent#getActionMasked getActionMasked()} method.
+You should always use this method (or better yet, the compatability version
+{@link android.support.v4.view.MotionEventCompat#getActionMasked MotionEventCompat.getActionMasked()})
to retrieve the action of a
-{@link android.view.MotionEvent}. Unlike the older
-{@link android.view.MotionEvent#getAction getAction()}
-method, {@link android.support.v4.view.MotionEventCompat#getActionMasked getActionMasked()}
-is designed to work with multiple pointers. It returns the masked action
+{@link android.view.MotionEvent}. Unlike the older
+{@link android.view.MotionEvent#getAction getAction()}
+method, {@link android.support.v4.view.MotionEventCompat#getActionMasked getActionMasked()}
+is designed to work with multiple pointers. It returns the masked action
being performed, without including the pointer index bits.</p>
<pre>// The ‘active pointer’ is the one currently moving our object.
@@ -109,15 +109,15 @@ private int mActivePointerId = INVALID_POINTER_ID;
public boolean onTouchEvent(MotionEvent ev) {
// Let the ScaleGestureDetector inspect all events.
mScaleDetector.onTouchEvent(ev);
-
- final int action = MotionEventCompat.getActionMasked(ev);
-
- switch (action) {
+
+ final int action = MotionEventCompat.getActionMasked(ev);
+
+ switch (action) {
case MotionEvent.ACTION_DOWN: {
- final int pointerIndex = MotionEventCompat.getActionIndex(ev);
- final float x = MotionEventCompat.getX(ev, pointerIndex);
- final float y = MotionEventCompat.getY(ev, pointerIndex);
-
+ final int pointerIndex = MotionEventCompat.getActionIndex(ev);
+ final float x = MotionEventCompat.getX(ev, pointerIndex);
+ final float y = MotionEventCompat.getY(ev, pointerIndex);
+
// Remember where we started (for dragging)
mLastTouchX = x;
mLastTouchY = y;
@@ -125,15 +125,15 @@ public boolean onTouchEvent(MotionEvent ev) {
mActivePointerId = MotionEventCompat.getPointerId(ev, 0);
break;
}
-
+
case MotionEvent.ACTION_MOVE: {
// Find the index of the active pointer and fetch its position
- final int pointerIndex =
- MotionEventCompat.findPointerIndex(ev, mActivePointerId);
-
+ final int pointerIndex =
+ MotionEventCompat.findPointerIndex(ev, mActivePointerId);
+
final float x = MotionEventCompat.getX(ev, pointerIndex);
final float y = MotionEventCompat.getY(ev, pointerIndex);
-
+
// Calculate the distance moved
final float dx = x - mLastTouchX;
final float dy = y - mLastTouchY;
@@ -149,62 +149,62 @@ public boolean onTouchEvent(MotionEvent ev) {
break;
}
-
+
case MotionEvent.ACTION_UP: {
mActivePointerId = INVALID_POINTER_ID;
break;
}
-
+
case MotionEvent.ACTION_CANCEL: {
mActivePointerId = INVALID_POINTER_ID;
break;
}
-
+
case MotionEvent.ACTION_POINTER_UP: {
-
- final int pointerIndex = MotionEventCompat.getActionIndex(ev);
- final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);
+
+ final int pointerIndex = MotionEventCompat.getActionIndex(ev);
+ final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);
if (pointerId == mActivePointerId) {
// This was our active pointer going up. Choose a new
// active pointer and adjust accordingly.
final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
- mLastTouchX = MotionEventCompat.getX(ev, newPointerIndex);
- mLastTouchY = MotionEventCompat.getY(ev, newPointerIndex);
+ mLastTouchX = MotionEventCompat.getX(ev, newPointerIndex);
+ mLastTouchY = MotionEventCompat.getY(ev, newPointerIndex);
mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);
}
break;
}
- }
+ }
return true;
}</pre>
<h2 id="pan">Drag to Pan</h2>
-<p>The previous section showed an example of dragging an object around the screen. Another
-common scenario is <em>panning</em>, which is when a user's dragging motion causes scrolling
-in both the x and y axes. The above snippet directly intercepted the {@link android.view.MotionEvent}
-actions to implement dragging. The snippet in this section takes advantage of the platform's
-built-in support for common gestures. It overrides
-{@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} in
+<p>The previous section showed an example of dragging an object around the screen. Another
+common scenario is <em>panning</em>, which is when a user's dragging motion causes scrolling
+in both the x and y axes. The above snippet directly intercepted the {@link android.view.MotionEvent}
+actions to implement dragging. The snippet in this section takes advantage of the platform's
+built-in support for common gestures. It overrides
+{@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} in
{@link android.view.GestureDetector.SimpleOnGestureListener}.</p>
-<p>To provide a little more context, {@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()}
-is called when a user is dragging his finger to pan the content.
-{@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} is only called when
-a finger is down; as soon as the finger is lifted from the screen, the gesture either ends,
-or a fling gesture is started (if the finger was moving with some speed just before it was lifted).
+<p>To provide a little more context, {@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()}
+is called when a user is dragging his finger to pan the content.
+{@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} is only called when
+a finger is down; as soon as the finger is lifted from the screen, the gesture either ends,
+or a fling gesture is started (if the finger was moving with some speed just before it was lifted).
For more discussion of scrolling vs. flinging, see <a href="scroll.html">Animating a Scroll Gesture</a>.</p>
<p>Here is the snippet for {@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()}:
-<pre>// The current viewport. This rectangle represents the currently visible
-// chart domain and range.
-private RectF mCurrentViewport =
+<pre>// The current viewport. This rectangle represents the currently visible
+// chart domain and range.
+private RectF mCurrentViewport =
new RectF(AXIS_X_MIN, AXIS_Y_MIN, AXIS_X_MAX, AXIS_Y_MAX);
-// The current destination rectangle (in pixel coordinates) into which the
+// The current destination rectangle (in pixel coordinates) into which the
// chart data should be drawn.
private Rect mContentRect;
@@ -213,18 +213,18 @@ private final GestureDetector.SimpleOnGestureListener mGestureListener
...
&#64;Override
-public boolean onScroll(MotionEvent e1, MotionEvent e2,
+public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
// Scrolling uses math based on the viewport (as opposed to math using pixels).
-
+
// Pixel offset is the offset in screen pixels, while viewport offset is the
- // offset within the current viewport.
- float viewportOffsetX = distanceX * mCurrentViewport.width()
+ // offset within the current viewport.
+ float viewportOffsetX = distanceX * mCurrentViewport.width()
/ mContentRect.width();
- float viewportOffsetY = -distanceY * mCurrentViewport.height()
+ float viewportOffsetY = -distanceY * mCurrentViewport.height()
/ mContentRect.height();
...
- // Updates the viewport, refreshes the display.
+ // Updates the viewport, refreshes the display.
setViewportBottomLeft(
mCurrentViewport.left + viewportOffsetX,
mCurrentViewport.bottom + viewportOffsetY);
@@ -232,20 +232,20 @@ public boolean onScroll(MotionEvent e1, MotionEvent e2,
return true;
}</pre>
-<p>The implementation of {@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()}
+<p>The implementation of {@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()}
scrolls the viewport in response to the touch gesture:</p>
<pre>
/**
* Sets the current viewport (defined by mCurrentViewport) to the given
- * X and Y positions. Note that the Y value represents the topmost pixel position,
+ * X and Y positions. Note that the Y value represents the topmost pixel position,
* and thus the bottom of the mCurrentViewport rectangle.
*/
private void setViewportBottomLeft(float x, float y) {
/*
- * Constrains within the scroll range. The scroll range is simply the viewport
- * extremes (AXIS_X_MAX, etc.) minus the viewport size. For example, if the
- * extremes were 0 and 10, and the viewport size was 2, the scroll range would
+ * Constrains within the scroll range. The scroll range is simply the viewport
+ * extremes (AXIS_X_MAX, etc.) minus the viewport size. For example, if the
+ * extremes were 0 and 10, and the viewport size was 2, the scroll range would
* be 0 to 8.
*/
@@ -270,11 +270,11 @@ provides {@link android.view.ScaleGestureDetector}. {@link
android.view.GestureDetector} and {@link android.view.ScaleGestureDetector} can
be used together when you want a view to recognize additional gestures.</p>
-<p>To report detected gesture events, gesture detectors use listener objects
-passed to their constructors. {@link android.view.ScaleGestureDetector} uses
-{@link android.view.ScaleGestureDetector.OnScaleGestureListener}.
-Android provides
-{@link android.view.ScaleGestureDetector.SimpleOnScaleGestureListener}
+<p>To report detected gesture events, gesture detectors use listener objects
+passed to their constructors. {@link android.view.ScaleGestureDetector} uses
+{@link android.view.ScaleGestureDetector.OnScaleGestureListener}.
+Android provides
+{@link android.view.ScaleGestureDetector.SimpleOnScaleGestureListener}
as a helper class that you can extend if you don’t care about all of the reported events.</p>
@@ -311,7 +311,7 @@ public void onDraw(Canvas canvas) {
canvas.restore();
}
-private class ScaleListener
+private class ScaleListener
extends ScaleGestureDetector.SimpleOnScaleGestureListener {
&#64;Override
public boolean onScale(ScaleGestureDetector detector) {
@@ -329,14 +329,14 @@ private class ScaleListener
<h3>More complex scaling example</h3>
-<p>Here is a more complex example from the {@code InteractiveChart} sample provided with this class.
+<p>Here is a more complex example from the {@code InteractiveChart} sample provided with this class.
The {@code InteractiveChart} sample supports both scrolling (panning) and scaling with multiple fingers,
-using the {@link android.view.ScaleGestureDetector} "span"
-({@link android.view.ScaleGestureDetector#getCurrentSpanX getCurrentSpanX/Y}) and
+using the {@link android.view.ScaleGestureDetector} "span"
+({@link android.view.ScaleGestureDetector#getCurrentSpanX getCurrentSpanX/Y}) and
"focus" ({@link android.view.ScaleGestureDetector#getFocusX getFocusX/Y}) features:</p>
<pre>&#64;Override
-private RectF mCurrentViewport =
+private RectF mCurrentViewport =
new RectF(AXIS_X_MIN, AXIS_Y_MIN, AXIS_X_MAX, AXIS_Y_MAX);
private Rect mContentRect;
private ScaleGestureDetector mScaleGestureDetector;
@@ -399,7 +399,7 @@ private final ScaleGestureDetector.OnScaleGestureListener mScaleGestureListener
0,
0);
mCurrentViewport.right = mCurrentViewport.left + newWidth;
- mCurrentViewport.bottom = mCurrentViewport.top + newHeight;
+ mCurrentViewport.bottom = mCurrentViewport.top + newHeight;
...
// Invalidates the View to update the display.
ViewCompat.postInvalidateOnAnimation(InteractiveLineGraphView.this);
diff --git a/docs/html/training/gestures/scroll.jd b/docs/html/training/gestures/scroll.jd
index 4b82d6966e5c..374ceff55f5d 100644
--- a/docs/html/training/gestures/scroll.jd
+++ b/docs/html/training/gestures/scroll.jd
@@ -41,12 +41,12 @@ class="button">Download the sample</a>
</div>
</div>
-<p>In Android, scrolling is typically achieved by using the
+<p>In Android, scrolling is typically achieved by using the
{@link android.widget.ScrollView}
-class. Any standard layout that might extend beyond the bounds of its container should be
-nested in a {@link android.widget.ScrollView} to provide a scrollable view that's
-managed by the framework. Implementing a custom scroller should only be
-necessary for special scenarios. This lesson describes such a scenario: displaying
+class. Any standard layout that might extend beyond the bounds of its container should be
+nested in a {@link android.widget.ScrollView} to provide a scrollable view that's
+managed by the framework. Implementing a custom scroller should only be
+necessary for special scenarios. This lesson describes such a scenario: displaying
a scrolling effect in response to touch gestures using <em>scrollers</em>.
@@ -54,8 +54,8 @@ a scrolling effect in response to touch gestures using <em>scrollers</em>.
android.widget.OverScroller}) to collect the data you need to produce a
scrolling animation in response to a touch event. They are similar, but
{@link android.widget.OverScroller}
-includes methods for indicating to users that they've reached the content edges
-after a pan or fling gesture. The {@code InteractiveChart} sample
+includes methods for indicating to users that they've reached the content edges
+after a pan or fling gesture. The {@code InteractiveChart} sample
uses the {@link android.widget.EdgeEffect} class
(actually the {@link android.support.v4.widget.EdgeEffectCompat} class)
to display a "glow" effect when users reach the content edges.</p>
@@ -68,7 +68,7 @@ compatibility with older devices.
<br />
Also note that you generally only need to use scrollers
when implementing scrolling yourself. {@link android.widget.ScrollView} and
-{@link android.widget.HorizontalScrollView} do all of this for you if you nest your
+{@link android.widget.HorizontalScrollView} do all of this for you if you nest your
layout within them.
</p>
@@ -86,71 +86,71 @@ scrolling animation look smooth.</p>
<p>"Scrolling" is a word that can take on different meanings in Android, depending on the context.</p>
-<p><strong>Scrolling</strong> is the general process of moving the viewport (that is, the 'window'
-of content you're looking at). When scrolling is in both the x and y axes, it's called
-<em>panning</em>. The sample application provided with this class, {@code InteractiveChart}, illustrates
+<p><strong>Scrolling</strong> is the general process of moving the viewport (that is, the 'window'
+of content you're looking at). When scrolling is in both the x and y axes, it's called
+<em>panning</em>. The sample application provided with this class, {@code InteractiveChart}, illustrates
two different types of scrolling, dragging and flinging:</p>
<ul>
- <li><strong>Dragging</strong> is the type of scrolling that occurs when a user drags her
-finger across the touch screen. Simple dragging is often implemented by overriding
-{@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} in
-{@link android.view.GestureDetector.OnGestureListener}. For more discussion of dragging, see
+ <li><strong>Dragging</strong> is the type of scrolling that occurs when a user drags her
+finger across the touch screen. Simple dragging is often implemented by overriding
+{@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} in
+{@link android.view.GestureDetector.OnGestureListener}. For more discussion of dragging, see
<a href="scale.html">Dragging and Scaling</a>.</li>
- <li><strong>Flinging</strong> is the type of scrolling that occurs when a user
-drags and lifts her finger quickly. After the user lifts her finger, you generally
-want to keep scrolling (moving the viewport), but decelerate until the viewport stops moving.
-Flinging can be implemented by overriding
-{@link android.view.GestureDetector.OnGestureListener#onFling onFling()}
-in {@link android.view.GestureDetector.OnGestureListener}, and by using
-a scroller object. This is the use
+ <li><strong>Flinging</strong> is the type of scrolling that occurs when a user
+drags and lifts her finger quickly. After the user lifts her finger, you generally
+want to keep scrolling (moving the viewport), but decelerate until the viewport stops moving.
+Flinging can be implemented by overriding
+{@link android.view.GestureDetector.OnGestureListener#onFling onFling()}
+in {@link android.view.GestureDetector.OnGestureListener}, and by using
+a scroller object. This is the use
case that is the topic of this lesson.</li>
</ul>
-<p>It's common to use scroller objects
+<p>It's common to use scroller objects
in conjunction with a fling gesture, but they
can be used in pretty much any context where you want the UI to display
-scrolling in response to a touch event. For example, you could override
-{@link android.view.View#onTouchEvent onTouchEvent()} to process touch
-events directly, and produce a scrolling effect or a "snapping to page" animation
+scrolling in response to a touch event. For example, you could override
+{@link android.view.View#onTouchEvent onTouchEvent()} to process touch
+events directly, and produce a scrolling effect or a "snapping to page" animation
in response to those touch events.</p>
-<h2 id="#scroll">Implement Touch-Based Scrolling</h2>
+<h2 id="#scroll">Implement Touch-Based Scrolling</h2>
<p>This section describes how to use a scroller.
-The snippet shown below comes from the {@code InteractiveChart} sample
+The snippet shown below comes from the {@code InteractiveChart} sample
provided with this class.
-It uses a
-{@link android.view.GestureDetector}, and overrides the
-{@link android.view.GestureDetector.SimpleOnGestureListener} method
+It uses a
+{@link android.view.GestureDetector}, and overrides the
+{@link android.view.GestureDetector.SimpleOnGestureListener} method
{@link android.view.GestureDetector.OnGestureListener#onFling onFling()}.
It uses {@link android.widget.OverScroller} to track the fling gesture.
-If the user reaches the content edges
+If the user reaches the content edges
after the fling gesture, the app displays a "glow" effect.
</p>
-<p class="note"><strong>Note:</strong> The {@code InteractiveChart} sample app displays a
-chart that you can zoom, pan, scroll, and so on. In the following snippet,
-{@code mContentRect} represents the rectangle coordinates within the view that the chart
-will be drawn into. At any given time, a subset of the total chart domain and range are drawn
-into this rectangular area.
-{@code mCurrentViewport} represents the portion of the chart that is currently
-visible in the screen. Because pixel offsets are generally treated as integers,
-{@code mContentRect} is of the type {@link android.graphics.Rect}. Because the
-graph domain and range are decimal/float values, {@code mCurrentViewport} is of
+<p class="note"><strong>Note:</strong> The {@code InteractiveChart} sample app displays a
+chart that you can zoom, pan, scroll, and so on. In the following snippet,
+{@code mContentRect} represents the rectangle coordinates within the view that the chart
+will be drawn into. At any given time, a subset of the total chart domain and range are drawn
+into this rectangular area.
+{@code mCurrentViewport} represents the portion of the chart that is currently
+visible in the screen. Because pixel offsets are generally treated as integers,
+{@code mContentRect} is of the type {@link android.graphics.Rect}. Because the
+graph domain and range are decimal/float values, {@code mCurrentViewport} is of
the type {@link android.graphics.RectF}.</p>
-<p>The first part of the snippet shows the implementation of
+<p>The first part of the snippet shows the implementation of
{@link android.view.GestureDetector.OnGestureListener#onFling onFling()}:</p>
-<pre>// The current viewport. This rectangle represents the currently visible
+<pre>// The current viewport. This rectangle represents the currently visible
// chart domain and range. The viewport is the part of the app that the
// user manipulates via touch gestures.
-private RectF mCurrentViewport =
+private RectF mCurrentViewport =
new RectF(AXIS_X_MIN, AXIS_Y_MIN, AXIS_X_MAX, AXIS_Y_MAX);
-// The current destination rectangle (in pixel coordinates) into which the
+// The current destination rectangle (in pixel coordinates) into which the
// chart data should be drawn.
private Rect mContentRect;
@@ -171,7 +171,7 @@ private final GestureDetector.SimpleOnGestureListener mGestureListener
}
...
&#64;Override
- public boolean onFling(MotionEvent e1, MotionEvent e2,
+ public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
fling((int) -velocityX, (int) -velocityY);
return true;
@@ -184,10 +184,10 @@ private void fling(int velocityX, int velocityY) {
// Flings use math in pixels (as opposed to math based on the viewport).
Point surfaceSize = computeScrollSurfaceSize();
mScrollerStartViewport.set(mCurrentViewport);
- int startX = (int) (surfaceSize.x * (mScrollerStartViewport.left -
+ int startX = (int) (surfaceSize.x * (mScrollerStartViewport.left -
AXIS_X_MIN) / (
AXIS_X_MAX - AXIS_X_MIN));
- int startY = (int) (surfaceSize.y * (AXIS_Y_MAX -
+ int startY = (int) (surfaceSize.y * (AXIS_Y_MAX -
mScrollerStartViewport.bottom) / (
AXIS_Y_MAX - AXIS_Y_MIN));
// Before flinging, aborts the current animation.
@@ -200,10 +200,10 @@ private void fling(int velocityX, int velocityY) {
velocityX,
velocityY,
/*
- * Minimum and maximum scroll positions. The minimum scroll
- * position is generally zero and the maximum scroll position
- * is generally the content size less the screen size. So if the
- * content width is 1000 pixels and the screen width is 200
+ * Minimum and maximum scroll positions. The minimum scroll
+ * position is generally zero and the maximum scroll position
+ * is generally the content size less the screen size. So if the
+ * content width is 1000 pixels and the screen width is 200
* pixels, the maximum scroll offset should be 800 pixels.
*/
0, surfaceSize.x - mContentRect.width(),
@@ -216,21 +216,21 @@ private void fling(int velocityX, int velocityY) {
ViewCompat.postInvalidateOnAnimation(this);
}</pre>
-<p>When {@link android.view.GestureDetector.OnGestureListener#onFling onFling()} calls
-{@link android.support.v4.view.ViewCompat#postInvalidateOnAnimation postInvalidateOnAnimation()},
-it triggers
-{@link android.view.View#computeScroll computeScroll()} to update the values for x and y.
+<p>When {@link android.view.GestureDetector.OnGestureListener#onFling onFling()} calls
+{@link android.support.v4.view.ViewCompat#postInvalidateOnAnimation postInvalidateOnAnimation()},
+it triggers
+{@link android.view.View#computeScroll computeScroll()} to update the values for x and y.
This is typically be done when a view child is animating a scroll using a scroller object, as in this example. </p>
-<p>Most views pass the scroller object's x and y position directly to
-{@link android.view.View#scrollTo scrollTo()}.
-The following implementation of {@link android.view.View#computeScroll computeScroll()}
-takes a different approach&mdash;it calls
-{@link android.widget.OverScroller#computeScrollOffset computeScrollOffset()} to get the current
-location of x and y. When the criteria for displaying an overscroll "glow" edge effect are met
-(the display is zoomed in, x or y is out of bounds, and the app isn't already showing an overscroll),
-the code sets up the overscroll glow effect and calls
-{@link android.support.v4.view.ViewCompat#postInvalidateOnAnimation postInvalidateOnAnimation()}
+<p>Most views pass the scroller object's x and y position directly to
+{@link android.view.View#scrollTo scrollTo()}.
+The following implementation of {@link android.view.View#computeScroll computeScroll()}
+takes a different approach&mdash;it calls
+{@link android.widget.OverScroller#computeScrollOffset computeScrollOffset()} to get the current
+location of x and y. When the criteria for displaying an overscroll "glow" edge effect are met
+(the display is zoomed in, x or y is out of bounds, and the app isn't already showing an overscroll),
+the code sets up the overscroll glow effect and calls
+{@link android.support.v4.view.ViewCompat#postInvalidateOnAnimation postInvalidateOnAnimation()}
to trigger an invalidate on the view:</p>
<pre>// Edge effect / overscroll tracking objects.
@@ -250,7 +250,7 @@ public void computeScroll() {
boolean needsInvalidate = false;
- // The scroller isn't finished, meaning a fling or programmatic pan
+ // The scroller isn't finished, meaning a fling or programmatic pan
// operation is currently active.
if (mScroller.computeScrollOffset()) {
Point surfaceSize = computeScrollSurfaceSize();
@@ -262,7 +262,7 @@ public void computeScroll() {
boolean canScrollY = (mCurrentViewport.top > AXIS_Y_MIN
|| mCurrentViewport.bottom < AXIS_Y_MAX);
- /*
+ /*
* If you are zoomed in and currX or currY is
* outside of bounds and you're not already
* showing overscroll, then render the overscroll
@@ -272,7 +272,7 @@ public void computeScroll() {
&& currX < 0
&& mEdgeEffectLeft.isFinished()
&& !mEdgeEffectLeftActive) {
- mEdgeEffectLeft.onAbsorb((int)
+ mEdgeEffectLeft.onAbsorb((int)
OverScrollerCompat.getCurrVelocity(mScroller));
mEdgeEffectLeftActive = true;
needsInvalidate = true;
@@ -280,7 +280,7 @@ public void computeScroll() {
&& currX > (surfaceSize.x - mContentRect.width())
&& mEdgeEffectRight.isFinished()
&& !mEdgeEffectRightActive) {
- mEdgeEffectRight.onAbsorb((int)
+ mEdgeEffectRight.onAbsorb((int)
OverScrollerCompat.getCurrVelocity(mScroller));
mEdgeEffectRightActive = true;
needsInvalidate = true;
@@ -290,7 +290,7 @@ public void computeScroll() {
&& currY < 0
&& mEdgeEffectTop.isFinished()
&& !mEdgeEffectTopActive) {
- mEdgeEffectTop.onAbsorb((int)
+ mEdgeEffectTop.onAbsorb((int)
OverScrollerCompat.getCurrVelocity(mScroller));
mEdgeEffectTopActive = true;
needsInvalidate = true;
@@ -298,7 +298,7 @@ public void computeScroll() {
&& currY > (surfaceSize.y - mContentRect.height())
&& mEdgeEffectBottom.isFinished()
&& !mEdgeEffectBottomActive) {
- mEdgeEffectBottom.onAbsorb((int)
+ mEdgeEffectBottom.onAbsorb((int)
OverScrollerCompat.getCurrVelocity(mScroller));
mEdgeEffectBottomActive = true;
needsInvalidate = true;
@@ -316,14 +316,14 @@ private PointF mZoomFocalPoint = new PointF();
// If a zoom is in progress (either programmatically or via double
// touch), performs the zoom.
if (mZoomer.computeZoom()) {
- float newWidth = (1f - mZoomer.getCurrZoom()) *
+ float newWidth = (1f - mZoomer.getCurrZoom()) *
mScrollerStartViewport.width();
- float newHeight = (1f - mZoomer.getCurrZoom()) *
+ float newHeight = (1f - mZoomer.getCurrZoom()) *
mScrollerStartViewport.height();
- float pointWithinViewportX = (mZoomFocalPoint.x -
+ float pointWithinViewportX = (mZoomFocalPoint.x -
mScrollerStartViewport.left)
/ mScrollerStartViewport.width();
- float pointWithinViewportY = (mZoomFocalPoint.y -
+ float pointWithinViewportY = (mZoomFocalPoint.y -
mScrollerStartViewport.top)
/ mScrollerStartViewport.height();
mCurrentViewport.set(
@@ -339,9 +339,9 @@ if (needsInvalidate) {
}
</pre>
-<p>This is the {@code computeScrollSurfaceSize()} method that's called in the above snippet. It
-computes the current scrollable surface size, in pixels. For example, if the entire chart area is visible,
-this is simply the current size of {@code mContentRect}. If the chart is zoomed in 200% in both directions,
+<p>This is the {@code computeScrollSurfaceSize()} method that's called in the above snippet. It
+computes the current scrollable surface size, in pixels. For example, if the entire chart area is visible,
+this is simply the current size of {@code mContentRect}. If the chart is zoomed in 200% in both directions,
the returned size will be twice as large horizontally and vertically.</p>
<pre>private Point computeScrollSurfaceSize() {
@@ -352,8 +352,8 @@ the returned size will be twice as large horizontally and vertically.</p>
/ mCurrentViewport.height()));
}</pre>
-<p>For another example of scroller usage, see the
-<a href="http://github.com/android/platform_frameworks_support/blob/master/v4/java/android/support/v4/view/ViewPager.java">source code</a> for the
-{@link android.support.v4.view.ViewPager} class. It scrolls in response to flings,
+<p>For another example of scroller usage, see the
+<a href="http://github.com/android/platform_frameworks_support/blob/master/v4/java/android/support/v4/view/ViewPager.java">source code</a> for the
+{@link android.support.v4.view.ViewPager} class. It scrolls in response to flings,
and uses scrolling to implement the "snapping to page" animation.</p>
diff --git a/docs/html/training/gestures/viewgroup.jd b/docs/html/training/gestures/viewgroup.jd
index 5b32300b99b0..7b5b24e0285d 100644
--- a/docs/html/training/gestures/viewgroup.jd
+++ b/docs/html/training/gestures/viewgroup.jd
@@ -52,38 +52,38 @@ onInterceptTouchEvent()} method.</p>
<h2 id="intercept">Intercept Touch Events in a ViewGroup</h2>
-<p>The {@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}
-method is called whenever a touch event is detected on the surface of a
-{@link android.view.ViewGroup}, including on the surface of its children. If
-{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}
-returns {@code true}, the {@link android.view.MotionEvent} is intercepted,
-meaning it will be not be passed on to the child, but rather to the
+<p>The {@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}
+method is called whenever a touch event is detected on the surface of a
+{@link android.view.ViewGroup}, including on the surface of its children. If
+{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}
+returns {@code true}, the {@link android.view.MotionEvent} is intercepted,
+meaning it will be not be passed on to the child, but rather to the
{@link android.view.View#onTouchEvent onTouchEvent()} method of the parent.</p>
-<p>The {@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}
-method gives a parent the chance to see any touch event before its children do.
-If you return {@code true} from
-{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()},
-the child view that was previously handling touch events
-receives an {@link android.view.MotionEvent#ACTION_CANCEL}, and the events from that
-point forward are sent to the parent's
-{@link android.view.View#onTouchEvent onTouchEvent()} method for the usual handling.
-{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()} can also
-return {@code false} and simply spy on events as they travel down the view hierarchy
+<p>The {@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}
+method gives a parent the chance to see any touch event before its children do.
+If you return {@code true} from
+{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()},
+the child view that was previously handling touch events
+receives an {@link android.view.MotionEvent#ACTION_CANCEL}, and the events from that
+point forward are sent to the parent's
+{@link android.view.View#onTouchEvent onTouchEvent()} method for the usual handling.
+{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()} can also
+return {@code false} and simply spy on events as they travel down the view hierarchy
to their usual targets, which will handle the events with their own
{@link android.view.View#onTouchEvent onTouchEvent()}.
-<p>In the following snippet, the class {@code MyViewGroup} extends
-{@link android.view.ViewGroup}.
-{@code MyViewGroup} contains multiple child views. If you drag your finger across
-a child view horizontally, the child view should no longer get touch events, and
-{@code MyViewGroup} should handle touch events by scrolling its contents. However,
-if you press buttons in the child view, or scroll the child view vertically,
-the parent shouldn't intercept those touch events, because the child is the
-intended target. In those cases,
+<p>In the following snippet, the class {@code MyViewGroup} extends
+{@link android.view.ViewGroup}.
+{@code MyViewGroup} contains multiple child views. If you drag your finger across
+a child view horizontally, the child view should no longer get touch events, and
+{@code MyViewGroup} should handle touch events by scrolling its contents. However,
+if you press buttons in the child view, or scroll the child view vertically,
+the parent shouldn't intercept those touch events, because the child is the
+intended target. In those cases,
{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()} should
-return {@code false}, and {@code MyViewGroup}'s
+return {@code false}, and {@code MyViewGroup}'s
{@link android.view.View#onTouchEvent onTouchEvent()} won't be called.</p>
<pre>public class MyViewGroup extends ViewGroup {
@@ -118,20 +118,20 @@ return {@code false}, and {@code MyViewGroup}'s
switch (action) {
case MotionEvent.ACTION_MOVE: {
if (mIsScrolling) {
- // We're currently scrolling, so yes, intercept the
+ // We're currently scrolling, so yes, intercept the
// touch event!
return true;
}
- // If the user has dragged her finger horizontally more than
+ // If the user has dragged her finger horizontally more than
// the touch slop, start the scroll
// left as an exercise for the reader
- final int xDiff = calculateDistanceX(ev);
+ final int xDiff = calculateDistanceX(ev);
- // Touch slop should be calculated using ViewConfiguration
+ // Touch slop should be calculated using ViewConfiguration
// constants.
- if (xDiff > mTouchSlop) {
+ if (xDiff > mTouchSlop) {
// Start scrolling!
mIsScrolling = true;
return true;
@@ -141,26 +141,26 @@ return {@code false}, and {@code MyViewGroup}'s
...
}
- // In general, we don't want to intercept touch events. They should be
+ // In general, we don't want to intercept touch events. They should be
// handled by the child view.
return false;
}
&#64;Override
public boolean onTouchEvent(MotionEvent ev) {
- // Here we actually handle the touch event (e.g. if the action is ACTION_MOVE,
+ // Here we actually handle the touch event (e.g. if the action is ACTION_MOVE,
// scroll this container).
- // This method will only be called if the touch event was intercepted in
+ // This method will only be called if the touch event was intercepted in
// onInterceptTouchEvent
...
}
}</pre>
-<p>Note that {@link android.view.ViewGroup} also provides a
-{@link android.view.ViewGroup#requestDisallowInterceptTouchEvent requestDisallowInterceptTouchEvent()} method.
-The {@link android.view.ViewGroup} calls this method when a child does not want the parent and its
-ancestors to intercept touch events with
-{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}.
+<p>Note that {@link android.view.ViewGroup} also provides a
+{@link android.view.ViewGroup#requestDisallowInterceptTouchEvent requestDisallowInterceptTouchEvent()} method.
+The {@link android.view.ViewGroup} calls this method when a child does not want the parent and its
+ancestors to intercept touch events with
+{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}.
</p>
<h2 id="vc">Use ViewConfiguration Constants</h2>
@@ -176,10 +176,10 @@ before the gesture is interpreted as scrolling. Touch slop is typically used to
prevent accidental scrolling when the user is performing some other touch
operation, such as touching on-screen elements.</p>
-<p>Two other commonly used {@link android.view.ViewConfiguration} methods are
-{@link android.view.ViewConfiguration#getScaledMinimumFlingVelocity getScaledMinimumFlingVelocity()}
+<p>Two other commonly used {@link android.view.ViewConfiguration} methods are
+{@link android.view.ViewConfiguration#getScaledMinimumFlingVelocity getScaledMinimumFlingVelocity()}
and {@link android.view.ViewConfiguration#getScaledMaximumFlingVelocity getScaledMaximumFlingVelocity()}.
-These methods return the minimum and maximum velocity (respectively) to initiate a fling,
+These methods return the minimum and maximum velocity (respectively) to initiate a fling,
as measured in pixels per second. For example:</p>
<pre>ViewConfiguration vc = ViewConfiguration.get(view.getContext());
@@ -209,14 +209,14 @@ case MotionEvent.ACTION_UP: {
<h2 id="delegate">Extend a Child View's Touchable Area</h2>
-<p>Android provides the {@link android.view.TouchDelegate} class to make it possible
-for a parent to extend the touchable area of a child view beyond the child's bounds.
+<p>Android provides the {@link android.view.TouchDelegate} class to make it possible
+for a parent to extend the touchable area of a child view beyond the child's bounds.
This is useful when the child has to be small, but should have a larger touch region. You can
also use this approach to shrink the child's touch region if need be.</p>
-<p>In the following example, an {@link android.widget.ImageButton} is the
-"delegate view" (that is, the child whose touch area the parent will extend).
+<p>In the following example, an {@link android.widget.ImageButton} is the
+"delegate view" (that is, the child whose touch area the parent will extend).
Here is the layout file:</p>
<pre>
@@ -225,7 +225,7 @@ Here is the layout file:</p>
android:layout_width=&quot;match_parent&quot;
android:layout_height=&quot;match_parent&quot;
tools:context=&quot;.MainActivity&quot; &gt;
-
+
&lt;ImageButton android:id=&quot;@+id/button&quot;
android:layout_width=&quot;wrap_content&quot;
android:layout_height=&quot;wrap_content&quot;
@@ -245,9 +245,9 @@ Here is the layout file:</p>
</ul>
-In its capacity as touch delegate for the {@link android.widget.ImageButton} child view, the
+In its capacity as touch delegate for the {@link android.widget.ImageButton} child view, the
parent view will receive all touch events. If the touch event occurred within the child's hit
-rectangle, the parent will pass the touch
+rectangle, the parent will pass the touch
event to the child for handling.</p>
@@ -261,7 +261,7 @@ public class MainActivity extends Activity {
setContentView(R.layout.activity_main);
// Get the parent view
View parentView = findViewById(R.id.parent_layout);
-
+
parentView.post(new Runnable() {
// Post in the parent's message queue to make sure the parent
// lays out its children before you call getHitRect()
@@ -275,29 +275,29 @@ public class MainActivity extends Activity {
myButton.setOnClickListener(new View.OnClickListener() {
&#64;Override
public void onClick(View view) {
- Toast.makeText(MainActivity.this,
- "Touch occurred within ImageButton touch region.",
+ Toast.makeText(MainActivity.this,
+ "Touch occurred within ImageButton touch region.",
Toast.LENGTH_SHORT).show();
}
});
-
+
// The hit rectangle for the ImageButton
myButton.getHitRect(delegateArea);
-
+
// Extend the touch area of the ImageButton beyond its bounds
// on the right and bottom.
delegateArea.right += 100;
delegateArea.bottom += 100;
-
+
// Instantiate a TouchDelegate.
- // "delegateArea" is the bounds in local coordinates of
+ // "delegateArea" is the bounds in local coordinates of
// the containing view to be mapped to the delegate view.
// "myButton" is the child view that should receive motion
// events.
- TouchDelegate touchDelegate = new TouchDelegate(delegateArea,
+ TouchDelegate touchDelegate = new TouchDelegate(delegateArea,
myButton);
-
- // Sets the TouchDelegate on the parent view, such that touches
+
+ // Sets the TouchDelegate on the parent view, such that touches
// within the touch delegate bounds are routed to the child.
if (View.class.isInstance(myButton.getParent())) {
((View) myButton.getParent()).setTouchDelegate(touchDelegate);
diff --git a/docs/html/training/id-auth/authenticate.jd b/docs/html/training/id-auth/authenticate.jd
index 65dbc3987bd3..bf32e8ed0488 100644
--- a/docs/html/training/id-auth/authenticate.jd
+++ b/docs/html/training/id-auth/authenticate.jd
@@ -129,7 +129,7 @@ private class OnTokenAcquired implements AccountManagerCallback&lt;Bundle&gt; {
public void run(AccountManagerFuture&lt;Bundle&gt; result) {
// Get the result of the operation from the AccountManagerFuture.
Bundle bundle = result.getResult();
-
+
// The token is a named value in the bundle. The name of the value
// is stored in the constant AccountManager.KEY_AUTHTOKEN.
token = bundle.getString(AccountManager.KEY_AUTHTOKEN);
diff --git a/docs/html/training/id-auth/custom_auth.jd b/docs/html/training/id-auth/custom_auth.jd
index def9b51418df..3c106a97317f 100644
--- a/docs/html/training/id-auth/custom_auth.jd
+++ b/docs/html/training/id-auth/custom_auth.jd
@@ -81,7 +81,7 @@ a database that is only accessible to root. But on a rooted device, the
credentials would be readable by anyone with {@code adb} access to the device.</p>
<p>With this in mind, you shouldn't pass the user's actual
-password to {@link android.accounts.AccountManager#addAccountExplicitly
+password to {@link android.accounts.AccountManager#addAccountExplicitly
AccountManager.addAccountExplicitly()}. Instead, you should store a
cryptographically secure token that would be of limited use to an attacker. If your
user credentials are protecting something valuable, you should carefully
diff --git a/docs/html/training/id-auth/index.jd b/docs/html/training/id-auth/index.jd
index f15ee295fa9c..45c6309648e9 100644
--- a/docs/html/training/id-auth/index.jd
+++ b/docs/html/training/id-auth/index.jd
@@ -15,7 +15,7 @@ startpage=true
<li>Android 2.0 (API level 5) or higher</li>
<li>Experience with <a href="{@docRoot}guide/components/services.html">Services</a></li>
<li>Experience with <a href="http://oauth.net/2/">OAuth 2.0</a></li>
-</ul>
+</ul>
<h2>You should also read</h2>
<ul>
diff --git a/docs/html/training/improving-layouts/optimizing-layout.jd b/docs/html/training/improving-layouts/optimizing-layout.jd
index e0baedfaef64..2f9f32d92c60 100644
--- a/docs/html/training/improving-layouts/optimizing-layout.jd
+++ b/docs/html/training/improving-layouts/optimizing-layout.jd
@@ -145,7 +145,7 @@ href="http://tools.android.com/tips/lint-checks">rules</a> are:</p>
<li>Deep layouts - Layouts with too much nesting are bad for performance. Consider using flatter layouts such as {@link android.widget.RelativeLayout} or {@link android.widget.GridLayout} to improve performance. The default maximum depth is 10.</li>
</ul>
-<p>Another benefit of Lint is that it is integrated into Android Studio. Lint automatically runs
+<p>Another benefit of Lint is that it is integrated into Android Studio. Lint automatically runs
whenever you compile your program. With Android Studio, you can also run lint inspections for a
specific build variant, or for all build variants. </p>
@@ -153,7 +153,7 @@ specific build variant, or for all build variants. </p>
<strong>File&gt;Settings&gt;Project Settings</strong> option. The Inspection Configuration page
appears with the supported inspections.</p>
<p><img src="{@docRoot}images/tools/studio-inspections-config.png" alt="" /> </p>
-<p class="img-caption"><strong>Figure 5.</strong> Inspection Configuration</p>
+<p class="img-caption"><strong>Figure 5.</strong> Inspection Configuration</p>
<p>Lint has the ability to automatically fix some issues, provide suggestions for others and jump
directly to the offending code for review.</p>
diff --git a/docs/html/training/in-app-billing/list-iab-products.jd b/docs/html/training/in-app-billing/list-iab-products.jd
index c423fc134892..c8de8232afe4 100644
--- a/docs/html/training/in-app-billing/list-iab-products.jd
+++ b/docs/html/training/in-app-billing/list-iab-products.jd
@@ -36,7 +36,7 @@ next.link=purchase-iab-products.html
<p>To add new in-app products to your product list:</p>
<ol>
-<li>Build a signed APK file for your In-app Billing application. To learn how to build and sign your APK, see <a href="{@docRoot}tools/publishing/preparing.html#publishing-build">Building Your Application for Release</a>. Make sure that you are using your final (not debug) certificate and private key to sign your application.
+<li>Build a signed APK file for your In-app Billing application. To learn how to build and sign your APK, see <a href="{@docRoot}tools/publishing/preparing.html#publishing-build">Building Your Application for Release</a>. Make sure that you are using your final (not debug) certificate and private key to sign your application.
</li>
<li>In the Developer Console, open the application entry that you created earlier.</li>
<li>Click on the APK tab then click on Upload new APK. Upload the signed APK file to the Developer Console. Don’t publish the app yet!</li>
@@ -48,9 +48,9 @@ next.link=purchase-iab-products.html
<h2 id="QueryDetails">Query Items Available for Purchase</h2>
<p>You can query Google Play to programmatically retrieve details of the in-app products that are associated with your application (such as the product’s price, title, description, and type). This is useful, for example, when you want to display a listing of unowned items that are still available for purchase to users.</p>
<p class="note"><strong>Note:</strong> When making the query, you will need to specify the product IDs for the products explicitly. You can manually find the product IDs from the Developer Console by opening the <strong>In-app Products</strong> tab for your application. The product IDs are listed under the column labeled <strong>Name/ID</strong>.</p>
-<p>To retrieve the product details, call {@code queryInventoryAsync(boolean, List, QueryInventoryFinishedListener)} on your IabHelper instance.
+<p>To retrieve the product details, call {@code queryInventoryAsync(boolean, List, QueryInventoryFinishedListener)} on your IabHelper instance.
<ul>
-<li>The first input argument indicates whether product details should be retrieved (should be set to {@code true}).</li>
+<li>The first input argument indicates whether product details should be retrieved (should be set to {@code true}).</li>
<li>The {@code List} argument consists of one or more product IDs (also called SKUs) for the products that you want to query.</li>
<li>Finally, the {@code QueryInventoryFinishedListener} argument specifies a listener is notified when the query operation has completed and handles the query response.</li>
</ul>
@@ -70,9 +70,9 @@ mHelper.queryInventoryAsync(true, additionalSkuList,
<p>The following code shows how you can retrieve the item prices from the result set.</p>
<pre>
-IabHelper.QueryInventoryFinishedListener
+IabHelper.QueryInventoryFinishedListener
mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
- public void onQueryInventoryFinished(IabResult result, Inventory inventory)
+ public void onQueryInventoryFinished(IabResult result, Inventory inventory)
{
if (result.isFailure()) {
// handle error
@@ -84,7 +84,7 @@ IabHelper.QueryInventoryFinishedListener
String bananaPrice =
inventory.getSkuDetails(SKU_BANANA).getPrice();
- // update the UI
+ // update the UI
}
}
</pre>
diff --git a/docs/html/training/in-app-billing/purchase-iab-products.jd b/docs/html/training/in-app-billing/purchase-iab-products.jd
index 4e6e035afe56..165e311fbf8e 100644
--- a/docs/html/training/in-app-billing/purchase-iab-products.jd
+++ b/docs/html/training/in-app-billing/purchase-iab-products.jd
@@ -45,7 +45,7 @@ next.link=test-iab-app.html
<p>The following example shows how you can make a purchase request for a product with ID {@code SKU_GAS}, using an arbitrary value of 10001 for the request code, and an encoded developer payload string.</p>
<pre>
-mHelper.launchPurchaseFlow(this, SKU_GAS, 10001,
+mHelper.launchPurchaseFlow(this, SKU_GAS, 10001,
mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");
</pre>
@@ -54,14 +54,14 @@ mHelper.launchPurchaseFlow(this, SKU_GAS, 10001,
<p>The following example shows how you can handle the purchase response in the listener, depending on whether the purchase order was completed successfully, and whether the user purchased gas or a premium upgrade. In this example, gas is an in-app product that can be purchased multiple times, so you should consume the purchase to allow the user to buy it again. To learn how to consume purchases, see the <a href="{@docRoot}training/in-app-billing/purchase-iab-products.html#Consume">Consuming Products</a> section. The premium upgrade is a one-time purchase so you don’t need to consume it. It is good practice to update the UI immediately so that your users can see their newly purchased items.</p>
<pre>
-IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
+IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
= new IabHelper.OnIabPurchaseFinishedListener() {
- public void onIabPurchaseFinished(IabResult result, Purchase purchase)
+ public void onIabPurchaseFinished(IabResult result, Purchase purchase)
{
if (result.isFailure()) {
Log.d(TAG, "Error purchasing: " + result);
return;
- }
+ }
else if (purchase.getSku().equals(SKU_GAS)) {
// consume the gas and update the UI
}
@@ -86,7 +86,7 @@ mHelper.queryInventoryAsync(mGotInventoryListener);
<p>If the query is successful, the query results are stored in an {@code Inventory} object that is passed back to the listener. The In-app Billing service returns only the purchases made by the user account that is currently logged in to the device.</p>
<pre>
-IabHelper.QueryInventoryFinishedListener mGotInventoryListener
+IabHelper.QueryInventoryFinishedListener mGotInventoryListener
= new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result,
Inventory inventory) {
@@ -96,7 +96,7 @@ IabHelper.QueryInventoryFinishedListener mGotInventoryListener
}
else {
// does the user have the premium upgrade?
- mIsPremium = inventory.hasPurchase(SKU_PREMIUM);
+ mIsPremium = inventory.hasPurchase(SKU_PREMIUM);
// update UI accordingly
}
}
@@ -111,7 +111,7 @@ IabHelper.QueryInventoryFinishedListener mGotInventoryListener
<p>In this example, you want to consume the gas item that the user has previously purchased in your app.</p>
<pre>
-mHelper.consumeAsync(inventory.getPurchase(SKU_GAS),
+mHelper.consumeAsync(inventory.getPurchase(SKU_GAS),
mConsumeFinishedListener);
</pre>
diff --git a/docs/html/training/in-app-billing/test-iab-app.jd b/docs/html/training/in-app-billing/test-iab-app.jd
index 9d47a96ce908..fc7fe1aa7081 100644
--- a/docs/html/training/in-app-billing/test-iab-app.jd
+++ b/docs/html/training/in-app-billing/test-iab-app.jd
@@ -39,7 +39,7 @@ Test your In-app Billing application with static responses by using Google Playâ
<li>Login to the <a href="https://play.google.com/apps/publish/" target="_blank">Developer Console</a> with your developer account.</li>
<li>Click <strong>Settings</strong> > <strong>Account</strong> details, then in the <strong>License Testing</strong> section, add the Google email addresses for your tester accounts.</li>
</ol>
-<li>Build a signed APK file for your In-app Billing application. To learn how to build and sign your APK, see <a href="{@docRoot}tools/publishing/preparing.html#publishing-build">Building Your Application for Release</a>. Make sure that you are using your final (not debug) certificate and private key to sign your application.
+<li>Build a signed APK file for your In-app Billing application. To learn how to build and sign your APK, see <a href="{@docRoot}tools/publishing/preparing.html#publishing-build">Building Your Application for Release</a>. Make sure that you are using your final (not debug) certificate and private key to sign your application.
</li>
<li>Make sure that you have uploaded the signed APK for your application to the Developer Console, and associated one or more in-app products with your application. You don't need to publish the application on Google Play to test it. <p class="note"><strong>Warning:</strong> It may take up to 2-3 hours after uploading the APK for Google Play to recognize your updated APK version. If you try to test your application before your uploaded APK is recognized by Google Play, your application will receive a ‘purchase cancelled’ response with an error message “This version of the application is not enabled for In-app Billing.â€</p></li>
<li>Install the APK file to your physical test device by using the {@code adb} tool. To learn how to install the application, see <a href="{@docRoot}tools/building/building-cmdline.html#RunningOnDevice">Running on a Device</a>. Make sure that:
diff --git a/docs/html/training/keyboard-input/index.jd b/docs/html/training/keyboard-input/index.jd
index 46795c4d9f4d..bd7ad189be28 100644
--- a/docs/html/training/keyboard-input/index.jd
+++ b/docs/html/training/keyboard-input/index.jd
@@ -32,9 +32,9 @@ through an attached keyboard.</p>
<p>These topics and more are discussed in the following lessons.</p>
-<h2>Lessons</h2>
-
-<dl>
+<h2>Lessons</h2>
+
+<dl>
<dt><b><a href="style.html">Specifying the Input Method Type</a></b></dt>
<dd>Learn how to show certain soft input methods, such as those designed for phone numbers, web
addresses, or other formats. Also learn how to specify characteristics such
@@ -51,5 +51,5 @@ through an attached keyboard.</p>
<dt><b><a href="commands.html">Handling Keyboard Actions</a></b></dt>
<dd>Learn how to respond directly to keyboard input for user actions.
</dd>
-
-</dl>
+
+</dl>
diff --git a/docs/html/training/keyboard-input/style.jd b/docs/html/training/keyboard-input/style.jd
index b0e506cf756c..714c8b3c3e32 100644
--- a/docs/html/training/keyboard-input/style.jd
+++ b/docs/html/training/keyboard-input/style.jd
@@ -71,7 +71,7 @@ so the text field conceals the user's input:</p>
android:id="@+id/password"
android:hint="@string/password_hint"
android:inputType="textPassword"
- ... />
+ ... />
</pre>
<p>There are several possible values documented with the
diff --git a/docs/html/training/load-data-background/handle-results.jd b/docs/html/training/load-data-background/handle-results.jd
index ce0024f031c2..7439d3e99cf8 100644
--- a/docs/html/training/load-data-background/handle-results.jd
+++ b/docs/html/training/load-data-background/handle-results.jd
@@ -127,7 +127,7 @@ public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor cursor) {
*/
&#64;Override
public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
-
+
/*
* Clears out the adapter's reference to the Cursor.
* This prevents memory leaks.
diff --git a/docs/html/training/location/display-address.jd b/docs/html/training/location/display-address.jd
index 86066299e5d7..daa6fd3832af 100644
--- a/docs/html/training/location/display-address.jd
+++ b/docs/html/training/location/display-address.jd
@@ -324,7 +324,7 @@ public class FetchAddressIntentService extends IntentService {
process if needed. If the service is already running then it remains running.
Because the service extends {@link android.app.IntentService IntentService},
it shuts down automatically when all intents have been processed.</p>
-
+
<p>Start the service from your app's main activity,
and create an {@link android.content.Intent} to pass data to the service. You
need an <em>explicit</em> intent, because you want only your service
diff --git a/docs/html/training/location/geofencing.jd b/docs/html/training/location/geofencing.jd
index 1cf89fdc8b92..ce6ad55ad889 100644
--- a/docs/html/training/location/geofencing.jd
+++ b/docs/html/training/location/geofencing.jd
@@ -369,7 +369,7 @@ reduce the alerts is to use a transition type of <code>
GEOFENCE_TRANSITION_DWELL</a></code> instead of <code>
<a href="{@docRoot}reference/com/google/android/gms/location/Geofence.html#GEOFENCE_TRANSITION_ENTER">
GEOFENCE_TRANSITION_ENTER</a></code>. This way, the dwelling alert is sent only when the user stops
-inside a geofence for a given period of time. You can choose the duration by setting a
+inside a geofence for a given period of time. You can choose the duration by setting a
<a href="{@docRoot}reference/com/google/android/gms/location/Geofence.Builder.html#setLoiteringDelay(int)">
loitering delay</a>.</p>
diff --git a/docs/html/training/managing-audio/audio-output.jd b/docs/html/training/managing-audio/audio-output.jd
index 416e5193f569..ed1623beb609 100644
--- a/docs/html/training/managing-audio/audio-output.jd
+++ b/docs/html/training/managing-audio/audio-output.jd
@@ -8,8 +8,8 @@ previous.link=audio-focus.html
@jd:body
-
-<div id="tb-wrapper">
+
+<div id="tb-wrapper">
<div id="tb">
<h2>This lesson teaches you to</h2>
@@ -25,16 +25,16 @@ previous.link=audio-focus.html
</ul>
-</div>
+</div>
</div>
<p>Users have a number of alternatives when it comes to enjoying the audio from their Android
devices. Most devices have a built-in speaker, headphone jacks for wired headsets, and many also
feature Bluetooth connectivity and support for A2DP audio. </p>
-
-<h2 id="CheckHardware">Check What Hardware is Being Used</h2>
-
+
+<h2 id="CheckHardware">Check What Hardware is Being Used</h2>
+
<p>How your app behaves might be affected by which hardware its output is being routed to.</p>
<p>You can query the {@link android.media.AudioManager} to determine if the audio is currently
@@ -48,13 +48,13 @@ if (isBluetoothA2dpOn()) {
// Adjust output for Speakerphone.
} else if (isWiredHeadsetOn()) {
// Adjust output for headsets
-} else {
+} else {
// If audio plays and noone can hear it, is it still playing?
}
</pre>
-<h2 id="HandleChanges">Handle Changes in the Audio Output Hardware</h2>
+<h2 id="HandleChanges">Handle Changes in the Audio Output Hardware</h2>
<p>When a headset is unplugged, or a Bluetooth device disconnected, the audio stream
automatically reroutes to the built in speaker. If you listen to your music at as high a volume as I
@@ -65,7 +65,7 @@ intent when this happens. It’s good practice to register a {@link android.cont
that listens for this intent whenever you’re playing audio. In the case of music players, users
typically expect the playback to be paused&mdash;while for games you may choose to significantly
lower the volume.</p>
-
+
<pre>
private class NoisyAudioStreamReceiver extends BroadcastReceiver {
&#64;Override
diff --git a/docs/html/training/managing-audio/index.jd b/docs/html/training/managing-audio/index.jd
index 9391449b57e2..55b91c2c64ae 100644
--- a/docs/html/training/managing-audio/index.jd
+++ b/docs/html/training/managing-audio/index.jd
@@ -6,10 +6,10 @@ startpage=true
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
-<h2>Dependencies and prerequisites</h2>
+<h2>Dependencies and prerequisites</h2>
<ul>
<li>Android 2.0 (API level 5) or higher</li>
<li>Experience with <a href="{@docRoot}guide/topics/media/mediaplayer.html">Media
@@ -21,41 +21,41 @@ Playback</a></li>
<li><a href="{@docRoot}guide/components/services.html">Services</a></li>
</ul>
-</div>
+</div>
</div>
<p>If your app plays audio, it’s important that your users can control the audio in a predictable
manner. To ensure a great user experience, it’s also important that your app manages the audio focus
-to ensure multiple apps aren’t playing audio at the same time.</p>
+to ensure multiple apps aren’t playing audio at the same time.</p>
-<p>After this class, you will be able to build apps that respond to hardware audio key presses,
+<p>After this class, you will be able to build apps that respond to hardware audio key presses,
which request audio focus when playing audio, and which respond appropriately to changes in audio
-focus caused by the system or other applications.</p>
+focus caused by the system or other applications.</p>
+
+<h2>Lessons</h2>
-<h2>Lessons</h2>
-
<!-- Create a list of the lessons in this class along with a short description of each lesson.
These should be short and to the point. It should be clear from reading the summary whether someone
-will want to jump to a lesson or not.-->
-
+will want to jump to a lesson or not.-->
+
<dl>
<dt><b><a href="volume-playback.html">Controlling Your App’s Volume and
Playback</a></b></dt>
<dd>Learn how to ensure your users can control the volume of your app using the hardware or
software volume controls and where available the play, stop, pause, skip, and previous media
-playback keys.</dd>
-
+playback keys.</dd>
+
<dt><b><a href="audio-focus.html">Managing Audio Focus</a></b></dt>
<dd>With multiple apps potentially playing audio it's important to think about how they should
interact. To avoid every music app playing at the same time, Android uses audio focus to moderate
audio playback. Learn how to request the audio focus, listen for a loss of audio focus, and how to
-respond when that happens.</dd>
-
+respond when that happens.</dd>
+
<dt><b><a href="audio-output.html">Dealing with Audio Output Hardware</a></b></dt>
<dd>Audio can be played from a number of sources. Learn how to find out where the audio is being
-played and how to handle a headset being disconnected during playback.</dd>
- </dl>
+played and how to handle a headset being disconnected during playback.</dd>
+ </dl>
diff --git a/docs/html/training/managing-audio/volume-playback.jd b/docs/html/training/managing-audio/volume-playback.jd
index be0f583d50c7..7e2889300c8a 100644
--- a/docs/html/training/managing-audio/volume-playback.jd
+++ b/docs/html/training/managing-audio/volume-playback.jd
@@ -8,8 +8,8 @@ next.link=audio-focus.html
@jd:body
-
-<div id="tb-wrapper">
+
+<div id="tb-wrapper">
<div id="tb">
<h2>This lesson teaches you to</h2>
@@ -26,11 +26,11 @@ Playback</a></li>
<li><a href="{@docRoot}guide/topics/media/mediaplayer.html">Media Playback</a></li>
</ul>
-</div>
+</div>
</div>
-
+
<p>A good user experience is a predictable one. If your app plays media it’s important that your
users can control the volume of your app using the hardware or software volume controls of their
device, bluetooth headset, or headphones.</p>
@@ -38,9 +38,9 @@ device, bluetooth headset, or headphones.</p>
<p>Similarly, where appropriate and available, the play, stop, pause, skip, and previous media
playback keys should perform their respective actions on the audio stream used by your app.</p>
-
-<h2 id="IdentifyStream">Identify Which Audio Stream to Use</h2>
-
+
+<h2 id="IdentifyStream">Identify Which Audio Stream to Use</h2>
+
<p>The first step to creating a predictable audio experience is understanding which audio stream
your app will use.</p>
@@ -53,11 +53,11 @@ clock, you’ll almost certainly be playing your audio using the {@link
android.media.AudioManager#STREAM_MUSIC} stream.</p>
-<h2 id="HardwareVolumeKeys">Use Hardware Volume Keys to Control Your App’s Audio Volume</h2>
+<h2 id="HardwareVolumeKeys">Use Hardware Volume Keys to Control Your App’s Audio Volume</h2>
<p>By default, pressing the volume controls modify the volume of the active audio stream. If your
app isn't currently playing anything, hitting the volume keys adjusts the ringer volume.<p>
-
+
<p>If you've got a game or music app, then chances are good that when the user hits the volume keys
they want to control the volume of the game or music, even if they’re currently between songs or
there’s no music in the current game location.</p>
@@ -65,8 +65,8 @@ there’s no music in the current game location.</p>
<p>You may be tempted to try and listen for volume key presses and modify the volume of your
audio stream that way. Resist the urge. Android provides the handy {@link
android.app.Activity#setVolumeControlStream setVolumeControlStream()} method to direct volume key
-presses to the audio stream you specify.<p>
-
+presses to the audio stream you specify.<p>
+
<p>Having identified the audio stream your application
will be using, you should set it as the volume stream target. You should make this call early in
your app’s lifecycle&mdash;because you only need to call it once during the activity lifecycle, you
@@ -85,7 +85,7 @@ specify (in this case “musicâ€) whenever the target activity or fragment is v
<h2 id="PlaybackControls">Use Hardware Playback Control Keys to Control Your App’s Audio
-Playback</h2>
+Playback</h2>
<p>Media playback buttons such as play, pause, stop, skip, and previous are available on some
handsets and many connected or wireless headsets. Whenever a user presses one of these hardware
diff --git a/docs/html/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html/training/monitoring-device-state/connectivity-monitoring.jd
index d5e7a859b121..2dd904f325f7 100644
--- a/docs/html/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html/training/monitoring-device-state/connectivity-monitoring.jd
@@ -11,7 +11,7 @@ next.link=manifest-receivers.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>This lesson teaches you to</h2>
@@ -27,7 +27,7 @@ next.link=manifest-receivers.html
<li><a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a>
</ul>
-</div>
+</div>
</div>
<p>Some of the most common uses for repeating alarms and background services is to schedule regular
@@ -39,21 +39,21 @@ download, why both waking the device to schedule the update at all?</p>
connected to the Internet, and if so, what type of connection is in place.</p>
-<h2 id="DetermineConnection">Determine if You Have an Internet Connection</h2>
-
+<h2 id="DetermineConnection">Determine if You Have an Internet Connection</h2>
+
<p>There's no need to schedule an update based on an Internet resource if you aren't connected to
-the Internet. The following snippet shows how to use the {@link android.net.ConnectivityManager}
+the Internet. The following snippet shows how to use the {@link android.net.ConnectivityManager}
to query the active network and determine if it has Internet connectivity.</p>
<pre>ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
-
+
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnectedOrConnecting();</pre>
-<h2 id="DetermineType">Determine the Type of your Internet Connection</h2>
+<h2 id="DetermineType">Determine the Type of your Internet Connection</h2>
<p>It's also possible to determine the type of Internet connection currently available.</p>
@@ -71,7 +71,7 @@ suspended until you have a Wi-Fi connection.</p>
to resume them once an Internet connection has been established.</p>
-<h2 id="MonitorChanges">Monitor for Changes in Connectivity</h2>
+<h2 id="MonitorChanges">Monitor for Changes in Connectivity</h2>
<p>The {@link android.net.ConnectivityManager} broadcasts the {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION} ({@code
diff --git a/docs/html/training/monitoring-device-state/manifest-receivers.jd b/docs/html/training/monitoring-device-state/manifest-receivers.jd
index ca184aa54589..3e36dba741a1 100644
--- a/docs/html/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html/training/monitoring-device-state/manifest-receivers.jd
@@ -9,7 +9,7 @@ previous.link=connectivity-monitoring.html
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>This lesson teaches you to</h2>
@@ -24,7 +24,7 @@ Efficiency</a></li>
<li><a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a>
</ul>
-</div>
+</div>
</div>
<p>The simplest way to monitor device state changes is to create a {@link
@@ -38,10 +38,10 @@ receivers is triggered&mdash;potentially much more frequently than required.</p>
<p>A better approach is to disable or enable the broadcast receivers at runtime. That way you can
use the receivers you declared in the manifest as passive alarms that are triggered by system events
only when necessary.</p>
-
-<h2 id="ToggleReceivers">Toggle and Cascade State Change Receivers to Improve Efficiency </h2>
-
+
+<h2 id="ToggleReceivers">Toggle and Cascade State Change Receivers to Improve Efficiency </h2>
+
<p>You can use the {@link android.content.pm.PackageManager} to toggle the enabled state on any
component defined in the manifest, including whichever broadcast receivers you wish to enable or
disable as shown in the snippet below:</p>
@@ -59,6 +59,6 @@ your receivers except the connectivity-change receiver. Conversely, once you are
stop listening for connectivity changes and simply check to see if you're online immediately before
performing an update and rescheduling a recurring update alarm.</p>
-<p>You can use the same technique to delay a download that requires higher bandwidth to complete.
+<p>You can use the same technique to delay a download that requires higher bandwidth to complete.
Simply enable a broadcast receiver that listens for connectivity changes and initiates the
download only after you are connected to Wi-Fi.</p>
diff --git a/docs/html/training/multiple-threads/create-threadpool.jd b/docs/html/training/multiple-threads/create-threadpool.jd
index e22afd37c222..df28833d3177 100644
--- a/docs/html/training/multiple-threads/create-threadpool.jd
+++ b/docs/html/training/multiple-threads/create-threadpool.jd
@@ -48,7 +48,7 @@ trainingnavtop=true
also occurs in any object that is only instantiated once. To learn more about this, read the
<a href="{@docRoot}guide/components/processes-and-threads.html">
Processes and Threads</a> API guide.
-
+
</p>
<h2 id="ClassStructure">Define the Thread Pool Class</h2>
<p>
diff --git a/docs/html/training/multiscreen/adaptui.jd b/docs/html/training/multiscreen/adaptui.jd
index 34e9d7df7f8d..469012bd8ac8 100644
--- a/docs/html/training/multiscreen/adaptui.jd
+++ b/docs/html/training/multiscreen/adaptui.jd
@@ -10,9 +10,9 @@ previous.link=screendensities.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
-
+<div id="tb-wrapper">
+<div id="tb">
+
<h2>This lesson teaches you to</h2>
<ol>
@@ -28,18 +28,18 @@ previous.link=screendensities.html
<li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Supporting Tablets and
Handsets</a></li>
</ul>
-
+
<h2>Try it out</h2>
-
+
<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Download
the sample app</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
<p>Depending on the layout that your application is currently showing, the UI
flow may be different. For example, if your application is in the dual-pane
@@ -66,7 +66,7 @@ public class NewsReaderActivity extends FragmentActivity {
setContentView(R.layout.main_layout);
View articleView = findViewById(R.id.article);
- mIsDualPane = articleView != null &amp;&amp;
+ mIsDualPane = articleView != null &amp;&amp;
articleView.getVisibility() == View.VISIBLE;
}
}
@@ -139,7 +139,7 @@ public void onCreate(Bundle savedInstanceState) {
else {
/* use list navigation (spinner) */
actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
- SpinnerAdapter adap = new ArrayAdapter<String>(this,
+ SpinnerAdapter adap = new ArrayAdapter<String>(this,
R.layout.headline_item, CATEGORIES);
actionBar.setListNavigationCallbacks(adap, handler);
}
@@ -157,7 +157,7 @@ large screens, but is a separate activity on smaller screens.</p>
<p>In cases like this, you can usually avoid code duplication by reusing the
same {@link android.app.Fragment} subclass in several activities. For example,
-<code>ArticleFragment</code>
+<code>ArticleFragment</code>
is used in the dual-pane layout:</p>
{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
@@ -206,7 +206,7 @@ activity (as opposed to notifying a specific hard-coded activity):</p>
public class HeadlinesFragment extends ListFragment {
...
&#64;Override
- public void onItemClick(AdapterView&lt;?&gt; parent,
+ public void onItemClick(AdapterView&lt;?&gt; parent,
View view, int position, long id) {
if (null != mHeadlineSelectedListener) {
mHeadlineSelectedListener.onHeadlineSelected(position);
diff --git a/docs/html/training/multiscreen/index.jd b/docs/html/training/multiscreen/index.jd
index 8eff246cd8eb..2c59facbda77 100644
--- a/docs/html/training/multiscreen/index.jd
+++ b/docs/html/training/multiscreen/index.jd
@@ -7,10 +7,10 @@ startpage=true
@jd:body
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>Dependencies and prerequisites</h2>
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>Dependencies and prerequisites</h2>
<ul>
<li>Android 1.6 or higher (2.1+ for the sample app)</li>
@@ -28,18 +28,18 @@ href="{@docRoot}tools/support-library/index.html">support library</a></li>
<ul>
<li><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></li>
</ul>
-
-<h2>Try it out</h2>
-
-<div class="download-box">
+
+<h2>Try it out</h2>
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Download
the sample app</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-</div>
-</div>
-
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
+
<p>Android powers hundreds of device types with several different screen sizes,
ranging from small phones to large TV sets. Therefore, it’s important
that you design your application to be compatible with all screen sizes so it’s available to as many
@@ -62,26 +62,26 @@ of reusable code for your own application.</p>
href="{@docRoot}tools/support-library/index.html">support library</a> in order to use the {@link
android.app.Fragment} APIs on versions lower than Android 3.0. You must download and add the
library to your application in order to use all APIs in this class.</p>
-
-<h2>Lessons</h2>
-
-<dl>
- <dt><b><a href="screensizes.html">Supporting Different Screen Sizes</a></b></dt>
+
+<h2>Lessons</h2>
+
+<dl>
+ <dt><b><a href="screensizes.html">Supporting Different Screen Sizes</a></b></dt>
<dd>This lesson walks you through how to design layouts that adapts
several different screen sizes (using flexible dimensions for
views, {@link android.widget.RelativeLayout}, screen size and orientation qualifiers,
- alias filters, and nine-patch bitmaps).</dd>
-
+ alias filters, and nine-patch bitmaps).</dd>
+
<dt><b><a href="screendensities.html">Supporting Different Screen
- Densities</a></b></dt>
+ Densities</a></b></dt>
<dd>This lesson shows you how to support screens that have different
pixel densities (using density-independent pixels and providing
- bitmaps appropriate for each density).</dd>
-
- <dt><b><a href="adaptui.html">Implementing Adaptative UI Flows</a></b></dt>
+ bitmaps appropriate for each density).</dd>
+
+ <dt><b><a href="adaptui.html">Implementing Adaptative UI Flows</a></b></dt>
<dd>This lesson shows you how to implement your UI flow in a way
that adapts to several screen size/density combinations
(run-time detection of active layout, reacting according to
- current layout, handling screen configuration changes).</dd>
-</dl>
+ current layout, handling screen configuration changes).</dd>
+</dl>
diff --git a/docs/html/training/multiscreen/screensizes.jd b/docs/html/training/multiscreen/screensizes.jd
index 2cd59ee90a56..040bb85a88e0 100755
--- a/docs/html/training/multiscreen/screensizes.jd
+++ b/docs/html/training/multiscreen/screensizes.jd
@@ -10,8 +10,8 @@ next.link=screendensities.html
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
+<div id="tb-wrapper">
+<div id="tb">
<h2>This lesson teaches you to</h2>
<ol>
@@ -30,27 +30,27 @@ next.link=screendensities.html
<li><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></li>
</ul>
-<h2>Try it out</h2>
-
-<div class="download-box">
+<h2>Try it out</h2>
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Download
the sample app</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
<p>This lesson shows you how to support different screen sizes by:</p>
-<ul>
- <li>Ensuring your layout can be adequately resized to fit the screen</li>
- <li>Providing appropriate UI layout according to screen configuration</li>
+<ul>
+ <li>Ensuring your layout can be adequately resized to fit the screen</li>
+ <li>Providing appropriate UI layout according to screen configuration</li>
<li>Ensuring the correct layout is applied to the correct screen</li>
- <li>Providing bitmaps that scale correctly</li>
-</ul>
+ <li>Providing bitmaps that scale correctly</li>
+</ul>
-<h2 id="TaskUseWrapMatchPar">Use "wrap_content" and "match_parent"</h2>
+<h2 id="TaskUseWrapMatchPar">Use "wrap_content" and "match_parent"</h2>
<p>To ensure that your layout is flexible and adapts to different screen sizes,
you should use <code>"wrap_content"</code> and <code>"match_parent"</code> for the width
@@ -78,11 +78,11 @@ width and height:</p>
and landscape (right).</p>
-<h2 id="TaskUseRelativeLayout">Use RelativeLayout</h2>
+<h2 id="TaskUseRelativeLayout">Use RelativeLayout</h2>
<p>You can construct fairly complex layouts using nested instances of {@link
android.widget.LinearLayout} and
-combinations of <code>"wrap_content"</code> and <code>"match_parent"</code> sizes.
+combinations of <code>"wrap_content"</code> and <code>"match_parent"</code> sizes.
However, {@link android.widget.LinearLayout} does not allow you to precisely control the
spacial relationships of child views; views in a {@link android.widget.LinearLayout} simply line up
side-by-side. If you need child views to be oriented in variations other than a straight line, a
@@ -139,8 +139,8 @@ the right side of the screen.</p>
spatial relationships are preserved as specified by the {@link
android.widget.RelativeLayout.LayoutParams}.</p>
-
-<h2 id="TaskUseSizeQuali">Use Size Qualifiers</h2>
+
+<h2 id="TaskUseSizeQuali">Use Size Qualifiers</h2>
<p>There's only so much mileage you can get from a flexible layout or relative layout
like the one in the previous sections. While those layouts adapt to
@@ -148,7 +148,7 @@ different screens by stretching the space within and around components, they
may not provide the best user experience for each screen size. Therefore, your
application should not only implement flexible layouts, but should also provide
several alternative layouts to target different screen configurations. You do
-so by using <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">configuration qualifiers</a>, which allows the runtime
+so by using <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">configuration qualifiers</a>, which allows the runtime
to automatically select the appropriate resource based on the current device’s
configuration (such as a different layout design for different screen sizes).</p>
@@ -209,13 +209,13 @@ layout.</p>
<p>However, this won't work well on pre-3.2 devices, because they don't
recognize <code>sw600dp</code> as a size qualifier, so you still have to use the <code>large</code>
-qualifier as well. So, you should have a file named
+qualifier as well. So, you should have a file named
<code>res/layout-large/main.xml</code>
which is identical to <code>res/layout-sw600dp/main.xml</code>. In the next section
you'll see a technique that allows you to avoid duplicating the layout files this way.</p>
-<h2 id="TaskUseAliasFilters">Use Layout Aliases</h2>
+<h2 id="TaskUseAliasFilters">Use Layout Aliases</h2>
<p>The smallest-width qualifier is available only on Android 3.2 and above.
Therefore, you should also still use the abstract size bins (small, normal,
@@ -271,7 +271,7 @@ applied to tablets and TVs regardless of Android version (pre-3.2 tablets and TV
{@code large}, and post-3.2 will match <code>sw600dp</code>).</p>
-<h2 id="TaskUseOriQuali">Use Orientation Qualifiers</h2>
+<h2 id="TaskUseOriQuali">Use Orientation Qualifiers</h2>
<p>Some layouts work well in both landscape and portrait orientations, but most of them can
benefit from adjustments. In the News Reader sample app, here is how the layout
@@ -287,7 +287,7 @@ behaves in each screen size and orientation:</p>
<li><b>TV, landscape:</b> dual pane, wide, with action bar</li>
</ul></p>
-<p>So each of these layouts is defined in an XML file in the
+<p>So each of these layouts is defined in an XML file in the
<code>res/layout/</code> directory. To then assign each layout to the various screen
configurations, the app uses layout aliases to match them to
each configuration:</p>
@@ -361,7 +361,7 @@ borders indicate the places where the image can be stretched, and the ones on
the right and bottom borders indicate where the content should be
placed.</p>
-<p>Also, notice the <code>.9.png</code> extension. You must use this
+<p>Also, notice the <code>.9.png</code> extension. You must use this
extension, since this is how the framework detects that this is a nine-patch
image, as opposed to a regular PNG image.</p>
diff --git a/docs/html/training/notify-user/build-notification.jd b/docs/html/training/notify-user/build-notification.jd
index d24a4960a987..2f96a20985ed 100644
--- a/docs/html/training/notify-user/build-notification.jd
+++ b/docs/html/training/notify-user/build-notification.jd
@@ -42,9 +42,9 @@ trainingnavtop=true
<p>This lesson explains how to create and issue a notification.</p>
-<p>The examples in this class are based on the
-{@link android.support.v4.app.NotificationCompat.Builder} class.
-{@link android.support.v4.app.NotificationCompat.Builder}
+<p>The examples in this class are based on the
+{@link android.support.v4.app.NotificationCompat.Builder} class.
+{@link android.support.v4.app.NotificationCompat.Builder}
is in the <a href="{@docRoot}">Support Library</a>. You should use
{@link android.support.v4.app.NotificationCompat} and its subclasses,
particularly {@link android.support.v4.app.NotificationCompat.Builder}, to
@@ -52,9 +52,9 @@ provide the best notification support for a wide range of platforms. </p>
<h2 id="builder">Create a Notification Builder</h2>
-<p>When creating a notification, specify the UI content and actions with a
-{@link android.support.v4.app.NotificationCompat.Builder} object. At bare minimum,
-a {@link android.support.v4.app.NotificationCompat.Builder Builder}
+<p>When creating a notification, specify the UI content and actions with a
+{@link android.support.v4.app.NotificationCompat.Builder} object. At bare minimum,
+a {@link android.support.v4.app.NotificationCompat.Builder Builder}
object must include the following:</p>
<ul>
@@ -96,7 +96,7 @@ of {@link android.app.Activity} you're starting. When you start an {@link
android.app.Activity} from a notification, you must preserve the user's expected
navigation experience. In the snippet below, clicking the notification opens a
new activity that effectively extends the behavior of the notification. In this
-case there is no need to create an artificial back stack (see
+case there is no need to create an artificial back stack (see
<a href="navigation.html">Preserving Navigation when Starting an Activity</a> for
more information):</p>
@@ -132,11 +132,11 @@ mBuilder.setContentIntent(resultPendingIntent);</pre>
<p>To issue the notification:</p>
<ul>
-<li>Get an instance of {@link android.app.NotificationManager}.</li>
+<li>Get an instance of {@link android.app.NotificationManager}.</li>
<li>Use the {@link android.app.NotificationManager#notify notify()} method to issue the
-notification. When you call {@link android.app.NotificationManager#notify notify()}, specify a notification ID.
-You can use this ID to update the notification later on. This is described in more detail in
+notification. When you call {@link android.app.NotificationManager#notify notify()}, specify a notification ID.
+You can use this ID to update the notification later on. This is described in more detail in
<a href="managing.html">Managing Notifications</a>.</li>
<li>Call {@link
@@ -152,7 +152,7 @@ NotificationCompat.Builder mBuilder;
// Sets an ID for the notification
int mNotificationId = 001;
// Gets an instance of the NotificationManager service
-NotificationManager mNotifyMgr =
+NotificationManager mNotifyMgr =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Builds the notification and issues it.
mNotifyMgr.notify(mNotificationId, mBuilder.build());
diff --git a/docs/html/training/notify-user/display-progress.jd b/docs/html/training/notify-user/display-progress.jd
index 3439571fe306..e2cf033d7b6c 100644
--- a/docs/html/training/notify-user/display-progress.jd
+++ b/docs/html/training/notify-user/display-progress.jd
@@ -59,9 +59,9 @@ trainingnavtop=true
<h2 id="FixedProgress">Display a Fixed-duration Progress Indicator</h2>
<p>
To display a determinate progress bar, add the bar to your notification by calling
- {@link android.support.v4.app.NotificationCompat.Builder#setProgress
- setProgress(max, progress, false)} and then issue the notification.
- The third argument is a boolean that indicates whether the
+ {@link android.support.v4.app.NotificationCompat.Builder#setProgress
+ setProgress(max, progress, false)} and then issue the notification.
+ The third argument is a boolean that indicates whether the
progress bar is indeterminate (<strong>true</strong>) or determinate (<strong>false</strong>).
As your operation proceeds,
increment <code>progress</code>, and update the notification. At the end of the operation,
@@ -74,7 +74,7 @@ trainingnavtop=true
You can either leave the progress bar showing when the operation is done, or remove it. In
either case, remember to update the notification text to show that the operation is complete.
To remove the progress bar, call
- {@link android.support.v4.app.NotificationCompat.Builder#setProgress
+ {@link android.support.v4.app.NotificationCompat.Builder#setProgress
setProgress(0, 0, false)}. For example:
</p>
<pre>
@@ -136,14 +136,14 @@ new Thread(
<p>
To display a continuing (indeterminate) activity indicator, add it to your notification with
{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, true)}
- and issue the notification. The first two arguments are ignored, and the third argument
+ and issue the notification. The first two arguments are ignored, and the third argument
declares that the indicator is indeterminate. The result is an indicator
that has the same style as a progress bar, except that its animation is ongoing.
</p>
<p>
Issue the notification at the beginning of the operation. The animation will run until you
modify your notification. When the operation is done, call
- {@link android.support.v4.app.NotificationCompat.Builder#setProgress
+ {@link android.support.v4.app.NotificationCompat.Builder#setProgress
setProgress(0, 0, false)} and then update the notification to remove the activity indicator.
Always do this; otherwise, the animation will run even when the operation is complete. Also
remember to change the notification text to indicate that the operation is complete.
@@ -160,7 +160,7 @@ mNotifyManager.notify(id, mBuilder.build());
</pre>
<p>
Replace the lines you've found with the following lines. Notice that the third parameter
- in the {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}
+ in the {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}
call is set to {@code true} to indicate that the progress bar is
indeterminate:
</p>
diff --git a/docs/html/training/notify-user/expanded.jd b/docs/html/training/notify-user/expanded.jd
index b65742682956..23d85d438092 100644
--- a/docs/html/training/notify-user/expanded.jd
+++ b/docs/html/training/notify-user/expanded.jd
@@ -75,7 +75,7 @@ big view give users access to same functionality:</p>
</ul>
<p>The normal view provides these features through a new activity that launches
-when the user clicks the notification. Keep this in mind as you design your notifications&mdash;first
+when the user clicks the notification. Keep this in mind as you design your notifications&mdash;first
provide the functionality in the normal view, since
this is how many users will interact with the notification.</p>
@@ -87,19 +87,19 @@ to construct and issue the notification.</p>
<p>In this snippet, the
{@link android.app.IntentService} method
-{@link android.app.IntentService#onHandleIntent onHandleIntent()} specifies the new activity
+{@link android.app.IntentService#onHandleIntent onHandleIntent()} specifies the new activity
that will be launched if the user
-clicks the notification itself. The method
-{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()}
+clicks the notification itself. The method
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()}
defines a pending intent that should be fired when the user
clicks the notification, thereby launching the activity.</p>
<pre>Intent resultIntent = new Intent(this, ResultActivity.class);
resultIntent.putExtra(CommonConstants.EXTRA_MESSAGE, msg);
-resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
+resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TASK);
-
-// Because clicking the notification launches a new ("special") activity,
+
+// Because clicking the notification launches a new ("special") activity,
// there's no need to create an artificial back stack.
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
@@ -130,8 +130,8 @@ snoozeIntent.setAction(CommonConstants.ACTION_SNOOZE);
PendingIntent piSnooze = PendingIntent.getService(this, 0, snoozeIntent, 0);
</pre>
-<p>This snippet shows how to construct the
-{@link android.support.v4.app.NotificationCompat.Builder Builder} object.
+<p>This snippet shows how to construct the
+{@link android.support.v4.app.NotificationCompat.Builder Builder} object.
It sets the style for the big
view to be "big text," and sets its content to be the reminder message. It uses
{@link android.support.v4.app.NotificationCompat.Builder#addAction addAction()}
diff --git a/docs/html/training/notify-user/index.jd b/docs/html/training/notify-user/index.jd
index 616e767873f8..57efd6512849 100644
--- a/docs/html/training/notify-user/index.jd
+++ b/docs/html/training/notify-user/index.jd
@@ -43,9 +43,9 @@ class="button">Download the sample</a>
</div>
<p>
- A notification is a user interface element that you display outside your app's normal UI to indicate
- that an event has occurred. Users can choose to view the notification while using other apps and respond
- to it when it's convenient for them.
+ A notification is a user interface element that you display outside your app's normal UI to indicate
+ that an event has occurred. Users can choose to view the notification while using other apps and respond
+ to it when it's convenient for them.
</p>
@@ -86,10 +86,10 @@ class="button">Download the sample</a>
</strong>
</dt>
<dd>
- Learn how to create a big view within an expanded notification, while still maintaining
+ Learn how to create a big view within an expanded notification, while still maintaining
backward compatibility.
</dd>
-
+
<dt>
<strong>
<a href="display-progress.html">Displaying Progress in a Notification</a>
diff --git a/docs/html/training/notify-user/navigation.jd b/docs/html/training/notify-user/navigation.jd
index b7051ab5f1fa..cdb7f3d6e0c4 100644
--- a/docs/html/training/notify-user/navigation.jd
+++ b/docs/html/training/notify-user/navigation.jd
@@ -37,7 +37,7 @@ trainingnavtop=true
</div>
</div>
<p>
- Part of designing a notification is preserving the user's expected navigation experience.
+ Part of designing a notification is preserving the user's expected navigation experience.
For a detailed discussion of this topic, see the
<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#NotificationResponse">Notifications</a>
API guide.
@@ -49,7 +49,7 @@ trainingnavtop=true
</dt>
<dd>
You're starting an {@link android.app.Activity} that's part of the application's normal
- workflow.
+ workflow.
</dd>
<dt>
Special activity
@@ -202,7 +202,7 @@ NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
Intent notifyIntent =
new Intent(new ComponentName(this, ResultActivity.class));
// Sets the Activity to start in a new, empty task
-notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
+notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TASK);
// Creates the PendingIntent
PendingIntent notifyIntent =
diff --git a/docs/html/training/run-background-service/report-status.jd b/docs/html/training/run-background-service/report-status.jd
index 41121c17e3e6..41fbb00e115f 100644
--- a/docs/html/training/run-background-service/report-status.jd
+++ b/docs/html/training/run-background-service/report-status.jd
@@ -91,7 +91,7 @@ public class RSSPullService extends IntentService {
</p>
<h2 id="ReceiveStatus">Receive Status Broadcasts from an IntentService</h2>
<p>
-
+
To receive broadcast {@link android.content.Intent} objects, use a subclass of
{@link android.content.BroadcastReceiver}. In the subclass, implement the
{@link android.content.BroadcastReceiver#onReceive BroadcastReceiver.onReceive()} callback
@@ -137,7 +137,7 @@ public class DisplayActivity extends FragmentActivity {
// The filter's action is BROADCAST_ACTION
IntentFilter mStatusIntentFilter = new IntentFilter(
Constants.BROADCAST_ACTION);
-
+
// Adds a data filter for the HTTP scheme
mStatusIntentFilter.addDataScheme("http");
...
@@ -194,6 +194,6 @@ public class DisplayActivity extends FragmentActivity {
{@link android.content.Intent}.
</p>
<p>
-
+
</p>
diff --git a/docs/html/training/sign-in/index.jd b/docs/html/training/sign-in/index.jd
index d7c8e1d397ab..a5859441d64f 100644
--- a/docs/html/training/sign-in/index.jd
+++ b/docs/html/training/sign-in/index.jd
@@ -11,8 +11,8 @@ page.trainingcourse=true
alt="Google maps sample image">
<p>
- Google Sign-In for Android lets you authenticate a user with the same credentials they use on
- Google. After a user signs in with Google, you can create more engaging experiences and drive
+ Google Sign-In for Android lets you authenticate a user with the same credentials they use on
+ Google. After a user signs in with Google, you can create more engaging experiences and drive
usage of your app.
</p>
@@ -34,8 +34,8 @@ page.trainingcourse=true
<h4>Access the profile and social graph</h4>
<p>
- After users have signed in with Google, your app can welcome them by name and display their
- picture. If your app requests social scopes, it can connect users with friends, and access
+ After users have signed in with Google, your app can welcome them by name and display their
+ picture. If your app requests social scopes, it can connect users with friends, and access
age range, language, and public profile information.<br>
<a href="https://developers.google.com/identity/sign-in/android/people" class="external-link">
Getting Profile Information</a>.
@@ -47,6 +47,6 @@ page.trainingcourse=true
The Google Android APIs are part of the Google Play services platform. To use Google features,
set up the Google Play services SDK in your app development project. For more information, see
the <a class="external-link" href=
- "https://developers.google.com/identity/sign-in/android/start-integrating">Start Integrating</a>
+ "https://developers.google.com/identity/sign-in/android/start-integrating">Start Integrating</a>
guide for Google Sign-In.
</p> \ No newline at end of file
diff --git a/docs/html/wear/preview/features/ime.jd b/docs/html/wear/preview/features/ime.jd
index 1301be9afb2a..b07736f1da30 100644
--- a/docs/html/wear/preview/features/ime.jd
+++ b/docs/html/wear/preview/features/ime.jd
@@ -19,14 +19,14 @@ page.tags="wear"
</div>
-<p>Wear 2.0 supports input methods beyond voice by extending the Android
+<p>Wear 2.0 supports input methods beyond voice by extending the Android
Input Method Framework (IMF) to Android Wear. IMF allows for virtual, on-screen
- keyboards and other input methods to be used for text entry. The IMF APIs used
- for Wear devices are the same as other form factors, though usage is slightly
+ keyboards and other input methods to be used for text entry. The IMF APIs used
+ for Wear devices are the same as other form factors, though usage is slightly
different due to limited screen real estate.</p>
-<p>Wear 2.0 comes with the system default Input Method Editor (IME)
-and opens up the IMF APIs for third-party developers to create custom input
+<p>Wear 2.0 comes with the system default Input Method Editor (IME)
+and opens up the IMF APIs for third-party developers to create custom input
methods for Wear.</p>
<p><img src="{@docRoot}wear/preview/images/new_input_methods.png"></p>
@@ -46,17 +46,17 @@ documentation for
<h2 id="invoking">Invoking an Input Method</h2>
-If you are developing an IME for Wear, remember that the
-feature is supported only on Android 6.0 (API level 23) and higher versions of
-the platform.
-To ensure that your IME can only be installed on Wearables that support input
+If you are developing an IME for Wear, remember that the
+feature is supported only on Android 6.0 (API level 23) and higher versions of
+the platform.
+To ensure that your IME can only be installed on Wearables that support input
methods beyond voice, add the following to your app's manifest:
<pre>
&lt;uses-sdk android:minSdkVersion="23" />
</pre>
-This indicates that your app requires Android 6.0 or higher.
+This indicates that your app requires Android 6.0 or higher.
For more information, see <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels</a>
- and the documentation for the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk></a>
+ and the documentation for the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk></a>
element.
<p>
To control how your app is filtered from devices that do not support Wear
@@ -67,14 +67,14 @@ IMEs (for example, on Phone), add the following to your app's manifest:
</pre>
<p>Wear provides user settings on the watch that lets the user to enable multiple
- IMEs from the list of installed IMEs. Once the users enable your IME, they
+ IMEs from the list of installed IMEs. Once the users enable your IME, they
can invoke your IME from:</p>
<ul>
-<li>A notification or an app using the
+<li>A notification or an app using the
<a href="{@docRoot}reference/android/support/v4/app/RemoteInput.html">RemoteInput</a></code> API.</li>
-<li>Wear apps with an
+<li>Wear apps with an
<a href="{@docRoot}reference/android/widget/EditText.html">EditText</a>
- field. Touching a text field places the cursor in the field and automatically
+ field. Touching a text field places the cursor in the field and automatically
displays the IME on focus.</li>
</ul>
@@ -86,10 +86,10 @@ IMEs (for example, on Phone), add the following to your app's manifest:
<ul>
<li><strong>Set Default Action</strong>
<p>
-<a href="http://developer.android.com/reference/android/support/v4/app/RemoteInput.html">{@code RemoteInput}</a>
+<a href="http://developer.android.com/reference/android/support/v4/app/RemoteInput.html">{@code RemoteInput}</a>
and Wear apps expect only single-line text entry. The ENTER key should always trigger
a call to <a href="{@docRoot}reference/android/inputmethodservice/InputMethodService.html#sendDefaultEditorAction(boolean)">sendDefaultEditorAction</a>,
- which causes the app to dismiss the keyboard and continue on to the next step
+ which causes the app to dismiss the keyboard and continue on to the next step
or action.</p>
</li>
@@ -97,22 +97,22 @@ and Wear apps expect only single-line text entry. The ENTER key should always tr
<p>
Input methods on Wear consume most of the screen, leaving very little of the
app visible; using full-screen mode ensures an optimal user experience regardless
- of the app UI. In full-screen mode, an
+ of the app UI. In full-screen mode, an
<a href="{@docRoot}reference/android/view/inputmethod/ExtractedText.html">{@code ExtractEditText}</a> provides a mirrored
view of the text field being edited and can be styled to blend with the rest of
- the input method UI. For more details on full-screen mode, see
+ the input method UI. For more details on full-screen mode, see
<a href="{@docRoot}reference/android/inputmethodservice/InputMethodService.html">InputMethodService</a>.
</p>
</li>
<li><strong>Handle InputType flags</strong>
<p>
-For privacy reasons, at a minimum you should handle the {@code InputType}
-flag {@code TYPE_TEXT_VARIATION_PASSWORD} in your IME. When your IME is in
-password mode, make sure that your keyboard is optimized for single key press
-(auto spelling correction, auto completion and gesture input are disabled).
-Most importantly, keyboard in password mode should support ASCII symbols
-regardless of the input language. For more details, see
+For privacy reasons, at a minimum you should handle the {@code InputType}
+flag {@code TYPE_TEXT_VARIATION_PASSWORD} in your IME. When your IME is in
+password mode, make sure that your keyboard is optimized for single key press
+(auto spelling correction, auto completion and gesture input are disabled).
+Most importantly, keyboard in password mode should support ASCII symbols
+regardless of the input language. For more details, see
<a href="{@docRoot}training/keyboard-input/style.html">Specifying The Input Method Type</a>.
</p>
</li>
@@ -120,9 +120,9 @@ regardless of the input language. For more details, see
<li><strong>Provide a key for switching to the next input method</strong>
<p>
Android allows users to easily switch between all IMEs supported by the platform.
- In your IME implementation, set the boolean
+ In your IME implementation, set the boolean
<a href="{@docRoot}guide/topics/text/creating-input-method.html#Switching">supportsSwitchingToNextInputMethod = true</a>
- to enable your IME to support the switching mechanism
+ to enable your IME to support the switching mechanism
(so that apps can switch to the next platform-supported IME).
</p>
</li>
diff --git a/docs/html/wear/preview/features/notifications.jd b/docs/html/wear/preview/features/notifications.jd
index c84a47002f9d..dcc09709deb3 100644
--- a/docs/html/wear/preview/features/notifications.jd
+++ b/docs/html/wear/preview/features/notifications.jd
@@ -155,7 +155,7 @@ action in the notification unless a different action is specified using
<p>If you have a chat messaging app, your notifications should use
<a href="{@docRoot}preview/features/notification-updates.html#style">{@code Notification.MessagingStyle}</a>,
which is new in Android N. Wear 2.0 uses the chat messages included
- in a <a href="{@docRoot}preview/features/notification-updates.html#style">{@code MessagingStyle}</a> notification
+ in a <a href="{@docRoot}preview/features/notification-updates.html#style">{@code MessagingStyle}</a> notification
(see <a href="{@docRoot}preview/features/notification-updates.html#style">{@code addMessage()}</a>) to provide
a rich chat app-like experience in the expanded notification.
@@ -195,7 +195,7 @@ following:
<li>Use <a href="{@docRoot}preview/features/notification-updates.html#style">{@code Notification.MessagingStyle}</a>.
</li>
<li>Call the method {@code setAllowGeneratedReplies()} for the notification action.
- For more information, see the downloadable
+ For more information, see the downloadable
<a href="{@docRoot}preview/setup-sdk.html#docs-dl">API reference</a>.
</li>
<li>Ensure that the notification action has a
diff --git a/docs/html/work/cosu.jd b/docs/html/work/cosu.jd
index 8bc54d49bc8e..f66006bab1f5 100644
--- a/docs/html/work/cosu.jd
+++ b/docs/html/work/cosu.jd
@@ -223,7 +223,7 @@ and {@link android.app.Activity#onPause()}
</ul>
<p>
-Starting from Marshmallow, if your app is whitelisted by an EMM using {@link
+Starting from Marshmallow, if your app is whitelisted by an EMM using {@link
android.app.admin.DevicePolicyManager#setLockTaskPackages setLockTaskPackages},
your activities can automatically start lock task mode when the app is
launched.
@@ -253,15 +253,15 @@ launch into lock task mode. Non-privileged apps are treated as normal.
<li>
The default value of the {@link android.R.attr#lockTaskMode} attribute is
-normal. When this attribute is set to normal, tasks don’t launch into
-{@link android.R.attr#lockTaskMode}, unless {@link android.app.Activity#startLockTask()}
+normal. When this attribute is set to normal, tasks don’t launch into
+{@link android.R.attr#lockTaskMode}, unless {@link android.app.Activity#startLockTask()}
is called. To call {@link android.app.Activity#startLockTask()},
-applications still need to be whitelisted using
-{@link android.app.admin.DevicePolicyManager#setLockTaskPackages setLockTaskPackages},
+applications still need to be whitelisted using
+{@link android.app.admin.DevicePolicyManager#setLockTaskPackages setLockTaskPackages},
otherwise, the user sees a dialog to approve entering pinned mode.
</li>
</ul>
-
+
<p>To have your activity <em>automatically</em> enter {@link android.R.attr#lockTaskMode},
change the value of this attribute to <code>if_whitelisted</code>.
Doing so causes your app to behave in this manner:
@@ -289,7 +289,7 @@ Example XML as follows:
<p>
Given either of these options, you still need to create a mechanism for
calling {@link android.app.Activity#stopLockTask()} so that users can
-exit {@link android.R.attr#lockTaskMode}.
+exit {@link android.R.attr#lockTaskMode}.
</p>
<h2 id="create-dpc">
@@ -298,7 +298,7 @@ exit {@link android.R.attr#lockTaskMode}.
<p>
To manage applications in COSU, you need a DPC running as device
-owner to set several policies on the device.
+owner to set several policies on the device.
</p>
<p class="note">
diff --git a/docs/html/work/device-management-policy.jd b/docs/html/work/device-management-policy.jd
index d564b8969512..fd0915083c70 100644
--- a/docs/html/work/device-management-policy.jd
+++ b/docs/html/work/device-management-policy.jd
@@ -14,7 +14,7 @@ parent.link=index.html
<li><a href="#ActivateDeviceAdmin">Activate the Device Administrator</a></li>
<li><a href="#ImplementDevicePolicyController">Implement the Device Policy Controller</a></li>
</ol>
-
+
<!-- related docs (NOT javadocs) -->
<h2>You should also read</h2>
<ul>
diff --git a/graphics/java/android/graphics/drawable/VectorDrawable.java b/graphics/java/android/graphics/drawable/VectorDrawable.java
index 4f6368c69975..dc1d18f3b2bd 100644
--- a/graphics/java/android/graphics/drawable/VectorDrawable.java
+++ b/graphics/java/android/graphics/drawable/VectorDrawable.java
@@ -235,7 +235,7 @@ public class VectorDrawable extends Drawable {
private final Rect mTmpBounds = new Rect();
public VectorDrawable() {
- this(new VectorDrawableState(), null);
+ this(new VectorDrawableState(null), null);
}
/**
@@ -830,7 +830,8 @@ public class VectorDrawable extends Drawable {
private static final int NATIVE_ALLOCATION_SIZE = 316;
- // Deep copy for mutate() or implicitly mutate.
+ // If copy is not null, deep copy the given VectorDrawableState. Otherwise, create a
+ // native vector drawable tree with an empty root group.
public VectorDrawableState(VectorDrawableState copy) {
if (copy != null) {
mThemeAttrs = copy.mThemeAttrs;
@@ -851,8 +852,11 @@ public class VectorDrawable extends Drawable {
if (copy.mRootName != null) {
mVGTargetsMap.put(copy.mRootName, this);
}
- onTreeConstructionFinished();
+ } else {
+ mRootGroup = new VGroup();
+ createNativeTree(mRootGroup);
}
+ onTreeConstructionFinished();
}
private void createNativeTree(VGroup rootGroup) {
@@ -870,7 +874,8 @@ public class VectorDrawable extends Drawable {
VMRuntime.getRuntime().registerNativeAllocation(NATIVE_ALLOCATION_SIZE);
}
-
+ // This should be called every time after a new RootGroup and all its subtrees are created
+ // (i.e. in constructors of VectorDrawableState and in inflate).
void onTreeConstructionFinished() {
mRootGroup.setTree(mNativeTree);
mAllocationOfAllNodes = mRootGroup.getNativeSize();
@@ -918,11 +923,6 @@ public class VectorDrawable extends Drawable {
|| super.canApplyTheme();
}
- public VectorDrawableState() {
- mRootGroup = new VGroup();
- createNativeTree(mRootGroup);
- }
-
@Override
public Drawable newDrawable() {
return new VectorDrawable(this, null);
diff --git a/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java b/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java
index 8c20ddcc33ad..f36c00ce8b86 100644
--- a/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java
+++ b/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java
@@ -228,7 +228,7 @@ public class AndroidKeyStoreProvider extends Provider {
if (exportResult.resultCode != KeyStore.NO_ERROR) {
throw (UnrecoverableKeyException)
new UnrecoverableKeyException("Failed to obtain X.509 form of public key")
- .initCause(KeyStore.getKeyStoreException(errorCode));
+ .initCause(KeyStore.getKeyStoreException(exportResult.resultCode));
}
final byte[] x509EncodedPublicKey = exportResult.exportData;
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 5003c6aefb8b..bfcb0e5a01f1 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -234,6 +234,7 @@ bool CanvasContext::isSwapChainStuffed() {
}
// All signs point to a stuffed swap chain
+ ATRACE_NAME("swap chain stuffed");
return true;
}
diff --git a/media/java/android/media/ImageReader.java b/media/java/android/media/ImageReader.java
index ec2d4bc9170f..682512c91708 100644
--- a/media/java/android/media/ImageReader.java
+++ b/media/java/android/media/ImageReader.java
@@ -512,11 +512,11 @@ public class ImageReader implements AutoCloseable {
mAcquiredImages.clear();
nativeClose();
- }
- if (mEstimatedNativeAllocBytes > 0) {
- VMRuntime.getRuntime().registerNativeFree(mEstimatedNativeAllocBytes);
- mEstimatedNativeAllocBytes = 0;
+ if (mEstimatedNativeAllocBytes > 0) {
+ VMRuntime.getRuntime().registerNativeFree(mEstimatedNativeAllocBytes);
+ mEstimatedNativeAllocBytes = 0;
+ }
}
}
diff --git a/packages/EasterEgg/src/com/android/egg/neko/NekoLand.java b/packages/EasterEgg/src/com/android/egg/neko/NekoLand.java
index 86f813e0647a..3629162cdd47 100644
--- a/packages/EasterEgg/src/com/android/egg/neko/NekoLand.java
+++ b/packages/EasterEgg/src/com/android/egg/neko/NekoLand.java
@@ -24,6 +24,7 @@ import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
+import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.media.MediaScannerConnection;
import android.net.Uri;
@@ -50,6 +51,9 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
public class NekoLand extends Activity implements PrefsListener {
public static boolean DEBUG = false;
@@ -98,7 +102,19 @@ public class NekoLand extends Activity implements PrefsListener {
cats[i] = Cat.create(this);
}
} else {
- cats = mPrefs.getCats().toArray(new Cat[0]);
+ final float[] hsv = new float[3];
+ List<Cat> list = mPrefs.getCats();
+ Collections.sort(list, new Comparator<Cat>() {
+ @Override
+ public int compare(Cat cat, Cat cat2) {
+ Color.colorToHSV(cat.getBodyColor(), hsv);
+ float bodyH1 = hsv[0];
+ Color.colorToHSV(cat2.getBodyColor(), hsv);
+ float bodyH2 = hsv[0];
+ return Float.compare(bodyH1, bodyH2);
+ }
+ });
+ cats = list.toArray(new Cat[0]);
}
mAdapter.setCats(cats);
return cats.length;
diff --git a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
index a3070bddd0f8..78b99274e444 100644
--- a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
+++ b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
@@ -484,6 +484,8 @@ public class ExternalStorageProvider extends DocumentsProvider {
@Override
public void deleteDocument(String docId) throws FileNotFoundException {
final File file = getFileForDocId(docId);
+ final File visibleFile = getFileForDocId(docId, true);
+
final boolean isDirectory = file.isDirectory();
if (isDirectory) {
FileUtils.deleteContents(file);
@@ -492,7 +494,6 @@ public class ExternalStorageProvider extends DocumentsProvider {
throw new IllegalStateException("Failed to delete " + file);
}
- final File visibleFile = getFileForDocId(docId, true);
if (visibleFile != null) {
final ContentResolver resolver = getContext().getContentResolver();
final Uri externalUri = MediaStore.Files.getContentUri("external");
diff --git a/packages/Keyguard/src/com/android/keyguard/NumPadKey.java b/packages/Keyguard/src/com/android/keyguard/NumPadKey.java
index 2ff7e121721a..1518bdced99a 100644
--- a/packages/Keyguard/src/com/android/keyguard/NumPadKey.java
+++ b/packages/Keyguard/src/com/android/keyguard/NumPadKey.java
@@ -23,6 +23,7 @@ import android.os.SystemClock;
import android.util.AttributeSet;
import android.view.HapticFeedbackConstants;
import android.view.LayoutInflater;
+import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
@@ -53,8 +54,7 @@ public class NumPadKey extends ViewGroup {
if (mTextView != null && mTextView.isEnabled()) {
mTextView.append(Character.forDigit(mDigit, 10));
}
- userActivity();
- doHapticKeyClick();
+ userActivity();;
}
};
@@ -126,6 +126,14 @@ public class NumPadKey extends ViewGroup {
}
@Override
+ public boolean onTouchEvent(MotionEvent event) {
+ if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
+ doHapticKeyClick();
+ }
+ return super.onTouchEvent(event);
+ }
+
+ @Override
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
diff --git a/packages/SettingsLib/src/com/android/settingslib/HelpUtils.java b/packages/SettingsLib/src/com/android/settingslib/HelpUtils.java
index 579116852cf3..21116b89e73b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/HelpUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/HelpUtils.java
@@ -26,6 +26,7 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources.Theme;
import android.content.res.TypedArray;
import android.net.Uri;
+import android.provider.Settings.Global;
import android.text.TextUtils;
import android.util.Log;
import android.util.TypedValue;
@@ -92,6 +93,9 @@ public class HelpUtils {
*/
public static boolean prepareHelpMenuItem(final Activity activity, MenuItem helpMenuItem,
String helpUriString, String backupContext) {
+ if (Global.getInt(activity.getContentResolver(), Global.DEVICE_PROVISIONED, 0) == 0) {
+ return false;
+ }
if (TextUtils.isEmpty(helpUriString)) {
// The help url string is empty or null, so set the help menu item to be invisible.
helpMenuItem.setVisible(false);
@@ -129,6 +133,9 @@ public class HelpUtils {
public static Intent getHelpIntent(Context context, String helpUriString,
String backupContext) {
+ if (Global.getInt(context.getContentResolver(), Global.DEVICE_PROVISIONED, 0) == 0) {
+ return null;
+ }
// Try to handle as Intent Uri, otherwise just treat as Uri.
try {
Intent intent = Intent.parseUri(helpUriString,
diff --git a/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java b/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java
index d368de93e263..151e0eafd96d 100644
--- a/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java
+++ b/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java
@@ -16,18 +16,11 @@
package com.android.settingslib;
import android.content.Context;
-import android.net.wifi.WifiManager;
import android.os.SystemProperties;
import android.telephony.CarrierConfigManager;
public class TetherUtil {
- public static boolean setWifiTethering(boolean enable, Context context) {
- final WifiManager wifiManager =
- (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
- return wifiManager.setWifiApEnabled(null, enable);
- }
-
private static boolean isEntitlementCheckRequired(Context context) {
final CarrierConfigManager configManager = (CarrierConfigManager) context
.getSystemService(Context.CARRIER_CONFIG_SERVICE);
diff --git a/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java b/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java
index 78d7c569fccd..a99e66873958 100644
--- a/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java
@@ -20,6 +20,7 @@ import com.android.settingslib.R;
import android.content.Context;
import android.content.res.Resources;
+import android.hardware.display.DisplayManager;
import android.os.AsyncTask;
import android.os.RemoteException;
import android.util.DisplayMetrics;
@@ -95,7 +96,9 @@ public class DisplayDensityUtils {
}
final Resources res = context.getResources();
- final DisplayMetrics metrics = res.getDisplayMetrics();
+ final DisplayMetrics metrics = new DisplayMetrics();
+ context.getDisplay().getRealMetrics(metrics);
+
final int currentDensity = metrics.densityDpi;
int currentDensityIndex = -1;
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java
index b9c758cbbc59..e70cc29a7744 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java
@@ -27,6 +27,7 @@ import android.graphics.drawable.Icon;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
+import android.provider.Settings.Global;
import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
@@ -115,6 +116,8 @@ public class TileUtils {
public static List<DashboardCategory> getCategories(Context context,
HashMap<Pair<String, String>, Tile> cache) {
final long startTime = System.currentTimeMillis();
+ boolean setup = Global.getInt(context.getContentResolver(), Global.DEVICE_PROVISIONED, 0)
+ != 0;
ArrayList<Tile> tiles = new ArrayList<>();
UserManager userManager = UserManager.get(context);
for (UserHandle user : userManager.getUserProfiles()) {
@@ -127,7 +130,9 @@ public class TileUtils {
getTilesForAction(context, user, MANUFACTURER_SETTINGS, cache,
MANUFACTURER_DEFAULT_CATEGORY, tiles, false);
}
- getTilesForAction(context, user, EXTRA_SETTINGS_ACTION, cache, null, tiles, false);
+ if (setup) {
+ getTilesForAction(context, user, EXTRA_SETTINGS_ACTION, cache, null, tiles, false);
+ }
}
HashMap<String, DashboardCategory> categoryMap = new HashMap<>();
for (Tile tile : tiles) {
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index 2efefb3bc1aa..f1789ea03682 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -142,7 +142,7 @@
<activity
android:name=".BugreportWarningActivity"
- android:theme="@android:style/Theme.Material.Light.Dialog.Alert"
+ android:theme="@android:style/Theme.DeviceDefault.Light.Dialog.Alert"
android:finishOnCloseSystemDialogs="true"
android:excludeFromRecents="true"
android:exported="false" />
diff --git a/packages/Shell/res/layout/confirm_repeat.xml b/packages/Shell/res/layout/confirm_repeat.xml
index ad90af186c05..9f1d53e7799a 100644
--- a/packages/Shell/res/layout/confirm_repeat.xml
+++ b/packages/Shell/res/layout/confirm_repeat.xml
@@ -18,10 +18,10 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingStart="16dip"
- android:paddingEnd="16dip"
- android:paddingTop="8dip"
- android:paddingBottom="16dip"
+ android:paddingStart="24dip"
+ android:paddingEnd="24dip"
+ android:paddingTop="24dip"
+ android:paddingBottom="8dip"
android:orientation="vertical"
android:keepScreenOn="true">
<ScrollView
diff --git a/packages/Shell/res/values/strings.xml b/packages/Shell/res/values/strings.xml
index 3d6643d8b0a0..5dfac95e3527 100644
--- a/packages/Shell/res/values/strings.xml
+++ b/packages/Shell/res/values/strings.xml
@@ -25,8 +25,8 @@
<!-- Content notification indicating a bugreport is being updated before it can be shared, asking the user to wait [CHAR LIMIT=50] -->
<string name="bugreport_updating_wait">Please wait\u2026</string>
- <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
- <string name="bugreport_finished_text" product="watch">Swipe left to share your bug report</string>
+ <!-- Text of notification indicating that bugreport will appear on the phone. [CHAR LIMIT=100] -->
+ <string name="bugreport_finished_text" product="watch">The bug report will appear on the phone shortly</string>
<!-- Text of notification indicating that tapping will share the captured bugreport. [CHAR LIMIT=100] -->
<string name="bugreport_finished_text" product="default">Tap to share your bug report</string>
<!-- Text of notification indicating that swipe left will share the captured bugreport, but giving user the option to wait for the screenshot. [CHAR LIMIT=100] -->
diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java
index 6bc4df71fc5c..f04df4b64f84 100644
--- a/packages/Shell/src/com/android/shell/BugreportProgressService.java
+++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java
@@ -212,6 +212,8 @@ public class BugreportProgressService extends Service {
private static final Bundle sNotificationBundle = new Bundle();
+ private boolean mIsWatch;
+
@Override
public void onCreate() {
mContext = getApplicationContext();
@@ -225,6 +227,9 @@ public class BugreportProgressService extends Service {
Log.w(TAG, "Could not create directory " + mScreenshotsDir);
}
}
+ final Configuration conf = mContext.getResources().getConfiguration();
+ mIsWatch = (conf.uiMode & Configuration.UI_MODE_TYPE_MASK) ==
+ Configuration.UI_MODE_TYPE_WATCH;
}
@Override
@@ -439,56 +444,68 @@ public class BugreportProgressService extends Service {
return;
}
+ if (info.finished) {
+ Log.w(TAG, "Not sending progress notification because bugreport has finished already ("
+ + info + ")");
+ return;
+ }
+
final NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2);
nf.setMaximumFractionDigits(2);
final String percentageText = nf.format((double) info.progress / info.max);
- final Action cancelAction = new Action.Builder(null, mContext.getString(
- com.android.internal.R.string.cancel), newCancelIntent(mContext, info)).build();
- final Intent infoIntent = new Intent(mContext, BugreportProgressService.class);
- infoIntent.setAction(INTENT_BUGREPORT_INFO_LAUNCH);
- infoIntent.putExtra(EXTRA_ID, info.id);
- final PendingIntent infoPendingIntent =
- PendingIntent.getService(mContext, info.id, infoIntent,
- PendingIntent.FLAG_UPDATE_CURRENT);
- final Action infoAction = new Action.Builder(null,
- mContext.getString(R.string.bugreport_info_action),
- infoPendingIntent).build();
- final Intent screenshotIntent = new Intent(mContext, BugreportProgressService.class);
- screenshotIntent.setAction(INTENT_BUGREPORT_SCREENSHOT);
- screenshotIntent.putExtra(EXTRA_ID, info.id);
- PendingIntent screenshotPendingIntent = mTakingScreenshot ? null : PendingIntent
- .getService(mContext, info.id, screenshotIntent,
- PendingIntent.FLAG_UPDATE_CURRENT);
- final Action screenshotAction = new Action.Builder(null,
- mContext.getString(R.string.bugreport_screenshot_action),
- screenshotPendingIntent).build();
-
- final String title = mContext.getString(R.string.bugreport_in_progress_title, info.id);
+
+ String title = mContext.getString(R.string.bugreport_in_progress_title, info.id);
+
+ // TODO: Remove this workaround when notification progress is implemented on Wear.
+ if (mIsWatch) {
+ nf.setMinimumFractionDigits(0);
+ nf.setMaximumFractionDigits(0);
+ final String watchPercentageText = nf.format((double) info.progress / info.max);
+ title = title + "\n" + watchPercentageText;
+ }
final String name =
info.name != null ? info.name : mContext.getString(R.string.bugreport_unnamed);
- final Notification notification = newBaseNotification(mContext)
+ final Notification.Builder builder = newBaseNotification(mContext)
.setContentTitle(title)
.setTicker(title)
.setContentText(name)
.setProgress(info.max, info.progress, false)
- .setOngoing(true)
- .setContentIntent(infoPendingIntent)
- .setActions(infoAction, screenshotAction, cancelAction)
- .build();
-
- if (info.finished) {
- Log.w(TAG, "Not sending progress notification because bugreport has finished already ("
- + info + ")");
- return;
+ .setOngoing(true);
+
+ // Wear bugreport doesn't need the bug info dialog, screenshot and cancel action.
+ if (!mIsWatch) {
+ final Action cancelAction = new Action.Builder(null, mContext.getString(
+ com.android.internal.R.string.cancel), newCancelIntent(mContext, info)).build();
+ final Intent infoIntent = new Intent(mContext, BugreportProgressService.class);
+ infoIntent.setAction(INTENT_BUGREPORT_INFO_LAUNCH);
+ infoIntent.putExtra(EXTRA_ID, info.id);
+ final PendingIntent infoPendingIntent =
+ PendingIntent.getService(mContext, info.id, infoIntent,
+ PendingIntent.FLAG_UPDATE_CURRENT);
+ final Action infoAction = new Action.Builder(null,
+ mContext.getString(R.string.bugreport_info_action),
+ infoPendingIntent).build();
+ final Intent screenshotIntent = new Intent(mContext, BugreportProgressService.class);
+ screenshotIntent.setAction(INTENT_BUGREPORT_SCREENSHOT);
+ screenshotIntent.putExtra(EXTRA_ID, info.id);
+ PendingIntent screenshotPendingIntent = mTakingScreenshot ? null : PendingIntent
+ .getService(mContext, info.id, screenshotIntent,
+ PendingIntent.FLAG_UPDATE_CURRENT);
+ final Action screenshotAction = new Action.Builder(null,
+ mContext.getString(R.string.bugreport_screenshot_action),
+ screenshotPendingIntent).build();
+ builder.setContentIntent(infoPendingIntent)
+ .setActions(infoAction, screenshotAction, cancelAction);
}
+
if (DEBUG) {
Log.d(TAG, "Sending 'Progress' notification for id " + info.id + " (pid " + info.pid
+ "): " + percentageText);
}
- sendForegroundabledNotification(info.id, notification);
+ sendForegroundabledNotification(info.id, builder.build());
}
private void sendForegroundabledNotification(int id, Notification notification) {
@@ -854,10 +871,7 @@ public class BugreportProgressService extends Service {
// Stop running on foreground, otherwise share notification cannot be dismissed.
stopForegroundWhenDone(id);
- final Configuration conf = mContext.getResources().getConfiguration();
- if ((conf.uiMode & Configuration.UI_MODE_TYPE_MASK) != Configuration.UI_MODE_TYPE_WATCH) {
- triggerLocalNotification(mContext, info);
- }
+ triggerLocalNotification(mContext, info);
}
/**
diff --git a/packages/SystemUI/res/drawable/recents_stack_action_background.xml b/packages/SystemUI/res/drawable/recents_stack_action_background.xml
new file mode 100644
index 000000000000..2a40dd0ec613
--- /dev/null
+++ b/packages/SystemUI/res/drawable/recents_stack_action_background.xml
@@ -0,0 +1,25 @@
+<!--
+Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="?android:attr/colorControlHighlight">
+ <item android:id="@android:id/mask">
+ <shape>
+ <corners android:radius="@dimen/recents_task_view_rounded_corners_radius" />
+ <solid android:color="@android:color/white" />
+ </shape>
+ </item>
+</ripple> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/recents_stack_action_button.xml b/packages/SystemUI/res/layout/recents_stack_action_button.xml
index 43b3de1a0244..541000b78f8b 100644
--- a/packages/SystemUI/res/layout/recents_stack_action_button.xml
+++ b/packages/SystemUI/res/layout/recents_stack_action_button.xml
@@ -31,6 +31,6 @@
android:shadowDy="2"
android:shadowRadius="5"
android:fontFamily="sans-serif-medium"
- android:background="?android:selectableItemBackground"
+ android:background="@drawable/recents_stack_action_background"
android:visibility="invisible"
android:forceHasOverlappingRendering="false" />
diff --git a/packages/SystemUI/res/values-af/config.xml b/packages/SystemUI/res/values-af/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-af/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 536a50b1a3a6..847bdb14ee53 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Swerwing"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g>-limiet"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> waarskuwing"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Werkmodus"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Aandbeligting"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Aandbeligting is aan, tik om af te skakel"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Aandbeligting is af, tik om aan te skakel"</string>
<string name="recents_empty_message" msgid="808480104164008572">"Geen onlangse items nie"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Jy het alles toegemaak"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Programinligting"</string>
diff --git a/packages/SystemUI/res/values-am/config.xml b/packages/SystemUI/res/values-am/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-am/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 2c13ff158482..1d7b2238a797 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"ኤሠቲ ኢ"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"á‹áˆ‚ብን በማዛወር ላይ"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ገደብ"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"የ<xliff:g id="DATA_LIMIT">%s</xliff:g> ማስጠንቀቂያ"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"የሥራ áˆáŠá‰³"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"የáˆáˆ½á‰µ ብርሃን"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"የáˆáˆ½á‰µ ብርሃን በርቷáˆá£ ለማጥá‹á‰µ መታ ያድርጉ"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"የáˆáˆ½á‰µ ብርሃን ጠáቷáˆá£ ለማብራት መታ ያድርጉ"</string>
<string name="recents_empty_message" msgid="808480104164008572">"áˆáŠ•áˆ á‹¨á‰…áˆ­á‰¥ ጊዜ ንጥሎች የሉáˆ"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"áˆáˆ‰áŠ•áˆ áŠáŒˆáˆ­ አጽድተዋáˆ"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"የመተáŒá‰ áˆªá‹« መረጃ"</string>
diff --git a/packages/SystemUI/res/values-ar/config.xml b/packages/SystemUI/res/values-ar/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ar/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 3bcd0a285234..3090efe181c7 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -149,6 +149,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"شبكة الجيل الرابع"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"شبكة الجيل الرابع أو أحدث"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"تجوال"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -326,6 +327,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"قيد <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"تحذير <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"وضع العمل"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"إضاءة ليلية"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"الإضاءة الليلية قيد العمل، انقر لإيقاÙها."</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"الإضاءة الليلية قيد Ø§Ù„Ø¥ÙŠÙ‚Ø§ÙØŒ انقر لتشغيلها."</string>
<string name="recents_empty_message" msgid="808480104164008572">"ليست هناك عناصر تم استخدامها مؤخرًا"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"لقد محوتَ كل شيء"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"معلومات التطبيق"</string>
diff --git a/packages/SystemUI/res/values-az-rAZ/config.xml b/packages/SystemUI/res/values-az-rAZ/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-az-rAZ/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-az-rAZ/strings.xml b/packages/SystemUI/res/values-az-rAZ/strings.xml
index a129a43a0853..8a1cda4f7f02 100644
--- a/packages/SystemUI/res/values-az-rAZ/strings.xml
+++ b/packages/SystemUI/res/values-az-rAZ/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Rominq"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> xəbərdarlığı"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"İş rejimi"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Son elementlər yoxdur"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Hərşeyi təmizlədiniz"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Tətbiq haqqında"</string>
diff --git a/packages/SystemUI/res/values-bg/config.xml b/packages/SystemUI/res/values-bg/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-bg/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index f34130e5fd05..177826fd1ea8 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роуминг"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Ограничение от <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Предупреждение: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Работен режим"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"ÐÑма Ñкорошни елементи"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ИзчиÑтихте вÑичко"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° приложението"</string>
diff --git a/packages/SystemUI/res/values-bn-rBD/config.xml b/packages/SystemUI/res/values-bn-rBD/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-bn-rBD/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-bn-rBD/strings.xml b/packages/SystemUI/res/values-bn-rBD/strings.xml
index 93207c418ee8..a9dc759190de 100644
--- a/packages/SystemUI/res/values-bn-rBD/strings.xml
+++ b/packages/SystemUI/res/values-bn-rBD/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"রোমিং"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"সীমা <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> সতরà§à¦•তা"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"কাজের মোড"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"কোনো সামà§à¦ªà§à¦°à¦¤à¦¿à¦• আইটেম নেই"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"আপনি সবকিছৠসাফ করেছেন"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশানের তথà§à¦¯"</string>
diff --git a/packages/SystemUI/res/values-ca/config.xml b/packages/SystemUI/res/values-ca/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ca/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index f680f9dd9d92..14517da259ca 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Itinerància"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Vora"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Límit: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advertiment: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Mode de feina"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"No hi ha cap element recent"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Ho has esborrat tot"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Informació de l\'aplicació"</string>
diff --git a/packages/SystemUI/res/values-cs/config.xml b/packages/SystemUI/res/values-cs/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-cs/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 8a290e438592..2f74c55ba1f3 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -147,6 +147,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -324,6 +326,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limit: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Upozornění při <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Pracovní režim"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Žádné nedávné položky"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Vše je vymazáno"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Informace o aplikaci"</string>
diff --git a/packages/SystemUI/res/values-da/config.xml b/packages/SystemUI/res/values-da/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-da/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 8ebf9fd5dd16..cdb731729a9f 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"Over 4G"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Grænse: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advarsel ved <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Arbejdstilstand"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Ingen nye elementer"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Du har ryddet alt"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Oplysninger om applikationen"</string>
diff --git a/packages/SystemUI/res/values-de/config.xml b/packages/SystemUI/res/values-de/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-de/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 5a0bc1093300..cddd2ef1b44f 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> Datenlimit"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Warnung für <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Arbeitsmodus"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Keine kürzlich verwendeten Elemente"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Du hast alles gelöscht"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"App-Info"</string>
diff --git a/packages/SystemUI/res/values-el/config.xml b/packages/SystemUI/res/values-el/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-el/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 8f563307bd8c..9f6478cb4353 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ΠεÏιαγωγή"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"ÎŒÏιο <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"ΠÏοειδοποίηση για <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"ΛειτουÏγία εÏγασίας"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Δεν υπάÏχουν Ï€Ïόσφατα στοιχεία"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Έχει γίνει εκκαθάÏιση όλων των στοιχείων"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"ΠληÏοφοÏίες εφαÏμογής"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/config.xml b/packages/SystemUI/res/values-en-rAU/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rAU/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index beb29b7a488e..a89afb626b2b 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Work mode"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Night Light"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Night Light on, tap to turn off"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Night Light off, tap to turn on"</string>
<string name="recents_empty_message" msgid="808480104164008572">"No recent items"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"You\'ve cleared everything"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Application Info"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/config.xml b/packages/SystemUI/res/values-en-rGB/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rGB/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index beb29b7a488e..a89afb626b2b 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Work mode"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Night Light"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Night Light on, tap to turn off"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Night Light off, tap to turn on"</string>
<string name="recents_empty_message" msgid="808480104164008572">"No recent items"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"You\'ve cleared everything"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Application Info"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/config.xml b/packages/SystemUI/res/values-en-rIN/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index beb29b7a488e..a89afb626b2b 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Work mode"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Night Light"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Night Light on, tap to turn off"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Night Light off, tap to turn on"</string>
<string name="recents_empty_message" msgid="808480104164008572">"No recent items"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"You\'ve cleared everything"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Application Info"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/config.xml b/packages/SystemUI/res/values-es-rUS/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-es-rUS/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index d81f7cdd75ae..69db6dc0b6f9 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Límite de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advertencia de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modo de trabajo"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"No hay elementos recientes"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Todo borrado"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Información de la aplicación"</string>
diff --git a/packages/SystemUI/res/values-es/config.xml b/packages/SystemUI/res/values-es/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-es/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 902a676bfd5b..c255669744ac 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Itinerancia"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Tipo Edge"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Límite de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advertencia de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modo de trabajo"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"No hay elementos recientes"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Has rechazado todo"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Información de la aplicación"</string>
diff --git a/packages/SystemUI/res/values-et-rEE/config.xml b/packages/SystemUI/res/values-et-rEE/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-et-rEE/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-et-rEE/strings.xml b/packages/SystemUI/res/values-et-rEE/strings.xml
index fd5115243208..38c1ed43f86c 100644
--- a/packages/SystemUI/res/values-et-rEE/strings.xml
+++ b/packages/SystemUI/res/values-et-rEE/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Rändlus"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Serv"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limiit: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> hoiatus"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Töörežiim"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Hiljutisi üksusi pole"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Olete kõik ära kustutanud"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Rakenduste teave"</string>
diff --git a/packages/SystemUI/res/values-eu-rES/config.xml b/packages/SystemUI/res/values-eu-rES/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-eu-rES/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-eu-rES/strings.xml b/packages/SystemUI/res/values-eu-rES/strings.xml
index 28804015f111..614aa0bf2a36 100644
--- a/packages/SystemUI/res/values-eu-rES/strings.xml
+++ b/packages/SystemUI/res/values-eu-rES/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Ibiltaritza"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Muga: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Abisua: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Lan modua"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Ez dago azkenaldi honetako ezer"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Dena garbitu duzu"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Aplikazioaren informazioa"</string>
diff --git a/packages/SystemUI/res/values-fa/config.xml b/packages/SystemUI/res/values-fa/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-fa/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index ab6b5255116e..7ce3fce5b6f2 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+‎"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+‎"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"رومینگ"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> محدودیت"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"هشدار <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"حالت کار"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"نور شب"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"نور شب روشن است، برای خاموش‌کردن آن ضربه بزنید"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"نور شب خاموش است، برای روشن‌شدن آن ضربه بزنید"</string>
<string name="recents_empty_message" msgid="808480104164008572">"بدون موارد اخیر"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"همه‌چیز را پاک کرده‌اید"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"اطلاعات برنامه"</string>
diff --git a/packages/SystemUI/res/values-fi/config.xml b/packages/SystemUI/res/values-fi/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-fi/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index c91d3cbf0801..e588a26ba8c1 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"kiintiö <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> – varoitus"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Työtila"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Yövalo"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Yövalo on käytössä. Poista se käytöstä koskettamalla."</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Yövalo ei ole käytössä. Ota se käyttöön koskettamalla."</string>
<string name="recents_empty_message" msgid="808480104164008572">"Ei viimeaikaisia kohteita"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Kaikki on hoidettu."</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Sovellustiedot"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/config.xml b/packages/SystemUI/res/values-fr-rCA/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-fr-rCA/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 5efe3a08d9eb..320385ac09f6 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Itinérance"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limite : <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Avertissement : <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Mode Travail"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Aucun élément récent"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Vous avez tout effacé"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Détails de l\'application"</string>
diff --git a/packages/SystemUI/res/values-fr/config.xml b/packages/SystemUI/res/values-fr/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-fr/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index f59b456dfc33..7912f2578102 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Itinérance"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> au maximum"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Avertissement : <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Mode Travail"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Aucun élément récent"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Vous avez tout effacé."</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Infos application"</string>
diff --git a/packages/SystemUI/res/values-gl-rES/config.xml b/packages/SystemUI/res/values-gl-rES/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-gl-rES/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-gl-rES/strings.xml b/packages/SystemUI/res/values-gl-rES/strings.xml
index 27a3eb32940e..7f511f5aa393 100644
--- a/packages/SystemUI/res/values-gl-rES/strings.xml
+++ b/packages/SystemUI/res/values-gl-rES/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Itinerancia"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Límite de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advertencia <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modo de traballo"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Non hai elementos recentes"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Borraches todo"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Información da aplicación"</string>
diff --git a/packages/SystemUI/res/values-gu-rIN/config.xml b/packages/SystemUI/res/values-gu-rIN/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-gu-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-gu-rIN/strings.xml b/packages/SystemUI/res/values-gu-rIN/strings.xml
index f13436c6f4a2..25e281319317 100644
--- a/packages/SystemUI/res/values-gu-rIN/strings.xml
+++ b/packages/SystemUI/res/values-gu-rIN/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"રોમિંગ"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> મરà«àª¯àª¾àª¦àª¾"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ચેતવણી"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"કારà«àª¯ મોડ"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"કોઇ તાજેતરની આઇટમà«àª¸ નથી"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"તમે બધà«àª‚ સાફ કરà«àª¯à«àª‚"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"àªàªªà«àª²àª¿àª•ેશન માહિતી"</string>
diff --git a/packages/SystemUI/res/values-hi/config.xml b/packages/SystemUI/res/values-hi/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-hi/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 6f4e519deade..80c9a621f28f 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"रोमिंग"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"किनारा"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> सीमा"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> चेतावनी"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"कारà¥à¤¯ मोड"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"हाल ही का कोई आइटम नहीं"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"आपने सब कà¥à¤› साफ़ कर दिया है"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"à¤à¤ªà¥â€à¤²à¤¿à¤•ेशन जानकारी"</string>
diff --git a/packages/SystemUI/res/values-hr/config.xml b/packages/SystemUI/res/values-hr/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-hr/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 0a8a788a4307..2aa649956cb6 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -146,6 +146,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G i više"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"OgraniÄenje od <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Upozorenje <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"NaÄin rada"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Nema nedavnih stavki"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Izbrisali ste sve"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Informacije o aplikaciji"</string>
diff --git a/packages/SystemUI/res/values-hu/config.xml b/packages/SystemUI/res/values-hu/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-hu/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index b4643ceae646..030cafc24270 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Barangolás"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> korlát"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Figyelem! <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Munka mód"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Nincsenek mostanában használt elemek"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Mindent törölt"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Az alkalmazás adatai"</string>
diff --git a/packages/SystemUI/res/values-hy-rAM/config.xml b/packages/SystemUI/res/values-hy-rAM/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-hy-rAM/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-hy-rAM/strings.xml b/packages/SystemUI/res/values-hy-rAM/strings.xml
index e0311118bd7f..11f5c6a12c78 100644
--- a/packages/SystemUI/res/values-hy-rAM/strings.xml
+++ b/packages/SystemUI/res/values-hy-rAM/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Ռոումինգ"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"ÕÕ¡Õ°Õ´Õ¡Õ¶Õ¡Õ¹Õ¡ÖƒÕ <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> Õ¦Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Ô±Õ·Õ­Õ¡Õ¿Õ¡Õ¶Ö„Õ¡ÕµÕ«Õ¶ Õ¼Õ¥ÕªÕ«Õ´"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"ÕŽÕ¥Ö€Õ»Õ«Õ¶ Õ¿Õ¡Ö€Ö€Õ¥Ö€ Õ¹Õ¯Õ¡Õ¶"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Ô´Õ¸Ö‚Ö„ Õ»Õ¶Õ»Õ¥Õ¬ Õ¥Ö„ Õ¡Õ´Õ¥Õ¶Õ¨"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Õ€Õ¡Õ¾Õ¥Õ¬Õ¾Õ¡Õ®Õ« Õ´Õ¡Õ½Õ«Õ¶"</string>
diff --git a/packages/SystemUI/res/values-in/config.xml b/packages/SystemUI/res/values-in/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-in/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 13f9a15bbeec..5b80343bfbbe 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Batas <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Peringatan <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Mode kerja"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Cahaya Malam"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Cahaya Malam hidup, ketuk untuk mematikan"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Cahaya Malam mati, ketuk untuk menyalakan"</string>
<string name="recents_empty_message" msgid="808480104164008572">"Tidak ada item baru-baru ini"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Anda sudah menghapus semua"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Info Aplikasi"</string>
diff --git a/packages/SystemUI/res/values-is-rIS/config.xml b/packages/SystemUI/res/values-is-rIS/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-is-rIS/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-is-rIS/strings.xml b/packages/SystemUI/res/values-is-rIS/strings.xml
index aabcc7642368..61a30baf02e0 100644
--- a/packages/SystemUI/res/values-is-rIS/strings.xml
+++ b/packages/SystemUI/res/values-is-rIS/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Reiki"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> hámark"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> viðvörun"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Vinnustilling"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Engin nýleg atriði"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Þú hefur hreinsað allt"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Forritsupplýsingar"</string>
diff --git a/packages/SystemUI/res/values-it/config.xml b/packages/SystemUI/res/values-it/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-it/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index a7ce343c0cc2..2e0684d92bc5 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -320,6 +321,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limite di <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Avviso <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modalità Lavoro"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Luminosità notturna"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Luminosità notturna attiva; tocca per disattivarla"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Luminosità notturna non attiva; tocca per attivarla"</string>
<string name="recents_empty_message" msgid="808480104164008572">"Nessun elemento recente"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Hai cancellato tutto"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Informazioni sull\'applicazione"</string>
diff --git a/packages/SystemUI/res/values-iw/config.xml b/packages/SystemUI/res/values-iw/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-iw/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 1702926fa417..4afad7f01518 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -147,6 +147,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"+4G"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"+LTE"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"נדידה"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"קצה"</string>
@@ -322,6 +323,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"הגבלה של <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"×זהרה - <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"מצב עבודה"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"ת×ורת לילה"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"ת×ורת לילה פועלת, הקש כדי לכבות"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"ת×ורת לילה כבויה, הקש כדי להפעיל"</string>
<string name="recents_empty_message" msgid="808480104164008572">"×ין ×¤×¨×™×˜×™× ×חרוני×"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"מחקת הכול"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"מידע על ×”×פליקציה"</string>
diff --git a/packages/SystemUI/res/values-ja/config.xml b/packages/SystemUI/res/values-ja/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ja/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index eebd09f058cc..7f990f872118 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ローミング中"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"上é™: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"警告: 上é™ã¯<xliff:g id="DATA_LIMIT">%s</xliff:g>ã§ã™"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Work モード"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"最近ã®ã‚¿ã‚¹ã‚¯ã¯ã‚りã¾ã›ã‚“"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ã™ã¹ã¦ã®ã‚¿ã‚¹ã‚¯ã‚’消去ã—ã¾ã—ãŸ"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"アプリ情報"</string>
diff --git a/packages/SystemUI/res/values-ka-rGE/config.xml b/packages/SystemUI/res/values-ka-rGE/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ka-rGE/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ka-rGE/strings.xml b/packages/SystemUI/res/values-ka-rGE/strings.xml
index d066bd348df9..66e3c504b8c8 100644
--- a/packages/SystemUI/res/values-ka-rGE/strings.xml
+++ b/packages/SystemUI/res/values-ka-rGE/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"რáƒáƒ£áƒ›áƒ˜áƒœáƒ’ი"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"ლიმიტი: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> გáƒáƒ¤áƒ áƒ—ხილებáƒ"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"სáƒáƒ›áƒ¡áƒáƒ®áƒ£áƒ áƒ˜áƒ¡ რეჟიმი"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"ბáƒáƒšáƒáƒ¡ გáƒáƒ›áƒáƒ§áƒ”ნებული ერთეულები áƒáƒ  áƒáƒ áƒ˜áƒ¡"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ყველáƒáƒ¤áƒ”რი გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•დáƒ"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ შესáƒáƒ®áƒ”ბ"</string>
diff --git a/packages/SystemUI/res/values-kk-rKZ/config.xml b/packages/SystemUI/res/values-kk-rKZ/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-kk-rKZ/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-kk-rKZ/strings.xml b/packages/SystemUI/res/values-kk-rKZ/strings.xml
index 7d089508a056..0732e338a3c0 100644
--- a/packages/SystemUI/res/values-kk-rKZ/strings.xml
+++ b/packages/SystemUI/res/values-kk-rKZ/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4Г"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"ҰМД"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA (кодтармен бөлінген бірнеше қол жетімділік)"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роуминг"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE (Ò±Ñлы байланыÑтар жүйеÑіне арналған жетілдірілген деректер шамалары)"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> шегі"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> туралы еÑкерту"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Ð–Ò±Ð¼Ñ‹Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñ–"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Жақындағы Ñлементтер жоқ"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Сіз барлығын өшірдіңіз"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Қолданба туралы ақпарат"</string>
diff --git a/packages/SystemUI/res/values-km-rKH/config.xml b/packages/SystemUI/res/values-km-rKH/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-km-rKH/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-km-rKH/strings.xml b/packages/SystemUI/res/values-km-rKH/strings.xml
index 907b26fa641f..c80b261f160a 100644
--- a/packages/SystemUI/res/values-km-rKH/strings.xml
+++ b/packages/SystemUI/res/values-km-rKH/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"រ៉ូ​មីង"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"ដែន​កំណážáŸ‹ <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ការ​ព្រមាន"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"របៀបការងារ"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"មិនមានធាážáž»ážáŸ’មីៗទáŸ"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"អ្នកបានជម្រះអ្វីៗទាំងអស់"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"áž–áŸážáŸŒáž˜áž¶áž“​កម្មវិធី"</string>
diff --git a/packages/SystemUI/res/values-kn-rIN/config.xml b/packages/SystemUI/res/values-kn-rIN/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-kn-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-kn-rIN/strings.xml b/packages/SystemUI/res/values-kn-rIN/strings.xml
index f1da673623f0..9b95420064a7 100644
--- a/packages/SystemUI/res/values-kn-rIN/strings.xml
+++ b/packages/SystemUI/res/values-kn-rIN/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ರೋಮಿಂಗà³"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"ಎಡà³à²œà³â€Œ"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ಮಿತಿ"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ಎಚà³à²šà²°à²¿à²•ೆ"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"ಕೆಲಸದ ಮೋಡà³"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"ಯಾವà³à²¦à³‡ ಇತà³à²¤à³€à²šà²¿à²¨ à²à²Ÿà²‚ಗಳಿಲà³à²²"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ನೀವೠಎಲà³à²²à²µà²¨à³à²¨à³‚ ತೆರವà³à²—ೊಳಿಸಿರà³à²µà²¿à²°à²¿"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"ಅಪà³à²²à²¿à²•ೇಶನೠಮಾಹಿತಿ"</string>
diff --git a/packages/SystemUI/res/values-ko/config.xml b/packages/SystemUI/res/values-ko/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ko/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index b48548adcb5f..df3dd23e3dbf 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G ì´ìƒ"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"로ë°"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"한ë„: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> 경고"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"작업 모드"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"최근 í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤."</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"모든 í•­ëª©ì„ ì‚­ì œí–ˆìŠµë‹ˆë‹¤."</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"애플리케ì´ì…˜ ì •ë³´"</string>
diff --git a/packages/SystemUI/res/values-ky-rKG/config.xml b/packages/SystemUI/res/values-ky-rKG/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ky-rKG/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ky-rKG/strings.xml b/packages/SystemUI/res/values-ky-rKG/strings.xml
index baed26f1f346..1529b90fc73f 100644
--- a/packages/SystemUI/res/values-ky-rKG/strings.xml
+++ b/packages/SystemUI/res/values-ky-rKG/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роуминг"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> чектөө"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ÑÑкертүү"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Иштөө режими"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Ðкыркы колдонмолор жок"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Баарын тазаладыңыз"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Колдонмо жөнүндө маалымат"</string>
diff --git a/packages/SystemUI/res/values-lo-rLA/config.xml b/packages/SystemUI/res/values-lo-rLA/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-lo-rLA/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-lo-rLA/strings.xml b/packages/SystemUI/res/values-lo-rLA/strings.xml
index 75fa023267d7..66fb010b617c 100644
--- a/packages/SystemUI/res/values-lo-rLA/strings.xml
+++ b/packages/SystemUI/res/values-lo-rLA/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ໂຣມມິງ"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"ຈຳ​àºàº±àº” <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"ຄຳ​ເຕືອນ <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"ໂà»àº”àºàº²àº™à»€àº®àº±àº”ວຽàº"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"à»àºªàº‡àºàº²àº‡àº„ືນ"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"ເປີດà»àºªàº‡àºàº²àº‡àº„ືນຢູ່, à»àº•ະເພື່ອປິດໄວ້"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"ປິດà»àºªàº‡àºàº²àº‡àº„ືນຢູ່, à»àº•ະເພື່ອເປີດໃຊ້"</string>
<string name="recents_empty_message" msgid="808480104164008572">"ບà»à»ˆàº¡àºµàº¥àº²àºàºàº²àº™àº«àº¼à»‰àº²àºªàº¸àº”"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ທ່ານລຶບລ້າງທຸàºàº¢à»ˆàº²àº‡à»àº¥à»‰àº§"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"​ຂà»à»‰â€‹àº¡àº¹àº™â€‹à»àº­àº±àºšâ€‹àºžâ€‹àº¥àº´â€‹à»€àº„​ຊັນ"</string>
diff --git a/packages/SystemUI/res/values-lt/config.xml b/packages/SystemUI/res/values-lt/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-lt/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index fa843c6c95f2..da259752f695 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -147,6 +147,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Tarptinklinis ryšys"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Kraštas"</string>
@@ -322,6 +324,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limitas: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> įspėjimas"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Darbo režimas"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Nėra jokių naujausių elementų"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Viską išvalėte"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Programos informacija"</string>
diff --git a/packages/SystemUI/res/values-lv/config.xml b/packages/SystemUI/res/values-lv/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-lv/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 4b98e29ef109..1db061903421 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -146,6 +146,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Viesabonēšana"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Ierobežojums: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> brÄ«dinÄjums"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Darba režīms"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Nav nesenu vienumu"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Visi uzdevumi ir notīrīti"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"InformÄcija par lietojumprogrammu"</string>
diff --git a/packages/SystemUI/res/values-mk-rMK/config.xml b/packages/SystemUI/res/values-mk-rMK/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-mk-rMK/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-mk-rMK/strings.xml b/packages/SystemUI/res/values-mk-rMK/strings.xml
index df05c0681f57..51f43819a6a6 100644
--- a/packages/SystemUI/res/values-mk-rMK/strings.xml
+++ b/packages/SystemUI/res/values-mk-rMK/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роаминг"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Лимит: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Предупредување за <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Режим на работа"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Ðема неодамнешни Ñтавки"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ИÑчиÑтивте ÑÑ"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Информации за апликацијата"</string>
diff --git a/packages/SystemUI/res/values-ml-rIN/config.xml b/packages/SystemUI/res/values-ml-rIN/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ml-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ml-rIN/strings.xml b/packages/SystemUI/res/values-ml-rIN/strings.xml
index db2f30acb2ec..aba404b7f09f 100644
--- a/packages/SystemUI/res/values-ml-rIN/strings.xml
+++ b/packages/SystemUI/res/values-ml-rIN/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"റോമിംഗàµ"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> പരിധി"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¨ മോഡàµ"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"സമീപകാല ഇനങàµà´™àµ¾ à´’à´¨àµà´¨àµà´®à´¿à´²àµà´²"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"നിങàµà´™àµ¾ à´Žà´²àµà´²à´¾à´‚ മായàµà´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"ആപàµà´ªàµ വിവരം"</string>
diff --git a/packages/SystemUI/res/values-mn-rMN/config.xml b/packages/SystemUI/res/values-mn-rMN/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-mn-rMN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-mn-rMN/strings.xml b/packages/SystemUI/res/values-mn-rMN/strings.xml
index a878c7ff15ed..875b530ef3b7 100644
--- a/packages/SystemUI/res/values-mn-rMN/strings.xml
+++ b/packages/SystemUI/res/values-mn-rMN/strings.xml
@@ -143,6 +143,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Рүүминг"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -316,6 +318,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> Ñ…Ñзгаар"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> анхааруулга"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Ðжлын горим"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Сүүлийн үеийн зүйл байхгүй"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Та бүгдийг нь уÑтгаÑан"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Ðппликешны мÑдÑÑлÑл"</string>
diff --git a/packages/SystemUI/res/values-mr-rIN/config.xml b/packages/SystemUI/res/values-mr-rIN/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-mr-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-mr-rIN/strings.xml b/packages/SystemUI/res/values-mr-rIN/strings.xml
index 0abc667228ea..1a725db1a80d 100644
--- a/packages/SystemUI/res/values-mr-rIN/strings.xml
+++ b/packages/SystemUI/res/values-mr-rIN/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"रोमिंग"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> मरà¥à¤¯à¤¾à¤¦à¤¾"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> चेतावणी"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"कारà¥à¤¯ मोड"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"अलीकडील कोणतेही आयटम नाहीत"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"आपण सरà¥à¤µà¤•ाही साफ केले"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— माहिती"</string>
diff --git a/packages/SystemUI/res/values-ms-rMY/config.xml b/packages/SystemUI/res/values-ms-rMY/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ms-rMY/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ms-rMY/strings.xml b/packages/SystemUI/res/values-ms-rMY/strings.xml
index fa5ba0a56671..f69c6869c079 100644
--- a/packages/SystemUI/res/values-ms-rMY/strings.xml
+++ b/packages/SystemUI/res/values-ms-rMY/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Perayauan"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> had"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Amaran <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Mod kerja"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Tiada item terbaharu"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Anda telah mengetepikan semua item"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Maklumat Aplikasi"</string>
diff --git a/packages/SystemUI/res/values-my-rMM/config.xml b/packages/SystemUI/res/values-my-rMM/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-my-rMM/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-my-rMM/strings.xml b/packages/SystemUI/res/values-my-rMM/strings.xml
index 5f7478834eb0..f19e61fc9124 100644
--- a/packages/SystemUI/res/values-my-rMM/strings.xml
+++ b/packages/SystemUI/res/values-my-rMM/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"မြန်နှုန်းမြင့်လိုင်း"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ကွန်ယက်ပြင်ပဒေá€á€¬á€¡á€žá€¯á€¶á€¸á€•ြုá€á€¼á€„်း"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ကန့်သá€á€ºá€á€»á€€á€º"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> သá€á€­á€•ေးá€á€»á€€á€º"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"အလုပ် မုဒ်"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"ညအလင်းရောင်"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"ညအလင်းရောင်ကိုဖွင့်ထားသည်አပိá€á€ºá€›á€”်á€á€­á€¯á€·á€•ါ"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"ညအလင်းရောင်ကိုပိá€á€ºá€‘ားသည်አဖွင့်ရန်á€á€­á€¯á€·á€•ါ"</string>
<string name="recents_empty_message" msgid="808480104164008572">"မကြာမီကဖွင့်ထားသည်များ မရှိပါ"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"သင်အားလုံးကို ရှင်းလင်းပြီးပါပြီ"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"အပလီကေးရှင်းအင်ဖို"</string>
diff --git a/packages/SystemUI/res/values-nb/config.xml b/packages/SystemUI/res/values-nb/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-nb/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 63ae35b2021e..d4d42b9eb761 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Grense på <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advarsel for <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Arbeidsmodus"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Ingen nylige elementer"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Du har fjernet alt"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Appinformasjon"</string>
diff --git a/packages/SystemUI/res/values-ne-rNP/config.xml b/packages/SystemUI/res/values-ne-rNP/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ne-rNP/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ne-rNP/strings.xml b/packages/SystemUI/res/values-ne-rNP/strings.xml
index 06baec1d0b20..76908d914f2a 100644
--- a/packages/SystemUI/res/values-ne-rNP/strings.xml
+++ b/packages/SystemUI/res/values-ne-rNP/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"रोमिङ"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> सीमा"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> चेतावनी दिà¤à¤¦à¥ˆ"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"कारà¥à¤¯ मोड"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"रातà¥à¤°à¤¿à¤•ो पà¥à¤°à¤•ाश"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"रातà¥à¤°à¤¿à¤•ो पà¥à¤°à¤•ाश सकà¥à¤°à¤¿à¤¯ छ, निषà¥à¤•à¥à¤°à¤¿à¤¯ पारà¥à¤¨ टà¥à¤¯à¤¾à¤ª गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"रातà¥à¤°à¤¿à¤•ो पà¥à¤°à¤•ाश निषà¥à¤•à¥à¤°à¤¿à¤¯ छ, सकà¥à¤°à¤¿à¤¯ गरà¥à¤¨ टà¥à¤¯à¤¾à¤ª गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"</string>
<string name="recents_empty_message" msgid="808480104164008572">"हालका कà¥à¤¨à¥ˆ पनि वसà¥à¤¤à¥à¤¹à¤°à¥‚ छैननà¥"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"तपाईà¤à¤²à¥‡ सबै कà¥à¤°à¤¾ खाली गरà¥à¤¨à¥à¤­à¤à¤•ो छ"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— जानकारी"</string>
diff --git a/packages/SystemUI/res/values-nl/config.xml b/packages/SystemUI/res/values-nl/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-nl/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 546025591fdf..f6d1c5279d04 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limiet van <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Waarschuwing voor <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Werkmodus"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Geen recente items"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Je hebt alles gewist"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"App-informatie"</string>
diff --git a/packages/SystemUI/res/values-pa-rIN/config.xml b/packages/SystemUI/res/values-pa-rIN/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-pa-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-pa-rIN/strings.xml b/packages/SystemUI/res/values-pa-rIN/strings.xml
index ee29c466adbf..5b3801ae41bd 100644
--- a/packages/SystemUI/res/values-pa-rIN/strings.xml
+++ b/packages/SystemUI/res/values-pa-rIN/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ਰੋਮਿੰਗ"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"ਕਿਨਾਰਾ"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ਸੀਮਾ"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ਚਿਤਾਵਨੀ"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"ਕੰਮ ਮੋਡ"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"ਕੋਈ ਹਾਲੀਆ ਆਈਟਮਾਂ ਨਹੀਂ"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ਤà©à¨¸à©€à¨‚ ਸਭ ਕà©à¨ ਸਾਫ਼ ਕਰ ਦਿੱਤਾ ਹੈ"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਜਾਣਕਾਰੀ"</string>
diff --git a/packages/SystemUI/res/values-pl/config.xml b/packages/SystemUI/res/values-pl/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-pl/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 90a0099402bd..96a89f041d33 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -147,6 +147,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -322,6 +324,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limit <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Ostrzeżenie: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Tryb pracy"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Brak ostatnich elementów"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Wszystko zostało wyczyszczone"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Informacje o aplikacji"</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/config.xml b/packages/SystemUI/res/values-pt-rBR/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-pt-rBR/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index b860c099dd27..153f8af4da89 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -320,6 +321,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limite: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Aviso de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modo de trabalho"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Modo noturno"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Modo noturno ativado. Toque para desativar"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Modo noturno desativado. Toque para ativar"</string>
<string name="recents_empty_message" msgid="808480104164008572">"Nenhum item recente"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Você limpou tudo"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Informações do app"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/config.xml b/packages/SystemUI/res/values-pt-rPT/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-pt-rPT/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 00afbc148b27..e515c6e56467 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limite de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Aviso de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modo de trabalho"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Luz noturna"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Luz noturna ativada; toque para desativar"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Luz noturna desativada; toque para ativar"</string>
<string name="recents_empty_message" msgid="808480104164008572">"Nenhum item recente"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Limpou tudo"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Informações da aplicação"</string>
diff --git a/packages/SystemUI/res/values-pt/config.xml b/packages/SystemUI/res/values-pt/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-pt/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index b860c099dd27..153f8af4da89 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -320,6 +321,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limite: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Aviso de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modo de trabalho"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Modo noturno"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Modo noturno ativado. Toque para desativar"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Modo noturno desativado. Toque para ativar"</string>
<string name="recents_empty_message" msgid="808480104164008572">"Nenhum item recente"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Você limpou tudo"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Informações do app"</string>
diff --git a/packages/SystemUI/res/values-ro/config.xml b/packages/SystemUI/res/values-ro/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ro/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 6c0cab283c98..3cda8e4a2d51 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -146,6 +146,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -322,6 +324,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limită de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Avertizare: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modul de lucru"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Niciun element recent"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Ați șters tot"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Informații despre aplicație"</string>
diff --git a/packages/SystemUI/res/values-ru/config.xml b/packages/SystemUI/res/values-ru/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ru/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index f606f77be23e..e56fd8908924 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -147,6 +147,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роуминг"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -324,6 +326,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Ограничение: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Предупреждение: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Рабочий режим"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Ðедавних приложений нет"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Ð’Ñ‹ очиÑтили вÑÑ‘"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ приложении"</string>
diff --git a/packages/SystemUI/res/values-si-rLK/config.xml b/packages/SystemUI/res/values-si-rLK/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-si-rLK/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-si-rLK/strings.xml b/packages/SystemUI/res/values-si-rLK/strings.xml
index 57cc5dfa1be6..30cb18aaffb2 100644
--- a/packages/SystemUI/res/values-si-rLK/strings.xml
+++ b/packages/SystemUI/res/values-si-rLK/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"à¶»à·à¶¸à·’à¶‚"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> සීමිත"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> අවවà·à¶¯ කිරීම"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"à·€à·à¶© à¶´à·Šâ€à¶»à¶šà·à¶»à¶º"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"මෑත අයිතම à¶±à·à¶­"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ඔබ සියලු දේ හිස් කර ඇත"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"යෙදුම් තොරතුරු"</string>
diff --git a/packages/SystemUI/res/values-sk/config.xml b/packages/SystemUI/res/values-sk/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-sk/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index a96367ed88a2..12fe853e7579 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -147,6 +147,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -324,6 +325,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limit: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Upozornenie pri <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Pracovný režim"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"NoÄný režim"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"NoÄný režim je zapnutý (vypnete ho klepnutím)"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"NoÄný režim je vypnutý (zapnete ho klepnutím)"</string>
<string name="recents_empty_message" msgid="808480104164008572">"Žiadne nedávne položky"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Vymazali ste všetko"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Informácie o aplikácii"</string>
diff --git a/packages/SystemUI/res/values-sl/config.xml b/packages/SystemUI/res/values-sl/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-sl/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index d2cd947f919a..11e935eae053 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -147,6 +147,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Gostovanje"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -324,6 +326,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Omejitev: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Opozorilo – <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"NaÄin za delo"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Ni nedavnih elementov"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Vse te poÄistili"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Podatki o aplikaciji"</string>
diff --git a/packages/SystemUI/res/values-sq-rAL/config.xml b/packages/SystemUI/res/values-sq-rAL/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-sq-rAL/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sq-rAL/strings.xml b/packages/SystemUI/res/values-sq-rAL/strings.xml
index 06182b1649ac..274ee1d76c14 100644
--- a/packages/SystemUI/res/values-sq-rAL/strings.xml
+++ b/packages/SystemUI/res/values-sq-rAL/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"Lidhje CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Kufiri: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Paralajmërim për kufirin prej <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modaliteti i punës"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Nuk ka asnjë artikull të fundit"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"I ke pastruar të gjitha"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Informacioni i aplikacionit"</string>
diff --git a/packages/SystemUI/res/values-sr/config.xml b/packages/SystemUI/res/values-sr/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-sr/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 67292a6cb887..17e3ddbb4d5c 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -146,6 +146,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роминг"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Ограничење од <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Упозорење за <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Режим рада"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Ðема недавних Ñтавки"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ОбриÑали Ñте Ñве"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Информације о апликацији"</string>
diff --git a/packages/SystemUI/res/values-sv/config.xml b/packages/SystemUI/res/values-sv/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-sv/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 6b274936c85c..f2bc4eef36cb 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Gräns: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Varning <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Arbetsläge"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Listan med de senaste åtgärderna är tom"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Du har tömt listan"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Appinformation"</string>
diff --git a/packages/SystemUI/res/values-sw/config.xml b/packages/SystemUI/res/values-sw/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-sw/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 20cd2aa9ba93..2df876781ec0 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Inatumia data nje mtandao wako wa kawaida"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Ukingo"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"kikomo <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Onyo <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Hali ya kazi"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Mwanga wa Usiku"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Umewasha hali ya Mwanga wa Usiku, gonga ili uizime"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Umezima hali ya Mwanga wa Usiku, gonga ili uiwashe"</string>
<string name="recents_empty_message" msgid="808480104164008572">"Hakuna vipengee vya hivi karibuni"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Umeondoa vipengee vyote"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Maelezo ya Programu"</string>
diff --git a/packages/SystemUI/res/values-ta-rIN/config.xml b/packages/SystemUI/res/values-ta-rIN/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ta-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ta-rIN/strings.xml b/packages/SystemUI/res/values-ta-rIN/strings.xml
index ea444bf7cf00..e1355ff1e073 100644
--- a/packages/SystemUI/res/values-ta-rIN/strings.xml
+++ b/packages/SystemUI/res/values-ta-rIN/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ரோமிஙà¯"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> வரமà¯à®ªà¯"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> எசà¯à®šà®°à®¿à®•à¯à®•ை"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"பணிப௠பயனà¯à®®à¯à®±à¯ˆ"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"சமீபதà¯à®¤à®¿à®¯ பணிகள௠இலà¯à®²à¯ˆ"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"எலà¯à®²à®¾à®µà®±à¯à®±à¯ˆà®¯à¯à®®à¯ அழிதà¯à®¤à¯à®µà®¿à®Ÿà¯à®Ÿà¯€à®°à¯à®•ளà¯"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ தகவலà¯"</string>
diff --git a/packages/SystemUI/res/values-te-rIN/config.xml b/packages/SystemUI/res/values-te-rIN/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-te-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-te-rIN/strings.xml b/packages/SystemUI/res/values-te-rIN/strings.xml
index 5c9988b7c07c..74d798b57c05 100644
--- a/packages/SystemUI/res/values-te-rIN/strings.xml
+++ b/packages/SystemUI/res/values-te-rIN/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"రోమింగà±"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"à°Žà°¡à±à°œà±"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> పరిమితి"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> హెచà±à°šà°°à°¿à°•"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"పని మోడà±"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"ఇటీవలి అంశాలౠà°à°µà±€ లేవà±"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"మీరౠఅనà±à°¨à°¿à°‚టినీ తీసివేసారà±"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"à°…à°¨à±à°µà°°à±à°¤à°¨ సమాచారం"</string>
diff --git a/packages/SystemUI/res/values-th/config.xml b/packages/SystemUI/res/values-th/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-th/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index f7337187723d..c9631caf4b63 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"โรมมิ่ง"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"ขีดจำà¸à¸±à¸” <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"คำเตือน <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"โหมดà¸à¸²à¸£à¸—ำงาน"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"à¹à¸ªà¸‡à¸•อนà¸à¸¥à¸²à¸‡à¸„ืน"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"à¹à¸ªà¸‡à¸•อนà¸à¸¥à¸²à¸‡à¸„ืนเปิดอยู่ à¹à¸•ะเพื่อปิด"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"à¹à¸ªà¸‡à¸•อนà¸à¸¥à¸²à¸‡à¸„ืนปิดอยู่ à¹à¸•ะเพื่อเปิด"</string>
<string name="recents_empty_message" msgid="808480104164008572">"ไม่มีรายà¸à¸²à¸£à¸¥à¹ˆà¸²à¸ªà¸¸à¸”"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"คุณได้ล้างทุà¸à¸­à¸¢à¹ˆà¸²à¸‡à¹à¸¥à¹‰à¸§"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"ข้อมูลà¹à¸­à¸›à¸žà¸¥à¸´à¹€à¸„ชัน"</string>
diff --git a/packages/SystemUI/res/values-tl/config.xml b/packages/SystemUI/res/values-tl/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-tl/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index c5a6dcc2629d..64ba72887feb 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ang limitasyon"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Babala sa <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Work mode"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Walang mga kamakailang item"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Na-clear mo ang lahat"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Impormasyon ng Application"</string>
diff --git a/packages/SystemUI/res/values-tr/config.xml b/packages/SystemUI/res/values-tr/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-tr/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index af9c277c3528..69d7136f5717 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Dolaşımda"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Sınır: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> uyarısı"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Çalışma modu"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Yeni öğe yok"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Her ÅŸeyi sildiniz"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Uygulama Bilgileri"</string>
diff --git a/packages/SystemUI/res/values-uk/config.xml b/packages/SystemUI/res/values-uk/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-uk/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 12a3628f538a..f80813228e2a 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -147,6 +147,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роумінг"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -324,6 +326,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"ОбмеженнÑ: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"ЗаÑтереженнÑ: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Робочий режим"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Ðемає нещодавніх завдань"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Ви очиÑтили вÑе"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ додаток"</string>
diff --git a/packages/SystemUI/res/values-ur-rPK/config.xml b/packages/SystemUI/res/values-ur-rPK/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-ur-rPK/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ur-rPK/strings.xml b/packages/SystemUI/res/values-ur-rPK/strings.xml
index 69e196764a45..73e7957b7838 100644
--- a/packages/SystemUI/res/values-ur-rPK/strings.xml
+++ b/packages/SystemUI/res/values-ur-rPK/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+‎"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"رومنگ"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> حد"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> وارننگ"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"کام موڈ"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"کوئی Ø­Ø§Ù„ÛŒÛ Ø¢Ø¦Ù¹Ù… Ù†Ûیں"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"آپ Ù†Û’ سب Ú©Ú†Ú¾ صا٠کر دیا ÛÛ’"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"ایپلیکیشن کی معلومات"</string>
diff --git a/packages/SystemUI/res/values-uz-rUZ/config.xml b/packages/SystemUI/res/values-uz-rUZ/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-uz-rUZ/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-uz-rUZ/strings.xml b/packages/SystemUI/res/values-uz-rUZ/strings.xml
index 0a8304546399..a764e23b101a 100644
--- a/packages/SystemUI/res/values-uz-rUZ/strings.xml
+++ b/packages/SystemUI/res/values-uz-rUZ/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Rouming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Cheklov: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Ogohlantirish: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Ish rejimi"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Hozircha hech narsa yo‘q"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Hammasi o‘chirildi"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Ilova haqida ma’lumot"</string>
diff --git a/packages/SystemUI/res/values-vi/config.xml b/packages/SystemUI/res/values-vi/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-vi/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index d798be65ab2d..e8d8d3ebf59b 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Chuyển vùng"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Cạnh"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Giới hạn <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Cảnh báo <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Chế độ làm việc"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"Không có mục gần đây nào"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Bạn đã xóa má»i ná»™i dung"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Thông tin ứng dụng"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/config.xml b/packages/SystemUI/res/values-zh-rCN/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rCN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index cfb4873a7bdf..cabe2452fc29 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"漫游中"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"上é™ä¸º<xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g>警告"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"工作模å¼"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"近期没有任何内容"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"您已清除所有内容"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"应用信æ¯"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/config.xml b/packages/SystemUI/res/values-zh-rHK/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rHK/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index d1f2c922216f..27dfd76f8ebc 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"漫éŠ"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -320,6 +322,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"上é™ç‚º <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> 警告"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"工作模å¼"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"沒有最近項目"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"您已清除所有項目"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"應用程å¼è³‡æ–™"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/config.xml b/packages/SystemUI/res/values-zh-rTW/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rTW/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index d0288eb1f2ed..8cd08d663c24 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -145,6 +145,8 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+ <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+ <skip />
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"漫éŠä¸­"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -318,6 +320,12 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"上é™ç‚º <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> 警告"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"工作模å¼"</string>
+ <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+ <skip />
+ <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+ <skip />
<string name="recents_empty_message" msgid="808480104164008572">"最近沒有任何項目"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"您已清除所有工作"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"應用程å¼è³‡è¨Š"</string>
diff --git a/packages/SystemUI/res/values-zu/config.xml b/packages/SystemUI/res/values-zu/config.xml
new file mode 100644
index 000000000000..5309563e3986
--- /dev/null
+++ b/packages/SystemUI/res/values-zu/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 5a562932e2c2..4892c1d16b72 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -145,6 +145,7 @@
<string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
<string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
<string name="accessibility_data_connection_lte" msgid="5413468808637540658">"I-LTE"</string>
+ <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"I-LTE+"</string>
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Iyazulazula"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Ekucupheleni"</string>
@@ -318,6 +319,9 @@
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> umkhawulo"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> isexwayiso"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Imodi yomsebenzi"</string>
+ <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Ukukhanya kwasebusuku"</string>
+ <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Ukukhanya kwasebusuku kuvuliwe, thepha ukuze uvale"</string>
+ <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Ukukhanya kwasebusuku kuvaliwe, thepha ukuze uvule"</string>
<string name="recents_empty_message" msgid="808480104164008572">"Azikho izinto zakamuva"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Usule yonke into"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Ulwazi lohlelo lokusebenza"</string>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 134388f6bca2..fa30f49ef7db 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -224,9 +224,25 @@
<!-- Doze: duration to avoid false pickup gestures triggered by notification vibrations -->
<integer name="doze_pickup_vibration_threshold">2000</integer>
- <!-- Doze: can we assume the pickup sensor includes a proximity check? -->
+ <!-- Doze: can we assume the pickup sensor includes a proximity check?
+ This is ignored if doze_pickup_subtype_performs_proximity_check is not empty.
+ @deprecated: use doze_pickup_subtype_performs_proximity_check instead.-->
<bool name="doze_pickup_performs_proximity_check">false</bool>
+ <!-- Doze: a list of pickup sensor subtypes that perform a proximity check before they trigger.
+ If not empty, either * or !* must appear to specify the default.
+ If empty, falls back to doze_pickup_performs_proximity_check.
+
+ Examples: 1,2,3,!* -> subtypes 1,2 and 3 perform the check, all others don't.
+ !1,!2,* -> subtypes 1 and 2 don't perform the check, all others do.
+ !8,* -> subtype 8 does not perform the check, all others do
+ 1,1,* -> illegal, every item may only appear once
+ 1,!1,* -> illegal, no contradictions allowed
+ 1,2 -> illegal, need either * or !*
+ 1,,4a3 -> illegal, no empty or non-numeric terms allowed
+ -->
+ <string name="doze_pickup_subtype_performs_proximity_check"></string>
+
<!-- Doze: pulse parameter - how long does it take to fade in? -->
<integer name="doze_pulse_duration_in">900</integer>
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
index 39a341216f2c..52b5a54a7621 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
@@ -55,7 +55,8 @@ public class SystemUIApplication extends Application {
com.android.systemui.media.RingtonePlayer.class,
com.android.systemui.keyboard.KeyboardUI.class,
com.android.systemui.tv.pip.PipUI.class,
- com.android.systemui.shortcut.ShortcutKeyDispatcher.class
+ com.android.systemui.shortcut.ShortcutKeyDispatcher.class,
+ com.android.systemui.VendorServices.class
};
/**
diff --git a/packages/SystemUI/src/com/android/systemui/VendorServices.java b/packages/SystemUI/src/com/android/systemui/VendorServices.java
new file mode 100644
index 000000000000..0be6b12fa365
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/VendorServices.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.systemui;
+
+/**
+ * Placeholder for any vendor-specific services.
+ */
+public class VendorServices extends SystemUI {
+
+ @Override
+ public void start() {
+ // no-op
+ }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
index 5f1b042636e4..661b347608ed 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
@@ -214,6 +214,10 @@ public class DozeService extends DreamService {
}
private void requestPulse(final int reason) {
+ requestPulse(reason, false /* performedProxCheck */);
+ }
+
+ private void requestPulse(final int reason, boolean performedProxCheck) {
if (mHost != null && mDreaming && !mPulsing) {
// Let the host know we want to pulse. Wait for it to be ready, then
// turn the screen on. When finished, turn the screen off again.
@@ -226,10 +230,9 @@ public class DozeService extends DreamService {
return;
}
final long start = SystemClock.uptimeMillis();
- final boolean nonBlocking = reason == DozeLog.PULSE_REASON_SENSOR_PICKUP
- && mDozeParameters.getPickupPerformsProxCheck();
- if (nonBlocking) {
- // proximity check is only done to capture statistics, continue pulsing
+ if (performedProxCheck) {
+ // the caller already performed a successful proximity check; we'll only do one to
+ // capture statistics, continue pulsing immediately.
continuePulsing(reason);
}
// perform a proximity check
@@ -239,7 +242,7 @@ public class DozeService extends DreamService {
final boolean isNear = result == RESULT_NEAR;
final long end = SystemClock.uptimeMillis();
DozeLog.traceProximityResult(mContext, isNear, end - start, reason);
- if (nonBlocking) {
+ if (performedProxCheck) {
// we already continued
return;
}
@@ -540,9 +543,12 @@ public class DozeService extends DreamService {
mWakeLock.acquire();
try {
if (DEBUG) Log.d(mTag, "onTrigger: " + triggerEventToString(event));
+ boolean sensorPerformsProxCheck = false;
if (mSensor.getType() == Sensor.TYPE_PICK_UP_GESTURE) {
int subType = (int) event.values[0];
MetricsLogger.action(mContext, MetricsEvent.ACTION_AMBIENT_GESTURE, subType);
+ sensorPerformsProxCheck = mDozeParameters.getPickupSubtypePerformsProxCheck(
+ subType);
}
if (mDebugVibrate) {
final Vibrator v = (Vibrator) mContext.getSystemService(
@@ -555,7 +561,7 @@ public class DozeService extends DreamService {
}
mRegistered = false;
- requestPulse(mPulseReason);
+ requestPulse(mPulseReason, sensorPerformsProxCheck);
updateListener(); // reregister, this sensor only fires once
// reset the notification pulse schedule, but only if we think we were not triggered
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
index 6206cef971b0..ee55a807443b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
@@ -249,6 +249,9 @@ public class QSDetail extends LinearLayout {
return;
}
mQsDetailHeaderSwitch.setChecked(state);
+ final boolean toggleEnabled = mDetailAdapter != null && mDetailAdapter.getToggleEnabled();
+ mQsDetailHeader.setEnabled(toggleEnabled);
+ mQsDetailHeaderSwitch.setEnabled(toggleEnabled);
}
private void handleScanStateChanged(boolean state) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
index ca853feb1a1f..2fda6eac6e0b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
@@ -148,6 +148,9 @@ public abstract class QSTile<TState extends State> {
public interface DetailAdapter {
CharSequence getTitle();
Boolean getToggleState();
+ default boolean getToggleEnabled() {
+ return true;
+ }
View createDetailView(Context context, View convertView, ViewGroup parent);
Intent getSettingsIntent();
void setToggleState(boolean state);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index 794610e50f93..f1e8749fb03a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -16,6 +16,7 @@
package com.android.systemui.qs.tiles;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
@@ -208,6 +209,12 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
}
@Override
+ public boolean getToggleEnabled() {
+ return mController.getBluetoothState() == BluetoothAdapter.STATE_OFF
+ || mController.getBluetoothState() == BluetoothAdapter.STATE_ON;
+ }
+
+ @Override
public Intent getSettingsIntent() {
return BLUETOOTH_SETTINGS;
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
index a8939100f66d..43d0cf6db854 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
@@ -140,8 +140,6 @@ public class RecentsView extends FrameLayout {
LayoutInflater inflater = LayoutInflater.from(context);
if (RecentsDebugFlags.Static.EnableStackActionButton) {
- float cornerRadius = context.getResources().getDimensionPixelSize(
- R.dimen.recents_task_view_rounded_corners_radius);
mStackActionButton = (TextView) inflater.inflate(R.layout.recents_stack_action_button,
this, false);
mStackActionButton.setOnClickListener(new View.OnClickListener() {
@@ -151,13 +149,6 @@ public class RecentsView extends FrameLayout {
}
});
addView(mStackActionButton);
- mStackActionButton.setClipToOutline(true);
- mStackActionButton.setOutlineProvider(new ViewOutlineProvider() {
- @Override
- public void getOutline(View view, Outline outline) {
- outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), cornerRadius);
- }
- });
}
mEmptyView = (TextView) inflater.inflate(R.layout.recents_empty, this, false);
addView(mEmptyView);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index 71904fa707e2..bd485dd40e0b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -225,6 +225,8 @@ public class KeyguardIndicationController {
}
KeyguardUpdateMonitorCallback mUpdateMonitor = new KeyguardUpdateMonitorCallback() {
+ public int mLastSuccessiveErrorMessage = -1;
+
@Override
public void onRefreshBatteryInfo(KeyguardUpdateMonitor.BatteryStatus status) {
boolean isChargingOrFull = status.status == BatteryManager.BATTERY_STATUS_CHARGING
@@ -252,6 +254,9 @@ public class KeyguardIndicationController {
mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_CLEAR_FP_MSG),
TRANSIENT_FP_ERROR_TIMEOUT);
}
+ // Help messages indicate that there was actually a try since the last error, so those
+ // are not two successive error messages anymore.
+ mLastSuccessiveErrorMessage = -1;
}
@Override
@@ -263,15 +268,22 @@ public class KeyguardIndicationController {
}
int errorColor = mContext.getResources().getColor(R.color.system_warning_color, null);
if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
- mStatusBarKeyguardViewManager.showBouncerMessage(errString, errorColor);
+ // When swiping up right after receiving a fingerprint error, the bouncer calls
+ // authenticate leading to the same message being shown again on the bouncer.
+ // We want to avoid this, as it may confuse the user when the message is too
+ // generic.
+ if (mLastSuccessiveErrorMessage != msgId) {
+ mStatusBarKeyguardViewManager.showBouncerMessage(errString, errorColor);
+ }
} else if (updateMonitor.isDeviceInteractive()) {
- showTransientIndication(errString, errorColor);
- // We want to keep this message around in case the screen was off
- mHandler.removeMessages(MSG_HIDE_TRANSIENT);
- hideTransientIndicationDelayed(5000);
- } else {
- mMessageToShowOnScreenOn = errString;
+ showTransientIndication(errString, errorColor);
+ // We want to keep this message around in case the screen was off
+ mHandler.removeMessages(MSG_HIDE_TRANSIENT);
+ hideTransientIndicationDelayed(5000);
+ } else {
+ mMessageToShowOnScreenOn = errString;
}
+ mLastSuccessiveErrorMessage = msgId;
}
@Override
@@ -293,6 +305,18 @@ public class KeyguardIndicationController {
mMessageToShowOnScreenOn = null;
}
}
+
+ @Override
+ public void onFingerprintAuthenticated(int userId) {
+ super.onFingerprintAuthenticated(userId);
+ mLastSuccessiveErrorMessage = -1;
+ }
+
+ @Override
+ public void onFingerprintAuthFailed() {
+ super.onFingerprintAuthFailed();
+ mLastSuccessiveErrorMessage = -1;
+ }
};
BroadcastReceiver mReceiver = new BroadcastReceiver() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
index 1d890d0dde6c..9b3ed33e3158 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
@@ -21,6 +21,7 @@ import android.os.SystemProperties;
import android.text.TextUtils;
import android.util.Log;
import android.util.MathUtils;
+import android.util.SparseBooleanArray;
import com.android.systemui.R;
@@ -39,6 +40,8 @@ public class DozeParameters {
private static PulseSchedule sPulseSchedule;
+ private static IntInOutMatcher sPickupSubtypePerformsProxMatcher;
+
public DozeParameters(Context context) {
mContext = context;
}
@@ -61,7 +64,20 @@ public class DozeParameters {
pw.print(" getPulseSchedule(): "); pw.println(getPulseSchedule());
pw.print(" getPulseScheduleResets(): "); pw.println(getPulseScheduleResets());
pw.print(" getPickupVibrationThreshold(): "); pw.println(getPickupVibrationThreshold());
- pw.print(" getPickupPerformsProxCheck(): "); pw.println(getPickupPerformsProxCheck());
+ pw.print(" getPickupSubtypePerformsProxCheck(): ");pw.println(
+ dumpPickupSubtypePerformsProxCheck());
+ }
+
+ private String dumpPickupSubtypePerformsProxCheck() {
+ // Refresh sPickupSubtypePerformsProxMatcher
+ getPickupSubtypePerformsProxCheck(0);
+
+ if (sPickupSubtypePerformsProxMatcher == null) {
+ return "fallback: " + mContext.getResources().getBoolean(
+ R.bool.doze_pickup_performs_proximity_check);
+ } else {
+ return "spec: " + sPickupSubtypePerformsProxMatcher.mSpec;
+ }
}
public boolean getDisplayStateSupported() {
@@ -106,10 +122,6 @@ public class DozeParameters {
return getBoolean("doze.pulse.proxcheck", R.bool.doze_proximity_check_before_pulse);
}
- public boolean getPickupPerformsProxCheck() {
- return getBoolean("doze.pickup.proxcheck", R.bool.doze_pickup_performs_proximity_check);
- }
-
public boolean getPulseOnNotifications() {
return getBoolean("doze.pulse.notifications", R.bool.doze_pulse_on_notifications);
}
@@ -143,6 +155,101 @@ public class DozeParameters {
return SystemProperties.get(propName, mContext.getString(resId));
}
+ public boolean getPickupSubtypePerformsProxCheck(int subType) {
+ String spec = getString("doze.pickup.proxcheck",
+ R.string.doze_pickup_subtype_performs_proximity_check);
+
+ if (TextUtils.isEmpty(spec)) {
+ // Fall back to non-subtype based property.
+ return mContext.getResources().getBoolean(R.bool.doze_pickup_performs_proximity_check);
+ }
+
+ if (sPickupSubtypePerformsProxMatcher == null
+ || !TextUtils.equals(spec, sPickupSubtypePerformsProxMatcher.mSpec)) {
+ sPickupSubtypePerformsProxMatcher = new IntInOutMatcher(spec);
+ }
+
+ return sPickupSubtypePerformsProxMatcher.isIn(subType);
+ }
+
+
+ /**
+ * Parses a spec of the form `1,2,3,!5,*`. The resulting object will match numbers that are
+ * listed, will not match numbers that are listed with a ! prefix, and will match / not match
+ * unlisted numbers depending on whether * or !* is present.
+ *
+ * * -> match any numbers that are not explicitly listed
+ * !* -> don't match any numbers that are not explicitly listed
+ * 2 -> match 2
+ * !3 -> don't match 3
+ *
+ * It is illegal to specify:
+ * - an empty spec
+ * - a spec containing that are empty, or a lone !
+ * - a spec for anything other than numbers or *
+ * - multiple terms for the same number / multiple *s
+ */
+ public static class IntInOutMatcher {
+ private static final String WILDCARD = "*";
+ private static final char OUT_PREFIX = '!';
+
+ private final SparseBooleanArray mIsIn;
+ private final boolean mDefaultIsIn;
+ final String mSpec;
+
+ public IntInOutMatcher(String spec) {
+ if (TextUtils.isEmpty(spec)) {
+ throw new IllegalArgumentException("Spec must not be empty");
+ }
+
+ boolean defaultIsIn = false;
+ boolean foundWildcard = false;
+
+ mSpec = spec;
+ mIsIn = new SparseBooleanArray();
+
+ for (String itemPrefixed : spec.split(",", -1)) {
+ if (itemPrefixed.length() == 0) {
+ throw new IllegalArgumentException(
+ "Illegal spec, must not have zero-length items: `" + spec + "`");
+ }
+ boolean isIn = itemPrefixed.charAt(0) != OUT_PREFIX;
+ String item = isIn ? itemPrefixed : itemPrefixed.substring(1);
+
+ if (itemPrefixed.length() == 0) {
+ throw new IllegalArgumentException(
+ "Illegal spec, must not have zero-length items: `" + spec + "`");
+ }
+
+ if (WILDCARD.equals(item)) {
+ if (foundWildcard) {
+ throw new IllegalArgumentException("Illegal spec, `" + WILDCARD +
+ "` must not appear multiple times in `" + spec + "`");
+ }
+ defaultIsIn = isIn;
+ foundWildcard = true;
+ } else {
+ int key = Integer.parseInt(item);
+ if (mIsIn.indexOfKey(key) >= 0) {
+ throw new IllegalArgumentException("Illegal spec, `" + key +
+ "` must not appear multiple times in `" + spec + "`");
+ }
+ mIsIn.put(key, isIn);
+ }
+ }
+
+ if (!foundWildcard) {
+ throw new IllegalArgumentException("Illegal spec, must specify either * or !*");
+ }
+
+ mDefaultIsIn = defaultIsIn;
+ }
+
+ public boolean isIn(int value) {
+ return (mIsIn.get(value, mDefaultIsIn));
+ }
+ }
+
public static class PulseSchedule {
private static final Pattern PATTERN = Pattern.compile("(\\d+?)s", 0);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
index 21db64febbe0..a9c47834238f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
@@ -321,20 +321,23 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
mExpanded ? MetricsProto.MetricsEvent.ACTION_QS_EXPANDED_SETTINGS_LAUNCH
: MetricsProto.MetricsEvent.ACTION_QS_COLLAPSED_SETTINGS_LAUNCH);
if (mSettingsButton.isTunerClick()) {
- if (TunerService.isTunerEnabled(mContext)) {
- TunerService.showResetRequest(mContext, new Runnable() {
- @Override
- public void run() {
+ mHost.startRunnableDismissingKeyguard(() -> post(() -> {
+ if (TunerService.isTunerEnabled(mContext)) {
+ TunerService.showResetRequest(mContext, () -> {
// Relaunch settings so that the tuner disappears.
startSettingsActivity();
- }
- });
- } else {
- Toast.makeText(getContext(), R.string.tuner_toast, Toast.LENGTH_LONG).show();
- TunerService.setTunerEnabled(mContext, true);
- }
+ });
+ } else {
+ Toast.makeText(getContext(), R.string.tuner_toast,
+ Toast.LENGTH_LONG).show();
+ TunerService.setTunerEnabled(mContext, true);
+ }
+ startSettingsActivity();
+
+ }));
+ } else {
+ startSettingsActivity();
}
- startSettingsActivity();
} else if (v == mAlarmStatus && mNextAlarm != null) {
PendingIntent showIntent = mNextAlarm.getShowIntent();
if (showIntent != null && showIntent.isActivity()) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java
index e7e2ac2958aa..08675c4f027c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java
@@ -26,6 +26,9 @@ public interface BluetoothController {
boolean isBluetoothSupported();
boolean isBluetoothEnabled();
+
+ int getBluetoothState();
+
boolean isBluetoothConnected();
boolean isBluetoothConnecting();
String getLastDeviceName();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
index 014cc4944a74..4f880b446f2c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
@@ -49,6 +49,7 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa
private CachedBluetoothDevice mLastDevice;
private final H mHandler = new H();
+ private int mState;
public BluetoothControllerImpl(Context context, Looper bgLooper) {
mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, null);
@@ -120,6 +121,11 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa
}
@Override
+ public int getBluetoothState() {
+ return mState;
+ }
+
+ @Override
public boolean isBluetoothConnected() {
return mConnectionState == BluetoothAdapter.STATE_CONNECTED;
}
@@ -192,7 +198,9 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa
@Override
public void onBluetoothStateChanged(int bluetoothState) {
- mEnabled = bluetoothState == BluetoothAdapter.STATE_ON;
+ mEnabled = bluetoothState == BluetoothAdapter.STATE_ON
+ || bluetoothState == BluetoothAdapter.STATE_TURNING_ON;
+ mState = bluetoothState;
mHandler.sendEmptyMessage(H.MSG_STATE_CHANGED);
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/phone/DozeParametersTests.java b/packages/SystemUI/tests/src/com/android/systemui/phone/DozeParametersTests.java
new file mode 100644
index 000000000000..07334f3b7d25
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/phone/DozeParametersTests.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.systemui.phone;
+
+import com.android.systemui.statusbar.phone.DozeParameters.IntInOutMatcher;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+@SmallTest
+public class DozeParametersTests extends AndroidTestCase {
+
+ public void test_inOutMatcher_defaultIn() {
+ IntInOutMatcher intInOutMatcher = new IntInOutMatcher("*");
+
+ assertTrue(intInOutMatcher.isIn(1));
+ assertTrue(intInOutMatcher.isIn(-1));
+ assertTrue(intInOutMatcher.isIn(0));
+ }
+
+ public void test_inOutMatcher_defaultOut() {
+ IntInOutMatcher intInOutMatcher = new IntInOutMatcher("!*");
+
+ assertFalse(intInOutMatcher.isIn(1));
+ assertFalse(intInOutMatcher.isIn(-1));
+ assertFalse(intInOutMatcher.isIn(0));
+ }
+
+ public void test_inOutMatcher_someIn() {
+ IntInOutMatcher intInOutMatcher = new IntInOutMatcher("1,2,3,!*");
+
+ assertTrue(intInOutMatcher.isIn(1));
+ assertTrue(intInOutMatcher.isIn(2));
+ assertTrue(intInOutMatcher.isIn(3));
+
+ assertFalse(intInOutMatcher.isIn(0));
+ assertFalse(intInOutMatcher.isIn(4));
+ }
+
+ public void test_inOutMatcher_someOut() {
+ IntInOutMatcher intInOutMatcher = new IntInOutMatcher("!1,!2,!3,*");
+
+ assertFalse(intInOutMatcher.isIn(1));
+ assertFalse(intInOutMatcher.isIn(2));
+ assertFalse(intInOutMatcher.isIn(3));
+
+ assertTrue(intInOutMatcher.isIn(0));
+ assertTrue(intInOutMatcher.isIn(4));
+ }
+
+ public void test_inOutMatcher_mixed() {
+ IntInOutMatcher intInOutMatcher = new IntInOutMatcher("!1,2,!3,*");
+
+ assertFalse(intInOutMatcher.isIn(1));
+ assertTrue(intInOutMatcher.isIn(2));
+ assertFalse(intInOutMatcher.isIn(3));
+
+ assertTrue(intInOutMatcher.isIn(0));
+ assertTrue(intInOutMatcher.isIn(4));
+ }
+
+ public void test_inOutMatcher_failEmpty() {
+ try {
+ new IntInOutMatcher("");
+ fail("Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+
+ public void test_inOutMatcher_failNull() {
+ try {
+ new IntInOutMatcher(null);
+ fail("Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+
+ public void test_inOutMatcher_failEmptyClause() {
+ try {
+ new IntInOutMatcher("!1,*,");
+ fail("Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+
+ public void test_inOutMatcher_failDuplicate() {
+ try {
+ new IntInOutMatcher("!1,*,!1");
+ fail("Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+
+ public void test_inOutMatcher_failDuplicateDefault() {
+ try {
+ new IntInOutMatcher("!1,*,*");
+ fail("Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+
+ public void test_inOutMatcher_failMalformedNot() {
+ try {
+ new IntInOutMatcher("!,*");
+ fail("Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+
+ public void test_inOutMatcher_failText() {
+ try {
+ new IntInOutMatcher("!abc,*");
+ fail("Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+
+ public void test_inOutMatcher_failContradiction() {
+ try {
+ new IntInOutMatcher("1,!1,*");
+ fail("Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+
+ public void test_inOutMatcher_failContradictionDefault() {
+ try {
+ new IntInOutMatcher("1,*,!*");
+ fail("Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+
+ public void test_inOutMatcher_failMissingDefault() {
+ try {
+ new IntInOutMatcher("1");
+ fail("Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+
+} \ No newline at end of file
diff --git a/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java b/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
index 05207b9f6b00..402d9adf0e7c 100644
--- a/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
+++ b/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
@@ -16,17 +16,21 @@
package com.android.wallpaperbackup;
+import static android.app.WallpaperManager.FLAG_LOCK;
+import static android.app.WallpaperManager.FLAG_SYSTEM;
+
import android.app.WallpaperManager;
import android.app.backup.BackupAgent;
import android.app.backup.BackupDataInput;
import android.app.backup.BackupDataOutput;
import android.app.backup.FullBackupDataOutput;
import android.content.Context;
+import android.content.SharedPreferences;
import android.graphics.Rect;
import android.os.Environment;
+import android.os.FileUtils;
import android.os.ParcelFileDescriptor;
import android.os.UserHandle;
-import android.system.Os;
import android.util.Slog;
import android.util.Xml;
@@ -40,7 +44,7 @@ import java.nio.charset.StandardCharsets;
public class WallpaperBackupAgent extends BackupAgent {
private static final String TAG = "WallpaperBackup";
- private static final boolean DEBUG = true;
+ private static final boolean DEBUG = false;
// NB: must be kept in sync with WallpaperManagerService but has no
// compile-time visibility.
@@ -57,6 +61,11 @@ public class WallpaperBackupAgent extends BackupAgent {
static final String EMPTY_SENTINEL = "empty";
static final String QUOTA_SENTINEL = "quota";
+ // Not-for-backup bookkeeping
+ static final String PREFS_NAME = "wbprefs.xml";
+ static final String SYSTEM_GENERATION = "system_gen";
+ static final String LOCK_GENERATION = "lock_gen";
+
private File mWallpaperInfo; // wallpaper metadata file
private File mWallpaperFile; // primary wallpaper image file
private File mLockWallpaperFile; // lock wallpaper image file
@@ -106,27 +115,48 @@ public class WallpaperBackupAgent extends BackupAgent {
// only back up the wallpaper if we've been told it's allowed
if (mWm.isWallpaperBackupEligible()) {
if (DEBUG) {
- Slog.v(TAG, "Wallpaper is backup-eligible; linking & writing");
+ Slog.v(TAG, "Wallpaper is backup-eligible");
}
- // In case of prior muddled state
- infoStage.delete();
- imageStage.delete();
- lockImageStage.delete();
+ SharedPreferences prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
+ final int lastSysGeneration = prefs.getInt(SYSTEM_GENERATION, -1);
+ final int lastLockGeneration = prefs.getInt(LOCK_GENERATION, -1);
+
+ final int sysGeneration =
+ mWm.getWallpaperIdForUser(FLAG_SYSTEM, UserHandle.USER_SYSTEM);
+ final int lockGeneration =
+ mWm.getWallpaperIdForUser(FLAG_LOCK, UserHandle.USER_SYSTEM);
+ final boolean sysChanged = (sysGeneration != lastSysGeneration);
+ final boolean lockChanged = (lockGeneration != lastLockGeneration);
+ if (DEBUG) {
+ Slog.v(TAG, "sysGen=" + sysGeneration + " : sysChanged=" + sysChanged);
+ Slog.v(TAG, "lockGen=" + lockGeneration + " : lockChanged=" + lockChanged);
+ }
if (mWallpaperInfo.exists()) {
- Os.link(mWallpaperInfo.getCanonicalPath(), infoStage.getCanonicalPath());
+ if (sysChanged || lockChanged || !infoStage.exists()) {
+ if (DEBUG) Slog.v(TAG, "New wallpaper configuration; copying");
+ FileUtils.copyFileOrThrow(mWallpaperInfo, infoStage);
+ }
fullBackupFile(infoStage, data);
}
if (mWallpaperFile.exists()) {
- Os.link(mWallpaperFile.getCanonicalPath(), imageStage.getCanonicalPath());
+ if (sysChanged || !imageStage.exists()) {
+ if (DEBUG) Slog.v(TAG, "New system wallpaper; copying");
+ FileUtils.copyFileOrThrow(mWallpaperFile, imageStage);
+ }
fullBackupFile(imageStage, data);
+ prefs.edit().putInt(SYSTEM_GENERATION, sysGeneration).apply();
}
// Don't try to store the lock image if we overran our quota last time
if (mLockWallpaperFile.exists() && !mQuotaExceeded) {
- Os.link(mLockWallpaperFile.getCanonicalPath(), lockImageStage.getCanonicalPath());
+ if (lockChanged || !lockImageStage.exists()) {
+ if (DEBUG) Slog.v(TAG, "New lock wallpaper; copying");
+ FileUtils.copyFileOrThrow(mLockWallpaperFile, lockImageStage);
+ }
fullBackupFile(lockImageStage, data);
+ prefs.edit().putInt(LOCK_GENERATION, lockGeneration).apply();
}
} else {
if (DEBUG) {
@@ -136,13 +166,6 @@ public class WallpaperBackupAgent extends BackupAgent {
} catch (Exception e) {
Slog.e(TAG, "Unable to back up wallpaper", e);
} finally {
- if (DEBUG) {
- Slog.v(TAG, "Removing backup stage links");
- }
- infoStage.delete();
- imageStage.delete();
- lockImageStage.delete();
-
// Even if this time we had to back off on attempting to store the lock image
// due to exceeding the data quota, try again next time. This will alternate
// between "try both" and "only store the primary image" until either there
@@ -189,26 +212,30 @@ public class WallpaperBackupAgent extends BackupAgent {
Slog.e(TAG, "Unable to restore wallpaper: " + e.getMessage());
} finally {
if (DEBUG) {
- Slog.v(TAG, "Removing restore stage files");
+ Slog.v(TAG, "Restore finished; clearing backup bookkeeping");
}
infoStage.delete();
imageStage.delete();
lockImageStage.delete();
+
+ SharedPreferences prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
+ prefs.edit()
+ .putInt(SYSTEM_GENERATION, -1)
+ .putInt(LOCK_GENERATION, -1)
+ .commit();
}
}
private void restoreFromStage(File stage, File info, String hintTag, int which)
throws IOException {
if (stage.exists()) {
- if (DEBUG) {
- Slog.v(TAG, "Got restored wallpaper; applying which=" + which);
- }
// Parse the restored info file to find the crop hint. Note that this currently
// relies on a priori knowledge of the wallpaper info file schema.
Rect cropHint = parseCropHint(info, hintTag);
if (cropHint != null) {
+ Slog.i(TAG, "Got restored wallpaper; applying which=" + which);
if (DEBUG) {
- Slog.v(TAG, "Restored crop hint " + cropHint + "; now writing data");
+ Slog.v(TAG, "Restored crop hint " + cropHint);
}
try (FileInputStream in = new FileInputStream(stage)) {
mWm.setStream(in, cropHint, true, which);
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index ef41f49a9d45..051cb2d8052e 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -2283,7 +2283,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (VDBG) log("NetworkFactory connected");
// A network factory has connected. Send it all current NetworkRequests.
for (NetworkRequestInfo nri : mNetworkRequests.values()) {
- if (!nri.request.isRequest()) continue;
+ if (nri.request.isListen()) continue;
NetworkAgentInfo nai = mNetworkForRequestId.get(nri.request.requestId);
ac.sendMessage(android.net.NetworkFactory.CMD_REQUEST_NETWORK,
(nai != null ? nai.getCurrentScore() : 0), 0, nri.request);
@@ -2425,7 +2425,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
private void handleRegisterNetworkRequest(NetworkRequestInfo nri) {
mNetworkRequests.put(nri.request, nri);
mNetworkRequestInfoLogs.log("REGISTER " + nri);
- if (!nri.request.isRequest()) {
+ if (nri.request.isListen()) {
for (NetworkAgentInfo network : mNetworkAgentInfos.values()) {
if (nri.request.networkCapabilities.hasSignalStrength() &&
network.satisfiesImmutableCapabilitiesOf(nri.request)) {
@@ -4573,7 +4573,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
for (int i = 0; i < nai.numNetworkRequests(); i++) {
NetworkRequest nr = nai.requestAt(i);
// Don't send listening requests to factories. b/17393458
- if (!nr.isRequest()) continue;
+ if (nr.isListen()) continue;
sendUpdatedScoreToFactories(nr, nai.getCurrentScore());
}
}
@@ -4667,7 +4667,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
for (int i = 0; i < nai.numNetworkRequests(); i++) {
NetworkRequest nr = nai.requestAt(i);
// Ignore listening requests.
- if (!nr.isRequest()) continue;
+ if (nr.isListen()) continue;
loge("Dead network still had at least " + nr);
break;
}
@@ -4759,7 +4759,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// check if it satisfies the NetworkCapabilities
if (VDBG) log(" checking if request is satisfied: " + nri.request);
if (satisfies) {
- if (!nri.request.isRequest()) {
+ if (nri.request.isListen()) {
// This is not a request, it's a callback listener.
// Add it to newNetwork regardless of score.
if (newNetwork.addRequest(nri.request)) addedRequests.add(nri);
diff --git a/services/core/java/com/android/server/GestureLauncherService.java b/services/core/java/com/android/server/GestureLauncherService.java
index 5a9048898d02..553cb071613b 100644
--- a/services/core/java/com/android/server/GestureLauncherService.java
+++ b/services/core/java/com/android/server/GestureLauncherService.java
@@ -33,6 +33,7 @@ import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.os.SystemClock;
import android.os.SystemProperties;
+import android.os.UserHandle;
import android.provider.Settings;
import android.util.MutableBoolean;
import android.util.Slog;
@@ -284,8 +285,8 @@ public class GestureLauncherService extends SystemService {
* @return true if camera was launched, false otherwise.
*/
private boolean handleCameraLaunchGesture(boolean useWakelock, int source) {
- boolean userSetupComplete = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.USER_SETUP_COMPLETE, 0) != 0;
+ boolean userSetupComplete = Settings.Secure.getIntForUser(mContext.getContentResolver(),
+ Settings.Secure.USER_SETUP_COMPLETE, 0, UserHandle.USER_CURRENT) != 0;
if (!userSetupComplete) {
if (DBG) Slog.d(TAG, String.format(
"userSetupComplete = %s, ignoring camera launch gesture.",
diff --git a/services/core/java/com/android/server/LockSettingsService.java b/services/core/java/com/android/server/LockSettingsService.java
index 0cce2a226392..33c2ea28d7d1 100644
--- a/services/core/java/com/android/server/LockSettingsService.java
+++ b/services/core/java/com/android/server/LockSettingsService.java
@@ -1243,6 +1243,10 @@ public class LockSettingsService extends ILockSettings.Stub {
private VerifyCredentialResponse doVerifyPattern(String pattern, CredentialHash storedHash,
boolean hasChallenge, long challenge, int userId,
ICheckCredentialProgressCallback progressCallback) throws RemoteException {
+
+ if (TextUtils.isEmpty(pattern)) {
+ throw new IllegalArgumentException("Pattern can't be null or empty");
+ }
boolean shouldReEnrollBaseZero = storedHash != null && storedHash.isBaseZeroPattern;
String patternToVerify;
@@ -1340,6 +1344,9 @@ public class LockSettingsService extends ILockSettings.Stub {
private VerifyCredentialResponse doVerifyPassword(String password, CredentialHash storedHash,
boolean hasChallenge, long challenge, int userId,
ICheckCredentialProgressCallback progressCallback) throws RemoteException {
+ if (TextUtils.isEmpty(password)) {
+ throw new IllegalArgumentException("Password can't be null or empty");
+ }
return verifyCredential(userId, storedHash, password, hasChallenge, challenge,
new CredentialUtil() {
@Override
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index be9d836ebca4..418ba9f6327f 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -494,7 +494,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub
if (mLastPowerStateFromWifi != powerState) {
mLastPowerStateFromWifi = powerState;
try {
- getBatteryStats().noteWifiRadioPowerState(powerState, tsNanos);
+ getBatteryStats().noteWifiRadioPowerState(powerState, tsNanos, uid);
} catch (RemoteException e) {
}
}
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java
index 577cada36c3e..9108acf9c40a 100644
--- a/services/core/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/core/java/com/android/server/accounts/AccountManagerService.java
@@ -1553,9 +1553,15 @@ public class AccountManagerService
}
}
}
-
- logRecord(accounts, DebugDbHelper.ACTION_CALLED_ACCOUNT_REMOVE, TABLE_ACCOUNTS);
-
+ SQLiteDatabase db = accounts.openHelper.getReadableDatabase();
+ final long accountId = getAccountIdLocked(db, account);
+ logRecord(
+ db,
+ DebugDbHelper.ACTION_CALLED_ACCOUNT_REMOVE,
+ TABLE_ACCOUNTS,
+ accountId,
+ accounts,
+ callingUid);
try {
new RemoveAccountSession(accounts, response, account, expectActivityLaunch).bind();
} finally {
@@ -1587,7 +1593,15 @@ public class AccountManagerService
throw new SecurityException(msg);
}
UserAccounts accounts = getUserAccountsForCaller();
- logRecord(accounts, DebugDbHelper.ACTION_CALLED_ACCOUNT_REMOVE, TABLE_ACCOUNTS);
+ SQLiteDatabase db = accounts.openHelper.getReadableDatabase();
+ final long accountId = getAccountIdLocked(db, account);
+ logRecord(
+ db,
+ DebugDbHelper.ACTION_CALLED_ACCOUNT_REMOVE,
+ TABLE_ACCOUNTS,
+ accountId,
+ accounts,
+ callingUid);
long identityToken = clearCallingIdentity();
try {
return removeAccountInternal(accounts, account, callingUid);
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 87168111c3f9..d426dd062b10 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -13604,7 +13604,7 @@ public final class ActivityManagerService extends ActivityManagerNative
sb.append("Process: ").append(processName).append("\n");
int flags = process.info.flags;
IPackageManager pm = AppGlobals.getPackageManager();
- sb.append("Flags: 0x").append(Integer.toString(flags, 16)).append("\n");
+ sb.append("Flags: 0x").append(Integer.toHexString(flags)).append("\n");
for (int ip=0; ip<process.pkgList.size(); ip++) {
String pkg = process.pkgList.keyAt(ip);
sb.append("Package: ").append(pkg);
@@ -20265,10 +20265,12 @@ public final class ActivityManagerService extends ActivityManagerNative
if (mUseFifoUiScheduling) {
// Reset UI pipeline to SCHED_OTHER
Process.setThreadScheduler(app.pid, Process.SCHED_OTHER, 0);
- Process.setThreadScheduler(app.renderThreadTid,
- Process.SCHED_OTHER, 0);
Process.setThreadPriority(app.pid, app.savedPriority);
- Process.setThreadPriority(app.renderThreadTid, -4);
+ if (app.renderThreadTid != 0) {
+ Process.setThreadScheduler(app.renderThreadTid,
+ Process.SCHED_OTHER, 0);
+ Process.setThreadPriority(app.renderThreadTid, -4);
+ }
}
}
} catch (Exception e) {
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index def6828beabb..7fe29b086556 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -710,7 +710,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
}
@Override
- public void noteWifiRadioPowerState(int powerState, long tsNanos) {
+ public void noteWifiRadioPowerState(int powerState, long tsNanos, int uid) {
enforceCallingPermission();
// There was a change in WiFi power state.
@@ -723,7 +723,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
mHandler.scheduleSync("wifi-data: " + type,
BatteryStatsImpl.ExternalStatsSync.UPDATE_WIFI);
}
- mStats.noteWifiRadioPowerState(powerState, tsNanos);
+ mStats.noteWifiRadioPowerState(powerState, tsNanos, uid);
}
}
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index 4de09bd5318e..9c22be724bbc 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -352,9 +352,15 @@ final class UserController {
final UserInfo info = getUserInfo(userId);
if (!Objects.equals(info.lastLoggedInFingerprint, Build.FINGERPRINT)) {
// Suppress double notifications for managed profiles that
- // were unlocked automatically (no challenge token required)
- // as part of their parent user being unlocked.
- final boolean quiet = info.isManagedProfile() && !uss.tokenProvided;
+ // were unlocked automatically as part of their parent user
+ // being unlocked.
+ final boolean quiet;
+ if (info.isManagedProfile()) {
+ quiet = !uss.tokenProvided
+ || !mLockPatternUtils.isSeparateProfileChallengeEnabled(userId);
+ } else {
+ quiet = false;
+ }
new PreBootBroadcaster(mService, userId, null, quiet) {
@Override
public void onFinished() {
diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java
index 1c2684642c53..66aa40325a4f 100644
--- a/services/core/java/com/android/server/clipboard/ClipboardService.java
+++ b/services/core/java/com/android/server/clipboard/ClipboardService.java
@@ -188,6 +188,14 @@ public class ClipboardService extends IClipboard.Stub {
if (!canCopy) {
clip = null;
} else {
+ // We want to fix the uris of the related user's clip without changing the
+ // uris of the current user's clip.
+ // So, copy the ClipData, and then copy all the items, so that nothing
+ // is shared in memmory.
+ clip = new ClipData(clip);
+ for (int i = clip.getItemCount() - 1; i >= 0; i--) {
+ clip.setItemAt(i, new ClipData.Item(clip.getItemAt(i)));
+ }
clip.fixUrisLight(userId);
}
for (int i = 0; i < size; i++) {
diff --git a/services/core/java/com/android/server/display/DisplayTransformManager.java b/services/core/java/com/android/server/display/DisplayTransformManager.java
index cfeae7bd6bd7..6902b1a5cd04 100644
--- a/services/core/java/com/android/server/display/DisplayTransformManager.java
+++ b/services/core/java/com/android/server/display/DisplayTransformManager.java
@@ -24,6 +24,10 @@ import android.os.ServiceManager;
import android.util.Slog;
import android.util.SparseArray;
+import com.android.internal.annotations.GuardedBy;
+
+import java.util.Arrays;
+
/**
* Manager for applying color transformations to the display.
*/
@@ -44,19 +48,34 @@ public class DisplayTransformManager {
*/
public static final int LEVEL_COLOR_MATRIX_INVERT_COLOR = 300;
+ /**
+ * Map of level -> color transformation matrix.
+ */
+ @GuardedBy("mColorMatrix")
private final SparseArray<float[]> mColorMatrix = new SparseArray<>(3);
+ /**
+ * Temporary matrix used internally by {@link #computeColorMatrixLocked()}.
+ */
+ @GuardedBy("mColorMatrix")
+ private final float[][] mTempColorMatrix = new float[2][16];
+ /**
+ * Lock used for synchronize access to {@link #mDaltonizerMode}.
+ */
+ private final Object mDaltonizerModeLock = new Object();
+ @GuardedBy("mDaltonizerModeLock")
private int mDaltonizerMode = -1;
/* package */ DisplayTransformManager() {
}
/**
- * Returns the color transform matrix set for a given level.
+ * Returns a copy of the color transform matrix set for a given level.
*/
public float[] getColorMatrix(int key) {
synchronized (mColorMatrix) {
- return mColorMatrix.get(key);
+ final float[] value = mColorMatrix.get(key);
+ return value == null ? null : Arrays.copyOf(value, value.length);
}
}
@@ -66,53 +85,59 @@ public class DisplayTransformManager {
* Note: all color transforms are first composed to a single matrix in ascending order based
* on level before being applied to the display.
*
- * @param key the level used to identify and compose the color transform (low -> high)
+ * @param level the level used to identify and compose the color transform (low -> high)
* @param value the 4x4 color transform matrix (in column-major order), or {@code null} to
* remove the color transform matrix associated with the provided level
*/
- public void setColorMatrix(int key, float[] value) {
+ public void setColorMatrix(int level, float[] value) {
if (value != null && value.length != 16) {
throw new IllegalArgumentException("Expected length: 16 (4x4 matrix)"
+ ", actual length: " + value.length);
}
synchronized (mColorMatrix) {
- if (value != null) {
- mColorMatrix.put(key, value);
- } else {
- mColorMatrix.remove(key);
- }
+ final float[] oldValue = mColorMatrix.get(level);
+ if (!Arrays.equals(oldValue, value)) {
+ if (value == null) {
+ mColorMatrix.remove(level);
+ } else if (oldValue == null) {
+ mColorMatrix.put(level, Arrays.copyOf(value, value.length));
+ } else {
+ System.arraycopy(value, 0, oldValue, 0, value.length);
+ }
- // Update the current color transform.
- applyColorMatrix(computeColorMatrix());
+ // Update the current color transform.
+ applyColorMatrix(computeColorMatrixLocked());
+ }
}
}
/**
* Returns the composition of all current color matrices, or {@code null} if there are none.
*/
- private float[] computeColorMatrix() {
- synchronized (mColorMatrix) {
- final int count = mColorMatrix.size();
- if (count == 0) {
- return null;
- }
+ @GuardedBy("mColorMatrix")
+ private float[] computeColorMatrixLocked() {
+ final int count = mColorMatrix.size();
+ if (count == 0) {
+ return null;
+ }
- final float[][] result = new float[2][16];
- Matrix.setIdentityM(result[0], 0);
- for (int i = 0; i < count; i++) {
- float[] rhs = mColorMatrix.valueAt(i);
- Matrix.multiplyMM(result[(i + 1) % 2], 0, result[i % 2], 0, rhs, 0);
- }
- return result[count % 2];
+ final float[][] result = mTempColorMatrix;
+ Matrix.setIdentityM(result[0], 0);
+ for (int i = 0; i < count; i++) {
+ float[] rhs = mColorMatrix.valueAt(i);
+ Matrix.multiplyMM(result[(i + 1) % 2], 0, result[i % 2], 0, rhs, 0);
}
+ return result[count % 2];
}
/**
* Returns the current Daltonization mode.
*/
public int getDaltonizerMode() {
- return mDaltonizerMode;
+ synchronized (mDaltonizerModeLock) {
+ return mDaltonizerMode;
+ }
}
/**
@@ -122,9 +147,11 @@ public class DisplayTransformManager {
* @param mode the new Daltonization mode, or -1 to disable
*/
public void setDaltonizerMode(int mode) {
- if (mDaltonizerMode != mode) {
- mDaltonizerMode = mode;
- applyDaltonizerMode(mode);
+ synchronized (mDaltonizerModeLock) {
+ if (mDaltonizerMode != mode) {
+ mDaltonizerMode = mode;
+ applyDaltonizerMode(mode);
+ }
}
}
diff --git a/services/core/java/com/android/server/display/NightDisplayService.java b/services/core/java/com/android/server/display/NightDisplayService.java
index 1f4ee9b2d4ea..39498a62fdcd 100644
--- a/services/core/java/com/android/server/display/NightDisplayService.java
+++ b/services/core/java/com/android/server/display/NightDisplayService.java
@@ -16,6 +16,10 @@
package com.android.server.display;
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.TypeEvaluator;
+import android.animation.ValueAnimator;
import android.app.AlarmManager;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
@@ -24,11 +28,14 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.database.ContentObserver;
import android.net.Uri;
+import android.opengl.Matrix;
import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
import android.provider.Settings.Secure;
+import android.util.MathUtils;
import android.util.Slog;
+import android.view.animation.AnimationUtils;
import com.android.internal.app.NightDisplayController;
import com.android.server.SystemService;
@@ -39,6 +46,8 @@ import com.android.server.twilight.TwilightState;
import java.util.Calendar;
import java.util.TimeZone;
+import static com.android.server.display.DisplayTransformManager.LEVEL_COLOR_MATRIX_NIGHT_DISPLAY;
+
/**
* Tints the display at night.
*/
@@ -58,6 +67,19 @@ public final class NightDisplayService extends SystemService
0, 0, 0, 1
};
+ /**
+ * The identity matrix, used if one of the given matrices is {@code null}.
+ */
+ private static final float[] MATRIX_IDENTITY = new float[16];
+ static {
+ Matrix.setIdentityM(MATRIX_IDENTITY, 0);
+ }
+
+ /**
+ * Evaluator used to animate color matrix transitions.
+ */
+ private static final ColorMatrixEvaluator COLOR_MATRIX_EVALUATOR = new ColorMatrixEvaluator();
+
private final Handler mHandler;
private int mCurrentUser = UserHandle.USER_NULL;
@@ -65,6 +87,7 @@ public final class NightDisplayService extends SystemService
private boolean mBootCompleted;
private NightDisplayController mController;
+ private ValueAnimator mColorMatrixAnimator;
private Boolean mIsActivated;
private AutoMode mAutoMode;
@@ -181,6 +204,11 @@ public final class NightDisplayService extends SystemService
mAutoMode = null;
}
+ if (mColorMatrixAnimator != null) {
+ mColorMatrixAnimator.end();
+ mColorMatrixAnimator = null;
+ }
+
mIsActivated = null;
}
@@ -195,10 +223,49 @@ public final class NightDisplayService extends SystemService
mAutoMode.onActivated(activated);
}
- // Update the current color matrix.
+ // Cancel the old animator if still running.
+ if (mColorMatrixAnimator != null) {
+ mColorMatrixAnimator.cancel();
+ }
+
final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class);
- dtm.setColorMatrix(DisplayTransformManager.LEVEL_COLOR_MATRIX_NIGHT_DISPLAY,
- activated ? MATRIX_NIGHT : null);
+ final float[] from = dtm.getColorMatrix(LEVEL_COLOR_MATRIX_NIGHT_DISPLAY);
+ final float[] to = mIsActivated ? MATRIX_NIGHT : null;
+
+ mColorMatrixAnimator = ValueAnimator.ofObject(COLOR_MATRIX_EVALUATOR,
+ from == null ? MATRIX_IDENTITY : from, to == null ? MATRIX_IDENTITY : to);
+ mColorMatrixAnimator.setDuration(getContext().getResources()
+ .getInteger(android.R.integer.config_longAnimTime));
+ mColorMatrixAnimator.setInterpolator(AnimationUtils.loadInterpolator(
+ getContext(), android.R.interpolator.fast_out_slow_in));
+ mColorMatrixAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animator) {
+ final float[] value = (float[]) animator.getAnimatedValue();
+ dtm.setColorMatrix(LEVEL_COLOR_MATRIX_NIGHT_DISPLAY, value);
+ }
+ });
+ mColorMatrixAnimator.addListener(new AnimatorListenerAdapter() {
+
+ private boolean mIsCancelled;
+
+ @Override
+ public void onAnimationCancel(Animator animator) {
+ mIsCancelled = true;
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animator) {
+ if (!mIsCancelled) {
+ // Ensure final color matrix is set at the end of the animation. If the
+ // animation is cancelled then don't set the final color matrix so the new
+ // animator can pick up from where this one left off.
+ dtm.setColorMatrix(LEVEL_COLOR_MATRIX_NIGHT_DISPLAY, to);
+ }
+ mColorMatrixAnimator = null;
+ }
+ });
+ mColorMatrixAnimator.start();
}
}
@@ -394,4 +461,23 @@ public final class NightDisplayService extends SystemService
updateActivated();
}
}
+
+ /**
+ * Interpolates between two 4x4 color transform matrices (in column-major order).
+ */
+ private static class ColorMatrixEvaluator implements TypeEvaluator<float[]> {
+
+ /**
+ * Result matrix returned by {@link #evaluate(float, float[], float[])}.
+ */
+ private final float[] mResultMatrix = new float[16];
+
+ @Override
+ public float[] evaluate(float fraction, float[] startValue, float[] endValue) {
+ for (int i = 0; i < mResultMatrix.length; i++) {
+ mResultMatrix[i] = MathUtils.lerp(startValue[i], endValue[i], fraction);
+ }
+ return mResultMatrix;
+ }
+ }
}
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index 173f76fa52f5..7580cf4f0111 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -393,6 +393,15 @@ public class GnssLocationProvider implements LocationProviderInterface {
// SIM/Carrier info.
private final static String SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
+ // Persist property for LPP_PROFILE
+ private final static String LPP_PROFILE = "persist.sys.gps.lpp";
+
+ // VZW PLMN info
+ private static final String[] VzwMccMncList = {"311480", "310004", "20404"};
+ // corresponding GID1 value, empty string means ignore gid1 match.
+ private static final String[] VzwGid1List = {"", "", "BAE0000000000000"};
+
+
private final PowerManager mPowerManager;
private final AlarmManager mAlarmManager;
private final PendingIntent mWakeupIntent;
@@ -507,14 +516,43 @@ public class GnssLocationProvider implements LocationProviderInterface {
}
};
+ private final boolean isVerizon(String mccMnc, String imsi, String groupId) {
+ if (DEBUG) Log.d(TAG, "simOperator: " + mccMnc);
+ if (!TextUtils.isEmpty(mccMnc) || !TextUtils.isEmpty(imsi)) {
+ for (int i = 0; i < VzwMccMncList.length; i++) {
+ if ((!TextUtils.isEmpty(mccMnc) && mccMnc.equals(VzwMccMncList[i])) ||
+ (!TextUtils.isEmpty(imsi) && imsi.startsWith(VzwMccMncList[i]))) {
+ // check gid too if needed
+ if (TextUtils.isEmpty(VzwGid1List[i]) || VzwGid1List[i].equals(groupId)) {
+ if (DEBUG) Log.d(TAG, "Verizon UICC");
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
private void subscriptionOrSimChanged(Context context) {
if (DEBUG) Log.d(TAG, "received SIM related action: ");
TelephonyManager phone = (TelephonyManager)
mContext.getSystemService(Context.TELEPHONY_SERVICE);
String mccMnc = phone.getSimOperator();
+ String imsi = phone.getSubscriberId();
+ String groupId = phone.getGroupIdLevel1();
if (!TextUtils.isEmpty(mccMnc)) {
if (DEBUG) Log.d(TAG, "SIM MCC/MNC is available: " + mccMnc);
synchronized (mLock) {
+ if (isVerizon(mccMnc, imsi, groupId)) {
+ // load current properties for carrier VZW
+ loadPropertiesFromResource(context, mProperties);
+ String lpp_profile = mProperties.getProperty("LPP_PROFILE");
+ // set the persist property LPP_PROFILE for VZW
+ SystemProperties.set(LPP_PROFILE, lpp_profile);
+ } else {
+ // reset the persist property for Non VZW
+ SystemProperties.set(LPP_PROFILE, "");
+ }
reloadGpsProperties(context, mProperties);
mNIHandler.setSuplEsEnabled(mSuplEsEnabled);
}
@@ -571,8 +609,10 @@ public class GnssLocationProvider implements LocationProviderInterface {
private void reloadGpsProperties(Context context, Properties properties) {
if (DEBUG) Log.d(TAG, "Reset GPS properties, previous size = " + properties.size());
loadPropertiesFromResource(context, properties);
+
boolean isPropertiesLoadedFromFile = false;
final String gpsHardware = SystemProperties.get("ro.hardware.gps");
+
if (!TextUtils.isEmpty(gpsHardware)) {
final String propFilename =
PROPERTIES_FILE_PREFIX + "." + gpsHardware + PROPERTIES_FILE_SUFFIX;
@@ -583,7 +623,11 @@ public class GnssLocationProvider implements LocationProviderInterface {
loadPropertiesFromFile(DEFAULT_PROPERTIES_FILE, properties);
}
if (DEBUG) Log.d(TAG, "GPS properties reloaded, size = " + properties.size());
-
+ String lpp_prof = SystemProperties.get(LPP_PROFILE);
+ if (!TextUtils.isEmpty(lpp_prof)) {
+ // override default value of this if lpp_prof is not empty
+ properties.setProperty("LPP_PROFILE", lpp_prof);
+ }
// TODO: we should get rid of C2K specific setting.
setSuplHostPort(properties.getProperty("SUPL_HOST"),
properties.getProperty("SUPL_PORT"));
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index cbd0769fdf68..e368af2fda5c 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -3150,6 +3150,12 @@ public class NotificationManagerService extends SystemService {
}
}
+ private void recordCallerLocked(NotificationRecord record) {
+ if (mZenModeHelper.isCall(record)) {
+ mZenModeHelper.recordCaller(record);
+ }
+ }
+
// let zen mode evaluate this record
private void applyZenModeLocked(NotificationRecord record) {
record.setIntercepted(mZenModeHelper.shouldIntercept(record));
@@ -3289,6 +3295,10 @@ public class NotificationManagerService extends SystemService {
}
private void cancelNotificationLocked(NotificationRecord r, boolean sendDelete, int reason) {
+
+ // Record caller.
+ recordCallerLocked(r);
+
// tell the app
if (sendDelete) {
if (r.getNotification().deleteIntent != null) {
diff --git a/services/core/java/com/android/server/notification/ZenModeFiltering.java b/services/core/java/com/android/server/notification/ZenModeFiltering.java
index 80dc52349c34..cbaad460b888 100644
--- a/services/core/java/com/android/server/notification/ZenModeFiltering.java
+++ b/services/core/java/com/android/server/notification/ZenModeFiltering.java
@@ -81,7 +81,9 @@ public class ZenModeFiltering {
if (zen == Global.ZEN_MODE_NO_INTERRUPTIONS) return false; // nothing gets through
if (zen == Global.ZEN_MODE_ALARMS) return false; // not an alarm
if (zen == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS) {
- if (config.allowRepeatCallers && REPEAT_CALLERS.isRepeat(context, extras)) return true;
+ if (config.allowRepeatCallers && REPEAT_CALLERS.isRepeat(context, extras)) {
+ return true;
+ }
if (!config.allowCalls) return false; // no other calls get through
if (validator != null) {
final float contactAffinity = validator.getContactAffinity(userHandle, extras,
@@ -97,6 +99,10 @@ public class ZenModeFiltering {
? record.sbn.getNotification().extras : null;
}
+ protected void recordCall(NotificationRecord record) {
+ REPEAT_CALLERS.recordCall(mContext, extras(record));
+ }
+
public boolean shouldIntercept(int zen, ZenModeConfig config, NotificationRecord record) {
if (isSystem(record)) {
return false;
@@ -233,28 +239,45 @@ public class ZenModeFiltering {
}
private static class RepeatCallers {
+ // Person : time
private final ArrayMap<String, Long> mCalls = new ArrayMap<>();
private int mThresholdMinutes;
+ private synchronized void recordCall(Context context, Bundle extras) {
+ setThresholdMinutes(context);
+ if (mThresholdMinutes <= 0 || extras == null) return;
+ final String peopleString = peopleString(extras);
+ if (peopleString == null) return;
+ final long now = System.currentTimeMillis();
+ cleanUp(mCalls, now);
+ mCalls.put(peopleString, now);
+ }
+
private synchronized boolean isRepeat(Context context, Bundle extras) {
- if (mThresholdMinutes <= 0) {
- mThresholdMinutes = context.getResources().getInteger(com.android.internal.R.integer
- .config_zen_repeat_callers_threshold);
- }
+ setThresholdMinutes(context);
if (mThresholdMinutes <= 0 || extras == null) return false;
final String peopleString = peopleString(extras);
if (peopleString == null) return false;
final long now = System.currentTimeMillis();
- final int N = mCalls.size();
+ cleanUp(mCalls, now);
+ return mCalls.containsKey(peopleString);
+ }
+
+ private synchronized void cleanUp(ArrayMap<String, Long> calls, long now) {
+ final int N = calls.size();
for (int i = N - 1; i >= 0; i--) {
final long time = mCalls.valueAt(i);
if (time > now || (now - time) > mThresholdMinutes * 1000 * 60) {
- mCalls.removeAt(i);
+ calls.removeAt(i);
}
}
- final boolean isRepeat = mCalls.containsKey(peopleString);
- mCalls.put(peopleString, now);
- return isRepeat;
+ }
+
+ private void setThresholdMinutes(Context context) {
+ if (mThresholdMinutes <= 0) {
+ mThresholdMinutes = context.getResources().getInteger(com.android.internal.R.integer
+ .config_zen_repeat_callers_threshold);
+ }
}
private static String peopleString(Bundle extras) {
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java
index 8c9dc3ba60f2..c22bfb321a5c 100644
--- a/services/core/java/com/android/server/notification/ZenModeHelper.java
+++ b/services/core/java/com/android/server/notification/ZenModeHelper.java
@@ -139,8 +139,7 @@ public class ZenModeHelper {
ValidateNotificationPeople validator, int contactsTimeoutMs, float timeoutAffinity) {
synchronized (mConfig) {
return ZenModeFiltering.matchesCallFilter(mContext, mZenMode, mConfig, userHandle,
- extras,
- validator, contactsTimeoutMs, timeoutAffinity);
+ extras, validator, contactsTimeoutMs, timeoutAffinity);
}
}
@@ -148,6 +147,10 @@ public class ZenModeHelper {
return mFiltering.isCall(record);
}
+ public void recordCaller(NotificationRecord record) {
+ mFiltering.recordCall(record);
+ }
+
public boolean shouldIntercept(NotificationRecord record) {
synchronized (mConfig) {
return mFiltering.shouldIntercept(mZenMode, mConfig, record);
diff --git a/services/core/java/com/android/server/pm/AbstractStatsBase.java b/services/core/java/com/android/server/pm/AbstractStatsBase.java
new file mode 100644
index 000000000000..612c4767ccaa
--- /dev/null
+++ b/services/core/java/com/android/server/pm/AbstractStatsBase.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.pm;
+
+import android.os.Environment;
+import android.os.SystemClock;
+import android.util.AtomicFile;
+
+import java.io.File;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * A simple base class for statistics that need to be saved/restored from a dedicated file. This
+ * class provides a base implementation that:
+ * <ul>
+ * <li>Provide an AtomicFile to the actual read/write code
+ * <li>A background-thread write and a synchronous write
+ * <li>Write-limiting for the background-thread (by default writes are at least 30 minutes apart)
+ * <li>Can lock on the provided data object before writing
+ * </ul>
+ * For completion, a subclass needs to implement actual {@link #writeInternal(Object) writing} and
+ * {@link #readInternal(Object) reading}.
+ */
+public abstract class AbstractStatsBase<T> {
+
+ private static final int WRITE_INTERVAL_MS =
+ (PackageManagerService.DEBUG_DEXOPT) ? 0 : 30*60*1000;
+ private final Object mFileLock = new Object();
+ private final AtomicLong mLastTimeWritten = new AtomicLong(0);
+ private final AtomicBoolean mBackgroundWriteRunning = new AtomicBoolean(false);
+ private final String mFileName;
+ private final String mBackgroundThreadName;
+ private final boolean mLock;
+
+ protected AbstractStatsBase(String fileName, String threadName, boolean lock) {
+ mFileName = fileName;
+ mBackgroundThreadName = threadName;
+ mLock = lock;
+ }
+
+ protected AtomicFile getFile() {
+ File dataDir = Environment.getDataDirectory();
+ File systemDir = new File(dataDir, "system");
+ File fname = new File(systemDir, mFileName);
+ return new AtomicFile(fname);
+ }
+
+ void writeNow(final T data) {
+ writeImpl(data);
+ mLastTimeWritten.set(SystemClock.elapsedRealtime());
+ }
+
+ boolean maybeWriteAsync(final T data) {
+ if (SystemClock.elapsedRealtime() - mLastTimeWritten.get() < WRITE_INTERVAL_MS
+ && !PackageManagerService.DEBUG_DEXOPT) {
+ return false;
+ }
+
+ if (mBackgroundWriteRunning.compareAndSet(false, true)) {
+ new Thread(mBackgroundThreadName) {
+ @Override
+ public void run() {
+ try {
+ writeImpl(data);
+ mLastTimeWritten.set(SystemClock.elapsedRealtime());
+ } finally {
+ mBackgroundWriteRunning.set(false);
+ }
+ }
+ }.start();
+ return true;
+ }
+
+ return false;
+ }
+
+ private void writeImpl(T data) {
+ if (mLock) {
+ synchronized (data) {
+ synchronized (mFileLock) {
+ writeInternal(data);
+ }
+ }
+ } else {
+ synchronized (mFileLock) {
+ writeInternal(data);
+ }
+ }
+ }
+
+ protected abstract void writeInternal(T data);
+
+ void read(T data) {
+ if (mLock) {
+ synchronized (data) {
+ synchronized (mFileLock) {
+ readInternal(data);
+ }
+ }
+ } else {
+ synchronized (mFileLock) {
+ readInternal(data);
+ }
+ }
+ // We use the current time as last-written. read() is called on system server startup
+ // (current situation), and we want to postpone I/O at boot.
+ mLastTimeWritten.set(SystemClock.elapsedRealtime());
+ }
+
+ protected abstract void readInternal(T data);
+}
diff --git a/services/core/java/com/android/server/pm/CompilerStats.java b/services/core/java/com/android/server/pm/CompilerStats.java
new file mode 100644
index 000000000000..8c2fc3ed1dae
--- /dev/null
+++ b/services/core/java/com/android/server/pm/CompilerStats.java
@@ -0,0 +1,295 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.pm;
+
+import android.util.ArrayMap;
+import android.util.AtomicFile;
+import android.util.Log;
+
+import com.android.internal.util.FastPrintWriter;
+import com.android.internal.util.IndentingPrintWriter;
+
+import libcore.io.IoUtils;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A class that collects, serializes and deserializes compiler-related statistics on a
+ * per-package per-code-path basis.
+ *
+ * Currently used to track compile times.
+ */
+class CompilerStats extends AbstractStatsBase<Void> {
+
+ private final static String COMPILER_STATS_VERSION_HEADER = "PACKAGE_MANAGER__COMPILER_STATS__";
+ private final static int COMPILER_STATS_VERSION = 1;
+
+ /**
+ * Class to collect all stats pertaining to one package.
+ */
+ static class PackageStats {
+
+ private final String packageName;
+
+ /**
+ * This map stores compile-times for all code paths in the package. The value
+ * is in milliseconds.
+ */
+ private final Map<String, Long> compileTimePerCodePath;
+
+ /**
+ * @param packageName
+ */
+ public PackageStats(String packageName) {
+ this.packageName = packageName;
+ // We expect at least one element in here, but let's make it minimal.
+ compileTimePerCodePath = new ArrayMap<>(2);
+ }
+
+ public String getPackageName() {
+ return packageName;
+ }
+
+ /**
+ * Return the recorded compile time for a given code path. Returns
+ * 0 if there is no recorded time.
+ */
+ public long getCompileTime(String codePath) {
+ String storagePath = getStoredPathFromCodePath(codePath);
+ synchronized (compileTimePerCodePath) {
+ Long l = compileTimePerCodePath.get(storagePath);
+ if (l == null) {
+ return 0;
+ }
+ return l;
+ }
+ }
+
+ public void setCompileTime(String codePath, long compileTimeInMs) {
+ String storagePath = getStoredPathFromCodePath(codePath);
+ synchronized (compileTimePerCodePath) {
+ if (compileTimeInMs <= 0) {
+ compileTimePerCodePath.remove(storagePath);
+ } else {
+ compileTimePerCodePath.put(storagePath, compileTimeInMs);
+ }
+ }
+ }
+
+ private static String getStoredPathFromCodePath(String codePath) {
+ int lastSlash = codePath.lastIndexOf(File.separatorChar);
+ return codePath.substring(lastSlash + 1);
+ }
+
+ public void dump(IndentingPrintWriter ipw) {
+ synchronized (compileTimePerCodePath) {
+ if (compileTimePerCodePath.size() == 0) {
+ ipw.println("(No recorded stats)");
+ } else {
+ for (Map.Entry<String, Long> e : compileTimePerCodePath.entrySet()) {
+ ipw.println(" " + e.getKey() + " - " + e.getValue());
+ }
+ }
+ }
+ }
+ }
+
+ private final Map<String, PackageStats> packageStats;
+
+ public CompilerStats() {
+ super("package-cstats.list", "CompilerStats_DiskWriter", /* lock */ false);
+ packageStats = new HashMap<>();
+ }
+
+ public PackageStats getPackageStats(String packageName) {
+ synchronized (packageStats) {
+ return packageStats.get(packageName);
+ }
+ }
+
+ public void setPackageStats(String packageName, PackageStats stats) {
+ synchronized (packageStats) {
+ packageStats.put(packageName, stats);
+ }
+ }
+
+ public PackageStats createPackageStats(String packageName) {
+ synchronized (packageStats) {
+ PackageStats newStats = new PackageStats(packageName);
+ packageStats.put(packageName, newStats);
+ return newStats;
+ }
+ }
+
+ public PackageStats getOrCreatePackageStats(String packageName) {
+ synchronized (packageStats) {
+ PackageStats existingStats = packageStats.get(packageName);
+ if (existingStats != null) {
+ return existingStats;
+ }
+
+ return createPackageStats(packageName);
+ }
+ }
+
+ public void deletePackageStats(String packageName) {
+ synchronized (packageStats) {
+ packageStats.remove(packageName);
+ }
+ }
+
+ // I/O
+
+ // The encoding is simple:
+ //
+ // 1) The first line is a line consisting of the version header and the version number.
+ //
+ // 2) The rest of the file is package data.
+ // 2.1) A package is started by any line not starting with "-";
+ // 2.2) Any line starting with "-" is code path data. The format is:
+ // '-'{code-path}':'{compile-time}
+
+ public void write(Writer out) {
+ @SuppressWarnings("resource")
+ FastPrintWriter fpw = new FastPrintWriter(out);
+
+ fpw.print(COMPILER_STATS_VERSION_HEADER);
+ fpw.println(COMPILER_STATS_VERSION);
+
+ synchronized (packageStats) {
+ for (PackageStats pkg : packageStats.values()) {
+ synchronized (pkg.compileTimePerCodePath) {
+ if (!pkg.compileTimePerCodePath.isEmpty()) {
+ fpw.println(pkg.getPackageName());
+
+ for (Map.Entry<String, Long> e : pkg.compileTimePerCodePath.entrySet()) {
+ fpw.println("-" + e.getKey() + ":" + e.getValue());
+ }
+ }
+ }
+ }
+ }
+
+ fpw.flush();
+ }
+
+ public boolean read(Reader r) {
+ synchronized (packageStats) {
+ // TODO: Could make this a final switch, then we wouldn't have to synchronize over
+ // the whole reading.
+ packageStats.clear();
+
+ try {
+ BufferedReader in = new BufferedReader(r);
+
+ // Read header, do version check.
+ String versionLine = in.readLine();
+ if (versionLine == null) {
+ throw new IllegalArgumentException("No version line found.");
+ } else {
+ if (!versionLine.startsWith(COMPILER_STATS_VERSION_HEADER)) {
+ throw new IllegalArgumentException("Invalid version line: " + versionLine);
+ }
+ int version = Integer.parseInt(
+ versionLine.substring(COMPILER_STATS_VERSION_HEADER.length()));
+ if (version != COMPILER_STATS_VERSION) {
+ // TODO: Upgrade older formats? For now, just reject and regenerate.
+ throw new IllegalArgumentException("Unexpected version: " + version);
+ }
+ }
+
+ // For simpler code, we ignore any data lines before the first package. We
+ // collect it in a fake package.
+ PackageStats currentPackage = new PackageStats("fake package");
+
+ String s = null;
+ while ((s = in.readLine()) != null) {
+ if (s.startsWith("-")) {
+ int colonIndex = s.indexOf(':');
+ if (colonIndex == -1 || colonIndex == 1) {
+ throw new IllegalArgumentException("Could not parse data " + s);
+ }
+ String codePath = s.substring(1, colonIndex);
+ long time = Long.parseLong(s.substring(colonIndex + 1));
+ currentPackage.setCompileTime(codePath, time);
+ } else {
+ currentPackage = getOrCreatePackageStats(s);
+ }
+ }
+ } catch (Exception e) {
+ Log.e(PackageManagerService.TAG, "Error parsing compiler stats", e);
+ return false;
+ }
+
+ return true;
+ }
+ }
+
+ void writeNow() {
+ writeNow(null);
+ }
+
+ boolean maybeWriteAsync() {
+ return maybeWriteAsync(null);
+ }
+
+ @Override
+ protected void writeInternal(Void data) {
+ AtomicFile file = getFile();
+ FileOutputStream f = null;
+
+ try {
+ f = file.startWrite();
+ OutputStreamWriter osw = new OutputStreamWriter(f);
+ write(osw);
+ osw.flush();
+ file.finishWrite(f);
+ } catch (IOException e) {
+ if (f != null) {
+ file.failWrite(f);
+ }
+ Log.e(PackageManagerService.TAG, "Failed to write compiler stats", e);
+ }
+ }
+
+ void read() {
+ read((Void)null);
+ }
+
+ @Override
+ protected void readInternal(Void data) {
+ AtomicFile file = getFile();
+ BufferedReader in = null;
+ try {
+ in = new BufferedReader(new InputStreamReader(file.openRead()));
+ read(in);
+ } catch (FileNotFoundException expected) {
+ } finally {
+ IoUtils.closeQuietly(in);
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java
index cff2da9f005c..1913b6116efb 100644
--- a/services/core/java/com/android/server/pm/LauncherAppsService.java
+++ b/services/core/java/com/android/server/pm/LauncherAppsService.java
@@ -17,7 +17,6 @@
package com.android.server.pm;
import android.annotation.NonNull;
-import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
@@ -30,7 +29,6 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.ILauncherApps;
import android.content.pm.IOnAppsChangedListener;
import android.content.pm.IPackageManager;
-import android.content.pm.LauncherApps;
import android.content.pm.LauncherApps.ShortcutQuery;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
@@ -461,7 +459,8 @@ public class LauncherAppsService extends SystemService {
}
// Note the target activity doesn't have to be exported.
- prepareIntentForLaunch(intent, sourceBounds);
+ intent.setSourceBounds(sourceBounds);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
return startShortcutIntentAsPublisher(
intent, packageName, startActivityOptions, userId);
@@ -521,7 +520,9 @@ public class LauncherAppsService extends SystemService {
Intent launchIntent = new Intent(Intent.ACTION_MAIN);
launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
- prepareIntentForLaunch(launchIntent, sourceBounds);
+ launchIntent.setSourceBounds(sourceBounds);
+ launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
launchIntent.setPackage(component.getPackageName());
long ident = Binder.clearCallingIdentity();
@@ -562,13 +563,6 @@ public class LauncherAppsService extends SystemService {
}
}
- private void prepareIntentForLaunch(@NonNull Intent launchIntent,
- @Nullable Rect sourceBounds) {
- launchIntent.setSourceBounds(sourceBounds);
- launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
- | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
- }
-
@Override
public void showAppDetailsAsUser(ComponentName component, Rect sourceBounds,
Bundle opts, UserHandle user) throws RemoteException {
diff --git a/services/core/java/com/android/server/pm/OtaDexoptService.java b/services/core/java/com/android/server/pm/OtaDexoptService.java
index 02c6472b2f88..77c69c905036 100644
--- a/services/core/java/com/android/server/pm/OtaDexoptService.java
+++ b/services/core/java/com/android/server/pm/OtaDexoptService.java
@@ -225,7 +225,8 @@ public class OtaDexoptService extends IOtaDexopt.Stub {
optimizer.performDexOpt(nextPackage, nextPackage.usesLibraryFiles,
null /* ISAs */, false /* checkProfiles */,
- getCompilerFilterForReason(compilationReason));
+ getCompilerFilterForReason(compilationReason),
+ null /* CompilerStats.PackageStats */);
mCommandsForCurrentPackage = collectingConnection.commands;
if (mCommandsForCurrentPackage.isEmpty()) {
@@ -271,7 +272,8 @@ public class OtaDexoptService extends IOtaDexopt.Stub {
mPackageManagerService.mInstaller, mPackageManagerService.mInstallLock, mContext);
optimizer.performDexOpt(nextPackage, nextPackage.usesLibraryFiles, null /* ISAs */,
false /* checkProfiles */,
- getCompilerFilterForReason(PackageManagerService.REASON_AB_OTA));
+ getCompilerFilterForReason(PackageManagerService.REASON_AB_OTA),
+ mPackageManagerService.getOrCreateCompilerPackageStats(nextPackage));
}
private void moveAbArtifacts(Installer installer) {
diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
index 26a840da094b..19b120123b26 100644
--- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java
+++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
@@ -90,7 +90,8 @@ class PackageDexOptimizer {
* synchronized on {@link #mInstallLock}.
*/
int performDexOpt(PackageParser.Package pkg, String[] sharedLibraries,
- String[] instructionSets, boolean checkProfiles, String targetCompilationFilter) {
+ String[] instructionSets, boolean checkProfiles, String targetCompilationFilter,
+ CompilerStats.PackageStats packageStats) {
synchronized (mInstallLock) {
final boolean useLock = mSystemReady;
if (useLock) {
@@ -99,7 +100,7 @@ class PackageDexOptimizer {
}
try {
return performDexOptLI(pkg, sharedLibraries, instructionSets, checkProfiles,
- targetCompilationFilter);
+ targetCompilationFilter, packageStats);
} finally {
if (useLock) {
mDexoptWakeLock.release();
@@ -150,7 +151,8 @@ class PackageDexOptimizer {
}
private int performDexOptLI(PackageParser.Package pkg, String[] sharedLibraries,
- String[] targetInstructionSets, boolean checkProfiles, String targetCompilerFilter) {
+ String[] targetInstructionSets, boolean checkProfiles, String targetCompilerFilter,
+ CompilerStats.PackageStats packageStats) {
final String[] instructionSets = targetInstructionSets != null ?
targetInstructionSets : getAppDexInstructionSets(pkg.applicationInfo);
@@ -254,10 +256,17 @@ class PackageDexOptimizer {
| DEXOPT_BOOTCOMPLETE);
try {
+ long startTime = System.currentTimeMillis();
+
mInstaller.dexopt(path, sharedGid, pkg.packageName, dexCodeInstructionSet,
dexoptNeeded, oatDir, dexFlags, targetCompilerFilter, pkg.volumeUuid,
sharedLibrariesPath);
performedDexOpt = true;
+
+ if (packageStats != null) {
+ long endTime = System.currentTimeMillis();
+ packageStats.setCompileTime(path, (int)(endTime - startTime));
+ }
} catch (InstallerException e) {
Slog.w(TAG, "Failed to dexopt", e);
successfulDexOpt = false;
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 78fa3a37dcf5..b907be07fab9 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -76,8 +76,6 @@ import static android.content.pm.PackageManager.PERMISSION_DENIED;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.content.pm.PackageParser.PARSE_IS_PRIVILEGED;
import static android.content.pm.PackageParser.isApkFile;
-import static android.os.Process.PACKAGE_INFO_GID;
-import static android.os.Process.SYSTEM_UID;
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
import static android.system.OsConstants.O_CREAT;
import static android.system.OsConstants.O_RDWR;
@@ -208,7 +206,6 @@ import android.text.TextUtils;
import android.text.format.DateUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
-import android.util.AtomicFile;
import android.util.DisplayMetrics;
import android.util.EventLog;
import android.util.ExceptionUtils;
@@ -267,7 +264,6 @@ import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
-import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
@@ -280,7 +276,6 @@ import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FilenameFilter;
import java.io.IOException;
-import java.io.InputStream;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.security.DigestInputStream;
@@ -307,7 +302,6 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicLong;
/**
* Keep track of all those APKs everywhere.
@@ -1131,204 +1125,7 @@ public class PackageManagerService extends IPackageManager.Stub {
final @NonNull String mSharedSystemSharedLibraryPackageName;
private final PackageUsage mPackageUsage = new PackageUsage();
-
- private class PackageUsage {
- private static final int WRITE_INTERVAL
- = (DEBUG_DEXOPT) ? 0 : 30*60*1000; // 30m in ms
-
- private final Object mFileLock = new Object();
- private final AtomicLong mLastWritten = new AtomicLong(0);
- private final AtomicBoolean mBackgroundWriteRunning = new AtomicBoolean(false);
-
- private boolean mIsHistoricalPackageUsageAvailable = true;
-
- boolean isHistoricalPackageUsageAvailable() {
- return mIsHistoricalPackageUsageAvailable;
- }
-
- void write(boolean force) {
- if (force) {
- writeInternal();
- return;
- }
- if (SystemClock.elapsedRealtime() - mLastWritten.get() < WRITE_INTERVAL
- && !DEBUG_DEXOPT) {
- return;
- }
- if (mBackgroundWriteRunning.compareAndSet(false, true)) {
- new Thread("PackageUsage_DiskWriter") {
- @Override
- public void run() {
- try {
- writeInternal();
- } finally {
- mBackgroundWriteRunning.set(false);
- }
- }
- }.start();
- }
- }
-
- private void writeInternal() {
- synchronized (mPackages) {
- synchronized (mFileLock) {
- AtomicFile file = getFile();
- FileOutputStream f = null;
- try {
- f = file.startWrite();
- BufferedOutputStream out = new BufferedOutputStream(f);
- FileUtils.setPermissions(file.getBaseFile().getPath(),
- 0640, SYSTEM_UID, PACKAGE_INFO_GID);
- StringBuilder sb = new StringBuilder();
-
- sb.append(USAGE_FILE_MAGIC_VERSION_1);
- sb.append('\n');
- out.write(sb.toString().getBytes(StandardCharsets.US_ASCII));
-
- for (PackageParser.Package pkg : mPackages.values()) {
- if (pkg.getLatestPackageUseTimeInMills() == 0L) {
- continue;
- }
- sb.setLength(0);
- sb.append(pkg.packageName);
- for (long usageTimeInMillis : pkg.mLastPackageUsageTimeInMills) {
- sb.append(' ');
- sb.append(usageTimeInMillis);
- }
- sb.append('\n');
- out.write(sb.toString().getBytes(StandardCharsets.US_ASCII));
- }
- out.flush();
- file.finishWrite(f);
- } catch (IOException e) {
- if (f != null) {
- file.failWrite(f);
- }
- Log.e(TAG, "Failed to write package usage times", e);
- }
- }
- }
- mLastWritten.set(SystemClock.elapsedRealtime());
- }
-
- void readLP() {
- synchronized (mFileLock) {
- AtomicFile file = getFile();
- BufferedInputStream in = null;
- try {
- in = new BufferedInputStream(file.openRead());
- StringBuffer sb = new StringBuffer();
-
- String firstLine = readLine(in, sb);
- if (firstLine == null) {
- // Empty file. Do nothing.
- } else if (USAGE_FILE_MAGIC_VERSION_1.equals(firstLine)) {
- readVersion1LP(in, sb);
- } else {
- readVersion0LP(in, sb, firstLine);
- }
- } catch (FileNotFoundException expected) {
- mIsHistoricalPackageUsageAvailable = false;
- } catch (IOException e) {
- Log.w(TAG, "Failed to read package usage times", e);
- } finally {
- IoUtils.closeQuietly(in);
- }
- }
- mLastWritten.set(SystemClock.elapsedRealtime());
- }
-
- private void readVersion0LP(InputStream in, StringBuffer sb, String firstLine)
- throws IOException {
- // Initial version of the file had no version number and stored one
- // package-timestamp pair per line.
- // Note that the first line has already been read from the InputStream.
- for (String line = firstLine; line != null; line = readLine(in, sb)) {
- String[] tokens = line.split(" ");
- if (tokens.length != 2) {
- throw new IOException("Failed to parse " + line +
- " as package-timestamp pair.");
- }
-
- String packageName = tokens[0];
- PackageParser.Package pkg = mPackages.get(packageName);
- if (pkg == null) {
- continue;
- }
-
- long timestamp = parseAsLong(tokens[1]);
- for (int reason = 0;
- reason < PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT;
- reason++) {
- pkg.mLastPackageUsageTimeInMills[reason] = timestamp;
- }
- }
- }
-
- private void readVersion1LP(InputStream in, StringBuffer sb) throws IOException {
- // Version 1 of the file started with the corresponding version
- // number and then stored a package name and eight timestamps per line.
- String line;
- while ((line = readLine(in, sb)) != null) {
- String[] tokens = line.split(" ");
- if (tokens.length != PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT + 1) {
- throw new IOException("Failed to parse " + line + " as a timestamp array.");
- }
-
- String packageName = tokens[0];
- PackageParser.Package pkg = mPackages.get(packageName);
- if (pkg == null) {
- continue;
- }
-
- for (int reason = 0;
- reason < PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT;
- reason++) {
- pkg.mLastPackageUsageTimeInMills[reason] = parseAsLong(tokens[reason + 1]);
- }
- }
- }
-
- private long parseAsLong(String token) throws IOException {
- try {
- return Long.parseLong(token);
- } catch (NumberFormatException e) {
- throw new IOException("Failed to parse " + token + " as a long.", e);
- }
- }
-
- private String readLine(InputStream in, StringBuffer sb) throws IOException {
- return readToken(in, sb, '\n');
- }
-
- private String readToken(InputStream in, StringBuffer sb, char endOfToken)
- throws IOException {
- sb.setLength(0);
- while (true) {
- int ch = in.read();
- if (ch == -1) {
- if (sb.length() == 0) {
- return null;
- }
- throw new IOException("Unexpected EOF");
- }
- if (ch == endOfToken) {
- return sb.toString();
- }
- sb.append((char)ch);
- }
- }
-
- private AtomicFile getFile() {
- File dataDir = Environment.getDataDirectory();
- File systemDir = new File(dataDir, "system");
- File fname = new File(systemDir, "package-usage.list");
- return new AtomicFile(fname);
- }
-
- private static final String USAGE_FILE_MAGIC = "PACKAGE_USAGE__VERSION_";
- private static final String USAGE_FILE_MAGIC_VERSION_1 = USAGE_FILE_MAGIC + "1";
- }
+ private final CompilerStats mCompilerStats = new CompilerStats();
class PackageHandler extends Handler {
private boolean mBound = false;
@@ -2709,7 +2506,8 @@ public class PackageManagerService extends IPackageManager.Stub {
// Now that we know all the packages we are keeping,
// read and update their last usage times.
- mPackageUsage.readLP();
+ mPackageUsage.read(mPackages);
+ mCompilerStats.read();
EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_SCAN_END,
SystemClock.uptimeMillis());
@@ -7477,7 +7275,8 @@ public class PackageManagerService extends IPackageManager.Stub {
// Package could not be found. Report failure.
return PackageDexOptimizer.DEX_OPT_FAILED;
}
- mPackageUsage.write(false);
+ mPackageUsage.maybeWriteAsync(mPackages);
+ mCompilerStats.maybeWriteAsync();
}
long callingId = Binder.clearCallingIdentity();
try {
@@ -7522,11 +7321,12 @@ public class PackageManagerService extends IPackageManager.Stub {
// Currently this will do a full compilation of the library by default.
pdo.performDexOpt(depPackage, null /* sharedLibraries */, instructionSets,
false /* checkProfiles */,
- getCompilerFilterForReason(REASON_NON_SYSTEM_LIBRARY));
+ getCompilerFilterForReason(REASON_NON_SYSTEM_LIBRARY),
+ getOrCreateCompilerPackageStats(depPackage));
}
}
return pdo.performDexOpt(p, p.usesLibraryFiles, instructionSets, checkProfiles,
- targetCompilerFilter);
+ targetCompilerFilter, getOrCreateCompilerPackageStats(p));
}
Collection<PackageParser.Package> findSharedNonSystemLibraries(PackageParser.Package p) {
@@ -7580,7 +7380,8 @@ public class PackageManagerService extends IPackageManager.Stub {
}
public void shutdown() {
- mPackageUsage.write(true);
+ mPackageUsage.writeNow(mPackages);
+ mCompilerStats.writeNow();
}
@Override
@@ -11710,12 +11511,18 @@ public class PackageManagerService extends IPackageManager.Stub {
if (pkgSetting == null) {
return false;
}
+ // Do not allow "android" is being disabled
+ if ("android".equals(packageName)) {
+ Slog.w(TAG, "Cannot hide package: android");
+ return false;
+ }
// Only allow protected packages to hide themselves.
if (hidden && !UserHandle.isSameApp(uid, pkgSetting.appId)
&& mProtectedPackages.isPackageStateProtected(userId, packageName)) {
Slog.w(TAG, "Not hiding protected package: " + packageName);
return false;
}
+
if (pkgSetting.getHidden(userId) != hidden) {
pkgSetting.setHidden(hidden, userId);
mSettings.writePackageRestrictionsLPr(userId);
@@ -15226,7 +15033,8 @@ public class PackageManagerService extends IPackageManager.Stub {
// Also, don't fail application installs if the dexopt step fails.
mPackageDexOptimizer.performDexOpt(pkg, pkg.usesLibraryFiles,
null /* instructionSets */, false /* checkProfiles */,
- getCompilerFilterForReason(REASON_INSTALL));
+ getCompilerFilterForReason(REASON_INSTALL),
+ getOrCreateCompilerPackageStats(pkg));
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
// Notify BackgroundDexOptService that the package has been changed.
@@ -16886,9 +16694,28 @@ public class PackageManagerService extends IPackageManager.Stub {
filter.dump(new LogPrinter(Log.INFO, TAG), " ");
pir.addFilter(new PreferredActivity(filter, match, set, activity, always));
scheduleWritePackageRestrictionsLocked(userId);
+ postPreferredActivityChangedBroadcast(userId);
}
}
+ private void postPreferredActivityChangedBroadcast(int userId) {
+ mHandler.post(() -> {
+ final IActivityManager am = ActivityManagerNative.getDefault();
+ if (am == null) {
+ return;
+ }
+
+ final Intent intent = new Intent(Intent.ACTION_PREFERRED_ACTIVITY_CHANGED);
+ intent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
+ try {
+ am.broadcastIntent(null, intent, null, null,
+ 0, null, null, null, android.app.AppOpsManager.OP_NONE,
+ null, false, false, userId);
+ } catch (RemoteException e) {
+ }
+ });
+ }
+
@Override
public void replacePreferredActivity(IntentFilter filter, int match,
ComponentName[] set, ComponentName activity, int userId) {
@@ -17040,6 +16867,9 @@ public class PackageManagerService extends IPackageManager.Stub {
changed = true;
}
}
+ if (changed) {
+ postPreferredActivityChangedBroadcast(userId);
+ }
return changed;
}
@@ -17153,6 +16983,7 @@ public class PackageManagerService extends IPackageManager.Stub {
mSettings.editPersistentPreferredActivitiesLPw(userId).addFilter(
new PersistentPreferredActivity(filter, activity));
scheduleWritePackageRestrictionsLocked(userId);
+ postPreferredActivityChangedBroadcast(userId);
}
}
@@ -17195,6 +17026,7 @@ public class PackageManagerService extends IPackageManager.Stub {
if (changed) {
scheduleWritePackageRestrictionsLocked(userId);
+ postPreferredActivityChangedBroadcast(userId);
}
}
}
@@ -18187,6 +18019,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
public static final int DUMP_DOMAIN_PREFERRED = 1 << 18;
public static final int DUMP_FROZEN = 1 << 19;
public static final int DUMP_DEXOPT = 1 << 20;
+ public static final int DUMP_COMPILER_STATS = 1 << 21;
public static final int OPTION_SHOW_FILTERS = 1 << 0;
@@ -18304,6 +18137,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
pw.println(" installs: details about install sessions");
pw.println(" check-permission <permission> <package> [<user>]: does pkg hold perm?");
pw.println(" dexopt: dump dexopt state");
+ pw.println(" compiler-stats: dump compiler statistics");
pw.println(" <package.name>: info about given package");
return;
} else if ("--checkin".equals(opt)) {
@@ -18425,6 +18259,8 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
dumpState.setDump(DumpState.DUMP_FROZEN);
} else if ("dexopt".equals(cmd)) {
dumpState.setDump(DumpState.DUMP_DEXOPT);
+ } else if ("compiler-stats".equals(cmd)) {
+ dumpState.setDump(DumpState.DUMP_COMPILER_STATS);
} else if ("write".equals(cmd)) {
synchronized (mPackages) {
mSettings.writeLPr();
@@ -18787,6 +18623,11 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
dumpDexoptStateLPr(pw, packageName);
}
+ if (!checkin && dumpState.isDumping(DumpState.DUMP_COMPILER_STATS)) {
+ if (dumpState.onTitlePrinted()) pw.println();
+ dumpCompilerStatsLPr(pw, packageName);
+ }
+
if (!checkin && dumpState.isDumping(DumpState.DUMP_MESSAGES) && packageName == null) {
if (dumpState.onTitlePrinted()) pw.println();
mSettings.dumpReadMessagesLPr(pw, dumpState);
@@ -18851,6 +18692,38 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
}
}
+ private void dumpCompilerStatsLPr(PrintWriter pw, String packageName) {
+ final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ", 120);
+ ipw.println();
+ ipw.println("Compiler stats:");
+ ipw.increaseIndent();
+ Collection<PackageParser.Package> packages = null;
+ if (packageName != null) {
+ PackageParser.Package targetPackage = mPackages.get(packageName);
+ if (targetPackage != null) {
+ packages = Collections.singletonList(targetPackage);
+ } else {
+ ipw.println("Unable to find package: " + packageName);
+ return;
+ }
+ } else {
+ packages = mPackages.values();
+ }
+
+ for (PackageParser.Package pkg : packages) {
+ ipw.println("[" + pkg.packageName + "]");
+ ipw.increaseIndent();
+
+ CompilerStats.PackageStats stats = getCompilerPackageStats(pkg.packageName);
+ if (stats == null) {
+ ipw.println("(No recorded stats)");
+ } else {
+ stats.dump(ipw);
+ }
+ ipw.decreaseIndent();
+ }
+ }
+
private String dumpDomainString(String packageName) {
List<IntentFilterVerificationInfo> iviList = getIntentFilterVerifications(packageName)
.getList();
@@ -21012,4 +20885,20 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
msg.setData(data);
mProcessLoggingHandler.sendMessage(msg);
}
+
+ public CompilerStats.PackageStats getCompilerPackageStats(String pkgName) {
+ return mCompilerStats.getPackageStats(pkgName);
+ }
+
+ public CompilerStats.PackageStats getOrCreateCompilerPackageStats(PackageParser.Package pkg) {
+ return getOrCreateCompilerPackageStats(pkg.packageName);
+ }
+
+ public CompilerStats.PackageStats getOrCreateCompilerPackageStats(String pkgName) {
+ return mCompilerStats.getOrCreatePackageStats(pkgName);
+ }
+
+ public void deleteCompilerPackageStats(String pkgName) {
+ mCompilerStats.deletePackageStats(pkgName);
+ }
}
diff --git a/services/core/java/com/android/server/pm/PackageUsage.java b/services/core/java/com/android/server/pm/PackageUsage.java
new file mode 100644
index 000000000000..ac1f739cd9f8
--- /dev/null
+++ b/services/core/java/com/android/server/pm/PackageUsage.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.pm;
+
+import static android.os.Process.PACKAGE_INFO_GID;
+import static android.os.Process.SYSTEM_UID;
+
+import android.content.pm.PackageManager;
+import android.content.pm.PackageParser;
+import android.os.FileUtils;
+import android.util.AtomicFile;
+import android.util.Log;
+
+import libcore.io.IoUtils;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+
+class PackageUsage extends AbstractStatsBase<Map<String, PackageParser.Package>> {
+
+ private static final String USAGE_FILE_MAGIC = "PACKAGE_USAGE__VERSION_";
+ private static final String USAGE_FILE_MAGIC_VERSION_1 = USAGE_FILE_MAGIC + "1";
+
+ private boolean mIsHistoricalPackageUsageAvailable = true;
+
+ PackageUsage() {
+ super("package-usage.list", "PackageUsage_DiskWriter", /* lock */ true);
+ }
+
+ boolean isHistoricalPackageUsageAvailable() {
+ return mIsHistoricalPackageUsageAvailable;
+ }
+
+ @Override
+ protected void writeInternal(Map<String, PackageParser.Package> packages) {
+ AtomicFile file = getFile();
+ FileOutputStream f = null;
+ try {
+ f = file.startWrite();
+ BufferedOutputStream out = new BufferedOutputStream(f);
+ FileUtils.setPermissions(file.getBaseFile().getPath(),
+ 0640, SYSTEM_UID, PACKAGE_INFO_GID);
+ StringBuilder sb = new StringBuilder();
+
+ sb.append(USAGE_FILE_MAGIC_VERSION_1);
+ sb.append('\n');
+ out.write(sb.toString().getBytes(StandardCharsets.US_ASCII));
+
+ for (PackageParser.Package pkg : packages.values()) {
+ if (pkg.getLatestPackageUseTimeInMills() == 0L) {
+ continue;
+ }
+ sb.setLength(0);
+ sb.append(pkg.packageName);
+ for (long usageTimeInMillis : pkg.mLastPackageUsageTimeInMills) {
+ sb.append(' ');
+ sb.append(usageTimeInMillis);
+ }
+ sb.append('\n');
+ out.write(sb.toString().getBytes(StandardCharsets.US_ASCII));
+ }
+ out.flush();
+ file.finishWrite(f);
+ } catch (IOException e) {
+ if (f != null) {
+ file.failWrite(f);
+ }
+ Log.e(PackageManagerService.TAG, "Failed to write package usage times", e);
+ }
+ }
+
+ @Override
+ protected void readInternal(Map<String, PackageParser.Package> packages) {
+ AtomicFile file = getFile();
+ BufferedInputStream in = null;
+ try {
+ in = new BufferedInputStream(file.openRead());
+ StringBuffer sb = new StringBuffer();
+
+ String firstLine = readLine(in, sb);
+ if (firstLine == null) {
+ // Empty file. Do nothing.
+ } else if (USAGE_FILE_MAGIC_VERSION_1.equals(firstLine)) {
+ readVersion1LP(packages, in, sb);
+ } else {
+ readVersion0LP(packages, in, sb, firstLine);
+ }
+ } catch (FileNotFoundException expected) {
+ mIsHistoricalPackageUsageAvailable = false;
+ } catch (IOException e) {
+ Log.w(PackageManagerService.TAG, "Failed to read package usage times", e);
+ } finally {
+ IoUtils.closeQuietly(in);
+ }
+ }
+
+ private void readVersion0LP(Map<String, PackageParser.Package> packages, InputStream in,
+ StringBuffer sb, String firstLine)
+ throws IOException {
+ // Initial version of the file had no version number and stored one
+ // package-timestamp pair per line.
+ // Note that the first line has already been read from the InputStream.
+ for (String line = firstLine; line != null; line = readLine(in, sb)) {
+ String[] tokens = line.split(" ");
+ if (tokens.length != 2) {
+ throw new IOException("Failed to parse " + line +
+ " as package-timestamp pair.");
+ }
+
+ String packageName = tokens[0];
+ PackageParser.Package pkg = packages.get(packageName);
+ if (pkg == null) {
+ continue;
+ }
+
+ long timestamp = parseAsLong(tokens[1]);
+ for (int reason = 0;
+ reason < PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT;
+ reason++) {
+ pkg.mLastPackageUsageTimeInMills[reason] = timestamp;
+ }
+ }
+ }
+
+ private void readVersion1LP(Map<String, PackageParser.Package> packages, InputStream in,
+ StringBuffer sb) throws IOException {
+ // Version 1 of the file started with the corresponding version
+ // number and then stored a package name and eight timestamps per line.
+ String line;
+ while ((line = readLine(in, sb)) != null) {
+ String[] tokens = line.split(" ");
+ if (tokens.length != PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT + 1) {
+ throw new IOException("Failed to parse " + line + " as a timestamp array.");
+ }
+
+ String packageName = tokens[0];
+ PackageParser.Package pkg = packages.get(packageName);
+ if (pkg == null) {
+ continue;
+ }
+
+ for (int reason = 0;
+ reason < PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT;
+ reason++) {
+ pkg.mLastPackageUsageTimeInMills[reason] = parseAsLong(tokens[reason + 1]);
+ }
+ }
+ }
+
+ private long parseAsLong(String token) throws IOException {
+ try {
+ return Long.parseLong(token);
+ } catch (NumberFormatException e) {
+ throw new IOException("Failed to parse " + token + " as a long.", e);
+ }
+ }
+
+ private String readLine(InputStream in, StringBuffer sb) throws IOException {
+ return readToken(in, sb, '\n');
+ }
+
+ private String readToken(InputStream in, StringBuffer sb, char endOfToken)
+ throws IOException {
+ sb.setLength(0);
+ while (true) {
+ int ch = in.read();
+ if (ch == -1) {
+ if (sb.length() == 0) {
+ return null;
+ }
+ throw new IOException("Unexpected EOF");
+ }
+ if (ch == endOfToken) {
+ return sb.toString();
+ }
+ sb.append((char)ch);
+ }
+ }
+} \ No newline at end of file
diff --git a/services/core/java/com/android/server/pm/ShortcutLauncher.java b/services/core/java/com/android/server/pm/ShortcutLauncher.java
index e667838ad5e5..df51923c97d3 100644
--- a/services/core/java/com/android/server/pm/ShortcutLauncher.java
+++ b/services/core/java/com/android/server/pm/ShortcutLauncher.java
@@ -25,6 +25,8 @@ import android.util.Slog;
import com.android.internal.annotations.VisibleForTesting;
import com.android.server.pm.ShortcutUser.PackageWithUser;
+import org.json.JSONException;
+import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
@@ -288,6 +290,15 @@ class ShortcutLauncher extends ShortcutPackageItem {
}
}
+ @Override
+ public JSONObject dumpCheckin(boolean clear) throws JSONException {
+ final JSONObject result = super.dumpCheckin(clear);
+
+ // Nothing really interesting to dump.
+
+ return result;
+ }
+
@VisibleForTesting
ArraySet<String> getAllPinnedShortcutsForTest(String packageName, int packageUserId) {
return new ArraySet<>(mPinnedShortcuts.get(PackageWithUser.of(packageUserId, packageName)));
diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java
index 3c1819880806..7d57f33604d8 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackage.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackage.java
@@ -36,6 +36,8 @@ import com.android.internal.util.XmlUtils;
import com.android.server.pm.ShortcutService.ShortcutOperation;
import com.android.server.pm.ShortcutService.Stats;
+import org.json.JSONException;
+import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
@@ -93,6 +95,12 @@ class ShortcutPackage extends ShortcutPackageItem {
private static final String TAG_STRING_ARRAY_XMLUTILS = "string-array";
private static final String ATTR_NAME_XMLUTILS = "name";
+ private static final String KEY_DYNAMIC = "dynamic";
+ private static final String KEY_MANIFEST = "manifest";
+ private static final String KEY_PINNED = "pinned";
+ private static final String KEY_BITMAPS = "bitmaps";
+ private static final String KEY_BITMAP_BYTES = "bitmapBytes";
+
/**
* All the shortcuts from the package, keyed on IDs.
*/
@@ -1199,6 +1207,42 @@ class ShortcutPackage extends ShortcutPackageItem {
}
@Override
+ public JSONObject dumpCheckin(boolean clear) throws JSONException {
+ final JSONObject result = super.dumpCheckin(clear);
+
+ int numDynamic = 0;
+ int numPinned = 0;
+ int numManifest = 0;
+ int numBitmaps = 0;
+ long totalBitmapSize = 0;
+
+ final ArrayMap<String, ShortcutInfo> shortcuts = mShortcuts;
+ final int size = shortcuts.size();
+ for (int i = 0; i < size; i++) {
+ final ShortcutInfo si = shortcuts.valueAt(i);
+
+ if (si.isDynamic()) numDynamic++;
+ if (si.isDeclaredInManifest()) numManifest++;
+ if (si.isPinned()) numPinned++;
+
+ if (si.getBitmapPath() != null) {
+ numBitmaps++;
+ totalBitmapSize += new File(si.getBitmapPath()).length();
+ }
+ }
+
+ result.put(KEY_DYNAMIC, numDynamic);
+ result.put(KEY_MANIFEST, numManifest);
+ result.put(KEY_PINNED, numPinned);
+ result.put(KEY_BITMAPS, numBitmaps);
+ result.put(KEY_BITMAP_BYTES, totalBitmapSize);
+
+ // TODO Log update frequency too.
+
+ return result;
+ }
+
+ @Override
public void saveToXml(@NonNull XmlSerializer out, boolean forBackup)
throws IOException, XmlPullParserException {
final int size = mShortcuts.size();
diff --git a/services/core/java/com/android/server/pm/ShortcutPackageItem.java b/services/core/java/com/android/server/pm/ShortcutPackageItem.java
index 26b52e918a04..79b5c4eae1dc 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackageItem.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackageItem.java
@@ -21,6 +21,8 @@ import android.util.Slog;
import com.android.internal.util.Preconditions;
+import org.json.JSONException;
+import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
@@ -31,6 +33,7 @@ import java.io.IOException;
*/
abstract class ShortcutPackageItem {
private static final String TAG = ShortcutService.TAG;
+ private static final String KEY_NAME = "name";
private final int mPackageUserId;
private final String mPackageName;
@@ -137,6 +140,12 @@ abstract class ShortcutPackageItem {
public abstract void saveToXml(@NonNull XmlSerializer out, boolean forBackup)
throws IOException, XmlPullParserException;
+ public JSONObject dumpCheckin(boolean clear) throws JSONException {
+ final JSONObject result = new JSONObject();
+ result.put(KEY_NAME, mPackageName);
+ return result;
+ }
+
/**
* Verify various internal states.
*/
diff --git a/services/core/java/com/android/server/pm/ShortcutParser.java b/services/core/java/com/android/server/pm/ShortcutParser.java
index 0762c0b21678..3f302d67acf6 100644
--- a/services/core/java/com/android/server/pm/ShortcutParser.java
+++ b/services/core/java/com/android/server/pm/ShortcutParser.java
@@ -29,6 +29,7 @@ import android.util.ArraySet;
import android.util.AttributeSet;
import android.util.Log;
import android.util.Slog;
+import android.util.TypedValue;
import android.util.Xml;
import com.android.internal.R;
@@ -260,7 +261,12 @@ public class ShortcutParser {
final TypedArray sa = service.mContext.getResources().obtainAttributes(attrs,
R.styleable.ShortcutCategories);
try {
- return sa.getString(R.styleable.ShortcutCategories_name);
+ if (sa.getType(R.styleable.ShortcutCategories_name) == TypedValue.TYPE_STRING) {
+ return sa.getNonResourceString(R.styleable.ShortcutCategories_name);
+ } else {
+ Log.w(TAG, "android:name for shortcut category must be string literal.");
+ return null;
+ }
} finally {
sa.recycle();
}
@@ -272,7 +278,11 @@ public class ShortcutParser {
final TypedArray sa = service.mContext.getResources().obtainAttributes(attrs,
R.styleable.Shortcut);
try {
- final String id = sa.getString(R.styleable.Shortcut_shortcutId);
+ if (sa.getType(R.styleable.Shortcut_shortcutId) != TypedValue.TYPE_STRING) {
+ Log.w(TAG, "android:shortcutId must be string literal. activity=" + activity);
+ return null;
+ }
+ final String id = sa.getNonResourceString(R.styleable.Shortcut_shortcutId);
final boolean enabled = sa.getBoolean(R.styleable.Shortcut_enabled, true);
final int iconResId = sa.getResourceId(R.styleable.Shortcut_icon, 0);
final int titleResId = sa.getResourceId(R.styleable.Shortcut_shortcutShortLabel, 0);
@@ -281,11 +291,11 @@ public class ShortcutParser {
R.styleable.Shortcut_shortcutDisabledMessage, 0);
if (TextUtils.isEmpty(id)) {
- Slog.w(TAG, "Shortcut ID must be provided. activity=" + activity);
+ Log.w(TAG, "android:shortcutId must be provided. activity=" + activity);
return null;
}
if (titleResId == 0) {
- Slog.w(TAG, "Shortcut title must be provided. activity=" + activity);
+ Log.w(TAG, "android:shortcutShortLabel must be provided. activity=" + activity);
return null;
}
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index 4286cd942979..a91e2842261d 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -95,6 +95,9 @@ import com.android.server.pm.ShortcutUser.PackageWithUser;
import libcore.io.IoUtils;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
@@ -184,6 +187,10 @@ public class ShortcutService extends IShortcutService.Stub {
private static final String LAUNCHER_INTENT_CATEGORY = Intent.CATEGORY_LAUNCHER;
+ private static final String KEY_SHORTCUT = "shortcut";
+ private static final String KEY_LOW_RAM = "lowRam";
+ private static final String KEY_ICON_SIZE = "iconSize";
+
@VisibleForTesting
interface ConfigConstants {
/**
@@ -385,6 +392,12 @@ public class ShortcutService extends IShortcutService.Stub {
mContext.registerReceiverAsUser(mPackageMonitor, UserHandle.ALL,
packageFilter, null, mHandler);
+ final IntentFilter preferedActivityFilter = new IntentFilter();
+ preferedActivityFilter.addAction(Intent.ACTION_PREFERRED_ACTIVITY_CHANGED);
+ preferedActivityFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
+ mContext.registerReceiverAsUser(mPackageMonitor, UserHandle.ALL,
+ preferedActivityFilter, null, mHandler);
+
final IntentFilter localeFilter = new IntentFilter();
localeFilter.addAction(Intent.ACTION_LOCALE_CHANGED);
localeFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
@@ -1346,10 +1359,18 @@ public class ShortcutService extends IShortcutService.Stub {
if (isCallerSystem()) {
return;
}
- injectEnforceCallingPermission(
+ enforceCallingOrSelfPermission(
android.Manifest.permission.RESET_SHORTCUT_MANAGER_THROTTLING, null);
}
+ private void enforceCallingOrSelfPermission(
+ @NonNull String permission, @Nullable String message) {
+ if (isCallerSystem()) {
+ return;
+ }
+ injectEnforceCallingPermission(permission, message);
+ }
+
/**
* Somehow overriding ServiceContext.enforceCallingPermission() in the unit tests would confuse
* mockito. So instead we extracted it here and override it in the tests.
@@ -1923,7 +1944,12 @@ public class ShortcutService extends IShortcutService.Stub {
// We override this method in unit tests to do a simpler check.
boolean hasShortcutHostPermission(@NonNull String callingPackage, int userId) {
- return hasShortcutHostPermissionInner(callingPackage, userId);
+ final long start = injectElapsedRealtime();
+ try {
+ return hasShortcutHostPermissionInner(callingPackage, userId);
+ } finally {
+ logDurationStat(Stats.LAUNCHER_PERMISSION_CHECK, start);
+ }
}
// This method is extracted so we can directly call this method from unit tests,
@@ -1931,15 +1957,22 @@ public class ShortcutService extends IShortcutService.Stub {
@VisibleForTesting
boolean hasShortcutHostPermissionInner(@NonNull String callingPackage, int userId) {
synchronized (mLock) {
- final long start = injectElapsedRealtime();
-
final ShortcutUser user = getUserShortcutsLocked(userId);
+ // Always trust the in-memory cache.
+ final ComponentName cached = user.getCachedLauncher();
+ if (cached != null) {
+ if (cached.getPackageName().equals(callingPackage)) {
+ return true;
+ }
+ }
+ // If the cached one doesn't match, then go ahead
+
final List<ResolveInfo> allHomeCandidates = new ArrayList<>();
// Default launcher from package manager.
final long startGetHomeActivitiesAsUser = injectElapsedRealtime();
- final ComponentName defaultLauncher = injectPackageManagerInternal()
+ final ComponentName defaultLauncher = mPackageManagerInternal
.getHomeActivitiesAsUser(allHomeCandidates, userId);
logDurationStat(Stats.GET_DEFAULT_HOME, startGetHomeActivitiesAsUser);
@@ -1950,7 +1983,7 @@ public class ShortcutService extends IShortcutService.Stub {
Slog.v(TAG, "Default launcher from PM: " + detected);
}
} else {
- detected = user.getDefaultLauncherComponent();
+ detected = user.getLastKnownLauncher();
if (detected != null) {
if (injectIsActivityEnabledAndExported(detected, userId)) {
@@ -1960,7 +1993,7 @@ public class ShortcutService extends IShortcutService.Stub {
} else {
Slog.w(TAG, "Cached launcher " + detected + " no longer exists");
detected = null;
- user.setDefaultLauncherComponent(null);
+ user.clearLauncher();
}
}
}
@@ -1991,13 +2024,13 @@ public class ShortcutService extends IShortcutService.Stub {
lastPriority = ri.priority;
}
}
- logDurationStat(Stats.LAUNCHER_PERMISSION_CHECK, start);
+ // Update the cache.
+ user.setLauncher(detected);
if (detected != null) {
if (DEBUG) {
Slog.v(TAG, "Detected launcher: " + detected);
}
- user.setDefaultLauncherComponent(detected);
return detected.getPackageName().equals(callingPackage);
} else {
// Default launcher not found.
@@ -2358,6 +2391,17 @@ public class ShortcutService extends IShortcutService.Stub {
return;
}
+ // Whenever we get one of those package broadcasts, or get
+ // ACTION_PREFERRED_ACTIVITY_CHANGED, we purge the default launcher cache.
+ synchronized (mLock) {
+ final ShortcutUser user = getUserShortcutsLocked(userId);
+ user.clearLauncher();
+ }
+ if (Intent.ACTION_PREFERRED_ACTIVITY_CHANGED.equals(action)) {
+ // Nothing farther to do.
+ return;
+ }
+
final Uri intentUri = intent.getData();
final String packageName = (intentUri != null) ? intentUri.getSchemeSpecificPart()
: null;
@@ -2952,20 +2996,29 @@ public class ShortcutService extends IShortcutService.Stub {
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
- != PackageManager.PERMISSION_GRANTED) {
- pw.println("Permission Denial: can't dump UserManager from from pid="
- + Binder.getCallingPid()
- + ", uid=" + Binder.getCallingUid()
- + " without permission "
- + android.Manifest.permission.DUMP);
- return;
+ enforceCallingOrSelfPermission(android.Manifest.permission.DUMP,
+ "can't dump by this caller");
+ boolean checkin = false;
+ boolean clear = false;
+ if (args != null) {
+ for (String arg : args) {
+ if ("-c".equals(arg)) {
+ checkin = true;
+ } else if ("--checkin".equals(arg)) {
+ checkin = true;
+ clear = true;
+ }
+ }
+ }
+
+ if (checkin) {
+ dumpCheckin(pw, clear);
+ } else {
+ dumpInner(pw);
}
- dumpInner(pw, args);
}
- @VisibleForTesting
- void dumpInner(PrintWriter pw, String[] args) {
+ private void dumpInner(PrintWriter pw) {
synchronized (mLock) {
final long now = injectCurrentTimeMillis();
pw.print("Now: [");
@@ -3077,6 +3130,34 @@ public class ShortcutService extends IShortcutService.Stub {
(count == 0 ? 0 : ((double) dur) / count)));
}
+ /**
+ * Dumpsys for checkin.
+ *
+ * @param clear if true, clear the history information. Some other system services have this
+ * behavior but shortcut service doesn't for now.
+ */
+ private void dumpCheckin(PrintWriter pw, boolean clear) {
+ synchronized (mLock) {
+ try {
+ final JSONArray users = new JSONArray();
+
+ for (int i = 0; i < mUsers.size(); i++) {
+ users.put(mUsers.valueAt(i).dumpCheckin(clear));
+ }
+
+ final JSONObject result = new JSONObject();
+
+ result.put(KEY_SHORTCUT, users);
+ result.put(KEY_LOW_RAM, injectIsLowRamDevice());
+ result.put(KEY_ICON_SIZE, mMaxIconDimension);
+
+ pw.println(result.toString(1));
+ } catch (JSONException e) {
+ Slog.e(TAG, "Unable to write in json", e);
+ }
+ }
+ }
+
// === Shell support ===
@Override
@@ -3260,7 +3341,7 @@ public class ShortcutService extends IShortcutService.Stub {
private void clearLauncher() {
synchronized (mLock) {
- getUserShortcutsLocked(mUserId).setDefaultLauncherComponent(null);
+ getUserShortcutsLocked(mUserId).forceClearLauncher();
}
}
@@ -3270,7 +3351,7 @@ public class ShortcutService extends IShortcutService.Stub {
hasShortcutHostPermissionInner("-", mUserId);
getOutPrintWriter().println("Launcher: "
- + getUserShortcutsLocked(mUserId).getDefaultLauncherComponent());
+ + getUserShortcutsLocked(mUserId).getLastKnownLauncher());
}
}
@@ -3394,11 +3475,6 @@ public class ShortcutService extends IShortcutService.Stub {
}
}
- @VisibleForTesting
- PackageManagerInternal injectPackageManagerInternal() {
- return mPackageManagerInternal;
- }
-
File getUserBitmapFilePath(@UserIdInt int userId) {
return new File(injectUserDataPath(userId), DIRECTORY_BITMAPS);
}
@@ -3482,7 +3558,7 @@ public class ShortcutService extends IShortcutService.Stub {
}
private void verifyStatesInner() {
- synchronized (this) {
+ synchronized (mLock) {
forEachLoadedUserLocked(u -> u.forAllPackageItems(ShortcutPackageItem::verifyStates));
}
}
diff --git a/services/core/java/com/android/server/pm/ShortcutUser.java b/services/core/java/com/android/server/pm/ShortcutUser.java
index 9649641fe96a..21e4165e6a67 100644
--- a/services/core/java/com/android/server/pm/ShortcutUser.java
+++ b/services/core/java/com/android/server/pm/ShortcutUser.java
@@ -32,6 +32,9 @@ import com.android.internal.util.Preconditions;
import libcore.util.Objects;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
@@ -55,6 +58,9 @@ class ShortcutUser {
private static final String ATTR_VALUE = "value";
private static final String ATTR_KNOWN_LOCALES = "locales";
private static final String ATTR_LAST_APP_SCAN_TIME = "last-app-scan-time";
+ private static final String KEY_USER_ID = "userId";
+ private static final String KEY_LAUNCHERS = "launchers";
+ private static final String KEY_PACKAGES = "packages";
static final class PackageWithUser {
final int userId;
@@ -103,8 +109,15 @@ class ShortcutUser {
private final ArrayMap<PackageWithUser, ShortcutLauncher> mLaunchers = new ArrayMap<>();
- /** Default launcher that can access the launcher apps APIs. */
- private ComponentName mDefaultLauncherComponent;
+ /**
+ * Last known launcher. It's used when the default launcher isn't set in PM -- i.e.
+ * when getHomeActivitiesAsUser() return null. We need it so that in this situation the
+ * previously default launcher can still access shortcuts.
+ */
+ private ComponentName mLastKnownLauncher;
+
+ /** In-memory-cached default launcher. */
+ private ComponentName mCachedLauncher;
private String mKnownLocales;
@@ -304,8 +317,7 @@ class ShortcutUser {
ShortcutService.writeAttr(out, ATTR_LAST_APP_SCAN_TIME,
mLastAppScanTime);
- ShortcutService.writeTagValue(out, TAG_LAUNCHER,
- mDefaultLauncherComponent);
+ ShortcutService.writeTagValue(out, TAG_LAUNCHER, mLastKnownLauncher);
// Can't use forEachPackageItem due to the checked exceptions.
{
@@ -364,7 +376,7 @@ class ShortcutUser {
if (depth == outerDepth + 1) {
switch (tag) {
case TAG_LAUNCHER: {
- ret.mDefaultLauncherComponent = ShortcutService.parseComponentNameAttribute(
+ ret.mLastKnownLauncher = ShortcutService.parseComponentNameAttribute(
parser, ATTR_VALUE);
continue;
}
@@ -389,18 +401,44 @@ class ShortcutUser {
return ret;
}
- public ComponentName getDefaultLauncherComponent() {
- return mDefaultLauncherComponent;
+ public ComponentName getLastKnownLauncher() {
+ return mLastKnownLauncher;
+ }
+
+ public void setLauncher(ComponentName launcherComponent) {
+ setLauncher(launcherComponent, /* allowPurgeLastKnown */ false);
+ }
+
+ /** Clears the launcher information without clearing the last known one */
+ public void clearLauncher() {
+ setLauncher(null);
+ }
+
+ /**
+ * Clears the launcher information *with(* clearing the last known one; we do this witl
+ * "cmd shortcut clear-default-launcher".
+ */
+ public void forceClearLauncher() {
+ setLauncher(null, /* allowPurgeLastKnown */ true);
}
- public void setDefaultLauncherComponent(ComponentName launcherComponent) {
- if (Objects.equal(mDefaultLauncherComponent, launcherComponent)) {
+ private void setLauncher(ComponentName launcherComponent, boolean allowPurgeLastKnown) {
+ mCachedLauncher = launcherComponent; // Always update the in-memory cache.
+
+ if (Objects.equal(mLastKnownLauncher, launcherComponent)) {
return;
}
- mDefaultLauncherComponent = launcherComponent;
+ if (!allowPurgeLastKnown && launcherComponent == null) {
+ return;
+ }
+ mLastKnownLauncher = launcherComponent;
mService.scheduleSaveUser(mUserId);
}
+ public ComponentName getCachedLauncher() {
+ return mCachedLauncher;
+ }
+
public void resetThrottling() {
for (int i = mPackages.size() - 1; i >= 0; i--) {
mPackages.valueAt(i).resetThrottling();
@@ -422,8 +460,13 @@ class ShortcutUser {
prefix += prefix + " ";
pw.print(prefix);
- pw.print("Default launcher: ");
- pw.print(mDefaultLauncherComponent);
+ pw.print("Cached launcher: ");
+ pw.print(mCachedLauncher);
+ pw.println();
+
+ pw.print(prefix);
+ pw.print("Last known launcher: ");
+ pw.print(mLastKnownLauncher);
pw.println();
for (int i = 0; i < mLaunchers.size(); i++) {
@@ -466,4 +509,28 @@ class ShortcutUser {
pw.print(Formatter.formatFileSize(mService.mContext, size));
pw.println(")");
}
+
+ public JSONObject dumpCheckin(boolean clear) throws JSONException {
+ final JSONObject result = new JSONObject();
+
+ result.put(KEY_USER_ID, mUserId);
+
+ {
+ final JSONArray launchers = new JSONArray();
+ for (int i = 0; i < mLaunchers.size(); i++) {
+ launchers.put(mLaunchers.valueAt(i).dumpCheckin(clear));
+ }
+ result.put(KEY_LAUNCHERS, launchers);
+ }
+
+ {
+ final JSONArray packages = new JSONArray();
+ for (int i = 0; i < mPackages.size(); i++) {
+ packages.put(mPackages.valueAt(i).dumpCheckin(clear));
+ }
+ result.put(KEY_PACKAGES, packages);
+ }
+
+ return result;
+ }
}
diff --git a/services/core/java/com/android/server/twilight/TwilightService.java b/services/core/java/com/android/server/twilight/TwilightService.java
index 89e5e5833117..ee7a4a0d5599 100644
--- a/services/core/java/com/android/server/twilight/TwilightService.java
+++ b/services/core/java/com/android/server/twilight/TwilightService.java
@@ -16,18 +16,12 @@
package com.android.server.twilight;
-import com.android.server.SystemService;
-import com.android.server.TwilightCalculator;
-
-import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.database.ContentObserver;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
@@ -36,64 +30,52 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
-import android.os.UserHandle;
-import android.provider.Settings;
-import android.provider.Settings.Secure;
import android.text.format.DateUtils;
import android.text.format.Time;
import android.util.Slog;
+import com.android.internal.annotations.GuardedBy;
+import com.android.server.SystemService;
+import com.android.server.TwilightCalculator;
+
import java.util.ArrayList;
import java.util.Iterator;
-
-import libcore.util.Objects;
+import java.util.List;
+import java.util.Objects;
/**
* Figures out whether it's twilight time based on the user's location.
- *
+ * <p>
* Used by the UI mode manager and other components to adjust night mode
* effects based on sunrise and sunset.
*/
public final class TwilightService extends SystemService {
- static final String TAG = "TwilightService";
- static final boolean DEBUG = false;
- static final String ACTION_UPDATE_TWILIGHT_STATE =
- "com.android.server.action.UPDATE_TWILIGHT_STATE";
- // The amount of time after or before sunrise over which to start adjusting
- // twilight affected things. We want the change to happen gradually so that
- // it is below the threshold of perceptibility and so that the adjustment has
- // maximum effect well after dusk.
- private static final long TWILIGHT_ADJUSTMENT_TIME = DateUtils.HOUR_IN_MILLIS * 2;
-
- // Broadcast when twilight changes.
- public static final String ACTION_TWILIGHT_CHANGED = "android.intent.action.TWILIGHT_CHANGED";
-
- public static final String EXTRA_IS_NIGHT = "isNight";
- public static final String EXTRA_AMOUNT = "amount";
-
- // Amount of time the TwilightService will stay locked in an override state before switching
- // back to auto.
- private static final long RESET_TIME = DateUtils.HOUR_IN_MILLIS * 2;
- private static final String EXTRA_RESET_USER = "user";
+ private static final String TAG = "TwilightService";
+ private static final boolean DEBUG = false;
- private static final String ACTION_RESET_TWILIGHT_AUTO =
- "com.android.server.action.RESET_TWILIGHT_AUTO";
+ private static final String ACTION_UPDATE_TWILIGHT_STATE =
+ "com.android.server.action.UPDATE_TWILIGHT_STATE";
- final Object mLock = new Object();
+ /**
+ * The amount of time after or before sunrise over which to start adjusting twilight affected
+ * things. We want the change to happen gradually so that it is below the threshold of
+ * perceptibility and so that the adjustment has and so that the adjustment has
+ * maximum effect well after dusk.
+ */
+ private static final long TWILIGHT_ADJUSTMENT_TIME = DateUtils.HOUR_IN_MILLIS * 2;
- AlarmManager mAlarmManager;
- LocationManager mLocationManager;
- LocationHandler mLocationHandler;
+ private final Object mLock = new Object();
- final ArrayList<TwilightListenerRecord> mListeners =
- new ArrayList<TwilightListenerRecord>();
+ @GuardedBy("mLock")
+ private final List<TwilightListenerRecord> mListeners = new ArrayList<>();
- TwilightState mTwilightState;
+ private AlarmManager mAlarmManager;
+ private LocationManager mLocationManager;
+ private LocationHandler mLocationHandler;
- private int mCurrentUser;
- private boolean mLocked;
- private boolean mBootCompleted;
+ @GuardedBy("mLock")
+ private TwilightState mTwilightState;
public TwilightService(Context context) {
super(context);
@@ -105,13 +87,11 @@ public final class TwilightService extends SystemService {
mLocationManager = (LocationManager) getContext().getSystemService(
Context.LOCATION_SERVICE);
mLocationHandler = new LocationHandler();
- mCurrentUser = ActivityManager.getCurrentUser();
IntentFilter filter = new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED);
filter.addAction(Intent.ACTION_TIME_CHANGED);
filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
filter.addAction(Intent.ACTION_USER_SWITCHED);
- filter.addAction(ACTION_UPDATE_TWILIGHT_STATE);
getContext().registerReceiver(mReceiver, filter);
publishLocalService(TwilightManager.class, mService);
@@ -120,81 +100,29 @@ public final class TwilightService extends SystemService {
@Override
public void onBootPhase(int phase) {
if (phase == PHASE_BOOT_COMPLETED) {
- getContext().getContentResolver().registerContentObserver(
- Secure.getUriFor(Secure.TWILIGHT_MODE), false, mContentObserver, mCurrentUser);
- mContentObserver.onChange(true);
- mBootCompleted = true;
- sendBroadcast();
- }
- }
-
- private void reregisterSettingObserver() {
- final ContentResolver contentResolver = getContext().getContentResolver();
- contentResolver.unregisterContentObserver(mContentObserver);
- contentResolver.registerContentObserver(Secure.getUriFor(Secure.TWILIGHT_MODE), false,
- mContentObserver, mCurrentUser);
- mContentObserver.onChange(true);
- }
-
- private void setLockedState(TwilightState state) {
- synchronized (mLock) {
- // Make sure we aren't locked so we can set the state.
- mLocked = false;
- setTwilightState(state);
- // Make sure we leave the state locked, so it cant be changed.
- mLocked = true;
- // TODO: Don't bother updating state when locked.
+ // Initialize the current twilight state.
+ mLocationHandler.requestTwilightUpdate();
}
}
private void setTwilightState(TwilightState state) {
synchronized (mLock) {
- if (mLocked) {
- // State has been locked by secure setting, shouldn't be changed.
- return;
- }
- if (!Objects.equal(mTwilightState, state)) {
+ if (!Objects.equals(mTwilightState, state)) {
if (DEBUG) {
Slog.d(TAG, "Twilight state changed: " + state);
}
mTwilightState = state;
- final int listenerLen = mListeners.size();
- for (int i = 0; i < listenerLen; i++) {
- mListeners.get(i).postUpdate();
+ for (TwilightListenerRecord mListener : mListeners) {
+ mListener.postUpdate();
}
}
}
- sendBroadcast();
- }
-
- private void sendBroadcast() {
- synchronized (mLock) {
- if (mTwilightState == null) {
- return;
- }
- if (mBootCompleted) {
- Intent intent = new Intent(ACTION_TWILIGHT_CHANGED);
- intent.putExtra(EXTRA_IS_NIGHT, mTwilightState.isNight());
- intent.putExtra(EXTRA_AMOUNT, mTwilightState.getAmount());
- intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
- getContext().sendStickyBroadcastAsUser(intent, UserHandle.ALL);
- }
- }
- }
-
- private void scheduleReset() {
- long resetTime = System.currentTimeMillis() + RESET_TIME;
- Intent resetIntent = new Intent(ACTION_RESET_TWILIGHT_AUTO);
- resetIntent.putExtra(EXTRA_RESET_USER, mCurrentUser);
- PendingIntent pendingIntent = PendingIntent.getBroadcast(
- getContext(), 0, resetIntent, 0);
- mAlarmManager.cancel(pendingIntent);
- mAlarmManager.setExact(AlarmManager.RTC, resetTime, pendingIntent);
}
private static class TwilightListenerRecord implements Runnable {
+
private final TwilightListener mListener;
private final Handler mHandler;
@@ -211,15 +139,9 @@ public final class TwilightService extends SystemService {
public void run() {
mListener.onTwilightStateChanged();
}
-
}
private final TwilightManager mService = new TwilightManager() {
- /**
- * Gets the current twilight state.
- *
- * @return The current twilight state, or null if no information is available.
- */
@Override
public TwilightState getCurrentState() {
synchronized (mLock) {
@@ -227,11 +149,6 @@ public final class TwilightService extends SystemService {
}
}
- /**
- * Listens for twilight time.
- *
- * @param listener The listener.
- */
@Override
public void registerListener(TwilightListener listener, Handler handler) {
synchronized (mLock) {
@@ -286,6 +203,7 @@ public final class TwilightService extends SystemService {
}
private final class LocationHandler extends Handler {
+
private static final int MSG_ENABLE_LOCATION_UPDATES = 1;
private static final int MSG_GET_NEW_LOCATION_UPDATE = 2;
private static final int MSG_PROCESS_NEW_LOCATION = 3;
@@ -301,13 +219,14 @@ public final class TwilightService extends SystemService {
private static final double FACTOR_GMT_OFFSET_LONGITUDE =
1000.0 * 360.0 / DateUtils.DAY_IN_MILLIS;
+ private final TwilightCalculator mTwilightCalculator = new TwilightCalculator();
+
private boolean mPassiveListenerEnabled;
private boolean mNetworkListenerEnabled;
private boolean mDidFirstInit;
private long mLastNetworkRegisterTime = -MIN_LOCATION_UPDATE_MS;
private long mLastUpdateInterval;
private Location mLocation;
- private final TwilightCalculator mTwilightCalculator = new TwilightCalculator();
public void processNewLocation(Location location) {
Message msg = obtainMessage(MSG_PROCESS_NEW_LOCATION, location);
@@ -334,14 +253,14 @@ public final class TwilightService extends SystemService {
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_PROCESS_NEW_LOCATION: {
- final Location location = (Location)msg.obj;
+ final Location location = (Location) msg.obj;
final boolean hasMoved = hasMoved(mLocation, location);
final boolean hasBetterAccuracy = mLocation == null
|| location.getAccuracy() < mLocation.getAccuracy();
if (DEBUG) {
Slog.d(TAG, "Processing new location: " + location
- + ", hasMoved=" + hasMoved
- + ", hasBetterAccuracy=" + hasBetterAccuracy);
+ + ", hasMoved=" + hasMoved
+ + ", hasBetterAccuracy=" + hasBetterAccuracy);
}
if (hasMoved || hasBetterAccuracy) {
setLocation(location);
@@ -373,8 +292,8 @@ public final class TwilightService extends SystemService {
// distance.
boolean networkLocationEnabled;
try {
- networkLocationEnabled =
- mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+ networkLocationEnabled = mLocationManager.isProviderEnabled(
+ LocationManager.NETWORK_PROVIDER);
} catch (Exception e) {
// we may get IllegalArgumentException if network location provider
// does not exist or is not yet installed.
@@ -398,8 +317,8 @@ public final class TwilightService extends SystemService {
// and network).
boolean passiveLocationEnabled;
try {
- passiveLocationEnabled =
- mLocationManager.isProviderEnabled(LocationManager.PASSIVE_PROVIDER);
+ passiveLocationEnabled = mLocationManager.isProviderEnabled(
+ LocationManager.PASSIVE_PROVIDER);
} catch (Exception e) {
// we may get IllegalArgumentException if passive location provider
// does not exist or is not yet installed.
@@ -409,7 +328,7 @@ public final class TwilightService extends SystemService {
if (!mPassiveListenerEnabled && passiveLocationEnabled) {
mPassiveListenerEnabled = true;
mLocationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER,
- 0, LOCATION_UPDATE_DISTANCE_METER , mLocationListener);
+ 0, LOCATION_UPDATE_DISTANCE_METER, mLocationListener);
}
if (!(mNetworkListenerEnabled && mPassiveListenerEnabled)) {
@@ -444,14 +363,14 @@ public final class TwilightService extends SystemService {
// pick the most recent location
if (location == null || (lastKnownLocation != null &&
location.getElapsedRealtimeNanos() <
- lastKnownLocation.getElapsedRealtimeNanos())) {
+ lastKnownLocation.getElapsedRealtimeNanos())) {
location = lastKnownLocation;
}
}
// In the case there is no location available (e.g. GPS fix or network location
- // is not available yet), the longitude of the location is estimated using the timezone,
- // latitude and accuracy are set to get a good average.
+ // is not available yet), the longitude of the location is estimated using the
+ // timezone, latitude and accuracy are set to get a good average.
if (location == null) {
Time currentTime = new Time();
currentTime.set(System.currentTimeMillis());
@@ -543,58 +462,22 @@ public final class TwilightService extends SystemService {
Slog.d(TAG, "Next update in " + (nextUpdate - now) + " ms");
}
- Intent updateIntent = new Intent(ACTION_UPDATE_TWILIGHT_STATE);
- PendingIntent pendingIntent = PendingIntent.getBroadcast(
- getContext(), 0, updateIntent, 0);
+ final PendingIntent pendingIntent = PendingIntent.getBroadcast(
+ getContext(), 0, new Intent(ACTION_UPDATE_TWILIGHT_STATE), 0);
mAlarmManager.cancel(pendingIntent);
mAlarmManager.setExact(AlarmManager.RTC, nextUpdate, pendingIntent);
}
}
- private final ContentObserver mContentObserver = new ContentObserver(new Handler()) {
- @Override
- public void onChange(boolean selfChange) {
- super.onChange(selfChange);
- int value = Secure.getIntForUser(getContext().getContentResolver(),
- Secure.TWILIGHT_MODE, Secure.TWILIGHT_MODE_AUTO, mCurrentUser);
- if (value == Secure.TWILIGHT_MODE_LOCKED_OFF) {
- setLockedState(new TwilightState(false, 0));
- } else if (value == Secure.TWILIGHT_MODE_LOCKED_ON) {
- setLockedState(new TwilightState(true, 1));
- } else if (value == Secure.TWILIGHT_MODE_AUTO_OVERRIDE_OFF) {
- setLockedState(new TwilightState(false, 0));
- scheduleReset();
- } else if (value == Secure.TWILIGHT_MODE_AUTO_OVERRIDE_ON) {
- setLockedState(new TwilightState(true, 1));
- scheduleReset();
- } else {
- mLocked = false;
- mLocationHandler.requestTwilightUpdate();
- }
- }
- };
-
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- if (Intent.ACTION_USER_SWITCHED.equals(intent.getAction())) {
- mCurrentUser = ActivityManager.getCurrentUser();
- reregisterSettingObserver();
- return;
- }
if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(intent.getAction())
&& !intent.getBooleanExtra("state", false)) {
// Airplane mode is now off!
mLocationHandler.requestLocationUpdate();
return;
}
-
- if (ACTION_RESET_TWILIGHT_AUTO.equals(intent.getAction())) {
- int user = intent.getIntExtra(EXTRA_RESET_USER, 0);
- Settings.Secure.putIntForUser(getContext().getContentResolver(),
- Secure.TWILIGHT_MODE, Secure.TWILIGHT_MODE_AUTO, user);
- return;
- }
// Time zone has changed or alarm expired.
mLocationHandler.requestTwilightUpdate();
}
@@ -602,32 +485,40 @@ public final class TwilightService extends SystemService {
// A LocationListener to initialize the network location provider. The location updates
// are handled through the passive location provider.
- private final LocationListener mEmptyLocationListener = new LocationListener() {
+ private final LocationListener mEmptyLocationListener = new LocationListener() {
+ @Override
public void onLocationChanged(Location location) {
}
- public void onProviderDisabled(String provider) {
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
}
+ @Override
public void onProviderEnabled(String provider) {
}
- public void onStatusChanged(String provider, int status, Bundle extras) {
+ @Override
+ public void onProviderDisabled(String provider) {
}
};
private final LocationListener mLocationListener = new LocationListener() {
+ @Override
public void onLocationChanged(Location location) {
mLocationHandler.processNewLocation(location);
}
- public void onProviderDisabled(String provider) {
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
}
+ @Override
public void onProviderEnabled(String provider) {
}
- public void onStatusChanged(String provider, int status, Bundle extras) {
+ @Override
+ public void onProviderDisabled(String provider) {
}
};
}
diff --git a/services/core/java/com/android/server/twilight/TwilightState.java b/services/core/java/com/android/server/twilight/TwilightState.java
index 81abc132011a..dec053b83948 100644
--- a/services/core/java/com/android/server/twilight/TwilightState.java
+++ b/services/core/java/com/android/server/twilight/TwilightState.java
@@ -24,6 +24,7 @@ import java.util.Date;
* This object is immutable.
*/
public class TwilightState {
+
private final boolean mIsNight;
private final float mAmount;
diff --git a/services/core/java/com/android/server/vr/EnabledComponentsObserver.java b/services/core/java/com/android/server/vr/EnabledComponentsObserver.java
index 40ee5d88fc8a..7126cb51b57f 100644
--- a/services/core/java/com/android/server/vr/EnabledComponentsObserver.java
+++ b/services/core/java/com/android/server/vr/EnabledComponentsObserver.java
@@ -215,7 +215,11 @@ public class EnabledComponentsObserver implements SettingChangeListener {
*/
public ArraySet<ComponentName> getInstalled(int userId) {
synchronized (mLock) {
- return mInstalledSet.get(userId);
+ ArraySet<ComponentName> ret = mInstalledSet.get(userId);
+ if (ret == null) {
+ return new ArraySet<ComponentName>();
+ }
+ return ret;
}
}
@@ -227,7 +231,12 @@ public class EnabledComponentsObserver implements SettingChangeListener {
*/
public ArraySet<ComponentName> getEnabled(int userId) {
synchronized (mLock) {
- return mEnabledSet.get(userId);
+ ArraySet<ComponentName> ret = mEnabledSet.get(userId);
+ if (ret == null) {
+ return new ArraySet<ComponentName>();
+ }
+ return ret;
+
}
}
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index 4b58a3b6a7aa..f7a92fe7d952 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -1470,19 +1470,27 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
}
@Override
- public void setWallpaperComponentChecked(ComponentName name, String callingPackage) {
+ public void setWallpaperComponentChecked(ComponentName name, String callingPackage,
+ int userId) {
+
if (isWallpaperSupported(callingPackage) && isSetWallpaperAllowed(callingPackage)) {
- setWallpaperComponent(name);
+ setWallpaperComponent(name, userId);
}
}
// ToDo: Remove this version of the function
@Override
public void setWallpaperComponent(ComponentName name) {
+ setWallpaperComponent(name, UserHandle.getCallingUserId());
+ }
+
+ private void setWallpaperComponent(ComponentName name, int userId) {
+ userId = ActivityManager.handleIncomingUser(getCallingPid(), getCallingUid(), userId,
+ false /* all */, true /* full */, "changing live wallpaper", null /* pkg */);
checkPermission(android.Manifest.permission.SET_WALLPAPER_COMPONENT);
+
synchronized (mLock) {
if (DEBUG) Slog.v(TAG, "setWallpaperComponent name=" + name);
- int userId = UserHandle.getCallingUserId();
WallpaperData wallpaper = mWallpaperMap.get(userId);
if (wallpaper == null) {
throw new IllegalStateException("Wallpaper not yet initialized for user " + userId);
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 2120be1ec531..159ec4c2c535 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -5111,10 +5111,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
boolean legacyApp = false;
if (ai.targetSdkVersion <= Build.VERSION_CODES.M) {
legacyApp = true;
- } else if ("com.google.android.apps.enterprise.dmagent".equals(ai.packageName)
- && ai.versionCode == 697) {
- // TODO: STOPSHIP remove this (revert ag/895987) once a new prebuilt is dropped
- legacyApp = true;
}
final int rawStatus = getEncryptionStatus();
diff --git a/services/net/java/android/net/ip/RouterAdvertisementDaemon.java b/services/net/java/android/net/ip/RouterAdvertisementDaemon.java
index 53c2fd7ce543..407d315f9973 100644
--- a/services/net/java/android/net/ip/RouterAdvertisementDaemon.java
+++ b/services/net/java/android/net/ip/RouterAdvertisementDaemon.java
@@ -30,7 +30,7 @@ import android.util.Log;
import com.android.internal.annotations.GuardedBy;
-import libcore.io.IoUtils;
+import libcore.io.IoBridge;
import libcore.util.HexEncoding;
import java.io.FileDescriptor;
@@ -457,7 +457,9 @@ public class RouterAdvertisementDaemon {
private void closeSocket() {
if (mSocket != null) {
- IoUtils.closeQuietly(mSocket);
+ try {
+ IoBridge.closeAndSignalBlockedThreads(mSocket);
+ } catch (IOException ignored) {}
}
mSocket = null;
}
diff --git a/services/tests/servicestests/assets/shortcut/dumpsys_expected.txt b/services/tests/servicestests/assets/shortcut/dumpsys_expected.txt
new file mode 100644
index 000000000000..eed2087f80ef
--- /dev/null
+++ b/services/tests/servicestests/assets/shortcut/dumpsys_expected.txt
@@ -0,0 +1,105 @@
+{
+ "shortcut": [
+ {
+ "userId": 0,
+ "launchers": [
+ {
+ "name": "com.android.launcher.1"
+ },
+ {
+ "name": "com.android.launcher.2"
+ },
+ {
+ "name": "com.android.launcher.3"
+ },
+ {
+ "name": "com.android.launcher.4"
+ },
+ {
+ "name": "com.android.launcher.1"
+ }
+ ],
+ "packages": [
+ {
+ "name": "com.android.test.1",
+ "dynamic": 3,
+ "manifest": 0,
+ "pinned": 4,
+ "bitmaps": 0,
+ "bitmapBytes": 0
+ },
+ {
+ "name": "com.android.test.2",
+ "dynamic": 4,
+ "manifest": 0,
+ "pinned": 5,
+ "bitmaps": 2,
+ "bitmapBytes": ***BITMAP_SIZE***
+ },
+ {
+ "name": "com.android.test.3",
+ "dynamic": 3,
+ "manifest": 0,
+ "pinned": 6,
+ "bitmaps": 0,
+ "bitmapBytes": 0
+ },
+ {
+ "name": "com.android.test.4",
+ "dynamic": 0,
+ "manifest": 0,
+ "pinned": 0,
+ "bitmaps": 0,
+ "bitmapBytes": 0
+ }
+ ]
+ },
+ {
+ "userId": 10,
+ "launchers": [
+ {
+ "name": "com.android.launcher.1"
+ }
+ ],
+ "packages": [
+ {
+ "name": "com.android.test.1",
+ "dynamic": 3,
+ "manifest": 0,
+ "pinned": 2,
+ "bitmaps": 0,
+ "bitmapBytes": 0
+ }
+ ]
+ },
+ {
+ "userId": 20,
+ "launchers": [
+ {
+ "name": "com.android.launcher.1"
+ },
+ {
+ "name": "com.android.launcher.2"
+ },
+ {
+ "name": "com.android.launcher.3"
+ },
+ {
+ "name": "com.android.launcher.1"
+ }
+ ],
+ "packages": [
+ {
+ "name": "com.android.test.1",
+ "dynamic": 3,
+ "manifest": 0,
+ "pinned": 6,
+ "bitmaps": 0,
+ "bitmapBytes": 0
+ }
+ ]
+ }
+ ],
+ "lowRam": false,
+ "iconSize": 128
+}
diff --git a/services/tests/servicestests/res/xml/shortcut_error_3.xml b/services/tests/servicestests/res/xml/shortcut_error_3.xml
index a7b9b84a9e3c..24ee024f64a4 100644
--- a/services/tests/servicestests/res/xml/shortcut_error_3.xml
+++ b/services/tests/servicestests/res/xml/shortcut_error_3.xml
@@ -19,6 +19,10 @@
android:shortcutShortLabel="@string/shortcut_title1"
/>
<shortcut
+ android:shortcutId="@string/shortcut_title1"
+ android:shortcutShortLabel="@string/shortcut_title1"
+ />
+ <shortcut
android:shortcutId="x3"
android:shortcutShortLabel="@string/shortcut_title1"
>
@@ -26,5 +30,7 @@
android:action="android.intent.action.VIEW"
>
</intent>
+ <categories android:name="@string/shortcut_title1" />
+ <categories android:name="cat2" />
</shortcut>
</shortcuts>
diff --git a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
index 2652b8f7d032..586425564129 100644
--- a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
@@ -93,6 +93,8 @@ import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
@@ -303,11 +305,6 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
}
@Override
- PackageManagerInternal injectPackageManagerInternal() {
- return mMockPackageManagerInternal;
- }
-
- @Override
boolean hasShortcutHostPermission(@NonNull String callingPackage, int userId) {
return mDefaultLauncherChecker.test(callingPackage, userId);
}
@@ -1111,17 +1108,32 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
protected void dumpsysOnLogcat(String message, boolean force) {
if (force || !ENABLE_DUMP) return;
- final ByteArrayOutputStream out = new ByteArrayOutputStream();
- final PrintWriter pw = new PrintWriter(out);
- mService.dumpInner(pw, null);
- pw.close();
-
Log.v(TAG, "Dumping ShortcutService: " + message);
- for (String line : out.toString().split("\n")) {
+ for (String line : dumpsys(null).split("\n")) {
Log.v(TAG, line);
}
}
+ protected String dumpCheckin() {
+ return dumpsys(new String[]{"--checkin"});
+ }
+
+ private String dumpsys(String[] args) {
+ final ArrayList<String> origPermissions = new ArrayList<>(mCallerPermissions);
+ mCallerPermissions.add(android.Manifest.permission.DUMP);
+ try {
+ final ByteArrayOutputStream out = new ByteArrayOutputStream();
+ final PrintWriter pw = new PrintWriter(out);
+ mService.dump(/* fd */ null, pw, args);
+ pw.close();
+
+ return out.toString();
+ } finally {
+ mCallerPermissions.clear();
+ mCallerPermissions.addAll(origPermissions);
+ }
+ }
+
/**
* For debugging, dump arbitrary file on logcat.
*/
@@ -1798,4 +1810,18 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
}
return actualShortcuts;
}
+
+ public String readTestAsset(String assetPath) throws IOException {
+ final StringBuilder sb = new StringBuilder();
+ try (BufferedReader br = new BufferedReader(
+ new InputStreamReader(
+ getTestContext().getResources().getAssets().open(assetPath)))) {
+ String line;
+ while ((line = br.readLine()) != null) {
+ sb.append(line);
+ sb.append(System.lineSeparator());
+ }
+ }
+ return sb.toString();
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
index d5631858ebf1..55fa625f2cc4 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
@@ -3131,7 +3131,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest {
assertEquals(2, mManager.getRemainingCallCount());
});
- mService.getShortcutsForTest().get(UserHandle.USER_SYSTEM).setDefaultLauncherComponent(
+ mService.getShortcutsForTest().get(UserHandle.USER_SYSTEM).setLauncher(
new ComponentName("pkg1", "class"));
// Restore.
@@ -3165,7 +3165,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest {
});
assertEquals("pkg1", mService.getShortcutsForTest().get(UserHandle.USER_SYSTEM)
- .getDefaultLauncherComponent().getPackageName());
+ .getLastKnownLauncher().getPackageName());
// Start another user
mService.handleUnlockUser(USER_10);
@@ -3181,7 +3181,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest {
assertEquals("title10-1-1", getCallerShortcut("s1").getTitle());
assertEquals("title10-1-2", getCallerShortcut("s2").getTitle());
});
- assertNull(mService.getShortcutsForTest().get(USER_10).getDefaultLauncherComponent());
+ assertNull(mService.getShortcutsForTest().get(USER_10).getLastKnownLauncher());
// Try stopping the user
mService.handleCleanupUser(USER_10);
@@ -5859,9 +5859,11 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest {
// Only the valid one is published.
runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
- assertShortcutIds(assertAllManifest(assertAllImmutable(assertAllEnabled(
- mManager.getManifestShortcuts()))),
- "x1");
+ assertWith(getCallerShortcuts())
+ .areAllManifest()
+ .areAllImmutable()
+ .areAllEnabled()
+ .haveIds("x1");
});
// Package 1 updated, which has one valid manifest shortcut and one invalid.
@@ -5874,9 +5876,11 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest {
// Only the valid one is published.
runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
- assertShortcutIds(assertAllManifest(assertAllImmutable(assertAllEnabled(
- mManager.getManifestShortcuts()))),
- "x2");
+ assertWith(getCallerShortcuts())
+ .areAllManifest()
+ .areAllImmutable()
+ .areAllEnabled()
+ .haveIds("x2");
});
// Package 1 updated, which has one valid manifest shortcut and one invalid.
@@ -5889,9 +5893,14 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest {
// Only the valid one is published.
runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
- assertShortcutIds(assertAllManifest(assertAllImmutable(assertAllEnabled(
- mManager.getManifestShortcuts()))),
- "x3");
+ assertWith(getCallerShortcuts())
+ .areAllManifest()
+ .areAllImmutable()
+ .areAllEnabled()
+ .haveIds("x3")
+ .forShortcutWithId("x3", si -> {
+ assertEquals(set("cat2"), si.getCategories());
+ });
});
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
index bd413beedc47..efd380bd10fe 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
@@ -47,6 +47,10 @@ import android.test.suitebuilder.annotation.SmallTest;
import com.android.frameworks.servicestests.R;
import com.android.server.pm.ShortcutService.ConfigConstants;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.Locale;
/**
@@ -1562,12 +1566,22 @@ public class ShortcutManagerTest2 extends BaseShortcutManagerTest {
ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
assertEquals(3, mManager.getRemainingCallCount());
+ assertFalse(mManager.isRateLimitingActive());
mManager.setDynamicShortcuts(list(makeShortcut("s")));
+
+ assertEquals(2, mManager.getRemainingCallCount());
+ assertFalse(mManager.isRateLimitingActive());
+
mManager.setDynamicShortcuts(list(makeShortcut("s")));
+
+ assertEquals(1, mManager.getRemainingCallCount());
+ assertFalse(mManager.isRateLimitingActive());
+
mManager.setDynamicShortcuts(list(makeShortcut("s")));
assertEquals(0, mManager.getRemainingCallCount());
+ assertTrue(mManager.isRateLimitingActive());
});
runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
assertEquals(3, mManager.getRemainingCallCount());
@@ -1577,6 +1591,7 @@ public class ShortcutManagerTest2 extends BaseShortcutManagerTest {
mManager.setDynamicShortcuts(list(makeShortcut("s")));
assertEquals(0, mManager.getRemainingCallCount());
+ assertTrue(mManager.isRateLimitingActive());
});
runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
@@ -1586,6 +1601,7 @@ public class ShortcutManagerTest2 extends BaseShortcutManagerTest {
mManager.setDynamicShortcuts(list(makeShortcut("s")));
assertEquals(0, mManager.getRemainingCallCount());
+ assertTrue(mManager.isRateLimitingActive());
});
runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
@@ -1595,6 +1611,7 @@ public class ShortcutManagerTest2 extends BaseShortcutManagerTest {
mManager.setDynamicShortcuts(list(makeShortcut("s")));
assertEquals(0, mManager.getRemainingCallCount());
+ assertTrue(mManager.isRateLimitingActive());
});
runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
@@ -1604,6 +1621,7 @@ public class ShortcutManagerTest2 extends BaseShortcutManagerTest {
mManager.setDynamicShortcuts(list(makeShortcut("s")));
assertEquals(0, mManager.getRemainingCallCount());
+ assertTrue(mManager.isRateLimitingActive());
});
runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
assertEquals(3, mManager.getRemainingCallCount());
@@ -1613,6 +1631,7 @@ public class ShortcutManagerTest2 extends BaseShortcutManagerTest {
mManager.setDynamicShortcuts(list(makeShortcut("s")));
assertEquals(3, mManager.getRemainingCallCount()); // Still 3!
+ assertFalse(mManager.isRateLimitingActive());
});
}
@@ -1852,4 +1871,46 @@ public class ShortcutManagerTest2 extends BaseShortcutManagerTest {
ShortcutInfo.lookUpResourceId(res, "drawable/black_16x64", null,
getTestContext().getPackageName()));
}
+
+ public void testDumpCheckin() throws IOException {
+ prepareCrossProfileDataSet();
+
+ // prepareCrossProfileDataSet() doesn't set any icons, so do set here.
+ final Icon res32x32 = Icon.createWithResource(getTestContext(), R.drawable.black_32x32);
+ final Icon res64x64 = Icon.createWithResource(getTestContext(), R.drawable.black_64x64);
+ final Icon bmp32x32 = Icon.createWithBitmap(BitmapFactory.decodeResource(
+ getTestContext().getResources(), R.drawable.black_32x32));
+ final Icon bmp64x64 = Icon.createWithBitmap(BitmapFactory.decodeResource(
+ getTestContext().getResources(), R.drawable.black_64x64));
+
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ assertTrue(mManager.setDynamicShortcuts(list(
+ makeShortcutWithIcon("res32x32", res32x32),
+ makeShortcutWithIcon("res64x64", res64x64),
+ makeShortcutWithIcon("bmp32x32", bmp32x32),
+ makeShortcutWithIcon("bmp64x64", bmp64x64))));
+ });
+ // We can't predict the compressed bitmap sizes, so get the real sizes here.
+ final long bitmapTotal =
+ new File(getPackageShortcut(CALLING_PACKAGE_2, "bmp32x32", USER_0)
+ .getBitmapPath()).length() +
+ new File(getPackageShortcut(CALLING_PACKAGE_2, "bmp64x64", USER_0)
+ .getBitmapPath()).length();
+
+ // Read the expected output and inject the bitmap size.
+ final String expected = readTestAsset("shortcut/dumpsys_expected.txt")
+ .replace("***BITMAP_SIZE***", String.valueOf(bitmapTotal));
+
+ assertEquals(expected, dumpCheckin());
+ }
+
+ public void testDumpsysNoPermission() {
+ assertExpectException(SecurityException.class, "android.permission.DUMP",
+ () -> mService.dump(null, new PrintWriter(new StringWriter()), null));
+
+ // System can call it without the permission.
+ runWithSystemUid(() -> {
+ mService.dump(null, new PrintWriter(new StringWriter()), null);
+ });
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest6.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest6.java
new file mode 100644
index 000000000000..ffb2953d8383
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest6.java
@@ -0,0 +1,317 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.server.pm;
+
+import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.list;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doAnswer;
+
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.ResolveInfo;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import java.util.List;
+
+/**
+ * Tests for {@link ShortcutService#hasShortcutHostPermissionInner}.
+ */
+@SmallTest
+public class ShortcutManagerTest6 extends BaseShortcutManagerTest {
+
+ private static final String PACKAGE_SYSTEM_LAUNCHER = "com.android.systemlauncher";
+ private static final String PACKAGE_SYSTEM_LAUNCHER_NAME = "systemlauncher_name";
+ private static final int PACKAGE_SYSTEM_LAUNCHER_PRIORITY = 0;
+
+ private static final String PACKAGE_FALLBACK_LAUNCHER = "com.android.settings";
+ private static final String PACKAGE_FALLBACK_LAUNCHER_NAME = "fallback";
+ private static final int PACKAGE_FALLBACK_LAUNCHER_PRIORITY = -999;
+
+ private void prepareGetHomeActivitiesAsUser(ComponentName preferred,
+ List<ResolveInfo> candidates, int userId) {
+ doAnswer(inv -> {
+ ((List) inv.getArguments()[0]).addAll(candidates);
+ return preferred;
+ }).when(mMockPackageManagerInternal).getHomeActivitiesAsUser(any(List.class), eq(userId));
+ }
+
+ private static ComponentName cn(String packageName, String name) {
+ return new ComponentName(packageName, name);
+ }
+
+ private static ResolveInfo ri(String packageName, String name, boolean isSystem, int priority) {
+ final ResolveInfo ri = new ResolveInfo();
+ ri.activityInfo = new ActivityInfo();
+ ri.activityInfo.applicationInfo = new ApplicationInfo();
+
+ ri.activityInfo.packageName = packageName;
+ ri.activityInfo.name = name;
+ if (isSystem) {
+ ri.activityInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ }
+ ri.priority = priority;
+ return ri;
+ }
+
+ private static ResolveInfo getSystemLauncher() {
+ return ri(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME, true,
+ PACKAGE_SYSTEM_LAUNCHER_PRIORITY);
+ }
+
+ private static ResolveInfo getFallbackLauncher() {
+ return ri(PACKAGE_FALLBACK_LAUNCHER, PACKAGE_FALLBACK_LAUNCHER_NAME, true,
+ PACKAGE_FALLBACK_LAUNCHER_PRIORITY);
+ }
+
+ public void testHasShortcutHostPermissionInner_systemLauncherOnly() {
+ // Preferred isn't set, use the system launcher.
+ prepareGetHomeActivitiesAsUser(
+ /* preferred */ null,
+ list(getSystemLauncher(), getFallbackLauncher()),
+ USER_0);
+ assertTrue(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_0));
+
+ // Should be cached.
+ assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+ mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+ assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+ mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+ // Also make sure the last known is saved, but the cached is not.
+
+ initService();
+
+ assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+ mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+ assertEquals(null,
+ mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+ }
+
+ public void testHasShortcutHostPermissionInner_with3pLauncher() {
+ // Preferred isn't set, still use the system launcher.
+ prepareGetHomeActivitiesAsUser(
+ /* preferred */ null,
+ list(getSystemLauncher(), getFallbackLauncher(),
+ ri(CALLING_PACKAGE_1, "name", false, 0),
+ ri(CALLING_PACKAGE_2, "name", false, 0)
+ ),
+ USER_0);
+ assertTrue(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_0));
+
+ // Should be cached.
+ assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+ mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+ assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+ mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+ }
+
+ public void testHasShortcutHostPermissionInner_with3pLauncher_complicated() {
+ // Preferred is set. That's the default launcher.
+ prepareGetHomeActivitiesAsUser(
+ /* preferred */ cn(CALLING_PACKAGE_2, "name"),
+ list(getSystemLauncher(), getFallbackLauncher(),
+ ri(CALLING_PACKAGE_1, "name", false, 0),
+ ri(CALLING_PACKAGE_2, "name", false, 0)
+ ),
+ USER_0);
+ assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+ assertTrue(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_0));
+
+ // Should be cached.
+ assertEquals(cn(CALLING_PACKAGE_2, "name"),
+ mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+ assertEquals(cn(CALLING_PACKAGE_2, "name"),
+ mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+
+ // Once set, even after the preferred launcher is cleared, SM still allows it to access
+ // shortcuts.
+ prepareGetHomeActivitiesAsUser(
+ /* preferred */ null,
+ list(getSystemLauncher(), getFallbackLauncher(),
+ ri(CALLING_PACKAGE_1, "name", false, 0),
+ ri(CALLING_PACKAGE_2, "name", false, 0)
+ ),
+ USER_0);
+
+ assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+ assertTrue(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_0));
+
+ // Should be cached.
+ assertEquals(cn(CALLING_PACKAGE_2, "name"),
+ mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+ assertEquals(cn(CALLING_PACKAGE_2, "name"),
+ mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+ // However, if the component has been disabled, then we'll recalculate it.
+ mEnabledActivityChecker = (comp, user) -> false;
+
+ assertTrue(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_0));
+
+ mEnabledActivityChecker = (comp, user) -> true;
+
+ // Now the preferred changed.
+ prepareGetHomeActivitiesAsUser(
+ /* preferred */ cn(CALLING_PACKAGE_1, "xyz"),
+ list(getSystemLauncher(), getFallbackLauncher(),
+ ri(CALLING_PACKAGE_1, "name", false, 0),
+ ri(CALLING_PACKAGE_2, "name", false, 0)
+ ),
+ USER_0);
+
+ assertTrue(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+
+ // Should be cached.
+ assertEquals(cn(CALLING_PACKAGE_1, "xyz"),
+ mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+ assertEquals(cn(CALLING_PACKAGE_1, "xyz"),
+ mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+
+ // As long as there's the cached launcher set, even if getHomeActivitiesAsUser()
+ // returns different values, the cached one is still the default.
+ prepareGetHomeActivitiesAsUser(
+ /* preferred */ getSystemLauncher().activityInfo.getComponentName(),
+ list(getSystemLauncher(), getFallbackLauncher()),
+ USER_0);
+
+ assertTrue(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+
+ // Cached ones haven't changed.
+ assertEquals(cn(CALLING_PACKAGE_1, "xyz"),
+ mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+ assertEquals(cn(CALLING_PACKAGE_1, "xyz"),
+ mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+ // However, now the "real" default launcher is the system one. So if the system
+ // launcher asks for shortcuts, we'll allow it.
+ assertTrue(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+
+ // Since the cache is updated, CALLING_PACKAGE_1 no longer has the permission.
+ assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+
+ // Cached ones haven't changed.
+ assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+ mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+ assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+ mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+ }
+
+ public void testHasShortcutHostPermissionInner_multiUser() {
+ prepareGetHomeActivitiesAsUser(
+ /* preferred */ null,
+ list(getSystemLauncher(), getFallbackLauncher()),
+ USER_0);
+
+ prepareGetHomeActivitiesAsUser(
+ /* preferred */ cn(CALLING_PACKAGE_2, "name"),
+ list(getSystemLauncher(), getFallbackLauncher(),
+ ri(CALLING_PACKAGE_1, "name", false, 0),
+ ri(CALLING_PACKAGE_2, "name", false, 0)
+ ),
+ USER_10);
+
+ assertTrue(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+ assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_0));
+
+ // Check the cache.
+ assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+ mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+ assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+ mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+ assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_10));
+ assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_10));
+ assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_10));
+ assertTrue(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_10));
+
+ // Check the cache.
+ assertEquals(cn(CALLING_PACKAGE_2, "name"),
+ mService.getUserShortcutsLocked(USER_10).getLastKnownLauncher());
+ assertEquals(cn(CALLING_PACKAGE_2, "name"),
+ mService.getUserShortcutsLocked(USER_10).getCachedLauncher());
+ }
+
+ public void testHasShortcutHostPermissionInner_clearCache() {
+ prepareGetHomeActivitiesAsUser(
+ /* preferred */ null,
+ list(getSystemLauncher(), getFallbackLauncher()),
+ USER_0);
+
+ prepareGetHomeActivitiesAsUser(
+ /* preferred */ cn(CALLING_PACKAGE_2, "name"),
+ list(getSystemLauncher(), getFallbackLauncher(),
+ ri(CALLING_PACKAGE_1, "name", false, 0),
+ ri(CALLING_PACKAGE_2, "name", false, 0)
+ ),
+ USER_10);
+
+ assertTrue(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+ assertTrue(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_10));
+
+ assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+ mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+ assertEquals(cn(CALLING_PACKAGE_2, "name"),
+ mService.getUserShortcutsLocked(USER_10).getCachedLauncher());
+
+ // Send ACTION_PREFERRED_ACTIVITY_CHANGED on user 10.
+ // But the user is not running, so will be ignored.
+ mService.mPackageMonitor.onReceive(mServiceContext,
+ new Intent(Intent.ACTION_PREFERRED_ACTIVITY_CHANGED).putExtra(
+ Intent.EXTRA_USER_HANDLE, USER_10));
+
+ assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+ mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+ assertEquals(cn(CALLING_PACKAGE_2, "name"),
+ mService.getUserShortcutsLocked(USER_10).getCachedLauncher());
+
+ // Send it again after starting the user.
+ mRunningUsers.put(USER_10, true);
+ mService.mPackageMonitor.onReceive(mServiceContext,
+ new Intent(Intent.ACTION_PREFERRED_ACTIVITY_CHANGED).putExtra(
+ Intent.EXTRA_USER_HANDLE, USER_10));
+
+ assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+ mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+ // Only user-10's cache is cleared.
+ assertEquals(null,
+ mService.getUserShortcutsLocked(USER_10).getCachedLauncher());
+
+ }
+}
diff --git a/telecomm/java/android/telecom/ConferenceParticipant.java b/telecomm/java/android/telecom/ConferenceParticipant.java
index db0f151e2016..20b04ebed6a4 100644
--- a/telecomm/java/android/telecom/ConferenceParticipant.java
+++ b/telecomm/java/android/telecom/ConferenceParticipant.java
@@ -114,13 +114,13 @@ public class ConferenceParticipant implements Parcelable {
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("[ConferenceParticipant Handle: ");
- sb.append(mHandle);
+ sb.append(Log.pii(mHandle));
sb.append(" DisplayName: ");
- sb.append(mDisplayName);
+ sb.append(Log.pii(mDisplayName));
sb.append(" Endpoint: ");
- sb.append(mEndpoint);
+ sb.append(Log.pii(mEndpoint));
sb.append(" State: ");
- sb.append(mState);
+ sb.append(Connection.stateToString(mState));
sb.append("]");
return sb.toString();
}
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java
index 52f75f680560..ee055f45cecb 100644
--- a/telecomm/java/android/telecom/Connection.java
+++ b/telecomm/java/android/telecom/Connection.java
@@ -370,8 +370,14 @@ public abstract class Connection extends Conferenceable {
*/
public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 1<<5;
+ /**
+ * Indicates that the connection represents a downgraded IMS conference.
+ * @hide
+ */
+ public static final int PROPERTY_IS_DOWNGRADED_CONFERENCE = 1<<6;
+
//**********************************************************************************************
- // Next PROPERTY value: 1<<6
+ // Next PROPERTY value: 1<<7
//**********************************************************************************************
/**
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 3052cdb20552..65b5ee8b14ed 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -845,6 +845,20 @@ public class CarrierConfigManager {
"allow_add_call_during_video_call";
/**
+ * When true, indicates that the HD audio icon in the in-call screen should not be shown for
+ * VoWifi calls.
+ * @hide
+ */
+ public static final String KEY_WIFI_CALLS_CAN_BE_HD_AUDIO = "wifi_calls_can_be_hd_audio";
+
+ /**
+ * When true, indicates that the HD audio icon in the in-call screen should not be shown for
+ * video calls.
+ * @hide
+ */
+ public static final String KEY_VIDEO_CALLS_CAN_BE_HD_AUDIO = "video_calls_can_be_hd_audio";
+
+ /**
* Defines operator-specific {@link com.android.ims.ImsReasonInfo} mappings.
*
* Format: "ORIGINAL_CODE|MESSAGE|NEW_CODE"
@@ -1020,6 +1034,8 @@ public class CarrierConfigManager {
sDefaults.putBoolean(KEY_DROP_VIDEO_CALL_WHEN_ANSWERING_AUDIO_CALL_BOOL, false);
sDefaults.putBoolean(KEY_ALLOW_MERGE_WIFI_CALLS_WHEN_VOWIFI_OFF_BOOL, true);
sDefaults.putBoolean(KEY_ALLOW_ADD_CALL_DURING_VIDEO_CALL_BOOL, true);
+ sDefaults.putBoolean(KEY_WIFI_CALLS_CAN_BE_HD_AUDIO, true);
+ sDefaults.putBoolean(KEY_VIDEO_CALLS_CAN_BE_HD_AUDIO, true);
sDefaults.putStringArray(KEY_IMS_REASONINFO_MAPPING_STRING_ARRAY, null);
}
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index df81d7f90008..a3dc34374c62 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -5424,6 +5424,39 @@ public class TelephonyManager {
}
/**
+ * Return the Preferred Roaming List Version
+ *
+ * Requires that the calling app has READ_PRIVILEGED_PHONE_STATE permission
+ *
+ * @return PRLVersion or null if error.
+ * @hide
+ */
+ public String getCdmaPrlVersion() {
+ return getCdmaPrlVersion(getDefaultSubscription());
+ }
+
+ /**
+ * Return the Preferred Roaming List Version
+ *
+ * Requires that the calling app has READ_PRIVILEGED_PHONE_STATE permission
+ *
+ * @param subId the subscription ID that this request applies to.
+ * @return PRLVersion or null if error.
+ * @hide
+ */
+ public String getCdmaPrlVersion(int subId) {
+ try {
+ ITelephony service = getITelephony();
+ if (service != null) {
+ return service.getCdmaPrlVersion(subId);
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "Error calling ITelephony#getCdmaPrlVersion", e);
+ }
+ return null;
+ }
+
+ /**
* Get snapshot of Telephony histograms
* @return List of Telephony histograms
* Requires Permission:
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index 167e1a739ca5..7e7071ee173a 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -1107,6 +1107,16 @@ interface ITelephony {
String getEsn(int subId);
/**
+ * Return the Preferred Roaming List Version
+ *
+ * Requires that the calling app has READ_PRIVILEGED_PHONE_STATE permission
+ * @param subId the subscription ID that this request applies to.
+ * @return PRLVersion or null if error.
+ * @hide
+ */
+ String getCdmaPrlVersion(int subId);
+
+ /**
* Get snapshot of Telephony histograms
* @return List of Telephony histograms
* Requires Permission:
diff --git a/tools/aapt/Images.cpp b/tools/aapt/Images.cpp
index 9939c188cdd9..aea16c715b95 100644
--- a/tools/aapt/Images.cpp
+++ b/tools/aapt/Images.cpp
@@ -808,13 +808,13 @@ static void checkNinePatchSerialization(Res_png_9patch* inPatch, void* data)
assert(outPatch->paddingTop == inPatch->paddingTop);
assert(outPatch->paddingBottom == inPatch->paddingBottom);
for (int i = 0; i < outPatch->numXDivs; i++) {
- assert(outPatch->xDivs[i] == inPatch->xDivs[i]);
+ assert(outPatch->getXDivs()[i] == inPatch->getXDivs()[i]);
}
for (int i = 0; i < outPatch->numYDivs; i++) {
- assert(outPatch->yDivs[i] == inPatch->yDivs[i]);
+ assert(outPatch->getYDivs()[i] == inPatch->getYDivs()[i]);
}
for (int i = 0; i < outPatch->numColors; i++) {
- assert(outPatch->colors[i] == inPatch->colors[i]);
+ assert(outPatch->getColors()[i] == inPatch->getColors()[i]);
}
free(newData);
}
diff --git a/tools/aapt/Resource.cpp b/tools/aapt/Resource.cpp
index e6407332bb90..a7878d196c15 100644
--- a/tools/aapt/Resource.cpp
+++ b/tools/aapt/Resource.cpp
@@ -326,13 +326,18 @@ static status_t makeFileResources(Bundle* bundle, const sp<AaptAssets>& assets,
}
String8 resPath = it.getPath();
resPath.convertToResPath();
- table->addEntry(SourcePos(it.getPath(), 0), String16(assets->getPackage()),
+ status_t result = table->addEntry(SourcePos(it.getPath(), 0),
+ String16(assets->getPackage()),
type16,
baseName,
String16(resPath),
NULL,
&it.getParams());
- assets->addResource(it.getLeafName(), resPath, it.getFile(), type8);
+ if (result != NO_ERROR) {
+ hasErrors = true;
+ } else {
+ assets->addResource(it.getLeafName(), resPath, it.getFile(), type8);
+ }
}
return hasErrors ? STATUST(UNKNOWN_ERROR) : NO_ERROR;
@@ -1370,6 +1375,10 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets, sp<ApkBuil
}
}
+ if (hasErrors) {
+ return UNKNOWN_ERROR;
+ }
+
// --------------------------------------------------------------------
// Assignment of resource IDs and initial generation of resource table.
// --------------------------------------------------------------------
diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp
index 6a4b63789815..6d80a69b7444 100644
--- a/tools/aapt/ResourceTable.cpp
+++ b/tools/aapt/ResourceTable.cpp
@@ -4521,6 +4521,7 @@ bool ResourceTable::shouldGenerateVersionedResource(
const ConfigDescription& sourceConfig,
const int sdkVersionToGenerate) {
assert(sdkVersionToGenerate > sourceConfig.sdkVersion);
+ assert(configList != NULL);
const DefaultKeyedVector<ConfigDescription, sp<ResourceTable::Entry>>& entries
= configList->getEntries();
ssize_t idx = entries.indexOfKey(sourceConfig);