- 原文地址:Understanding Audio Focus (Part 2 / 3): More Audio Focus use cases
- 原文作者:Nazmul Idris (Naz)
- 譯文出自:掘金翻譯計劃
- 本文永久連結:github.com/xitu/gold-m…
譯者:oaosj
本系列文章旨在讓您深入理解音訊焦點的含義,使用方法和其對使用者體驗的重要性。本篇文章是該系列的第一部分,該系列三篇文章包含了:- 最常見的音訊焦點用例和成為一個優秀的媒體事業人員的重要性
- 其它一些能體現音訊焦點對應用體驗的重要性的用例 (此篇文章)
- 在您的應用中實現音訊焦點的三個步驟
本系列的第一篇文章介紹了您可能遇到的兩種最常見的使用情況,其中音訊焦點對您應用的使用者體驗至關重要。本文將繼續介紹一些用例,並介紹應用可以請求的音訊焦點型別的概念,以幫助應用微調音訊。
用例一 :當後臺執行的導航程式正在播報轉向語音的時候,另一個應用正在播放音樂。
您的應用不處理音訊焦點的情況下:
導航語音和音樂混在一起播放將會使使用者分心。
您的應用處理了音訊焦點的情況下:
當導航開始播報語音的時候,您的應用需要響應音訊焦點丟失,選擇迴避模式,降低聲音。
這裡所說的迴避模式,沒有約束規定,建議您做到把音量調節到百分之二十。有一些特殊的情況,如果應用是有聲讀物,播客或口語類應用,建議暫停聲音播放。
當語音播報完,導航應用會釋放掉音訊焦點,您的應用可以再次獲得音訊聚焦,然後恢復到原有音量播放(選擇降低音量的迴避模式時),或者恢復播放(選擇暫停的迴避模式時)。
用例二 :使用者在打電話的時候啟動遊戲(遊戲播放音訊)
您的應用不處理音訊焦點的情況下:
通話聲音和遊戲聲音的重疊播放同樣會讓使用者的體驗非常糟糕。
您的應用處理了音訊焦點的情況下:
在 Android O 中,有一個應對諸如本用例的音訊焦點的功能,叫做延遲音訊聚焦。
假如當使用者在通話中開啟遊戲,他們想玩遊戲,不想聽到遊戲聲音。但是當他們通話結束的時候他們想聽到遊戲聲音(通話應用暫時持有音訊焦點)。如果您的應用支援延遲音訊聚焦,會發生如下情況:
- 當您的應用申請音訊焦點的時候,會被拒絕並鎖住,通話應用繼續持有音訊焦點,您的應用因此不播放音訊。因為您的應用是遊戲,可以正常繼續操作,只是沒有聲音。
- 當通話結束,您的應用會被授權延遲音訊聚焦。這個授權是來自剛才申請音訊聚焦被拒絕後鎖住的那個請求,它只是被延遲一段時間後再授權給您。您可以像上文建議應對音訊焦點得失的處理方式那樣處理,在本例中,此時便可以開始恢復播放。
目前低於 Android O 的版本是不支援延遲音訊聚焦這個功能的,所以本用例在其它版本下,應用並不會延遲獲得音訊焦點。
用例三 :導航應用或其它能生成音訊通知的應用程式
如果您正在開發一款能夠在短時間內以突發的方式生成音訊的應用程式,提供良好的音訊焦點使用者體驗是非常重要的。類似的應用程式功能如:生成通知聲音,提醒聲音或一次又一次地在後臺生成口語播放的應用程式。
假設您的應用正在後臺執行,並且即將生成一些音訊。 使用者正在收聽音樂或播客,而您的應用正好在短時間內生成音訊:
在您的應用程式生成音訊之前,它應該請求短暫的音訊焦點。 只有當它被授予焦點時,才能播放音訊。優秀的應用程式應該遵守音訊焦點的短暫丟失選擇降低音量,如果搶佔音訊焦點的應用程式是播客應用程式,則您可以考慮暫停,直到重新獲得音訊焦點以恢復播放為止。未能正確請求音訊焦點將導致使用者同時聽到音樂(或播客)和您的應用音訊。
用例四 :錄音應用程式或語音識別應用程式
如果您正在開發一款需要在一段時間內錄製音訊的應用程式,在這段時間內系統或其他應用程式不應該發出任何聲音(通知或其他媒體播放),這時處理好音訊焦點對於提供良好的使用者體驗至關重要。需要做到這些的程式如:錄音或語音識別應用程式
您的應用請求獲得的音訊焦點,如果是來自於系統授權的,那麼便可以安心地開始錄製,因為系統瞭解並確保手機在此期間可能生成或存在的其它音訊不會干擾到您的錄製。在此期間,來自於其它應用的音訊焦點申請都會被系統拒絕。當錄製完成記得釋放音訊焦點,以便系統授權其它應用正常播放聲音。
總結
當您的應用程式需要輸出音訊時,應該請求音訊焦點(並且可以請求不同型別的焦點)。
只有在獲得音訊焦點之後,才能播放聲音。但是,在獲取音訊焦點之後,您的應用程式在完成播放音訊之前可能無法一直保留它。
另一個應用程式可以請求並搶佔音訊焦點。在這種情況下,您的應用程式應該暫停播放或降低其音量,以便讓使用者更清晰地聽到新的音訊來源。
在 Android O 上,如果您的應用程式在請求音訊焦點時被拒,系統可以等音訊焦點空閒時傳送給您的應用程式(延遲聚焦)。
想詳細瞭解如何在您的應用中用程式碼實現音訊焦點,請閱讀 第三篇文章。
理解音訊焦點 (第 3/3 部分) - Nazmul Idris (Naz) - Medium
Android多媒體開發資源
- 示例程式碼 — MediaBrowserService
- 示例程式碼 — MediaSession Controller Test(帶有音訊焦點測試)
- 瞭解 MediaSession
- 多媒體 API 指南 — 多媒體應用程式概述
- 多媒體 API 指南 — 使用MediaSession
- 使用 MediaPlayer 構建簡單的音訊應用程式
掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 Android、iOS、React、前端、後端、產品、設計 等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。