diff options
author | Dirk Dougherty <ddougherty@google.com> | 2012-10-03 01:23:54 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-10-03 01:23:54 -0700 |
commit | fd28053d5eef6971ac05bd5cd4b71656e9266145 (patch) | |
tree | dbef4dea4efa2d1a9d21a84666ff57387ecf7f4e | |
parent | 3f0a57dcd9a060bb3b2b35da4d2ac6cb42733fef (diff) | |
parent | bd26b2fb753d47c27e181ca821f2fd62252b5ba1 (diff) | |
download | frameworks_base-fd28053d5eef6971ac05bd5cd4b71656e9266145.zip frameworks_base-fd28053d5eef6971ac05bd5cd4b71656e9266145.tar.gz frameworks_base-fd28053d5eef6971ac05bd5cd4b71656e9266145.tar.bz2 |
am bd26b2fb: am 5958cb0d: am c395f4a3: Doc change: Add core quality and tablet quality docs, tablet developer stories.
* commit 'bd26b2fb753d47c27e181ca821f2fd62252b5ba1':
Doc change: Add core quality and tablet quality docs, tablet developer stories.
-rw-r--r-- | docs/html/distribute/distribute_toc.cs | 36 | ||||
-rw-r--r-- | docs/html/distribute/googleplay/about/monetizing.jd | 5 | ||||
-rw-r--r-- | docs/html/distribute/googleplay/publish/preparing.jd | 93 | ||||
-rw-r--r-- | docs/html/distribute/googleplay/quality/core.jd | 783 | ||||
-rw-r--r-- | docs/html/distribute/googleplay/quality/index.jd | 46 | ||||
-rw-r--r-- | docs/html/distribute/googleplay/quality/tablet.jd | 555 | ||||
-rw-r--r-- | docs/html/distribute/googleplay/spotlight/index.jd | 46 | ||||
-rw-r--r-- | docs/html/distribute/googleplay/spotlight/tablets.jd | 283 | ||||
-rw-r--r-- | docs/html/distribute/googleplay/strategies/app-quality.jd | 33 | ||||
-rw-r--r-- | docs/html/images/distribute/instapaper.png | bin | 0 -> 359093 bytes | |||
-rw-r--r-- | docs/html/images/distribute/mint.png | bin | 0 -> 471615 bytes | |||
-rw-r--r-- | docs/html/images/distribute/tinyvillage.png | bin | 0 -> 945561 bytes | |||
-rw-r--r-- | docs/html/images/ui-ex-multi-pane.png | bin | 0 -> 10074 bytes | |||
-rw-r--r-- | docs/html/images/ui-ex-single-panes.png | bin | 0 -> 11434 bytes |
14 files changed, 1827 insertions, 53 deletions
diff --git a/docs/html/distribute/distribute_toc.cs b/docs/html/distribute/distribute_toc.cs index 84103b9..ad3121c 100644 --- a/docs/html/distribute/distribute_toc.cs +++ b/docs/html/distribute/distribute_toc.cs @@ -28,9 +28,7 @@ <li><a href="<?cs var:toroot ?>distribute/googleplay/publish/preparing.html"> <span class="en">Publishing Checklist</span> </a></li> - <li><a href="<?cs var:toroot ?>distribute/googleplay/strategies/app-quality.html"> - <span class="en">App Quality</span> - </a></li> + </ul> </li> @@ -79,6 +77,26 @@ </ul> </li> + + <li class="nav-section"> + <div class="nav-section-header"><a href="<?cs var:toroot ?>distribute/googleplay/quality/index.html"> + <span class="en">App Quality</span></a> + </div> + <ul> + <li><a href="<?cs var:toroot ?>distribute/googleplay/quality/core.html"> + <span class="en">Core App Quality</span> + </a></li> + <li><a href="<?cs var:toroot ?>distribute/googleplay/quality/tablet.html"> + <span class="en">Tablet App Quality</span> + </a></li> + <li><a href="<?cs var:toroot ?>distribute/googleplay/strategies/app-quality.html"> + <span class="en">Improving App Quality</span> + </a></li> + + </ul> + </li> + + <!-- <li class="nav-section"> <div class="nav-section-header"><a href="<?cs var:toroot ?>distribute/googleplay/after.html"> @@ -92,17 +110,17 @@ </li> --> -<!-- <li class="nav-section"> - <div class="nav-section-header"><a href="<?cs var:toroot ?>distribute/googleplay/strategies/index.html"> - <span class="en">Strategies</span></a> + <div class="nav-section-header"><a href="<?cs var:toroot ?>distribute/googleplay/spotlight/index.html"> + <span class="en">Spotlight</span></a> </div> <ul> - <li><a href="<?cs var:toroot ?>distribute/googleplay/strategies/featuring.html">Featuring</a></li> - <li><a href="<?cs var:toroot ?>distribute/googleplay/strategies/app-quality.html">App Quality</a></li> + <li><a href="<?cs var:toroot ?>distribute/googleplay/spotlight/tablets.html"> + <span class="en">Tablet Stories</span> + </a></li> </ul> </li> ---> + <li class="nav-section"> <div class="nav-section-header empty"> <a href="<?cs var:toroot ?>distribute/open.html"> diff --git a/docs/html/distribute/googleplay/about/monetizing.jd b/docs/html/distribute/googleplay/about/monetizing.jd index 4980eda..d5c6dfa 100644 --- a/docs/html/distribute/googleplay/about/monetizing.jd +++ b/docs/html/distribute/googleplay/about/monetizing.jd @@ -42,7 +42,7 @@ manages the application download.</p> <h3 id="payment-methods">Convenient payment options</h3> <p>Users can purchase your products on Google Play using several convenient -payment methods—credit cards, Direct Carrier Billing, and Google Play balance.</p> +payment methods—credit cards, Direct Carrier Billing, gift cards, and Google Play balance.</p> <p><span style="font-weight:500">Credit card</span> is the most common method of payment. Users can pay using any credit card that they’ve registered in Google Play. To make it easy for users to get started, @@ -52,8 +52,9 @@ registration is offered as a part of initial device setup process.</p> <div class="sidebox"> <h2>Payment methods on Google Play</h2> <ul> -<li>Credit Card</li> +<li>Credit card</li> <li>Direct Carrier Billing</li> +<li>Gift card</li> <li>Google Play balance (stored value)</li> </ul> </div> diff --git a/docs/html/distribute/googleplay/publish/preparing.jd b/docs/html/distribute/googleplay/publish/preparing.jd index 6ea0f53..463343d 100644 --- a/docs/html/distribute/googleplay/publish/preparing.jd +++ b/docs/html/distribute/googleplay/publish/preparing.jd @@ -6,20 +6,21 @@ page.title=Publishing Checklist for Google Play <ol> <li><a href="#process">1. Understand the publishing process</a></li> <li><a href="#policies">2. Understand Google Play policies</a></li> -<li><a href="#rating">3. Determine your content rating</a></li> -<li><a href="#countries">4. Determine country distribution</a></li> -<li><a href="#size">5. Confirm the app's overall size</a></li> -<li><a href="#compatibility">6. Confirm app compatibility ranges</a></li> -<li><a href="#free-priced">7. Decide on free or priced</a></li> -<li><a href="#inapp-billing">8. Consider In-app Billing</a></li> -<li><a href="#pricing">9. Set prices for your apps</a></li> -<li><a href="#localize">10. Start localization</a></li> -<li><a href="#localize">11. Prepare promotional graphics</a></li> -<li><a href="#apk">12. Build the release-ready APK</a></li> -<li><a href="#product-page">13. Complete the product details</a></li> -<li><a href="#badges">14. Use Google Play badges and links to your promotional campaigns</a></li> -<li><a href="#final-checks">15. Final checks and publishing</a></li> -<li><a href="#support">16. Support users after launch</a></li> +<li><a href="#core-app-quality">3. Test for Core App Quality</a></li> +<li><a href="#rating">4. Determine your content rating</a></li> +<li><a href="#countries">5. Determine country distribution</a></li> +<li><a href="#size">6. Confirm the app's overall size</a></li> +<li><a href="#compatibility">7. Confirm app compatibility ranges</a></li> +<li><a href="#free-priced">8. Decide on free or priced</a></li> +<li><a href="#inapp-billing">9. Consider In-app Billing</a></li> +<li><a href="#pricing">10. Set prices for your apps</a></li> +<li><a href="#localize">11. Start localization early</a></li> +<li><a href="#localize">12. Prepare promotional graphics</a></li> +<li><a href="#apk">13. Build the release-ready APK</a></li> +<li><a href="#product-page">14. Complete the product details</a></li> +<li><a href="#badges">15. Use Google Play badges</a></li> +<li><a href="#final-checks">16. Final checks and publishing</a></li> +<li><a href="#support">17. Support users after launch</a></li> </ol> </div></div> @@ -86,7 +87,39 @@ violations, termination of your developer account. </p> </tr> </table> -<h2 id="rating">3. Determine your app's content rating</h2> +<h2 id="core-app-quality">3. Test for Core App Quality</h2> + +<p>Before you publish an app on Google Play, it's important to make sure that +it meets the basic quality expectations for all Android apps, on all of the devices that you +are targeting. You can check your app's quality by setting up a test +environment and testing the app against a short set of <strong>core app quality criteria</strong>. +For complete information, see the <a +href="{@docRoot}distribute/googleplay/quality/core.html">Core App Quality Guidelines</a>. +</p> + +<p>If your app is targeting tablet devices, make sure that it delivers a rich, compelling +experience to your tablet customers. See the <a +href="{@docRoot}distribute/googleplay/quality/tablet.html">Tablet App Quality Checklist</a> +for recommendations on ways to optimize your app for tablets.</p> + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a +href="{@docRoot}distribute/googleplay/quality/core.html">Core App Quality +Guidelines</a></strong> — A set of core quality criteria that all Android +apps should meet on all targeted devices.</li> +<li><strong><a +href="{@docRoot}distribute/googleplay/quality/tablet.html">Tablet App Quality +Checklist</a></strong> — A set recommendations for delivering the best +possible experience to tablet users.</li> +</ul> +</td> +</tr> +</table> + +<h2 id="rating">4. Determine your app's content rating</h2> <p>Google Play requires you to set a content rating for your app, which informs Google Play users of its maturity level. Before you publish, you should confirm @@ -115,7 +148,7 @@ are required in your app binary.</p> </tr> </table> -<h2 id="countries">4. Determine country distribution</h2> +<h2 id="countries">5. Determine country distribution</h2> <p>Google Play lets you control what countries and territories your app is distributed to. For widest reach and the largest potential customer base, you @@ -149,7 +182,7 @@ launch target date.</p> </tr> </table> -<h2 id="size">5. Confirm the app's overall size</h2> +<h2 id="size">6. Confirm the app's overall size</h2> <p>The overall size of your app can affect its design and how you publish it on Google Play. Currently, the maximum size for an APK published on Google Play is @@ -180,7 +213,7 @@ creating your release-ready APK.</p> </tr> </table> -<h2 id="compatibility">6. Confirm the app's platform and screen compatibility ranges</h2> +<h2 id="compatibility">7. Confirm the app's platform and screen compatibility ranges</h2> <p>Before publishing, it's important to make sure that your app is designed to run properly on the Android platform versions and device screen sizes that you @@ -217,7 +250,7 @@ charts.</p> </tr> </table> -<h2 id="free-priced">7. Decide whether your app will be free or priced</h2> +<h2 id="free-priced">8. Decide whether your app will be free or priced</h2> <p>On Google Play, you can publish apps as free to download or priced. Free apps can be downloaded by any Android user in Google Play. @@ -249,7 +282,7 @@ you need set up a Checkout Merchant Account before you can publish.</p> </tr> </table> -<h2 id="inapp-billing">8. Consider using In-app Billing</h2> +<h2 id="inapp-billing">9. Consider using In-app Billing</h2> <p>Google Play <a href="{@docRoot}guide/google/play/billing/index.html">In-app Billing</a> lets you sell digital content in your applications. You can use the @@ -275,7 +308,7 @@ before creating your release-ready APK.</p> </tr> </table> -<h2 id="pricing">9. Set prices for your products</h2> +<h2 id="pricing">10. Set prices for your products</h2> <p>If your app is priced or you will sell in-app products, Google Play lets you set prices for your products in a variety of currencies, for users in markets @@ -308,7 +341,7 @@ in all available currencies through the Developer Console.</p> </tr> </table> -<h2 id="localize">10. Start localization</h2> +<h2 id="localize">11. Start localization</h2> <p>With your country targeting in mind, it's a good idea to assess your localization needs and start the work of localizing well in advance of your target @@ -344,7 +377,7 @@ when you upload assets and configure your product details.</p> </tr> </table> -<h2 id="graphics">11. Prepare promotional graphics</h2> +<h2 id="graphics">12. Prepare promotional graphics</h2> <p>When you publish on Google Play, you can supply a variety of high-quality graphic assets to showcase your app or brand. After you publish, these appear on @@ -375,7 +408,7 @@ advance of your target publishing date. </p> </tr> </table> -<h2 id="apk">12. Build and upload the release-ready APK</h2> +<h2 id="apk">13. Build and upload the release-ready APK</h2> <p>When you are satisfied that your app meets your UI, compatibility, and quality requirements, you can build the release-ready version of the app. The @@ -407,7 +440,7 @@ recent version before publishing. </p> </tr> </table> -<h2 id="product-page">13. Complete the app's product details</h2> +<h2 id="product-page">14. Complete the app's product details</h2> <p>On Google Play, your app's product information is shown to users on its product details page, the page that users visit to learn more about your app and @@ -431,6 +464,10 @@ page in the Developer Console. As you collect the information and assets for the page, make sure that you can enter or upload it to the Developer Console, until the page is complete and ready for publishing. </p> +<p>If your app is targeting tablet devices, make sure to include at least one screen +shot of the app running on a tablet, and highlight your app's support for tablets +in the app description, release notes, promotional campaigns, and elsewhere.</p> + <table> <tr> <td><p>Related resources:</p> @@ -444,7 +481,7 @@ the page is complete and ready for publishing. </p> </tr> </table> -<h2 id="badges">14. Use Google Play badges and links in your promotional +<h2 id="badges">15. Use Google Play badges and links in your promotional campaigns</h2> <p>Google Play badges give you an officially branded way of promoting your app @@ -473,7 +510,7 @@ and reviews, or any other channel available.</p> </tr> </table> -<h2 id="final-checks">15. Final checks and publishing</h2> +<h2 id="final-checks">16. Final checks and publishing</h2> <p>When you think you are ready to publish, sign in to the Developer Console and take a few moments for a few final checks:</p> @@ -511,7 +548,7 @@ final checks:</p> </table> -<h2 id="support">16. Support users after launch</h2> +<h2 id="support">17. Support users after launch</h2> <p>After you publish an app or an app update, it's crucial for you to support your customers. Prompt and courteous support can provide a better experience for diff --git a/docs/html/distribute/googleplay/quality/core.jd b/docs/html/distribute/googleplay/quality/core.jd new file mode 100644 index 0000000..3d017e6 --- /dev/null +++ b/docs/html/distribute/googleplay/quality/core.jd @@ -0,0 +1,783 @@ +page.title=Core App Quality Guidelines +@jd:body + +<div id="qv-wrapper"><div id="qv"> +<h2>Quality Criteria</h2> + <ol> + <li><a href="#ux">Design and Interaction</a></li> + <li><a href="#fn">Functionality</a></li> + <li><a href="#ps">Performance and Stability</a></li> + <li><a href="#listing">Google Play</a></li> + + </ol> + + <h2>Testing</h2> + <ol> + <li><a href="#test-environment">Setting Up a Test Environment</a></li> + <li><a href="#tests">Test Procedures</a></li> + </ol> + + <h2>You Should Also Read</h2> + <ol> + <li><a href="{@docRoot}distribute/googleplay/quality/tablet.html">Tablet App Quality Checklist</a></li> + <li><a href="{@docRoot}distribute/googleplay/strategies/app-quality.html">Improving App Quality</a></li> + </ol> + + +</div> +</div> + +<p><em>App quality</em> directly influences the long-term success of your app +— in terms of installs, user rating and reviews, engagement, and user +retention. Android users expect high quality design and performance from apps, +even more so if they puchased the apps or purchased their in-app products.</p> + +<p>This document helps you assess basic aspects of quality in your app through a +compact set of <em>core app quality criteria</em> and associated tests. All +Android apps should meet these criteria.</p> + +<p>Before launching your app, make sure to test it against these criteria to +ensure that it functions well on many devices, meets Android standards for +navigation and design, and is prepared for promotional opportunities in the +Google Play Store. Your testing will go well beyond what's described here +— the purpose of this document is to specify the essential characteristics +of basic quality so that you can include them in your test plans.</p> + +<p>If your app is targeting tablet devices, make sure that it delivers a rich, +compelling experience to your tablet customers. See the <a +href="/distribute/googleplay/quality/tablet.html">Tablet App Quality +Checklist</a> for recommendations on ways to optimize your app for tablets.</p> + + +<h2 id="ux">Visual Design and User Interaction</h2> + +<p>These criteria ensure that your app provides standard Android visual design +and interaction patterns where appropriate, for a consistent and intuitive +user experience.</p> + +<table> + <tr> + <th style="width:2px;"> + Area + </th> + <th style="width:54px;"> + ID + </th> + + + <th> + Description + </th> + <th style="width:54px;"> + Tests + </th> + </tr> + <tr id="cg7"> + <td>Standard design</td> + <td> + UX-B1 + </td> + <td> + <p style="margin-bottom:.5em;">App follows <a href="{@docRoot}design/index.html">Android Design</a> guidelines and uses common <a href="{@docRoot}design/patterns/index.html">UI patterns and icons</a>:</p> + <ol style="margin-bottom:.5em;list-style-type:lower-alpha"> + <li>App does not redefine the expected function of a system icon (such as the Back button).</li> + <li>App does not replace a system icon with a completely different icon if it triggers the standard UI behavior. </li> + <li>If the app provides a customized version of a standard system icon, the icon strongly resembles the system icon and triggers the standard system behavior.</li> + <li>App does not redefine or misuse Android UI patterns, such that icons or behaviors could be misleading or confusing to users.</li> + </ol> + </td> + <td><a href="#core">CR-all</a></td> + </tr> + + + <tr> + <td rowspan="3">Navigation</td> + <td id="cn1"> + UX-N1 + </td> + + <td> + <p>App supports standard system <a href="{@docRoot}design/patterns/navigation.html">Back button navigation</a> and does not make use of any custom, on-screen "Back button" prompts.</p> + </td> + <td><a href="#core">CR-3</a></td> + </tr> + <tr> + <td id="cn2"> + UX-N2 + </td> + <td> + <p>All dialogs are dismissable using the Back button.</p> + </td> + <td><a href="#core">CR-3</a></td> + </tr> + + <tr id="cn4"> + <td> + UX-N3 + </td> + <td> + Pressing the Home button at any point navigates to the Home screen of the device. + </td> + <td><a href="#core">CR-1</a></td> + </tr> + </table> + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a href="{@docRoot}design/index.html">Android Design</a></strong> — Overview of design and user experience best practices for Android apps. </li> +<li><strong><a href="{@docRoot}design/patterns/navigation.html">Navigation with Back and Up</a></strong> — Android Design document describing standard navigation patterns and related topics. </li> +<li><strong><a href="{@docRoot}design/patterns/actionbar.html">Action Bar</a></strong> — Android Design document describing how to use the Action Bar. </li> +<li><strong><a href="{@docRoot}design/style/iconography.html">Iconography</a></strong> — Android Design document that shows how to use various types of icons.</li> +</ul> +</td> +</tr> +</table> + +<h2 id="fn">Functionality</h2> + +<p>These criteria ensure that your app provides expected functional behavior with the appropriate level of permissions. </p> + +<table> + <tr> + <th style="width:2px;"> + Area + </th> + <th style="width:54px;"> + ID + </th> + + + <th> + Description + </th> + <th style="width:54px;"> + Tests + </th> + </tr> + + <tr> + <td rowspan="2">Permissions</td> + <td> + FN-P1 + </td> + <td>App requests only the <em>absolute minimum</em> permissions that it needs to support core functionality. + </td> + <td rowspan="2"><a href="#core">CR-11</a></td> + </tr> + <tr> + <td> + FN-P2 + </td> + <td><p style="margin-bottom:.5em;">App does not request permissions to access sensitive data (such as Contacts or the System Log) or services that can cost the user money (such as the Dialer or SMS), unless related to a core capability of the app. + </td> + </tr> + + <tr> + <td>Install location</td> + <td> + FN-L1 + </td> + <td> + <p style="margin-bottom:.5em;">App functions normally when installed on SD card (if supported by app).</p> + + <p style="margin-bottom:.25em;">Supporting installation to SD card is recommended for most large apps (10MB+). See the <a href="{@docRoot}guide/topics/data/install-location.html">App Install Location</a> developer guide for information about which types of apps should support installation to SD card.</p> + </td> + + <td><a href="#SD-1">SD-1</a> + </td> + </tr> + <tr> + <td rowspan="4">Audio</td> + <td id="cg1"> + FN-A1 + </td> + + <td> + Audio does not play when the screen is off, unless this is a core feature (for example, the app is a music player). + </td> + <td><a href="#core">CR-7</a></td> + </tr> + <tr id="cg2"> + <td> + FN-A2 + </td> + <td> + Audio does not <a href="http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html">play behind the lock screen</a>, unless this is a core feature. + </td> + <td><a href="#core">CR-8</a></td> + </tr> + <tr id="cg3"> + <td> + FN-A3 + </td> + <td> + Audio does not play on the home screen or over another app, unless this is a core feature. + </td> + <td><a href="#core">CR-1, <br />CR-2</a></td> + </tr> + <tr id="cg4"> + <td> + FN-A4 + </td> + <td> + Audio resumes when the app returns to the foreground, or indicates to the user that playback is in a paused state. + </td> + <td><a href="#core">CR-1, CR-8</a></td> + </tr> + <tr id="cg5"> + <td rowspan="3">UI and Graphics</td> + <td> + FN-U1 + </td> + +<td> + <p style="margin-bottom:.5em;">App supports both landscape and portrait orientations (if possible).</em></p> + + <p style="margin-bottom:.25em;">Orientations expose largely the same features and actions and preserve functional parity. + Minor changes in content or views are acceptable.</p> + </td> + <td><a href="#core">CR-5</a></td> + </tr> + <tr id="cg5"> + <td> + FN-U2 + </td> + +<td> + <p style="margin-bottom:.5em;">App uses the whole screen in both orientations and does not letterbox to account for orientation changes.</em></p> + <p style="margin-bottom:.25em;">Minor letterboxing to compensate for small variations in screen geometry is acceptable.</p> + </td> + <td><a href="#core">CR-5</a></td> + </tr> + <tr id="cg7"> + <td> + FN-U3 + </td> + <td> + <p style="margin-bottom:.5em;">App correctly handles rapid transitions between display orientations without rendering problems.</p> + </td> + <td><a href="#core">CR-5</a></td> + </tr> + + <tr id="cg8"> + <td rowspan="2">User/app state</td> + <td> + FN-S1 + </td> + <td> + <p style="margin-bottom:.5em;">App should not leave any services running when the app is in the background, unless related to a core capability of the app.</p> + <p style="margin-bottom:.25em;">For example, the app should not leave services running to maintain a network connection for notifications, to maintain a Bluetooth connection, or to keep the GPS powered-on.</p> + </td> + <td><a href="#core">CR-6</a></td> + </tr> + + + <tr id="cn3"> + <td> + FN-S2 + </td> + <td> + <p style="margin-bottom:.5em;">App correctly preserves and restores user or app state.</p> + <p style="margin-bottom:.25em;">App preserves user or app state when leaving the foreground and prevents accidental data loss due to back-navigation and other state changes. When returning to the foreground, the app must restore the preserved state and any significant stateful transaction that was pending, such as changes to editable fields, game progress, menus, videos, and other sections of the app or game.</p> + <ol style="margin-bottom:.25em;list-style-type:lower-alpha"> + <li>When the app is resumed from the Recents app switcher, the app returns the user to the exact state in which it was last used.</li> + <li>When the app is resumed after the device wakes from sleep (locked) state, the app returns the user to the exact state in which it was last used.</li> + <li>When the app is relaunched from Home or All Apps, the app restores the app state as closely as possible to the previous state.</li> + <li>On Back keypresses, the app gives the user the option of saving any app or user state that would otherwise be lost on back-navigation.</li> + </ol> + </td> + <td><a href="#core">CR-1, CR-3, CR-5</a></td> + </tr> + +</table> + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a href="http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html">Making Android Apps that Play Nice</a></strong> — Developer blog post discussing the audio lifecycle and expected audio behaviors for Android apps. </li> +<li><strong><a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back Stack</a></strong> — Developer guide describing how to implement back-navigation.</li> +<li><strong><a href="{@docRoot}training/basics/activity-lifecycle/recreating.html">Recreating an Activity</a></strong> — Android Training class the shows how to preserve and restore app state.</li> + +</ul> +</td> +</tr> +</table> + + +<h2 id="ps">Performance and Stability</h2> + +<p>To ensure a high user rating, your app needs to perform well and stay +responsive on all of the devices and form factors and screens that it is +targeting. These criteria ensure that the app provides the basic performance, +stability, and responsiveness expected by users.</p> + +<table> + <tr> + <th style="width:2px;"> + Area + </th> + <th style="width:54px;"> + ID + </th> + <th> + Description + </th> + <th style="width:54px;"> + Tests + </th> + </tr> + + <tr id="cg9"> + <td>Stability</td> + <td> + PS-S1 + </td> + <td> + App does not crash, force close, freeze, or otherwise function abnormally on any targeted device. + </td> + <td><a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a>, <a href="#HA-1">HA-1</a></td> + </tr> + + <tr> + <td rowspan="2">Performance</td> + <td id="cp1"> + PS-P1 + </td> + <td> + App loads quickly or provides onscreen feedback to the user (a progress indicator or similar cue) if the app + takes longer than two seconds to load. + </td> + <td> + <a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a> + </td> + </tr> + <tr id="cp2"> + + <td> + PS-P2 + </td> + <td> + With StrictMode enabled (see <a href="#strictmode">StrictMode Testing</a>, below), no red flashes (performance warnings from StrictMode) are visible when exercising the app, including + during game play, animations and UI transitions, and any other part of the app. + </td> + <td> + <a href="#PM-1">PM-1</a> + </td> + </tr> + <tr id="cp3"> + <td>Media</td> + <td> + PS-M1 + </td> + <td> + Music and video playback is smooth, without crackle, stutter, or other artifacts, during normal app usage and load. + </td> + <td> + <a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a>, <a href="#HA-1">HA-1</a> + </td> + </tr> + +<tr id="cp4"> + <td rowspan="2">Visual quality</td> + <td> + PS-V1 + </td> + <td> + <p style="margin-bottom:.5em;">App displays graphics, text, images, and other UI elements without noticeable distortion, blurring, or pixelation.</p> + + <ol style="margin-bottom:.5em;list-style-type:lower-alpha"> + <li>App provides high-quality graphics for all targeted screen sizes and form factors, including for <a href="{@docRoot}distribute/googleplay/quality/tablet.html">larger-screen devices such as tablets</a>.</li> + <li>No aliasing at the edges of menus, buttons, and other UI elements.</li> + </ol> + </td> + <td rowspan="2"><a href="#core">CR-all</a></td> + </tr> + + <tr id="cp5"> + <td> + PS-V2 + </td> + <td> + <p style="margin-bottom:.5em;">App displays text and text blocks in an acceptable manner. </p> + + <ol style="margin-bottom:.5em;list-style-type:lower-alpha"> + <li>Composition is acceptable in all supported form factors, including for larger-screen devices such as tablets.</li> + <li>No cut-off letters or words.</li> + <li>No improper word wraps within buttons or icons.</li> + <li>Sufficient spacing between text and surrounding elements.</li> + </ol> + + + + </td> + + </tr> + + + + +</table> + + + + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a href="http://android-developers.blogspot.com/2010/12/new-gingerbread-api-strictmode.html">Using StrictMode</a></strong> — Developer blog post discussing StrictMode and how to use it for performance monitoring in your app. </li> +<li><strong><a href="{@docRoot}guide/practices/responsiveness.html">Designing for Responsiveness</a></strong> — Developer guide describing best practices for keeping your app responsive.</li> +<li><strong><a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">Multithreading for Performance</a></strong> — Developer blog post discussing ways to improve performance through multi-threading.</li> +</ul> +</td> +</tr> +</table> + + +<h2 id="listing">Google Play</h2> + +<p>To launch your app successfully on Google Play, raise its ratings, and make +sure that it is ready for promotional activities in the store, follow the +criteria below.</p> + +<table> + <tr> + <th style="width:2px;"> + Area + </th> + <th style="width:54px;"> + ID + </th> + <th> + Description + </th> + <th style="width:54px;"> + Tests + </th> + </tr> +<tr> +<td rowspan="2">Policies</td> + <td> + GP-P1 + </td> + <td> + App strictly adheres to the terms of the <a href="http://play.google.com/about/developer-content-policy.html">Google Play Developer Content Policy</a> and does not offer inappropriate content, does not use intellectual property or brand of others, and so on. + </td> + <td> + <a href="#gp">GP-all</a> + </td> + </tr> + + + <tr> + <td> + GP-P2 + </td> + <td> + <p style="margin-bottom:.5em;">App maturity level is set appropriately, based on the + <a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=188189">Content Rating Guidelines</a>.</p> + + <p style="margin-bottom:.25em;">Especially, note that apps that request permission to use the device location cannot be given the maturity level "Everyone". </p> + </td> + <td> + <a href="#gp">GP-1</a> + </td> + </tr> + + + <tr> + + <td rowspan="3">App Details Page</td> + <td> + GP-D1 + </td> + <td> + <p style="margin-bottom:.5em;">App feature graphic follows the guidelines outlined in this + <a href="http://android-developers.blogspot.com/2011/10/android-market-featured-image.html">blog post</a>. Make sure that:</p> + + <ol style="margin-bottom:.5em;list-style-type:lower-alpha"> + <li>The app listing includes a high-quality feature graphic.</li> + <li>The feature graphic does not contain device images, screenshots, or small text that will be illegible when scaled down and displayed on the smallest screen size that your app is targeting.</li> + <li>The feature graphic does not resemble an advertisement.</li> + </ol> + + + </td> + + <td> + <a href="#gp">GP-1, GP-2</a> + </td> + + + </tr> + <tr> + <td> + GP-D2 + </td> + <td> + App screenshots and videos do not show or reference non-Android devices. + </td> + <td rowspan="2"><a href="#gp">GP-1</a></td> + </tr> + + <tr> + <td> + GP-D3 + </td> + <td> + App screenshots or videos do not + represent the content and experience of your app in a misleading way. + </td> + </tr> + <tr> + <td>User Support</td> + <td> + GP-X1 + </td> + <td>Common user-reported bugs in the Reviews tab of the Google Play page are addressed if they are + reproducible and occur on many different devices. If a bug occurs on only a few devices, + you should still address it if those devices are particularly popular or new. + </td> + + <td> + <a href="#gp">GP-1</a> + </td> + + </tr> +</table> + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a href="http://play.google.com/about/developer-content-policy.html">Google Play Developer Program Policies</a></strong> — Guidelines for what is acceptable conent in Google Play. Please read and understand the and understand the policies before publishing. +<li><strong><a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=188189">Rating your application content for Google Play</a></strong> — Help Center document describing content ratings levels and how to choose the appropriate one for your app.</li> +<li><strong><a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1078870">Graphic Assets for your Application +</a></strong> — Details about the graphic assets you need to upload before publishing.</li> +<li><strong><a href="http://android-developers.blogspot.com/2011/10/android-market-featured-image.html">Google Play Featured Image Guidelines +</a></strong> — Blog post discussing how to create an attractive, effective Featured Image for your app.</li> +<li><strong><a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=113477&topic=2364761&ctx=topic">Supporting your users +</a></strong> — Help Center document describing options for supporting users.</li> +</ul> +</td></tr> +</table> + + +<h2 id="test-environment">Setting Up a Test Environment</h2> + +<p>To assess the quality of your app, you need to set up a suitable +hardware or emulator environment for testing. </p> + +<p>The ideal test environment would +include a small number of actual hardware devices that represent key form +factors and hardware/software combinations currently available to consumers. +It's not necessary to test on <em>every</em> device that's on the market — +rather, you should focus on a small number of representative devices, even using +one or two devices per form factor. </p> + +<p>If you are not able to obtain actual hardware devices for testing, you should +set up emulated devices (AVDs) to represent the most common form factors and +hardware/software combinations. </p> + +<p>To go beyond basic testing, you can add more devices, more form factors, or +new hardware/software combinations to your test environment. You can also +increase the number or complexity of tests and quality criteria. </p> + + +<h2 id="tests"> + Test Procedures +</h2> + +<p>These test procedures help you discover various types of quality issues in your app. You can combine the tests or integrate groups of tests together in your own test plans. See the sections above for references that associate specific criteria with specific tests. </p> + +<table> + <tr> + <th style="width:2px;"> + Type + </th> + <th style="width:54px;"> + Test + </th> + <th> + Description + </th> + </tr> + <tr> + <td rowspan="11" id="core">Core Suite</td> + <td> + CR-0 + </td> + <td><p style="margin-bottom:.5em;">Navigate to all parts of the app — all screens, dialogs, settings, and all user flows. </p> + + <ol style="margin-bottom:.5em;list-style-type:lower-alpha"> + <li>If the application allows for editing or content creation, game play, or media playback, make sure to enter those flows to create or modify content.</li> + <li>While exercising the app, introduce transient changes in network connectivity, battery function, GPS or location availability, system load, and so on. </li> + </ol> + </td> + </tr> + <tr id="tg2"> + <td id="core"> + CR-1 + </td> + <td>From each app screen, press the device's Home key, then re-launch the app from the All Apps screen. + </td> + </tr> + <tr id="CR-2"> + <td> + CR-2 + </td> + <td>From each app screen, switch to another running app and then return to the app under test using the Recents app switcher. + </td> + </tr> + + <tr id="CR-3"> + <td> + CR-3 + </td> + <td>From each app screen (and dialogs), press the Back button. + </td> + </tr> + <tr id="CR-5"> + <td> + CR-5 + </td> + <td>From each app screen, rotate the device between landscape and portrait orientation at least three times. + </td> + </tr> + <tr id="CR-6"> + <td> + CR-6 + </td> + <td>Switch to another app to send the test app into the background. Go to Settings and check whether the test app has any services running while in the background. In Android 4.0 and higher, go to the Apps screen and find the app in the "Running" tab. In earlier versions, use "Manage Applications" to check for running services. + </td> + </tr> + + + <tr id="CR-7"> + <td> + CR-7 + </td> + <td> + Press the power button to put the device to sleep, then press the power button again to + awaken the screen. + </td> + </tr> + <tr id="CR-8"> + <td> + CR-8 + </td> + <td> + Set the device to lock when the power button is pressed. Press the power button to put the device to sleep, then press the power button again to + awaken the screen, then unlock the device. + </td> + </tr> + <tr id="CR-9"> + <!-- Hardware features --> + <td> + CR-9 + </td> + <td> + For devices that have slide-out keyboards, slide the keyboard in and out at least once. For devices that have keyboard docks, attach the device to the keyboard dock. + </td> + </tr> + <tr id="CR-10"> + <td> + CR-10 + </td> + <td> + For devices that have an external display port, plug-in the external display. + </td> + </tr> + <tr id="CR-11"> + <td> + CR-11 + </td> + <td>Examine the permissions requested by the app by going to Settings > App Info. + </td> + </tr> + <tr id="tg3"> + <td>Install on SD Card</td> + <td> + SD-1 + </td> + <td> + <p style="margin-bottom:.5em;">Repeat <em>Core Suite</em> with app installed to <a href="{@docRoot}guide/topics/data/install-location.html">device SD card</a> (if supported by app).</p> + + <p style="margin-bottom:.25em;">To move the app to SD card, you can use Settings > App Info > Move to SD Card.</p> + </td> + </tr> + + + + <tr id="tg3"> + <td>Hardware acceleration</td> + <td> + HA-1 + </td> + <td> + <p style="margin-bottom:.5em;">Repeat <em>Core Suite</em> with hardware acceleration enabled.</p> + + <p style="margin-bottom:.25em;">To force-enable hardware acceleration (where supported by device), add <code>hardware-accelerated="true"</code> to the <code><application></code> in the app manifest and recompile.</p> + </td> + </tr> + + <tr id="tg3"> + <td>Performance Monitoring</td> + <td> + PM-1 + </td> + <td> + <p style="margin-bottom:.5em;">Repeat <em>Core Suite</em> with StrictMode profiling enabled <a href="#strictmode">as described below</a>. <p style="margin-bottom:.25em;">Pay close attention to garbage collection and its impact on the user experience.</p> + </td> + </tr> + + <tr id="tg4"> + <td rowspan="3">Google Play</td> + <td> + GP-1 + </td> + <td> + Sign into the <a href="https://play.google.com/apps/publish/">Developer Console</a> to review your developer profile, app description, screenshots, feature graphic, maturity settings, and user feedback. + </td> + </tr> + <tr id="tg4"> + <td> + GP-2 + </td> + <td> + Download your feature graphic and screenshots and scale them down to match the display sizes on the devices and form factors you are targeting. + </td> + </tr> + <tr id="tg4"> + <td> + GP-4 + </td> + <td> + Review all graphical assets, media, text, code libraries, and other content packaged in the app or expansion file download. + </td> + </tr> + <tr id="tg4"> + <td>Payments</td> + <td> + GP-5 + </td> + <td> + Navigate to all screens of your app and enter all in-app purchase flows. + </td> +</tr> + +</table> + +<h3 id="strictmode"> +Testing with StrictMode +</h3> + +<p>For performance testing, we recommend enabling <code><a href="{@docRoot}reference/android/os/StrictMode.html">StrictMode</a></code> in your app and using it to catch operations on the main thread and other threads that could affect performance, network accesses, file reads/writes, and so on. + +You can set up a monitoring policy per thread using the <code><a href="{@docRoot}reference/android/os/StrictMode.ThreadPolicy.Builder.html">ThreadPolicy builder</a></code> and enable all supported monitoring in the <code>ThreadPolicy</code> using <code><a href="{@docRoot}reference/android/os/StrictMode.ThreadPolicy.Builder.html#detectAll()">detectAll()</a></code>.</p> + +<p>Make sure to enable <strong>visual notification</strong> of policy violations for the <code>ThreadPolicy</code> using <code><a href="{@docRoot}reference/android/os/StrictMode.ThreadPolicy.Builder.html#penaltyFlashScreen()">penaltyFlashScreen()</a></code>.</p> + diff --git a/docs/html/distribute/googleplay/quality/index.jd b/docs/html/distribute/googleplay/quality/index.jd new file mode 100644 index 0000000..ffbcbab --- /dev/null +++ b/docs/html/distribute/googleplay/quality/index.jd @@ -0,0 +1,46 @@ +page.title=App Quality +@jd:body + +<p><em>App quality</em> directly influences the long-term success of your app +— in terms of installs, user rating and reviews, engagement, and user +retention. Android users expect high quality from apps, even more so if they +puchased the apps or purchased their in-app products. At the same time, they +enjoy and value apps that put a priority on high quality and continuous +improvement.</p> + +<p>Before you publish an app on Google Play, it's important to make sure that +the app meets the basic quality expectations of users, across all of the form +factors and device types that the app is targeting. The documents in this +section help you assess your app's fundamental quality and they provide +resources to help you address issues that you find. </p> + +<div class="vspace size-1"> + +</div> +<div class="layout-content-row"> + <div class="layout-content-col span-4"> + <h4> + Core App Quality + </h4> + <p> + A set of core quality criteria that all Android apps should meet on all targeted devices. + </p><a href="{@docRoot}distribute/googleplay/quality/core.html">Learn more »</a> + </div> + <div class="layout-content-col span-4"> + <h4> + Tablet App Quality + </h4> + <p> + A set recommendations for delivering the best possible experience to tablet users. + </p><a href="{@docRoot}distribute/googleplay/quality/tablet.html">Learn more »</a> + </div> + <div class="layout-content-col span-4"> + <h4> + Improving App Quality + </h4> + <p> + Tips on continuously improving your app's quality, ratings, reviews, downloads, and engagement. + </p><a href="{@docRoot}distribute/googleplay/strategies/app-quality.html">Learn more + »</a> + </div> +</div> diff --git a/docs/html/distribute/googleplay/quality/tablet.jd b/docs/html/distribute/googleplay/quality/tablet.jd new file mode 100644 index 0000000..b8a7a60 --- /dev/null +++ b/docs/html/distribute/googleplay/quality/tablet.jd @@ -0,0 +1,555 @@ +page.title=Tablet App Quality Checklist +@jd:body + +<div id="qv-wrapper"><div id="qv"> +<h2>Checklist</h2> +<ol> + +<li><a href="#core-app-quality">1. Test for Core App Quality</a></li> +<li><a href="#optimize-layouts">2. Optimize your layouts</a></li> +<li><a href="#use-extra-space">3. Use the extra screen area</a></li> +<li><a href="#use-tablet-icons">4. Use assets designed for tablets</a></li> +<li><a href="#adjust-font-sizes">5. Adjust fonts and touch targets</a></li> +<li><a href="#adjust-widgets">6. Adjust homescreen widgets</a></li> +<li><a href="#offer-full-feature-set">7. Offer the app's full feature set</a></li> +<li><a href="#hardware-requirements">8. Don’t require hardware features</a></li> +<li><a href="#support-screens">9. Declare tablet screen support</a></li> +<li><a href="#google-play">10. Follow best practices for publishing in Google Play</a></li> + +</ol> +<h2>Testing</h2> +<ol> +<li><a href="#test-environment">Setting Up a Test Environment</a></li> +</ol> +</div></div> + + +<p>Before you publish an app on Google Play, it's important to make sure that +the app meets the basic expectations of tablet users, through compelling features +and an intuitive, well-designed UI. </p> + +<p>Tablets are a growing part of the Android installed base that offers new +opportunities for <a +href="{@docRoot}distribute/googleplay/spotlight/tablets.html">user engagement +and monetization</a>. If your app is targeting tablet users, this document helps +you focus on key aspects of quality, feature set, and UI that can have a +significant impact on the app's success. Each focus area is given as checklist +item, with each one comprising several smaller tasks or best practices.</p> + +<p>Although the checklist tasks below are numbered for convenience, +you can handle them in any order and address them to the extent that you feel +is right for your app. In the interest of delivering the best possible product +to your customers, follow the checklist recommendations +to the greatest extent possible. </p> + +<p>As you move through the checklist, you'll find links to support resources +that can help you address the topics raised in each task.</p> + + +<h2 id="core-app-quality">1. Test for Core App Quality</h2> + +<p>The first step in delivering a great tablet app experience is making sure +that it meets the <em>core app +quality criteria</em> for all of the devices and form factors that the app is +targeting. For complete information, see the <a +href="{@docRoot}distribute/googleplay/quality/core.html">Core App Quality Checklist</a>. +</p> + +<p>To assess the quality of your app on tablets — both for core app quality +and tablet app quality — you need to set up a suitable +hardware or emulator environment for testing. For more information, +see <a href="#test-environment">Setting Up a Test Environment</a>.</p> + + +<h2 id="optimize-layouts">2. Optimize your layouts for larger screens</h2> + +<p>Android makes it easy to develop an app that runs well on a wide range of +device screen sizes and form factors. This broad compatibility works in your +favor, since it helps you design a single app that you can distribute widely to +all of your targeted devices. However, to give your users the best possible +experience on each screen configuration — in particular on tablets +— you need to optimize your layouts and other UI components for each +targeted screen configuration. On tablets, optimizing your UI lets you take +full advantage of the additional screen available, such as to offer new features, +present new content, or enhance the experience in other ways to deepen user +engagement.</p> + +<p>If you developed your app for handsets and now want to distribute it to +tablets, you can start by making minor adjustments to your layouts, fonts, and +spacing. In some cases — such as for 7-inch tablets or for a game with +large canvas — these adjustments may be all +you need to make your app look great. In other cases, such as for larger +tablets, you can redesign parts of your UI to replace "stretched UI" with an +efficient multipane UI, easier navigation, and additional content. </p> + +<p>Here are some suggestions:</p> + +<div style="width:390px;float:right;margin:1.5em;margin-top:0em;"> +<img src="{@docRoot}images/training/app-navigation-multiple-sizes-multipane-bad.png" style="width:390px;padding:4px;margin-bottom:0em;"> +<p class="image-caption" style="padding:0em .5em .5em 2em"><span +style="font-weight:500;">Get rid of "stretched" UI</span>: On tablets, single-pane layouts lead to awkward whitespace and excessive line lengths. Use padding to reduce the width of UI elements and consider using multi-pane layouts.</p> +</div> + +<ul> +<li>Provide custom layouts as needed for <code>large</code> and +<code>xlarge</code> screens. You can also provide layouts that are loaded based +on the screen's <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">shortest +dimension</a> or the <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">minimum +available width and height</a>. </li> +<li>At a minimum, customize dimensions such as font sizes, margins, spacing for +larger screens, to improve use of space and content legibility. </li> +<li>Adjust positioning of UI controls so that they are easily accessible to +users when holding a tablet, such as toward the sides when in +landscape orientation.</li> +<li>Padding of UI elements should normally be larger on tablets than on handsets. A +<a href="{@docRoot}design/style/metrics-grids.html#48dp-rhythm">48dp rhythm</a> (and a 16dp +grid) is recommended.</li> +<li>Adequately pad text content so that it is not aligned directly along screen edges. +Use a minimum <code>16dp</code> padding around content near screen edges.</li> +</ul> + +<p>In particular, make sure that your layouts do not appear "stretched" +across the screen:</p> + +<ul> +<li>Lines of text should not be excessively long — optimize for a maximum +100 characters per line, with best results between 50 and 75.</li> +<li>ListViews and menus should not use the full screen width.</li> +<li>Use padding to manage the widths of onscreen elements or switch to a +multi-pane UI for tablets (see next section).</li> +</ul> + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a href="http://developer.android.com/design/style/metrics-grids.html">Metrics and Grids +</a></strong> — Android Design document that explains ....</li> +<li><strong><a href="http://developer.android.com/design/style/devices-displays.html">Devices and Displays +</a></strong> — Android Design document that explains ....</li> +<li><strong><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></strong> — Developer documentation that explains the details of managing UI for best display on multiple screen sizes.</li> +<li><strong><a href="http://developer.android.com/guide/practices/screens_support.html#ConfigurationExamples">Configuration examples +</a></strong> — Examples of how to declare layouts and other resources for specific screen sizes.</a></li> +</ul> +</td> +</tr> +</table> + + +<h2 id="use-extra-space">3. Take advantage of extra screen area available on tablets</h2> + +<div style="width:290px;float:right;margin:1.5em;margin-bottom:0;margin-top:0;"> +<img src="{@docRoot}images/training/app-navigation-multiple-sizes-multipane-good.png" style="width:280px;padding:4px;margin-bottom:0em;"> +<p class="image-caption" style="padding:0em .5em .5em 1.5em"><span +style="font-weight:500;">Multi-pane layouts</span> result in a better visual balance on tablet screens, while offering more utility and legibility.</p> +</div> + +<p>Tablet screens provide significantly more screen real estate to your app, +especially when in landscape orientation. In particular, 10-inch tablets offer a +greatly expanded area, but even 7-inch tablets give you more space for +displaying content and engaging users. </p> + +<p>As you consider the UI of your app when running on tablets, make sure that it +is taking full advantage of extra screen area available on tablets. Here are +some suggestions:</p> + +<ul> +<li>Look for opportunities to include additional content or use an alternative +treatment of existing content.</li> +<li>Use <a href="{@docRoot}design/patterns/multi-pane-layouts.html">multi-pane +layouts</a> on tablet screens to combine single views into a compound view. This +lets you use the additional screen area more efficiently and makes it easier for +users to navigate your app. </li> +<li>Plan how you want the panels of your compound views to reorganize when +screen orientation changes.</li> + + + +<div style="width:490px;margin:1.5em auto 1.5em 0;"> + +<div style=""> +<img src="{@docRoot}images/ui-ex-single-panes.png" style="width:490px;padding:4px;margin-bottom:0em;" align="middle"> +<img src="{@docRoot}images/ui-ex-multi-pane.png" style="width:490px;padding:4px;margin-bottom:0em;"> +<p class="image-caption" style="padding:.5em"><span +style="font-weight:500;">Compound views</span> combine several single views from a handset UI <em>(above)</em> into a richer, more efficient UI for tablets <em>(below)</em>. </p> +</div> +</div> + +<li>While a single screen is implemented as an {@link android.app.Activity} +subclass, consider implementing individual content panels as {@link +android.app.Fragment} subclasses. This lets you maximize code reuse across +different form factors and across screens that share content.</li> +<li>Decide on which screen sizes you'll use a multi-pane UI, then provide the +different layouts in the appropriate screen size buckets (such as +<code>large</code>/<code>xlarge</code>) or minimum screen widths (such as +<code>sw600dp</code>/<code>sw720</code>).</li> +</ul> + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a href="{@docRoot}design/patterns/multi-pane-layouts.html">Multi-pane Layouts</a></strong> — Android Design guide for using multi-pane UI, including examples of how to flatten navigation and integrate more content into your tablet UI.</li> +<li><strong><a href="{@docRoot}training/design-navigation/multiple-sizes.html">Planning for Multiple Touchscreen Sizes</a></strong> — Android Training class that walks you through the essentials of planning an intuitive, effective navigation for tablets and other devices. </li> +<li><strong><a href="{@docRoot}training/multiscreen/index.html">Designing for Multiple Screens</a></strong> — Android Training class that walks you through the essentials of planning an intuitive, effective navigation for tablets and other devices. </li> +</ul> +</td> +</tr> +</table> + + +<h2 id="use-tablet-icons">4. Use Icons and other assets that are designed for tablet screens</h2> + +<p>So that your app looks its best, make sure to use icons and other bitmap +assets that are created specifically for the densities used by tablet screens. +Specifically, you should create sets of alternative bitmap drawables for each +density in the range commonly supported by tablets.</p> + +<p class="table-caption">Raw asset sizes for icon types.<table> +<tr> +<th>Density </th> +<th colspa>Launcher</th> +<th>Action Bar</th> +<th>Small/Contextual</th> +<th>Notification</th> +</tr> +<tr> +<td><code>mdpi</code></td> +<td>48x48px</td> +<td>32x32px</td> +<td>16x16px</td> +<td>24x24px</td> +</tr> +<tr> +<td><code>hdpi</code></td> +<td>72x72px</td> +<td>48x48px</td> +<td>24x24px</td> +<td>36x36px</td> +</tr> +<tr> +<td><code>tvdpi</code></td> +<td><em>(use hdpi)</em></td> +<td><em>(use hdpi)</em></td> +<td><em>(use hdpi)</em></td> +<td><em>(use hdpi)</em></td> +</tr> +<tr> +<td><code>xhdpi</code></td> +<td>96x96px</td> +<td>64x64px</td> +<td>32x32px</td> +<td>48x48px</td> +</tr> + +</table> + +<p>Other points to consider: </p> + +<ul> +<li>Icons in the action bar, notifications, and launcher should be designed +according to the icon design guidelines and have the same physical size on +tablets as on phones.</li> +<li>Use density-specific <a +href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources"> +resource qualifiers</a> to ensure that the proper set of alternative resources +gets loaded.</li> +</ul> + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a href="{@docRoot}design/style/iconography.html">Iconography</a></strong> — Android Design document that shows how to use various types of icons.</li> +<li><strong><a href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a></strong> — Developer documentation on how to provide sets of layouts and drawable resources for specific ranges of device screens. </li> +<li><strong><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></strong> — API Guide documentation that explains the details of managing UI for best display on multiple screen sizes.</li> +<li><strong><a href="{@docRoot}training/basics/supporting-devices/screens.html">Supporting Different Screens</a></strong> — Android Training class that takes you through the process of optimizing the user experience for different screen sizes and densities.</li> +</ul> +</td> +</tr> +</table> + + +<h2 id="adjust-font-sizes">5. Adjust font sizes and touch targets for tablet screens</h2> + +<p>To make sure your app is easy to use on tablets, take some time to adjust the +font sizes and touch targets in your tablet UI, for all of the screen +configurations you are targeting. You can adjust font sizes through <a +href="{@docRoot}guide/topics/ui/themes.html">styleable attributes</a> or <a +href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">dimension +resources</a>, and you can adjust touch targets through layouts and bitmap +drawables, as discussed above. </p> + +<p>Here are some considerations:</p> +<ul> +<li>Text should not be excessively large or small on tablet screen sizes and +densities. Make sure that labels are sized appropriately for the UI elements they +correspond to, and ensure that there are no improper line breaks in labels, +titles, and other elements.</li> +<li>The recommended touch-target size for onscreen elements is 48dp (32dp +minimum) — some adjustments may be needed in your tablet UI. Read <a +href="http://developer.android.com/design/style/metrics-grids.html">Metrics and +Grids +</a> to learn about implementation strategies to help most of your users. To +meet the accessibility needs of certain users, it may be appropriate to use +larger touch targets. </li> +<li>When possible, for smaller icons, expand the touchable area to more than +48dp using {@link android.view.TouchDelegate} or just centering the icon within +the transparent button.</li> +</ul> + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a href="http://developer.android.com/design/style/metrics-grids.html">Metrics and Grids +</a></strong> — Android Design document that explains how to arrange and size touch targets and other UI elements on the screen.</li> +<li><strong><a href="{@docRoot}design/style/typography.html">Typography</a></strong> — Android Design document that gives an overview of how to use typography in your apps. </li> +<li><strong><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></strong> — Developer documentation that explains the details of managing UI for best display on multiple screen sizes.</li> +<li><strong><a href="{@docRoot}training/multiscreen/screendensities.html">Supporting Different Densities</a></strong> — Android Training class that shows you how to provide sets of layouts and drawable resources for specific ranges of device screens. </li> +</ul> +</td> +</tr> +</table> + + +<h2 id="adjust-widgets">6. Adjust sizes of home screen widgets for tablet screens</h2> + +<p>If your app includes a home screen widget, here are a few points to consider +to ensure a great user experience on tablet screens: </p> + +<ul> +<li>Make sure that the widget's default height and width are set appropriately +for tablet screens, as well as the minimum and maximum resize height and width. +</li> +<li>The widget should be resizable to 420dp or more, to span 5 or more home +screen rows (if this is a vertical or square widget) or columns (if this is a +horizontal or square widget). </li> +<li>Make sure that 9-patch images render correctly.</li> +<li>Use default system margins.</li> +<li>Set the app's <code>targetSdkVersion</code> to 14 or higher, if +possible.</li> +</ul> + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a href="{@docRoot}guide/topics/appwidgets/index.html#MetaData">Adding the AppWidgetProviderInfo Metadata +</a></strong> — API Guide that explains how to set the height and width dimensions of a widget.</li> +<li><strong><a href="{@docRoot}guide/practices/ui_guidelines/widget_design.html">App Widget Design Guidelines</a></strong> — API Guide that provides best practices and techniques for designing and managing the size of widgets. </li> +</ul> +</td> +</tr> +</table> + + +<h2 id="offer-full-feature-set">7. Offer the app's full feature set to tablet users</h2> + +<p>Let your tablet users experience the best features of your app. Here are +some recommendations:</p> + +<ul> +<li>Design your app to offer at least the same set of features on tablets as it does on +handsets. </li> +<li>In exceptional cases, your app might omit or replace certain features on +tablets if they are not supported by the hardware or use-case of most tablets. +For example: +<ul> +<li>If the handset uses telephony features but telephony is not available on the +current tablet, you can omit or replace the related functionality.</li> +<li>Many tablets have a GPS sensor, but most users would not normally carry +their tablets while running. If your phone app provides functionality to let the +user record a GPS track of their runs while carrying their phones, the app would not need to +provide that functionality on tablets because the use-case is not +compelling.</li> +</ul> +</li> +<li>If you will omit a feature or capability from your tablet UI, make sure +that it is not accessible to users or that it offers “graceful degradation” +to a replacement feature (also see the section below on hardware features).</li> +</ul> + + +<h2 id="hardware-requirements">8. Don’t require hardware features that might not be available on tablets</h2> + +<p>Handsets and tablets typically offer slightly different hardware support for +sensors, camera, telephony, and other features. For example, many tablets are +available in a "Wi-Fi" configuration that does not include telephony support.</p> + +<p>To ensure that you can deliver a single APK broadly across the +your full customer base, make sure that your app does not have built-in +requirements for hardware features that aren't commonly available on tablets. +</p> + +<ul> +<li>Your app's manifest should not include <a +href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code><uses-feature></code></a> +elements for hardware features or capabilities that might not be +available on tablets, except when they are declared with the +<code>android:required=”false”</code> attribute. For example, your app should +not <em>require</em> features such as: +<ul> +<li><code>android.hardware.telephony</code></li> +<li><code>android.hardware.camera</code> (refers to back camera), or</li> +<li><code>android.hardware.camera.front</code></li> +</ul> +</li> +<li>Similarly, your app manifest should not include any <a +href="{@docRoot}guide/topics/manifest/permission-element.html"><code><permission></code></a> elements that <a +href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">imply +feature requirements</a> that might not be appropriate for tablets, except when +accompanied by a corresponding <code><uses-feature></code> element +declared with the <code>android:required=”false”</code> attribute.</li> +</ul> + +<p>In all cases, the app must function normally when the hardware features it +uses are not available and should offer “graceful degradation” and alternative +functionality where appropriate. For example, if GPS is not supported on the device, +your app could let the user set their location manually. The app should do +run-time checking for the hardware capability that it needs and handle as needed.</p> + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">Permissions that Imply Feature Requirements</a></strong> — A list of permissions that may cause unwanted filtering if declared in your app's manifest.</li> +<li><strong><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code><uses-feature></code></a></strong> — Description and reference documentation for the <code><uses-feature></code> manifest element.</li> +<li><strong><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#testing">Testing the features required by your application</a></strong> — Description of how to determine the actual set of hardware and software requirements (explicit or implied) that your app requires.</li> +</ul> +</td> +</tr> +</table> + + +<h2 id="support-screens">9. Declare support for tablet screen configurations</h2> + +<p>To ensure that you can distribute your app to a broad range of tablets, +declare all the screen sizes that your app supports in its manifest:</p> + +<ul> +<li>Declare a <a +href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code><supports-screens></code></a> element +with appropriate attributes, as needed.</li> +<li>If the app declares a <code><compatible-screens></code> element in the +manifest, the element must include attributes that specify <em>all of the size and +density combinations for tablet screens</em> that the app supports. Note that, if possible, +you should avoid using this element in your app.</li> +</ul> + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code><supports-screens></code></a></strong> +— Description and reference documentation for the <code><supports-screens></code> +manifest element.</li> +<li><strong><a href="{@docRoot}guide/practices/screens_support.html#DeclaringScreenSizeSupport">Declaring Screen Size +Support</a></strong> — Developer documentation that explains the details of managing UI +for best display on multiple screen sizes.</li> +</ul> +</td> +</tr> +</table> + + +<h2 id="google-play">10. Follow best practices for publishing in Google Play</h2> + +<ul> +<li>Publish your app as a single APK for all screen sizes (handsets +and tablets), with a single Google Play listing: + <ul style="margin-top:.25em;"> + <li>Easier for users to find your app from search, browsing, or promotions</li> + <li>Easier for users to restore your app automatically if they get a new device.</li> + <li>Your ratings and download stats are consolidated across all devices.</li> + <li>Publishing a tablet app in a second listing can dilute ratings for your brand.</li> + </ul> +</li> +<li>If necessary, you can alternatively choose to deliver your app using <a +href="{@docRoot}guide/google/play/publishing/multiple-apks.html">Multiple APK Support</a>, +although in most cases using a single APK to reach all devices is strongly recommended.</li> + +<li>Highlight your app’s tablet capabilities in the product details page: + <ul style="margin-top:.25em;"> + <li>Add <strong>at least one screenshot taken while the app is running on a + tablet</strong>. It's recommended that you add one screenshot of landscape orientation + and one of portrait orientation, if possible. These screenshots make it clear to users + that your app is designed for tablets and highlight all the effort you've put into designing + a great tablet app experience.</li> + <li>Mention tablet support in the app description.</li> + <li>Include information about tablet support in the app's release notes and update + information.</li> + <li>In your app's promo video, add shots of your app running on a tablet.</li> + </ul> +</li> +<li>Make sure you are distributing to tablet devices. Check the app's Supported Devices +list in the <a href="https://play.google.com/apps/publish/">Developer Console</a> +to make sure your app is not filtered from tablet devices that you want to target.</li> + +<li>Let tablet users know about your app! Plan a marketing or advertising campaign that +highlights the use of your app on tablets.</li> +</ul> + +<table> +<tr> +<td><p>Related resources:</p> +<ul style="margin-top:-.5em;"> +<li><strong><a href="https://play.google.com/apps/publish/">Google Play Android Developer Console</a></strong> — The tools console for publishing your app to Android users.</li> +</ul> +</td> +</tr> +</table> + +<h2 id="test-environment">Setting Up a Test Environment for Tablets</h2> + +<p>To assess the quality of your app on tablets — both for core app quality +and tablet app quality — you need to set up a suitable +hardware or emulator environment for testing. </p> + +<p>The ideal test environment would +include a small number of actual hardware devices that represent key form +factors and hardware/software combinations currently available to consumers. +It's not necessary to test on <em>every</em> device that's on the market — +rather, you should focus on a small number of representative devices, even using +one or two devices per form factor. The table below provides an overview of +devices you could use for testing.</p> + +<p>If you are not able to obtain actual hardware devices for testing, you should +set up emulated devices (AVDs) to represent the most common form factors and +hardware/software combinations. See the table below for suggestions on the emulator +configurations to use. </p> + +<p>To go beyond basic testing, you can add more devices, more form factors, or +new hardware/software combinations to your test environment. For example, you +could include mid-size tablets, tablets with more or fewer hardware/software +features, and so on. You can also increase the number or complexity of tests +and quality criteria. </p> + +<p class="table-caption"><strong>Table 1</strong>. A typical tablet test environment might +include one or two devices from each row in the table below, with one of the +listed chipsets, platform versions, and hardware feature configurations.</p> + +<table> +<tr> +<th>Type</th> +<th>Size</th> +<th>Density</th> +<th>Version</th> +<th>AVD Skin</th> +</tr> + +<tr> +<td>7-inch tablet</td> +<td><span style="white-space:nowrap"><code>large</code> or</span><br /><code>-sw600</code></td> +<td><code>hdpi</code>,<br /><code>tvdpi</code></td> +<td>Android 4.0+</td> +<td>WXGA800-7in</td> +</tr> +<tr> +<td><span style="white-space:nowrap">10-inch</span> tablet</td> +<td><span style="white-space:nowrap"><code>xlarge</code> or</span><br /><code>-sw800</code></td> +<td><code>mdpi</code>,<br /><code>hdpi</code></td> +<td>Android 3.2+</td> +<td>WXGA800</td> +</tr> +</table>
\ No newline at end of file diff --git a/docs/html/distribute/googleplay/spotlight/index.jd b/docs/html/distribute/googleplay/spotlight/index.jd new file mode 100644 index 0000000..6acd914 --- /dev/null +++ b/docs/html/distribute/googleplay/spotlight/index.jd @@ -0,0 +1,46 @@ +page.title=Spotlight +walkthru=0 +header.hide=0 + +@jd:body + + +<p>Android developers, their apps, and their successes with Android and Google Play. </p> + + + +<div style="background: #F0F0F0; + border-top: 1px solid #DDD; + padding: 0px 0 24px 0; + overflow: auto; + clear:both; + margin-bottom:-10px; + margin-top:30px;""> + <div style="padding:0 0 0 29px;"> + <h4>Developer Story: Robot Invader</h4> + <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px height:78px; + width: 78px; + float: left; + margin: 17px 20px 9px 0;" src= + "//g0.gstatic.com/android/market/com.robotinvader.knightmare/hi-256-0-9e08d83bc8d01649e167131d197ada1cd1783fb0"> + <div style="width:700px;"> + <p style="margin-top:26px;margin-bottom:12px;">Robot Invader chose + Android and Google Play as the launch platform for their first game,<br /> + <a data-g-event="Developers Page" data-g-label="Case Study Link" href= + "//play.google.com/store/apps/details?id=com.robotinvader.knightmare"><em>Wind-up + Knight</em></a>. + </p> + <p> + Hear from the developers how Android helped them reach millions of users + and more than 100 device models with a single app binary, then iterate rapidly to ensure + a great user experience. + </p> + </div> + <iframe style="float:left; + margin-right:24px; + margin-top:14px;" width="700" height="394" src= + "http://www.youtube.com/embed/hTtlLiUTowY" frameborder="0" allowfullscreen></iframe> + </div> +</div>
\ No newline at end of file diff --git a/docs/html/distribute/googleplay/spotlight/tablets.jd b/docs/html/distribute/googleplay/spotlight/tablets.jd new file mode 100644 index 0000000..641b794 --- /dev/null +++ b/docs/html/distribute/googleplay/spotlight/tablets.jd @@ -0,0 +1,283 @@ +page.title=Developer Stories: The Opportunity of Android Tablets +walkthru=0 +header.hide=0 + +@jd:body + + +<p>More and more, developers are investing in a full tablet experience +for their apps and are seeing those investments pay off big. The increased +screen area on tablets opens up a world of possibilities, allowing for more +engagement with the user — which can mean an increase in usage as well as +more monetization opportunities. And with the growing wave of Android tablets that +continue to hit the market, it’s an important piece of any developer’s mobile +offering. </p> + +<p>Here are some stories from developers who are seeing real results as they +expand their offering to include Android tablets.</p> + + +<div style="margin-bottom:2em;"><!-- START STORY --> + +<h3>Mint: More screen real estate = more engagement</h3> + + <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px height:78px; + width: 78px; + float: left; + margin: 12px 20px 9px 20px;" src= + "https://lh5.ggpht.com/0xAIZJ1uE05b4RHNHgBBTIH6nRdPTY660T104xY7O2GbHXwab6YVmpU5yYg8yacfBg=w124"> + + <div style="list-style: none;height:100%; + float: right; + border-top: 1px solid #9C0; + width: 220px; + margin: 4px 20px;padding: .5em;"> + + + <h5>About the app</h5> + + + <ul> + <li><a href="http://play.google.com/store/apps/details?id=com.mint">Mint.com Personal Finance</a> by Intuit Inc.</li> + <li>Financial management app targeting 7- to 10-inch tablets</li> + </ul> + + <h5>Tablet Results</h5> + + <ul> + <li>Able to offer richer UI features</li> + <li>Much higher user engagement</li> + <li>Longer sessions — more Android tablet users have sessions longer than 5 minutes</li> + </ul> + + <div style="padding:.5em 0 0 1em;"> +<a href="http://play.google.com/store/apps/details?id=com.mint"> + <img alt="Android app on Google Play" + src="http://developer.android.com/images/brand/en_generic_rgb_wo_45.png" /> +</a> + + </div> + </div> + + <div style="line-height:1.4em;"> + <p style="margin-top:0;margin-bottom:12px;">When Intuit was thinking about +expanding their Mint mobile offering to include a version optimized for Android +tablets, they knew that taking the layout that worked for phones and simply +showing an enlarged version wouldn’t take full advantage of the opportunities +that tablets afford.</p> + + <p>“We knew we had a lot more real estate, and we wanted to provide a more +immersive experience for our users” said Ken Sun, Intuit Group Product Manager +at Mint.</p> + +<p>Intuit’s Mint app, which has a 4-star rating on Google Play, brings a number +of features to Android tablets that aren’t available for phones, including a +more visual presentation of personal financial data.</p> + +<p>“Whereas our app for phones is used throughout the day for quick sessions, +we’ve seen a larger percentage of our tablet usage happen in the evening, for +much longer sessions,” said Sun. “People are doing a lot more than just checking +their spending. They’re looking at historical trends, re-categorizing +transactions, analyzing the data and setting financial goals for the future +— digging much deeper and being more thoughtful. One example is how much +users are interacting with their own budgets in the tablet app. Customer budget +operations (view, edit, drill-down, etc.) are 7x higher on Android tablets than +they are on phones.”</p> + +<p>Fifty percent more Android tablet users have Mint sessions of 5 minutes or +longer than they do on phones. “We’ve found that phone usage is indicative of a +customer’s regular financial check-in, while tablet usage points towards more +analysis and interaction with that customer’s personal financial data. This is +the sort of immersive engagement experience we were looking for; the tablet and +phone apps serve as great complements to each other."</p> + </div> + + <div style="clear:both;margin-top:40px;width:auto;"> + + <a href=""><img src="{@docRoot}images/distribute/mint.png"></a> + + <div style="width:600px;margin-top:0px;padding:0 90px;"> + <p class="image-caption"><span style="font-weight:500;">Making the most of tablet screens</span>: Mint used the extra screen area on tablets to offer quick access to additional tools and information.</p> + </div> + + </div> + +</div> <!-- END STORY --> + + +<div style="margin:3em auto"><!-- START STORY --> + + +<h3>TinyCo: Monetization opportunities abound on tablets</h3> + + <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px height:78px; + width: 78px; + float: left; + margin: 12px 20px 9px 20px;" src= + "https://lh5.ggpht.com/mO1TPos65MWJF_n8ZrXMbNCqIqsvN4dQV_rwNOU3pF6N_Ii3lSiCPe_H_MP8C1MK5UKo=w124"> + + + <div style="list-style: none;height:100%; + float: right; + border-top: 1px solid #9C0; + width: 220px; + margin: 4px 20px;padding: .5em;"> + + <h5>About the app</h5> + + <ul> + <li><a href="http://play.google.com/store/apps/details?id=com.tinyco.village">Tiny Village</a> by TinyCo</li> + <li>Game targeting 7- to 10-inch tablets and phones</li> + </ul> + + <h5>Tablet Results</h5> + + <ul> + <li>35% higher average revenue per paying user (ARPPU)</li> + <li>Consistent increase in user retention</li> + <li>3x increase in downloads to Android tablets in the last 6 months</li> + </ul> + + <div style="padding:.5em 0 0 1em;"> +<a href="http://play.google.com/store/apps/details?id=com.tinyco.village"> + <img alt="Android app on Google Play" + src="http://developer.android.com/images/brand/en_generic_rgb_wo_45.png" /> +</a> + + </div> + </div> + + <div style="line-height:1.4em;"> + <p style="margin-top:0;margin-bottom:12px;">Over a year ago, developer +TinyCo, makers of games such as Tiny Monsters, switched to a +simultaneous launch strategy for their products. They chose Android as one of their +primary launch platforms because of its large installed base and global reach. They +also knew that the growing base of Android tablet users represented a huge +opportunity. </p> + + <p>Tiny Village was their first title to take advantage of the strategy, and +it proved to be a winning one — especially in terms of Android +tablets.</p> + + <p> “With continued optimization of the gameplay experience and a genuine +commitment to our Android offering through our Griffin engine, all of our +metrics started to rise,” said Rajeev Nagpal, Head of Product at TinyCo. In +fact, they’ve seen Android tablet downloads more than triple in the last six +months.</p> + + <p>One of the first things they noticed about usage of Tiny Village on +tablets was an increase in average revenue per paying user (ARPPU)—about 35% +higher than on smaller-screen devices such as phones. Additionally, average +revenue per user ARPU is now about 35% higher as well. “The game is just much +more immersive on tablet.”</p> + + <p>In addition to an increase in monetization metrics, they’ve also seen a +consistent increase in retention over other platforms. “These are really +important metrics for games — if you can get users to both stay around +longer and spend more while they’re there, you have a recipe for success.”</p> + </div> + + <div style="clear:both;margin-top:40px;width:auto;"> + + <a href=""><img src="{@docRoot}images/distribute/tinyvillage.png"></a> + + <div style="width:600px;margin-top:0px;padding:0 90px;"> + <p class="image-caption"><span style="font-weight:500;">More monetization +on tablets</span>: On Android tablets TinyCo has seen higher ARPPU and user +retention than on phones.</p> + </div> + + </div> + +</div> <!-- END STORY --> + + +<div style="margin-bottom:2em;"><!-- START STORY --> + +<h3>Instapaper: Riding the growing wave of Android tablets</h3> + + + <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px height:78px; + width: 78px; + float: left; + margin: 12px 20px 9px 20px;" src= + "https://lh3.ggpht.com/30KKcrIFO8V_wRfhnHaI9l0CLH_orIVFE7Xywtr9TBxAf0hi2BaZkKyBOs63Yfavpg=w124"> + + + <div style="list-style: none;height:100%; + float: right; + border-top: 1px solid #9C0; + width: 220px; + margin: 4px 20px;padding: .5em;"> + + + + + <h5>About the app</h5> + <ul> + <li><a href="http://play.google.com/store/apps/details?id=com.instapaper.android">Instapaper</a> by Mobelux</li> + <li>Content-browsing utility that targets 7- to 10-inch tablets and phones</li> + </ul> + + <h5>Tablet Results</h5> + + <ul> + <li>Tablets are now 50% of the app's installed base.</li> + </ul> + + <div style="padding:.5em 0 0 1em;"> +<a href="http://play.google.com/store/apps/details?id=com.instapaper.android"> + <img alt="Android app on Google Play" + src="http://developer.android.com/images/brand/en_generic_rgb_wo_45.png" /> +</a> + + </div> + </div> + + <div style="line-height:1.4em;"> + <p style="margin-top:0;margin-bottom:12px;">Instapaper for Android is an app +for saving web content to read later. Developer Mobelux decided that creating a +great UI for Android tablet users would be an essential part of their initial launch +plan.</p> + + <p>The app launched at the beginning of the summer of 2012, just in time to +take advantage of a new tide of Android tablets, including the <span +style="white-space:nowrap;">Nexus 7</span> tablet. The app has since seen huge +popularity among tablet users, in particular, on Nexus 7. On the day that +pre-orders of Nexus 7 began arriving, Mobelux saw a 600% jump in downloads of +its app on Google Play.</p> + + <p>“We saw a promising new set of Android tablets about to hit the market +and wanted to position ourselves to be ready for them” said Jeff Rock of +Mobelux. “It was a market that others were hesitant to explore, but the decision +to prioritize tablets has paid off very well for us.”</p> + + <p>Since that initial 600% jump in downloads, Instapaper for Android has +continued to see a successful run on Android tablets. In fact, Android tablets +now represent about 50% of their installed base. “With more and more Android +tablets coming online, we’re excited to see how our investment in Android +tablets continues to pay off.”</p> + </div> + + <div style="clear:both;margin-top:40px;width:auto;"> + + <a href=""><img src="{@docRoot}images/distribute/instapaper.png"></a> + + <div style="width:600px;margin-top:0px;padding:0 90px;"> + <p class="image-caption"><span style="font-weight:500;">Popular with +tablet users</span>: A great tablet UI and browsing convenience make Instapaper +popular with Android tablet users.</p> + </div> + + </div> + +</div> <!-- END STORY --> + + + diff --git a/docs/html/distribute/googleplay/strategies/app-quality.jd b/docs/html/distribute/googleplay/strategies/app-quality.jd index 6ea862b..ecc51dc 100644 --- a/docs/html/distribute/googleplay/strategies/app-quality.jd +++ b/docs/html/distribute/googleplay/strategies/app-quality.jd @@ -1,10 +1,10 @@ -page.title=Improving App Quality +page.title=Improving App Quality After Launch @jd:body <div id="qv-wrapper"> <div id="qv"> -<h2>Strategies:</h2> -<ul> +<h2>Strategies</h2> +<ol> <li><a href="#listen">Listen to Your Users</a></li> <li><a href="#stability">Improve Stability and Eliminate Bugs</a></li> <li><a href="#responsiveness">Improve UI Responsiveness</a></li> @@ -13,7 +13,14 @@ page.title=Improving App Quality <li><a href="#features">Deliver the Right Set of Features</a></li> <li><a href="#integrate">Integrate with the System and Third-Party Apps</a></li> <li><a href="#details">Pay Attention to Details</a></li> -</ul> +</ol> + +<h2>You Should Also Read</h2> +<ol> +<li><a href="{@docRoot}distribute/googleplay/quality/core.html">Core App Quality Guidelines</a></li> +<li><a href="{@docRoot}distribute/googleplay/quality/tablet.html">Tablet App Quality Checklist</a></li> +</ol> + </div> </div> @@ -22,7 +29,7 @@ With thousands of new apps being published in Google Play every week, it's impor <p> A better app can go a very long way: a higher quality app will translate to higher user ratings, generally better rankings, more downloads, and higher retention (longer install periods). High-quality apps also have a much higher likelihood of getting some unanticipated positive publicity such as being featured in Google Play or getting social media buzz.</p> <p> -The upside to having a higher-quality app is obvious. However, it's not always clear how to make an app "better". The path to improving app quality isn't always well-lit. The term "quality" — along with "polish" and "fit and finish" — aren't always well-defined. Here we'll light the path by looking at some of the key factors in app quality and ways of improving your app along these dimensions.</p> +The upside to having a higher-quality app is obvious. However, it's not always clear how to make an app "better". This document looks at some of the key factors in app quality and ways of improving your app over time, after you've launched the app.</p> <h2 id="listen">Listen to Your Users</h2> <p> @@ -52,15 +59,14 @@ One sure-fire way to lose your users is to give them a slow, unresponsive UI. Re <p> You can improve your apps's UI responsiveness by moving long-running operations off the main thread to worker threads. Android offers built-in debugging facilities such as StrictMode for analyzing your app's performance and activities on the main thread. You can see more recommendations in <a href="http://www.youtube.com/watch?v=c4znvD-7VDA">Writing Zippy Android Apps</a>, a developer session from Google I/O 2010,</p> - <div class="sidebox-wrapper"> <div class="sidebox"> -<h2>More resources</h2> +<h3>More resources</h3> <ul> <li><a href="{@docRoot}design/index.html">Android Design</a></li> <li><a href="{@docRoot}guide/practices/performance.html">Designing for Performance</a></li> <li><a href="{@docRoot}guide/practices/responsiveness.html">Designing for Responsiveness</a> -<li><a href="{@docRoot}guide/practices/seamlessness.html">Designing for seamlessness</a> +<li><a href="{@docRoot}guide/practices/seamlessness.html">Designing for Seamlessness</a> </li> </ul> </div></div> @@ -73,18 +79,17 @@ Lastly, pointed out in the blog post <a href="http://android-developers.blogspot <h2 id="usability">Improve Usability</h2> <p> In usability and in app design too, you should listen carefully to your users. Ask a handful of real Android device users (friends, family, etc.) to try out your app and observe them as they interact with it. Look for cases where they get confused, are unsure of how to proceed, or are surprised by certain behaviors. Minimize these cases by rethinking some of the interactions in your app, perhaps working in some of the <a href="http://www.youtube.com/watch?v=M1ZBjlCRfz0">user interface patterns</a> the Android UI team discussed at Google I/O.</p> -<p> -In the same vein, two problems that can plague some Android user interfaces are small tap targets and excessively small font sizes. These are generally easy to fix and can make a big impact on usability and user satisfaction. As a general rule, optimize for ease of use and legibility, while minimizing, or at least carefully balancing, information density.</p> <div class="sidebox-wrapper"> <div class="sidebox"> -<h2>More resources</h2> -<ul> -As you are designing or evaluating your app's UI, make sure to read and become familiar with the <a href="{@docRoot}design/index.html">Android Design</a> guidelines. Included are many examples of UI patterns, styles, and building blocks, as well as tools for the design process.</li> -</ul> +<p> +As you are designing or evaluating your app's UI, make sure to read and become familiar with the <a href="/design/index.html">Android Design</a> guidelines. Included are many examples of UI patterns, styles, and building blocks, as well as tools for the design process.</p> </div></div> <p> +In the same vein, two problems that can plague some Android user interfaces are small tap targets and excessively small font sizes. These are generally easy to fix and can make a big impact on usability and user satisfaction. As a general rule, optimize for ease of use and legibility, while minimizing, or at least carefully balancing, information density.</p> + +<p> Another way to incrementally improve usability, based on real-world data, is to implement <a href="http://code.google.com/mobile/analytics/docs/">Analytics</a> throughout your app to log usage of particular sections. Consider demoting infrequently used sections to the overflow menu in the <a href="{@docRoot}design/patterns/actionbar.html">Action bar</a>, or removing them altogether. For often-used sections and UI elements, make sure they're immediately obvious and easily accessible in your app's UI so that users can get to them quickly.</p> <p> Lastly, usability is an extensive and well-documented subject, with close ties to interface design, cognitive science, and other disciplines.</p> diff --git a/docs/html/images/distribute/instapaper.png b/docs/html/images/distribute/instapaper.png Binary files differnew file mode 100644 index 0000000..ffbf052 --- /dev/null +++ b/docs/html/images/distribute/instapaper.png diff --git a/docs/html/images/distribute/mint.png b/docs/html/images/distribute/mint.png Binary files differnew file mode 100644 index 0000000..50d90d5 --- /dev/null +++ b/docs/html/images/distribute/mint.png diff --git a/docs/html/images/distribute/tinyvillage.png b/docs/html/images/distribute/tinyvillage.png Binary files differnew file mode 100644 index 0000000..cde77f0 --- /dev/null +++ b/docs/html/images/distribute/tinyvillage.png diff --git a/docs/html/images/ui-ex-multi-pane.png b/docs/html/images/ui-ex-multi-pane.png Binary files differnew file mode 100644 index 0000000..188bb8b --- /dev/null +++ b/docs/html/images/ui-ex-multi-pane.png diff --git a/docs/html/images/ui-ex-single-panes.png b/docs/html/images/ui-ex-single-panes.png Binary files differnew file mode 100644 index 0000000..dff24a7 --- /dev/null +++ b/docs/html/images/ui-ex-single-panes.png |