diff options
Diffstat (limited to 'docs')
27 files changed, 569 insertions, 285 deletions
diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd index b2d50ce..e17a0fd 100644 --- a/docs/html/about/dashboards/index.jd +++ b/docs/html/about/dashboards/index.jd @@ -1,107 +1,65 @@ page.title=Dashboards -header.hide=1 @jd:body - - -<h2 id="Platform">Platform Versions</h2> - -<p>This page provides data about the relative number of active devices -running a given version of the Android platform. This can help you -understand the landscape of device distribution and decide how to prioritize -the development of your application features for the devices currently in -the hands of users. For information about how to target your application to devices based on -platform version, read about <a -href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API levels</a>.</p> - - -<h3 id="PlatformCurrent">Current Distribution</h3> - -<p>The following pie chart and table is based on the number of Android devices that have accessed -Google Play within a 14-day period ending on the data collection date noted below.</p> - -<div class="col-5" style="margin-left:0"> - - -<table> -<tr> - <th>Version</th> - <th>Codename</th> - <th>API</th> - <th>Distribution</th> -</tr> -<tr><td><a href="/about/versions/android-1.6.html">1.6</a></td><td>Donut</td> <td>4</td><td>0.2%</td></tr> -<tr><td><a href="/about/versions/android-2.1.html">2.1</a></td><td>Eclair</td> <td>7</td><td>1.9%</td></tr> -<tr><td><a href="/about/versions/android-2.2.html">2.2</a></td><td>Froyo</td> <td>8</td><td>7.5%</td></tr> -<tr><td><a href="/about/versions/android-2.3.html">2.3 - 2.3.2</a> - </td><td rowspan="2">Gingerbread</td> <td>9</td><td>0.2%</td></tr> -<tr><td><a href="/about/versions/android-2.3.3.html">2.3.3 - 2.3.7 - </a></td><!-- Gingerbread --> <td>10</td><td>43.9%</td></tr> -<tr><td><a href="/about/versions/android-3.1.html">3.1</a></td> - <td rowspan="2">Honeycomb</td> <td>12</td><td>0.3%</td></tr> -<tr><td><a href="/about/versions/android-3.2.html">3.2</a></td> <!-- Honeycomb --><td>13</td><td>0.9%</td></tr> -<tr><td><a href="/about/versions/android-4.0.3.html">4.0.3 - 4.0.4</a></td> - <td>Ice Cream Sandwich</td><td>15</td><td>28.6%</td></tr> -<tr><td><a href="/about/versions/android-4.1.html">4.1</a></td> - <td rowspan="2">Jelly Bean</td><td>16</td><td>14.9%</td></tr> -<tr><td><a href="/about/versions/android-4.2.html">4.2</a></td><!--Jelly Bean--> <td>17</td><td>1.6%</td></tr> -</table> - +<style> +div.chart, +div.screens-chart { + display:none; +} +tr .total { + background-color:transparent; + border:0; + color:#666; +} +tr th.total { + font-weight:bold; +} +</style> + + + + +<div class="sidebox"> +<h2>Google Play Install Stats</h2> +<p>The Google Play Developer Console also provides <a +href="{@docRoot}distribute/googleplay/about/distribution.html#stats">detailed statistics</a> +about your users' devices. Those stats may help you prioritize the device profiles for which +you optimize your app.</p> </div> -<div class="col-8" style="margin-right:0"> -<img style="margin-left:30px" alt="" -src="//chart.apis.google.com/chart?&cht=p&chs=460x245&chf=bg,s,00000000&chd=t:2.1,7.5,44.1,1.2,28.6,16.5&chl=Eclair%20%26%20older|Froyo|Gingerbread|Honeycomb|Ice%20Cream%20Sandwich|Jelly%20Bean&chco=c4df9b,6fad0c" -/> - -</div><!-- end dashboard-panel --> - -<p style="clear:both"><em>Data collected during a 14-day period ending on March 4, 2013</em></p> -<!-- -<p style="font-size:.9em">* <em>Other: 0.1% of devices running obsolete versions</em></p> ---> - -<h3 id="PlatformHistorical">Historical Distribution</h3> - -<p>The following stacked line graph provides a history of the relative number of -active Android devices running different versions of the Android platform. It also provides a -valuable perspective of how many devices your application is compatible with, based on the -platform version.</p> - -<p>Notice that the platform versions are stacked on top of each other with the oldest active -version at the top. This format indicates the total percent of active devices that are compatible -with a given version of Android. For example, if you develop your application for -the version that is at the very top of the chart, then your application is -compatible with 100% of active devices (and all future versions), because all Android APIs are -forward compatible. Or, if you develop your application for a version lower on the chart, -then it is currently compatible with the percentage of devices indicated on the y-axis, where the -line for that version meets the y-axis on the right.</p> - -<p>Each dataset in the timeline is based on the number of Android devices that accessed -Google Play within a 14-day period ending on the date indicated on the x-axis.</p> - -<img alt="" height="250" width="660" -src="//chart.apis.google.com/chart?&cht=lc&chs=660x250&chxt=x,x,y,r&chf=bg,s,00000000&chxr=0,0,12|1,0,12|2,0,100|3,0,100&chxl=0%3A%7C09/01%7C09/15%7C10/01%7C10/15%7C11/01%7C11/15%7C12/01%7C12/15%7C01/01%7C01/15%7C02/01%7C02/15%7C03/01%7C1%3A%7C2012%7C%7C%7C%7C%7C%7C%7C%7C2013%7C%7C%7C%7C2013%7C2%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25%7C3%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25&chxp=0,0,1,2,3,4,5,6,7,8,9,10,11,12&chxtc=0,5&chd=t:99.3,99.4,99.5,99.5,99.5,99.6,100.0,100.0,100.0,100.0,100.0,100.0,100.0|95.6,95.8,96.1,96.3,96.4,96.7,96.9,97.2,97.4,97.4,97.6,97.7,97.9|81.4,82.3,83.2,83.8,84.7,85.6,86.4,87.0,88.2,88.8,89.4,89.9,90.3|23.7,25.5,27.4,28.7,31.1,33.0,35.4,36.8,40.3,42.0,43.6,45.1,46.0|21.5,23.5,25.5,26.8,29.4,31.4,33.8,35.2,38.8,40.7,42.3,43.9,44.8|1.1,1.4,1.8,2.1,3.2,4.8,6.5,7.5,9.9,11.7,13.3,14.8,16.1&chm=b,c3df9b,0,1,0|tFroyo,689326,1,0,15,,t::-5|b,b4db77,1,2,0|tGingerbread,547a19,2,0,15,,t::-5|b,a5db51,2,3,0|b,96dd28,3,4,0|tIce%20Cream%20Sandwich,293f07,4,0,15,,t::-5|b,83c916,4,5,0|tJelly%20Bean,131d02,5,9,15,,t::-5|B,6fad0c,5,6,0&chg=7,25&chdl=Eclair|Froyo|Gingerbread|Honeycomb|Ice%20Cream%20Sandwich|Jelly%20Bean&chco=add274,9dd14f,8ece2a,7ab61c,659b11,507d08" -/> -<p><em>Last historical dataset collected during a 14-day period ending on March 1, 2013</em></p> - - - - - - - - +<p>This page provides information about the relative number of devices that share a certain +characteristic, such as Android version or screen size. This information may +help you prioritize efforts for <a +href="{@docRoot}training/basics/supporting-devices/index.html">supporting different devices</a>.</p> +<p>Each snapshot of data represents all the devices that visited the Google Play Store in the +prior 14 days.</p> +<p class="note"><strong>Note:</strong> Beginning in April, 2013, these charts are now built +using data collected from each device when the user visits the Google Play Store. Previously, the +data was collected when the device simply checked-in to Google servers. We believe the new +data more accurately reflects those users who are most engaged in the Android and Google Play +ecosystem.</p> +<h2 id="Platform">Platform Versions</h2> +<p>This section provides data about the relative number of devices running a given version of +the Android platform.</p> +<p>For information about how to target your application to devices based on +platform version, read <a +href="{@docRoot}training/basics/supporting-devices/platforms.html">Supporting Different +Platform Versions</a>.</p> +<div id="version-chart"> +</div> +<p style="clear:both"><em>Data collected during a 14-day period ending on April 2, 2013. +<br/>Any versions with less than 0.1% distribution are not shown.</em> +</p> @@ -111,72 +69,22 @@ src="//chart.apis.google.com/chart?&cht=lc&chs=660x250&chxt=x,x,y,r&chf=bg,s,000 <h2 id="Screens">Screen Sizes and Densities</h2> -<img alt="" style="float:right;" -src="//chart.googleapis.com/chart?cht=p&chs=400x250&chf=bg,s,00000000&chco=c4df9b,6fad0c&chl=Xlarge%7CLarge%7CNormal%7CSmall&chd=t%3A4.6,6.1,86.6,2.7" /> - - -<img alt="" style="float:right;clear:right" -src="//chart.googleapis.com/chart?cht=p&chs=400x250&chf=bg,s,00000000&chco=c4df9b,6fad0c&chl=ldpi%7Cmdpi%7Chdpi%7Cxhdpi&chd=t%3A2.2,18,51.1,28.7" /> - - -<p>This section provides data about the relative number of active devices that have a particular +<p>This section provides data about the relative number of devices that have a particular screen configuration, defined by a combination of screen size and density. To simplify the way that you design your user interfaces for different screen configurations, Android divides the range of -actual screen sizes and densities into:</p> - -<ul> -<li>A set of four generalized <strong>sizes</strong>: <em>small</em>, <em>normal</em>, -<em>large</em>, and <em>xlarge</em></em></li> -<li>A set of four generalized <strong>densities</strong>: <em>ldpi</em> (low), <em>mdpi</em> -(medium), <em>hdpi</em> (high), and <em>xhdpi</em> (extra high)</li> -</ul> +actual screen sizes and densities into several buckets as expressed by the table below.</p> <p>For information about how you can support multiple screen configurations in your -application, see <a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple +application, read <a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>.</p> -<p class="note"><strong>Note:</strong> This data is based on the number -of Android devices that have accessed Google Play within a 7-day period -ending on the data collection date noted below.</p> - - -<table style="width:350px"> -<tr> -<th></th> -<th scope="col">ldpi</th> -<th scope="col">mdpi</th> -<th scope="col">hdpi</th> -<th scope="col">xhdpi</th> -</tr> -<tr><th scope="row">small</th> -<td>1.7%</td> <!-- small/ldpi --> -<td></td> <!-- small/mdpi --> -<td>1.0%</td> <!-- small/hdpi --> -<td></td> <!-- small/xhdpi --> -</tr> -<tr><th scope="row">normal</th> -<td>0.4%</td> <!-- normal/ldpi --> -<td>11%</td> <!-- normal/mdpi --> -<td>50.1%</td> <!-- normal/hdpi --> -<td>25.1%</td> <!-- normal/xhdpi --> -</tr> -<tr><th scope="row">large</th> -<td>0.1%</td> <!-- large/ldpi --> -<td>2.4%</td> <!-- large/mdpi --> -<td></td> <!-- large/hdpi --> -<td>3.6%</td> <!-- large/xhdpi --> -</tr> -<tr><th scope="row">xlarge</th> -<td></td> <!-- xlarge/ldpi --> -<td>4.6%</td> <!-- xlarge/mdpi --> -<td></td> <!-- xlarge/hdpi --> -<td></td> <!-- xlarge/xhdpi --> -</tr> -</table> -<p style="clear:both"><em>Data collected during a 7-day period ending on October 1, 2012</em></p> +<div id="screens-chart"> +</div> +<p style="clear:both"><em>Data collected during a 14-day period ending on April 2, 2013 +<br/>Any screen configurations with less than 0.1% distribution are not shown.</em></p> @@ -187,14 +95,14 @@ ending on the data collection date noted below.</p> <h2 id="OpenGL">Open GL Version</h2> -<p>This section provides data about the relative number of active devices that support a particular +<p>This section provides data about the relative number of devices that support a particular version of OpenGL ES. Note that support for one particular version of OpenGL ES also implies support for any lower version (for example, support for version 2.0 also implies support for 1.1).</p> <img alt="" style="float:right" -src="//chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=GL%201.1%20only|GL%202.0%20%26%201.1&chd=t%3A9.2,90.8&chf=bg,s,00000000" /> +src="//chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=GL%201.1%20only|GL%202.0%20%26%201.1&chd=t%3A0.3,99.7&chf=bg,s,00000000" /> <p>To declare which version of OpenGL ES your application requires, you should use the {@code android:glEsVersion} attribute of the <a @@ -204,10 +112,6 @@ href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">{@code <supports-gl-texture>}</a> element to declare the GL compression formats that your application uses.</p> -<p class="note"><strong>Note:</strong> This data is based on the number -of Android devices that have accessed Google Play within a 7-day period -ending on the data collection date noted below.</p> - <table style="width:350px"> <tr> @@ -216,14 +120,347 @@ ending on the data collection date noted below.</p> </tr> <tr> <td>1.1 only</th> -<td>9.2%</td> +<td>0.3%</td> </tr> <tr> <td>2.0 & 1.1</th> -<td>90.8%</td> +<td>99.7%</td> </tr> </table> -<p style="clear:both"><em>Data collected during a 7-day period ending on October 1, 2012</em></p> +<p style="clear:both"><em>Data collected during a 14-day period ending on April 2, 2013</em></p> + + + + + + + + + + + + + +<script> +var VERSION_DATA = +[ + { + "chart": "//chart.googleapis.com/chart?chf=bg%2Cs%2C00000000&chd=t%3A1.8%2C4.0%2C39.8%2C0.2%2C29.3%2C25.0&chl=Eclair%7CFroyo%7CGingerbread%7CHoneycomb%7CIce%20Cream%20Sandwich%7CJelly%20Bean&chs=500x250&cht=p&chco=c4df9b%2C6fad0c", + "data": [ + { + "api": 4, + "name": "Donut", + "perc": "0.1" + }, + { + "api": 7, + "name": "Eclair", + "perc": "1.7" + }, + { + "api": 8, + "name": "Froyo", + "perc": "4.0" + }, + { + "api": 9, + "name": "Gingerbread", + "perc": "0.1" + }, + { + "api": 10, + "name": "Gingerbread", + "perc": "39.7" + }, + { + "api": 13, + "name": "Honeycomb", + "perc": "0.2" + }, + { + "api": 15, + "name": "Ice Cream Sandwich", + "perc": "29.3" + }, + { + "api": 16, + "name": "Jelly Bean", + "perc": "23.0" + }, + { + "api": 17, + "name": "Jelly Bean", + "perc": "2.0" + } + ] + } +]; + + + + + +var SCREEN_DATA = +[ + { + "data": { + "Large": { + "hdpi": "0.5", + "ldpi": "0.7", + "mdpi": "2.7", + "tvdpi": "1.0", + "xhdpi": "0.8" + }, + "Normal": { + "hdpi": "37.9", + "ldpi": "0.1", + "mdpi": "16.1", + "xhdpi": "25.0", + "xxhdpi": "0.8" + }, + "Small": { + "ldpi": "9.5" + }, + "Xlarge": { + "hdpi": "0.1", + "ldpi": "0.1", + "mdpi": "4.6", + "xhdpi": "0.1" + } + }, + "densitychart": "//chart.googleapis.com/chart?chf=bg%2Cs%2C00000000&chd=t%3A10.4%2C23.4%2C1.0%2C38.5%2C25.9%2C0.8&chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chs=400x250&cht=p&chco=c4df9b%2C6fad0c", + "layoutchart": "//chart.googleapis.com/chart?chf=bg%2Cs%2C00000000&chd=t%3A4.9%2C5.7%2C79.9%2C9.5&chl=Xlarge%7CLarge%7CNormal%7CSmall&chs=400x250&cht=p&chco=c4df9b%2C6fad0c" + } +]; + + + +var VERSION_NAMES = +[ + {"api":0},{"api":1},{"api":2},{"api":3}, + { + "api":4, + "link":"<a href='/about/versions/android-1.6.html'>1.6</a>", + "codename":"Donut", + }, + { "api":5}, + { "api":6}, + { + "api":7, + "link":"<a href='/about/versions/android-2.1.html'>2.1</a>", + "codename":"Eclair", + }, + { + "api":8, + "link":"<a href='/about/versions/android-2.2.html'>2.2</a>", + "codename":"Froyo" + }, + { + "api":9, + "link":"<a href='/about/versions/android-2.3.html'>2.3 -<br>2.3.2</a>", + "codename":"Gingerbread" + }, + { + "api":10, + "link":"<a href='/about/versions/android-2.3.3.html'>2.3.3 -<br>2.3.7</a>", + "codename":"Gingerbread" + }, + { "api":11}, + { + "api":12, + "link":"<a href='/about/versions/android-3.1.html'>3.1</a>", + "codename":"Honeycomb" + }, + { + "api":13, + "link":"<a href='/about/versions/android-3.2.html'>3.2</a>", + "codename":"Honeycomb" + }, + { "api":14}, + { + "api":15, + "link":"<a href='/about/versions/android-4.0.html'>4.0.3 -<br>4.0.4</a>", + "codename":"Ice Cream Sandwich" + }, + { + "api":16, + "link":"<a href='/about/versions/android-4.1.html'>4.1.x</a>", + "codename":"Jelly Bean" + }, + { + "api":17, + "link":"<a href='/about/versions/android-4.2.html'>4.2.x</a>", + "codename":"Jelly Bean" + } +]; + + + + + + + + + + + + + + + + + + + +$(document).ready(function(){ + // for each set of data (each month) + $.each(VERSION_DATA, function(i, set) { + + // set up wrapper divs + var $div = $('<div class="chart"' + + ((i == 0) ? ' style="display:block"' : '') + + ' >'); + var $divtable = $('<div class="col-5" style="margin-left:0">'); + var $divchart = $('<div class="col-8" style="margin-right:0">'); + + // set up a new table + var $table = $("<table>"); + var $trh = $("<tr><th>Version</th>" + + "<th>Codename</th>" + + "<th>API</th>" + + "<th>Distribution</th></tr>"); + $table.append($trh); + + // loop each data set (each api level represented in stats) + $.each(set.data, function(i, data) { + // check if we need to rowspan the codename + var rowspan = 1; + // must not be first row + if (i > 0) { + // if this row's codename is the same as previous row codename + if (data.name == set.data[i-1].name) { + rowspan = 0; + // otherwise, as long as this is not the last row + } else if (i < (set.data.length - 1)) { + // increment rowspan for each subsequent row w/ same codename + while (data.name == set.data[i+rowspan].name) { + rowspan++; + // unless we've reached the last row + if ((i + rowspan) >= set.data.length) break; + } + } + } + + // create table row and get corresponding version info from VERSION_NAMES + var $tr = $("<tr>"); + $tr.append("<td>" + VERSION_NAMES[data.api].link + "</td>"); + if (rowspan > 0) { + $tr.append("<td rowspan='" + rowspan + "'>" + VERSION_NAMES[data.api].codename + "</td>"); + } + $tr.append("<td>" + data.api + "</td>"); + $tr.append("<td>" + data.perc + "%</td>"); + $table.append($tr); + }); + + // create chart image + var $chart = $('<img style="margin-left:30px" alt="" src="' + set.chart + '" />'); + + // stack up and insert the elements + $divtable.append($table); + $divchart.append($chart); + $div.append($divtable).append($divchart); + $("#version-chart").append($div); + }); + + + + var SCREEN_SIZES = ["Small","Normal","Large","Xlarge"]; + var SCREEN_DENSITIES = ["ldpi","mdpi","tvdpi","hdpi","xhdpi","xxhdpi"]; + + + // for each set of screens data (each month) + $.each(SCREEN_DATA, function(i, set) { + + // set up wrapper divs + var $div = $('<div class="screens-chart"' + + ((i == 0) ? ' style="display:block"' : '') + + ' >'); + + // set up a new table + var $table = $("<table>"); + var $trh = $("<tr><th></th></tr>"); + $.each(SCREEN_DENSITIES, function(i, density) { + $trh.append("<th scope='col'>" + density + "</th>"); + }); + $trh.append("<th scope='col' class='total'>Total</th>"); + $table.append($trh); + + // array to hold totals for each density + var densityTotals = new Array(SCREEN_DENSITIES.length); + $.each(densityTotals, function(i, total) { + densityTotals[i] = 0; // make them all zero to start + }); + + // loop through each screen size + $.each(SCREEN_SIZES, function(i, size) { + // if there are any devices of this size + if (typeof set.data[size] != "undefined") { + // create table row and insert data + var $tr = $("<tr>"); + $tr.append("<th scope='row'>" + size + "</th>"); + // variable to sum all densities for this size + var total = 0; + // loop through each density + $.each(SCREEN_DENSITIES, function(i, density) { + var num = typeof set.data[size][density] != "undefined" ? set.data[size][density] : 0; + $tr.append("<td>" + (num != 0 ? num + "%" : "") + "</td>"); + total += parseFloat(num); + densityTotals[i] += parseFloat(num); + }) + $tr.append("<td class='total'>" + total.toFixed(1) + "%</td>"); + $table.append($tr); + } + }); + + // create row of totals for each density + var $tr = $("<tr><th class='total'>Total</th></tr>"); + $.each(densityTotals, function(i, total) { + $tr.append("<td class='total'>" + total.toFixed(1) + "%</td>"); + }); + $table.append($tr); + + // create charts + var $sizechart = $('<img style="float:left;width:380px" alt="" src="' + + set.layoutchart + '" />'); + var $densitychart = $('<img style="float:left;width:380px" alt="" src="' + + set.densitychart + '" />'); + + // stack up and insert the elements + $div.append($table).append($sizechart).append($densitychart); + $("#screens-chart").append($div); + }); + + +}); + + + +function changeVersionDate() { + var date = $('#date-versions option:selected').val(); + + $(".chart").hide(); + $(".chart."+date+"").show(); +} + + +function changeScreensVersionDate() { + var date = $('#date-screens option:selected').val(); + + $(".screens-chart").hide(); + $(".screens-chart."+date+"").show(); +} + +</script> diff --git a/docs/html/google/play/billing/billing_integrate.jd b/docs/html/google/play/billing/billing_integrate.jd index 3365cfc..57227a8 100755 --- a/docs/html/google/play/billing/billing_integrate.jd +++ b/docs/html/google/play/billing/billing_integrate.jd @@ -19,6 +19,7 @@ parent.link=index.html <li><a href="#Subs">Implementing Subscriptions</a><li> </ol> </li> + <li><a href="#billing-security">Securing Your App</a> </ol> <h2>Reference</h2> <ol> @@ -361,6 +362,34 @@ Bundle activeSubs = mService.getPurchases(3, "com.example.myapp", the user. Once a subscription expires without renewal, it will no longer appear in the returned {@code Bundle}.</p> +<h2 id="billing-security">Securing Your Application</h2> + +<p>To help ensure the integrity of the transaction information that is sent to +your application, Google Play signs the JSON string that contains the response +data for a purchase order. Google Play uses the private key that is associated +with your application in the Developer Console to create this signature. The +Developer Console generates an RSA key pair for each application.<p> + +<p class="note"><strong>Note:</strong>To find the public key portion of this key +pair, open your application's details in the Developer Console, then click on +<strong>Services & APIs</strong>, and look at the field titled +<strong>Your License Key for This Application</strong>.</p> + +<p>The Base64-encoded RSA public key generated by Google Play is in binary +encoded, X.509 subjectPublicKeyInfo DER SEQUENCE format. It is the same public +key that is used with Google Play licensing.</p> + +<p>When your application receives this signed response you can +use the public key portion of your RSA key pair to verify the signature. +By performing signature verification you can detect responses that have +been tampered with or that have been spoofed. You can perform this signature +verification step in your application; however, if your application connects +to a secure remote server then we recommend that you perform the signature +verification on that server.</p> + +<p>For more information about best practices for security and design, see <a +href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design</a>.</p> + diff --git a/docs/html/google/play/billing/billing_reference.jd b/docs/html/google/play/billing/billing_reference.jd index 1410e65..e168d70 100755 --- a/docs/html/google/play/billing/billing_reference.jd +++ b/docs/html/google/play/billing/billing_reference.jd @@ -143,7 +143,9 @@ does not include tax.</td> </tr> <tr> <td>{@code INAPP_DATA_SIGNATURE}</td> - <td>String containing the signature of the purchase data that was signed with the private key of the developer.</td> + <td>String containing the signature of the purchase data that was signed +with the private key of the developer. The data signature uses the +RSASSA-PKCS1-v1_5 scheme.</td> </tr> </table> </p> diff --git a/docs/html/google/play/licensing/adding-licensing.jd b/docs/html/google/play/licensing/adding-licensing.jd index 3f2460f..93561f6 100644 --- a/docs/html/google/play/licensing/adding-licensing.jd +++ b/docs/html/google/play/licensing/adding-licensing.jd @@ -853,37 +853,39 @@ sample application calls <code>checkAccess()</code> from a <h3 id="account-key">Embed your public key for licensing</h3> -<p>For each publisher account, the Google Play service automatically -generates a 2048-bit RSA public/private key pair that is used exclusively for -licensing. The key pair is uniquely associated with the publisher account and is -shared across all applications that are published through the account. Although -associated with a publisher account, the key pair is <em>not</em> the same as -the key that you use to sign your applications (or derived from it).</p> +<p>For each application, the Google Play service automatically +generates a 2048-bit RSA public/private key pair that is used for +licensing and in-app billing. The key pair is uniquely associated with the +application. Although associated with the application, the key pair is +<em>not</em> the same as the key that you use to sign your applications (or derived from it).</p> <p>The Google Play Developer Console exposes the public key for licensing to any -developer signed in to the publisher account, but it keeps the private key +developer signed in to the Developer Console, but it keeps the private key hidden from all users in a secure location. When an application requests a license check for an application published in your account, the licensing server -signs the license response using the private key of your account's key pair. +signs the license response using the private key of your application's key pair. When the LVL receives the response, it uses the public key provided by the application to verify the signature of the license response. </p> -<p>To add licensing to an application, you must obtain your publisher account's +<p>To add licensing to an application, you must obtain your application's public key for licensing and copy it into your application. Here's how to find -your account's public key for licensing:</p> +your application's public key for licensing:</p> <ol> <li>Go to the Google Play <a href="http://play.google.com/apps/publish">Developer Console</a> and sign in. Make sure that you sign in to the account from which the application you are licensing is published (or will be published). </li> -<li>In the account home page, locate the "Edit profile" link and click it. </li> -<li>In the Edit Profile page, locate the "Licensing" pane, shown below. Your -public key for licensing is given in the "Public key" text box. </li> +<li>In the application details page, locate the <strong>Services & APIs</strong> +link and click it. </li> +<li>In the <strong>Services & APIs</strong> page, locate the +<strong>Licensing & In-App Billing</strong> section. Your public key for +licensing is given in the +<strong>Your License Key For This Application</strong> field. </li> </ol> <p>To add the public key to your application, simply copy/paste the key string -from the text box into your application as the value of the String variable +from the field into your application as the value of the String variable <code>BASE64_PUBLIC_KEY</code>. When you are copying, make sure that you have selected the entire key string, without omitting any characters. </p> @@ -965,16 +967,6 @@ application that they have legitimately purchased on another device.</li> </ul> </div> - - - - - - - - - - <h2 id="app-obfuscation">Obfuscating Your Code</h2> <p>To ensure the security of your application, particularly for a paid diff --git a/docs/html/google/play/licensing/index.jd b/docs/html/google/play/licensing/index.jd index a13be10..6632fc0 100644 --- a/docs/html/google/play/licensing/index.jd +++ b/docs/html/google/play/licensing/index.jd @@ -16,7 +16,7 @@ restrict use of the application to a specific device, in addition to any other c <p>The licensing service is a secure means of controlling access to your applications. When an application checks the licensing status, the Google Play server signs the licensing status -response using a key pair that is uniquely associated with the publisher account. Your application +response using a key pair that is uniquely associated with the application. Your application stores the public key in its compiled <code>.apk</code> file and uses it to verify the licensing status response.</p> diff --git a/docs/html/google/play/licensing/licensing-reference.jd b/docs/html/google/play/licensing/licensing-reference.jd index 4240097..7bfa61a 100644 --- a/docs/html/google/play/licensing/licensing-reference.jd +++ b/docs/html/google/play/licensing/licensing-reference.jd @@ -186,7 +186,7 @@ licensing server, possibly because of network availability problems. </td> </tr> <tr> <td>{@code ERROR_SERVER_FAILURE}</td> -<td>Server error — the server could not load the publisher account's key +<td>Server error — the server could not load the application's key pair for licensing.</td> <td>No</td> <td></td> diff --git a/docs/html/google/play/licensing/overview.jd b/docs/html/google/play/licensing/overview.jd index 2434a4c..4e1a9c9 100644 --- a/docs/html/google/play/licensing/overview.jd +++ b/docs/html/google/play/licensing/overview.jd @@ -38,13 +38,13 @@ the licensing server and receives the result. The Google Play application sends the result to your application, which can allow or disallow further use of the application as needed.</p> -<p class="note"><strong>Note:</strong> If a paid application has been uploaded to Google Play but -saved only as a draft application (the app is unpublished), the licensing server considers all users -to be licensed users of the application (because it's not even possible to purchase the app). -This exception is necessary in order for you to perform testing of your licensing +<p class="note"><strong>Note:</strong> If a paid application has been uploaded +to Google Play, but saved only as a draft application (the app is +unpublished), the licensing server considers all users to be licensed users of +the application (because it's not even possible to purchase the app). This +exception is necessary in order for you to perform testing of your licensing implementation.</p> - <div class="figure" style="width:469px"> <img src="{@docRoot}images/licensing_arch.png" alt=""/> <p class="img-caption"><strong>Figure 1.</strong> Your application initiates a @@ -102,10 +102,11 @@ response data using an RSA key pair that is shared exclusively between the Googl server and you.</p> <p>The licensing service generates a single licensing key pair for each -publisher account and exposes the public key in your account's profile page. You must copy the -public key from the web site and embed it in your application source code. The server retains the -private key internally and uses it to sign license responses for the applications you -publish with that account.</p> +application and exposes the public key in your application's +<strong>Services & APIs</strong> page in the Developer Console. You must copy +the public key from the Developer Console and embed it in your application +source code. The server retains the private key internally and uses it to sign +license responses for the applications you publish with that account.</p> <p>When your application receives a signed response, it uses the embedded public key to verify the data. The use of public key cryptography in the licensing @@ -221,7 +222,7 @@ gives you wider distribution potential for your applications. </p> <p>Licensing lets you move to a license-based model that is enforceable on all devices that have access to Google Play. Access is not bound to the characteristics of the host device, but to your -publisher account on Google Play (through the app's public key) and the +application on Google Play (through the app's public key) and the licensing policy that you define. Your application can be installed and managed on any device on any storage, including SD card.</p> diff --git a/docs/html/guide/components/fragments.jd b/docs/html/guide/components/fragments.jd index 7747b31..32c9f99 100644 --- a/docs/html/guide/components/fragments.jd +++ b/docs/html/guide/components/fragments.jd @@ -172,7 +172,7 @@ the user might not come back).</dd> <p>Most applications should implement at least these three methods for every fragment, but there are several other callback methods you should also use to handle various stages of the -fragment lifecycle. All the lifecycle callback methods are discussed more later, in the section +fragment lifecycle. All the lifecycle callback methods are discussed in more detail in the section about <a href="#Lifecycle">Handling the Fragment Lifecycle</a>.</p> diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd b/docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd index c12b789..9f835a7 100644 --- a/docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd +++ b/docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd @@ -96,7 +96,7 @@ finished Action Bar icon dimensions for each generalized screen density.</p> </th> </tr> <tr> - <th style="background-color:#f3f3f3;font-weight:normal"> + <th> Action Bar Icon Size </th> <td> diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd b/docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd index e02cdfc..a2c1459 100644 --- a/docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd +++ b/docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd @@ -51,36 +51,46 @@ for suggestions on how to work with multiple sets of icons.</p> <p class="table-caption"><strong>Table 1.</strong> Summary of finished dialog icon dimensions for each of the three generalized screen densities.</p> - <table> - <tbody> - <tr> - <th style="background-color:#f3f3f3;font-weight:normal"> - <nobr>Low density screen <em>(ldpi)</em></nobr> - </th> - <th style="background-color:#f3f3f3;font-weight:normal"> - <nobr>Medium density screen <em>(mdpi)</em></nobr> - </th> - <th style="background-color:#f3f3f3;font-weight:normal"> - <nobr>High density screen <em>(hdpi)</em><nobr> - </th> - </tr> - - <tr> - <td> - 24 x 24 px - </td> - <td> - 32 x 32 px - </td> - <td> - 48 x 48 px - </td> - </tr> - - </tbody> - </table> - - +<table> + <tbody> + <tr> + <th></th> + <th> + <code>ldpi</code> (120 dpi)<br> + <small style="font-weight: normal">(Low density screen)</small> + </th> + <th> + <code>mdpi</code> (160 dpi)<br> + <small style="font-weight: normal">(Medium density screen)</small> + </th> + <th> + <code>hdpi</code> (240 dpi)<br> + <small style="font-weight: normal">(High density screen)</small> + </th> + <th> + <code>xhdpi</code> (320 dpi)<br> + <small style="font-weight: normal">(Extra-high density screen)</small> + </th> + </tr> + <tr> + <th style="background-color:#f3f3f3;font-weight:normal"> + Dialog Icon Size + </th> + <td> + 24 x 24 px + </td> + <td> + 32 x 32 px + </td> + <td> + 48 x 48 px + </td> + <td> + 64 x 64 px + </td> + </tr> + </tbody> +</table> <p><strong>Final art must be exported as a transparent PNG file. Do not include a background color</strong>.</p> diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd b/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd index 200c135..4ec56b1 100644 --- a/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd +++ b/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd @@ -213,7 +213,7 @@ finished launcher icon dimensions for each generalized screen density.</p> </th> </tr> <tr> - <th style="background-color:#f3f3f3;font-weight:normal"> + <th> Launcher Icon Size </th> <td> diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_list.jd b/docs/html/guide/practices/ui_guidelines/icon_design_list.jd index 2fbce87..38ceb85 100644 --- a/docs/html/guide/practices/ui_guidelines/icon_design_list.jd +++ b/docs/html/guide/practices/ui_guidelines/icon_design_list.jd @@ -53,36 +53,46 @@ for suggestions on how to work with multiple sets of icons.</p> <p class="table-caption"><strong>Table 1.</strong> Summary of finished list view icon dimensions for each of the three generalized screen densities.</p> - <table> - <tbody> - <tr> - <th style="background-color:#f3f3f3;font-weight:normal"> - <nobr>Low density screen <em>(ldpi)</em></nobr> - </th> - <th style="background-color:#f3f3f3;font-weight:normal"> - <nobr>Medium density screen <em>(mdpi)</em></nobr> - </th> - <th style="background-color:#f3f3f3;font-weight:normal"> - <nobr>High density screen <em>(hdpi)</em><nobr> - </th> - </tr> - - <tr> - <td> - 24 x 24 px - </td> - <td> - 32 x 32 px - </td> - <td> - 48 x 48 px - </td> - </tr> - - </tbody> - </table> - - +<table> + <tbody> + <tr> + <th></th> + <th> + <code>ldpi</code> (120 dpi)<br> + <small style="font-weight: normal">(Low density screen)</small> + </th> + <th> + <code>mdpi</code> (160 dpi)<br> + <small style="font-weight: normal">(Medium density screen)</small> + </th> + <th> + <code>hdpi</code> (240 dpi)<br> + <small style="font-weight: normal">(High density screen)</small> + </th> + <th> + <code>xhdpi</code> (320 dpi)<br> + <small style="font-weight: normal">(Extra-high density screen)</small> + </th> + </tr> + <tr> + <th style="background-color:#f3f3f3;font-weight:normal"> + List View Icon Size + </th> + <td> + 24 x 24 px + </td> + <td> + 32 x 32 px + </td> + <td> + 48 x 48 px + </td> + <td> + 64 x 64 px + </td> + </tr> + </tbody> +</table> <p><strong>Final art must be exported as a transparent PNG file. Do not include a background color</strong>.</p> diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd b/docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd index 8c15777..4cd4db3 100644 --- a/docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd +++ b/docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd @@ -155,7 +155,7 @@ finished icon dimensions for each generalized screen density.</p> </th> </tr> <tr> - <th style="background-color:#f3f3f3;font-weight:normal"> + <th> Status Bar Icon Size<br><small>(Android 3.0 and Later)</small> </th> <td> diff --git a/docs/html/guide/topics/graphics/prop-animation.jd b/docs/html/guide/topics/graphics/prop-animation.jd index b733624..49d7bb8 100644 --- a/docs/html/guide/topics/graphics/prop-animation.jd +++ b/docs/html/guide/topics/graphics/prop-animation.jd @@ -479,7 +479,7 @@ ObjectAnimator.ofFloat(targetObject, "propName", 1f) </li> <li>Depending on what property or object you are animating, you might need to call the {@link - android.view.View#invalidate invalidate()} method on a View force the screen to redraw itself with the + android.view.View#invalidate invalidate()} method on a View to force the screen to redraw itself with the updated animated values. You do this in the {@link android.animation.ValueAnimator.AnimatorUpdateListener#onAnimationUpdate onAnimationUpdate()} callback. For example, animating the color property of a Drawable object only cause updates to the @@ -825,7 +825,7 @@ rotationAnim.setDuration(5000ms); <h2 id="views">Animating Views</h2> - <p>The property animation system allow streamlined animation of View objects and offerse + <p>The property animation system allow streamlined animation of View objects and offers a few advantages over the view animation system. The view animation system transformed View objects by changing the way that they were drawn. This was handled in the container of each View, because the View itself had no properties to manipulate. diff --git a/docs/html/guide/topics/resources/accessing-resources.jd b/docs/html/guide/topics/resources/accessing-resources.jd index 0673b6f..8f99653 100644 --- a/docs/html/guide/topics/resources/accessing-resources.jd +++ b/docs/html/guide/topics/resources/accessing-resources.jd @@ -50,7 +50,7 @@ the {@code aapt} tool automatically generates.</p> <p>When your application is compiled, {@code aapt} generates the {@code R} class, which contains resource IDs for all the resources in your {@code res/} directory. For each type of resource, there is an {@code R} subclass (for example, -{@code R.drawable} for all drawable resources) and for each resource of that type, there is a static +{@code R.drawable} for all drawable resources), and for each resource of that type, there is a static integer (for example, {@code R.drawable.icon}). This integer is the resource ID that you can use to retrieve your resource.</p> @@ -68,7 +68,7 @@ resource is a simple value (such as a string).</li> <p>There are two ways you can access a resource:</p> <ul> - <li><strong>In code:</strong> Using an static integer from a sub-class of your {@code R} + <li><strong>In code:</strong> Using a static integer from a sub-class of your {@code R} class, such as: <pre class="classic no-pretty-print">R.string.hello</pre> <p>{@code string} is the resource type and {@code hello} is the resource name. There are many @@ -264,11 +264,13 @@ reference a system resource, you would need to include the package name. For exa android:text="@string/hello" /> </pre> -<p class="note"><strong>Note:</strong> You should use string resources at all times, so that your -application can be localized for other languages. For information about creating alternative +<p class="note"><strong>Note:</strong> You should use string resources at +all times, so that your application can be localized for other languages. +For information about creating alternative resources (such as localized strings), see <a href="providing-resources.html#AlternativeResources">Providing Alternative -Resources</a>.</p> +Resources</a>. For a complete guide to localizing your application for other languages, +see <a href="localization.html">Localization</a>.</p> <p>You can even use resources in XML to create aliases. For example, you can create a drawable resource that is an alias for another drawable resource:</p> diff --git a/docs/html/guide/topics/resources/providing-resources.jd b/docs/html/guide/topics/resources/providing-resources.jd index b311b7f..5097cc4 100644 --- a/docs/html/guide/topics/resources/providing-resources.jd +++ b/docs/html/guide/topics/resources/providing-resources.jd @@ -376,7 +376,7 @@ res/ screen area. Specifically, the device's smallestWidth is the shortest of the screen's available height and width (you may also think of it as the "smallest possible width" for the screen). You can use this qualifier to ensure that, regardless of the screen's current orientation, your -application's has at least {@code <N>} dps of width available for it UI.</p> +application has at least {@code <N>} dps of width available for its UI.</p> <p>For example, if your layout requires that its smallest dimension of screen area be at least 600 dp at all times, then you can use this qualifer to create the layout resources, {@code res/layout-sw600dp/}. The system will use these resources only when the smallest dimension of diff --git a/docs/html/guide/topics/search/search-dialog.jd b/docs/html/guide/topics/search/search-dialog.jd index b9a26d6..e24681a 100644 --- a/docs/html/guide/topics/search/search-dialog.jd +++ b/docs/html/guide/topics/search/search-dialog.jd @@ -722,6 +722,7 @@ public boolean onCreateOptionsMenu(Menu menu) { // Get the SearchView and set the searchable configuration SearchManager searchManager = (SearchManager) {@link android.app.Activity#getSystemService getSystemService}(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); + // Assumes current activity is the searchable activity searchView.setSearchableInfo(searchManager.getSearchableInfo({@link android.app.Activity#getComponentName()})); searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default diff --git a/docs/html/guide/topics/ui/actionbar.jd b/docs/html/guide/topics/ui/actionbar.jd index 678a512..db09e7d 100644 --- a/docs/html/guide/topics/ui/actionbar.jd +++ b/docs/html/guide/topics/ui/actionbar.jd @@ -674,7 +674,7 @@ action view still appears in the action bar when the user selects the item. You view collapsible by adding {@code "collapseActionView"} to the {@code android:showAsAction} attribute, as shown in the XML above.</p> -<p>Because the system will expand the action view when the user selects the item, so you +<p>Because the system will expand the action view when the user selects the item, you <em>do not</em> need to respond to the item in the {@link android.app.Activity#onOptionsItemSelected onOptionsItemSelected} callback. The system still calls {@link android.app.Activity#onOptionsItemSelected onOptionsItemSelected()} when the user selects it, diff --git a/docs/html/guide/topics/ui/notifiers/toasts.jd b/docs/html/guide/topics/ui/notifiers/toasts.jd index 92c146a..e5d4a0a 100644 --- a/docs/html/guide/topics/ui/notifiers/toasts.jd +++ b/docs/html/guide/topics/ui/notifiers/toasts.jd @@ -105,7 +105,7 @@ with the following XML (saved as <em>toast_layout.xml</em>):</p> </LinearLayout> </pre> -<p>Notice that the ID of the LinearLayout element is "toast_layout". You must use this +<p>Notice that the ID of the LinearLayout element is "toast_layout_root". You must use this ID to inflate the layout from the XML, as shown here:</p> <pre> diff --git a/docs/html/tools/debugging/ddms.jd b/docs/html/tools/debugging/ddms.jd index 3d6324b..f641aad 100644 --- a/docs/html/tools/debugging/ddms.jd +++ b/docs/html/tools/debugging/ddms.jd @@ -54,7 +54,7 @@ parent.link=index.html <p>When DDMS starts, it connects to <a href="{@docRoot}tools/help/adb.html">adb</a>. When a device is connected, a VM monitoring service is created between <code>adb</code> and DDMS, which notifies DDMS when a VM on the device is started or terminated. Once a VM - is running, DDMS retrieves the the VM's process ID (pid), via <code>adb</code>, and opens a connection to the + is running, DDMS retrieves the VM's process ID (pid), via <code>adb</code>, and opens a connection to the VM's debugger, through the adb daemon (adbd) on the device. DDMS can now talk to the VM using a custom wire protocol.</p> diff --git a/docs/html/tools/device.jd b/docs/html/tools/device.jd index 9bdaf47..c7827b2 100644 --- a/docs/html/tools/device.jd +++ b/docs/html/tools/device.jd @@ -30,7 +30,7 @@ device directly from Eclipse or from the command line with ADB. If you don't yet have a device, check with the service providers in your area to determine which Android-powered devices are available.</p> -<p>If you want a SIM-unlocked phone, then you might consider the Google Nexus S. To find a place +<p>If you want a SIM-unlocked phone, then you might consider a Nexus phone. To find a place to purchase the Nexus S and other Android-powered devices, visit <a href="http://www.google.com/phone/detail/nexus-s">google.com/phone</a>.</p> diff --git a/docs/html/tools/projects/index.jd b/docs/html/tools/projects/index.jd index 6931cc7..439d3be 100644 --- a/docs/html/tools/projects/index.jd +++ b/docs/html/tools/projects/index.jd @@ -68,12 +68,12 @@ page.title=Managing Projects <code>src<em>/your/package/namespace/ActivityName</em>.java</code>. All other source code files (such as <code>.java</code> or <code>.aidl</code> files) go here as well.</dd> - <dt><code>bin</code></dt> + <dt><code>bin/</code></dt> <dd>Output directory of the build. This is where you can find the final <code>.apk</code> file and other compiled resources.</dd> - <dt><code>jni</code></dt> + <dt><code>jni/</code></dt> <dd>Contains native code sources developed using the Android NDK. For more information, see the <a href="{@docRoot}tools/sdk/ndk/index.html">Android NDK documentation</a>.</dd> @@ -114,7 +114,7 @@ page.title=Managing Projects <dt><code>drawable/</code></dt> <dd>For bitmap files (PNG, JPEG, or GIF), 9-Patch image files, and XML files that describe - Drawable shapes or a Drawable objects that contain multiple states (normal, pressed, or + Drawable shapes or Drawable objects that contain multiple states (normal, pressed, or focused). See the <a href= "{@docRoot}guide/topics/resources/drawable-resource.html">Drawable</a> resource type.</dd> @@ -251,7 +251,7 @@ used.</dd> code and resources as a standard Android project, stored in the same way. For example, source code in the library project can access its own resources through its <code>R</code> class.</p> - <p>However, a library project differs from an standard Android application project in that you + <p>However, a library project differs from a standard Android application project in that you cannot compile it directly to its own <code>.apk</code> and run it on an Android device. Similarly, you cannot export the library project to a self-contained JAR file, as you would do for a true library. Instead, you must compile the library indirectly, by referencing the diff --git a/docs/html/tools/testing/testing_android.jd b/docs/html/tools/testing/testing_android.jd index acf5ec2..10843e8 100755 --- a/docs/html/tools/testing/testing_android.jd +++ b/docs/html/tools/testing/testing_android.jd @@ -111,14 +111,14 @@ parent.link=index.html </li> <li> The SDK tools for building and tests are available in Eclipse with ADT, and also in - command-line form for use with other IDES. These tools get information from the project of + command-line form for use with other IDEs. These tools get information from the project of the application under test and use this information to automatically create the build files, manifest file, and directory structure for the test package. </li> <li> The SDK also provides <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">monkeyrunner</a>, an API - testing devices with Python programs, and <a + for testing devices with Python programs, and <a href="{@docRoot}tools/help/monkey.html">UI/Application Exerciser Monkey</a>, a command-line tool for stress-testing UIs by sending pseudo-random events to a device. </li> diff --git a/docs/html/tools/workflow/index.jd b/docs/html/tools/workflow/index.jd index 5ae06e6..784b212 100644 --- a/docs/html/tools/workflow/index.jd +++ b/docs/html/tools/workflow/index.jd @@ -34,7 +34,7 @@ development steps encompass four development phases, which include:</p> </li> <li><strong>Development</strong> <p>During this phase you set up and develop your Android project, which contains all of the - source code and resource files for your application. For more informations, see + source code and resource files for your application. For more information, see <a href="{@docRoot}tools/projects/index.html">Create an Android project</a>.</p> </li> <li><strong>Debugging and Testing</strong> diff --git a/docs/html/training/animation/cardflip.jd b/docs/html/training/animation/cardflip.jd index 1477f9f..48fbbd8 100644 --- a/docs/html/training/animation/cardflip.jd +++ b/docs/html/training/animation/cardflip.jd @@ -70,7 +70,7 @@ trainingnavtop=true <code>animator/card_flip_right_out.xml</code> </li> <li> - <code>animator/card_flip_right_in.xml</code> + <code>animator/card_flip_left_in.xml</code> </li> <li> <code>animator/card_flip_left_out.xml</code> @@ -372,4 +372,4 @@ private void flipCard() { // Commit the transaction. .commit(); } -</pre>
\ No newline at end of file +</pre> diff --git a/docs/html/training/basics/fragments/fragment-ui.jd b/docs/html/training/basics/fragments/fragment-ui.jd index d648938..db3119b 100644 --- a/docs/html/training/basics/fragments/fragment-ui.jd +++ b/docs/html/training/basics/fragments/fragment-ui.jd @@ -41,7 +41,7 @@ tablet which has a wider screen size to display more information to the user.</p <img src="{@docRoot}images/training/basics/fragments-screen-mock.png" alt="" /> <p class="img-caption"><strong>Figure 1.</strong> Two fragments, displayed in different -configurations for the same activity on different screen sizes. On a large screen, both fragment +configurations for the same activity on different screen sizes. On a large screen, both fragments fit side by side, but on a handset device, only one fragment fits at a time so the fragments must replace each other as the user navigates.</p> diff --git a/docs/html/training/monitoring-device-state/battery-monitoring.jd b/docs/html/training/monitoring-device-state/battery-monitoring.jd index c963a18..a202566 100644 --- a/docs/html/training/monitoring-device-state/battery-monitoring.jd +++ b/docs/html/training/monitoring-device-state/battery-monitoring.jd @@ -65,9 +65,9 @@ boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL; // How are we charging? -int chargePlug = battery.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); -boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB; -boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre> +int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); +boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB; +boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;</pre> <p>Typically you should maximize the rate of your background updates in the case where the device is connected to an AC charger, reduce the rate if the charge is over USB, and lower it @@ -105,8 +105,8 @@ the current charging state and method as described in the previous step.</p> status == BatteryManager.BATTERY_STATUS_FULL; int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); - boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB; - boolean acCharge = chargePlug == BATTERY_PLUGGED_AC; + boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB; + boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC; } }</pre> @@ -119,8 +119,8 @@ the rate of your background updates if the battery charge is below a certain lev <p>You can find the current battery charge by extracting the current battery level and scale from the battery status intent as shown here:</p> -<pre>int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); -int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1); +<pre>int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); +int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1); float batteryPct = level / (float)scale;</pre> |