Android 15 Beta 提供音量控制功能,并改进卫星连接特性
Android 15 引入对 CTA-2075 音量标准的支持。该标准旨在确保不同类型的内容之间或设备之间音频响度级别一致,减少用户调整音量的次数,改善用户体验。它可以根据输出设备上的信息以及 ACC 音频内容中可用的元数据自动调整音频响度和动态范围压缩级别。
有一点需要注意的是,只有在 AAC 内容中提供了响度元数据时才能启用此功能。LoudnessCodecController.create (mSessionId);
负责音频的自动更新:
// 包含 MPEG_4 或 MPEG_D 类型元数据的媒体文件
val mediaCodec = ...
val audioTrack = AudioTrack.Builder()
.setSessionId(sessionId)
.build()
...
// 创建新的响度控制器,将参数应用于 MediaCode
try {
val lcController = LoudnessCodecController.create(mSessionId)
// 开始将音频更新应用到每一个新增的 MediaCodec
屏幕录制检测允许应用检测它们是否正在被录制。该功能可以通过回调来执行。当应用执行敏感操作时,这项功能非常有用,它使开发人员可以通知用户他们的行为正在被记录。回调的注册方法如下:
val mCallback = Consumer { state ->
if (state == SCREEN_RECORDING_STATE_VISIBLE) {
// 我们正在被录制
} else {
// 我们现在没有被录制
}
}
override fun onStart() {
super.onStart()
val initialState =
windowManager.addScreenRecordingCallback(mainExecutor, mCallback)
mCallback.accept(initialState)
}
override fun onStop() {
super.onStop()
windowManager.removeScreenRecordingCallback(mCallback)
}
该版本扩展了卫星连接支持,其中包括增加 UI 元素,为用户提供一致的体验,并且支持 SMS、MMS 应用以及预装 RCS 应用使用卫星连接发送和接收消息。如果开发人员想要检测设备何时连接到了卫星,则可以使用ServiceState.isUsingNonTerrestrialNetwork()
。在 Android 15+ 中,如果以 SDK 35 作为目标平台,那么应用将默认进入无边模式。开发人员无需调用Window.setDecorFitsSystemWindows(false)
或enableEdgeToEdge()
来显示系统栏后面的内容。但是,谷歌建议在早期的 Android 版本上调用enableEdgeToEdge()
。有一些 Material 3 可组合组件可以帮助开发人员处理 inset 并实现无边框应用。
(图片来自 Anroid 开发博客)
为了使 Android 与 OpenJDK 17 LTS 保持一致,这个最新版本的操作系统对许多 Android 核心库做了更新。其中包括改进 NIO 缓冲区)、Streams 以及新增的 Math 和 StrictMath 方法。包java.util
的更新涉及 SequencedCollection, SequencedMap 和 SequencedSet。此外,该版本还实现了一些安全方面的更新,如 X500PrivateCredential 和安全密钥更新。根据谷歌的说法,超过 10 亿运行 Android 12(API level 31)及更高版本的设备通过 Google Play 系统更新更新了这些 API。
Android 15 还引入了新的 SQLite API,使开发人员可以使用 SQLite 引擎的高级功能,解决应用中的性能问题。建议开发人员遵循 SQLite 性能最佳实践,特别是在处理大型数据库或运行对延迟敏感的查询时。以下是针对具体问题的一些建议:
只读延迟事务:对于只读事务,使用 beginTransactionReadOnly() 和 beginTransactionWithListenerReadOnly(SQLiteTransactionListener) 发出只读 DEFERRED。
行计数和 ID:要返回最新 SQL 语句插入 / 更新 / 删除的行数,使用 getLastChangedRowCount(),而 getTotalChangedRowCount() 返回当前连接上变化的行数,getLastInsertRowId() 返回当前连接上插入的最后一行的 rowid。
原始语句:使用原始 SQlite 语句,绕过便捷包装器和它们可能造成的额外处理开销。在 Android 15 Developer Preview 2 中,PdfRenderer API 现在允许应用引入一些高级功能,如渲染受密码保护的文件、注解、表单编辑、通过复制进行搜索和选择等。此外,
PdfRenderer
移到了一个可以通过 Google Play 系统更新进行更新的模块,可以独立于平台发布更新。
用户可以通过任何受支持的 Pixel 设备或 Android Studio 中的 Android Emulator 系统镜像使用 Android 15 Beta。
要查看新特性和 API 的完整列表,请查看 Android 15 Beta 特性概述。
原文链接:
https://www.infoq.com/news/2024/04/android-15-beta/
声明:本文为 InfoQ 翻译,未经许可禁止转载。
谷歌大裁员引发元老集体抗议:领导脑袋空空,无能的中层管理团队不断扩大
“真男人就应该用 C 编程”!用 1000 行 C 代码手搓了一个大模型,Mac 即可运行,特斯拉前 AI 总监爆火科普 LLM
德国再次拥抱Linux:数万系统从windows迁出,能否避开二十年前的“坑”?
微信扫码关注该文公众号作者