Android 15应用适配指南:Android 15废弃API


Android系统版本适配,一直是影响App上架Google Play非常重要的因素。素。

本篇是适配指南系列第四篇,Android 15废弃API。

注意:Android 15应用适配指南系列文章,均以小米14手机搭建Android 15为基准适配。

一、Android 15废弃API

1、弃用WebView中的WebSQL

WebSQL从Chrome中被移除,并且在Android WebView中弃用。推荐使用localStorage、sessionStorage、IndexedDB或者SQLite Wasm作为WebView内数据库的解决方案。

2、使用Spatializer代替Virtualizer

1.1、特性背景

Spatializer 类在 Android 12(API 级别 32)中首次添加,可让应用查询设备上声音空间化的功能和行为。在 Android 15 中,Google废弃了 Virtualizer 类。如果支持空间化,请改用AudioAttributes.Builder.setSpatializationBehavior 来描述您希望的内容播放方式。

1.2、适用范围

Android 15上废弃的API。

1.3、特性内容

  • Virtualizer,API level 9中新增,API level VanillaIceCream 中废弃。
  • AudioAttributes.Builder,API level 21中新增。
  • Spatializer,API level 32中新增。

Virtualizer提供了音频效果处理的能力,特别是用于创建虚拟环绕声效果。这个类是android.media.audiofx包的一部分,通常用于增强音乐或其他音频内容的立体声效果,使听众感觉声音来自不同的方向,即便是使用普通的立体声耳机。

Spatializer 是 Android 提供的一个音频效果类,它允许开发者在音频播放中添加三维空间效果,使得声音给人的感觉好像是在真实世界中的某个位置发出的。这种效果特别有用于游戏和虚拟现实应用,可以提高用户的沉浸感。Spatializer 效果通过模拟声音的传播和反射,改变音频的频率和延迟,从而在听者的耳朵中重建声音源的位置感。这可能包括处理如回声、混响和其他因素,这些都是在现实世界中确定声音位置的线索。

Virtualizer 此类在 API 级别 VanillaIceCream 中已弃用。 使用Spatializer该类来查询平台在空间化(音频通道虚拟化的另一个名称)方面的功能,以及AudioAttributes.Builder.setSpatializationBehavior(int)在支持空间化时描述您希望如何播放内容的功能。

1.4、应用适配

使用Virtualizer,需要遵循以下步骤:

1、实例化Virtualizer对象:首先,你需要根据需要播放音频的音轨(AudioTrack)或媒体播放器(MediaPlayer)的音频会话ID来创建一个Virtualizer对象。

2、配置Virtualizer:通过调用setStrength()方法,你可以设置虚拟环绕效果的强度。有些设备可能不支持所有强度设置,因此最好是检查设备支持的范围。

3、启用Virtualizer:通过调用setEnabled(true)方法来启用虚拟效果。

4、使用完成后释放资源:使用完毕后,调用release()方法释放Virtualizer对象占用的资源。

// 获取AudioManager实例
val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
// 生成一个新的音频会话ID
val audioSessionId = audioManager.generateAudioSessionId()
// 创建一个Virtualizer实例
val virtualizer = Virtualizer(0, audioSessionId)
// 检查是否支持强度调整,并设置强度
if (virtualizer.strengthSupported) {
    virtualizer.strength = 1000.toShort()
}
// 启用Virtualizer
virtualizer.enabled = true

// ... 使用Virtualizer
// 请确保在不再使用时释放Virtualizer资源
// virtualizer.release()

在 Android 设备上,Spatializer 效果是通过 android.media.audiofx.Spatializer 类提供的,该类是 AudioEffect 的子类。以下是该类的基本要素:

  • 音频会话 ID:Spatializer 需要与一个特定的音频会话关联,这个会话代表了一个音频流。音频会话 ID 通常来自 MediaPlayerAudioTrack 或其他音频源。
  • 空间化行为:可以设置空间化的行为。例如,可以设置为自动(SPATIALIZER_BEHAVIOR_AUTO),在这种模式下,空间化效果会根据内容和用户的听觉偏好自动应用。
  • 可用性检查:在尝试设置之前,需要检查 Spatializer 是否在当前设备上可用。这可以通过调用 isAvailable 方法来完成。
  • 启用/禁用:调用 setEnabled(true) 或者直接设置 enabled 属性来启用 Spatializer。如果需要关闭空间化效果,可以设置为 false

注意事项:

  • 性能影响:空间化处理可能会增加 CPU 负载,所以在性能受限的设备上使用时需要谨慎。
  • 兼容性:并非所有 Android 设备都支持空间化,有些设备可能缺少必要的硬件或软件支持。
  • 资源管理:确保及时释放 Spatializer 实例以避免资源泄漏。
  • 用户体验:调整空间化效果以提供最佳用户体验,过度的或不恰当的空间化处理可能会导致用户感到不适。

二、结语

以上就是Android 15废弃API,这也是Android 15应用适配指南系列最终篇。

当然在App提交Google Play前,需要尽可能在多种不同 Android 版本的设备上进行充分测试,覆盖低版本到高版本,尽可能模拟用户的真实使用场景,检查应用在不同系统版本上的功能完整性、稳定性和兼容性等。

最后,希望Android 15应用适配指南对各位出海大佬们有所帮助,上架Google Play都能顺顺利利!