API 级别:8
Android 2.2 是一个次要平台版本,包含用户功能、开发者功能、API 变更和 bug 修复。如需了解开发者功能和 API 变更,请参阅框架 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 卡),作为安装到设备内部存储空间的替代方案。
应用开发者可以通过清单文件
android:installLocation
中的新 <manifest>
属性表示其应用的首选安装位置。该属性支持三个值:"internalOnly"
、"preferExternal"
和 "auto"
。在安装时,系统会检查 android:installLocation
的值,并根据首选位置(如果可能)安装应用 .apk
。如果应用已请求进行外部安装,系统会将其安装到外部介质中的不公开加密分区中。外部安装应用 .apk 后,系统允许用户通过用户设置中的“管理应用”更改 .apk 的存储位置,并根据需要将其移至设备的内部内存(反之亦然)。
默认情况下,系统会将所有应用安装到设备的内部内存上,但明确请求外部安装的应用除外。这意味着系统始终将旧版应用安装到内部内存中,因为它们无权访问 android:installLocation
属性。不过,您可以视需要配置和编译旧版应用,使其在旧版平台内部安装,并在外部安装在 Android 2.2 及更高版本的平台上。
请注意,请求在设备的外部介质上安装应用并不适合所有应用,尤其是外部介质可以移除,卸载/重新安装可能会破坏用户体验和系统设置。
如需详细了解如何为应用设置首选安装位置(包括讨论了哪些类型的应用应该请求外部安装,不应该请求外部安装),请参阅应用安装位置文档。
数据备份
平台现在提供可用于备份和恢复用户数据的通用备份服务,以确保用户在切换设备或重新安装应用时可以保留其数据。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 - 包含指示新状态的 extras 的
ACTION_SCO_AUDIO_STATE_CHANGED
。 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,开发者可以编写“设备管理员”应用,以便控制设备的安全功能,例如最低密码强度、数据擦除等。用户可以选择在其设备上启用的管理员。如需了解详情,请参阅 android.app.admin
类或 DeviceAdminSample.java 中的示例应用代码。
界面框架
- 新的界面模式“汽车模式”和“夜间模式”以及
UiModeManager
可让应用针对特定的用户模式调整其应用界面。 - 新增了
ScaleGestureDetector
,可让 View 使用提供的 MotionEvent 检测和处理涉及多个指针(多点触控)的转换手势。 - 改进了在
MotionEvent
对象中报告多点触控事件的方式。 - 布局属性
fill_parent
已重命名为match_parent
。这同时会影响 XML 和 Java 代码(请参阅ViewGroup.LayoutParams
)。请注意,平台将继续支持在旧版应用中使用fill_parent
。 - 通过新的布局属性
tabStripEnabled
、tabStripRight
和tabStripLeft
,开发者可以自定义 TabWidgets 的底部条带。 - 更好地支持 Activity 中的受管理对话框。
账号和同步
- 新方法
AddPeriodicSync()
可让您安排以特定频率定期与特定帐号、授权方和 extra 同步。
新的清单元素和属性
- 如需指定应用的首选安装位置(请参阅上文的在外部存储介质上安装应用),请执行以下操作:
<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 差异报告。