diff options
52 files changed, 1000 insertions, 410 deletions
diff --git a/core/java/android/os/Trace.java b/core/java/android/os/Trace.java index bb3d296acd79..3249bcb51743 100644 --- a/core/java/android/os/Trace.java +++ b/core/java/android/os/Trace.java @@ -22,9 +22,12 @@ import android.util.Log; * Writes trace events to the system trace buffer. These trace events can be * collected and visualized using the Systrace tool. * - * This tracing mechanism is independent of the method tracing mechanism + * <p>This tracing mechanism is independent of the method tracing mechanism * offered by {@link Debug#startMethodTracing}. In particular, it enables * tracing of events that occur across multiple processes. + * <p>For information about using the Systrace tool, read <a + * href="{@docRoot}tools/debugging/systrace.html">Analyzing Display and Performance + * with Systrace</a>. */ public final class Trace { /* diff --git a/core/java/android/text/InputType.java b/core/java/android/text/InputType.java index 6d066d6a733d..c5963882e2bf 100644 --- a/core/java/android/text/InputType.java +++ b/core/java/android/text/InputType.java @@ -46,9 +46,9 @@ public interface InputType { * of text being given. Currently supported classes are: * {@link #TYPE_CLASS_TEXT}, {@link #TYPE_CLASS_NUMBER}, * {@link #TYPE_CLASS_PHONE}, {@link #TYPE_CLASS_DATETIME}. - * If the class is not one you + * <p>IME authors: If the class is not one you * understand, assume {@link #TYPE_CLASS_TEXT} with NO variation - * or flags. + * or flags.<p> */ public static final int TYPE_MASK_CLASS = 0x0000000f; @@ -69,7 +69,10 @@ public interface InputType { * This should be interpreted to mean that the target input connection * is not rich, it can not process and show things like candidate text nor * retrieve the current text, so the input method will need to run in a - * limited "generate key events" mode. + * limited "generate key events" mode, if it supports it. Note that some + * input methods may not support it, for example a voice-based input + * method will likely not be able to generate key events even if this + * flag is set. */ public static final int TYPE_NULL = 0x00000000; @@ -94,48 +97,70 @@ public interface InputType { * Flag for {@link #TYPE_CLASS_TEXT}: capitalize all characters. Overrides * {@link #TYPE_TEXT_FLAG_CAP_WORDS} and * {@link #TYPE_TEXT_FLAG_CAP_SENTENCES}. This value is explicitly defined - * to be the same as {@link TextUtils#CAP_MODE_CHARACTERS}. + * to be the same as {@link TextUtils#CAP_MODE_CHARACTERS}. Of course, + * this only affects languages where there are upper-case and lower-case letters. */ public static final int TYPE_TEXT_FLAG_CAP_CHARACTERS = 0x00001000; /** - * Flag for {@link #TYPE_CLASS_TEXT}: capitalize first character of - * all words. Overrides {@link #TYPE_TEXT_FLAG_CAP_SENTENCES}. This + * Flag for {@link #TYPE_CLASS_TEXT}: capitalize the first character of + * every word. Overrides {@link #TYPE_TEXT_FLAG_CAP_SENTENCES}. This * value is explicitly defined - * to be the same as {@link TextUtils#CAP_MODE_WORDS}. + * to be the same as {@link TextUtils#CAP_MODE_WORDS}. Of course, + * this only affects languages where there are upper-case and lower-case letters. */ public static final int TYPE_TEXT_FLAG_CAP_WORDS = 0x00002000; /** - * Flag for {@link #TYPE_CLASS_TEXT}: capitalize first character of + * Flag for {@link #TYPE_CLASS_TEXT}: capitalize the first character of * each sentence. This value is explicitly defined - * to be the same as {@link TextUtils#CAP_MODE_SENTENCES}. + * to be the same as {@link TextUtils#CAP_MODE_SENTENCES}. For example + * in English it means to capitalize after a period and a space (note that other + * languages may have different characters for period, or not use spaces, + * or use different grammatical rules). Of course, + * this only affects languages where there are upper-case and lower-case letters. */ public static final int TYPE_TEXT_FLAG_CAP_SENTENCES = 0x00004000; /** * Flag for {@link #TYPE_CLASS_TEXT}: the user is entering free-form - * text that should have auto-correction applied to it. + * text that should have auto-correction applied to it. Without this flag, + * the IME will not try to correct typos. You should always set this flag + * unless you really expect users to type non-words in this field, for + * example to choose a name for a character in a game. + * Contrast this with {@link #TYPE_TEXT_FLAG_AUTO_COMPLETE} and + * {@link #TYPE_TEXT_FLAG_NO_SUGGESTIONS}: + * {@code TYPE_TEXT_FLAG_AUTO_CORRECT} means that the IME will try to + * auto-correct typos as the user is typing, but does not define whether + * the IME offers an interface to show suggestions. */ public static final int TYPE_TEXT_FLAG_AUTO_CORRECT = 0x00008000; /** - * Flag for {@link #TYPE_CLASS_TEXT}: the text editor is performing - * auto-completion of the text being entered based on its own semantics, - * which it will present to the user as they type. This generally means - * that the input method should not be showing candidates itself, but can - * expect for the editor to supply its own completions/candidates from + * Flag for {@link #TYPE_CLASS_TEXT}: the text editor (which means + * the application) is performing auto-completion of the text being entered + * based on its own semantics, which it will present to the user as they type. + * This generally means that the input method should not be showing + * candidates itself, but can expect the editor to supply its own + * completions/candidates from * {@link android.view.inputmethod.InputMethodSession#displayCompletions * InputMethodSession.displayCompletions()} as a result of the editor calling * {@link android.view.inputmethod.InputMethodManager#displayCompletions * InputMethodManager.displayCompletions()}. + * Note the contrast with {@link #TYPE_TEXT_FLAG_AUTO_CORRECT} and + * {@link #TYPE_TEXT_FLAG_NO_SUGGESTIONS}: + * {@code TYPE_TEXT_FLAG_AUTO_COMPLETE} means the editor should show an + * interface for displaying suggestions, but instead of supplying its own + * it will rely on the Editor to pass completions/corrections. */ public static final int TYPE_TEXT_FLAG_AUTO_COMPLETE = 0x00010000; /** * Flag for {@link #TYPE_CLASS_TEXT}: multiple lines of text can be * entered into the field. If this flag is not set, the text field - * will be constrained to a single line. + * will be constrained to a single line. The IME may also choose not to + * display an enter key when this flag is not set, as there should be no + * need to create new lines. */ public static final int TYPE_TEXT_FLAG_MULTI_LINE = 0x00020000; @@ -152,6 +177,16 @@ public interface InputType { * do not contain words from the language and do not benefit from any * dictionary-based completions or corrections. It overrides the * {@link #TYPE_TEXT_FLAG_AUTO_CORRECT} value when set. + * Please avoid using this unless you are certain this is what you want. + * Many input methods need suggestions to work well, for example the ones + * based on gesture typing. Consider clearing + * {@link #TYPE_TEXT_FLAG_AUTO_CORRECT} instead if you just do not + * want the IME to correct typos. + * Note the contrast with {@link #TYPE_TEXT_FLAG_AUTO_CORRECT} and + * {@link #TYPE_TEXT_FLAG_AUTO_COMPLETE}: + * {@code TYPE_TEXT_FLAG_NO_SUGGESTIONS} means the IME should never + * show an interface to display suggestions. Most IMEs will also take this to + * mean they should not try to auto-correct what the user is typing. */ public static final int TYPE_TEXT_FLAG_NO_SUGGESTIONS = 0x00080000; @@ -224,7 +259,9 @@ public interface InputType { /** * Variation of {@link #TYPE_CLASS_TEXT}: entering text for phonetic - * pronunciation, such as a phonetic name field in contacts. + * pronunciation, such as a phonetic name field in contacts. This is mostly + * useful for languages where one spelling may have several phonetic + * readings, like Japanese. */ public static final int TYPE_TEXT_VARIATION_PHONETIC = 0x000000c0; @@ -255,12 +292,13 @@ public interface InputType { // ---------------------------------------------------------------------- /** - * Class for numeric text. This class supports the following flag: + * Class for numeric text. This class supports the following flags: * {@link #TYPE_NUMBER_FLAG_SIGNED} and * {@link #TYPE_NUMBER_FLAG_DECIMAL}. It also supports the following * variations: {@link #TYPE_NUMBER_VARIATION_NORMAL} and - * {@link #TYPE_NUMBER_VARIATION_PASSWORD}. If you do not recognize - * the variation, normal should be assumed. + * {@link #TYPE_NUMBER_VARIATION_PASSWORD}. + * <p>IME authors: If you do not recognize + * the variation, normal should be assumed.</p> */ public static final int TYPE_CLASS_NUMBER = 0x00000002; @@ -318,7 +356,7 @@ public interface InputType { * following variations: * {@link #TYPE_DATETIME_VARIATION_NORMAL} * {@link #TYPE_DATETIME_VARIATION_DATE}, and - * {@link #TYPE_DATETIME_VARIATION_TIME},. + * {@link #TYPE_DATETIME_VARIATION_TIME}. */ public static final int TYPE_CLASS_DATETIME = 0x00000004; diff --git a/core/java/android/view/inputmethod/EditorInfo.java b/core/java/android/view/inputmethod/EditorInfo.java index 514656752618..d4e005bfa0e2 100644 --- a/core/java/android/view/inputmethod/EditorInfo.java +++ b/core/java/android/view/inputmethod/EditorInfo.java @@ -70,14 +70,14 @@ public class EditorInfo implements InputType, Parcelable { /** * Bits of {@link #IME_MASK_ACTION}: the action key performs a "search" * operation, taking the user to the results of searching for the text - * the have typed (in whatever context is appropriate). + * they have typed (in whatever context is appropriate). */ public static final int IME_ACTION_SEARCH = 0x00000003; /** * Bits of {@link #IME_MASK_ACTION}: the action key performs a "send" * operation, delivering the text to its target. This is typically used - * when composing a message. + * when composing a message in IM or SMS where sending is immediate. */ public static final int IME_ACTION_SEND = 0x00000004; @@ -89,22 +89,31 @@ public class EditorInfo implements InputType, Parcelable { /** * Bits of {@link #IME_MASK_ACTION}: the action key performs a "done" - * operation, typically meaning the IME will be closed. + * operation, typically meaning there is nothing more to input and the + * IME will be closed. */ public static final int IME_ACTION_DONE = 0x00000006; /** * Bits of {@link #IME_MASK_ACTION}: Like {@link #IME_ACTION_NEXT}, but * for moving to the previous field. This will normally not be used to - * specify an action (since it precludes {@link #IME_ACTION_NEXT}, but + * specify an action (since it precludes {@link #IME_ACTION_NEXT}), but * can be returned to the app if it sets {@link #IME_FLAG_NAVIGATE_PREVIOUS}. */ public static final int IME_ACTION_PREVIOUS = 0x00000007; /** * Flag of {@link #imeOptions}: used to request that the IME never go - * into fullscreen mode. Applications need to be aware that the flag is not - * a guarantee, and not all IMEs will respect it. + * into fullscreen mode. + * By default, IMEs may go into full screen mode when they think + * it's appropriate, for example on small screens in landscape + * orientation where displaying a software keyboard may occlude + * such a large portion of the screen that the remaining part is + * too small to meaningfully display the application UI. + * If this flag is set, compliant IMEs will never go into full screen mode, + * and always leave some space to display the application UI. + * Applications need to be aware that the flag is not a guarantee, and + * some IMEs may ignore it. */ public static final int IME_FLAG_NO_FULLSCREEN = 0x2000000; @@ -136,50 +145,56 @@ public class EditorInfo implements InputType, Parcelable { * Flag of {@link #imeOptions}: used to specify that the IME does not need * to show its extracted text UI. For input methods that may be fullscreen, * often when in landscape mode, this allows them to be smaller and let part - * of the application be shown behind. Though there will likely be limited - * access to the application available from the user, it can make the - * experience of a (mostly) fullscreen IME less jarring. Note that when - * this flag is specified the IME may <em>not</em> be set up to be able - * to display text, so it should only be used in situations where this is - * not needed. + * of the application be shown behind, through transparent UI parts in the + * fullscreen IME. The part of the UI visible to the user may not be responsive + * to touch because the IME will receive touch events, which may confuse the + * user; use {@link #IME_FLAG_NO_FULLSCREEN} instead for a better experience. + * Using this flag is discouraged and it may become deprecated in the future. + * Its meaning is unclear in some situations and it may not work appropriately + * on older versions of the platform. */ public static final int IME_FLAG_NO_EXTRACT_UI = 0x10000000; /** - * Flag of {@link #imeOptions}: used in conjunction with - * {@link #IME_MASK_ACTION}, this indicates that the action should not - * be available as an accessory button when the input method is full-screen. - * Note that by setting this flag, there can be cases where the action - * is simply never available to the user. Setting this generally means - * that you think showing text being edited is more important than the - * action you have supplied. + * Flag of {@link #imeOptions}: used in conjunction with one of the actions + * masked by {@link #IME_MASK_ACTION}, this indicates that the action + * should not be available as an accessory button on the right of the extracted + * text when the input method is full-screen. Note that by setting this flag, + * there can be cases where the action is simply never available to the + * user. Setting this generally means that you think that in fullscreen mode, + * where there is little space to show the text, it's not worth taking some + * screen real estate to display the action and it should be used instead + * to show more text. */ public static final int IME_FLAG_NO_ACCESSORY_ACTION = 0x20000000; /** - * Flag of {@link #imeOptions}: used in conjunction with - * {@link #IME_MASK_ACTION}, this indicates that the action should not - * be available in-line as a replacement for "enter" key. Typically this is - * because the action has such a significant impact or is not recoverable - * enough that accidentally hitting it should be avoided, such as sending - * a message. Note that {@link android.widget.TextView} will automatically set this - * flag for you on multi-line text views. + * Flag of {@link #imeOptions}: used in conjunction with one of the actions + * masked by {@link #IME_MASK_ACTION}. If this flag is not set, IMEs will + * normally replace the "enter" key with the action supplied. This flag + * indicates that the action should not be available in-line as a replacement + * for the "enter" key. Typically this is because the action has such a + * significant impact or is not recoverable enough that accidentally hitting + * it should be avoided, such as sending a message. Note that + * {@link android.widget.TextView} will automatically set this flag for you + * on multi-line text views. */ public static final int IME_FLAG_NO_ENTER_ACTION = 0x40000000; /** - * Flag of {@link #imeOptions}: used to request that the IME is capable of + * Flag of {@link #imeOptions}: used to request an IME that is capable of * inputting ASCII characters. The intention of this flag is to ensure that - * the user can type Roman alphabet characters in a {@link android.widget.TextView} - * used for, typically, account ID or password input. It is expected that IMEs - * normally are able to input ASCII even without being told so (such IMEs - * already respect this flag in a sense), but there could be some cases they - * aren't when, for instance, only non-ASCII input languagaes like Arabic, - * Greek, Hebrew, Russian are enabled in the IME. Applications need to be - * aware that the flag is not a guarantee, and not all IMEs will respect it. + * the user can type Roman alphabet characters in a {@link android.widget.TextView}. + * It is typically used for an account ID or password input. A lot of the time, + * IMEs are already able to input ASCII even without being told so (such IMEs + * already respect this flag in a sense), but there are cases when this is not + * the default. For instance, users of languages using a different script like + * Arabic, Greek, Hebrew or Russian typically have a keyboard that can't + * input ASCII characters by default. Applications need to be + * aware that the flag is not a guarantee, and some IMEs may not respect it. * However, it is strongly recommended for IME authors to respect this flag - * especially when their IME could end up with a state that has only non-ASCII - * input languages enabled. + * especially when their IME could end up with a state where only languages + * using non-ASCII are enabled. */ public static final int IME_FLAG_FORCE_ASCII = 0x80000000; @@ -209,8 +224,13 @@ public class EditorInfo implements InputType, Parcelable { /** * In some cases an IME may be able to display an arbitrary label for - * a command the user can perform, which you can specify here. You can - * not count on this being used. + * a command the user can perform, which you can specify here. This is + * typically used as the label for the action to use in-line as a replacement + * for the "enter" key (see {@link #actionId}). Remember the key where + * this will be displayed is typically very small, and there are significant + * localization challenges to make this fit in all supported languages. Also + * you can not count absolutely on this being used, as some IMEs may + * ignore this. */ public CharSequence actionLabel = null; @@ -224,13 +244,17 @@ public class EditorInfo implements InputType, Parcelable { /** * The text offset of the start of the selection at the time editing - * began; -1 if not known. + * began; -1 if not known. Keep in mind some IMEs may not be able + * to give their full feature set without knowing the cursor position; + * avoid passing -1 here if you can. */ public int initialSelStart = -1; /** * The text offset of the end of the selection at the time editing - * began; -1 if not known. + * began; -1 if not known. Keep in mind some IMEs may not be able + * to give their full feature set without knowing the cursor position; + * avoid passing -1 here if you can. */ public int initialSelEnd = -1; @@ -280,7 +304,7 @@ public class EditorInfo implements InputType, Parcelable { * Any extra data to supply to the input method. This is for extended * communication with specific input methods; the name fields in the * bundle should be scoped (such as "com.mydomain.im.SOME_FIELD") so - * that they don't conflict with others. This field is can be + * that they don't conflict with others. This field can be * filled in from the {@link android.R.attr#editorExtras} * attribute of a TextView. */ diff --git a/core/java/android/view/inputmethod/InputConnection.java b/core/java/android/view/inputmethod/InputConnection.java index 59330caf0e41..3537aeccbb0b 100644 --- a/core/java/android/view/inputmethod/InputConnection.java +++ b/core/java/android/view/inputmethod/InputConnection.java @@ -142,7 +142,11 @@ public interface InputConnection { * conditions in implementing this call. An IME can make a change * to the text and use this method right away; you need to make * sure the returned value is consistent with the result of the - * latest edits. + * latest edits. Also, you may return less than n characters if performance + * dictates so, but keep in mind IMEs are relying on this for many + * functions: you should not, for example, limit the returned value to + * the current line, and specifically do not return 0 characters unless + * the cursor is really at the start of the text.</p> * * @param n The expected length of the text. * @param flags Supplies additional options controlling how the text is @@ -176,7 +180,11 @@ public interface InputConnection { * conditions in implementing this call. An IME can make a change * to the text and use this method right away; you need to make * sure the returned value is consistent with the result of the - * latest edits.</p> + * latest edits. Also, you may return less than n characters if performance + * dictates so, but keep in mind IMEs are relying on this for many + * functions: you should not, for example, limit the returned value to + * the current line, and specifically do not return 0 characters unless + * the cursor is really at the end of the text.</p> * * @param n The expected length of the text. * @param flags Supplies additional options controlling how the text is diff --git a/docs/html/design/building-blocks/buttons.jd b/docs/html/design/building-blocks/buttons.jd index 7957ef8a3e1b..1f7e25d35b0d 100644 --- a/docs/html/design/building-blocks/buttons.jd +++ b/docs/html/design/building-blocks/buttons.jd @@ -9,39 +9,83 @@ page.tags="button","input" </div> </a> -<p>A button consists of text and/or an image that clearly communicates what action will occur when the -user touches it. Android supports two different types of buttons: <em>basic buttons</em> and <em>borderless -buttons</em>. Both can contain text labels and/or images.</p> +<p>A button consists of text and/or an image that clearly communicates what action + will occur when the user touches it. A button can have an image, text, or both. +</p> -<img src="{@docRoot}design/media/buttons_basic.png"> +<div class="layout-content-row" style="margin-top:22px"> + <div class="layout-content-col span-3"> + <img src="{@docRoot}design/media/icon_magnifying_glass.png" style="height:64px;padding:20px 0 0 40px;"> + </div> + <div class="layout-content-col span-3"> + <img src="{@docRoot}design/media/buttons_text.png" style="height:94px;"> + </div> + <div class="layout-content-col span-7"> + <img src="{@docRoot}design/media/buttons_image_and_text.png" style="height:94px;"> + </div> +</div> -<h2 id="basic">Basic Buttons</h2> +<div class="layout-content-row" style="margin-top:0;"> + <div class="layout-content-col span-3"> + <p>An image alone works best when the action can be represented by a symbol that's well understood.</p> + </div> + <div class="layout-content-col span-3"> + <p>Text alone is most appropriate for actions that would be difficult to + represent visually, or are critical to convey in words to avoid any ambiguity.</p> + </div> + <div class="layout-content-col span-7"> + <p> + Both an icon and text is most appropriate when they complement each other: + each carrying its own bit of information, but together making a larger whole. + </p> + + <p> + For example, in a birthday reminder card in Google Now, the button's text + describes the action while its image indicates that the action will be done + in Google+. + </p> + </div> +</div> -<p>Basic buttons are traditional buttons with borders and background. Android supports two styles for -basic buttons: default and small. Default buttons have slightly larger font size and are optimized -for display outside of form content. Small buttons are intended for display alongside other content. -They have a smaller font and smaller minimum height. Use small buttons in forms where they need to -align with other UI elements.</p> +<h3>What about button backgrounds?</h3> -<img src="{@docRoot}design/media/buttons_default_small.png"> <div class="layout-content-row"> <div class="layout-content-col span-6"> - <div class="figure-caption"> - Default buttons in Holo Dark & Light. - </div> - </div> - <div class="layout-content-col span-6"> - <div class="figure-caption"> - Small buttons in Holo Dark & Light. + <p>For <strong>image-only</strong> buttons, a background isn't necessary because + users are accustomed to interacting with objects.</p> + + <div class="layout-content-row" style="margin-left:72px"> + <div class="layout-content-col span-2"> + <div class="do-dont-label bad emulate-content-left-padding" style="width:30px">Don't</div> + <img src="{@docRoot}design/media/buttons_image_bg_dont.png" style="padding-left:14px;"> + </div> + <div class="layout-content-col span-2" style="width:29px;margin-left:10px;"> + <div class="do-dont-label good"><strong>Do</strong></div> + <img src="{@docRoot}design/media/icon_alarm.png" style="width:31px;padding-top:7px;"> + </div> </div> </div> -</div> -<h2 id="borderless">Borderless Buttons</h2> +<div class="layout-content-col span-7"> +<p> + For buttons <strong>with text</strong>, a background is also usually + unnecessary. To invite users to touch, phrase it as a clear action (e.g. + "Start", "Sign in") and use different color and formatting than the screen's + usual body text. +</p> -<p>Borderless buttons resemble basic buttons except that they have no borders or background. You can -use borderless buttons with both icons and text. Borderless buttons are visually more lightweight -than basic buttons and integrate nicely with other content.</p> +<p> + Use buttons with backgrounds sparingly. Because they have a heavy appearance, + they work best when there's only one or two of them on the screen. They're + most appropriate for: +</p> -<img src="{@docRoot}design/media/buttons_borderless.png"> +<ul> + <li>A call to action you really want users to pursue (e.g. "Sign up")</li> + <li>A key decision point (e.g. "Accept" / "Decline")</li> + <li>When the user is about to commit a significant action (e.g. "Erase + everything", "Buy now")</li> +</ul> +</div> +</div> diff --git a/docs/html/design/downloads/index.jd b/docs/html/design/downloads/index.jd index d514c14b923e..16f55092c514 100644 --- a/docs/html/design/downloads/index.jd +++ b/docs/html/design/downloads/index.jd @@ -1,4 +1,5 @@ page.title=Downloads +page tags="Icons", "stencils", "color swatches" @jd:body <div class="layout-content-row"> @@ -15,7 +16,7 @@ page.title=Downloads <p> <a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'All Design Assets']);" - href="{@docRoot}downloads/design/Android_Design_Downloads_20130814.zip">Download All</a> + href="{@docRoot}downloads/design/Android_Design_Downloads_20131106.zip">Download All</a> </p> </div> @@ -26,8 +27,8 @@ page.title=Downloads <div class="layout-content-row"> <div class="layout-content-col span-5"> -<p>Drag and drop your way to beautifully designed Ice Cream Sandwich apps. The stencils feature the -rich typography, colors, interactive controls, and icons found throughout Android 4.0, along with +<p>Drag and drop your way to beautifully designed Android apps. The stencils feature the +rich typography, colors, interactive controls, and icons found throughout Android, along with phone and tablet outlines to frame your creations. Source files for icons and controls are also available.</p> @@ -40,14 +41,14 @@ available.</p> <div class="layout-content-col span-4"> <p> - <a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Fireworks Stencil']);" + <!--<a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Fireworks Stencil']);" href="{@docRoot}downloads/design/Android_Design_Fireworks_Stencil_20120814.png">Adobe® Fireworks® PNG Stencil</a> <a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Illustrator Stencil']);" href="{@docRoot}downloads/design/Android_Design_Illustrator_Vectors_20120814.ai">Adobe® Illustrator® Stencil</a> <a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'OmniGraffle Stencil']);" - href="{@docRoot}downloads/design/Android_Design_OmniGraffle_Stencil_20120814.graffle">Omni® OmniGraffle® Stencil</a> + href="{@docRoot}downloads/design/Android_Design_OmniGraffle_Stencil_20120814.graffle">Omni® OmniGraffle® Stencil</a>--> <a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Photoshop Sources']);" - href="{@docRoot}downloads/design/Android_Design_Holo_Widgets_20120814.zip">Adobe® Photoshop® Sources</a> + href="{@docRoot}downloads/design/Android_Design_Stencils_Sources_20131106.zip">Adobe® Photoshop® Stencils and Sources</a> </p> </div> @@ -74,7 +75,7 @@ modify to match your theme, plus source files.</p> <p> <a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Action Bar Icons']);" - href="{@docRoot}downloads/design/Android_Design_Icons_20130926.zip">Action Bar Icon Pack</a> + href="{@docRoot}downloads/design/Android_Design_Icons_20131106.zip">Action Bar Icon Pack</a> </p> </div> @@ -114,7 +115,7 @@ requirements of UI and high-resolution screens.</p> <div class="layout-content-col span-5"> <h4>Color</h4> -<p>Blue is the standard accent color in Android's color palette. Each color has a corresponding darker +<p>In Android's color palette, each color has a corresponding darker shade that can be used as a complement when needed.</p> <p><a href="{@docRoot}design/style/color.html">More on Color</a></p> diff --git a/docs/html/design/media/buttons_image_and_text.png b/docs/html/design/media/buttons_image_and_text.png Binary files differnew file mode 100644 index 000000000000..b7ffccb4c258 --- /dev/null +++ b/docs/html/design/media/buttons_image_and_text.png diff --git a/docs/html/design/media/buttons_image_bg_dont.png b/docs/html/design/media/buttons_image_bg_dont.png Binary files differnew file mode 100644 index 000000000000..651d3ce5eb03 --- /dev/null +++ b/docs/html/design/media/buttons_image_bg_dont.png diff --git a/docs/html/design/media/buttons_text.png b/docs/html/design/media/buttons_text.png Binary files differnew file mode 100644 index 000000000000..54d3dd3803ba --- /dev/null +++ b/docs/html/design/media/buttons_text.png diff --git a/docs/html/design/media/calendar.mp4 b/docs/html/design/media/calendar.mp4 Binary files differdeleted file mode 100644 index cdd72d2b6dd9..000000000000 --- a/docs/html/design/media/calendar.mp4 +++ /dev/null diff --git a/docs/html/design/media/calendar.ogv b/docs/html/design/media/calendar.ogv Binary files differdeleted file mode 100644 index efb23d21407f..000000000000 --- a/docs/html/design/media/calendar.ogv +++ /dev/null diff --git a/docs/html/design/media/calendar.webm b/docs/html/design/media/calendar.webm Binary files differdeleted file mode 100644 index 9d7d9f266a34..000000000000 --- a/docs/html/design/media/calendar.webm +++ /dev/null diff --git a/docs/html/design/media/dialogs_popups_example.png b/docs/html/design/media/dialogs_popups_example.png Binary files differindex 6c98b1fc4cc4..a8ebacd43461 100644 --- a/docs/html/design/media/dialogs_popups_example.png +++ b/docs/html/design/media/dialogs_popups_example.png diff --git a/docs/html/design/media/icon_alarm.png b/docs/html/design/media/icon_alarm.png Binary files differnew file mode 100644 index 000000000000..36ce643a9280 --- /dev/null +++ b/docs/html/design/media/icon_alarm.png diff --git a/docs/html/design/media/icon_magnifying_glass.png b/docs/html/design/media/icon_magnifying_glass.png Binary files differnew file mode 100644 index 000000000000..d443a85a7737 --- /dev/null +++ b/docs/html/design/media/icon_magnifying_glass.png diff --git a/docs/html/design/media/multipane_view_tablet.png b/docs/html/design/media/multipane_view_tablet.png Binary files differindex d59308a97e58..a7135915c126 100644 --- a/docs/html/design/media/multipane_view_tablet.png +++ b/docs/html/design/media/multipane_view_tablet.png diff --git a/docs/html/design/media/navigation_between_apps_back.png b/docs/html/design/media/navigation_between_apps_back.png Binary files differindex a81737454083..d0c12cf922fd 100644 --- a/docs/html/design/media/navigation_between_apps_back.png +++ b/docs/html/design/media/navigation_between_apps_back.png diff --git a/docs/html/design/media/navigation_between_apps_inward.png b/docs/html/design/media/navigation_between_apps_inward.png Binary files differindex 321d0da3cf89..75e7fc6a7ef9 100644 --- a/docs/html/design/media/navigation_between_apps_inward.png +++ b/docs/html/design/media/navigation_between_apps_inward.png diff --git a/docs/html/design/media/navigation_between_apps_up.png b/docs/html/design/media/navigation_between_apps_up.png Binary files differindex 42d0d8f24e3d..67ebb77f24c6 100644 --- a/docs/html/design/media/navigation_between_apps_up.png +++ b/docs/html/design/media/navigation_between_apps_up.png diff --git a/docs/html/design/media/navigation_from_outside_back.png b/docs/html/design/media/navigation_from_outside_back.png Binary files differindex 0e1aa041bbb4..9153b0849775 100644 --- a/docs/html/design/media/navigation_from_outside_back.png +++ b/docs/html/design/media/navigation_from_outside_back.png diff --git a/docs/html/design/media/navigation_up_vs_back_gmail.png b/docs/html/design/media/navigation_up_vs_back_gmail.png Binary files differindex d5eaa18b174e..7cc295eed450 100644 --- a/docs/html/design/media/navigation_up_vs_back_gmail.png +++ b/docs/html/design/media/navigation_up_vs_back_gmail.png diff --git a/docs/html/design/media/touch_feedback.mp4 b/docs/html/design/media/touch_feedback.mp4 Binary files differnew file mode 100644 index 000000000000..b91dc4b0331b --- /dev/null +++ b/docs/html/design/media/touch_feedback.mp4 diff --git a/docs/html/design/media/touch_feedback.ogv b/docs/html/design/media/touch_feedback.ogv Binary files differnew file mode 100644 index 000000000000..22c9f9777210 --- /dev/null +++ b/docs/html/design/media/touch_feedback.ogv diff --git a/docs/html/design/media/touch_feedback.webm b/docs/html/design/media/touch_feedback.webm Binary files differnew file mode 100644 index 000000000000..a65c14220e72 --- /dev/null +++ b/docs/html/design/media/touch_feedback.webm diff --git a/docs/html/design/media/touch_feedback_thumb.png b/docs/html/design/media/touch_feedback_thumb.png Binary files differnew file mode 100644 index 000000000000..49af69f991cc --- /dev/null +++ b/docs/html/design/media/touch_feedback_thumb.png diff --git a/docs/html/design/media/widgets_gestures.png b/docs/html/design/media/widgets_gestures.png Binary files differindex 5e1268daca99..bbce87d1f6bb 100644 --- a/docs/html/design/media/widgets_gestures.png +++ b/docs/html/design/media/widgets_gestures.png diff --git a/docs/html/design/patterns/actionbar.jd b/docs/html/design/patterns/actionbar.jd index 939370c29fe5..b6e3a16563d2 100644 --- a/docs/html/design/patterns/actionbar.jd +++ b/docs/html/design/patterns/actionbar.jd @@ -182,7 +182,7 @@ files for further customization. <p> <a onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Action Bar Icons (@actionbar page)']);" - href="{@docRoot}downloads/design/Android_Design_Icons_20130926.zip">Download the Action Bar Icon Pack</a> + href="{@docRoot}downloads/design/Android_Design_Icons_20131106.zip">Download the Action Bar Icon Pack</a> </p> diff --git a/docs/html/design/patterns/buttons.jd b/docs/html/design/patterns/buttons.jd new file mode 100644 index 000000000000..46e41c893601 --- /dev/null +++ b/docs/html/design/patterns/buttons.jd @@ -0,0 +1,151 @@ +page.title=Buttons +page.tags="buttons" +@jd:body + +<p> + Some content is best experienced full screen, like videos, games, image + galleries, books, and slides in a presentation. You can engage users more + deeply with content in full screen by minimizing visual distraction from app + controls and protecting users from escaping the app accidentally. +</p> + +<div style="margin:auto;padding:auto;text-align:center;"> + <img src="{@docRoot}design/media/fullscreen_landing.png" style="margin:1em auto 2em auto;"> +</div> +<p> + In version 4.4, Android offers two approaches for making your app go full + screen: Lean Back and Immersive. In both approaches, all persistent system + bars are hidden. The difference between them is how the user brings the bars + back into view. +</p> + +<div class="layout-content-row"> + <div class="layout-content-col span-6"> + <h4>Lean Back</h4> + <p>Touch the screen anywhere to bring back system bars. </p> + <img src="{@docRoot}design/media/fullscreen_leanback.png" style="width:311px;"> + </div> + <div class="layout-content-col span-6"> + <h4>Immersive</h4> + <p>Swipe from the any edge of the screen with a hidden bar to bring back system bars. </p> + <img src="{@docRoot}design/media/fullscreen_immersive_swipe_bottom.png" style="width:160px;float:right"> + <img src="{@docRoot}design/media/fullscreen_immersive_swipe_top.png" style="width:160px"> + </div> +</div> + +<h2 id="leanback"> + Lean Back +</h2> + +<p> + The Lean Back approach is for full-screen experiences in which users won't be + interacting heavily with the screen while consuming content, like while + watching a video. +</p> + +<p> + In this type of experience, users are leaning back and watching the screen. + Then, when they need to bring back the bars, they simply touch anywhere. This + gesture is easy and intuitive. +</p> + + <img src="{@docRoot}design/media/fullscreen_leanback.png" style="width:311px;"> + +<h2 id="immersive"> + Immersive +</h2> + +<p> + The Immersive approach is mainly intended for apps in which the user will be + heavily interacting with the full screen as part of the primary experience. + Examples are games, viewing images in a gallery, or reading paginated + content, like a book or slides in a presentation. +</p> + +<p> + In this type of experience, when users need to bring back the system bars, + they swipe from any edge where a system bar is hidden. By requiring this more + deliberate gesture, the user's deep engagement with your app won't be + interrupted by accidental touches and swipes. +</p> + +<div class="layout-content-row"> + <div class="layout-content-col span-6"> + <img src="{@docRoot}design/media/fullscreen_immersive_swipe_bottom.png" style="width:160px;float:right"> + <img src="{@docRoot}design/media/fullscreen_immersive_swipe_top.png" style="width:160px"> + </div> +</div> + +<p> + The user learns about the gesture to bring back the system bars through a + message that appears the first time the app goes full screen. +</p> + +<p> + If your app has its own controls that aren't needed when a user is immersed + in content, make them disappear and reappear in sync with the system bars. + This rule also applies to any app-specific gestures you might have for hiding + and showing app controls. For example, if touching anywhere on the screen + toggles the appearance of an action bar or a palette, then it must also + toggle the appearance of system bars. +</p> + +<p> + You might be tempted to use this approach just to maximize screen real + estate. But be mindful of how often users jump in and out of apps to check + notifications, do impromptu searches, and more. This approach will cause + users to lose easy access to system navigation, so a little extra space + should not be the only benefit they're getting in return. +</p> + +<h2 id="variation_using_edges"> + Variation: Swiping from edges with bars also affects the app +</h2> + +<p> + In the Immersive approach, any time a user swipes from an edge with a system + bar, the Android framework takes care of revealing the system bars. Your app + won't even be aware that this gesture occurred. +</p> + +<p> + But in some apps, the user might occasionally need to swipe from the edge as + <strong>part of the primary app experience</strong>. Examples are games and + drawing applications. +</p> + +<p> + For apps with this requirement, you can use a variation on the Immersive + approach: when a user swipes from an edge with a system bar, system bars are + shown and the gesture is passed to the app so the app can respond to the + gesture. +</p> + +<p> + For example, in a drawing app that uses this approach, if a user wants to + draw a line that begins at the very edge of the screen, swiping from the edge + would reveal the system bars and also start drawing a line that begins at the + very edge. +</p> + +<p> + In this approach, to minimize disruption while a user is deeply engaged in + the app, the system bars are semi-transparent. The bars automatically + disappear after a few seconds of no interaction or as soon as the user + touches or gestures anywhere outside the system bars. +</p> + +<h2 id="lightsout">What About Lights Out Mode?</h2> + +<p> + Before Android 4.4, the design guideline was to use Lights Out mode, a mode + in which the Action Bar and Status Bar fades away and becomes unavailable + after a few seconds of inactivity. The Navigation Bar is still available and + responds to touches but appears dimmed. +</p> + +<p> + Replace previous implementations of Lights Out mode with the Lean Back or + Immersive approaches. Continue to use Lights Out mode for implementations of + your app targeted for earlier releases. +</p>
\ No newline at end of file diff --git a/docs/html/design/patterns/fullscreen.jd b/docs/html/design/patterns/fullscreen.jd index 191ca40a2027..de016fe55b99 100644 --- a/docs/html/design/patterns/fullscreen.jd +++ b/docs/html/design/patterns/fullscreen.jd @@ -9,8 +9,9 @@ page.tags="full screen","immersive", "leanback" controls and protecting users from escaping the app accidentally. </p> +<div style="margin:auto;padding:auto;text-align:center;"> <img src="{@docRoot}design/media/fullscreen_landing.png" style="margin:1em auto 2em auto;"> - +</div> <p> In version 4.4, Android offers two approaches for making your app go full screen: Lean Back and Immersive. In both approaches, all persistent system diff --git a/docs/html/design/patterns/gestures.jd b/docs/html/design/patterns/gestures.jd index 837a6ddbe4bb..213902f8568c 100644 --- a/docs/html/design/patterns/gestures.jd +++ b/docs/html/design/patterns/gestures.jd @@ -65,8 +65,9 @@ following table shows the core gesture set that is supported in Android.</p> <div class="layout-content-col span-4"> <img src="{@docRoot}design/media/gesture_doubletouch.png"> <h4>Double touch </h4> - <p>Scales up the smallest targetable view, if available, or scales a standard amount - around the gesture. Also used as a secondary gesture for text selection.</p> + <p> Scales up a standard amount around the target with each repeated gesture until reaching + maximum scale. For nested views, scales up the smallest targetable view, or returns it to + its original scale. Also used as a secondary gesture for text selection.</p> <ul> <li class="no-bullet with-icon action"> <h4>Action</h4> diff --git a/docs/html/design/style/branding.jd b/docs/html/design/style/branding.jd index 9ef934d391c3..2ea4d4702db3 100644 --- a/docs/html/design/style/branding.jd +++ b/docs/html/design/style/branding.jd @@ -49,16 +49,16 @@ and app name in the action bar.</p> <div class="vspace size-1"> </div> <div class="layout-content-row"> - <div class="layout-content-col span-6"> - <img src="{@docRoot}design/media/yourbranding_icon.png" style="width:60px;float:left;padding-right:1em;"> - <div class="figure-caption" style="widdth:220px;margin-left:20px;"> - The HowzAbout app uses a launcher icon that is a shortened version of its full logo. + <div class="layout-content-col span-6" style="padding-top:24px;"> + <img src="{@docRoot}design/media/branding_launcher_icon.png" style="width:60px;float:left;padding-right:1em;"> + <div class="figure-caption" style="width:290px;margin-left:20px;"> + Google+ reinforces its brand by carrying its launcher icon through to the action bar. </div> - + <img src="{@docRoot}design/media/branding_logo_icon_action_bar.png" style="width:320px;float:left;padding-right:1em;"> </div> <div class="layout-content-col span-6"> - <img src="{@docRoot}design/media/yourbranding_app.png" style="width:94%"> - <div class="figure-caption"> + <img src="{@docRoot}design/media/yourbranding_app.png" style="width:320px;"> + <div class="figure-caption" style="width:320px;"> Example of a the logo in the action bar. This works well in cases where the brand's logo matches the name of the app. </div> </div> @@ -77,7 +77,7 @@ and app name in the action bar.</p> </div> <div class="layout-content-col span-6"> - <img src="{@docRoot}design/media/yourbranding_in-app-icons.png" style="width:300px;margin:12px 48px 0 16px;""> + <img src="{@docRoot}design/media/yourbranding_in-app-icons.png" style="width:300px;margin:12px 48px 0 16px;"> </div> </div> </div> @@ -100,9 +100,9 @@ and app name in the action bar.</p> <div style="margin-bottom:1em;"> <span class="do-dont-label bad" style="margin-left:12px">Don't</span> - <span style="margin-left: 44px;" class="do-dont-label good"><strong>Do</strong></span> + <span style="margin-left: 64px;" class="do-dont-label good"><strong>Do</strong></span> </div> - <img src="{@docRoot}design/media/yourbranding_sharing.png" style="width:200px;"> + <img src="{@docRoot}design/media/yourbranding_sharing.png" style="width:180px;"> </div> </div> diff --git a/docs/html/design/style/iconography.jd b/docs/html/design/style/iconography.jd index b0a3439ea93e..fe4a3f9bcd22 100644 --- a/docs/html/design/style/iconography.jd +++ b/docs/html/design/style/iconography.jd @@ -139,7 +139,7 @@ files for further customization. </p> <p> <a onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Action Bar Icons (@iconography page)']);" - href="{@docRoot}downloads/design/Android_Design_Icons_20130926.zip">Download the Action Bar Icon Pack</a> + href="{@docRoot}downloads/design/Android_Design_Icons_20131106.zip">Download the Action Bar Icon Pack</a> </p> <div class="layout-content-row"> diff --git a/docs/html/design/style/touch-feedback.jd b/docs/html/design/style/touch-feedback.jd index a5bf7b37e592..2017d8e2fac6 100644 --- a/docs/html/design/style/touch-feedback.jd +++ b/docs/html/design/style/touch-feedback.jd @@ -7,8 +7,6 @@ page.tags="input","button" <p>Use illumination and dimming to respond to touches, reinforce the resulting behaviors of gestures, and indicate what actions are enabled and disabled.</p> -<p>Whenever a user touches an actionable area in your app, provide a subtle visual response. -This lets the user know which object was touched and that your app is "listening".</p> <p><strong>Be responsive to touches in a gentle way</strong>. Whenever a user touches an actionable area in your app, let them know the app is "listening" by providing a visual @@ -22,27 +20,16 @@ of encouragement</a> are more pleasant than jolts.</li> easier because the default touch feedback works with whatever hue you choose.</li> </ul> - </div> - - <div class="layout-content-col span-6" style="float:right;"> - - <!-- <div class="framed-nexus5-port-span-5"> - <video class="play-on-hover" autoplay> - <source src="{@docRoot}design/media/calendar.mp4" type="video/mp4"> - <source src="{@docRoot}design/media/calendar.webm" type="video/webm"> - <source src="{@docRoot}design/media/calendar.ogv" type="video/ogg"> - </video> - </div> - <div class="figure-caption" style="margin-top:0"> - <div class="video-instructions"> </div> - </div> - </div> --> - - - <div class="layout-content-col span-6"> - - <img src="{@docRoot}design/media/touch_feedback_reaction_response.png"> +</div> +<div class="layout-content-col span-6" style="float:right;"> + <video class="play-on-hover" width="268" height="442" autoplay style="border:1px solid #ddd;background-color:#f9f9f9;" poster=""> + <source src="{@docRoot}design/media/touch_feedback.mp4" type="video/mp4"> + <source src="{@docRoot}design/media/touch_feedback.webm" type="video/webm"> + <source src="{@docRoot}design/media/touch_feedback.ogv" type="video/ogg"> + </video> + <div class="figure-caption"> + <div style="color:#a3a3a3;margin-left:130px;"><em>Click image to replay...</em></div> </div> </div> diff --git a/docs/html/distribute/distribute_toc.cs b/docs/html/distribute/distribute_toc.cs index b9a0eec4c7b4..1fabcb301fd2 100644 --- a/docs/html/distribute/distribute_toc.cs +++ b/docs/html/distribute/distribute_toc.cs @@ -91,6 +91,7 @@ <li><a href="<?cs var:toroot ?>distribute/googleplay/edu/about.html">About</a></li> <li><a href="<?cs var:toroot ?>distribute/googleplay/edu/start.html">Get Started</a></li> <li><a href="<?cs var:toroot ?>distribute/googleplay/edu/guidelines.html">Guidelines</a></li> + <li><a href="<?cs var:toroot ?>distribute/googleplay/edu/faq.html">FAQ</a></li> <li><a href="<?cs var:toroot ?>distribute/googleplay/edu/contact.html">Sign Up</a></li> </ul> </li> diff --git a/docs/html/distribute/googleplay/edu/about.jd b/docs/html/distribute/googleplay/edu/about.jd index cc131c648d2e..20a0d4d782e4 100644 --- a/docs/html/distribute/googleplay/edu/about.jd +++ b/docs/html/distribute/googleplay/edu/about.jd @@ -3,26 +3,25 @@ page.metaDescription=How Google Play for Education helps you reach a new audienc excludeFromSuggestions=true @jd:body -<div style="position:absolute;margin-left: 636px; + <div style="position:absolute;margin-left: 636px; margin-top:-76px;color:#777;">If you're interested<br> <a href="{@docRoot}distribute/googleplay/edu/contact.html" class="go-link" style="display: block;text-align: right;">SIGN UP</a></div> <div style="float:right;margin:0px 0px 24px 44px;"> - <img src="{@docRoot}images/gp-edu-knum-landscape.png" style="width:420px" alt="" /> + <img src="{@docRoot}images/gp-edu-apps-n7.jpg" style="width:420px" alt="" /> </div> <p>Introducing Google Play for Education, the online destination where schools can find the right tablet content and tools for their students and teachers.</p> -<p>With easy bulk ordering for groups, schools will be able to purchase and -instantly distribute apps, videos, and books right to their students’ +<p>With easy bulk ordering for groups, schools can purchase and +instantly distribute your apps, and videos right to their students’ devices.</p> -<p>The Google Play team looks forward to seeing you create first class content -that will help schools. We want to help you create innovative educational apps, -without having to knock on school doors to reach teachers and students.</p> +<p>Google Play for Education can help your innovative educational apps +gain visibility with the right audiences, without having to knock on school doors. </p> <p><a class="landing-page-link" style="text-align:right;" href="#video">Watch a Video</a></p> @@ -32,36 +31,36 @@ without having to knock on school doors to reach teachers and students.</p> <h4>Get discovered</h4> -<p>With Google Play for Education, teachers and administrators will be able to +<p>With Google Play for Education, teachers and administrators can browse content by curriculum, grade, and standard — discovering the right -content at the right time for their students. If your app offers an exciting new -way to learn sixth grade algebra, we'll make it easy for math educators to find, -purchase, and distribute your app to their classes.</p> +content for their students. If your app offers an exciting new +way to learn sixth grade algebra, math educators will be able to find, +purchase, and distribute your app to their classes in a few clicks.</p> <h4>Reach more schools and students</h4> -<p>Google has built a strong network of K-12 schools who are already using -Google Apps for Education and other Google services. These schools are excited -and looking forward to bringing your apps and content into their classrooms with -Nexus tablets.</p> +<p>Over 30 million students, faculty, and staff are already using +Google Apps for Education and other Google services. Many of these schools are +excited to take advantage of tablets with Google Play for Education and they +look to bringing your apps into their classrooms, +especially apps using Google sign-on.</p> <h4>Monetize effectively</h4> -<p>With the wide launch of Google Play for Education later this year, educators -will be able to make high-volume purchases using standard institutional payment -mechanisms and distribute them to the students they want — whether it is a -class of 30 or a district of 30,000.</p> - +<p>With Google Play for Education, educators are able to make high-volume purchases +using standard institutional payment mechanisms and distribute them to the students +they want — whether it is a class of 20 or a district of 20,000.</p> +<code></code> </div> <div class="col-6 normal-links"> <h3 style="clear:left">For Educators</h3> <h4>Android tablets in the classroom</h4> <p>Google Play for Education brings the innovation of Android technology -into classrooms. Educators can set up and deploy large numbers of devices in +into classrooms. School districts can set up and deploy large numbers of devices in just minutes or hours rather than days.</p> <h4>Curriculum-based discovery</h4> - <p>Powerful browsing tools let educators quickly discover apps, books, + <p>Powerful browsing tools let educators quickly discover apps, videos, and other content—with many recommended by teachers and categorized according to familiar Core Curriculum standards. diff --git a/docs/html/distribute/googleplay/edu/contact.jd b/docs/html/distribute/googleplay/edu/contact.jd index 804d925864cb..ca8343842881 100644 --- a/docs/html/distribute/googleplay/edu/contact.jd +++ b/docs/html/distribute/googleplay/edu/contact.jd @@ -5,11 +5,7 @@ excludeFromSuggestions=true <p>We're looking forward to improving how students learn in the classroom as we bring your first-class educational content into schools across the United -States, and to a broader international audience in the future. We'll soon share -more information about Google Play for Education and our services that will help -teachers and administrators buy, deploy, and use apps. </p> - - +States, and to a broader international audience in the future. </p> <div class="vspace size-1"> @@ -35,8 +31,8 @@ educational apps.</p> <p> If you're a school or system interested in tablets and Google Play for Education, complete the expression of interest form at <a href="http://www.google.com/edu/android">www.google.com/edu/android</a>. -We'll be in touch later in the year as the program launches widely to schools. </p><a href="http://www.google.com/edu/android">School Interest Form »</a> </div> </div> + diff --git a/docs/html/distribute/googleplay/edu/faq.jd b/docs/html/distribute/googleplay/edu/faq.jd new file mode 100644 index 000000000000..6afc1073615d --- /dev/null +++ b/docs/html/distribute/googleplay/edu/faq.jd @@ -0,0 +1,372 @@ +page.title=Google Play for Education FAQ +page.metaDescription=Questions and answers about Google Play for Education. +excludeFromSuggestions=true +@jd:body + + <div style="position:absolute;margin-left: 636px; + margin-top:-76px;color:#777;">If you're interested<br> + <a href="{@docRoot}distribute/googleplay/edu/contact.html" + class="go-link" + style="display: block;text-align: right;">SIGN UP</a></div> + + + <style> + dt { + font-weight:bold; + } + </style> + +<div id="qv-wrapper"> +<ol id="qv"> +<h2>In this document</h2> +<ol> + <li><a href="#business">Business Model</a></li> + <li><a href="#free_trials">Free Trials</a></li> + <li><a href="#discovery">Discovery</a></li> + <li><a href="#reviews">App Review Process</a></li> + <li><a href="#features">App Features</a></li> + <li><a href="#marketing">Marketing and ROI</a></li> + <li><a href="#devices">Devices</a></li> + <li><a href="#accounts">Accounts</a></li> +</ol> +</div> + +<p> + The sections below provide more information about Google Play for Education + and answer common questions that you might have about it. +</p> + + +<h2 id="business">Business Model and Monetization</h2> + +<dl> + <dt> + What is Google Play for Education? + </dt> + + <dd> + Google Play for Education is a new online destination designed for schools. + Teachers can discover educational apps, books, and videos to meet the needs + of a single student, a classroom, or a whole district. Educators can browse + apps by grade, subject, keyword, or standard including common core. + Purchasing is done via PO with no credit card required. Apps are + distributed to tablets instantly via the cloud. + </dd> + + <dt> + Is Google Play for Education primarily for students or educators? + </dt> + + <dd> + The store on Google Play for Education is for educators, but its content is + for both educators and students. Teachers and administrators have the + ability to make purchases and control who within their school has access to + the purchase flows. + </dd> + + <dt> + Will Google Play for Education support subscription purchases? + </dt> + + <dd> + Currently, Google Play for Education supports one-time purchases. We are + investigating additional purchase mechanisms to enable more flexible + pricing models for developers and schools. + </dd> + + <dt> + Why is it recommended to disable in-app purchases? + </dt> + + <dd> + In-app purchase is currently not supported with Google Play for Education, + and a student device will block the Play transaction if a student attempts + to make an in-app purchase. To avoid student confusion in the classroom, + also recommend not including any in-app purchase buttons and other UI in + your application. We are investigating additional purchase mechanisms to + enable more flexible pricing models for developers and schools. + </dd> + + <dt> + Is Google Play for Education restricted so only its users can purchase from + the Google Play for Education? Or will anyone be able to purchase from it? + </dt> + + <dd> + Currently, only schools that are signed up for Google Play for Education + can make purchases on it. + </dd> + + <dt> + Is there a way to differentiate an app's pricing between Google Play for + Education and Google Play? + </dt> + + <dd> + For each app that you publish, you can set a single price that applies to + both Google Play and Google Play for Education &mdash. You can’t set a + different price for a given app (based on a single package name) in Google + Play for Education. + </dd> +</dl> + + +<h2 id="free_trials">Free Trials</h2> + +<dl> + <dt> + Can I offer free trials through Google Play for Education? + </dt> + + <dd> + Google Play for Education doesn't currently support free trials. If you + want, you can offer a free version of your app with limited functionality + in Google Play for Education, but that app would need to be separate from + your paid app and be reviewed separately for educational content. + </dd> + + <dt> + Can I offer a free trial through Google Play's "In-app Subscriptions with + Free Trials" feature? + </dt> + + <dd> + Google Play for Education does not currently support In-app Billing or + In-app Subscriptions with free trials. + </dd> +</dl> + + +<h2 id="discovery">Discovery</h2> + +<dl> + <dt> + What are the categories in Google Play for Education? + </dt> + + <dd> + Google Play for Education includes categories for all grade levels from + Kindergarten to 12 and the following subjects: English Language Arts, World + Languages, Mathematics, Science, Social Science, Elective, OER (Open + Education Resources), and Tools. + </dd> + + <dt> + I created an app specifically for Google Play for Education and do not want + it to show up in Google Play. Is this possible? + </dt> + + <dd> + Currently, it is not possible to publish an app Google Play for Education + and make it unavailable on Google Play. + </dd> + + <dt> + If my app offers content for every level of education, how will it fit the + common-core standard filters? + </dt> + + <dd> + If your app applies to multiple levels of education, then the app will show + up filtered results for in multiple levels. + </dd> +</dl> + + +<h2 id="reviews">App Review Process</h2> + +<dl> + <dt> + How are apps being reviewed? By whom and with what criteria? + </dt> + + <dd> + Apps are being reviewed by a third party network of educators. These + educators assign the appropriate subject, grade, and common core standards + metadata, as well as evaluating whether the app meets the Google Play for + Education <a href= + "{@docRoot}distribute/googleplay/edu/guidelines.html">criteria for + classroom use</a>. You can learn more about the submission process and + criteria at <a href= + "http://developer.android.com/edu">developer.android.com/edu</a>. + </dd> + + <dt> + How do I update my apps in Google Play for Education? + </dt> + + <dd> + Developers can update their apps on Google Play for Education in the same + manner that they do for Google Play. App updates will not be reviewed prior + to being made available through Play for Education. However, we will + periodically review updated apps for quality. + </dd> + + <dt> + Does the app maturity rating reflect solely what a user can do within my + Android app, or does the web version of my app influence the rating as + well? + </dt> + + <dd> + The maturity rating that you set for your Android app refers only to the + content displayed in that application. + </dd> +</dl> + + +<h2 id="features">App Features</h2> + +<dl> + <dt> + Do I need separate builds of my phone and tablet apps for Google Play for + Education, or is it the exact same app that lives on Google Play? + </dt> + + <dd> + We recommend you create one app and use it in both Google Play and Google + Play for Education. + </dd> + + <dt> + What is the best way to get students’ work within apps sent back to their + teachers? + </dt> + + <dd> + Many teachers have mentioned that the way apps treat this now is via an + email from a third party, which is not optimal for schools. As many schools + use Google Apps for Education, consider integrating your app with Google + Drive using the SDK which can be found here: <a class="external-link" href= + "https://developers.google.com/drive/about-sdk">developers.google.com/drive/about-sdk</a>. + </dd> + + <dt> + How can developers test the teacher experience in Google Play for + Education? Is there a way to get an account to test it? + </dt> + + <dd> + Currently, we are unable to provide developers with a test account to test + the Google Play for Education user experience. We are investigating ways to + allow developers to simulate the environment. + </dd> + + <dt> + If I already have an app in the Chrome Apps Pack will I get some help + migrating this to Android? + </dt> + + <dd> + If you’d like to reach users of Nexus tablets for schools we encourage you + to build a native app for the optimal user experience. Considerations for + building your app and instructions for registering it can be found at + <a href="http://developer.android.com/edu">developer.android.com/edu</a>. + </dd> +</dl> + + +<h2 id="marketing">Marketing and ROI</h2> + +<dl> + <dt> + What are you doing to promote these apps to educators? + </dt> + + <dd> + Google Play for Education is an extension of Google Play targeting schools + and making discovery easier for educational apps. It helps your apps gain + visibility with the right audiences, without having to knock on school + doors. We are constantly referring to the highest quality apps in our + educator outreach. We have also developed a series of collections to help + educators quickly browse apps for the most common use cases. + </dd> + + <dt> + How many installs have similar apps had on Play? How much can I expect to + make if I do an ROI analysis? + </dt> + + <dd> + While we cannot disclose specific numbers, Google Play app listings provide + app download ranges for all apps. + </dd> + + <dt> + What is the seasonality like for the education market? What are the key + timing considerations for app developers? + </dt> + + <dd> + In the United States, school districts’ budget decisions go through a + planning phase in the Spring with budgets being released on July 1. We have + observed high purchase-volumes in the second quarter of the calendar year, + using up end-of-year budgets. New budget purchases begin in the third + quarter of the calendar year. + </dd> + + <dt> + Is there a way to offer a special deal, such as a discount, only on Google + Play for Education and not on Google Play? + </dt> + + <dd> + No, this is not possible. Pricing, including special offers, must be the + same between Google Play for Education and Google Play. + </dd> +</dl> + + +<h2 id="devices">Devices</h2> + +<dl> + <dt> + Which devices are available in the program? Will more be available? + </dt> + + <dd> + Nexus 7 is available for shipment now, and the Asus Transformer will be + available in early 2014. We look forward to welcoming more Android devices + into the Google in Education family soon. + </dd> + + <dt> + Can the devices be shared among many students? + </dt> + + <dd> + No. Currently, this program is for one-to-one usage. Each student can login + to one specific tablet that is allocated to them. + </dd> +</dl> + + +<h2 id="accounts"> + Accounts +</h2> + +<dl> + <dt> + Will an app know whether a user is a teacher or student? + </dt> + + <dd> + No, the app has no mechanism for knowing if it is running on a teacher’s + device or a student’s device. We recommend developers use their own user + database to enable this feature, where logins can be based on Google + Account information. + </dd> + + <dt> + What log-in method do you recommend for an app on Google Play for + Education? + </dt> + + <dd> + One of the key pieces of feedback we have heard multiple times from various + schools is that they prefer apps that offer Google Single Sign-on, so that + teachers and students do not need to remember multiple log-in credentials. + As schools in the program use Google Accounts and Google Apps for + Education, offering Google Single Sign-on is ideal. + </dd> +</dl>
\ No newline at end of file diff --git a/docs/html/distribute/googleplay/edu/guidelines.jd b/docs/html/distribute/googleplay/edu/guidelines.jd index 7b656b449e58..c4b719bf9c4a 100644 --- a/docs/html/distribute/googleplay/edu/guidelines.jd +++ b/docs/html/distribute/googleplay/edu/guidelines.jd @@ -3,18 +3,16 @@ page.metaDescription=Get your apps ready for Google Play for Education. excludeFromSuggestions=true @jd:body -<div style="position:absolute;margin-left: 636px; + <div style="position:absolute;margin-left: 636px; margin-top:-76px;color:#777;">If you're interested<br> <a href="{@docRoot}distribute/googleplay/edu/contact.html" class="go-link" style="display: block;text-align: right;">SIGN UP</a></div> -<div -style="background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">You -can now include your apps in the Google Play for Education <a -href="{@docRoot}distribute/googleplay/edu/start.html#program">pilot program</a>, -getting it into the hands of participating schools and key influencers in the -education technology community. See <a href="start.html">Get Started</a> to +<div style="background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">You +can now include your educational apps in the recently launched Google Play for Education program, +getting it into the hands of participating schools and key influencers in the education technology +community. See <a href="start.html">Get Started</a> to learn how to participate. </div> <p>The sections below list the guidelines and requirements for apps @@ -229,14 +227,9 @@ Play for Education environment:</p> <ul> <li><em>Android version</em> — Test the app on devices running Android 4.2. Google Play for Education devices will be running Android 4.2 or higher -(API level 17).</li> +(API level 17+).</li> <li><em>Proxy server</em> — Test the app in network environment that uses proxies. Many schools use proxies.</li> -<li><em>Secondary user account</em> — Test the app using a secondary user -account. Most Google Play for Education users will not be using the primary <a -href="{@docRoot}about/versions/jelly-bean.html#42-multiuser">multiuser</a> -account on their devices. For testing, create a secondary multiuser account on -your tablet.</li> <li><em>No location services</em> — Test the app to make sure it works properly with location services disabled. Many schools will disable location services for student devices.</li> @@ -249,4 +242,3 @@ devices.</li> <li><em>No access to network</em> — Test the app to make sure it works properly when the device cannot connect to the internet. </li> </ul> - diff --git a/docs/html/distribute/googleplay/edu/index.jd b/docs/html/distribute/googleplay/edu/index.jd index de5fe3513a84..7a16bfdaea0d 100644 --- a/docs/html/distribute/googleplay/edu/index.jd +++ b/docs/html/distribute/googleplay/edu/index.jd @@ -10,20 +10,21 @@ header.hide=1 style="display: block;text-align: right;">SIGN UP</a></div> <div class="marquee"> - <div class="mainimg" style="position:absolute;margin-left:6px;margin-top:96px;"> - <img src="{@docRoot}images/gp-edu-hero7.png" style="width:590px;"> + <div class="mainimg" style="position:absolute;margin-left:34px;margin-top:57px;"> + <img src="{@docRoot}images/gp-edu-hero14.jpg" style="width:670px;" /> </div> - <div class="copy" style="position:relative;left:314px;margin-top:42px;width:420px;"> + <div class="copy" style="position:relative;left:334px;margin-top:28px;width:420px;"> <h1 style="margin-bottom:10px;">Google Play for Education</h1> - <p>A destination where schools can find great educational content in Google Play. - Bulk purchase and instant distribution let educators bring your apps directly - to classrooms and schools.</p> - <p><a class="button" href="{@docRoot}distribute/googleplay/edu/about.html" - >Read More</a></p> + <p>Google Play for Education is a destination where schools can find great, + teacher-approved, educational apps and videos on Play Store. Teachers can filter + content by subject matter, grade and other criteria. Bulk purchase and instant + distribution let educators bring your apps directly to classrooms and schools.</p> + <p>If you have an educational app, be a part of Google Play for Education.</p> + <p><a class="button" href="{@docRoot}distribute/googleplay/edu/about.html">Learn More</a></p> </div> </div> -<div class="distribute-features col-13" style="clear:both;margin-top:253px;"> +<div class="distribute-features col-13" style="clear:both;margin-top:248px;"> <div class="distribute-link"> <ul> <li><a href="{@docRoot}distribute/googleplay/edu/about.html"><h5>About the Initiative</h5> @@ -31,14 +32,16 @@ header.hide=1 <li><a href="{@docRoot}distribute/googleplay/edu/start.html"><h5>Get your Apps Ready</h5> Follow these guidelines to make sure your app meets requirements and offers a great user experience. </a> </li> - <li class="last"><a href="{@docRoot}distribute/googleplay/edu/contact.html"><h5>Sign Up</h5> - Sign up here to be notified of the latest information regarding this program.</a> + <li class="last"><a href="{@docRoot}distribute/googleplay/edu/start.html#opt-in"><h5>Submit your App</h5> + Use the Google Play Developer Console to mark your app for inclusion in the program and review by third-party + educators. </a> </li> </ul> </div> </div> + diff --git a/docs/html/distribute/googleplay/edu/start.jd b/docs/html/distribute/googleplay/edu/start.jd index 78b87396bdd4..01d44068c154 100644 --- a/docs/html/distribute/googleplay/edu/start.jd +++ b/docs/html/distribute/googleplay/edu/start.jd @@ -3,18 +3,19 @@ page.metaDescription=Get Started with Google Play for Education excludeFromSuggestions=true @jd:body -<div style="position:absolute;margin-left: 636px; + <div class="jd-descr" itemprop="articleBody"> + <div style="position:absolute;margin-left: 636px; margin-top:-76px;color:#777;">If you're interested<br> <a href="{@docRoot}distribute/googleplay/edu/contact.html" class="go-link" style="display: block;text-align: right;">SIGN UP</a></div> <div style="background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">You -can now include your apps in the Google Play for Education <a href="#program">pilot program</a>, -getting it into the hands of participating schools and key influencers in the education technology -community. See the sections below to learn more.</div> +can now include your educational apps in the Google Play for Education program, +getting it into the hands of participating schools and key influencers in the +education technology community. See the sections below to learn more.</div> -<p>If you've got a great app for education or just an idea for one, plan to be a +<p>If you've got a great app for education, be part of Google Play for Education to reach even more teachers and students. It's easy to participate, and you'll be able to offer new or existing Android apps using familiar tools and processes in Google Play.</p> @@ -26,8 +27,8 @@ Apps</a> for information on the safety, usability, and quality standards that your apps should meet. When your app is ready, you can opt-in to Google Play for Education from the Developer Console.</p> -<p>Note that the initial launch of Google Play for Education is planned for Fall -2013 and will include schools in the United States only, with support for other +<p>Note that Google Play for Education is currently available to schools in the +United States only, with support for schools in other countries to follow. At this time, please include your app in Google Play for Education only if it is targeting the <strong>US K-12 market</strong>. </p> @@ -35,11 +36,12 @@ Education only if it is targeting the <strong>US K-12 market</strong>. </p> <h2 id="participate">How to Participate</h2> <div style="float:right; padding-top:2em;"><img -src="{@docRoot}images/gp-edu-process.png"></div> +src="{@docRoot}images/gp-edu-process.png" /></div> -<p>Google Play for Education lets you put your educational apps in front of a +<p>Google Play for Education is a great way to put your educational apps in front of a new audience of teachers and students. You can develop and publish using -familiar tools and processes, such as your existing Developer Console account +familiar tools and processes, such as your existing <a +href="https://play.google.com/apps/publish/">Developer Console</a> account and your current distribution and pricing settings. It's easy to participate — the sections below outline the process.</p> @@ -109,7 +111,7 @@ modifications to your app.</p> </div> </div> -<p>When you've built your release-ready APK and tested to ensure that it meets +<p>Once you've built your release-ready APK and tested to ensure that it meets the <a href="{@docRoot}distribute/googleplay/edu/guidelines.html">app guidelines</a>, upload it to the Developer Console, create your store listing, and set distribution options. If you aren't familiar with how to prepare for launch on @@ -117,7 +119,8 @@ Google Play, see the <a href="{@docRoot}distribute/googleplay/publish/preparing.html">Launch Checklist</a>. </p> <p>When your app is ready to publish, you can <em>opt-in</em> to Google Play for -Education from the Developer Console. Opt-in means that you want your app to be +Education directly from the <a +href="https://play.google.com/apps/publish/">Developer Console</a>. Opt-in means that you want your app to be made available to educators through Google Play for Education, including review, classification, and approval by our third-party educator network. Note that opt-in does not affect the availability of your app in Google Play Store.</p> @@ -141,18 +144,21 @@ Addendum, make sure to read them before opting-in. </p> opt-in. </li> <li>Under Pricing and Distribution, scroll down to find "Google Play for Education" and the opt-in checkbox. </li> - <li>Click the checkbox next to "Include my app in Google Play for -Education..."</li> - <li>After you've opted-in, find the "Ads" and "In-app purchases" checkboxes below. -Check each checkbox that applies. Your app's use of ads or in-app purchases will + <li>Click the checkbox next to "Include this application in Google Play for +Education."</li> + <li>In the first dialog that appears, review the content policies and guidelines + and click "Continue" if your app meets the the policies and guidelines.</li> + <li>In next dialog that appears, shown below, find the "Ads" and "In-app purchases" radio + buttons. Check each option that applies. Your app's use of ads or in-app purchases will be shown to educators when they are browsing your app. </li> <li>Click "Save" to save your Pricing and Distribution changes.</li> </ol> <div style="clear:both;margin-top:1.5em;margin-bottom:1.5em;width:660px;"> -<img src="{@docRoot}images/gp-edu-optin.png" style="border:2px solid #ddd;width:660px;"> -<p class="image-caption"><span style="font-weight:500;">Opt-in for apps</span>: -Include your app in Google Play for Education by opting-in from the Developer Console.</p> +<img src="{@docRoot}images/gp-edu-ads-iab.png" style="border:2px solid #ddd;width:660px;" /> +<p class="image-caption"><span style="font-weight:500;">Ads and in-app purchase</span>: +When you opt-in to Google Play for Education, make sure to declare your app's use of ads and +in-app purchases.</p> </div> <p>Once you save changes and publish your app, the app will be submitted to our @@ -176,23 +182,20 @@ them discoverable through the Google Play for Education browsing tools. </p> <p>Our third-party educator network will evaluate apps according to educational value and alignment with K-12 core standards, then assign the metadata for -subject, grade level, and core curriculum that makes them easily browseable for +subject, grade level, and core curriculum that makes them easily browsable for educators. To understand how your apps will be evaluated, please see the <a href="{@docRoot}distribute/googleplay/edu/guidelines.html">Guidelines for Apps</a> document.</p> <p>As soon as you opt-in to Google Play for Education and publish, your app is queued for review by our third-party educator network. The review and approval -process can take <strong>3-4 weeks or more</strong>. You'll receive notification +process can take four weeks or more</strong>. You'll receive notification by email (to your developer account address) when the review is complete, with a summary of the review results. </p> -<p class="note"><strong>Note</strong>: Until the full product launch in Fall -2013, please expect the initial review of your app to take longer than usual. -</p> - <p>At any time, you can check the review and approval status of your app in the -Developer Console, under "Google Play for Education" in the app's Pricing and +<a href="https://play.google.com/apps/publish/">Developer Console</a>, under +"Google Play for Education" in the app's Pricing and Distribution page. There are three approval states:</p> <ul> @@ -200,9 +203,6 @@ Distribution page. There are three approval states:</p> is not yet complete.</li> <li><em>Approved</em> — Your app was reviewed and approved. The app will be made available directly to educators through Google Play for Education. -Until the full product launch later this year, your app will be available to a -limited number of educators through the <a -href="{@docRoot}distribute/googleplay/edu/start.html#program">pilot program</a>. Once your app is approved, you can update it at your convenience without needing another full review. </li> <li><em>Not approved</em> — Your app was reviewed and not approved. @@ -215,50 +215,14 @@ discussed in the next section. </p> <h3 id="appeal">5. Get support or appeal your review results</h3> -<p>After your app is reviewed you'll receive an email giving you the review -results, including whether the app was approved, how the app was classified, and +<p>After your app is reviewed you'll receive an email giving you the +results, including information on whether the app was approved and what issues may need to be addressed. You'll receive the email at the address you specified for your developer account. </p> -<p>If you believe your app was reviewed or classified incorrectly, you will be -able to appeal and request reconsideration. Watch for more information on the -appeal process and links in the weeks to come.</p> - -<p class="note"><strong>Note</strong>: Support and appeal forms are not yet -available, but will be available soon.</p> - - -<h2 id="program">Including Your Apps in the Pilot Program</h2> - -<p>Leading up to the Fall 2013 launch, the Google Play for Education team is -conducting an extensive series of pilots that include schools and students across -the United States. Educators in participating schools can browse for apps and -purchase them in bulk, then deploy them instantly to teacher and student -devices. </p> - -<h3 id="pilot">Early opt-in and publishing</h3> -<p>As an app developer, you can take part in the pilot program, getting your app -into the hands of schools and key influencers in the education technology -community. It's a great way to get early feedback on your educational app. </p> - -<p>To offer your app in the pilot program, prepare the app and ensure that it meets -the <a href="{@docRoot}distribute/googleplay/edu/guidelines.html">Guidelines -for Apps</a>. Then opt-in to Google Play for Education and publish as soon -as you are ready. Once your app is approved during review by our third-party -educator network, it will be made available to educators in the pilot program -right away. Note that during the pilot program, the review and approval process -may take longer than usual.</p> - -<h3 id="launch">Full launch to US schools</h3> -<p>The initial launch of Google Play for Education is planned for Fall 2013. The -pilot program and full launch will include schools in the United States only, -with support for schools in other countries to follow. </p> - -<p>At this time, you should include your app in Google Play for Education only -if it is targeting the US K-12 market. </p> - -<h3 id="more">More information</h3> +<p>If your app has issues that need to be addressed, make the necessary +adjustments, upload your app, and then resubmit the app to Google Play for +Education through the Developer Console using process described above. Your app +will be queued for review and you'll receive the review results by email just +as before.</p> -<p>If you'd like to be notified by email of the latest information about Google Play -for Education, visit the <a href="{@docRoot}distribute/googleplay/edu/contact.html"> -Sign Up</a> page and fill out the form. </p>
\ No newline at end of file diff --git a/docs/html/google/play-services/setup.jd b/docs/html/google/play-services/setup.jd index fb656b748115..5c8c63b4da60 100644 --- a/docs/html/google/play-services/setup.jd +++ b/docs/html/google/play-services/setup.jd @@ -110,6 +110,14 @@ dependencies { <img src="{@docRoot}images/tools/sync-project.png" style="vertical-align:bottom;margin:0;height:19px" /> in the toolbar. </li> + <li>Open your app's manifest file and add the following tag as a child of the <a +href="{@docRoot}guide/topics/manifest/application-element.html">{@code <application>}</a> +element: +<pre> +<meta-data android:name="com.google.android.gms.version" + android:value="@integer/google_play_services_version" /> +</pre> + </li> </ol> <p>You can now begin developing features with the @@ -129,6 +137,16 @@ Library Project on the Command Line</a> for more information on how to do this.< You should be referencing a copy of the library that you copied to your development workspace—you should not reference the library directly from the Android SDK directory.</p> +<p>After you've added the Google Play services library as a dependency for your app project, +open your app's manifest file and add the following tag as a child of the <a +href="{@docRoot}guide/topics/manifest/application-element.html">{@code <application>}</a> +element: +<pre> +<meta-data android:name="com.google.android.gms.version" + android:value="@integer/google_play_services_version" /> +</pre> + + <p>Once you've set up your project to reference the library project, you can begin developing features with the <a href="{@docRoot}reference/gms-packages.html">Google Play services APIs</a>.</p> diff --git a/docs/html/guide/topics/manifest/uses-configuration-element.jd b/docs/html/guide/topics/manifest/uses-configuration-element.jd index 810975e1e0df..e9a0ba43081f 100644 --- a/docs/html/guide/topics/manifest/uses-configuration-element.jd +++ b/docs/html/guide/topics/manifest/uses-configuration-element.jd @@ -6,18 +6,18 @@ parent.link=manifest-intro.html <!-- ##api level 3## see comment below --> <!-- the "no___" values are nonsensical if they mean "doesn't work on devices with a -keyboard / navigation control / touch screen." Dianne says that that's what they mean and -that they therefore should be eliminated. Suchi says that they mean "doesn't require a +keyboard / navigation control / touch screen." Dianne says that that's what they mean and +that they therefore should be eliminated. Suchi says that they mean "doesn't require a keyboard / navigation control / touch screen to work." But then what does "undefined" mean? Seems like some API change is in the works, either eliminating the "no___" values or -"undefined". Since it's unclear what the change will be, I've chosen to document the "no___" +"undefined". Since it's unclear what the change will be, I've chosen to document the "no___" and "undefined" attributes using the same language, which is surely wrong but may make it -easier to update the doc when the change is made. --> +easier to update the doc when the change is made... Nov 2013, this still seems unresolved. --> <dl class="xml"> <dt>syntax:</dt> <dd><pre class="stx"><uses-configuration - android:<a href="#five">reqFiveWayNav</a>=["true" | "false"] + android:<a href="#five">reqFiveWayNav</a>=["true" | "false"] android:<a href="#hard">reqHardKeyboard</a>=["true" | "false"] android:<a href="#kbd">reqKeyboardType</a>=["undefined" | "nokeys" | "qwerty" | "twelvekey"] android:<a href="#nav">reqNavigation</a>=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"] @@ -27,38 +27,35 @@ easier to update the doc when the change is made. --> <dd><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code></dd> <dt>description:</dt> -<dd>Indicates what hardware and software features the application requires. -For example, an application might specify that it requires a physical keyboard +<dd>Indicates what hardware and software features the application requires. +For example, an application might specify that it requires a physical keyboard or a particular navigation device, like a trackball. The specification is used to avoid installing the application on devices where it will not work. -<p> -If an application can work with different device configurations, it -should include separate {@code <uses-configuration>} declarations for -each one. Each declaration must be complete. For example, if an application -requires a five-way navigation control, a touch screen that can be operated -with a finger, and either a standard QWERTY keyboard or a numeric 12-key -keypad like those found on most phones, it would specify these requirements -with two {@code <uses-configuration>} elements as follows: -</p> +<p class="note"><strong>Note: Most apps should not use this manifest tag.</strong> You should +<em>always</em> support input with a directional pad (d-pad) in order to assist sight-impaired +users and support devices that provide d-pad input in addition to or instead of touch. For +information about how to support d-pad input in your app, read <a href= +"{@docRoot}guide/topics/ui/accessibility/apps.html#focus-nav">Enabling Focus Navigation</a>. If +your app absolutely cannot function without a touchscreen, then instead use the <a href= +"{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code <uses-feature>}</a> tag to +declare the required touchscreen type, ranging from {@code "android.hardware.faketouch"} for basic +touch-style events to more advanced touch types such as {@code +"android.hardware.touchscreen.multitouch.jazzhand"} for distinct input from multiple fingers.</p> -<pre><uses-configuration android:reqFiveWayNav="true" android:reqTouchScreen="finger" - android:reqKeyboardType="qwerty" /> -<uses-configuration android:reqFiveWayNav="true" android:reqTouchScreen="finger" - android:reqKeyboardType="twelvekey" /></pre></dd> <dt>attributes:</dt> <dd><dl class="attr"> <dt><a name="five"></a>{@code android:reqFiveWayNav}</dt> -<dd>Whether or not the application requires a five-way navigation control +<dd>Whether or not the application requires a five-way navigation control — "{@code true}" if it does, and "{@code false}" if not. A five-way -control is one that can move the selection up, down, right, or left, and -also provides a way of invoking the current selection. It could be a -D-pad (directional pad), trackball, or other device. +control is one that can move the selection up, down, right, or left, and +also provides a way of invoking the current selection. It could be a +D-pad (directional pad), trackball, or other device. <p> If an application requires a directional control, but not a control of a -particular type, it can set this attribute to "{@code true}" and ignore +particular type, it can set this attribute to "{@code true}" and ignore the <code><a href="#nav">reqNavigation</a></code> attribute. However, if it requires a particular type of directional control, it can ignore this attribute and set {@code reqNavigation} instead. @@ -69,10 +66,10 @@ this attribute and set {@code reqNavigation} instead. "{@code true}" if it does, and "{@code false}" if not.</dd> <dt><a name="kbd"></a>{@code android:reqKeyboardType}</dt> -<dd>The type of keyboard the application requires, if any at all. -This attribute does not distinguish between hardware and software +<dd>The type of keyboard the application requires, if any at all. +This attribute does not distinguish between hardware and software keyboards. If a hardware keyboard of a certain type is required, -specify the type here and also set the {@code reqHardKeyboard} attribute +specify the type here and also set the {@code reqHardKeyboard} attribute to "{@code true}". <p> @@ -85,8 +82,8 @@ The value must be one of the following strings: <th>Description</th> </tr><tr> <td>"{@code undefined}"</td> - <td>The application does not require a keyboard. - (A keyboard requirement is not defined.) + <td>The application does not require a keyboard. + (A keyboard requirement is not defined.) This is the default value.</td> </tr><tr> <td>"{@code nokeys}"</td> @@ -96,14 +93,14 @@ The value must be one of the following strings: <td>The application requires a standard QWERTY keyboard.</td> </tr><tr> <td>"{@code twelvekey}"</td> - <td>The application requires a twelve-key keypad, like those on most - phones — with keys for the digits from {@code 0} through + <td>The application requires a twelve-key keypad, like those on most + phones — with keys for the digits from {@code 0} through {@code 9} plus star ({@code *}) and pound ({@code #}) keys.</td> </tr> </table></dd> <dt><a name="nav"></a>{@code android:reqNavigation}</dt> -<dd>The navigation device required by the application, if any. The value +<dd>The navigation device required by the application, if any. The value must be one of the following strings: <table> @@ -112,8 +109,8 @@ must be one of the following strings: <th>Description</th> </tr><tr> <td>"{@code undefined}"</td> - <td>The application does not require any type of navigation control. - (The navigation requirement is not defined.) + <td>The application does not require any type of navigation control. + (The navigation requirement is not defined.) This is the default value.</td> </tr><tr> <td>"{@code nonav}"</td> @@ -132,14 +129,14 @@ must be one of the following strings: <p> If an application requires a navigational control, but the exact type of -control doesn't matter, it can set the +control doesn't matter, it can set the <code><a href="#five">reqFiveWayNav</a></code> attribute to "{@code true}" rather than set this one. </p></dd> <dt><a name="touch"></a>{@code android:reqTouchScreen}</dt> <dd>The type of touch screen the application requires, if any at all. -The value must be one of the following strings: +The value must be one of the following strings: <table> <tr> @@ -147,7 +144,7 @@ The value must be one of the following strings: <th>Description</th> </tr><tr> <td>"{@code undefined}"</td> - <td>The application doesn't require a touch screen. + <td>The application doesn't require a touch screen. (The touch screen requirement is undefined.) This is the default value.</td> </tr><tr> @@ -158,7 +155,14 @@ The value must be one of the following strings: <td>The application requires a touch screen that's operated with a stylus.</td> </tr><tr> <td>"{@code finger}"</td> - <td>The application requires a touch screen that can be operated with a finger.</td> + <td>The application requires a touch screen that can be operated with a finger. + + <p class="note"><strong>Note:</strong> If some type of touch input is required for your app, + you should instead use the + <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code + <uses-feature>}</a> tag to declare the required touchscreen + type, beginning with {@code "android.hardware.faketouch"} for basic touch-style events.</p> + </td> </tr> </table></dd> </dl></dd> @@ -172,7 +176,7 @@ The value must be one of the following strings: <ul> <li><code><a href="{@docRoot}guide/topics/manifest/activity-element.html#config">configChanges</a></code> attribute of the -<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> +<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> element</dd></li> <li>{@link android.content.pm.ConfigurationInfo}</li> </ul> diff --git a/docs/html/images/gp-edu-ads-iab.png b/docs/html/images/gp-edu-ads-iab.png Binary files differnew file mode 100644 index 000000000000..07ccaee61222 --- /dev/null +++ b/docs/html/images/gp-edu-ads-iab.png diff --git a/docs/html/images/gp-edu-apps-n7.jpg b/docs/html/images/gp-edu-apps-n7.jpg Binary files differnew file mode 100644 index 000000000000..c2e3e21d34af --- /dev/null +++ b/docs/html/images/gp-edu-apps-n7.jpg diff --git a/docs/html/images/gp-edu-hero14.jpg b/docs/html/images/gp-edu-hero14.jpg Binary files differnew file mode 100644 index 000000000000..69b02e25e956 --- /dev/null +++ b/docs/html/images/gp-edu-hero14.jpg diff --git a/docs/html/images/gp-edu-hero7.png b/docs/html/images/gp-edu-hero7.png Binary files differdeleted file mode 100644 index 84abdef5053d..000000000000 --- a/docs/html/images/gp-edu-hero7.png +++ /dev/null diff --git a/docs/html/images/gp-edu-knum-landscape.png b/docs/html/images/gp-edu-knum-landscape.png Binary files differdeleted file mode 100644 index aaec6dc18baa..000000000000 --- a/docs/html/images/gp-edu-knum-landscape.png +++ /dev/null diff --git a/docs/html/index.jd b/docs/html/index.jd index 5c805f854930..3e59068f3e22 100644 --- a/docs/html/index.jd +++ b/docs/html/index.jd @@ -14,78 +14,62 @@ page.customHeadTag=<meta name="google-site-verification" content="sa-bIAI6GKvct3 <a href="" class="slideshow-next">Next</a> <div class="frame"> <ul> + <!-- set explicit widths as needed to prevent overflow issues --> <li class="item carousel-home"> - <div class="content-left col-7"> - <a href="/about/versions/kitkat.html"><img src="/images/home/kk-hero.jpg" style="width:242px;padding-top:72px;"></a> - </div> - <div class="content-right col-6"> + <div class="content-left col-7" style="width:400px;"> + <a href="{@docRoot}about/versions/kitkat.html"> + <img src="{@docRoot}images/home/kk-hero.jpg" width="242" style="padding-top:72px;"> + </a> + </div> + <div class="content-right col-4" style="width:340px;"> <h1>Android 4.4 KitKat!</h1> <p>A new version of Android is here, with great new features, APIs, and tools for developers.</p> <p>Android 4.4 is built to run on more devices than ever before, and gives you more ways to showcase your content and create beautiful, useful, and innovative apps.</p> <p>Learn about what's new in the Platform Highlights and see the API Overview for details.</p> - <p><a href="/about/versions/kitkat.html" class="button">Check out the highlights</a></p> - </div> + <p><a href="{@docRoot}about/versions/kitkat.html" class="button">Check out the highlights</a></p> + </div> </li> <li class="item carousel-home"> - <div class="content-left col-11" style="padding-top:65px;"> - <a href="https://www.youtube.com/watch?v=sONcojECWXs&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K&index=1"> - <img src="/images/title-devbytes-kk.jpg" style="margin-top:22px;width:600px;"> - </a> - </div> - - <div class="content-right col-4"> + <div class="content-left col-11" style="padding-top:65px;"> + <a href="https://www.youtube.com/watch?v=sONcojECWXs&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K&index=1"> + <img src="{@docRoot}images/title-devbytes-kk.jpg" style="margin-top:0px;width:600px;"> + </a> + </div> + <div class="content-right col-4"> <h1 style="white-space:nowrap;line-height:1.2em;">DevBytes: <br />Android 4.4</h1> <p>Join the DevBytes team for a look at what's new in Android 4.4 KitKat — new ways to make your apps beautiful, printing, storage access framework, and more.</p> <p><a href="https://www.youtube.com/watch?v=sONcojECWXs&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K&index=1" class="button">Watch the video </a></p> - </div> + </div> </li> - <li class="item carousel-home"> - <div class="content-left col-10"><a href="/design/patterns/new.html"> - <img src="/design/media/design_elements_landing.png" style="margin-top:30px"> - </a> - </div> - <div class="content-right col-5"> + <div class="content-left col-19" style="width:580px;"> + <a href="{@docRoot}design/patterns/new.html"> + <img src="{@docRoot}design/media/design_elements_landing.png" style="margin-top:30px"> + </a> + </div> + <div class="content-right col-4" style="width:280px;"> <h1>Design for Android KitKat</h1> <p>Android KitKat brings a refreshed UI with updated styles, patterns, and gestures to use in your apps. </p> <p>We've updated the Android Design guidelines and added new pages on branding, fullscreen, and more. </p> - <p><a href="/design/patterns/new.html" class="button">See what's new</a></p> - </div> + <p><a href="{@docRoot}design/patterns/new.html" class="button">See what's new</a></p> + </div> </li> - <!--<li class="item carousel-home"> - <div class="content-left col-11" style="padding-top:65px;"> - <a href="http://www.youtube.com/watch?v=6QHkv-bSlds&list=PLWz5rJ2EKKc8j2B95zGMb8muZvrIy-wcF&index=1"> - <img src="/images/title-adia-kk.png" style="margin-top:22px;width:600px;"> - </a> - </div> - - <div class="content-right col-4"> + <li class="item carousel-home"> + <div class="content-left col-11" style="padding-top:65px;"> + <a href="http://www.youtube.com/watch?v=6QHkv-bSlds&list=PLWz5rJ2EKKc8j2B95zGMb8muZvrIy-wcF&index=1"> + <img src="{@docRoot}images/title-adia-kk.png" style="margin-top:0px;width:600px;"> + </a> + </div> + <div class="content-right col-4"> <h1 style="white-space:nowrap;line-height:1.2em;">ADIA: <br />Android 4.4</h1> </p>Join the Android Design in Action team for a walkthrough of new developer features, UX changes, and updates to design guidelines in Android 4.4.</p> <p><a href="http://www.youtube.com/watch?v=6QHkv-bSlds&list=PLWz5rJ2EKKc8j2B95zGMb8muZvrIy-wcF&index=1" class="button">Watch the video </a></p> - </div> - </li> --> - <!-- <li class="item carousel-home"> - <div class="content-left col-11" style="padding-top:10px;"> - <a href="/channels/io2013.html"> - <img src="/images/home/io-videos-2013.png" style="margin:60px 0 0; - box-shadow: 3px 10px 18px 1px #999;"> - </a> - </div> - <div class="content-right col-4"> - <h1>Hands-on with New KitKat Features</h1> - <p>If you weren't able to attend Google I/O in person or couldn't make it - to all the talks, you can catch up on the action - with all the recordings, brought to you by - <a href="http://developers.google.com/live">Google Developers Live</a>.</p> - <p><a href="/channels/io2013.html" class="button" - >See the Android talks</a></p> - </div> - </li> --> + </div> + </li> </ul> </div> </div> diff --git a/docs/html/sdk/installing/studio.jd b/docs/html/sdk/installing/studio.jd index cba234683268..d57d75b0dfda 100644 --- a/docs/html/sdk/installing/studio.jd +++ b/docs/html/sdk/installing/studio.jd @@ -253,36 +253,36 @@ download (or continue to use) the <td>Windows</td> <td> <a onclick="return onDownload(this)" id="win-studio" - href="http://dl.google.com/android/studio/android-studio-bundle-132.883541-windows.exe"> - android-studio-bundle-132.883541-windows.exe + href="http://dl.google.com/android/studio/install/0.3.2/android-studio-bundle-132.893413-windows.exe"> + android-studio-bundle-132.893413-windows.exe </a> </td> - <td>448245492 bytes</td> - <td>ca5f5c4d21b4350ddf3bda7021a6ee5e</td> + <td>484345454 bytes</td> + <td>14cbf0109a822688f4e2f886c0b0c85a</td> </tr> <tr> <td><nobr>Mac OS X</nobr></td> <td> <a onclick="return onDownload(this)" id="mac-studio" - href="http://dl.google.com/android/studio/android-studio-bundle-132.883541-mac.dmg"> - android-studio-bundle-132.883541-mac.dmg + href="http://dl.google.com/android/studio/install/0.3.2/android-studio-bundle-132.893413-mac.dmg"> + android-studio-bundle-132.893413-mac.dmg </a> </td> - <td>427317993 bytes</td> - <td>67831af6e7896a0a146d43423fabb542</td> + <td>463332508 bytes</td> + <td>0cd4ac59864890f7de57314bcc7ea5aa</td> </tr> <tr> <td>Linux</td> <td> <a onclick="return onDownload(this)" id="linux-studio" - href="http://dl.google.com/android/studio/android-studio-bundle-132.883541-linux.tgz"> - android-studio-bundle-132.883541-linux.tgz + href="http://dl.google.com/android/studio/install/0.3.2/android-studio-bundle-132.893413-linux.tgz"> + android-studio-bundle-132.893413-linux.tgz </a> </td> - <td>451652493 bytes</td> - <td>7a6f9b12b2cd5321ab0818b51306e01c</td> + <td>487694946 bytes</td> + <td>9f1306100314b03ff5b691b94f154501</td> </tr> </table> @@ -424,7 +424,7 @@ style="vertical-align:bottom;margin:0;height:19px" /> in the toolbar.</p> <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=""/>Android Studio v0.3.1</a> <em>(Oct 2013)</em> + alt=""/>Android Studio v0.3.2</a> <em>(Oct 2013)</em> </p> <div class="toggle-content-toggleme"> @@ -618,7 +618,7 @@ for possible resolutions to known issues: <a href="http://tools.android.com/know if (os) { /* set up primary ACE download button */ $('#download-ide-button').show(); - $('#download-ide-button').append("Download Android Studio <span class='small'>v0.3.1</span>" + $('#download-ide-button').append("Download Android Studio <span class='small'>v0.3.2</span>" + "<br/> <span class='small'>for " + os + "</span>"); $('#download-ide-button').click(function() {return onDownload(this,true);}).attr('href', bundlename); diff --git a/docs/html/sdk/win-usb.jd b/docs/html/sdk/win-usb.jd index 5ca38c6ccf33..c287a0cf6bcd 100644 --- a/docs/html/sdk/win-usb.jd +++ b/docs/html/sdk/win-usb.jd @@ -191,27 +191,19 @@ This is the Android Software Development Kit License Agreement </div> </div> -<p>The Google USB Driver is for <strong>Windows only</strong> and provides the -necessary drivers for the following devices:</p> - <ul> - <li>ADP1 / T-Mobile G1*</li> - <li>ADP2 / Google Ion / T-Mobile myTouch 3G*</li> - <li>Verizon Droid*</li> - <li>Nexus One</li> - <li>Nexus S</li> - <li>Nexus 4</li> - <li>Nexus 7</li> - <li>Nexus 10</li> - </ul> - <p>* <em>Or similar hardware on other carriers</em></p> - - <p>All other devices require Windows drivers provided by the respective hardware manufacturer, - as listed in the <a href="{@docRoot}tools/extras/oem-usb.html">OEM USB Drivers</a> document.</p> - - <p>The Galaxy Nexus driver is distributed by <a +<p>The Google USB Driver is <strong>required for Windows only</strong> in order to perform +<a href="{@docRoot}tools/help/adb.html">adb</a> debugging with any of +the <strong>Google Nexus devices</strong>. The one exception is the +Galaxy Nexus: the driver for Galaxy Nexus is distributed by <a href="http://www.samsung.com/us/support/downloads/verizon-wireless/SCH-I515MSAVZW">Samsung</a> (listed as model SCH-I515).</p> +<p>Windows drivers for all other devices are provided by the respective hardware +manufacturer, as listed in the <a href="{@docRoot}tools/extras/oem-usb.html">OEM USB Drivers</a> +document.</p> + + + <p class="note"><strong>Note:</strong> If you're developing on Mac OS X or Linux, then you <strong>do not</strong> need to install a USB driver. To start developing with your device, read diff --git a/docs/html/tools/debugging/debugging-tracing.jd b/docs/html/tools/debugging/debugging-tracing.jd index 8653da664ba1..bd4afbcc1de1 100644 --- a/docs/html/tools/debugging/debugging-tracing.jd +++ b/docs/html/tools/debugging/debugging-tracing.jd @@ -38,8 +38,7 @@ parent.link=index.html <h2 id="traceviewLayout">Traceview Layout</h2> <p>When you have a trace log file (generated by adding tracing code to your application or by DDMS), - you can have Traceview load the log files and display their data in a window visualizes your application - in two panels:</p> + you can load the log files in Traceview, which displays the log data in two panels:</p> <ul> <li>A <a href="#timelinepanel">timeline panel</a> -- describes when each thread and method @@ -53,12 +52,11 @@ parent.link=index.html <h3 id="timelinepanel">Timeline Panel</h3> - <p>The image below shows a close up of the timeline panel. Each thread’s execution is shown + <p>Figure 1 shows a close up of the timeline panel. Each thread’s execution is shown in its own row, with time increasing to the right. Each method is shown in another color (colors are reused in a round-robin fashion starting with the methods that have the most inclusive time). The thin lines underneath the first row show the extent (entry to exit) of all the calls to the - selected method. The method in this case is <code>LoadListener.nativeFinished()</code> and it was selected in - the profile view.</p> + selected method.</p> <img src="{@docRoot}images/traceview_timeline.png" alt="Traceview timeline panel" @@ -94,23 +92,31 @@ parent.link=index.html <p>There are two ways to generate trace logs:</p> <ul> <li>Include the {@link android.os.Debug} class in your code and call its - methods to start and stop logging of trace information to disk. This method is very precise because - you can specify in your code exactly where to start and stop logging trace data.</li> - <li>Use the method profiling feature of DDMS to generate trace logs. This method is less - precise since you do not modify code, but rather specify when to start and stop logging with - a DDMS. Although you have less control on exactly where the data is logged, this method is useful - if you don't have access to the application's code, or if you do not need the precision of the first method. + methods such as {@link android.os.Debug#startMethodTracing()} and {@link + android.os.Debug#stopMethodTracing()}, to start and stop logging of trace information to disk. + This option is very precise because + you can specify exactly where to start and stop logging trace data in your code.</li> + <li>Use the method profiling feature of DDMS to generate trace logs. This option is less + precise because you do not modify code, but rather specify when to start and stop logging with + DDMS. Although you have less control on exactly where logging starts and stops, + this option is useful if you don't have access to the application's code, or if you do + not need precise log timing. </li> </ul> <p>Before you start generating trace logs, be aware of the following restrictions:</p> <ul> - <li>If you are using the {@link android.os.Debug} class, your device or emulator must have an SD card - and your application must have permission to write to the SD card. </li> - <li>If you are using DDMS, Android 2.1 and earlier devices must + <li>If you are using the {@link android.os.Debug} class, + your application must have permission to write to external storage + ({@link android.Manifest.permission#READ_EXTERNAL_STORAGE}). </li> + <li>If you are using DDMS: + <ul> + <li>Android 2.1 and earlier devices must have an SD card present and your application must have permission to write to the SD card. - <li>If you are using DDMS, Android 2.2 and later devices do not need an SD card. The trace log files are + <li>Android 2.2 and later devices do not need an SD card. The trace log files are streamed directly to your development machine.</li> + </ul> + </li> </ul> <p>This document focuses on using the {@link android.os.Debug} class to generate trace data. For more information on using DDMS @@ -134,22 +140,22 @@ parent.link=index.html Debug.stopMethodTracing(); </pre> - <p>When your application calls startMethodTracing(), the system creates a file called + <p>When your application calls {@link android.os.Debug#startMethodTracing() startMethodTracing()}, + the system creates a file called <code><trace-base-name>.trace</code>. This contains the binary method trace data and a mapping table with thread and method names.</p> <p>The system then begins buffering the generated trace data, until your application calls - stopMethodTracing(), at which time it writes the buffered data to the output file. If the system - reaches the maximum buffer size before stopMethodTracing() is called, the system stops tracing + {@link android.os.Debug#stopMethodTracing() stopMethodTracing()}, at which time it writes + the buffered data to the output file. If the system + reaches the maximum buffer size before you call {@link android.os.Debug#stopMethodTracing() + stopMethodTracing()}, the system stops tracing and sends a notification to the console.</p> - <p>Interpreted code will run more slowly when profiling is enabled. Don't try to generate - absolute timings from the profiler results (i.e. "function X takes 2.5 seconds to run"). The + <p>Interpreted code runs more slowly when profiling is enabled. Don't try to generate + absolute timings from the profiler results (such as, "function X takes 2.5 seconds to run"). The times are only useful in relation to other profile output, so you can see if changes have made - the code faster or slower.</p> - - <p>When using the Android emulator, you must specify an SD card when you create your AVD because the trace files - are written to the SD card. Your application must have permission to write to the SD card as well. + the code faster or slower relative to a previous profiling run.</p> <h2 id="copyingfiles">Copying Trace Files to a Host Machine</h2> @@ -189,7 +195,7 @@ traceview /tmp/calc "{@docRoot}images/tracedump.png" width="485" height="401" /> - <p class="image-caption"><strong>Figure 3.</strong> Screenshot of dmtracedump</p> + <p class="img-caption"><strong>Figure 3.</strong> Screenshot of dmtracedump</p> <p>For each node, dmtracedump shows <code><ref> <em>callname</em> (<inc-ms>, <exc-ms>,<numcalls>)</code>, where</p> diff --git a/docs/html/tools/support-library/setup.jd b/docs/html/tools/support-library/setup.jd index 73d946891c87..2d2065ad089e 100644 --- a/docs/html/tools/support-library/setup.jd +++ b/docs/html/tools/support-library/setup.jd @@ -180,8 +180,8 @@ project</a> based on the support library code:</p> file and select <strong>Build Path > Add to Build Path</strong>. For example, when creating the the v7 appcompat project, add both the {@code android-support-v4.jar} and {@code android-support-v7-appcompat.jar} files to the build path.</li> - <li>Right-click the project and select <strong>Build Path > Configure Build Path</strong>. - </li> + <li>Right-click the library project folder and select <strong>Build Path > Configure + Build Path</strong>.</li> <li>In the <strong>Order and Export</strong> tab, check the <code>.jar</code> files you just added to the build path, so they are available to projects that depend on this library project. For example, the {@code appcompat} project requires you to export both the @@ -197,12 +197,13 @@ project</a> based on the support library code:</p> <p>Add the library to your application project:</p> <ol> - <li>In the Project Explorer, right-click your project and select <strong>Properties</strong>. - <li>In the Library pane, click <strong>Add</strong>. + <li>In the Project Explorer, right-click your project and select <strong>Properties</strong>.</li> + <li>In the category panel on the left side of the dialog, select <strong>Android</strong>.</li> + <li>In the Library pane, click the <strong>Add</strong> button.</li> <li>Select the library project and click <strong>OK</strong>. For example, the {@code appcompat} project should be listed as <strong>android-support-v7-appcompat</strong>. </li> - <li>In the properties window, click <strong>OK</strong>. + <li>In the properties window, click <strong>OK</strong>.</li> </ol> </div> |