summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/res/res/values-ca/strings.xml6
-rw-r--r--core/res/res/values-da/strings.xml8
-rw-r--r--core/res/res/values-el/strings.xml6
-rw-r--r--core/res/res/values-fr/strings.xml6
-rw-r--r--core/res/res/values-iw/strings.xml2
-rw-r--r--core/res/res/values-ru/strings.xml2
-rw-r--r--core/res/res/values-sr/strings.xml14
-rw-r--r--core/res/res/values-th/strings.xml8
-rw-r--r--core/res/res/values-zh-rCN/strings.xml8
-rw-r--r--docs/html/auto/images/assets/00_frame.pngbin0 -> 3548 bytes
-rw-r--r--docs/html/auto/images/assets/01_a_maps.pngbin0 -> 47369 bytes
-rw-r--r--docs/html/auto/images/assets/01_b_now.pngbin0 -> 53184 bytes
-rw-r--r--docs/html/auto/images/assets/02_a_notif.gifbin0 -> 161115 bytes
-rw-r--r--docs/html/auto/images/assets/02_b_switcher.gifbin0 -> 1071430 bytes
-rw-r--r--docs/html/auto/images/assets/03_a_musict.pngbin0 -> 50149 bytes
-rw-r--r--docs/html/auto/images/assets/03_b_voice.gifbin0 -> 143309 bytes
-rw-r--r--docs/html/auto/images/assets/do_01_switcher.pngbin0 -> 69852 bytes
-rw-r--r--docs/html/auto/images/assets/do_02_music.pngbin0 -> 109156 bytes
-rw-r--r--docs/html/auto/images/assets/do_02_music_night.pngbin0 -> 95536 bytes
-rw-r--r--docs/html/auto/images/assets/do_03_more.pngbin0 -> 107675 bytes
-rw-r--r--docs/html/auto/images/assets/do_04_mdrawer.pngbin0 -> 14221 bytes
-rw-r--r--docs/html/auto/images/assets/do_05_template.pngbin0 -> 9855 bytes
-rw-r--r--docs/html/auto/images/assets/do_05_template_night.pngbin0 -> 8615 bytes
-rw-r--r--docs/html/auto/images/assets/do_06_gdrawer.pngbin0 -> 10805 bytes
-rw-r--r--docs/html/auto/images/assets/do_07_notif.pngbin0 -> 88024 bytes
-rw-r--r--docs/html/auto/images/carlogos.pngbin432913 -> 0 bytes
-rw-r--r--docs/html/auto/images/figure02.pngbin21953 -> 0 bytes
-rw-r--r--docs/html/auto/images/figure03.pngbin56184 -> 0 bytes
-rw-r--r--docs/html/auto/images/figure04.pngbin104893 -> 0 bytes
-rw-r--r--docs/html/auto/images/figure05.pngbin129171 -> 0 bytes
-rw-r--r--docs/html/auto/images/figure06.pngbin83857 -> 0 bytes
-rw-r--r--docs/html/auto/images/figure07.pngbin51775 -> 0 bytes
-rw-r--r--docs/html/auto/images/figure08.pngbin158541 -> 0 bytes
-rw-r--r--docs/html/auto/images/hero.jpgbin103714 -> 191812 bytes
-rw-r--r--docs/html/auto/images/logos/apps/iheartradio.pngbin0 -> 25724 bytes
-rw-r--r--docs/html/auto/images/logos/apps/joyride.pngbin0 -> 40082 bytes
-rw-r--r--docs/html/auto/images/logos/apps/mlb.pngbin0 -> 37221 bytes
-rw-r--r--docs/html/auto/images/logos/apps/pandora.pngbin0 -> 39421 bytes
-rw-r--r--docs/html/auto/images/logos/apps/pocketcasts.pngbin0 -> 44638 bytes
-rw-r--r--docs/html/auto/images/logos/apps/songza.pngbin0 -> 43526 bytes
-rw-r--r--docs/html/auto/images/logos/apps/spotify.pngbin0 -> 37691 bytes
-rw-r--r--docs/html/auto/images/logos/apps/stitcher.pngbin0 -> 35928 bytes
-rw-r--r--docs/html/auto/images/logos/apps/tunein.pngbin0 -> 33212 bytes
-rw-r--r--docs/html/auto/images/logos/apps/umano.pngbin0 -> 36507 bytes
-rw-r--r--docs/html/auto/images/logos/auto/abarth.pngbin0 -> 44184 bytes
-rw-r--r--docs/html/auto/images/logos/auto/acura.pngbin0 -> 42473 bytes
-rw-r--r--docs/html/auto/images/logos/auto/alpharomeo.pngbin0 -> 47368 bytes
-rw-r--r--docs/html/auto/images/logos/auto/audi.pngbin0 -> 69845 bytes
-rw-r--r--docs/html/auto/images/logos/auto/bentley.pngbin0 -> 64963 bytes
-rw-r--r--docs/html/auto/images/logos/auto/chevrolet.pngbin0 -> 60902 bytes
-rw-r--r--docs/html/auto/images/logos/auto/chrysler.pngbin0 -> 13122 bytes
-rw-r--r--docs/html/auto/images/logos/auto/datsun.pngbin0 -> 45271 bytes
-rw-r--r--docs/html/auto/images/logos/auto/dodge.pngbin0 -> 11510 bytes
-rw-r--r--docs/html/auto/images/logos/auto/fiat.pngbin0 -> 51055 bytes
-rw-r--r--docs/html/auto/images/logos/auto/ford.pngbin0 -> 41645 bytes
-rw-r--r--docs/html/auto/images/logos/auto/honda.pngbin0 -> 61855 bytes
-rw-r--r--docs/html/auto/images/logos/auto/hyundai.pngbin0 -> 62864 bytes
-rw-r--r--docs/html/auto/images/logos/auto/infinity.pngbin0 -> 23412 bytes
-rw-r--r--docs/html/auto/images/logos/auto/jeep.pngbin0 -> 12998 bytes
-rw-r--r--docs/html/auto/images/logos/auto/kia.pngbin0 -> 63312 bytes
-rw-r--r--docs/html/auto/images/logos/auto/maserati.pngbin0 -> 65738 bytes
-rw-r--r--docs/html/auto/images/logos/auto/mazda.pngbin0 -> 38613 bytes
-rw-r--r--docs/html/auto/images/logos/auto/mercedesbenz.pngbin0 -> 9846 bytes
-rw-r--r--docs/html/auto/images/logos/auto/mitsubishi.pngbin0 -> 12033 bytes
-rw-r--r--docs/html/auto/images/logos/auto/nissan.pngbin0 -> 51626 bytes
-rw-r--r--docs/html/auto/images/logos/auto/opel.pngbin0 -> 60667 bytes
-rw-r--r--docs/html/auto/images/logos/auto/ram.pngbin0 -> 18473 bytes
-rw-r--r--docs/html/auto/images/logos/auto/renault.pngbin0 -> 52868 bytes
-rw-r--r--docs/html/auto/images/logos/auto/seat.pngbin0 -> 48476 bytes
-rwxr-xr-xdocs/html/auto/images/logos/auto/skoda.pngbin0 -> 50789 bytes
-rw-r--r--docs/html/auto/images/logos/auto/subaru.pngbin0 -> 56389 bytes
-rw-r--r--docs/html/auto/images/logos/auto/suzuki.pngbin0 -> 47243 bytes
-rw-r--r--docs/html/auto/images/logos/auto/volkswagen.pngbin0 -> 67610 bytes
-rw-r--r--docs/html/auto/images/logos/auto/volvo.pngbin0 -> 61381 bytes
-rw-r--r--docs/html/auto/images/logos/hard/alpine.pngbin0 -> 56626 bytes
-rw-r--r--docs/html/auto/images/logos/hard/clarion.pngbin0 -> 72995 bytes
-rw-r--r--docs/html/auto/images/logos/hard/cloudcar.pngbin0 -> 40360 bytes
-rw-r--r--docs/html/auto/images/logos/hard/delphi.pngbin0 -> 42223 bytes
-rw-r--r--docs/html/auto/images/logos/hard/freescale.pngbin0 -> 45521 bytes
-rw-r--r--docs/html/auto/images/logos/hard/fujitsuten.pngbin0 -> 44680 bytes
-rw-r--r--docs/html/auto/images/logos/hard/harman.pngbin0 -> 32916 bytes
-rw-r--r--docs/html/auto/images/logos/hard/jvc.pngbin0 -> 34149 bytes
-rw-r--r--docs/html/auto/images/logos/hard/kenwood.pngbin0 -> 36139 bytes
-rw-r--r--docs/html/auto/images/logos/hard/lg.pngbin0 -> 45260 bytes
-rw-r--r--docs/html/auto/images/logos/hard/panasonic.pngbin0 -> 43128 bytes
-rw-r--r--docs/html/auto/images/logos/hard/parrot.pngbin0 -> 41205 bytes
-rw-r--r--docs/html/auto/images/logos/hard/pioneer.pngbin0 -> 43785 bytes
-rw-r--r--docs/html/auto/images/logos/hard/renesas.pngbin0 -> 42935 bytes
-rw-r--r--docs/html/auto/images/logos/hard/symphonyteleca.pngbin0 -> 45570 bytes
-rw-r--r--docs/html/auto/images/logos/hard/texasinstruments.pngbin0 -> 45365 bytes
-rw-r--r--docs/html/auto/index.jd453
-rw-r--r--docs/html/auto/overview.jd326
-rw-r--r--docs/html/design/auto/index.jd35
-rw-r--r--docs/html/design/design_toc.cs40
-rw-r--r--docs/html/design/devices.jd37
-rw-r--r--docs/html/design/get-started/creative-vision.jd8
-rw-r--r--docs/html/design/get-started/principles.jd15
-rw-r--r--docs/html/design/handhelds/index.jd (renamed from docs/html/design/get-started/ui-overview.jd)22
-rw-r--r--docs/html/design/index.jd12
-rw-r--r--docs/html/design/media/device_family.pngbin0 -> 230324 bytes
-rw-r--r--docs/html/design/media/wear/1D_picker.pngbin0 -> 423993 bytes
-rw-r--r--docs/html/design/media/wear/2D_picker.pngbin0 -> 936742 bytes
-rw-r--r--docs/html/design/media/wear/2D_picker_action.pngbin0 -> 653262 bytes
-rw-r--r--docs/html/design/media/wear/Bluebird.pngbin0 -> 213541 bytes
-rw-r--r--docs/html/design/media/wear/action_button.pngbin0 -> 392879 bytes
-rw-r--r--docs/html/design/media/wear/action_on_card.pngbin0 -> 162848 bytes
-rw-r--r--docs/html/design/media/wear/assets_specifics.pngbin0 -> 151367 bytes
-rw-r--r--docs/html/design/media/wear/bridgednotifications.jpgbin0 -> 41081 bytes
-rw-r--r--docs/html/design/media/wear/circle_message2.png (renamed from docs/html/wear/images/circle_message2.png)bin149124 -> 149124 bytes
-rw-r--r--docs/html/design/media/wear/clear_bold_type.jpgbin0 -> 131380 bytes
-rw-r--r--docs/html/design/media/wear/confirmation.pngbin0 -> 15527 bytes
-rw-r--r--docs/html/design/media/wear/contextualnotification.pngbin0 -> 469997 bytes
-rw-r--r--docs/html/design/media/wear/continue_phone.pngbin0 -> 13556 bytes
-rw-r--r--docs/html/design/media/wear/copywrite.pngbin0 -> 297728 bytes
-rw-r--r--docs/html/design/media/wear/countdown.pngbin0 -> 26478 bytes
-rw-r--r--docs/html/design/media/wear/customlayout.jpgbin0 -> 338160 bytes
-rw-r--r--docs/html/design/media/wear/dismiss_cards.pngbin0 -> 250895 bytes
-rw-r--r--docs/html/design/media/wear/expandable_stacks.pngbin0 -> 24567 bytes
-rw-r--r--docs/html/design/media/wear/fitness.png (renamed from docs/html/wear/images/fitness-24.png)bin89428 -> 89428 bytes
-rw-r--r--docs/html/design/media/wear/low_info_card.pngbin0 -> 51683 bytes
-rw-r--r--docs/html/design/media/wear/peek_card.pngbin0 -> 226522 bytes
-rw-r--r--docs/html/design/media/wear/selection_list.pngbin0 -> 16874 bytes
-rw-r--r--docs/html/design/media/wear/separate_info_cards.jpgbin0 -> 173925 bytes
-rw-r--r--docs/html/design/media/wear/separate_info_cards_1.jpgbin0 -> 19781 bytes
-rw-r--r--docs/html/design/media/wear/separate_info_cards_2.jpgbin0 -> 17137 bytes
-rw-r--r--docs/html/design/media/wear/single_action_controls.jpgbin0 -> 71589 bytes
-rw-r--r--docs/html/design/media/wear/voice_commands.pngbin0 -> 23536 bytes
-rw-r--r--docs/html/design/tv/index.jd36
-rw-r--r--docs/html/design/wear/creative-vision.jd36
-rw-r--r--docs/html/design/wear/index.jd67
-rw-r--r--docs/html/design/wear/patterns.jd150
-rw-r--r--docs/html/design/wear/principles.jd52
-rw-r--r--docs/html/design/wear/structure.jd116
-rw-r--r--docs/html/design/wear/style.jd102
-rw-r--r--docs/html/google/gcm/ccs.jd149
-rw-r--r--docs/html/google/gcm/client.jd3
-rw-r--r--docs/html/google/gcm/gcm.jd2
-rw-r--r--docs/html/google/gcm/index.jd39
-rw-r--r--docs/html/google/gcm/notifications.jd129
-rw-r--r--docs/html/google/gcm/server.jd3
-rw-r--r--docs/html/google/gcs/gcs-signup.jd10
-rw-r--r--docs/html/google/gcs/index.jd30
-rw-r--r--docs/html/google/index.jd10
-rw-r--r--docs/html/google/play-services/index.jd6
-rw-r--r--docs/html/guide/practices/verifying-apps-art.jd2
-rw-r--r--docs/html/images/google/datastore-logo.pngbin0 -> 10705 bytes
-rw-r--r--docs/html/images/google/gcs-small.pngbin0 -> 1500 bytes
-rw-r--r--docs/html/images/google/gcs.pngbin0 -> 95582 bytes
-rw-r--r--docs/html/images/home/auto.pngbin0 -> 9922 bytes
-rw-r--r--docs/html/images/home/tv.pngbin0 -> 3110 bytes
-rw-r--r--docs/html/images/home/wear.pngbin0 -> 3943 bytes
-rw-r--r--docs/html/images/tools/wizard2.pngbin0 -> 128450 bytes
-rw-r--r--docs/html/images/tools/wizard3.pngbin0 -> 147549 bytes
-rw-r--r--docs/html/images/tools/wizard4.pngbin0 -> 230102 bytes
-rw-r--r--docs/html/images/tools/wizard5.pngbin0 -> 171163 bytes
-rw-r--r--docs/html/images/tools/wizard6.pngbin0 -> 78865 bytes
-rw-r--r--docs/html/images/tools/wizard7.pngbin0 -> 737853 bytes
-rw-r--r--docs/html/index.jd61
-rw-r--r--docs/html/jd_extras.js2
-rw-r--r--docs/html/jd_tag_helpers.js2
-rw-r--r--docs/html/preview/api-overview.jd369
-rw-r--r--docs/html/preview/google-play-services-wear.html95
-rw-r--r--docs/html/preview/images/battery_historian.pngbin38133 -> 56657 bytes
-rw-r--r--docs/html/preview/images/battery_historian@2x.pngbin79794 -> 175020 bytes
-rw-r--r--docs/html/preview/images/hun-example.pngbin60694 -> 105429 bytes
-rw-r--r--docs/html/preview/images/hun-example@2x.pngbin184210 -> 316005 bytes
-rw-r--r--docs/html/preview/images/managed_apps_launcher.pngbin164393 -> 861014 bytes
-rw-r--r--docs/html/preview/images/managed_apps_launcher@2x.pngbin653055 -> 3241926 bytes
-rw-r--r--docs/html/preview/images/opt-in.pngbin0 -> 64082 bytes
-rw-r--r--docs/html/preview/index.html10
-rw-r--r--docs/html/preview/material/animations.jd189
-rw-r--r--docs/html/preview/material/compatibility.jd29
-rw-r--r--docs/html/preview/material/get-started.jd53
-rw-r--r--docs/html/preview/material/images/MaterialDark.pngbin179552 -> 88935 bytes
-rw-r--r--docs/html/preview/material/images/MaterialLight.pngbin171367 -> 82081 bytes
-rw-r--r--docs/html/preview/material/images/card_travel.pngbin2373669 -> 414026 bytes
-rw-r--r--docs/html/preview/material/images/list_mail.pngbin1012790 -> 191671 bytes
-rw-r--r--docs/html/preview/material/index.jd45
-rw-r--r--docs/html/preview/material/theme.jd51
-rw-r--r--docs/html/preview/material/ui-widgets.jd67
-rw-r--r--docs/html/preview/material/views-shadows.jd73
-rw-r--r--docs/html/preview/preview_toc.cs6
-rw-r--r--docs/html/preview/samples.jd13
-rw-r--r--docs/html/preview/setup-devices.jd90
-rw-r--r--docs/html/preview/setup-sdk.jd93
-rw-r--r--docs/html/preview/support.jd105
-rw-r--r--docs/html/sdk/installing/create-project.jd86
-rw-r--r--docs/html/sdk/installing/index.jd41
-rw-r--r--docs/html/tools/tools_toc.cs4
-rw-r--r--docs/html/training/app-indexing/index.jd8
-rw-r--r--docs/html/wear/images/hero.jpgbin248879 -> 443273 bytes
-rw-r--r--docs/html/wear/index.jd9
-rw-r--r--packages/DocumentsUI/res/values-el/strings.xml4
-rw-r--r--packages/DocumentsUI/res/values-fi/strings.xml2
-rw-r--r--packages/DocumentsUI/res/values-fr/strings.xml2
-rw-r--r--preloaded-classes1
196 files changed, 2497 insertions, 963 deletions
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 214a6ec3003e..161d2de1028c 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -252,8 +252,8 @@
<string name="permdesc_statusBar" msgid="8434669549504290975">"Permet que l\'aplicació desactivi la barra d\'estat o afegeixi i elimini icones del sistema."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"barra d\'estat"</string>
<string name="permdesc_statusBarService" msgid="716113660795976060">"Permet que l\'aplicació sigui la barra d\'estat."</string>
- <string name="permlab_expandStatusBar" msgid="1148198785937489264">"ampliar/reduir la barra d\'estat"</string>
- <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permet que l\'aplicació ampliï o redueixi la barra d\'estat."</string>
+ <string name="permlab_expandStatusBar" msgid="1148198785937489264">"desplega/contrau la barra d\'estat"</string>
+ <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permet que l\'aplicació desplegui o replegui la barra d\'estat."</string>
<string name="permlab_install_shortcut" msgid="4279070216371564234">"instal·la dreceres"</string>
<string name="permdesc_install_shortcut" msgid="8341295916286736996">"Permet que una aplicació afegeixi dreceres a la pantalla d\'inici sense la intervenció de l\'usuari."</string>
<string name="permlab_uninstall_shortcut" msgid="4729634524044003699">"desinstal·la dreceres"</string>
@@ -907,7 +907,7 @@
<string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"S\'ha iniciat la reorganització del widget."</string>
<string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Ha finalitzat la reorganització del widget."</string>
<string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"S\'ha suprimit el widget de <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Amplia l\'àrea de desbloqueig."</string>
+ <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Desplega l\'àrea de desbloqueig."</string>
<string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Desbloqueig lliscant el dit"</string>
<string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Desbloqueig mitjançant patró"</string>
<string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Desbloqueig facial"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 41e4e5070a75..39bb12b86c37 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -1240,8 +1240,8 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Angiv tidspunkt"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Angiv dato"</string>
<string name="date_time_set" msgid="5777075614321087758">"Angiv"</string>
- <string name="date_time_done" msgid="2507683751759308828">"Udført"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"NYHED! "</font></string>
+ <string name="date_time_done" msgid="2507683751759308828">"Udfør"</string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"NY: "</font></string>
<string name="perms_description_app" msgid="5139836143293299417">"Leveret af <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="no_permissions" msgid="7283357728219338112">"Der kræves ingen tilladelser"</string>
<string name="perm_costs_money" msgid="4902470324142151116">"dette kan koste dig penge"</string>
@@ -1373,7 +1373,7 @@
<item quantity="one" msgid="8167147081136579439">"1 match"</item>
<item quantity="other" msgid="4641872797067609177">"<xliff:g id="INDEX">%d</xliff:g> af <xliff:g id="TOTAL">%d</xliff:g>"</item>
</plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"Udført"</string>
+ <string name="action_mode_done" msgid="7217581640461922289">"Udfør"</string>
<string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"Demonterer USB-lageret..."</string>
<string name="progress_unmounting" product="default" msgid="1327894998409537190">"Demonterer SD-kortet..."</string>
<string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"Sletter USB-lageret..."</string>
@@ -1424,7 +1424,7 @@
<string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
<string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Annuller"</string>
<string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Slet"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Udført"</string>
+ <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Udfør"</string>
<string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Ændring af tilstand"</string>
<string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
<string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Angiv"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 3801c742cf7f..c231c3b4b268 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1430,8 +1430,8 @@
<string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string>
<string name="activitychooserview_choose_application" msgid="2125168057199941199">"Επιλέξτε κάποια εφαρμογή"</string>
<string name="activitychooserview_choose_application_error" msgid="8624618365481126668">"Δεν ήταν δυνατή η εκκίνηση του <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
- <string name="shareactionprovider_share_with" msgid="806688056141131819">"Κοινοποίηση με"</string>
- <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Κοινοποίηση με <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+ <string name="shareactionprovider_share_with" msgid="806688056141131819">"Κοινή χρήση με"</string>
+ <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Κοινή χρήση με <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Στοιχείο χειρισμού με δυνατότητα ολίσθησης. Αγγίξτε και πατήστε παρατεταμένα."</string>
<string name="description_direction_up" msgid="7169032478259485180">"Κύλιση προς τα επάνω για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_direction_down" msgid="5087739728639014595">"Κύλιση προς τα κάτω για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
@@ -1484,7 +1484,7 @@
<string name="sha1_fingerprint" msgid="7930330235269404581">"Αποτύπωμα SHA-1"</string>
<string name="activity_chooser_view_see_all" msgid="4292569383976636200">"Εμφάνιση όλων"</string>
<string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"Επιλογή δραστηριότητας"</string>
- <string name="share_action_provider_share_with" msgid="5247684435979149216">"Κοινοποίηση με"</string>
+ <string name="share_action_provider_share_with" msgid="5247684435979149216">"Κοινή χρήση με"</string>
<string name="list_delimeter" msgid="3975117572185494152">", "</string>
<string name="sending" msgid="3245653681008218030">"Γίνεται αποστολή…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Εκκίνηση προγράμματος περιήγησης;"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 8bf9ee5f2f1d..3031065fd3f7 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -281,7 +281,7 @@
<string name="permlab_receiveWapPush" msgid="5991398711936590410">"recevoir des messages texte (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="748232190220583385">"Permet à l\'application de recevoir et de traiter les messages WAP. Cette autorisation lui donne la possibilité de surveiller ou supprimer les messages envoyés à votre appareil sans vous les montrer."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"récupérer les applications en cours d\'exécution"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"Permet à l\'application de récupérer des informations sur des tâches en cours d\'exécution et récemment exécutées. L\'application est ainsi susceptible de d\'obtenir des informations sur les applications utilisées sur l\'appareil."</string>
+ <string name="permdesc_getTasks" msgid="7454215995847658102">"Permet à l\'application de récupérer des informations sur des tâches en cours d\'exécution et récemment exécutées. L\'application est ainsi susceptible d\'obtenir des informations sur les applications utilisées sur l\'appareil."</string>
<string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interagir entre les utilisateurs"</string>
<string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Permet à l\'application d\'effectuer des actions entre les différents utilisateurs de l\'appareil. Les applications malveillantes peuvent utiliser cette autorisation pour passer outre la protection entre les utilisateurs."</string>
<string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"autorisation totale d\'interagir entre les utilisateurs"</string>
@@ -482,7 +482,7 @@
<string name="permlab_installLocationProvider" msgid="6578101199825193873">"autoriser l\'installation d\'un fournisseur de services de localisation"</string>
<string name="permdesc_installLocationProvider" msgid="9066146120470591509">"Permet de créer des sources de localisation fictives à des fins de tests ou pour installer un nouveau fournisseur de position. L\'application peut ainsi modifier la position et/ou l\'état renvoyé par d\'autres sources de localisation telles que le GPS ou les fournisseurs de position."</string>
<string name="permlab_accessFineLocation" msgid="1191898061965273372">"position précise (GPS et réseau)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Permet à l\'application d\'obtenir votre position exacte à l\'aide du récepteur satellite GPS ou des sources de localisation de réseau tels que les points d\'accès Wi-Fi et les antennes-relais. Ces services de localisation doivent être activés et disponibles sur votre appareil pour que l\'application puissent déterminer où vous vous trouvez, le cas échéant. Cette autorisation peut entraîner une utilisation accrue de la batterie."</string>
+ <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Permet à l\'application d\'obtenir votre position exacte à l\'aide du récepteur satellite GPS ou des sources de localisation de réseau tels que les points d\'accès Wi-Fi et les antennes-relais. Ces services de localisation doivent être activés et disponibles sur votre appareil pour que l\'application puisse déterminer où vous vous trouvez, le cas échéant. Cette autorisation peut entraîner une utilisation accrue de la batterie."</string>
<string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"position approximative (réseau)"</string>
<string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Permet à l\'application d\'obtenir votre position approximative. Celle-ci est fournie par des services de localisation sur la base des sources de localisation de réseau tels que les points d\'accès Wi-Fi et les antennes-relais. Ces services de localisation doivent être activés et disponibles sur votre appareil pour que l\'application puisse déterminer où vous vous trouvez de façon approximative, le cas échéant."</string>
<string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"Accès à SurfaceFlinger"</string>
@@ -1137,7 +1137,7 @@
<string name="chooseUsbActivity" msgid="6894748416073583509">"Sélectionnez une application pour le périphérique de stockage USB"</string>
<string name="noApplications" msgid="2991814273936504689">"Aucune application ne peut effectuer cette action."</string>
<string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"L\'application \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" s\'est arrêtée."</string>
+ <string name="aerr_application" msgid="932628488013092776">"\"<xliff:g id="APPLICATION">%1$s</xliff:g>\" s\'est arrêté."</string>
<string name="aerr_process" msgid="4507058997035697579">"Le processus <xliff:g id="PROCESS">%1$s</xliff:g> s\'est interrompu."</string>
<string name="anr_title" msgid="4351948481459135709"></string>
<string name="anr_activity_application" msgid="1904477189057199066">"L\'application <xliff:g id="APPLICATION">%2$s</xliff:g> ne répond pas.\n\nVoulez-vous quitter ?"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 71872e1e495f..a597d3da0ccc 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -318,7 +318,7 @@
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"מאפשר לאפליקציה לאחזר את התוכן של החלון הפעיל. אפליקציות זדוניות עלולות לאחזר את תוכן החלון כולו ולבחון את כל הטקסט שבו, מלבד סיסמאות."</string>
<string name="permlab_temporary_enable_accessibility" msgid="2312612135127310254">"הפעלת נגישות זמנית"</string>
<string name="permdesc_temporary_enable_accessibility" msgid="8079456293182975464">"מאפשר לאפליקציה להפעיל באופן זמני נגישות במכשיר. אפליקציות זדוניות עלולות לאפשר נגישות ללא הסכמת משתמש."</string>
- <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"אחזר מידע חלון"</string>
+ <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"אחזר נתוני חלון"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"מאפשר לאפליקציה לאחזר מידע לגבי החלונות ממנהל החלונות. אפליקציות זדוניות עשויות לאחזר מידע המיועד לשימוש מערכת פנימי."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"סנן אירועים"</string>
<string name="permdesc_filter_events" msgid="8006236315888347680">"‏מאפשר לאפליקציה לרשום מסנן קלט שמסנן את הזרם של כל אירועי המשתמש לפני שהם נשלחים. אפליקציה זדונית עשויה לשלוט ב-UI של המערכת ללא התערבות משתמש."</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 60881c36ebc7..53b6adf5dc5e 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -165,7 +165,7 @@
<string name="global_action_lock" msgid="2844945191792119712">"Блокировка экрана"</string>
<string name="global_action_power_off" msgid="4471879440839879722">"Отключить питание"</string>
<string name="global_action_bug_report" msgid="7934010578922304799">"Отчет об ошибке"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"Создание отчета об ошибке"</string>
+ <string name="bugreport_title" msgid="2667494803742548533">"Отчет об ошибке"</string>
<string name="bugreport_message" msgid="398447048750350456">"Информация о текущем состоянии вашего устройства будет собрана и отправлена по электронной почте. Подготовка отчета займет некоторое время."</string>
<string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"Режим без звука"</string>
<string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"Выключить"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 095464e9647c..7fa16a6967d2 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -581,7 +581,7 @@
<string name="permlab_setWallpaperHints" msgid="3278608165977736538">"прилагођавање величине позадине"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Дозвољава апликацији да подеси савете за системску величину позадине."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"поновно постављање фабричких подразумеваних подешавања"</string>
- <string name="permdesc_masterClear" msgid="3665380492633910226">"Дозвољава апликацији да поново постави комплетна фабричка подешавања система и тиме избрише све податке, конфигурацију и инсталиране апликације."</string>
+ <string name="permdesc_masterClear" msgid="3665380492633910226">"Дозвољава апликацији да ресетује систем на фабричка подешавања и тиме избрише све податке, конфигурацију и инсталиране апликације."</string>
<string name="permlab_setTime" msgid="2021614829591775646">"подешавање времена"</string>
<string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"Дозвољава апликацији да промени време на сату таблета."</string>
<string name="permdesc_setTime" product="default" msgid="1855702730738020">"Дозвољава апликацији да промени време на сату телефона."</string>
@@ -698,8 +698,8 @@
<string name="policylab_forceLock" msgid="2274085384704248431">"Закључавање екрана"</string>
<string name="policydesc_forceLock" msgid="1141797588403827138">"Контролишите начин и време закључавања екрана."</string>
<string name="policylab_wipeData" msgid="3910545446758639713">"Брисање свих података"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"Брисање података на таблету без упозорења враћањем фабричких података."</string>
- <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"Избришите податке на телефону без упозорења враћањем фабричких података."</string>
+ <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"Брисање података на таблету без упозорења ресетовањем на фабричка подешавања."</string>
+ <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"Избришите податке на телефону без упозорења ресетовањем на фабричка подешавања."</string>
<string name="policylab_setGlobalProxy" msgid="2784828293747791446">"Подесите глобални прокси сервер уређаја"</string>
<string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"Подесите глобални прокси сервер уређаја који ће се користити док су омогућене смернице. Само први администратор уређаја поставља ефективни глобални прокси сервер."</string>
<string name="policylab_expirePassword" msgid="885279151847254056">"Подешавање истека лозинке екрана"</string>
@@ -872,8 +872,8 @@
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"<xliff:g id="NUMBER_0">%d</xliff:g> пута сте погрешно унели PIN. \n\nПокушајте поново за <xliff:g id="NUMBER_1">%d</xliff:g> секунде(и)."</string>
<string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"<xliff:g id="NUMBER_0">%d</xliff:g> пута сте нетачно унели шаблон за откључавање. Након још <xliff:g id="NUMBER_1">%d</xliff:g> несупешна(их) покушаја, од вас ће бити затражено да откључате таблет помоћу података за пријављивање на Google.\n\n Покушајте поново за <xliff:g id="NUMBER_2">%d</xliff:g> секунде(и)."</string>
<string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"<xliff:g id="NUMBER_0">%d</xliff:g> пута сте нетачно унели шаблон за откључавање. Након још <xliff:g id="NUMBER_1">%d</xliff:g> несупешна(их) покушаја, од вас ће бити затражено да откључате телефон помоћу података за пријављивање на Google.\n\n Покушајте поново за <xliff:g id="NUMBER_2">%d</xliff:g> секунде(и)."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"Неправилно сте покушали да откључате таблет <xliff:g id="NUMBER_0">%d</xliff:g> пута. Након још неуспешних покушаја (<xliff:g id="NUMBER_1">%d</xliff:g>) таблет ће бити враћен на подразумевана фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"Неисправно сте покушали да откључате телефон <xliff:g id="NUMBER_0">%d</xliff:g> пута. Након још неуспешних покушаја (<xliff:g id="NUMBER_1">%d</xliff:g>) телефон ће бити враћен на подразумевана фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"Неправилно сте покушали да откључате таблет <xliff:g id="NUMBER_0">%d</xliff:g> пута. Након још неуспешних покушаја (<xliff:g id="NUMBER_1">%d</xliff:g>) таблет ће бити ресетован на фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"Неисправно сте покушали да откључате телефон <xliff:g id="NUMBER_0">%d</xliff:g> пута. Након још неуспешних покушаја (<xliff:g id="NUMBER_1">%d</xliff:g>) телефон ће бити ресетован на фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string>
<string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"Неисправно сте покушали да откључате таблет <xliff:g id="NUMBER">%d</xliff:g> пута. Таблет ће сада бити враћен на подразумевана фабричка подешавања."</string>
<string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"Неисправно сте покушали да откључате телефон <xliff:g id="NUMBER">%d</xliff:g> пута. Телефон ће сада бити враћен на подразумевана фабричка подешавања."</string>
<string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"Покушајте поново за <xliff:g id="NUMBER">%d</xliff:g> секунде(и)."</string>
@@ -1550,8 +1550,8 @@
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Унели сте PIN неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. \n\nПокушајте поново за <xliff:g id="NUMBER_1">%d</xliff:g> секунде(и)."</string>
<string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Унели сте лозинку неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. \n\nПокушајте поново за <xliff:g id="NUMBER_1">%d</xliff:g> секунде(и)."</string>
<string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Нацртали сте шаблон за откључавање неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. \n\nПокушајте поново за <xliff:g id="NUMBER_1">%d</xliff:g> секунде(и)."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Покушали сте да откључате таблет неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. Након још <xliff:g id="NUMBER_1">%d</xliff:g> неуспешна(их) покушаја таблет ће бити враћен на подразумевана фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Покушали сте да откључате телефон неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. После још <xliff:g id="NUMBER_1">%d</xliff:g> неуспешна(их) покушаја телефон ће бити враћен на подразумевана фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Покушали сте да откључате таблет неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. Након још <xliff:g id="NUMBER_1">%d</xliff:g> неуспешна(их) покушаја таблет ће бити ресетован на фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Покушали сте да откључате телефон неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. После још <xliff:g id="NUMBER_1">%d</xliff:g> неуспешна(их) покушаја телефон ће бити ресетован на фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string>
<string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Покушали сте да откључате таблет неисправно <xliff:g id="NUMBER">%d</xliff:g> пута. Таблет ће сада бити враћен на подразумевана фабричка подешавања."</string>
<string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Покушали сте да откључате телефон неисправно <xliff:g id="NUMBER">%d</xliff:g> пута. Телефон ће сада бити враћен на подразумевана фабричка подешавања."</string>
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Нацртали сте шаблон за откључавање неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. После још <xliff:g id="NUMBER_1">%d</xliff:g> неуспешна(их) покушаја, од вас ће бити затражено да откључате таблет помоћу налога е-поште.\n\nПокушајте поново за <xliff:g id="NUMBER_2">%d</xliff:g> секунде(и)."</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 2a178e95ad83..78570e40f242 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -176,7 +176,7 @@
<string name="global_action_settings" msgid="1756531602592545966">"การตั้งค่า"</string>
<string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"999+"</string>
<string name="safeMode" msgid="2788228061547930246">"โหมดปลอดภัย"</string>
- <string name="android_system_label" msgid="6577375335728551336">"ระบบ Android"</string>
+ <string name="android_system_label" msgid="6577375335728551336">"ระบบแอนดรอยด์"</string>
<string name="permgrouplab_costMoney" msgid="5429808217861460401">"บริการที่ต้องเสียค่าใช้จ่าย"</string>
<string name="permgroupdesc_costMoney" msgid="3293301903409869495">"ทำสิ่งที่คุณต้องเสียค่าใช้จ่าย"</string>
<string name="permgrouplab_messages" msgid="7521249148445456662">"ข้อความของคุณ"</string>
@@ -405,7 +405,7 @@
<string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"อนุญาตให้แอปพลิเคชันทำให้ส่วนหนึ่งของตัวเองคงอยู่ถาวรในหน่วยความจำ ซึ่งจะจำกัดพื้นที่หน่วยความจำที่ใช้งานได้ของแอปพลิเคชันอื่นๆ และทำให้แท็บเล็ตทำงานช้าลง"</string>
<string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"อนุญาตให้แอปพลิเคชันทำให้ส่วนหนึ่งของตัวเองคงอยู่ถาวรในหน่วยความจำ ซึ่งจะจำกัดพื้นที่หน่วยความจำที่ใช้งานได้ของแอปพลิเคชันอื่นๆ และทำให้โทรศัพท์ทำงานช้าลง"</string>
<string name="permlab_deletePackages" msgid="184385129537705938">"ลบแอปพลิเคชัน"</string>
- <string name="permdesc_deletePackages" msgid="7411480275167205081">"อนุญาตให้แอปพลิเคชันลบแพ็กเกจ Android แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้ลบแอปพลิเคชันที่สำคัญ"</string>
+ <string name="permdesc_deletePackages" msgid="7411480275167205081">"อนุญาตให้แอปพลิเคชันลบแพ็กเกจแอนดรอยด์แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้ลบแอปพลิเคชันที่สำคัญ"</string>
<string name="permlab_clearAppUserData" msgid="274109191845842756">"ลบข้อมูลของแอปพลิเคชันอื่น"</string>
<string name="permdesc_clearAppUserData" msgid="4625323684125459488">"อนุญาตให้แอปพลิเคชันล้างข้อมูลผู้ใช้"</string>
<string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"ลบแคชของแอปพลิเคชันอื่น"</string>
@@ -413,7 +413,7 @@
<string name="permlab_getPackageSize" msgid="7472921768357981986">"วัดพื้นที่เก็บข้อมูลของแอปพลิเคชัน"</string>
<string name="permdesc_getPackageSize" msgid="3921068154420738296">"อนุญาตให้แอปพลิเคชันเรียกดูรหัส ข้อมูล และขนาดแคชของตน"</string>
<string name="permlab_installPackages" msgid="2199128482820306924">"ติดตั้งแอปพลิเคชันโดยตรง"</string>
- <string name="permdesc_installPackages" msgid="5628530972548071284">"อนุญาตให้แอปพลิเคชันติดตั้งแพ็กเกจ Android ใหม่หรือที่อัปเดต แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้ในการเพิ่มแอปพลิเคชันใหม่ๆ ด้วยสิทธิ์ที่สูงนี้ได้ตามต้องการ"</string>
+ <string name="permdesc_installPackages" msgid="5628530972548071284">"อนุญาตให้แอปพลิเคชันติดตั้งแพ็กเกจแอนดรอยด์ใหม่หรือที่อัปเดต แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้ในการเพิ่มแอปพลิเคชันใหม่ๆ ด้วยสิทธิ์ที่สูงนี้ได้ตามต้องการ"</string>
<string name="permlab_clearAppCache" msgid="7487279391723526815">"ลบข้อมูลแคชของแอปพลิเคชันทั้งหมด"</string>
<string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"อนุญาตให้แอปพลิเคชันสร้างพื้นที่ว่างในที่จัดเก็บข้อมูลของแท็บเล็ต โดยลบไฟล์ในไดเรกทอรีแคชของแอปพลิเคชันอื่นๆ ซึ่งอาจทำให้แอปพลิเคชันอื่นเริ่มทำงานช้ากว่าเดิมเนื่องจากต้องดึงข้อมูลของตนซ้ำ"</string>
<string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"อนุญาตให้แอปพลิเคชันสร้างพื้นที่ว่างในที่จัดเก็บข้อมูลของโทรศัพท์ โดยลบไฟล์ในไดเรกทอรีแคชของแอปพลิเคชันอื่นๆ ซึ่งอาจทำให้แอปพลิเคชันอื่นเริ่มทำงานช้ากว่าเดิมเนื่องจากต้องดึงข้อมูลของตนซ้ำ"</string>
@@ -1156,7 +1156,7 @@
<string name="screen_compat_mode_hint" msgid="1064524084543304459">"เปิดใช้งานอีกครั้งในการตั้งค่าระบบ &gt; แอปพลิเคชัน &gt; ดาวน์โหลด"</string>
<string name="smv_application" msgid="3307209192155442829">"แอปพลิเคชัน <xliff:g id="APPLICATION">%1$s</xliff:g> (กระบวนการ <xliff:g id="PROCESS">%2$s</xliff:g>) ละเมิดนโยบาย StrictMode ที่บังคับใช้ด้วยตัวเอง"</string>
<string name="smv_process" msgid="5120397012047462446">"กระบวนการ <xliff:g id="PROCESS">%1$s</xliff:g> ละเมิดนโยบาย StrictMode ที่บังคับใช้ด้วยตัวเอง"</string>
- <string name="android_upgrading_title" msgid="1584192285441405746">"กำลังอัปเกรด Android..."</string>
+ <string name="android_upgrading_title" msgid="1584192285441405746">"กำลังอัปเกรดแอนดรอยด์..."</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_upgrading_starting_apps" msgid="451464516346926713">"กำลังเริ่มต้นแอปพลิเคชัน"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"เสร็จสิ้นการบูต"</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 0f18844fa028..07e9bbcbac80 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -424,8 +424,8 @@
<string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"允许应用从系统的各个日志文件中读取信息。这样,应用就可以发现关于您手机使用情况的一般信息,其中可能包含个人信息或隐私信息。"</string>
<string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"使用任何媒体解码器进行播放"</string>
<string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"允许该应用使用任何已安装的媒体解码器进行解码,以便播放媒体。"</string>
- <string name="permlab_manageCaCertificates" msgid="1678391896786882014">"管理受信任的凭据"</string>
- <string name="permdesc_manageCaCertificates" msgid="4015644047196937014">"允许应用安装和卸载 CA 证书(作为受信任的凭据)。"</string>
+ <string name="permlab_manageCaCertificates" msgid="1678391896786882014">"管理信任的凭据"</string>
+ <string name="permdesc_manageCaCertificates" msgid="4015644047196937014">"允许应用安装和卸载CA证书(作为信任的凭据)。"</string>
<string name="permlab_diagnostic" msgid="8076743953908000342">"读取/写入诊断所拥有的资源"</string>
<string name="permdesc_diagnostic" msgid="6608295692002452283">"允许应用读取/写入诊断组拥有的所有资源(例如 /dev 中的文件)。这可能会影响系统的稳定性和安全性。此权限仅供制造商或运营商诊断硬件方面的问题时使用。"</string>
<string name="permlab_changeComponentState" msgid="6335576775711095931">"启用或停用应用组件"</string>
@@ -734,7 +734,7 @@
</string-array>
<string-array name="imAddressTypes">
<item msgid="1738585194601476694">"住宅"</item>
- <item msgid="1359644565647383708">"单位"</item>
+ <item msgid="1359644565647383708">"工作"</item>
<item msgid="7868549401053615677">"其他"</item>
<item msgid="3145118944639869809">"自定义"</item>
</string-array>
@@ -789,7 +789,7 @@
<string name="postalTypeOther" msgid="2726111966623584341">"其他"</string>
<string name="imTypeCustom" msgid="2074028755527826046">"自定义"</string>
<string name="imTypeHome" msgid="6241181032954263892">"住宅"</string>
- <string name="imTypeWork" msgid="1371489290242433090">"单位"</string>
+ <string name="imTypeWork" msgid="1371489290242433090">"工作"</string>
<string name="imTypeOther" msgid="5377007495735915478">"其他"</string>
<string name="imProtocolCustom" msgid="6919453836618749992">"自定义"</string>
<string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
diff --git a/docs/html/auto/images/assets/00_frame.png b/docs/html/auto/images/assets/00_frame.png
new file mode 100644
index 000000000000..2a7838082192
--- /dev/null
+++ b/docs/html/auto/images/assets/00_frame.png
Binary files differ
diff --git a/docs/html/auto/images/assets/01_a_maps.png b/docs/html/auto/images/assets/01_a_maps.png
new file mode 100644
index 000000000000..0d1b219f971a
--- /dev/null
+++ b/docs/html/auto/images/assets/01_a_maps.png
Binary files differ
diff --git a/docs/html/auto/images/assets/01_b_now.png b/docs/html/auto/images/assets/01_b_now.png
new file mode 100644
index 000000000000..043ec748ccff
--- /dev/null
+++ b/docs/html/auto/images/assets/01_b_now.png
Binary files differ
diff --git a/docs/html/auto/images/assets/02_a_notif.gif b/docs/html/auto/images/assets/02_a_notif.gif
new file mode 100644
index 000000000000..ea1a7ccd5cb8
--- /dev/null
+++ b/docs/html/auto/images/assets/02_a_notif.gif
Binary files differ
diff --git a/docs/html/auto/images/assets/02_b_switcher.gif b/docs/html/auto/images/assets/02_b_switcher.gif
new file mode 100644
index 000000000000..c4014e39f340
--- /dev/null
+++ b/docs/html/auto/images/assets/02_b_switcher.gif
Binary files differ
diff --git a/docs/html/auto/images/assets/03_a_musict.png b/docs/html/auto/images/assets/03_a_musict.png
new file mode 100644
index 000000000000..4e112434962d
--- /dev/null
+++ b/docs/html/auto/images/assets/03_a_musict.png
Binary files differ
diff --git a/docs/html/auto/images/assets/03_b_voice.gif b/docs/html/auto/images/assets/03_b_voice.gif
new file mode 100644
index 000000000000..b280a9b026ed
--- /dev/null
+++ b/docs/html/auto/images/assets/03_b_voice.gif
Binary files differ
diff --git a/docs/html/auto/images/assets/do_01_switcher.png b/docs/html/auto/images/assets/do_01_switcher.png
new file mode 100644
index 000000000000..b654a13afdad
--- /dev/null
+++ b/docs/html/auto/images/assets/do_01_switcher.png
Binary files differ
diff --git a/docs/html/auto/images/assets/do_02_music.png b/docs/html/auto/images/assets/do_02_music.png
new file mode 100644
index 000000000000..59fc8df3e6ac
--- /dev/null
+++ b/docs/html/auto/images/assets/do_02_music.png
Binary files differ
diff --git a/docs/html/auto/images/assets/do_02_music_night.png b/docs/html/auto/images/assets/do_02_music_night.png
new file mode 100644
index 000000000000..7faccfb1bb18
--- /dev/null
+++ b/docs/html/auto/images/assets/do_02_music_night.png
Binary files differ
diff --git a/docs/html/auto/images/assets/do_03_more.png b/docs/html/auto/images/assets/do_03_more.png
new file mode 100644
index 000000000000..17040d1d5919
--- /dev/null
+++ b/docs/html/auto/images/assets/do_03_more.png
Binary files differ
diff --git a/docs/html/auto/images/assets/do_04_mdrawer.png b/docs/html/auto/images/assets/do_04_mdrawer.png
new file mode 100644
index 000000000000..de94c22afd6b
--- /dev/null
+++ b/docs/html/auto/images/assets/do_04_mdrawer.png
Binary files differ
diff --git a/docs/html/auto/images/assets/do_05_template.png b/docs/html/auto/images/assets/do_05_template.png
new file mode 100644
index 000000000000..63a07d8b08eb
--- /dev/null
+++ b/docs/html/auto/images/assets/do_05_template.png
Binary files differ
diff --git a/docs/html/auto/images/assets/do_05_template_night.png b/docs/html/auto/images/assets/do_05_template_night.png
new file mode 100644
index 000000000000..6acd259ee774
--- /dev/null
+++ b/docs/html/auto/images/assets/do_05_template_night.png
Binary files differ
diff --git a/docs/html/auto/images/assets/do_06_gdrawer.png b/docs/html/auto/images/assets/do_06_gdrawer.png
new file mode 100644
index 000000000000..b02c0e665df2
--- /dev/null
+++ b/docs/html/auto/images/assets/do_06_gdrawer.png
Binary files differ
diff --git a/docs/html/auto/images/assets/do_07_notif.png b/docs/html/auto/images/assets/do_07_notif.png
new file mode 100644
index 000000000000..50ea5653d040
--- /dev/null
+++ b/docs/html/auto/images/assets/do_07_notif.png
Binary files differ
diff --git a/docs/html/auto/images/carlogos.png b/docs/html/auto/images/carlogos.png
deleted file mode 100644
index 3522aa3b3500..000000000000
--- a/docs/html/auto/images/carlogos.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/auto/images/figure02.png b/docs/html/auto/images/figure02.png
deleted file mode 100644
index 1b87224a4075..000000000000
--- a/docs/html/auto/images/figure02.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/auto/images/figure03.png b/docs/html/auto/images/figure03.png
deleted file mode 100644
index 0c4e20da0315..000000000000
--- a/docs/html/auto/images/figure03.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/auto/images/figure04.png b/docs/html/auto/images/figure04.png
deleted file mode 100644
index 3e9c8947ffa9..000000000000
--- a/docs/html/auto/images/figure04.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/auto/images/figure05.png b/docs/html/auto/images/figure05.png
deleted file mode 100644
index 9c1d9b8ae6cd..000000000000
--- a/docs/html/auto/images/figure05.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/auto/images/figure06.png b/docs/html/auto/images/figure06.png
deleted file mode 100644
index 8140f0c8163e..000000000000
--- a/docs/html/auto/images/figure06.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/auto/images/figure07.png b/docs/html/auto/images/figure07.png
deleted file mode 100644
index 82c1c76f20d7..000000000000
--- a/docs/html/auto/images/figure07.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/auto/images/figure08.png b/docs/html/auto/images/figure08.png
deleted file mode 100644
index f11e3a8b5c25..000000000000
--- a/docs/html/auto/images/figure08.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/auto/images/hero.jpg b/docs/html/auto/images/hero.jpg
index 3f9114f546f7..34b5b5dd2726 100644
--- a/docs/html/auto/images/hero.jpg
+++ b/docs/html/auto/images/hero.jpg
Binary files differ
diff --git a/docs/html/auto/images/logos/apps/iheartradio.png b/docs/html/auto/images/logos/apps/iheartradio.png
new file mode 100644
index 000000000000..8feb38dc3835
--- /dev/null
+++ b/docs/html/auto/images/logos/apps/iheartradio.png
Binary files differ
diff --git a/docs/html/auto/images/logos/apps/joyride.png b/docs/html/auto/images/logos/apps/joyride.png
new file mode 100644
index 000000000000..8c2897eeb732
--- /dev/null
+++ b/docs/html/auto/images/logos/apps/joyride.png
Binary files differ
diff --git a/docs/html/auto/images/logos/apps/mlb.png b/docs/html/auto/images/logos/apps/mlb.png
new file mode 100644
index 000000000000..ddde4cd1c87c
--- /dev/null
+++ b/docs/html/auto/images/logos/apps/mlb.png
Binary files differ
diff --git a/docs/html/auto/images/logos/apps/pandora.png b/docs/html/auto/images/logos/apps/pandora.png
new file mode 100644
index 000000000000..13fa1d3428a4
--- /dev/null
+++ b/docs/html/auto/images/logos/apps/pandora.png
Binary files differ
diff --git a/docs/html/auto/images/logos/apps/pocketcasts.png b/docs/html/auto/images/logos/apps/pocketcasts.png
new file mode 100644
index 000000000000..522793754477
--- /dev/null
+++ b/docs/html/auto/images/logos/apps/pocketcasts.png
Binary files differ
diff --git a/docs/html/auto/images/logos/apps/songza.png b/docs/html/auto/images/logos/apps/songza.png
new file mode 100644
index 000000000000..3bd71074499d
--- /dev/null
+++ b/docs/html/auto/images/logos/apps/songza.png
Binary files differ
diff --git a/docs/html/auto/images/logos/apps/spotify.png b/docs/html/auto/images/logos/apps/spotify.png
new file mode 100644
index 000000000000..d039fd3ff9dc
--- /dev/null
+++ b/docs/html/auto/images/logos/apps/spotify.png
Binary files differ
diff --git a/docs/html/auto/images/logos/apps/stitcher.png b/docs/html/auto/images/logos/apps/stitcher.png
new file mode 100644
index 000000000000..b77da12d0aee
--- /dev/null
+++ b/docs/html/auto/images/logos/apps/stitcher.png
Binary files differ
diff --git a/docs/html/auto/images/logos/apps/tunein.png b/docs/html/auto/images/logos/apps/tunein.png
new file mode 100644
index 000000000000..137ba8163d56
--- /dev/null
+++ b/docs/html/auto/images/logos/apps/tunein.png
Binary files differ
diff --git a/docs/html/auto/images/logos/apps/umano.png b/docs/html/auto/images/logos/apps/umano.png
new file mode 100644
index 000000000000..7b59f957fb0b
--- /dev/null
+++ b/docs/html/auto/images/logos/apps/umano.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/abarth.png b/docs/html/auto/images/logos/auto/abarth.png
new file mode 100644
index 000000000000..fd1d22800eb3
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/abarth.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/acura.png b/docs/html/auto/images/logos/auto/acura.png
new file mode 100644
index 000000000000..4ba69cc737d2
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/acura.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/alpharomeo.png b/docs/html/auto/images/logos/auto/alpharomeo.png
new file mode 100644
index 000000000000..51c8c58a086b
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/alpharomeo.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/audi.png b/docs/html/auto/images/logos/auto/audi.png
new file mode 100644
index 000000000000..86cb06ba673d
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/audi.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/bentley.png b/docs/html/auto/images/logos/auto/bentley.png
new file mode 100644
index 000000000000..ed8cf47f550b
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/bentley.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/chevrolet.png b/docs/html/auto/images/logos/auto/chevrolet.png
new file mode 100644
index 000000000000..e0980b0ba80d
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/chevrolet.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/chrysler.png b/docs/html/auto/images/logos/auto/chrysler.png
new file mode 100644
index 000000000000..c670c19a022d
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/chrysler.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/datsun.png b/docs/html/auto/images/logos/auto/datsun.png
new file mode 100644
index 000000000000..059ffd82c263
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/datsun.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/dodge.png b/docs/html/auto/images/logos/auto/dodge.png
new file mode 100644
index 000000000000..4d6fcc00b55f
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/dodge.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/fiat.png b/docs/html/auto/images/logos/auto/fiat.png
new file mode 100644
index 000000000000..b9783d9312a0
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/fiat.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/ford.png b/docs/html/auto/images/logos/auto/ford.png
new file mode 100644
index 000000000000..86a2670a0e69
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/ford.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/honda.png b/docs/html/auto/images/logos/auto/honda.png
new file mode 100644
index 000000000000..62ee38fa1465
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/honda.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/hyundai.png b/docs/html/auto/images/logos/auto/hyundai.png
new file mode 100644
index 000000000000..474464114522
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/hyundai.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/infinity.png b/docs/html/auto/images/logos/auto/infinity.png
new file mode 100644
index 000000000000..a20e0a00921c
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/infinity.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/jeep.png b/docs/html/auto/images/logos/auto/jeep.png
new file mode 100644
index 000000000000..024c3d178108
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/jeep.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/kia.png b/docs/html/auto/images/logos/auto/kia.png
new file mode 100644
index 000000000000..f8046d9bc2bf
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/kia.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/maserati.png b/docs/html/auto/images/logos/auto/maserati.png
new file mode 100644
index 000000000000..22bcf6a90e3e
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/maserati.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/mazda.png b/docs/html/auto/images/logos/auto/mazda.png
new file mode 100644
index 000000000000..2281c90fb6d8
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/mazda.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/mercedesbenz.png b/docs/html/auto/images/logos/auto/mercedesbenz.png
new file mode 100644
index 000000000000..05fab0f660e8
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/mercedesbenz.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/mitsubishi.png b/docs/html/auto/images/logos/auto/mitsubishi.png
new file mode 100644
index 000000000000..1405b1943adc
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/mitsubishi.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/nissan.png b/docs/html/auto/images/logos/auto/nissan.png
new file mode 100644
index 000000000000..63bc4f78d35c
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/nissan.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/opel.png b/docs/html/auto/images/logos/auto/opel.png
new file mode 100644
index 000000000000..7e25ed574ecb
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/opel.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/ram.png b/docs/html/auto/images/logos/auto/ram.png
new file mode 100644
index 000000000000..97025875fba4
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/ram.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/renault.png b/docs/html/auto/images/logos/auto/renault.png
new file mode 100644
index 000000000000..65a4ae3776c3
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/renault.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/seat.png b/docs/html/auto/images/logos/auto/seat.png
new file mode 100644
index 000000000000..9802ccf8b6b2
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/seat.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/skoda.png b/docs/html/auto/images/logos/auto/skoda.png
new file mode 100755
index 000000000000..7bc06b06fc4c
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/skoda.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/subaru.png b/docs/html/auto/images/logos/auto/subaru.png
new file mode 100644
index 000000000000..7407e610dcd3
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/subaru.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/suzuki.png b/docs/html/auto/images/logos/auto/suzuki.png
new file mode 100644
index 000000000000..85fd7e508719
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/suzuki.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/volkswagen.png b/docs/html/auto/images/logos/auto/volkswagen.png
new file mode 100644
index 000000000000..febadf4e64d4
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/volkswagen.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/volvo.png b/docs/html/auto/images/logos/auto/volvo.png
new file mode 100644
index 000000000000..683af2644ef8
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/volvo.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/alpine.png b/docs/html/auto/images/logos/hard/alpine.png
new file mode 100644
index 000000000000..55f0e8a34c80
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/alpine.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/clarion.png b/docs/html/auto/images/logos/hard/clarion.png
new file mode 100644
index 000000000000..2288b99c43a6
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/clarion.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/cloudcar.png b/docs/html/auto/images/logos/hard/cloudcar.png
new file mode 100644
index 000000000000..9e7e8b77c6d2
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/cloudcar.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/delphi.png b/docs/html/auto/images/logos/hard/delphi.png
new file mode 100644
index 000000000000..a2a03de1591d
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/delphi.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/freescale.png b/docs/html/auto/images/logos/hard/freescale.png
new file mode 100644
index 000000000000..2909944e0c65
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/freescale.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/fujitsuten.png b/docs/html/auto/images/logos/hard/fujitsuten.png
new file mode 100644
index 000000000000..70269e38810d
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/fujitsuten.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/harman.png b/docs/html/auto/images/logos/hard/harman.png
new file mode 100644
index 000000000000..0fb295a9290c
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/harman.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/jvc.png b/docs/html/auto/images/logos/hard/jvc.png
new file mode 100644
index 000000000000..6a9c7ade76e1
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/jvc.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/kenwood.png b/docs/html/auto/images/logos/hard/kenwood.png
new file mode 100644
index 000000000000..3c80098ed169
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/kenwood.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/lg.png b/docs/html/auto/images/logos/hard/lg.png
new file mode 100644
index 000000000000..52feeffef25d
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/lg.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/panasonic.png b/docs/html/auto/images/logos/hard/panasonic.png
new file mode 100644
index 000000000000..b6aaaf152be6
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/panasonic.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/parrot.png b/docs/html/auto/images/logos/hard/parrot.png
new file mode 100644
index 000000000000..d5bf41f02548
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/parrot.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/pioneer.png b/docs/html/auto/images/logos/hard/pioneer.png
new file mode 100644
index 000000000000..307d71a223b5
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/pioneer.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/renesas.png b/docs/html/auto/images/logos/hard/renesas.png
new file mode 100644
index 000000000000..69ecab743041
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/renesas.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/symphonyteleca.png b/docs/html/auto/images/logos/hard/symphonyteleca.png
new file mode 100644
index 000000000000..0b3ebe5e7d5f
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/symphonyteleca.png
Binary files differ
diff --git a/docs/html/auto/images/logos/hard/texasinstruments.png b/docs/html/auto/images/logos/hard/texasinstruments.png
new file mode 100644
index 000000000000..87d80cb526bf
--- /dev/null
+++ b/docs/html/auto/images/logos/hard/texasinstruments.png
Binary files differ
diff --git a/docs/html/auto/index.jd b/docs/html/auto/index.jd
index c7a3a4e45281..5ce6289b00b0 100644
--- a/docs/html/auto/index.jd
+++ b/docs/html/auto/index.jd
@@ -11,18 +11,54 @@ page.type=about
#jd-content>.content-footer.wrap {
display:none;
}
-</style>
-
-<style>
-#footer {
- display: none;
-}
-.content-footer {
- display: none;
-}
#hero-height {
height:calc(100% - 100px);
}
+.img-logo {
+ margin:0 auto;
+ display:block;
+ margin-bottom:-28px !important;
+}
+.img-logo-thin {
+ margin:0 auto;
+ display:block;
+ margin-bottom:-55px !important;
+}
+.col-5 {
+ width:170px;
+}
+.auto-img-container-cols {
+ position:relative;
+ margin-bottom:25px;
+ margin-top:25px;
+}
+.auto-img-frame-cols {
+ z-index:2;
+ position:relative;
+ width:460px;
+}
+.auto-img-shot-cols {
+ width:447px;
+ position:absolute;
+ top:8px;
+ left:7px;
+ z-index:1;
+}
+.sdk-link {
+ font-size:16px;
+ padding-left:5px;
+ padding-right:15px;
+}
+.sdk-link-title {
+ font-size:18px;
+ padding-left:5px;
+ padding-right:15px;
+}
+.sdk-link-desc {
+ font-size:14px;
+ padding-left:5px;
+ padding-right:15px;
+}
</style>
@@ -40,13 +76,14 @@ page.type=about
<div class="landing-h1 hero">Android Auto</div>
<div class="landing-subhead hero">Entertainment and services on your dashboard</div>
<div class="landing-hero-description">
- <p>Display and control your handheld app in vehicles.
- Build apps with easy-to-use UI templates that
- let users keep their eyes on the road.</p>
+ <p style="width:450px">Display and control your Android app in vehicles.
+ Integrate your content with easy-to-use APIs and let Android Auto take
+ care of the rest.</p>
</div>
<div class="landing-body">
- <a href="{@docRoot}auto/overview.html" class="landing-button landing-primary" style="margin-top: 40px;">
+ <a href="{@docRoot}auto/overview.html" class="landing-button landing-primary"
+ style="margin-top:40px;">
Developer Overview
</a>
</div>
@@ -67,21 +104,33 @@ page.type=about
<div class="landing-section landing-gray-background" id="android-in-car">
<div class="wrap">
- <div class="landing-section-header">
- <div class="landing-h1">Bringing Android to Your Car</div>
+ <div class="landing-section-h1">
+ <div class="landing-h1">Extending Android to Cars</div>
</div>
-
<div class="landing-body">
- <p>When users connect their Android phone to an Android Auto enabled vehicle, the
- system shows an interface that lets users select compatible apps and services to run.
- </p>
- <p>Android Auto provides new APIs and tools that your existing Android apps can
- leverage to run on any compatible vehicle. Users interact with your apps through the
- touch screen and the physical buttons on the vehicle’s dashboard. Your apps can also
- respond to voice commands.
+ <div class="landing-subhead">Android Auto brings the Android experience to
+ cars with apps like Google Now and Maps.</div>
+ <div class="cols">
+ <div class="col-8">
+ <div class="auto-img-container-cols">
+ <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/01_b_now.png" />
+ </div>
+ </div>
+ <div class="col-8">
+ <div class="auto-img-container-cols">
+ <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/01_a_maps.png" />
+ </div>
+ </div>
+ </div>
+
+ <p>When users connect their Android phones to compatible vehicles, Android Auto
+ shows a standard interface that lets them start enabled apps and services.
+ Android Auto locks the handheld device when connected, so drivers
+ interact with Auto by using the vehicle's input controls, touch display, and voice.</p>
</p>
</div>
-
</div> <!-- end .wrap -->
</div> <!-- end .landing-section -->
@@ -89,112 +138,330 @@ page.type=about
<div class="landing-section">
<div class="wrap">
<div class="landing-section-header">
- <div class="landing-h1">One Platform</div>
+ <div class="landing-h1">Build for One Platform</div>
+ <div class="landing-subhead">Create apps with the Android APIs you're familiar with
+ and extend them to cars with the Auto SDK.
+ </div>
</div>
<div class="landing-body">
- <p>Android Auto is an extension of the Android platform. You can easily adapt
- existing apps for Android Auto and reuse many of the Android APIs and services you
- are already familiar with.</p>
- <p>The Android Auto platform and SDK let you write your apps only once, without having
+
+ <div class="cols">
+ <div class="col-8">
+ <div class="auto-img-container-cols">
+ <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/02_b_switcher.gif" />
+ </div>
+ </div>
+ <div class="col-8">
+ <div class="auto-img-container-cols">
+ <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/02_a_notif.gif" />
+ </div>
+ </div>
+ </div>
+ <p>Write your apps without having
to worry about vehicle-specific hardware differences like screen resolution, software
- interfaces, knobs and touch controls. Your app runs the same on any compatible
- vehicle.</p>
+ interfaces, knobs, and touch controls. Your users get the same experience on any compatible
+ vehicle such as a consistent app launcher and system events such as notifications.</p>
</div>
</div> <!-- end .wrap -->
</div> <!-- end .landing-section -->
- <div class="landing-section landing-gray-background" >
+
+ <div class="landing-section landing-gray-background">
<div class="wrap">
<div class="landing-section-header">
- <div class="landing-h1">Minimizing Distraction</div>
+ <div class="landing-h1">Minimize Distraction</div>
+ <div class="landing-subhead">
+ Android Auto displays different UIs for several app categories that let users focus on the road.
+ </div>
</div>
-
<div class="landing-body">
- <p>We designed Android Auto to minimize driver distraction. Android Auto provides UI
- templates for several app categories. These templates define the user interaction model
- for any app and follow international best practices for reducing driver distraction.</p>
- <p>You can customize these templates to fit your brand and link them to your app’s
- content and functionality, instead of building new UIs and testing them for driver
- distraction, which is a lengthy and costly process.</p>
- <p>Android Auto locks any device that users connect to a compatible vehicle, so drivers
- interact with the device using voice actions and the vehicle’s input controls.</p>
+ <div class="cols">
+ <div class="col-8">
+ <div class="auto-img-container-cols">
+ <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/03_b_voice.gif" />
+ </div>
+ </div>
+ <div class="col-8">
+ <div class="auto-img-container-cols">
+ <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/03_a_musict.png" />
+ </div>
+ </div>
+ </div>
+ <p>Android Auto defines the user interaction model for all
+ apps and let you hook into a standard UI with touch and voice controls. The interface
+ is designed to reduce driver distraction while still letting you customize and brand them to properly deliver your content.
+ </p>
</div>
</div> <!-- end .wrap -->
</div> <!-- end .landing-section -->
- <div class="landing-section landing-white-background">
+ <div class="landing-section" style="background-color:#f5f5f5">
<div class="wrap">
<div class="landing-section-header">
- <div class="landing-h1">Building an Ecosystem</div>
- </div>
- <div class="landing-body landing-align-center">
- <p style="margin-bottom:20px">
- Android Auto is coming soon to new cars from these manufacturers:
- </p>
+ <div class="landing-pre-h1">Coming soon</div>
+ <div class="landing-h1">Android Auto SDK</div>
</div>
- <div style="width:800px;margin:0 auto">
- <img src="{@docRoot}auto/images/carlogos.png" alt="Partners" />
+
+ <div class="landing-body">
+ <p>In the coming months, we’ll be releasing the Android Auto SDK, which includes APIs
+ and tools to make your existing apps compatible with Android Auto. The first version
+ of the SDK will provide APIs for music, podcast, live radio, and audio
+ news apps, as well as limited voice actions.</p>
+
+ <div class="cols" style="margin-top:40px">
+ <div class="col-3-wide">
+ <p class="sdk-link-title">Updates</p>
+ <p class="sdk-link-desc">
+ Register to receive more information and be notified when the SDK is available.
+ </p>
+ <a class="sdk-link" href="https://docs.google.com/a/google.com/forms/d/1ANgYOoYLkfyZ2JRPSU34Nep5yNaU-Ha2syXJ9b4xLrA/viewform">Sign up for updates</a>
+ </div>
+ <div class="col-3-wide">
+ <p class="sdk-link-title">Google+ Community</p>
+ <p class="sdk-link-desc">
+ Stay involved, get updates, and exchange experiences with other developers.
+ </p>
+ <a class="sdk-link" href="http://g.co/androidautodev">Discuss on Google+</a>
+ </div>
+ <div class="col-3-wide">
+ <p class="sdk-link-title">Developer Overview</p>
+ <p class="sdk-link-desc">
+ Learn more about developing apps for Android Auto when the SDK is available.
+ </p>
+ <a class="sdk-link" href="{@docRoot}auto/overview.html">Learn about the platform</a>
+ </div>
+ </div>
</div>
+
</div> <!-- end .wrap -->
</div> <!-- end .landing-section -->
- <div class="landing-section" >
+
+ <div class="landing-section landing-gray-background" >
<div class="wrap">
<div class="landing-section-header">
- <div class="landing-h1">Developer Stories</div>
+ <div class="landing-h1">See What Others Have Done</div>
+ <div class="landing-subhead">We're working with developers to bring many popular apps
+ to Android Auto</div>
</div>
-
<div class="landing-body">
- <p>We're working with developers to bring many popular apps to Android Auto:</p>
- <p>
+ <div class="cols">
- </p>
+ <div class="col-4">
+ <img src="{@docRoot}auto/images/logos/apps/joyride.png"
+ width="160" height="160" class="img-logo" />
+ </div>
+ <div class="col-4">
+ <img src="{@docRoot}auto/images/logos/apps/mlb.png"
+ width="160" height="160" class="img-logo" />
+ </div>
+ <div class="col-4">
+ <img src="{@docRoot}auto/images/logos/apps/pandora.png"
+ width="160" height="160" class="img-logo" />
+ </div>
+ <div class="col-4">
+ <img src="{@docRoot}auto/images/logos/apps/pocketcasts.png"
+ width="160" height="160" class="img-logo" />
+ </div>
</div>
+ <div class="cols">
+ <div class="col-4">
+ <img src="{@docRoot}auto/images/logos/apps/songza.png"
+ width="160" height="160" class="img-logo" />
+ </div>
+ <div class="col-4">
+ <img src="{@docRoot}auto/images/logos/apps/stitcher.png"
+ width="160" height="160" class="img-logo" />
+ </div>
+ <div class="col-4">
+ <img src="{@docRoot}auto/images/logos/apps/tunein.png"
+ width="160" height="160" class="img-logo" />
+ </div>
+ <div class="col-4">
+ <img src="{@docRoot}auto/images/logos/apps/umano.png"
+ width="160" height="160" class="img-logo" />
+ </div>
+ </div>
+ <div class="cols" style="margin-top:40px">
+ <div class="col-4">
+ <img src="{@docRoot}auto/images/logos/apps/iheartradio.png"
+ width="160" height="160" class="img-logo" />
+ </div>
+ <div class="col-12">
+ <p><em>
+ "The Android Auto APIs provide an easy way to integrate the most important features and functionality of iHeartRadio’s robust music service into a safety-minded automotive infotainment solution. The process was seamless, utilizing a flexible construct that allowed us to quickly adapt our existing product without losing any of the core experience our listeners know and love."</em></p>
+ </div>
+ </div>
+ <div class="cols" style="margin-top:60px">
+ <div class="col-4">
+ <img src="{@docRoot}auto/images/logos/apps/spotify.png"
+ width="160" height="160" class="img-logo" />
+ </div>
+ <div class="col-12"><p style="margin-top:20px"><em>
+ "Android Auto offers Spotify the exciting opportunity to easily enable safe access to millions of songs while driving. We were able to quickly develop for the platform using the new Android voice and media API extensions. As a result, Android users will soon be able to continue the Spotify experience in their cars, including being able to play any song, artist, album or playlist by voice.</em></p>
+ </div>
+ </div>
+ </div>
</div> <!-- end .wrap -->
</div> <!-- end .landing-section -->
- <div class="landing-section" style="background-color:#f5f5f5">
+
+
+ <div class="landing-section landing-white-background">
<div class="wrap">
<div class="landing-section-header">
- <div class="landing-pre-h1">Coming soon</div>
- <div class="landing-h1">Android Auto SDK</div>
- <div style="text-align:center;margin-top:20px;font-size:14pt;margin-bottom:-5px">
- <a href="https://docs.google.com/a/google.com/forms/d/1ANgYOoYLkfyZ2JRPSU34Nep5yNaU-Ha2syXJ9b4xLrA/viewform">Sign up for updates</a>
+ <div class="landing-h1">Building an Ecosystem</div>
+ </div>
+ <div class="landing-body landing-align-center">
+ <div class="landing-subhead">
+ Android Auto is coming soon to new cars from these manufacturers
+ </div>
+ </div>
+ <div class="cols">
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/abarth.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/alpharomeo.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/acura.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/audi.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/bentley.png"
+ width="120" height="120" class="img-logo" />
</div>
</div>
-
- <div class="landing-body">
- <p>In the coming months, we’ll be releasing the Android Auto SDK, which includes APIs
- and tools to make your existing apps compatible with Android Auto. The first version
- of the SDK will provide templates and APIs for music, podcast, live radio, and audio
- news apps, as well as limited voice actions.</p>
- <p style="margin-bottom:40px">
- Future versions of the Android Auto SDK will include support for a selection of
- Android notifications, additional voice actions, and templates and APIs for
- messaging, communication, local search, and more.</p>
-
- <a target="_blank" href="http://g.co/androidautodev">
- <img class="landing-social-image" src="//www.google.com/images/icons/product/gplus-128.png" alt="+Android Auto Developers">
- </a>
- <p style="margin-bottom:5px">G+ Community</p>
- <p class="landing-small">
- Join the Android Auto developer community on Google+ to stay involved, get the
- latest updates, and exchange experiences with other developers.
- <a target="_blank" href="http://g.co/androidautodev">+Android Auto Developers</a>
- </p>
+ <div class="cols">
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/chevrolet.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/chrysler.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/dodge.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/fiat.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/ford.png"
+ width="120" height="120" class="img-logo" />
+ </div>
</div>
-
- </div> <!-- end .wrap -->
- </div> <!-- end .landing-section -->
-
+ <div class="cols">
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/honda.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/hyundai.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/infinity.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/jeep.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/kia.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ </div>
+ <div class="cols">
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/maserati.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/mazda.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/mercedesbenz.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/mitsubishi.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/nissan.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ </div>
+ <div class="cols">
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/opel.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/ram.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/renault.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/seat.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/skoda.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ </div>
+ <div class="cols">
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/subaru.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/suzuki.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/volkswagen.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <img src="{@docRoot}auto/images/logos/auto/volvo.png"
+ width="120" height="120" class="img-logo" />
+ </div>
+ <div class="col-5">
+ <!--<img src="/auto/images/logos/auto/skoda.png"
+ width="120" height="120" class="img-logo" />-->
+ </div>
+ </div>
+ </div>
+ </div>
</div> <!-- end .landing-rest-of-page -->
-
-
- <div class="content-footer wrap" itemscope="" itemtype="http://schema.org/SiteNavigationElement">
+ <div class="content-footer wrap" itemscope="" itemtype="http://schema.org/SiteNavigationElement"
+ style="border-top: none;">
<div class="layout-content-col col-16" style="padding-top:4px">
<style>#___plusone_0 {float:right !important;}</style>
<div class="g-plusone" data-size="medium"></div>
@@ -205,13 +472,11 @@ page.type=about
Except as noted, this content is
licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
Creative Commons Attribution 2.5</a>. For details and
- restrictions, see the <a href="/license.html">Content
+ restrictions, see the <a href="{@docRoot}license.html">Content
License</a>.
</div>
</div>
-
-
- </div> <!-- end landing-body-content -->
+ </div> <!-- end .landing-hero-container -->
<script>
$("a.landing-down-arrow").on("click", function(e) {
@@ -221,3 +486,5 @@ page.type=about
e.preventDefault();
});
</script>
+
+</div> <!-- end landing-body-content -->
diff --git a/docs/html/auto/overview.jd b/docs/html/auto/overview.jd
index 8748bff215bf..cf63b9892217 100644
--- a/docs/html/auto/overview.jd
+++ b/docs/html/auto/overview.jd
@@ -13,6 +13,47 @@ page.metaDescription=Android Auto
#copyright {
margin-top:-35px;
}
+.auto-img-container {
+ position:relative;
+}
+.auto-img-frame {
+ z-index:2;
+ position:relative;
+}
+.auto-img-shot {
+ position:absolute;
+ top:9px;
+ left:8px;
+ z-index:1;
+}
+.auto-img-container-cols {
+ position:relative;
+ margin-top:10px;
+}
+.auto-img-frame-cols {
+ width:380px;
+ z-index:2;
+ position:relative;
+}
+.auto-img-shot-cols {
+ width:369px;
+ position:absolute;
+ top:7px;
+ left:6px;
+ z-index:1;
+}
+.auto-col-2 {
+ width:380px;
+ display: inline;
+ float: left;
+ margin-left: 10px;
+ margin-right: 10px;
+}
+.auto-img-container-single {
+ width:380px;
+ margin:0 auto;
+ margin-top:20px;
+}
</style>
<div style="width:780px; margin:0 auto;">
@@ -28,13 +69,13 @@ page.metaDescription=Android Auto
</ol>
</li>
<li><a href="#architecture">Architecture</a></li>
- <li><a href="#uitemplates">UI Templates</a>
+ <li><a href="#ui">User Interface</a>
<ol>
<li><a href="#launchapp">Launch App</a></li>
<li><a href="#useractions">User Actions</a></li>
<li><a href="#drawertransitions">Drawer Transitions</a></li>
<li><a href="#daynighttransitions">Day and Night Transitions</a></li>
- <li><a href="#customizetemplates">Customizing Templates</a></li>
+ <li><a href="#customizeui">Customizing the UI</a></li>
</ol>
</li>
<li><a href="#devprocess">Development Process</a></li>
@@ -46,27 +87,33 @@ page.metaDescription=Android Auto
<h1>Android Auto Developer Overview</h1>
-<p>Android Auto extends the Android platform to car entertainment systems. When users connect
-their Android handheld device to a compatible vehicle, Android Auto lets users project apps on
-the vehicle’s touchscreen and interact with them using the vehicle’s controls.</p>
+<p>Android Auto extends the Android platform into the car. When users connect
+their Android handheld device to a compatible vehicle, Android Auto provides a car-optimized
+Android experience on the vehicle's screen. Users interact with compatible apps and services
+through voice actions and the vehicle's input controls.</p>
+
+<p>The Android Auto SDK lets you easily extend your existing apps to work in the car, without
+having to worry about vehicle-specific hardware differences. You can use many Android APIs and
+services you are already familiar with. Android Auto provides an easy to use UI model and
+supports notifications and voice actions:</p>
<dl>
-<dt style="margin-bottom:10px"><strong>UI Templates</strong></dt>
+<dt style="margin-bottom:10px"><strong>Media UI</strong></dt>
<dd style="margin-bottom:20px">
-Android Auto defines interaction models and UI templates for several app categories. The
+Android Auto defines interaction models and car-specific UI patterns for apps. The
first version of Android Auto supports media apps, such as music, podcast, live radio, and
-audio news apps. Future versions will support messaging, communication, local search apps,
-and more.
+audio news apps.
</dd>
<dt style="margin-bottom:10px"><strong>Notifications</strong></dt>
<dd style="margin-bottom:20px">
The platform will integrate with existing Android APIs for notifications. Users will get
-some notifications from Android apps on the vehicle’s screen.</dd>
+car appropiate notifications from Android apps on the vehicle's screen.</dd>
<dt style="margin-bottom:10px"><strong>Voice Actions</strong></dt>
<dd style="margin-bottom:20px">
-Android Auto supports voice search and voice actions for media apps. Future versions
-will support additional voice actions.</dd>
+Android Auto supports a set of voice actions to interact with compatible apps and services.
+Apps can respond to the voice actions they're interested in, such as playing a particular song
+or taking a note.</dd>
<dt style="margin-bottom:10px"><strong>Easy Development Workflow</strong></dt>
<dd style="margin-bottom:20px">
@@ -79,78 +126,54 @@ you already know.</dd>
Android Auto experience on a regular Android device.</p>
-<h2 id="design" style="margin-top:30px">Design</h2>
+<h2 id="design">Design</h2>
-<p>Digital experiences for cars should complement and augment driving, not demand the driver's
-attention. Designing these experiences for cars is fundamentally different than in the case of
-phones and tablets. It requires rethinking how these experiences unfold.</p>
+<p>Android Auto extends users' digital ecosystem into their cars, allowing drivers to stay
+connected to their virtual worlds while staying focused on the road ahead.</p>
-<h3 id="designprinciples" style="margin-top:25px">Design Principles</h3>
+<p>Because driving is the primary activity in the car, any digital experiences should be designed
+to complement and augment that activity. They should never demand the user's attention.</p>
-<p><strong>Glanceable</strong>. We designed Android Auto to reduce UI complexity, optimize user
-interactions, and lower cognitive load. Effective apps show just enough information
-and only provide features that do not require excessive menu interaction and navigation.</p>
+<p>Designing for cars is fundamentally different than designing for phones or tablets, and
+requires rethinking how experiences unfold. Because attention is limited and not all tasks are
+possible in the car, effective apps leverage the entire set of devices that drivers have,
+leveraging the app experience on those devices, outside of the car, to set the stage for simple
+experiences while driving.</p>
-<p><strong>Predictive, yet predictable</strong>. Android Auto leverages rich, contextual awareness
-to keep the driver informed about important situations. Timely help is combined with predictable
-functions. Effective apps use patterns for common tasks and show timely information only when
-relevant.</p>
+<p>Android Auto experiences are:</p>
-<p><strong>Connected</strong>. Android Auto works with apps that drivers already use in other
-devices. Android Auto promotes a continuous app experience from phones and tablets to cars,
-providing access to user's existing settings, subscriptions, and digital libraries. Experiences
-that bring personal content and context from other devices are part of Android Auto.</p>
+<p><strong>Glanceable and simple</strong>. Driving requires users' full attention. In-car software
+should not. Android Auto was designed to simplify not only the UI, but to optimize interactions
+and require less thinking, induce lower cognitive load, and ultimately, be safer. Effective apps
+provide just enough information in the minimum amount of time the user needs to glance at it and
+return their attention back to the road. Apps should also reduce the number of features to only
+those that are safe and drive-appropriate.</p>
-<p><strong>Integrated</strong>. Android Auto blends your apps with the vehicle's entertainment
-system, creating a truly integrated experience in every car. By using the vehicle's screen and
-controls, apps feel tailored to each car.</p>
+<p><strong>Predictive, yet predictable</strong>. Android Auto leverages rich, contextual awareness
+to keep the driver informed about important situations during the drive. Rich, timely help is
+combined with predictable functions. Effective apps make use of the patterns for common tasks and
+show timely information only when relevant.</p>
-<h3 id="uioverview" style="margin-top:25px">UI Overview</h3>
+<p><strong>Connected</strong>. By leveraging the user's personal ecosystem of apps and services,
+Android Auto promotes a continuous experience from phone to car to other devices. The user's
+music, destinations, and virtual ecosystem are always available to augment the drive. Experiences
+that leverage personal context and other devices are naturally part of Android Auto.</p>
-<p>Android Auto is a new environment that leverages existing UI models where appropiate and adds
-new models based on constrains and context. There are three primary concepts for Android Auto:
-<strong>Suggest</strong>, a unified place for predictive content; <strong>Demand</strong>, a
-pervasive way to interact with voice; and the <strong>Facets</strong>, organized spaces for
-primary activities, apps and content.</p>
+<p><strong>Naturally integrated</strong>. Android Auto blends the user's apps with the car,
+creating a truly integrated experience that leverages what is unique about each car. By using
+the screens, controls, and capabilities of the vehicle, Android Auto feels like an extension of
+the car.</p>
-<dl>
-<dt style="margin-bottom:10px"><strong>Suggest: The Google Facet</strong></dt>
-<dd style="margin-bottom:20px">
-Core of continuity and extensibility is contextual stream of Now-like cards, powered by your
-apps and notifications. Relevant, timely, and dynamic, the stream organizes likely people, media,
-places, and information so drivers can quickly continue their activities or start something new.
-Google Now and notifications enable drivers to use the apps and services they know when they are
-most relevant.
-</dd>
-<dt style="margin-bottom:10px"><strong>Demand: The Voice Layer</strong></dt>
-<dd style="margin-bottom:20px">
-Voice-enabled tasks lets drivers accomplish their goals without taking their eyes off the road.
-Android Auto defines actions and intents that your app can register for.
-These are accessible through both persistent UI elements and dedicated hardware controls.
-</dd>
-<dt style="margin-bottom:10px"><strong>Facets and Templates: App-powered activities</strong></dt>
-<dd style="margin-bottom:20px">
-In the car, pages of app icons and different UIs create a distracting and dangerous situation.
-Instead, Android Auto apps power templates which help provide simple but customizable UIs
-for common interactions such as media or communications. Templates incorporate common behaviors,
-such as play/pause or reply to a message, while still letting your app promote its value
-and its brand. Apps are organized into facets (or activities) to enable quick access.
-</dd>
-</dl>
-<p>Android Auto uses the input and output mechanisms in each vehicle to tailor the interactions.
-Some vehicles have dedicated hardware controls, while others have primarily touch-based systems.
-Android Auto maps common actions and intents across these diverse sets of controls and outputs to
-enable you to concentrate on your unique app experience.</p>
-<h2 id="architecture" style="margin-top:30px">Architecture</h2>
+<h2 id="architecture">Architecture</h2>
-<p>The Android Auto app projects your app's customized UI on the vehicle's screen. To communicate
+<p>The Android Auto app shows your app's customized UI on the vehicle's screen. To communicate
with the Android Auto app, your media app implements a set of media interfaces.</p>
<div style="width:750px;margin:0 auto">
-<img src="/auto/images/figure01.png" alt="" id="figure1" />
+<img src="{@docRoot}auto/images/figure01.png" alt="" />
<p class="img-caption">
  <strong>Figure 1</strong> - Architecture of Android Auto.
