理解音訊焦點 (第1/3部分):常見的音訊焦點用例
Android手機支援多個應用同時播放音訊。作業系統會把多個音訊流混合在一起播放,但是多個應用同時播放音訊,給使用者帶來的體驗往往不佳。為了提供更友好的使用者體驗,Android提供了一個API,讓應用程式可以共享音訊焦點,旨在保證同一時段內只有一個應用可以維持音訊聚焦。
本系列文章旨在讓您深入理解音訊焦點的含義,使用方法和其對使用者體驗的重要性。本篇文章是該系列的第一部分,該系列三篇文章包含了:
- 最常見的音訊焦點用例和成為一個優秀的媒體事業人員的重要性(此篇文章)
- 其它一些能體現音訊焦點對應用體驗的重要性的用例
- 在您的應用中實現音訊焦點的三個步驟
音訊焦點的良好協作性,主要依賴於應用程式是否遵循音訊焦點指南,作業系統沒有強制執行音訊焦點的規範來約束應用程式,如果應用選擇在失去音訊焦點後繼續大聲播放音訊,會帶來不良的使用者體驗,可能直接導致應戶解除安裝應用,但這是無法阻止的行為,只能靠開發者自我約束。
下面是一些音訊焦點使用場景(假設使用者正在使用您的應用播放音訊)。
當您的應用需要播放聲音的時候,應該先請求音訊聚焦,在獲得音訊焦點後再播放聲音。
用例一 : 使用者在使用您的應用播放音訊1時,開啟另一個應用並嘗試播放該應用相關的音訊2
您的應用不處理音訊焦點的情況下:
您的音訊1和另一個應用的音訊2會重疊播放,使用者無法正常聽到來自任何應用的音訊,這樣的使用者體驗很不友好。
您的應用處理了音訊焦點的情況下:
在另一個應用需要播放音訊時,它會請求音訊焦點常駐,即音訊永久聚焦。一旦系統授權,它便會開始播放音訊,這時候您的應用需要響應音訊焦點的丟失通知,停止播放。這樣使用者就只會聽到另一個應用的音訊。
同樣的道理,假如過了五分鐘,您的應用需要播放音訊,您同樣需要申請音訊焦點,一旦獲得系統授權,我們就可以開始播放音訊,其它應用響應音訊焦點丟失通知,停止播放。
用例二 : 當您播放音訊時候,正好手機來電,需要播放響鈴。
您的應用不處理音訊焦點的情況下:
手機響鈴後,使用者會聽到鈴聲和您的手機音訊疊加在一起播放。如果使用者選擇直接結束通話電話,您的音訊會保持播放。如果使用者選擇接通電話,他會聽到通話聲音和您的應用音訊疊加在一起播放,結束通話通話後您的應用音訊會保持播放。無論如何,您的應用音訊將全程保持播放狀態。這帶來的通話體驗極差。
您的應用處理了音訊焦點的情況下:
當手機響鈴(您還未接通電話), 您的應用應該選擇相應的迴避(這是系統應用的要求)措施來響應短暫的音訊焦點丟失。迴避的措施可以是把應用的音量降低到百分之二十,也可以是直接暫停播放(如果您的應用是播客類,語音類應用)。
- 如果使用者拒絕接聽電話,您的應用可以馬上採取響應音訊焦點的獲取,然後做出提高音量或恢復播放的相關操作。
- 如果使用者接聽了電話,作業系統會發出音訊焦點丟失的通知。您的應用應該選擇暫停播放,然後在通話結束後恢復播放。
總結
當您的應用需要輸出音訊時,應該請求音訊焦點。只有在獲得音訊焦點後,才能開始播放。但是,在播放過程中可能無法把音訊焦點一直據為己有,因為其它應用程式可以發出音訊焦點的請求來搶佔音訊焦點,這種情況下,您的應用可以選擇暫停播放或者降低音量,這樣使用者才能更清晰地聽到其它應用程式的音訊。
想詳細瞭解更多應用程式中音訊焦點的場景用例,請閱讀本系列 第二篇文章。
理解音訊焦點 (第2/3部分) – Nazmul Idris (Naz) – Medium
想學習怎麼在您的應用中實現音訊焦點的相關操作,請閱讀本系列 第三篇文章(終章)。
理解音訊焦點 (第3/3部分) – Nazmul Idris (Naz) – Medium
Android多媒體開發資源
- 示例程式碼 — MediaBrowserService
- 示例程式碼 — MediaSession Controller Test (帶有音訊焦點測試)
- 瞭解 MediaSession
- 多媒體API指南 — 多媒體應用程式概述
- 多媒體API指南 — 使用MediaSession
- 使用MediaPlayer構建簡單的音訊應用程式
掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 Android、iOS、React、前端、後端、產品、設計 等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。