Android各版本Audio新特性演进史(5.0-16.0)

📌 背景

Android 作为车载信息娱乐系统(IVI)的主流操作系统,其音频框架经历了多次重大演进。从最初的多媒体框架到如今天完整的 Android Automotive Audio(HAA)架构,每个版本都在音频处理能力上有所突破。

本文梳理 Android 5.0 ~ Android 14 各版本中与音频相关的新特性,重点聚焦在车载音频开发中常用到的功能。

📊 版本新特性总览

Android 版本 代号 Audio 新特性 对车载影响
Android 5.0 (Lollipop) Lollipop OpenSL ES 正式支持、AudioTrack/AudioRecord 改进 车机多媒体基础确立
Android 6.0 (Marshmallow) Marshmallow Audio Focus API 重新设计、蓝牙 A2DP 改进 通话/音乐音频焦点管理
Android 7.0 (Nougat) Nougat ProAudio 模式、Dynamics Processing、Tunnel Decode 高保真音频输出、低延迟处理
Android 8.0 (Oreo) Oreo Audio Policy HAL v2、Dynamic Policy、AAudio 预览 车机多分区音频、AAudio 替代 OpenSL
Android 8.1 (Oreo) Oreo MR1 AAudio 正式支持、蓝牙延迟优化 低延迟音频录制/播放
Android 9.0 (Pie) Pie Pre-merging 多媒体合并、音频属性扩展 多APP音频同时播放管理
Android 10 Q HIDL 迁移 AIDL、Offload Effects、蓝牙 LE Audio 准备 车机音频架构现代化
Android 11 R 蓝牙 ABB/AAC 优化、AAudio 稳定性提升 蓝牙音频质量改善
Android 12 S 可变采样率(Variable Sample Rate)、空间音频框架 高分辨率音频支持
Android 13 T USB 音频Class B、HE-AAC 编码改进、空间音频正式API USB 音频设备支持增强
Android 14 U LE Audio Broadcast、XMOS ASIO 兼容性、音频路由框架重构 车载音频多设备互联

🔥 各版本详细说明

Android 5.0 (Lollipop) —— 多媒体框架确立

  • OpenSL ES 正式支持:提供原生 C/C++ 音频接口,替代部分 AudioTrack 功能
  • AudioTrack 改进:支持 32-bit PCM,支持更高采样率
  • Audio Effects:内置 EQ、虚拟化、重低音效果
// AudioTrack 创建示例(5.0+)
AudioAttributes.Builder attributes = new AudioAttributes.Builder()
    .setUsage(AudioAttributes.USAGE_MEDIA)
    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
    .build();

AudioFormat.Builder formatBuilder = new AudioFormat.Builder()
    .setEncoding(AudioFormat.ENCODING_PCM_16BIT)
    .setSampleRate(48000)
    .setChannelMask(AudioFormat.CHANNEL_OUT_STEREO)
    .build();

AudioTrack track = new AudioTrack.Builder()
    .setAudioAttributes(attributes)
    .setAudioFormat(formatBuilder)
    .setBufferSizeInBytes(2048)
    .setTransferMode(AudioTrack.MODE_STREAM)
    .build();

Android 6.0 (Marshmallow) —— Audio Focus 重新设计

  • AudioFocusRequest API:更精细的音频焦点控制
  • 邦定音频焦点与音频流:不再需要手动处理焦点丢失
  • 蓝牙 A2DP 改进:蓝牙音乐播放质量提升
// Audio Focus 请求(6.0+)
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
AudioAttributes playbackAttributes = new AudioAttributes.Builder()
    .setUsage(AudioAttributes.USAGE_MEDIA)
    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
    .build();

AudioFocusRequest focusRequest = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
    .setAudioAttributes(playbackAttributes)
    .setAcceptsDelayedFocusGain(true)
    .setWillPauseWhenDucked(false)
    .build();

int result = audioManager.requestAudioFocus(focusRequest);

Android 7.0 (Nougat) —— ProAudio 与 Tunnel Decode

  • ProAudio 模式:支持超低延迟音频(~10ms),用于专业音频应用
  • Dynamics Processing API:内置 DRC/压缩器/限制器
  • Tunnel Decode:音频解码在 DSP/TDSP 中完成,减轻 CPU 负载,车载导航播报常用
// ProAudio 模式 AudioTrack
AudioTrack track = new AudioTrack.Builder()
    .setAudioAttributes(new AudioAttributes.Builder()
        .setUsage(AudioAttributes.USAGE_MEDIA)
        .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
        .build())
    .setAudioFormat(new AudioFormat.Builder()
        .setEncoding(AudioFormat.ENCODING_PCM_16BIT)
        .setSampleRate(48000)
        .setChannelMask(AudioFormat.CHANNEL_OUT_STEREO)
        .build())
    .setPerformanceMode(AudioTrack.PERFORMANCE_MODE_LOW_LATENCY)  // ProAudio
    .build();

Android 8.0 (Oreo) —— Audio Policy HAL v2 + Dynamic Policy

  • Audio Policy HAL v2:完全重新设计的音频策略引擎,支持多分区(Multi-Zone)
  • Dynamic Policy:运行时动态切换音频路由,无需重启
  • AAudio 预览版:全新的低延迟 C API,轻量级替代 OpenSL ES
  • HAL 层扩展:支持自定义音频设备发现和路由策略
// AAudio 基本使用(8.0+)
AAudioStreamBuilder builder;
AAudioStream *stream;

AAudioStreamBuilder_create(&builder);

AAudioStreamBuilder_setSharingMode(builder, AAUDIO_SHARING_MODE_EXCLUSIVE);
AAudioStreamBuilder_setFormat(builder, AAUDIO_FORMAT_PCM_16BIT);
AAudioStreamBuilder_setChannelCount(builder, 2);
AAudioStreamBuilder_setSampleRate(builder, 48000);
AAudioStreamBuilder_setPerformanceMode(builder, AAUDIO_PERFORMANCE_MODE_LOW_LATENCY);

AAudioStreamBuilder_open(builder, &stream);
AAudioStream_requestStart(stream);

Android 9.0 (Pie) —— Pre-merging 与音频属性扩展

  • Pre-merging 机制:多个音轨合并前可独立控制,车载多媒体多分区核心基础
  • 语音助手音频属性:USAGE_ASSISTANT、CONTENT_TYPE_SPEECH 正式支持
  • 导航播报优先级:ANR(Audio Navigation Route)独立属性,确保播报可打断音乐
// 导航播报音频属性(9.0+)
AudioAttributes navAttributes = new AudioAttributes.Builder()
    .setUsage(AudioAttributes.USAGE_ASSISTANT)  // 9.0 新增
    .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
    .build();

// 传统用法(仍支持)
AudioAttributes navLegacy = new AudioAttributes.Builder()
    .setUsage(AudioAttributes.USAGE_ASSISTANCE_NAVIGATION_GUIDANCE)
    .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
    .build();

Android 10 —— AIDL 迁移与 Offload Effects

  • HIDL → AIDL:音频 HAL 接口从 HIDL 迁移到 AIDL,架构更简洁
  • Offload Effects:DSP 上实现音效(EQ、压缩、限制器),减轻 CPU
  • 蓝牙 LE Audio 准备:为低功耗蓝牙音频做准备
  • 音频路由 API 增强:可查询可用输出设备列表
// AudioManager 路由查询(10+)
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);

String[] devices = am.getAvailableDevices(AudioManager.GET_DEVICES_OUTPUTS);
for (String device : devices) {
    Log.d("AudioRouter", "Available output: " + device);
}

// 设置首选输出设备
am.setDeviceConnectionState(AudioManager.DEVICE_OUT_REMOTE_SUBMIX,
    AudioManager.DEVICE_STATE_AVAILABLE, "submix_tag");

Android 11-12 —— 空间音频与可变采样率

  • Variable Sample Rate(VSR)(12+):输出采样率可动态调整,配合外部 DAC
  • 空间音频框架(12+):内置 Spatializer API,支持头部追踪
  • AAudio 稳定性:大量 bug 修复,生产环境可用
// 空间音频 Spatializer(12+)
SpatialAudioManager spManager = (SpatialAudioManager) 
    context.getSystemService(Context.SPATIAL_AUDIO_SERVICE);


if (spManager.isAvailable()) {
    SpatializerHelper helper = spManager.getSpatializerHelper();
    // 注册监听器处理空间化
}

Android 13-14 —— USB 音频增强与 LE Audio

  • USB Audio Class B(13+):更好的 USB 音频设备兼容性
  • HE-AAC 编码(13+):支持高效 AAC 编码,用于直播/VoIP
  • LE Audio Broadcast(14+):广播音频,类似分享功能,车载多区域娱乐潜在应用
  • 音频路由框架重构:更灵活的设备管理,支持车机多屏互联

💡 车载音频开发关键总结

  • 音源属性选择:正确使用 AudioAttributes 是车载音频策略的基础
  • 焦点管理:Marshmallow 6.0+ 的 AudioFocusRequest 是标准做法
  • 多分区架构:Oreo 8.0 以后的 Audio Policy HAL v2 是车载多区音频核心
  • 低延迟:ProAudio(7.0+)/AAudio(8.1+)用于语音识别和实时音效
  • 外设路由:10+ 的 AudioManager 路由 API 用于管理复杂车载音频拓扑

随着 Android Automotive OS(AAOS)的普及,车载音频系统的复杂度也在不断提升。理解各版本音频框架的演进,是做好车载IVI音频开发的基础。

持续更新中,欢迎补充指正。

发表评论