</p>
@@ -161,7 +184,7 @@ with the Android Auto app, your media app implements a set of media interfaces.<
<p><strong>Media App</strong> - Runs a media service that exposes content through browsing and
playback APIs. The service provides content to the Android Auto app. This is your Android app.</p>
-<p><strong>Android Auto App</strong> - Creates a templated UI and handles user interactions.
+<p><strong>Android Auto App</strong> - Creates the UI and handles user interactions.
This app uses a media client to request content from the media service running in the media
app. The client requests data from the media service and monitors service states.</p>
@@ -180,104 +203,129 @@ playback state through callbacks.</li>
</ul>
-<h2 id="uitemplates" style="margin-top:30px">UI Templates</h2>
+<h2 id="ui">User Interface</h2>
-<p>The Android Auto app uses a templated UI to display content and user interaction
-opportunities. Android Auto provides you with a set of standard UI templates that follow
-international guidelines for minimizing driving distraction. You do not have to test your
-app's UI for for driver distraction, which is a lengthy and expensive process involving
-multiple legislations across the globe and different standards for each vehicle OEM.</p>
+<p>The Android Auto app uses a car-specific UI model to display content and user interaction
+opportunities. Android Auto provides you with a standard UI designed to minimize driver
+distraction. You do not have to test a custom UI for for driver distraction, which is a
+lengthy and expensive process involving multiple legislations across the globe and different
+standards for each vehicle OEM.</p>
-<p>The UI templates define interfaces for browsing, searching, and listening to content from
-media apps. Although you cannot change the standard template format or layout, you can customize
-the template colors, action icons, background images, and more.</p>
+<p>The UI defines interfaces for browsing, searching, and listening to content from
+media apps. You can customize the UI colors, action icons, background images, and more.</p>
-<h3 id="launchapp" style="margin-top:25px">Launch App Template</h3>
+<h3 id="launchapp">Launcher</h3>
-<p>The Launcher template shows all the compatible media apps installed on the user’s
+<p>The launcher shows all the compatible media apps installed on the user’s
Android device and lets users select one of them from an scrollable list:</p>
-<div style="width:500px;margin:0 auto">
-<img src="/auto/images/figure02.png" alt="" id="figure2" />
-<p class="img-caption">
-  <strong>Figure 2.</strong> The Launcher template.
-</p>
+<div class="auto-img-container-single">
+ <div class="auto-img-container">
+ <img class="auto-img-frame-cols" src="/auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="/auto/images/assets/do_01_switcher.png" />
+ </div>
+ <p class="img-caption" style="margin-top:0px">
+  <strong>Figure 2.</strong> The launcher.
+ </p>
</div>
-<h3 style="margin-top:25px">Primary App Template</h3>
+<h3>Primary App UI</h3>
-<p>After the user selects a media app, the display shows the primary app template. Figure
-3 shows the elements of this template that you can customize:</p>
+<p>After the user selects a media app, the display shows the primary app UI.
+You can customize this UI to show your own icons, app name, and
+background images. Figure 3 shows an example of a customized UI:</p>
-<div style="width:428px;margin:0 auto">
-<img src="/auto/images/figure03.png" alt="" id="figure3" />
+<div class="cols">
+<div class="auto-col-2">
+ <div class="auto-img-container-cols">
+ <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_05_template.png" />
+ </div>
+</div>
+<div class="auto-col-2">
+ <div class="auto-img-container-cols">
+ <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_02_music.png" />
+ </div>
+</div>
+</div>
<p class="img-caption">
-  <strong>Figure 3.</strong> The main application template.
+  <strong>Figure 3.</strong> A customized UI.
</p>
-</div>
-<p>You can customize the primary app template to show your own icons, app name, and
-background images. Figure 4 shows an example of a customized template:</p>
-<div style="width:787px;margin:0 auto">
-<img src="/auto/images/figure04.png" alt="" id="figure4" />
-<p class="img-caption">
-  <strong>Figure 4.</strong> A customized template.
-</p>
-</div>
-<h3 id="useractions" style="margin-top:25px">User Actions</h3>
+<h3 id="useractions">User Actions</h3>
-<p>The primary app template supports four main actions on the action bar, four auxiliary actions
+<p>The primary app UI supports four main actions on the action bar, four auxiliary actions
on the overflow bar, and the <em>Return</em> action. You can use standard controls and customize
-the actions and icons, as shown in Figure 5.</p>
-
-<div style="width:500px;margin:0 auto">
-<img src="/auto/images/figure05.png" alt="" id="figure5" />
-<p class="img-caption">
-  <strong>Figure 5.</strong> Custom icons for auxiliary actions.
-</p>
+the actions and icons, as shown in Figure 4.</p>
+
+<div class="auto-img-container-single">
+ <div class="auto-img-container">
+ <img class="auto-img-frame-cols" src="/auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="/auto/images/assets/do_03_more.png" />
+ </div>
+ <p class="img-caption" style="margin-top:0px">
+  <strong>Figure 4.</strong> Custom extra actions.
+ </p>
</div>
-<h3 id="drawertransitions" style="margin-top:25px">Drawer Transitions</h3>
+<h3 id="drawertransitions">Drawer Transitions</h3>
-<p>For browse actions, the display shows the drawer transition and template:</p>
+<p>For browse actions, the display shows the drawer transition as shown in Figure 5.</p>
-<div style="width:750px;margin:0 auto">
-<img src="/auto/images/figure06.png" alt="" id="figure6" />
+<div class="cols">
+<div class="auto-col-2">
+ <div class="auto-img-container-cols">
+ <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_06_gdrawer.png" />
+ </div>
+</div>
+<div class="auto-col-2">
+ <div class="auto-img-container-cols">
+ <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_04_mdrawer.png" />
+ </div>
+</div>
+</div>
<p class="img-caption">
-  <strong>Figure 6.</strong> The drawer transition.
+  <strong>Figure 5.</strong> Generic and customized drawers.
</p>
-</div>
-<p>After the transition from the primary app template to the drawer template, the drawer
-appears on the center. The customized drawer template shows the media containers and
+<p>After the transition from the primary app UI to the drawer UI, the drawer
+appears on the center. The customized drawer UI shows the media containers and
media files provided by the media service in your app. You can also customize drawers
with icons for list items.</p>
-<div style="width:500px;margin:0 auto">
-<img src="/auto/images/figure07.png" alt="" id="figure7" />
-<p class="img-caption">
-  <strong>Figure 7.</strong> A customized drawer template.
-</p>
-</div>
-<h3 id="daynighttransitions" style="margin-top:25px">Day and Night Transitions</h3>
+<h3 id="daynighttransitions">Day and Night Transitions</h3>
-<p>All the templates support different color schemes for day and night, as shown in
-Figure 8. The platform provides the state (day or night) and makes adjustments automatically.</p>
+<p>All the UIs support different color schemes for day and night.
+The platform provides the state (day or night) and makes adjustments automatically.</p>
-<div style="width:780px;margin:0 auto">
-<img src="/auto/images/figure08.png" alt="" id="figure8" />
+<div class="cols">
+<div class="auto-col-2">
+ <div class="auto-img-container-cols">
+ <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_02_music.png" />
+ </div>
+</div>
+<div class="auto-col-2">
+ <div class="auto-img-container-cols">
+ <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
+ <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_02_music_night.png" />
+ </div>
+</div>
+</div>
<p class="img-caption">
-  <strong>Figure 8.</strong> Day and night transitions.
+  <strong>Figure 6.</strong> Day and night modes.
</p>
-</div>
-<h3 id="customizetemplates" style="margin-top:25px">Customizing Templates</h3>
+<h3 id="customizeui">Customizing UIs</h3>
-<p>To customize the templates, provide the following app-specific resources and actions
-to the Android Auto media client.</p>
+<p>To customize the UI, you provide the following app-specific resources and actions
+to the Android Auto media client:</p>
<ul>
<li><strong>Resources</strong> - App logo, app name, theme colors, and background images.</li>
@@ -285,10 +333,10 @@ to the Android Auto media client.</p>
<em>Favorite</em>, and <em>Bookmark</em>. These actions are app-specific.</li>
</ul>
-<p>If provided, the media client automatically uses them in the templated UI.</p>
+<p>If provided, the media client automatically uses them in the UI.</p>
-<h2 id="devprocess" style="margin-top:30px">Development Process</h2>
+<h2 id="devprocess">Development Process</h2>
<p class="note"><strong>Note:</strong> When released, the Android Auto SDK will provide
media service interfaces, an APK for handheld devices that simulates the Android Auto
@@ -297,10 +345,10 @@ app, and other tools for Android Auto development.</p>
<p>To create a media app for Android Auto, you include an Android service in your app
that implements the media service interfaces provided by the Android Auto SDK. These
interfaces define functionality for browsing and finding content, playing media,
-customizing the UI template, and performing app-specific actions.</p>
+customizing the UI, and performing app-specific actions.</p>
<p>The media service interfaces present the content library as a navigable tree and enable
-clients to play media, get album art, obtain theme resources for the UI template, and
+clients to play media, get album art, obtain theme resources for the UI, and
invoke app-specific actions.</p>
<p>You don’t have to create a new app for Android Auto: you can extend your existing
@@ -327,7 +375,7 @@ differences such as screen resolutions, software interfaces, knobs and touch
controls.</p>
-<h2 id="emulator" style="margin-top:30px">Testing Your App on an Android Device</h2>
+<h2 id="emulator">Testing Your App on an Android Device</h2>
<p>The Android Auto SDK includes an APK with a media client implementation, which is
similar to those available in compatible vehicles. To test your app with this
@@ -348,7 +396,7 @@ library and play media. If your app provides app-specific actions, these actions
in the UI controls.</p>
-<h2 id="running" style="margin-top:30px">Running Your App on Android Auto</h2>
+<h2 id="running">Running Your App on Android Auto</h2>
<p>Media apps are available on the Google Play Store for compatible Android devices.
When users connect their Android device to a compatible vehicle, the
diff --git a/docs/html/design/auto/index.jd b/docs/html/design/auto/index.jd
new file mode 100644
index 000000000000..aac79abc3c82
--- /dev/null
+++ b/docs/html/design/auto/index.jd
@@ -0,0 +1,35 @@
+page.title=Auto
+@jd:body
+
+<style>
+.auto-img-container-cols {
+ position:relative;
+ margin-bottom:25px;
+ margin-top:25px;
+}
+.auto-img-frame-cols {
+ z-index:2;
+ position:relative;
+}
+.auto-img-shot-cols {
+ position:absolute;
+ top:5px;
+ left:2px;
+ z-index:1;
+}
+</style>
+
+<div class="auto-img-container-cols" style="float:right; margin:0 0 40px 40px;width:460px">
+ <img class="auto-img-frame-cols" src="/auto/images/assets/00_frame.png">
+ <img class="auto-img-shot-cols" src="/auto/images/assets/03_a_musict.png">
+</div>
+
+<p>Android Auto is <strong>coming soon</strong> and brings apps to the car,
+integrating with the vehicle's input controls and display.</p>
+
+<p>The future design guidelines provide templates that define the user interaction model for all apps and let you hook into a standard UI with touch and voice controls. The templates meet international best practices for reducing driver distraction while still letting you customize and brand them to properly deliver your content.</p>
+
+<p><a href="{@docRoot}auto/index.html">Learn more about Android Auto</a>.</p>
+
+
+
diff --git a/docs/html/design/design_toc.cs b/docs/html/design/design_toc.cs
index 2bd0bf986431..885f336019ad 100644
--- a/docs/html/design/design_toc.cs
+++ b/docs/html/design/design_toc.cs
@@ -5,7 +5,26 @@
<ul>
<li><a href="<?cs var:toroot ?>design/get-started/creative-vision.html">Creative Vision</a></li>
<li><a href="<?cs var:toroot ?>design/get-started/principles.html">Design Principles</a></li>
- <li><a href="<?cs var:toroot ?>design/get-started/ui-overview.html">UI Overview</a></li>
+ </ul>
+ </li>
+
+ <li class="nav-section">
+ <div class="nav-section-header"><a href="<?cs var:toroot ?>design/devices.html">Devices</a></div>
+ <ul>
+ <li><a href="<?cs var:toroot ?>design/handhelds/index.html">Phones &amp; Tablets</a></li>
+ <li class="nav-section">
+ <div class="nav-section-header">
+ <a href="<?cs var:toroot ?>design/wear/index.html">Wear</a></div>
+ <ul>
+ <li><a href="<?cs var:toroot ?>design/wear/creative-vision.html">Creative Vision</a></li>
+ <li><a href="<?cs var:toroot ?>design/wear/principles.html">Design Principles</a></li>
+ <li><a href="<?cs var:toroot ?>design/wear/structure.html">App Structure</a></li>
+ <li><a href="<?cs var:toroot ?>design/wear/patterns.html">UI Patterns</a></li>
+ <li><a href="<?cs var:toroot ?>design/wear/style.html">Style</a></li>
+ </ul>
+ </li>
+ <li><a href="<?cs var:toroot ?>design/tv/index.html">TV</a></li>
+ <li><a href="<?cs var:toroot ?>design/auto/index.html">Auto</a></li>
</ul>
</li>
@@ -67,25 +86,6 @@
</li>
<li class="nav-section">
- <div class="nav-section-header"><a href="<?cs var:toroot ?>design/devices.html">Devices</a></div>
- <ul>
- <!-- wear design goes here -->
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>design/tv/index.html">TV</a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>design/tv/principles.html">Design Principles</a></li>
- <li><a href="<?cs var:toroot ?>design/tv/ui-overview.html">UI Overview</a></li>
- <li><a href="<?cs var:toroot ?>design/tv/style.html">Style</a></li>
- <li><a href="<?cs var:toroot ?>design/tv/patterns.html">Patterns</a></li>
- </ul>
- </li>
-
- </ul>
- </li>
-
-
- <li class="nav-section">
<div class="nav-section-header empty"><a href="<?cs var:toroot ?>design/downloads/index.html">Downloads</a></div>
</li>
diff --git a/docs/html/design/devices.jd b/docs/html/design/devices.jd
new file mode 100644
index 000000000000..0015d0170d71
--- /dev/null
+++ b/docs/html/design/devices.jd
@@ -0,0 +1,37 @@
+page.title=Devices
+page.viewport_width=970
+section.landing=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<style>
+#landing-graphic-container {
+ position: relative;
+}
+
+#text-overlay {
+ position: absolute;
+ left: 0;
+ top: 420px;
+ width: 360px;
+
+}
+#hero-image {
+}
+</style>
+
+<div id="landing-graphic-container">
+ <div id="text-overlay">
+ <p itemprop="description">The device-centric UI principles, overviews, and detailed guidelines
+ described here build on the core <a href="{@docRoot}design/get-started/principles.html">Android Design Principles</a>
+ to provide more specific design guidance for different form factors.
+ </p>
+ <p>
+ <a href="{@docRoot}design/handhelds/index.html" class="landing-page-link">Phones &amp; Tablets</a></p>
+ </div>
+ <a id="hero-image" href="{@docRoot}design/handhelds/index.html">
+ <img src="{@docRoot}design/media/device_family.png">
+ </a>
+</div>
+
diff --git a/docs/html/design/get-started/creative-vision.jd b/docs/html/design/get-started/creative-vision.jd
index 1ce305a5a64d..9261c6e72a7c 100644
--- a/docs/html/design/get-started/creative-vision.jd
+++ b/docs/html/design/get-started/creative-vision.jd
@@ -6,10 +6,10 @@ page.title=Creative Vision
<div class="vspace size-1">&nbsp;</div>
<p itemprop="description">
- We focused the design of Android around three overarching goals, which apply
- to our core apps as well as the system at large. As you design apps to work
- with Android, consider these goals: <em>Enchant me</em>, <em>Simplify my
- life</em>, and <em>Make me amazing</em>
+ Starting with Ice Cream Sandwich, we focused the design of
+ Android around these three overarching goals, which apply
+ to our core apps as well as the system at large.
+ As you work with Android, consider these goals.
</p>
<div class="vspace size-1">&nbsp;</div>
diff --git a/docs/html/design/get-started/principles.jd b/docs/html/design/get-started/principles.jd
index 0b7147b8a83c..73ec3a696a4b 100644
--- a/docs/html/design/get-started/principles.jd
+++ b/docs/html/design/get-started/principles.jd
@@ -1,9 +1,16 @@
-page.title=Design Principles
+page.title=Android Design Principles
@jd:body
-<p>These design principles were developed by and for the Android User Experience Team to keep users'
-best interests in mind. Consider them as you apply your own creativity and design thinking. Deviate
-with purpose.</p>
+<p>These design principles were developed by and for the Android
+User Experience Team to keep users' best interests in mind.
+For Android developers and designers, they continue to
+underlie the more detailed design guidelines for different
+types of devices.</p>
+
+<p>
+Consider these principles as you apply your own
+creativity and design thinking. Deviate with purpose.
+</p>
<h2 id="enchant-me">Enchant Me</h2>
diff --git a/docs/html/design/get-started/ui-overview.jd b/docs/html/design/handhelds/index.jd
index 5f4c40f51903..882b0701a74b 100644
--- a/docs/html/design/get-started/ui-overview.jd
+++ b/docs/html/design/handhelds/index.jd
@@ -1,12 +1,20 @@
-page.title=UI Overview
+page.title=Phones &amp; Tablets
@jd:body
-<p>Android's system UI provides the framework on top of which you build your app. Important aspects
-include the Home screen experience, global device navigation, and notifications.</p>
-<p>Your app will play an important part in keeping the overall Android experience consistent and
-enjoyable to use. At the end of this chapter we introduce the main elements for achieving this goal
-in your app.</p>
-<p>Read on for a quick overview of the most important aspects of the Android user interface.</p>
+<p>
+Android's system UI provides the framework on top of which you build your app,
+whether you're designing for phones, tablets, watches, or other form factors.
+Aspects of UI that are especially important for phones and tablets include
+the Home screen experience, global device navigation, and notifications.
+</p>
+
+<p>
+Your app will play an important part in keeping the overall Android experience
+consistent and enjoyable to use. This page introduces some of the main elements
+that can help you achieve this goal. The main Android Design topics listed on
+the left, after the Devices sections, provide detailed guidelines for phones
+and tablets.
+</p>
<h2 id="home-all-apps-recents">Home, All Apps, and Recents</h2>
diff --git a/docs/html/design/index.jd b/docs/html/design/index.jd
index cb7dd4f1b2e0..27e3169cc4fb 100644
--- a/docs/html/design/index.jd
+++ b/docs/html/design/index.jd
@@ -13,7 +13,7 @@ footer.hide=1
#text-overlay {
position: absolute;
- left: 36px;
+ left: 0;
top: 42px;
width: 266px;
@@ -34,5 +34,15 @@ footer.hide=1
<a id="hero-image" href="/design/get-started/creative-vision.html">
<img src="/design/media/index_landing_page.png">
</a>
+
+<div style="background: hsl(8, 70%, 54%); margin: 0; padding: 20px 20px 10px 20px;color: #fff; position: absolute;top: 255px;width: 179px;">
+<h2 style="color: #fff;margin:0 0 10px; font-size:18px" class="norule">L Developer Preview</h2>
+<p> The next version of Android uses a design
+metaphor inspired by paper and ink that provides a reassuring sense of tactility. Before it arrives for users, you can get an early
+look at the new Material design.
+</p>
+<p><a class="white" href="{@docRoot}preview/material/index.html">Learn more about Material</a></p>
+</div>
+
</div>
diff --git a/docs/html/design/media/device_family.png b/docs/html/design/media/device_family.png
new file mode 100644
index 000000000000..7889884e2422
--- /dev/null
+++ b/docs/html/design/media/device_family.png
Binary files differ
diff --git a/docs/html/design/media/wear/1D_picker.png b/docs/html/design/media/wear/1D_picker.png
new file mode 100644
index 000000000000..46c6bf669df4
--- /dev/null
+++ b/docs/html/design/media/wear/1D_picker.png
Binary files differ
diff --git a/docs/html/design/media/wear/2D_picker.png b/docs/html/design/media/wear/2D_picker.png
new file mode 100644
index 000000000000..82c766a69bd9
--- /dev/null
+++ b/docs/html/design/media/wear/2D_picker.png
Binary files differ
diff --git a/docs/html/design/media/wear/2D_picker_action.png b/docs/html/design/media/wear/2D_picker_action.png
new file mode 100644
index 000000000000..8560ef8a2771
--- /dev/null
+++ b/docs/html/design/media/wear/2D_picker_action.png
Binary files differ
diff --git a/docs/html/design/media/wear/Bluebird.png b/docs/html/design/media/wear/Bluebird.png
new file mode 100644
index 000000000000..447e6437b55e
--- /dev/null
+++ b/docs/html/design/media/wear/Bluebird.png
Binary files differ
diff --git a/docs/html/design/media/wear/action_button.png b/docs/html/design/media/wear/action_button.png
new file mode 100644
index 000000000000..dfdffa389cb4
--- /dev/null
+++ b/docs/html/design/media/wear/action_button.png
Binary files differ
diff --git a/docs/html/design/media/wear/action_on_card.png b/docs/html/design/media/wear/action_on_card.png
new file mode 100644
index 000000000000..d0b0fffc2a1f
--- /dev/null
+++ b/docs/html/design/media/wear/action_on_card.png
Binary files differ
diff --git a/docs/html/design/media/wear/assets_specifics.png b/docs/html/design/media/wear/assets_specifics.png
new file mode 100644
index 000000000000..35a38198ef4c
--- /dev/null
+++ b/docs/html/design/media/wear/assets_specifics.png
Binary files differ
diff --git a/docs/html/design/media/wear/bridgednotifications.jpg b/docs/html/design/media/wear/bridgednotifications.jpg
new file mode 100644
index 000000000000..a9e57a42e121
--- /dev/null
+++ b/docs/html/design/media/wear/bridgednotifications.jpg
Binary files differ
diff --git a/docs/html/wear/images/circle_message2.png b/docs/html/design/media/wear/circle_message2.png
index 63b783959f01..63b783959f01 100644
--- a/docs/html/wear/images/circle_message2.png
+++ b/docs/html/design/media/wear/circle_message2.png
Binary files differ
diff --git a/docs/html/design/media/wear/clear_bold_type.jpg b/docs/html/design/media/wear/clear_bold_type.jpg
new file mode 100644
index 000000000000..e4b742cf56f7
--- /dev/null
+++ b/docs/html/design/media/wear/clear_bold_type.jpg
Binary files differ
diff --git a/docs/html/design/media/wear/confirmation.png b/docs/html/design/media/wear/confirmation.png
new file mode 100644
index 000000000000..513b85f20a66
--- /dev/null
+++ b/docs/html/design/media/wear/confirmation.png
Binary files differ
diff --git a/docs/html/design/media/wear/contextualnotification.png b/docs/html/design/media/wear/contextualnotification.png
new file mode 100644
index 000000000000..1ec7ac89aa5d
--- /dev/null
+++ b/docs/html/design/media/wear/contextualnotification.png
Binary files differ
diff --git a/docs/html/design/media/wear/continue_phone.png b/docs/html/design/media/wear/continue_phone.png
new file mode 100644
index 000000000000..fed93b6c8a7a
--- /dev/null
+++ b/docs/html/design/media/wear/continue_phone.png
Binary files differ
diff --git a/docs/html/design/media/wear/copywrite.png b/docs/html/design/media/wear/copywrite.png
new file mode 100644
index 000000000000..78be0bd88a53
--- /dev/null
+++ b/docs/html/design/media/wear/copywrite.png
Binary files differ
diff --git a/docs/html/design/media/wear/countdown.png b/docs/html/design/media/wear/countdown.png
new file mode 100644
index 000000000000..11b1504444b9
--- /dev/null
+++ b/docs/html/design/media/wear/countdown.png
Binary files differ
diff --git a/docs/html/design/media/wear/customlayout.jpg b/docs/html/design/media/wear/customlayout.jpg
new file mode 100644
index 000000000000..9573cfc1b3ed
--- /dev/null
+++ b/docs/html/design/media/wear/customlayout.jpg
Binary files differ
diff --git a/docs/html/design/media/wear/dismiss_cards.png b/docs/html/design/media/wear/dismiss_cards.png
new file mode 100644
index 000000000000..2e2d53b8de7d
--- /dev/null
+++ b/docs/html/design/media/wear/dismiss_cards.png
Binary files differ
diff --git a/docs/html/design/media/wear/expandable_stacks.png b/docs/html/design/media/wear/expandable_stacks.png
new file mode 100644
index 000000000000..edc2456d2f03
--- /dev/null
+++ b/docs/html/design/media/wear/expandable_stacks.png
Binary files differ
diff --git a/docs/html/wear/images/fitness-24.png b/docs/html/design/media/wear/fitness.png
index 3cf2f3cad10f..3cf2f3cad10f 100644
--- a/docs/html/wear/images/fitness-24.png
+++ b/docs/html/design/media/wear/fitness.png
Binary files differ
diff --git a/docs/html/design/media/wear/low_info_card.png b/docs/html/design/media/wear/low_info_card.png
new file mode 100644
index 000000000000..a3ebf16b8d73
--- /dev/null
+++ b/docs/html/design/media/wear/low_info_card.png
Binary files differ
diff --git a/docs/html/design/media/wear/peek_card.png b/docs/html/design/media/wear/peek_card.png
new file mode 100644
index 000000000000..2b1229767cb4
--- /dev/null
+++ b/docs/html/design/media/wear/peek_card.png
Binary files differ
diff --git a/docs/html/design/media/wear/selection_list.png b/docs/html/design/media/wear/selection_list.png
new file mode 100644
index 000000000000..dcb074532fd7
--- /dev/null
+++ b/docs/html/design/media/wear/selection_list.png
Binary files differ
diff --git a/docs/html/design/media/wear/separate_info_cards.jpg b/docs/html/design/media/wear/separate_info_cards.jpg
new file mode 100644
index 000000000000..d4cb3861f7d0
--- /dev/null
+++ b/docs/html/design/media/wear/separate_info_cards.jpg
Binary files differ
diff --git a/docs/html/design/media/wear/separate_info_cards_1.jpg b/docs/html/design/media/wear/separate_info_cards_1.jpg
new file mode 100644
index 000000000000..b987aeaee375
--- /dev/null
+++ b/docs/html/design/media/wear/separate_info_cards_1.jpg
Binary files differ
diff --git a/docs/html/design/media/wear/separate_info_cards_2.jpg b/docs/html/design/media/wear/separate_info_cards_2.jpg
new file mode 100644
index 000000000000..1930cb84368d
--- /dev/null
+++ b/docs/html/design/media/wear/separate_info_cards_2.jpg
Binary files differ
diff --git a/docs/html/design/media/wear/single_action_controls.jpg b/docs/html/design/media/wear/single_action_controls.jpg
new file mode 100644
index 000000000000..ef89da0c40a3
--- /dev/null
+++ b/docs/html/design/media/wear/single_action_controls.jpg
Binary files differ
diff --git a/docs/html/design/media/wear/voice_commands.png b/docs/html/design/media/wear/voice_commands.png
new file mode 100644
index 000000000000..9839ed88fa25
--- /dev/null
+++ b/docs/html/design/media/wear/voice_commands.png
Binary files differ
diff --git a/docs/html/design/tv/index.jd b/docs/html/design/tv/index.jd
index 2519e25bbeca..553472491b8b 100644
--- a/docs/html/design/tv/index.jd
+++ b/docs/html/design/tv/index.jd
@@ -1,31 +1,15 @@
-page.title=Design for TV
-header.justLinks=1
-footer.hide=1
+page.title=TV
@jd:body
-<style>
-#landing-graphic-container {
- position: relative;
-}
-#text-overlay {
- position: absolute;
- left: 0;
- top: 402px;
- width: 220px;
-}
-</style>
+<img src="{@docRoot}preview/tv/design/images/atv-home.jpg"
+ width="460" height="283" style="float:right;margin:0 0 40px 40px" />
-<div id="landing-graphic-container">
- <div id="text-overlay">
- <span itemprop="description">
- Build beautiful apps for the biggest screen in the house.</span>
- <br><br>
- <a href="{@docRoot}design/tv/principles.html"
- class="landing-page-link">Design Principles</a>
- </div>
- <a href="{@docRoot}design/tv/principles.html">
- <img src="{@docRoot}design/tv/images/atv.png" style="margin-left: 70px;">
- </a>
-</div>
+<p>Android TV is <strong>coming soon</strong> and lets you engage your users in a new, shared environment.</p>
+
+<p>Users bring a specific set of expectations to the experience of watching TV, versus interacting
+with a phone or tablet. So find out how to get your app ready for its big-screen debut
+later this year by reading the
+<a href="{@docRoot}preview/tv/design/index.html">Android TV Design Guide</a>
+in the L Developer Preview.</p> \ No newline at end of file
diff --git a/docs/html/design/wear/creative-vision.jd b/docs/html/design/wear/creative-vision.jd
new file mode 100644
index 000000000000..4530744040d0
--- /dev/null
+++ b/docs/html/design/wear/creative-vision.jd
@@ -0,0 +1,36 @@
+page.title=Creative Vision for Wear
+@jd:body
+
+
+<p>Android Wear devices provide just the right information at just the right time,
+allowing users to be more connected to both the virtual world and the real world. Great Android
+Wear experiences are:</p>
+
+
+<div class="layout-content-row">
+ <div class="layout-content-col span-6">
+ <h4>Launched automatically</h4>
+ <p>Most people are used to launching apps by clicking an icon. Android Wear is different. Wearable apps are aware of the user’s context - time, location, physical activity, and so on. The apps use this information to insert cards into the stream when they become relevant. This makes Android Wear timely, relevant and very specific.</p>
+ </div>
+ <div class="layout-content-col span-6" style="margin-left:75px">
+ <h4>Glanceable</h4>
+ <p>A classic wrist watch is designed to let you see the time in a split second and get on with what you were doing. Designing for Android Wear is no different. The less time it takes to use your software, the more time the user can be present in whatever they are doing. Android wear is fast, sharp and immediate.</p>
+ </div>
+</div>
+
+
+<div class="layout-content-row">
+ <div class="layout-content-col span-6">
+ <h4>Zero or low interaction</h4>
+ <p>Staying true to the strengths afforded by a smaller form factor, Android Wear focuses on simple interactions, only requiring input by the user when absolutely necessary. Most inputs are based around touch swipes or voice, and inputs requiring fine-grained finger movements are avoided. Android Wear is gestural, simple, and fast.</p>
+ </div>
+ <div class="layout-content-col span-6" style="margin-left:75px">
+ <h4>All about suggest and demand</h4>
+ <p>Android Wear is like a great personal assistant: it knows you and your preferences, it only interrupts you when absolutely necessary, and it’s always on hand to provide a ready answer. Android Wear is helpful, respectful, and responsive.</p>
+ </div>
+</div>
+
+<p>By providing a smart connection to the rest of the world while respecting the user’s attention, Android Wear feels personal and global, simple and smart, unobtrusive and ever-ready. Applications that represent these principles will feel most at home in the overall Android Wear experience.</p>
+
+<p>Third party apps extend Android Wear to be more specialized and helpful throughout the day. Installing apps are a way for the user to tell the Android Wear how to do that.</p>
+
diff --git a/docs/html/design/wear/index.jd b/docs/html/design/wear/index.jd
new file mode 100644
index 000000000000..35364455b9b6
--- /dev/null
+++ b/docs/html/design/wear/index.jd
@@ -0,0 +1,67 @@
+page.title=Wear
+@jd:body
+
+
+
+<p>Designing apps for wearables powered by Android Wear
+is substantially different than designing for phones or
+tablets: different strengths and weaknesses, different use cases, different ergonomics.
+To get started, you should understand the overall vision for the Android Wear experience,
+and how apps fit into and enhance this experience.</p>
+
+<p>A new form factor deserves a new UI model. At a high level, the Android Wear UI consists of two
+main spaces centered around the core functions of <strong>Suggest</strong> and
+<strong>Demand</strong>. Your app will have an important role to play in both of these
+spaces.</p>
+
+
+
+<h2 id="Stream">Suggest: The Context Stream</h2>
+
+<div class="framed-wear-square" style="float:right;margin:0 -22px 60px 40px">
+ <img src="{@docRoot}wear/images/screens/stream.gif">
+</div>
+
+<p>The context stream is a vertical list of cards, each showing a useful or timely piece of information. Much like the Google Now feature on Android phones and tablets, users swipe vertically to navigate from card to card. Only one card is displayed at a time, and background photos are used to provide additional visual information. Your application can create cards and inject them into the stream when they are most likely to be useful.</p>
+
+<p>This UI model ensures that users don’t have to launch many different applications to check for updates; they can simply glance at their stream for a brief update on what’s important to them.</p>
+
+<p>Cards in the stream are more than simple notifications. They can be swiped horizontally to reveal additional pages. Further horizontal swiping may reveal buttons, allowing the user to take action on the notification. Cards can also be dismissed by swiping left to right, removing them from the stream until the next time the app has useful information to display.</p>
+
+
+
+
+<h2 id="CueCard">Demand: The Cue Card</h2>
+
+<div class="framed-wear-square" style="float:right;margin:0 -22px 60px 40px">
+ <img src="{@docRoot}wear/images/screens/cuecard.gif">
+</div>
+
+<p>For cases where Android Wear does not suggest an answer proactively through the context stream, the cue card allows users to speak to Google. The cue card is opened by saying, “OK Google” or by tapping on the background of the home screen. Swiping up on the cue card shows a list of suggested voice commands, which can also be tapped.</p>
+
+<p>At a technical level, each suggested voice command activates a specific type of intent. As a developer, you can match your applications to some of these intents so that users can complete tasks using these voice commands. Multiple applications may register for a single voice intent, and the user will have the opportunity to choose which application they prefer to use.</p>
+
+<p>Applications can respond to a voice command in the same way as they can respond to a tap on a regular in-stream action button: by adding or updating a stream card, or by launching a full screen application. Voice input often takes the form of a command, such as "remind me to get milk," in which case a simple confirmation animation is sufficient to display before automatically returning to the Context Stream.</p>
+
+
+<h2 id="Other">Other UI Features</h2>
+
+<ul>
+<li>The <strong>Home screen</strong> is the default state of the device and features:
+ <ul>
+ <li>The background, showing either content relating to the first card or a custom watch face design, depending on the watch face the user has chosen. Tapping anywhere on the background or saying "Ok Google" starts a voice query.
+ <li>Status indicators, showing connectivity, charging status, airplane mode, and in some watch faces a count of unread items.
+ <li>The top ranked card in the Context Stream, peeking up at the bottom of the screen. The amount of the peek card that appears is determined by the current watch face.
+ </ul>
+</li>
+
+<li><strong>Watch faces</strong> may be chosen by the user to appear in the background of the Home screen. Watch faces display the time and accommodate the top ranked peek card. The user can choose a different watch face by long pressing on the current one.</li>
+
+<li>Some devices may enter a low-power <strong>Ambient Mode</strong> when not being used. This usually involves dimming the screen in some way. The contents of a peek card will automatically be optimized for display in this state. Users can exit ambient mode by tapping on the screen, by tilting the screen towards them, or by pressing a hardware button if one exists.</li>
+
+<li>Swiping down on the Home screen reveals the <strong>Date and Battery</strong> display. Dragging further down toggles <strong>Mute mode</strong>, preventing interruptive notifications from vibrating and illuminating the screen.</li>
+
+<li>The <strong>Settings screen</strong> can be invoked from the cue card or on some devices using a hardware button. From here the user may shut down or restart their device, adjust screen brightness, toggle airplane mode, and access device information.</li>
+
+<li><strong>Full screen apps</strong> can be launched on top of the main stream where a wider range of interaction is called for. Although not stylistically limited to the context stream pattern, apps should respect the same design principles as the rest of the system. For more information, see the <a href="{@docRoot}design/wear/structure.html">App Structure</a> guide.</li>
+</ul> \ No newline at end of file
diff --git a/docs/html/design/wear/patterns.jd b/docs/html/design/wear/patterns.jd
new file mode 100644
index 000000000000..8f4698cdd178
--- /dev/null
+++ b/docs/html/design/wear/patterns.jd
@@ -0,0 +1,150 @@
+page.title=UI Patterns for Wear
+@jd:body
+
+
+
+<p>Android Wear is used for micro-interactions, and so adhering to consistent design patterns that users are already accustomed to is paramount.</p>
+
+<h2>Cards</h2>
+
+<p>Cards in the stream can take slightly different forms:</p>
+
+<div class="framed-wear-square-small" style="float:left;margin:0 20px 20px 0">
+ <img src="{@docRoot}design/media/wear/Bluebird.png">
+</div>
+
+<div class="framed-wear-square-small" style="float:left;margin:0 20px 20px 0">
+ <img src="{@docRoot}design/media/wear/single_action_controls.jpg">
+</div>
+
+<div class="framed-wear-square-small" style="float:left;margin:0 20px 20px 0">
+ <img src="{@docRoot}design/media/wear/expandable_stacks.png">
+</div>
+
+<ul style="clear:both">
+<li>Standard cards for displaying information from a notification</li>
+<li>Single-action controls (such as a play/pause toggle)</li>
+<li>Expandable stack of cards, for grouping a set of related notifications together</li>
+</ul>
+
+
+<h2>App icons</h2>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 0 20px 60px">
+ <img src="{@docRoot}design/media/wear/clear_bold_type.jpg">
+</div>
+
+<p>App icons appear in a fixed position overhanging the edge at the top right of the card by default for all notifications in the Context Stream. This is an opportunity for cards to be recognized as coming from a specific source. Photo backgrounds should be used only to convey information, not to brand a card. App icons are necessary only on the leftmost card; it is not necessary to add the app icon to pages.</p>
+
+<h2 style="clear:both">Pages</h2>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 0 20px 40px">
+ <img src="{@docRoot}design/media/wear/separate_info_cards_2.jpg">
+</div>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 0 20px 40px">
+ <img src="{@docRoot}design/media/wear/separate_info_cards_1.jpg">
+</div>
+
+<p>Supplementary information should be displayed on additional cards to the right of a main Context Stream card. In most cases one additional detail card should be sufficient. For example, a weather card might show the weather for the current location today, with subsequent days listed in an additional card to the right. Keep the number of detail cards as low as possible. Actions (see below) should always come after pages; don’t change the order or interleave them.</p>
+
+
+<h2 style="clear:both">Dismissing cards</h2>
+
+ <img src="{@docRoot}design/media/wear/dismiss_cards.png" height="147">
+
+<p>Swiping from left to right on a card causes it to be dismissed from the stream. Dismissed cards may return when they next have relevant information. State is synced between the Android Wear context stream and the notifications on the Android handheld device, so dismissing from one causes an automatic dismissal from the other.</p>
+
+
+
+<h2 style="clear:both">Action buttons</h2>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 0 20px 40px">
+ <img src="{@docRoot}design/media/wear/action_button.png">
+</div>
+
+<p>Where the user may need to take action on the information shown in a notification, you can provide action buttons. These are system-rendered buttons that appear to the right of detail cards. They consist of a white icon set on a blue system-rendered circular button and a short caption with a verb. Actions should be limited to three for a single card row.</p>
+
+<p>Tapping on an action button can cause an action to be executed; or an action to be continued on the companion handheld; or a full screen activity to be invoked for further input (see “2D Picker” section below).</p>
+
+<p>Refer to the UI Toolkit provided in the Downloads section for detailed specs regarding action icons.</p>
+
+
+<h2 style="clear:both">Action countdown and confirmation</h2>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 0 20px 40px">
+ <img src="{@docRoot}design/media/wear/countdown.png">
+</div>
+
+<p>Where tapping on an action button results in an action being executed, one of the following can happen:</p>
+
+<ol>
+<li>The action is completed immediately and the result of the action is shown (either by updating the relevant card contents immediately, or by showing a confirmation animation).</li>
+<li>A short countdown animation to completing the action is played, which the user can interrupt to cancel. Once the timer has counted down, a confirmation animation is played. This animation can be custom-designed by developers.</li>
+<li>A confirmation step is required. This is for actions that are potentially damaging if accidentally triggered. A generic confirmation template is supplied by the system. Once the user confirms, the standard confirmation animation is played.</li>
+<li>The cue card can be invoked to continue specifying the action. For example in a messaging application, tapping a “Reply” action button invokes the Cue Card and prompts for voice input. In this case the prompt label (such as “Speak your message…”) and a set of sample voice suggestions can be specified by developers.</li>
+</ol>
+
+
+<h2 style="clear:both">Continuing activities on phone</h2>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 0 20px 40px">
+ <img src="{@docRoot}design/media/wear/continue_phone.png">
+</div>
+
+<p>Developers should attempt to perform actions on the wearable device wherever possible. In cases where the phone must be used, a generic animation should be played once the action button has been tapped and the corresponding Android app will open on the phone.</p>
+
+
+<h2 style="clear:both">Actions on cards (such as media controls)</h2>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 0 20px 40px">
+ <img src="{@docRoot}design/media/wear/action_on_card.png">
+</div>
+
+<p>Some cards may benefit from having tappable actions directly on a card. Some guidance on when to use this pattern versus using an action button:</p>
+
+<ul>
+<li>This pattern should be used when only one possible action could be reasonably expected. For example, tapping on an address with a car icon and ETA seems like it would very obviously launch directions. Conversely, if you see a contact's photo and name, it's not clear what tapping would do (call them? email them?), so the pattern shouldn't be used in this case.</li>
+<li>On-card actions should not require a text label to be understood.</li>
+<li>On-card actions should only result in something happening on the wearable (apart from web links to open them on the phone).</li>
+<li>Only one action per card: no menus on a single card.</li>
+</ul>
+
+<p>Good examples of using an action on card include: play / pause music; toggle light switch on and off; navigate to an address; call a phone number.</p>
+
+
+<h2 style="clear:both">Card stacks</h2>
+<img src="/wear/images/11_bundles_B.png" height="200" width="169" style="float:right;margin:0 0 20px 40px" alt="">
+<img src="/wear/images/11_bundles_A.png" height="200" width="169" style="float:right;margin:0 0 20px 40px" alt="">
+<p>Card stacks group related cards together and allow them to be progressively expanded vertically in the stream. A tap on a stack fans the cards out so that the top edge of each card can be seen. A subsequent tap on a fanned card reveals that card fully. Stacks of cards revert to a fully collapsed state once the user has swiped away from them.</p>
+
+
+
+<h2 style="clear:both">2D Picker</h2>
+
+<p>A 2D Picker component in your app can be invoked from the cue card or from an action button. It allows users to choose from a list of items, and optionally select an attribute of each item. For example, in response to a voice action to “buy tickets to a movie tonight,” you could show a 2D Picker with a vertical list of movies playing, with each movie having a horizontal list of showtimes.</p>
+
+<img src="{@docRoot}design/media/wear/2D_picker_action.png" width="500" alt="">
+
+<p>In some instances, further information may be required. In these cases, the most probable default values for these choices should be chosen on the user’s behalf with the option to edit before completing the action. This pattern is in keeping with Android Wear’s core design principle of minimizing interactions required.</p>
+
+
+<h2 style="clear:both">Voice commands</h2>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 0 20px 40px">
+ <img src="{@docRoot}design/media/wear/voice_commands.png">
+</div>
+
+<p>It is possible for apps to take action in response to Android voice commands that invoke intents. For example, an app can register for the “Take a note” intent and capture the subsequent voice input for processing. In the case where multiple apps registered for the same intent, user preference will be captured once and saved. Users can edit their intent preferences in the Android Wear app on their handheld.</p>
+
+
+<h2 style="clear:both">Selection List</h2>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 0 20px 40px">
+ <img src="{@docRoot}design/media/wear/selection_list.png">
+</div>
+
+<p>Choosing an item from a list is a common interaction. The Selection List pattern (available as the WearableListView component) creates a simple list optimized for ease of use on a small screen: the focused item snaps to the center of the screen, and a single tap selects. This widget is recommended as a common pattern for selecting items. It is used throughout the system UI, including in the list that can be accessed by swiping up on the cue card.</p>
+
+
+<p>Of course, it is possible for Android Wear apps to extend themselves beyond the familiarities of these patterns. For a deeper look at the options available, see the section on App Structure.</p>
diff --git a/docs/html/design/wear/principles.jd b/docs/html/design/wear/principles.jd
new file mode 100644
index 000000000000..a2144350f33b
--- /dev/null
+++ b/docs/html/design/wear/principles.jd
@@ -0,0 +1,52 @@
+page.title=Design Principles for Wear
+@jd:body
+
+<style>
+p.try {
+ background:#e4e4e4;
+ padding:10px;
+}
+</style>
+
+<p>These design principles provide some simple heuristics about how you should plan and assess your
+Android Wear app design.</p>
+
+
+<h2>Focus on not stopping the user and all else will follow</h2>
+<p>A watch is a perfect form factor for a device that you can use while doing something else, such as cooking, eating, walking, running, or even having a conversation. If using your wearable app causes the user to stop whatever they’re doing, it’s a good occasion to consider how to improve it using the principles in this section.</p>
+
+<p class="try"><strong>Try this:</strong> Time a typical use of your Wear app. If using it takes more than 5 seconds, you should think about making your app more focused. Also try using your app while you’re having a conversation, and see how it affects your train of thought and eye contact.</p>
+
+
+<h2>Design for big gestures</h2>
+
+<p>When you swipe through photos on your phone you’re using a large area of the display, and you don’t have to be precise at all. That’s the best kind of interaction for a wearable device. Your users are going to use your app in all sorts of situations, the least frequent one might actually be sitting down at their desk.</p>
+
+<p class="try"><strong>Try this:</strong> Use your app in various everyday situations, such as walking, eating, talking to people, or ordering coffee. If you have to slow down while walking or stop the conversation to be precise, you should consider how your gestures could be bigger.</p>
+
+<h2>Think about stream cards first</h2>
+<p>The best experience on a wearable device is when the right content is there just when the user needs it. You can figure out when to show your cards with sensors, or events happening in the cloud. For the cases where it’s impossible to know when the user needs your app, you can rely on a voice action or touch.</p>
+
+<p class="try"><strong>Try this:</strong> Make a list of all the situations a user would find your app useful. What do they have in common? Same location? Time of day? Certain physical activities? You will most likely come up with several different situations - that’s a good sign, because it means that you can specialize your cards to those situations. Remember that the user always has the option of completely muting your stream cards if they feel they aren’t relevant enough.</p>
+
+
+<p>[image] </p>
+<p class="img-caption">An app that offers to check in users could appear in the stream suggesting the most likely place nearby, after a certain amount of time.</p>
+
+
+<h2>Do one thing, really fast</h2>
+<p>While users will engage with your app for only a few seconds at time, they'll use it many times throughout the day. A well-designed stream card carries one bit of information and potentially offers a few action buttons when the user swipes over.</p>
+
+<p class="try"><strong>Try this:</strong> How many bits of information is there in your design? Is everything absolutely necessary, or could you split it up into separate cards? If you’re designing a card, don’t forget that you can use multiple pages.</p>
+
+
+<h2>Design for the corner of the eye</h2>
+<p>The longer the user is looking at your app, the more you are pulling them out of the real world. Thinking about how to design your app for glanceability can vastly help the user get full value from your app and quickly go back to what they were doing.</p>
+
+<p class="try"><strong>Try this:</strong> To view your app with your peripheral vision, try focusing on your knuckles while your watch is displaying the app. Do you get a sense of what it is trying to do? Is it distinguishable from other apps? Does the background image help conveying the message? Does it use photos or a distinct shape and color?</p>
+
+<h2>
+Don’t be a constant shoulder tapper</h2>
+<p>A watch constantly touches the user’s skin. Being this intimate, you want to buzz the watch fewer times than you’re used to on the phone.</p>
+
+<p class="try"><strong>Try this:</strong> Next time you’re in a conversation, imagine someone tapping you your shoulder, interrupting you with the information you want your app to deliver. If the information delivered did not justify suspending a conversation, you should not make the notification interruptive.</p> \ No newline at end of file
diff --git a/docs/html/design/wear/structure.jd b/docs/html/design/wear/structure.jd
new file mode 100644
index 000000000000..caeb1194feec
--- /dev/null
+++ b/docs/html/design/wear/structure.jd
@@ -0,0 +1,116 @@
+page.title=App Structure for Wear
+@jd:body
+
+
+<p>As outlined in the <a href="{@docRoot}design/wear/creative-vision.html">Creative Vision</a>,
+Android Wear apps do not adhere to the traditional mobile app model of touching an icon to launch into a self-contained experience. Rather, it is useful to think about the different spaces in the Android Wear UI and how your app might present itself across these spaces. For example, a typical app might begin by showing a notification card in the stream at a contextually relevant moment, then jump into a custom full screen UI for a micro-interaction, or maybe open the cue card to capture voice input that is then relayed back to the in-stream card.</p>
+
+<p>It’s important to make some fundamental decisions about how your users will interact with your app. There are a number of ways that functionality can manifest itself in Android Wear, and it is important to choose the places that provide maximum value and ease of use.</p>
+
+<p>For example, application functionality might show up in the following ways:</p>
+
+<ul>
+ <li>As a <strong>card in the main context stream</strong>:
+ <ul>
+ <li><strong>Bridged notifications</strong> are pushed to the wearable from the connected handheld (a phone or tablet) using the standard Android notifications framework. In general, bridged notifications mirror what’s happening on the handheld and use one of a predefined layout templates. Example: new message notification.
+ <li><strong>Contextual notifications</strong> are like smart notifications. They are generated locally on the wearable and appear at contextually relevant moments specificed by the app developer. Contextual notifications allow more freedom of control, allowing for custom layouts and dynamic updating of card contents. Example: live updating exercise stats.
+ </ul>
+ </li>
+ <li>As a <strong>full screen UI</strong> that temporarily overlays on top of the context stream:
+ <ul>
+ <li>The <strong>2D Picker</strong> is a simple design pattern (available in the SDK as a prebuilt component) aimed at asking the user to select from a set of items. This is a common interaction and a familiar pattern, so use of the familiar 2D Picker pattern is encouraged wherever possible. Example: choose from a set of artists and albums to play.
+ <li><strong>Custom layouts</strong> are also possible where apps need to extend beyond the basic card/stream metaphor. These apps should be distinctly separate from the core user experience in both appearance and interaction.</li>
+ </ul>
+ </li>
+</ul>
+
+
+<p>Apps can also open the cue card to capture voice input.</p>
+
+<p>Note that the different approaches above are listed in order of complexity. When designing your interactions, try to achieve them with the simplest approach possible. If your needs are more involved, move to the next level of complexity.</p>
+
+<p>Many applications will consist of a combination of these views, possibly with connections between them. For example, a contextual card may have an action that launches a more immersive experience. Inversely, an immersive experience may result in a card being added to the stream.</p>
+
+<p>Think of these different components as building blocks that can be snapped together into a single user flow. Avoid single monolithic full screen UIs that need to be launched and quit. Place simple notifications and ongoing information in the stream, and jump in and out of simple full screen activities to complete quick tasks before returning to the stream.</p>
+
+<p>In this section we will look at these different approaches and how combine them to create the best experience for your users.</p>
+
+
+<h2 id="Bridged">Bridged Notifications</h2>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 -22px 60px 40px">
+ <img src="{@docRoot}design/media/wear/bridgednotifications.jpg">
+</div>
+
+<p>Bridged notifications are the simplest way of having content appear on an Android wearable. Since cards in the Android Wear stream are synced from the notifications on your connected handheld, any notifications created there automatically appear on Android Wear. Where appropriate, make sure to use the new APIs in the support library that enhance your app's notifications with features such as voice replies and notification pages.</p>
+
+
+
+<h2 id="Contextual">Contextual Notifications</h2>
+
+<p>Displaying information on contextual cards is at the core of the Android Wear user experience. Cards with focused trigger criteria appear at just the right time, delighting and assisting the user with timely, useful content. Refer to the Design principles section for details on how to think about triggering cards, and the UI overview section for a breakdown of the familiar system UI components that make up an entry in the context stream.</p>
+
+<p>An important aspect of creating contextual notifications is defining trigger conditions: what is the specific scenario in which your notification should appear? Think about using all sensor information available to you -- time, location, movement, identity, user habits and patterns, interaction with nearby devices, and more -- and describe the specific combination of sensor readings that should result in your app presenting itself.</p>
+
+
+<img src="{@docRoot}design/media/wear/contextualnotification.png" width="500" alt="" />
+
+
+<p>For example, imagine you were building a running app. If the user is standing at the beginning of their regular running trail, at the time that they often go for a run, and we detect a running activity... they are probably going for a run! This would be a great time to present a contextual card that offers to track their run.</p>
+
+<p>Putting effort into getting your contextual triggering just right is one of the most impactful things you can do to create a delightful experience for your users.</p>
+
+<p>You may use the standard Android notifications framework to create cards using a range of provided templates, or draw your own ActivityView inside cards for a custom card layout. Make sure to refer to the Style section to make sure your custom ActivityView layouts are sympathetic to the overall design of cards in the stream. Use ActivityViews to create custom card layouts that are stylistically consistent with neighboring cards in the stream; do not invent entirely new or conflicting UI patterns inside cards.</p>
+
+<p>Contextual cards are ideal for situations where it may be useful to push information to the user, when the information may be useful on an ongoing basis or referred back to, or when context strongly indicates that the information is useful. Refer to the section on Respecting Users Attention in the Design Principles section for details on targeted triggering. Triggering too often or in unsuitable contexts will result in users being annoyed by your app.</p>
+
+
+
+<h2 id="Picker">2D Picker</h2>
+
+<p>The 2D Picker design pattern (available as the GridViewPager component) is useful for showing a range of options or asking a user to make a quick selection. Google search results on Android Wear are a great example of the GridViewPager pattern in action.</p>
+
+<p>A 2D Picker is called up as an overlay on the main UI by tapping a card or button, or through a voice action. It preserves the same look and feel as the main context stream, giving users a familiar and predictable set of interaction patterns to rely on.</p>
+
+<p>On Android Wear, the basic hierarchy is vertical-then-horizontal, never horizontal-then-vertical, with a recommended vertical limit of five cards. Each vertical slot may consist of one card, as in the Google results case, or multiple cards which may be swiped horizontally.</p>
+
+<img src="{@docRoot}design/media/wear/1D_picker.png" alt="" width="499px" />
+<p class="img-caption">This pattern can be used to present a single vertical list, or a “1D Picker”</p>
+
+<img src="{@docRoot}design/media/wear/2D_picker.png" alt="" width:760px" />
+<p class="img-caption">It can also be used as a 2D matrix of options, as a way of presenting categorized options.</p>
+
+<p>This flexibility means that developers can choose to present a one or two-dimensional set of options. For example, a music app could use a vertical list to present a list of albums by a given artist (one dimension of options), and it could additionally allow each album slot to be horizontally swipeable to also choose a song from each album (a second dimension of options).</p>
+
+<p>Do not add buttons or pages to horizontal 2D Picker rows; rows should only be used to present a list or grid of similar options in this context. Provide a clear call to action on the card using the Action cards pattern detailed in the <a href="{@docRoot}design/wear/patterns.html">UI Patterns</a> guide.</p>
+
+<p>2D Picker should be automatically dismissed when a selection is made. It may also be exited by swiping back down on the first card, or by swiping left to right on a leftmost card.</p>
+
+<p>The simplicity of individual cards within a 2D Picker is a feature. Remember that in many cases the user may be on the go or attempting to complete a task as quickly as possible. As such, micro-interactions and familiar input mechanism are paramount, and using the already-familiar pattern of vertically-then-horizontally oriented cards gives users exactly what they want with as little fuss as possible. Strive to minimize the number of results or options that you present. Show the most popular or repeatedly-used options at the top of the list of cards to avoid scrolling. Learn the user's preferences and use context detection to put the most likely option for any given situation at the top. In general, optimize for fast task completion over excessive customization.</p>
+
+
+
+<h2 id="Custom">Custom Layouts</h2>
+
+<p>Some interactions may require a broader range of input mechanisms than is possible within the limitations of a card-based UI. For example, an app that allows for location selection may require the user to swipe in many directions before tapping to drop a pin. In cases like this, it is recommended to momentarily launch out of the context stream UI and present an immersive, full screen app with a custom layout.</p>
+
+<p>Custom full screen apps provides the benefit of flexibility: you can launch your own Android activity that takes up the entire screen, and capture all touch events, making a wide range of UIs possible.</p>
+
+<img src="{@docRoot}design/media/wear/customlayout.jpg" alt="" width="760px" />
+
+
+<p>However, be cautious of making this the default way of accessing your app’s functionality. Users will thank you for presenting your content in the familiar, simple environment of the context stream if it is possible to do so. Only enter full screen mode when the interactions required are not possible using the card UI. Full screen is a modal state to be entered for the purpose of achieving a specific task, and in most cases should be easily and quickly exited. You should use full screen apps to achieve a single, quick task within a broader user flow that hinges off the Context Stream. A great full screen experience will present itself quickly, ask for some user input, and then self-quit back to the stream.</p>
+
+<p>To avoid confusion, avoid using the specific styles and idioms of the context stream when designing immersive experiences. If you find yourself replicating the structure of the card layout, your should probably be using a 2D Picker. Make your immersive experience visually distinct. However, still adhere to the <a href="{@docRoot}design/wear/principles.html">Design Principles</a>, which apply universally to Android Wear interfaces.</p>
+
+<p>Because Android wearables do not feature a home or back button, exiting the application at the appropriate time is the responsibility of the app developer. Exiting always leads back to the context stream. Where possible, exit automatically or present the option to exit at logical break points using acknowledge/cancel buttons. For example:</p>
+
+<ol>
+<li>A map view that allows the user to slide a map to drop a pin on a location should automatically exit when the pin has been placed.</li>
+<li>A short game should automatically exit back to the stream at the end of each game.</li>
+<li>A drawing app should display the option to exit after 5 seconds of inactivity.</li>
+</ol>
+
+<p>Even with logical exit points like these, some cases may exist where the user may want to immediately initiate an exit. This may be particularly common in apps of longer duration. In all cases, the developer should <strong>present the option to quit the app on long press</strong> using DismissOverlayView. Your design should long press for the sole purpose of prompting to quit.</p>
+
+<p>Seamlessly and fluidly moving between the context stream and immersive mode makes your app feel like an integrated part of the Android Wear experience.</p> \ No newline at end of file
diff --git a/docs/html/design/wear/style.jd b/docs/html/design/wear/style.jd
new file mode 100644
index 000000000000..ed39bd6df953
--- /dev/null
+++ b/docs/html/design/wear/style.jd
@@ -0,0 +1,102 @@
+page.title=Style for Wear
+@jd:body
+
+
+<p>Here are a number of design considerations to bear in mind that are particular to Android Wear.</p>
+
+<h2 id="ScreenSize">Screen Size</h2>
+
+<img src="{@docRoot}design/media/wear/circle_message2.png" height="200"
+ style="float:right;margin:0 0 20px 60px">
+
+<img src="{@docRoot}design/media/wear/fitness.png" height="200"
+ style="float:right;margin:0 0 20px 60px">
+
+<p>Be mindful of different device sizes and shapes. Wearable devices are a form of fashion and expression for their owners, and so Android Wear supports a variety of forms. Most of the complexities of supporting these different devices is taken care of at a system level, but bear in mind different screen types when designing custom full screen apps.</p>
+
+<p>Use the Android Wear emulator to test both square and round devices, and note that <code>WatchViewStub</code> is available to activities to detect whether a square or round device is being used.</p>
+
+
+
+
+<h2 id="Assets" style="clear:both">Specific Assets Required</h2>
+
+<img src="{@docRoot}design/media/wear/assets_specifics.png" width="300"
+ style="float:left;margin:0 60px 20px 0">
+
+<p>A core set of standard assets may need to be provided depending on your card design: app icon, background image or images, action icons, actions confirmation animation. Of course, your specific design may necessitate other assets. Background image should be provided in landscape format at least 600px width for notifications that include pages of cards, since the system automatically adds a parallaxing effect.</p>
+
+
+
+<h2 id="PeekCard" style="clear:both">Peek Card Readability</h2>
+
+<img src="{@docRoot}design/media/wear/peek_card.png" width="300"
+ style="float:left;margin:0 60px 20px 0">
+
+<p>Test your card layout to ensure that useful information is conveyed in the peek state on the Home screen. The main message of the card should be readable in the peek state, particularly for contextual cards. Content that requires an interaction to be read, for example a long message, should be cropped appropriately to provide an affordance to the user to swipe the card to read more.</p>
+
+
+
+<h2 id="InfoDensity" style="clear:both">Low Information Density</h2>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 0 40px 60px">
+ <img src="{@docRoot}design/media/wear/low_info_card.png">
+</div>
+
+<p>Cards should be designed to be glanceable in a split second, just like reading the time on a traditional watch. In most cases a pairing of an icon and value, or a title and short caption should be enough to convey a meaningful message. Note that the background photo should also be used to convey information; backgrounds that change to reflect and support the primary message in the card work great. For example, in the case illustrated above a suitable background image is chosen to reflect severity of the current traffic conditions. This is not just a nice piece of attention to detail; the background actually reinforces the message and makes the content more glanceable.</p>
+
+
+<h2 id="Chunks" style="clear:both">Separate Information into Chunks</h2>
+
+<img src="{@docRoot}design/media/wear/separate_info_cards.jpg" width="400"
+ style="float:left;margin:0 60px 20px 0">
+
+<p>In cases where additional information is absolutely necessary, don’t crowd out a card layout to the point where glanceability is affected. Instead, add an additional page (or multiple pages, if needed) to the right of the main card in the stream to which the user can swipe for more information. See also “Continuing activities on phone”, below.</p>
+
+
+<h2 id="KeepMinimum" style="clear:both">Keep Notifications to a Minimum</h2>
+
+<p>Don’t abuse the user’s attention. Active notifications (that is, those that cause the device to vibrate) should only be used in cases that are both timely and involve a contact, for example receiving a message from a friend. Non-urgent notifications should be silently added to the Context Stream. See also the general Android Notifications Guidelines.</p>
+
+
+<h2 id="Typography" style="clear:both">Use Clear, Bold Typography</h2>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 0 60px 40px">
+ <img src="{@docRoot}design/media/wear/clear_bold_type.jpg">
+</div>
+
+<p>The system font is Roboto Condensed, with Regular and Light variants. Text should adhere to the size and color recommendations (see the UI Toolkit in the Downloads section). In general, text should be displayed as large as possible. Your goal should be to convey maximum information with minimum fuss.</p>
+
+
+<h2 id="Branding" >Use Consistent Branding and Color</h2>
+
+<p>The app icon is used to identify and brand your application. The icon is optional but when present always appears in the same location, overhanging the top edge of the card at the right. Note that app icons or branding should not be displayed in the background photo, which is reserved to display an image relevant to the information on the card.</p>
+
+
+<h2 id="Copywrite" style="clear:both">Copywrite Sparingly</h2>
+
+<div class="framed-wear-square-small" style="float:right;margin:0 0 60px 40px">
+ <img src="{@docRoot}design/media/wear/copywrite.png">
+</div>
+
+<p>Omit needless text. Design for glanceability, not reading. Use words and phrases, not sentences. Use icons paired with values instead of text wherever possible. Text strings should be as concise as possible, and long pieces of text will be truncated to fit on a single card.</p>
+
+
+<h2 id="BeDiscreet" >Be Discreet if Necessary</h2>
+
+<p>Wearables are personal devices by nature, but they are not completely private. If your notification serves content that may be particularly sensitive or embarrassing (such as notifications from a dating app or a medical status report), consider not displaying all of the information in a peek card. A notification could place the sensitive information on a second page that must be swiped to, or an application could show different amounts of detail in peek and focused card positions.</p>
+
+
+<h2 id="ConfirmAnim" style="clear:both">Confirmation Animations</h2>
+
+<div class="framed-wear-square-small" style="float:left;margin:0 40px 40px 0 ">
+ <img src="{@docRoot}design/media/wear/confirmation.png">
+</div>
+
+<p>If your app allows the user to perform an action, it is necessary to provide positive feedback. Show a generic confirmation animation or create your own. A confirmation animation is an opportunity to express your app’s character and insert a moment of delight for your user. Keep animations short (less than 1000ms) and simple. Animating the confirmation icon is an effective way of transitions the user to a new state after completing an action.</p>
+
+
+
+
+
+
diff --git a/docs/html/google/gcm/ccs.jd b/docs/html/google/gcm/ccs.jd
index 03addfdb6f60..4389e3d296c0 100644
--- a/docs/html/google/gcm/ccs.jd
+++ b/docs/html/google/gcm/ccs.jd
@@ -19,7 +19,11 @@ page.title=GCM Cloud Connection Server (XMPP)
<li><a href="#response">Response format</a></li>
</ol>
</li>
- <li><a href="#upstream">Upstream Messages</a> </li>
+ <li><a href="#upstream">Upstream Messages</a>
+ <ol>
+ <li><a href="#receipts">Receive return receipts</a></li>
+ </ol>
+ </li>
<li><a href="#flow">Flow Control</a> </li>
<li><a href="#implement">Implementing an XMPP-based App Server</a>
<ol class="toc">
@@ -43,9 +47,6 @@ target="_android">CCS and User Notifications Signup Form</a></li>
</div>
</div>
-<p class="note"><strong>Note:</strong> To try out this feature, sign up using
-<a href="https://services.google.com/fb/forms/gcm/">this form</a>.</p>
-
<p>The GCM Cloud Connection Server (CCS) is an XMPP endpoint that provides a
persistent, asynchronous, bidirectional connection to Google servers. The
connection can be used to send and receive messages between your server and
@@ -149,8 +150,8 @@ exceptions:</p>
<li>CCS adds the field {@code message_id}, which is required. This ID uniquely
identifies the message in an XMPP connection. The ACK or NACK from CCS uses the
{@code message_id} to identify a message sent from 3rd-party app servers to CCS.
-Therefore, it's important that this {@code message_id} not only be unique, but
-always present.</li>
+Therefore, it's important that this {@code message_id} not only be unique (per
+sender ID), but always present.</li>
</ul>
<p>In addition to regular GCM messages, control messages are sent, indicated by
@@ -188,7 +189,8 @@ parameters and which connection server(s) supports them.</p>
&quot;hello&quot;:&quot;world&quot;,
}
&quot;time_to_live&quot;:&quot;600&quot;,
- &quot;delay_while_idle&quot;: true/false
+ &quot;delay_while_idle&quot;: true/false,
+ &quot;delivery_receipt_requested&quot;: true/false
}
&lt;/gcm&gt;
&lt;/message&gt;
@@ -227,42 +229,48 @@ message is &quot;nack&quot;. A NACK message contains:</p>
<p>Below are some examples.</p>
<p>Bad registration:</p>
+
<pre>&lt;message&gt;
- &lt;data:gcm xmlns:data=&quot;google:mobile:data&quot;&gt;
+ &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
{
- &quot;error&quot;:&quot;BAD_REGISTRATION&quot;, // error code
+ &quot;message_type&quot;:&quot;nack&quot;,
&quot;message_id&quot;:&quot;msgId1&quot;,
- &quot;from&quot;:&quot;PA91bHFOtaQGSwupt5l1og&quot;,
- &quot;message_type&quot;:&quot;nack&quot;
+ &quot;from&quot;:&quot;SomeInvalidRegistrationId&quot;,
+ &quot;error&quot;:&quot;BAD_REGISTRATION&quot;,
+ &quot;error_description&quot;:&quot;Invalid token on 'to' field: SomeInvalidRegistrationId&quot;
}
- &lt;/data:gcm&gt;
+ &lt;/gcm&gt;
&lt;/message&gt;</pre>
-<p>Invalid "time to live":</p>
+<p>Invalid JSON:</p>
<pre>&lt;message&gt;
- &lt;data:gcm xmlns:data=&quot;google:mobile:data&quot;&gt;
- {
- &quot;error&quot;:&quot;InvalidJson : INVALID_TTL : Invalid value (-1) for \&quot;time_to_live\&quot;: must be between 0 and \&quot;2419200\&quot;\n&quot;,
- &quot;message_id&quot;:&quot;msgId1&quot;,
- &quot;from&quot;:&quot;APA91bHFOtaQGSwupt5l1og&quot;,
- &quot;message_type&quot;:&quot;nack&quot;
- }
- &lt;/data:gcm&gt;
-&lt;/message&gt;</pre>
+ &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
+ {
+ &quot;message_type&quot;:&quot;nack&quot;,
+ &quot;message_id&quot;:&quot;msgId1&quot;,
+ &quot;from&quot;:&quot;APA91bHFOtaQGSwupt5l1og&quot;,
+ &quot;error&quot;:&quot;INVALID_JSON&quot;,
+ &quot;error_description&quot;:&quot;InvalidJson: JSON_TYPE_ERROR : Field \&quot;time_to_live\&quot; must be a JSON java.lang.Number: abc&quot;
+ }
+ &lt;/gcm&gt;
+&lt;/message&gt;
+</pre>
-<p>JSON type error:</p>
+<p>Quota exceeded:</p>
<pre>&lt;message&gt;
- &lt;data:gcm xmlns:data=&quot;google:mobile:data&quot;&gt;
- {
- &quot;error&quot;:&quot;InvalidJson : JSON_TYPE_ERROR : Field \&quot;delay_while_idle\&quot; must be a JSON java.lang.Boolean: not-boolean-user-supplied-value\n&quot;,
- &quot;message_id&quot;:&quot;msgId1&quot;,
- &quot;from&quot;:&quot;APA91bHFOtaQGSwupt5l1og&quot;,
- &quot;message_type&quot;:&quot;nack&quot;
- }
- &lt;/data:gcm&gt;
-&lt;/message&gt;</pre>
+ &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
+ {
+ &quot;message_type&quot;:&quot;nack&quot;,
+ &quot;message_id&quot;:&quot;msgId1&quot;,
+ &quot;from&quot;:&quot;APA91bHFOtaQGSwupt5l1og&quot;,
+ &quot;error&quot;:&quot;QUOTA_EXCEEDED&quot;,
+ &quot;error_description&quot;:&quot;Short-term downstream quota exceeded for this registration id&quot;
+ }
+ &lt;/gcm&gt;
+&lt;/message&gt;
+</pre>
<p>The following table lists NACK error codes. Unless otherwise
@@ -300,7 +308,7 @@ message should be immediately retried over another connection.</td>
</tr>
<tr>
<td>{@code INVALID_JSON}</td>
-<td>The JSON message payload was not valid.</td>
+<td>The JSON message payload is not valid.</td>
</tr>
<tr>
<td>{@code QUOTA_EXCEEDED}</td>
@@ -309,10 +317,10 @@ sender/device pair) is too high. If you want to retry the message, try using a s
rate.</td>
</tr>
<tr>
-<td>{@code SERVICE_UNAVAILABLE}</td>
-<td>CCS is not currently able to process the message. The
-message should be retried over the same connection using exponential backoff
-with an initial delay of 1 second.</td>
+ <td>{@code SERVICE_UNAVAILABLE}</td>
+ <td>CCS is not currently able to process the message. The
+ message should be retried over the same connection using exponential backoff
+ with an initial delay of 1 second.</td>
</tr>
</table>
@@ -382,8 +390,8 @@ Bundle data = new Bundle();
// Bundle data consists of a key-value pair
data.putString("hello", "world");
// "time to live" parameter
-// This is optional. It specifies a value in seconds up to 4 weeks.
-int ttl = [0 seconds, 4 weeks]
+// This is optional. It specifies a value in seconds up to 24 hours.
+int ttl = [0 seconds, 24 hours]
gcm.send(GCM_SENDER_ID + "&#64;gcm.googleapis.com", id, ttl, data);
</pre>
@@ -419,6 +427,69 @@ response to the above message:</p>
&lt;/gcm&gt;
&lt;/message&gt;</pre>
+<h3 id="receipts">Receive return receipts</h3>
+
+<p>You can use upstream messaging to get receipt notifications, confirming
+that a given message was sent to a device. Your 3rd-party app server receives the receipt
+notification from CCS once the message has been sent to the device.</p>
+
+<p>To enable this feature, the message your 3rd-party app server sends to CCS must include
+a field called <code>&quot;delivery_receipt_requested&quot;</code>. When this field is set to
+<code>true</code>, CCS sends a return receipt. Here is an XMPP stanza containing a JSON
+message with <code>&quot;delivery_receipt_requested&quot;</code> set to <code>true</code>:</p>
+
+<pre>&lt;message id=&quot;&quot;&gt;
+ &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
+ {
+ &quot;to&quot;:&quot;REGISTRATION_ID&quot;,
+ &quot;message_id&quot;:&quot;m-1366082849205&quot;
+ &quot;data&quot;:
+ {
+ &quot;hello&quot;:&quot;world&quot;,
+ }
+ &quot;time_to_live&quot;:&quot;600&quot;,
+ &quot;delay_while_idle&quot;: true,
+ <strong>&quot;delivery_receipt_requested&quot;: true</strong>
+ }
+ &lt;/gcm&gt;
+&lt;/message&gt;
+</pre>
+
+<p>Here is an example of a receipt notification message that CCS sends back to your 3rd-party
+app server:</p>
+
+</p>
+<pre>&lt;message id=&quot;&quot;&gt;
+ &lt;gcm xmlns=&quot;google:mobile:data&quot;&gt;
+ {
+ &quot;category&quot;:&quot;com.example.yourapp&quot;, // to know which app sent it
+ &quot;data&quot;:
+ {
+ &#x201c;message_status&quot;:&quot;MESSAGE_SENT_TO_DEVICE&quot;,
+ &#x201c;original_message_id&#x201d;:&#x201d;m-1366082849205&#x201d;
+ &#x201c;device_registration_id&#x201d;: &#x201c;REGISTRATION_ID&#x201d;
+ },
+ &quot;message_id&quot;:&quot;dr2:m-1366082849205&quot;,
+ &quot;message_type&quot;:&quot;receipt&quot;,
+ &quot;from&quot;:&quot;gcm.googleapis.com&quot;
+ }
+ &lt;/gcm&gt;
+&lt;/message&gt;</pre>
+
+<p>Note the following:</p>
+
+<ul>
+ <li>The {@code &quot;message_type&quot;} is set to {@code &quot;receipt&quot;}.
+ <li>The {@code &quot;message_status&quot;} is set to {@code &quot;MESSAGE_SENT_TO_DEVICE&quot;},
+ indicating that the message was delivered. Notice that in this case,
+{@code &quot;message_status&quot;} is not a field but rather part of the data payload.</li>
+ <li>The receipt message ID consists of the original message ID, but with a
+<code>dr:</code> prefix. Your 3rd-party app server must send an ACK back with this ID,
+which in this example is {@code dr2:m-1366082849205}.</li>
+ <li>The original message ID and status are inside the
+{@code &quot;data&quot;} field.</li>
+</ul>
+
<h2 id="flow">Flow Control</h2>
<p>Every message sent to CCS receives either an ACK or a NACK response. Messages
diff --git a/docs/html/google/gcm/client.jd b/docs/html/google/gcm/client.jd
index 42cebfcbb904..ec7e748662f4 100644
--- a/docs/html/google/gcm/client.jd
+++ b/docs/html/google/gcm/client.jd
@@ -246,7 +246,8 @@ private boolean checkPlayServices() {
<h3 id="sample-register">Register for GCM</h3>
<p>An Android application needs to register with GCM servers before it can receive
messages. When an app registers, it receives a registration ID, which it can then
-store for future use. In the following snippet the {@code onCreate()} method in the sample app's
+store for future use (note that registration IDs must be kept secret). In the
+following snippet the {@code onCreate()} method in the sample app's
main activity checks to see if the app is already registered with GCM and with
the server:</p>
diff --git a/docs/html/google/gcm/gcm.jd b/docs/html/google/gcm/gcm.jd
index 88bf6591f34e..19151b94e1c0 100644
--- a/docs/html/google/gcm/gcm.jd
+++ b/docs/html/google/gcm/gcm.jd
@@ -123,7 +123,7 @@ it to receive messages. Once the Android application has the registration ID, it
it to the 3rd-party application server, which uses it to identify each device
that has registered to receive messages for a given Android application. In other words,
a registration ID is tied to a particular Android application running on a particular
-device.
+device. Note that registration IDs must be kept secret.
<br/>
<br/>
<strong>Note:</strong> If you use
diff --git a/docs/html/google/gcm/index.jd b/docs/html/google/gcm/index.jd
index 8f325b85c461..1f05a7187508 100644
--- a/docs/html/google/gcm/index.jd
+++ b/docs/html/google/gcm/index.jd
@@ -14,7 +14,10 @@ header.hide=1
<h1 itemprop="name" style="margin-bottom:0;">Google Cloud Messaging for Android</h1>
<p itemprop="description">
Google Cloud Messaging for Android (GCM) is a service that allows you to send data
-from your server to your users' Android-powered device, and also to receive messages from devices on the same connection. The GCM service handles all aspects of queueing of messages and delivery to the target Android application running on the target device. GCM is completely free no matter how big your messaging needs are, and there are no quotas.
+from your server to your users' Android-powered device, and also to receive messages from
+devices on the same connection. The GCM service handles all aspects of queueing of messages
+and delivery to the target Android application running on the target device. GCM is
+completely free no matter how big your messaging needs are, and there are no quotas.
</p>
</div>
@@ -27,31 +30,39 @@ from your server to your users' Android-powered device, and also to receive mess
<p>This could be a lightweight
message telling your app there is new data to be fetched from the
server (for instance, a movie uploaded by a friend), or it could be a message containing
-up to 4kb of payload data (so apps like instant messaging can consume the message directly). <a href="{@docRoot}google/gcm/gcm.html">GCM Architectural Overview.</a></p>
+up to 4kb of payload data (so apps like instant messaging can consume the message directly).
+<a href="{@docRoot}google/gcm/gcm.html">GCM Architectural Overview.</a></p>
<h4>Send "send-to-sync" messages</h4>
- <p>A send-to-sync (collapsible) message is often a "tickle" that tells a mobile application to sync data from the server. For example, suppose you have an email application. When a user receives new email on the server, the server pings the mobile application with a "New mail" message. This tells the application to sync to the server to pick up the new email.
- <a href="{@docRoot}google/gcm/adv.html#s2s">Send-to-sync messages</a>.</p>
- </a>
+ <p>A send-to-sync (collapsible) message is often a "tickle" that tells a mobile
+ application to sync data from the server. For example, suppose you have an email
+ application. When a user receives new email on the server, the server pings the mobile
+ application with a "New mail" message. This tells the application to sync to the server
+ to pick up the new email.
+ <a href="{@docRoot}google/gcm/adv.html#s2s">Learn more &raquo;</a></p>
<h4>Send messages with payload</h4>
- <p>Unlike a send-to-sync message, every "message with payload" (non-collapsible message) is delivered. The payload the message contains can be up to 4kb.
- <a href="{@docRoot}google/gcm/adv.html#payload">Messages with payload</a>.</p>
+ <p>Unlike a send-to-sync message, every "message with payload" (non-collapsible message)
+ is delivered. The payload the message contains can be up to 4kb.
+ <a href="{@docRoot}google/gcm/adv.html#payload">Learn more &raquo;</a></p>
</div>
<div class="col-6 normal-links">
<h3 style="clear:left">New Features</h3>
- <h4>Faster, easier GCM setup</h4>
- <p>Streamlined registration makes it simple and fast to add GCM support to your Android app. <a href="{@docRoot}google/gcm/gs.html">Learn more &raquo;</a></p>
- <h4>Upstream messaging over XMPP</h4>
- <p>GCM's Cloud Connection Service (CCS) lets you communicate with Android devices over a persistent XMPP connection. The primary advantages of CCS are speed, and the ability to receive upstream messages (that is, messages from a device to the cloud). You can use the service in tandem with existing GCM APIs. Use <a href="https://services.google.com/fb/forms/gcm/">this form</a> to sign up for CCS. <a href="{@docRoot}google/gcm/ccs.html">Learn more &raquo;</a></p>
- <h4>Seamless multi-device messaging</h4>
- <p>Maps a single user to a notification key, which you can then use to send a single message to multiple devices owned by the user. Use <a href="https://services.google.com/fb/forms/gcm/">this form</a> to sign up for User Notifications. <a href="{@docRoot}google/gcm/notifications.html">Learn more &raquo;</a></p>
+
+
+ <h4>Return Receipts</h4>
+ <p>You can use upstream messaging to get receipt notifications, confirming that a given
+ message was sent to a device. Your 3rd-party app server receives the receipt notification
+ from CCS once the message has been sent to the device.
+ <a href="{@docRoot}google/gcm/ccs.html#receipts">Learn more &raquo;</a></p>
+
<h4>Get Started</h4>
- <p>Get started using the new features with a tutorial that walks you through creating a GCM app. <a href="{@docRoot}google/gcm/gs.html">Learn more &raquo;</a></p>
+ <p>Get started with a tutorial that walks you through creating a GCM app.
+ <a href="{@docRoot}google/gcm/gs.html">Learn more &raquo;</a></p>
</div>
</div>
diff --git a/docs/html/google/gcm/notifications.jd b/docs/html/google/gcm/notifications.jd
index 43a7368f7eae..2815f3d6cefb 100644
--- a/docs/html/google/gcm/notifications.jd
+++ b/docs/html/google/gcm/notifications.jd
@@ -14,8 +14,8 @@ page.title=User Notifications
<h2>In this document</h2>
<ol class="toc">
- <li><a href="#request">Request Format</a></li>
- <li><a href="#create">Generate a Notification Key</a></li>
+ <li><a href="#gen-server">Generate a Notification Key on the Server</a></li>
+ <li><a href="#gen-client">Generate a Notification Key on the Client</a></li>
<li><a href="#add">Add Registration IDs</a></li>
<li><a href="#remove">Remove Registration IDs</a></li>
<li><a href="#upstream">Send Upstream Messages</a></li>
@@ -31,15 +31,11 @@ page.title=User Notifications
<ol class="toc">
<li><a href="{@docRoot}google/gcm/gs.html">Getting Started</a></li>
-<li><a href="https://services.google.com/fb/forms/gcm/" class="external-link" target="_android">CCS and User Notifications Signup Form</a></li>
</ol>
</div>
</div>
-<p class="note"><strong>Note:</strong> To try out this feature, sign up using <a href="https://services.google.com/fb/forms/gcm/">this form</a>.</p>
-
-
<p>With user notifications, 3rd-party app servers can send a single message to
multiple instance of an app running on devices owned by a single user. This feature
is called <em>user notifications</em>. User notifications make it possible for every
@@ -76,27 +72,23 @@ and then reconciling it with the corresponding notification.
<p>You can use this feature with either the <a href="ccs.html">XMPP</a> (CCS) or
<a href="http.html">HTTP</a> connection server.</p>
+<p>You can generate notification keys in two different ways: on the server, and on
+the client, if the user has a Google account. All of the associated registration IDs
+can be mapped to a single user.</p>
<p>The examples below show you how to perform generate/add/remove operations,
and how to send upstream messages. For generate/add/remove operations, the
message body is JSON.</p>
-<h2 id="request">Request Format</h2>
-<p>To send a message, the application server issues a POST request to
-<code>https://android.googleapis.com/gcm/notification</code>.</p>
+<h2 id="gen-server">Generate a Notification Key on the Server</h2>
-<p>Here is the HTTP request header you should use for all create/add/remove operations:</p>
-
-<pre>content-type: "application/json"
-Header : "project_id": &lt;projectID&gt;
-Header: "Authorization", "key=API_KEY"
-</pre>
-
-<h2 id="create">Generate a Notification Key</h2>
+<p>To generate a notification key on the server, you create a new
+create a new <code>notification_key</code> and map it to a
+<code>notification_key_name</code>.</p>
<p>This example shows how to create a new <code>notification_key</code> for a
<code>notification_key_name</code> called <code>appUser-Chris</code>.
-The {@code notification_key_name} is a name or identifier (can be a username for
+The {@code notification_key_name} is a name or identifier (it can be a username for
a 3rd-party app) that is unique to a given user. It is used by third parties to
group together registration IDs for a single user. Note that <code>notification_key_name</code>
and <code>notification_key</code> are unique to a group of registration IDs. It is also
@@ -116,10 +108,109 @@ to use in subsequent operations:</p>
&quot;registration_ids&quot;: [&quot;4&quot;, &quot;8&quot;, &quot;15&quot;, &quot;16&quot;, &quot;23&quot;, &quot;42&quot;]
}</pre>
+<h3 id="request-server">Request format</h3>
+
+<p>To send a message in cases where your notification key is generated on the server,
+the application server issues a POST request to
+<code>https://android.googleapis.com/gcm/notification</code>.</p>
+
+<p>Here is the HTTP request header you should use for all server side create/add/remove operations:</p>
+
+<pre>content-type: "application/json"
+Header : "project_id": &lt;projectID&gt;
+Header: "Authorization", "key=API_KEY"
+</pre>
+
+
+<h2 id="gen-client">Generate a Notification Key on the Client</h2>
+
+<p>Generating a notification key on the client is useful for cases where a server is unavailable.
+To generate a notification key on the client, the device must have at least one
+Google account. Note that the process for generating a notification key on the client is significantly
+different from the server process described above.</p>
+
+<p>To generate a notification key on the client:</p>
+
+<ol>
+ <li>Open your project in the <a href="https://cloud.google.com/console">Google Developers Console</a>.</li>
+ <li>Click <strong>APIS &amp; AUTH &gt; Credentials</strong>.</li>
+ <li>Under OAuth, click <strong>Create new Client ID</strong>.</li>
+ <li>In the <strong>Create Client ID</strong> dialog, select <strong>Web Application</strong> as
+the application type, and click <strong>Create Client ID</strong>.</li>
+ <li>Copy the value from <strong>Client ID for web application &gt; Client ID</strong>.
+This client ID represents a Google account "scope" that you will use to generate an {@code id_token}.</li>
+</ol>
+
+<p>Once you've followed the above steps and gotten a client ID from Google Developers Console,
+ you're ready to add this feature to your app. First check the device for the presence of a Google
+account. For example:</p>
+
+<pre>// This snippet takes the simple approach of using the first returned Google account,
+// but you can pick any Google account on the device.
+public String getAccount() {
+ Account[] accounts = AccountManager.get(getActivity()).
+ getAccountsByType(&quot;com.google&quot;);
+ if (accounts.length == 0) {
+ return null;
+ }
+ return accounts[0].name;
+}</pre>
+
+<p>Next, get an authentication token ({@code id_token}) by using the <code><a href=
+"http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html">GoogleAuthUtil</a></code>
+class. For example:</p>
+
+<pre>String accountName = getAccount();
+
+// Initialize the scope using the client ID you got from the Console.
+final String scope = &quot;audience:server:client_id:&quot;
+ + &quot;1262xxx48712-9qs6n32447mcj9dirtnkyrejt82saa52.apps.googleusercontent.com&quot;;
+String id_token = null;
+try {
+ id_token = GoogleAuthUtil.getToken(context, accountName, scope);
+} catch (Exception e) {
+ log(&quot;exception while getting id_token: &quot; + e);
+}
+...</pre>
+
+<p>Now use <code>id_token</code> to authenticate your request.
+This add operation returns a {@code notification_key}.
+Third parties must save this {@code notification_key} (as well as its mapping to the
+<code>notification_key_name</code>)
+to use in subsequent operations. Note that a client request only takes a single regID.
+The only operations supported on the client side are add/remove.</p>
+
+<pre>request:
+{
+ &quot;operation&quot;: &quot;add&quot;,
+ &quot;notification_key_name&quot;: &quot;appUser-Chris&quot;,
+ &quot;registration_ids&quot;: [&quot;4&quot;]
+ &quot;id_token&quot;: &quot;id_token&quot;
+}</pre>
+
+<h3 id="request-client">Request format</h3>
+
+<p>To send a message in cases where your notification key is generated on the client,
+the application server issues a POST request to
+<code>https://android.googleapis.com/gcm/googlenotification</code>.</p>
+
+<p>Here is the HTTP request header you should use for all add/remove operations. The
+client side doesn't support the create operation;
+the add operation has the effect of creating the notification key if it doesn't already
+exist:</p>
+
+<pre>content-type: "application/json"
+Header : "project_id": &lt;projectID&gt;
+</pre>
+
+<p>Note that the authentication token is passed in the JSON body as shown above, not the header.
+This is different from the server case.</p>
+
+
<h2 id="add">Add Registration IDs</h2>
<p>This example shows how to add registration IDs for a given notification key.
-The maximum number of members allowed for a {@code notification_key} is 10.</p>
+The maximum number of members allowed for a {@code notification_key} is 20.</p>
<p>Note that the <code>notification_key_name</code> is not strictly required for
adding/removing regIDs. But including it protects you against accidentally using
diff --git a/docs/html/google/gcm/server.jd b/docs/html/google/gcm/server.jd
index ccd12670aeb3..e3a6b2527899 100644
--- a/docs/html/google/gcm/server.jd
+++ b/docs/html/google/gcm/server.jd
@@ -120,7 +120,8 @@ have an application server that meets the following criteria:</p>
<li>Able to store the API key and client registration IDs. The
API key is included in the header of POST requests that send
messages.</li>
- <li>Able to generate message IDs to uniquely identify each message it sends.</li>
+ <li>Able to generate message IDs to uniquely identify each message it sends. Message IDs
+should be unique per sender ID.</li>
</ul>
<h2 id="send-msg">Sending Messages</h2>
diff --git a/docs/html/google/gcs/gcs-signup.jd b/docs/html/google/gcs/gcs-signup.jd
new file mode 100644
index 000000000000..7334cec9059d
--- /dev/null
+++ b/docs/html/google/gcs/gcs-signup.jd
@@ -0,0 +1,10 @@
+page.title=Sign Up for Google Cloud Save
+
+@jd:body
+
+<p>Sign up to be a trial partner for Google Cloud Save.</p>
+
+
+<iframe src="https://docs.google.com/a/google.com/forms/d/1_V67YIXzLDLb-UzxOOpSjUDuJFfeYg3hEUT0oliK2ck/viewform?embedded=true" width="100%" height="930" frameborder="0" marginheight="0" marginwidth="0" id="signupform">Loading...</iframe>
+</body>
+</html>
diff --git a/docs/html/google/gcs/index.jd b/docs/html/google/gcs/index.jd
new file mode 100644
index 000000000000..e5f4776d59ef
--- /dev/null
+++ b/docs/html/google/gcs/index.jd
@@ -0,0 +1,30 @@
+page.title=Google Cloud Save
+page.tags="gcs"
+header.hide=1
+@jd:body
+
+
+<div class="landing-banner">
+
+<div class="col-5" style="min-height:100px">
+ <img src="{@docRoot}images/google/gcs.png" />
+</div>
+<div class="col-7">
+
+ <h1 itemprop="name" style="margin-bottom:0;">Google Cloud Save</h1>
+ <p itemprop="description">
+ Google Cloud Save is a service that enables per-user data storage
+and sync in your apps with no backend programming required. Google Cloud Save
+stores its data
+in <a href="http://developers.google.com/datastore/">Google Cloud Datastore</a>,
+ a fully managed, schemaless database for storing non-relational data. Cloud
+Datastore automatically scales with your users.
+Google Cloud Save works even when your device is offline, and it
+provides an easy transition to server-side coding because
+the same database is accessible via App Engine and Compute Engine.
+Finally, Google Cloud Save provides a generous initial per-user free quota that
+expands as your user base grows.
+</p>
+<a href="{@docRoot}google/gcs/gcs-signup.html" class="button">Sign Up</a>
+</div>
+</div>
diff --git a/docs/html/google/index.jd b/docs/html/google/index.jd
index 2e97d62aa4dc..4778a8571b5a 100644
--- a/docs/html/google/index.jd
+++ b/docs/html/google/index.jd
@@ -89,6 +89,16 @@ cloud messaging.</p>
to use Google Cloud Messaging.</p>
</div>
+<div class="landing-cell">
+ <div class="cell-icon">
+ <img src="{@docRoot}images/google/gcs-small.png" width="40" >
+ </div>
+ <h4><a href="{@docRoot}google/gcs/index.html"
+ >Google Cloud Save</a></h4>
+ <p>Enable per-user data storage and sync in your apps with no backend programming
+ required.</p>
+</div>
+
</div><!-- col-6 -->
diff --git a/docs/html/google/play-services/index.jd b/docs/html/google/play-services/index.jd
index f5d457430fa1..eec4f5a59f9b 100644
--- a/docs/html/google/play-services/index.jd
+++ b/docs/html/google/play-services/index.jd
@@ -11,10 +11,8 @@ header.hide=1
<div class="col-6">
<h1 itemprop="name" style="margin-bottom:0;">Google Play Services</h1>
- <p itemprop="description">
- </p>
-
- <p>Give your apps more features to attract users on a wider range of devices.
+ <p itemprop="description">Give your apps more features to attract users
+ on a wider range of devices.
With Google Play services, your app can take advantage
of the latest, Google-powered features such as Maps, Google+, and more,
with automatic platform updates distributed as an APK through
diff --git a/docs/html/guide/practices/verifying-apps-art.jd b/docs/html/guide/practices/verifying-apps-art.jd
index 0eedfafbbd93..8a88222ee2a0 100644
--- a/docs/html/guide/practices/verifying-apps-art.jd
+++ b/docs/html/guide/practices/verifying-apps-art.jd
@@ -66,7 +66,7 @@ to prevent <a
href="{@docRoot}/tools/debugging/debugging-memory.html#LogMessages"><code>GC_FOR_ALLOC</code></a>-type
occurrences or to reduce fragmentation. You can verify which runtime is in use
by calling {@link java.lang.System#getProperty(java.lang.String)
-System.getProperty("dalvik.vm.version")}. If ART is in use, the property's value
+System.getProperty("java.vm.version")}. If ART is in use, the property's value
is <code>"2.0.0"</code> or higher.</p>
<p>Furthermore, a compacting garbage collector is under development in the <a
diff --git a/docs/html/images/google/datastore-logo.png b/docs/html/images/google/datastore-logo.png
new file mode 100644
index 000000000000..a0fc0a0a0e9a
--- /dev/null
+++ b/docs/html/images/google/datastore-logo.png
Binary files differ
diff --git a/docs/html/images/google/gcs-small.png b/docs/html/images/google/gcs-small.png
new file mode 100644
index 000000000000..b8dbe0ddb2cf
--- /dev/null
+++ b/docs/html/images/google/gcs-small.png
Binary files differ
diff --git a/docs/html/images/google/gcs.png b/docs/html/images/google/gcs.png
new file mode 100644
index 000000000000..7355d64e773b
--- /dev/null
+++ b/docs/html/images/google/gcs.png
Binary files differ
diff --git a/docs/html/images/home/auto.png b/docs/html/images/home/auto.png
new file mode 100644
index 000000000000..7ea01b09ae0c
--- /dev/null
+++ b/docs/html/images/home/auto.png
Binary files differ
diff --git a/docs/html/images/home/tv.png b/docs/html/images/home/tv.png
new file mode 100644
index 000000000000..3cf2034d7e7b
--- /dev/null
+++ b/docs/html/images/home/tv.png
Binary files differ
diff --git a/docs/html/images/home/wear.png b/docs/html/images/home/wear.png
new file mode 100644
index 000000000000..dfaded7310d5
--- /dev/null
+++ b/docs/html/images/home/wear.png
Binary files differ
diff --git a/docs/html/images/tools/wizard2.png b/docs/html/images/tools/wizard2.png
new file mode 100644
index 000000000000..921d58c1421f
--- /dev/null
+++ b/docs/html/images/tools/wizard2.png
Binary files differ
diff --git a/docs/html/images/tools/wizard3.png b/docs/html/images/tools/wizard3.png
new file mode 100644
index 000000000000..d5749d53a1d3
--- /dev/null
+++ b/docs/html/images/tools/wizard3.png
Binary files differ
diff --git a/docs/html/images/tools/wizard4.png b/docs/html/images/tools/wizard4.png
new file mode 100644
index 000000000000..2709f7b8c1a7
--- /dev/null
+++ b/docs/html/images/tools/wizard4.png
Binary files differ
diff --git a/docs/html/images/tools/wizard5.png b/docs/html/images/tools/wizard5.png
new file mode 100644
index 000000000000..105cf2adfc25
--- /dev/null
+++ b/docs/html/images/tools/wizard5.png
Binary files differ
diff --git a/docs/html/images/tools/wizard6.png b/docs/html/images/tools/wizard6.png
new file mode 100644
index 000000000000..8b0691c9a7e1
--- /dev/null
+++ b/docs/html/images/tools/wizard6.png
Binary files differ
diff --git a/docs/html/images/tools/wizard7.png b/docs/html/images/tools/wizard7.png
new file mode 100644
index 000000000000..83396cfe4a69
--- /dev/null
+++ b/docs/html/images/tools/wizard7.png
Binary files differ
diff --git a/docs/html/index.jd b/docs/html/index.jd
index 2177352d685b..2f015388e0a8 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -7,7 +7,7 @@ page.customHeadTag=<meta name="google-site-verification" content="sa-bIAI6GKvct3
@jd:body
<!-- Top full-bleed carousel -->
-<div class="home-new-carousel-1">
+<div class="home-new-carousel-1" style="margin-top:40px">
<div class="fullscreen-carousel-content">
<div class="vcenter">
<div class="wrap clearfix">
@@ -42,7 +42,7 @@ page.customHeadTag=<meta name="google-site-verification" content="sa-bIAI6GKvct3
</div> <!-- end .fullscreen-carousel-content -->
</div> <!-- end .fullscreen-carousel -->
-<div class="actions-bar">
+<div class="actions-bar" style="margin-top:30px">
<div class="wrap">
<div class="actions">
<div><a href="{@docRoot}sdk/index.html">Get the SDK</a></div>
@@ -59,54 +59,43 @@ page.customHeadTag=<meta name="google-site-verification" content="sa-bIAI6GKvct3
<div class="landing-section">
<div class="wrap">
<div class="landing-section-header">
- <div class="landing-h1">Android, Everywhere You Need It</div>
- <div class="landing-subhead">
- Android runs on hundreds of millions of handheld devices around the world, <br /> and it now supports these exciting, new form-factors.
+ <div class="landing-h1">Develop for Multiple Form Factors</div>
+ <div class="landing-subhead" style="margin-top: 20px;">
+ Android runs on hundreds of millions of handheld devices around the world, <br />
+ and it now supports these exciting, new form-factors.
</div>
</div>
- <div class="landing-body">
+ <div class="landing-body" style="margin-top: 80px;">
<div class="landing-breakout cols">
-
- <!-- <div class="resource-widget resource-flow-layout col-16" data-query="collection:index/devices"
- data-sortorder="" data-cardsizes="6x6, 6x6, 6x6" data-maxresults="3"></div>-->
-
<div class="col-3-wide">
- <img src="" alt="">
-
- <p>Wearable</p>
- <p class="landing-small">
- Provide information on-the-go for your users, whenever they need it.
+ <img src="{@docRoot}images/home/wear.png">
+ <p class="landing-small" style="margin-top:30px">
+ Provide information on-the-go for your users, whenever they need it.
</p>
<p class="landing-small">
- <a href="{@docRoot}wear">Learn about Android Wear</a>
+ <a href="{@docRoot}wear/index.html">Learn about Android Wear</a>
</p>
</div>
-
- <div class="col-3-wide">
- <img src="" alt="">
-
- <p>TV</p>
- <p class="landing-small">
- Build your apps for the big screen and bring your content to life.
- </p>
+ <div class="col-3-wide">
+ <img src="{@docRoot}images/home/tv.png">
+ <p class="landing-small" style="margin-top:30px">
+ Build your apps for the big screen and bring your content to life.
+ </p>
<p class="landing-small">
- <a href="{@docRoot}tv">Learn about Android TV</a>
- </p>
- </div>
-
- <div class="col-3-wide">
- <img src="" alt="">
+ <a href="{@docRoot}tv/index.html">Learn about Android TV</a>
- <p>Auto</p>
- <p class="landing-small">
- Extend your music apps to automobile
- entertainment systems.
</p>
+ </div>
+ <div class="col-3-wide">
+ <img src="{@docRoot}images/home/auto.png">
+ <p class="landing-small" style="margin-top:30px">
+ Extend your music apps to automobile
+ entertainment systems.
+ </p>
<p class="landing-small">
- <a href="{@docRoot}auto">Learn about Android Auto</a>
+ <a href="{@docRoot}auto/index.html">Learn about Android Auto</a>
</p>
</div>
-
</div>
</div>
</div> <!-- end .wrap -->
diff --git a/docs/html/jd_extras.js b/docs/html/jd_extras.js
index eb7bfb68de6a..03bbea193bfa 100644
--- a/docs/html/jd_extras.js
+++ b/docs/html/jd_extras.js
@@ -1172,7 +1172,7 @@ DISTRIBUTE_RESOURCES = DISTRIBUTE_RESOURCES.concat([
"tags": [],
"url": "https://developers.google.com/edu/",
"timestamp": null,
- "image": "https://developers.google.com/edu/images/edu-guidelines.jpg",
+ "image": "https://developers.google.com/edu/images/home-android.png",
"title": "Chrome Apps in Google Play for Education",
"summary": "Find out more about Chrome apps in Google Play for Education.",
"keywords": [],
diff --git a/docs/html/jd_tag_helpers.js b/docs/html/jd_tag_helpers.js
index b0fe67a49796..7538e4df5a89 100644
--- a/docs/html/jd_tag_helpers.js
+++ b/docs/html/jd_tag_helpers.js
@@ -64,6 +64,7 @@ function buildResourceLookupMap(resourceDict) {
// Type lookups
var ALL_RESOURCES_BY_TYPE = {
+ 'about': ABOUT_RESOURCES,
'design': DESIGN_RESOURCES,
'distribute': DISTRIBUTE_RESOURCES,
'google': GOOGLE_RESOURCES,
@@ -79,6 +80,7 @@ var IS_RESOURCE_OF_TYPE = buildResourceLookupMap(ALL_RESOURCES_BY_TYPE);
// Tag lookups
var ALL_RESOURCES_BY_TAG = mergeMaps(
+ {map:ABOUT_BY_TAG,arr:ABOUT_RESOURCES},
{map:DESIGN_BY_TAG,arr:DESIGN_RESOURCES},
{map:DISTRIBUTE_BY_TAG,arr:DISTRIBUTE_RESOURCES},
{map:GOOGLE_BY_TAG,arr:GOOGLE_RESOURCES},
diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd
index 284ad2a40a68..20764be7d494 100644
--- a/docs/html/preview/api-overview.jd
+++ b/docs/html/preview/api-overview.jd
@@ -18,13 +18,12 @@ sdk.platform.apiLevel=20
<li><a href="#ART">New Android Runtime (ART)</a></li>
<li><a href="#BehaviorNotifications">If your app implements notifications...</a></li>
<li><a href="#BehaviorMediaControl">If your app uses RemoteControlClient...</a></li>
- <li><a href="#BehaviorGetRecentTasks">If your app uses ActivityManager.getRecentTasks()...</a></li>
+<li><a href="#BehaviorGetRecentTasks">If your app uses ActivityManager.getRecentTasks()...</a></li>
</ol>
</li>
<li><a href="#UI">User Interface</a>
<ol>
<li><a href="#MaterialDesign">Material design support</a></li>
- <li><a href="#DoNotDisturb">Do Not Disturb mode</a></li>
<li><a href="#LockscreenNotifications">Lockscreen notifications</a></li>
<li><a href="#NotificationsMetadata">Notifications metadata</a></li>
<li><a href="#Recents">Concurrent documents and activities in the Recents screen</a></li>
@@ -39,11 +38,12 @@ sdk.platform.apiLevel=20
<li><a href="#Animations">Animation &amp; Graphics</a>
<ol>
<li><a href="#OpenGLES-3-1">Support for OpenGL ES 3.1</a></li>
+ <li><a href="#AndroidExtensionPack">Android Extension Pack</a></li>
</ol>
</li>
<li><a href="#Multimedia">Multimedia</a>
<ol>
- <li><a href="#Camera-v2">Camera v2 API</a></li>
+ <li><a href="#Camera-v2">Camera API for advanced camera capabilities</a></li>
<li><a href="#AudioPlayback">Audio playback</a></li>
<li><a href="#MediaPlaybackControl">Media playback control</a></li>
</ol>
@@ -55,7 +55,7 @@ sdk.platform.apiLevel=20
</li>
<li><a href="#Wireless">Wireless and Connectivity</a>
<ol>
- <li><a href="#Multinetwork">Dynamic network selection and seamless handoff</a></li>
+ <li><a href="#Multinetwork">Multiple network connections</a></li>
<li><a href="#BluetoothBroadcasting">Bluetooth broadcasting</a></li>
<li><a href="#NFCEnhancements">NFC enhancements</a></li>
</ol>
@@ -69,7 +69,7 @@ sdk.platform.apiLevel=20
<li><a href="#Enterprise">Enterprise</a>
<ol>
<li><a href="#ManagedProvisioning">Managed provisioning</a></li>
- <li><a href="#LockToAppMode">Lock-to-App mode</a></li>
+ <li><a href="#TaskLocking">Task locking</a></li>
</ol>
</li>
<li><a href="#Printing">Printing Framework</a>
@@ -85,17 +85,10 @@ sdk.platform.apiLevel=20
<li><a href="#Manifest">Manifest Declarations</a>
<ol>
<li><a href="#ManifestFeatures">Declarable required features</a></li>
- <li><a href="#ManifestPermissions">User permissions</a></li>
</ol>
</li>
</ol>
-<h2>See also</h2>
-<ol>
-<li><a href="{@docRoot}sdk/api_diff/20/changes.html">API
-Differences Report &raquo;</a> </li>
-</ol>
-
</div>
</div>
@@ -163,10 +156,10 @@ Behavior on the Android Runtime (ART)</a>. Pay particular attention if:</p>
backgrounds to match the new material design widgets. Make sure that all your
notifications look right with the new color scheme:</p>
-<div class="figure" style="width:220px">
+<div class="figure" style="width:320px">
<img src="images/hun-example.png"
srcset="images/hun-example@2x.png 2x"
- alt="" width="220" height="372" id="figure1" />
+ alt="" width="320" height="541" id="figure1" />
<p class="img-caption">
<strong>Figure 1.</strong> Fullscreen activity showing a heads-up notification
</p>
@@ -177,7 +170,7 @@ notifications look right with the new color scheme:</p>
<li>Update or remove assets that involve color.</li>
<li>The system automatically inverts action icons in notifications. Use
- {@code android.app.Notification.Builder.setColor()} to set an accent color
+ {@code android.app.Notification. Builder.setColor()} to set an accent color
in a circle behind your {@link android.app.Notification#icon} image.</li>
<li>The system ignores all non-alpha channels in action icons and the main
@@ -188,7 +181,9 @@ notifications look right with the new color scheme:</p>
<p>If you are currently adding sounds and vibrations to your notifications by
using the {@link android.media.Ringtone}, {@link android.media.MediaPlayer},
or {@link android.os.Vibrator} classes, remove this code so that
-the system can present notifications correctly in <a href="#DoNotDisturb">Do Not Disturb</a> mode. Instead, use the {@link android.app.Notification.Builder} methods instead to add sounds and vibration.</p>
+the system can present notifications correctly in Do
+not Disturb mode. Instead, use the {@link android.app.Notification.Builder}
+methods instead to add sounds and vibration.</p>
<p>Notifications now appear in a small floating window
(also called a <em>heads-up notification</em>) when the device is active
@@ -218,40 +213,46 @@ gives your app more control over the presentation of media buttons, while
providing a consistent experience for users across the lockscreen and
unlocked device.</p>
-<p>The L Developer Preview introduces a new {@code android.app.Notification.MediaStyle} template which is recommended for this purpose. {@code MediaStyle} converts notification actions that you added with {@link android.app.Notification.Builder#addAction(int, java.lang.CharSequence, android.app.PendingIntent) Notification.Builder.addAction()} into compact buttons embedded in your app's media playback notifications.</p>
+<p>The L Developer Preview introduces a new
+{@code android.app.Notification.MediaStyle} template which is recommended for
+this purpose. {@code MediaStyle} converts notification actions that you added
+with
+{@link android.app.Notification.Builder#addAction(int, java.lang.CharSequence,
+ android.app.PendingIntent)
+Notification.Builder.addAction()} into compact buttons embedded in your app's
+media playback notifications.</p>
<p>If you are using the new
-{@code android.media.session.MediaSession} class (see <a href="#MediaPlaybackControl">Media Playback Control</a> below), attach your session
-token with {@code Notification.MediaStyle.setMediaToken()} to inform the
-system that this notification controls an ongoing media session.</p>
+{@code android.media.session.MediaSession} class
+(see <a href="#MediaPlaybackControl">Media Playback Control</a> below), attach
+your session token with {@code Notification.MediaStyle.setMediaToken()} to
+inform the system that this notification controls an ongoing media session.</p>
<p>Call {@code
Notification.Builder.setVisibility(Notification.VISIBILITY_PUBLIC)} to mark a
-notification as safe to show atop any lockscreen (secure or otherwise). For more information, see
-<a href="#LockscreenNotifications">Lockscreen Notifications</a>.</p>
+notification as safe to show atop any lockscreen (secure or otherwise). For more
+information, see <a href="#LockscreenNotifications">Lockscreen Notifications</a>.</p>
<h3 id="BehaviorGetRecentTasks">If your app uses ActivityManager.getRecentTasks()...</h3>
-<p>With the introduction of the new <em>concurrent documents and activities tasks</em> feature in the upcoming
-release (see <a href="#Recents">Concurrent documents and activities in Recents
-screen</a> below),
+<p>With the introduction of the new <em>concurrent documents and activities
+tasks</em> feature in the upcoming release (see <a href="#Recents">Concurrent
+documents and activities in Recents screen</a> below),
the {@link android.app.ActivityManager#getRecentTasks
-ActivityManager.getRecentTasks()} method is now
-deprecated to improve user privacy. For backward
-compatibility, this method still returns a small subset of its data, including the
-calling application’s own tasks and possibly some other non-sensitive tasks
-(such as Home). If your app is using this method to retrieve its own tasks,
-use {@code android.app.ActivityManager.getAppTasks()} instead to retrieve that
-information.</p>
+ActivityManager.getRecentTasks()} method is now deprecated to improve user
+privacy. For backward compatibility, this method still returns a small subset of
+its data, including the calling application’s own tasks and possibly some other
+non-sensitive tasks (such as Home). If your app is using this method to retrieve
+its own tasks, use {@code android.app.ActivityManager.getAppTasks()} instead to
+retrieve that information.</p>
<h2 id="UI">User Interface</h2>
<h3 id="MaterialDesign">Material design support</h3>
<p>The upcoming release adds support for Android's new <em>material</em> design
-style. You can create
-apps with material design that are visually dynamic and have UI element transitions
-that feel natural to users. This support includes:</p>
+style. You can create apps with material design that are visually dynamic and
+have UI element transitions that feel natural to users. This support includes:</p>
<ul>
@@ -268,9 +269,9 @@ that feel natural to users. This support includes:</p>
<a href="{@docRoot}preview/material/index.html">Material Design</a>.</p>
<h3 id="LockscreenNotifications">Lockscreen notifications</h3>
-<p>Lockscreens in the L Developer Preview have the ability to present notifications.
-Users can choose via <em>Settings</em> whether to allow sensitive notification
-content to be shown over a secure lockscreen.</p>
+<p>Lockscreens in the L Developer Preview have the ability to present
+notifications. Users can choose via <em>Settings</em> whether to allow
+sensitive notification content to be shown over a secure lockscreen.</p>
<p>Your app can control the level of detail visible when its notifications are
displayed over the secure lockscreen. To control the visibility level, call
@@ -287,33 +288,12 @@ notification’s icon.</li>
<p>When {@code VISIBILITY_PRIVATE} is set, you can also provide a redacted
version of the notification content that hides personal details. For example,
-an SMS app might display a notification that shows "You have 3 new text messages." but hides the message content and senders. To provide this alternative notification, first create the replacement notification using {@link android.app.Notification.Builder}. When you create the private notification object, attach
-the replacement notification to it through the {@code Notification.Builder.setPublicVersion()} method.</p>
-
-<h3 id="DoNotDisturb">Do Not Disturb mode</h3>
-
-<p>The L Developer Preview introduces a new <em>Do Not Disturb</em> mode. When
-the user puts the device in <em>Do Not Disturb</em> mode, the device limits
-the frequency of the notifications it shows the user (when the user
-wants to avoid distractions). The user can
-customize the feature in a number of ways, such as:</p>
-
-<ul>
- <li>Specifying important people, whose calls should go through even when
- the device is in <em>Do Not Disturb</em> mode.</li>
- <li>Setting custom categories to allow notifications when the device is in
- <em>Do Not Disturb</em> mode. Examples of such categories include phone
- calls and direct communications (like Hangouts and Skype calls).</li>
- <li>Setting rules so <em>Do Not Disturb</em> automatically goes into effect in
- certain conditions (like at particular times of day).</li>
-</ul>
-
-<p>You should add the appropriate metadata to your app notifications to help
-make sure <em>Do Not Disturb</em> mode handles them properly. For example, if
-your app is an alarm clock,
-you can tag the notification as an alarm so it will wake the user up even if the
-device is in <em>Do Not Disturb</em> mode. For more information, see <a
-href="#NotificationsMetadata">Notifications metadata</a>.</p>
+an SMS app might display a notification that shows "You have 3 new text messages."
+but hides the message content and senders. To provide this alternative
+notification, first create the replacement notification using
+{@link android.app.Notification.Builder}. When you create the private
+notification object, attach the replacement notification to it through the
+{@code Notification.Builder.setPublicVersion()} method.</p>
<h3 id="NotificationsMetadata">Notifications metadata</h3>
<p>The L Developer Preview uses metadata associated with your app notifications
@@ -326,7 +306,7 @@ notification:</p>
<ul>
<li>{@code setCategory()}. Depending on the message category, this tells
the system how to handle your app notifications when the device is
-in <em>Do Not Disturb</em> mode (for example, if your notification represents an
+in <em>Do not Disturb</em> mode (for example, if your notification represents an
incoming call, instant message, or alarm).
<li>{@code setPriority()}. Notifications with the priority field set to
{@code PRIORITY_MAX} or {@code PRIORITY_HIGH} will appear in a small floating
@@ -354,7 +334,8 @@ through the {@code android.app.ActivityManager.AppTask} class.</p>
<p>To insert a logical break so that the system treats your activity as a new
task, use {@code android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT} when
-launching the activity with {@link android.app.Activity#startActivity(android.content.Intent) startActivity()}. You can also get this behavior by declaring the
+launching the activity with {@link android.app.Activity#startActivity(android.content.Intent)
+startActivity()}. You can also get this behavior by declaring the
<a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
attribute {@code documentLaunchMode="intoExisting"} or {@code ="always"} in your
manifest.</p>
@@ -381,7 +362,8 @@ as well as bug fixes. The default user-agent string for a
been updated to incorporate 36.0.0.0 as the version number.</p>
<p>Additionally, this release brings support for the
-<a href="https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html">WebAudio</a>, <a href="https://www.khronos.org/webgl/">WebGL</a>, and
+<a href="https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html">WebAudio</a>,
+<a href="https://www.khronos.org/webgl/">WebGL</a>, and
<a href="http://www.webrtc.org/">WebRTC</a> open standards. To learn more about
the new features included in this release, see <a href="https://developer.chrome.com/multidevice/webview/overview">WebView for Android</a>.</p>
@@ -418,14 +400,16 @@ ES 3.1. Key new functionality provided in OpenGL ES 3.1 includes:</p>
<li>Compute shaders
<li>Separate shader objects
<li>Indirect draw commands
-<li>Enhanced texturing functionality
+<li>Multisample and stencil textures
<li>Shading language improvements
-<li>Optional extensions for per-sample shading, advanced blending modes, and more
+<li>Extensions for advanced blend modes and debugging
<li>Backward compatibility with OpenGL ES 2.0 and 3.0
</ul>
-<p>The Java interface for OpenGL ES 3.1 on Android is provided with GLES31. When using OpenGL ES 3.1, be sure that you declare it in your manifest file with the
-<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature&gt;}</a> tag and the {@code android:glEsVversion} attribute. For example:</p>
+<p>The Java interface for OpenGL ES 3.1 on Android is provided with {@code GLES31}. When
+using OpenGL ES 3.1, be sure that you declare it in your manifest file with the
+<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature&gt;}</a>
+tag and the {@code android:glEsVversion} attribute. For example:</p>
<pre>
&lt;manifest&gt;
@@ -434,11 +418,36 @@ ES 3.1. Key new functionality provided in OpenGL ES 3.1 includes:</p>
&lt;/manifest&gt;
</pre>
-<p>For more information about using OpenGL ES, including how to check the device’s supported OpenGL ES version at runtime, see the <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES API guide</a>.</p>
+<p>For more information about using OpenGL ES, including how to check the
+device’s supported OpenGL ES version at runtime, see the
+<a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES API guide</a>.</p>
+
+<h3 id="AndroidExtensionPack">Android Extension Pack</h3>
+
+<p>In addition to OpenGL ES 3.1, this release provides an extension pack with Java interfaces and
+native support for advanced graphics functionality. These extensions are treated as a single
+package by Android. (If the {@code ANDROID_extension_pack_es31} extension is present, your app can
+assume all extensions in the package are present and enable the shading language features with
+a single {@code #extension} statement.</p>
+<p>The extension pack supports:</p>
+<ul>
+<li>Guaranteed fragment shader support for shader storage buffers, images, and
+ atomics (fragment shader support is optional in OpenGL ES 3.1.)</li>
+<li>Tessellation and geometry shaders</li>
+<li>ASTC (LDR) texture compression format</li>
+<li>Per-sample interpolation and shading</li>
+<li>Different blend modes for each color attachment in a frame buffer</li>
+</ul>
+
+<p>The Java interface for the extension pack is provided with {@code GLES31Ext}.
+In your app manifest, you can declare that support for the extension pack is
+required, with the
+<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature&gt;}</a>
+tag, but the precise syntax is not finalized in the L Developer Preview.</p>
<h2 id="Multimedia">Multimedia</h2>
-<h3 id="Camera-v2">Camera v2 API</h3>
+<h3 id="Camera-v2">Camera API for advanced camera capabilities</h3>
<p>The L Developer Preview introduces the new {@code android.hardware.camera2}
API to facilitate fine-grain photo capture and image processing. You can now
@@ -456,18 +465,22 @@ capture request. Now when the system completes the image capture request, your
{@code onCaptureCompleted()}, providing you with the image capture metadata in a
{@code CaptureResult}.</p>
+<p>To see an example of how to use the updated Camera API, refer to the {@code Camera2Basic}
+and {@code Camera2Video} implementation samples in this release.</p>
+
<h3 id="AudioPlayback">Audio playback</h3>
<p>This release includes the following changes to
{@link android.media.AudioTrack}:</p>
<ul>
<li>Your app can now supply audio data in floating-point format
({@code android.media.AudioFormat.ENCODING_PCM_FLOAT}). This permits greater
-dynamic range, more consistent precision, and greater headroom. Floating-point arithmetic is especially useful during intermediate calculations. Playback
+dynamic range, more consistent precision, and greater headroom. Floating-point
+arithmetic is especially useful during intermediate calculations. Playback
end-points use integer format for audio data, and with lower bit-depth. (In the
L Developer Preview, portions of the internal pipeline are not yet
floating-point.)
- <li>Your app can now supply audio data as a {@link java.nio.ByteBuffer}, in the same
-format as provided by {@link android.media.MediaCodec}.
+ <li>Your app can now supply audio data as a {@link java.nio.ByteBuffer}, in
+the same format as provided by {@link android.media.MediaCodec}.
<li>The {@code WRITE_NON_BLOCKING} option can simplify buffering and
multithreading for some apps.
</ul>
@@ -501,37 +514,44 @@ knows about your playback and can extract and show album art.</p>
<h3 id="DirectorySelection">Directory selection</h3>
-<p>The L Developer Preview extends the <a href="{@docRoot}guide/topics/providers/document-provider.html">Storage Access Framework</a> to let users select an entire directory, rather than individual files, to
-give your app read/write access to media files. When a directory is selected,
-your app also has access to all its child directories and content.</p>
-
-<p>To get the absolute paths to directories on external storage devices where
-applications can store media files, call the new
-{@code android.content.Context.getExternalMediaDirs()} method. No
-additional
-permissions are needed by your app to read or write to the returned paths.
-In this context, "external storage devices" are those devices which the system
-considers to be a
-permanent part of the device, and includes emulated external storage and
-physical media slots such as SD cards in battery compartments.</p>
-
-<p>You can bring up a system UI to allow the user to pick a directory subtree.
-To do so, send {@code android.intent.action.OPEN_DOCUMENT_TREE} in an
-{@link android.content.Intent}. If the call is successful, the system displays
-the {@link android.provider.DocumentsProvider} instances installed on the
-device for the user to select. When the user selects a directory from this UI,
-the system returns a URI representing the selected directory tree.</p>
-
-<p>If you want to access a document in an existing directory, call the
-{@code android.provider.DocumentsContract.buildDocumentViaUri()} method.
-Pass the method a URI representing the path to the parent directory, and the
-target document
-ID. The method returns a new {@link android.net.Uri} which your app can
-use to write media content with {@code DocumentsContract.createDocument()}.
+<p>The L Developer Preview extends the <a href="{@docRoot}guide/topics/providers/document-provider.html">Storage Access Framework</a> to let users select an entire directory subtree,
+giving apps read/write access to all contained documents without requiring user
+confirmation for each item.</p>
+
+<p>To select a directory subtree, build and send an
+{@code android.intent.action.OPEN_DOCUMENT_TREE} {@link android.content.Intent}.
+The system displays all
+{@link android.provider.DocumentsProvider} instances that support subtree selection,
+letting the user browse and select a directory. The returned URI represents access to the selected
+subtree. You can then use {@code DocumentsContract.buildChildDocumentsUriUsingTree()}
+and {@code DocumentsContract.buildDocumentUriUsingTree()} along with
+{@code ContentResolver.query()} to explore the subtree.</p>
+
+<p>The new {@code DocumentsContract.createDocument()} method lets you create
+new documents or directories anywhere under the subtree. To manage
+existing documents, use {@code DocumentsContract.renameDocument()} and
+{@code DocumentsContract.deleteDocument()}. Check {@code DocumentsContract.Document.COLUMN_FLAGS}
+to verify provider support for these calls before issuing them.</p>
+
+<p>If you're implementing a {@link android.provider.DocumentsProvider} and want
+to support subtree selection, implement {@code DocumentsProvider.isChildDocument()}
+and include {@code Documents.Contract.FLAG_SUPPORTS_IS_CHILD} in your
+{@code Root.COLUMN_FLAGS}.</p>
+
+<p>The L Developer Preview also introduces new package-specific directories on
+shared storage where your app can place media files for inclusion in
+{@link android.provider.MediaStore}. The new
+{@code android.content.Context.getExternalMediaDirs()} returns paths to these
+directories on all shared storage devices. Similarly to
+{@link android.content.Context#getExternalFilesDir(java.lang.String) Context.getExternalFilesDir()},
+no additional permissions are needed by your app to access the returned paths. The
+platform periodically scans for new media in these directories, but you can also
+use {@link android.media.MediaScannerConnection} to explicitly scan for new
+content.</p>
<h2 id="Wireless">Wireless &amp; Connectivity</h2>
-<h3 id="Multinetwork">Dynamic network selection and seamless handoff</h3>
+<h3 id="Multinetwork">Multiple network connections</h3>
<p>The L Developer Preview provides new multi-networking APIs. These let your app
dynamically scan for available networks with specific capabilities, and
establish a connection to them. This is useful when your app requires a
@@ -561,7 +581,8 @@ information about the network, or to direct traffic to use the selected
network.</p>
<h3 id="BluetoothBroadcasting">Bluetooth broadcasting</h3>
-<p>Android 4.3 introduced platform support for <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">Bluetooth Low Energy</a>
+<p>Android 4.3 introduced platform support for
+ <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">Bluetooth Low Energy</a>
(BLE) in the central role. In the L Developer Preview, an Android device can now
act as a Bluetooth LE <em>peripheral device</em>. Apps can use this capability
to make their presence known to
@@ -569,7 +590,8 @@ nearby devices. For instance, you can build apps that allow a device to
function as a pedometer or health monitor and communicate its data with another
BLE device.</p>
-<p>The new {@code android.bluetooth.le} APIs enable your apps to broadcast advertisements, scan for responses, and form connections with nearby BLE devices.
+<p>The new {@code android.bluetooth.le} APIs enable your apps to broadcast
+advertisements, scan for responses, and form connections with nearby BLE devices.
You must add the {@code android.permission.BLUETOOTH_ADMIN} permission in your
manifest in order for your app to use the new advertising and scanning features.</a>
@@ -652,6 +674,9 @@ JobScheduler jobScheduler =
jobScheduler.schedule(uploadTask);
</pre>
+<p>To see an example of how to use the {@code JobScheduler} API, refer to the
+{@code JobSchedulerSample} implementation sample in this release.</p>
+
<h3 id="PowerMeasurementTools">Developer tools for power measurement</h3>
<p>The L Developer Preview provides several new developer tools and APIs to help
you better measure and understand your app's power usage.</p>
@@ -692,7 +717,7 @@ in {@code &lt;sdk&gt;/tools}.</p>
<img src="images/battery_historian.png"
srcset="images/battery_historian@2x.png 2x"
- alt="" width="440" height="240"
+ alt="" width="760" height="462"
id="figure2" />
<p class="img-caption">
<strong>Figure 2.</strong>HTML visualization generated by the Battery
@@ -726,7 +751,7 @@ $ historian.par [-p powerfile] bugreport.txt > out.html
<div class="figure" style="width:360px">
<img src="images/managed_apps_launcher.png"
srcset="images/managed_apps_launcher@2x.png 2x"
- alt="" width="360" height="572" id="figure3" />
+ alt="" width="360" height="609" id="figure3" />
<p class="img-caption">
<strong>Figure 3.</strong> Launcher screen showing managed apps (marked with
a lock badge)
@@ -734,80 +759,98 @@ $ historian.par [-p powerfile] bugreport.txt > out.html
</div>
<p>The L Developer Preview provides new functionality for running apps within
-an enterprise environment:</p>
-<ul>
-<li><strong>Create managed user profiles</strong>. A device administrator can
-initiate a managed provisioning process to add a co-present but separate managed
-profile to a device with an existing personal account. The administrator has
-control over the managed profile.</li>
-<li><strong>Set device owner</strong>. Device administrators can also initiate a
-managed provisioning process to automatically provision a
-currently-unprovisioned device such that they have full control over the
-device.</li>
-</ul>
+an enterprise environment. A
+<a href="{@docRoot}guide/topics/admin/device-admin.html">device administrator</a> can
+initiate a managed provisioning process to add a co-present but separate <em>Android
+work profile</em> to a device, if the user has an existing personal account.
+Apps that are associated with Android work profiles will appear alongside
+non-managed apps in the user’s Launcher, Recent apps screen, and notifications.</p>
<p>To start the managed provisioning process, send {@code
ACTION_PROVISION_MANAGED_PROFILE} in an {@link android.content.Intent}. If the
call is successful, the system triggers the {@code
android.app.admin.DeviceAdminReceiver. onProfileProvisioningComplete()} callback.
You can then call {@code app.admin.DevicePolicyManager. setProfileEnabled()} to
-set this profile to the enabled state.</p>
-
-<p>A user may be associated with more than one managed profile. To get a list of
-the managed profiles associated with the user, call
-{@code android.os.UserManager. getUserProfiles()}.</p>
+enable this Android work profile.</p>
-<p>Once a managed profile is created for a user, apps that are managed by the
-device administrator will appear alongside non-managed apps in the user’s
-Launcher, Recent apps screen, and notifications.</p>
+<p>A device administrator can associate a user with more than one Android
+work profile. To get a list of the Android work profiles associated with the
+user, call {@code android.os.UserManager. getUserProfiles()}.</p>
<p>If you are developing a Launcher app, you can use the new {@code
android.content.pm.LauncherApps} class to get a list of launchable activities
-for the current user and any associated managed profiles. Your Launcher can make
+for the current user and any associated Android work profiles. Your Launcher can make
the managed apps visually prominent by appending a “work” badge to the icon
-drawable with {@code android.os.UserManager.getBadgeDrawableForUser()}.</p>
+drawable with {@code android.os.UserManager. getBadgeDrawableForUser()}.</p>
-<h3 id="LockToAppMode">Lock-to-App mode</h3>
-<p>The L Developer Preview introduces a new <em>Lock-to-App</em> mode that
+<p>To see an example of how to use the new functionality, refer to the
+{@code BasicManagedProfile} implementation sample in this release.</p>
+
+<h3 id="TaskLocking">Task locking</h3>
+<p>The L Developer Preview introduces a new task locking API that
lets you temporarily restrict users from leaving your app or being interrupted
-by notifications. Once your app activates this mode, users will not be able to
-see notifications, access other apps, or return to the Home screen, until your
+by notifications. This could be used, for example, if you are developing an
+education app to support high stakes assessment requirements on Android.
+Once your app activates this mode, users will not be able to see
+notifications, access other apps, or return to the Home screen, until your
app exits the mode.</p>
-<p>To prevent unauthorized usage, the device on which you want to activate
-this mode must have managed profiles or must be fully controlled by a device administrator (see <a href="#ManagedProvisioning">Managed Provisioning</a> for more information). Furthermore, the device or managed profile owner must
-authorize apps to use this mode by calling {@code android.app.admin.DevicePolicyManager.setLockTaskComponents()}.</p>
+<p>To prevent unauthorized usage, only authorized apps can activate task locking.
+Furthermore, task locking authorization must be granted by a
+specially-configured <em>device owner</em> app, through the {@code android.app.admin.DevicePolicyManager.setLockTaskComponents()} method.</p>
+
+<p>To set up a device owner, follow these steps:</p>
+<ol>
+<li>Attach a device running an <a href="https://source.android.com/source/building-running.html">Android {@code userdebug} build</a> to your development machine.</li>
+<li>Install your device owner app.</li>
+<li>Create a {@code device_owner.xml} file and save it to the {@code /data/system}
+directory on the device.
+<pre>
+$ adb root
+$ adb shell stop
+$ rm /tmp/device_owner.xml
+$ echo "&lt;?xml version='1.0' encoding='utf-8' standalone='yes' ?&gt;"
+&gt;&gt; /tmp/device_owner.xml
+$ echo "&device-owner package=\"&lt;your_device_owner_package&gt;\"
+name=\"*&lt;your_organization_name&gt;\" /&gt;" &gt;&gt; /tmp/device_owner.xml
+$ adb push /tmp/device_owner.xml /data/system/device_owner.xml
+$ adb reboot
+</pre>
+</li>
+</ol>
-<p>Before activating this mode in your app, verify that your activity is authorized by calling {@code DevicePolicyManager.isLockTaskPermitted()}.</p>
+<p>Before using the task locking API in your app, verify that your activity is
+authorized by calling {@code DevicePolicyManager.isLockTaskPermitted()}.</p>
-<p>To activate <em>Lock-to-App</em> mode, call
+<p>To activate task locking, call
{@code android.app.Activity.startLockTask()} from your authorized activity.</p>
-<p>When <em>Lock-to-App</em> mode is active, the following behavior takes
-effect:</p>
+<p>When task locking is active, the following behavior takes effect:</p>
<ul>
-<li>The status bar is blank, and user notifications and status information is hidden.</li>
-<li>The Home and Recent Apps button is hidden.</li>
+<li>The status bar is blank, and user notifications and status information is
+hidden.</li>
+<li>The Home and Recent Apps buttons are hidden.</li>
<li>Other apps may not launch new activities.</li>
<li>The current app may start new activities, as long as doing so does not
create new tasks.</li>
+<li>The user remains locked on your app until an authorized activity calls
+{@code Activity.stopLockTask()}.</li>
</ul>
-<p>The device will remain in this mode until an authorized activity calls
-{@code Activity.stopLockTask()}.
-
<h2 id="Printing">Printing Framework</h2>
<h3 id="PDFRender">Render PDF as bitmap</h3>
<p>You can now render PDF document pages into bitmap images for printing by
using the new {@code android.graphics.pdf.PdfRenderer} class. You must specify a
-{@link android.os.ParcelFileDescriptor} that is seekable (that is, the content can be randomly
-accessed) on which the system writes the the printable content. Your app can
-obtain a page for rendering with {@code openPage()}, then call {@code render()}
-to turn the opened {@code PdfRenderer.Page} into a bitmap. You can also set
-additional parameters if you only want to convert a portion of the document into
-a bitmap image (for example, to implement <a href="http://en.wikipedia.org/wiki/Tiled_rendering">tiled rendering</a> in order to zoom in on the document).</p>
+{@link android.os.ParcelFileDescriptor} that is seekable (that is, the content
+can be randomly accessed) on which the system writes the the printable content.
+Your app can obtain a page for rendering with {@code openPage()}, then call
+{@code render()} to turn the opened {@code PdfRenderer.Page} into a bitmap. You
+can also set additional parameters if you only want to convert a portion of the
+document into a bitmap image (for example, to implement
+<a href="http://en.wikipedia.org/wiki/Tiled_rendering">tiled rendering</a> in
+order to zoom in on the document).</p>
<h2 id="TestingA11y">Testing &amp; Accessibility </h2>
@@ -833,8 +876,7 @@ allows you to use shell based tools such as {@code dumpsys}, {@code am},
can now retrieve detailed information about the properties of windows on the
screen that sighted users can interact with. To retrieve a list of
{@code android.view.accessibility.AccessibilityWindowInfo} objects
-representing the
-windows information, call the new
+representing the windows information, call the new
{@code android.accessibilityservice.AccessibilityService.getWindows()} method.
<li>You can use the new {@code android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction} to define standard or customized
actions to perform on an {@link android.view.accessibility.AccessibilityNodeInfo}.
@@ -845,13 +887,16 @@ previously found in {@code AccessibilityNodeInfo}.
<h2 id="Manifest">Manifest Declarations</h2>
<h3 id="ManifestFeatures">Declarable required features</h3>
-<p>The following values are now supported in the <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature&gt;}</a> element, so you
-can ensure that your app is installed only on devices that provide the features
+<p>The following values are now supported in the
+<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature&gt;}</a>
+element, so you can ensure that your app is installed only on devices that provide the features
your app needs.</p>
<ul>
<li>{@code FEATURE_LEANBACK}. Declares that your app must be installed only on
-devices that support the <a href="{@docRoot}training/tv/index.html}">Android TV</a>user interface. Example:
+devices that support the
+<a href="{@docRoot}training/tv/index.html">Android TV</a> user interface.
+Example:
<pre>
&lt;uses-feature android:name="android.software.leanback"
android:required="true" /&gt;
@@ -865,11 +910,5 @@ devices that fully implement the {@code android.webkit.*} APIs. Example:
</pre>
</ul>
-<h3 id="ManifestPermissions">User permissions</h3>
-<p>The following values are now supported in the <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">{@code &lt;uses-permission&gt;}</a> to declare the
-permissions your app requires in order to access certain APIs.
-
-<ul>
-<li>{@code SIM_COMMUNICATION}. Required to communicate with a SIM card using
- logical channels.
-</ul>
+<p class="note">For a detailed view of all API changes in the L Developer Preview, see the
+<a href="{@docRoot}preview/reference.html">API Differences Report</a>.</p>
diff --git a/docs/html/preview/google-play-services-wear.html b/docs/html/preview/google-play-services-wear.html
new file mode 100644
index 000000000000..ad8891f02a30
--- /dev/null
+++ b/docs/html/preview/google-play-services-wear.html
@@ -0,0 +1,95 @@
+<html><head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="width=device-width">
+
+<meta name="Description" content="Google Play services will fully roll out to the hundreds of millions of Android devices in early July. Because of this, we usually wait to release the Google Play services SDK until all users receive the most updated Google Play services on their devices…">
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
+<title>Google Play services Preview for Wear | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+<link href="/assets/css/default.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+<div class="col-12" id="doc-col">
+
+<h1 itemprop="name">Google Play services Preview for Wear</h1>
+
+
+
+
+
+
+ <div id="jd-content">
+ <div class="jd-descr" itemprop="articleBody">
+<p>The Google Play services app is currently being rolled out to the hundreds of millions of
+Android devices and will complete in early July. Because of this, we usually wait to release the Google Play
+services SDK until all users receive the app. This guarantees that your newly-updated apps can
+run on the most devices as possible.</p>
+
+<p>However, if want to develop for Android Wear now, complete the following steps
+to get special access to all the things you need to start developing, without waiting
+for the rollout to complete. </p>
+
+<p class="warning"><b>Warning</b>: Do not publish any apps that use the new Google Play services
+APIs until the rollout is complete. Your apps will break on most user devices, which will
+degrade your user rating.</b>
+</p>
+
+<h2 style="margin-bottom: 0px;">1. Get Whitelisted for the Preview</h2><hr>
+
+<p>If you attended Google I/O, your registered Gmail account is automatically whitelisted for these
+preview resources. If you didn't attend Google I/O, sign up below to get access:</p>
+
+<a href="https://groups.google.com/forum/?hl=en#!forum/io14androidweardev">Get Whitelisted</a>
+
+<h2 style="margin-bottom: 0px;">2. Download Required Apps</h2><hr>
+<p>You'll need the following apps to get the most out of Android Wear:</p>
+
+
+<p>Here's a list of the apps you need:</p>
+<ul>
+<li><a href="https://play.google.com/apps/testing/com.google.android.gms">Google Play services</a>: Allows your Wear device to properly communicate with your handheld device. This is
+required to use the Android Wear Companion App.</li>
+ <li><a href="https://play.google.com/apps/testing/com.google.android.wearable.app">Android Wear
+ Companion</a>: The main user app to pair a handheld to a wearable and to provide syncing
+ of notifications and data.</li>
+ <li><a href="https://play.google.com/apps/testing/com.google.android.googlequicksearchbox">Google
+ Search</a>: A preview release of the Google Search handheld app that Wear communicates with
+ to carry out searches.</li>
+ <li><a href="https://play.google.com/apps/testing/com.google.android.keep">Google Keep</a>: To enable the "Take a note" command</li>
+ <li><a href="https://play.google.com/apps/testing/com.google.samples.apps.iosched">Google I/O 2014</a></li>
+ </ul>
+
+<p>To enable the preview versions of the apps, click each app link above and follow these
+instructions:</p>
+
+<ol>
+ <li>Click the <b>Become a Tester</b> button to opt-in to the preview version of the app. The page
+ confirms that you're a tester after clicking.</li>
+ <li>Click the <b>Download &lt;app name&gt; from the Play Store</b> link to go to Google Play
+ Store download page to get the app. The
+ following screenshot shows how the opt-in process looks like:
+<img style="margin-top:40px" src="/preview/images/opt-in.png"></li>
+ <li>When Google Play services is rolled out to all devices, go back to the app links provided
+ to opt-out of the preview versions of the apps. Check back here in a week for the status of
+ the rollout.</li>
+</ol>
+
+
+
+<h2 style="margin-bottom: 0px;">3. Start Building</h2><hr>
+<p>Check out the <a href="/training/building-wearables">Building Apps for Wearables</a>
+training classes for information on how to build for Wear.</p>
+ </div>
+
+
+
+
+ </div> <!-- end jd-content -->
+</div><!-- end doc-content -->
+</div> <!-- end body-content -->
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/preview/images/battery_historian.png b/docs/html/preview/images/battery_historian.png
index 5b0db74cb87e..f1d4e40fb451 100644
--- a/docs/html/preview/images/battery_historian.png
+++ b/docs/html/preview/images/battery_historian.png
Binary files differ
diff --git a/docs/html/preview/images/battery_historian@2x.png b/docs/html/preview/images/battery_historian@2x.png
index dbb5d5eb5ff8..8c8a87f717db 100644
--- a/docs/html/preview/images/battery_historian@2x.png
+++ b/docs/html/preview/images/battery_historian@2x.png
Binary files differ
diff --git a/docs/html/preview/images/hun-example.png b/docs/html/preview/images/hun-example.png
index 9613a928ec71..251b93833027 100644
--- a/docs/html/preview/images/hun-example.png
+++ b/docs/html/preview/images/hun-example.png
Binary files differ
diff --git a/docs/html/preview/images/hun-example@2x.png b/docs/html/preview/images/hun-example@2x.png
index 3cb8f5b3dea0..5b98a361851c 100644
--- a/docs/html/preview/images/hun-example@2x.png
+++ b/docs/html/preview/images/hun-example@2x.png
Binary files differ
diff --git a/docs/html/preview/images/managed_apps_launcher.png b/docs/html/preview/images/managed_apps_launcher.png
index 983d90460353..b5ef4074c537 100644
--- a/docs/html/preview/images/managed_apps_launcher.png
+++ b/docs/html/preview/images/managed_apps_launcher.png
Binary files differ
diff --git a/docs/html/preview/images/managed_apps_launcher@2x.png b/docs/html/preview/images/managed_apps_launcher@2x.png
index d298fd2deb28..90d7d5165985 100644
--- a/docs/html/preview/images/managed_apps_launcher@2x.png
+++ b/docs/html/preview/images/managed_apps_launcher@2x.png
Binary files differ
diff --git a/docs/html/preview/images/opt-in.png b/docs/html/preview/images/opt-in.png
new file mode 100644
index 000000000000..51754af176e7
--- /dev/null
+++ b/docs/html/preview/images/opt-in.png
Binary files differ
diff --git a/docs/html/preview/index.html b/docs/html/preview/index.html
index be2d3606dff6..4f3f1505c9ad 100644
--- a/docs/html/preview/index.html
+++ b/docs/html/preview/index.html
@@ -165,7 +165,7 @@ href="//fonts.googleapis.com/css?family=Roboto+Condensed">
<img src="/preview/images/l-dev-prev.png" style=" margin:0px 0 0 40px" width="860px"/>
<div class="col-6" style="margin-left:660px; margin-top:-105px">
- <a href="/preview/setup-sdk.html" class="landing-button landing-secondary" style="position:absolute;z-index:100;float:right;margin-top: 0px;">Get Started</a><!--
+ <a href="/preview/setup-sdk.html" class="landing-button landing-primary" style="position:absolute;z-index:100;float:right;margin-top: 0px;">Get Started</a><!--
<p>Set up your environment and check out all the docs to get up and running.</p>-->
@@ -241,7 +241,7 @@ href="//fonts.googleapis.com/css?family=Roboto+Condensed">
Let us know when you encounter problems, so we can fix them and make
the platform better for you and your users.
</p><p class="landing-small">
- <a target="_blank" href="https://code.google.com/p/android-developer-preview/">
+ <a href="https://code.google.com/p/android-developer-preview/">
Report Issues</a>
</p>
<p></p>
@@ -257,7 +257,7 @@ href="//fonts.googleapis.com/css?family=Roboto+Condensed">
Join the community of Android developers testing out the L Developer Preview and
share your thoughts and experiences.
</p><p class="landing-small">
- <a target="_blank" href="http://plus.google.com">
+ <a href="https://plus.google.com/communities/113159138894928487684">
Discuss on Google+</a>
</p>
</div>
@@ -274,7 +274,7 @@ href="//fonts.googleapis.com/css?family=Roboto+Condensed">
for news about the changes.
</p>
<p class="landing-small">
- <a target="_blank" href="/preview/support.html">Get Support</a>
+ <a href="/preview/support.html">Get Support</a>
</p>
</div>
</div>
@@ -358,4 +358,4 @@ href="//fonts.googleapis.com/css?family=Roboto+Condensed">
<script src="/jd_tag_helpers.js" type="text/javascript"></script>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/docs/html/preview/material/animations.jd b/docs/html/preview/material/animations.jd
index cee782a0289b..b8d063b8e5df 100644
--- a/docs/html/preview/material/animations.jd
+++ b/docs/html/preview/material/animations.jd
@@ -10,8 +10,9 @@ page.title=Animations
<li><a href="#reveal">Reveal Effect</a></li>
<li><a href="#transitions">Activity Transitions</a></li>
<li><a href="#curvedmotion">Curved Motion</a></li>
- <li><a href="#viewstate">View State Changes</a></li>
+ <li><a href="#viewstate">Animating View State Changes</a></li>
<li><a href="#drawabletint">Drawable Tinting</a></li>
+ <li><a href="#colorextract">Extracting Colors from an Image</a></li>
</ol>
</div>
</div>
@@ -32,19 +33,26 @@ APIs that let you customize these animations and create new ones:</p>
<h2 id="touch">Touch Feedback</h2>
-<p>In the Android L Developer Preview the default touch feedback animations for buttons use the new
+<p>The default touch feedback animations for buttons use the new
<code>RippleDrawable</code> class, which transitions between different states with a ripple
effect.</p>
-<p>To use this functionality in your custom views, create a <code>RippleDrawable</code> and set
-it as the background of your view. You can define a <code>RippleDrawable</code> as an XML resource
-using the <code>ripple</code> element.</p>
+<p>In most cases, this functionality should be applied in your view XML by specifying the
+background as <code>?android:attr/selectableItemBackground</code> for a bounded ripple or
+<code>?android:attr/selectableItemBackgroundBorderless</code> for a ripple that extends beyond
+the view bounds. You can also create a <code>RippleDrawable</code> and set
+it as the background of your view. Alternatively, you can define a <code>RippleDrawable</code>
+as an XML resource using the <code>ripple</code> element. The
+Android L Developer Preview animates the selection color with a ripple effect.</p>
+
+<p>You can assign a color to <code>RippleDrawable</code> objects. To change the default touch
+feedback color, use the theme's <code>android:colorControlHighlight</code> attribute.</p>
<h2 id="reveal">Reveal Effect</h2>
-<p>The <code>View.createRevealAnimator</code> method enables you to animate a clipping circle
-to reveal or hide a view.</p>
+<p>The <code>ViewAnimationUtils.createCircularReveal</code> method enables you to animate a
+clipping circle to reveal or hide a view.</p>
<p>To reveal a previously invisible view using this effect:</p>
@@ -61,7 +69,8 @@ int finalRadius = myView.getWidth();
// create and start the animator for this view
// (the start radius is zero)
-ValueAnimator anim = myView.createRevealAnimator(cx, cy, 0, finalRadius);
+ValueAnimator anim =
+ ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
anim.start();
</pre>
@@ -79,7 +88,8 @@ int cy = (myView.getTop() + myView.getBottom()) / 2;
int initialRadius = myView.getWidth();
// create the animation (the final radius is zero)
-ValueAnimator anim = myView.createRevealAnimator(cx, cy, initialRadius, 0);
+ValueAnimator anim =
+ ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
// make the view invisible when the animation is done
anim.addListener(new AnimatorListenerAdapter() {
@@ -97,25 +107,48 @@ anim.start();
<h2 id="transitions">Activity Transitions</h2>
-<p>The Android L Developer Preview enables your app to customize the default animations for
-activity transitions. You can specify custom animations for enter and exit transitions and for
+<p>You can specify custom animations for enter and exit transitions and for
transitions of shared elements between activities.</p>
<ul>
- <li>An <strong>enter</strong> transition determines how views in an activity enter the scene.
- For example, in the <em>explode</em> enter transition the views enter the scene from outside
- and fly in towards the center of the screen.</li>
-
- <li>An <strong>exit</strong> transition determines how views in an activity exit the scene. For
- example, in the <em>explode</em> exit transition the views exit the scene away from the
- center.</li>
-
- <li>A <strong>shared elements</strong> transition determines how views that are shared between
- two activities transition between these activities. For example, if two activities have the same
- image in different positions and sizes, the <em>moveImage</em> shared element transition
- translates and scales the image smoothly between these activities.</li>
+<li>An <strong>enter</strong> transition determines how views in an activity enter the scene.
+For example, in the <em>explode</em> enter transition, the views enter the scene from the outside
+and fly in towards the center of the screen.</li>
+
+<li>An <strong>exit</strong> transition determines how views in an activity exit the scene. For
+ example, in the <em>explode</em> exit transition, the views exit the scene away from the
+center.</li>
+
+<li>A <strong>shared elements</strong> transition determines how views that are shared between
+two activities transition between these activities. For example, if two activities have the same
+image in different positions and sizes, the <em>moveImage</em> shared element transition
+translates and scales the image smoothly between these activities.</li>
+</ul>
+
+<p>The Android L Developer Preview supports these enter and exit transitions:</p>
+
+<ul>
+<li><em>explode</em> - Moves views in or out from the center of the scene.</li>
+<li><em>slide</em> - Moves views in or out from one of the edges of the scene.</li>
+<li><em>fade</em> - Mades views in or out of the scene.</li>
</ul>
+<p>Any transition that extends the <code>android.transition.Visibility</code> class is supported
+as an enter or exit transition. For more information, see the API reference for the
+<code>android.transition.Transition</code> class.</p>
+
+<p>The Android L Developer Preview also supports these shared elements transitions:</p>
+
+<ul>
+<li><em>changeBounds</em> - Animates the changes in layout bounds of target views.</li>
+<li><em>changeClipBounds</em> - Animates the changes in clip bounds of target views.</li>
+<li><em>changeTransform</em> - Animates the changes in scale and rotation of target views.</li>
+<li><em>moveImage</em> - Animates changes in size and scale type for an image view.</li>
+</ul>
+
+<p>When you enable activity transitions in your app, the default cross-fading transition is
+activated between the entering and exiting activities.</p>
+
<img src="/preview/material/images/SceneTransition.png" alt=""
id="figure1" style="width:600px;margin-top:20px"/>
<p class="img-caption">
@@ -125,7 +158,8 @@ transitions of shared elements between activities.</p>
<h3>Specify custom transitions</h3>
<p>First, enable window content transitions with the <code>android:windowContentTransitions</code>
-attribute when you define a style that inherits from the material theme:</p>
+attribute when you define a style that inherits from the material theme. You can also specify
+enter, exit, and shared element transitions in your style definition:</p>
<pre>
&lt;style name="BaseAppTheme" parent="android:Theme.Material">
@@ -144,21 +178,13 @@ attribute when you define a style that inherits from the material theme:</p>
&lt;/style>
</pre>
-<p>You can also specify enter, exit, and shared element transitions in your style definition.
-The <code>move_image</code> transition in this example is defined as follows:</p>
+<p>The <code>move_image</code> transition in this example is defined as follows:</p>
<pre>
&lt;!-- res/transition/move_image.xml -->
&lt;!-- (see also Shared Transitions below) -->
&lt;transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
- &lt;moveImage>
- &lt;targets>
- &lt;!-- shared view in the first activity -->
- &lt;target android:targetId="@id/image_small" />
- &lt;!-- shared view in the second activity -->
- &lt;target android:targetId="@id/image_big" />
- &lt;/targets>
- &lt;/moveImage>
+ &lt;moveImage/>
&lt;/transitionSet>
</pre>
@@ -170,7 +196,7 @@ class. For more information, see the API reference for <code>android.transition.
<code>Window.requestFeature</code> method:</p>
<pre>
-// inside your activity
+// inside your activity (if you did not enable transitions in your theme)
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
// set an exit transition
@@ -187,6 +213,20 @@ object:</p>
<li><code>Window.setSharedElementExitTransition</code></li>
</ul>
+<p>The <code>setExitTransition</code> and <code>setSharedElementExitTransition</code> methods
+define the exit transition for the calling activity. The <code>setEnterTransition</code> and
+<code>setSharedElementEnterTransition</code> methods define the enter transition for the called
+activity.</p>
+
+<p>To get the full effect of a transition, you must enable window content transitions on both the
+calling and called activities. Otherwise, the calling activity will start the exit transition,
+but then you'll see a window transition (like scale or fade).</p>
+
+<p>To start an enter transition as soon as possible, use the
+<code>Window.setAllowEnterTransitionOverlap</code> method on the called activity. This lets you
+have more dramatic enter transitions. The same applies for the calling activity and exit
+transitions with the <code>Window.setAllowExitTransitionOverlap</code> method.</p>
+
<h3>Start an activity using transitions</h3>
<p>If you enable transitions and set an exit transition for an activity, the transition is activated
@@ -201,7 +241,7 @@ starts.</p>
<ol>
<li>Enable window content transitions in your style.</li>
<li>Specify a shared elements transition in your style.</li>
-<li>Define your transition as an XML resource specifying the IDs of the target views.</li>
+<li>Define your transition as an XML resource.</li>
<li>Assign a common name to the shared elements in both layouts with the
<code>android:viewName</code> attribute.</li>
<li>Use the <code>ActivityOptions.makeSceneTransitionAnimation</code> method.</li>
@@ -212,7 +252,7 @@ starts.</p>
final View imgContainerView = findViewById(R.id.img_container);
// get the common element for the transition in this activity
-final View androidRobotView = findViewById(R.id.android_robot_img);
+final View androidRobotView = findViewById(R.id.image_small);
// define a click listener
imgContainerView.setOnClickListener(new View.OnClickListener() {
@@ -232,6 +272,9 @@ imgContainerView.setOnClickListener(new View.OnClickListener() {
<p>For shared dynamic views that you generate in your code, use the <code>View.setViewName</code>
method to specify a common element name in both activities.</p>
+<p>To reverse the scene transition animation when you finish the second activity, call the
+<code>Activity.finishAfterTransition</code> method instead of <code>Activity.finish</code>.</p>
+
<h3>Multiple shared elements</h3>
<p>To make a scene transition animation between two activities that have more than one shared
@@ -241,12 +284,8 @@ attribute (or use the <code>View.setViewName</code> in both activities), and cre
<pre>
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
- new Pair[] {
Pair.create(view1, "agreedName1"),
- Pair.create(view2, "agreedName2"),
- ...
- }
-);
+ Pair.create(view2, "agreedName2"));
</pre>
@@ -279,7 +318,7 @@ material design specification:</p>
</ul>
<p>You can pass a <code>PathInterpolator</code> object to the
-<code>Animation.setInterpolation</code> method.</p>
+<code>Animator.setInterpolation</code> method.</p>
<p>The <code>ObjectAnimator</code> class has new constructors that enable you to animate
coordinates along a path using two or more properties at once. For example, the following animator
@@ -293,20 +332,20 @@ mAnimator.start();
</pre>
-<h2 id="viewstate">View State Changes</h2>
+<h2 id="viewstate">Animating View State Changes</h2>
<p>The new <code>StateListAnimator</code> class lets you define animators that run when the state
of a view changes. The following example shows how to define an <code>StateListAnimator</code> as
an XML resource:</p>
<pre>
-&lt;!-- animate the elevation property of a view when pressed -->
+&lt;!-- animate the translationZ property of a view when pressed -->
&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
&lt;item android:state_pressed="true">
&lt;set>
- &lt;objectAnimator android:propertyName="elevation"
+ &lt;objectAnimator android:propertyName="translationZ"
android:duration="100"
- android:valueTo="60"
+ android:valueTo="2"
android:valueType="floatType"/>
&lt;!-- you could have other objectAnimator elements
here for "x" and "y", or other properties -->
@@ -316,15 +355,19 @@ an XML resource:</p>
android:state_pressed="false"
android:state_focused="true">
&lt;set>
- &lt;objectAnimator android:propertyName="elevation"
+ &lt;objectAnimator android:propertyName="translationZ"
android:duration="100"
- android:valueTo="10"
+ android:valueTo="2"
android:valueType="floatType"/>
&lt;/set>
&lt;/item>
&lt;/selector>
</pre>
+<p class="note"><strong>Note:</strong> There is a known issue in the L Developer Preview release
+that requires valueFrom values to be provided in StateListAnimator animations to get the correct
+behavior.</p>
+
<p>The new <code>AnimatedStateListDrawable</code> class lets you create drawables that show
animations between state changes of the associated view. Some of the system widgets in the
Android L Developer Preview use these animations by default. The following example shows how
@@ -337,9 +380,9 @@ to define an <code>AnimatedStateListDrawable</code> as an XML resource:</p>
&lt;!-- provide a different drawable for each state-->
&lt;item android:id="@+id/pressed" android:drawable="@drawable/drawableP"
- android:state-pressed="true"/>
+ android:state_pressed="true"/>
&lt;item android:id="@+id/focused" android:drawable="@drawable/drawableF"
- android:state-focused="true"/>
+ android:state_focused="true"/>
&lt;item android:id="@id/default"
android:drawable="@drawable/drawableD"/>
@@ -358,21 +401,41 @@ to define an <code>AnimatedStateListDrawable</code> as an XML resource:</p>
<h2 id="drawabletint">Drawable Tinting</h2>
-<p>The Android L Developer Preview enables you to define bitmaps as an alpha mask and to tint
-them using a color resource or a theme attribute that resolves to a color resource. You can
-create these assets only once and color them automatically to match your theme.</p>
+<p>The Android L Developer Preview enables you to define bitmaps or nine-patches as alpha masks and
+to tint them using a color resource or a theme attribute that resolves to a color resource (for
+example, <code>?android:attr/colorPrimary</code>). You can create these assets only once and color them
+automatically to match your theme.</p>
-<p>To apply a tint to a bitmap in your code, use the <code>setTint</code> method in these
-classes:</p>
+<p>To apply a tint to a bitmap, use the <code>setTint</code> method or the <code>android:tint</code>
+attribute for <code>BitmapDrawable</code> and <code>NinePatchDrawable</code>.</p>
+
+<p>The <code>setTint</code> method also lets you set the Porter-Duff mode used to blend the
+tint color for <code>NinePatchDrawable</code> and <code>BitmapDrawable</code> objects in your code.
+To set the tint mode in your layouts, use the <code>android:tintMode</code> attribute.</p>
+
+
+<h2 id="colorextract">Extracting Prominent Colors from an Image</h2>
+
+<p>The Android L Developer Preview Support Library includes the <code>Palette</code> class,
+which lets you extract prominent colors from an image. This class extracts the following
+prominent colors:</p>
<ul>
-<li><code>PaintDrawable</code></li>
-<li><code>NinePatchDrawable</code></li>
-<li><code>RippleDrawable</code></li>
+<li>Vibrant</li>
+<li>Vibrant dark</li>
+<li>Vibrant light</li>
+<li>Muted</li>
+<li>Muted dark</li>
+<li>Muted light</li>
</ul>
-<p>In your layouts, use the <code>android:tint</code> attribute instead.</p>
+<p>To extract these colors, pass a <code>Bitmap</code> object to the
+<code>Palette.generate</code> static method in the background thread where you load your images.
+If you can't use that thread, call the <code>Palette.generateAsync</code> method instead and
+provide a listener.</p>
+
+<p>To retrieve the prominent colors from the image, use the getter methods in the
+<code>Palette</code> class, such as <code>Palette.getVibrantColor</code>.</p>
-<p>The <code>setTint</code> method also lets you set the tint blending mode for
-<code>NinePatchDrawable</code> and <code>RippleDrawable</code> objects in your code. To set the
-tint mode in your layouts, use the <code>android:tintMode</code> attribute.</p>
+<p>For more information, see the API reference for the
+<code>android.support.v7.graphics.Palette</code> class.</p> \ No newline at end of file
diff --git a/docs/html/preview/material/compatibility.jd b/docs/html/preview/material/compatibility.jd
index ce04e9e8f8b3..fb971124bbf0 100644
--- a/docs/html/preview/material/compatibility.jd
+++ b/docs/html/preview/material/compatibility.jd
@@ -14,7 +14,7 @@ page.title=Compatibility
</div>
</div>
-<p>The new material design features (like the material theme and custom animations) are only
+<p>The new material design features (like the material theme and activity transitions) are only
available in the Android L Developer Preview. However, you can design your apps to make use of
these features when running on devices with the Android L Developer Preview and still be
compatible with previous releases of Android.</p>
@@ -49,15 +49,34 @@ alternative layouts to customize how your app looks on earlier versions of Andro
and your alternative layout files for earlier versions of Android inside <code>res/layout/</code>.
Alternative layouts have the same file name.</p>
+<p>To avoid duplication of code, define your styles inside <code>res/values/</code> and modify the
+styles in <code>res/values-v21/</code> for the new APIs.</p>
+
<h2 id="widgets">UI Widgets</h2>
<p>The <code>RecyclerView</code> and <code>CardView</code> widgets are included in the Android L
-Developer Preview Support Library, so they are available in earlier versions of Android.</p>
+Developer Preview Support Library, so they are available in earlier versions of Android with
+these limitations:</p>
+
+<ul>
+<li><code>CardView</code> falls back to a programmatic shadow implementation using additional padding.</li>
+<li><code>CardView</code> does not clip its children views that intersect with rounded corners.</li>
+</ul>
+
+<p>These limitations do not apply to the Android L Developer Preview.</p>
<h2 id="animation">Animation APIs</h2>
-<p>The new APIs for custom animations are only available in the Android L Developer Preview. To
-preserve compatibility with earlier verisons of Android, check the system version at runtime before
-you invoke these APIs.</p> \ No newline at end of file
+<p>The following new APIs are only available in the Android L Developer Preview:</p>
+
+<ul>
+<li>Activity transitions</li>
+<li>Touch feedback</li>
+<li>Reveal animations</li>
+<li>Path-based animations</li>
+</ul>
+
+<p>To preserve compatibility with earlier verisons of Android, check the system version at
+runtime before you invoke these APIs.</p> \ No newline at end of file
diff --git a/docs/html/preview/material/get-started.jd b/docs/html/preview/material/get-started.jd
index 9c0e55d6f0d6..7d0625e5b88c 100644
--- a/docs/html/preview/material/get-started.jd
+++ b/docs/html/preview/material/get-started.jd
@@ -8,9 +8,9 @@ page.title=Get Started
<ol>
<li><a href="#applytheme">Apply the Material Theme</a></li>
<li><a href="#layouts">Design Your Layouts</a></li>
- <li><a href="#depth">Specify Depth in Your Views</a></li>
+ <li><a href="#depth">Specify Elevation in Your Views</a></li>
<li><a href="#widgets">Use the New UI Widgets</a></li>
- <li><a href="#apis">Use the New APIs</a></li>
+ <li><a href="#animations">Customize Your Animations</a></li>
</ol>
</div>
</div>
@@ -19,7 +19,8 @@ page.title=Get Started
<ol>
<li style="margin-bottom:10px">
- Take a look at the <a href="">material design specification</a>.</li>
+ Take a look at the <a href="http://www.google.com/design/spec">material design
+ specification</a>.</li>
<li style="margin-bottom:10px">
Apply the material <strong>theme</strong> to your app.</li>
<li style="margin-bottom:10px">
@@ -27,11 +28,11 @@ page.title=Get Started
<li style="margin-bottom:10px">
Create your <strong>layouts</strong> following material design guidelines.</li>
<li style="margin-bottom:10px">
- Specify the <strong>depth</strong> for views to cast appropriate shadows.</li>
+ Specify the <strong>elevation</strong> of your views to cast appropriate shadows.</li>
<li style="margin-bottom:10px">
Use the new <strong>widgets</strong> for complex views, such as lists and cards.</li>
<li style="margin-bottom:10px">
- Use the new <strong>APIs</strong> to customize the animations in your app.</li>
+ Use the new APIs to customize the <strong>animations</strong> in your app.</li>
</ol>
<h3>Update Your App for the Android L Developer Preview</h3>
@@ -42,15 +43,16 @@ incorporating depth, touch feedback and animations in your UI.</p>
<h3>Create New Apps for the Android L Developer Preview</h3>
-<p>If you are creating a new app for the Android L Developer Preview, the material design
-guidelines provide you with a solid design framework for your app. Follow these guidelines and
+<p>If you are creating a new app for the Android L Developer Preview, the <a
+href="http://www.google.com/design/spec">material design guidelines</a> provide you with a
+cohesive design framework for your app. Follow these guidelines and
use the new functionality in the Android framework to design and develop your app.</p>
<h2 id="applytheme">Apply the Material Theme</h2>
<p>To apply the material theme in your app, specify a style that inherits from
-<code>android:theme.Material</code>:</p>
+<code>android:Theme.Material</code>:</p>
<pre>
&lt;!-- res/values/styles.xml -->
@@ -70,8 +72,8 @@ animations for touch feedback and activity transitions. For more details, see
<h2 id="layouts">Design Your Layouts</h2>
<p>In addition to applying and customizing the material theme, your layouts should conform to
-the material design guidelines. When you design your layouts, pay special attention to the
-following:</p>
+the <a href="http://www.google.com/design/spec">material design guidelines</a>. When you design
+your layouts, pay special attention to the following:</p>
<ul>
<li>Baseline grids</li>
@@ -81,37 +83,36 @@ following:</p>
<li>Layout structure</li>
</ul>
-<p>You still define layouts inside XML files using the standard tools from the Android framework.
-For details on the material design guidelines, see the <a href="">material design
-specification</a>.</p>
+<h2 id="depth">Specify Elevation in Your Views</h2>
-<h2 id="depth">Specify Depth in Your Views</h2>
-
-<p>In the Android L Developer Preview, views can cast shadows. The elevation value of a view
-determines the size of its shadow. To set the elevation of a view, use the
+<p>Views can cast shadows, and the elevation value of a view
+determines the size of its shadow and its drawing order. To set the elevation of a view, use the
<code>android:elevation</code> attribute in your layouts:</p>
<pre>
-&lt;Button
- android:id="@+id/my_button"
+&lt;TextView
+ android:id="@+id/my_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/next"
- <strong>android:elevation</strong>="10dp" />
+ android:background="@color/white"
+ <strong>android:elevation</strong>="5dp" />
</pre>
+<p>The new <code>translationZ</code> property lets you create animations that reflect temporary
+changes in the elevation of a view. For example, this is useful to respond to touch gestures.</p>
+
<p>For more details, see <a href="{@docRoot}preview/material/views-shadows.html">Views and
Shadows</a>.</p>
<h2 id="widgets">Use the New UI Widgets</h2>
-<p>The Android L Developer Preview includes two new UI widgets for complex views,
-<code>RecyclerView</code> and <code>CardView</code>. <code>RecyclerView</code> is a more advanced
-version of <code>ListView</code> that provides performance improvements and is easier to use.
-<code>CardView</code> lets you show pieces of information inside cards with a consistent look
-across apps. To include a <code>CardView</code> in your layout:</p>
+<p><code>RecyclerView</code> is a more advanced version of <code>ListView</code> that provides
+performance improvements and is easier to use. <code>CardView</code> lets you show pieces of
+information inside cards with a consistent look across apps. To include a <code>CardView</code>
+in your layout:</p>
<pre>
&lt;android.support.v7.widget.CardView
@@ -126,7 +127,7 @@ across apps. To include a <code>CardView</code> in your layout:</p>
<p>For more information, see <a href="{@docRoot}preview/material/ui-widgets.html">UI Widgets</a>.</p>
-<h2 id="apis">Use the APIs to Customize Your Animations</h2>
+<h2 id="animations">Customize Your Animations</h2>
<p>The Android L Developer Preview includes new APIs to create custom animations in your app.
For example, you can enable activity transitions and define an exit transition inside an
diff --git a/docs/html/preview/material/images/MaterialDark.png b/docs/html/preview/material/images/MaterialDark.png
index 6a72280109f2..f1018af79f65 100644
--- a/docs/html/preview/material/images/MaterialDark.png
+++ b/docs/html/preview/material/images/MaterialDark.png
Binary files differ
diff --git a/docs/html/preview/material/images/MaterialLight.png b/docs/html/preview/material/images/MaterialLight.png
index 0e855283181e..4ed7d5cfb953 100644
--- a/docs/html/preview/material/images/MaterialLight.png
+++ b/docs/html/preview/material/images/MaterialLight.png
Binary files differ
diff --git a/docs/html/preview/material/images/card_travel.png b/docs/html/preview/material/images/card_travel.png
index a804ca088b47..19752a865ad1 100644
--- a/docs/html/preview/material/images/card_travel.png
+++ b/docs/html/preview/material/images/card_travel.png
Binary files differ
diff --git a/docs/html/preview/material/images/list_mail.png b/docs/html/preview/material/images/list_mail.png
index ca53ee189e03..bd107ff8f145 100644
--- a/docs/html/preview/material/images/list_mail.png
+++ b/docs/html/preview/material/images/list_mail.png
Binary files differ
diff --git a/docs/html/preview/material/index.jd b/docs/html/preview/material/index.jd
index b7abcb4db0de..d9a276f70c63 100644
--- a/docs/html/preview/material/index.jd
+++ b/docs/html/preview/material/index.jd
@@ -3,11 +3,11 @@ page.type=design
@jd:body
-<p itemprop="description">The Android L Developer Preview includes support for material design apps. Material design
-is a comprehensive guide for visual, motion, and interaction design across platforms and devices.
-To use material design in your Android apps, follow the guidelines defined in the
-<a href="">material design specification</a> and use the new components and functionality
-available in the Android L Developer Preview.</p>
+<p itemprop="description">The Android L Developer Preview includes support for material design
+apps. Material design is a comprehensive guide for visual, motion, and interaction design across
+platforms and devices. To use material design in your Android apps, follow the guidelines defined
+in the <a href="http://www.google.com/design/spec">material design specification</a> and use the
+new components and functionality available in the Android L Developer Preview.</p>
<p>The Android L Developer Preview provides the following elements for you to build material
design apps:</p>
@@ -27,13 +27,13 @@ their color palette, and default animations for touch feedback and activity tran
<!-- two columns -->
<div style="width:700px;margin-top:25px;margin-bottom:20px">
<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
- <img src="{@docRoot}preview/material/images/MaterialDark.png" style="width:250px;"/>
+ <img src="{@docRoot}preview/material/images/MaterialDark.png" width="500" height="238"/>
<div style="width:140px;margin:0 auto">
<p style="margin-top:8px">Dark Material theme</p>
</div>
</div>
<div style="float:left;width:250px;margin-right:0px;">
- <img src="{@docRoot}preview/material/images/MaterialLight.png" style="width:250px;"/>
+ <img src="{@docRoot}preview/material/images/MaterialLight.png" width="500" height="238"/>
<div style="width:140px;margin:0 auto">
<p style="margin-top:8px">Light Material theme</p>
</div>
@@ -49,12 +49,12 @@ their color palette, and default animations for touch feedback and activity tran
<!-- two columns -->
<div style="width:700px;margin-top:25px;margin-bottom:20px">
<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
- <img src="{@docRoot}preview/material/images/list_mail.png" style="width:250px;"/>
+ <img src="{@docRoot}preview/material/images/list_mail.png" width="500" height="426"/>
<p>The new <code>RecyclerView</code> widget is a more advanced version of <code>ListView</code>
- provides performance improvements for dynamic views and is easier to use.</p>
+ that provides performance improvements for dynamic views and is easier to use.</p>
</div>
<div style="float:left;width:250px;margin-right:0px;">
- <img src="{@docRoot}preview/material/images/card_travel.png" style="width:250px;"/>
+ <img src="{@docRoot}preview/material/images/card_travel.png" width="500" height="426"/>
<p>The new <code>CardView</code> widget lets you display important pieces of information inside
cards that have a consistent look and feel.</p>
</div>
@@ -64,9 +64,13 @@ their color palette, and default animations for touch feedback and activity tran
<h3>View Shadows</h3>
-<p>In addition to the X and Y components, views in the Android L Developer Preview have a Z
-component. This new component represents the elevation of a view, which determines the size of
-its shadow: views with higher Z values cast bigger shadows.</p>
+<p>In addition to the X and Y properties, views in the Android L Developer Preview have a Z
+property. This new property represents the elevation of a view, which determines:</p>
+
+<ul>
+<li>The size of the shadow - Views with higher Z values cast bigger shadows.</li>
+<li>The drawing order - Views with higher Z values appear on top of other views.</li>
+</ul>
<div style="width:290px;margin-left:35px;float:right">
<div class="framed-nexus5-port-span-5">
@@ -86,7 +90,7 @@ its shadow: views with higher Z values cast bigger shadows.</p>
<p>The Android L Developer Preview provides new APIs that let you create custom animations for
touch feedback in UI controls, view state changes, and activity transitions.</p>
-<p>The new animation APIs in the Android L Developer Preview let you:</p>
+<p>The new animation APIs let you:</p>
<ul>
<li style="margin-bottom:15px">
@@ -99,7 +103,7 @@ Hide and show views with <strong>reveal effect</strong> animations.
Switch between activities with custom <strong>activity transition</strong> animations.
</li>
<li style="margin-bottom:15px">
-Create custom animation patterns with <strong>curved motion</strong>.
+Create more natural animations with <strong>curved motion</strong>.
</li>
<li style="margin-bottom:15px">
Animate changes in one or more view properties with <strong>view state change</strong> animations.
@@ -109,9 +113,16 @@ Show animations in <strong>state list drawables</strong> between view state chan
</li>
</ul>
+<p>Touch feedback animations are built into several standard views, such as buttons. The new APIs
+let you customize these animations and add animations to your custom views.</p>
+
<h3>New Capabilities for Drawables</h3>
<p>The Android L Developer Preview supports <strong>drawable tinting</strong>: you can define
-bitmaps as an alpha mask and tint them using a color resource. You can create these assets only
-once and color each instance to match your theme.</p>
+bitmaps as an alpha mask and tint them using a color resource. You create these assets only
+once and color each instance to match your theme. Drawables also now support specifying most XML
+properties as <strong>theme attributes</strong>.</p>
+
+<p>The Android L Developer Preview Support Library includes a <strong>color extraction</strong>
+library that lets you automatically extract prominent colors from a bitmap image.</p> \ No newline at end of file
diff --git a/docs/html/preview/material/theme.jd b/docs/html/preview/material/theme.jd
index b954960b8979..5e4bcdf2ba09 100644
--- a/docs/html/preview/material/theme.jd
+++ b/docs/html/preview/material/theme.jd
@@ -8,7 +8,7 @@ page.title=Material Theme
<ol>
<li><a href="#colorpalette">Customize the Colot Palette</a></li>
<li><a href="#statusbar">Customize the Status Bar</a></li>
- <li><a href="#inheritance">Theme Inheritance</a></li>
+ <li><a href="#inheritance">Theme Individual Views</a></li>
</ol>
</div>
</div>
@@ -21,18 +21,18 @@ page.title=Material Theme
<li>Activity transition animations</li>
</ul>
-<p>The Android L Developer Preview lets you easily customize the look of the material theme
-according to your brand identity with a color palette you control. You can tint the app bar and
+<p>You can customize the look of the material theme
+according to your brand identity with a color palette you control. You can tint the action bar and
the status bar using theme attributes, as shown in Figure 1.</p>
-<div style="float:right;margin-left:25px;margin-top:-25px">
+<div style="float:right;margin-left:25px;margin-top:-50px">
<img src="{@docRoot}preview/material/images/ThemeColors.png" style="width:250px"/>
-<p class="img-caption"><strong>Figure 1.</strong> Customizing the material theme.</p>
+<p class="img-caption" style="margin-bottom:0px">
+<strong>Figure 1.</strong> Customizing the material theme.</p>
</div>
-<p>The system widgets have a new design and touch feedback animations. Activity transitions help
-users navigate your app by providing visual continuity. You can customize the color palette,
-the touch feedback animations, and the activity transitions for your app.</p>
+<p>The system widgets have a new design and touch feedback animations. You can customize the
+color palette, the touch feedback animations, and the activity transitions for your app.</p>
<p>The material theme is defined as:</p>
@@ -43,7 +43,7 @@ the touch feedback animations, and the activity transitions for your app.</p>
</ul>
<p>For a list of material styles that you can use, see the API reference for
-<code>android.R.styles</code>.</p>
+<code>android.R.style</code>.</p>
<p class="note">
<strong>Note:</strong> The material theme is only available in the Android L Developer Preview.
@@ -53,8 +53,8 @@ For more information, see <a href="{@docRoot}preview/material/compatibility.html
<h2 id="colorpalette">Customize the Color Palette</h2>
-<p>To customize the theme's base colors to fit your brand, define your custom colors using
-theme attributes when you inherit from the material theme:</p>
+<p style="margin-bottom:30px">To customize the theme's base colors to fit your brand, define
+your custom colors using theme attributes when you inherit from the material theme:</p>
<pre>
&lt;resources>
@@ -63,28 +63,27 @@ theme attributes when you inherit from the material theme:</p>
&lt;!-- Main theme colors -->
&lt;!-- your app's branding color (for the app bar) -->
&lt;item name="android:colorPrimary">@color/primary&lt;/item>
- &lt;!-- darker variant of colorPrimary (for contextual app bars) -->
+ &lt;!-- darker variant of colorPrimary (for status bar, contextual app bars) -->
&lt;item name="android:colorPrimaryDark">@color/primary_dark&lt;/item>
-
- &lt;!-- other theme colors -->
- &lt;item name="android:colorButtonNormal">@color/button_normal&lt;/item>
- &lt;item name="android:windowBackground">@color/wbackground&lt;/item>
+ &lt;!-- theme UI controls like checkboxes and text fields -->
+ &lt;item name="android:colorAccent">@color/accent&lt;/item>
&lt;/style>
&lt;/resources>
</pre>
-<h2 id="statusbar">Customize the Status Bar</h2>
+<h2 id="statusbar">Customize the Status and Navigation Bar</h2>
<p>The material theme lets you easily customize the status bar, so you can specify a
-color which fits your brand and provides enough contrast to show the white status icons. To
+color that fits your brand and provides enough contrast to show the white status icons. To
set a custom color for the status bar, use the <code>android:statusBarColor</code> attribute when
-you extend the material theme.</p>
+you extend the material theme. By default, <code>android:statusBarColor</code> inherits the
+value of <code>android:colorPrimaryDark</code>.</p>
<p>To handle the color of the status bar yourself (for example, by adding a gradient in the
background), set the <code>android:statusBarColor</code> attribute to
-<code>&#64;android:color/transparent</code>. You can also use the
-<code>Window.setStatusBarColor</code> method for animations or fading.</p>
+<code>&#64;android:color/transparent</code> and adjust the window flags as required. You can
+also use the <code>Window.setStatusBarColor</code> method for animations or fading.</p>
<p class="note"><strong>Note:</strong>
The status bar should almost always have a clear delineation from the primary toolbar, except for
@@ -92,9 +91,9 @@ full-bleed imagery cases and when you use a gradient as a protection.
</p>
-<h2 id="inheritance">Theme Inheritance</h3>
+<h2 id="inheritance">Theme Individual Views</h3>
-<p>In the Android L Developer Preview, elements in XML layout definitions can specify the
-<code>android:theme</code> attribute, which references a theme resource. This attribute modifies
-the theme for the element and any elements inflated below it, which is useful to alter theme
-color palettes in a specific portion of an interface.</p> \ No newline at end of file
+<p>Elements in XML layout definitions can specify the <code>android:theme</code> attribute,
+which references a theme resource. This attribute modifies the theme for the element and any
+elements inflated below it, which is useful to alter theme color palettes in a specific portion
+of an interface.</p> \ No newline at end of file
diff --git a/docs/html/preview/material/ui-widgets.jd b/docs/html/preview/material/ui-widgets.jd
index f18bff9e52b9..31604d6b9200 100644
--- a/docs/html/preview/material/ui-widgets.jd
+++ b/docs/html/preview/material/ui-widgets.jd
@@ -14,19 +14,20 @@ page.title=UI Widgets
<p>The support library in the Android L Developer Preview contains two new widgets,
<code>RecyclerView</code> and <code>CardView</code>. Use these widgets to show complex lists
-and cards in your app. These widgets have material design styles and animations by default.</p>
+and cards in your app. These widgets have material design style by default.</p>
<h2 id="recyclerview">RecyclerView</h2>
-<p><code>RecyclerView</code> is a more advanced version of <code>ListView</code>. This widget is
-a container for large sets of views that can be recycled and scrolled very efficiently. Use the
-<code>RecyclerView</code> widget when you have lists with elements that change dynamically.</p>
+<p><code>RecyclerView</code> is a more advanced and flexible version of <code>ListView</code>.
+This widget is a container for large sets of views that can be recycled and scrolled very
+efficiently. Use the <code>RecyclerView</code> widget when you have lists with elements that
+change dynamically.</p>
<p><code>RecyclerView</code> is easy to use, because it provides:</p>
<ul>
- <li>A set of layout managers for positioning items</li>
+ <li>A layout manager for positioning items</li>
<li>Default animations for common item operations</li>
</ul>
@@ -34,20 +35,9 @@ a container for large sets of views that can be recycled and scrolled very effic
widget.</p>
<p>To use the <code>RecyclerView</code> widget, you have to specify an adapter and a layout
-manager. An <strong>adapter</strong> provides a binding from a dataset to views that are displayed
-within a <code>RecyclerView</code>. For example, if your dataset is an array of strings displayed
-as <code>TextView</code> items, the layout manager asks the adapter to:
-</p>
-
-<ul>
- <li>Set the text of an existing <code>TextView</code> to one of the strings in the dataset</li>
- <li>Create new <code>TextView</code> objects</li>
- <li>Determine the size of the dataset</li>
-</ul>
-
-<p>To create an adapter, you extend the <code>RecyclerView.Adapter</code> class. The details of
-the implementation depend on the specifics of your dataset and the type of views. Fore more
-information, see the examples below.</p>
+manager. To create an adapter, you extend the <code>RecyclerView.Adapter</code> class. The details
+of the implementation depend on the specifics of your dataset and the type of views. For more
+information, see the <a href="#rvexamples">examples</a> below.</p>
<img src="/preview/material/images/RecyclerView.png" alt="" id="figure1" style="width:550px"/>
<p class="img-caption">
@@ -62,16 +52,17 @@ performance by avoiding the creation of unnecessary views or performing expensiv
<code>findViewById</code> lookups.
</p>
-<p><code>RecyclerView</code> provides two layout managers you can use:</p>
+<p><code>RecyclerView</code> provides <code>LinearLayoutManager</code>, which shows the items in a
+vertical or horizontal scrolling list. To create a custom layout, you extend the
+<code>RecyclerView.LayoutManager</code> class.</p>
-<ul>
- <li><code>LinearLayoutManager</code> shows the items in a vertically scrolling list.</li>
- <li><code>GridLayoutManager</code> shows the items in a rectangular grid.</li>
-</ul>
+<h3>Animations</h3>
-<p>To create a custom layout, you extend the <code>RecyclerView.LayoutManager</code> class.</p>
+<p>Animations for adding and removing items are enabled by default in <code>RecyclerView</code>.
+To customize these animations, extend the <code>RecyclerView.ItemAnimator</code> class and use
+the <code>RecyclerView.setItemAnimator</code> method.</p>
-<h3>Examples</h3>
+<h3 id="rvexamples">Examples</h3>
<p>To include a <code>RecyclerView</code> in your layout:</p>
@@ -87,7 +78,7 @@ performance by avoiding the creation of unnecessary views or performing expensiv
<p>To get the <code>RecyclerView</code> object in your activity:</p>
<pre>
-public class MyActivity extends ActionBarActivity {
+public class MyActivity extends Activity {
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
@@ -98,7 +89,8 @@ public class MyActivity extends ActionBarActivity {
setContentView(R.layout.my_activity);
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
- // improve performance if the size is fixed
+ // improve performance if you know that changes in content
+ // do not change the size of the RecyclerView
mRecyclerView.setHasFixedSize(true);
// use a linear layout manager
@@ -139,7 +131,8 @@ public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder> {
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
- View v = new TextView(parent.getContext());
+ View v = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.my_text_view, null);
// set the view's size, margins, paddings and layout parameters
...
ViewHolder vh = new ViewHolder(v);
@@ -167,22 +160,30 @@ public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder> {
<h2 id="cardview">CardView</h2>
<p><code>CardView</code> extends the <code>FrameLayout</code> class and lets you show information
-inside a card with optional rounded corners:</p>
+inside cards that have a consistent look on any app. <code>CardView</code> widgets can have
+shadows and rounded corners.</p>
+
+<p>To create a card with a shadow, use the <code>android:elevation</code> attribute.
+<code>CardView</code> uses real elevation and dynamic shadows
+and falls back to a programmatic shadow implementation on earlier versions. For more information,
+see <a href="{@docRoot}preview/material/compatibility.html">Compatibility</a>.</p>
+
+<p>Here's how to specify properties of <code>CardView</code>:</p>
<ul>
<li>To set the corner radius in your layouts, use the <code>android:cardCornerRadius</code>
attribute.</li>
<li>To set the corner radius in your code, use the <code>CardView.setRadius</code> method.</li>
+ <li>To set the background color of a card, use the <code>android:cardBackgroundColor</code>
+attribute.</li>
</ul>
-<p>To set the background color of a card, use the <code>android:cardBackgroundColor</code>
-attribute.</p>
-
<p>To include a <code>CardView</code> in your layout:</p>
<pre>
&lt;!-- A CardView that contains a TextView -->
&lt;android.support.v7.widget.CardView
+ xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="200dp"
diff --git a/docs/html/preview/material/views-shadows.jd b/docs/html/preview/material/views-shadows.jd
index c5884d65d2df..f7682f54ed51 100644
--- a/docs/html/preview/material/views-shadows.jd
+++ b/docs/html/preview/material/views-shadows.jd
@@ -13,10 +13,12 @@ page.title=Views and Shadows
</div>
</div>
-<p>In apps with material design, depth has meaning. You should assign higher elevation values to more
-important UI elements in your app. The elevation value of a view determines the size of its
-shadow: views with higher Z values cast bigger shadows. Views only cast shadows on the Z=0 plane
-under an orthographic projection (the views do not scale for different values of Z).</p>
+<p>The elevation of a view determines the size of its shadow:
+views with higher Z values cast bigger shadows. Views only cast shadows on the Z=0 plane under an
+orthographic projection (the views do not scale for different values of Z).</p>
+
+<p>Elevation is also useful to create animations where widgets temporarily rise above the
+view plane when performing some action.</p>
<h2 id="elevation">View Elevation</h2>
@@ -35,52 +37,59 @@ static component, and the translation is used for animations:</p>
<p>To set the translation of a view, use the <code>View.setTranslationZ</code> method.</p>
-<p>The Z values are measured in the same units as the X and Y values (like <code>dp</code> or
-<code>px</code>).</p>
+<p>The new <code>ViewPropertyAnimator.z</code> and <code>ViewPropertyAnimator.translationZ</code>
+methods enable you to easily animate the elevation of views. For more information, see
+the API reference for <code>ViewPropertyAnimator</code> and the <a
+href="{@docRoot}guide/topics/graphics/prop-animation.html#object-animator">Property Animation</a>
+developer guide.</p>
+
+<p>The Z values are measured in the same units as the X and Y values.</p>
<h2 id="shadows">Shadows and Outlines</h2>
-<p>The bounds of a view's background drawable determine the default shape of its shadow. To define
-a custom shape for a shadow, such as an oval, use the <code>View.setOutline</code> method:</p>
+<p>The bounds of a view's background drawable determine the default shape of its shadow.
+<strong>Outlines</strong> represent the outer shape of a graphics object and define the ripple
+area for touch feedback.</p>
+
+<p>For example, if you define a view with a background drawable:</p>
<pre>
-View v = findViewById(R.id.my_view);
+&lt;TextView
+ android:id="@+id/myview"
+ ...
+ android:elevation="2dp"
+ android:background="@drawable/myrect" />
+</pre>
-// add 10px to the static elevation
-v.setTranslationZ(10);
+<p>where the background drawable is defined as a rectangle with rounded corners:</p>
-// set an oval shadow
-Outline outline = new Outline();
-outline.setOval(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
-myView.setOutline(outline);
+<pre>
+&lt;!-- res/drawable/myrect.xml -->
+&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+ &lt;solid android:color="#42000000" />
+ &lt;corners android:radius="5dp" />
+&lt;/shape>
</pre>
-<p>An <code>Outline</code> represents the outer shape of a graphics object. You can create
-<code>Outline</code> objects as in this example, or you can obtain the outline from a
-<code>Drawable</code> object with the <code>getOutline</code> method.</p>
+<p>Then this view and drawable cast the appropiate shadow.</p>
-<p>The outline of a view also defines the ripple area for touch feedback.</p>
+<p>You can also create outlines in your code using the methods in the <code>Outline</code> class,
+and you can assign them to views with the <code>View.setOutline</code> method.</p>
<p>To prevent a view from casting a shadow, set its outline to <code>null</code>.</p>
<h2 id="clip">Clipping Views</h2>
-<p>The Android L Developer Preview lets you clip a view to its outline area using the
+<p>Clip a view to its outline area using the
<code>View.setClipToOutline</code> method. Only rectangle, circle, and round rectangle outlines
support clipping, as determined by the <code>Outline.canClip</code> method.</p>
-<p>To determine if a view has been clipped, use the <code>View.getClipToOutline</code> method.</p>
+<p>To clip a view to the shape of a drawable, set the drawable as the background of the view
+(as shown above) and call the <code>View.setClipToOutline</code> method.</p>
-<pre>
-// clip a view to an oval
-View v = findViewById(R.id.my_view);
-outline.setOval(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
-myView.setOutline(outline);
-
-// if the view is not already clipped
-if (v.getClipToOutline() == false) {
- v.setClipToOutline(true);
-}
-</pre> \ No newline at end of file
+<p>Because clipping views is an expensive operation, don't animate the shape you use to
+clip a view. To achieve this effect, use a <a
+href="{@docRoot}preview/material/animations.html#reveal">Reveal Effect</a> animation.</p> \ No newline at end of file
diff --git a/docs/html/preview/preview_toc.cs b/docs/html/preview/preview_toc.cs
index ecbd0ec069f5..75703a83e20f 100644
--- a/docs/html/preview/preview_toc.cs
+++ b/docs/html/preview/preview_toc.cs
@@ -2,11 +2,7 @@
<li class="nav-section">
- <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/setup-sdk.html">Set up the Preview SDK
- </a></div>
- </li>
- <li class="nav-section">
- <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/setup-devices.html">Set Up Hardware and AVDs
+ <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/setup-sdk.html">Set up the SDK
</a></div>
</li>
<li class="nav-section">
diff --git a/docs/html/preview/samples.jd b/docs/html/preview/samples.jd
index 67404b682947..9bccb31c4a8a 100644
--- a/docs/html/preview/samples.jd
+++ b/docs/html/preview/samples.jd
@@ -2,15 +2,4 @@ page.title=Samples
@jd:body
-<p>The code samples for the L Developer Preview are available in the Android SDK Manager under the
-L Preview section. Here is a summary of everything that is available:</p>
-
-<ul>
- <li></li>
- <li></li>
- <li></li>
- <li></li>
- <li></li>
- <li></li>
- <li></li>
- </ul>
+<p>&nbsp;</p> \ No newline at end of file
diff --git a/docs/html/preview/setup-devices.jd b/docs/html/preview/setup-devices.jd
deleted file mode 100644
index 86e48458916e..000000000000
--- a/docs/html/preview/setup-devices.jd
+++ /dev/null
@@ -1,90 +0,0 @@
-page.title=Setting Up Hardware and AVDs
-@jd:body
-
-<p>The Android L developer preview provides you with 32-bit system images
-to flash the following devices:
-</p>
-
-<ul>
- <li>Nexus 5</li>
- <li>Nexus 7 Wi-Fi (version 2, released in 2013)</li>
-</ul>
-
-<p>In addition, you also get the emulator system images, which includes
-experimental 64-bit system images along with standard 32-bit system images.
-</p>
-
-<h2>Installing the L Preview System Image</h2>
-
-<!-- Will we get an official warning text from the lawyercats? Is this it? -->
-<p class="warning"><b>Warning</b>: This is a preview version of the Android
-system image, and is subject to change. Your use of this system image is
-governed by the Android SDK Preview License Agreement. The Android preview
-system image is not a stable release, and may contain errors and defects that
-can result in damage to your computer systems, devices, and data. The preview
-Android system image is not subject to the same testing as the factory OS and
-can cause your phone and installed services and applications to stop working.
-</p>
-
-
-<ol>
- <li>Download and extract the Android Developer Preview package to a directory
- (which we'll call <code>&lt;l_download_dir&gt;</code> in these
- instructions).</li>
- <li>Connect your powered-off Android device to your development machine. Put
- the device in fastboot mode by pressing and holding the following buttons:
- <ul>
- <li><strong>Nexus 5:</strong> <i>volume down</i> + <i>volume up</i> +
- <i>power</i></li>
- <li><strong>Nexus 7:</strong> <i>volume down</i> + <i>power</i> </li>
- </ul>
- <p class="note">Alternatively, you can enter fastboot mode by booting up
- the device and running <code>adb reboot bootloader</code> with USB debugging
- turned on.</p>
- </li>
- <li>Follow the instructions at
- <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
- to set up your system for flashing devices.</li>
- <li>Run the <code>&lt;l_download_dir&gt;/flash-all</code> script
- corresponding to your platform. This script flashes all of the system data
- onto the phone.</li> <!-- Confirm names of flash scripts -->
- <li>(Optional) After flashing is complete, lock your device's bootloader by
- putting it in fastboot mode and running <code>fastboot oem lock</code>.
- (This does not wipe your device.) Once you do this, you will not be able to
- flash your device until you run run <code>fastboot oem unlock</code>,
- which unlocks the bootloader and wipes your device. We recommend you leave the
- bootloader unlocked until you are done with flashing the device.</li>
-</ol>
-
-<h3>Reverting a Device to Factory Specifications</h3>
-
- <p>If you want to uninstall the L Preview and revert the device to factory
-specifications, go to <a href="http://developers.google.com/android
-/nexus/images">developers.google.com/android</a> and download the image you want
-to flash to for your device. Follow the instructions on that page to flash the
-image to your device.</p>
-
-
-<h2>Setting up an AVD</h2>
-
-<p>You can set up <a href="{@docRoot}tools/devices/">Android Virtual Devices
-(AVD)</a> and use the emulator to build and test apps with the L Preview.</p>
-
-<p>To create an AVD with the AVD Manager:</p>
-
-<ol>
- <li>Install the L Preview SDK in your development environment, as described
- in <a href="{@docRoot}preview/setup-sdk.html">Setting Up the Preview
- SDK.</a></li>
- <li>Follow the steps in
- <a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with AVD
- Manager</a>. Use the following settings:
- <ul>
- <li><b>Device:</b> Either Nexus 5 or Nexus 7</li>
- <li><b>Target:</b> <!-- Confirm exact text when we have final distro -->
- Android L (Preview) - API Level L</li>
- </ul>
- <!-- Confirm this works when you can download image through SDK manager! -->
- </li>
-</ol>
-
diff --git a/docs/html/preview/setup-sdk.jd b/docs/html/preview/setup-sdk.jd
index 32a33b6337a1..78003f546bae 100644
--- a/docs/html/preview/setup-sdk.jd
+++ b/docs/html/preview/setup-sdk.jd
@@ -7,7 +7,7 @@ as using the Android SDK Manager and creating projects. If you're new to
Android, see <a href="/training/basics/firstapp/index.html">Building Your First
App</a> training lesson first.</a></p>
-<h2>Download the SDK</h2>
+<h2 id="downloadSdk">Download the SDK</h2>
<ol>
<li>Start the Android SDK Manager.</li>
@@ -20,7 +20,96 @@ App</a> training lesson first.</a></p>
<b>Install</b>.</li>
</ol>
-<h2>Set up your environment</h2>
+<h2 id="setupHardware">Set Up Hardware and AVDs</h2>
+
+<p>The Android L developer preview provides you with 32-bit system images
+to flash the following devices:
+</p>
+
+<ul>
+ <li>Nexus 5</li>
+ <li>Nexus 7 Wi-Fi (version 2, released in 2013)</li>
+</ul>
+
+<p>In addition, you also get the emulator system images, which includes
+experimental 64-bit system images along with standard 32-bit system images.
+</p>
+
+<h3 id="installImage">Install the L Preview System Image</h3>
+
+<p class="warning"><b>Warning:</b> This is a preview version of the Android
+system image, and is subject to change. Your use of this system image is
+governed by the Android SDK Preview License Agreement. The Android preview
+system image is not a stable release, and may contain errors and defects that
+can result in damage to your computer systems, devices, and data. The preview
+Android system image is not subject to the same testing as the factory OS and
+can cause your phone and installed services and applications to stop working.
+</p>
+
+
+<ol>
+ <li>Download and uncompress the Android Developer Preview package.
+ <p class="table-caption" id="table1">
+ <strong>Table 1.</strong> L Developer Preview system images.</p>
+ <table>
+ <tr>
+ <th scope="col">Device</th>
+ <th scope="col">Download</th>
+ <th scope="col">MD5 Checksum</th>
+ <th scope="col">SHA-1 Checksum</th>
+ </tr>
+ <tr id="hammerhead">
+ <td>Nexus 5 (GSM/LTE) "hammerhead"</td>
+ <td><!-- TODO --></td>
+ <td><code>5a6ae77217978cb7b958a240c2e80b57</code></td>
+ <td><code>ac1d8a8e4f4a1dca5864dc733caa940bffc28616</code></td>
+ </tr>
+ <tr id="razor">
+ <td>Nexus 7 (Wifi) "razor"</td>
+ <td><!-- TODO --></td>
+ <td><code>b293a5d3a4e07beabebcc0be85ad68a2</code></td>
+ <td><code>d0ddf8ce733ba2a34279cdff8827fd604762c2342d</code></td>
+ </tr>
+ </table>
+ </li>
+
+ <li>Follow the instructions at
+ <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
+ to flash the image onto your device.</li>
+</ol>
+
+<h3 id="revertDevice">Revert a Device to Factory Specifications</h3>
+
+ <p>If you want to uninstall the L Preview and revert the device to factory
+specifications, go to <a href="http://developers.google.com/android
+/nexus/images">developers.google.com/android</a> and download the image you want
+to flash to for your device. Follow the instructions on that page to flash the
+image to your device.</p>
+
+<h3 id="setupAVD">Set up an AVD</h3>
+
+<p>You can set up <a href="{@docRoot}tools/devices/">Android Virtual Devices
+(AVD)</a> and use the emulator to build and test apps with the L Preview.</p>
+
+<p>To create an AVD with the AVD Manager:</p>
+
+<ol>
+ <li>Install the L Preview SDK in your development environment, as described
+ in <a href="{@docRoot}preview/setup-sdk.html">Setting Up the Preview
+ SDK.</a></li>
+ <li>Follow the steps in
+ <a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with AVD
+ Manager</a>. Use the following settings:
+ <ul>
+ <li><b>Device:</b> Either Nexus 5 or Nexus 7</li>
+ <li><b>Target:</b> <!-- Confirm exact text when we have final distro -->
+ Android L (Preview) - API Level L</li>
+ </ul>
+ <!-- Confirm this works when you can download image through SDK manager! -->
+ </li>
+</ol>
+
+<h2 id="createProject">Create a Project</h2>
<ol>
<li>Create a new Android project with the following properties:
diff --git a/docs/html/preview/support.jd b/docs/html/preview/support.jd
index 4815b1c27dd3..8efc4bc734f9 100644
--- a/docs/html/preview/support.jd
+++ b/docs/html/preview/support.jd
@@ -2,4 +2,107 @@ page.title=Support
@jd:body
-<p>&nbsp;</p> \ No newline at end of file
+<p>If you've encountered bugs or have feedback about the L Developer Preview,
+<a href="https://code.google.com/p/android-developer-preview/">create an issue</a> on
+our issue tracker.</p>
+
+<p>For more support,
+<a href="https://plus.google.com/communities/113159138894928487684">join
+the L Developer Preview Google+ community</a> to discuss your development experiences.
+
+
+<h2 id="ReleaseNotes">Release Notes</h2>
+<p>June 25, 2014 - Initial Release of the L Developer Preview</p>
+
+<h3 id="UserInterface">User interface</h3>
+<ul>
+<li>If your app launches an activity with
+{@link android.app.Activity#startActivity startActivity()}
+and an {@link android.content.Intent} set to
+{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET}, the
+activity shows up as a separate task in the Recent apps screen. This is the
+same behavior as though your app used {@code Intent.FLAG_ACTIVITY_NEW_DOCUMENT}
+(see <a href="{@docRoot}preview/api-overview.html#Recents">Concurrent
+documents and activities in the Recents screen</a>). If you want your activity
+to remain in the same task that launched it, use
+{@link android.app.Activity#startActivityForResult
+startActivityForResult()} instead.</li>
+<li>System-rendered shadows for user interface (UI) elements in views may
+appear with visible spiky edges. To avoid this visual artifact, use a higher
+<a href="{@docRoot}preview/material/views-shadows.html#elevation">view
+elevation</a>.</li>
+<li>On very tall or wide views, view shadows may appear with additional rough
+visual artifacts around the view edges. To minimize this, avoid using view
+shadows with very narrow views.</li>
+<li>The {@code android.graphics.drawable.RippleDrawable} class does not
+respond to pointer location changes, except when the drawable is set as a
+{@link android.view.View} background.</li>
+</ul>
+
+<h3 id="Multimedia">Multimedia</h3>
+<ul>
+<li>The {@code android.hardware.camera2} APIs are supported only on Nexus 5
+devices.</li>
+<li>Saving a DNG file with the new {@code android.hardware.camera2.DngCreator}
+API fails if lens shading compensation map generation is not enabled. To
+capture images to DNG files, add the following code when creating your capture
+requests:
+<pre>
+CaptureRequest.Builder stillCaptureRequest =
+ mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
+
+stillCaptureRequest.set(CaptureRequest.STATISTICS_LENS_SHADING_MAP_MODE,
+ CaptureRequest.STATISTICS_LENS_SHADING_MAP_MODE_ON);
+</pre></li>
+<li>The {@code android.media.AudioTrack.write(float[], int, int, int)} method
+currently does not work. Use the
+{@link android.media.AudioTrack#write(short[], int, int)
+AudioTrack.write(short[], int, int)} method instead.</li>
+<li>Lockscreen security is currently not enforced when users start a Android
+mirroring session from the Quick Settings shade.</li>
+</ul>
+
+<h3 id="UserInput">User input</h3>
+<ul><li>The System UI may crash unexpectedly while the device is charging, if
+ the locale is set to {@code fr} (FRENCH).</li></ul>
+
+<h3 id="Wireless">Wireless and Connectivity</h3>
+<ul>
+<li>The {@code android.bluetooth.le} APIs are supported only on Nexus 5
+devices.</li>
+<li>You might encounter these issues while using Bluetooth LE scanning:
+ <ul>
+ <li><em>Settings</em> does not show all Bluetooth LE devices when a scan
+ filter is set.</li>
+ <li>System returns non-intuitive error messages during a Bluetooth LE scan,
+ when Bluetooth is off.</li>
+ <li>The {@code BluetoothLeScanner.startScan()} method starts failing after
+ six concurrent scans with different callbacks.</li>
+ </ul>
+</li>
+<li>You might encounter these issues while using Bluetooth LE advertising:
+ <ul>
+ <li>The device MAC address does not change for multiple advertising
+ when the application processor is asleep.</li>
+ <li>The TX Power Level is always 0 in advertising packets.</li>
+ </ul>
+</li>
+</ul>
+
+<h3 id="Enterprise">Enterprise</h3>
+<ul>
+<li>The device may crash unexpectedly in these situations when using
+Android work functionality:
+<ul>
+<li>The user attempts to share a web page (via <strong>Menu &gt; Share</strong>)
+from a non-Android work Chrome app to a Android work profile Gmail app.</li>
+<li>The user attempts to share a web page via Bluetooth from a
+Android work profile
+Chrome app.</li>
+<li>The user attempts to share a web page via Android Beam from a
+Android work profile Chrome app.</li>
+</ul>
+</li>
+<li>Deleting a Android work profile may take several minutes to complete. You
+cannot create a new Android work profile until the deletion operation is over.</li>
+</ul>
diff --git a/docs/html/sdk/installing/create-project.jd b/docs/html/sdk/installing/create-project.jd
new file mode 100644
index 000000000000..c0d523acfd4d
--- /dev/null
+++ b/docs/html/sdk/installing/create-project.jd
@@ -0,0 +1,86 @@
+page.title=Creating a Project
+
+@jd:body
+
+<p>Android Studio makes it easy to create Android apps for several form factors, such as phone,
+tablet, TV, Wear, and Google Glass. The <em>New Project</em> wizard lets you choose the form factors
+for your app and populates the project structure with everything you need to get started.</p>
+
+<p>Follow the steps in this section to create a project in Android Studio.</p>
+
+<h2>Step 1: Create a New Project</h2>
+
+<p>If you didn't have a project opened, Android Studio shows the Welcome screen.
+To create a new project, click <strong>New Project</strong>.</p>
+
+<p>If you had a project opened, Android Studio shows the development environment.
+To create a new project, click <strong>File</strong> > <strong>New Project</strong>.</p>
+
+<p>The next window lets you configure the name of your app, the package name, and the location
+of your project.</p>
+
+<img src="{@docRoot}images/tools/wizard2.png" alt="" width="500" height="381">
+<p class="img-caption"><strong>Figure 1.</strong> Choose a name for your project.</p>
+
+<p>Enter the values for your project and click <strong>Next</strong>.</p>
+
+
+<h2>Step 2: Select Form Factors and API Level</h2>
+
+<p>The next window lets you select the form factors supported by your app, such as phone, tablet,
+TV, Wear, and Google Glass. For each form factor, you can also select the API
+Level that your app requires. To get more information, click <strong>Help me choose</strong>.</p>
+
+<img src="{@docRoot}images/tools/wizard4.png" alt="" width="750" height="510">
+<p class="img-caption"><strong>Figure 2.</strong> Select the API Level.</p>
+
+<p>The API Level window shows the distribution of mobile devices running each version of Android,
+as shown in Figure 2. Click on an API level to see a list of features introduced in the corresponding
+version of Android. This helps you choose the minimum API Level that has all the features that
+your apps needs, so you can reach as many devices as possible. Then click <strong>OK</strong>.</p>
+
+<img src="{@docRoot}images/tools/wizard3.png" alt="" width="500" height="480">
+<p class="img-caption"><strong>Figure 3.</strong> Choose form factors for your app.</p>
+
+<p>Then, on the Form Factors Window, click <strong>Next</strong>.</p>
+
+
+<h2>Step 3: Add an Activity</h2>
+
+<p>The next screen lets you select an activity type to add to your app, as shown in Figure 4.
+This screen depends on the form factors you selected earlier.</p>
+
+<img src="{@docRoot}images/tools/wizard5.png" alt="" width="720" height="504">
+<p class="img-caption"><strong>Figure 4.</strong> Add an activity to your app.</p>
+
+<p>Choose an activity type and click <strong>Next</strong>.</p>
+
+
+<h2>Step 4: Configure Your Activity</h2>
+
+<p>The next screen lets you configure the activity to add to your app, as shown in Figure 6.</p>
+
+<img src="{@docRoot}images/tools/wizard6.png" alt="" width="450" height="385">
+<p class="img-caption"><strong>Figure 6.</strong> Choose a name for your activity.</p>
+
+<p>Enter the activity name, the layout name, and the activity title. Then click
+<strong>Finish</strong>.</p>
+
+
+<h2>Step 5: Develop Your App</h2>
+
+<p>Android Studio creates the default structure for your project and opens the development
+environment. If your app supports more than one form factor, Android Studio creates a module for
+each of them, as shown in Figure 7.</p>
+
+<img src="{@docRoot}images/tools/wizard7.png" alt="" width="750" height="509">
+<p class="img-caption"><strong>Figure 7.</strong> The default project structure for a mobile app.</p>
+
+<p>Now you are ready to develop your app. Fore more information, see the following links:</p>
+
+<ul>
+<li><a href="{@docRoot}training/">Training Lessons</a></li>
+<li><a href="{@docRoot}training/building-wearables.html">Building Apps for Wearables</a></li>
+<li><a href="{@docRoot}tv/">Android TV</a></li>
+<li><a href="https://developers.google.com/glass/">Google Glass</a></li>
+</ul>
diff --git a/docs/html/sdk/installing/index.jd b/docs/html/sdk/installing/index.jd
index 3671726f4a7a..304b53dcba83 100644
--- a/docs/html/sdk/installing/index.jd
+++ b/docs/html/sdk/installing/index.jd
@@ -3,8 +3,8 @@ page.title=Installing the Android SDK
@jd:body
<style>
-.paging-links {
- margin:0 0 80px;
+p.paging-links {
+ margin:0 0 40px;
}
.paging-links .next-page-link {
right:initial;
@@ -14,6 +14,10 @@ page.title=Installing the Android SDK
margin-bottom:1em;
background:#eee;
}
+.landing-button {
+ min-width: 155px;
+ text-align: center;
+}
</style>
@@ -316,39 +320,32 @@ Continue: Adding SDK Packages</a></p>
<!-- ################ DEFAULT ##################### -->
-<style>
-h3.large-link {
- display:inline-block;
- width:100%;
- text-align:center;
- border:1px solid #258aaf;
- padding:10px 0;
- color:inherit;
-}
-</style>
+
<div id="default" style="display:none">
-<p>If you haven't already done so, <b><a href="{@docRoot}sdk/index.html">click here to download
+<p>If you haven't already, <b><a href="{@docRoot}sdk/index.html">download
the Android SDK</a></b>. </p>
-<p>Otherwise, select which SDK package you want to install:</p>
+<p>Then, select which SDK package you want to install:</p>
-<div class="cols" style="margin-bottom:60px">
-<div class="col-4">
-<a href="{@docRoot}sdk/installing/index.html?pkg=adt">
-<h3 class="large-link">Eclipse ADT</h3>
+<div class="cols" style="margin:30px 0 60px">
+<div class="col-4" style="margin-left:0">
+<a href="{@docRoot}sdk/installing/index.html?pkg=adt" class="landing-button landing-secondary">
+Eclipse ADT
</a>
</div>
<div class="col-4">
-<a href="{@docRoot}sdk/installing/index.html?pkg=studio">
-<h3 class="large-link">Android Studio</h3></a>
+<a href="{@docRoot}sdk/installing/index.html?pkg=studio" class="landing-button landing-secondary">
+Android Studio
+</a>
</div>
<div class="col-4">
-<a href="{@docRoot}sdk/installing/index.html?pkg=tools">
-<h3 class="large-link">Stand-alone SDK Tools</h3></a>
+<a href="{@docRoot}sdk/installing/index.html?pkg=tools" class="landing-button landing-secondary">
+Stand-alone SDK Tools
+</a>
</div>
</div>
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
index fb4659f01fe8..93e59769a95c 100644
--- a/docs/html/tools/tools_toc.cs
+++ b/docs/html/tools/tools_toc.cs
@@ -11,7 +11,7 @@
<span class="en">Adding SDK Packages</span></a></li>
</ul>
</li>
-
+
<li class="nav-section">
<div class="nav-section-header">
@@ -20,6 +20,8 @@
<ul>
<li><a href="<?cs var:toroot ?>sdk/installing/migrate.html">
Migrating from Eclipse</a></li>
+ <li><a href="<?cs var:toroot ?>sdk/installing/create-project.html">
+ Creating a Project</a></li>
<li><a href="<?cs var:toroot ?>sdk/installing/studio-tips.html">
Tips and Tricks</a></li>
<li><a href="<?cs var:toroot ?>sdk/installing/studio-layout.html">
diff --git a/docs/html/training/app-indexing/index.jd b/docs/html/training/app-indexing/index.jd
index cb4135f218fe..7e7241b1fe3c 100644
--- a/docs/html/training/app-indexing/index.jd
+++ b/docs/html/training/app-indexing/index.jd
@@ -59,14 +59,6 @@ in your app by adding intent filters in your app manifest.</li>
</li>
</ol>
-<p class="note"><strong>Note: </strong>
-Currently, the Google Search app indexing capability is restricted to
-English-only Android apps from developers participating in the early adopter
-program. You can sign up to be a participant by submitting the <a
-href="https://docs.google.com/a/google.com/forms/d/1itcqPAQqggJ6e4m8aejWLM8Dc5O8P6qybgGbKCNxGV0/viewform"
-class="external-link" target="_blank">App Indexing Expression of Interest</a> form.
-</p>
-
<p>This class shows how to enable deep linking and indexing of your application
content so that users can open this content directly from mobile search
results.</p>
diff --git a/docs/html/wear/images/hero.jpg b/docs/html/wear/images/hero.jpg
index 7850a8118a04..0b4debb02922 100644
--- a/docs/html/wear/images/hero.jpg
+++ b/docs/html/wear/images/hero.jpg
Binary files differ
diff --git a/docs/html/wear/index.jd b/docs/html/wear/index.jd
index 1de09eebe37a..bc08aa00e865 100644
--- a/docs/html/wear/index.jd
+++ b/docs/html/wear/index.jd
@@ -84,9 +84,8 @@ page.type=about
<div class="landing-breakout cols">
<div class="col-3-wide">
- <div class="landing-inset-video-container">
- <img class="landing-bezel-only" src="{@docRoot}wear/images/screens/bezel.png" alt="">
- <img class="gif" src="{@docRoot}wear/images/screens/reservation_animated.gif">
+ <div class="framed-wear-square">
+ <img src="{@docRoot}wear/images/screens/reservation_animated.gif">
</div>
<p class="landing-small">
@@ -189,7 +188,7 @@ page.type=about
<div class="landing-h2">Building an Ecosystem</div>
<div class="landing-body landing-align-center">
<p class="landing-small">
- We’re working with several partners to bring you watches powered by Android Wear later this year!
+ We’re working with partners around the world to build watches powered by Android Wear!
</p>
</div>
</div>
@@ -286,7 +285,7 @@ page.type=about
</p>
<br>
<p class="landing-small">
- <a target="_blank" href="http://android-developers.blogspot.com/2014/03/android-wear-developer-preview.html">Android Developers Blog</a>
+ <a target="_blank" href="http://android-developers.blogspot.com">Android Developers Blog</a>
</p>
<p></p>
</div>
diff --git a/packages/DocumentsUI/res/values-el/strings.xml b/packages/DocumentsUI/res/values-el/strings.xml
index 5a91484b8c7f..aec3318a3f36 100644
--- a/packages/DocumentsUI/res/values-el/strings.xml
+++ b/packages/DocumentsUI/res/values-el/strings.xml
@@ -27,7 +27,7 @@
<string name="menu_settings" msgid="6008033148948428823">"Ρυθμίσεις"</string>
<string name="menu_open" msgid="432922957274920903">"Άνοιγμα"</string>
<string name="menu_save" msgid="2394743337684426338">"Αποθήκευση"</string>
- <string name="menu_share" msgid="3075149983979628146">"Κοινοποίηση"</string>
+ <string name="menu_share" msgid="3075149983979628146">"Κοινή χρήση"</string>
<string name="menu_delete" msgid="8138799623850614177">"Διαγραφή"</string>
<string name="mode_selected_count" msgid="459111894725594625">"Επιλέχθηκαν <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="sort_name" msgid="9183560467917256779">"Κατά όνομα"</string>
@@ -50,5 +50,5 @@
<string name="empty" msgid="7858882803708117596">"Δεν υπάρχουν στοιχεία"</string>
<string name="toast_no_application" msgid="1339885974067891667">"Δεν είναι δυνατό το άνοιγμα του αρχείου"</string>
<string name="toast_failed_delete" msgid="2180678019407244069">"Δεν είναι δυνατή η διαγραφή ορισμένων εγγράφων"</string>
- <string name="share_via" msgid="8966594246261344259">"Κοινοποίηση μέσω"</string>
+ <string name="share_via" msgid="8966594246261344259">"Κοινή χρήση μέσω"</string>
</resources>
diff --git a/packages/DocumentsUI/res/values-fi/strings.xml b/packages/DocumentsUI/res/values-fi/strings.xml
index 5e40ecde5a4e..85b17108bda2 100644
--- a/packages/DocumentsUI/res/values-fi/strings.xml
+++ b/packages/DocumentsUI/res/values-fi/strings.xml
@@ -17,7 +17,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="2783841764617238354">"Asiakirjat"</string>
- <string name="title_open" msgid="4353228937663917801">"Avoinna alkaen"</string>
+ <string name="title_open" msgid="4353228937663917801">"Avaa sijainnista"</string>
<string name="title_save" msgid="2433679664882857999">"Tallenna kohteeseen"</string>
<string name="menu_create_dir" msgid="5947289605844398389">"Luo kansio"</string>
<string name="menu_grid" msgid="6878021334497835259">"Ruudukkonäkymä"</string>
diff --git a/packages/DocumentsUI/res/values-fr/strings.xml b/packages/DocumentsUI/res/values-fr/strings.xml
index ff9aeda303c8..2cb81012683f 100644
--- a/packages/DocumentsUI/res/values-fr/strings.xml
+++ b/packages/DocumentsUI/res/values-fr/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label" msgid="2783841764617238354">"Documents"</string>
+ <string name="app_label" msgid="2783841764617238354">"Docs"</string>
<string name="title_open" msgid="4353228937663917801">"Ouvrir à partir de"</string>
<string name="title_save" msgid="2433679664882857999">"Enregistrer sous"</string>
<string name="menu_create_dir" msgid="5947289605844398389">"Créer un dossier"</string>
diff --git a/preloaded-classes b/preloaded-classes
index 5bdd65934e83..fef1ed64fee3 100644
--- a/preloaded-classes
+++ b/preloaded-classes
@@ -1378,6 +1378,7 @@ java.util.zip.ZipFile
java.util.zip.ZipFile$1
java.util.zip.ZipFile$RAFStream
java.util.zip.ZipFile$ZipInflaterInputStream
+javax.crypto.spec.GCMParameterSpec
javax.microedition.khronos.egl.EGL
javax.microedition.khronos.egl.EGL10
javax.microedition.khronos.egl.EGLConfig