Android 15 Beta 提供音量控制功能,并改进卫星连接特性

2024-04-26 19:15:24 浏览数 (2)

作者 | Diogo Carleto

译者 | 平川

策划 | Tina

Android 15 引入对 CTA-2075 音量标准的支持。该标准旨在确保不同类型的内容之间或设备之间音频响度级别一致,减少用户调整音量的次数,改善用户体验。它可以根据输出设备上的信息以及 ACC 音频内容中可用的元数据自动调整音频响度和动态范围压缩级别。

有一点需要注意的是,只有在 AAC 内容中提供了响度元数据时才能启用此功能。LoudnessCodecController.create (mSessionId);负责音频的自动更新:

代码语言:javascript复制
// 包含 MPEG_4 或 MPEG_D 类型元数据的媒体文件
val mediaCodec = ...
val audioTrack = AudioTrack.Builder()
                                .setSessionId(sessionId)
                                .build()
...
// 创建新的响度控制器,将参数应用于 MediaCode
try {
   val lcController = LoudnessCodecController.create(mSessionId)
   // 开始将音频更新应用到每一个新增的 MediaCodec

屏幕录制检测允许应用检测它们是否正在被录制。该功能可以通过回调来执行。当应用执行敏感操作时,这项功能非常有用,它使开发人员可以通知用户他们的行为正在被记录。回调的注册方法如下:

代码语言:javascript复制
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 翻译,未经许可禁止转载。

0 人点赞