Android 1.6 兼容性定义

Android 兼容性定义:Android 1.6
安卓1.6r2
谷歌公司
兼容性@android.com

目录
1. 简介................................................................ ...................................................... ...................... 4
2. 资源................................................................ ...................................................... ........................ 4
3. 软件................................................................ ...................................................... ...................................... 5
3.1.托管 API 兼容性................................................................ ...................................................... 5
3.2.软 API 兼容性................................................................ ...................................................... 6
3.2.1.权限................................................ ...................................................... ... 6
3.2.2.构建参数................................................ ...................................................... 6
3.2.3.意图兼容性................................................ ...................................................... 8
3.2.3.1.核心应用意图................................................................ ...................................... 8
3.2.3.2.意图覆盖................................................ ...................................................... 8
3.2.3.3.意图命名空间................................................ ...................................................... 8
3.2.3.4.广播意图................................................ ...................................... 9
3.3.本机 API 兼容性................................................................ ................................................ 9
3.4. Web API 兼容性................................................................ ...................................................... 9
3.5. API 行为兼容性...................................................... ...................................... 10
3.6. API 命名空间................................................ ...................................................... . 10
3.7.虚拟机兼容性................................................................ ...................................... 11
3.8.用户界面兼容性................................................................ ...................................... 11

3.8.1.小部件................................................ ...................................................... ........ 11
3.8.2.通知................................................................ ...................................................... 12
3.8.3.搜索 ................................................. ...................................................... …………12
3.8.4.祝酒................................................ ...................................................... …………12

4. 参考软件兼容性................................................ ...................................... 12
5. 应用程序封装兼容性................................................................ ...................................... 13
6. 多媒体兼容性...................................................... ...................................................... 13
7. 开发工具兼容性................................................................ ...................................................... 14
8. 硬件兼容性................................................................ ...................................................... 15
8.1.展示 ................................................. ...................................................... ....................... 15
8.1.1.标准显示配置................................................................ ...................... 15
8.1.2.非标准显示配置 ................................................ ............ 16
8.1.3.显示指标................................................ ...................................................... 16

8.2.键盘 ................................................. ...................................................... ............ 16
8.3.非触摸式导航................................................................ ...................................................... 16
8.4.屏幕方向................................................ ...................................................... 17
8.5。触摸屏输入................................................ ...................................................... 17
8.6。 USB ................................................. ...................................................... ............ 17
8.7.导航键................................................ ...................................................... .. 17
8.8.无线上网 ................................................. ...................................................... ............ 17
8.9。相机 ................................................. ...................................................... ............ 18
8.9.1.非自动对焦相机................................................ ...................................... 18
8.10。加速度计................................................ ...................................................... .. 18
8.11。指南针................................................ ...................................................... ...... 19
8.12.全球定位系统 ................................................. ...................................................... ................................... 19
8.13。电话................................................ ...................................................... ...... 19
8.14。音量控制................................................ ...................................................... 19 号

9. 性能兼容性...................................................... ...................................................... 19
10. 安全模型兼容性................................................................ ...................................... 20
10.1.权限................................................ ...................................................... ...... 20
10.2.用户和进程隔离...................................................... ...................................... 20
10.3.文件系统权限................................................................ ...................................... 21
11. 兼容性测试套件................................................ ...................................................... 21

12. 联系我们................................................ ...................................................... ...................... 21
附录 A:所需的申请意向................................................................ ...................................... 22
附录 B:所需的广播意图................................................................ ...................................... 0
附录 C:未来的考虑因素................................................................ ...................................... 0

1. 非电话设备................................................................ ...................................................... 30
2. 蓝牙兼容性................................................ ...................................................... 30
3. 所需的硬件组件................................................................ ...................................... 30
4. 示例应用程序................................................................ ...................................................... 30
5. 触摸屏................................................ ...................................................... ...... 30
6. 性能...................................................... ...................................................... ............ 31

一、简介
本文件列举了移动电话必须满足的要求
兼容安卓1.6。此定义假设您熟悉 Android 兼容性计划
[资源,1]。
使用“必须”、“不得”、“要求”、“应”、“不得”、“应该”、“不应该”、“建议”、
“可以”和“可选”符合 RFC2119 中定义的 IETF 标准 [参考资料,2]。
如本文档中所使用,“设备实施者”或“实施者”是开发产品的个人或组织
运行 Android 1.6 的硬件/软件解决方案。 “设备实现”或“实现”是
如此开发的硬件/软件解决方案。
要被视为与 Android 1.6 兼容,设备实现:
1. 必须满足本兼容性定义中提出的要求,包括任何文档
通过引用合并。
2. 必须通过 Android 兼容性测试套件 (CTS),该测试套件是 Android Open 的一部分
源项目[资源,3]。 CTS 测试本节中概述的大多数(但不是全部)组件
文档。
如果此定义或 CTS 未提及、不明确或不完整,则由设备负责
实施者确保与现有实施的兼容性。为此,Android开放
源项目 [参考资料, 4] 既是 Android 的参考实现,也是首选实现。设备
强烈鼓励实施者将其实施基于“上游”源代码
可从 Android 开源项目获取。虽然假设某些组件可以更换
对于替代实现,强烈建议不要这样做,因为通过 CTS 测试将变得
困难得多。实施者有责任确保行为完全兼容
标准 Android 实现,包括兼容性测试套件。
2. 资源
此兼容性定义参考了可在此处获取的许多资源。
1. Android 兼容性计划概述: https://sites.google.com/a/android.com/compatibility/
怎么运行的
2. IETF RFC2119 要求级别: http://www.ietf.org/rfc/rfc2119.txt
3.兼容性测试套件: http://sites.google.com/a/android.com/compatibility/compatibility-test-
套件--cts
4.Android开源项目: http://source.android.com/
5. API定义和文档: http://developer.android.com/reference/packages.html
6.内容提供商: http://code.google.com/android/reference/android/provider/package-
摘要.html
7. 可用资源: http://code.google.com/android/reference/available-resources.html
8. Android 清单文件: http://code.google.com/android/devel/bblocks-manifest.html
9.Android权限参考: http://developer.android.com/reference/android/
Manifest.permission.html
10.构建常量: http://developer.android.com/reference/android/os/Build.html
11.Web视图: http://developer.android.com/reference/android/webkit/WebView.html
12. Gears 浏览器扩展: http://code.google.com/apis/gears/

