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.pswp.cn/pingmian/91952.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91952.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91952.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

系統設計入門:成為更優秀的工程師

系統設計入門指南 動機 現在你可以學習如何設計大規模系統,為系統設計面試做準備。本指南包含的是一個有組織的資源集合,旨在幫助你了解如何構建可擴展的系統。 學習設計大規模系統 學習如何設計可擴展系統將幫助你成為更優秀的工程師。系統設計是一個…

Pandas數據分析工具基礎

文章目錄 0. 學習目標 1. Pandas的數據結構分析 1.1 Series - 序列 1.1.1 Series概念 1.1.2 Series類的構造方法 1.1.3 創建Series對象 1.1.3.1 基于列表創建Series對象 1.1.3.2 基于字典創建Series對象 1.1.4 獲取Series對象的數據 1.1.5 Series對象的運算 1.1.6 增刪Series對…

大模型——Qwen開源會寫中文的生圖模型Qwen-Image

Qwen開源會寫中文的生圖模型Qwen-Image 會寫中文,這基本上是開源圖片生成模型的獨一份了。 這次開源的Qwen-Image 的最大賣點是“像素級文字生成”。它能直接在像素空間內完成排版:從小字注腳到整版海報均可清晰呈現,且同時支持英文字母與漢字。 以下圖片均來自官網的生成…

大模型知識庫(1)京東云 JoyAgent介紹

一、核心定位? JoyAgent 是京東云推出的 ?首個 100% 開源的企業級多智能體平臺,定位為“可插拔的智能發動機”,旨在通過開箱即用的產品級能力,降低企業部署智能體的門檻。其特點包括: ?完整開源?:前端&#xff0…

PowerShell 入門2: 使用幫助系統

PowerShell 入門 2:使用幫助系統 🎯 一、認識 PowerShell 幫助系統 1. 使用 Get-Help 查看命令說明 Get-Help Get-Service或使用別名: gsv2. 更新幫助系統 Update-Help3. 搜索包含關鍵詞的命令(模糊搜索) Help *log*&a…

hyper-v實戰系列:顯卡虛擬化(GPU分區)--windows篇詳解

一般來說,windows系統中最常使用的虛擬機就3個:vmware workstation,virtualbox和微軟系統自帶的hyper-v。后面與前兩者最大的區別就是能調用物理顯卡的性能。 我在這篇博文會詳述如何設置windows虛擬機的顯卡虛擬化,并會隨之…

WebGL應用實時云渲染改造后如何與網頁端實現數據通信

WebGL是一種基于OpenGL ES 2.0的Web技術,屬于BS架構,它允許在瀏覽器中渲染交互式3D和2D圖形。 隨著大場景高精度的開發要求深入,對于較高級的 WebGL 應用程序,需要性能更強的系統要求,如仍然維持低端硬件或瀏覽器&…

初始化列表,變量存儲區域和友元變量

前言初始化列表是書寫構造函數的一種方式,某些成員變量之只能通過初始化列表進行初始化。另外學習c不可避免地需要知道什么樣的變量存儲在什么區域當中如棧,堆,靜態區,常量區初始化列表書寫格式書寫上,初始化列表&…

excel插入復選框 親測有效

特別說明 1.開始位置是0 2.\u0052是勾選對號 3.\u25A1是不勾選 4.\u0052長度是1 5.\u25A1長度是1 6.漢字長度是1 7.起止位置不能超過索引位置(比如整體長度是6,截止位置最大填寫5) 示例代碼 package com.zycfc.xz.Util.excel;import org.apache.poi.hssf.usermodel.HSSFRichT…

Mac上優雅簡單地使用Git:從入門到高效工作流

Mac上優雅簡單地使用Git:從入門到高效工作流 本文將帶你解鎖在Mac上優雅使用Git的技巧,結合命令行與圖形工具,讓版本控制變得輕松高效! 一、為什么Mac是Git的最佳搭檔? 天生支持Unix命令:Git基于Linux開發…

一文了解SOA的紋波

什么是光譜紋波我們在SOA/RSOA/SLD的ASE(放大的自發輻射)光譜測試中,經常會觀察到光譜中有周期性的變化,通常我們稱之為紋波。在實際應用中,我們大多不希望這些紋波的存在。添加圖片注釋,不超過 140 字&…

ossutil 使用方法

目錄 ossutil 使用方法 1. 📤 上傳文件/文件夾到 OSS 上傳單個文件: 上傳整個文件夾(遞歸): 2. 📥 從 OSS 下載文件/文件夾 下載單個文件: 下載整個文件夾: ossutil 使用方法…

從“多、老、舊”到“4i煥新”:品牌官方商城(小程序/官網/APP···)的范式躍遷與增長再想象

全新升級版本「佛羅倫薩小鎮奧萊GO」商城正式上線!會員福利加碼 2025年,品牌官方商城應該如何定義?—— 還是一套“電商貨架”? 在商派看來,現如今“品牌官方商城”則需要重新定義,結合不同品牌企業的業務…

WIN QT libsndfile庫編譯及使用

一、概述 libsndfile庫是一個用 C 語言編寫的開源庫,用于讀取和寫入多種音頻文件格式。 環境:QT5.9.9、cmakegui3.23.0、QT的編譯器是minWG32 二、安裝 1、下載libsndfile源碼,連接:https://github.com/libsndfile/libsndfile…

Supergateway教程

Supergateway 是一款專為 MCP(Model Context Protocol)服務器設計的遠程調試與集成工具,通過 SSE(Server-Sent Events)或 WebSocket(WS)協議實現基于 stdio 的服務器與客戶端的高效通信。 Super…

203.移除鏈表元素 707.設計鏈表 206.反轉鏈表

203.移除鏈表元素 Python鏈表節點定義: class ListNode:def __init__(self, val, nextNone):self.val valself.next next 性能分析 鏈表的特性和數組的特性進行一個對比,如圖所示: 203. 移除鏈表元素 這道題就是給大家一個鏈表&#x…

人工智能之數學基礎:利用全概率公式如何將復雜事件轉為簡單事件

本文重點 全概率公式是概率論中的核心工具,用于計算復雜事件的概率。其核心思想是將復雜事件分解為若干互斥且窮盡的簡單事件,通過計算各簡單事件的概率及其條件概率,最終求得目標事件的概率。 全概率公式 全概率公式就是將復雜事件簡單化,定義如下: 如果隨機事件A1,…

飛算JavaAI深度解析:從入門到對比

目錄 一、飛算JavaAI是什么 二、如何注冊和開始使用 三、使用體驗:它能帶來什么 四、與其他大模型的對比分析 五、總結與展望 隨著人工智能技術的飛速發展,大模型在軟件開發領域的應用越來越廣泛。其中,代碼生成工具作為提升開發效率的利…

Flutter各大主流狀態管理框架技術選型分析及具體使用步驟

技術選型決策樹 #mermaid-svg-m5gUL7Cpx4rYV2BQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-m5gUL7Cpx4rYV2BQ .error-icon{fill:#552222;}#mermaid-svg-m5gUL7Cpx4rYV2BQ .error-text{fill:#552222;stroke:#552…

Redis類型之String

1.Redis中的string注意本文以及之后講的redis的類型但是指的value的類型,所有的key都是stringRedis中的字符串,直接就是按照二進制數據的方式存儲的,不會做任何的編碼轉換,這里相對于mysql就比較好(個人感覺&#xff0…