Android手機支持多個應用同時播放音頻。操做系統會把多個音頻流混合在一塊兒播放,可是多個應用同時播放音頻,給用戶帶來的體驗每每不佳。爲了提供更友好的用戶體驗,Android提供了一個API,讓應用程序能夠共享音頻焦點,旨在保證同一時段內只有一個應用能夠維持音頻聚焦。html
本系列文章旨在讓您深刻理解音頻焦點的含義,使用方法和其對用戶體驗的重要性。本篇文章是該系列的第一部分,該系列三篇文章包含了:前端
音頻焦點的良好協做性,主要依賴於應用程序是否遵循音頻焦點指南,操做系統沒有強制執行音頻焦點的規範來約束應用程序,若是應用選擇在失去音頻焦點後繼續大聲播放音頻,會帶來不良的用戶體驗,可能直接致使應戶卸載應用,但這是沒法阻止的行爲,只能靠開發者自我約束。react
下面是一些音頻焦點使用場景(假設用戶正在使用您的應用播放音頻)。android
當您的應用須要播放聲音的時候,應該先請求音頻聚焦,在得到音頻焦點後再播放聲音。ios
您的音頻1和另外一個應用的音頻2會重疊播放,用戶沒法正常聽到來自任何應用的音頻,這樣的用戶體驗很不友好。git
在另外一個應用須要播放音頻時,它會請求音頻焦點常駐,即音頻永久聚焦。一旦系統受權,它便會開始播放音頻,這時候您的應用須要響應音頻焦點的丟失通知,中止播放。這樣用戶就只會聽到另外一個應用的音頻。github
一樣的道理,假如過了五分鐘,您的應用須要播放音頻,您一樣須要申請音頻焦點,一旦得到系統受權,咱們就能夠開始播放音頻,其它應用響應音頻焦點丟失通知,中止播放。後端
手機響鈴後,用戶會聽到鈴聲和您的手機音頻疊加在一塊兒播放。若是用戶選擇直接掛斷電話,您的音頻會保持播放。若是用戶選擇接通電話,他會聽到通話聲音和您的應用音頻疊加在一塊兒播放,掛斷通話後您的應用音頻會保持播放。不管如何,您的應用音頻將全程保持播放狀態。這帶來的通話體驗極差。session
當手機響鈴(您還未接通電話), 您的應用應該選擇相應的迴避(這是系統應用的要求)措施來響應短暫的音頻焦點丟失。迴避的措施能夠是把應用的音量下降到百分之二十,也能夠是直接暫停播放(若是您的應用是播客類,語音類應用)。app
當您的應用須要輸出音頻時,應該請求音頻焦點。只有在得到音頻焦點後,才能開始播放。可是,在播放過程當中可能沒法把音頻焦點一直據爲己有,由於其它應用程序能夠發出音頻焦點的請求來搶佔音頻焦點,這種狀況下,您的應用能夠選擇暫停播放或者下降音量,這樣用戶才能更清晰地聽到其它應用程序的音頻。
想詳細瞭解更多應用程序中音頻焦點的場景用例,請閱讀本系列 第二篇文章。
理解音頻焦點 (第2/3部分) - Nazmul Idris (Naz) - Medium
想學習怎麼在您的應用中實現音頻焦點的相關操做,請閱讀本系列 第三篇文章(終章)。
理解音頻焦點 (第3/3部分) - Nazmul Idris (Naz) - Medium
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、React、前端、後端、產品、設計 等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。