音訊屬性

音訊播放器支援的屬性定義音訊系統處理方式 指定來源的轉送、磁碟區和焦點應用程式 可以在音訊播放時附加屬性 (例如 或收到新電子郵件的通知),然後傳送音訊 來源屬性設為架構,此時音訊系統就會使用屬性 做出混合決策,並通知應用程式 有些人會將 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_MEDIAUSAGE_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