summaryrefslogtreecommitdiffstats
path: root/docs/html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/html')
-rw-r--r--docs/html/about/versions/jelly-bean.jd6
-rw-r--r--docs/html/about/versions/kitkat.jd5
-rw-r--r--docs/html/design/building-blocks/buttons.jd92
-rw-r--r--docs/html/design/downloads/index.jd17
-rw-r--r--docs/html/design/media/buttons_image_and_text.pngbin0 -> 42791 bytes
-rw-r--r--docs/html/design/media/buttons_image_bg_dont.pngbin0 -> 1990 bytes
-rw-r--r--docs/html/design/media/buttons_text.pngbin0 -> 22901 bytes
-rw-r--r--docs/html/design/media/calendar.mp4bin4257862 -> 0 bytes
-rw-r--r--docs/html/design/media/calendar.ogvbin1296093 -> 0 bytes
-rw-r--r--docs/html/design/media/calendar.webmbin2109328 -> 0 bytes
-rw-r--r--docs/html/design/media/dialogs_popups_example.pngbin169768 -> 169334 bytes
-rw-r--r--docs/html/design/media/icon_alarm.pngbin0 -> 5418 bytes
-rw-r--r--docs/html/design/media/icon_magnifying_glass.pngbin0 -> 3766 bytes
-rw-r--r--docs/html/design/media/multipane_view_tablet.pngbin100524 -> 101151 bytes
-rw-r--r--docs/html/design/media/navigation_between_apps_back.pngbin123910 -> 123758 bytes
-rw-r--r--docs/html/design/media/navigation_between_apps_inward.pngbin121860 -> 121847 bytes
-rw-r--r--docs/html/design/media/navigation_between_apps_up.pngbin132841 -> 132797 bytes
-rw-r--r--docs/html/design/media/navigation_from_outside_back.pngbin85643 -> 85553 bytes
-rw-r--r--docs/html/design/media/navigation_up_vs_back_gmail.pngbin98594 -> 114409 bytes
-rw-r--r--docs/html/design/media/touch_feedback.mp4bin0 -> 192194 bytes
-rw-r--r--docs/html/design/media/touch_feedback.ogvbin0 -> 608792 bytes
-rw-r--r--docs/html/design/media/touch_feedback.webmbin0 -> 476199 bytes
-rw-r--r--docs/html/design/media/touch_feedback_thumb.pngbin0 -> 32326 bytes
-rw-r--r--docs/html/design/media/widgets_gestures.pngbin289696 -> 328745 bytes
-rw-r--r--docs/html/design/patterns/actionbar.jd2
-rw-r--r--docs/html/design/patterns/buttons.jd151
-rw-r--r--docs/html/design/patterns/fullscreen.jd3
-rw-r--r--docs/html/design/patterns/gestures.jd5
-rw-r--r--docs/html/design/style/branding.jd20
-rw-r--r--docs/html/design/style/iconography.jd2
-rw-r--r--docs/html/design/style/touch-feedback.jd31
-rw-r--r--docs/html/distribute/distribute_toc.cs2
-rw-r--r--docs/html/distribute/googleplay/edu/about.jd43
-rw-r--r--docs/html/distribute/googleplay/edu/contact.jd8
-rw-r--r--docs/html/distribute/googleplay/edu/faq.jd372
-rw-r--r--docs/html/distribute/googleplay/edu/guidelines.jd20
-rw-r--r--docs/html/distribute/googleplay/edu/index.jd25
-rw-r--r--docs/html/distribute/googleplay/edu/start.jd108
-rw-r--r--docs/html/distribute/googleplay/publish/localizing.jd24
-rw-r--r--docs/html/distribute/googleplay/spotlight/localization.jd328
-rw-r--r--docs/html/guide/topics/connectivity/nfc/hce.jd28
-rw-r--r--docs/html/guide/topics/resources/localization.jd12
-rw-r--r--docs/html/images/distribute/hichat-n5-port.jpgbin0 -> 78475 bytes
-rw-r--r--docs/html/images/distribute/indian-rummy-n4-land.jpgbin0 -> 104355 bytes
-rw-r--r--docs/html/images/distribute/zombie-ragdoll-n5-land.jpgbin0 -> 96833 bytes
-rw-r--r--docs/html/images/gp-edu-ads-iab.pngbin0 -> 49392 bytes
-rw-r--r--docs/html/images/gp-edu-apps-n7.jpgbin0 -> 51400 bytes
-rw-r--r--docs/html/images/gp-edu-hero14.jpgbin0 -> 64354 bytes
-rw-r--r--docs/html/images/gp-edu-hero7.pngbin175376 -> 0 bytes
-rw-r--r--docs/html/images/gp-edu-knum-landscape.pngbin323881 -> 0 bytes
-rw-r--r--docs/html/index.jd82
-rw-r--r--docs/html/sdk/installing/installing-adt.jd17
-rw-r--r--docs/html/tools/debugging/debugging-memory.jd23
-rw-r--r--docs/html/tools/debugging/debugging-tracing.jd56
-rw-r--r--docs/html/training/displaying-bitmaps/manage-memory.jd45
55 files changed, 1185 insertions, 342 deletions
diff --git a/docs/html/about/versions/jelly-bean.jd b/docs/html/about/versions/jelly-bean.jd
index c7d1941..c6702b0 100644
--- a/docs/html/about/versions/jelly-bean.jd
+++ b/docs/html/about/versions/jelly-bean.jd
@@ -438,9 +438,9 @@ SetupWizard, Clock, Downloads, and more.</p>
<p>Android 4.3 also includes new utilities and APIs for creating better RTL
strings and testing your localized UIs. A new <strong>BidiFormatter</strong>
-provides a set of simple APIs for wrapping Unicode strings so that you can
-fine-tune your text rendering in RTL scripts. To let you use this utility more
-broadly in your apps, the BidiFormatter APIs are also now available for earlier
+class provides a simple API for wrapping Unicode strings, so that RTL-script
+data is displayed as intended in LTR-locale messages and vice-versa. To let you use this utility more
+broadly in your apps, the BidiFormatter API is also now available for earlier
platform versions through the Support Package in the Android SDK. </p>
<p>To assist you with managing date formatting across locales, Android 4.3
diff --git a/docs/html/about/versions/kitkat.jd b/docs/html/about/versions/kitkat.jd
index 4c80d4e..5e442ec 100644
--- a/docs/html/about/versions/kitkat.jd
+++ b/docs/html/about/versions/kitkat.jd
@@ -1006,8 +1006,9 @@ window.onhashchange = function () {
<h4 id="44-pseudolocale-rtl">Force RTL Layout</h4>
<p>
- To make it easier to test and debug your layouts, Android includes a new
- developer option to force RTL layout direction in all apps.
+ To make it easier to test and debug layout mirroring issues without switching
+ to an RTL language, Android includes a new developer option to force RTL layout
+ direction in all apps.
</p>
<p>
diff --git a/docs/html/design/building-blocks/buttons.jd b/docs/html/design/building-blocks/buttons.jd
index 7957ef8..1f7e25d 100644
--- a/docs/html/design/building-blocks/buttons.jd
+++ b/docs/html/design/building-blocks/buttons.jd
@@ -9,39 +9,83 @@ page.tags="button","input"
</div>
</a>
-<p>A button consists of text and/or an image that clearly communicates what action will occur when the
-user touches it. Android supports two different types of buttons: <em>basic buttons</em> and <em>borderless
-buttons</em>. Both can contain text labels and/or images.</p>
+<p>A button consists of text and/or an image that clearly communicates what action
+ will occur when the user touches it. A button can have an image, text, or both.
+</p>
-<img src="{@docRoot}design/media/buttons_basic.png">
+<div class="layout-content-row" style="margin-top:22px">
+ <div class="layout-content-col span-3">
+ <img src="{@docRoot}design/media/icon_magnifying_glass.png" style="height:64px;padding:20px 0 0 40px;">
+ </div>
+ <div class="layout-content-col span-3">
+ <img src="{@docRoot}design/media/buttons_text.png" style="height:94px;">
+ </div>
+ <div class="layout-content-col span-7">
+ <img src="{@docRoot}design/media/buttons_image_and_text.png" style="height:94px;">
+ </div>
+</div>
-<h2 id="basic">Basic Buttons</h2>
+<div class="layout-content-row" style="margin-top:0;">
+ <div class="layout-content-col span-3">
+ <p>An image alone works best when the action can be represented by a symbol that's well understood.</p>
+ </div>
+ <div class="layout-content-col span-3">
+ <p>Text alone is most appropriate for actions that would be difficult to
+ represent visually, or are critical to convey in words to avoid any ambiguity.</p>
+ </div>
+ <div class="layout-content-col span-7">
+ <p>
+ Both an icon and text is most appropriate when they complement each other:
+ each carrying its own bit of information, but together making a larger whole.
+ </p>
+
+ <p>
+ For example, in a birthday reminder card in Google Now, the button's text
+ describes the action while its image indicates that the action will be done
+ in Google+.
+ </p>
+ </div>
+</div>
-<p>Basic buttons are traditional buttons with borders and background. Android supports two styles for
-basic buttons: default and small. Default buttons have slightly larger font size and are optimized
-for display outside of form content. Small buttons are intended for display alongside other content.
-They have a smaller font and smaller minimum height. Use small buttons in forms where they need to
-align with other UI elements.</p>
+<h3>What about button backgrounds?</h3>
-<img src="{@docRoot}design/media/buttons_default_small.png">
<div class="layout-content-row">
<div class="layout-content-col span-6">
- <div class="figure-caption">
- Default buttons in Holo Dark &amp; Light.
- </div>
- </div>
- <div class="layout-content-col span-6">
- <div class="figure-caption">
- Small buttons in Holo Dark &amp; Light.
+ <p>For <strong>image-only</strong> buttons, a background isn't necessary because
+ users are accustomed to interacting with objects.</p>
+
+ <div class="layout-content-row" style="margin-left:72px">
+ <div class="layout-content-col span-2">
+ <div class="do-dont-label bad emulate-content-left-padding" style="width:30px">Don't</div>
+ <img src="{@docRoot}design/media/buttons_image_bg_dont.png" style="padding-left:14px;">
+ </div>
+ <div class="layout-content-col span-2" style="width:29px;margin-left:10px;">
+ <div class="do-dont-label good"><strong>Do</strong></div>
+ <img src="{@docRoot}design/media/icon_alarm.png" style="width:31px;padding-top:7px;">
+ </div>
</div>
</div>
-</div>
-<h2 id="borderless">Borderless Buttons</h2>
+<div class="layout-content-col span-7">
+<p>
+ For buttons <strong>with text</strong>, a background is also usually
+ unnecessary. To invite users to touch, phrase it as a clear action (e.g.
+ "Start", "Sign in") and use different color and formatting than the screen's
+ usual body text.
+</p>
-<p>Borderless buttons resemble basic buttons except that they have no borders or background. You can
-use borderless buttons with both icons and text. Borderless buttons are visually more lightweight
-than basic buttons and integrate nicely with other content.</p>
+<p>
+ Use buttons with backgrounds sparingly. Because they have a heavy appearance,
+ they work best when there's only one or two of them on the screen. They're
+ most appropriate for:
+</p>
-<img src="{@docRoot}design/media/buttons_borderless.png">
+<ul>
+ <li>A call to action you really want users to pursue (e.g. "Sign up")</li>
+ <li>A key decision point (e.g. "Accept" / "Decline")</li>
+ <li>When the user is about to commit a significant action (e.g. "Erase
+ everything", "Buy now")</li>
+</ul>
+</div>
+</div>
diff --git a/docs/html/design/downloads/index.jd b/docs/html/design/downloads/index.jd
index d514c14..16f5509 100644
--- a/docs/html/design/downloads/index.jd
+++ b/docs/html/design/downloads/index.jd
@@ -1,4 +1,5 @@
page.title=Downloads
+page tags="Icons", "stencils", "color swatches"
@jd:body
<div class="layout-content-row">
@@ -15,7 +16,7 @@ page.title=Downloads
<p>
<a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'All Design Assets']);"
- href="{@docRoot}downloads/design/Android_Design_Downloads_20130814.zip">Download All</a>
+ href="{@docRoot}downloads/design/Android_Design_Downloads_20131106.zip">Download All</a>
</p>
</div>
@@ -26,8 +27,8 @@ page.title=Downloads
<div class="layout-content-row">
<div class="layout-content-col span-5">
-<p>Drag and drop your way to beautifully designed Ice Cream Sandwich apps. The stencils feature the
-rich typography, colors, interactive controls, and icons found throughout Android 4.0, along with
+<p>Drag and drop your way to beautifully designed Android apps. The stencils feature the
+rich typography, colors, interactive controls, and icons found throughout Android, along with
phone and tablet outlines to frame your creations. Source files for icons and controls are also
available.</p>
@@ -40,14 +41,14 @@ available.</p>
<div class="layout-content-col span-4">
<p>
- <a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Fireworks Stencil']);"
+ <!--<a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Fireworks Stencil']);"
href="{@docRoot}downloads/design/Android_Design_Fireworks_Stencil_20120814.png">Adobe&reg; Fireworks&reg; PNG Stencil</a>
<a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Illustrator Stencil']);"
href="{@docRoot}downloads/design/Android_Design_Illustrator_Vectors_20120814.ai">Adobe&reg; Illustrator&reg; Stencil</a>
<a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'OmniGraffle Stencil']);"
- href="{@docRoot}downloads/design/Android_Design_OmniGraffle_Stencil_20120814.graffle">Omni&reg; OmniGraffle&reg; Stencil</a>
+ href="{@docRoot}downloads/design/Android_Design_OmniGraffle_Stencil_20120814.graffle">Omni&reg; OmniGraffle&reg; Stencil</a>-->
<a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Photoshop Sources']);"
- href="{@docRoot}downloads/design/Android_Design_Holo_Widgets_20120814.zip">Adobe&reg; Photoshop&reg; Sources</a>
+ href="{@docRoot}downloads/design/Android_Design_Stencils_Sources_20131106.zip">Adobe&reg; Photoshop&reg; Stencils and Sources</a>
</p>
</div>
@@ -74,7 +75,7 @@ modify to match your theme, plus source files.</p>
<p>
<a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Action Bar Icons']);"
- href="{@docRoot}downloads/design/Android_Design_Icons_20130926.zip">Action Bar Icon Pack</a>
+ href="{@docRoot}downloads/design/Android_Design_Icons_20131106.zip">Action Bar Icon Pack</a>
</p>
</div>
@@ -114,7 +115,7 @@ requirements of UI and high-resolution screens.</p>
<div class="layout-content-col span-5">
<h4>Color</h4>
-<p>Blue is the standard accent color in Android's color palette. Each color has a corresponding darker
+<p>In Android's color palette, each color has a corresponding darker
shade that can be used as a complement when needed.</p>
<p><a href="{@docRoot}design/style/color.html">More on Color</a></p>
diff --git a/docs/html/design/media/buttons_image_and_text.png b/docs/html/design/media/buttons_image_and_text.png
new file mode 100644
index 0000000..b7ffccb
--- /dev/null
+++ b/docs/html/design/media/buttons_image_and_text.png
Binary files differ
diff --git a/docs/html/design/media/buttons_image_bg_dont.png b/docs/html/design/media/buttons_image_bg_dont.png
new file mode 100644
index 0000000..651d3ce
--- /dev/null
+++ b/docs/html/design/media/buttons_image_bg_dont.png
Binary files differ
diff --git a/docs/html/design/media/buttons_text.png b/docs/html/design/media/buttons_text.png
new file mode 100644
index 0000000..54d3dd3
--- /dev/null
+++ b/docs/html/design/media/buttons_text.png
Binary files differ
diff --git a/docs/html/design/media/calendar.mp4 b/docs/html/design/media/calendar.mp4
deleted file mode 100644
index cdd72d2..0000000
--- a/docs/html/design/media/calendar.mp4
+++ /dev/null
Binary files differ
diff --git a/docs/html/design/media/calendar.ogv b/docs/html/design/media/calendar.ogv
deleted file mode 100644
index efb23d2..0000000
--- a/docs/html/design/media/calendar.ogv
+++ /dev/null
Binary files differ
diff --git a/docs/html/design/media/calendar.webm b/docs/html/design/media/calendar.webm
deleted file mode 100644
index 9d7d9f2..0000000
--- a/docs/html/design/media/calendar.webm
+++ /dev/null
Binary files differ
diff --git a/docs/html/design/media/dialogs_popups_example.png b/docs/html/design/media/dialogs_popups_example.png
index 6c98b1f..a8ebacd 100644
--- a/docs/html/design/media/dialogs_popups_example.png
+++ b/docs/html/design/media/dialogs_popups_example.png
Binary files differ
diff --git a/docs/html/design/media/icon_alarm.png b/docs/html/design/media/icon_alarm.png
new file mode 100644
index 0000000..36ce643a
--- /dev/null
+++ b/docs/html/design/media/icon_alarm.png
Binary files differ
diff --git a/docs/html/design/media/icon_magnifying_glass.png b/docs/html/design/media/icon_magnifying_glass.png
new file mode 100644
index 0000000..d443a85
--- /dev/null
+++ b/docs/html/design/media/icon_magnifying_glass.png
Binary files differ
diff --git a/docs/html/design/media/multipane_view_tablet.png b/docs/html/design/media/multipane_view_tablet.png
index d59308a..a713591 100644
--- a/docs/html/design/media/multipane_view_tablet.png
+++ b/docs/html/design/media/multipane_view_tablet.png
Binary files differ
diff --git a/docs/html/design/media/navigation_between_apps_back.png b/docs/html/design/media/navigation_between_apps_back.png
index a817374..d0c12cf 100644
--- a/docs/html/design/media/navigation_between_apps_back.png
+++ b/docs/html/design/media/navigation_between_apps_back.png
Binary files differ
diff --git a/docs/html/design/media/navigation_between_apps_inward.png b/docs/html/design/media/navigation_between_apps_inward.png
index 321d0da..75e7fc6 100644
--- a/docs/html/design/media/navigation_between_apps_inward.png
+++ b/docs/html/design/media/navigation_between_apps_inward.png
Binary files differ
diff --git a/docs/html/design/media/navigation_between_apps_up.png b/docs/html/design/media/navigation_between_apps_up.png
index 42d0d8f..67ebb77 100644
--- a/docs/html/design/media/navigation_between_apps_up.png
+++ b/docs/html/design/media/navigation_between_apps_up.png
Binary files differ
diff --git a/docs/html/design/media/navigation_from_outside_back.png b/docs/html/design/media/navigation_from_outside_back.png
index 0e1aa04..9153b08 100644
--- a/docs/html/design/media/navigation_from_outside_back.png
+++ b/docs/html/design/media/navigation_from_outside_back.png
Binary files differ
diff --git a/docs/html/design/media/navigation_up_vs_back_gmail.png b/docs/html/design/media/navigation_up_vs_back_gmail.png
index d5eaa18..7cc295e 100644
--- a/docs/html/design/media/navigation_up_vs_back_gmail.png
+++ b/docs/html/design/media/navigation_up_vs_back_gmail.png
Binary files differ
diff --git a/docs/html/design/media/touch_feedback.mp4 b/docs/html/design/media/touch_feedback.mp4
new file mode 100644
index 0000000..b91dc4b
--- /dev/null
+++ b/docs/html/design/media/touch_feedback.mp4
Binary files differ
diff --git a/docs/html/design/media/touch_feedback.ogv b/docs/html/design/media/touch_feedback.ogv
new file mode 100644
index 0000000..22c9f97
--- /dev/null
+++ b/docs/html/design/media/touch_feedback.ogv
Binary files differ
diff --git a/docs/html/design/media/touch_feedback.webm b/docs/html/design/media/touch_feedback.webm
new file mode 100644
index 0000000..a65c142
--- /dev/null
+++ b/docs/html/design/media/touch_feedback.webm
Binary files differ
diff --git a/docs/html/design/media/touch_feedback_thumb.png b/docs/html/design/media/touch_feedback_thumb.png
new file mode 100644
index 0000000..49af69f
--- /dev/null
+++ b/docs/html/design/media/touch_feedback_thumb.png
Binary files differ
diff --git a/docs/html/design/media/widgets_gestures.png b/docs/html/design/media/widgets_gestures.png
index 5e1268d..bbce87d 100644
--- a/docs/html/design/media/widgets_gestures.png
+++ b/docs/html/design/media/widgets_gestures.png
Binary files differ
diff --git a/docs/html/design/patterns/actionbar.jd b/docs/html/design/patterns/actionbar.jd
index 939370c..b6e3a16 100644
--- a/docs/html/design/patterns/actionbar.jd
+++ b/docs/html/design/patterns/actionbar.jd
@@ -182,7 +182,7 @@ files for further customization.
<p>
<a onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Action Bar Icons (@actionbar page)']);"
- href="{@docRoot}downloads/design/Android_Design_Icons_20130926.zip">Download the Action Bar Icon Pack</a>
+ href="{@docRoot}downloads/design/Android_Design_Icons_20131106.zip">Download the Action Bar Icon Pack</a>
</p>
diff --git a/docs/html/design/patterns/buttons.jd b/docs/html/design/patterns/buttons.jd
new file mode 100644
index 0000000..46e41c8
--- /dev/null
+++ b/docs/html/design/patterns/buttons.jd
@@ -0,0 +1,151 @@
+page.title=Buttons
+page.tags="buttons"
+@jd:body
+
+<p>
+ Some content is best experienced full screen, like videos, games, image
+ galleries, books, and slides in a presentation. You can engage users more
+ deeply with content in full screen by minimizing visual distraction from app
+ controls and protecting users from escaping the app accidentally.
+</p>
+
+<div style="margin:auto;padding:auto;text-align:center;">
+ <img src="{@docRoot}design/media/fullscreen_landing.png" style="margin:1em auto 2em auto;">
+</div>
+<p>
+ In version 4.4, Android offers two approaches for making your app go full
+ screen: Lean Back and Immersive. In both approaches, all persistent system
+ bars are hidden. The difference between them is how the user brings the bars
+ back into view.
+</p>
+
+<div class="layout-content-row">
+ <div class="layout-content-col span-6">
+ <h4>Lean Back</h4>
+ <p>Touch the screen anywhere to bring back system bars. </p>
+ <img src="{@docRoot}design/media/fullscreen_leanback.png" style="width:311px;">
+ </div>
+ <div class="layout-content-col span-6">
+ <h4>Immersive</h4>
+ <p>Swipe from the any edge of the screen with a hidden bar to bring back system bars. </p>
+ <img src="{@docRoot}design/media/fullscreen_immersive_swipe_bottom.png" style="width:160px;float:right">
+ <img src="{@docRoot}design/media/fullscreen_immersive_swipe_top.png" style="width:160px">
+ </div>
+</div>
+
+<h2 id="leanback">
+ Lean Back
+</h2>
+
+<p>
+ The Lean Back approach is for full-screen experiences in which users won't be
+ interacting heavily with the screen while consuming content, like while
+ watching a video.
+</p>
+
+<p>
+ In this type of experience, users are leaning back and watching the screen.
+ Then, when they need to bring back the bars, they simply touch anywhere. This
+ gesture is easy and intuitive.
+</p>
+
+ <img src="{@docRoot}design/media/fullscreen_leanback.png" style="width:311px;">
+
+<h2 id="immersive">
+ Immersive
+</h2>
+
+<p>
+ The Immersive approach is mainly intended for apps in which the user will be
+ heavily interacting with the full screen as part of the primary experience.
+ Examples are games, viewing images in a gallery, or reading paginated
+ content, like a book or slides in a presentation.
+</p>
+
+<p>
+ In this type of experience, when users need to bring back the system bars,
+ they swipe from any edge where a system bar is hidden. By requiring this more
+ deliberate gesture, the user's deep engagement with your app won't be
+ interrupted by accidental touches and swipes.
+</p>
+
+<div class="layout-content-row">
+ <div class="layout-content-col span-6">
+ <img src="{@docRoot}design/media/fullscreen_immersive_swipe_bottom.png" style="width:160px;float:right">
+ <img src="{@docRoot}design/media/fullscreen_immersive_swipe_top.png" style="width:160px">
+ </div>
+</div>
+
+<p>
+ The user learns about the gesture to bring back the system bars through a
+ message that appears the first time the app goes full screen.
+</p>
+
+<p>
+ If your app has its own controls that aren't needed when a user is immersed
+ in content, make them disappear and reappear in sync with the system bars.
+ This rule also applies to any app-specific gestures you might have for hiding
+ and showing app controls. For example, if touching anywhere on the screen
+ toggles the appearance of an action bar or a palette, then it must also
+ toggle the appearance of system bars.
+</p>
+
+<p>
+ You might be tempted to use this approach just to maximize screen real
+ estate. But be mindful of how often users jump in and out of apps to check
+ notifications, do impromptu searches, and more. This approach will cause
+ users to lose easy access to system navigation, so a little extra space
+ should not be the only benefit they're getting in return.
+</p>
+
+<h2 id="variation_using_edges">
+ Variation: Swiping from edges with bars also affects the app
+</h2>
+
+<p>
+ In the Immersive approach, any time a user swipes from an edge with a system
+ bar, the Android framework takes care of revealing the system bars. Your app
+ won't even be aware that this gesture occurred.
+</p>
+
+<p>
+ But in some apps, the user might occasionally need to swipe from the edge as
+ <strong>part of the primary app experience</strong>. Examples are games and
+ drawing applications.
+</p>
+
+<p>
+ For apps with this requirement, you can use a variation on the Immersive
+ approach: when a user swipes from an edge with a system bar, system bars are
+ shown and the gesture is passed to the app so the app can respond to the
+ gesture.
+</p>
+
+<p>
+ For example, in a drawing app that uses this approach, if a user wants to
+ draw a line that begins at the very edge of the screen, swiping from the edge
+ would reveal the system bars and also start drawing a line that begins at the
+ very edge.
+</p>
+
+<p>
+ In this approach, to minimize disruption while a user is deeply engaged in
+ the app, the system bars are semi-transparent. The bars automatically
+ disappear after a few seconds of no interaction or as soon as the user
+ touches or gestures anywhere outside the system bars.
+</p>
+
+<h2 id="lightsout">What About Lights Out Mode?</h2>
+
+<p>
+ Before Android 4.4, the design guideline was to use Lights Out mode, a mode
+ in which the Action Bar and Status Bar fades away and becomes unavailable
+ after a few seconds of inactivity. The Navigation Bar is still available and
+ responds to touches but appears dimmed.
+</p>
+
+<p>
+ Replace previous implementations of Lights Out mode with the Lean Back or
+ Immersive approaches. Continue to use Lights Out mode for implementations of
+ your app targeted for earlier releases.
+</p> \ No newline at end of file
diff --git a/docs/html/design/patterns/fullscreen.jd b/docs/html/design/patterns/fullscreen.jd
index 191ca40..de016fe 100644
--- a/docs/html/design/patterns/fullscreen.jd
+++ b/docs/html/design/patterns/fullscreen.jd
@@ -9,8 +9,9 @@ page.tags="full screen","immersive", "leanback"
controls and protecting users from escaping the app accidentally.
</p>
+<div style="margin:auto;padding:auto;text-align:center;">
<img src="{@docRoot}design/media/fullscreen_landing.png" style="margin:1em auto 2em auto;">
-
+</div>
<p>
In version 4.4, Android offers two approaches for making your app go full
screen: Lean Back and Immersive. In both approaches, all persistent system
diff --git a/docs/html/design/patterns/gestures.jd b/docs/html/design/patterns/gestures.jd
index 837a6dd..213902f 100644
--- a/docs/html/design/patterns/gestures.jd
+++ b/docs/html/design/patterns/gestures.jd
@@ -65,8 +65,9 @@ following table shows the core gesture set that is supported in Android.</p>
<div class="layout-content-col span-4">
<img src="{@docRoot}design/media/gesture_doubletouch.png">
<h4>Double touch </h4>
- <p>Scales up the smallest targetable view, if available, or scales a standard amount
- around the gesture. Also used as a secondary gesture for text selection.</p>
+ <p> Scales up a standard amount around the target with each repeated gesture until reaching
+ maximum scale. For nested views, scales up the smallest targetable view, or returns it to
+ its original scale. Also used as a secondary gesture for text selection.</p>
<ul>
<li class="no-bullet with-icon action">
<h4>Action</h4>
diff --git a/docs/html/design/style/branding.jd b/docs/html/design/style/branding.jd
index 9ef934d..2ea4d47 100644
--- a/docs/html/design/style/branding.jd
+++ b/docs/html/design/style/branding.jd
@@ -49,16 +49,16 @@ and app name in the action bar.</p>
<div class="vspace size-1">&nbsp;</div>
<div class="layout-content-row">
- <div class="layout-content-col span-6">
- <img src="{@docRoot}design/media/yourbranding_icon.png" style="width:60px;float:left;padding-right:1em;">
- <div class="figure-caption" style="widdth:220px;margin-left:20px;">
- The HowzAbout app uses a launcher icon that is a shortened version of its full logo.
+ <div class="layout-content-col span-6" style="padding-top:24px;">
+ <img src="{@docRoot}design/media/branding_launcher_icon.png" style="width:60px;float:left;padding-right:1em;">
+ <div class="figure-caption" style="width:290px;margin-left:20px;">
+ Google+ reinforces its brand by carrying its launcher icon through to the action bar.
</div>
-
+ <img src="{@docRoot}design/media/branding_logo_icon_action_bar.png" style="width:320px;float:left;padding-right:1em;">
</div>
<div class="layout-content-col span-6">
- <img src="{@docRoot}design/media/yourbranding_app.png" style="width:94%">
- <div class="figure-caption">
+ <img src="{@docRoot}design/media/yourbranding_app.png" style="width:320px;">
+ <div class="figure-caption" style="width:320px;">
Example of a the logo in the action bar. This works well in cases where the brand's logo matches the name of the app.
</div>
</div>
@@ -77,7 +77,7 @@ and app name in the action bar.</p>
</div>
<div class="layout-content-col span-6">
- <img src="{@docRoot}design/media/yourbranding_in-app-icons.png" style="width:300px;margin:12px 48px 0 16px;"">
+ <img src="{@docRoot}design/media/yourbranding_in-app-icons.png" style="width:300px;margin:12px 48px 0 16px;">
</div>
</div>
</div>
@@ -100,9 +100,9 @@ and app name in the action bar.</p>
<div style="margin-bottom:1em;">
<span class="do-dont-label bad" style="margin-left:12px">Don't</span>
- <span style="margin-left: 44px;" class="do-dont-label good"><strong>Do</strong></span>
+ <span style="margin-left: 64px;" class="do-dont-label good"><strong>Do</strong></span>
</div>
- <img src="{@docRoot}design/media/yourbranding_sharing.png" style="width:200px;">
+ <img src="{@docRoot}design/media/yourbranding_sharing.png" style="width:180px;">
</div>
</div>
diff --git a/docs/html/design/style/iconography.jd b/docs/html/design/style/iconography.jd
index b0a3439..fe4a3f9 100644
--- a/docs/html/design/style/iconography.jd
+++ b/docs/html/design/style/iconography.jd
@@ -139,7 +139,7 @@ files for further customization.
</p>
<p>
<a onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Action Bar Icons (@iconography page)']);"
- href="{@docRoot}downloads/design/Android_Design_Icons_20130926.zip">Download the Action Bar Icon Pack</a>
+ href="{@docRoot}downloads/design/Android_Design_Icons_20131106.zip">Download the Action Bar Icon Pack</a>
</p>
<div class="layout-content-row">
diff --git a/docs/html/design/style/touch-feedback.jd b/docs/html/design/style/touch-feedback.jd
index a5bf7b3..2017d8e 100644
--- a/docs/html/design/style/touch-feedback.jd
+++ b/docs/html/design/style/touch-feedback.jd
@@ -7,8 +7,6 @@ page.tags="input","button"
<p>Use illumination and dimming to respond to touches, reinforce the resulting behaviors
of gestures, and indicate what actions are enabled and disabled.</p>
-<p>Whenever a user touches an actionable area in your app, provide a subtle visual response.
-This lets the user know which object was touched and that your app is "listening".</p>
<p><strong>Be responsive to touches in a gentle way</strong>. Whenever a user touches an
actionable area in your app, let them know the app is "listening" by providing a visual
@@ -22,27 +20,16 @@ of encouragement</a> are more pleasant than jolts.</li>
easier because the default touch feedback works with whatever hue you choose.</li>
</ul>
- </div>
-
- <div class="layout-content-col span-6" style="float:right;">
-
- <!-- <div class="framed-nexus5-port-span-5">
- <video class="play-on-hover" autoplay>
- <source src="{@docRoot}design/media/calendar.mp4" type="video/mp4">
- <source src="{@docRoot}design/media/calendar.webm" type="video/webm">
- <source src="{@docRoot}design/media/calendar.ogv" type="video/ogg">
- </video>
- </div>
- <div class="figure-caption" style="margin-top:0">
- <div class="video-instructions">&nbsp;</div>
- </div>
- </div> -->
-
-
- <div class="layout-content-col span-6">
-
- <img src="{@docRoot}design/media/touch_feedback_reaction_response.png">
+</div>
+<div class="layout-content-col span-6" style="float:right;">
+ <video class="play-on-hover" width="268" height="442" autoplay style="border:1px solid #ddd;background-color:#f9f9f9;" poster="">
+ <source src="{@docRoot}design/media/touch_feedback.mp4" type="video/mp4">
+ <source src="{@docRoot}design/media/touch_feedback.webm" type="video/webm">
+ <source src="{@docRoot}design/media/touch_feedback.ogv" type="video/ogg">
+ </video>
+ <div class="figure-caption">
+ <div style="color:#a3a3a3;margin-left:130px;"><em>Click image to replay...</em></div>
</div>
</div>
diff --git a/docs/html/distribute/distribute_toc.cs b/docs/html/distribute/distribute_toc.cs
index ecdf2a8..1fabcb3 100644
--- a/docs/html/distribute/distribute_toc.cs
+++ b/docs/html/distribute/distribute_toc.cs
@@ -81,6 +81,7 @@
<ul>
<li><a href="<?cs var:toroot ?>distribute/googleplay/spotlight/tablets.html">Tablet Stories</a></li>
<li><a href="<?cs var:toroot ?>distribute/googleplay/spotlight/games.html">Game Stories</a></li>
+ <li><a href="<?cs var:toroot ?>distribute/googleplay/spotlight/localization.html">Localization Stories</a></li>
</ul>
</li>
@@ -90,6 +91,7 @@
<li><a href="<?cs var:toroot ?>distribute/googleplay/edu/about.html">About</a></li>
<li><a href="<?cs var:toroot ?>distribute/googleplay/edu/start.html">Get Started</a></li>
<li><a href="<?cs var:toroot ?>distribute/googleplay/edu/guidelines.html">Guidelines</a></li>
+ <li><a href="<?cs var:toroot ?>distribute/googleplay/edu/faq.html">FAQ</a></li>
<li><a href="<?cs var:toroot ?>distribute/googleplay/edu/contact.html">Sign Up</a></li>
</ul>
</li>
diff --git a/docs/html/distribute/googleplay/edu/about.jd b/docs/html/distribute/googleplay/edu/about.jd
index cc131c64..20a0d4d 100644
--- a/docs/html/distribute/googleplay/edu/about.jd
+++ b/docs/html/distribute/googleplay/edu/about.jd
@@ -3,26 +3,25 @@ page.metaDescription=How Google Play for Education helps you reach a new audienc
excludeFromSuggestions=true
@jd:body
-<div style="position:absolute;margin-left: 636px;
+ <div style="position:absolute;margin-left: 636px;
margin-top:-76px;color:#777;">If you're interested<br>
<a href="{@docRoot}distribute/googleplay/edu/contact.html"
class="go-link"
style="display: block;text-align: right;">SIGN UP</a></div>
<div style="float:right;margin:0px 0px 24px 44px;">
- <img src="{@docRoot}images/gp-edu-knum-landscape.png" style="width:420px" alt="" />
+ <img src="{@docRoot}images/gp-edu-apps-n7.jpg" style="width:420px" alt="" />
</div>
<p>Introducing Google Play for Education, the online destination where schools
can find the right tablet content and tools for their students and teachers.</p>
-<p>With easy bulk ordering for groups, schools will be able to purchase and
-instantly distribute apps, videos, and books right to their students’
+<p>With easy bulk ordering for groups, schools can purchase and
+instantly distribute your apps, and videos right to their students’
devices.</p>
-<p>The Google Play team looks forward to seeing you create first class content
-that will help schools. We want to help you create innovative educational apps,
-without having to knock on school doors to reach teachers and students.</p>
+<p>Google Play for Education can help your innovative educational apps
+gain visibility with the right audiences, without having to knock on school doors. </p>
<p><a class="landing-page-link" style="text-align:right;" href="#video">Watch a Video</a></p>
@@ -32,36 +31,36 @@ without having to knock on school doors to reach teachers and students.</p>
<h4>Get discovered</h4>
-<p>With Google Play for Education, teachers and administrators will be able to
+<p>With Google Play for Education, teachers and administrators can
browse content by curriculum, grade, and standard &mdash; discovering the right
-content at the right time for their students. If your app offers an exciting new
-way to learn sixth grade algebra, we'll make it easy for math educators to find,
-purchase, and distribute your app to their classes.</p>
+content for their students. If your app offers an exciting new
+way to learn sixth grade algebra, math educators will be able to find,
+purchase, and distribute your app to their classes in a few clicks.</p>
<h4>Reach more schools and students</h4>
-<p>Google has built a strong network of K-12 schools who are already using
-Google Apps for Education and other Google services. These schools are excited
-and looking forward to bringing your apps and content into their classrooms with
-Nexus tablets.</p>
+<p>Over 30 million students, faculty, and staff are already using
+Google Apps for Education and other Google services. Many of these schools are
+excited to take advantage of tablets with Google Play for Education and they
+look to bringing your apps into their classrooms,
+especially apps using Google sign-on.</p>
<h4>Monetize effectively</h4>
-<p>With the wide launch of Google Play for Education later this year, educators
-will be able to make high-volume purchases using standard institutional payment
-mechanisms and distribute them to the students they want &mdash; whether it is a
-class of 30 or a district of 30,000.</p>
-
+<p>With Google Play for Education, educators are able to make high-volume purchases
+using standard institutional payment mechanisms and distribute them to the students
+they want &mdash; whether it is a class of 20 or a district of 20,000.</p>
+<code></code>
</div>
<div class="col-6 normal-links">
<h3 style="clear:left">For Educators</h3>
<h4>Android tablets in the classroom</h4>
<p>Google Play for Education brings the innovation of Android technology
-into classrooms. Educators can set up and deploy large numbers of devices in
+into classrooms. School districts can set up and deploy large numbers of devices in
just minutes or hours rather than days.</p>
<h4>Curriculum-based discovery</h4>
- <p>Powerful browsing tools let educators quickly discover apps, books,
+ <p>Powerful browsing tools let educators quickly discover apps,
videos, and other content&mdash;with many recommended by teachers and
categorized according to familiar Core Curriculum standards.
diff --git a/docs/html/distribute/googleplay/edu/contact.jd b/docs/html/distribute/googleplay/edu/contact.jd
index 804d925..ca83438 100644
--- a/docs/html/distribute/googleplay/edu/contact.jd
+++ b/docs/html/distribute/googleplay/edu/contact.jd
@@ -5,11 +5,7 @@ excludeFromSuggestions=true
<p>We're looking forward to improving how students learn in the classroom as we
bring your first-class educational content into schools across the United
-States, and to a broader international audience in the future. We'll soon share
-more information about Google Play for Education and our services that will help
-teachers and administrators buy, deploy, and use apps. </p>
-
-
+States, and to a broader international audience in the future. </p>
<div class="vspace size-1">
&nbsp;
@@ -35,8 +31,8 @@ educational apps.</p>
<p>
If you're a school or system interested in tablets and Google Play for Education,
complete the expression of interest form at <a href="http://www.google.com/edu/android">www.google.com/edu/android</a>.
-We'll be in touch later in the year as the program launches widely to schools.
</p><a href="http://www.google.com/edu/android">School Interest Form »</a>
</div>
</div>
+
diff --git a/docs/html/distribute/googleplay/edu/faq.jd b/docs/html/distribute/googleplay/edu/faq.jd
new file mode 100644
index 0000000..6afc107
--- /dev/null
+++ b/docs/html/distribute/googleplay/edu/faq.jd
@@ -0,0 +1,372 @@
+page.title=Google Play for Education FAQ
+page.metaDescription=Questions and answers about Google Play for Education.
+excludeFromSuggestions=true
+@jd:body
+
+ <div style="position:absolute;margin-left: 636px;
+ margin-top:-76px;color:#777;">If you're interested<br>
+ <a href="{@docRoot}distribute/googleplay/edu/contact.html"
+ class="go-link"
+ style="display: block;text-align: right;">SIGN UP</a></div>
+
+
+ <style>
+ dt {
+ font-weight:bold;
+ }
+ </style>
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>In this document</h2>
+<ol>
+ <li><a href="#business">Business Model</a></li>
+ <li><a href="#free_trials">Free Trials</a></li>
+ <li><a href="#discovery">Discovery</a></li>
+ <li><a href="#reviews">App Review Process</a></li>
+ <li><a href="#features">App Features</a></li>
+ <li><a href="#marketing">Marketing and ROI</a></li>
+ <li><a href="#devices">Devices</a></li>
+ <li><a href="#accounts">Accounts</a></li>
+</ol>
+</div>
+
+<p>
+ The sections below provide more information about Google Play for Education
+ and answer common questions that you might have about it.
+</p>
+
+
+<h2 id="business">Business Model and Monetization</h2>
+
+<dl>
+ <dt>
+ What is Google Play for Education?
+ </dt>
+
+ <dd>
+ Google Play for Education is a new online destination designed for schools.
+ Teachers can discover educational apps, books, and videos to meet the needs
+ of a single student, a classroom, or a whole district. Educators can browse
+ apps by grade, subject, keyword, or standard including common core.
+ Purchasing is done via PO with no credit card required. Apps are
+ distributed to tablets instantly via the cloud.
+ </dd>
+
+ <dt>
+ Is Google Play for Education primarily for students or educators?
+ </dt>
+
+ <dd>
+ The store on Google Play for Education is for educators, but its content is
+ for both educators and students. Teachers and administrators have the
+ ability to make purchases and control who within their school has access to
+ the purchase flows.
+ </dd>
+
+ <dt>
+ Will Google Play for Education support subscription purchases?
+ </dt>
+
+ <dd>
+ Currently, Google Play for Education supports one-time purchases. We are
+ investigating additional purchase mechanisms to enable more flexible
+ pricing models for developers and schools.
+ </dd>
+
+ <dt>
+ Why is it recommended to disable in-app purchases?
+ </dt>
+
+ <dd>
+ In-app purchase is currently not supported with Google Play for Education,
+ and a student device will block the Play transaction if a student attempts
+ to make an in-app purchase. To avoid student confusion in the classroom,
+ also recommend not including any in-app purchase buttons and other UI in
+ your application. We are investigating additional purchase mechanisms to
+ enable more flexible pricing models for developers and schools.
+ </dd>
+
+ <dt>
+ Is Google Play for Education restricted so only its users can purchase from
+ the Google Play for Education? Or will anyone be able to purchase from it?
+ </dt>
+
+ <dd>
+ Currently, only schools that are signed up for Google Play for Education
+ can make purchases on it.
+ </dd>
+
+ <dt>
+ Is there a way to differentiate an app's pricing between Google Play for
+ Education and Google Play?
+ </dt>
+
+ <dd>
+ For each app that you publish, you can set a single price that applies to
+ both Google Play and Google Play for Education &mdash. You can’t set a
+ different price for a given app (based on a single package name) in Google
+ Play for Education.
+ </dd>
+</dl>
+
+
+<h2 id="free_trials">Free Trials</h2>
+
+<dl>
+ <dt>
+ Can I offer free trials through Google Play for Education?
+ </dt>
+
+ <dd>
+ Google Play for Education doesn't currently support free trials. If you
+ want, you can offer a free version of your app with limited functionality
+ in Google Play for Education, but that app would need to be separate from
+ your paid app and be reviewed separately for educational content.
+ </dd>
+
+ <dt>
+ Can I offer a free trial through Google Play's "In-app Subscriptions with
+ Free Trials" feature?
+ </dt>
+
+ <dd>
+ Google Play for Education does not currently support In-app Billing or
+ In-app Subscriptions with free trials.
+ </dd>
+</dl>
+
+
+<h2 id="discovery">Discovery</h2>
+
+<dl>
+ <dt>
+ What are the categories in Google Play for Education?
+ </dt>
+
+ <dd>
+ Google Play for Education includes categories for all grade levels from
+ Kindergarten to 12 and the following subjects: English Language Arts, World
+ Languages, Mathematics, Science, Social Science, Elective, OER (Open
+ Education Resources), and Tools.
+ </dd>
+
+ <dt>
+ I created an app specifically for Google Play for Education and do not want
+ it to show up in Google Play. Is this possible?
+ </dt>
+
+ <dd>
+ Currently, it is not possible to publish an app Google Play for Education
+ and make it unavailable on Google Play.
+ </dd>
+
+ <dt>
+ If my app offers content for every level of education, how will it fit the
+ common-core standard filters?
+ </dt>
+
+ <dd>
+ If your app applies to multiple levels of education, then the app will show
+ up filtered results for in multiple levels.
+ </dd>
+</dl>
+
+
+<h2 id="reviews">App Review Process</h2>
+
+<dl>
+ <dt>
+ How are apps being reviewed? By whom and with what criteria?
+ </dt>
+
+ <dd>
+ Apps are being reviewed by a third party network of educators. These
+ educators assign the appropriate subject, grade, and common core standards
+ metadata, as well as evaluating whether the app meets the Google Play for
+ Education <a href=
+ "{@docRoot}distribute/googleplay/edu/guidelines.html">criteria for
+ classroom use</a>. You can learn more about the submission process and
+ criteria at <a href=
+ "http://developer.android.com/edu">developer.android.com/edu</a>.
+ </dd>
+
+ <dt>
+ How do I update my apps in Google Play for Education?
+ </dt>
+
+ <dd>
+ Developers can update their apps on Google Play for Education in the same
+ manner that they do for Google Play. App updates will not be reviewed prior
+ to being made available through Play for Education. However, we will
+ periodically review updated apps for quality.
+ </dd>
+
+ <dt>
+ Does the app maturity rating reflect solely what a user can do within my
+ Android app, or does the web version of my app influence the rating as
+ well?
+ </dt>
+
+ <dd>
+ The maturity rating that you set for your Android app refers only to the
+ content displayed in that application.
+ </dd>
+</dl>
+
+
+<h2 id="features">App Features</h2>
+
+<dl>
+ <dt>
+ Do I need separate builds of my phone and tablet apps for Google Play for
+ Education, or is it the exact same app that lives on Google Play?
+ </dt>
+
+ <dd>
+ We recommend you create one app and use it in both Google Play and Google
+ Play for Education.
+ </dd>
+
+ <dt>
+ What is the best way to get students’ work within apps sent back to their
+ teachers?
+ </dt>
+
+ <dd>
+ Many teachers have mentioned that the way apps treat this now is via an
+ email from a third party, which is not optimal for schools. As many schools
+ use Google Apps for Education, consider integrating your app with Google
+ Drive using the SDK which can be found here: <a class="external-link" href=
+ "https://developers.google.com/drive/about-sdk">developers.google.com/drive/about-sdk</a>.
+ </dd>
+
+ <dt>
+ How can developers test the teacher experience in Google Play for
+ Education? Is there a way to get an account to test it?
+ </dt>
+
+ <dd>
+ Currently, we are unable to provide developers with a test account to test
+ the Google Play for Education user experience. We are investigating ways to
+ allow developers to simulate the environment.
+ </dd>
+
+ <dt>
+ If I already have an app in the Chrome Apps Pack will I get some help
+ migrating this to Android?
+ </dt>
+
+ <dd>
+ If you’d like to reach users of Nexus tablets for schools we encourage you
+ to build a native app for the optimal user experience. Considerations for
+ building your app and instructions for registering it can be found at
+ <a href="http://developer.android.com/edu">developer.android.com/edu</a>.
+ </dd>
+</dl>
+
+
+<h2 id="marketing">Marketing and ROI</h2>
+
+<dl>
+ <dt>
+ What are you doing to promote these apps to educators?
+ </dt>
+
+ <dd>
+ Google Play for Education is an extension of Google Play targeting schools
+ and making discovery easier for educational apps. It helps your apps gain
+ visibility with the right audiences, without having to knock on school
+ doors. We are constantly referring to the highest quality apps in our
+ educator outreach. We have also developed a series of collections to help
+ educators quickly browse apps for the most common use cases.
+ </dd>
+
+ <dt>
+ How many installs have similar apps had on Play? How much can I expect to
+ make if I do an ROI analysis?
+ </dt>
+
+ <dd>
+ While we cannot disclose specific numbers, Google Play app listings provide
+ app download ranges for all apps.
+ </dd>
+
+ <dt>
+ What is the seasonality like for the education market? What are the key
+ timing considerations for app developers?
+ </dt>
+
+ <dd>
+ In the United States, school districts’ budget decisions go through a
+ planning phase in the Spring with budgets being released on July 1. We have
+ observed high purchase-volumes in the second quarter of the calendar year,
+ using up end-of-year budgets. New budget purchases begin in the third
+ quarter of the calendar year.
+ </dd>
+
+ <dt>
+ Is there a way to offer a special deal, such as a discount, only on Google
+ Play for Education and not on Google Play?
+ </dt>
+
+ <dd>
+ No, this is not possible. Pricing, including special offers, must be the
+ same between Google Play for Education and Google Play.
+ </dd>
+</dl>
+
+
+<h2 id="devices">Devices</h2>
+
+<dl>
+ <dt>
+ Which devices are available in the program? Will more be available?
+ </dt>
+
+ <dd>
+ Nexus 7 is available for shipment now, and the Asus Transformer will be
+ available in early 2014. We look forward to welcoming more Android devices
+ into the Google in Education family soon.
+ </dd>
+
+ <dt>
+ Can the devices be shared among many students?
+ </dt>
+
+ <dd>
+ No. Currently, this program is for one-to-one usage. Each student can login
+ to one specific tablet that is allocated to them.
+ </dd>
+</dl>
+
+
+<h2 id="accounts">
+ Accounts
+</h2>
+
+<dl>
+ <dt>
+ Will an app know whether a user is a teacher or student?
+ </dt>
+
+ <dd>
+ No, the app has no mechanism for knowing if it is running on a teacher’s
+ device or a student’s device. We recommend developers use their own user
+ database to enable this feature, where logins can be based on Google
+ Account information.
+ </dd>
+
+ <dt>
+ What log-in method do you recommend for an app on Google Play for
+ Education?
+ </dt>
+
+ <dd>
+ One of the key pieces of feedback we have heard multiple times from various
+ schools is that they prefer apps that offer Google Single Sign-on, so that
+ teachers and students do not need to remember multiple log-in credentials.
+ As schools in the program use Google Accounts and Google Apps for
+ Education, offering Google Single Sign-on is ideal.
+ </dd>
+</dl> \ No newline at end of file
diff --git a/docs/html/distribute/googleplay/edu/guidelines.jd b/docs/html/distribute/googleplay/edu/guidelines.jd
index 7b656b4..c4b719b 100644
--- a/docs/html/distribute/googleplay/edu/guidelines.jd
+++ b/docs/html/distribute/googleplay/edu/guidelines.jd
@@ -3,18 +3,16 @@ page.metaDescription=Get your apps ready for Google Play for Education.
excludeFromSuggestions=true
@jd:body
-<div style="position:absolute;margin-left: 636px;
+ <div style="position:absolute;margin-left: 636px;
margin-top:-76px;color:#777;">If you're interested<br>
<a href="{@docRoot}distribute/googleplay/edu/contact.html"
class="go-link"
style="display: block;text-align: right;">SIGN UP</a></div>
-<div
-style="background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">You
-can now include your apps in the Google Play for Education <a
-href="{@docRoot}distribute/googleplay/edu/start.html#program">pilot program</a>,
-getting it into the hands of participating schools and key influencers in the
-education technology community. See <a href="start.html">Get Started</a> to
+<div style="background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">You
+can now include your educational apps in the recently launched Google Play for Education program,
+getting it into the hands of participating schools and key influencers in the education technology
+community. See <a href="start.html">Get Started</a> to
learn how to participate. </div>
<p>The sections below list the guidelines and requirements for apps
@@ -229,14 +227,9 @@ Play for Education environment:</p>
<ul>
<li><em>Android version</em> &mdash; Test the app on devices running Android
4.2. Google Play for Education devices will be running Android 4.2 or higher
-(API level 17).</li>
+(API level 17+).</li>
<li><em>Proxy server</em> &mdash; Test the app in network environment that uses
proxies. Many schools use proxies.</li>
-<li><em>Secondary user account</em> &mdash; Test the app using a secondary user
-account. Most Google Play for Education users will not be using the primary <a
-href="{@docRoot}about/versions/jelly-bean.html#42-multiuser">multiuser</a>
-account on their devices. For testing, create a secondary multiuser account on
-your tablet.</li>
<li><em>No location services</em> &mdash; Test the app to make sure it works
properly with location services disabled. Many schools will disable location
services for student devices.</li>
@@ -249,4 +242,3 @@ devices.</li>
<li><em>No access to network</em> &mdash; Test the app to make sure it works
properly when the device cannot connect to the internet. </li>
</ul>
-
diff --git a/docs/html/distribute/googleplay/edu/index.jd b/docs/html/distribute/googleplay/edu/index.jd
index de5fe35..8a60cb9 100644
--- a/docs/html/distribute/googleplay/edu/index.jd
+++ b/docs/html/distribute/googleplay/edu/index.jd
@@ -10,20 +10,21 @@ header.hide=1
style="display: block;text-align: right;">SIGN UP</a></div>
<div class="marquee">
- <div class="mainimg" style="position:absolute;margin-left:6px;margin-top:96px;">
- <img src="{@docRoot}images/gp-edu-hero7.png" style="width:590px;">
+ <div class="mainimg" style="position:absolute;margin-left:34px;margin-top:57px;">
+ <img src="{@docRoot}images/gp-edu-hero14.jpg" style="width:670px;" />
</div>
- <div class="copy" style="position:relative;left:314px;margin-top:42px;width:420px;">
+ <div class="copy" style="position:relative;left:334px;margin-top:28px;width:420px;">
<h1 style="margin-bottom:10px;">Google Play for Education</h1>
- <p>A destination where schools can find great&nbsp;educational content in Google Play.
- Bulk&nbsp;purchase and instant distribution let&nbsp;educators bring your apps directly
- to&nbsp;classrooms and schools.</p>
- <p><a class="button" href="{@docRoot}distribute/googleplay/edu/about.html"
- >Read More</a></p>
+ <p>Google Play for Education is a destination where schools can find great,
+ teacher-approved, educational apps and videos on Play Store. Teachers can filter
+ content by subject matter, grade and other criteria. Bulk purchase and instant
+ distribution let educators bring your apps directly to classrooms and schools.</p>
+ <p>If have an educational app, be part of Google Play for Education.</p>
+ <p><a class="button" href="{@docRoot}distribute/googleplay/edu/about.html">Learn More</a></p>
</div>
</div>
-<div class="distribute-features col-13" style="clear:both;margin-top:253px;">
+<div class="distribute-features col-13" style="clear:both;margin-top:248px;">
<div class="distribute-link">
<ul>
<li><a href="{@docRoot}distribute/googleplay/edu/about.html"><h5>About the Initiative</h5>
@@ -31,14 +32,16 @@ header.hide=1
<li><a href="{@docRoot}distribute/googleplay/edu/start.html"><h5>Get your Apps Ready</h5>
Follow these guidelines to make sure your app meets requirements and offers a great user experience. </a>
</li>
- <li class="last"><a href="{@docRoot}distribute/googleplay/edu/contact.html"><h5>Sign Up</h5>
- Sign up here to be notified of the latest information regarding this program.</a>
+ <li class="last"><a href="{@docRoot}distribute/googleplay/edu/start.html#opt-in"><h5>Submit your App</h5>
+ Use the Google Play Developer Console to mark your app for inclusion in the program and review by third-party
+ educators. </a>
</li>
</ul>
</div>
</div>
+
diff --git a/docs/html/distribute/googleplay/edu/start.jd b/docs/html/distribute/googleplay/edu/start.jd
index 78b8739..01d4406 100644
--- a/docs/html/distribute/googleplay/edu/start.jd
+++ b/docs/html/distribute/googleplay/edu/start.jd
@@ -3,18 +3,19 @@ page.metaDescription=Get Started with Google Play for Education
excludeFromSuggestions=true
@jd:body
-<div style="position:absolute;margin-left: 636px;
+ <div class="jd-descr" itemprop="articleBody">
+ <div style="position:absolute;margin-left: 636px;
margin-top:-76px;color:#777;">If you're interested<br>
<a href="{@docRoot}distribute/googleplay/edu/contact.html"
class="go-link"
style="display: block;text-align: right;">SIGN UP</a></div>
<div style="background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">You
-can now include your apps in the Google Play for Education <a href="#program">pilot program</a>,
-getting it into the hands of participating schools and key influencers in the education technology
-community. See the sections below to learn more.</div>
+can now include your educational apps in the Google Play for Education program,
+getting it into the hands of participating schools and key influencers in the
+education technology community. See the sections below to learn more.</div>
-<p>If you've got a great app for education or just an idea for one, plan to be a
+<p>If you've got a great app for education, be
part of Google Play for Education to reach even more teachers and students. It's
easy to participate, and you'll be able to offer new or existing Android apps
using familiar tools and processes in Google Play.</p>
@@ -26,8 +27,8 @@ Apps</a> for information on the safety, usability, and quality standards that
your apps should meet. When your app is ready, you can opt-in to Google Play for
Education from the Developer Console.</p>
-<p>Note that the initial launch of Google Play for Education is planned for Fall
-2013 and will include schools in the United States only, with support for other
+<p>Note that Google Play for Education is currently available to schools in the
+United States only, with support for schools in other
countries to follow. At this time, please include your app in Google Play for
Education only if it is targeting the <strong>US K-12 market</strong>. </p>
@@ -35,11 +36,12 @@ Education only if it is targeting the <strong>US K-12 market</strong>. </p>
<h2 id="participate">How to Participate</h2>
<div style="float:right; padding-top:2em;"><img
-src="{@docRoot}images/gp-edu-process.png"></div>
+src="{@docRoot}images/gp-edu-process.png" /></div>
-<p>Google Play for Education lets you put your educational apps in front of a
+<p>Google Play for Education is a great way to put your educational apps in front of a
new audience of teachers and students. You can develop and publish using
-familiar tools and processes, such as your existing Developer Console account
+familiar tools and processes, such as your existing <a
+href="https://play.google.com/apps/publish/">Developer Console</a> account
and your current distribution and pricing settings. It's easy to participate
&mdash; the sections below outline the process.</p>
@@ -109,7 +111,7 @@ modifications to your app.</p>
</div>
</div>
-<p>When you've built your release-ready APK and tested to ensure that it meets
+<p>Once you've built your release-ready APK and tested to ensure that it meets
the <a href="{@docRoot}distribute/googleplay/edu/guidelines.html">app guidelines</a>,
upload it to the Developer Console, create your store listing, and set
distribution options. If you aren't familiar with how to prepare for launch on
@@ -117,7 +119,8 @@ Google Play, see the <a
href="{@docRoot}distribute/googleplay/publish/preparing.html">Launch Checklist</a>. </p>
<p>When your app is ready to publish, you can <em>opt-in</em> to Google Play for
-Education from the Developer Console. Opt-in means that you want your app to be
+Education directly from the <a
+href="https://play.google.com/apps/publish/">Developer Console</a>. Opt-in means that you want your app to be
made available to educators through Google Play for Education, including review,
classification, and approval by our third-party educator network. Note that
opt-in does not affect the availability of your app in Google Play Store.</p>
@@ -141,18 +144,21 @@ Addendum, make sure to read them before opting-in. </p>
opt-in. </li>
<li>Under Pricing and Distribution, scroll down to find "Google Play for
Education" and the opt-in checkbox. </li>
- <li>Click the checkbox next to "Include my app in Google Play for
-Education..."</li>
- <li>After you've opted-in, find the "Ads" and "In-app purchases" checkboxes below.
-Check each checkbox that applies. Your app's use of ads or in-app purchases will
+ <li>Click the checkbox next to "Include this application in Google Play for
+Education."</li>
+ <li>In the first dialog that appears, review the content policies and guidelines
+ and click "Continue" if your app meets the the policies and guidelines.</li>
+ <li>In next dialog that appears, shown below, find the "Ads" and "In-app purchases" radio
+ buttons. Check each option that applies. Your app's use of ads or in-app purchases will
be shown to educators when they are browsing your app. </li>
<li>Click "Save" to save your Pricing and Distribution changes.</li>
</ol>
<div style="clear:both;margin-top:1.5em;margin-bottom:1.5em;width:660px;">
-<img src="{@docRoot}images/gp-edu-optin.png" style="border:2px solid #ddd;width:660px;">
-<p class="image-caption"><span style="font-weight:500;">Opt-in for apps</span>:
-Include your app in Google Play for Education by opting-in from the Developer Console.</p>
+<img src="{@docRoot}images/gp-edu-ads-iab.png" style="border:2px solid #ddd;width:660px;" />
+<p class="image-caption"><span style="font-weight:500;">Ads and in-app purchase</span>:
+When you opt-in to Google Play for Education, make sure to declare your app's use of ads and
+in-app purchases.</p>
</div>
<p>Once you save changes and publish your app, the app will be submitted to our
@@ -176,23 +182,20 @@ them discoverable through the Google Play for Education browsing tools. </p>
<p>Our third-party educator network will evaluate apps according to educational
value and alignment with K-12 core standards, then assign the metadata for
-subject, grade level, and core curriculum that makes them easily browseable for
+subject, grade level, and core curriculum that makes them easily browsable for
educators. To understand how your apps will be evaluated, please see the <a
href="{@docRoot}distribute/googleplay/edu/guidelines.html">Guidelines for
Apps</a> document.</p>
<p>As soon as you opt-in to Google Play for Education and publish, your app is
queued for review by our third-party educator network. The review and approval
-process can take <strong>3-4 weeks or more</strong>. You'll receive notification
+process can take four weeks or more</strong>. You'll receive notification
by email (to your developer account address) when the review is complete, with a
summary of the review results. </p>
-<p class="note"><strong>Note</strong>: Until the full product launch in Fall
-2013, please expect the initial review of your app to take longer than usual.
-</p>
-
<p>At any time, you can check the review and approval status of your app in the
-Developer Console, under "Google Play for Education" in the app's Pricing and
+<a href="https://play.google.com/apps/publish/">Developer Console</a>, under
+"Google Play for Education" in the app's Pricing and
Distribution page. There are three approval states:</p>
<ul>
@@ -200,9 +203,6 @@ Distribution page. There are three approval states:</p>
is not yet complete.</li>
<li><em>Approved</em> &mdash; Your app was reviewed and approved. The app
will be made available directly to educators through Google Play for Education.
-Until the full product launch later this year, your app will be available to a
-limited number of educators through the <a
-href="{@docRoot}distribute/googleplay/edu/start.html#program">pilot program</a>.
Once your app is approved, you can update it at your convenience without needing
another full review. </li>
<li><em>Not approved</em> &mdash; Your app was reviewed and not approved.
@@ -215,50 +215,14 @@ discussed in the next section. </p>
<h3 id="appeal">5. Get support or appeal your review results</h3>
-<p>After your app is reviewed you'll receive an email giving you the review
-results, including whether the app was approved, how the app was classified, and
+<p>After your app is reviewed you'll receive an email giving you the
+results, including information on whether the app was approved and
what issues may need to be addressed. You'll receive the email at the address
you specified for your developer account. </p>
-<p>If you believe your app was reviewed or classified incorrectly, you will be
-able to appeal and request reconsideration. Watch for more information on the
-appeal process and links in the weeks to come.</p>
-
-<p class="note"><strong>Note</strong>: Support and appeal forms are not yet
-available, but will be available soon.</p>
-
-
-<h2 id="program">Including Your Apps in the Pilot Program</h2>
-
-<p>Leading up to the Fall 2013 launch, the Google Play for Education team is
-conducting an extensive series of pilots that include schools and students across
-the United States. Educators in participating schools can browse for apps and
-purchase them in bulk, then deploy them instantly to teacher and student
-devices. </p>
-
-<h3 id="pilot">Early opt-in and publishing</h3>
-<p>As an app developer, you can take part in the pilot program, getting your app
-into the hands of schools and key influencers in the education technology
-community. It's a great way to get early feedback on your educational app. </p>
-
-<p>To offer your app in the pilot program, prepare the app and ensure that it meets
-the <a href="{@docRoot}distribute/googleplay/edu/guidelines.html">Guidelines
-for Apps</a>. Then opt-in to Google Play for Education and publish as soon
-as you are ready. Once your app is approved during review by our third-party
-educator network, it will be made available to educators in the pilot program
-right away. Note that during the pilot program, the review and approval process
-may take longer than usual.</p>
-
-<h3 id="launch">Full launch to US schools</h3>
-<p>The initial launch of Google Play for Education is planned for Fall 2013. The
-pilot program and full launch will include schools in the United States only,
-with support for schools in other countries to follow. </p>
-
-<p>At this time, you should include your app in Google Play for Education only
-if it is targeting the US K-12 market. </p>
-
-<h3 id="more">More information</h3>
+<p>If your app has issues that need to be addressed, make the necessary
+adjustments, upload your app, and then resubmit the app to Google Play for
+Education through the Developer Console using process described above. Your app
+will be queued for review and you'll receive the review results by email just
+as before.</p>
-<p>If you'd like to be notified by email of the latest information about Google Play
-for Education, visit the <a href="{@docRoot}distribute/googleplay/edu/contact.html">
-Sign Up</a> page and fill out the form. </p> \ No newline at end of file
diff --git a/docs/html/distribute/googleplay/publish/localizing.jd b/docs/html/distribute/googleplay/publish/localizing.jd
index 7788ce1..1a5f3c1 100644
--- a/docs/html/distribute/googleplay/publish/localizing.jd
+++ b/docs/html/distribute/googleplay/publish/localizing.jd
@@ -372,24 +372,24 @@ properly.</p>
<p>After the translations are merged back into your app, start <a
href="#testing">testing the localized app</a>.</p>
+<h4 id="gp-trans">Purchase professional translations through Google Play
+<br />App Translation Service</h4>
+
<div class="sidebox-wrapper">
<div class="sidebox">
-<h2>Join the translation pilot</h2>
-<p>Google Play is offering translation services as part of a pilot
-program. If you're interested, sign up on the APK page in your
-Developer Console.</p>
+<h2>App Translations in Google Play</h2>
-<p>If you join, also try the <a
+<p>Hear from developers who have used the Google Play App Translation Service in <a
+href="{@docRoot}distribute/googleplay/spotlight/localization.html">Developer
+Stories: Localization in Google Play</a>.</p>
+
+<p>To make it easy to export your app's strings and import
+the finished translations into your project, try the <a
href="{@docRoot}sdk/installing/installing-adt.html#tmgr">
-ADT Translation Manager Plugin</a>, which makes it easy to upload
-your strings to the Developer Console and download translations
-right into your project. </div>
+ADT Translation Manager Plugin</a>.</div>
</div>
-<h4 id="gp-trans">Purchase professional translations through the
-Developer Console</h4>
-
-<p>Google Play can help you quickly find and purchase translations of your app.
+<p>Google Play App Translation Service can help you quickly find and purchase translations of your app.
In the Developer Console, you can browse a list of third-party vendors who are
pre-qualified by Google to offer high-quality translation at competitive prices.
You can upload the strings you want translated, select the languages you want to
diff --git a/docs/html/distribute/googleplay/spotlight/localization.jd b/docs/html/distribute/googleplay/spotlight/localization.jd
new file mode 100644
index 0000000..ae5993d
--- /dev/null
+++ b/docs/html/distribute/googleplay/spotlight/localization.jd
@@ -0,0 +1,328 @@
+page.title=Developer Stories: Localization in Google Play
+walkthru=0
+header.hide=0
+
+@jd:body
+
+<p>
+ As you build your app and distribute it across the world through Google Play,
+ localization becomes an increasingly important tool to reach more users.
+ Localization involves a <a href=
+ "{@docRoot}distribute/googleplay/publish/localizing.html">variety of tasks</a>, but
+ most important is creating quality translations of your app's UI strings and
+ marketing materials.
+</p>
+
+<p>
+ Managing the translation process across multiple languages can be a
+ challenge, especially if you need to locate translators on your own. That’s
+ why Google Play offers the App Translation Service right from the Developer
+ Console. It's a single place where you can go to source professional
+ translators, get cost estimates, and then send your strings and other
+ materials for translation.
+</p>
+
+<p>
+ Here are some stories from developers who have used Google Play's App Translation
+ Service to localize their apps and the results they've seen as they've
+ expand their offerings beyond a single language.
+</p>
+
+<!-- START STORY -->
+
+<div style="margin-bottom:2em;padding-top:10px;" id="zombieragdoll">
+
+<h3 style="line-height:1.25em">Zombie Ragdoll: Improved user engagement<br /> with localized versions</h3>
+
+ <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px height:78px;
+ width: 78px;
+ float: left;
+ margin: 12px 20px 9px 20px;" src=
+ "https://lh4.ggpht.com/m-Ew8c8C_nGctbP6PSPGOaVNnGFryReOE2yHXJ9Z6Prk1nsDyx5w5TmWfg-P5N3HypA=w124">
+
+ <div style="list-style: none;height:100%;
+ float: right;
+ border-top: 1px solid #9C0;
+ width: 220px;
+ margin: 4px 20px;padding: .5em;">
+
+ <h5>About the app</h5>
+
+ <ul>
+ <li><a href="https://play.google.com/store/apps/details?id=com.rvappstudios.zombieragdoll">Zombie Ragdoll</a></li>
+ <li>A fun zombie-based physics game</li>
+ </ul>
+
+ <h5>Localization Results</h5>
+
+ <ul>
+ <li>Increased engagement because of appeal of the localized version</li>
+ <li>80% of installs came from users of non-English languages</li>
+ </ul>
+
+ <div style="padding:.5em 0 0 1em;">
+ <a href="https://play.google.com/store/apps/details?id=com.rvappstudios.zombieragdoll">
+ <img alt="Android app on Google Play"
+ src="//developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
+ </a>
+
+ </div>
+ </div>
+
+ <div style="line-height:1.4em;">
+
+<p>
+ The 2013 Google I/O talks about <a href=
+ "https://developers.google.com/events/io/sessions/326345917">Building Android
+ Apps for a Global Audience</a> and <a href=
+ "https://developers.google.com/events/io/sessions/326455375">What’s New for
+ Developers in Google Play</a> inspired developers at RV AppStudios to go global
+ from very beginning for their new game, Zombie Ragdoll. They launched Zombie
+ Ragdoll in August 2013, localized into 20 languages.
+</p>
+
+<p>
+ They quickly saw the impact of their decision to ship simultaneously in
+ multiple languages through increased non-English installs and improved
+ engagement with users worldwide. In addition, they started getting
+ significant usage in countries where their apps had not been as popular
+ before. They are seeing great traction in countries like Vietnam, Russia,
+ Philippines and Thailand.
+</p>
+
+<p>
+ Vivek Dave, founder of RV AppStudios, credits the success of Zombie Ragdoll
+ to localization:
+</p>
+
+<p>
+ "The value of localization is clear, it helps discoverability and helps
+ connect with the users in other countries. So when the localization
+ opportunity arose, we immediately jumped on it. Android is worldwide, and we
+ would be severely limiting ourselves if we focused on English as the only
+ language.
+</p>
+
+<p>
+ "The App Translation Service offered in the Google Play Developer Console is
+ extremely easy to use and the pricing is very attractive. Developers with
+ limited localization experience can easily create, upload, and translate
+ their app."
+</p>
+
+
+<p>
+ RV AppStudios not only localizes the text within the game, but also localizes
+ the game assets to a specific country/culture. Dave says, “Users want a
+ personalized experience, and by offering a localized game with translation of
+ text and graphic assets, we believe users will connect at a much deeper level
+ with the game.”
+</p>
+
+
+ <div style="margin-top:8px;float:left;margin-right:24px;">
+ <img src="{@docRoot}images/distribute/zombie-ragdoll-n5-land.jpg" style="width:470px;">
+ </div>
+
+
+ <div style="margin-top:128px;">
+ <p class="img-caption"><strong>Hindi version of Zombie Ragdoll</strong>:
+ Localized screenshots and videos in the app's Google Play listing go a
+ long way toward increasing the number of installs.</p>
+ </div>
+
+ </div>
+
+</div> <!-- END STORY -->
+
+<!-- START STORY -->
+
+<div style="margin-bottom:2em;padding-top:18px;clear:both;" id="sayhichat">
+
+<h3>SayHi Chat: Install growth and user engagement<br />
+ from professional translations</h3>
+
+ <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px height:78px;
+ width: 78px;
+ float: left;
+ margin: 12px 20px 9px 20px;" src=
+ "https://lh5.ggpht.com/qiL6CF1Hktz618T3mbGrxvm_OoeheQ78FgG7zr90C2MCRiz4IDQsbKuHT4xQGiWEU8o=w124">
+
+ <div style="list-style: none;height:100%;
+ float: right;
+ border-top: 1px solid #9C0;
+ width: 220px;
+ margin: 4px 20px;padding: .5em;">
+
+ <h5>About the app</h5>
+
+ <ul>
+ <li><a href="https://play.google.com/store/apps/details?id=com.unearby.sayhi">SayHi Chat,
+ Love, Meet, Dating</a></li>
+ <li>A social app to help you find people nearby</li>
+ </ul>
+
+ <h5>Localization Results</h5>
+
+ <ul>
+ <li>120% growth in language installs for new languages added</li>
+ <li>~20% increase in revenue and ~50% increase in User Reviews in the new
+ languages</li>
+ </ul>
+
+ <div style="padding:.5em 0 0 1em;">
+ <a href="https://play.google.com/store/apps/details?id=com.unearby.sayhi">
+ <img alt="Android app on Google Play"
+ src="//developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
+ </a>
+
+ </div>
+ </div>
+
+ <div style="line-height:1.4em;">
+
+<p>
+ The SayHi Chat app started out only in Japanese, Chinese and English. It soon
+ became one of the most popular apps in Japan, Hong Kong, and Taiwan. The
+ SayHi team realized it was time to launch in more languages, as the language
+ barrier was restricting how fast SayHi could grow globally. </p>
+
+ <p>Yan Shi, senior
+ developer at SayHi, says: "We checked Google Analytics for our DAU and user
+ growth numbers in each country, we also looked at total Android and iOS users
+ in those markets before finalizing our next set of languages.
+</p>
+
+ <div style="margin-top:8px;float:left;width:270px;">
+ <img src="{@docRoot}images/distribute/hichat-n5-port.jpg" style="width:240px;margin-right:48px;">
+ </div>
+
+<p>
+ SayHi used the App Translation Service to launch in 13 additional languages
+ in August 2013 and immediately saw 120% increase in install rates. In
+ addition, they are seeing their app ranked in Top 10 apps in countries like
+ Poland and Italy.
+</p>
+
+<p>Notably, they saw steady growth in Spain after replacing their previous
+ non-professional Spanish translation with a professional one produced through
+ the App Translation Service.</p>
+
+<p>
+ Yan Shi adds, “The App Translation Service is really easy to use and
+ the completion time for translation requests is very good.”
+</p>
+
+ <div style="width:600px;margin-top:98px;padding:0;">
+ <p class="img-caption"><strong>Arabic version of SayHi Chat</strong>:
+ User engagement increased significantly with
+ the localized version.</p>
+ </div>
+
+ </div>
+</div> <!-- END STORY -->
+
+
+<div style="margin-bottom:2em;clear:both;padding-top:18px;" id="g4a"><!-- START STORY -->
+
+<h3 style="line-spacing:1.25em;">G4A Indian Rummy: Benefitting from ease-of-use and<br /> fast turnaround time</h3>
+
+ <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px height:78px;
+ width: 78px;
+ float: left;
+ margin: 12px 20px 9px 20px;" src=
+ "https://lh4.ggpht.com/IxSyQgO0LWzPRoLfCrER06-0kr6aMAa2azF7eNYB30EBZAGOLYJUZulknPockbTlDYU=w124">
+
+ <div style="list-style: none;height:100%;
+ float: right;
+ border-top: 1px solid #9C0;
+ width: 220px;
+ margin: 4px 20px;padding: .5em;">
+
+ <h5>About the app</h5>
+
+ <ul>
+ <li><a href="https://play.google.com/store/apps/details?id=org.games4all.android.games.indianrummy.prod">G4A Indian Rummy</a></li>
+ <li>A card game in which the players try to form sets and sequences of cards</li>
+ </ul>
+
+ <h5>Localization Results</h5>
+
+ <ul>
+ <li>Double the number of users in French and German languages</li>
+ <li>300% increase in user engagement with localized version</li>
+ </ul>
+
+ <div style="padding:.5em 0 0 1em;">
+ <a href="https://play.google.com/store/apps/details?id=com.rvappstudios.zombieragdoll">
+ <img alt="Android app on Google Play"
+ src="//developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
+ </a>
+ </div>
+ </div>
+
+ <div style="line-height:1.4em;">
+
+<p>
+ Games4All (G4A) is the developer of Indian Rummy and a variety of games that
+ they distribute broadly to users around the world. After noticing that
+ certain apps had become especially popular in specific countries, they
+ decided to localize those apps. Initially they used a local agency to do
+ the translation and got great results &mdash; the number of users in
+ that language increased tremendously when they released the localized
+ version.
+</p>
+
+<p>
+ Building on that success, G4A expanded their localization goals but
+ found that translation quality varied across their vendors and costs limited the
+ language/game combinations they could try. That's when G4A decided to try the
+ App Translation Service.
+</p>
+
+<p>
+ Founder Pieter Olivier says, "When we heard that the App Translation
+ Service was available in the Developer Console, we jumped at the opportunity.
+ We've now been using the App Translation Service for several months and found
+ that the cost per translation is much lower than with local companies and the
+ process is much easier."
+</p>
+
+<p>So far, G4A has translated the game Indian Rummy into five languages through
+ the App Translation Service.</p>
+
+<p>
+ Olivier continues, "The first thing we did was convert all of our texts into
+ the strings.xml format. After that using the service was extremely easy and
+ straightforward. In contrast, our previous experiences with translation
+ agencies were much more difficult: files often required extensive conversion
+ operations to make them usable, and turnaround times varied wildly.
+</p>
+
+<p>
+ "With the App Translation Service, the turnaround time is usually measured in
+ days instead of weeks that we were used to with traditional translation
+ agencies."
+</p>
+
+ <div style="margin-top:14px;float:left;margin-right:24px;">
+ <img src="{@docRoot}images/distribute/indian-rummy-n4-land.jpg" style="width:470px;">
+ </div>
+
+ <div style="margin-top:158px;">
+ <p class="img-caption"><strong>Dutch
+ version of Indian Rummy</strong>: Making slight changes to games rules based on
+ local nuances was key to success of the game.</p>
+ </div>
+
+ </div>
+
+
+
+</div> <!-- END STORY --> \ No newline at end of file
diff --git a/docs/html/guide/topics/connectivity/nfc/hce.jd b/docs/html/guide/topics/connectivity/nfc/hce.jd
index 3e6468f..4ef6859 100644
--- a/docs/html/guide/topics/connectivity/nfc/hce.jd
+++ b/docs/html/guide/topics/connectivity/nfc/hce.jd
@@ -70,7 +70,7 @@ protocol frames to a secure element. Figure 2 illustrates how host-based card em
works.</p>
<img src="{@docRoot}images/nfc/host-based-card.png" />
-<p class="img-caption"><strong>Figure 2.</strong> NFC card emulation with a secure element.</p>
+<p class="img-caption"><strong>Figure 2.</strong> NFC card emulation without a secure element.</p>
<h2 id="SupportedProtocols">Supported NFC Cards and Protocols</h2>
@@ -288,12 +288,12 @@ enforces that only the Android OS can bind to your service. </p>
<pre>
&lt;service android:name=".MyHostApduService" android:exported="true"
- android:permission="android.permission.BIND_NFC_SERVICE">
+ android:permission="android.permission.BIND_NFC_SERVICE">
&lt;intent-filter>
&lt;action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
&lt;/intent-filter>
&lt;meta-data android:name="android.nfc.cardemulation.host_apdu_service"
- android:resource="@xml/apduservice"/>
+ android:resource="@xml/apduservice"/>
&lt;/service>
</pre>
@@ -306,7 +306,7 @@ below:</p>
android:description="@string/servicedesc"
android:requireDeviceUnlock="false">
&lt;aid-group android:description="@string/aiddescription"
- android:category="other">
+ android:category="other">
&lt;aid-filter android:name="F0010203040506"/>
&lt;aid-filter android:name="F0394148148100"/>
&lt;/aid-group>
@@ -381,14 +381,14 @@ shown below:</p>
<pre>
&lt;host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
- android:description="@string/servicedesc"
- android:requireDeviceUnlock="false"
- android:apduServiceBanner="@drawable/my_banner">
- &lt;aid-group android:description="@string/aiddescription"
- android:category="payment">
- &lt;aid-filter android:name="F0010203040506"/>
- &lt;aid-filter android:name="F0394148148100"/>
- &lt;/aid-group>
+ android:description="@string/servicedesc"
+ android:requireDeviceUnlock="false"
+ android:apduServiceBanner="@drawable/my_banner">
+ &lt;aid-group android:description="@string/aiddescription"
+ android:category="payment">
+ &lt;aid-filter android:name="F0010203040506"/>
+ &lt;aid-filter android:name="F0394148148100"/>
+ &lt;/aid-group>
&lt;/host-apdu-service>
</pre>
@@ -478,12 +478,12 @@ almost identical to the declaration of a HCE service. The exceptions are:</p>
<pre>
&lt;service android:name=".MyOffHostApduService" android:exported="true"
- android:permission="android.permission.BIND_NFC_SERVICE">
+ android:permission="android.permission.BIND_NFC_SERVICE">
&lt;intent-filter>
&lt;action android:name="android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE"/>
&lt;/intent-filter>
&lt;meta-data android:name="android.nfc.cardemulation.off_host_apdu_ervice"
- android:resource="@xml/apduservice"/>
+ android:resource="@xml/apduservice"/>
&lt;/service>
</pre>
</li>
diff --git a/docs/html/guide/topics/resources/localization.jd b/docs/html/guide/topics/resources/localization.jd
index 55c8dc4..7288aeb 100644
--- a/docs/html/guide/topics/resources/localization.jd
+++ b/docs/html/guide/topics/resources/localization.jd
@@ -19,7 +19,7 @@ parent.link=index.html
<ol>
<li><a href="#resource-switching">Overview: Resource-Switching in Android</a></li>
<li><a href="#using-framework">Using Resources for Localization</a></li>
-<li><a href="#strategies">Localization Strategies</a></li>
+<li><a href="#strategies">Localization Tips</a></li>
<li><a href="#testing">Testing Localized Applications</a></li>
</ol>
@@ -304,7 +304,13 @@ Alternative Resources</a>.</p>
For more about this, see <a
href="{@docRoot}guide/topics/resources/accessing-resources.html">Accessing Resources</a>.</p>
-<h2 id="strategies">Localization Strategies</h2>
+<h2 id="checklist">Localization Checklist</h2>
+
+<p>For a complete overview of the process of localizing and distributing an Android application,
+see the <a href="{@docRoot}distribute/googleplay/publish/localizing.html">Localization
+Checklist</a> document.</p>
+
+<h2 id="strategies">Localization Tips</h2>
<h4 id="failing2">Design your application to work in any locale</h4>
@@ -478,6 +484,4 @@ the new locale. </p>
portrait orientation and see if the application will run.
-<h2 id="checklist">Localization Checklist</h2>
-<p>For an overview of the process of localizing an Android application, see the <a href="{@docRoot}distribute/googleplay/publish/localizing.html">Localization Checklist</a>.</p>
diff --git a/docs/html/images/distribute/hichat-n5-port.jpg b/docs/html/images/distribute/hichat-n5-port.jpg
new file mode 100644
index 0000000..b93e983
--- /dev/null
+++ b/docs/html/images/distribute/hichat-n5-port.jpg
Binary files differ
diff --git a/docs/html/images/distribute/indian-rummy-n4-land.jpg b/docs/html/images/distribute/indian-rummy-n4-land.jpg
new file mode 100644
index 0000000..61943fc
--- /dev/null
+++ b/docs/html/images/distribute/indian-rummy-n4-land.jpg
Binary files differ
diff --git a/docs/html/images/distribute/zombie-ragdoll-n5-land.jpg b/docs/html/images/distribute/zombie-ragdoll-n5-land.jpg
new file mode 100644
index 0000000..e2bf6b5
--- /dev/null
+++ b/docs/html/images/distribute/zombie-ragdoll-n5-land.jpg
Binary files differ
diff --git a/docs/html/images/gp-edu-ads-iab.png b/docs/html/images/gp-edu-ads-iab.png
new file mode 100644
index 0000000..07ccaee
--- /dev/null
+++ b/docs/html/images/gp-edu-ads-iab.png
Binary files differ
diff --git a/docs/html/images/gp-edu-apps-n7.jpg b/docs/html/images/gp-edu-apps-n7.jpg
new file mode 100644
index 0000000..c2e3e21
--- /dev/null
+++ b/docs/html/images/gp-edu-apps-n7.jpg
Binary files differ
diff --git a/docs/html/images/gp-edu-hero14.jpg b/docs/html/images/gp-edu-hero14.jpg
new file mode 100644
index 0000000..69b02e2
--- /dev/null
+++ b/docs/html/images/gp-edu-hero14.jpg
Binary files differ
diff --git a/docs/html/images/gp-edu-hero7.png b/docs/html/images/gp-edu-hero7.png
deleted file mode 100644
index 84abdef..0000000
--- a/docs/html/images/gp-edu-hero7.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/gp-edu-knum-landscape.png b/docs/html/images/gp-edu-knum-landscape.png
deleted file mode 100644
index aaec6dc..0000000
--- a/docs/html/images/gp-edu-knum-landscape.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/index.jd b/docs/html/index.jd
index 5c805f8..3e59068 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -14,78 +14,62 @@ page.customHeadTag=<meta name="google-site-verification" content="sa-bIAI6GKvct3
<a href="" class="slideshow-next">Next</a>
<div class="frame">
<ul>
+ <!-- set explicit widths as needed to prevent overflow issues -->
<li class="item carousel-home">
- <div class="content-left col-7">
- <a href="/about/versions/kitkat.html"><img src="/images/home/kk-hero.jpg" style="width:242px;padding-top:72px;"></a>
- </div>
- <div class="content-right col-6">
+ <div class="content-left col-7" style="width:400px;">
+ <a href="{@docRoot}about/versions/kitkat.html">
+ <img src="{@docRoot}images/home/kk-hero.jpg" width="242" style="padding-top:72px;">
+ </a>
+ </div>
+ <div class="content-right col-4" style="width:340px;">
<h1>Android 4.4 KitKat!</h1>
<p>A new version of Android is here, with great new features, APIs, and tools for developers.</p>
<p>Android 4.4 is built to run on more devices than ever before, and gives you more ways to showcase your content and create beautiful, useful, and innovative apps.</p>
<p>Learn about what's new in the Platform Highlights and see the API Overview for details.</p>
- <p><a href="/about/versions/kitkat.html" class="button">Check out the highlights</a></p>
- </div>
+ <p><a href="{@docRoot}about/versions/kitkat.html" class="button">Check out the highlights</a></p>
+ </div>
</li>
<li class="item carousel-home">
- <div class="content-left col-11" style="padding-top:65px;">
- <a href="https://www.youtube.com/watch?v=sONcojECWXs&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K&index=1">
- <img src="/images/title-devbytes-kk.jpg" style="margin-top:22px;width:600px;">
- </a>
- </div>
-
- <div class="content-right col-4">
+ <div class="content-left col-11" style="padding-top:65px;">
+ <a href="https://www.youtube.com/watch?v=sONcojECWXs&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K&index=1">
+ <img src="{@docRoot}images/title-devbytes-kk.jpg" style="margin-top:0px;width:600px;">
+ </a>
+ </div>
+ <div class="content-right col-4">
<h1 style="white-space:nowrap;line-height:1.2em;">DevBytes: <br />Android 4.4</h1>
<p>Join the DevBytes team for a look at what's new in Android 4.4 KitKat&nbsp;&mdash; new ways to make your apps beautiful, printing, storage access framework, and more.</p>
<p><a href="https://www.youtube.com/watch?v=sONcojECWXs&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K&index=1" class="button">Watch the video </a></p>
- </div>
+ </div>
</li>
-
<li class="item carousel-home">
- <div class="content-left col-10"><a href="/design/patterns/new.html">
- <img src="/design/media/design_elements_landing.png" style="margin-top:30px">
- </a>
- </div>
- <div class="content-right col-5">
+ <div class="content-left col-19" style="width:580px;">
+ <a href="{@docRoot}design/patterns/new.html">
+ <img src="{@docRoot}design/media/design_elements_landing.png" style="margin-top:30px">
+ </a>
+ </div>
+ <div class="content-right col-4" style="width:280px;">
<h1>Design for Android KitKat</h1>
<p>Android KitKat brings a refreshed UI with updated styles, patterns, and gestures to use in your apps. </p>
<p>We've updated the Android Design guidelines and added new pages on branding, fullscreen, and more. </p>
- <p><a href="/design/patterns/new.html" class="button">See what's new</a></p>
- </div>
+ <p><a href="{@docRoot}design/patterns/new.html" class="button">See what's new</a></p>
+ </div>
</li>
- <!--<li class="item carousel-home">
- <div class="content-left col-11" style="padding-top:65px;">
- <a href="http://www.youtube.com/watch?v=6QHkv-bSlds&list=PLWz5rJ2EKKc8j2B95zGMb8muZvrIy-wcF&index=1">
- <img src="/images/title-adia-kk.png" style="margin-top:22px;width:600px;">
- </a>
- </div>
-
- <div class="content-right col-4">
+ <li class="item carousel-home">
+ <div class="content-left col-11" style="padding-top:65px;">
+ <a href="http://www.youtube.com/watch?v=6QHkv-bSlds&list=PLWz5rJ2EKKc8j2B95zGMb8muZvrIy-wcF&index=1">
+ <img src="{@docRoot}images/title-adia-kk.png" style="margin-top:0px;width:600px;">
+ </a>
+ </div>
+ <div class="content-right col-4">
<h1 style="white-space:nowrap;line-height:1.2em;">ADIA: <br />Android 4.4</h1>
</p>Join the Android Design in Action team for a walkthrough of new developer features, UX changes, and updates to design guidelines in Android 4.4.</p>
<p><a href="http://www.youtube.com/watch?v=6QHkv-bSlds&list=PLWz5rJ2EKKc8j2B95zGMb8muZvrIy-wcF&index=1" class="button">Watch the video </a></p>
- </div>
- </li> -->
- <!-- <li class="item carousel-home">
- <div class="content-left col-11" style="padding-top:10px;">
- <a href="/channels/io2013.html">
- <img src="/images/home/io-videos-2013.png" style="margin:60px 0 0;
- box-shadow: 3px 10px 18px 1px #999;">
- </a>
- </div>
- <div class="content-right col-4">
- <h1>Hands-on with New KitKat Features</h1>
- <p>If you weren't able to attend Google I/O in person or couldn't make it
- to all the talks, you can catch up on the action
- with all the recordings, brought to you by
- <a href="http://developers.google.com/live">Google Developers Live</a>.</p>
- <p><a href="/channels/io2013.html" class="button"
- >See the Android talks</a></p>
- </div>
- </li> -->
+ </div>
+ </li>
</ul>
</div>
</div>
diff --git a/docs/html/sdk/installing/installing-adt.jd b/docs/html/sdk/installing/installing-adt.jd
index 88fd7df..66c3034 100644
--- a/docs/html/sdk/installing/installing-adt.jd
+++ b/docs/html/sdk/installing/installing-adt.jd
@@ -74,12 +74,14 @@ To get these packages for your SDK, continue to
<div class="sidebox-wrapper">
<div class="sidebox">
-<h2>Join the translation pilot</h2>
-<p>Google Play is offering <a
-href="{@docRoot}distribute/googleplay/publish/localizing.html#gp-trans">
-translation services</a> as part of a pilot program. If you are interested,
-sign up for the pilot program on the APK page in your Developer Console.</p>
-</div></div>
+<h2>App Translations in Google Play</h2>
+<p>Google Play <a href="{@docRoot}distribute/googleplay/publish/localizing.html#gp-trans">App
+Translation Service</a> is available in the Developer Console to help you
+localize your app for a global user base. You can browse qualified vendors, get
+estimates, upload strings for translation, and then import the translations directly
+into your app.</p>
+</div>
+</div>
<p>ADT Translation Manager Plugin is an Android SDK Tools plugin that helps
you work with strings that you are localizing. It's designed to work
@@ -97,7 +99,8 @@ the correct locations under <code>res/values</code>, so that
localization works instantly.</p>
<p>For more information about translation services in Google Play, see <a
-href="{@docRoot}distribute/googleplay/publish/localizing.html#gp-trans">Purchase professional translations through the Developer Console</a>.</p>
+href="{@docRoot}distribute/googleplay/publish/localizing.html#gp-trans">Purchase
+professional translations through the Developer Console</a>.</p>
<p>To install the ADT Translation Manager Plugin follow these steps:</p>
diff --git a/docs/html/tools/debugging/debugging-memory.jd b/docs/html/tools/debugging/debugging-memory.jd
index 0454293..a7f443c 100644
--- a/docs/html/tools/debugging/debugging-memory.jd
+++ b/docs/html/tools/debugging/debugging-memory.jd
@@ -181,11 +181,18 @@ Moving that object into a global member is a simple fix that helps improve perfo
<h2 id="ViewingAllocations">Viewing Overall Memory Allocations</h2>
-<p>For further analysis, you may want to observe how that your app's memory is
-divided between different categories, which you can do with the <code>adb meminfo</code> data.</p>
+<p>For further analysis, you may want to observe how your app's memory is
+divided between different types of RAM allocation with the
+following <a href="{@docRoot}tools/help/adb.html">adb</a> command:</p>
-<p>When talking about how much RAM your app is using with this data, the key metrics
-discussed below are:</p>
+<pre class="no-pretty-print">
+adb shell dumpsys meminfo &lt;package_name>
+</pre>
+
+<p>The output lists all of your app's current allocations, measured in kilobytes.</p>
+
+<p>When inspecting this information, you should be familiar with the
+following types of allocation:</p>
<dl>
<dt>Private (Clean and Dirty) RAM</dt>
@@ -210,15 +217,9 @@ determine the actual memory being used by all processes. This means PSS is a goo
actual RAM weight of a process and for comparison against the RAM use of other processes and the
total available RAM.</p>
-<p>You can look at the memory use of your app (measured in kilobytes) with the
-following adb command:</p>
-
-<pre class="no-pretty-print">
-adb shell dumpsys meminfo &lt;package_name>
-</pre>
<p>For example, below is the the output for Gmail’s process on a tablet device. There is a lot of
-information here, but key points for discussion are highlighted in different colors.</p>
+information here, but key points for discussion are listed below.</p>
<p class="note"><strong>Note:</strong> The information you see may vary slightly from what is shown
here, as some details of the output differ across platform versions.</p>
diff --git a/docs/html/tools/debugging/debugging-tracing.jd b/docs/html/tools/debugging/debugging-tracing.jd
index 8653da6..bd4afbc 100644
--- a/docs/html/tools/debugging/debugging-tracing.jd
+++ b/docs/html/tools/debugging/debugging-tracing.jd
@@ -38,8 +38,7 @@ parent.link=index.html
<h2 id="traceviewLayout">Traceview Layout</h2>
<p>When you have a trace log file (generated by adding tracing code to your application or by DDMS),
- you can have Traceview load the log files and display their data in a window visualizes your application
- in two panels:</p>
+ you can load the log files in Traceview, which displays the log data in two panels:</p>
<ul>
<li>A <a href="#timelinepanel">timeline panel</a> -- describes when each thread and method
@@ -53,12 +52,11 @@ parent.link=index.html
<h3 id="timelinepanel">Timeline Panel</h3>
- <p>The image below shows a close up of the timeline panel. Each thread&rsquo;s execution is shown
+ <p>Figure 1 shows a close up of the timeline panel. Each thread&rsquo;s execution is shown
in its own row, with time increasing to the right. Each method is shown in another color (colors
are reused in a round-robin fashion starting with the methods that have the most inclusive time).
The thin lines underneath the first row show the extent (entry to exit) of all the calls to the
- selected method. The method in this case is <code>LoadListener.nativeFinished()</code> and it was selected in
- the profile view.</p>
+ selected method.</p>
<img src="{@docRoot}images/traceview_timeline.png"
alt="Traceview timeline panel"
@@ -94,23 +92,31 @@ parent.link=index.html
<p>There are two ways to generate trace logs:</p>
<ul>
<li>Include the {@link android.os.Debug} class in your code and call its
- methods to start and stop logging of trace information to disk. This method is very precise because
- you can specify in your code exactly where to start and stop logging trace data.</li>
- <li>Use the method profiling feature of DDMS to generate trace logs. This method is less
- precise since you do not modify code, but rather specify when to start and stop logging with
- a DDMS. Although you have less control on exactly where the data is logged, this method is useful
- if you don't have access to the application's code, or if you do not need the precision of the first method.
+ methods such as {@link android.os.Debug#startMethodTracing()} and {@link
+ android.os.Debug#stopMethodTracing()}, to start and stop logging of trace information to disk.
+ This option is very precise because
+ you can specify exactly where to start and stop logging trace data in your code.</li>
+ <li>Use the method profiling feature of DDMS to generate trace logs. This option is less
+ precise because you do not modify code, but rather specify when to start and stop logging with
+ DDMS. Although you have less control on exactly where logging starts and stops,
+ this option is useful if you don't have access to the application's code, or if you do
+ not need precise log timing.
</li>
</ul>
<p>Before you start generating trace logs, be aware of the following restrictions:</p>
<ul>
- <li>If you are using the {@link android.os.Debug} class, your device or emulator must have an SD card
- and your application must have permission to write to the SD card. </li>
- <li>If you are using DDMS, Android 2.1 and earlier devices must
+ <li>If you are using the {@link android.os.Debug} class,
+ your application must have permission to write to external storage
+ ({@link android.Manifest.permission#READ_EXTERNAL_STORAGE}). </li>
+ <li>If you are using DDMS:
+ <ul>
+ <li>Android 2.1 and earlier devices must
have an SD card present and your application must have permission to write to the SD card.
- <li>If you are using DDMS, Android 2.2 and later devices do not need an SD card. The trace log files are
+ <li>Android 2.2 and later devices do not need an SD card. The trace log files are
streamed directly to your development machine.</li>
+ </ul>
+ </li>
</ul>
<p>This document focuses on using the {@link android.os.Debug} class to generate trace data. For more information on using DDMS
@@ -134,22 +140,22 @@ parent.link=index.html
Debug.stopMethodTracing();
</pre>
- <p>When your application calls startMethodTracing(), the system creates a file called
+ <p>When your application calls {@link android.os.Debug#startMethodTracing() startMethodTracing()},
+ the system creates a file called
<code>&lt;trace-base-name&gt;.trace</code>. This contains the binary method trace data and a
mapping table with thread and method names.</p>
<p>The system then begins buffering the generated trace data, until your application calls
- stopMethodTracing(), at which time it writes the buffered data to the output file. If the system
- reaches the maximum buffer size before stopMethodTracing() is called, the system stops tracing
+ {@link android.os.Debug#stopMethodTracing() stopMethodTracing()}, at which time it writes
+ the buffered data to the output file. If the system
+ reaches the maximum buffer size before you call {@link android.os.Debug#stopMethodTracing()
+ stopMethodTracing()}, the system stops tracing
and sends a notification to the console.</p>
- <p>Interpreted code will run more slowly when profiling is enabled. Don't try to generate
- absolute timings from the profiler results (i.e. "function X takes 2.5 seconds to run"). The
+ <p>Interpreted code runs more slowly when profiling is enabled. Don't try to generate
+ absolute timings from the profiler results (such as, "function X takes 2.5 seconds to run"). The
times are only useful in relation to other profile output, so you can see if changes have made
- the code faster or slower.</p>
-
- <p>When using the Android emulator, you must specify an SD card when you create your AVD because the trace files
- are written to the SD card. Your application must have permission to write to the SD card as well.
+ the code faster or slower relative to a previous profiling run.</p>
<h2 id="copyingfiles">Copying Trace Files to a Host Machine</h2>
@@ -189,7 +195,7 @@ traceview /tmp/calc
"{@docRoot}images/tracedump.png"
width="485"
height="401" />
- <p class="image-caption"><strong>Figure 3.</strong> Screenshot of dmtracedump</p>
+ <p class="img-caption"><strong>Figure 3.</strong> Screenshot of dmtracedump</p>
<p>For each node, dmtracedump shows <code>&lt;ref&gt;
<em>callname</em> (&lt;inc-ms&gt;, &lt;exc-ms&gt;,&lt;numcalls&gt;)</code>, where</p>
diff --git a/docs/html/training/displaying-bitmaps/manage-memory.jd b/docs/html/training/displaying-bitmaps/manage-memory.jd
index 0e1279e..7f2b4c5 100644
--- a/docs/html/training/displaying-bitmaps/manage-memory.jd
+++ b/docs/html/training/displaying-bitmaps/manage-memory.jd
@@ -160,13 +160,14 @@ a soft reference to the bitmap is placed
in a {@link java.util.HashSet}, for possible reuse later with
{@link android.graphics.BitmapFactory.Options#inBitmap}:
-<pre>HashSet&lt;SoftReference&lt;Bitmap&gt;&gt; mReusableBitmaps;
+<pre>Set&lt;SoftReference&lt;Bitmap&gt;&gt; mReusableBitmaps;
private LruCache&lt;String, BitmapDrawable&gt; mMemoryCache;
-// If you're running on Honeycomb or newer, create
-// a HashSet of references to reusable bitmaps.
+// If you're running on Honeycomb or newer, create a
+// synchronized HashSet of references to reusable bitmaps.
if (Utils.hasHoneycomb()) {
- mReusableBitmaps = new HashSet&lt;SoftReference&lt;Bitmap&gt;&gt;();
+ mReusableBitmaps =
+ Collections.synchronizedSet(new HashSet&lt;SoftReference&lt;Bitmap&gt;&gt;());
}
mMemoryCache = new LruCache&lt;String, BitmapDrawable&gt;(mCacheParams.memCacheSize) {
@@ -243,25 +244,27 @@ protected Bitmap getBitmapFromReusableSet(BitmapFactory.Options options) {
Bitmap bitmap = null;
if (mReusableBitmaps != null && !mReusableBitmaps.isEmpty()) {
- final Iterator&lt;SoftReference&lt;Bitmap&gt;&gt; iterator
- = mReusableBitmaps.iterator();
- Bitmap item;
-
- while (iterator.hasNext()) {
- item = iterator.next().get();
-
- if (null != item && item.isMutable()) {
- // Check to see it the item can be used for inBitmap.
- if (canUseForInBitmap(item, options)) {
- bitmap = item;
-
- // Remove from reusable set so it can't be used again.
+ synchronized (mReusableBitmaps) {
+ final Iterator&lt;SoftReference&lt;Bitmap&gt;&gt; iterator
+ = mReusableBitmaps.iterator();
+ Bitmap item;
+
+ while (iterator.hasNext()) {
+ item = iterator.next().get();
+
+ if (null != item && item.isMutable()) {
+ // Check to see it the item can be used for inBitmap.
+ if (canUseForInBitmap(item, options)) {
+ bitmap = item;
+
+ // Remove from reusable set so it can't be used again.
+ iterator.remove();
+ break;
+ }
+ } else {
+ // Remove from the set if the reference has been cleared.
iterator.remove();
- break;
}
- } else {
- // Remove from the set if the reference has been cleared.
- iterator.remove();
}
}
}