Android Q 音頻獲取指南

作者: Don Turner, 開發技術推廣工程師, Android Media 團隊

Android Q 新引入的 AudioPlaybackCapture API 允許應用獲取其它應用中的音頻。在這個 API 的幫助下,開發者將順利處理多種業務場景,爲用戶提供輕鬆簡便的內容分享與無障礙體驗。

部分常見用例包括:

實時字幕: 爲正在播放的音頻文件提供實時字幕和翻譯。實際上,今年 I/O 開發者大會上展示的Live Caption 示例應用就利用了該 API 開發。Live Caption 爲用戶創造了一種全新的音頻交互方式,例如在公共場所沒有耳機來收聽音頻,而這些體驗在此之前是無法或者很難實現的。

遊戲錄音與直播: 錄製遊戲內聲音,並將它們直播給線上觀衆,進而擴大遊戲內容的社交影響力。

不過,在某些情況下,開發者可能並不希望自己應用的音頻被獲取。本文解釋了音頻獲取對用戶的影響,並介紹了一些防止獲取的具體操作,在必要時,開發者們可以通過這些操作以禁止其它應用獲取自己的音頻。

用戶界面長什麼樣?

爲了獲取其它應用的音頻,應用必須首先從用戶那裏獲得 RECORD_AUDIO 權限

此外,應用還需在獲取開始前調用 MediaProjectionManager.createScreenCaptureIntent(),這會向用戶顯示如下對話框:

用戶點擊 "現在開始" 後,獲取會話便會正式啓動,屆時,設備上的視頻和音頻均會被獲取。

在獲取過程中,狀態欄中的投射圖標會一直處於紅色狀態。

我的應用中的音頻會被獲取嗎?

應用中的音頻在默認設置下能否被獲取,取決於應用的目標 API 等級,詳細行爲如下表所示:

明確同意

用途類型

禁止第三方應用獲取音頻

有時候,開發者可能並不希望其它應用獲取自己的音頻,比如說,當音頻包含:  

  >敏感信息,如私人錄音。

  >受版權保護的材料,如版權音樂或從影視作品中截取的音頻選段。

應用的音頻獲取政策有兩種: 

1.針對所有音頻。

2.針對單個音頻播放器。

禁止第三方應用獲取所有音

您可以通過以下兩種方式,禁止第三方應用獲取應用中的所有音頻:

1.請將下方代碼添加至 AndroidManifest.xml

<application

...

android:allowAudioPlaybackCapture="false"/>

2.通過編程的方式,禁止獲取行爲: 在播放音頻文件前,運行下方代碼

AudioManager.setAllowedCapturePolicy(ALLOW_CAPTURE_BY_SYSTEM)


禁止第三方應用通過某個播放器獲取音頻

如果您想限制某個播放器的獲取功能,請在創建它時設置獲取政策:

AudioAttributes.Builder.setAllowedCapturePolicy(ALLOW_CAPTURE_BY_SYSTEM)

該方法適用於播放內容包含多類授權協議的情況,比如說,同時含有受版權保護的內容與免版稅的內容。

禁止系統應用及組件獲取音頻

在默認設置下,系統應用和部件能夠獲取用途爲 MEDIA (媒體), GAME (遊戲) 和 UNKNOWN (未知) 的音頻文件,這會用於支持實時字幕等重要的無障礙功能。

在極少數情況下,開發者也希望自己能夠像管理第三方應用一樣,禁止系統應用獲取音頻。請注意,當您禁止系統獲取時,任何第三方應用的獲取也將被禁止。

禁止獲取所有音頻

該操作只能通過程序方式實現,請您在播放音頻前運行以下代碼:

AudioManager.setAllowedCapturePolicy(ALLOW_CAPTURE_BY_NONE)


針對單個播放器停用獲取

如需禁止某個播放器獲取音頻,請在創建它時設置以下獲取政策:

AudioAttributes.Builder.setAllowedCapturePolicy(ALLOW_CAPTURE_BY_NONE)


下一步

如果應用的目標 API 等級爲 28 或以下,而且您希望允許音頻獲取,請在應用的 manifest.xml 文件中添加 android:allowAudioPlaybackCapture="true"

如果您希望禁止部分或全部音頻被獲取,請根據上文所示操作更新應用。

更多內容,請前往Android 開發者官方文檔查看。

 點擊這裏提交產品反饋建議

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章