音訊播放器支援的屬性定義音訊系統處理方式 指定來源的轉送、磁碟區和焦點應用程式 可以在音訊播放時附加屬性 (例如 或收到新電子郵件的通知),然後傳送音訊 來源屬性設為架構,此時音訊系統就會使用屬性 做出混合決策,並通知應用程式 有些人會將 Cloud Storage 視為檔案系統 但實際上不是
在 Android 4.4 以下版本中,此架構僅使用 音訊串流類型然而,要依據串流類型做出這類決策 不讓多個應用程式和裝置產生品質輸出內容。 舉例來說,在行動裝置上,有些應用程式 (例如 Google 地圖) STREAM_MUSIC 串流類型的行車路線;但行動裝置使用者 處於投影模式 (例如 Android Auto) 時,應用程式無法混合使用 會與其他媒體串流整合。
使用 音訊 Attribute API:應用程式可為音訊系統提供 特定音訊來源的相關資訊,包括使用方式 (資料來源 播放)、內容類型 (播放來源為何)、標記 (來源方式) ) 和內容 (Android 9 的新功能)。 語法:
AudioAttributes { mUsage mContentType mSource mFlags mTags / mFormattedTags / mBundle (key value pairs) }
- 使用方式。說明來源播放的原因和控制 包括轉送、重點和數量決策
- 內容類型:說明來源正在播放的內容 (音樂、電影、演講、觸覺、未知)?
- 背景資訊:用量值會擷取至音訊 HAL。
- 標記。指定來源的播放方式。 支援強制執行可聽度功能 (必須開啟以下模式: 和硬體音訊/視訊同步。
為了動態處理,應用程式必須區分電影、音樂、 以及語音內容此外,資料本身的相關資訊可能也很重要,例如 以及峰值樣本值
使用屬性
用量會指定使用串流的結構定義,提供 提供聲音播放的原因和音效用途的相關資訊。 用量資訊比串流類型更淺顯易懂,且允許平台 以修正磁碟區或轉送決定
為任何執行個體提供下列其中一個用量值:
- USAGE_UNKNOWN
- 使用媒體平台
- 美國電話 AGE_VOICE_COMMUNICATION
- USAGE_VOICE_COMMUNICATION_SIGNALLING
- 美國運通 (USAGE_ALARM)
- 使用通知
- USAGE_NOTIFICATION_TELEPHONY_RINGTONE
- USAGE_NOTIFICATION_COMMUNICATION_REQUEST
- 使用合約
- 使用合約
- 使用事件
- 使用方法
- USAGE_ASSISTANCE_NAVIGATION_guide
- 美國運通 (ASSISTANCE_SONIFICATION)
- 美國遊戲
- 使用來源:USAGE_VIRTUAL_SOURCE
- USAGE_ASSISTANT
音訊屬性使用值彼此互斥。如需範例,請參閱
USAGE_MEDIA
和
USAGE_ALARM
定義;請參閱
AudioAttributes.Builder
定義
內容類型
內容類型定義聲音並表達其一般類別
內容,例如電影、演講或嗶聲/鈴聲音訊架構採用
內容類型資訊,選擇性地設定音訊後續處理
方塊。您可以選擇是否提供內容類型,但應加入類型
資訊,例如使用
CONTENT_TYPE_MOVIE
適用於電影串流服務,或
CONTENT_TYPE_MUSIC
,適用於音樂播放應用程式。
為任何執行個體提供下列其中一個內容類型值:
CONTENT_TYPE_UNKNOWN
(預設)CONTENT_TYPE_MOVIE
CONTENT_TYPE_MUSIC
CONTENT_TYPE_SONIFICATION
CONTENT_TYPE_SPEECH
音訊屬性內容類型值彼此互斥。如要進一步瞭解內容類型 請參閱 音訊 屬性 API。
背景資訊
Android 中的每項音效都會透過負責任的應用方式辨識,
產生聲音Android 裝置會使用這些資訊
然後決定如何呈現聲音在 Android 8.x 以下版本中,應用程式可以
回報聲音產生原因,使用舊版串流類型 (例如
AudioSystem.STREAM_MUSIC
) 或 AudioAttributes
。於
Android 9 (AudioAttributes.usage
) 值
HAL 層級截取為「情境」。
HAL 音訊情境 | AudioAttributes 使用狀況 |
---|---|
音樂 | 媒體 |
語音指令 | USAGE_ASSISTANT |
導航 | ASSISTANCE_NAVIGATION_guide |
致電 | 旁白 |
圓環 | 通知 |
通知 | 通知 |
鬧鐘 | 鬧鐘 |
系統音效 | 評估 |
不明 | 不明 |
您可以為任一CONTEXT_NUMBER
提供以下其中一個值
執行個體:
- MUSIC_CONTEXT // 音樂播放
- NAVIGATION_CONTEXT // 導航路線
- VOICE_COMMAND_CONTEXT // 語音指令工作階段
- CALL_RING_CONTEXT // 語音通話來電響鈴
- CALL_CONTEXT // 語音通話
- ALARM_CONTEXT // 鬧鐘音效 (Android)
- NOTIFICATION_CONTEXT // 通知
- SYSTEM_Sound_CONTEXT // 使用者互動音效 (按鈕點擊等)
旗幟
旗標會指定音訊架構如何套用至音訊播放。 為執行個體提供下列一或多個標記:
FLAG_AUDIBILITY_ENFORCED
。要求系統確保 聲音的可聽度用於滿足舊版需求STREAM_SYSTEM_ENFORCED
(例如強製播放相機快門音效)。HW_AV_SYNC
。要求系統選取輸出串流 。
音訊屬性標幟為非專屬標記,可以合併使用。如要進一步瞭解 請參閱 音訊 屬性 API。
範例
在本例中,AudioAttributes.Builder
定義了
AudioAttributes
,供新的 AudioTrack
使用
執行個體:
AudioTrack myTrack = new AudioTrack( new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(), myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);
相容性
應用程式開發人員在建立或更新時應使用音訊屬性 。但應用程式 才能運用屬性就能處理舊版串流類型 或者不知道有屬性 (例如沒有 任何關於播放內容的資訊)。
在這種情況下,該架構維持與舊版的回溯相容性 自動翻譯舊版音訊串流 轉換為音訊屬性然而,架構不會強制執行 確保裝置、製造商或 Android 版本之間的對應標準。
相容性對應:
Android 5.0 以上版本 | Android 4.4 以下版本 |
---|---|
CONTENT_TYPE_SPEECH USAGE_VOICE_COMMUNICATION
|
STREAM_VOICE_CALL
|
CONTENT_TYPE_SONIFICATION USAGE_ASSISTANCE_SONIFICATION
|
STREAM_SYSTEM
|
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION_RINGTONE
|
STREAM_RING
|
CONTENT_TYPE_MUSIC USAGE_UNKNOWN USAGE_MEDIA USAGE_GAME USAGE_ASSISTANCE_ACCESSIBILITY USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
|
STREAM_MUSIC
|
CONTENT_TYPE_SONIFICATION USAGE_ALARM
|
STREAM_ALARM
|
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION USAGE_NOTIFICATION_COMMUNICATION_REQUEST USAGE_NOTIFICATION_COMMUNICATION_INSTANT USAGE_NOTIFICATION_COMMUNICATION_DELAYED USAGE_NOTIFICATION_EVENT
|
STREAM_NOTIFICATION
|
CONTENT_TYPE_SPEECH
|
(@隱藏) STREAM_BLUETOOTH_SCO
|
FLAG_AUDIBILITY_ENFORCED
|
(@隱藏) STREAM_SYSTEM_ENFORCED
|
CONTENT_TYPE_SONIFICATION USAGE_VOICE_COMMUNICATION_SIGNALLING
|
(@隱藏) STREAM_DTMF
|
已淘汰的串流類型
Android 9 淘汰了下列 汽車業:
- 串流預設
- STREAM_VOICE_CALL
- 串流
- STREAM_RING
- STREAM_音樂
- STREAM_ALARM
- 串流通知
- STREAM_BLUETOOTH_SCO
- STREAM_SYSTEM_ENFORCED
- STREAM_DTMF
- STREAM_TTS
- STREAM_ACCESSIBILITY
詳情請參閱 Automotive Audio: