Android Framework 之 AudioDeviceBroker

一、核心定位与架构位置
  1. 路径
    base/services/core/java/com/android/server/audio/AudioDeviceBroker.java

  2. 层级关系

    AudioService AudioDeviceBroker AudioSystemAdapter AudioDeviceInventory AudioSystem JNI

    • 上承:AudioService(音频总控服务)
    • 下接:AudioSystemAdapter(音频系统操作代理)
二、核心职责与功能
  1. 音频设备生命周期管理

    • 动态感知:监控设备插拔事件(耳机、USB声卡、蓝牙等)
    • 状态维护 :通过 mDeviceList 实时记录设备连接状态
    • 路由决策:基于优先级自动切换输出设备(如耳机插入时从扬声器切到耳机)
  2. 跨设备协调

    方法 作用场景
    setWiredDeviceConnectionState() 处理有线设备(耳机/USB)连接事件
    setBluetoothA2dpDeviceConnectionState() A2DP蓝牙音乐设备状态同步
    setBluetoothHfpDeviceConnectionState() 蓝牙通话设备状态同步
  3. 策略强制执行

    • setForceUse():强制指定音频使用路径(如通话强制走扬声器)
    • 示例场景:车载模式下导航音强制从汽车音响输出
  4. 全局状态协调

    • 维护三大核心数据集:
      • mDeviceList:当前活跃设备列表
      • mRoutes:音频路由策略配置
      • mAudioPolicies:系统级音频策略规则
三、关键协作组件
  1. AudioSystemAdapter

    • 功能代理 :封装对底层音频系统的原子操作

      java 复制代码
      // 示例:设置音量
      audioSystemAdapter.setStreamVolume(STREAM_MUSIC, volume, flags);
    • 操作范围

      • 音量/静音控制
      • 音频均衡器调节
      • 输入/输出设备切换
  2. AudioDeviceInventory

    • 设备清单管理

      java 复制代码
      List<AudioDeviceInfo> devices = audioDeviceInventory.getDevices(); 
    • 功能

      • 枚举当前输入/输出设备
      • 校验设备兼容性(如采样率支持)
      • 处理设备热插拔事件队列
相关推荐
onthewaying1 小时前
Android SurfaceTexture 深度解析
android·opengl
茄子凉心1 小时前
Android Bluetooth 蓝牙通信
android·蓝牙通信·bluetooth通信
开发者驿站2 小时前
2025年保姆级C++环境配置教程(Windows/macOS双平台)
c++·windows·macos
00后程序员张2 小时前
iOS 26 App 运行状况全面解析 多工具协同监控与调试实战指南
android·ios·小程序·https·uni-app·iphone·webview
戴草帽的大z2 小时前
交叉编译FFmpeg:从x264到RK3588部署实战
linux·ffmpeg·rk3588·h.264·aarch64
2501_916007473 小时前
iOS 混淆实战,多工具组合完成 IPA 混淆、加固与发布治理(iOS混淆|IPA加固|无源码混淆|App 防反编译)
android·ios·小程序·https·uni-app·iphone·webview
2501_915918413 小时前
怎么上架 App?iOS 应用上架完整流程详解与跨平台发布实战指南
android·ios·小程序·https·uni-app·iphone·webview
2501_929157683 小时前
【安卓+PC+IOS】psp全中文游戏+高清纹理包+金手指
android·游戏·ios
2501_916008893 小时前
iOS 混淆工具链实战 多工具组合完成 IPA 混淆与加固(iOS混淆|IPA加固|无源码加固|App 防反编译)
android·ios·小程序·https·uni-app·iphone·webview
yinghuaqipao3 小时前
面向对象——设计模式(创建型)
android·java·设计模式