13. Dalvik虚拟机规范,可在源代码的dalvik/docs目录中找到
查看;也可以在http://android.git.kernel.org/?p=platform/上找到
dalvik.git;a=tree;f=docs;h=3e2ddbcaf7f370246246f9f03620a7caccbfcb12;hb=HEAD

14.应用程序小部件: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
15. 通知: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
16.状态栏图标样式指南: http://developer.android.com/guide/practices/ui_guideline
/icon_design.html#statusbarstruction
17.搜索管理器: http://developer.android.com/reference/android/app/SearchManager.html
18.吐司: http://developer.android.com/reference/android/widget/Toast.html
19. Android 应用程序: http://code.google.com/p/apps-for-android
20. Android apk文件说明: http://developer.android.com/guide/topics/fundamentals.html
21.Android调试桥(adb): http://code.google.com/android/reference/adb.html
22.Dalvik调试监控服务(ddms): http://code.google.com/android/reference/ddms.html
23.猴子: http://developer.android.com/guide/developing/tools/monkey.html
24. 显示独立文档:
25.配置常量: http://developer.android.com/reference/android/content/res/
配置.html
26.显示指标: http://developer.android.com/reference/android/util/DisplayMetrics.html
27.相机: http://developer.android.com/reference/android/hardware/Camera.html
28.传感器坐标空间: http://developer.android.com/reference/android/hardware/
SensorEvent.html
29.Android安全和权限参考: http://developer.android.com/guide/topics/security/
安全.html
其中许多资源直接或间接源自Android 1.6 SDK,并将被
功能上与该 SDK 文档中的信息相同。在任何情况下,如果这
兼容性定义与SDK文档不一致,视为SDK文档
权威性。上述参考文献中提供的任何技术细节均被纳入考虑
成为此兼容性定义的一部分。
3、软件
Android 平台包括一组托管(“硬”)API 和一组所谓的“软”API
例如 Intent 系统、本机代码 API 和 Web 应用程序 API。本节详细介绍了硬性和
兼容性不可或缺的软 API,以及某些其他相关技术和用户界面
行为。设备实现必须符合本节中的所有要求。
3.1.托管 API 兼容性
托管(基于 Dalvik)执行环境是 Android 应用程序的主要工具。这
Android 应用程序编程接口 (API) 是一组暴露给 Android 平台的接口
在托管 VM 环境中运行的应用程序。设备实现必须提供完整的
Android 公开的任何记录的 API 的实现,包括所有记录的行为
1.6 SDK,如:
1. 核心 Android Java 语言 API [资源,5]。
2. 内容提供商[资源,6]。
3. 资源[资源,7]。
4. AndroidManifest.xml 属性和元素 [参考资料,8]。

设备实现不得省略任何托管 API、更改 API 接口或签名、偏离
来自记录的行为,或包括无操作,除非本兼容性特别允许
定义。
3.2.软 API 兼容性
除了第 3.1 节中的托管 API 之外,Android 还包含一个重要的仅运行时“软”
API,以意图、权限和 Android 应用程序的类似方面等形式存在
不能在应用程序编译时强制执行。本节详细介绍“软”API 和系统
与 Android 1.6 兼容所需的行为。设备实现必须满足所有
本节提出的要求。
3.2.1.权限
设备实现者必须支持并强制执行所有权限常量,如
权限参考页面[参考资料,9]。请注意,第 10 节列出了与以下相关的附加要求:
Android 安全模型。
3.2.2.构建参数
Android API 包括 android.os.Build 类[资源,10]上的许多常量,它们是
旨在描述当前设备。跨设备提供一致、有意义的值
实现中,下表包含对这些值的格式的附加限制
设备实现必须符合。
范围
评论
当前执行的Android系统的版本,以人的方式-
android.os.Build.VERSION.RELEASE
可读格式。对于 Android 1.6,此字段必须具有字符串值
“1.6”。
当前执行的Android系统的版本,格式为
android.os.Build.VERSION.SDK
可供第三方应用程序代码访问。对于 Android 1.6,该字段
必须具有整数值 4。
由设备实现者选择的指定特定构建的值
当前正在执行的 Android 系统的文件,采用人类可读的格式。
该值不得重复用于最终交付的不同版本
android.os.Build.VERSION.INCRMENTAL 用户。该字段的典型用途是指示哪个版本号或
源代码控制更改标识符用于生成构建。那里
对这个字段的具体格式没有要求,只是
不得为 null 或空字符串 ("")。
由设备实现者选择的值,用于标识特定的内部
设备使用的硬件,采用人类可读的格式。可能的用途
android.os.Build.BOARD
该字段的目的是表明董事会的具体修订
设备。该字段的具体格式没有要求,
但它不能为 null 或空字符串 ("")。
设备实现者选择的值,用于标识设备的名称
android.os.Build.BRAND
生产该装置的公司、组织、个人等
人类可读的格式。该字段的一个可能用途是指示 OEM

