blob: c17ba30bd01fff9f4c5a4e04340ad90fdb87979d [file] [log] [blame]
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<title>Android 1.6 Compatibility Definition</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="generator" content="pdftohtml 0.36"/>
<style type="text/css">
<!--
.xflip {
-moz-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
-o-transform: scaleX(-1);
transform: scaleX(-1);
filter: fliph;
}
.yflip {
-moz-transform: scaleY(-1);
-webkit-transform: scaleY(-1);
-o-transform: scaleY(-1);
transform: scaleY(-1);
filter: flipv;
}
.xyflip {
-moz-transform: scaleX(-1) scaleY(-1);
-webkit-transform: scaleX(-1) scaleY(-1);
-o-transform: scaleX(-1) scaleY(-1);
transform: scaleX(-1) scaleY(-1);
filter: fliph + flipv;
}
-->
</style>
</head>
<body>
<a name=1></a><b>Android Compatibility Definition: Android 1.6</b><br/>
Android 1.6 r2<br/>
Google Inc.<br/>
<a href="mailto:compatibility@android.com">compatibility@android.com</a><br/>
<hr/>
<a name=2></a><b>Table of Contents</b><br/>
<a href="android-1.6-cdd.html#4"><b>1. Introduction&#160;...................................................................................................................&#160;4<br/>2. Resources&#160;......................................................................................................................&#160;4<br/></b></a><a href="android-1.6-cdd.html#5"><b>3. Software&#160;.........................................................................................................................&#160;5</b></a><br/>
<a href="android-1.6-cdd.html#5"><b>3.1. Managed API Compatibility&#160;...................................................................................&#160;5<br/></b></a><a href="android-1.6-cdd.html#6"><b>3.2. Soft API Compatibility&#160;............................................................................................&#160;6</b></a><br/>
<a href="android-1.6-cdd.html#6"><b>3.2.1. Permissions......................................................................................................&#160;6<br/>3.2.2. Build Parameters&#160;.............................................................................................&#160;6<br/></b></a><a href="android-1.6-cdd.html#8"><b>3.2.3. Intent Compatibility..........................................................................................&#160;8</b></a><br/>
<a href="android-1.6-cdd.html#8"><b>3.2.3.1. Core Application Intents&#160;...........................................................................&#160;8<br/>3.2.3.2. Intent Overrides&#160;.........................................................................................&#160;8<br/>3.2.3.3. Intent Namespaces....................................................................................&#160;8<br/></b></a><a href="android-1.6-cdd.html#9"><b>3.2.3.4. Broadcast Intents&#160;......................................................................................&#160;9</b></a><br/>
<a href="android-1.6-cdd.html#9"><b>3.3. Native API Compatibility&#160;........................................................................................&#160;9<br/>3.4. Web API Compatibility&#160;...........................................................................................&#160;9<br/></b></a><a href="android-1.6-cdd.html#10"><b>3.5. API Behavioral Compatibility...............................................................................&#160;10<br/>3.6. API Namespaces...................................................................................................&#160;10<br/></b></a><a href="android-1.6-cdd.html#11"><b>3.7. Virtual Machine Compatibility&#160;.............................................................................&#160;11<br/>3.8. User Interface Compatibility&#160;................................................................................&#160;11</b></a><br/>
<a href="android-1.6-cdd.html#11"><b>3.8.1. Widgets&#160;...........................................................................................................&#160;11<br/></b></a><a href="android-1.6-cdd.html#12"><b>3.8.2. Notifications&#160;...................................................................................................&#160;12<br/>3.8.3. Search&#160;.............................................................................................................&#160;12<br/>3.8.4. Toasts..............................................................................................................&#160;12</b></a><br/>
<a href="android-1.6-cdd.html#12"><b>4. Reference Software Compatibility&#160;.............................................................................&#160;12<br/></b></a><a href="android-1.6-cdd.html#13"><b>5. Application Packaging Compatibility&#160;........................................................................&#160;13<br/>6. Multimedia Compatibility............................................................................................&#160;13<br/></b></a><a href="android-1.6-cdd.html#14"><b>7. Developer Tool Compatibility.....................................................................................&#160;14<br/></b></a><a href="android-1.6-cdd.html#15"><b>8. Hardware Compatibility&#160;..............................................................................................&#160;15</b></a><br/>
<a href="android-1.6-cdd.html#15"><b>8.1. Display&#160;...................................................................................................................&#160;15</b></a><br/>
<a href="android-1.6-cdd.html#15"><b>8.1.1. Standard Display Configurations&#160;.................................................................&#160;15<br/></b></a><a href="android-1.6-cdd.html#16"><b>8.1.2. Non-Standard Display Configurations&#160;.........................................................&#160;16<br/>8.1.3. Display Metrics...............................................................................................&#160;16</b></a><br/>
<a href="android-1.6-cdd.html#16"><b>8.2. Keyboard&#160;...............................................................................................................&#160;16<br/>8.3. Non-touch Navigation&#160;..........................................................................................&#160;16<br/></b></a><a href="android-1.6-cdd.html#17"><b>8.4. Screen Orientation................................................................................................&#160;17<br/>8.5. Touchscreen input................................................................................................&#160;17<br/>8.6. USB&#160;........................................................................................................................&#160;17<br/>8.7. Navigation keys&#160;....................................................................................................&#160;17<br/>8.8. WiFi&#160;........................................................................................................................&#160;17<br/></b></a><a href="android-1.6-cdd.html#18"><b>8.9. Camera&#160;..................................................................................................................&#160;18</b></a><br/>
<a href="android-1.6-cdd.html#18"><b>8.9.1. Non-Autofocus Cameras&#160;...............................................................................&#160;18</b></a><br/>
<a href="android-1.6-cdd.html#18"><b>8.10. Accelerometer.....................................................................................................&#160;18<br/></b></a><a href="android-1.6-cdd.html#19"><b>8.11. Compass&#160;.............................................................................................................&#160;19<br/>8.12. GPS&#160;......................................................................................................................&#160;19<br/>8.13. Telephony............................................................................................................&#160;19<br/>8.14. Volume controls..................................................................................................&#160;19</b></a><br/>
<a href="android-1.6-cdd.html#19"><b>9. Performance Compatibility.........................................................................................&#160;19<br/></b></a><a href="android-1.6-cdd.html#20"><b>10. Security Model Compatibility&#160;...................................................................................&#160;20</b></a><br/>
<a href="android-1.6-cdd.html#20"><b>10.1. Permissions&#160;........................................................................................................&#160;20<br/>10.2. User and Process Isolation&#160;...............................................................................&#160;20<br/></b></a><a href="android-1.6-cdd.html#21"><b>10.3. Filesystem Permissions.....................................................................................&#160;21</b></a><br/>
<a href="android-1.6-cdd.html#21"><b>11. Compatibility Test Suite&#160;...........................................................................................&#160;21</b></a><br/>
<hr/>
<a name=3></a><a href="android-1.6-cdd.html#21"><b>12. Contact Us&#160;.................................................................................................................&#160;21<br/></b></a><a href="android-1.6-cdd.html#22"><b>Appendix A: Required Application Intents&#160;...................................................................&#160;22<br/></b></a><b>Appendix B: Required Broadcast Intents&#160;.......................................................................&#160;0<br/>Appendix C: Future Considerations................................................................................&#160;0</b><br/>
<a href="android-1.6-cdd.html#30"><b>1. Non-telephone Devices&#160;...........................................................................................&#160;30<br/>2. Bluetooth Compatibility&#160;..........................................................................................&#160;30<br/>3. Required Hardware Components...........................................................................&#160;30<br/>4. Sample Applications&#160;...............................................................................................&#160;30<br/>5. Touch Screens&#160;.........................................................................................................&#160;30<br/></b></a><a href="android-1.6-cdd.html#31"><b>6. Performance.............................................................................................................&#160;31</b></a><br/>
<hr/>
<a name=4></a><b>1. Introduction</b><br/>
This document enumerates the requirements that must be met in order for mobile phones to be<br/>compatible with Android 1.6. This definition assumes familiarity with the Android Compatibility Program<br/><a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources, 1].</a><br/>
The use of&#160;&#34;must&#34;, &#34;must not&#34;, &#34;required&#34;, &#34;shall&#34;, &#34;shall not&#34;, &#34;should&#34;, &#34;should not&#34;, &#34;recommended&#34;,<br/>&#34;may&#34; and &#34;optional&#34; is per the IETF standard defined in RFC2119&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources</a>, 2].<br/>
As used in this document, a &#34;device implementer&#34; or &#34;implementer&#34; is a person or organization developing<br/>a hardware/software solution running Android 1.6.&#160;A &#34;device implementation&#34; or &#34;implementation&#34; is the<br/>hardware/software solution so developed.<br/>
To be considered compatible with Android 1.6, device implementations:<br/>
1.&#160;MUST meet the requirements presented in this Compatibility Definition, including any documents<br/>
incorporated via reference.<br/>
2.&#160;MUST pass the Android Compatibility Test Suite (CTS) available as part of the Android Open<br/>
Source Project [<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources</a>, 3].&#160;The&#160;CTS tests most,&#160;<b>but not all</b>, components outlined in this<br/>document.<br/>
Where this definition or the CTS is silent, ambiguous, or incomplete, it is the responsibility of the device<br/>implementer to ensure compatibility with existing implementations. For this reason, the Android Open<br/>Source Project&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources</a>, 4]&#160;is both the reference&#160;<i>and preferred&#160;</i>implementation of Android. Device<br/>implementers are strongly encouraged to base their implementations on the &#34;upstream&#34; source code<br/>available from the Android Open Source Project.&#160;While some components can hypothetically be replaced<br/>with alternate implementations this practice is strongly discouraged, as passing the CTS tests will become<br/>substantially more difficult. It is the implementer's responsibility to ensure full behavioral compatibility with<br/>the standard Android implementation, including and beyond the Compatibility Test Suite.<br/>
<b>2. Resources</b><br/>
This Compatibility Definition makes reference to a number of resources that can be obtained here.<br/>
1.&#160;Android Compatibility Program Overview:&#160;<a href="https://sites.google.com/a/android.com/compatibility/how-it-works">https://sites.google.com/a/android.com/compatibility/</a><br/>
<a href="https://sites.google.com/a/android.com/compatibility/how-it-works">how-it-works</a><br/>
2.&#160;IETF RFC2119 Requirement Levels:&#160;<a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt<br/></a>3.&#160;Compatibility Test Suite:&#160;<a href="http://sites.google.com/a/android.com/compatibility/compatibility-test-suite--cts">http://sites.google.com/a/android.com/compatibility/compatibility-test-</a><br/>
<a href="http://sites.google.com/a/android.com/compatibility/compatibility-test-suite--cts">suite--cts</a><br/>
4.&#160;Android Open Source Project:&#160;<a href="http://source.android.com/">http://source.android.com/<br/></a>5.&#160;API definitions and documentation:&#160;<a href="http://developer.android.com/reference/packages.html">http://developer.android.com/reference/packages.html<br/></a>6.&#160;Content Providers:&#160;<a href="http://code.google.com/android/reference/android/provider/package-summary.html">http://code.google.com/android/reference/android/provider/package-</a><br/>
<a href="http://code.google.com/android/reference/android/provider/package-summary.html">summary.html</a><br/>
7.&#160;Available Resources:&#160;<a href="http://code.google.com/android/reference/available-resources.html">http://code.google.com/android/reference/available-resources.html<br/></a>8.&#160;Android Manifest files:&#160;<a href="http://code.google.com/android/devel/bblocks-manifest.html">http://code.google.com/android/devel/bblocks-manifest.html<br/></a>9.&#160;Android Permissions reference:&#160;<a href="http://developer.android.com/reference/android/Manifest.permission.html">http://developer.android.com/reference/android/</a><br/>
<a href="http://developer.android.com/reference/android/Manifest.permission.html">Manifest.permission.html</a><br/>
10.&#160;Build Constants:&#160;<a href="http://developer.android.com/reference/android/os/Build.html">http://developer.android.com/reference/android/os/Build.html<br/></a>11.&#160;WebView:&#160;<a href="http://developer.android.com/reference/android/webkit/WebView.html">http://developer.android.com/reference/android/webkit/WebView.html<br/></a>12.&#160;Gears Browser Extensions:&#160;<a href="http://code.google.com/apis/gears/">http://code.google.com/apis/gears/</a><br/>
<hr/>
<a name=5></a>13.&#160;Dalvik Virtual Machine specification, found in the dalvik/docs directory of a source code<br/>
checkout; also available at&#160;<a href="http://android.git.kernel.org/?p=platform/dalvik.git;a=tree;f=docs;h=3e2ddbcaf7f370246246f9f03620a7caccbfcb12;hb=HEAD">http://android.git.kernel.org/?p=platform/<br/>dalvik.git;a=tree;f=docs;h=3e2ddbcaf7f370246246f9f03620a7caccbfcb12;hb=HEAD</a><br/>
14.&#160;AppWidgets:&#160;<a href="http://developer.android.com/guide/practices/ui_guidelines/widget_design.html">http://developer.android.com/guide/practices/ui_guidelines/widget_design.html<br/></a>15.&#160;Notifications:&#160;<a href="http://developer.android.com/guide/topics/ui/notifiers/notifications.html">http://developer.android.com/guide/topics/ui/notifiers/notifications.html<br/></a>16.&#160;Status Bar icon style guide:&#160;<a href="http://developer.android.com/guide/practices/ui_guidelines/icon_design.html#statusbarstructure">http://developer.android.com/guide/practices/ui_guideline</a><br/>
<a href="http://developer.android.com/guide/practices/ui_guidelines/icon_design.html#statusbarstructure">/icon_design.html#statusbarstructure</a><br/>
17.&#160;Search Manager:&#160;<a href="http://developer.android.com/reference/android/app/SearchManager.html">http://developer.android.com/reference/android/app/SearchManager.html<br/></a>18.&#160;Toast:&#160;<a href="http://developer.android.com/reference/android/widget/Toast.html">http://developer.android.com/reference/android/widget/Toast.html<br/></a>19.&#160;Apps For Android:&#160;<a href="http://code.google.com/p/apps-for-android">http://code.google.com/p/apps-for-android<br/></a>20.&#160;Android apk file description:&#160;<a href="http://developer.android.com/guide/topics/fundamentals.html">http://developer.android.com/guide/topics/fundamentals.html<br/></a>21.&#160;Android Debug Bridge (adb):&#160;<a href="http://code.google.com/android/reference/adb.html">http://code.google.com/android/reference/adb.html<br/></a>22.&#160;Dalvik Debug Monitor Service (ddms):&#160;<a href="http://code.google.com/android/reference/ddms.html">http://code.google.com/android/reference/ddms.html<br/></a>23.&#160;Monkey:&#160;<a href="http://developer.android.com/guide/developing/tools/monkey.html">http://developer.android.com/guide/developing/tools/monkey.html<br/></a>24.&#160;Display-Independence Documentation:<br/>25.&#160;Configuration Constants:&#160;<a href="http://developer.android.com/reference/android/content/res/Configuration.html">http://developer.android.com/reference/android/content/res/</a><br/>
<a href="http://developer.android.com/reference/android/content/res/Configuration.html">Configuration.html</a><br/>
26.&#160;Display Metrics:&#160;<a href="http://developer.android.com/reference/android/util/DisplayMetrics.html">http://developer.android.com/reference/android/util/DisplayMetrics.html<br/></a>27.&#160;Camera:&#160;<a href="http://developer.android.com/reference/android/hardware/Camera.html">http://developer.android.com/reference/android/hardware/Camera.html<br/></a>28.&#160;Sensor coordinate space:&#160;<a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">http://developer.android.com/reference/android/hardware/</a><br/>
<a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">SensorEvent.html</a><br/>
29.&#160;Android Security and Permissions reference:&#160;<a href="http://developer.android.com/guide/topics/security/security.html">http://developer.android.com/guide/topics/security/</a><br/>
<a href="http://developer.android.com/guide/topics/security/security.html">security.html</a><br/>
Many of these resources are derived directly or indirectly from the Android 1.6 SDK, and will be<br/>functionally identical to the information in that SDK's documentation. In any cases where this<br/>Compatibility Definition disagrees with the SDK documentation, the SDK documentation is considered<br/>authoritative.&#160;Any technical details provided in the references included above are considered by inclusion<br/>to be part of this Compatibility Definition.<br/>
<b>3. Software</b><br/>
The Android platform includes both a set of managed (&#34;hard&#34;) APIs, and a body of so-called &#34;soft&#34; APIs<br/>such as the Intent system, native-code APIs, and web-application APIs.&#160;This section details the hard and<br/>soft APIs that are integral to compatibility, as well as certain other relevant technical and user interface<br/>behaviors. Device implementations MUST comply with all the requirements in this section.<br/>
<b>3.1. Managed API Compatibility</b><br/>
The managed (Dalvik-based) execution environment is the primary vehicle for Android applications. The<br/>Android application programming interface (API) is the set of Android platform interfaces exposed to<br/>applications running in the managed VM environment. Device implementations MUST provide complete<br/>implementations, including all documented behaviors, of any documented API exposed by the Android<br/>1.6 SDK, such as:<br/>
1.&#160;Core Android Java-language APIs&#160;<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources, 5].<br/></a>2.&#160;Content Providers&#160;<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources</a>, 6].<br/>3.&#160;Resources&#160;<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources, 7].<br/></a>4.&#160;AndroidManifest.xml attributes and elements [Resources, 8].<br/>
<hr/>
<a name=6></a>Device implementations MUST NOT omit any managed APIs, alter API interfaces or signatures, deviate<br/>from the documented behavior, or include no-ops, except where specifically allowed by this Compatibility<br/>Definition.<br/>
<b>3.2. Soft API Compatibility</b><br/>
In addition to the managed APIs from Section 3.1, Android also includes a significant runtime-only &#34;soft&#34;<br/>API, in the form of such things such as Intents, permissions, and similar aspects of Android applications<br/>that cannot be enforced at application compile time. This section details the &#34;soft&#34; APIs and system<br/>behaviors required for compatibility with Android 1.6.&#160;Device implementations MUST meet all the<br/>requirements presented in this section.<br/>
<b>3.2.1. Permissions</b><br/>
Device implementers MUST support and enforce all permission constants&#160;as documented by the<br/>Permission reference page&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en&pli=1#resources">Resources</a>, 9]. Note that Section 10 lists addtional requirements related to<br/>the Android security model.<br/>
<b>3.2.2. Build Parameters</b><br/>
The Android APIs include a number of constants on the android.os.Build class&#160;<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources, 10]&#160;</a>that are<br/>intended to describe the current device. To provide consistent, meaningful values across device<br/>implementations, the table below includes additional restrictions on the formats of these values to which<br/>device implementations MUST conform.<br/>
<b>Parameter</b><br/>
<b>Comments</b><br/>
The version of the currently-executing Android system, in human-<br/>
android.os.Build.VERSION.RELEASE<br/>
readable format. For Android 1.6, this field MUST have the string value<br/>&#34;1.6&#34;.<br/>
The version of the currently-executing Android system, in a format<br/>
android.os.Build.VERSION.SDK<br/>
accessible to third-party application code. For Android 1.6, this field<br/>MUST have the integer value 4.<br/>
A value chosen by the device implementer designating the specific build<br/>of the currently-executing Android system, in human-readable format.<br/>This value MUST NOT be re-used for different builds shipped to end<br/>
android.os.Build.VERSION.INCREMENTAL&#160;users. A typical use of this field is to indicate which build number or<br/>
source-control change identifier was used to generate the build. There<br/>are no requirements on the specific format of this field, except that it<br/>MUST NOT be null or the empty string (&#34;&#34;).<br/>
A value chosen by the device implementer identifying the specific internal<br/>hardware used by the device, in human-readable format. A possible use<br/>
android.os.Build.BOARD<br/>
of this field is to indicate the specific revision of the board powering the<br/>device. There are no requirements on the specific format of this field,<br/>except that it MUST NOT be null or the empty string (&#34;&#34;).<br/>
A value chosen by the device implementer identifying the name of the<br/>
android.os.Build.BRAND<br/>
company, organization, individual, etc. who produced the device, in<br/>human-readable format. A possible use of this field is to indicate the OEM<br/>
<hr/>
<a name=7></a>and/or carrier who sold the device. There are no requirements on the<br/>specific format of this field, except that it MUST NOT be null or the empty<br/>string (&#34;&#34;).<br/>
A value chosen by the device implementer identifying the specific<br/>configuration or revision of the body (sometimes called &#34;industrial<br/>
android.os.Build.DEVICE<br/>
design&#34;) of the device. There are no requirements on the&#160;specific format<br/>of this field, except that it MUST NOT be null or the empty string (&#34;&#34;).<br/>
A string that uniquely identifies this build. It SHOULD be reasonably<br/>human-readable. It MUST follow this template:<br/>$(PRODUCT_BRAND)/$(PRODUCT_NAME)/$(PRODUCT_DEVICE)/<br/>$(TARGET_BOOTLOADER_BOARD_NAME):$(PLATFORM_VERSION)/<br/>$(BUILD_ID)/$(BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/<br/>
android.os.Build.FINGERPRINT<br/>
$(BUILD_VERSION_TAGS)<br/>For example: acme/mydevicel/generic/generic:Donut/ERC77/<br/>3359:userdebug/test-keys<br/>The fingerprint MUST NOT include spaces. If other fields included in the<br/>template above have spaces, they SHOULD be replaced with the ASCII<br/>underscore (&#34;_&#34;) character in the fingerprint.<br/>
A string that uniquely identifies the host the build was built on, in human<br/>
android.os.Build.HOST<br/>
readable format. There are no requirements on the specific format of this<br/>field, except that it MUST NOT be null or the empty string (&#34;&#34;).<br/>
An identifier chosen by the device implementer to refer to a specific<br/>release, in human readable format. This field can by the same as<br/>android.os.Build.VERSION.INCREMENTAL, but SHOULD be a value<br/>
android.os.Build.ID<br/>
intended to be somewhat meaningful for end users. There are no<br/>requirements on the specific format of this field, except that it MUST NOT<br/>be null or the empty string (&#34;&#34;).<br/>
A value chosen by the device implementer containing the name of the<br/>device as known to the end user. This SHOULD be the same name<br/>
android.os.Build.MODEL<br/>
under which the device is marketed and sold to end users. There are no<br/>requirements on the specific format of this field, except that it MUST NOT<br/>be null or the empty string (&#34;&#34;).<br/>
A value chosen by the device implementer containing the development<br/>name or code name of the device. MUST be human-readable, but is not<br/>
android.os.Build.PRODUCT<br/>
necessarily intended for view by end users. There are no requirements<br/>on the specific format of this field, except that it MUST NOT be null or the<br/>empty string (&#34;&#34;).<br/>
A comma-separated list of tags chosen by the device implementer that<br/>further distinguish the build. For example, &#34;unsigned,debug&#34;. This field<br/>
android.os.Build.TAGS<br/>
MUST NOT be null or the empty string (&#34;&#34;), but a single tag (such as<br/>&#34;release&#34;) is fine.<br/>
android.os.Build.TIME<br/>
A value representing the timestamp of when the build occurred.<br/>
A value chosen by the device implementer specifying the runtime<br/>configuration of the build. This field SHOULD have one of the values<br/>
android.os.Build.TYPE<br/>
corresponding to the three typical Android runtime configurations: &#34;user&#34;,<br/>&#34;userdebug&#34;, or &#34;eng&#34;.<br/>
A name or user ID of the user (or automated user) that generated the<br/>
android.os.Build.USER<br/>
build.&#160;There are no requirements on the specific format of this field,<br/>except that it MUST NOT be null or the empty string (&#34;&#34;).<br/>
<hr/>
<a name=8></a><b>3.2.3. Intent Compatibility</b><br/>
Android uses Intents to achieve loosely-coupled integration between applications. This section describes<br/>requirements related to the Intent patterns that MUST be honored by device implementations. By<br/>&#34;honored&#34;, it is meant that the device implementer MUST provide an Android Activity, Service, or other<br/>component that specifies a matching Intent filter and binds to and implements correct behavior for each<br/>specified Intent pattern.<br/>
<b>3.2.3.1. Core Application Intents</b><br/>
The Android upstream project defines a number of core applications, such as a phone dialer, calendar,<br/>contacts book, music player, and so on. Device implementers MAY replace these applications with<br/>alternative versions.<br/>
However, any such alternative versions MUST honor the same Intent patterns provided by the upstream<br/>project. (For example, if a device contains an alternative music player, it must still honor the Intent pattern<br/>issued by third-party applications to pick a song.)&#160;Device implementions MUST support all Intent patterns<br/>listed in&#160;Appendix A.<br/>
<b>3.2.3.2. Intent Overrides</b><br/>
As Android is an extensible platform, device implementers MUST allow each Intent pattern described in<br/>Appendix A to be overridden by third-party applications. The upstream Android open source project<br/>allows this by default; device implementers MUST NOT attach special privileges to system applications'<br/>use of these Intent patterns, or prevent third-party applications from binding to and assuming control of<br/>these patterns.&#160;This prohibition specifically includes disabling the &#34;Chooser&#34; user interface which allows<br/>the user to select between multiple applications which all handle the same Intent pattern.<br/>
<b>3.2.3.3. Intent Namespaces</b><br/>
Device implementers MUST NOT include any Android component that honors any new Intent or<br/>Broadcast Intent patterns using an ACTION, CATEGORY, or other key string in the android.* namespace.<br/>Device implementers MUST NOT include any Android components that honor any new Intent or<br/>Broadcast Intent patterns using an ACTION, CATEGORY, or other key string in a package space<br/>belonging to another organization. Device implementers MUST NOT alter or extend any of the Intent<br/>patterns listed in Appendices A or B.<br/>
This prohibition is analogous to that specified for Java language classes in Section 3.6.<br/>
<hr/>
<a name=9></a><b>3.2.3.4. Broadcast Intents</b><br/>
Third-party applications rely on the platform to broadcast certain Intents to notify them of changes in the<br/>hardware or software environment. Android-compatible devices MUST broadcast the public broadcast<br/>Intents in response to appropriate system events. A list of required Broadcast Intents is provided in<br/>Appendix B; however, note that the SDK may define additional broadcast intents, which MUST also be<br/>honored.<br/>
<b>3.3. Native API Compatibility</b><br/>
Managed code running in Dalvik can call into native code provided in the application .apk file as an ELF<br/>.so file compiled for the appropriate device hardware architecture. Device implementations MUST include<br/>support for code running in the managed environment to call into native code, using the standard Java<br/>Native Interface (JNI) semantics. The following APIs must be available to native code:<br/>
•&#160;<b>libc&#160;(C library)<br/></b>•&#160;<b>libm&#160;(math library)<br/></b>•&#160;<b>JNI interface<br/></b>•&#160;<b>libz (Zlib compression)<br/></b>•&#160;<b>liblog (Android logging)<br/></b>•&#160;<b>Minimal support for C++<br/></b>•&#160;<b>OpenGL ES 1.1</b><br/>
These libraries MUST be source-compatible (i.e. header compatible) and binary-compatible (for a given<br/>processor architecture) with the versions provided in Bionic by the Android Open Source project. Since<br/>the Bionic implementations are not fully compatible with other implementations such as the GNU C<br/>library, device implementers SHOULD use the Android implementation. If device implementers use a<br/>different implementation of these libraries, they must ensure header and binary compatibility.<br/>
Native code compatibility is challenging. For this reason, we wish to repeat that device implementers are<br/>VERY strongly encouraged to use the upstream implementations of the libraries listed above, to help<br/>ensure compatibility.<br/>
<b>3.4. Web API Compatibility</b><br/>
Many developers and applications rely on the behavior of the&#160;android.webkit.WebView&#160;class&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources</a>,<br/>11]&#160;for their user interfaces, so the WebView implementation must be compatible across Android<br/>implementations. The Android Open Source implementation uses the WebKit rendering engine version to<br/>implement the WebView.<br/>
Because it is not feasible to develop a comprehensive test suite for a web browser, device implementers<br/>MUST use the specific upstream build of WebKit in the WebView implementation. Specifically:<br/>
•&#160;WebView MUST use the&#160;528.5+ WebKit build from the upstream Android Open Source tree for<br/>
Android 1.6. This build includes a specific set of functionality and security fixes for the WebView.<br/>
•&#160;The user agent string reported by the WebView MUST be in this format:<br/>
Mozilla/5.0 (Linux; U;&#160;Android 1.6; &lt;language&gt;-&lt;country&gt;; &lt;device<br/>name&gt;; Build/&lt;build ID&gt;)&#160;AppleWebKit/528.5+ (KHTML, like Gecko)<br/>Version/3.1.2 Mobile Safari/525.20.1<br/>
<hr/>
<a name=10></a>◦&#160;The &#34;&lt;device name&gt;&#34; string MUST be the same as the value for<br/>
android.os.Build.MODEL<br/>
◦&#160;The &#34;&lt;build ID&gt;&#34; string MUST be the same as the value for android.os.Build.ID.<br/>◦&#160;The &#34;&lt;language&gt;&#34; and &#34;&lt;country&gt;&#34; strings SHOULD follow the usual conventions for<br/>
country code and language, and SHOULD refer to the curent locale of the device at the<br/>time of the request.<br/>
Implementations MAY ship a custom user agent string in the standalone Browser application. What's<br/>more, the standalone Browser MAY be based on an alternate browser technology (such as Firefox,<br/>Opera, etc.)&#160;However, even if an alternate Browser application is shipped, the WebView component<br/>provided to third-party applications MUST be based on WebKit, as above.<br/>
The standalone Browser application SHOULD include support for Gears [<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources,&#160;</a>12] and MAY<br/>include support for some or all of HTML5.<br/>
<b>3.5. API Behavioral Compatibility</b><br/>
The behaviors of each of the API types (managed, soft, native, and web) must be consistent with the<br/>preferred implementation of Android available from the Android Open Source Project.<br/>
Some specific areas of compatibility are:<br/>
•&#160;Devices MUST NOT change the behavior or meaning of a standard Intent<br/>•&#160;Devices MUST NOT alter the lifecycle or lifecycle semantics of a particular type of system<br/>
component (such as Service, Activity, ContentProvider, etc.)<br/>
•&#160;Devices MUST NOT change the semantics of a particular permission<br/>
The above list is not comprehensive, and the onus is on device implementers to ensure behavioral<br/>compatibility.&#160;For this reason, device implementers SHOULD use the source code available via the<br/>Android Open Source Project where possible, rather than re-implement significant parts of the system.<br/>
The Compatibility Test Suite (CTS) tests significant portions of the platform for behavioral compatibility,<br/>but not all. It is the responsibility of the implementer to ensure behavioral compatibility with the Android<br/>Open Source Project.<br/>
<b>3.6. API Namespaces</b><br/>
Android follows the package and class namespace conventions defined by the Java programming<br/>language. To ensure compatibility with third-party applications, device implementers MUST NOT make<br/>any prohibited modifications (see below) to these package namespaces:<br/>
•&#160;java.*<br/>•&#160;javax.*<br/>•&#160;sun.*<br/>•&#160;android.*<br/>•&#160;com.android.*<br/>
Prohibited modifications include:<br/>
•&#160;Device implementations MUST NOT modify the publicly exposed APIs on the Android platform<br/>
by changing any method or class signatures, or by removing classes or class fields.<br/>
<hr/>
<a name=11></a>•&#160;Device implementers MAY modify the underlying implementation of the APIs, but such<br/>
modifications MUST NOT impact the stated behavior and Java-language signature of any<br/>publicly exposed APIs.<br/>
•&#160;Device implementers MUST NOT add any publicly exposed elements (such as classes or<br/>
interfaces, or fields or methods to existing classes or interfaces) to the APIs above.<br/>
A &#34;publicly exposed element&#34; is any construct which is not decorated with the &#34;@hide&#34; marker in the<br/>upstream Android source code.&#160;In other words, device implementers MUST NOT expose new APIs or<br/>alter existing APIs in the namespaces noted above.&#160;Device implementers MAY make internal-only<br/>modifications, but those modifications MUST NOT be advertised or otherwise exposed to developers.<br/>
Device implementers MAY add custom APIs, but any such APIs MUST NOT be in a namespace owned<br/>by or referring to another organization. For instance, device implementers MUST NOT add APIs to the<br/>com.google.* or similar namespace; only Google may do so.&#160;Similarly, Google MUST NOT add APIs to<br/>other companies' namespaces.<br/>
If a device implementer proposes to improve one of the package namespaces above (such as by adding<br/>useful new functionality to an existing API, or adding a new API), the implementer SHOULD visit<br/>source.android.com and begin the process for contributing changes and code, according to the<br/>information on that site.<br/>
Note that the restrictions above correspond to standard conventions for naming APIs in the Java<br/>programming language; this section simply aims to reinforce those conventions and make them binding<br/>through inclusion in this compatibility definition.<br/>
<b>3.7. Virtual Machine Compatibility</b><br/>
A compatible Android device must support the full Dalvik Executable (DEX) bytecode specification and<br/>Dalvik Virtual Machine semantics&#160;[Resources, 13].<br/>
<b>3.8. User Interface Compatibility</b><br/>
The Android platform includes some developer APIs that allow developers to hook into the system user<br/>interface. Device implementations MUST incorporate these standard UI APIs into custom user interfaces<br/>they develop, as explained below.<br/>
<b>3.8.1. Widgets</b><br/>
Android defines a component type and corresponding API and lifecycle that allows applications to expose<br/><a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">an &#34;AppWidget&#34; to the end user [Resources</a>, 14]<b>.&#160;</b>The Android Open Source reference release includes a<br/>Launcher application that includes user interface elements allowing the user to add, view, and remove<br/>AppWidgets from the home screen.<br/>
Device implementers MAY substitute an alternative to the reference Launcher (i.e. home screen).<br/>Alternative Launchers SHOULD include built-in support for AppWidgets, and expose user interface<br/>elements to add, view, and remove AppWidgets directly within the Launcher.&#160;Alternative Launchers MAY<br/>omit these user interface elements; however, if they are omitted, the device implementer MUST provide a<br/>separate application accessible from the Launcher that allows users to add, view, and remove<br/>AppWidgets.<br/>
<hr/>
<a name=12></a><b>3.8.2. Notifications</b><br/>
Android includes APIs that allow developers to notify users of notable events [Resources, 15].&#160;Device<br/>implementers MUST provide support for each class of notification so defined; specifically: sounds,<br/>vibration, light and status bar.<br/>
Additionally, the implementation MUST correctly render and all resources (icons, sound files, etc.)<br/><a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">provided for in the APIs [Resources,&#160;</a>7], or in the&#160;<a href="http://docs.google.com/a/google.com/Doc?docid=0AfF4TgU8QNgVZGZnYjR3c2dfMjI4N3hjcXY3cHM&hl=en#resources">Status Bar icon style guide [Resources</a>, 16].&#160;Device<br/>implementers MAY provide an alternative user experience for notifications than that provided by the<br/>reference Android Open Source implementation; however, such alternative notification systems MUST<br/>support existing notification resources, as above.<br/>
<b>3.8.3. Search</b><br/>
Android includes&#160;<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">APIs [Resources,&#160;</a>17]&#160;that allow developers to incorporate search into their applications,<br/>and expose their application's data into the global system search. Generally speaking, this functionality<br/>consists of a single, system-wide user interface that allows users to enter queries, displays suggestions<br/>as users type, and displays results.&#160;The Android APIs allow developers to reuse this interface to provide<br/>search within their own apps, and allow developers to supply results to the common global search user<br/>interface.<br/>
Device implementations MUST include a single, shared, system-wide search user interface capable of<br/>real-time suggestions in response to user input. Device implementations MUST implement the APIs that<br/>allow developers to reuse this user interface to provide search within their own applications.<br/>
Device implementations MUST implement the APIs that allow third-party applications to add suggestions<br/>to the search box when it is run in global search mode. If no third-party applications are installed that<br/>make use of this functionality, the default behavior SHOULD be to display web search engine results and<br/>suggestions.<br/>
Device implementations MAY ship alternate search user interfaces, but SHOULD include a hard or soft<br/>dedicated search button, that can be used at any time within any app to invoke the search framework,<br/>with the behavior provided for in the API documentation.<br/>
<b>3.8.4. Toasts</b><br/>
Applications can use the &#34;Toast&#34; API&#160;(defined in&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources,&#160;</a>18])&#160;to display short non-modal strings to the<br/>end user, that disappear after a brief period of time.&#160;Device implementations MUST display Toasts from<br/>applications to end users in some high-visibility manner.<br/>
<b>4. Reference Software Compatibility</b><br/>
Device implementers MUST test implementation compatibility using the following open-source<br/>applications:<br/>
•&#160;Calculator (included in SDK)<br/>•&#160;Lunar Lander (included in SDK)<br/>•&#160;ApiDemos (included in SDK)<br/>•&#160;The &#34;Apps for Android&#34; applications [<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources,&#160;</a>19]<br/>
Each app above MUST launch and behave correctly on the implementation, for the implementation to be<br/>
<hr/>
<a name=13></a>considered compatible.<br/>
<b>5. Application Packaging Compatibility</b><br/>
Device implementations MUST install and run Android &#34;.apk&#34; files as generated by the &#34;aapt&#34; tool<br/>included in the official Android SDK&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources</a>,&#160;20].<br/>
Devices implementations MUST NOT extend either the .apk, Android Manifest, or Dalvik bytecode<br/>formats in such a way that would prevent those files from installing and running correctly on other<br/>compatible devices. Device implementers SHOULD use the reference upstream implementation of Dalvik,<br/>and the reference implementation's package management system.<br/>
<b>6. Multimedia Compatibility</b><br/>
A compatible Android device must support the following multimedia codecs.&#160;All of these codecs are<br/>provided as software implementations in the preferred Android implementation from the Android Open<br/>Source Project&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources</a>,&#160;4].<br/>
Please note that neither Google nor the Open Handset Alliance make any representation that these<br/>codecs are unencumbered by third-party patents.&#160;Those intending to use this source code in hardware or<br/>software products are advised that implementations of this code, including in open source software or<br/>shareware, may require&#160;patent&#160;licenses from the relevant&#160;patent&#160;holders.<br/>
<b>Audio<br/>Name</b><br/>
<b>Encoder&#160;Decoder&#160;Details</b><br/>
<b>Files Supported</b><br/>
Mono/Stereo content in any<br/>
3GPP (.3gp) and<br/>
combination of standard bit rates<br/>
MPEG-4 (.mp4, .m4a)<br/>
AAC LC/LTP<br/>
X<br/>
up to 160 kbps and sampling rates&#160;files. No support for raw<br/>between 8 to 48kHz<br/>
AAC (.aac)<br/>
Mono/Stereo content in any<br/>
3GPP (.3gp) and<br/>
HE-AACv1<br/>
combination of standard bit rates<br/>
MPEG-4 (.mp4, .m4a)<br/>
X<br/>
(AAC+)<br/>
up to 96 kbps and sampling rates&#160;files. No support for raw<br/>between 8 to 48kHz<br/>
AAC (.aac)<br/>
Mono/Stereo content in any<br/>
HE-AACv2<br/>
3GPP (.3gp) and<br/>
combination of standard bit rates<br/>
(enhanced<br/>
MPEG-4 (.mp4, .m4a)<br/>
X<br/>
up to 96 kbps and sampling rates<br/>
AAC+)<br/>
files. No support for raw<br/>
between 8 to 48kHz<br/>
AAC (.aac)<br/>
AMR-NB<br/>
4.75 to 12.2 kbps sampled @<br/>
3GPP (.3gp) files<br/>
X<br/>
X<br/>
8kHz<br/>
AMR-WB<br/>
9 rates from 6.60 kbit/s to 23.85<br/>
-3GPP (.3gp) files<br/>
X<br/>
kbit/s sampled @ 16kHz<br/>
MP3<br/>
Mono/Stereo 8-320Kbps constant&#160;MP3 (.mp3) files<br/>
X<br/>
(CBR) or variable bit-rate (VBR)<br/>
Type 0 and 1 (.mid, .xmf,<br/>
MIDI Type 0 and 1. DLS Version 1<br/>
MIDI<br/>
X<br/>
.mxmf). Also RTTTL/RTX<br/>
and 2. XMF and Mobile XMF.<br/>
(.rtttl, .rtx), OTA (.ota),<br/>
<hr/>
<a name=14></a>Support for ringtone formats<br/>
and iMelody (.imy)<br/>
RTTTL/RTX, OTA, and iMelody<br/>
Ogg Vorbis<br/>
.ogg<br/>
X<br/>
8- and 16-bit linear PCM (rates up<br/>
PCM<br/>
X<br/>
WAVE<br/>
to limit of hardware)<br/>
<b>Image</b><br/>
<b>Files</b><br/>
<b>Name</b><br/>
<b>Encoder&#160;Decoder&#160;Details</b><br/>
<b>Supported</b><br/>
JPEG<br/>
X<br/>
X<br/>
base+progressive<br/>
GIF<br/>
X<br/>
PNG<br/>
X<br/>
X<br/>
BMP<br/>
X<br/>
<b>Video</b><br/>
<b>Files</b><br/>
<b>Name</b><br/>
<b>Encoder&#160;Decoder&#160;Details</b><br/>
<b>Supported</b><br/>
3GPP (.3gp)<br/>
H.263<br/>
X<br/>
X<br/>
files<br/>
3GPP (.3gp)<br/>
H.264<br/>
X<br/>
and MPEG-4<br/>(.mp4) files<br/>
MPEG4<br/>
X<br/>
3GPP (.3gp) file<br/>
SP<br/>
<b>7. Developer Tool Compatibility</b><br/>
Device implemenations MUST support the Android Developer Tools provided in the Android SDK.<br/>Specifically, Android-compatible devices MUST be compatible with:<br/>
•&#160;<b>Android Debug Bridge or adb&#160;</b><a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources</a>, 21]<br/>
Device implementations MUST support all&#160;adb&#160;functions as documented in the Android<br/>SDK.&#160;The device-side&#160;adb&#160;daemon SHOULD be inactive by default, but there MUST be a user-<br/>accessible mechanism to turn on the Android Debug Bridge.<br/>
•&#160;<b>Dalvik Debug Monitor Service or ddms&#160;</b><a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources</a>, 22]<br/>
Device implementations MUST support all&#160;ddms&#160;features as documented in the Android SDK.<br/>As ddms uses&#160;adb, support for&#160;ddms&#160;SHOULD be inactive by default, but MUST be supported<br/>whenever the user has activated the Android Debug Bridge, as above.<br/>
<hr/>
<a name=15></a>•&#160;<b>Monkey&#160;</b>[Resources, 23]<br/>
Device implementations MUST include the Monkey framework, and make it available for<br/>applications to use.<br/>
<b>8. Hardware Compatibility</b><br/>
Android is intended to support device implementers creating innovative form factors and configurations.<br/>At the same time Android developers expect certain hardware, sensors and APIs across all Android<br/>device. This section lists the hardware features that all Android 1.6 compatible devices must support.&#160;In<br/>Android 1.6, the majority of hardware features (such as WiFi, compass, and accelerometer) are required.<br/>
If a device includes a particular hardware component that has a corresponding API for third-party<br/>developers, the device implementation MUST implement that API as defined in the Android SDK<br/>documentation.<br/>
<b>8.1. Display</b><br/>
Android 1.6 includes facilities that perform certain automatic scaling and transformation operations under<br/>some circumstances, to ensure that third-party applications run reasonably well on hardware<br/>configurations for which they were not necessarily explicitly designed&#160;<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources, 24]</a>.&#160;Devices MUST<br/>properly implement these behaviors, as detailed in this section.<br/>
<b>8.1.1. Standard Display Configurations</b><br/>
This table lists the standard screen configurations considered compatible with Android:<br/>
Diagonal<br/>
Screen Size<br/>
Screen Density<br/>
Screen Type<br/>
Width (Pixels)<br/>
Height (Pixels)<br/>
Length Range<br/>
Group<br/>
Group<br/>
(inches)<br/>
QVGA<br/>
240<br/>
320<br/>
2.6 - 3.0<br/>
Small<br/>
Low<br/>
WQVGA<br/>
240<br/>
400<br/>
3.2 - 3.5<br/>
Normal<br/>
Low<br/>
FWQVGA<br/>
240<br/>
432<br/>
3.5 - 3.8<br/>
Normal<br/>
Low<br/>
HVGA<br/>
320<br/>
480<br/>
3.0 - 3.5<br/>
Normal<br/>
Medium<br/>
WVGA<br/>
480<br/>
800<br/>
3.3 - 4.0<br/>
Normal<br/>
High<br/>
FWVGA<br/>
480<br/>
854<br/>
3.5 - 4.0<br/>
Normal<br/>
High<br/>
WVGA<br/>
480<br/>
800<br/>
4.8 - 5.5<br/>
Large<br/>
Medium<br/>
FWVGA<br/>
480<br/>
854<br/>
5.0 - 5.8<br/>
Large<br/>
Medium<br/>
Device implementations corresponding to one of the standard configurations above&#160;MUST be configured<br/>to report the indicated screen size to applications via the android.content.res.Configuration&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources,<br/></a>25]&#160;class.<br/>
Some .apk packages have manifests that do not identify them as supporting a specific density range.<br/>When running such applications, the following constraints apply:<br/>
<hr/>
<a name=16></a>•&#160;Device implementations MUST interpret any resources that are present as defaulting to<br/>
&#34;medium&#34; (known as &#34;mdpi&#34; in the SDK documentation.)<br/>
•&#160;When operating on a &#34;low&#34; density screen, device implementations MUST scale down medium/<br/>
mdpi assets by a factor of 0.75.<br/>
•&#160;When operating on a &#34;high&#34; density screen, device implementations MUST scale up medium/<br/>
mdpi assets by a factor of 1.5.<br/>
•&#160;Device implementations MUST NOT scale assets within a density range, and MUST scale<br/>
assets by exactly these factors between density ranges.<br/>
<b>8.1.2. Non-Standard Display Configurations</b><br/>
Display configurations that do not match one of the standard configurations listed in Section 8.2.1 require<br/>additional consideration and work to be compatible. Device implementers MUST contact Android<br/>Compatibility Team as provided for in Section 12 to obtain classifications for screen-size bucket, density,<br/>and scaling factor. When provided with this information, device implementations MUST implement them<br/>as specified.<br/>
Note that some display configurations (such as very large or very small screens, and some aspect ratios)<br/>are fundamentally incompatible with Android 1.6; therefore device implementers are encouraged to<br/>contact Android Compatibility Team as early as possible in the development process.<br/>
<b>8.1.3. Display Metrics</b><br/>
Device implementations MUST report correct values for all display metrics defined in<br/>android.util.DisplayMetrics&#160;<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources</a>, 26].<br/>
<b>8.2. Keyboard</b><br/>
Device implementations:<br/>
•&#160;MUST include support for the Input Management Framework (which allows third party<br/>
developers to create Input Management Engines -- i.e. soft keyboard) as detailed at<br/>developer.android.com<br/>
•&#160;MUST provide at least one soft keyboard implementation (regardless of whether a hard<br/>
keyboard is present)<br/>
•&#160;MAY include additional soft keyboard implementations<br/>•&#160;MAY include a hardware keyboard<br/>•&#160;MUST NOT include a hardware keyboard that does not match one of the formats specified<br/>
in&#160;android.content.res.Configuration&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources, 25]&#160;</a>(that is, QWERTY, or 12-key)<br/>
<b>8.3. Non-touch Navigation</b><br/>
Device implementations:<br/>
•&#160;MAY omit non-touch navigation options (that is, may omit a trackball, 5-way directional pad, or<br/>
wheel)<br/>
•&#160;MUST report&#160;via android.content.res.Configuration&#160;<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources</a>, 25]&#160;the correct value for the<br/>
device's hardware<br/>
<hr/>
<a name=17></a><b>8.4. Screen Orientation</b><br/>
Compatible devices MUST&#160;support dynamic orientation by applications&#160;to either portrait or landscape<br/>screen orientation.&#160;That is, the device must respect the application's request for a specific&#160;screen<br/>orientation. Device implementations MAY&#160;select either portrait or landscape orientation as the default.<br/>
Devices MUST report the correct value for the device's current orientation, whenever queried via the<br/>android.content.res.Configuration.orientation, android.view.Display.getOrientation(), or other APIs.<br/>
<b>8.5. Touchscreen input</b><br/>
Device implementations:<br/>
•&#160;MUST have a touchscreen<br/>•&#160;MAY have either capacative or resistive touchscreen<br/>•&#160;MUST report the value of android.content.res.Configuration&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources, 25]&#160;</a>reflecting<br/>
corresponding to the type of the specific touchscreen on the device<br/>
<b>8.6. USB</b><br/>
Device implementations:<br/>
•&#160;MUST implement a USB client, connectable to a USB host with a standard USB-A port<br/>•&#160;MUST implement the Android Debug Bridge over USB (as described in Section 7)<br/>•&#160;MUST implement a USB mass storage client for the removable/media storage is present in the<br/>
device<br/>
•&#160;SHOULD use the micro USB form factor on the device side<br/>•&#160;SHOULD implement support for the USB Mass Storage specification (so that either removable<br/>
or fixed storage on the device can be accessed from a host PC)<br/>
•&#160;MAY include a non-standard port on the device side, but if so MUST ship with a cable capable of<br/>
connecting the custom pinout to standard USB-A port<br/>
<b>8.7. Navigation keys</b><br/>
The Home, Menu and Back functions are essential to the Android navigation paradigm.&#160;Device<br/>implementations MUST make these functions available to the user at all times, regardless of application<br/>state.&#160;These functions SHOULD be implemented via dedicated buttons. They MAY be implemented<br/>using software, gestures, touch panel, etc., but if so they MUST be always accessible and not obscure or<br/>interfere with the available application display area.<br/>
Device implementers SHOULD also provide a dedicated search key.&#160;Device implementers MAY also<br/>provide send and end keys for phone calls.<br/>
<b>8.8. WiFi</b><br/>
Device implementations MUST support 802.11b and 802.11g, and MAY support 802.11a.<br/>
<hr/>
<a name=18></a><b>8.9. Camera</b><br/>
Device implementations MUST include a camera. The included camera:<br/>
•&#160;MUST have a resolution of at least 2 megapixels<br/>•&#160;SHOULD have either hardware auto-focus, or software auto-focus implemented in the camera<br/>
driver (transparent to application software)<br/>
•&#160;MAY have fixed-focus or EDOF (extended depth of field) hardware<br/>•&#160;MAY include a flash. If the Camera includes a flash, the flash lamp MUST NOT be lit while an<br/>
android.hardware.Camera.PreviewCallback instance has been registered on a Camera preview<br/>surface.<br/>
Device implementations MUST implement the following behaviors for the camera-related APIs<br/><a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources, 27]</a>:<br/>
1.&#160;If an application has never called android.hardware.Camera.Parameters.setPreviewFormat(int),<br/>
then the device MUST use android.hardware.PixelFormat.YCbCr_420_SP for preview data<br/>provided to application callbacks.<br/>
2.&#160;If an application registers an android.hardware.Camera.PreviewCallback instance and the<br/>
system calls the onPreviewFrame() method when the preview format is YCbCr_420_SP, the<br/>data in the byte[] passed into onPreviewFrame() must further be in the NV21 encoding format.<br/>(This is the format used natively by the 7k hardware family.)&#160;That is, NV21 MUST be the default.<br/>
<b>8.9.1. Non-Autofocus Cameras</b><br/>
If a device lacks an autofocus camera, the device implementer MUST meet the additional requirements in<br/>this section. Device implementations MUST implement the full Camera API included in the Android 1.6<br/>SDK documentation in some reasonable way, regardless of actual camera hardware's capabilities.<br/>
For Android 1.6, if the camera lacks auto-focus, the device implementation MUST adhere to the following:<br/>
1.&#160;The system MUST include a read-only system property named &#34;ro.workaround.noautofocus&#34;<br/>
with the value of &#34;1&#34;.&#160;This value is intended to be used by applications such as Android Market to<br/>selectively identify device capabilities, and will be replaced in a future version of Android with a<br/>robust API.<br/>
2.&#160;If an application calls android.hardware.Camera.autoFocus(), the system MUST call the<br/>
onAutoFocus() callback method on any registered<br/>android.hardware.Camera.AutoFocusCallback instances, even though no focusing actually<br/>happened. This is to avoid having existing applications break by waiting forever for an autofocus<br/>callback that will never come.<br/>
3.&#160;The call to the AutoFocusCallback.onAutoFocus() method MUST be triggered by the driver or<br/>
framework in a new event on the main framework Looper thread. That is, Camera.autoFocus()<br/>MUST NOT directly call AutoFocusCallback.onAutoFocus() since this violates the Android<br/>framework threading model and will break apps.<br/>
<b>8.10. Accelerometer</b><br/>
Device implementations MUST include a 3-axis accelerometer and MUST be able to deliver events at&#160;at<br/>least 50 Hz. The coordinate system used by the accelerometer MUST comply with&#160;the Android sensor<br/>coordinate system as detailed in the Android API<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources_656432673567906_7490">s [Resources</a>, 28].<br/>
<hr/>
<a name=19></a><b>8.11. Compass</b><br/>
Device implementations MUST include a 3-axis compass and MUST be able to deliver events at&#160;at least<br/>10 Hz. The coordinate system used by the compass MUST comply with&#160;the Android sensor coordinate<br/><a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources_656432673567906_7490">system as defined in the Android API [Resources</a>, 28].<br/>
<b>8.12. GPS</b><br/>
Device implementations MUST include a GPS, and SHOULD include some form of &#34;assisted GPS&#34;<br/>technique to minimize GPS lock-on time.<br/>
<b>8.13. Telephony</b><br/>
Device implementations:<br/>
•&#160;MUST include either GSM or CDMA telephony<br/>•&#160;MUST implement the appropriate APIs as detailed in the Android SDK documentation at<br/>
developer.android.com<br/>
Note that this requirement implies that non-phone devices are not compatible with Android 1.6; Android<br/>1.6 devices MUST include telephony hardware. Please see&#160;Appendix C&#160;for information on non-phone<br/>devices.<br/>
<b>8.14. Volume controls</b><br/>
Android-compatible devices MUST include a mechanism to allow the user to increase and decrease the<br/>audio volume.&#160;Device implementations MUST make these functions available to the user at all times,<br/>regardless of application state.&#160;These functions MAY be implemented using physical hardware keys,<br/>software, gestures, touch panel, etc., but they MUST be always accessible and not obscure or interfere<br/>with the available application display area (see Display above).<br/>
When these buttons are used, the corresponding key events MUST be generated and sent to the<br/>foreground application. If the event is not intercepted and sunk by the application then device<br/>implementation MUST handle the event as a system volume control.<br/>
<b>9. Performance Compatibility</b><br/>
One of the goals of the Android Compatibility Program is to ensure a consistent application experience for<br/>consumers. Compatible implementations must ensure not only that applications simply run correctly on<br/>the device, but that they do so with reasonable performance and overall good user experience.<br/>
Device implementations MUST meet the key performance metrics of an Android 1.6 compatible device,<br/>as in the table below:<br/>
<b>Metric</b><br/>
<b>Performance Threshold</b><br/>
<b>Comments</b><br/>
<hr/>
<a name=20></a>This is tested by CTS.<br/>
The following applications<br/>
The launch time is measured as the total time to<br/>
should launch within the<br/>
complete loading the default activity for the<br/>
Application<br/>
specified time.<br/>
application, including the time it takes to start the<br/>
Launch Time<br/>
Browser: less than 1300ms<br/>
Linux process, load the Android package into the<br/>
MMS/SMS: less than 700ms<br/>
Dalvik VM, and call onCreate.<br/>
AlarmClock: less than 650ms<br/>
Multiple applications will be<br/>
This is tested by CTS.<br/>
launched. Re-launching the<br/>
Simultaneous&#160;first application should<br/>
Applications<br/>
complete taking less than the<br/>original launch time.<br/>
<b>10. Security Model Compatibility</b><br/>
Device implementations MUST implement a security model consistent with the Android platform security<br/>model as defined in&#160;Security and Permissions&#160;reference document in the APIs&#160;<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources,&#160;</a>29]&#160;in the<br/>Android developer documentation. Device implementations MUST support installation of self-signed<br/>applications without requiring any additional permissions/certificates from any third parties/authorities.<br/>
Specifically, compatible devices MUST support the following security mechanisms:<br/>
<b>10.1. Permissions</b><br/>
Device implementations MUST support the Android permissions model as defined in the Android<br/>developer documentation&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources</a>,&#160;9]. Specifically, implementations MUST enforce each permission<br/>defined as described in the SDK documentation; no permissions may be omitted, altered, or ignored.<br/>Implementations MAY add additional permissions, provided the new permission ID strings are not in the<br/>android.* namespace.<br/>
<b>10.2. User and Process Isolation</b><br/>
Device implementations MUST support the Android application sandbox model, in which each application<br/>runs as a unique Unix-style UID and in a separate process.<br/>
Device implementations MUST support running multiple applications as the same Linux user ID, provided<br/>that the applications are properly signed and constructed, as defined in&#160;the Security and Permissions<br/>reference&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources</a>,&#160;29].<br/>
<hr/>
<a name=21></a><b>10.3. Filesystem Permissions</b><br/>
Device implementations MUST support the Android file access permissions model as defined in&#160;as<br/>defined in&#160;the Security and Permissions&#160;reference&#160;<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">[Resources</a>,&#160;29].<br/>
<b>11. Compatibility Test Suite</b><br/>
Device implementations MUST pass the&#160;Android Compatibility Test Suite (CTS)&#160;[<a href="http://docs.google.com/a/google.com/Doc?docid=0ASeIKgIEGkvNZGc4OTRjZl80ZmgyZDhuY24&hl=en#resources">Resources,&#160;</a>3]&#160;available<br/>from the Android Open Source Project, using the final shipping software on the device. Additionally,<br/>device implementers SHOULD use the reference implementation in the Android Open Source tree as<br/>much as possible, and MUST ensure compatibility in cases of ambiguity&#160;in CTS and for any<br/>reimplementations of parts of the reference source code.<br/>
The CTS is designed to be run on an actual device. Like any software, the CTS may itself contain bugs.<br/>The CTS will be versioned independently of this Compatibility Definition, and multiple revisions of the<br/>CTS may be released for Android 1.6. However, such releases will only fix behavioral bugs in the CTS<br/>tests and will not impose any new tests, behaviors or APIs for a given platform release.<br/>
<b>12. Contact Us</b><br/>
You can contact the Android Compatibility Team at&#160;<a href="mailto:compatibility@android.com">compatibility@android.com&#160;</a>for clarifications related to<br/>this Compatibiltiy Definition and to provide feedback on this Definition.<br/>
<hr/>
<a name=22></a><b>Appendix A: Required Application Intents</b><br/>
<b>NOTE: this list is provisional, and will be updated in the future.</b><br/>
<b>Application&#160;Actions</b><br/>
<b>Schemes&#160;MIME Types</b><br/>
<b>(none)<br/>text/plain</b><br/>
<b>http</b><br/>
<b>text/html</b><br/>
<b>Browser</b><br/>
<b>android.intent.action.VIEW</b><br/>
<b>https</b><br/>
<b>application/xhtml+xml<br/>application/<br/>vnd.wap.xhtml+xml</b><br/>
<b>(none)</b><br/>
<b>android.intent.action.WEB_SEARCH</b><br/>
<b>http</b><br/>
<b>(none)</b><br/>
<b>https</b><br/>
<b>android.media.action.IMAGE_CAPTURE<br/>android.media.action.STILL_IMAGE_CAMERA</b><br/>
<b>Camera</b><br/>
<b>android.media.action.VIDEO_CAMERA<br/>android.media.action.VIDEO_CAPTURE</b><br/>
<b>vnd.android.cursor.dir/</b><br/>
<b>android.intent.action.VIEW</b><br/>
<b>image</b><br/>
<b>android.intent.action.GET_CONTENT</b><br/>
<b>vnd.android.cursor.dir/</b><br/>
<b>android.intent.action.PICK</b><br/>
<b>video</b><br/>
<b>android.intent.action.ATTACH_DATA</b><br/>
<b>image/*<br/>video/*</b><br/>
<b>android.intent.action.VIEW</b><br/>
<b>rtsp</b><br/>
<b>video/mp4<br/>video/3gp</b><br/>
<b>android.intent.action.VIEW</b><br/>
<b>http</b><br/>
<b>video/3gpp<br/>video/3gpp2</b><br/>
<b>android.intent.action.DIAL</b><br/>
<b>Phone /</b><br/>
<b>android.intent.action.VIEW</b><br/>
<b>tel</b><br/>
<b>Contacts</b><br/>
<b>android.intent.action.CALL</b><br/>
<b>android.intent.action.DIAL</b><br/>
<b>vnd.android.cursor.dir/</b><br/>
<b>android.intent.action.VIEW</b><br/>
<b>person</b><br/>
<hr/>
<a name=23></a><b>vnd.android.cursor.dir/<br/>person<br/>vnd.android.cursor.dir/</b><br/>
<b>android.intent.action.PICK</b><br/>
<b>phone<br/>vnd.android.cursor.dir/<br/>postal-address</b><br/>
<b>vnd.android.cursor.item/<br/>person<br/>vnd.android.cursor.item/</b><br/>
<b>android.intent.action.GET_CONTENT</b><br/>
<b>phone<br/>vnd.android.cursor.item/<br/>postal-address</b><br/>
<b>text/plain</b><br/>
<b>Email</b><br/>
<b>android.intent.action.SEND</b><br/>
<b>image/*<br/>video/*</b><br/>
<b>android.intent.action.VIEW</b><br/>
<b>mailto</b><br/>
<b>android.intent.action.SENDTO</b><br/>
<b>sms</b><br/>
<b>android.intent.action.VIEW</b><br/>
<b>smsto</b><br/>
<b>SMS / MMS&#160;android.intent.action.SENDTO</b><br/>
<b>mms<br/>mmsto</b><br/>
<b>audio/*<br/>application/ogg</b><br/>
<b>Music</b><br/>
<b>android.intent.action.VIEW</b><br/>
<b>file</b><br/>
<b>application/x-ogg<br/>application/itunes</b><br/>
<b>audio/mp3<br/>audio/x-mp3</b><br/>
<b>android.intent.action.VIEW</b><br/>
<b>http</b><br/>
<b>audio/mpeg<br/>audio/mp4<br/>audio/mp4a-latm</b><br/>
<b>vnd.android.cursor.dir/<br/>artistalbum<br/>vnd.android.cursor.dir/<br/>album<br/>vnd.android.cursor.dir/</b><br/>
<b>android.intent.action.PICK</b><br/>
<b>nowplaying<br/>vnd.android.cursor.dir/<br/>track<br/>nd.android.cursor.dir/<br/>playlist<br/>vnd.android.cursor.dir/<br/>video</b><br/>
<b>media/*<br/>audio/*</b><br/>
<b>android.intent.action.GET_CONTENT</b><br/>
<b>application/ogg<br/>application/x-ogg<br/>video/*</b><br/>
<hr/>
<a name=24></a><b>content</b><br/>
<b>Package</b><br/>
<b>android.intent.action.VIEW</b><br/>
<b>file</b><br/>
<b>Installer</b><br/>
<b>package</b><br/>
<b>file</b><br/>
<b>android.intent.action.PACKAGE_INSTALL</b><br/>
<b>http<br/>https</b><br/>
<b>android.intent.action.ALL_APPS</b><br/>
<b>android.settings.SETTINGS<br/>android.settings.WIRELESS_SETTINGS<br/>android.settings.AIRPLANE_MODE_SETTINGS<br/>android.settings.WIFI_SETTINGS<br/>android.settings.APN_SETTINGS<br/>android.settings.BLUETOOTH_SETTINGS<br/>android.settings.DATE_SETTINGS<br/>android.settings.LOCALE_SETTINGS</b><br/>
<b>Settings</b><br/>
<b>android.settings.INPUT_METHOD_SETTINGS<br/>com.android.settings.SOUND_SETTINGS<br/>com.android.settings.DISPLAY_SETTINGS<br/>android.settings.SECURITY_SETTING<br/>android.settings.LOCATION_SOURCE_SETTINGS<br/>android.settings.INTERNAL_STORAGE_SETTINGS<br/>android.settings.MEMORY_CARD_SETTINGS<br/>android.intent.action.SET_WALLPAPER</b><br/>
<b>Search</b><br/>
<b>android.intent.action.SEARCH</b><br/>
<b>query</b><br/>
<b>android.intent.action.SEARCH_LONG_PRESS</b><br/>
<b>Voice</b><br/>
<b>android.intent.action.VOICE_COMMAND</b><br/>
<b>Contacts Management</b><br/>
<b>Intent Action</b><br/>
<b>Description</b><br/>
<b>Starts an Activity that lets the user pick</b><br/>
<a href="http://developer.android.com/reference/android/provider/Contacts.Intents.html#ATTACH_IMAGE"><b>ATTACH_IMAGE</b></a><br/>
<b>a contact to attach an image to.</b><br/>
<b>Used</b><br/>
<a href="http://developer.android.com/reference/android/provider/Contacts.Intents.html#EXTRA_CREATE_DESCRIPTION"><b>EXTRA_CREATE_DESCRIPTION</b></a><br/>
<b>with&#160;<a href="http://developer.android.com/reference/android/provider/Contacts.Intents.html#SHOW_OR_CREATE_CONTACT">SHOW_OR_CREATE_CONTACT&#160;</a></b><b>to<br/>specify an exact description to be</b><br/>
<hr/>
<a name=25></a><b>shown when prompting user about<br/>creating a new contact.</b><br/>
<b>Used<br/>with&#160;<a href="http://developer.android.com/reference/android/provider/Contacts.Intents.html#SHOW_OR_CREATE_CONTACT">SHOW_OR_CREATE_CONTACT&#160;</a></b><b>to</b><br/>
<a href="http://developer.android.com/reference/android/provider/Contacts.Intents.html#EXTRA_FORCE_CREATE"><b>EXTRA_FORCE_CREATE</b></a><br/>
<b>force creating a new contact if no<br/>matching contact found.</b><br/>
<b>This is the intent that is fired when a</b><br/>
<a href="http://developer.android.com/reference/android/provider/Contacts.Intents.html#SEARCH_SUGGESTION_CLICKED"><b>SEARCH_SUGGESTION_CLICKED</b></a><br/>
<b>search suggestion is clicked on.</b><br/>
<b>This is the intent that is fired when a</b><br/>
<a href="http://developer.android.com/reference/android/provider/Contacts.Intents.html#SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED"><b>SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED&#160;</b></a><b>search suggestion for creating a</b><br/>
<b>contact is clicked on.</b><br/>
<b>This is the intent that is fired when a</b><br/>
<a href="http://developer.android.com/reference/android/provider/Contacts.Intents.html#SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED"><b>SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED</b></a><br/>
<b>search suggestion for dialing a number<br/>is clicked on.</b><br/>
<b>Takes as input a data URI with a mailto:</b><br/>
<a href="http://developer.android.com/reference/android/provider/Contacts.Intents.html#SHOW_OR_CREATE_CONTACT"><b>SHOW_OR_CREATE_CONTACT</b></a><br/>
<b>or tel: scheme.</b><br/>
<hr/>
<a name=26></a>Appendix B: Required Broadcast Intents<b>NOTE: this list is provisional, and will be<br/>updated in the future.</b><br/>
Intent Action<br/>
Description<br/>
Broadcast Action: This is broadcast once, after the<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_BOOT_COMPLETED">ACTION_BOOT_COMPLETED</a><br/>
system has finished booting.<br/>
Broadcast Action: This is broadcast once, when a<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_CALL_BUTTON">ACTION_CALL_BUTTON</a><br/>
call is received.<br/>
Broadcast Action: The &#34;Camera Button&#34; was<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_CAMERA_BUTTON">ACTION_CAMERA_BUTTON</a><br/>
pressed.<br/>
Broadcast Action: The current<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_CONFIGURATION_CHANGED">ACTION_CONFIGURATION_CHANGED</a><br/>
device&#160;<a href="http://developer.android.com/reference/android/content/res/Configuration.html">Configuration&#160;</a>(orientation, locale, etc) has<br/>changed.<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_DATE_CHANGED">ACTION_DATE_CHANGED</a><br/>
Broadcast Action: The date has changed.<br/>
Broadcast Action: Indicates low memory condition<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_DEVICE_STORAGE_LOW">ACTION_DEVICE_STORAGE_LOW</a><br/>
on the device<br/>
Broadcast Action: Indicates low memory condition<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_DEVICE_STORAGE_OK">ACTION_DEVICE_STORAGE_OK</a><br/>
on the device no longer exists<br/>
Broadcast Action: Wired Headset plugged in or<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_HEADSET_PLUG">ACTION_HEADSET_PLUG</a><br/>
unplugged.<br/>
Broadcast Action: An input method has been<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_INPUT_METHOD_CHANGED">ACTION_INPUT_METHOD_CHANGED</a><br/>
changed.<br/>
Broadcast Action: External media was removed<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_BAD_REMOVAL">ACTION_MEDIA_BAD_REMOVAL</a><br/>
from SD card slot, but mount point was not<br/>unmounted.<br/>
Broadcast Action: The &#34;Media Button&#34; was<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_BUTTON">ACTION_MEDIA_BUTTON</a><br/>
pressed.<br/>
Broadcast Action: External media is present, and<br/>being disk-checked The path to the mount point for<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_CHECKING">ACTION_MEDIA_CHECKING</a><br/>
the checking media is contained in the<br/>Intent.mData field.<br/>
Broadcast Action: User has expressed the desire to<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_EJECT">ACTION_MEDIA_EJECT</a><br/>
remove the external storage media.<br/>
Broadcast Action: External media is present and<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_MOUNTED">ACTION_MEDIA_MOUNTED</a><br/>
mounted at its mount point.<br/>
Broadcast Action: External media is present, but is<br/>using an incompatible fs (or is blank) The path to<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_NOFS">ACTION_MEDIA_NOFS</a><br/>
the mount point for the checking media is<br/>contained in the Intent.mData field.<br/>
Broadcast Action: External media has been<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_REMOVED">ACTION_MEDIA_REMOVED</a><br/>
removed.<br/>
Broadcast Action: The media scanner has finished<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_SCANNER_FINISHED">ACTION_MEDIA_SCANNER_FINISHED</a><br/>
scanning a directory.<br/>
Broadcast Action: Request the media scanner to<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_SCANNER_SCAN_FILE">ACTION_MEDIA_SCANNER_SCAN_FILE</a><br/>
scan a file and add it to the media database.<br/>
<hr/>
<a name=27></a>Broadcast Action: The media scanner has started<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_SCANNER_STARTED">ACTION_MEDIA_SCANNER_STARTED</a><br/>
scanning a directory.<br/>
Broadcast Action: External media is unmounted<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_SHARED">ACTION_MEDIA_SHARED</a><br/>
because it is being shared via USB mass storage.<br/>
Broadcast Action: External media is present but<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_UNMOUNTABLE">ACTION_MEDIA_UNMOUNTABLE</a><br/>
cannot be mounted.<br/>
Broadcast Action: External media is present, but<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_UNMOUNTED">ACTION_MEDIA_UNMOUNTED</a><br/>
not mounted at its mount point.<br/>
Broadcast Action: An outgoing call is about to be<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_NEW_OUTGOING_CALL">ACTION_NEW_OUTGOING_CALL</a><br/>
placed.<br/>
Broadcast Action: A new application package has<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_ADDED">ACTION_PACKAGE_ADDED</a><br/>
been installed on the device.<br/>
Broadcast Action: An existing application package<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_CHANGED">ACTION_PACKAGE_CHANGED</a><br/>
has been changed (e.g. a component has been<br/>enabled or disabled.<br/>
Broadcast Action: The user has cleared the data of<br/>a package. This should be preceded<br/>by&#160;<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_RESTARTED">ACTION_PACKAGE_RESTARTED, after which</a><br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_DATA_CLEARED">ACTION_PACKAGE_DATA_CLEARED</a><br/>
all of its persistent data is erased and this<br/>broadcast sent. Note that the cleared package<br/>does&#160;<i>not&#160;</i>receive this broadcast. The data contains<br/>the name of the package.<br/>
Broadcast Action: An existing application package<br/>has been removed from the device. The data<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_REMOVED">ACTION_PACKAGE_REMOVED</a><br/>
contains the name of the package. The package<br/>that is being installed does&#160;<i>not&#160;</i>receive this Intent.<br/>
Broadcast Action: A new version of an application<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_REPLACED">ACTION_PACKAGE_REPLACED</a><br/>
package has been installed, replacing an existing<br/>version that was previously installed.<br/>
Broadcast Action: The user has restarted a<br/>package, and all of its processes have been killed.<br/>All runtime state associated with it (processes,<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_RESTARTED">ACTION_PACKAGE_RESTARTED</a><br/>
alarms, notifications, etc) should be removed. Note<br/>that the restarted package does&#160;<i>not&#160;</i>receive this<br/>broadcast. The data contains the name of the<br/>package.<br/>
Broadcast Action: Some content providers have<br/>parts of their namespace where they publish new<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_PROVIDER_CHANGED">ACTION_PROVIDER_CHANGED</a><br/>
events or items that the user may be especially<br/>interested in.<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_SCREEN_OFF">ACTION_SCREEN_OFF</a><br/>
Broadcast Action: Sent after the screen turns off.<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_SCREEN_ON">ACTION_SCREEN_ON</a><br/>
Broadcast Action: Sent after the screen turns on.<br/>
Broadcast Action: A user ID has been removed<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_UID_REMOVED">ACTION_UID_REMOVED</a><br/>
from the system.<br/>
Broadcast Action: The device has entered USB<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_UMS_CONNECTED">ACTION_UMS_CONNECTED</a><br/>
Mass Storage mode.<br/>
<hr/>
<a name=28></a>Broadcast Action: The device has exited USB<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_UMS_DISCONNECTED">ACTION_UMS_DISCONNECTED</a><br/>
Mass Storage mode.<br/>
Broadcast Action: Sent when the user is present<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_USER_PRESENT">ACTION_USER_PRESENT</a><br/>
after device wakes up (e.g when the keyguard is<br/>gone).<br/>
Broadcast Action: The current system wallpaper<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_WALLPAPER_CHANGED">ACTION_WALLPAPER_CHANGED</a><br/>
has changed.<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_TIME_CHANGED">ACTION_TIME_CHANGED</a><br/>
Broadcast Action: The time was set.<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_TIME_TICK">ACTION_TIME_TICK</a><br/>
Broadcast Action: The current time has changed.<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_TIMEZONE_CHANGED">ACTION_TIMEZONE_CHANGED</a><br/>
Broadcast Action: The timezone has changed.<br/>
Broadcast Action: The charging state, or charge<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_BATTERY_CHANGED">ACTION_BATTERY_CHANGED</a><br/>
level of the battery has changed.<br/>
Broadcast Action: Indicates low battery condition<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_BATTERY_LOW">ACTION_BATTERY_LOW</a><br/>
on the device. This broadcast corresponds to the<br/>&#34;Low battery warning&#34; system dialog.<br/>
Broadcast Action: Indicates the battery is now okay<br/>after being low. This will be sent<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_BATTERY_OKAY">ACTION_BATTERY_OKAY</a><br/>
after&#160;<a href="/tmp/1266564852215-0/../../reference/android/content/Intent.html#ACTION_BATTERY_LOW">ACTION_BATTERY_LOW&#160;</a>once the battery<br/>has gone back up to an okay state.<br/>
<b>Network State</b><br/>
Intent Action<br/>
Description<br/>
Broadcast intent action indicating that the<br/>
<a href="http://developer.android.com/reference/android/net/wifi/WifiManager.html#NETWORK_STATE_CHANGED_ACTION">NETWORK_STATE_CHANGED_ACTION</a><br/>
state of Wi-Fi connectivity has changed.<br/>
Broadcast intent action indicating that the<br/>
<a href="http://developer.android.com/reference/android/net/wifi/WifiManager.html#RSSI_CHANGED_ACTION">RSSI_CHANGED_ACTION</a><br/>
RSSI (signal strength) has changed.<br/>
Broadcast intent action indicating that a<br/>
<a href="http://developer.android.com/reference/android/net/wifi/WifiManager.html#SUPPLICANT_STATE_CHANGED_ACTION">SUPPLICANT_STATE_CHANGED_ACTION</a><br/>
connection to the supplicant has been<br/>established or lost.<br/>
Broadcast intent action indicating that Wi-Fi<br/>
<a href="http://developer.android.com/reference/android/net/wifi/WifiManager.html#WIFI_STATE_CHANGED_ACTION">WIFI_STATE_CHANGED_ACTION</a><br/>
has been enabled, disabled, enabling,<br/>disabling, or unknown.<br/>
The network IDs of the configured networks<br/>
<a href="http://developer.android.com/reference/android/net/wifi/WifiManager.html#NETWORK_IDS_CHANGED_ACTION">NETWORK_IDS_CHANGED_ACTION</a><br/>
could have changed.<br/>
Broadcast intent action indicating that the<br/>
<a href="http://developer.android.com/reference/android/net/ConnectivityManager.html#ACTION_BACKGROUND_DATA_SETTING_CHANGED">ACTION_BACKGROUND_DATA_SETTING_CHANGED&#160;</a>setting for background data usage has<br/>
changed values.<br/>
Broadcast intent indicating that a change in<br/>
<a href="http://developer.android.com/reference/android/net/ConnectivityManager.html#CONNECTIVITY_ACTION">CONNECTIVITY_ACTION</a><br/>
network connectivity has occurred.<br/>
Broadcast Action: The user has switched the<br/>
<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_AIRPLANE_MODE_CHANGED">ACTION_AIRPLANE_MODE_CHANGED</a><br/>
phone into or out of Airplane Mode.<br/>
<hr/>
<a name=29></a><hr/>
<a name=30></a>Appendix C: Future Considerations&#160;This appendix clarifies certain portions of this Android<br/>1.6 Compatibility Definition, and in some cases discusses anticipated or planned changes intended for a<br/>future version of the Android platform. This appendix is for informational and planning purposes only, and<br/>is not part of the Compatibility Definition for Android 1.6.<br/>
<b>1. Non-telephone Devices</b><br/>
Android 1.6 is intended exclusively for telephones; telephony functionality is not optional. Future versions<br/>of the Android platform are expected to make telephony optional (and thus allow for non-phone Android<br/>devices), but only phones are compatible with Android 1.6.<br/>
<b>2. Bluetooth Compatibility</b><br/>
The Android 1.6 release of Android does not support Bluetooth APIs, so from a compatibility perspective<br/>Bluetooth does not impose any considerations for this version of the platform. However, a future version<br/>of Android will introduce Bluetooth APIs.&#160;At that point, supporting Bluetooth will become mandatory for<br/>compatibility.<br/>
Consequently, we strongly recommend that Android 1.6 devices include Bluetooth, so that they will be<br/>compatible with future versions of Android that require Bluetooth.<br/>
<b>3. Required Hardware Components</b><br/>
All hardware components in Section 8 (including WiFi, magnetometer/compass, accelerometer, etc.) are<br/>required and may not be omitted.&#160;Future versions of Android are expected to make some (but not all) of<br/>these components optional, in tandem with corresponding tools for third-party developers to handle these<br/>changes.<br/>
<b>4. Sample Applications</b><br/>
The Compatibility Definition Document for a future version of Android will include a more extensive and<br/>representative list of applications than the ones listed in Section 4, above. For Android 1.6, the<br/>applications listed in Section 4 must be tested.<br/>
<b>5. Touch Screens</b><br/>
Future versions of the Compatibility Definition may or may not allow for devices to omit touchscreens.<br/>However, currently much of the Android framework implementation assumes the existence of a<br/>touchscreen; omitting a touchscreen would break substantially all current third-party Android applications,<br/>so in Android 1.6 a touchscreen is required for compatibility.<br/>
<hr/>
<a name=31></a><b>6. Performance</b><br/>
Future versions of CTS will also measure the CPU utilization and performance of the following<br/>components of an implementation:<br/>
•&#160;2D graphics<br/>•&#160;3D graphics<br/>•&#160;Video playback<br/>•&#160;Audio playback<br/>•&#160;Bluetooth A2DP playback<br/>
<hr/>
<a name="outline"></a><h1>Document Outline</h1>
<ul>
<li><a href="android-1.6-cdd.html#4">1. Introduction</a></li>
<li><a href="android-1.6-cdd.html#4">2. Resources</a></li>
<li><a href="android-1.6-cdd.html#5">3. Software</a>
<ul>
<li><a href="android-1.6-cdd.html#5">3.1. Managed API Compatibility</a></li>
<li><a href="android-1.6-cdd.html#6">3.2. Soft API Compatibility</a>
<ul>
<li><a href="android-1.6-cdd.html#6">3.2.1. Permissions</a></li>
<li><a href="android-1.6-cdd.html#6">3.2.2. Build Parameters</a></li>
<li><a href="android-1.6-cdd.html#8">3.2.3. Intent Compatibility</a>
<ul>
<li><a href="android-1.6-cdd.html#8">3.2.3.1. Core Application Intents</a></li>
<li><a href="android-1.6-cdd.html#8">3.2.3.2. Intent Overrides</a></li>
<li><a href="android-1.6-cdd.html#8">3.2.3.3. Intent Namespaces</a></li>
<li><a href="android-1.6-cdd.html#9">3.2.3.4. Broadcast Intents</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="android-1.6-cdd.html#9">3.3. Native API Compatibility</a></li>
<li><a href="android-1.6-cdd.html#9">3.4. Web API Compatibility</a></li>
<li><a href="android-1.6-cdd.html#10">3.5. API Behavioral Compatibility</a></li>
<li><a href="android-1.6-cdd.html#10">3.6. API Namespaces</a></li>
<li><a href="android-1.6-cdd.html#11">3.7. Virtual Machine Compatibility</a></li>
<li><a href="android-1.6-cdd.html#11">3.8. User Interface Compatibility</a>
<ul>
<li><a href="android-1.6-cdd.html#11">3.8.1. Widgets</a></li>
<li><a href="android-1.6-cdd.html#12">3.8.2. Notifications</a></li>
<li><a href="android-1.6-cdd.html#12">3.8.3. Search</a></li>
<li><a href="android-1.6-cdd.html#12">3.8.4. Toasts</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="android-1.6-cdd.html#12">4. Reference Software Compatibility</a></li>
<li><a href="android-1.6-cdd.html#13">5. Application Packaging Compatibility</a></li>
<li><a href="android-1.6-cdd.html#13">6. Multimedia Compatibility</a></li>
<li><a href="android-1.6-cdd.html#14">7. Developer Tool Compatibility</a></li>
<li><a href="android-1.6-cdd.html#15">8. Hardware Compatibility</a>
<ul>
<li><a href="android-1.6-cdd.html#15">8.1. Display</a>
<ul>
<li><a href="android-1.6-cdd.html#15">8.1.1. Standard Display Configurations</a></li>
<li><a href="android-1.6-cdd.html#16">8.1.2. Non-Standard Display Configurations</a></li>
<li><a href="android-1.6-cdd.html#16">8.1.3. Display Metrics</a></li>
</ul>
</li>
<li><a href="android-1.6-cdd.html#16">8.2. Keyboard</a></li>
<li><a href="android-1.6-cdd.html#16">8.3. Non-touch Navigation</a></li>
<li><a href="android-1.6-cdd.html#17">8.4. Screen Orientation</a></li>
<li><a href="android-1.6-cdd.html#17">8.5. Touchscreen input</a></li>
<li><a href="android-1.6-cdd.html#17">8.6. USB</a></li>
<li><a href="android-1.6-cdd.html#17">8.7. Navigation keys</a></li>
<li><a href="android-1.6-cdd.html#17">8.8. WiFi</a></li>
<li><a href="android-1.6-cdd.html#18">8.9. Camera</a>
<ul>
<li><a href="android-1.6-cdd.html#18">8.9.1. Non-Autofocus Cameras</a></li>
</ul>
</li>
<li><a href="android-1.6-cdd.html#18">8.10. Accelerometer</a></li>
<li><a href="android-1.6-cdd.html#19">8.11. Compass</a></li>
<li><a href="android-1.6-cdd.html#19">8.12. GPS</a></li>
<li><a href="android-1.6-cdd.html#19">8.13. Telephony</a></li>
<li><a href="android-1.6-cdd.html#19">8.14. Volume controls</a></li>
</ul>
</li>
<li><a href="android-1.6-cdd.html#19">9. Performance Compatibility</a></li>
<li><a href="android-1.6-cdd.html#20">10. Security Model Compatibility</a>
<ul>
<li><a href="android-1.6-cdd.html#20">10.1. Permissions</a></li>
<li><a href="android-1.6-cdd.html#20">10.2. User and Process Isolation</a></li>
<li><a href="android-1.6-cdd.html#21">10.3. Filesystem Permissions</a></li>
</ul>
</li>
<li><a href="android-1.6-cdd.html#21">11. Compatibility Test Suite</a></li>
<li><a href="android-1.6-cdd.html#21">12. Contact Us</a></li>
<li><a href="android-1.6-cdd.html#22">Appendix A: Required Application Intents</a>
<ul>
<li><a href="android-1.6-cdd.html#30">1. Non-telephone Devices</a></li>
<li><a href="android-1.6-cdd.html#30">2. Bluetooth Compatibility</a></li>
<li><a href="android-1.6-cdd.html#30">3. Required Hardware Components</a></li>
<li><a href="android-1.6-cdd.html#30">4. Sample Applications</a></li>
<li><a href="android-1.6-cdd.html#30">5. Touch Screens</a></li>
<li><a href="android-1.6-cdd.html#31">6. Performance</a></li>
</ul>
</li>
</ul>
<hr/>
</body>
</html>