summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/html/about/versions/android-4.3.jd2
-rw-r--r--docs/html/design/tv/index.jd6
-rw-r--r--docs/html/design/wear/context.jd16
-rw-r--r--docs/html/design/wear/creative-vision.jd13
-rw-r--r--docs/html/design/wear/patterns.jd9
-rw-r--r--docs/html/design/wear/style.jd38
-rw-r--r--docs/html/design/wear/watchfaces.jd140
-rw-r--r--docs/html/distribute/googleplay/about.jd2
-rw-r--r--docs/html/distribute/googleplay/families/about.jd2
-rw-r--r--docs/html/guide/components/intents-common.jd2
-rw-r--r--docs/html/guide/topics/manifest/uses-permission-element.jd1
-rw-r--r--docs/html/guide/topics/ui/controls/text.jd4
-rw-r--r--docs/html/images/distribute/hero-IO15-google-play.jpgbin0 -> 117945 bytes
-rw-r--r--docs/html/images/distribute/hero-IO15-growing-games.jpgbin0 -> 316975 bytes
-rw-r--r--docs/html/images/distribute/hero-family-discovery.jpgbin0 -> 107758 bytes
-rw-r--r--docs/html/images/distribute/hero-family.jpgbin282862 -> 0 bytes
-rw-r--r--docs/html/images/distribute/hero-shifty-jelly.jpgbin0 -> 110140 bytes
-rw-r--r--docs/html/images/distribute/hero-store-listing-experience.jpgbin0 -> 80922 bytes
-rw-r--r--docs/html/images/distribute/hero-the-hunt.jpgbin0 -> 134981 bytes
-rw-r--r--docs/html/images/distribute/hero-trello.jpgbin0 -> 146098 bytes
-rw-r--r--docs/html/images/distribute/hero-wooga.jpgbin0 -> 155210 bytes
-rw-r--r--docs/html/index.jd6
-rw-r--r--docs/html/jd_collections.js20
-rw-r--r--docs/html/jd_extras.js113
-rw-r--r--docs/html/preview/index.jd6
-rw-r--r--docs/html/sdk/index.jd25
-rw-r--r--docs/html/tools/building/building-cmdline.jd7
-rw-r--r--docs/html/tools/help/adb.jd963
-rw-r--r--docs/html/tools/help/index.jd9
-rw-r--r--docs/html/tools/help/shell.jd898
-rw-r--r--docs/html/tools/sdk/tools-notes.jd30
-rw-r--r--docs/html/tools/tools_toc.cs8
-rw-r--r--docs/html/training/enterprise/app-compatibility.jd8
-rw-r--r--docs/html/training/training_toc.cs4
-rw-r--r--docs/html/training/tv/discovery/recommendations.jd58
-rw-r--r--docs/html/training/tv/discovery/searchable.jd3
-rw-r--r--docs/html/training/tv/tif/index.jd19
-rw-r--r--docs/html/training/wearables/apps/creating.jd56
-rw-r--r--docs/html/training/wearables/apps/layouts.jd117
-rw-r--r--docs/html/training/wearables/ui/2d-picker.jd113
-rw-r--r--docs/html/training/wearables/ui/cards.jd75
-rw-r--r--docs/html/training/wearables/ui/confirm.jd36
-rw-r--r--docs/html/training/wearables/ui/exit.jd33
-rw-r--r--docs/html/training/wearables/ui/layouts.jd50
-rw-r--r--docs/html/training/wearables/ui/lists.jd67
-rw-r--r--docs/html/training/wearables/watch-faces/configuration.jd25
-rw-r--r--docs/html/training/wearables/watch-faces/information.jd36
-rw-r--r--docs/html/training/wearables/watch-faces/issues.jd26
-rw-r--r--docs/html/training/wearables/watch-faces/performance.jd27
-rw-r--r--docs/html/training/wearables/watch-faces/service.jd43
-rw-r--r--docs/html/tv/index.jd30
51 files changed, 1741 insertions, 1405 deletions
diff --git a/docs/html/about/versions/android-4.3.jd b/docs/html/about/versions/android-4.3.jd
index e18c285..2496854 100644
--- a/docs/html/about/versions/android-4.3.jd
+++ b/docs/html/about/versions/android-4.3.jd
@@ -1029,7 +1029,7 @@ APIs allow you to inspect the screen content and inject arbitrary keyboard and t
android.app.Instrumentation#getUiAutomation Instrumentation.getUiAutomation()}. In order
for this to work, you must supply the {@code -w} option with the {@code instrument} command
when running your {@link android.test.InstrumentationTestCase} from <a
-href="{@docRoot}tools/help/adb.html#am">{@code adb shell}</a>.</p>
+href="{@docRoot}tools/help/shell.html#am">{@code adb shell}</a>.</p>
<p>With the {@link android.app.UiAutomation} instance, you can execute arbitrary events to test
your app by calling {@link android.app.UiAutomation#executeAndWaitForEvent
diff --git a/docs/html/design/tv/index.jd b/docs/html/design/tv/index.jd
index def1286..38e5b79 100644
--- a/docs/html/design/tv/index.jd
+++ b/docs/html/design/tv/index.jd
@@ -4,6 +4,12 @@ page.metaDescription=Guidelines to help you create a great leanback experience o
page.image=design/tv/images/apps-games-rows.jpg
@jd:body
+<a class="notice-designers" style="clear:none" href="http://www.google.com/design/spec-tv">
+ <div>
+ <h3>Material Design</h3>
+ <p>Android TV Design Guidelines</p>
+ </div>
+</a>
<p>The Android TV platform user interface provides the launch pad for your app's big screen
experience. It's important to understand how your app is presented in the main user interface and
diff --git a/docs/html/design/wear/context.jd b/docs/html/design/wear/context.jd
index 688806f..7a0baf8 100644
--- a/docs/html/design/wear/context.jd
+++ b/docs/html/design/wear/context.jd
@@ -2,19 +2,19 @@ page.title=Context Awareness on Android Wear
@jd:body
<style>
-div.slide-wrapper {
+.slide-wrapper {
width:780px;
overflow:visible;
}
-div.slide {
+.slide {
width:370px;
float:left;
margin:0 20px 0 0;
}
-div.slide p {
+.slide p {
height:40px;
}
-div.slide img {
+.slide img {
height: 208px;
}
</style>
@@ -140,8 +140,8 @@ app.</p>
<div class="slide">
<h2>Location-based Query</h2>
-<p>Ask things like, "Are there any picnic tables free at the park?" and get answers from
-people who are there.</p>
+<p>Ask questions like, "Are there any picnic tables free at the park?" and get answers in real-time
+from people in the area.</p>
<img src="{@docRoot}design/media/wear/ContextualExample.015.png" alt=""
srcset="{@docRoot}design/media/wear/ContextualExample.015.png 1x,
{@docRoot}design/media/wear/ContextualExample.015_2x.png 2x" />
@@ -149,4 +149,6 @@ people who are there.</p>
-</div> \ No newline at end of file
+</div>
+
+<p style="clear:both;height:0">&nbsp;</p> \ No newline at end of file
diff --git a/docs/html/design/wear/creative-vision.jd b/docs/html/design/wear/creative-vision.jd
index 0955240..36a87eb 100644
--- a/docs/html/design/wear/creative-vision.jd
+++ b/docs/html/design/wear/creative-vision.jd
@@ -25,34 +25,29 @@ Wear experiences are:</p>
<div class="page-vision">
- <img src="{@docRoot}design/media/wear/vision_traffic.png" width="147" height="147" />
-
<h2 id="Launched">Launched automatically</h2>
+ <img src="{@docRoot}design/media/wear/vision_traffic.png" width="147" height="147" />
<p>Most people are used to launching apps by clicking an icon. Android Wear is different. Wearable apps are aware of the user’s context - time, location, physical activity, and so on. The apps use this information to insert cards into the stream when they become relevant. This makes Android Wear timely, relevant and very specific.</p>
</div>
<div class="page-vision">
- <img src="{@docRoot}design/media/wear/vision_navigation.png" width="147" height="147" />
-
<h2 id="Glanceable">Glanceable</h2>
+ <img src="{@docRoot}design/media/wear/vision_navigation.png" width="147" height="147" />
<p>A classic wrist watch is designed to let you see the time in a split second and get on with what you were doing. Designing for Android Wear is no different. The less time it takes to use your software, the more time the user can be present in whatever they are doing. Android wear is fast, sharp, and immediate.</p>
</div>
<div class="page-vision">
- <img src="{@docRoot}design/media/wear/vision_voice.png" width="147" height="147" style="border: 1px solid #ddd;" />
-
<h2 id="SuggestDemand">All about suggest and demand</h2>
+ <img src="{@docRoot}design/media/wear/vision_voice.png" width="147" height="147" style="border: 1px solid #ddd;" />
<p>Android Wear is like a great personal assistant: it knows you and your preferences, it only interrupts you when absolutely necessary, and it’s always on hand to provide a ready answer. Android Wear is helpful, respectful, and responsive.</p>
</div>
<div class="page-vision">
- <img src="{@docRoot}design/media/wear/vision_music.png" width="147" height="147" />
-
<h2 id="Interaction">Zero or low interaction</h2>
+ <img src="{@docRoot}design/media/wear/vision_music.png" width="147" height="147" />
<p>Staying true to the strengths afforded by a smaller form factor, Android Wear focuses on simple interactions, only requiring input by the user when absolutely necessary. Most inputs are based around touch swipes or voice, and inputs requiring fine-grained finger movements are avoided. Android Wear is gestural, simple, and fast.</p>
</div>
<p>By providing a smart connection to the rest of the world while respecting the user’s attention, Android Wear feels personal and global, simple and smart, unobtrusive and ever-ready. Applications that represent these principles will feel most at home in the overall Android Wear experience.</p>
<p>Third party apps extend Android Wear to be more specialized and helpful throughout the day. Installing apps are a way for the user to tell the Android Wear how to do that.</p>
-
diff --git a/docs/html/design/wear/patterns.jd b/docs/html/design/wear/patterns.jd
index e56ac2d..0436cf5 100644
--- a/docs/html/design/wear/patterns.jd
+++ b/docs/html/design/wear/patterns.jd
@@ -46,11 +46,9 @@ page.title=UI Patterns for Android Wear
<h2 id="Dismissing" style="clear:both">Dismissing cards</h2>
- <img src="{@docRoot}design/media/wear/dismiss_cards.png" height="147">
-
<p>Swiping from left to right on a card causes it to be dismissed from the stream. Dismissed cards may return when they next have relevant information. State is synced between the Android Wear context stream and the notifications on the Android handheld device, so dismissing from one causes an automatic dismissal from the other.</p>
-
+<img src="{@docRoot}design/media/wear/dismiss_cards.png" height="147">
<h2 id="Actions" style="clear:both">Action buttons</h2>
@@ -162,12 +160,11 @@ to check-in to.</p>
<h2 id="Selection" style="clear:both">Selection List</h2>
- <img src="{@docRoot}design/media/wear/selection_list.png" width="147" height="147" style="float:right;margin:0 0 20px 40px;border:1px solid #ddd">
+ <img src="{@docRoot}design/media/wear/selection_list.png" width="147" height="147" style="float:left;margin:0 0 20px 40px;border:1px solid #ddd">
<p>Choosing an item from a list is a common interaction. The Selection List pattern (available as the <a
href="{@docRoot}training/wearables/apps/layouts.html#UiLibrary"><code>WearableListView</code></a> component) creates a simple list optimized for ease of use on a small screen where the focused item snaps to the center of the screen and a single tap selects. This widget is recommended as a common pattern for selecting items. It is used throughout the system UI, including in the list that can be accessed by swiping up on the cue card.</p>
-
<p>Of course, it is possible for Android Wear apps to extend themselves beyond the familiarities of these patterns. For a deeper look at the options available, see the <a href="{@docRoot}design/wear/structure.html">App Structure</a> guide.</p>
<a class="notice-developers left" href="{@docRoot}training/wearables/ui/lists.html">
@@ -176,3 +173,5 @@ href="{@docRoot}training/wearables/apps/layouts.html#UiLibrary"><code>WearableLi
<p>Creating Lists</p>
</div>
</a>
+
+<p style="clear:both;height:0">&nbsp;</p>
diff --git a/docs/html/design/wear/style.jd b/docs/html/design/wear/style.jd
index bb559fe..75bd65f 100644
--- a/docs/html/design/wear/style.jd
+++ b/docs/html/design/wear/style.jd
@@ -48,19 +48,18 @@ href="{@docRoot}training/wearables/apps/layouts.html#UiLibrary"><code>WatchViewS
</div>
-
- <img src="{@docRoot}design/media/wear/low_info_card.png" width="147" height="147"
- style="float:right;margin:29px 0 20px 40px">
-
<h2 id="InfoDensity" style="margin-top:0" >Low Information Density</h2>
+<img src="{@docRoot}design/media/wear/low_info_card.png" width="147" height="147"
+style="float:left;margin:5px 20px 20px 0">
+
<p>Cards should be designed to be glanceable in a split second, just like reading the time on a traditional watch. In most cases a pairing of an icon and value, or a title and short caption should be enough to convey a meaningful message. Note that the background photo should also be used to convey information; backgrounds that change to reflect and support the primary message in the card work great. For example, in the case illustrated to the right, a suitable background image is chosen to reflect the severity of current traffic conditions. This is not just a nice piece of attention to detail; the background actually reinforces the message and makes the content more glanceable.</p>
-<img src="{@docRoot}design/media/wear/separate_info_cards.jpg" height="147"
- style="float:right;margin:29px 0 20px 40px">
<h2 id="Chunks">Separate Information into Chunks</h2>
+<img src="{@docRoot}design/media/wear/separate_info_cards.jpg" height="147"
+ style="float:right;margin:5px 0 20px 20px">
<p>In cases where additional information is absolutely necessary, don’t crowd out a card layout to the point where glanceability is affected. Instead, add an additional <a href="{@docRoot}design/wear/patterns.html#Pages">page</a> (or multiple pages, if needed) to the right of the main card in the stream to which the user can swipe for more information. See also <a
href="{@docRoot}design/wear/patterns.html#Continuing">Continuing activities on phone</a>.</p>
@@ -73,21 +72,19 @@ href="{@docRoot}design/wear/patterns.html#Continuing">Continuing activities on p
-<img src="{@docRoot}design/media/wear/clear_bold_type.jpg" height="147"
- style="float:left;margin:19px 40px 20px 0">
-
<h2 id="Typography" >Use Clear, Bold Typography</h2>
+<img src="{@docRoot}design/media/wear/clear_bold_type.jpg" height="147"
+ style="float:left;margin:5px 20px 20px 0">
<p>The system font is Roboto Condensed, with Regular and Light variants. Text should adhere to the size and color recommendations (see the UI Toolkit in the <a href="{@docRoot}design/downloads/index.html#Wear">Downloads</a> page). In general, text should be displayed as large as possible. Your goal should be to convey maximum information with minimum fuss.</p>
<h2 id="Branding" style="clear:both" >Use Consistent Branding and Color</h2>
-<p>The app icon is used to identify and brand your application. The icon is optional but when present always appears in the same location, overhanging the top right edge of the card. Note that app icons or branding should not be displayed in the background photo, which is reserved to display an image relevant to the information on the card.</p>
-
-
<img src="{@docRoot}design/media/wear/copywrite.png" height="147"
- style="float:left;margin:19px 40px 20px 0">
+ style="float:right;margin:0 20px 0 20px">
+
+<p style="margin-bottom: 60px">The app icon is used to identify and brand your application. The icon is optional but when present always appears in the same location, overhanging the top right edge of the card. Note that app icons or branding should not be displayed in the background photo, which is reserved to display an image relevant to the information on the card.</p>
<h2 id="Copywrite" >Copywrite Sparingly</h2>
@@ -98,18 +95,11 @@ href="{@docRoot}design/wear/patterns.html#Continuing">Continuing activities on p
<p>Wearables are personal devices by nature, but they are not completely private. If your notification serves content that may be particularly sensitive or embarrassing (such as notifications from a dating app or a medical status report), consider not displaying all of the information in a peek card. A notification could place the sensitive information on a second page that must be swiped to, or an application could show different amounts of detail in peek and focused card positions.</p>
-
- <img src="{@docRoot}design/media/wear/confirmation.png" height="147"
- style="float:left;margin:29px 40px 20px 0">
-
-
<h2 id="ConfirmAnim">Confirmation Animations</h2>
-<p>If your app allows the user to perform an action, it is necessary to provide positive feedback. Show a generic confirmation animation or create your own. A confirmation animation is an opportunity to express your app’s character and insert a moment of delight for your user. Keep animations short (less than 1000ms) and simple. Animating the confirmation icon is an effective way of transitioning the user to a new state after completing an action.</p>
-
-
-
-
-
+<img src="{@docRoot}design/media/wear/confirmation.png" height="147"
+ style="float:left;margin:5px 20px 20px 0">
+<p>If your app allows the user to perform an action, it is necessary to provide positive feedback. Show a generic confirmation animation or create your own. A confirmation animation is an opportunity to express your app’s character and insert a moment of delight for your user. Keep animations short (less than 1000ms) and simple. Animating the confirmation icon is an effective way of transitioning the user to a new state after completing an action.</p>
+<p style="clear:both;height:0">&nbsp;</p> \ No newline at end of file
diff --git a/docs/html/design/wear/watchfaces.jd b/docs/html/design/wear/watchfaces.jd
index 2def05b..e018523 100644
--- a/docs/html/design/wear/watchfaces.jd
+++ b/docs/html/design/wear/watchfaces.jd
@@ -4,7 +4,7 @@ page.title=Watch Faces for Android Wear
<!-- developer docs box -->
<a class="notice-developers right" href="{@docRoot}training/wearables/watch-faces/index.html"
- style="clear:left;margin-bottom:90px">
+ style="clear:left">
<div>
<h3>Developer Docs</h3>
<p>Creating Watch Faces</p>
@@ -22,7 +22,7 @@ ambient modes, and consider how system user interface elements will interact wit
<p>Follow the guidelines in this page to design your custom watch faces.</p>
<!-- H2 creative vision -->
-<div style="float:right;margin-top:-100px;margin-bottom:20px;margin-left:20px">
+<div style="float:right;margin-bottom:20px;margin-left:20px">
<img src="{@docRoot}design/media/wear/Render_Next.png"
width="200" height="195" alt="" style="margin-right:5px"/><br/>
<img src="{@docRoot}design/media/wear/Render_Interactive.png"
@@ -137,44 +137,39 @@ You can configure your watch face to display different ambient designs depending
of screen available on the device. Consider the best design for your watch faces on all
screens.</p>
-<div class="cols" style="margin-top:20px">
-<div class="col-9">
- <h3>Reduced color space</h3>
- <p>Some displays use a reduced color space in ambient mode to save power.</p>
- <p>One reduced color space power saving method is to use a "low-bit" mode. In low-bit mode,
- the available colors are limited to black, white, blue, red, magenta, green, cyan, and yellow.
- When designing for low-bit ambient mode, use a black or a white background. For OLED screens,
- you must use a black background. Non-background pixels must be less than 10 percent of total
- pixels. You can use low-bit color for up to 5 percent of pixels on screens that support it.
- You should also disable antialiasing in your paint styles for this mode. Make sure to test
- your design on devices with low-bit ambient mode.</p>
- <p>Other displays save power in ambient mode by not producing any color. When designing for
- displays which do not use color in ambient mode, the background may be either black or
- white.</p>
-</div>
-<div class="col-4">
+<div style="float:right;margin-bottom:20px;margin-left:20px">
<img src="{@docRoot}design/media/wear/Render_LowBit.png" width="200"
height="" alt="" style="margin-top:45px;margin-left:13px">
</div>
-</div>
+<h3>Reduced color space</h3>
-<div class="cols" style="margin-top:20px">
-<div class="col-9">
- <h3>Burn protection techniques</h3>
- <p>When designing for OLED screens, you should consider power efficiency and the screen
- burn-in effect. When these screens are in ambient mode, the system shifts the contents of
- the screen periodically by a few pixels to avoid pixel burn-in. Do not use large blocks of
- pixels in your ambient mode designs and keep 95% of the pixels black. Replace solid shapes in
- your regular ambient mode designs with outlined shapes in burn-protected ambient mode. Also
- replace filled images with pixel patterns. For analog watch face designs, hollow out the center
- where the hands meet to avoid pixel burn-in in this mode.</p>
-</div>
-<div class="col-4">
+<p>Some displays use a reduced color space in ambient mode to save power.</p>
+<p>One reduced color space power saving method is to use a "low-bit" mode. In low-bit mode,
+the available colors are limited to black, white, blue, red, magenta, green, cyan, and yellow.
+When designing for low-bit ambient mode, use a black or a white background. For OLED screens,
+you must use a black background. Non-background pixels must be less than 10 percent of total
+pixels. You can use low-bit color for up to 5 percent of pixels on screens that support it.
+You should also disable antialiasing in your paint styles for this mode. Make sure to test
+your design on devices with low-bit ambient mode.</p>
+<p>Other displays save power in ambient mode by not producing any color. When designing for
+displays which do not use color in ambient mode, the background may be either black or
+white.</p>
+
+
+<h3>Burn protection techniques</h3>
+
+<div style="float:right;margin-bottom:20px;margin-left:20px">
<img src="{@docRoot}design/media/wear/Render_1Bit.png" width="200"
height="" alt="" style="margin-top:-10px;margin-left:13px">
</div>
-</div>
+<p>When designing for OLED screens, you should consider power efficiency and the screen
+burn-in effect. When these screens are in ambient mode, the system shifts the contents of
+the screen periodically by a few pixels to avoid pixel burn-in. Do not use large blocks of
+pixels in your ambient mode designs and keep 95% of the pixels black. Replace solid shapes in
+your regular ambient mode designs with outlined shapes in burn-protected ambient mode. Also
+replace filled images with pixel patterns. For analog watch face designs, hollow out the center
+where the hands meet to avoid pixel burn-in in this mode.</p>
<h2 id="SystemUI">Accomodate System UI Elements</h2>
@@ -183,9 +178,11 @@ screens.</p>
user the status of the wearable and show notifications from services on the user's phone. Try
to keep critical elements in your watch face designs from being obscured by the UI elements.</p>
-<div class="cols" style="margin-top:20px">
-<div class="col-9">
- <h3>Cards</h3>
+<div style="float:right;margin-bottom:20px;margin-left:20px">
+ <img src="{@docRoot}design/media/wear/CardsRender_Build.png" width="200"
+ height="" alt="" style="margin-top:20px;margin-left:13px">
+</div>
+<h3>Cards</h3>
<p>Cards are the notification system that bridges information between the wearable and a
mobile device. Cards are also how most applications communicate with users. The user will be
notified on the wearable about items such as emails and messages. As a watch face developer,
@@ -201,16 +198,13 @@ variable peek card is that it displays more notification information. Faces with
the bottom half of the face should leverage the small peek card instead.</p>
<p>The system notifies your watch face when the bounds of a peek card change, so you can
rearrange the elements in your design if necessary.</p>
-</div>
-<div class="col-4">
- <img src="{@docRoot}design/media/wear/CardsRender_Build.png" width="200"
- height="" alt="" style="margin-top:20px;margin-left:13px">
-</div>
-</div>
-<div class="cols" style="margin-top:20px">
-<div class="col-9">
- <h3>Indicators</h3>
+
+<div style="float:right;margin-bottom:20px;margin-left:20px">
+ <img src="{@docRoot}design/media/wear/Indicators_Cropped.png" width="200"
+ height="" alt="" style="margin-top:0px;margin-left:13px">
+</div>
+<h3>Indicators</h3>
<p>Indicators tell the user the status of the wearable, such as charging and airplane mode.
When designing a watch face, consider how the indicator will fall over the watch face.</p>
<p>The indicators can be placed in several fixed locations on the wearable. If you have a
@@ -218,16 +212,12 @@ large peek card, the indicators should go on the top or on the center of the scr
position the status icons or the hotword on the bottom of the screen, the system forces small
peek cards. If the edge of the watch face contains strong visual elements, such as
ticks or numbers, place the indicators on the center of the screen.</p>
-</div>
-<div class="col-4">
- <img src="{@docRoot}design/media/wear/Indicators_Cropped.png" width="200"
+
+<div style="float:right;margin-bottom:20px;margin-left:20px">
+ <img src="{@docRoot}design/media/wear/Hotword_Cropped.png" width="200"
height="" alt="" style="margin-top:0px;margin-left:13px">
</div>
-</div>
-
-<div class="cols" style="margin-top:20px">
-<div class="col-9">
- <h3>The hotword</h3>
+<h3>The hotword</h3>
<p>The hotword is the phrase "OK Google", which tells the user that they can interact with
the watch using voice commands. When a user turns on the wearable, the hotword appears on
the screen for a few seconds.</p>
@@ -236,12 +226,6 @@ this element is not as critical. You should still avoid covering up elements of
watch face. Finally, background protection for the hotword and the indicators should be
turned on unless your design is tailored to have these elements appear on top of them, for example
using dark solid colors with no patterns.</p>
-</div>
-<div class="col-4">
- <img src="{@docRoot}design/media/wear/Hotword_Cropped.png" width="200"
- height="" alt="" style="margin-top:0px;margin-left:13px">
-</div>
-</div>
<p>For more information about measurements and positioning of system UI elements, see
<a href="#SpecsAssets">Specifications and Assets</a>.</p>
@@ -253,24 +237,27 @@ using dark solid colors with no patterns.</p>
<p>Your watch face can show users contextually relevant data and react to it by changing styles
and colors in your design.</p>
-<div class="cols" style="margin-top:20px">
-<div class="col-9">
- <h3>What do you want your user to know?</h3>
+<h3>What do you want your user to know?</h3>
+
+<div style="float:right;margin-bottom:20px;margin-left:20px">
+ <img src="{@docRoot}design/media/wear/Render_Saturn.png" width="200"
+ height="" alt="" style="margin-top:-10px;margin-left:13px">
+</div>
+
<p>The first step in designing a data-integrated watch face is to define a conceptual user
outcome based on available data. First, generate a strong concept or outcome you believe is
supported by real user needs. What do you want your users to know after they have glanced
at your design? Once you have identified your outcome, you need to determine how to obtain
the required data.</p>
-</div>
-<div class="col-4">
- <img src="{@docRoot}design/media/wear/Render_Saturn.png" width="200"
+
+<div style="clear:both;"/>
+
+<div style="float:right;margin-bottom:20px;margin-left:20px">
+ <img src="{@docRoot}design/media/wear/Render_Episode.png" width="200"
height="" alt="" style="margin-top:-10px;margin-left:13px">
</div>
-</div>
-<div class="cols" style="margin-top:20px">
-<div class="col-9">
- <h3>A watch dial is a timeline; add data to it</h3>
+<h3>A watch dial is a timeline; add data to it</h3>
<p>Your watch face concept may include use of data beyond time, such as weather, calendar
and fitness data. Consider the inclusion of data integration creatively. Avoid simply
overlaying a time-based watch face with extra data. Rather, think about how the data can
@@ -278,16 +265,13 @@ be expressed through the lens of time. For example, instead of designing a weath
watch face as a clock with an indication of the current temperature in degrees overlayed,
you might design a watch face that describes how the temperature will change over the
course of the day.</p>
-</div>
-<div class="col-4">
- <img src="{@docRoot}design/media/wear/Render_Episode.png" width="200"
+
+<div style="float:right;margin-bottom:20px;margin-left:20px">
+ <img src="{@docRoot}design/media/wear/Render_Albumem.png" width="200"
height="" alt="" style="margin-top:-10px;margin-left:13px">
</div>
-</div>
-<div class="cols" style="margin-top:20px">
-<div class="col-9">
- <h3>Stick to one message</h3>
+<h3>Stick to one message</h3>
<p>Once you have solidified your conceptual direction or desired outcome, you will need to
begin visualizing your watch face. The strongest watch face designs are highly glanceable
and deliver a singular expression of data. In order to identify your singular message, you
@@ -295,12 +279,6 @@ must identify the most important supporting data point. For instance, instead of
an entire month of calendar events, you might decide to display only the next
upcoming event. By a process of reduction, you should arrive at a powerful singular
expression of data to include in your design.</p>
-</div>
-<div class="col-4">
- <img src="{@docRoot}design/media/wear/Render_Albumem.png" width="200"
- height="" alt="" style="margin-top:-10px;margin-left:13px">
-</div>
-</div>
<h3>Begin with some insight and test as you go</h3>
<p>Make sure your approach begins with insight into the needs and expectations of your users.
diff --git a/docs/html/distribute/googleplay/about.jd b/docs/html/distribute/googleplay/about.jd
index 2652046..543d7d3 100644
--- a/docs/html/distribute/googleplay/about.jd
+++ b/docs/html/distribute/googleplay/about.jd
@@ -1,7 +1,7 @@
page.title=The Google Play Opportunity
meta.tags="visibility, growth, distributing"
page.tags="play, apps, distributing, publishing"
-page.metaDescription=Billons of downloads a month and growing. Get your apps in front of users at Google's scale.
+page.metaDescription=Billions of downloads a month and growing. Get your apps in front of users at Google's scale.
page.image=images/cards/google-play_2x.png
@jd:body
diff --git a/docs/html/distribute/googleplay/families/about.jd b/docs/html/distribute/googleplay/families/about.jd
index bec9b6a..9b85c9a 100644
--- a/docs/html/distribute/googleplay/families/about.jd
+++ b/docs/html/distribute/googleplay/families/about.jd
@@ -50,7 +50,7 @@ frameborder="0" allowfullscreen></iframe>
Designed for Families expands the visibility of your family content on Google
Play, helping parents easily find your family-friendly apps and games
throughout the store. And new features create a trusted environment that
- empowers parents to make informed desicions and engage with your content.
+ empowers parents to make informed decisions and engage with your content.
</p>
<h3>
Search
diff --git a/docs/html/guide/components/intents-common.jd b/docs/html/guide/components/intents-common.jd
index 964f075..dbc14fa 100644
--- a/docs/html/guide/components/intents-common.jd
+++ b/docs/html/guide/components/intents-common.jd
@@ -2236,7 +2236,7 @@ adb shell am start -a android.intent.action.DIAL \
<p>For more information, see
-<a href="{@docRoot}tools/help/adb.html#am">Using activity manager (am)</a>.</p>
+<a href="{@docRoot}tools/help/shell.html#am">ADB Shell Commands</a>.</p>
diff --git a/docs/html/guide/topics/manifest/uses-permission-element.jd b/docs/html/guide/topics/manifest/uses-permission-element.jd
index 9394114..bb93a70 100644
--- a/docs/html/guide/topics/manifest/uses-permission-element.jd
+++ b/docs/html/guide/topics/manifest/uses-permission-element.jd
@@ -81,6 +81,7 @@ permission is needed only up to API level 18 with a declaration such as this:
</pre>
<p>This way, beginning with API level 19, the system will no longer grant your app the
{@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} permission.</p>
+<p>This attribute was added in API level 19.</p>
</dd>
</dl></dd>
diff --git a/docs/html/guide/topics/ui/controls/text.jd b/docs/html/guide/topics/ui/controls/text.jd
index 9474dee..c11dc32 100644
--- a/docs/html/guide/topics/ui/controls/text.jd
+++ b/docs/html/guide/topics/ui/controls/text.jd
@@ -172,7 +172,7 @@ android:imeOptions}</a> attribute. For example, here's how you can specify the S
are any subsequent <a
href="{@docRoot}reference/android/view/View.html#attr_android:focusable">{@code
android:focusable}</a> fields. If any focusable fields are found following this one, the system
-applies the (@code actionNext} action to the current {@link android.widget.EditText} so the user can
+applies the {@code "actionNext"} action to the current {@link android.widget.EditText} so the user can
select Next to move to the next field. If there's no subsequent focusable field, the system applies
the {@code "actionDone"} action. You can override this by setting the <a
href="{@docRoot}reference/android/widget/TextView.html#attr_android:imeOptions">{@code
@@ -263,7 +263,7 @@ disabled with {@code android:imeOptions="flagNoExtractUi"}.</p>
<p>If you want to provide suggestions to users as they type, you can use a subclass of {@link
android.widget.EditText} called {@link android.widget.AutoCompleteTextView}. To implement
-auto-complete, you must specify an (@link android.widget.Adapter) that provides the text
+auto-complete, you must specify an {@link android.widget.Adapter} that provides the text
suggestions. There are several kinds of adapters available, depending on where the data is coming
from, such as from a database or an array.</p>
diff --git a/docs/html/images/distribute/hero-IO15-google-play.jpg b/docs/html/images/distribute/hero-IO15-google-play.jpg
new file mode 100644
index 0000000..3bfff96
--- /dev/null
+++ b/docs/html/images/distribute/hero-IO15-google-play.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-IO15-growing-games.jpg b/docs/html/images/distribute/hero-IO15-growing-games.jpg
new file mode 100644
index 0000000..c08bd71
--- /dev/null
+++ b/docs/html/images/distribute/hero-IO15-growing-games.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-family-discovery.jpg b/docs/html/images/distribute/hero-family-discovery.jpg
new file mode 100644
index 0000000..7ee26b5
--- /dev/null
+++ b/docs/html/images/distribute/hero-family-discovery.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-family.jpg b/docs/html/images/distribute/hero-family.jpg
deleted file mode 100644
index 6e467a5..0000000
--- a/docs/html/images/distribute/hero-family.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/distribute/hero-shifty-jelly.jpg b/docs/html/images/distribute/hero-shifty-jelly.jpg
new file mode 100644
index 0000000..4a2e986
--- /dev/null
+++ b/docs/html/images/distribute/hero-shifty-jelly.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-store-listing-experience.jpg b/docs/html/images/distribute/hero-store-listing-experience.jpg
new file mode 100644
index 0000000..5b00b51
--- /dev/null
+++ b/docs/html/images/distribute/hero-store-listing-experience.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-the-hunt.jpg b/docs/html/images/distribute/hero-the-hunt.jpg
new file mode 100644
index 0000000..ad6fd06
--- /dev/null
+++ b/docs/html/images/distribute/hero-the-hunt.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-trello.jpg b/docs/html/images/distribute/hero-trello.jpg
new file mode 100644
index 0000000..c89b32a
--- /dev/null
+++ b/docs/html/images/distribute/hero-trello.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-wooga.jpg b/docs/html/images/distribute/hero-wooga.jpg
new file mode 100644
index 0000000..ca796a8
--- /dev/null
+++ b/docs/html/images/distribute/hero-wooga.jpg
Binary files differ
diff --git a/docs/html/index.jd b/docs/html/index.jd
index 3989b92..794494e 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -26,9 +26,9 @@ page.customHeadTag=<meta name="google-site-verification" content="sa-bIAI6GKvct3
<p class="dac-hero-description">Get your apps ready for the next version
of Android. Test on Nexus 5, 6, 9, and Player. </p>
- <a class="dac-hero-cta" href="{@docRoot}preview/index.html">
+ <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
<span class="dac-sprite dac-auto-chevron"></span>
- Learn more
+ Get started
</a>
</div>
</div>
@@ -71,7 +71,7 @@ page.customHeadTag=<meta name="google-site-verification" content="sa-bIAI6GKvct3
data-maxResults="3"></div>
</div></section>
-<div class="dac-hero-carousel" data-carousel-query="collection:distribute/landing/carousel">
+<div class="dac-hero-carousel" data-carousel-query="collection:index/secondary/carousel">
</div>
<section class="dac-section dac-gray"><div class="wrap">
diff --git a/docs/html/jd_collections.js b/docs/html/jd_collections.js
index 86089e6..c5b0b85 100644
--- a/docs/html/jd_collections.js
+++ b/docs/html/jd_collections.js
@@ -13,6 +13,15 @@ var RESOURCE_COLLECTIONS = {
"sdk/index.html"
]
},
+ "index/secondary/carousel": {
+ "title": "",
+ "resources": [
+ "http://www.youtube.com/watch?v=0r36OJaeMo4",
+ "http://www.youtube.com/watch?v=1Iw7Tg_afKk",
+ "http://www.youtube.com/watch?v=TieksFvD-7o",
+ "http://www.youtube.com/watch?v=MCoh4Pxs_ok"
+ ]
+ },
"index/multiscreen": {
"title": "",
"resources": [
@@ -175,10 +184,10 @@ var RESOURCE_COLLECTIONS = {
"distribute/landing/carousel": {
"title": "",
"resources": [
- "http://www.youtube.com/watch?v=Pd49vTkvu0U",
- "http://www.youtube.com/watch?v=ekxABqJeRBc",
- "http://www.youtube.com/watch?v=MPnH7h12h0U",
- "http://www.youtube.com/watch?v=700gYRkhkLM"
+ "https://www.youtube.com/watch?v=QDM52bblwlg",
+ "https://www.youtube.com/watch?v=wcjqBSei3a0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+ "https://www.youtube.com/watch?v=B6ydLpkhq04&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+ "https://www.youtube.com/watch?v=jyO3-rF4Mu0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
]
},
"distribute/landing/googleplay": {
@@ -1602,7 +1611,8 @@ var RESOURCE_COLLECTIONS = {
"title": "",
"resources": [
"training/enterprise/work-policy-ctrl.html",
- "samples/BasicManagedProfile/index.html"
+ "samples/BasicManagedProfile/index.html",
+ "https://www.youtube.com/watch?v=j3QC6hcpy90"
]
},
"tools/performance/rendering": {
diff --git a/docs/html/jd_extras.js b/docs/html/jd_extras.js
index 5b2468d..5dbca75 100644
--- a/docs/html/jd_extras.js
+++ b/docs/html/jd_extras.js
@@ -2914,7 +2914,7 @@ DISTRIBUTE_RESOURCES = DISTRIBUTE_RESOURCES.concat([
"tags": [],
"image":"http://i1.ytimg.com/vi/jQWB_-o1kz4/maxresdefault.jpg",
"lang":"en",
- "type":"about"
+ "type":"youtube"
},
{
"title":"App Configurations, Testing and Launchers",
@@ -2926,7 +2926,7 @@ DISTRIBUTE_RESOURCES = DISTRIBUTE_RESOURCES.concat([
"tags": [],
"image":"http://i1.ytimg.com/vi/39NkpWkaH8M/maxresdefault.jpg",
"lang":"en",
- "type":"about"
+ "type":"youtube"
},
{
"title":"Building an enterprise ready app",
@@ -2938,7 +2938,7 @@ DISTRIBUTE_RESOURCES = DISTRIBUTE_RESOURCES.concat([
"tags": [],
"image":"http://i1.ytimg.com/vi/dH41OutAMNM/maxresdefault.jpg",
"lang":"en",
- "type":"develop"
+ "type":"youtube"
},
{
"title":"Android for Work: Single Use Devices",
@@ -2950,7 +2950,7 @@ DISTRIBUTE_RESOURCES = DISTRIBUTE_RESOURCES.concat([
"tags": [],
"image":"http://i1.ytimg.com/vi/j3QC6hcpy90/maxresdefault.jpg",
"lang":"en",
- "type":"about"
+ "type":"youtube"
},
{
"title":"Discover YouTube cards",
@@ -3301,6 +3301,41 @@ DISTRIBUTE_RESOURCES = DISTRIBUTE_RESOURCES.concat([
"tags": [],
"image": "distribute/images/advertising.jpg",
"type": "distribute"
+ },
+ {
+ "url":"https://www.youtube.com/watch?v=QDM52bblwlg",
+ "image": "images/distribute/hero-family-discovery.jpg",
+ "title": "Introducing the new family discovery experience on Google Play",
+ "summary": "Help families create little moments on Google Play. Opt-in your apps now.",
+ "tags":["families","googleplay"],
+ "type":"youtube"
+ },
+ {
+ "url":"https://www.youtube.com/watch?v=wcjqBSei3a0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+ "image": "http://i1.ytimg.com/vi/wcjqBSei3a0/maxresdefault.jpg",
+ "title": "Developers connecting the world through Google Play",
+ "summary": "The mobile ecosystem is empowering developers to make good on the dream of connecting the world through technology to improve people's lives.",
+ "tags":["io15","googleplay"],
+ "keywords":["Google I/O 2015","io"],
+ "type":"youtube"
+ },
+ {
+ "url":"https://www.youtube.com/watch?v=B6ydLpkhq04&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+ "image": "http://i1.ytimg.com/vi/B6ydLpkhq04/maxresdefault.jpg",
+ "title": "Store Listing Experiments for Google Play",
+ "summary": "Learn how to use Google Play’s new store listing optimization feature to get more installs of your app, and how to test different graphics and text to find out which options perform the best. ",
+ "tags":["io15","googleplay","store listing"],
+ "tags":["google i/o","google play","store listing"],
+ "type":"youtube"
+ },
+ {
+ "url":"https://www.youtube.com/watch?v=jyO3-rF4Mu0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+ "image": "http://i1.ytimg.com/vi/jyO3-rF4Mu0/maxresdefault.jpg",
+ "title": "Growing games with Google",
+ "summary": "The games industry has never been more promising and full of opportunities. This talk covers how Google is helping developers across a broad range of existing and emerging platforms.",
+ "tags":["io15","android", "googleplay","games"],
+ "keywords":["Google I/O","google play","games"],
+ "type":"youtube"
}
]);
@@ -3310,41 +3345,85 @@ var CAROUSEL_OVERRIDE = {
"heroColor": "#263238",
"heroInvert": true,
"title": "Android 5.0 Lollipop",
- "summary": "The Android 5.0 update adds a variety of new features for your apps, such as notifications on the lock screen, an all-new camera API, OpenGL ES 3.1, the new Material design interface, and much more."
- },
- "distribute/googleplay/families/about.html": {
- "image": "images/distribute/hero-family.jpg",
- "title": "Designed for Families",
- "summary": "Introducing a new Google Play section to promote family friendly apps. Your apps in the program can benefit from enhanced discoverability in addition to maintaining their existing categories, rankings, and reviews elsewhere on the Google Play store."
+ "summary": "The Android 5.0 update adds a variety of new features for your apps, such as notifications on the lock screen, an all-new camera API, OpenGL ES 3.1, the new naterial design interface, and much more.",
},
"http://www.youtube.com/watch?v=Pd49vTkvu0U": {
"url":"http://www.youtube.com/watch?v=Pd49vTkvu0U&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
"image": "images/distribute/hero-jelly-button.jpg",
"title": "How Jelly Button Games are growing globally through data",
- "summary": "To really understand their users, Jelly Button Games analyzes over 3 billion events each month using Google Analytics and Google BigQuery."
+ "summary": "To really understand their users, Jelly Button Games analyzes over 3 billion events each month using Google Analytics and Google BigQuery.",
},
"http://www.youtube.com/watch?v=700gYRkhkLM": {
"url":"http://www.youtube.com/watch?v=700gYRkhkLM&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
"image": "images/distribute/hero-outfit7.jpg",
"title": "Outfit7 — Building an entertainment company with Google",
- "summary": "Outfit7, creators of My Talking Tom and My Talking Angela, offer a complete entertainment experience to users spanning mobile apps, user generated and original YouTube content, and a range of toys, clothing, and accessories...."
+ "summary": "Outfit7, creators of My Talking Tom and My Talking Angela, offer a complete entertainment experience to users spanning mobile apps, user generated and original YouTube content, and a range of toys, clothing, and accessories....",
},
"http://www.youtube.com/watch?v=MPnH7h12h0U": {
"url":"http://www.youtube.com/watch?v=MPnH7h12h0U&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
"image": "images/distribute/hero-haystack.jpg",
- "summary": "Haystack TV built a scalable business with six employees and Android TV. Two weeks was all it took for them to bring their mobile app to the big screen."
+ "summary": "Haystack TV built a scalable business with six employees and Android TV. Two weeks was all it took for them to bring their mobile app to the big screen.",
},
"http://www.youtube.com/watch?v=ekxABqJeRBc": {
"url":"http://www.youtube.com/watch?v=ekxABqJeRBc&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
"image": "images/distribute/hero-ginlemon.jpg",
"title": "How GinLemon is breaking through with Google Play",
- "summary": "Meet Vincenzo Colucci, developer and founder of GinLemon, which started as a summer holiday joke and has now become a successful global app business on Google Play based in Manfredonia, southern Italy."
+ "summary": "Meet Vincenzo Colucci, developer and founder of GinLemon, which started as a summer holiday joke and has now become a successful global app business on Google Play based in Manfredonia, southern Italy.",
},
"distribute/googleplay/guide.html": {
"heroColor": "#fcb94e",
"image": "images/distribute/hero-g-play-guidebooks_2x.png",
- "title": "Finding Success on Google Play",
+ "title": "Finding success on Google Play",
"summary": "We’ve created a downloadable guide to help you find success with your app or game business on Google Play. In it, you’ll find features, tips, and best practices to help you build an effective strategy.",
- "tags": []
+ },
+ "http://www.youtube.com/watch?v=0r36OJaeMo4": {
+ "url":"http://www.youtube.com/watch?v=0r36OJaeMo4&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
+ "image": "images/distribute/hero-shifty-jelly.jpg",
+ "title": "Shifty Jelly — building a number 1 podcast app",
+ "summary": "Shifty Jelly is an Adelaide based mobile development company that has seen great success building Pocket Casts, a premium podcast manager app.",
+ },
+ "http://www.youtube.com/watch?v=1Iw7Tg_afKk": {
+ "image": "images/distribute/hero-wooga.jpg",
+ "url":"http://www.youtube.com/watch?v=1Iw7Tg_afKk&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
+ "title": "Wooga’s fast iterations on Google Play",
+ "summary": "The speed at which Wooga is able to iterate its live and under development games with the Android and Google Play tools has been key to delivering hits such as Diamond Dash, Jelly Splash, and Agent Alice.",
+ },
+ "http://www.youtube.com/watch?v=TieksFvD-7o": {
+ "url":"http://www.youtube.com/watch?v=TieksFvD-7o&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
+ "image": "images/distribute/hero-trello.jpg",
+ "title": "Trello lifts engagement by double digits with material design",
+ "summary": "Trello recently redesigned their collaborative planning app using the material design guidelines, and their efforts paid off.",
+ },
+ "http://www.youtube.com/watch?v=MCoh4Pxs_ok": {
+ "url":"http://www.youtube.com/watch?v=MCoh4Pxs_ok&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
+ "image": "images/distribute/hero-the-hunt.jpg",
+ "title": "The Hunt — growing engagement with material design and Google Play",
+ "summary": "Material design has helped The Hunt to enhance engagement in their style advice and product discovery app. ",
+ },
+ "https://www.youtube.com/watch?v=QDM52bblwlg": {
+ "url":"distribute/googleplay/families/about.html",
+ "image": "images/distribute/hero-family-discovery.jpg",
+ "title": "Designed for families",
+ "summary": "Introducing the new family discovery experience in Google Play. Your apps can benefit from enhanced discoverability and maintain their existing categories, rankings, and reviews elsewhere in the store. Opt-in your apps today.",
+ "type":"distribute",
+ },
+ "https://www.youtube.com/watch?v=wcjqBSei3a0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS": {
+ "url":"https://www.youtube.com/watch?v=wcjqBSei3a0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+ "image": "images/distribute/hero-IO15-google-play.jpg",
+ "title": "Connecting the world through Google Play",
+ "tags":["io15"],
+ "summary": "In this this Google I/O talk, hear how the mobile ecosystem is empowering developers to connect the world through technology and improve people's lives.",
+ },
+ "https://www.youtube.com/watch?v=B6ydLpkhq04&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS": {
+ "image": "images/distribute/hero-store-listing-experience.jpg",
+ "title": "Using Google Play store listing experiments",
+ "tags":["io15"],
+ "summary": "Learn how to use Google Play store listing experiments to get more installs in this Google I/O talk. Test different graphics and text to find out which options perform the best. ",
+ },
+ "https://www.youtube.com/watch?v=jyO3-rF4Mu0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS": {
+ "image": "images/distribute/hero-IO15-growing-games.jpg",
+ "title": "Growing games with Google",
+ "tags":["io15"],
+ "summary": "The games industry has never been more promising and full of opportunities. This talk from Google I/O 2015 covers how Google is helping developers across a broad range of existing and emerging platforms.",
}
-};
+}; \ No newline at end of file
diff --git a/docs/html/preview/index.jd b/docs/html/preview/index.jd
index eb18aa6..68186bd 100644
--- a/docs/html/preview/index.jd
+++ b/docs/html/preview/index.jd
@@ -26,7 +26,7 @@ footer.hide=1
<a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
<span class="dac-sprite dac-auto-chevron"></span>
- Get Started!
+ Get started
</a><br>
</div>
</div>
@@ -44,7 +44,7 @@ footer.hide=1
<div class="dac-section-subtitle">
Essential information to help you get your apps ready for Android M.
</div>
-
+
<div class="resource-widget resource-flow-layout col-16"
data-query="collection:preview/landing/more"
data-cardSizes="6x6"
@@ -56,7 +56,7 @@ footer.hide=1
<span class="dac-sprite dac-auto-chevron"></span>
Report Issues
</a>
- </li>
+ </li>
<li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
<span class="dac-sprite dac-auto-chevron"></span>
Join G+ Community
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index 82faeaf..93e9fad 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -30,21 +30,22 @@ studio.win_notools_exe_checksum=ae09797db2537afb572a00b7eacc292bb66d539e
-sdk.linux_download=android-sdk_r24.3.2-linux.tgz
-sdk.linux_bytes=309138263
-sdk.linux_checksum=4a10e62c5d88fd6c2a69db12348cbe168228b98f
+sdk.linux_download=android-sdk_r24.3.3-linux.tgz
+sdk.linux_bytes=309109716
+sdk.linux_checksum=cd4cab76c2e3d926b3495c26ec56c831ba77d0d0
-sdk.mac_download=android-sdk_r24.3.2-macosx.zip
-sdk.mac_bytes=98329772
-sdk.mac_checksum=8609b92e26e9bd5796f771138c6b222b6c0cb474
+sdk.mac_download=android-sdk_r24.3.3-macosx.zip
+sdk.mac_bytes=98330824
+sdk.mac_checksum=41f0f3e76d6868018740e654aefb04fd765c357d
-sdk.win_download=android-sdk_r24.3.2-windows.zip
-sdk.win_bytes=187488291
-sdk.win_checksum=bcfe3c41ea7e33a29ad6f358adbdf977008be80a
+sdk.win_download=android-sdk_r24.3.3-windows.zip
+sdk.win_bytes=187480692
+sdk.win_checksum=b6a4899efbf20fc593042f1515446c6630ba502e
-sdk.win_installer=installer_r24.3.2-windows.exe
-sdk.win_installer_bytes=139471724
-sdk.win_installer_checksum=8f9d0ae9fdb37973ed62d6e93975ff375beb5542
+
+sdk.win_installer=installer_r24.3.3-windows.exe
+sdk.win_installer_bytes=139463749
+sdk.win_installer_checksum=bbdae40a7665e55b3cdb1fbae865986e6cd3df14
diff --git a/docs/html/tools/building/building-cmdline.jd b/docs/html/tools/building/building-cmdline.jd
index 0e4c8b2..bf3e873 100644
--- a/docs/html/tools/building/building-cmdline.jd
+++ b/docs/html/tools/building/building-cmdline.jd
@@ -353,13 +353,6 @@ adb -d install <em>path/to/your/app</em>.apk
to publish your application, you <strong>must</strong> sign the application with your own private
key, rather than the debug key generated by the SDK tools.</p>
- <p>Android Studio helps you get started quickly by signing your .apk files with a debug key,
- prior to installing them on an emulator or development device. This means that you can quickly
- run your application from Android Studio without having to generate your own private key. No
- specific action on your part is needed, provided ADT has access to Keytool. However, please note
- that if you intend to publish your application, you <strong>must</strong> sign the application
- with your own private key, rather than the debug key generated by the SDK tools.</p>
-
<p>Please read <a href="{@docRoot}tools/publishing/app-signing.html">Signing Your
Applications</a>, which provides a thorough guide to application signing on Android and what it
means to you as an Android application developer. The document also includes a guide to publishing
diff --git a/docs/html/tools/help/adb.jd b/docs/html/tools/help/adb.jd
index 41c6686..641d463 100644
--- a/docs/html/tools/help/adb.jd
+++ b/docs/html/tools/help/adb.jd
@@ -16,18 +16,7 @@ page.tags=adb
<li><a href="#move">Installing an Application</a></li>
<li><a href="#forwardports">Forwarding Ports</a></li>
<li><a href="#copyfiles">Copying Files to or from an Emulator/Device Instance</a></li>
- <li><a href="#shellcommands">Issuing Shell Commands</a>
- <ol>
- <li><a href="#am">Using activity manager (am)</a></li>
- <li><a href="#pm">Using package manager (pm)</a></li>
- <li><a href="#sqlite">Examining sqlite3 databases from a remote shell</a></li>
- <li><a href="#screenrecord">Recording a device screen</a></li>
- <li><a href="#monkey">UI/Application Exerciser Monkey</a></li>
- <li><a href="#othershellcommands">Other shell commands</a></li>
- </ol>
- </li>
- <li><a href="#logcat">Enabling logcat logging</a></li>
- <li><a href="#stopping">Stopping the adb server</a></li>
+ <li><a href="#stopping">Stopping the adb Server</a></li>
<li><a href="#wireless">Wireless usage</a></li>
</ol>
@@ -279,7 +268,7 @@ would issue the <code>install</code> command as soon as the emulator or device i
<td rowspan="2">Shell</td>
<td><code>shell</code></td>
<td>Starts a remote shell in the target emulator/device instance.</td>
-<td rowspan="2">See <a href="#shellcommands">Issuing Shell Commands</a> for more information. </td>
+<td rowspan="2">See <a href="{@docRoot}tools/help/shell.html#shellcommands">ADB Shell Commands</a> for more information. </td>
</tr>
<tr>
@@ -412,950 +401,10 @@ emulator/device instance (remote). For example: </p>
+<h2 id="stopping">Stopping the adb Server</h2>
-
-
-
-
-<h2 id="shellcommands">Issuing Shell Commands</h2>
-
-<p>Adb provides a Unix shell that you can use to run a variety of commands on an emulator
-or connected device. The command binaries are stored in the file system of the emulator or device,
-at <code>/system/bin/...</code>
-
-<p>Two of the most common command tools are <a href="#am">activity manager</a> ({@code am}) and
-<a href="#pm">package manager</a> ({@code pm}).</p>
-
-<p>You can use the <code>shell</code> command to issue commands, with or without entering
-the adb remote shell on the emulator/device. To issue a single command without entering a
-remote shell, use the <code>shell</code> command like this: </p>
-
- <pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell &lt;shell_command&gt;</pre>
-
-<p>Or enter a remote shell on an emulator/device like this:</p>
-
- <pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell</pre>
-
-<p>When you are ready to exit the remote shell, press CTRL+D or type
-<code>exit</code>. </p>
-
-
-
-
-
-<h3 id="am">Using activity manager (am)</h3>
-
-<p>Within an adb shell, you can issue commands with the activity manager ({@code am}) tool to
-perform various system actions, such as start an activity, force-stop a process,
-broadcast an intent, modify the device screen properties, and more. While in a shell,
-the syntax is:</p>
-<pre class="no-pretty-print">
-am &lt;command>
-</pre>
-
-<p>You can also issue an activity manager command directly from adb
-without entering a remote shell. For example:</p>
-<pre class="no-pretty-print">
-adb shell am start -a android.intent.action.VIEW
-</pre>
-
-
-<p class="table-caption"><strong>Table 2.</strong> Available activity manager commands</p>
-<table>
-<tr>
- <th>Command</th>
- <th>Description</th>
-</tr>
-
-<tr>
-<td><code>
-start [options] &lt;INTENT>
-</code></td>
-<td>Start an {@link android.app.Activity} specified by {@code &lt;INTENT>}. <p>See the
-<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
-<p>Options are:
-<ul>
- <li>{@code -D}: Enable debugging.
- <li>{@code -W}: Wait for launch to complete.
- <li>{@code --start-profiler &lt;FILE>}: Start profiler and send results to {@code &lt;FILE>}.
- <li>{@code -P &lt;FILE>}: Like <code>--start-profiler</code>,
- but profiling stops when the app goes idle.
- <li>{@code -R}: Repeat the activity launch {@code &lt;COUNT>} times. Prior to each repeat,
- the top activity will be finished.
- <li>{@code -S}: Force stop the target app before starting the activity.
- <li>{@code --opengl-trace}: Enable tracing of OpenGL functions.
- <li>{@code --user &lt;USER_ID> | current}: Specify which user to run as; if not
- specified, then run as the current user.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-startservice [options] &lt;INTENT>
-</code></td>
-<td>Start the {@link android.app.Service} specified by {@code &lt;INTENT>}. <p>See the
-<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
-<p>Options are:
-<ul>
- <li>{@code --user &lt;USER_ID> | current}: Specify which user to run as; if not
- specified, then run as the current user.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-force-stop &lt;PACKAGE>
-</code></td>
-<td>Force stop everything associated with {@code &lt;PACKAGE>} (the app's package name).
-</td>
-</tr>
-
-<tr>
-<td><code>
-kill [options] &lt;PACKAGE>
-</code></td>
-<td> Kill all processes associated with {@code &lt;PACKAGE>}
- (the app's package name). This command kills only
- processes that are safe to kill and that will not impact the user
- experience.
- <p>Options are:
- <ul>
- <li>{@code --user &lt;USER_ID> | all | current}: Specify user whose processes to kill;
- all users if not specified.
- </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-kill-all
-</code></td>
-<td>Kill all background processes.
-</td>
-</tr>
-
-<tr>
-<td><code>
-broadcast [options] &lt;INTENT>
-</code></td>
-<td>Issue a broadcast intent. <p>See the
-<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
-<p>Options are:
-<ul>
- <li>{@code [--user &lt;USER_ID> | all | current]}: Specify which user to send to; if not
- specified then send to all users.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-instrument [options] &lt;COMPONENT>
-</code></td>
-<td>Start monitoring with an {@link android.app.Instrumentation} instance.
- Typically the target {@code &lt;COMPONENT>}
- is the form {@code &lt;TEST_PACKAGE>/&lt;RUNNER_CLASS>}. <p>Options are:
-<ul>
- <li>{@code -r}: Print raw results (otherwise decode
- {@code &lt;REPORT_KEY_STREAMRESULT>}). Use with
- {@code [-e perf true]} to generate raw output for performance measurements.
-
- <li>{@code -e &lt;NAME> &lt;VALUE>}: Set argument {@code &lt;NAME>} to {@code &lt;VALUE>}.
- For test runners a common form is {@code
- -e &lt;testrunner_flag> &lt;value>[,&lt;value>...]}.
-
- <li>{@code -p &lt;FILE>}: Write profiling data to {@code &lt;FILE>}.
-
- <li>{@code -w}: Wait for instrumentation to finish before returning. Required for
- test runners.
-
- <li>{@code --no-window-animation}: Turn off window animations while running.
- <li>{@code --user &lt;USER_ID> | current}: Specify which user instrumentation runs in;
- current user if not specified.
-</ul>
-
-</td>
-</tr>
-
-<tr>
-<td><code>
-profile start &lt;PROCESS> &lt;FILE>
-</code></td>
-<td>Start profiler on {@code &lt;PROCESS>}, write results to {@code &lt;FILE>}.
-</td>
-</tr>
-
-<tr>
-<td><code>
-profile stop &lt;PROCESS>
-</code></td>
-<td>Stop profiler on {@code &lt;PROCESS>}.
-</td>
-</tr>
-
-<tr>
-<td style="white-space:nowrap"><code>
-dumpheap [options] &lt;PROCESS> &lt;FILE>
-</code></td>
-<td>Dump the heap of {@code &lt;PROCESS>}, write to {@code &lt;FILE>}. <p>Options are:
-<ul>
- <li>{@code --user [&lt;USER_ID>|current]}: When supplying a process name,
- specify user of process to dump; uses current user if not specified.
- <li>{@code -n}: Dump native heap instead of managed heap.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-set-debug-app [options] &lt;PACKAGE>
-</code></td>
-<td>Set application {@code &lt;PACKAGE>} to debug. <p>Options are:
-<ul>
- <li>{@code -w}: Wait for debugger when application starts.
- <li>{@code --persistent}: Retain this value.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-clear-debug-app
-</code></td>
-<td>Clear the package previous set for debugging with {@code set-debug-app}.
-</td>
-</tr>
-
-<tr>
-<td><code>
-monitor [options]
-</code></td>
-<td>Start monitoring for crashes or ANRs. <p>Options are:
-<ul>
- <li>{@code --gdb}: Start gdbserv on the given port at crash/ANR.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-screen-compat [on|off] &lt;PACKAGE>
-</code></td>
-<td>Control <a href="{@docRoot}guide/practices/screen-compat-mode.html">screen
-compatibility</a> mode of {@code &lt;PACKAGE>}.</p>
-</td>
-</tr>
-
-<tr>
-<td><code>
-display-size [reset|&lt;WxH>]
-</code></td>
-<td>Override emulator/device display size.
-This command is helpful for testing your app across different screen sizes by mimicking a small
-screen resolution using a device with a large screen, and vice versa.
-<p>Example:<br><code>am display-size 1280x800</code>
-</td>
-</tr>
-
-<tr>
-<td><code>
-display-density &lt;dpi>
-</code></td>
-<td>Override emulator/device display density.
-This command is helpful for testing your app across different screen densities on high-density
-screen environment using a low density screen, and vice versa.
-<p>Example:<br><code>am display-density 480</code>
-</td>
-</tr>
-
-<tr>
-<td><code>
-to-uri &lt;INTENT>
-</code></td>
-<td>Print the given intent specification as a URI. <p>See the
-<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
-</td>
-</tr>
-
-<tr>
-<td><code>
-to-intent-uri &lt;INTENT>
-</code></td>
-<td>Print the given intent specification as an {@code intent:} URI. <p>See the
-<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
-</td>
-</tr>
-</table>
-
-
-
-
-
-<h4 id="IntentSpec">
- <a href="" class="expandable" onclick="toggleExpandable(this,'.intents');
-return false">Specification for &lt;INTENT> arguments</a></h4>
-
-<div class="intents" style="display:none">
-
-<p>For activity manager commands that take a {@code &lt;INTENT>} argument, you can
-specify the intent with the following options:</p>
-
-<dl>
- <dt>{@code -a &lt;ACTION>}</dt>
- <dd>Specify the intent action, such as "android.intent.action.VIEW".
- You can declare this only once.
-
- <dt>{@code -d &lt;DATA_URI>}</dt>
- <dd>Specify the intent data URI, such as "content://contacts/people/1".
- You can declare this only once.
-
- <dt>{@code -t &lt;MIME_TYPE>}</dt>
- <dd>Specify the intent MIME type, such as "image/png".
- You can declare this only once.
-
- <dt>{@code -c &lt;CATEGORY>}</dt>
- <dd>Specify an intent category, such as "android.intent.category.APP_CONTACTS".
-
- <dt>{@code -n &lt;COMPONENT>}</dt>
- <dd>Specify the component name with package name prefix to create an explicit intent, such
- as "com.example.app/.ExampleActivity".
-
- <dt>{@code -f &lt;FLAGS>}</dt>
- <dd>Add flags to the intent, as supported by {@link
- android.content.Intent#setFlags setFlags()}.
-
- <dt>{@code --esn &lt;EXTRA_KEY>}</dt>
- <dd>Add a null extra. This option is not supported for URI intents.
-
- <dt>{@code -e|--es &lt;EXTRA_KEY> &lt;EXTRA_STRING_VALUE>}</dt>
- <dd>Add string data as a key-value pair.
-
- <dt>{@code --ez &lt;EXTRA_KEY> &lt;EXTRA_BOOLEAN_VALUE>}</dt>
- <dd>Add boolean data as a key-value pair.
-
- <dt>{@code --ei &lt;EXTRA_KEY> &lt;EXTRA_INT_VALUE>}</dt>
- <dd>Add integer data as a key-value pair.
-
- <dt>{@code --el &lt;EXTRA_KEY> &lt;EXTRA_LONG_VALUE>}</dt>
- <dd>Add long data as a key-value pair.
-
- <dt>{@code --ef &lt;EXTRA_KEY> &lt;EXTRA_FLOAT_VALUE>}</dt>
- <dd>Add float data as a key-value pair.
-
- <dt>{@code --eu &lt;EXTRA_KEY> &lt;EXTRA_URI_VALUE>}</dt>
- <dd>Add URI data as a key-value pair.
-
- <dt>{@code --ecn &lt;EXTRA_KEY> &lt;EXTRA_COMPONENT_NAME_VALUE>}</dt>
- <dd>Add a component name, which is converted and passed as
- a {@link android.content.ComponentName} object.
-
- <dt>{@code --eia &lt;EXTRA_KEY> &lt;EXTRA_INT_VALUE>[,&lt;EXTRA_INT_VALUE...]}</dt>
- <dd>Add an array of integers.
-
- <dt>{@code --ela &lt;EXTRA_KEY> &lt;EXTRA_LONG_VALUE>[,&lt;EXTRA_LONG_VALUE...]}</dt>
- <dd>Add an array of longs.
-
- <dt>{@code --efa &lt;EXTRA_KEY> &lt;EXTRA_FLOAT_VALUE>[,&lt;EXTRA_FLOAT_VALUE...]}</dt>
- <dd>Add an array of floats.
-
- <dt>{@code --grant-read-uri-permission}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}.
-
- <dt>{@code --grant-write-uri-permission}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}.
-
- <dt>{@code --debug-log-resolution}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_DEBUG_LOG_RESOLUTION}.
-
- <dt>{@code --exclude-stopped-packages}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_EXCLUDE_STOPPED_PACKAGES}.
-
- <dt>{@code --include-stopped-packages}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_INCLUDE_STOPPED_PACKAGES}.
-
- <dt>{@code --activity-brought-to-front}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT}.
-
- <dt>{@code --activity-clear-top}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}.
-
- <dt>{@code --activity-clear-when-task-reset}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET}.
-
- <dt>{@code --activity-exclude-from-recents}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS}.
-
- <dt>{@code --activity-launched-from-history}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY}.
-
- <dt>{@code --activity-multiple-task}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}.
-
- <dt>{@code --activity-no-animation}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_ANIMATION}.
-
- <dt>{@code --activity-no-history}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_HISTORY}.
-
- <dt>{@code --activity-no-user-action}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_USER_ACTION}.
-
- <dt>{@code --activity-previous-is-top}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_PREVIOUS_IS_TOP}.
-
- <dt>{@code --activity-reorder-to-front}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_REORDER_TO_FRONT}.
-
- <dt>{@code --activity-reset-task-if-needed}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_RESET_TASK_IF_NEEDED}.
-
- <dt>{@code --activity-single-top}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}.
-
- <dt>{@code --activity-clear-task}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK}.
-
- <dt>{@code --activity-task-on-home}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_TASK_ON_HOME}.
-
- <dt>{@code --receiver-registered-only}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_RECEIVER_REGISTERED_ONLY}.
-
- <dt>{@code --receiver-replace-pending}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_RECEIVER_REPLACE_PENDING}.
-
- <dt>{@code --selector}</dt>
- <dd>Requires the use of {@code -d} and {@code -t} options to set the intent data and type.
-
- <dt>{@code &lt;URI> &lt;COMPONENT> &lt;PACKAGE>}</dt>
- <dd>You can directly specify a URI, package name, and component name when not qualified
- by one of the above options. When an argument is unqualified, the tool assumes the argument
- is a URI if it contains a ":" (colon); it assumes the argument is a component name if it
- contains a "/" (forward-slash); otherwise it assumes the argument is a package name.
-
-</dl>
-</div><!-- end 'intents' -->
-<script>
- $(window).hashchange( function(){
- if ((location.hash == "#IntentSpec") && !($("#IntentSpec a").hasClass("expanded"))) {
- $("#IntentSpec a").click();
- }
- });
-</script>
-
-
-
-<h3 id="pm">Using package manager (pm)</h3>
-
-<p>Within an adb shell, you can issue commands with the package manager ({@code pm}) tool to
-perform actions and queries on application packages installed on the device. While in a shell,
-the syntax is:</p>
-<pre class="no-pretty-print">
-pm &lt;command>
-</pre>
-
-<p>You can also issue a package manager command directly from adb
-without entering a remote shell. For example:</p>
-<pre class="no-pretty-print">
-adb shell pm uninstall com.example.MyApp
-</pre>
-
-<p class="table-caption"><strong>Table 3.</strong> Available package manager commands.</p>
-<table>
-<tr>
- <th>Command</th>
- <th>Description</th>
-</tr>
-
-<tr>
-<td><code>
-list packages [options] &lt;FILTER>
-</code></td>
-<td>Prints all packages, optionally only
- those whose package name contains the text in {@code &lt;FILTER>}. <p>Options:
-<ul>
- <li>{@code -f}: See their associated file.
- <li>{@code -d}: Filter to only show disabled packages.
- <li>{@code -e}: Filter to only show enabled packages.
- <li>{@code -s}: Filter to only show system packages.
- <li>{@code -3}: Filter to only show third party packages.
- <li>{@code -i}: See the installer for the packages.
- <li>{@code -u}: Also include uninstalled packages.
- <li>{@code --user &lt;USER_ID>}: The user space to query.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-list permission-groups
-</code></td>
-<td>Prints all known permission groups.
-</td>
-</tr>
-
-<tr>
-<td><code>
-list permissions [options] &lt;GROUP>
-</code></td>
-<td>Prints all known permissions, optionally only
- those in {@code &lt;GROUP>}. <p>Options:
-<ul>
- <li>{@code -g}: Organize by group.
- <li>{@code -f}: Print all information.
- <li>{@code -s}: Short summary.
- <li>{@code -d}: Only list dangerous permissions.
- <li>{@code -u}: List only the permissions users will see.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-list instrumentation
-</code></td>
-<td>List all test packages. <p>Options:
- <ul>
- <li>{@code -f}: List the APK file for the test package.
- <li>{@code &lt;TARGET_PACKAGE>}: List test packages for only this app.
- </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-list features
-</code></td>
-<td>Prints all features of the system.
-</td>
-</tr>
-
-<tr>
-<td><code>
-list libraries
-</code></td>
-<td>Prints all the libraries supported by the current device.
-</td>
-</tr>
-
-<tr>
-<td><code>
-list users
-</code></td>
-<td>Prints all users on the system.
-</td>
-</tr>
-
-<tr>
-<td><code>
-path &lt;PACKAGE>
-</code></td>
-<td>Print the path to the APK of the given {@code &lt;PACKAGE>}.
-</td>
-</tr>
-
-<tr>
-<td><code>
-install [options] &lt;PATH>
-</code></td>
-<td>Installs a package (specified by {@code &lt;PATH>}) to the system. <p>Options:
- <ul>
- <li>{@code -r}: Reinstall an exisiting app, keeping its data.
- <li>{@code -t}: Allow test APKs to be installed.
- <li>{@code -i &lt;INSTALLER_PACKAGE_NAME>}: Specify the installer package name.
- <li>{@code -s}: Install package on the shared mass storage (such as sdcard).
- <li>{@code -f}: Install package on the internal system memory.
- <li>{@code -d}: Allow version code downgrade.
- </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-uninstall [options] &lt;PACKAGE>
-</code></td>
-<td>Removes a package from the system. <p>Options:
- <ul>
- <li>{@code -k}: Keep the data and cache directories around after package removal.
- </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-clear &lt;PACKAGE>
-</code></td>
-<td>Deletes all data associated with a package.
-</td>
-</tr>
-
-<tr>
-<td><code>
-enable &lt;PACKAGE_OR_COMPONENT>
-</code></td>
-<td>Enable the given package or component (written as "package/class").
-</td>
-</tr>
-
-<tr>
-<td><code>
-disable &lt;PACKAGE_OR_COMPONENT>
-</code></td>
-<td>Disable the given package or component (written as "package/class").
-</td>
-</tr>
-
-<tr>
-<td style="white-space:nowrap"><code>
-disable-user [options] &lt;PACKAGE_OR_COMPONENT>
-</code></td>
-<td><p>Options:
- <ul>
- <li>{@code --user &lt;USER_ID>}: The user to disable.
- </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-grant &lt;PACKAGE_PERMISSION>
-</code></td>
-<td>Grant permissions
- to applications. Only optional permissions the application has
- declared can be granted.
-</td>
-</tr>
-
-<tr>
-<td><code>
-revoke &lt;PACKAGE_PERMISSION>
-</code></td>
-<td>Revoke permissions
- to applications. Only optional permissions the application has
- declared can be revoked.
-</td>
-</tr>
-
-<tr>
-<td><code>
-set-install-location &lt;LOCATION>
-</code></td>
-<td>Changes the default install location. Location values:
-<ul>
- <li>{@code 0}: Auto&mdash;Let system decide the best location.
- <li>{@code 1}: Internal&mdash;install on internal device storage.
- <li>{@code 2}: External&mdash;install on external media.
-</ul>
-<p class="note"><strong>Note:</strong> This is only intended for debugging; using this can cause
- applications to break and other undesireable behavior.</p>
-</td>
-</tr>
-
-<tr>
-<td><code>
-get-install-location
-</code></td>
-<td>Returns the current install location. Return values:
-<ul>
- <li>{@code 0 [auto]}: Lets system decide the best location
- <li>{@code 1 [internal]}: Installs on internal device storage
- <li>{@code 2 [external]}: Installs on external media
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-set-permission-enforced &lt;PERMISSION> [true|false]
-</code></td>
-<td>Specifies whether the given permission should be enforced.
-</td>
-</tr>
-
-<tr>
-<td><code>
-trim-caches &lt;DESIRED_FREE_SPACE>
-</code></td>
-<td>Trim cache files to reach the given free space.
-</td>
-</tr>
-
-<tr>
-<td><code>
-create-user &lt;USER_NAME>
-</code></td>
-<td>Create a new user with the given {@code &lt;USER_NAME>},
- printing the new user identifier of the user.
-</td>
-</tr>
-
-<tr>
-<td><code>
-remove-user &lt;USER_ID>
-</code></td>
-<td>Remove the user with the given {@code &lt;USER_IDENTIFIER>},
- deleting all data associated with that user
-</td>
-</tr>
-
-<tr>
-<td><code>
-get-max-users
-</code></td>
-<td>Prints the maximum number of users supported by the device.
-</td>
-</tr>
-
-</table>
-
-
-
-
-
-
-
-<h3 id="sqlite">Examining sqlite3 databases from a remote shell</h3>
-
-<p>From an adb remote shell, you can use the
-<a href="http://www.sqlite.org/sqlite.html">sqlite3</a> command-line program to
-manage SQLite databases created by Android applications. The
-<code>sqlite3</code> tool includes many useful commands, such as
-<code>.dump</code> to print out the contents of a table and
-<code>.schema</code> to print the SQL CREATE statement for an existing table.
-The tool also gives you the ability to execute SQLite commands on the fly.</p>
-
-<p>To use <code>sqlite3</code>, enter a remote shell on the emulator instance, as described above,
-then invoke the tool using the <code>sqlite3</code> command. Optionally, when invoking
-<code>sqlite3</code> you can specify the full path to the database you want to explore.
-Emulator/device instances store SQLite3 databases in the folder
-<code><span chatdir="1"><span chatindex="259474B4B070F261">/data/data/<em>&lt;package_name&gt;</em>/databases</span></span>/</code>. </p>
-
-<p>Here's an example: </p>
-
-<pre class="no-pretty-print">adb -s emulator-5554 shell
-# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
-SQLite version 3.3.12
-Enter &quot;.help&quot; for instructions
-<em>.... enter commands, then quit...</em>
-sqlite&gt; .exit </pre>
-
-<p>Once you've invoked <code>sqlite3</code>, you can issue <code>sqlite3</code> commands in the
-shell. To exit and return to the adb remote shell, use <code>exit</code> or <code>CTRL+D</code>.
-
-
-
-
-<h3 id="screenrecord">Recording a device screen</h3>
-
-<p>The {@code screenrecord} command is a shell utility for recording the display of devices
- running Android 4.4 (API level 19) and higher. The utility records screen activity to an MPEG-4
- file, which you can then download and use as part of a video presentation. This utility is useful
- for developers who want to create promotional or training videos without using a separate
- recording device.</p>
-
-<p>To use the {@code screenrecord} from the command line, type the following:
-
-<pre>
-$ adb shell screenrecord /sdcard/demo.mp4
-</pre>
-
-<p>Stop the screen recording by pressing Ctrl-C, otherwise the recording stops automatically
-at three minutes or the time limit set by {@code --time-limit}.</p>
-
-<p>Here's an example recording session, using the adb shell to record the video and the
-{@code pull} command to download the file from the device:<p>
-
-<pre>
-$ adb shell
-shell@ $ screenrecord --verbose /sdcard/demo.mp4
-(press Ctrl-C to stop)
-shell@ $ exit
-$ adb pull /sdcard/demo.mp4
-</pre>
-
-<p>The {@code screenrecord} utility can record at any supported resolution and bit rate you
- request, while retaining the aspect ratio of the device display. The utility records at the native
- display resolution and orientation by default, with a maximum length of three minutes.</p>
-
-<p>There are some known limitations of the {@code screenrecord} utility that you should be aware
- of when using it:</p>
-
-<ul>
- <li>Some devices may not be able to record at their native display resolution.
- If you encounter problems with screen recording, try using a lower screen resolution.</li>
- <li>Rotation of the screen during recording is not supported. If the screen does rotate during
- recording, some of the screen is cut off in the recording.</li>
- <li>Audio is not recorded with the video file.</li>
-</ul>
-
-
-<p class="table-caption"><strong>Table 4.</strong> {@code screenrecord} options</p>
-
-<table>
- <tr>
- <th>Options</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td><code>--help</code>
- </td>
- <td>Displays a usage summary.</td>
- </tr>
-
- <tr>
- <td style="white-space:nowrap">
- <code>--size &lt;WIDTHxHEIGHT&gt;</code>
- </td>
- <td>Sets the video size, for example: {@code 1280x720}. The default value is the device's main
- display resolution (if supported), 1280x720 if not. For best results, use a size supported
- by your device's Advanced Video Coding (AVC) encoder.</td>
- </tr>
-
- <tr>
- <td><code>--bit-rate &lt;RATE&gt;</code></td>
- <td>Sets the video bit rate for the video, in megabits per second. The default value is 4Mbps.
- You can increase the bit rate to improve video quality or lower it for smaller movie
- files. The following example sets the recording bit rate to 6Mbps:
- <pre>screenrecord --bit-rate 6000000 &#47;sdcard&#47;demo.mp4</pre>
- </td>
- </tr>
-
- <tr>
- <td><code>--time-limit &lt;TIME&gt;</code></td>
- <td>Sets the maximum recording time, in seconds. The default and maximum value is 180
- (3 minutes).</td>
- </tr>
-
- <tr>
- <td><code>--rotate</code></td>
- <td>Rotates the output 90 degrees. This feature is experimental.</td>
- </tr>
-
- <tr>
- <td><code>--verbose</code></td>
- <td>Displays log information on command line screen. If you do not set this option,
- the utility does not display any information while running.</td>
- </tr>
-
-</table>
-
-
-
-
-<h3 id="monkey">UI/Application Exerciser Monkey</h3>
-
-<p>The Monkey is a program that runs on your emulator or device and generates pseudo-random
-streams of user events such as clicks, touches, or gestures, as well as a number of system-level
-events. You can use the Monkey to stress-test applications that you are developing,
-in a random yet repeatable manner.</p>
-
-<p>The simplest way to use the monkey is with the following command, which launches your
-application and sends 500 pseudo-random events to it.</p>
-
-<pre class="no-pretty-print">adb shell monkey -v -p your.package.name 500</pre>
-
-<p>For more information about command options for Monkey, see the complete
-<a href="{@docRoot}tools/help/monkey.html" title="monkey">UI/Application Exerciser Monkey</a> documentation page.</p>
-
-
-
-
-
-<h3 id="othershellcommands">Other shell commands</h3>
-
-<p>For a list of all the available shell programs, use the following command:</p>
-
-<pre class="no-pretty-print">adb shell ls /system/bin</pre>
-
-<p>Help is available for most of the commands. </p>
-
-<p>Table 5 lists some of the more common adb shell commands.</p>
-
-<p class="table-caption"><strong>Table 5.</strong> Some other adb shell commands</p>
-<table>
-<tr>
- <th>Shell Command</th>
- <th>Description</th>
- <th>Comments</th>
-</tr>
-
-<tr>
-<td><code>dumpsys</code></td>
-<td>Dumps system data to the screen.</td>
-<td rowspan=4">The <a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor Server</a>
-(DDMS) tool offers integrated debug environment that you may find easier to use.</td>
-</tr>
-
-<tr>
-<td><code>dumpstate</code></td>
-<td>Dumps state to a file.</td>
-</tr>
-
-<tr>
-<td><code>logcat&nbsp;[option]...&nbsp;[filter-spec]...</code></td>
-<td>Enables system and app logging and prints output to the screen. </td>
-</tr>
-
-<tr>
-<td><code>dmesg</code></td>
-<td>Prints kernel debugging messages to the screen. </td>
-</tr>
-
-<tr>
-<td><code>start</code></td>
-<td>Starts (restarts) an emulator/device instance.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>stop</code></td>
-<td>Stops execution of an emulator/device instance.</td>
-<td>&nbsp;</td>
-</tr>
-
-</table>
-
-
-
-
-
-
-
-<a name="stdout"></a>
-<a name="usinglogcat"></a>
-<a name="outputformat"></a>
-<a name="filteringoutput"></a>
-<a name="stdout"></a>
-<a name="logcatoptions"></a>
-
-<h2 id="logcat">Enabling logcat logging</h2>
-
-<p>The Android logging system provides a mechanism for collecting and viewing system debug output. Logs from various applications and portions of the system are collected in a series of circular buffers, which then can be viewed and filtered by the <code>logcat</code> command.</p>
-
-<p>You can use the <code>logcat</code> command to view and follow the contents of the system's log buffers. The general usage is:</p>
-
-<pre class="no-pretty-print">[adb] logcat [option] ... [filter-spec] ...</pre>
-
-<p>You can use the <code>logcat</code> command from your development computer or from a remote adb shell in an emulator/device instance. To view log output in your development computer, you use</p>
-
-<pre class="no-pretty-print">adb logcat</pre>
-
-<p>and from a remote adb shell you use</p>
-
-<pre class="no-pretty-print">logcat</pre>
-
-<p>See <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and Writing Logs</a> for complete information about logcat commend options and filter specifications.</p>
-
-
-
-
-
-<h2 id="stopping">Stopping the adb server</h2>
-
-<p>In some cases, you might need to terminate the adb server process and then restart it. For example, if adb does not respond to a command, you can terminate the server and restart it and that may resolve the problem. </p>
+<p>In some cases, you might need to terminate the adb server process and then restart it
+to resolve the problem (e.g., if adb does not respond to a command).</p>
<p>To stop the adb server, use the <code>kill-server</code> command.
You can then restart the server by issuing any other adb command. </p>
@@ -1457,4 +506,4 @@ adb kill-server
and then start over from the beginning.
</li>
-</ol>
+</ol> \ No newline at end of file
diff --git a/docs/html/tools/help/index.jd b/docs/html/tools/help/index.jd
index 4c97d0c..f90d029 100644
--- a/docs/html/tools/help/index.jd
+++ b/docs/html/tools/help/index.jd
@@ -68,7 +68,10 @@ avd</code>) the emulator (<code>emulator</code>), and the Dalvik Debug Monitor S
<dt><a href="{@docRoot}tools/help/adb.html">adb</a></dt>
<dd>Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with
an emulator instance or connected Android-powered device. It also provides access to the
- device shell for advanced command-line operations.</dd>
+ device shell.</dd>
+
+ <dt><a href="{@docRoot}tools/help/shell.html">ADB Shell Commands</a></dt>
+ <dd>Learn the commands available for advanced command-line operations.</dd>
<dt><a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor
Server (ddms)</a></dt>
@@ -109,11 +112,9 @@ you can view the file in a profiling tool of your choice.</dd>
<dt><a href="{@docRoot}tools/help/jobb.html">JOBB</a></dt>
<dd>Allows you to build encrypted and unencrypted
- <a href="{@docRoot}{@docRoot}google/play/expansion-files.html">APK expansion files</a> in Opaque
+ <a href="{@docRoot}google/play/expansion-files.html">APK expansion files</a> in Opaque
Binary Blob (OBB) format.</dd>
-<a href="{@docRoot}{@docRoot}google/play/expansion-files.html">APK expansion files</a>
-
<dt><a href="{@docRoot}tools/help/proguard.html">ProGuard</a></dt>
<dd>Shrinks, optimizes, and obfuscates your code by removing unused code and renaming
classes, fields, and methods with semantically obscure names.</dd>
diff --git a/docs/html/tools/help/shell.jd b/docs/html/tools/help/shell.jd
new file mode 100644
index 0000000..417c871
--- /dev/null
+++ b/docs/html/tools/help/shell.jd
@@ -0,0 +1,898 @@
+page.title=ADB Shell Commands
+parent.title=Tools
+parent.link=index.html
+page.tags=shell,adb,am,pm,screenrecord,screencap
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+ <h2>In this document</h2>
+<ol>
+ <li><a href="#shellcommands">Issuing Shell Commands</a>
+ <li><a href="#am">Using activity manager (am)</a></li>
+ <li><a href="#pm">Using package manager (pm)</a></li>
+ <li><a href="#screencap">Taking a device screenshot</a></li>
+ <li><a href="#screenrecord">Recording a device screen</a></li>
+ <li><a href="#othershellcommands">Other shell commands</a></li>
+ </li>
+</ol>
+
+</div>
+</div>
+
+<p>The <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> (adb) provides a Unix shell
+that you can use to run a variety of commands on an emulator or connected device. The command
+binaries are stored in the file system of the emulator or device, at <code>/system/bin/...</code>
+</p>
+
+<h2 id="shellcommands">Issuing Shell Commands</h2>
+
+<p>You can use the <code>shell</code> command to issue commands, with or without entering
+the adb remote shell on the emulator/device. To issue a single command without entering a
+remote shell, use the <code>shell</code> command like this: </p>
+
+ <pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell &lt;shell_command&gt;</pre>
+
+<p>Or enter a remote shell on an emulator/device like this:</p>
+
+ <pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell</pre>
+
+<p>When you are ready to exit the remote shell, press CTRL+D or type
+<code>exit</code>. </p>
+
+
+
+
+
+<h2 id="am">Using activity manager (am)</h2>
+
+<p>Within an adb shell, you can issue commands with the activity manager ({@code am}) tool to
+perform various system actions, such as start an activity, force-stop a process,
+broadcast an intent, modify the device screen properties, and more. While in a shell,
+the syntax is:</p>
+<pre class="no-pretty-print">
+am &lt;command>
+</pre>
+
+<p>You can also issue an activity manager command directly from adb
+without entering a remote shell. For example:</p>
+<pre class="no-pretty-print">
+adb shell am start -a android.intent.action.VIEW
+</pre>
+
+
+<p class="table-caption"><strong>Table 2.</strong> Available activity manager commands</p>
+<table>
+<tr>
+ <th>Command</th>
+ <th>Description</th>
+</tr>
+
+<tr>
+<td><code>
+start [options] &lt;INTENT>
+</code></td>
+<td>Start an {@link android.app.Activity} specified by {@code &lt;INTENT>}. <p>See the
+<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
+<p>Options are:
+<ul>
+ <li>{@code -D}: Enable debugging.
+ <li>{@code -W}: Wait for launch to complete.
+ <li>{@code --start-profiler &lt;FILE>}: Start profiler and send results to {@code &lt;FILE>}.
+ <li>{@code -P &lt;FILE>}: Like <code>--start-profiler</code>,
+ but profiling stops when the app goes idle.
+ <li>{@code -R}: Repeat the activity launch {@code &lt;COUNT>} times. Prior to each repeat,
+ the top activity will be finished.
+ <li>{@code -S}: Force stop the target app before starting the activity.
+ <li>{@code --opengl-trace}: Enable tracing of OpenGL functions.
+ <li>{@code --user &lt;USER_ID> | current}: Specify which user to run as; if not
+ specified, then run as the current user.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+startservice [options] &lt;INTENT>
+</code></td>
+<td>Start the {@link android.app.Service} specified by {@code &lt;INTENT>}. <p>See the
+<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
+<p>Options are:
+<ul>
+ <li>{@code --user &lt;USER_ID> | current}: Specify which user to run as; if not
+ specified, then run as the current user.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+force-stop &lt;PACKAGE>
+</code></td>
+<td>Force stop everything associated with {@code &lt;PACKAGE>} (the app's package name).
+</td>
+</tr>
+
+<tr>
+<td><code>
+kill [options] &lt;PACKAGE>
+</code></td>
+<td> Kill all processes associated with {@code &lt;PACKAGE>}
+ (the app's package name). This command kills only
+ processes that are safe to kill and that will not impact the user
+ experience.
+ <p>Options are:
+ <ul>
+ <li>{@code --user &lt;USER_ID> | all | current}: Specify user whose processes to kill;
+ all users if not specified.
+ </ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+kill-all
+</code></td>
+<td>Kill all background processes.
+</td>
+</tr>
+
+<tr>
+<td><code>
+broadcast [options] &lt;INTENT>
+</code></td>
+<td>Issue a broadcast intent. <p>See the
+<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
+<p>Options are:
+<ul>
+ <li>{@code [--user &lt;USER_ID> | all | current]}: Specify which user to send to; if not
+ specified then send to all users.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+instrument [options] &lt;COMPONENT>
+</code></td>
+<td>Start monitoring with an {@link android.app.Instrumentation} instance.
+ Typically the target {@code &lt;COMPONENT>}
+ is the form {@code &lt;TEST_PACKAGE>/&lt;RUNNER_CLASS>}. <p>Options are:
+<ul>
+ <li>{@code -r}: Print raw results (otherwise decode
+ {@code &lt;REPORT_KEY_STREAMRESULT>}). Use with
+ {@code [-e perf true]} to generate raw output for performance measurements.
+
+ <li>{@code -e &lt;NAME> &lt;VALUE>}: Set argument {@code &lt;NAME>} to {@code &lt;VALUE>}.
+ For test runners a common form is {@code
+ -e &lt;testrunner_flag> &lt;value>[,&lt;value>...]}.
+
+ <li>{@code -p &lt;FILE>}: Write profiling data to {@code &lt;FILE>}.
+
+ <li>{@code -w}: Wait for instrumentation to finish before returning. Required for
+ test runners.
+
+ <li>{@code --no-window-animation}: Turn off window animations while running.
+ <li>{@code --user &lt;USER_ID> | current}: Specify which user instrumentation runs in;
+ current user if not specified.
+</ul>
+
+</td>
+</tr>
+
+<tr>
+<td><code>
+profile start &lt;PROCESS> &lt;FILE>
+</code></td>
+<td>Start profiler on {@code &lt;PROCESS>}, write results to {@code &lt;FILE>}.
+</td>
+</tr>
+
+<tr>
+<td><code>
+profile stop &lt;PROCESS>
+</code></td>
+<td>Stop profiler on {@code &lt;PROCESS>}.
+</td>
+</tr>
+
+<tr>
+<td style="white-space:nowrap"><code>
+dumpheap [options] &lt;PROCESS> &lt;FILE>
+</code></td>
+<td>Dump the heap of {@code &lt;PROCESS>}, write to {@code &lt;FILE>}. <p>Options are:
+<ul>
+ <li>{@code --user [&lt;USER_ID>|current]}: When supplying a process name,
+ specify user of process to dump; uses current user if not specified.
+ <li>{@code -n}: Dump native heap instead of managed heap.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+set-debug-app [options] &lt;PACKAGE>
+</code></td>
+<td>Set application {@code &lt;PACKAGE>} to debug. <p>Options are:
+<ul>
+ <li>{@code -w}: Wait for debugger when application starts.
+ <li>{@code --persistent}: Retain this value.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+clear-debug-app
+</code></td>
+<td>Clear the package previous set for debugging with {@code set-debug-app}.
+</td>
+</tr>
+
+<tr>
+<td><code>
+monitor [options]
+</code></td>
+<td>Start monitoring for crashes or ANRs. <p>Options are:
+<ul>
+ <li>{@code --gdb}: Start gdbserv on the given port at crash/ANR.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+screen-compat [on|off] &lt;PACKAGE>
+</code></td>
+<td>Control <a href="{@docRoot}guide/practices/screen-compat-mode.html">screen
+compatibility</a> mode of {@code &lt;PACKAGE>}.</p>
+</td>
+</tr>
+
+<tr>
+<td><code>
+display-size [reset|&lt;WxH>]
+</code></td>
+<td>Override emulator/device display size.
+This command is helpful for testing your app across different screen sizes by mimicking a small
+screen resolution using a device with a large screen, and vice versa.
+<p>Example:<br><code>am display-size 1280x800</code>
+</td>
+</tr>
+
+<tr>
+<td><code>
+display-density &lt;dpi>
+</code></td>
+<td>Override emulator/device display density.
+This command is helpful for testing your app across different screen densities on high-density
+screen environment using a low density screen, and vice versa.
+<p>Example:<br><code>am display-density 480</code>
+</td>
+</tr>
+
+<tr>
+<td><code>
+to-uri &lt;INTENT>
+</code></td>
+<td>Print the given intent specification as a URI. <p>See the
+<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
+</td>
+</tr>
+
+<tr>
+<td><code>
+to-intent-uri &lt;INTENT>
+</code></td>
+<td>Print the given intent specification as an {@code intent:} URI. <p>See the
+<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
+</td>
+</tr>
+</table>
+
+
+
+
+
+<h3 id="IntentSpec">
+ <a href="" class="expandable" onclick="toggleExpandable(this,'.intents');
+return false">Specification for &lt;INTENT> arguments</a></h3>
+
+<div class="intents" style="display:none">
+
+<p>For activity manager commands that take a {@code &lt;INTENT>} argument, you can
+specify the intent with the following options:</p>
+
+<dl>
+ <dt>{@code -a &lt;ACTION>}</dt>
+ <dd>Specify the intent action, such as "android.intent.action.VIEW".
+ You can declare this only once.
+
+ <dt>{@code -d &lt;DATA_URI>}</dt>
+ <dd>Specify the intent data URI, such as "content://contacts/people/1".
+ You can declare this only once.
+
+ <dt>{@code -t &lt;MIME_TYPE>}</dt>
+ <dd>Specify the intent MIME type, such as "image/png".
+ You can declare this only once.
+
+ <dt>{@code -c &lt;CATEGORY>}</dt>
+ <dd>Specify an intent category, such as "android.intent.category.APP_CONTACTS".
+
+ <dt>{@code -n &lt;COMPONENT>}</dt>
+ <dd>Specify the component name with package name prefix to create an explicit intent, such
+ as "com.example.app/.ExampleActivity".
+
+ <dt>{@code -f &lt;FLAGS>}</dt>
+ <dd>Add flags to the intent, as supported by {@link
+ android.content.Intent#setFlags setFlags()}.
+
+ <dt>{@code --esn &lt;EXTRA_KEY>}</dt>
+ <dd>Add a null extra. This option is not supported for URI intents.
+
+ <dt>{@code -e|--es &lt;EXTRA_KEY> &lt;EXTRA_STRING_VALUE>}</dt>
+ <dd>Add string data as a key-value pair.
+
+ <dt>{@code --ez &lt;EXTRA_KEY> &lt;EXTRA_BOOLEAN_VALUE>}</dt>
+ <dd>Add boolean data as a key-value pair.
+
+ <dt>{@code --ei &lt;EXTRA_KEY> &lt;EXTRA_INT_VALUE>}</dt>
+ <dd>Add integer data as a key-value pair.
+
+ <dt>{@code --el &lt;EXTRA_KEY> &lt;EXTRA_LONG_VALUE>}</dt>
+ <dd>Add long data as a key-value pair.
+
+ <dt>{@code --ef &lt;EXTRA_KEY> &lt;EXTRA_FLOAT_VALUE>}</dt>
+ <dd>Add float data as a key-value pair.
+
+ <dt>{@code --eu &lt;EXTRA_KEY> &lt;EXTRA_URI_VALUE>}</dt>
+ <dd>Add URI data as a key-value pair.
+
+ <dt>{@code --ecn &lt;EXTRA_KEY> &lt;EXTRA_COMPONENT_NAME_VALUE>}</dt>
+ <dd>Add a component name, which is converted and passed as
+ a {@link android.content.ComponentName} object.
+
+ <dt>{@code --eia &lt;EXTRA_KEY> &lt;EXTRA_INT_VALUE>[,&lt;EXTRA_INT_VALUE...]}</dt>
+ <dd>Add an array of integers.
+
+ <dt>{@code --ela &lt;EXTRA_KEY> &lt;EXTRA_LONG_VALUE>[,&lt;EXTRA_LONG_VALUE...]}</dt>
+ <dd>Add an array of longs.
+
+ <dt>{@code --efa &lt;EXTRA_KEY> &lt;EXTRA_FLOAT_VALUE>[,&lt;EXTRA_FLOAT_VALUE...]}</dt>
+ <dd>Add an array of floats.
+
+ <dt>{@code --grant-read-uri-permission}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}.
+
+ <dt>{@code --grant-write-uri-permission}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}.
+
+ <dt>{@code --debug-log-resolution}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_DEBUG_LOG_RESOLUTION}.
+
+ <dt>{@code --exclude-stopped-packages}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_EXCLUDE_STOPPED_PACKAGES}.
+
+ <dt>{@code --include-stopped-packages}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_INCLUDE_STOPPED_PACKAGES}.
+
+ <dt>{@code --activity-brought-to-front}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT}.
+
+ <dt>{@code --activity-clear-top}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}.
+
+ <dt>{@code --activity-clear-when-task-reset}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET}.
+
+ <dt>{@code --activity-exclude-from-recents}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS}.
+
+ <dt>{@code --activity-launched-from-history}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY}.
+
+ <dt>{@code --activity-multiple-task}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}.
+
+ <dt>{@code --activity-no-animation}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_ANIMATION}.
+
+ <dt>{@code --activity-no-history}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_HISTORY}.
+
+ <dt>{@code --activity-no-user-action}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_USER_ACTION}.
+
+ <dt>{@code --activity-previous-is-top}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_PREVIOUS_IS_TOP}.
+
+ <dt>{@code --activity-reorder-to-front}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_REORDER_TO_FRONT}.
+
+ <dt>{@code --activity-reset-task-if-needed}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_RESET_TASK_IF_NEEDED}.
+
+ <dt>{@code --activity-single-top}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}.
+
+ <dt>{@code --activity-clear-task}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK}.
+
+ <dt>{@code --activity-task-on-home}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_TASK_ON_HOME}.
+
+ <dt>{@code --receiver-registered-only}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_RECEIVER_REGISTERED_ONLY}.
+
+ <dt>{@code --receiver-replace-pending}</dt>
+ <dd>Include the flag {@link android.content.Intent#FLAG_RECEIVER_REPLACE_PENDING}.
+
+ <dt>{@code --selector}</dt>
+ <dd>Requires the use of {@code -d} and {@code -t} options to set the intent data and type.
+
+ <dt>{@code &lt;URI> &lt;COMPONENT> &lt;PACKAGE>}</dt>
+ <dd>You can directly specify a URI, package name, and component name when not qualified
+ by one of the above options. When an argument is unqualified, the tool assumes the argument
+ is a URI if it contains a ":" (colon); it assumes the argument is a component name if it
+ contains a "/" (forward-slash); otherwise it assumes the argument is a package name.
+
+</dl>
+</div><!-- end 'intents' -->
+<script>
+ $(window).hashchange( function(){
+ if ((location.hash == "#IntentSpec") && !($("#IntentSpec a").hasClass("expanded"))) {
+ $("#IntentSpec a").click();
+ }
+ });
+</script>
+
+
+
+<h2 id="pm">Using package manager (pm)</h2>
+
+<p>Within an adb shell, you can issue commands with the package manager ({@code pm}) tool to
+perform actions and queries on application packages installed on the device. While in a shell,
+the syntax is:</p>
+<pre class="no-pretty-print">
+pm &lt;command>
+</pre>
+
+<p>You can also issue a package manager command directly from adb
+without entering a remote shell. For example:</p>
+<pre class="no-pretty-print">
+adb shell pm uninstall com.example.MyApp
+</pre>
+
+<p class="table-caption"><strong>Table 3.</strong> Available package manager commands.</p>
+<table>
+<tr>
+ <th>Command</th>
+ <th>Description</th>
+</tr>
+
+<tr>
+<td><code>
+list packages [options] &lt;FILTER>
+</code></td>
+<td>Prints all packages, optionally only
+ those whose package name contains the text in {@code &lt;FILTER>}. <p>Options:
+<ul>
+ <li>{@code -f}: See their associated file.
+ <li>{@code -d}: Filter to only show disabled packages.
+ <li>{@code -e}: Filter to only show enabled packages.
+ <li>{@code -s}: Filter to only show system packages.
+ <li>{@code -3}: Filter to only show third party packages.
+ <li>{@code -i}: See the installer for the packages.
+ <li>{@code -u}: Also include uninstalled packages.
+ <li>{@code --user &lt;USER_ID>}: The user space to query.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+list permission-groups
+</code></td>
+<td>Prints all known permission groups.
+</td>
+</tr>
+
+<tr>
+<td><code>
+list permissions [options] &lt;GROUP>
+</code></td>
+<td>Prints all known permissions, optionally only
+ those in {@code &lt;GROUP>}. <p>Options:
+<ul>
+ <li>{@code -g}: Organize by group.
+ <li>{@code -f}: Print all information.
+ <li>{@code -s}: Short summary.
+ <li>{@code -d}: Only list dangerous permissions.
+ <li>{@code -u}: List only the permissions users will see.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+list instrumentation
+</code></td>
+<td>List all test packages. <p>Options:
+ <ul>
+ <li>{@code -f}: List the APK file for the test package.
+ <li>{@code &lt;TARGET_PACKAGE>}: List test packages for only this app.
+ </ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+list features
+</code></td>
+<td>Prints all features of the system.
+</td>
+</tr>
+
+<tr>
+<td><code>
+list libraries
+</code></td>
+<td>Prints all the libraries supported by the current device.
+</td>
+</tr>
+
+<tr>
+<td><code>
+list users
+</code></td>
+<td>Prints all users on the system.
+</td>
+</tr>
+
+<tr>
+<td><code>
+path &lt;PACKAGE>
+</code></td>
+<td>Print the path to the APK of the given {@code &lt;PACKAGE>}.
+</td>
+</tr>
+
+<tr>
+<td><code>
+install [options] &lt;PATH>
+</code></td>
+<td>Installs a package (specified by {@code &lt;PATH>}) to the system. <p>Options:
+ <ul>
+ <li>{@code -l}: Install the package with forward lock.
+ <li>{@code -r}: Reinstall an exisiting app, keeping its data.
+ <li>{@code -t}: Allow test APKs to be installed.
+ <li>{@code -i &lt;INSTALLER_PACKAGE_NAME>}: Specify the installer package name.
+ <li>{@code -s}: Install package on the shared mass storage (such as sdcard).
+ <li>{@code -f}: Install package on the internal system memory.
+ <li>{@code -d}: Allow version code downgrade.
+ </ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+uninstall [options] &lt;PACKAGE>
+</code></td>
+<td>Removes a package from the system. <p>Options:
+ <ul>
+ <li>{@code -k}: Keep the data and cache directories around after package removal.
+ </ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+clear &lt;PACKAGE>
+</code></td>
+<td>Deletes all data associated with a package.
+</td>
+</tr>
+
+<tr>
+<td><code>
+enable &lt;PACKAGE_OR_COMPONENT>
+</code></td>
+<td>Enable the given package or component (written as "package/class").
+</td>
+</tr>
+
+<tr>
+<td><code>
+disable &lt;PACKAGE_OR_COMPONENT>
+</code></td>
+<td>Disable the given package or component (written as "package/class").
+</td>
+</tr>
+
+<tr>
+<td style="white-space:nowrap"><code>
+disable-user [options] &lt;PACKAGE_OR_COMPONENT>
+</code></td>
+<td><p>Options:
+ <ul>
+ <li>{@code --user &lt;USER_ID>}: The user to disable.
+ </ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+grant &lt;PACKAGE_PERMISSION>
+</code></td>
+<td>Grant permissions
+ to applications. Only optional permissions the application has
+ declared can be granted.
+</td>
+</tr>
+
+<tr>
+<td><code>
+revoke &lt;PACKAGE_PERMISSION>
+</code></td>
+<td>Revoke permissions
+ to applications. Only optional permissions the application has
+ declared can be revoked.
+</td>
+</tr>
+
+<tr>
+<td><code>
+set-install-location &lt;LOCATION>
+</code></td>
+<td>Changes the default install location. Location values:
+<ul>
+ <li>{@code 0}: Auto&mdash;Let system decide the best location.
+ <li>{@code 1}: Internal&mdash;install on internal device storage.
+ <li>{@code 2}: External&mdash;install on external media.
+</ul>
+<p class="note"><strong>Note:</strong> This is only intended for debugging; using this can cause
+ applications to break and other undesireable behavior.</p>
+</td>
+</tr>
+
+<tr>
+<td><code>
+get-install-location
+</code></td>
+<td>Returns the current install location. Return values:
+<ul>
+ <li>{@code 0 [auto]}: Lets system decide the best location
+ <li>{@code 1 [internal]}: Installs on internal device storage
+ <li>{@code 2 [external]}: Installs on external media
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+set-permission-enforced &lt;PERMISSION> [true|false]
+</code></td>
+<td>Specifies whether the given permission should be enforced.
+</td>
+</tr>
+
+<tr>
+<td><code>
+trim-caches &lt;DESIRED_FREE_SPACE>
+</code></td>
+<td>Trim cache files to reach the given free space.
+</td>
+</tr>
+
+<tr>
+<td><code>
+create-user &lt;USER_NAME>
+</code></td>
+<td>Create a new user with the given {@code &lt;USER_NAME>},
+ printing the new user identifier of the user.
+</td>
+</tr>
+
+<tr>
+<td><code>
+remove-user &lt;USER_ID>
+</code></td>
+<td>Remove the user with the given {@code &lt;USER_IDENTIFIER>},
+ deleting all data associated with that user
+</td>
+</tr>
+
+<tr>
+<td><code>
+get-max-users
+</code></td>
+<td>Prints the maximum number of users supported by the device.
+</td>
+</tr>
+
+</table>
+
+
+<h2 id="screencap">Taking a device screenshot</h2>
+
+<p>The {@code screencap} command is a shell utility for taking a screenshot of a device display.
+While in a shell, the syntax is:
+</p>
+
+<pre class="no-pretty-print">
+screencap &lt;filename>
+</pre>
+
+
+<p>To use the {@code screencap} from the command line, type the following:
+
+<pre>
+$ adb shell screencap /sdcard/screen.png
+</pre>
+
+<p>Here's an example screenshot session, using the adb shell to capture the screenshot and the
+{@code pull} command to download the file from the device:<p>
+
+<pre>
+$ adb shell
+shell@ $ screencap /sdcard/screen.png
+shell@ $ exit
+$ adb pull /sdcard/screen.png
+</pre>
+
+
+<h2 id="screenrecord">Recording a device screen</h2>
+
+<p>The {@code screenrecord} command is a shell utility for recording the display of devices
+ running Android 4.4 (API level 19) and higher. The utility records screen activity to an MPEG-4
+ file.</p>
+
+<p class="note"><strong>Note:</strong> Audio is not recorded with the video file.</p>
+
+<p>A developer can use this file to create promotional or training videos. While in a shell, the syntax is:</p>
+
+<pre class="no-pretty-print">
+screenrecord [options] &lt;filename>
+</pre>
+
+<p>To use {@code screenrecord} from the command line, type the following:
+
+<pre>
+$ adb shell screenrecord /sdcard/demo.mp4
+</pre>
+
+<p>Stop the screen recording by pressing Ctrl-C, otherwise the recording stops automatically
+at three minutes or the time limit set by {@code --time-limit}.</p>
+
+<p>To begin recording your device screen, run the {@code screenrecord} command to record
+the video. Then, run the {@code pull} command to download the video from the device to the host
+computer. Here's an example recording session:<p>
+
+<pre>
+$ adb shell
+shell@ $ screenrecord --verbose /sdcard/demo.mp4
+(press Ctrl-C to stop)
+shell@ $ exit
+$ adb pull /sdcard/demo.mp4
+</pre>
+
+<p>The {@code screenrecord} utility can record at any supported resolution and bit rate you
+ request, while retaining the aspect ratio of the device display. The utility records at the native
+ display resolution and orientation by default, with a maximum length of three minutes.</p>
+
+<p>There are some known limitations of the {@code screenrecord} utility that you should be aware
+ of when using it:</p>
+
+<ul>
+ <li>Some devices may not be able to record at their native display resolution.
+ If you encounter problems with screen recording, try using a lower screen resolution.</li>
+ <li>Rotation of the screen during recording is not supported. If the screen does rotate during
+ recording, some of the screen is cut off in the recording.</li>
+</ul>
+
+
+<p class="table-caption"><strong>Table 4.</strong> {@code screenrecord} options</p>
+
+<table>
+ <tr>
+ <th>Options</th>
+ <th>Description</th>
+ </tr>
+
+ <tr>
+ <td><code>--help</code>
+ </td>
+ <td>Displays command syntax and options</td>
+ </tr>
+
+ <tr>
+ <td style="white-space:nowrap">
+ <code>--size &lt;WIDTHxHEIGHT&gt;</code>
+ </td>
+ <td>Sets the video size: {@code 1280x720}. The default value is the device's native
+ display resolution (if supported), 1280x720 if not. For best results, use a size supported
+ by your device's Advanced Video Coding (AVC) encoder.</td>
+ </tr>
+
+ <tr>
+ <td><code>--bit-rate &lt;RATE&gt;</code></td>
+ <td>Sets the video bit rate for the video, in megabits per second. The default value is 4Mbps.
+ You can increase the bit rate to improve video quality, but doing so results in larger movie
+ files. The following example sets the recording bit rate to 6Mbps:
+ <pre>screenrecord --bit-rate 6000000 &#47;sdcard&#47;demo.mp4</pre>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>--time-limit &lt;TIME&gt;</code></td>
+ <td>Sets the maximum recording time, in seconds. The default and maximum value is 180
+ (3 minutes).</td>
+ </tr>
+
+ <tr>
+ <td><code>--rotate</code></td>
+ <td>Rotates the output 90 degrees. This feature is experimental.</td>
+ </tr>
+
+ <tr>
+ <td><code>--verbose</code></td>
+ <td>Displays log information on the command-line screen. If you do not set this option,
+ the utility does not display any information while running.</td>
+ </tr>
+
+</table>
+
+
+<h2 id="othershellcommands">Other shell commands</h2>
+
+<p>For a list of all the available shell programs, use the following command:</p>
+
+<pre class="no-pretty-print">adb shell ls /system/bin</pre>
+
+<p>Help is available for most of the commands. </p>
+
+<p>Table 5 lists some of the more common adb shell commands.</p>
+
+<p class="table-caption"><strong>Table 5.</strong> Some other adb shell commands</p>
+<table>
+<tr>
+ <th>Shell Command</th>
+ <th>Description</th>
+ <th>Comments</th>
+</tr>
+
+<tr>
+<td><code>dumpsys</code></td>
+<td>Dumps system data to the screen.</td>
+<td rowspan=4">The <a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor Server</a>
+(DDMS) tool offers integrated debug environment that you may find easier to use.</td>
+</tr>
+
+<tr>
+<td><code>dumpstate</code></td>
+<td>Dumps state to a file.</td>
+</tr>
+
+<tr>
+<td><code>logcat&nbsp;[option]...&nbsp;[filter-spec]...</code></td>
+<td>Enables system and app logging and prints output to the screen. </td>
+</tr>
+
+<tr>
+<td><code>dmesg</code></td>
+<td>Prints kernel debugging messages to the screen. </td>
+</tr>
+
+<tr>
+<td><code>start</code></td>
+<td>Starts (restarts) an emulator/device instance.</td>
+<td>&nbsp;</td>
+</tr>
+
+<tr>
+<td><code>stop</code></td>
+<td>Stops execution of an emulator/device instance.</td>
+<td>&nbsp;</td>
+</tr>
+
+</table> \ No newline at end of file
diff --git a/docs/html/tools/sdk/tools-notes.jd b/docs/html/tools/sdk/tools-notes.jd
index 326fbe2..934b262 100644
--- a/docs/html/tools/sdk/tools-notes.jd
+++ b/docs/html/tools/sdk/tools-notes.jd
@@ -25,6 +25,36 @@ href="http://tools.android.com/knownissues">http://tools.android.com/knownissues
<div class="toggle-content opened">
<p><a href="#" onclick="return toggleContent(this)">
<img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+ alt=""/>SDK Tools, Revision 24.3.3</a> <em>(June 2015)</em>
+ </p>
+
+ <div class="toggle-content-toggleme">
+
+ <dl>
+ <dt>Dependencies:</dt>
+
+ <dd>
+ <ul>
+ <li>Android SDK Platform-tools revision 19 or later.</li>
+ </ul>
+ </dd>
+
+ <dt>General Notes:</dt>
+ <dd>
+ <ul>
+ <li>Fixed issues with using Ant build tasks with the Eclipse ADT build structure. </li>
+ <li>Fixed the emulator boot problem on Mac OS X 10.8.5.</li>
+ </ul>
+ </dd>
+ </div>
+</div>
+
+
+
+
+<div class="toggle-content closed">
+ <p><a href="#" onclick="return toggleContent(this)">
+ <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
alt=""/>SDK Tools, Revision 24.3.2</a> <em>(June 2015)</em>
</p>
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
index 82515d4..a5e617d 100644
--- a/docs/html/tools/tools_toc.cs
+++ b/docs/html/tools/tools_toc.cs
@@ -151,7 +151,12 @@
<div class="nav-section-header"><a href="<?cs var:toroot ?>tools/help/index.html"><span
class="en">Tools Help</span></a></div>
<ul>
- <li><a href="<?cs var:toroot ?>tools/help/adb.html">adb</a></li>
+ <li class="nav-section">
+ <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/help/adb.html">adb</a></div>
+ <ul>
+ <li><a href="<?cs var:toroot ?>tools/help/shell.html">Shell commands</a></li>
+ </ul>
+ </li>
<li><a href="<?cs var:toroot ?>tools/help/android.html">android</a></li>
<li><a href="<?cs var:toroot ?>tools/help/avd-manager.html">AVD Manager</a></li>
<li><a href="<?cs var:toroot ?>tools/help/bmgr.html">bmgr</a>
@@ -168,6 +173,7 @@ class="en">Tools Help</span></a></div>
<li><a href="<?cs var:toroot ?>tools/help/mksdcard.html">mksdcard</a></li>
<li><a href="<?cs var:toroot ?>tools/help/proguard.html" zh-cn-lang="ProGuard">ProGuard</a></li>
<li><a href="<?cs var:toroot ?>tools/help/sdk-manager.html">SDK Manager</a></li>
+ <li><a href="<?cs var:toroot ?>tools/help/sqlite3.html">sqlite3</a></li>
<li><a href="<?cs var:toroot ?>tools/help/systrace.html">Systrace</a></li>
<li><a href="<?cs var:toroot ?>tools/help/gltracer.html">Tracer for OpenGL ES</a></li>
<li><a href="<?cs var:toroot ?>tools/help/traceview.html">Traceview</a></li>
diff --git a/docs/html/training/enterprise/app-compatibility.jd b/docs/html/training/enterprise/app-compatibility.jd
index 216a799..419ba89 100644
--- a/docs/html/training/enterprise/app-compatibility.jd
+++ b/docs/html/training/enterprise/app-compatibility.jd
@@ -250,14 +250,14 @@ href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> (adb) shell
support the <code>--user</code> flag, which lets you specify which user to run
as. By specifying a user, you can choose whether to run as the unmanaged or
managed profile. For
-more information, see <a href="{@docRoot}tools/help/adb.html#am">Android Debug
-Bridge: Using activity manager (am)</a>.</li>
+more information, see <a href="{@docRoot}tools/help/shell.html#am">ADB
+Shell Commands</a>.</li>
<li>To find the active users on a device, use the adb package manager's
<code>list users</code> command. The first number in the output string is the
user ID, which you can use with the <code>--user</code> flag. For more
-information, see <a href="{@docRoot}tools/help/adb.html#pm">Android Debug
-Bridge: Using package manager (pm)</a>.</li>
+information, see <a href="{@docRoot}tools/help/shell.html#pm">ADB Shell
+Commands</a>.</li>
</ul>
diff --git a/docs/html/training/training_toc.cs b/docs/html/training/training_toc.cs
index ccefe72..e1e6838 100644
--- a/docs/html/training/training_toc.cs
+++ b/docs/html/training/training_toc.cs
@@ -1023,8 +1023,8 @@ include the action bar on devices running Android 2.1 or higher."
<li class="nav-section">
<div class="nav-section-header">
<a href="<?cs var:toroot ?>training/tv/tif/index.html"
- description="How to build Live TV apps.">
- Building Live TV Apps</a>
+ description="How to build channels for TV.">
+ Building TV Channels</a>
</div>
<ul>
<li>
diff --git a/docs/html/training/tv/discovery/recommendations.jd b/docs/html/training/tv/discovery/recommendations.jd
index a74ee56..ffe33f2 100644
--- a/docs/html/training/tv/discovery/recommendations.jd
+++ b/docs/html/training/tv/discovery/recommendations.jd
@@ -10,6 +10,7 @@ trainingnavtop=true
<div id="tb">
<h2>This lesson teaches you to</h2>
<ol>
+ <li><a href="#best-practices">Best Practices for Recommendations</a></li>
<li><a href="#service">Create a Recommendations Service</a></li>
<li><a href="#build">Build Recommendations</a></li>
<li><a href="#run-service">Run Recommendations Service</a></li>
@@ -47,6 +48,46 @@ trainingnavtop=true
Leanback sample app</a>.
</p>
+<h2 id="best-practices">Best Practices for Recommendations</h2>
+
+<p>Recommendations help users quickly find the content and apps they enjoy. Creating
+recommendations that are high-quality and relevant to users is an important factor in creating a
+great user experience with your TV app. For this reason, you should carefully consider what
+recommendations you present to the user and manage them closely.</p>
+
+<h3 id="types">Types of Recommendations</h3>
+
+<p>When you create recommendations, you should link users back to incomplete viewing activities or
+suggest activities that extend that to related content. Here are some specific type of
+recommendations you should consider:</p>
+
+<ul>
+<li><strong>Continuation content</strong> recommendations for the next episode for users to resume
+watching a series.</li>
+<li><strong>New content</strong> recommendations, such as for a new first-run episode, if the user
+finished watching another series.
+<li><strong>Related content</strong> recommendations based on the users historic viewing behavior.
+</ul>
+
+<p>For more information on how to design recommendation cards for the best user experience, see
+<a href="https://www.google.com/design/spec-tv/system-overview/recommendation-row.html#recommendation-row-types-of-recommendations"
+class="external-link">Recommendation Row</a> in the Android TV Design Spec.</p>
+
+<h3 id="refreshing">Refreshing Recommendations</h3>
+
+<p>When refreshing recommendations, don't just remove and repost them, because doing so causes
+the recommendations to appear at the end of the recommendations row. Once a content item, such as a
+movie, has been played, <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Removing">
+remove it</a> from the recommendations.</p>
+
+<h3 id="customization">Customizing Recommendations</h3>
+
+<p>You can customize recommendation cards to convey branding information, by setting user interface
+elements such as the card's foreground and background image, color, app icon, title, and subtitle.
+To learn more, see
+<a href="https://www.google.com/design/spec-tv/system-overview/recommendation-row.html#recommendation-row-card-customization"
+class="external-link">Recommendation Row</a> in the Android TV Design Spec.</p>
+
<h2 id="service">Create a Recommendations Service</h2>
@@ -116,8 +157,8 @@ public class UpdateRecommendationsService extends IntentService {
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(DetailsActivity.class);
stackBuilder.addNextIntent(detailsIntent);
- // Ensure a unique PendingIntents, otherwise all recommendations end up with the same
- // PendingIntent
+ // Ensure a unique PendingIntents, otherwise all
+ // recommendations end up with the same PendingIntent
detailsIntent.setAction(Long.toString(movie.getId()));
PendingIntent intent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
@@ -143,19 +184,6 @@ public class UpdateRecommendationsService extends IntentService {
&lt;/manifest&gt;
</pre>
-<h3 id="refreshing">Refreshing Recommendations</h3>
-
-<p>Base your recommendations on user behavior and data such as play lists, wish lists, and associated
-content. When refreshing recommendations, don't just remove and repost them, because doing so causes
-the recommendations to appear at the end of the recommendations row. Once a content item, such as a
-movie, has been played, <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Removing">
-remove it</a> from the recommendations.</p>
-
-<p>The order of an app's recommendations is preserved according to the order in which the app
-provides them. The framework interleaves app recommendations based on recommendation quality,
-as measured by user behavior. Better recommendations make an app's recommendations more likely
-to appear near the front of the list.</p>
-
<h2 id="build">Build Recommendations</h2>
<p>
diff --git a/docs/html/training/tv/discovery/searchable.jd b/docs/html/training/tv/discovery/searchable.jd
index 27a1c33..4ca7abb 100644
--- a/docs/html/training/tv/discovery/searchable.jd
+++ b/docs/html/training/tv/discovery/searchable.jd
@@ -90,7 +90,7 @@ more important columns are described below.</p>
<td>The production year of your content <strong>(required)</strong></td>
</tr><tr>
<td>{@code SUGGEST_COLUMN_DURATION}</td>
- <td>The duration in milliseconds of your media</td>
+ <td>The duration in milliseconds of your media <strong>(required)</strong></td>
</tr>
</table>
@@ -99,6 +99,7 @@ more important columns are described below.</p>
<li>{@link android.app.SearchManager#SUGGEST_COLUMN_TEXT_1}</li>
<li>{@link android.app.SearchManager#SUGGEST_COLUMN_CONTENT_TYPE}</li>
<li>{@link android.app.SearchManager#SUGGEST_COLUMN_PRODUCTION_YEAR}</li>
+ <li>{@link android.app.SearchManager#SUGGEST_COLUMN_DURATION}</li>
</ul>
<p>When the values of these columns for your content match the values for the same content from other
diff --git a/docs/html/training/tv/tif/index.jd b/docs/html/training/tv/tif/index.jd
index 5739294..92b6139 100644
--- a/docs/html/training/tv/tif/index.jd
+++ b/docs/html/training/tv/tif/index.jd
@@ -1,4 +1,4 @@
-page.title=Building Live TV Apps
+page.title=Building TV Channels
page.tags=tv, tif
helpoutsWidget=true
startpage=true
@@ -25,12 +25,17 @@ startpage=true
</div>
<p>
- Watching live television shows and other continuous, channel-based content is a big part of the
- TV experience. Android supports receiving and playback of live video content through the TV Input
- Framework in Android 5.0 (API level 21).
- This framework provides a unified method for receiving audio and video channel content
- from hardware sources, such as HDMI ports and built-in-tuners, and software sources, such as
- video streamed over the internet.
+Watching live TV shows and other continuous, channel-based content is a big part of the TV
+experience. Users are accustomed to selecting and watching shows on TV by channel browsing.
+To provide your users a similar experience, use the TV Input Framework to create channels for
+publishing video or music content so that your media appears alongside traditional TV channels in
+the programming guide.
+</p>
+<p>
+Android supports receiving and playback of live video content through the TV Input Framework in
+Android 5.0 (API level 21). This framework provides a unified method for receiving audio and video
+channel content from hardware sources, such as HDMI ports and built-in-tuners, and software
+sources, such as video streamed over the internet.
</p>
<p>
The framework enables developers to define live TV input sources by implementing a TV input
diff --git a/docs/html/training/wearables/apps/creating.jd b/docs/html/training/wearables/apps/creating.jd
index a8b5ec6..f1491e4 100644
--- a/docs/html/training/wearables/apps/creating.jd
+++ b/docs/html/training/wearables/apps/creating.jd
@@ -9,9 +9,9 @@ helpoutsWidget=true
<h2>This lesson teaches you to</h2>
<ol>
<li><a href="#UpdateSDK">Update Your SDK</a></li>
- <li><a href="#SetupEmulator">Set Up an Android Wear Emulator</a></li>
- <li><a href="#SetupDevice">Set Up an Android Wear Device</a></li>
+ <li><a href="#SetupEmulator">Set Up an Android Wear Emulator or Device</a></li>
<li><a href="#CreateProject">Create a Project</a></li>
+ <li><a href="#Install">Install the Wearable App</a></li>
<li><a href="#Libraries">Include the Correct Libraries</a></li>
</ol>
</div>
@@ -112,18 +112,20 @@ types of screen shapes, which is useful for testing.</p>
<li>Tap <strong>ADB Debugging</strong> to enable adb.</li>
</ol>
<li>Connect the wearable to your machine through USB, so you can install apps directly to it
- as you develop. A message appears on both the wearable and the Android Wear app prompting you to allow debugging.</li>
- <p class="note"><strong>Note:</strong> If you can not connect your wearable to your machine via USB,
- follow the directions on
- <a href="{@docRoot}training/wearables/apps/bt-debugging.html">Debugging over
- Bluetooth</a>.
+ as you develop. A message appears on both the wearable and the Android Wear app prompting you to
+ allow debugging.</li>
+
+ <p class="note"><strong>Note:</strong> If you can not connect your wearable
+ to your machine via USB, you can try
+ <a href="{@docRoot}training/wearables/apps/bt-debugging.html">connecting over Bluetooth</a>.
</p>
+
<li>On the Android Wear app, check <strong>Always allow from this computer</strong> and tap
<strong>OK</strong>.</li>
</ol>
-<p>The <strong>Android</strong> tool window on Android Studio shows the system log from the wearable.
-The wearable should also be listed when you run the <code>adb devices</code> command.</p>
+<p>The <i>Android</i> tool window on Android Studio shows the system log from the
+wearable. The wearable should also be listed when you run the <code>adb devices</code> command.</p>
<h2 id="CreateProject">Create a Project</h2>
@@ -147,18 +149,23 @@ Project</a>. As you follow the wizard, enter the following information:</p>
<li>In the first <b>Add an Activity</b> window, add a blank activity for mobile.</li>
<li>In the second <b>Add an Activity</b> window, add a blank activity for Wear.</li>
</ol>
- <p>When the wizard completes, Android Studio creates a new project with two modules, <b>mobile</b> and
- <b>wear</b>. You now have a project for both your handheld and wearable apps that you can create activities,
- services, custom layouts, and much more in. On the handheld app, you do most of the heavy lifting,
- such as network communications, intensive processing, or tasks that require long
- amounts of user interaction. When these are done,
- you usually notify the wearable of the results through notifications or by syncing and sending
- data to the wearable.</p>
-
- <p class="note"><b>Note:</b> The <b>wear</b> module also contains a "Hello World" activity that uses a
- <code>WatchViewStub</code> that inflates a layout based on whether the device's screen
- is round or square. The <code>WatchViewStub</code> class is one of the UI widgets that's provided
- by the <a href="{@docRoot}training/wearables/apps/layouts.html#UiLibrary">wearable support library</a>.</p>
+ <p>When the wizard completes, Android Studio creates a new project with two modules, <b>mobile</b>
+ and <b>wear</b>. You now have a project for both your handheld and wearable apps for which you can
+ create activities, services, and custom layouts. The handheld app does most of
+ the heavy lifting, such as network communications, intensive processing, or tasks that require
+ long amounts of user interaction. When the app completes these operations, your app should
+ notify the wearable of the results through notifications or by syncing and sending data to
+ the wearable.</p>
+
+ <p class="note"><b>Note:</b> The <b>wear</b> module also contains a "Hello World" activity that
+ uses a
+ <a href="{@docRoot}reference/android/support/wearable/view/WatchViewStub.html"><code>WatchViewStub</code></a>.
+ This class inflates a layout based on whether the device's screen is round or square. The
+ <a href="{@docRoot}reference/android/support/wearable/view/WatchViewStub.html"><code>WatchViewStub</code></a>
+ class is one of the UI widgets that the
+ <a href="{@docRoot}training/wearables/apps/layouts.html#UiLibrary">wearable support library</a>
+ provides.
+ </p>
</li>
<h2 id="Install">Install the Wearable App</h2>
@@ -167,8 +174,8 @@ Project</a>. As you follow the wizard, enter the following information:</p>
either <code>adb install</code> or the <b>Play</b> button on Android Studio.</p>
<p>When you're ready to publish your app to users, you embed the wearable app inside of the
-handheld app. When users install the handheld app from Google Play, a connected wearable automatically
-receives the wearable app.</p>
+handheld app. When a user installs the handheld app from Google Play, a connected wearable
+automatically receives the wearable app.</p>
<p class="note"><b>Note:</b> The automatic installation of wearable apps
does not work when you are signing apps with a debug key and only works with release keys. See
@@ -184,7 +191,8 @@ wearable and prints out "Hello world!"
<p>As part of the Project Wizard, the correct
dependencies are imported for you in the appropriate module's <code>build.gradle</code> file.
-However, these dependencies are not required, so read the following descriptions to find out if you need them or not:</p>
+However, these dependencies are not required, so read the following descriptions to find out if you
+need them or not:</p>
<b>Notifications</b>
<p>The <a href="{@docRoot}tools/support-library/features.html#v4">Android
diff --git a/docs/html/training/wearables/apps/layouts.jd b/docs/html/training/wearables/apps/layouts.jd
index 1d0e49b..197b94b0c 100644
--- a/docs/html/training/wearables/apps/layouts.jd
+++ b/docs/html/training/wearables/apps/layouts.jd
@@ -10,7 +10,7 @@ helpoutsWidget=true
<h2>This lesson teaches you to</h2>
<ol>
<li><a href="#CustomNotifications">Create custom notifications</a></li>
- <li><a href="#UiLibrary">Create Layouts with the Wearable UI Library</li>
+ <li><a href="#UiLibrary">Create Layouts with the Wearable UI Library</a></li>
</ol>
<h2>You should also read</h2>
@@ -73,8 +73,8 @@ public void onCreate(Bundle bundle){
For example:
<pre>
Intent notificationIntent = new Intent(this, NotificationActivity.class);
-PendingIntent notificationPendingIntent = PendingIntent.getActivity(this, 0, notificationIntent,
- PendingIntent.FLAG_UPDATE_CURRENT);
+PendingIntent notificationPendingIntent = PendingIntent.getActivity(
+ this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
</pre>
</li>
<li>Build a {@link android.app.Notification} and call
@@ -110,35 +110,88 @@ dependencies {
<p>Here are some of the major classes in the Wearable UI Library:</p>
-<ul>
- <li><code>BoxInsetLayout</code> - A FrameLayout that's aware of screen shape and can box its
- children in the center square of a round screen.</li>
- <li><code>CardFragment</code> - A fragment that presents content within an expandable,
- vertically scrollable card.</li>
- <li><code>CircledImageView</code> - An image view surrounded by a circle.</li>
- <li><code>ConfirmationActivity</code> - An activity that displays confirmation animations after the user
- completes an action.</li>
- <li><code>CrossFadeDrawable</code> - A drawable that contains two child drawables and provides
- methods to directly adjust the blend between the two.</li>
- <li><code>DelayedConfirmationView</code> - A view that provides a circular countdown timer,
- typically used to automatically confirm an operation after a short delay has elapsed.</li>
- <li><code>DismissOverlayView</code> - A view for implementing long-press-to-dismiss.</li>
- <li><code>DotsPageIndicator</code> - A page indicator for GridViewPager that identifies the
- current page in relation to all available pages on the current row.</li>
- <li><code>GridViewPager</code> - A layout manager that allows the user to both vertically and
- horizontally through pages of data. You supply an implementation of a GridPagerAdapter to
- generate the pages that the view shows.</li>
- <li><code>GridPagerAdapter</code> - An adapter that supplies pages to a GridViewPager.</li>
- <li><code>FragmentGridPagerAdapter</code> - An implementation of GridPagerAdapter that
- represents each page as a fragment.</li>
- </li>
- <li><code>WatchViewStub</code> - A class that can inflate a specific layout,
- depending on the shape of the device's screen.</li>
- <li><code>WearableListView</code> - An alternative version of ListView that is optimized for
- ease of use on small screen wearable devices. It displays a vertically scrollable list of items,
- and automatically snaps to the nearest item when the user stops scrolling.
- </li>
-</ul>
+<dl>
+ <dt><a href="{@docRoot}reference/android/support/wearable/view/BoxInsetLayout.html"><code>BoxInsetLayout</code></a>
+ </dt>
+ <dd>A {@link android.widget.FrameLayout} object
+ that's aware of screen shape and can box its children in the center square of a round screen.
+ </dd>
+
+ <dt><a href="{@docRoot}reference/android/support/wearable/view/CardFragment.html"><code>CardFragment</code></a>
+ </dt>
+ <dd>A fragment that presents content within an expandable, vertically scrollable card.
+ </dd>
+
+ <dt><a href="{@docRoot}reference/android/support/wearable/view/CircledImageView.html"><code>CircledImageView</code></a>
+ </dt>
+ <dd>An image view surrounded by a circle.
+ </dd>
+
+ <dt><a href="{@docRoot}reference/android/support/wearable/activity/ConfirmationActivity.html"><code>ConfirmationActivity</code></a>
+ </dt>
+ <dd>An activity that displays confirmation animations after the user completes an action.
+ </dd>
+
+ <dt><a href="{@docRoot}reference/android/support/wearable/view/CrossfadeDrawable.html"><code>CrossFadeDrawable</code></a>
+ </dt>
+ <dd>A drawable that contains two child drawables and provides methods to directly adjust the blend
+ between the two.
+ </dd>
+
+ <dt><a href="{@docRoot}reference/android/support/wearable/view/DelayedConfirmationView.html"><code>DelayedConfirmationView</code></a>
+ </dt>
+ <dd>A view that provides a circular countdown timer, typically used to automatically confirm an
+ operation after a short delay has elapsed.
+ </dd>
+
+ <dt><a href="{@docRoot}reference/android/support/wearable/view/DismissOverlayView.html"><code>DismissOverlayView</code></a>
+ </dt>
+ <dd>A view for implementing long-press-to-dismiss.
+ </dd>
+
+ <dt><a href="{@docRoot}reference/android/support/wearable/view/GridViewPager.html"><code>GridViewPager</code></a>
+ </dt>
+ <dd>A layout manager that allows the user to navigate both vertically and
+ horizontally through pages of data. You supply an implementation of a
+ <a href="{@docRoot}reference/android/support/wearable/view/GridPagerAdapter.html"><code>GridPagerAdapter</code></a>
+ instance to generate the pages that the view shows.
+ </dd>
+
+ <dt><a href="{@docRoot}reference/android/support/wearable/view/GridPagerAdapter.html"><code>GridPagerAdapter</code></a>
+ </dt>
+ <dd>An adapter that supplies pages to a
+ <a href="{@docRoot}reference/android/support/wearable/view/GridViewPager.html"><code>GridViewPager</code></a>
+ object.
+ </dd>
+
+ <dt><a href="{@docRoot}reference/android/support/wearable/view/FragmentGridPagerAdapter.html"><code>FragmentGridPagerAdapter</code></a>
+ </dt>
+ <dd>An implementation of a
+ <a href="{@docRoot}reference/android/support/wearable/view/GridPagerAdapter.html"><code>GridPagerAdapter</code></a>
+ instance that represents each page as a fragment.
+ </dd>
+
+ <dt><a href="{@docRoot}reference/android/support/wearable/view/DotsPageIndicator.html"><code>DotsPageIndicator</code></a>
+ </dt>
+ <dd>A page indicator for a
+ <a href="{@docRoot}reference/android/support/wearable/view/GridViewPager.html"><code>GridViewPager</code></a>
+ implementation that identifies the current page in relation to all available pages on the current
+ row.
+ </dd>
+
+ <dt><a href="{@docRoot}reference/android/support/wearable/view/WatchViewStub.html"><code>WatchViewStub</code></a>
+ </dt>
+ <dd>A class that can inflate a specific layout, depending on the shape of the device's screen.
+ </dd>
+
+ <dt><a href="{@docRoot}reference/android/support/wearable/view/WearableListView.html"><code>WearableListView</code></a>
+ </dt>
+ <dd>An alternative version of a {@link android.widget.ListView}
+ object that is optimized for ease of use on small screen wearable devices. It displays a
+ vertically scrollable list of items, and automatically snaps to the nearest item when the user
+ stops scrolling.
+ </dd>
+</dl>
<h3 id="UiLibReference">Wear UI library API reference</h3>
diff --git a/docs/html/training/wearables/ui/2d-picker.jd b/docs/html/training/wearables/ui/2d-picker.jd
index 8f4d8af..68f98b7 100644
--- a/docs/html/training/wearables/ui/2d-picker.jd
+++ b/docs/html/training/wearables/ui/2d-picker.jd
@@ -9,6 +9,11 @@ page.title=Creating a 2D Picker
<li><a href="#add-page-grid">Add a Page Grid</a></li>
<li><a href="#implement-adapter">Implement a Page Adapter</a></li>
</ol>
+<h2>Related Samples</h2>
+<ul>
+ <li><a href="{@docRoot}samples/GridViewPager/index.html">
+ GridViewPager</a></li>
+</ul>
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}design/wear/index.html">Android Wear Design Principles</a></li>
@@ -21,18 +26,19 @@ Wear allows users to navigate and choose from a set of items shown as pages. The
Library lets you easily implement this pattern using a page grid, which is a layout manager
that allows users to scroll vertically and horizontally through pages of data.</p>
-<p>To implement this pattern, you add a <code>GridViewPager</code> element to the layout
-of your activity and implement an adapter that provides a set of pages by extending
-the <code>FragmentGridPagerAdapter</code> class.</p>
-
-<p class="note"><strong>Note:</strong> The <em>GridViewPager</em> sample in the Android SDK
-demonstrates how to use the <code>GridViewPager</code> layout in your apps. This sample is
-located in the <code>android-sdk/samples/android-20/wearable/GridViewPager</code> directory.</p>
+<p>To implement this pattern, you add a
+<a href="{@docRoot}reference/android/support/wearable/view/GridViewPager.html"><code>GridViewPager</code></a>
+element to the layout of your activity and implement an adapter that provides a set of pages by
+extending the
+<a href="{@docRoot}reference/android/support/wearable/view/FragmentGridPagerAdapter.html"><code>FragmentGridPagerAdapter</code></a>
+class.</p>
<h2 id="add-page-grid">Add a Page Grid</h2>
-<p>Add a <code>GridViewPager</code> element to your layout definition as follows:</p>
+<p>Add a
+<a href="{@docRoot}reference/android/support/wearable/view/GridViewPager.html"><code>GridViewPager</code></a>
+element to your layout definition as follows:</p>
<pre>
&lt;android.support.wearable.view.GridViewPager
@@ -49,18 +55,20 @@ your 2D picker works on both round and square devices.</p>
<h2 id="implement-adapter">Implement a Page Adapter</h2>
-<p>A page adapter provides a set of pages to populate a <code>GridViewPager</code> component. To
-implement this adapter, you extend the <code>FragmentGridPageAdapter</code> class from the
-Wearable UI Library</p>
+<p>A page adapter provides a set of pages to populate a
+<a href="{@docRoot}reference/android/support/wearable/view/GridViewPager.html"><code>GridViewPager</code></a>
+component. To implement this adapter, you extend the
+<a href="{@docRoot}reference/android/support/wearable/view/FragmentGridPagerAdapter.html"><code>FragmentGridPagerAdapter</code></a>
+class from the Wearable UI Library</p>
-<p>For example, the <em>GridViewPager</em> sample in the Android SDK contains
-the following adapter implementation that provides a set of static cards with custom background
+<p>The following snippet shows how to provide a set of static cards with custom background
images:</p>
<pre>
public class SampleGridPagerAdapter extends FragmentGridPagerAdapter {
private final Context mContext;
+ private List<Row> mRows;
public SampleGridPagerAdapter(Context ctx, FragmentManager fm) {
super(fm);
@@ -68,8 +76,8 @@ public class SampleGridPagerAdapter extends FragmentGridPagerAdapter {
}
static final int[] BG_IMAGES = new int[] {
- R.drawable.debug_background_1, ...
- R.drawable.debug_background_5
+ R.drawable.debug_background_1, ...
+ R.drawable.debug_background_5
};
// A simple container for static data in each page
@@ -89,8 +97,11 @@ public class SampleGridPagerAdapter extends FragmentGridPagerAdapter {
}
</pre>
-<p>The picker calls <code>getFragment</code> and <code>getBackground</code> to retrieve the content
-to display at each position of the grid:</p>
+<p>The adapter calls
+<a href="{@docRoot}reference/android/support/wearable/view/FragmentGridPagerAdapter.html#getFragment(int, int)"><code>getFragment()</code></a>
+and
+<a href="{@docRoot}reference/android/support/wearable/view/GridPagerAdapter.html#getBackgroundForRow(int)"><code>getBackgroundForRow()</code></a>
+to retrieve the content to display for each row:</p>
<pre>
// Obtain the UI fragment at the specified position
@@ -111,16 +122,39 @@ public Fragment getFragment(int row, int col) {
return fragment;
}
-// Obtain the background image for the page at the specified position
+// Obtain the background image for the row
+&#64;Override
+public Drawable getBackgroundForRow(int row) {
+ return mContext.getResources().getDrawable(
+ (BG_IMAGES[row % BG_IMAGES.length]), null);
+}
+
+</pre>
+
+<p>The following example shows how to retrieve the background to display for a specific page
+in the grid:
+</p>
+
+<pre>
+// Obtain the background image for the specific page
&#64;Override
-public ImageReference getBackground(int row, int column) {
- return ImageReference.forDrawable(BG_IMAGES[row % BG_IMAGES.length]);
+public Drawable getBackgroundForPage(int row, int column) {
+ if( row == 2 && column == 1) {
+ // Place image at specified position
+ return mContext.getResources().getDrawable(R.drawable.bugdroid_large, null);
+ } else {
+ // Default to background image for row
+ return GridPagerAdapter.BACKGROUND_NONE;
+ }
}
</pre>
-<p>The <code>getRowCount</code> method tells the picker how many rows of content are
-available, and the <code>getColumnCount</code> method tells the picker how many columns
-of content are available for each of the rows.</p>
+<p>The
+<a href="{@docRoot}reference/android/support/wearable/view/GridPagerAdapter.html#getRowCount()"><code>getRowCount()</code></a>
+method tells the adapter how many rows of content are
+available, and the
+<a href="{@docRoot}reference/android/support/wearable/view/GridPagerAdapter.html#getColumnCount(int)"><code>getColumnCount()</code></a>
+method tells the adapter how many columns of content are available for each of the rows.</p>
<pre>
// Obtain the number of pages (vertical)
@@ -137,10 +171,13 @@ public int getColumnCount(int rowNum) {
</pre>
<p>The adapter implementation details depend on your particular set of pages. Each page provided
-by the adapter is of type <code>Fragment</code>. In this example, each page is a
-<code>CardFragment</code> instance that uses one of the default card layouts. However, you can
-combine different types of pages in the same 2D picker, such as cards, action icons, and custom
-layouts depending on your use cases.</p>
+by the adapter is of type
+<a href="{@docRoot}reference/android/app/Fragment.html"><code>Fragment</code></a>.
+In this example, each page is a
+<a href="{@docRoot}reference/android/support/wearable/view/CardFragment.html"><code>CardFragment</code></a>
+instance that uses one of the default card layouts. However, you can combine different types of
+pages in the same 2D picker, such as cards, action icons, and custom layouts depending on your use
+cases.</p>
<div style="float:right;margin-left:25px;width:250px">
<img src="{@docRoot}wear/images/07_uilib.png" width="250" height="250" alt=""/>
@@ -149,24 +186,30 @@ The <em>GridViewPager</em> sample.</p>
</div>
<p>Not all rows need to have the same number of pages. Notice that in this example the number of
-colums is different for each row. You can also use a <code>GridViewPager</code> component to
-implement a 1D picker with only one row or only one column.</p>
+colums is different for each row. You can also use a
+<a href="{@docRoot}reference/android/support/wearable/view/GridViewPager.html"><code>GridViewPager</code></a>
+component to implement a 1D picker with only one row or only one column.</p>
-<p><code>GridViewPager</code> provides support for scrolling in cards whose content does not fit
+<p>The
+<a href="{@docRoot}reference/android/support/wearable/view/GridViewPager.html"><code>GridViewPager</code></a>
+class provides support for scrolling in cards whose content does not fit
the device screen. This example configures each card to expand as required, so users can scroll
through the card's content. When users reach the end of a scrollable card, a swipe in the same
direction shows the next page on the grid, if one is available.</p>
-<p>You can specify a custom background for each page with the <code>getBackground()</code> method.
-When users swipe to navigate across pages, <code>GridViewPager</code> applies parallax
-and crossfade effects between different backgrounds automatically.</p>
+<p>You can specify a custom background for each page with the
+<a href="{@docRoot}reference/android/support/wearable/view/GridPagerAdapter.html#getBackgroundForPage(int, int)"><code>getBackgroundForPage()</code></a>
+method. When users swipe to navigate across pages, the
+<a href="{@docRoot}reference/android/support/wearable/view/GridViewPager.html"><code>GridViewPager</code></a>
+class applies parallax and crossfade effects between different backgrounds automatically.</p>
<h3>Assign an adapter instance to the page grid</h3>
<p>In your activity, assign an instance of your adapter implementation to the
-<code>GridViewPager</code> component:</p>
+<a href="{@docRoot}reference/android/support/wearable/view/GridViewPager.html"><code>GridViewPager</code></a>
+component:</p>
-<pre>
+<pre style="clear:both">
public class MainActivity extends Activity {
&#64;Override
diff --git a/docs/html/training/wearables/ui/cards.jd b/docs/html/training/wearables/ui/cards.jd
index 21f7e5c..9ad87ad 100644
--- a/docs/html/training/wearables/ui/cards.jd
+++ b/docs/html/training/wearables/ui/cards.jd
@@ -21,16 +21,23 @@ page.title=Creating Cards
This lesson shows you how to create cards in your Android Wear apps.</p>
<p>The Wearable UI Library provides implementations of cards specifically designed for wearable
-devices. This library contains the <code>CardFrame</code> class, which wraps views inside
-a card-styled frame with a white background, rounded corners, and a light-drop shadow.
-<code>CardFrame</code> can only contain one direct child, usually a layout manager, to which
+devices. This library contains the
+<a href="{@docRoot}reference/android/support/wearable/view/CardFrame.html"><code>CardFrame</code></a>
+class, which wraps views inside a card-styled frame with a white background, rounded corners, and a
+light-drop shadow. A
+<a href="{@docRoot}reference/android/support/wearable/view/CardFrame.html"><code>CardFrame</code></a>
+instance can only contain one direct child, usually a layout manager, to which
you can add other views to customize the content inside the card.</p>
<p>You can add cards to your app in two ways:</p>
<ul>
- <li>Use or extend the <code>CardFragment</code> class.</li>
- <li>Add a card inside a <code>CardScrollView</code> in your layout.</li>
+ <li>Use or extend the
+ <a href="{@docRoot}reference/android/support/wearable/view/CardFragment.html"><code>CardFragment</code></a>
+ class.</li>
+ <li>Add a card inside a
+ <a href="{@docRoot}reference/android/support/wearable/view/CardScrollView.html"><code>CardScrollView</code></a>
+ instance in your layout.</li>
</ul>
<p class="note"><strong>Note:</strong> This lesson shows you how to add cards to Android Wear
@@ -41,22 +48,31 @@ Features to Notifications</a>.</p>
<h2 id="card-fragment">Create a Card Fragment</h2>
-<p>The <code>CardFragment</code> class provides a default card layout with a title, a
-description, and an icon. Use this approach to add cards to your app if the default card layout
-shown in figure 1 meets your needs.</p>
+<p>The
+<a href="{@docRoot}reference/android/support/wearable/view/CardFragment.html"><code>CardFragment</code></a>
+class provides a default card layout with a title, a description, and an icon. Use this approach to
+add cards to your app if the default card layout shown in figure 1 meets your needs.</p>
<img src="{@docRoot}wear/images/05_uilib.png" width="500" height="245" alt=""/>
-<p class="img-caption"><strong>Figure 1.</strong> The default <code>CardFragment</code> layout.</p>
+<p class="img-caption"><strong>Figure 1.</strong> The default
+<a href="{@docRoot}reference/android/support/wearable/view/CardFragment.html"><code>CardFragment</code></a>
+layout.</p>
-<p>To add a <code>CardFragment</code> to your app:</p>
+<p>To add a
+<a href="{@docRoot}reference/android/support/wearable/view/CardFragment.html"><code>CardFragment</code></a>
+instance to your app:</p>
<ol>
<li>In your layout, assign an ID to the element that contains the card</li>
-<li>Create a <code>CardFragment</code> instance in your activity</li>
-<li>Use the fragment manager to add the <code>CardFragment</code> instance to its container</li>
+<li>Create a
+<a href="{@docRoot}reference/android/support/wearable/view/CardFragment.html"><code>CardFragment</code></a>
+instance in your activity</li>
+<li>Use the fragment manager to add the
+<a href="{@docRoot}reference/android/support/wearable/view/CardFragment.html"><code>CardFragment</code></a>
+instance to its container</li>
</ol>
-<p>The following sample code shows the code for the screen display shown in Figure 1:</p>
+<p>The following sample code shows the code for the screen display shown in figure 1:</p>
<pre>
&lt;android.support.wearable.view.BoxInsetLayout
@@ -76,7 +92,9 @@ android:layout_width="match_parent">
&lt;/android.support.wearable.view.BoxInsetLayout>
</pre>
-<p>The following code adds the <code>CardFragment</code> instance to the activity in Figure 1:</p>
+<p>The following code adds the
+<a href="{@docRoot}reference/android/support/wearable/view/CardFragment.html"><code>CardFragment</code></a>
+instance to the activity in figure 1:</p>
<pre>
protected void onCreate(Bundle savedInstanceState) {
@@ -93,8 +111,11 @@ protected void onCreate(Bundle savedInstanceState) {
}
</pre>
-<p>To create a card with a custom layout using <code>CardFragment</code>, extend this class
-and override its <code>onCreateContentView</code> method.</p>
+<p>To create a card with a custom layout using the
+<a href="{@docRoot}reference/android/support/wearable/view/CardFragment.html"><code>CardFragment</code></a>
+class, extend the class and override its
+<a href="{@docRoot}reference/android/support/wearable/view/CardFragment.html#onCreateContentView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)"><code>onCreateContentView</code></a>
+method.</p>
<h2 id="card-layout">Add a CardFrame to Your Layout</h2>
@@ -103,8 +124,9 @@ and override its <code>onCreateContentView</code> method.</p>
approach when you want to define a custom layout for the card inside a layout definition file.</p>
<img src="{@docRoot}wear/images/04_uilib.png" width="500" height="248" alt=""/>
-<p class="img-caption"><strong>Figure 2.</strong> Adding a <code>CardFrame</code> to your
-layout.</p>
+<p class="img-caption"><strong>Figure 2.</strong> Adding a
+<a href="{@docRoot}reference/android/support/wearable/view/CardFrame.html"><code>CardFrame</code></a>
+to your layout.</p>
<p>The following layout code sample demonstrates a vertical linear layout with two elements. You
can create more complex layouts to fit the needs of your app.</p>
@@ -152,7 +174,9 @@ android:layout_width="match_parent">
&lt;/android.support.wearable.view.BoxInsetLayout>
</pre>
-<p>The <code>CardScrollView</code> element in the example layout above lets you assign gravity to
+<p>The
+<a href="{@docRoot}reference/android/support/wearable/view/CardScrollView.html><code>&lt;CardScrollView&gt;</code></a>
+element in the example layout above lets you assign gravity to
the card when its content is smaller than the container. This example aligns the card to the
bottom of the screen:</p>
@@ -168,8 +192,13 @@ protected void onCreate(Bundle savedInstanceState) {
}
</pre>
-<p><code>CardScrollView</code> detects the shape of the screen and displays the card differently
+<p>The
+<a href="{@docRoot}reference/android/support/wearable/view/CardScrollView.html"><code>&lt;CardScrollView&gt;</code></a>
+element detects the shape of the screen and displays the card differently
on round and square devices, using wider side margins on round screens. However,
-placing the <code>CardScrollView</code> element inside a <code>BoxInsetLayout</code> and using the
-<code>layout_box="bottom"</code> attribute is useful to align the card to the bottom of round
-screens without cropping its content.</p>
+placing the
+<a href="{@docRoot}reference/android/supprot/wearable/view/CardScrollView.html"><code>&lt;CardScrollView&gt;</code></a>
+element inside a
+<a href="{@docRoot}reference/android/support/wearable/view/BoxInsetLayout.html"><code>&lt;BoxInsetLayout&gt;</code></a>
+and using the <code>layout_box="bottom"</code> attribute is useful to align the card to the bottom
+of round screens without cropping its content.</p>
diff --git a/docs/html/training/wearables/ui/confirm.jd b/docs/html/training/wearables/ui/confirm.jd
index 07a352f..1f33085 100644
--- a/docs/html/training/wearables/ui/confirm.jd
+++ b/docs/html/training/wearables/ui/confirm.jd
@@ -52,12 +52,18 @@ gets notified if the user cancels the action and when the timer expires.</p>
<p>To show a confirmation timer when users complete an action in your app:</p>
<ol>
-<li>Add a <code>DelayedConfirmationView</code> element to your layout.</li>
-<li>Implement the <code>DelayedConfirmationListener</code> interface in your activity.</li>
+<li>Add a
+<a href="{@docRoot}reference/android/support/wearable/view/DelayedConfirmationView.html"><code>&lt;DelayedConfirmationView&gt;</code></a>
+element to your layout.</li>
+<li>Implement the
+<a href="{@docRoot}reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html"><code>DelayedConfirmationListener</code></a>
+interface in your activity.</li>
<li>Set the duration of the timer and start it when the user completes an action.</li>
</ol>
-<p>Add the <code>DelayedConfirmationView</code> element to your layout as follows:</p>
+<p>Add the
+<a href="{@docRoot}reference/android/support/wearable/view/DelayedConfirmationView.html"><code>&lt;DelayedConfirmationView&gt;</code></a>
+element to your layout as follows:</p>
<pre>
&lt;android.support.wearable.view.DelayedConfirmationView
@@ -125,19 +131,24 @@ A confirmation animation.</p>
<h2 id="show-confirmation">Show Confirmation Animations</h2>
<p>To show a confirmation animation when users complete an action in your app, create an intent
-that starts <code>ConfirmationActivity</code> from one of your activities. You can specify
-one of the these animations with the <code>EXTRA_ANIMATION_TYPE</code> intent extra:</p>
+that starts
+<a href="{@docRoot}reference/android/support/wearable/activity/ConfirmationActivity.html"><code>ConfirmationActivity</code></a>
+from one of your activities. You can specify
+one of the these animations with the
+<a href="{@docRoot}reference/android/support/wearable/activity/ConfirmationActivity.html#EXTRA_ANIMATION_TYPE"><code>EXTRA_ANIMATION_TYPE</code></a>
+intent extra:</p>
<ul>
-<li><code>SUCCESS_ANIMATION</code></li>
-<li><code>FAILURE_ANIMATION</code></li>
-<li><code>OPEN_ON_PHONE_ANIMATION</code></li>
+<li><a href="{@docRoot}reference/android/support/wearable/activity/ConfirmationActivity.html#SUCCESS_ANIMATION"><code>SUCCESS_ANIMATION</code></a></li>
+<li><a href="{@docRoot}reference/android/support/wearable/activity/ConfirmationActivity.html#FAILURE_ANIMATION"><code>FAILURE_ANIMATION</code></a></li>
+<li><a href="{@docRoot}reference/android/support/wearable/activity/ConfirmationActivity.html#OPEN_ON_PHONE_ANIMATION"><code>OPEN_ON_PHONE_ANIMATION</code></a></li>
</ul>
<p>You can also add a message that appears under the confirmation icon.</p>
-<p>To use the <code>ConfirmationActivity</code> in your app, first declare this activity in your
-manifest file:</p>
+<p>To use the
+<a href="{@docRoot}reference/android/support/wearable/activity/ConfirmationActivity.html"><code>ConfirmationActivity</code></a>
+in your app, first declare this activity in your manifest file:</p>
<pre>
&lt;manifest>
@@ -161,5 +172,6 @@ intent.putExtra(ConfirmationActivity.EXTRA_MESSAGE,
startActivity(intent);
</pre>
-<p>After showing the confirmation animation, <code>ConfirmationActivity</code> finishes and your
-activity resumes.</p>
+<p>After showing the confirmation animation,
+<a href="{@docRoot}reference/android/support/wearable/activity/ConfirmationActivity.html"><code>ConfirmationActivity</code></a>
+finishes and your activity resumes.</p>
diff --git a/docs/html/training/wearables/ui/exit.jd b/docs/html/training/wearables/ui/exit.jd
index 84e1e45..9c55673 100644
--- a/docs/html/training/wearables/ui/exit.jd
+++ b/docs/html/training/wearables/ui/exit.jd
@@ -24,9 +24,9 @@ content and then swipe again from left to right to exit the app.</p>
<p>For more immersive experiences, like an app that can scroll a map in any direction, you can
disable the swipe to exit gesture in your app. However, if you disable it, you must implement
the long-press-to-dismiss UI pattern to let users exit your app using the
-<code>DismissOverlayView</code> class from the Wearable UI Library.
-You must also inform your users the first time they run your app that they can exit using
-a long press.</p>
+<a href="{@docRoot}reference/android/support/wearable/view/DismissOverlayView.html"><code>DismissOverlayView</code></a>
+class from the Wearable UI Library. You must also inform your users the first time they run your app
+that they can exit using a long press.</p>
<p>For design guidelines about exiting Android Wear activities, see
<a href="{@docRoot}design/wear/structure.html#Custom">Breaking out of the card</a>.</p>
@@ -51,9 +51,14 @@ exit your app, as described in the next section.</p>
<h2 id="long-press">Implement the Long Press to Dismiss Pattern</h2>
-<p>To use the <code>DissmissOverlayView</code> class in your activity, add this element to
-your layout definition such that it covers the whole screen and is placed above all other views.
-For example:</p>
+<p>To use the
+<a href="{@docRoot}reference/android/support/wearable/view/DismissOverlayView.html"><code>DismissOverlayView</code></a>
+class in your activity, add this element to your layout definition such that it covers the whole
+screen and is placed above all other views.</p>
+
+<p>The following example shows how to add the
+<a href="{@docRoot}reference/android/support/wearable/view/DismissOverlayView.html"><code>&lt;DismissOverlayView&gt;</code></a>
+element:</p>
<pre>
&lt;FrameLayout
@@ -70,10 +75,12 @@ For example:</p>
&lt;FrameLayout>
</pre>
-<p>In your activity, obtain the <code>DismissOverlayView</code> element and set some introductory
-text. This text is shown to users the first time they run your app to inform them that they
-can exit the app using a long press gesture. Then use a <code>GestureDetector</code> to detect
-a long press:</p>
+<p>In your activity, obtain the
+<a href="{@docRoot}reference/android/support/wearable/view/DismissOverlayView.html"><code>&lt;DismissOverlayView&gt;</code></a>
+element and set some introductory text. This text is shown to users the first time they run your app
+to inform them that they can exit the app using a long press gesture. Then use a
+<a href="{@docRoot}reference/android/view/GestureDetector.html"><code>GestureDetector</code></a>
+to detect a long press:</p>
<pre>
public class WearActivity extends Activity {
@@ -106,5 +113,7 @@ public class WearActivity extends Activity {
}
</pre>
-<p>When the system detects a long press gesture, <code>DismissOverlayView</code> shows an
-<strong>Exit</strong> button, which terminates your activity if the user presses it.</p> \ No newline at end of file
+<p>When the system detects a long press gesture, the
+<a href="{@docRoot}reference/android/support/wearable/view/DismissOverlayView.html"><code>&lt;DismissOverlayView&gt;</code></a>
+element shows an <strong>Exit</strong> button, which terminates your activity if the user presses
+it.</p> \ No newline at end of file
diff --git a/docs/html/training/wearables/ui/layouts.jd b/docs/html/training/wearables/ui/layouts.jd
index 0eb1395..f1f18f3 100644
--- a/docs/html/training/wearables/ui/layouts.jd
+++ b/docs/html/training/wearables/ui/layouts.jd
@@ -94,14 +94,18 @@ API reference documentation</a> for the Wearable UI Library classes.</p>
<h2 id="different-layouts">Specify Different Layouts for Square and Round Screens</h2>
-<p>The <code>WatchViewStub</code> class included in the Wearable UI Library lets you specify
-different layout definitions for square and round screens. This class detects the screen shape
-at runtime and inflates the corresponding layout.</p>
+<p>The
+<a href="{@docRoot}reference/android/support/wearable/view/WatchViewStub.html"><code>WatchViewStub</code></a>
+class included in the Wearable UI Library lets you specify different layout definitions for square
+and round screens. This class detects the screen shape at runtime and inflates the corresponding
+layout.</p>
<p>To use this class for handling different screen shapes in your app:</p>
<ol>
-<li>Add <code>WatchViewStub</code> as the main element of your activity's layout.</li>
+<li>Add
+<a href="{@docRoot}reference/android/support/wearable/view/WatchViewStub.html"><code>WatchViewStub</code></a>
+as the main element of your activity's layout.</li>
<li>Specify a layout definition file for square screens with the <code>rectLayout</code>
attribute.</li>
<li>Specify a layout definition file for round screens with the <code>roundLayout</code>
@@ -142,7 +146,8 @@ The system inflates the correct layout at runtime depending on the screen shape.
<h3>Accessing layout views</h3>
<p>The layouts that you specify for square or round screens are not inflated until
-<code>WatchViewStub</code> detects the shape of the screen, so your app cannot access their views
+<a href="{@docRoot}reference/android/support/wearable/view/WatchViewStub.html"><code>WatchViewStub</code></a>
+detects the shape of the screen, so your app cannot access their views
immediately. To access these views, set a listener in your activity to be notified when
the shape-specific layout has been inflated:</p>
@@ -171,14 +176,18 @@ protected void onCreate(Bundle savedInstanceState) {
<p class="img-caption"><strong>Figure 2.</strong> Window insets on a round screen.</p>
</div>
-<p>The <code>BoxInsetLayout</code> class included in the Wearable UI Library extends
+<p>The
+<a href="{@docRoot}reference/android/support/wearable/view/BoxInsetLayout.html"><code>BoxInsetLayout</code></a>
+class included in the Wearable UI Library extends
{@link android.widget.FrameLayout} and lets you define a single layout that works for both square
and round screens. This class applies the required window insets depending on the screen shape
and lets you easily align views on the center or near the edges of the screen.</p>
-<p>The gray square in figure 2 shows the area where <code>BoxInsetLayout</code> can automatically
-place its child views on round screens after applying the required window insets. To be displayed
-inside this area, children views specify the <code>layout_box</code> atribute with these values:
+<p>The gray square in figure 2 shows the area where
+<a href="{@docRoot}reference/android/support/wearable/view/BoxInsetLayout.html"><code>BoxInsetLayout</code></a>
+can automatically place its child views on round screens after applying the required window insets.
+To be displayed inside this area, children views specify the <code>layout_box</code> atribute with
+these values:
</p>
<ul>
@@ -196,8 +205,9 @@ ignored.</p>
<p class="img-caption"><strong>Figure 3.</strong> A layout definition that works on both
square and round screens.</p>
-<p>The layout shown in figure 3 uses <code>BoxInsetLayout</code> and works on square and
-round screens:</p>
+<p>The layout shown in figure 3 uses the
+<a href="{@docRoot}reference/android/support/wearable/view/BoxInsetLayout.html"><code>&lt;BoxInsetLayout&gt;</code></a>
+element and works on square and round screens:</p>
<pre>
&lt;<strong>android.support.wearable.view.BoxInsetLayout</strong>
@@ -243,19 +253,21 @@ round screens:</p>
<ul>
<li>
<p><code>android:padding="15dp"</code></p>
- <p>This line assigns padding to the <code>BoxInsetLayout</code> element. Because the window
- insets on round devices are larger than 15dp, this padding only applies to square screens.</p>
+ <p>This line assigns padding to the
+ <a href="{@docRoot}reference/android/support/wearable/view/BoxInsetLayout.html"><code>&lt;BoxInsetLayout&gt;</code></a>
+ element. Because the window insets on round devices are larger than 15dp, this padding only
+ applies to square screens.</p>
</li>
<li>
<p><code>android:padding="5dp"</code></p>
- <p>This line assigns padding to the inner <code>FrameLayout</code> element. This padding applies
- to both square and round screens. The total padding between the buttons and the window insets
- is 20 dp on square screens (15+5) and 5 dp on round screens.</p>
+ <p>This line assigns padding to the inner {@link android.widget.FrameLayout} element. This padding
+ applies to both square and round screens. The total padding between the buttons and the window
+ insets is 20 dp on square screens (15+5) and 5 dp on round screens.</p>
</li>
<li>
<p><code>app:layout_box="all"</code></p>
- <p>This line ensures that the <code>FrameLayout</code> element and its children are boxed inside
- the area defined by the window insets on round screens. This line has no effect on square
- screens.</p>
+ <p>This line ensures that the {@link android.widget.FrameLayout} element and its children are
+ boxed inside the area defined by the window insets on round screens. This line has no effect on
+ square screens.</p>
</li>
</ul> \ No newline at end of file
diff --git a/docs/html/training/wearables/ui/lists.jd b/docs/html/training/wearables/ui/lists.jd
index 20f8bbd..0972a77 100644
--- a/docs/html/training/wearables/ui/lists.jd
+++ b/docs/html/training/wearables/ui/lists.jd
@@ -12,6 +12,11 @@ page.title=Creating Lists
<li><a href="#adapter">Create an Adapter to Populate the List</a></li>
<li><a href="#adapter-listener">Associate the Adapter and Set a Click Listener</a></li>
</ol>
+<h2>Related Samples</h2>
+<ul>
+ <li><a href="{@docRoot}samples/Notifications/index.html">
+ Notifications</a></li>
+</ul>
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}design/wear/index.html">Android Wear Design Principles</a></li>
@@ -23,35 +28,36 @@ page.title=Creating Lists
<p>Lists let users select an item from a set of choices easily on wearable devices. This lesson
shows you how to create lists in your Android Wear apps.</p>
-<p>The Wearable UI Library includes the <code>WearableListView</code> class, which is a list
-implementation optimized for wearable devices..</p>
-
-<p class="note"><strong>Note:</strong> The <em>Notifications</em> sample in the Android SDK
-demonstrates how to use <code>WearableListView</code> in your apps. This sample is located in
-the <code>android-sdk/samples/android-20/wearable/Notifications</code> directory.</p>
+<p>The Wearable UI Library includes the
+<a href="{@docRoot}reference/android/support/wearable/view/WearableListView.html"><code>WearableListView</code></a>
+class, which is a list implementation optimized for wearable devices.</p>
<p>To create a list in your Android Wear apps:</p>
<ol>
-<li>Add a <code>WearableListView</code> element to your activity's layout definition.</li>
+<li>Add a
+<a href="{@docRoot}reference/android/support/wearable/view/WearableListView.html"><code>WearableListView</code></a>
+element to your activity's layout definition.</li>
<li>Create a custom layout implementation for your list items.</li>
<li>Use this implementation to create a layout definition file for your list items.</li>
-<div style="float:right;margin-left:25px;width:220px;margin-top:-25px">
-<img src="{@docRoot}wear/images/06_uilib.png" width="200" height="200" alt=""/>
-<p class="img-caption" style="text-align:center;margin-left:-10px"><strong>Figure 3:</strong>
-A list view on Android Wear.</p>
-</div>
<li>Create an adapter to populate the list.</li>
-<li>Assign the adapter to the <code>WearableListView</code> element.</li>
+<li>Assign the adapter to the
+<a href="{@docRoot}reference/android/support/wearable/view/WearableListView.html"><code>WearableListView</code></a>
+element.</li>
</ol>
+<img src="{@docRoot}wear/images/06_uilib.png" width="200" height="200" alt=""/>
+<p class="img-caption"><strong>Figure 1.</strong>
+A list view on Android Wear.</p>
+
<p>These steps are described in detail in the following sections.</p>
<h2 id="add-list">Add a List View</h2>
-<p>The following layout adds a list view to an activity using a <code>BoxInsetLayout</code>, so
-the list is displayed properly on both round and square devices:</p>
+<p>The following layout adds a list view to an activity using a
+<a href="{@docRoot}reference/android/support/wearable/view/BoxInsetLayout.html"><code>&lt;BoxInsetLayout&gt;</code></a>
+element, so the list is displayed properly on both round and square devices:</p>
<pre>
&lt;android.support.wearable.view.BoxInsetLayout
@@ -80,12 +86,14 @@ the list is displayed properly on both round and square devices:</p>
<h2 id="layout-impl">Create a Layout Implementation for List Items</h2>
<p>In many cases, each list item consists of an icon and a description. The
-<em>Notifications</em> sample from the Android SDK implements a custom layout that extends
+<a href="{@docRoot}samples/Notifications/index.html">Notifications</a> sample implements a custom
+layout that extends
{@link android.widget.LinearLayout} to incorporate these two elements inside each list item.
This layout also implements the methods in the
-<code>WearableListView.OnCenterProximityListener</code> interface
-to change the color of the item's icon and fade the text in response to events from
-<code>WearableListView</code> as the user scrolls through the list.</p>
+<a href="{@docRoot}reference/android/support/wearable/view/WearableListView.OnCenterProximityListener.html"<code>WearableListView.OnCenterProximityListener</code></a>
+interface to change the color of the item's icon and fade the text in response to events from the
+<a href="{@docRoot}reference/android/support/wearable/view/WearableListView.html"><code>WearableListView</code></a>
+element as the user scrolls through the list.</p>
<pre>
public class WearableListItemLayout extends LinearLayout
@@ -141,9 +149,13 @@ public class WearableListItemLayout extends LinearLayout
</pre>
<p>You can also create animator objects to enlarge the icon of the center item in the list. You can
-use the <code>onCenterPosition()</code> and <code>onNonCenterPosition()</code> callback methods
-in the <code>WearableListView.OnCenterProximityListener</code> interface to manage your
-animators. For more information about animators, see
+use the
+<a href="{@docRoot}reference/android/support/wearable/view/WearableListView.OnCenterProximityListener.html#onCenterPosition(boolean)"><code>onCenterPosition()</code></a>
+and
+<a href="{@docRoot}reference/android/support/wearable/view/WearableListView.OnCenterProximityListener.html#onNonCenterPosition(boolean)"><code>onNonCenterPosition()</code></a>
+callback methods in the
+<a href="{@docRoot}reference/android/support/wearable/view/WearableListView.html"><code>WearableListView.OnCenterProximityListener</code></a>
+interface to manage your animators. For more information about animators, see
<a href="{@docRoot}guide/topics/graphics/prop-animation.html#object-animator">Animating with
ObjectAnimator</a>.</p>
@@ -185,7 +197,9 @@ and a text view whose IDs match those in the layout implementation class:</p>
<h2 id="adapter">Create an Adapter to Populate the List</h2>
-<p>The adapter populates the <code>WearableListView</code> with content. The following simple
+<p>The adapter populates the
+<a href="{@docRoot}reference/android/support/wearable/view/WearableListView.html"><code>WearableListView.OnCenterProximityListener</code></a>
+element with content. The following simple
adapter populates the list with elements based on an array of strings:</p>
<pre>
@@ -247,9 +261,10 @@ private static final class Adapter extends WearableListView.Adapter {
<h2 id="adapter-listener">Associate the Adapter and Set a Click Listener</h2>
-<p>In your activity, obtain a reference to the <code>WearableListView</code> element from
-your layout, assign an instance of the adapter to populate the list, and set a click listener
-to complete an action when the user selects a particular list item.</p>
+<p>In your activity, obtain a reference to the
+<a href="{@docRoot}reference/android/support/wearable/view/WearableListView.html"><code>WearableListView.OnCenterProximityListener</code></a>
+element from your layout, assign an instance of the adapter to populate the list, and set a click
+listener to complete an action when the user selects a particular list item.</p>
<pre>
public class WearActivity extends Activity
diff --git a/docs/html/training/wearables/watch-faces/configuration.jd b/docs/html/training/wearables/watch-faces/configuration.jd
index 5a4585d..4bd6943 100644
--- a/docs/html/training/wearables/watch-faces/configuration.jd
+++ b/docs/html/training/wearables/watch-faces/configuration.jd
@@ -10,6 +10,11 @@ page.title=Providing Configuration Activities
<li><a href="#WearableActivity">Create a Wearable Configuration Activity</a></li>
<li><a href="#CompanionActivity">Create a Companion Configuration Activity</a></li>
</ol>
+<h2>Related Samples</h2>
+<ul>
+<li><a href="{@docRoot}samples/WatchFace/index.html">
+WatchFace</a></li>
+</ul>
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}design/wear/watchfaces.html">Watch Faces for Android Wear</a></li>
@@ -34,10 +39,10 @@ an activity in the wearable app, an activity on the handheld app, or both. Users
wearable configuration activity on the wearable device, and they can start the companion
configuration activity from the Android Wear companion app.</p>
-<p>The digital watch face from the <em>WatchFace</em> sample in the Android SDK demonstrates how to
+<p>The digital watch face from the
+<a href="{@docRoot}samples/WatchFace/index.html">WatchFace</a> sample demonstrates how to
implement handheld and wearable configuration activities and how to update a watch face in
-response to configuration changes. This sample is located in the
-<code>android-sdk/samples/android-21/wearable/WatchFace</code> directory.</p>
+response to configuration changes.</p>
@@ -107,7 +112,8 @@ href="{@docRoot}training/wearables/data-layer/index.html">Wearable Data Layer AP
communicate the configuration change to the watch face activity.</p>
<p>For more details, see the <code>DigitalWatchFaceWearableConfigActivity</code> and
-<code>DigitalWatchFaceUtil</code> classes in the <em>WatchFace</em> sample.</p>
+<code>DigitalWatchFaceUtil</code> classes in the
+<a href="{@docRoot}samples/WatchFace/index.html">WatchFace</a> sample.</p>
@@ -141,17 +147,20 @@ href="{@docRoot}training/wearables/data-layer/index.html">Wearable Data Layer AP
communicate the configuration change to the watch face activity.</p>
<p>For more details, see the <code>DigitalWatchFaceCompanionConfigActivity</code> class in the
-<em>WatchFace</em> sample.</p>
+<a href="{@docRoot}samples/WatchFace/index.html">WatchFace</a> sample.</p>
<h2 id="Listener">Create a Listener Service in the Wearable App</h2>
<p>To receive updated configuration parameters from the configuration activities, create a
-service that implements the <code>WearableListenerService</code> interface from the <a
-href="{@docRoot}training/wearables/data-layer/index.html">Wearable Data Layer API</a> in your
+service that implements the
+<a href="//developers.google.com/android/reference/com/google/android/gms/wearable/WearableListenerService"><code>WearableListenerService</code></a>
+interface from the
+<a href="{@docRoot}training/wearables/data-layer/index.html">Wearable Data Layer API</a> in your
wearable app. Your watch face implementation can redraw the watch face when the configuration
parameters change.</p>
<p>For more details, see the <code>DigitalWatchFaceConfigListenerService</code> and
-<code>DigitalWatchFaceService</code> classes in the <em>WatchFace</em> sample.</p>
+<code>DigitalWatchFaceService</code> classes in the
+<a href="{@docRoot}samples/WatchFace/index.html">WatchFace</a> sample.</p>
diff --git a/docs/html/training/wearables/watch-faces/information.jd b/docs/html/training/wearables/watch-faces/information.jd
index 41319a1..ed0cc22 100644
--- a/docs/html/training/wearables/watch-faces/information.jd
+++ b/docs/html/training/wearables/watch-faces/information.jd
@@ -9,6 +9,11 @@ page.title=Showing Information in Watch Faces
<li><a href="#Experience">Create a Compelling Experience</a></li>
<li><a href="#AddData">Add Data to Your Watch Face</a></li>
</ol>
+<h2>Related Samples</h2>
+<ul>
+<li><a href="{@docRoot}samples/WatchFace/index.html">
+WatchFace</a></li>
+</ul>
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}design/wear/watchfaces.html">Watch Faces for Android Wear</a></li>
@@ -77,10 +82,11 @@ weather.</p>
<p class="img-caption"><strong>Figure 2.</strong> The calendar watch face.</p>
</div>
-<p>The <em>WatchFace</em> sample in the Android SDK demonstrates how to obtain calendar data
-from the user’s profile in the <code>CalendarWatchFaceService</code> class and shows how many
-meetings there are in the following twenty-four hours. This sample is located in the
-<code>android-sdk/samples/android-21/wearable/WatchFace</code> directory.</p>
+<p>The
+<a href="{@docRoot}samples/WatchFace/index.html">WatchFace</a>
+sample demonstrates how to obtain calendar data from the user’s profile in the
+<code>CalendarWatchFaceService</code> class and shows how many
+meetings there are in the following twenty-four hours.</p>
<p>To implement a watch face that incorporates contextual data, follow these steps:</p>
@@ -95,9 +101,10 @@ meetings there are in the following twenty-four hours. This sample is located in
<h3 id="Task">Provide a task to retrieve data</h3>
-<p>Create a class inside your <code>CanvasWatchFaceService.Engine</code> implementation that
-extends {@link android.os.AsyncTask} and add the code to retrieve the data you’re interested
-in.</p>
+<p>Create a class inside your
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html"><code>CanvasWatchFaceService.Engine</code></a>
+implementation that extends {@link android.os.AsyncTask} and add the code to retrieve the data
+you’re interested in.</p>
<p>The <code>CalendarWatchFaceService</code> class obtains the number of meetings in the next
day as follows:</p>
@@ -130,8 +137,10 @@ private class LoadMeetingsTask extends AsyncTask&lt;Void, Void, Integer> {
}
</pre>
-<p>The <code>WearableCalendarContract</code> class from the Wearable Support Library provides
-direct access to the user's calendar events from the companion device.</p>
+<p>The
+<a href="{@docRoot}reference/android/support/wearable/provider/WearableCalendarContract.html"><code>WearableCalendarContract</code></a>
+class from the Wearable Support Library provides direct access to the user's calendar events from
+the companion device.</p>
<p>When the task finishes retrieving data, your code invokes a callback method. The following
sections describe how to implement the callback method in detail.</p>
@@ -189,9 +198,12 @@ section.</p>
<h3 id="Redraw">Redraw your watch face with the updated data</h3>
-<p>When the task that retrieves your data finishes, call the <code>invalidate()</code> method
-so the system redraws your watch face. Store your data inside member variables of the
-<code>Engine</code> class so you can access it inside the <code>onDraw()</code> method.</p>
+<p>When the task that retrieves your data finishes, call the
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html#invalidate()"><code>invalidate()</code></a>
+method so the system redraws your watch face. Store your data inside member variables of the
+<code>Engine</code> class so you can access it inside the
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html#onDraw(android.graphics.Canvas, android.graphics.Rect)"><code>onDraw()</code></a>
+method.</p>
<p>The <code>CalendarWatchFaceService</code> class provides a callback method for the task to
invoke when it finishes retrieving calendar data:</p>
diff --git a/docs/html/training/wearables/watch-faces/issues.jd b/docs/html/training/wearables/watch-faces/issues.jd
index 47c5e8c..2b61724 100644
--- a/docs/html/training/wearables/watch-faces/issues.jd
+++ b/docs/html/training/wearables/watch-faces/issues.jd
@@ -31,8 +31,11 @@ should adapt to and take advantage of the particular shape of the screen, as des
<a href="{@docRoot}design/wear/watchfaces.html">design guidelines</a>.</p>
<p>Android Wear lets your watch face determine the screen shape at runtime. To detect whether
-the screen is square or round, override the <code>onApplyWindowInsets()</code> method in the
-<code>CanvasWatchFaceService.Engine</code> class as follows:</p>
+the screen is square or round, override the
+<a href="{@docRoot}reference/android/service/wallpaper/WallpaperService.Engine.html#onApplyWindowInsets(android.view.WindowInsets)"><code>onApplyWindowInsets()</code></a>
+method in the
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html"><code>CanvasWatchFaceService.Engine</code></a>
+class as follows:</p>
<pre>
private class Engine extends CanvasWatchFaceService.Engine {
@@ -75,7 +78,9 @@ the notification card is present.</p>
down the watch face to fit inside the portion of the screen not covered by the peek card. Digital
watch faces that display the time in the area of the screen not covered by peek cards do not
usually require adjustments. To determine the free space above the peek card so you can adapt
-your watch face, use the <code>WatchFaceService.getPeekCardPosition()</code> method.</p>
+your watch face, use the
+<a href="{@docRoot}reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getPeekCardPosition()"><code>WatchFaceService.Engine.getPeekCardPosition()</code></a>
+method.</p>
<p>In ambient mode, peek cards have a transparent background. If your watch face contains details
near the card in ambient mode, consider drawing a black rectangle over them to ensure that users
@@ -93,16 +98,21 @@ can read the contents of the card.</p>
</div>
<p>To ensure that the system indicators remain visible, you can configure their position on the
-screen and whether they need background protection when you create a <code>WatchFaceStyle</code>
+screen and whether they need background protection when you create a
+<a href="{@docRoot}reference/android/support/wearable/watchface/WatchFaceStyle.html"><code>WatchFaceStyle</code></a>
instance:</p>
<ul>
-<li>To set the position of the status bar, use the <code>setStatusBarGravity()</code> method.</li>
-<li>To set the position of the hotword, use the <code>setHotwordIndicatorGravity()</code>
+<li>To set the position of the status bar, use the
+<a href="{@docRoot}reference/android/support/wearable/watchface/WatchFaceStyle.Builder.html#setStatusBarGravity(int)"><code>setStatusBarGravity()</code></a>
+method.</li>
+<li>To set the position of the hotword, use the
+<a href="{@docRoot}reference/android/support/wearable/watchface/WatchFaceStyle.Builder.html#setHotwordIndicatorGravity(int)"><code>setHotwordIndicatorGravity()</code></a>
method.</li>
<li>To protect the status bar and hotword with a semi-transparent gray background, use the
-<code>setViewProtection()</code> method. This is usually necessary if your watch face has a
-light background, since the system indicators are white.</li>
+<a href="{@docRoot}reference/android/support/wearable/watchface/WatchFaceStyle.Builder.html#setViewProtection(int)"><code>setViewProtection()</code></a>
+method. This is usually necessary if your watch face has a light background, since the system
+indicators are white.</li>
</ul>
<p>For more information about the system indicators, see <a
diff --git a/docs/html/training/wearables/watch-faces/performance.jd b/docs/html/training/wearables/watch-faces/performance.jd
index 118bc6a..c2c411c 100644
--- a/docs/html/training/wearables/watch-faces/performance.jd
+++ b/docs/html/training/wearables/watch-faces/performance.jd
@@ -34,13 +34,15 @@ power on the device.</p>
<p>Many watch faces consist of a background image and other graphic assets that are transformed
and overlapped on top of the background image, such as clock hands and other elements of the design
that move over time. Typically these graphic elements are rotated (and sometimes scaled) inside the
-<code>Engine.onDraw()</code> method every time the system redraws the watch face, as described in
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html#onDraw(android.graphics.Canvas, android.graphics.Rect)"><code>Engine.onDraw()</code></a>
+method every time the system redraws the watch face, as described in
<a href="{@docRoot}training/wearables/watch-faces/drawing.html#Drawing">Draw Your Watch
Face</a>.</p>
<p>The larger these graphic assets are, the more computationally expensive it is to transform them.
-Transforming large graphic assets in the <code>Engine.onDraw()</code> method drastically reduces
-the frame rate at which the system can run your animations.</p>
+Transforming large graphic assets in the
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html#onDraw(android.graphics.Canvas, android.graphics.Rect)"><code>Engine.onDraw()</code></a>
+method drastically reduces the frame rate at which the system can run your animations.</p>
<div id="fig1" style="float:right;width:250px;margin-left:25px">
<img src="{@docRoot}training/wearables/watch-faces/images/ClockHandFull.png" alt=""
@@ -105,11 +107,14 @@ active, disable bitmap filtering.</p>
<h2 id="OutDrawing">Move Expensive Operations Outside the Drawing Method</h2>
-<p>The system calls the <code>Engine.onDraw()</code> method every time it redraws your watch
-face, so you should only include operations that are strictly required to update the watch
-face inside this method to improve performance.<p>
+<p>The system calls the
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html#onDraw(android.graphics.Canvas, android.graphics.Rect)"><code>Engine.onDraw()</code></a>
+method every time it redraws your watch face, so you should only include operations that are
+strictly required to update the watch face inside this method to improve performance.<p>
-<p>When possible, avoid performing these operations inside the <code>onDraw()</code> method:</p>
+<p>When possible, avoid performing these operations inside the
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html#onDraw(android.graphics.Canvas, android.graphics.Rect)"><code>Engine.onDraw()</code></a>
+method:</p>
<ul>
<li>Loading images and other resources.</li>
@@ -118,13 +123,17 @@ face inside this method to improve performance.<p>
<li>Performing computations whose result does not change between frames.</li>
</ul>
-<p>You can usually perform these operations in the <code>Engine.onCreate()</code> method instead.
+<p>You can usually perform these operations in the
+<a href="{@docRoot}reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onCreate(android.view.SurfaceHolder)"><code>Engine.onCreate()</code></a>
+method instead.
You can resize images ahead of time in the {@link
android.service.wallpaper.WallpaperService.Engine#onSurfaceChanged(android.view.SurfaceHolder, int, int, int)
Engine.onSurfaceChanged()} method, which provides you with the size of the canvas.</p>
<p>To analyze the performance of your watch face, use the Android Device Monitor. In particular,
-ensure that the execution time for your <code>Engine.onDraw()</code> implementation is short and
+ensure that the execution time for your
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html#onDraw(android.graphics.Canvas, android.graphics.Rect)"><code>Engine.onDraw()</code></a>
+implementation is short and
consistent across invocations. For more information, see
<a href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a>.</p>
diff --git a/docs/html/training/wearables/watch-faces/service.jd b/docs/html/training/wearables/watch-faces/service.jd
index 35366c5..578e8c0 100644
--- a/docs/html/training/wearables/watch-faces/service.jd
+++ b/docs/html/training/wearables/watch-faces/service.jd
@@ -10,6 +10,11 @@ page.title=Building a Watch Face Service
<li><a href="#CallbackMethods">Implement the Service Callback Methods</a></li>
<li><a href="#RegisterService">Register the Service Implementation</a></li>
</ol>
+<h2>Related Samples</h2>
+<ul>
+<li><a href="{@docRoot}samples/WatchFace/index.html">
+WatchFace</a></li>
+</ul>
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}design/wear/watchfaces.html">Watch Faces for Android Wear</a></li>
@@ -64,7 +69,9 @@ Project</a>.</p>
<h3 id="Dependencies">Dependencies</h3>
-<p>The Wearable Support Library provides the necessary classes that you extend to create watch
+<p>The
+<a href="{@docRoot}reference/android/support/wearable/watchface/package-summary.html">Wearable Support Library</a>
+provides the necessary classes that you extend to create watch
face implementations. The Google Play services client libraries (<code>play-services</code> and
<code>play-services-wearable</code>) are required to sync data items between the companion device
and the wearable with the <a href="{@docRoot}training/wearables/data-layer/index.html">Wearable
@@ -116,10 +123,15 @@ or when an important event occurs (like switching to ambient mode or receiving a
notification). The service implementation then draws the watch face on the screen using the
updated time and any other relevant data.</p>
-<p>To implement a watch face, you extend the <code>CanvasWatchFaceService</code>
-and <code>CanvasWatchFaceService.Engine</code> classes, and then you override the callback methods
-in the <code>CanvasWatchFaceService.Engine</code> class. These classes are included in the
-Wearable Support Library.</p>
+<p>To implement a watch face, you extend the
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.html"><code>CanvasWatchFaceService</code></a>
+and
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html"><code>CanvasWatchFaceService.Engine</code></a>
+classes, and then you override the callback methods in the
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html"><code>CanvasWatchFaceService.Engine</code></a>
+class. These classes are included in the
+<a href="{@docRoot}reference/android/support/wearable/watchface/package-summary.html">Wearable Support Library</a>.
+</p>
<p>The following snippet outlines the key methods you need to implement:</p>
@@ -173,20 +185,21 @@ public class AnalogWatchFaceService extends CanvasWatchFaceService {
}
</pre>
-<p class="note"><strong>Note:</strong> The <em>WatchFace</em> sample in the Android SDK
-demonstrates how to implement analog and digital watch faces extending the
-<code>CanvasWatchFaceService</code> class. This sample is located in the
-<code>android-sdk/samples/android-21/wearable/WatchFace</code> directory.</p>
-
-<p>The <code>CanvasWatchFaceService</code> class provides an invalidate mechanism similar to
+<p>The
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.html"><code>CanvasWatchFaceService</code></a>
+class provides an invalidate mechanism similar to
the {@link android.view.View#invalidate View.invalidate()} method. You can call the
-<code>invalidate()</code> method throughout your implementation when you want the system to
-redraw the watch face. You can only use the <code>invalidate()</code> method in the main UI
-thread. To invalidate the canvas from another thread, call the <code>postInvalidate()</code>
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html#invalidate()"><code>invalidate()</code></a>
+method throughout your implementation when
+you want the system to redraw the watch face. You can only use the
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html#invalidate()"><code>invalidate()</code></a>
+method in the main UI thread. To invalidate the canvas from another thread, call the
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html#postInvalidate()"><code>postInvalidate()</code></a>
method.</p>
<p>For more information about implementing the methods in the
-<code>CanvasWatchFaceService.Engine</code> class, see <a
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html"><code>CanvasWatchFaceService.Engine</code></a>
+class, see <a
href="{@docRoot}training/wearables/watch-faces/drawing.html">Drawing Watch Faces</a>.</p>
diff --git a/docs/html/tv/index.jd b/docs/html/tv/index.jd
index 7a0cdcc..73b3435 100644
--- a/docs/html/tv/index.jd
+++ b/docs/html/tv/index.jd
@@ -145,6 +145,36 @@ page.type=about
</div> <!-- end .wrap -->
</div> <!-- end .landing-section -->
+ <div class="landing-section" style="background-color:#f5f5f5" id="tv-games-channels">
+ <div class="wrap">
+ <div class="landing-section-header">
+ <div class="landing-h1">Develop Games and Channels</div>
+ </div>
+
+ <div class="landing-body">
+ <div class="cols">
+ <div class="col-8">
+ <div class="landing-h3">Play Games on TV</div>
+ <p class="landing-small" style="padding-left:0px; padding-top:15px;">
+ Build apps that let users experience high-performance gaming in leanback mode.
+ Users can discover your apps easily through the Games row in the Android TV
+ Launcher.<br>
+ <a href="{@docRoot}training/tv/games/index.html">Learn how to build games for TV</a>
+ </p>
+ </div>
+ <div class="col-8">
+ <div class="landing-h3">Keep Users Engaged with Channels</div>
+ <p class="landing-small" style="padding-left:0px; padding-top:15px;">
+ Create apps that serve video and music content in a linear, channel-like
+ fashion to users. Users see your channels alongside traditional TV channels in the
+ programming guide.<br>
+ <a href="{@docRoot}training/tv/tif/index.html">Learn how to build channels</a>
+ </p>
+ </div>
+ </div>
+ </div>
+ </div> <!-- end .wrap -->
+ </div> <!-- end .landing-section -->
<div class="landing-section landing-red-background">
<div class="wrap">