API 级别:8
Android 2.2 是一个次要平台版本,包含用户功能、开发者功能、API 变更和 bug 修复。如需了解开发者功能和 API 变更,请参阅 Framework API 部分。
对于开发者,Android 2.2 平台可作为 Android SDK 的可下载组件提供。可下载的平台包含 Android 库和系统映像,以及一组模拟器皮肤等。如需开始针对 Android 2.2 进行开发或测试,请使用 Android SDK 管理器将该平台下载到您的 SDK 中。
平台亮点
如需查看面向用户的新功能和平台亮点的列表,请参阅 Android 2.2 平台亮点文档。
API 级别
Android 2.2 平台提供了更新后的框架 API 版本。Android 2.2 API 会被分配一个整数标识符(8),该标识符存储在系统本身中。此标识符称为“API 级别”,可让系统在安装应用之前正确确定应用是否与系统兼容。
如需在应用中使用 Android 2.2 中引入的 API,您需要在应用清单的 <uses-sdk>
元素的 android:minSdkVersion
属性中设置适当的值“8”。
如需详细了解如何使用 API 级别,请参阅 API 级别文档。
框架 API 变更
以下部分介绍了对 Android 2.2 平台提供的应用框架 API 所做的更改。
在外部存储媒体上安装应用
Android 平台现在允许应用请求安装到设备的外部存储媒体(例如 SD 卡),而不是安装到设备的内部存储空间。
应用开发者可以在清单文件中使用 <manifest>
的新属性
android:installLocation
指明其应用的首选安装位置。该属性支持三个值:"internalOnly"
、"preferExternal"
和 "auto"
。在安装时,系统会检查 android:installLocation
的值,并尽可能根据首选位置安装应用 .apk
。如果应用请求外部安装,系统会将其安装到外部媒体中的私密加密分区中。在外部安装应用 .apk 后,系统会允许用户通过用户设置中的“管理应用”更改 .apk 的存储位置,并根据需要将其移至设备的内部存储空间(反之亦然)。
默认情况下,系统会将所有应用安装到设备的内部存储空间中,但明确请求外部安装的应用除外。这意味着,由于旧版应用无法访问 android:installLocation
属性,因此系统将始终将其安装到内部存储空间。不过,您可以配置和编译旧版应用,使其在旧版平台上安装到内部,并在 Android 2.2 及更高版本的平台上安装到外部(如有必要)。
请注意,请求安装到设备的外部媒体并不适用于所有应用,尤其是因为外部媒体可能是可拆卸的,而卸载/重新挂载可能会干扰用户体验和系统设置。
如需详细了解如何为应用设置首选安装位置,包括讨论哪些类型的应用应请求外部安装以及哪些类型的应用不应请求外部安装,请参阅应用安装位置文档。
数据备份
该平台现在提供通用备份服务,应用可以使用该服务备份和恢复用户数据,以确保用户在切换设备或重新安装应用时能够保留其数据。Backup Manager 负责处理应用数据在云端备份存储区域之间的传输工作。Backup Manager 可以存储任何类型的数据(从任意数据到文件),并以原子方式管理备份和恢复操作。如需了解详情,请参阅数据备份。
图形
android.opengl.GLES20
中新增了 OpenGL ES 2.0 API。- 新增了
ETC1
、ETC1Util
和ETC1Util.ETC1Texture
类以及实用方法,用于将 ETC1 用于纹理压缩。 - 新增了
ImageFormat
类。 - 新增了
YUV image format API
,用于实现从 YUV 到 JPEG 的压缩以及 YUV 数据的操作。
媒体
android.media.AudioManager
中新增了用于管理音频焦点、传输控制、暂时性音频焦点丢失、声音切换的新 API。- 用于将音频路由到 SCO 的新广播 intent -
ACTION_SCO_AUDIO_STATE_CHANGED
,其中包含用于指示新状态的 extra。 SoundPool
中新增了用于检测声音加载完成情况的 API。SoundPool
中新增了用于自动暂停和恢复的 API。MediaRecorder
中新增了一些 API,用于指定声道数量、编码和采样率、采样率的音频设置。- 新增了用于将文件添加到媒体数据库中的 API,以便系统自动扫描这些文件。请参阅
MediaScannerConnection.scanFile
和MediaScannerConnection.OnScanCompletedListener
。
语音识别和第三方识别引擎
- 该平台提供了新的语音识别 API,可让应用与可用的语音识别器进行更丰富的互动。例如,这些 API 足以将语音识别深度集成到 IME 中。
- 该平台还提供了
RecognitionService
基类,供第三方开发者创建插件识别引擎。 - 新增了用于接收回调的
RecognitionListener
接口。 - 新的
RecognizerIntent
extra,可让请求方应用指定首选语言、最小长度(以毫秒为单位)等详细信息。
相机和摄像机
- 更改了相机预览 API,以提高预览流水线的效率。
- 相机的新显示方向(现在可以纵向显示)。
android.hardware.Camera
中新增了用于管理缩放级别的 API。- 新的 API
android.hardware.Camera.Parameters
,用于查询和设置设备相机设置,例如焦距、曝光、缩放级别、视角等。 - 新增了用于视频和图片缩略图的
thumbnail
实用程序。 - 借助新的
CamcorderProfile
和CamcorderProfile
类,应用可以确定设备硬件相机功能。 android.media.ExifInterface
中新增了检索 GPS 和焦距的支持。
设备政策管理器
借助新的设备政策管理 API,开发者可以编写“设备管理员”应用,以控制设备的安全功能,例如最低密码强度、数据清除等。用户可以选择在其设备上启用的管理员。如需了解详情,请参阅 DeviceAdminSample.java 中的 android.app.admin
类或示例应用代码。
界面框架
- 新的界面模式“汽车模式”和“夜间模式”以及
UiModeManager
可让应用针对特定用户模式调整其应用界面。 - 新的
ScaleGestureDetector
,让 View 能够使用所提供的 MotionEvent 检测和处理涉及多个指针(多点触控)的转换手势。 - 改进了在
MotionEvent
对象中报告多点触控事件的方式。 - 布局属性
fill_parent
已重命名为match_parent
。这会影响 XML 和 Java 代码(请参阅ViewGroup.LayoutParams
)。请注意,平台将继续支持在旧版应用中使用fill_parent
。 - 借助新的布局属性
tabStripEnabled
、tabStripRight
和tabStripLeft
,开发者可以自定义 TabWidget 的底部条状标签。 - 更好地支持 activity 中的受管理对话框。
账号和同步
- 借助新方法
AddPeriodicSync()
,您可以安排定期与特定账号、权限和 extras 进行同步,并指定同步频率。
新的清单元素和属性
- 如需指定应用的首选安装位置(请参阅上文中的在外部存储媒体上安装应用),请执行以下操作:
<manifest>
元素的新android:installLocation
属性。指定应用定义的默认安装位置。
- 如需管理用户数据备份(如需了解详情,请参阅上文中的备份管理器部分):
-
<application>
元素的新android:backupAgent
属性。指定应用提供的 BackupAgent 子类(如有)的组件名称,用于处理备份/恢复操作。 -
<application>
元素的新android:restoreAnyVersion
属性。布尔值,表示应用是否准备尝试恢复任何备份的数据集,即使备份显然是来自比设备上当前安装的应用版本更高版本的应用。
-
- 如需管理平台的 JIT 编译器,请执行以下操作:
<application>
元素的新android:vmSafeMode
属性。布尔值,用于指定是否在运行应用时停用 JIT 编译器优化。
权限
android.permission.BIND_DEVICE_ADMIN
- 任何设备管理广播接收器都必须请求此权限,以确保只有系统可以与其互动。android.permission.KILL_BACKGROUND_PROCESSES
- 允许应用调用killBackgroundProcesses(String)
。android.permission.BIND_WALLPAPER
- 任何WallpaperService
都必须请求此权限,以确保只有系统可以与其互动。android.permission.SET_TIME
- 允许应用设置系统时间。
API 差异报告
如需详细了解 Android 2.2(API 级别 8)中的所有 API 变更,请参阅 API 差异报告。