当前位置: 首页 > ops >正文

Android audio之 AudioDeviceInventory

1. 类介绍

AudioDeviceInventory 是 Android 音频系统中的一个核心类,位于 frameworks/base/services/core/java/com/android/server/audio/ 路径下。它负责 管理所有音频设备的连接状态,包括设备的添加、移除、状态更新以及策略应用。

  • 设备连接状态管理:记录所有已连接的音频设备(如蓝牙耳机、有线耳机、USB设备等)。
  • 设备策略协调:处理设备优先级、路由策略(如 A2DP 和 LE Audio 的切换)。
  • 与 AudioPolicyManager 交互:通过 AudioSystem 接口通知底层音频策略管理器(APM)设备状态变化。
  • 广播设备状态变更:发送系统广播(如 ACTION_AUDIO_BECOMING_NOISY)通知应用设备变化。
2. 核心功能
(1) 设备连接状态管理
  • 设备类型:支持多种设备类型(如 DEVICE_OUT_BLUETOOTH_A2DPDEVICE_OUT_WIRED_HEADSET 等)。
  • 设备信息存储:通过 DeviceInfo 类存储设备的类型、地址、名称、编解码格式等信息。
  • 连接/断开处理
    • 连接:调用 AudioSystem.setDeviceConnectionState() 通知底层设备可用。
    • 断开:移除设备并通知底层,处理延迟断开(如蓝牙设备淡出)。
(2) 音频路由策略
  • 蓝牙设备优先级:协调 A2DP、LE Audio、HFP 等蓝牙配置的切换(如 updateBluetoothPreferredModes_l)。
  • 策略应用:通过 setPreferredDevicesForStrategy() 设置设备优先级(如音乐播放优先使用 A2DP)。
(3) 事件通知
  • 系统广播:发送 ACTION_AUDIO_BECOMING_NOISY(当耳机拔出时通知应用暂停播放)。
  • 内部回调:通过 IAudioRoutesObserver
http://www.xdnf.cn/news/17086.html

相关文章:

  • 飞算JavaAI需求转SpringBoot项目:从零到一的沉浸式开发之旅
  • 人工智能之数学基础:利用全概率公式如何将复杂事件转为简单事件
  • 学习游戏制作记录(将各种属性应用于战斗以及实体的死亡)8.5
  • DM8日常运维命令总结(四)
  • Go语言 string
  • 数据结构——双向链表
  • Linux 调度器函数sched_*系统调用及示例
  • 【音视频】WebRTC 一对一通话-信令服
  • Go语言实战案例:使用context控制协程取消
  • 算法训练之哈希表
  • Java后端高频面试题
  • React在使用create-react-app创建项目慢的解决办法
  • python的高校考研交流系统
  • 基于ARM+FPGA多通道超声信号采集与传输系统设计
  • 广州客户 戴尔R720服务器 liunx系统 RAID5无损升级扩容
  • 注意点:Git 从安装到分支协作、冲突解决的完整步骤 ---待修改,没看这个步骤,需要重新整理步骤
  • JavaWeb(苍穹外卖)--学习笔记17(Websocket)
  • 国产三防平板电脑是什么?三防平板推荐
  • 前端包管理器深度对比
  • VUE2 学习笔记18 路由守卫
  • Mysql使用Canal服务同步数据->ElasticSearch
  • 数据挖掘,到底是在挖掘什么?
  • Golang 基本数据类型
  • 智慧工业复杂目标检测精度跃升:陌讯多模态融合算法实战解析
  • mac前端环境安装
  • 机器学习之KNN、贝叶斯与决策树算法
  • 自动驾驶控制算法——MPC控制算法
  • 浮雕软件Artcam安装包百度云网盘下载与安装指南
  • Redis(六):分布式锁
  • 【机器学习深度学习】 知识蒸馏