summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/html/guide/publishing/publishing.jd200
-rw-r--r--docs/html/guide/topics/graphics/index.jd25
-rw-r--r--docs/html/guide/topics/graphics/opengl.jd232
-rw-r--r--docs/html/index.jd19
-rw-r--r--docs/html/resources/dashboard/opengl.jd6
-rw-r--r--docs/html/resources/dashboard/platform-versions.jd27
-rw-r--r--docs/html/resources/dashboard/screens.jd36
-rw-r--r--docs/html/sdk/eclipse-adt.jd8
-rw-r--r--docs/html/sdk/index.jd24
9 files changed, 475 insertions, 102 deletions
diff --git a/docs/html/guide/publishing/publishing.jd b/docs/html/guide/publishing/publishing.jd
index 0cbba53b3795..95d89fa1f2c5 100644
--- a/docs/html/guide/publishing/publishing.jd
+++ b/docs/html/guide/publishing/publishing.jd
@@ -23,6 +23,7 @@ page.title=Publishing on Android Market
<ol>
<li><a href="#OpeningDetails">Opening an app's details page</a></li>
<li><a href="#PerformingSearch">Performing a search</a></li>
+ <li><a href="#BuildaButton">Build an Android Market button</a></li>
<li><a href="#UriSummary">Summary of URI formats</a></li>
</ol>
</li>
@@ -317,6 +318,205 @@ publisher name:</p>
+<h3 id="BuildaButton">Build an Android Market button</h3>
+
+<p>Use the following form to input either your application's package name or your publisher name
+and generate a button that you can use on your web site. The button will take users to Android
+Market to view your application details or view a list of all applications you've published.</p>
+
+<p>This form offers four versions of the official "Available in Android Market" badge at
+recommended sizes. If you would like to create a different size, you can download an EPS file for
+the badges from the <a href="http://www.android.com/branding.html">Android Brand Guidelines</a>.</p>
+
+<style type="text/css">
+
+form.button-form {
+ margin-top:2em;
+}
+
+/* the label and input elements are blocks that float left in order to
+ keep the left edgets of the input aligned, and IE 6/7 do not fully support "inline-block" */
+label.block {
+ display: block;
+ float: left;
+ width: 100px;
+ padding-right: 10px;
+}
+
+input.text {
+ display: block;
+ float: left;
+ width: 250px;
+}
+
+div.button-row {
+ white-space:nowrap;
+ min-height:80px;
+}
+
+div.button-row input {
+ vertical-align:120%;
+}
+
+#jd-content div.button-row img {
+ margin: 0;
+}
+
+</style>
+
+<script type="text/javascript">
+
+// variables for creating 'try it out' demo button
+var imagePath = "http://www.android.com/images/brand/"
+var linkStart = "<a href=\"http://market.android.com/";
+var imageStart = "\">\n"
+ + " <img src=\"" + imagePath;
+var imageEnd = ".png\"\n"
+ + " alt=\"Available in Android Market\" />\n</a>";
+
+// variables for creating code snippet
+var linkStartCode = "&lt;a href=\"http://market.android.com/";
+var imageStartCode = "\"&gt;\n"
+ + " &lt;img src=\"" + imagePath;
+var imageEndCode = ".png\"\n"
+ + " alt=\"Available in Android Market\" />\n&lt;/a>";
+
+/** Generate the HTML snippet and demo based on form values */
+function buildButton(form) {
+ if (form["package"].value != "com.android.example") {
+ $("#preview").show();
+ $("#snippet").show().html(linkStartCode + "details?id=" + form["package"].value
+ + imageStartCode + $('form input[type=radio]:checked').val() + imageEndCode);
+ $("#button-preview").html(linkStart + "details?id=" + form["package"].value
+ + imageStart + $('form input[type=radio]:checked').val() + imageEnd);
+ } else if (form["publisher"].value != "Example, Inc.") {
+ $("#preview").show();
+ $("#snippet").show().html(linkStartCode + "search?q=pub:" + form["publisher"].value
+ + imageStartCode + $('form input[type=radio]:checked').val() + imageEndCode);
+ $("#button-preview").html(linkStart + "search?q=pub:" + form["publisher"].value + imageStart +
+ $('form input[type=radio]:checked').val() + imageEnd);
+ } else {
+ alert("Please enter your package name or publisher name");
+ }
+ return false;
+}
+
+/** Listen for Enter key */
+function onTextEntered(event, form, me) {
+ // 13 = enter
+ if (event.keyCode == 13) {
+ buildButton(form);
+ }
+}
+
+/** When input is focused, remove example text and disable other input */
+function onInputFocus(object, example) {
+ if (object.value == example) {
+ $(object).val('').css({'color' : '#000'});
+ }
+ $('input[type="text"]:not(input[name='+object.name+'])',
+ object.parentNode).attr('disabled','true');
+ $('#'+object.name+'-clear').show();
+}
+
+/** When input is blured, restore example text if appropriate and enable other input */
+function onInputBlur(object, example) {
+ if (object.value.length < 1) {
+ $(object).attr('value',example).css({'color':'#ccc'});
+ $('input[type="text"]', object.parentNode).removeAttr('disabled');
+ $('#'+object.name+'-clear').hide();
+ }
+}
+
+/** Clear the form to start over */
+function clearLabel(id, example) {
+ $("#preview").hide();
+ $('#'+id+'').html('').attr('value',example).css({'color':'#ccc'});
+ $('input[type="text"]', $('#'+id+'').parent()).removeAttr('disabled');
+ $('#'+id+'-clear').hide();
+ return false;
+}
+
+/** When the doc is ready, find the inputs and color the input grey if the value is the example
+ text. This is necessary to handle back-navigation, which can auto-fill the form with previous
+ values (and text should not be grey) */
+$(document).ready(function() {
+ $(".button-form input.text").each(function(index) {
+ if ($(this).val() == $(this).attr("default")) {
+ $(this).css("color","#ccc");
+ } else {
+ /* This is necessary to handle back-navigation to the page after form was filled */
+ $('input[type="text"]:not(input[name='+this.name+'])',
+ this.parentNode).attr('disabled','true');
+ $('#'+this.name+'-clear').show();
+ }
+ });
+});
+
+</script>
+
+<form class="button-form">
+ <label class="block" for="package">Package name:</label>
+ <input class="text" type="text" id="package" name="package"
+ value="com.android.example"
+ default="com.android.example"
+ onfocus="onInputFocus(this, 'com.android.example')"
+ onblur="onInputBlur(this, 'com.android.example')"
+ onkeyup="return onTextEntered(event, this.parentNode, this)"/>&nbsp;
+ <a id="package-clear" style="display:none" href="#"
+ onclick="return clearLabel('package','com.android.example');">clear</a>
+ <p style="clear:both;margin:0">&nbsp;<em>or</em></p>
+ <label class="block" style="margin-top:5px" for="publisher">Publisher name:</label>
+ <input class="text" type="text" id="publisher" name="publisher"
+ value="Example, Inc."
+ default="Example, Inc."
+ onfocus="onInputFocus(this, 'Example, Inc.')"
+ onblur="onInputBlur(this, 'Example, Inc.')"
+ onkeyup="return onTextEntered(event, this.parentNode, this)"/>&nbsp;
+ <a id="publisher-clear" style="display:none" href="#"
+ onclick="return clearLabel('publisher','Example, Inc.');">clear</a>
+ <br/><br/>
+
+<div class="button-row">
+ <input type="radio" name="buttonStyle" value="45_avail_market_logo1" id="ns" checked="checked" />
+ <label for="ns"><img src="http://www.android.com/images/brand/45_avail_market_logo1.png"
+alt="narrow and small logo" /></label>
+ &nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="buttonStyle" value="60_avail_market_logo1" id="nm" />
+ <label for="nm"><img src="http://www.android.com/images/brand/60_avail_market_logo1.png"
+alt="narrow and large logo" /></label>
+</div>
+
+<div class="button-row">
+ <input type="radio" name="buttonStyle" value="45_avail_market_logo2" id="ws" />
+ <label for="ws"><img src="http://www.android.com/images/brand/45_avail_market_logo2.png"
+alt="wide and small logo" /></label>
+ &nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="buttonStyle" value="60_avail_market_logo2" id="wm" />
+ <label for="wm"><img src="http://www.android.com/images/brand/60_avail_market_logo2.png"
+alt="wide and large logo" /></label>
+</div>
+
+ <input type="button" onclick="return buildButton(this.parentNode)" value="Build my button"
+style="padding:5px" />
+ <br/>
+</form>
+
+<div id="preview" style="display:none">
+ <p>Copy and paste this HTML into your web site:</p>
+ <textarea id="snippet" cols="80" rows="4" onclick="this.select()"
+style="font-family:monospace;background-color:#efefef;padding:5px;display:none;margin-bottom:1em">
+ </textarea >
+
+<p>Try it out:</p>
+<div id="button-preview" style="margin-top:1em"></div>
+</div>
+
+
+
+
+
+
<h3 id="UriSummary">Summary of URI formats</h3>
<p>The table below provides a summary of the URIs currently supported by the Android Market (both on
diff --git a/docs/html/guide/topics/graphics/index.jd b/docs/html/guide/topics/graphics/index.jd
index be1b0fc7b834..2490e392e440 100644
--- a/docs/html/guide/topics/graphics/index.jd
+++ b/docs/html/guide/topics/graphics/index.jd
@@ -14,13 +14,20 @@ page.title=Graphics
</ol>
</li>
</ol>
+ <h2>See also</h2>
+ <ol>
+ <li><a href="{@docRoot}guide/topics/graphics/opengl.html">3D with OpenGL</a></li>
+ <li><a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a></li>
+ </ol>
</div>
</div>
-<p>Android graphics are powered by a custom 2D graphics library and OpenGL ES 1.0
-for high performance 3D graphics. The most common 2D graphics APIs can be found in the
-{@link android.graphics.drawable drawable package}. OpenGL APIs are available
-from the Khronos {@link javax.microedition.khronos.opengles OpenGL ES package},
-plus some Android {@link android.opengl OpenGL utilities}.</p>
+
+<p>Android graphics are powered by a custom 2D graphics library, and the framework provides
+support for high performance 3D graphics in the form of OpenGL ES and RenderScript. The most
+common 2D graphics APIs can be found in the {@link android.graphics.drawable drawable package}.
+OpenGL APIs are available from the Khronos {@link javax.microedition.khronos.opengles OpenGL ES} and
+the {@link android.opengl} packages. The RenderScript APIs are available in the
+{@link android.renderscript} package.</p>
<p>When starting a project, it's important to consider exactly what your graphical demands will be.
Varying graphical tasks are best accomplished with varying techniques. For example, graphics and animations
@@ -32,10 +39,10 @@ and which tasks they're best suited for.</p>
<p>If you're specifically looking for information on drawing 3D graphics, this page won't
help a lot. However, the information below about how to <a href="#draw-with-canvas">Draw with a
-Canvas</a> (and the section on SurfaceView),
-will give you a quick idea of how you should draw to the View hierarchy. For more information
-on Android's 3D graphic utilities (provided by the OpenGL ES API),
-read <a href="opengl.html">3D with OpenGL</a> and refer to other OpenGL documentation.</p>
+Canvas</a> (and the section on SurfaceView), will give you a quick idea of how you should draw to
+the View hierarchy. For more information on Android's 3D graphics APIs, see
+the <a href="opengl.html">3D with OpenGL</a> and
+<a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> documents.</p>
<h2 id="options">Consider your Options</h2>
diff --git a/docs/html/guide/topics/graphics/opengl.jd b/docs/html/guide/topics/graphics/opengl.jd
index 9f889543d5dc..cc467f2ce8a1 100644
--- a/docs/html/guide/topics/graphics/opengl.jd
+++ b/docs/html/guide/topics/graphics/opengl.jd
@@ -3,51 +3,215 @@ parent.title=Graphics
parent.link=index.html
@jd:body
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>In this document</h2>
+
+ <ol>
+ <li><a href="#basics">The Basics</a></li>
+ <li><a href="#compatibility">OpenGL Versions and Device Compatibility</a>
+ <ol>
+ <li><a href="#textures">Texture Compression Support</a></li>
+ <li><a href="#declare-compression">Declaring Use of Compressed Textures</a></li>
+ </ol>
+ </li>
+ </ol>
+ <h2>Key classes</h2>
+ <ol>
+ <li>{@link android.opengl.GLSurfaceView}</li>
+ <li>{@link android.opengl.GLSurfaceView.Renderer}</li>
+ <li>{@link javax.microedition.khronos.opengles}</li>
+ <li>{@link android.opengl}</li>
+ </ol>
+ <h2>Related Samples</h2>
+ <ol>
+ <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/graphics/
+GLSurfaceViewActivity.html">GLSurfaceViewActivity</a></li>
+ <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/graphics/
+GLES20Activity.html">GLES20Activity</a></li>
+ <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/graphics/
+TouchRotateActivity.html">TouchRotateActivity</a></li>
+ <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/graphics/
+CompressedTextureActivity.html">Compressed Textures</a></li>
+ </ol>
+ <h2>See also</h2>
+ <ol>
+ <li><a href="{@docRoot}resources/articles/glsurfaceview.html">Introducing
+GLSurfaceView</a></li>
+ <li><a href="http://www.khronos.org/opengles/">OpenGL ES</a></li>
+ <li><a href="http://www.khronos.org/opengles/1_X/">OpenGL ES 1.x Specification</a></li>
+ <li><a href="http://www.khronos.org/opengles/2_X/">OpenGL ES 2.x specification</a></li>
+ </ol>
+ </div>
+</div>
-<p>Android includes support for high performance 3D graphics
-via the OpenGL API&mdash;specifically, the OpenGL ES API.</p>
+<p>Android includes support for high performance 2D and 3D graphics with the Open Graphics Library
+(OpenGL) API&mdash;specifically, the OpenGL ES API. OpenGL is a cross-platform graphics API that
+specifies a standard software interface for 3D graphics processing hardware. OpenGL ES is a flavor
+of the OpenGL specification intended for embedded devices. The OpenGL ES 1.0 and 1.1 API
+specifications have been supported since Android 1.0. Beginning with Android 2.2 (API
+Level 8), the framework supports the OpenGL ES 2.0 API specification.</p>
-<p>OpenGL ES is a flavor of the OpenGL specification intended for embedded devices. Versions of <a
-href="http://www.khronos.org/opengles/">OpenGL ES</a> are loosely peered to versions of the primary
-OpenGL standard. Beginning with Android 2.2, the platform supports OpenGL ES 2.0 (with
-backward compatibility support for OpenGL ES 1.1). For information about the relative number of
-Android-powered devices that support a given version of OpenGL ES, see the <a
-href="http://developer.android.com/resources/dashboard/opengl.html">OpenGL ES Versions</a>
-dashboard.</p>
+<p class="note"><b>Note:</b> The specific API provided by the Android framework is similar to the
+ J2ME JSR239 OpenGL ES API, but is not identical. If you are familiar with J2ME JSR239
+ specification, be alert for variations.</p>
-<p>The specific API provided by Android is similar to the J2ME JSR239 OpenGL
-ES API. However, it may not be identical, so watch out for deviations.</p>
-<h2>Using the API</h2>
+<h2 id="basics">The Basics</h2>
-<p>Here's how to use the API at an extremely high level:</p>
+<p>Android supports OpenGL both through its framework API and the Native Development
+Kit (NDK). This topic focuses on the Android framework interfaces. For more information about the
+NDK, see the <a href="{@docRoot}sdk/ndk/index.html">Android NDK</a>.
-<ol>
-<li>Write a custom {@link android.view.View} subclass.</li>
-<li>Obtain a handle to an OpenGLContext, which provides access to the OpenGL functionality.</li>
-<li>In your View's {@link android.view.View#onDraw onDraw()} method, get a handle to a GL object,
-and use its methods to perform GL operations.</li>
-</ol>
+<p>
+ There are two foundational classes in the Android framework that let you create and manipulate
+graphics with the OpenGL ES API: {@link android.opengl.GLSurfaceView} and {@link
+android.opengl.GLSurfaceView.Renderer}. If your goal is to use OpenGL in your Android application,
+understanding how to implement these classes in an activity should be your first objective.
+</p>
+
+<dl>
+ <dt>{@link android.opengl.GLSurfaceView}</dt>
+ <dd>This class is a container on which you can draw and manipulate objects using OpenGL API calls.
+ This class is similar in function to a {@link android.view.SurfaceView}, except that it is
+ specifically for use with OpenGL. You can use this class by simply creating an instance of
+ {@link android.opengl.GLSurfaceView} and adding your
+ {@link android.opengl.GLSurfaceView.Renderer Renderer} to it. However, if you want to capture
+ touch screen events, you should extend the {@link android.opengl.GLSurfaceView} class to
+ implement the touch listeners, as shown in the <a
+href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchRotateActivity
+.html">TouchRotateActivity</a> sample.</dd>
+
+ <dt>{@link android.opengl.GLSurfaceView.Renderer}</dt>
+ <dd>This interface defines the methods required for drawing graphics in an OpenGL {@link
+ android.opengl.GLSurfaceView}. You must provide an implementation of this interface as a
+ separate class and attach it to your {@link android.opengl.GLSurfaceView} instance using
+ {@link android.opengl.GLSurfaceView#setRenderer(android.opengl.GLSurfaceView.Renderer)
+ GLSurfaceView.setRenderer()}.
+
+ <p>The {@link android.opengl.GLSurfaceView.Renderer} interface requires that you implement the
+ following methods:</p>
+ <ul>
+ <li>
+ {@link
+ android.opengl.GLSurfaceView.Renderer#onSurfaceCreated(javax.microedition.khronos.opengles.GL10,
+ javax.microedition.khronos.egl.EGLConfig) onSurfaceCreated()}: The system calls this
+ method once, when creating the {@link android.opengl.GLSurfaceView}. Use this method to perform
+ actions that need to happen only once, such as setting OpenGL environment parameters or
+ initializing OpenGL graphic objects.
+ </li>
+ <li>
+ {@link
+ android.opengl.GLSurfaceView.Renderer#onDrawFrame(javax.microedition.khronos.opengles.GL10)
+ onDrawFrame()}: The system calls this method on each redraw of the {@link
+ android.opengl.GLSurfaceView}. Use this method as the primary execution point for
+ drawing (and re-drawing) graphic objects.</li>
+ <li>
+ {@link
+ android.opengl.GLSurfaceView.Renderer#onSurfaceChanged(javax.microedition.khronos.opengles.GL10,
+ int, int) onSurfaceChanged()}: The system calls this method when the {@link
+ android.opengl.GLSurfaceView} geometry changes, including changes in size of the {@link
+ android.opengl.GLSurfaceView} or orientation of the device screen. For example, the system calls
+ this method when the device changes from portrait to landscape orientation. Use this method to
+ respond to changes in the {@link android.opengl.GLSurfaceView} container.
+ </li>
+ </ul>
+ </dd>
+</dl>
+
+<p>Once you have established a container view for OpenGL using {@link
+android.opengl.GLSurfaceView} and {@link android.opengl.GLSurfaceView.Renderer}, you can begin
+calling OpenGL APIs using the following classes:</p>
+
+<ul>
+ <li>OpenGL ES 1.0/1.1 API Packages
+ <ul>
+ <li>{@link javax.microedition.khronos.opengles} - This package provides the standard
+implementation of OpenGL ES 1.0 and 1.1.
+ <ul>
+ <li>{@link javax.microedition.khronos.opengles.GL10}</li>
+ <li>{@link javax.microedition.khronos.opengles.GL10Ext}</li>
+ <li>{@link javax.microedition.khronos.opengles.GL11}</li>
+ <li>{@link javax.microedition.khronos.opengles.GL11Ext}</li>
+ <li>{@link javax.microedition.khronos.opengles.GL11ExtensionPack}</li>
+ </ul>
+ </li>
+ <li>{@link android.opengl} - This package provides a static interface to the OpenGL classes
+ above. These interfaces were added with Android 1.6 (API Level 4).
+ <ul>
+ <li>{@link android.opengl.GLES10}</li>
+ <li>{@link android.opengl.GLES10Ext}</li>
+ <li>{@link android.opengl.GLES11}</li>
+ <li>{@link android.opengl.GLES10Ext}</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>OpenGL ES 2.0 API Class
+ <ul>
+ <li>{@link android.opengl.GLES20 android.opengl.GLES20}</li>
+ </ul>
+ </li>
+</ul>
-<p>Several samples using OpenGL ES are available in the <a
-href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/graphics/index.html">API
-Demos</a> sample application.
+<h2 id="compatibility">OpenGL Versions and Device Compatibility</h2>
+
+<p>
+ The OpenGL ES 1.0 and 1.1 API specifications have been supported since Android 1.0.
+Beginning with Android 2.2 (API Level 8), the framework supports the OpenGL ES 2.0 API
+specification. OpenGL ES 2.0 is supported by most Android devices and is recommended for new
+applications being developed with OpenGL. For information about the relative number of
+Android-powered devices that support a given version of OpenGL ES, see the <a
+href="{@docRoot}resources/dashboard/opengl.html">OpenGL ES Versions Dashboard</a>.</p>
+
+<h3 id="textures">Texture compression support</h3>
+<p>Texture compression can significantly increase the performance of your OpenGL application by
+reducing memory requirements and making more efficient use of memory bandwidth. The Android
+framework provides support for the ETC1 compression format as a standard feature, including a {@link
+android.opengl.ETC1Util} utility class and the {@code etc1tool} compression tool (located in your
+Android SDK at {@code &lt;sdk&gt;/tools/}).</p>
+
+<p>For an example of an Android application that uses texture compression, see the <a
+href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/graphics/
+CompressedTextureActivity.html">CompressedTextureActivity</a> code sample.
</p>
-<p>A summary of how to actually write 3D applications using OpenGL is
-beyond the scope of this text and is left as an exercise for the reader.</p>
+<p>To check if the ETC1 format is supported on a device, call the {@link
+android.opengl.ETC1Util#isETC1Supported() ETC1Util.isETC1Supported()} method.</p>
-<h2>Links to Additional Information</h2>
+<p class="note"><b>Note:</b> The ETC1 texture compression format does not support textures with an
+alpha channel. If your application requires textures with an alpha channel, you should
+investigate other texture compression formats available on your target devices.</p>
-<p>Information about OpenGL ES can be
-found at <a title="http://www.khronos.org/opengles/"
-href="http://www.khronos.org/opengles/">http://www.khronos.org/opengles/</a>.</p>
+<p>Beyond the ETC1 format, Android devices have varied support for texture compression based on
+their GPU chipsets. You should investigate texture compression support on the the devices you are
+are targeting to determine what compression types your application should support.</p>
-<p>Information specifically
-about OpenGL ES 1.0 (including a detailed specification) can be found
-at <a title="http://www.khronos.org/opengles/1_X/"
-href="http://www.khronos.org/opengles/1_X/">http://www.khronos.org/opengles/1_X/</a>.</p>
+<p>To determine if texture compression formats other than ETC1 are supported on a particular
+device:</p>
+<ol>
+ <li>Run the following code on your target devices to determine what texture compression
+formats are supported:
+<pre>
+ String extensions = javax.microedition.khronos.opengles.GL10.glGetString(GL10.GL_EXTENSIONS);
+</pre>
+ <p class="warning"><b>Warning:</b> The results of this call vary by device! You must run this
+call on several target devices to determine what compression types are commonly supported on
+your target devices.</p>
+ </li>
+ <li>Review the output of this method to determine what extensions are supported on the
+device.</li>
+</ol>
-<p>The documentation for the Android OpenGL ES implementations are available in {@link
-android.opengl} and {@link javax.microedition.khronos.opengles}.</p>
+<h3 id="declare-compression">Declaring compressed textures</h3>
+<p>Once you have decided which texture compression types your application will support, you
+must declare them in your manifest file using <a
+href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">
+&lt;supports-gl-texture&gt;</a>. Declaring this information in your manifest file hides your
+application from users with devices that do not support at least one of your declared
+compression types. For more information on how Android Market filtering works for texture
+compressions, see the <a
+href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html#market-texture-filtering">
+Android Market and texture compression filtering</a> section of the {@code
+&lt;supports-gl-texture&gt;} documentation.
diff --git a/docs/html/index.jd b/docs/html/index.jd
index eeeedd080541..dce46f9cecad 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -148,19 +148,18 @@ href="{@docRoot}resources/dashboard/platform-versions.html">Learn more &raquo;</
'tv': {
'layout':"imgLeft",
- 'icon':"tv_s.png",
+ 'icon':"GTV_icon_small.png",
'name':"Google TV",
- 'img':"tv_l.png",
- 'title':"Announcing Google TV!",
- 'desc': "<p><a href='http://www.google.com/tv/'>Google TV</a> is a new platform "
- + "for television built on Android. Google "
- + "has partnered with Sony and Logitech to integrate "
- + "this platform into TVs, blu-ray players, and companion "
- + "boxes. </p>"
- + "<p><a href='http://www.google.com/tv/'>Learn more about "
- + "Google TV &raquo;</a></p>"
+ 'img':"GTV_icon_large.png",
+ 'title':"Google TV!",
+ 'desc': "<p>Build something big. By big, we mean <em>worthy-of-the-living-room</em> big.</p>"
+ + " <p>Use <a href='http://code.google.com/tv'>Google TV</a> to bring the power of Android"
+ + " and Google Chrome to television."
+ + " The average American watches five hours of TV per day. Give them the web and apps"
+ + " to update their status, listen to music, watch web videos, and much more...</p>"
},
+
'devphone': {
'layout':"imgLeft",
'icon':"devphone-small.png",
diff --git a/docs/html/resources/dashboard/opengl.jd b/docs/html/resources/dashboard/opengl.jd
index dac8ce5e98e6..3fcfa89141c2 100644
--- a/docs/html/resources/dashboard/opengl.jd
+++ b/docs/html/resources/dashboard/opengl.jd
@@ -57,7 +57,7 @@ ending on the data collection date noted below.</p>
<div class="dashboard-panel">
<img alt="" width="400" height="250"
-src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=GL%20ES%201.1|GL%20ES%202.0&chd=t%3A8.9,91.1" />
+src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=GL%201.1|GL%202.0%20%26%201.1&chd=t%3A8.9,91" />
<table>
<tr>
@@ -66,11 +66,11 @@ src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=
</tr>
<tr>
<td>1.1</th>
-<td>8.9%</td>
+<td>9%</td>
</tr>
<tr>
<td>2.0</th>
-<td>91.1%</td>
+<td>91%</td>
</tr>
</table>
diff --git a/docs/html/resources/dashboard/platform-versions.jd b/docs/html/resources/dashboard/platform-versions.jd
index 368164d55904..d9adb36eb3be 100644
--- a/docs/html/resources/dashboard/platform-versions.jd
+++ b/docs/html/resources/dashboard/platform-versions.jd
@@ -51,8 +51,8 @@ Android Market within a 14-day period ending on the data collection date noted b
<div class="dashboard-panel">
-<img alt="" height="250" width="460"
-src="http://chart.apis.google.com/chart?&cht=p&chs=460x250&chd=t:2.3,3.0,24.5,65.9,1.0,3.0,0.3&chl=Android%201.5|Android%201.6|Android%202.1|Android%202.2|Android%202.3|Android%202.3.3|Android%203.0&chco=c4df9b,6fad0c" />
+<img alt="" height="250" width="470"
+src="http://chart.apis.google.com/chart?&cht=p&chs=460x250&chd=t:1.4,2.2,17.5,59.4,1.0,17.6,0.4,0.5&chl=Android%201.5|Android%201.6|Android%202.1|Android%202.2|Android%202.3%20-%202.3.2|Android%202.3.3%20-%202.3.4|Android%203.0|Android%203.1&chco=c4df9b,6fad0c" />
<table>
<tr>
@@ -60,16 +60,19 @@ src="http://chart.apis.google.com/chart?&cht=p&chs=460x250&chd=t:2.3,3.0,24.5,65
<th>API Level</th>
<th>Distribution</th>
</tr>
-<tr><td>Android 1.5</td><td>3</td><td>2.3%</td></tr>
-<tr><td>Android 1.6</td><td>4</td><td>3.0%</td></tr>
-<tr><td>Android 2.1</td><td>7</td><td>24.5%</td></tr>
-<tr><td>Android 2.2</td><td>8</td><td>65.9%</td></tr>
-<tr><td>Android 2.3</td><td>9</td><td>1.0%</td></tr>
-<tr><td>Android 2.3.3</td><td>10</td><td>3.0%</td></tr>
-<tr><td>Android 3.0</td><td>11</td><td>0.3%</td></tr>
+<tr><td>Android 1.5</td><td>3</td><td>1.4%</td></tr>
+<tr><td>Android 1.6</td><td>4</td><td>2.2%</td></tr>
+<tr><td>Android 2.1</td><td>7</td><td>17.5%</td></tr>
+<tr><td>Android 2.2</td><td>8</td><td>59.4%</td></tr>
+<tr><td>Android 2.3 -<br/>
+ Android 2.3.2</td><td>9</td><td>1%</td></tr>
+<tr><td>Android 2.3.3 -<br/>
+ Android 2.3.4</td><td>10</td><td>17.6%</td></tr>
+<tr><td>Android 3.0</td><td>11</td><td>0.4%</td></tr>
+<tr><td>Android 3.1</td><td>12</td><td>0.5%</td></tr>
</table>
-<p><em>Data collected during two weeks ending on May 2, 2011</em></p>
+<p><em>Data collected during a 14-day period ending on July 5, 2011</em></p>
<!--
<p style="font-size:.9em">* <em>Other: 0.1% of devices running obsolete versions</em></p>
-->
@@ -98,9 +101,9 @@ Android Market within a 14-day period ending on the date indicated on the x-axis
<div class="dashboard-panel">
<img alt="" height="250" width="660" style="padding:5px;background:#fff"
-src="http://chart.apis.google.com/chart?&cht=lc&chs=660x250&chxt=x,x,y,r&chxr=0,0,12|1,0,12|2,0,100|3,0,100&chxl=0%3A%7C11/01%7C11/15%7C12/01%7C12/15%7C01/01%7C01/15%7C02/01%7C02/15%7C03/01%7C03/15%7C04/01%7C04/15%7C05/01%7C1%3A%7C2010%7C%7C%7C%7C2011%7C%7C%7C%7C%7C%7C%7C%7C2011%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:100.0,99.9,99.8,99.7,100.0,99.9,99.9,99.9,100.0,99.8,99.7,99.6,99.6|92.0,92.7,93.4,94.1,95.2,95.6,96.0,96.3,96.7,96.8,97.0,97.1,97.3|77.4,79.6,82.2,84.4,87.2,88.3,89.7,90.5,91.5,92.0,93.5,93.9,94.3|37.1,40.5,44.3,47.7,51.8,54.3,58.3,59.7,61.5,63.0,66.4,68.0,69.8|0.0,0.0,0.0,0.0,0.4,0.6,0.7,0.8,1.1,1.7,2.5,3.1,4.0|0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.7,2.2,3.0&chm=b,c3df9b,0,1,0|tAndroid 1.6,689326,1,0,15,,t::-5|b,b4db77,1,2,0|tAndroid 2.1,547a19,2,0,15,,t::-5|b,a5db51,2,3,0|tAndroid 2.2,3f5e0e,3,0,15,,t::-5|b,96dd28,3,4,0|b,83c916,4,5,0|B,6fad0c,5,6,0&chg=7,25&chdl=Android 1.5|Android 1.6|Android 2.1|Android 2.2|Android 2.3|Android 2.3.3&chco=add274,9dd14f,8ece2a,7ab61c,659b11,507d08" />
+src="http://chart.apis.google.com/chart?&cht=lc&chs=660x250&chxt=x,x,y,r&chxr=0,0,12|1,0,12|2,0,100|3,0,100&chxl=0%3A%7C01/01%7C01/15%7C02/01%7C02/15%7C03/01%7C03/15%7C04/01%7C04/15%7C05/01%7C05/15%7C06/01%7C06/15%7C07/01%7C1%3A%7C2011%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C2011%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:100.0,99.9,99.9,99.9,100.0,99.8,99.7,99.6,99.6,99.5,99.4,99.3,99.2|95.2,95.6,96.0,96.3,96.7,96.8,97.0,97.1,97.3,97.5,97.5,97.5,97.7|87.2,88.3,89.7,90.5,91.5,92.0,93.5,93.9,94.3,94.8,95.0,95.2,95.5|51.8,54.3,58.3,59.7,61.5,63.0,66.4,68.0,69.8,71.5,73.9,75.4,77.6|0.4,0.6,0.7,0.8,1.1,1.7,2.5,3.1,4.0,6.1,9.5,13.6,17.8|0.0,0.0,0.0,0.0,0.0,1.0,1.7,2.2,3.0,5.1,8.4,12.6,16.8&chm=b,c3df9b,0,1,0|b,b4db77,1,2,0|tAndroid 2.1,547a19,2,0,15,,t::-5|b,a5db51,2,3,0|tAndroid2.2,3f5e0e,3,0,15,,t::-5|b,96dd28,3,4,0|b,83c916,4,5,0|tAndroid2.3.3,131d02,5,11,15,,t::-5|B,6fad0c,5,6,0&chg=7,25&chdl=Android 1.5|Android 1.6|Android 2.1|Android2.2|Android 2.3|Android 2.3.3&chco=add274,9dd14f,8ece2a,7ab61c,659b11,507d08" />
-<p><em>Last historical dataset collected during two weeks ending on May 2, 2011</em></p>
+<p><em>Last historical dataset collected during a 14-day period ending on July 5, 2011</em></p>
</div><!-- end dashboard-panel -->
diff --git a/docs/html/resources/dashboard/screens.jd b/docs/html/resources/dashboard/screens.jd
index bdaae0dcbcb8..e61e79972170 100644
--- a/docs/html/resources/dashboard/screens.jd
+++ b/docs/html/resources/dashboard/screens.jd
@@ -60,7 +60,7 @@ ending on the data collection date noted below.</p>
<div class="dashboard-panel">
<img alt="" width="400" height="250"
-src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=xlarge%20/%20mdpi|large%20/%20mdpi|normal%20/%20hdpi|normal%20/%20ldpi|normal%20/%20mdpi|small%20/%20hdpi&chd=t%3A0.5,2.6,75.5,1.2,17.1,3.2" />
+src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=Xlarge%20/%20mdpi|Large%20/%20mdpi|Normal%20/%20hdpi|Normal%20/%20ldpi|Normal%20/%20mdpi|Small%20/%20hdpi&chd=t%3A0.9,2.8,75,1.0,17,3.3" />
<table>
<tr>
@@ -71,31 +71,31 @@ src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=
<th scope="col">xhdpi</th>
</tr>
<tr><th scope="row">small</th>
-<td></td> <!-- ldpi -->
-<td></td> <!-- mdpi -->
-<td>3.2%</td> <!-- hdpi -->
-<td></td> <!-- xhdpi -->
+<td></td> <!-- small/ldpi -->
+<td></td> <!-- small/mdpi -->
+<td>3.3%</td> <!-- small/hdpi -->
+<td></td> <!-- small/xhdpi -->
</tr>
<tr><th scope="row">normal</th>
-<td>1.2%</td> <!-- ldpi -->
-<td>17.1%</td> <!-- mdpi -->
-<td>75.5%</td> <!-- hdpi -->
-<td></td> <!-- xhdpi -->
+<td>1%</td> <!-- normal/ldpi -->
+<td>17%</td> <!-- normal/mdpi -->
+<td>75%</td> <!-- normal/hdpi -->
+<td></td> <!-- normal/xhdpi -->
</tr>
<tr><th scope="row">large</th>
-<td></td> <!-- ldpi -->
-<td>2.6%</td> <!-- mdpi -->
-<td></td> <!-- hdpi -->
-<td></td> <!-- xhdpi -->
+<td></td> <!-- large/ldpi -->
+<td>2.8%</td> <!-- large/mdpi -->
+<td></td> <!-- large/hdpi -->
+<td></td> <!-- large/xhdpi -->
</tr>
<tr><th scope="row">xlarge</th>
-<td></td> <!-- ldpi -->
-<td>0.5%</td> <!-- mdpi -->
-<td></td> <!-- hdpi -->
-<td></td> <!-- xhdpi -->
+<td></td> <!-- xlarge/ldpi -->
+<td>0.9%</td> <!-- xlarge/mdpi -->
+<td></td> <!-- xlarge/hdpi -->
+<td></td> <!-- xlarge/xhdpi -->
</tr>
</table>
-<p><em>Data collected during a 7-day period ending on May 6, 2011</em></p>
+<p><em>Data collected during a 7-day period ending on July 1, 2011</em></p>
</div>
diff --git a/docs/html/sdk/eclipse-adt.jd b/docs/html/sdk/eclipse-adt.jd
index 8840f5c28ac4..18f47a691656 100644
--- a/docs/html/sdk/eclipse-adt.jd
+++ b/docs/html/sdk/eclipse-adt.jd
@@ -1,8 +1,8 @@
page.title=ADT Plugin for Eclipse
-adt.zip.version=11.0.0
-adt.zip.download=ADT-11.0.0.zip
-adt.zip.bytes=TODO
-adt.zip.checksum=TODO
+adt.zip.version=12.0.0
+adt.zip.download=ADT-12.0.0.zip
+adt.zip.bytes=5651973
+adt.zip.checksum=8ad85d0f3da4a2b8dadfddcc2d66dbcb
@jd:body
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index e7b8fbb20c64..5cf37c120233 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -1,21 +1,21 @@
page.title=Android SDK
sdk.redirect=0
-sdk.win_installer=installer_r11-windows.exe
-sdk.win_installer_bytes=32883649
-sdk.win_installer_checksum=3dc8a29ae5afed97b40910ef153caa2b
+sdk.win_installer=installer_r12-windows.exe
+sdk.win_installer_bytes=36531492
+sdk.win_installer_checksum=367f0ed4ecd70aefc290d1f7dcb578ab
-sdk.win_download=android-sdk_r11-windows.zip
-sdk.win_bytes=32837554
-sdk.win_checksum=0a2c52b8f8d97a4871ce8b3eb38e3072
+sdk.win_download=android-sdk_r12-windows.zip
+sdk.win_bytes=36486190
+sdk.win_checksum=8d6c104a34cd2577c5506c55d981aebf
-sdk.mac_download=android-sdk_r11-mac_x86.zip
-sdk.mac_bytes=28844968
-sdk.mac_checksum=85bed5ed25aea51f6a447a674d637d1e
+sdk.mac_download=android-sdk_r12-mac_x86.zip
+sdk.mac_bytes=30231118
+sdk.mac_checksum=341544e4572b4b1afab123ab817086e7
-sdk.linux_download=android-sdk_r11-linux_x86.tgz
-sdk.linux_bytes=26984929
-sdk.linux_checksum=026c67f82627a3a70efb197ca3360d0a
+sdk.linux_download=android-sdk_r12-linux_x86.tgz
+sdk.linux_bytes=30034243
+sdk.linux_checksum=f8485275a8dee3d1929936ed538ee99a
@jd:body