和/或出售该设备的运营商。对此没有任何要求
该字段的特定格式,但它不能为 null 或空
细绳 (””)。
由设备实现者选择的值,用于标识特定的
身体的配置或修改(有时称为“工业
android.os.Build.DEVICE
设备的设计”)。具体格式没有要求
该字段的值,但它不能为 null 或空字符串 ("")。
唯一标识此构建的字符串。应该是合理的
人类可读的。它必须遵循以下模板:
$(产品品牌)/$(产品名称)/$(产品设备)/
$(TARGET_BOOTLOADER_BOARD_NAME):$(PLATFORM_VERSION)/
$(BUILD_ID)/$(BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/
android.os.Build.FINGERPRINT
$(BUILD_VERSION_TAGS)
例如:acme/mydevicel/generic/generic:Donut/ERC77/
3359:用户调试/测试密钥
指纹不得包含空格。如果其他字段包含在
上面的模板有空格,应该用 ASCII 替换
指纹中的下划线(“_”)字符。
一个字符串,在人类中唯一标识构建构建的主机
android.os.Build.HOST
可读格式。对具体格式没有要求
字段,但它不能为 null 或空字符串 ("")。
设备实现者选择的标识符来引用特定的
以人类可读的格式发布。该字段可以与
android.os.Build.VERSION.INCRMENTAL,但应该是一个值
android.os.Build.ID
旨在对最终用户有意义。没有
对此字段的具体格式有要求,但不得
为 null 或空字符串 ("")。
由设备实现者选择的包含设备名称的值
最终用户已知的设备。这应该是同一个名字
android.os.Build.MODEL
设备根据该规则进行营销并销售给最终用户。没有
对此字段的具体格式有要求,但不得
为 null 或空字符串 ("")。
由包含开发的设备实现者选择的值
设备的名称或代码名称。必须是人类可读的,但不是
android.os.Build.Product
必然供最终用户查看。没有要求
该字段的具体格式,除了它不能为空或
空字符串(“”)。
由设备实现者选择的以逗号分隔的标签列表
进一步区分构建。例如,“未签名,调试”。这个领域
android.os.Build.TAGS
不得为 null 或空字符串 (""),而是单个标签(例如
“释放”)就可以了。
android.os.Build.TIME
表示构建发生时间的时间戳的值。
由设备实现者选择的指定运行时的值
构建的配置。该字段应该具有以下值之一
android.os.Build.TYPE
对应三种典型的Android运行时配置:“user”、
“userdebug”或“eng”。
生成该信息的用户(或自动用户)的名称或用户 ID
android.os.Build.USER
建造。该字段的具体格式没有要求,
但它不能为 null 或空字符串 ("")。

3.2.3.意图兼容性
Android 使用 Intent 来实现应用程序之间的松耦合集成。本节描述
与设备实现必须遵守的意图模式相关的要求。经过
“荣幸”,这意味着设备实现者必须提供 Android 活动、服务或其他
指定匹配 Intent 过滤器并绑定到每个 Intent 过滤器并为每个过滤器实现正确行为的组件
指定的意图模式。
3.2.3.1.核心应用意图
Android上游项目定义了许多核心应用程序,例如电话拨号器、日历、
通讯录、音乐播放器等。设备实施者可以将这些应用程序替换为
替代版本。
但是,任何此类替代版本都必须遵循上游提供的相同意图模式
项目。 (例如,如果设备包含替代音乐播放器,它仍然必须遵循 Intent 模式
由第三方应用程序发出来选择歌曲。)设备实现必须支持所有 Intent 模式
列于附录 A。
3.2.3.2.意图覆盖
由于 Android 是一个可扩展平台,设备实现者必须允许中描述的每个 Intent 模式
附录 A 将被第三方应用程序覆盖。上游Android开源项目
默认情况下允许这样做;设备实现者不得将特殊权限附加到系统应用程序
使用这些 Intent 模式,或阻止第三方应用程序绑定并控制
这些图案。该禁令具体包括禁用“选择器”用户界面,该界面允许
用户可以在多个应用程序之间进行选择,这些应用程序都处理相同的 Intent 模式。
3.2.3.3.意图命名空间
设备实现者不得包含任何支持任何新 Intent 或
使用 ACTION、CATEGORY 或 android.* 命名空间中的其他键字符串广播 Intent 模式。
设备实现者不得包含任何支持任何新 Intent 或
使用 ACTION、CATEGORY 或包空间中的其他键字符串广播 Intent 模式
属于另一个组织。设备实现者不得更改或扩展任何意图
附录 A 或 B 中列出的模式。
该禁止类似于第 3.6 节中为 Java 语言类指定的禁止。

3.2.3.4.广播意图
第三方应用程序依靠平台广播某些意图来通知它们变化
硬件或软件环境。 Android 兼容设备必须广播公共广播
响应适当的系统事件的意图。所需广播意图的列表在
附录 B;但是,请注意,SDK 可能会定义其他广播意图,这些意图也必须是
荣幸。
3.3.本机 API 兼容性
Dalvik 中运行的托管代码可以调用应用程序 .apk 文件中提供的本机代码作为 ELF
.so 文件针对适当的设备硬件架构进行编译。设备实现必须包括
支持在托管环境中运行的代码以使用标准 Java 调用本机代码
本机接口 (JNI) 语义。以下 API 必须可用于本机代码:
libc(C 库)
libm(数学库)
JNI 接口
libz(Zlib 压缩)
liblog(Android 日志记录)
对 C++ 的最低限度支持
OpenGL ES 1.1
这些库必须是源代码兼容的(即头文件兼容)和二进制兼容的(对于给定的
处理器架构)以及 Android 开源项目在 Bionic 中提供的版本。自从
Bionic 实现与其他实现(例如 GNU C)不完全兼容
库,设备实现者应该使用 Android 实现。如果设备实现者使用
这些库的不同实现,它们必须确保头文件和二进制文件的兼容性。
本机代码兼容性具有挑战性。因此,我们希望重申,设备实现者是
非常强烈鼓励使用上面列出的库的上游实现,以帮助
确保兼容性。
3.4.网络 API 兼容性
许多开发人员和应用程序依赖于 android.webkit.WebView 类的行为 [资源
11] 对于他们的用户界面,因此 WebView 实现必须跨 Android 兼容
实施。 Android 开源实现使用 WebKit 渲染引擎版本来
实现WebView。
由于为 Web 浏览器开发全面的测试套件是不可行的,设备实施者
必须在 WebView 实现中使用 WebKit 的特定上游版本。具体来说:
• WebView 必须使用来自上游 Android 开源树的 528.5+ WebKit 构建
安卓1.6。此版本包括一组针对 WebView 的特定功能和安全修复。
• WebView 报告的用户代理字符串必须采用以下格式:
Mozilla/5.0(Linux;U;Android 1.6;<语言>-<国家/地区>;<设备
名称>; Build/<build ID>) AppleWebKit/528.5+(KHTML,如 Gecko)
版本/3.1.2 移动 Safari/525.20.1

◦ “<设备名称>”字符串必须与
android.os.Build.MODEL
◦ “<build ID>”字符串必须与 android.os.Build.ID 的值相同。
◦ “<语言>”和“<国家/地区>”字符串应遵循以下常规约定:
国家代码和语言,并且应该引用设备的当前区域设置
请求的时间。
实现可以在独立的浏览器应用程序中提供自定义用户代理字符串。什么是
此外,独立浏览器可能基于替代浏览器技术(例如 Firefox、
Opera 等)但是,即使发布了备用浏览器应用程序,WebView 组件
提供给第三方应用程序的内容必须基于 WebKit,如上所述。
独立的浏览器应用程序应该包括对 Gears [资源, 12] 和 MAY 的支持
包括对部分或全部 HTML5 的支持。
3.5. API 行为兼容性
每个 API 类型(托管、软、本机和 Web)的行为必须与
Android 开源项目中提供的 Android 的首选实现。
一些特定的兼容性领域是:
• 设备不得更改标准 Intent 的行为或含义
• 设备不得改变特定类型系统的生命周期或生命周期语义
组件(如Service、Activity、ContentProvider等)
• 设备不得更改特定权限的语义
上面的列表并不全面,设备实施者有责任确保行为
兼容性。因此,设备实现者应该使用通过以下方式提供的源代码:
尽可能使用 Android 开源项目,而不是重新实现系统的重要部分。
兼容性测试套件 (CTS) 测试平台的重要部分的行为兼容性,
但不是所有的。实现者有责任确保与 Android 的行为兼容性
开源项目。
3.6. API命名空间
Android 遵循 Java 编程定义的包和类命名空间约定
语言。为了确保与第三方应用程序的兼容性,设备实现者不得制作
对这些包命名空间进行任何禁止的修改(见下文):
• java.*
• javax.*
• 太阳。*
• 安卓。*
• com.android.*
禁止的修改包括:
• 设备实现不得修改Android 平台上公开的API
通过更改任何方法或类签名,或者删除类或类字段。

• 设备实现者可以修改API 的底层实现,但是这样
修改不得影响任何声明的行为和 Java 语言签名
公开暴露的 API。
• 设备实现者不得添加任何公开暴露的元素(例如类或
接口,或现有类或接口的字段或方法)到上述 API。
“公开暴露的元素”是指未用“@hide”标记修饰的任何构造。
上游Android源代码。换句话说,设备实现者不得公开新的 API 或
更改上述命名空间中的现有 API。设备实现者可以将其设置为仅供内部使用
修改,但这些修改不得公布或以其他方式暴露给开发人员。
设备实现者可以添加自定义 API,但任何此类 API 不得位于拥有的命名空间中
由另一个组织或提及另一个组织。例如,设备实现者不得将 API 添加到
com.google.* 或类似的命名空间;只有谷歌可以这样做。同样,Google 不得将 API 添加到
其他公司的命名空间。
如果设备实现者建议改进上述包命名空间之一(例如通过添加
对现有 API 有用的新功能,或添加新 API),实施者应该访问
source.android.com 并开始贡献更改和代码的过程,根据
该网站上的信息。
请注意,上述限制符合 Java 中命名 API 的标准约定。
编程语言;本节的目的只是加强这些公约并使其具有约束力
通过包含在此兼容性定义中。
3.7.虚拟机兼容性
兼容的 Android 设备必须支持完整的 Dalvik 可执行文件 (DEX) 字节码规范,并且
Dalvik 虚拟机语义 [资源,13]。
3.8.用户界面兼容性
Android平台包含一些开发者API,允许开发者挂钩系统用户
界面。设备实现必须将这些标准 UI API 合并到自定义用户界面中
它们的发展如下所述。
3.8.1.小部件
Android定义了组件类型以及相应的API和生命周期,允许应用程序公开
给最终用户的“AppWidget”[资源,14] Android 开源参考版本包括
启动器应用程序,包括允许用户添加、查看和删除的用户界面元素
主屏幕上的 AppWidget。
设备实施者可以替代参考启动器(即主屏幕)。
替代启动器应该包含对 AppWidget 的内置支持,并公开用户界面
直接在启动器中添加、查看和删除 AppWidget 的元素。替代启动器可以
省略这些用户界面元素;然而,如果它们被省略,设备实现者必须提供
可从启动器访问的单独应用程序,允许用户添加、查看和删除
应用程序小部件。

3.8.2.通知
Android 包含的 API 允许开发人员通知用户值得注意的事件 [资源,15]。设备
实施者必须为如此定义的每一类通知提供支持;具体来说:声音、
振动、灯光和状态栏。
此外,实现必须正确呈现并且所有资源(图标、声音文件等)
API [资源,7] 或状态栏图标样式指南 [资源,16] 中提供。设备
实施者可以为通知提供替代的用户体验,而不是由
参考Android开源实现;然而,此类替代通知系统必须
支持现有的通知资源,如上所述。
3.8.3.搜索
Android 包含API [资源, 17],允许开发人员将搜索合并到他们的应用程序中,
并将其应用程序的数据公开到全局系统搜索中。一般来说,这个功能
由单个系统范围的用户界面组成,允许用户输入查询、显示建议
当用户输入时,并显示结果。 Android API 允许开发人员重用此接口来提供
在自己的应用程序中进行搜索,并允许开发人员向通用的全球搜索用户提供结果
界面。
设备实现必须包括一个单一的、共享的、系统范围的搜索用户界面,能够
响应用户输入的实时建议。设备实现必须实现以下 API:
允许开发人员重用此用户界面以在自己的应用程序中提供搜索。
设备实现必须实现允许第三方应用程序添加建议的 API
当它在全局搜索模式下运行时,到搜索框。如果没有安装第三方应用程序
使用此功能,默认行为应该是显示网络搜索引擎结果和
建议。
设备实现可以提供备用搜索用户界面,但应该包括硬或软
专用搜索按钮,可以随时在任何应用程序中使用该按钮来调用搜索框架,
与 API 文档中提供的行为。
3.8.4.吐司
应用程序可以使用“Toast”API(在[参考资料, 18]中定义)向
最终用户,在短时间内就会消失。设备实现必须显示来自
以某种高可见度的方式向最终用户提供应用程序。
4. 参考软件兼容性
设备实现者必须使用以下开源测试实现兼容性
应用:
• 计算器(包含在SDK 中)
• 月球着陆器(包含在 SDK 中)
• ApiDemos(包含在 SDK 中)
• “Apps for Android”应用程序 [资源, 19]
上面的每个应用程序必须启动并在实现上正确运行,以便实现

被认为是兼容的。
5. 应用程序封装兼容性
设备实现必须安装并运行由“aapt”工具生成的 Android“.apk”文件
包含在官方 Android SDK [参考资料, 20] 中。
设备实现不得扩展 .apk、Android Manifest 或 Dalvik 字节码
格式的方式会阻止这些文件在其他设备上正确安装和运行
兼容设备。设备实现者应该使用 Dalvik 的参考上游实现,
以及参考实现的包管理系统。
6. 多媒体兼容性
兼容的 Android 设备必须支持以下多媒体编解码器。所有这些编解码器都是
作为 Android Open 的首选 Android 实现中的软件实现提供
源项目[资源,4]。
请注意,Google和开放手机联盟都没有做出任何代表
编解码器不受第三方专利的影响。那些打算在硬件或
建议软件产品,该代码的实施,包括开源软件或
共享软件可能需要相关专利持有人的专利许可。
声音的
姓名

编码器解码器详细信息
支持文件
任何单声道/立体声内容
3GPP(.3GP)和
标准比特率的组合
MPEG-4(.mp4,.m4a)
AAC LC/LTP
X
高达160 kbps和采样率文件。不支持RAW
在8至48kHz之间
AAC(.AAC)
任何单声道/立体声内容
3GPP(.3GP)和
HE-AACV1
标准比特率的组合
MPEG-4(.mp4,.m4a)
X
(AAC+)
最多96 kbps和采样率文件。不支持RAW
在8至48kHz之间
AAC(.AAC)
任何单声道/立体声内容
he-aacv2
3GPP(.3GP)和
标准比特率的组合
(增强
MPEG-4(.mp4,.m4a)
X
最多96 kbps和采样率
AAC+)
文件。不支持RAW
在8至48kHz之间
AAC(.AAC)
AMR-NB
4.75至12.2 kbps @ @
3GPP(.3GP)文件
X
X
8khz
AMR-WB
9率从6.60 kbit/s到23.85
-3GPP(.3GP)文件
X
kbit/s采样 @ 16kHz
MP3
单声道/立体声8-320kbps常数mp3(.mp3)文件
X
(CBR)或可变比特率(VBR)
类型0和1(.mid,.xmf,
MIDI类型0和1。DLS版本1
MIDI
X
.mxmf)。还有rtttl/rtx
2. XMF和移动XMF。
(.rtttl,.rtx),ota(.ota),

支持铃声格式
和Imelody(.imy)
RTTTL/RTX,OTA和IMELODY
Ogg Vorbis
.ogg
X
8-和16位线性PCM(速率提高
相变材料
X
海浪
限制硬件)
图像
文件
姓名
编码器解码器详细信息
支持的
JPEG
X
X
基础+渐进式
动图
X
巴布亚新几内亚
X
X
骨形态发生蛋白
X
视频
文件
姓名
编码器解码器详细信息
支持的
3GPP(.3GP)
H.263
X
X
文件
3GPP(.3GP)
H.264
X
和MPEG-4
(.mp4)文件
MPEG4
X
3GPP(.3GP)文件
SP
7.开发人员工具兼容性
设备实现必须支持Android SDK中提供的Android开发人员工具。
具体而言,与Android兼容的设备必须与:
Android调试桥或ADB [资源,21]
设备实现必须支持Android中记录的所有ADB功能
SDK。设备侧ADB守护程序默认情况下应无活动,但是必须有一个用户
可访问的机制打开Android调试桥。
Dalvik调试监视器服务或DDMS [资源,22]
设备实现必须支持Android SDK中记录的所有DDMS功能。
由于DDMS使用ADB,因此默认情况下,对DDMS的支持应无效,但必须受支持
每当用户激活Android调试桥时,如上所述。

猴子[资源,23]
设备实现必须包括猴子框架,并使其可用于
使用的应用。
8.硬件兼容性
Android旨在支持设备实施者创建创新的形式和配置。
同时,Android开发人员期望所有Android的硬件,传感器和API
设备。本节列出了所有Android 1.6兼容设备必须支持的硬件功能。在
Android 1.6,大多数硬件功能(例如WiFi,Compass和加速度计)是需要的。
如果设备包含具有第三方相应API的特定硬件组件
开发人员,设备实现必须按照Android SDK中定义的API实现
文档。
8.1.展示
Android 1.6包括执行某些自动缩放和转换操作的设施
在某些情况下,以确保第三方应用程序在硬件上运行良好
它们不一定是明确设计的配置[资源,24] 。设备必须
如本节所述,正确实施这些行为。
8.1.1.标准显示配置
该表列出了与Android兼容的标准屏幕配置:
对角线
屏幕尺寸
屏幕密度
屏幕类型
宽度(像素)
高度(像素)
长度范围
团体
团体
(英寸)
QVGA
240
320
2.6-3.0
小的
低的
WQVGA
240
400
3.2-3.5
普通的
低的
FWQVGA
240
第432章
3.5-3.8
普通的
低的
HVGA
320
第480章
3.0-3.5
普通的
中等的
WVGA
第480章
800
3.3-4.0
普通的
高的
FWVGA
第480章
第854章
3.5-4.0
普通的
高的
WVGA
第480章
800
4.8-5.5
大的
中等的
FWVGA
第480章
第854章
5.0-5.8
大的
中等的
必须配置与上述标准配置之一相对应的设备实现
通过android.content.res.configuration将指示的屏幕大小报告给应用程序[资源,
25]班级。
某些.APK软件包的表现未识别为支持特定密度范围。
运行此类应用程序时,以下约束适用:

•设备实现必须将存在的任何资源解释为默认的资源
“媒体”(在SDK文档中称为“ MDPI”。)
•在“低”密度屏幕上操作时,设备实现必须缩小介质/
MDPI资产为0.75。
•在“高”密度屏幕上操作时,设备实现必须扩展中等/
MDPI资产的倍数为1.5。
•设备实现不得扩大资产在密度范围内,并且必须扩展
资产通过密度范围之间的这些因素准确。
8.1.2.非标准显示配置
显示不匹配第8.2.1节中列出的标准配置之一的配置
其他考虑和工作要兼容。设备实施者必须联系Android
第12节中规定的兼容性团队,以获取屏幕尺寸的存储桶,密度,
和缩放系数。提供此信息后,设备实现必须实现它们
作为指定。
请注意,某些显示配置(例如非常大或很小的屏幕,以及某些长宽比)
与Android 1.6根本上不兼容;因此,鼓励设备实施者
在开发过程中尽早与Android兼容性团队联系。
8.1.3。显示指标
设备实现必须向所有定义的显示指标报告正确的值
android.util.displaymetrics [资源,26]。
8.2.键盘
设备实现:
•必须包括对输入管理框架的支持(这允许第三方
开发人员创建输入管理引擎 - 即软键盘)
developer.android.com
•必须至少提供一个软键盘实现(无论是否硬
存在键盘)
•可能包括其他软键盘实现
•可能包括硬件键盘
•不得包含与指定格式之一的硬件键盘
在Android.content.Res.Configuration [资源,25] (即Qwerty或12键)
8.3.非接触导航
设备实现:
•可能会省略非接触导航选项(即,可以省略轨迹球,5向方向垫或
车轮)
•必须通过android.content.res.configuration [资源,25]报告的正确值
设备的硬件

8.4.屏幕方向
兼容的设备必须通过应用程序或景观来支持动态方向
屏幕方向。也就是说,该设备必须尊重应用程序对特定屏幕的请求
方向。设备实现可以选择肖像或景观方向作为默认设备。
每当通过查询通过
android.content.Res.Configuration.Corientation,Android.view.display.getorientation()或其他API。
8.5。触摸屏输入
设备实现:
•必须有一个触摸屏
•可能具有电容或电阻触摸屏
•必须报告Android.content.Res.Configuration [资源,25]的价值
对应于设备上特定触摸屏的类型
8.6。 USB
设备实现:
•必须实现USB客户端,可连接到具有标准USB-A端口的USB主机
•必须通过USB实施Android调试桥(如第7节中所述)
•必须在此处实现一个USB质量存储客户端以进行可移动/媒体存储
设备
•应在设备侧使用Micro USB外形
•应实施对USB质量存储规范的支持(以便可移动
或可以从主机PC访问设备上的固定存储)
•可能在设备侧包括一个非标准端口,但是如果必须将电缆运送到
将自定义引脚连接到标准USB-A端口
8.7.导航键
房屋,菜单和背部功能对于Android导航范式至关重要。设备
实现必须始终使用户可用这些功能,而不论应用程序如何
状态。这些功能应通过专用按钮实现。他们可以实施
使用软件,手势,触摸面板等
干扰可用的应用显示区域。
设备实现者还应提供专用的搜索键。设备实施者也可能
提供打电话的发送和结束键。
8.8.无线上网
设备实现必须支持802.11b和802.11g,并且可以支持802.11a。

8.9。相机
设备实现必须包括相机。随附的相机:
•必须至少有2兆像素的分辨率
•应该具有硬件自动对焦或相机中实现的软件自动对焦
驱动程序(对应用程序软件透明)
•可能具有固定的对焦或EDOF(扩展的景深)硬件
•可能包括闪光灯。如果相机包含闪光灯,则不得点亮闪光灯
android.hardware.camera.previewcallback实例已在摄像头预览中注册
表面。
设备实现必须实现与摄像机相关的API的以下行为
[资源,27]
1.如果应用程序从未称为android.hardware.camera.parameters.setpreviewformat(int),
然后设备必须使用android.hardware.pixelformat.ycbcr_420_sp进行预览数据
提供给应用程序回调。
2.如果应用程序注册Android.hardware.camera.previewcallback实例和
当预览格式为ycbcr_420_sp时,系统调用onpreviewframe()方法,
字节[]中的数据传递到OnpReviewFrame()中必须进一步以NV21编码格式。
(这是7K硬件家族的本机使用的格式。)也就是说,NV21必须是默认值。
8.9.1。非自动摄像机
如果设备缺乏自动对焦相机,则设备实施程序必须满足
本节。设备实现必须实现Android 1.6中包含的完整摄像头API
SDK文档以某种合理的方式,无论实际相机硬件的功能如何。
对于Android 1.6,如果相机缺乏自动对焦,则设备实现必须遵守以下内容:
1.系统必须包括一个名为“ ro.workaround.noautofocus”的仅读取系统属性
具有“ 1”的值。该值旨在由Android Market等应用程序使用
有选择地识别设备功能,并将在未来版本的Android中替换
强大的API。
2.如果应用程序调用android.hardware.camera.autofocus(),系统必须调用
任何注册的onautofocus()回调方法
android.hardware.camera.autofocuscallback实例,即使没有真正的焦点
发生了。这是为了避免通过永远等待自动对焦来使现有应用程序破裂
永远不会来的回调。
3.呼叫autofocuscallback.onautofocus()方法必须由驾驶员触发或
在主框架Looper线程上的新事件中的框架。也就是说,camera.autofocus()
由于这违反了Android
框架线程模型并将破坏应用程序。
8.10。加速度计
设备实现必须包括3轴加速度计,并且必须能够提供AT的事件
至少50 Hz。加速度计使用的坐标系必须符合Android传感器
坐标系统如Android API所述[资源,28]。

8.11。罗盘
设备实现必须包括3轴指南针,并且必须至少能够提供活动
10 Hz。指南针使用的坐标系必须符合Android传感器坐标
系统在Android API中定义[资源,28]。
8.12.全球定位系统
设备实现必须包括GP,并且应包括某种形式的“辅助GPS”
最小化GPS锁定时间的技术。
8.13。电话
设备实现:
•必须包括GSM或CDMA电话
•必须在Android SDK文档中详细实施适当的API
developer.android.com
请注意,此要求意味着非手机设备与Android 1.6不兼容;安卓
1.6设备必须包括电话硬件。请参阅附录C有关非电话的信息
设备。
8.14。音量控制
与Android兼容的设备必须包括一种机制,以使用户增加并减少
音频量。设备实现必须使这些功能始终为用户提供
不论应用状态如何。这些功能可以使用物理硬件密钥实现,
软件,手势,触摸面板等
在可用的应用显示区域(请参见上面的显示)。
使用这些按钮时,必须生成相应的关键事件并发送到
前景应用。如果事件未截获并被应用下沉,则设备
实施必须将事件作为系统音量控制。
9.性能兼容性
Android兼容性计划的目标之一是确保一致的应用体验
消费者。兼容实现不仅必须确保应用程序仅正确地运行
该设备,但是他们以合理的性能和整体良好的用户体验来做到这一点。
设备实现必须满足Android 1.6兼容设备的关键性能指标,
如下表:
公制
性能阈值
评论

这是由CTS测试的。
以下应用程序
启动时间被衡量为总时间
应该在
完整加载默认活动的活动
应用
指定时间。
应用程序,包括开始的时间
发射时间
浏览器:小于1300ms
Linux进程,将Android软件包加载到
MMS/SMS:小于700ms
Dalvik VM,并致电OnCreate。
警报路线:小于650ms
多个应用程序将是
这是由CTS测试的。
发射。重新启动
同时第一个申请应
应用领域
完成少于
原始启动时间。
10.安全模型兼容性
设备实现必须实现与Android平台安全性一致的安全模型
在API [资源, 29]中的安全性和权限参考文献文档中定义的模型
Android开发人员文档。设备实现必须支持安装自签名
不需要任何第三方/当局的任何其他权限/证书的申请。
具体而言,兼容设备必须支持以下安全机制:
10.1.权限
设备实现必须支持Android中定义的Android权限模型
开发人员文档[资源,9]。具体而言,实施必须执行每个许可
如SDK文档中所述定义;无法省略,更改或忽略权限。
实施可能会增加其他权限,前提是新的权限ID字符串不在
Android。*名称空间。
10.2.用户和过程隔离
设备实现必须支持Android应用程序沙盒模型,其中每个应用程序
作为独特的Unix风格的UID和单独的过程运行。
设备实现必须支持运行多个应用程序作为相同的Linux用户ID
按照安全性和权限定义的应用程序正确签名和构建
参考[资源,29]。

10.3.文件系统权限
设备实现必须支持ASS定义的Android文件访问权限模型
在安全性和权限参考文献[资源,29]中定义。
11.兼容性测试套件
设备实现必须通过Android兼容性测试套件(CTS)[资源, 3]可用
从Android开源项目中使用设备上的最终运输软件。此外,
设备实施者应将Android开源树中的参考实现用于
尽可能多地确保在CTS中含糊不清的情况下兼容
参考源代码部分的重新实现。
CTS设计为在实际设备上运行。像任何软件一样,CTS本身可能包含错误。
CTS将与此兼容性定义独立于版本,并将其多次修订
CTS可以释放为Android 1.6。但是,此类版本只能修复CTS中的行为错误
测试,不会为给定平台发布施加任何新的测试,行为或API。
12.与我们联系
您可以通过compatibility@android.com与Android兼容团队联系,以获取与
这个兼容定义,并提供有关此定义的反馈。

附录A:必需的应用程序意图
注意:此列表是临时的,将来会更新。
申请操作
方案模拟类型
(没有任何)
文本/纯文本

http
文本/html
浏览器
Android.intent.Action.View
https
应用程序/XHTML+XML
应用/
vnd.wap.xhtml+xml

(没有任何)
android.intent.action.web_search
http
(没有任何)
https
android.media.action.image_capture
android.media.action.still_image_camera

相机
android.media.action.video_camera
android.media.action.video_capture

vnd.android.cursor.dir/
Android.intent.Action.View
图像
android.intent.action.get_content
vnd.android.cursor.dir/
android.intent.action.pick
视频
android.intent.Action.attach_Data
图像/*
视频/*

Android.intent.Action.View
RTSP
视频/mp4
视频/3GP

Android.intent.Action.View
http
视频/3GPP
视频/3GPP2

android.intent.action.dial
电话 /
Android.intent.Action.View
电话
联系方式
android.intent.Action.Call
android.intent.action.dial
vnd.android.cursor.dir/
Android.intent.Action.View


vnd.android.cursor.dir/

vnd.android.cursor.dir/

android.intent.action.pick
电话
vnd.android.cursor.dir/
邮寄地址

vnd.android.cursor.item/

vnd.android.cursor.item/

android.intent.action.get_content
电话
vnd.android.cursor.item/
邮寄地址

文本/纯文本
电子邮件
android.intent.action.send
图像/*
视频/*

Android.intent.Action.View
邮寄地址
android.intent.Action.Sendto
短信
Android.intent.Action.View
Smsto
SMS / mms android.intent.action.sendto
彩信
mmsto

声音的/*
应用程序/ogg

音乐
Android.intent.Action.View
文件
应用程序/X-OGG
应用程序/iTunes

音频/mp3
音频/x-mp3

Android.intent.Action.View
http
音频/mpeg
音频/MP4
音频/mp4a-latm

vnd.android.cursor.dir/
Artistalbum
vnd.android.cursor.dir/
专辑
vnd.android.cursor.dir/

android.intent.action.pick
现在玩
vnd.android.cursor.dir/
追踪
nd.android.cursor.dir/
播放列表
vnd.android.cursor.dir/
视频

媒体/*
声音的/*

android.intent.action.get_content
应用程序/ogg
应用程序/X-OGG
视频/*


内容
包裹
Android.intent.Action.View
文件
安装人员
包裹
文件
android.intent.action.package_install
http
https

android.intent.action.all_apps
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.android.settings.display_settings
android.settings.security_setting
android.settings.location_source_settings
android.settings.internal_storage_settings
android.settings.memory_card_settings
android.intent.action.set_wallpaper

搜索
android.intent.action.search
询问
android.intent.action.search_long_press
嗓音
android.intent.action.voice_command
联系人管理
意图行动
描述
启动一项活动,让用户选择
tacter_image
触点将图像附加到。
用过的
extra_create_description
使用show_or_create_contact
指定确切的描述为


提示用户时显示
创建一个新的联系人。

用过的
使用show_or_create_contact

extra_force_create
强迫创建新的联系人,如果没有
找到匹配的联系人。

这是当
search_suggestion_clicked
单击搜索建议。
这是当
search_suggestion_create_contact_clicked搜索建议用于创建一个
点击接触。
这是当
search_suggestion_dial_number_clicked
搜索拨号的建议
单击。

将带有邮件的数据URI作为输入:
show_or_create_contact
或电话:方案。

附录B:必需的广播意见注意:此列表是临时的,将是
将来更新。

意图行动
描述
广播动作:这是一次广播
action_boot_completed
系统已经完成启动。
广播动作:这是一次广播
action_call_button
接到电话。
广播动作:“相机按钮”是
action_camera_button
按下。
广播动作:电流
action_configuration_changed
设备配置(方向,语言环境等)具有
改变了。
action_date_changed
广播行动:日期已更改。
广播动作:指示低记忆条件
action_device_storage_low
在设备上
广播动作:指示低记忆条件
action_device_storage_ok
在设备上不再存在
广播动作:有线耳机插入或
action_headset_plug
插头。
广播行动:输入方法已经
action_input_method_changed
改变了。
广播行动:删除了外部媒体
action_media_bad_removal
从SD卡插槽中,但安装点不是
卸载。
广播动作:“媒体按钮”是
Action_Media_Button
按下。
广播行动:存在外部媒体,并且
磁盘检查了通往安装点的路径
Action_Media_Checking
检查媒体包含在
intent.mdata字段。
广播行动:用户表示希望
action_media_eject
删除外部存储媒体。
广播行动:存在外部媒体,
action_media_mounted
安装在其安装点。
广播行动:存在外部媒体,但
使用不兼容的FS(或空白)通往
action_media_nofs
检查媒体的安装点是
包含在intent.mdata字段中。
广播行动:外部媒体已经
Action_Media_remaved
已删除。
广播动作:媒体扫描仪已完成
action_media_scanner_fined
扫描目录。
广播行动:请求媒体扫描仪
action_media_scanner_scan_file
扫描文件并将其添加到媒体数据库中。

广播动作:媒体扫描仪已开始
action_media_scanner_started
扫描目录。
广播动作:外部媒体已卸下
action_media_shared
因为它是通过USB质量存储共享的。
广播行动:存在外部媒体,但
Action_Media_unmountable
无法安装。
广播行动:存在外部媒体,但是
action_media_unmount
未安装在其安装点。
广播行动:即将发出的电话
Action_new_outonodoing_call
放置。
广播行动:一个新的应用程序包
action_package_added
已安装在设备上。
广播行动:现有的应用程序包
action_package_changed
已更改(例如,组件已经
启用或禁用。
广播行动:用户清除了
一套。这应该先于
通过action_package_restarted,之后
action_package_data_cleared
它的所有持续数据都被删除了,这
广播发送。请注意,已清除的包裹
没有收到此广播。数据包含
包的名称。
广播行动:现有的应用程序包
已从设备中删除。数据
action_package_remaved
包含包装的名称。包
即将安装的是没有收到此意图。
广播动作:应用程序的新版本
action_package_rephace
已安装软件包,替换了现有的
以前安装的版本。
广播动作:用户已重新启动
包裹及其所有过程都被杀死。
与之关联的所有运行时状态(过程,
action_package_restarted
应删除警报,通知等)。笔记
重新开始的软件包没有收到此
播送。数据包含
包裹。
广播行动:一些内容提供商有
他们发布新的名称空间的一部分
action_provider_changed
用户可能特别是事件或项目
有兴趣。
action_screen_off
广播动作:屏幕关闭后发送。
Action_screen_on
广播动作:屏幕打开后发送。
广播操作:用户ID已删除
Action_UID_REMED
来自系统。
广播动作:该设备已输入USB
action_ums_connected
质量存储模式。

广播动作:该设备已退出USB
action_ums_disconted
质量存储模式。
广播动作:用户在场时发送
action_user_present
设备醒来后(例如,何时关键
走了)。
广播动作:当前的系统壁纸
action_wallpaper_changed
已经改变。
action_time_changed
广播行动:设定了时间。
action_time_tick
广播动作:当前时间已经改变。
action_timezone_changed
广播动作:时区已经改变。
广播行动:充电状态或收费
action_battery_changed
电池的水平已经改变。
广播行动:表示电池状况低
action_battery_low
在设备上。这个广播对应于
“电池警告低”系统对话框。
广播动作:表示电池现在还可以
低点之后。这将被发送
Action_battery_okay
Action_battery_low之后电池
已经回到了一个好的状态。
网络状态
意图行动
描述
广播意图行动,表明
network_state_changed_action
Wi-Fi连接状态已经改变。
广播意图行动,表明
rssi_changed_action
RSSI(信号强度)已改变。
广播意图行动,表明
Supplicant_state_changed_action
与求职者的联系已经
建立或丢失。
广播意图行动,表明Wi-Fi
wifi_state_changed_action
已启用,禁用,启用,
禁用或未知。
配置网络的网络ID
network_ids_changed_action
本来可以改变的。
广播意图行动,表明
Action_background_data_setting_changed设置的背景数据使用情况
更改的值。
广播意图表明改变
Connectivity_Action
网络连接发生了。
广播动作:用户已切换
action_airplane_mode_changed
打入或脱离飞机模式。


附录C:未来考虑此附录阐明了此Android的某些部分
1.6兼容性定义,在某些情况下,讨论了预期或计划的更改
Android平台的未来版本。该附录仅用于信息和计划目的,以及
不是Android 1.6的兼容性定义的一部分。
1.非telephone设备
Android 1.6专门用于电话;电话功能不是可选的。未来版本
预计Android平台将使电话可选(因此允许非电话Android
设备),但只有手机与Android 1.6兼容。
2.蓝牙兼容性
Android 1.6 Android的释放不支持蓝牙API,因此从兼容性角度来看
蓝牙对此版本的平台没有任何考虑。但是,未来版本
Android的of将引入蓝牙API。那时,支持蓝牙将成为强制性的
兼容性。
因此,我们强烈建议Android 1.6设备包括蓝牙,以便它们会成为
与需要蓝牙的Android的未来版本兼容。
3.所需的硬件组件
第8节中的所有硬件组件(包括WiFi,磁力计/指南针,加速度计等)均为
必需的,可能不会省略。预计未来版本的Android将产生一些(但不是全部)
这些组件可选,与相应的工具供第三方开发人员处理这些组件
变化。
4.样本应用
未来版本的Android版本的兼容性定义文档将包括更广泛的和
代表性申请列表,比上面第4节中列出的申请列表。对于Android 1.6,
必须测试第4节中列出的申请。
5.触摸屏幕
兼容性定义的未来版本可能会或可能不允许设备省略触摸屏。
但是,目前的大部分Android框架实施都假定存在
触摸屏;省略触摸屏将大大打破所有当前所有第三方Android应用程序,
因此,在Android 1.6中,需要一个触摸屏才能兼容。

6.性能
CTS的未来版本还将测量以下CPU的利用率和性能
实施的组成部分:
•2D图形
•3D图形
• 视频回放
•音频播放
•蓝牙A2DP播放

文件大纲