理解音頻焦點 (第 2/3 部分):更多的音頻焦點用例

本系列的第一篇文章介紹了您可能遇到的兩種最多見的使用狀況,其中音頻焦點對您應用的用戶體驗相當重要。本文將繼續介紹一些用例,並介紹應用能夠請求的音頻焦點類型的概念,以幫助應用微調音頻。git

用例一 :當後臺運行的導航程序正在播報轉向語音的時候,另外一個應用正在播放音樂。

您的應用不處理音頻焦點的狀況下:github

導航語音和音樂混在一塊兒播放將會使用戶分心。後端

您的應用處理了音頻焦點的狀況下:測試

當導航開始播報語音的時候,您的應用須要響應音頻焦點丟失,選擇迴避模式,下降聲音。翻譯

這裏所說的迴避模式,沒有約束規定,建議您作到把音量調節到百分之二十。有一些特殊的狀況,若是應用是有聲讀物,播客或口語類應用,建議暫停聲音播放。設計

當語音播報完,導航應用會釋放掉音頻焦點,您的應用能夠再次得到音頻聚焦,而後恢復到原有音量播放(選擇下降音量的迴避模式時),或者恢復播放(選擇暫停的迴避模式時)。cdn

用例二 :用戶在打電話的時候啓動遊戲(遊戲播放音頻)

您的應用不處理音頻焦點的狀況下:blog

通話聲音和遊戲聲音的重疊播放一樣會讓用戶的體驗很是糟糕。遊戲

您的應用處理了音頻焦點的狀況下:

在 Android O 中,有一個應對諸如本用例的音頻焦點的功能,叫作延遲音頻聚焦

假如當用戶在通話中打開遊戲,他們想玩遊戲,不想聽到遊戲聲音。可是當他們通話結束的時候他們想聽到遊戲聲音(通話應用暫時持有音頻焦點)。若是您的應用支持延遲音頻聚焦,會發生以下狀況:

  1. 當您的應用申請音頻焦點的時候,會被拒絕並鎖住,通話應用繼續持有音頻焦點,您的應用所以不播放音頻。由於您的應用是遊戲,能夠正常繼續操做,只是沒有聲音。
  2. 當通話結束,您的應用會被受權延遲音頻聚焦。這個受權是來自剛纔申請音頻聚焦被拒絕後鎖住的那個請求,它只是被延遲一段時間後再受權給您。您能夠像上文建議應對音頻焦點得失的處理方式那樣處理,在本例中,此時即可以開始恢復播放。
    目前低於 Android O 的版本是不支持延遲音頻聚焦這個功能的,因此本用例在其它版本下,應用並不會延遲得到音頻焦點。

用例三 :導航應用或其它能生成音頻通知的應用程序

若是您正在開發一款可以在短期內以突發的方式生成音頻的應用程序,提供良好的音頻焦點用戶體驗是很是重要的。相似的應用程序功能如:生成通知聲音,提醒聲音或一次又一次地在後臺生成口語播放的應用程序。

假設您的應用正在後臺運行,而且即將生成一些音頻。 用戶正在收聽音樂或播客,而您的應用正好在短期內生成音頻:

在您的應用程序生成音頻以前,它應該請求短暫的音頻焦點。 只有當它被授予焦點時,才能播放音頻。優秀的應用程序應該遵照音頻焦點的短暫丟失選擇下降音量,若是搶佔音頻焦點的應用程序是播客應用程序,則您能夠考慮暫停,直到從新得到音頻焦點以恢復播放爲止。未能正確請求音頻焦點將致使用戶同時聽到音樂(或播客)和您的應用音頻。

用例四 :錄音應用程序或語音識別應用程序

若是您正在開發一款須要在一段時間內錄製音頻的應用程序,在這段時間內系統或其餘應用程序不該該發出任何聲音(通知或其餘媒體播放),這時處理好音頻焦點對於提供良好的用戶體驗相當重要。須要作到這些的程序如:錄音或語音識別應用程序

您的應用請求得到的音頻焦點,若是是來自於系統受權的,那麼即可以安心地開始錄製,由於系統瞭解並確保手機在此期間可能生成或存在的其它音頻不會干擾到您的錄製。在此期間,來自於其它應用的音頻焦點申請都會被系統拒絕。當錄製完成記得釋放音頻焦點,以便系統受權其它應用正常播放聲音。

總結

當您的應用程序須要輸出音頻時,應該請求音頻焦點(而且能夠請求不一樣類型的焦點)。

只有在得到音頻焦點以後,才能播放聲音。可是,在獲取音頻焦點以後,您的應用程序在完成播放音頻以前可能沒法一直保留它。

另外一個應用程序能夠請求並搶佔音頻焦點。在這種狀況下,您的應用程序應該暫停播放或下降其音量,以便讓用戶更清晰地聽到新的音頻來源。

在 Android O 上,若是您的應用程序在請求音頻焦點時被拒,系統能夠等音頻焦點空閒時發送給您的應用程序(延遲聚焦)。

想詳細瞭解如何在您的應用中用代碼實現音頻焦點,請閱讀 第三篇文章

理解音頻焦點 (第 3/3 部分) - Nazmul Idris (Naz) - Medium

Android多媒體開發資源


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOSReact前端後端產品設計 等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索