Android Compatibility Definition: Android 1.6 Android 1.6 r2 Google Inc. compatibility@android.
Table of Contents 1. Introduction ................................................................................................................... 4 2. Resources ...................................................................................................................... 4 3. Software ......................................................................................................................... 5 3.1. Managed API Compatibility ...........................................................
12. Contact Us ................................................................................................................. 21 Appendix A: Required Application Intents ................................................................... 22 Appendix B: Required Broadcast Intents ....................................................................... 0 Appendix C: Future Considerations................................................................................ 0 1. Non-telephone Devices ..............
1. Introduction This document enumerates the requirements that must be met in order for mobile phones to be compatible with Android 1.6. This definition assumes familiarity with the Android Compatibility Program [Resources, 1]. The use of "must", "must not", "required", "shall", "shall not", "should", "should not", "recommended", "may" and "optional" is per the IETF standard defined in RFC2119 [Resources, 2].
13. Dalvik Virtual Machine specification, found in the dalvik/docs directory of a source code checkout; also available at http://android.git.kernel.org/?p=platform/ dalvik.git;a=tree;f=docs;h=3e2ddbcaf7f370246246f9f03620a7caccbfcb12;hb=HEAD 14. AppWidgets: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html 15. Notifications: http://developer.android.com/guide/topics/ui/notifiers/notifications.html 16. Status Bar icon style guide: http://developer.android.
Device implementations MUST NOT omit any managed APIs, alter API interfaces or signatures, deviate from the documented behavior, or include no-ops, except where specifically allowed by this Compatibility Definition. 3.2. Soft API Compatibility In addition to the managed APIs from Section 3.1, Android also includes a significant runtime-only "soft" API, in the form of such things such as Intents, permissions, and similar aspects of Android applications that cannot be enforced at application compile time.
and/or carrier who sold the device. There are no requirements on the specific format of this field, except that it MUST NOT be null or the empty string (""). android.os.Build.DEVICE A value chosen by the device implementer identifying the specific configuration or revision of the body (sometimes called "industrial design") of the device. There are no requirements on the specific format of this field, except that it MUST NOT be null or the empty string (""). android.os.Build.
3.2.3. Intent Compatibility Android uses Intents to achieve loosely-coupled integration between applications. This section describes requirements related to the Intent patterns that MUST be honored by device implementations. By "honored", it is meant that the device implementer MUST provide an Android Activity, Service, or other component that specifies a matching Intent filter and binds to and implements correct behavior for each specified Intent pattern. 3.2.3.1.
3.2.3.4. Broadcast Intents Third-party applications rely on the platform to broadcast certain Intents to notify them of changes in the hardware or software environment. Android-compatible devices MUST broadcast the public broadcast Intents in response to appropriate system events. A list of required Broadcast Intents is provided in Appendix B; however, note that the SDK may define additional broadcast intents, which MUST also be honored. 3.3.
◦ The "" string MUST be the same as the value for android.os.Build.MODEL ◦ The "" string MUST be the same as the value for android.os.Build.ID. ◦ The "" and "" strings SHOULD follow the usual conventions for country code and language, and SHOULD refer to the curent locale of the device at the time of the request. Implementations MAY ship a custom user agent string in the standalone Browser application.
• Device implementers MAY modify the underlying implementation of the APIs, but such modifications MUST NOT impact the stated behavior and Java-language signature of any publicly exposed APIs. • Device implementers MUST NOT add any publicly exposed elements (such as classes or interfaces, or fields or methods to existing classes or interfaces) to the APIs above. A "publicly exposed element" is any construct which is not decorated with the "@hide" marker in the upstream Android source code.
3.8.2. Notifications Android includes APIs that allow developers to notify users of notable events [Resources, 15]. Device implementers MUST provide support for each class of notification so defined; specifically: sounds, vibration, light and status bar. Additionally, the implementation MUST correctly render and all resources (icons, sound files, etc.) provided for in the APIs [Resources, 7], or in the Status Bar icon style guide [Resources, 16].
considered compatible. 5. Application Packaging Compatibility Device implementations MUST install and run Android ".apk" files as generated by the "aapt" tool included in the official Android SDK [Resources, 20]. Devices implementations MUST NOT extend either the .apk, Android Manifest, or Dalvik bytecode formats in such a way that would prevent those files from installing and running correctly on other compatible devices.
Support for ringtone formats RTTTL/RTX, OTA, and iMelody Ogg Vorbis .ogg X PCM X and iMelody (.imy) 8- and 16-bit linear PCM (rates up WAVE to limit of hardware) Image Name JPEG Encoder Decoder Details X GIF PNG X Files Supported base+progressive X X BMP X X Video Name H.263 Encoder Decoder Details X X Files Supported 3GPP (.3gp) files H.264 X 3GPP (.3gp) and MPEG-4 (.mp4) files MPEG4 SP X 3GPP (.3gp) file 7.
• Monkey [Resources, 23] Device implementations MUST include the Monkey framework, and make it available for applications to use. 8. Hardware Compatibility Android is intended to support device implementers creating innovative form factors and configurations. At the same time Android developers expect certain hardware, sensors and APIs across all Android device. This section lists the hardware features that all Android 1.6 compatible devices must support. In Android 1.
• Device implementations MUST interpret any resources that are present as defaulting to "medium" (known as "mdpi" in the SDK documentation.) • When operating on a "low" density screen, device implementations MUST scale down medium/ mdpi assets by a factor of 0.75. • When operating on a "high" density screen, device implementations MUST scale up medium/ mdpi assets by a factor of 1.5.
8.4. Screen Orientation Compatible devices MUST support dynamic orientation by applications to either portrait or landscape screen orientation. That is, the device must respect the application's request for a specific screen orientation. Device implementations MAY select either portrait or landscape orientation as the default. Devices MUST report the correct value for the device's current orientation, whenever queried via the android.content.res.Configuration.orientation, android.view.Display.
8.9. Camera Device implementations MUST include a camera. The included camera: • MUST have a resolution of at least 2 megapixels • SHOULD have either hardware auto-focus, or software auto-focus implemented in the camera driver (transparent to application software) • MAY have fixed-focus or EDOF (extended depth of field) hardware • MAY include a flash. If the Camera includes a flash, the flash lamp MUST NOT be lit while an android.hardware.Camera.
8.11. Compass Device implementations MUST include a 3-axis compass and MUST be able to deliver events at at least 10 Hz. The coordinate system used by the compass MUST comply with the Android sensor coordinate system as defined in the Android API [Resources, 28]. 8.12. GPS Device implementations MUST include a GPS, and SHOULD include some form of "assisted GPS" technique to minimize GPS lock-on time. 8.13.
This is tested by CTS. Application Launch Time The following applications should launch within the specified time. Browser: less than 1300ms MMS/SMS: less than 700ms AlarmClock: less than 650ms Multiple applications will be launched. Re-launching the Simultaneous first application should Applications complete taking less than the original launch time.
10.3. Filesystem Permissions Device implementations MUST support the Android file access permissions model as defined in as defined in the Security and Permissions reference [Resources, 29]. 11. Compatibility Test Suite Device implementations MUST pass the Android Compatibility Test Suite (CTS) [Resources, 3] available from the Android Open Source Project, using the final shipping software on the device.
Appendix A: Required Application Intents NOTE: this list is provisional, and will be updated in the future. Application Actions Browser Camera Schemes MIME Types android.intent.action.VIEW http https (none) text/plain text/html application/xhtml+xml application/ vnd.wap.xhtml+xml android.intent.action.WEB_SEARCH (none) http https (none) android.media.action.IMAGE_CAPTURE android.media.action.STILL_IMAGE_CAMERA android.media.action.VIDEO_CAMERA android.media.action.VIDEO_CAPTURE vnd.android.
Email android.intent.action.PICK vnd.android.cursor.dir/ person vnd.android.cursor.dir/ phone vnd.android.cursor.dir/ postal-address android.intent.action.GET_CONTENT vnd.android.cursor.item/ person vnd.android.cursor.item/ phone vnd.android.cursor.item/ postal-address android.intent.action.SEND text/plain image/* video/* android.intent.action.VIEW android.intent.action.SENDTO android.intent.action.VIEW SMS / MMS android.intent.action.SENDTO Music android.intent.action.VIEW android.intent.action.
Package Installer android.intent.action.VIEW content file package android.intent.action.PACKAGE_INSTALL file http https android.intent.action.ALL_APPS Settings android.settings.SETTINGS android.settings.WIRELESS_SETTINGS android.settings.AIRPLANE_MODE_SETTINGS android.settings.WIFI_SETTINGS android.settings.APN_SETTINGS android.settings.BLUETOOTH_SETTINGS android.settings.DATE_SETTINGS android.settings.LOCALE_SETTINGS android.settings.INPUT_METHOD_SETTINGS com.android.settings.SOUND_SETTINGS com.
shown when prompting user about creating a new contact. EXTRA_FORCE_CREATE Used with SHOW_OR_CREATE_CONTACT to force creating a new contact if no matching contact found. SEARCH_SUGGESTION_CLICKED This is the intent that is fired when a search suggestion is clicked on. This is the intent that is fired when a SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED search suggestion for creating a contact is clicked on.
Appendix B: Required Broadcast IntentsNOTE: this list is provisional, and will be updated in the future. Intent Action Description ACTION_BOOT_COMPLETED Broadcast Action: This is broadcast once, after the system has finished booting. ACTION_CALL_BUTTON Broadcast Action: This is broadcast once, when a call is received. ACTION_CAMERA_BUTTON Broadcast Action: The "Camera Button" was pressed.
ACTION_MEDIA_SCANNER_STARTED Broadcast Action: The media scanner has started scanning a directory. ACTION_MEDIA_SHARED Broadcast Action: External media is unmounted because it is being shared via USB mass storage. ACTION_MEDIA_UNMOUNTABLE Broadcast Action: External media is present but cannot be mounted. ACTION_MEDIA_UNMOUNTED Broadcast Action: External media is present, but not mounted at its mount point. ACTION_NEW_OUTGOING_CALL Broadcast Action: An outgoing call is about to be placed.
ACTION_UMS_DISCONNECTED Broadcast Action: The device has exited USB Mass Storage mode. ACTION_USER_PRESENT Broadcast Action: Sent when the user is present after device wakes up (e.g when the keyguard is gone). ACTION_WALLPAPER_CHANGED Broadcast Action: The current system wallpaper has changed. ACTION_TIME_CHANGED Broadcast Action: The time was set. ACTION_TIME_TICK Broadcast Action: The current time has changed. ACTION_TIMEZONE_CHANGED Broadcast Action: The timezone has changed.
Appendix C: Future Considerations This appendix clarifies certain portions of this Android 1.6 Compatibility Definition, and in some cases discusses anticipated or planned changes intended for a future version of the Android platform. This appendix is for informational and planning purposes only, and is not part of the Compatibility Definition for Android 1.6. 1. Non-telephone Devices Android 1.6 is intended exclusively for telephones; telephony functionality is not optional.
6.