【連載】IOS12設(shè)計規(guī)范-音頻

用戶通過音量鍵唐责、靜音鍵懈凹、耳機(jī)聲控和屏幕上的音量調(diào)節(jié)滑塊控制聲音。很多 第三方配件也有聲控功能沟堡。音頻可以通過內(nèi)部或外部揚(yáng)聲器侧但、耳機(jī)輸出,甚至 通過支持AirPlay或是藍(lán)牙的設(shè)備來無線輸出航罗。無論聲音是你App的重要功能還 只是一個點(diǎn)綴禀横,你都應(yīng)該知道用戶對聲音有什么期待并且去滿足他們。

音頻處理相對于其它來說是比較麻煩的粥血,即要顧及到音頻的輸入柏锄,同時也需要注意音頻輸入輸出設(shè)置的狀態(tài),同時音頻輸出又可以接入多種設(shè)備的控制复亏。

靜音(Silence)
用戶將他們的設(shè)備調(diào)至靜音來避免被突發(fā)的聲響(比如電話鈴聲和短信提示聲) 打擾趾娃。他們也想要關(guān)閉沒有意義的聲音,包括按鍵聲蜓耻、音效茫舶、游戲背景音樂以 及其它音頻反饋。當(dāng)設(shè)備被設(shè)置成靜音后刹淌,只能播放用戶確認(rèn)打開過的聲音饶氏, 比如媒體播放中的聲音、鬧鐘有勾、音頻和視頻信息疹启。

image.png

聲音(Volume)
無論是使用設(shè)備按鍵或是屏幕中的滑塊,用戶都期望音量的變化會改變整個系 統(tǒng)音量蔼卡,包括音樂聲和App內(nèi)的音效喊崖。但是提示鈴聲音量是例外,它只能在音 頻沒有播放的情況下雇逞,被單獨(dú)調(diào)節(jié)荤懂。
image.png

耳機(jī)(Headphones)

在私密環(huán)境中,用戶使用耳機(jī)聽聲音塘砸,并且能夠解放雙手节仿。當(dāng)插入耳機(jī)時,用 戶希望聲音能夠自動繼續(xù)播放而不被中斷掉蔬。當(dāng)拔掉耳機(jī)時廊宪,他們希望播放能夠 立即暫停矾瘾。


設(shè)計良好的音效體驗(Designing a Great Audio Experience)

有時自動調(diào)整音量,但不是總體音量:你的App可以調(diào)整特定的音量來達(dá)到很棒的音響效果箭启。但是最終的音量還是由系統(tǒng)音量來控制壕翩。

可以允許重置音頻:用戶經(jīng)常會想要選擇一個不同的音頻輸出設(shè)備。比如傅寡,他 們會想要用客廳的立體音響放妈、車載收音機(jī)或是蘋果電視來聽音樂。請支持這個 功能除非你有十足的理由不這么做荐操。
使用系統(tǒng)自帶的音量窗口來調(diào)節(jié)音量:音量窗口是調(diào)整音頻的最好方法大猛。這個 窗口是可以自定義的,它包括一個音量的滑塊淀零,甚至還包括了一個重置音頻輸 出的控件。

使用系統(tǒng)自帶音效來實現(xiàn)短音和振動:了解開發(fā)者指南膛壹,請參閱SystemSoundServices

如果聲音對你的App十分重要驾中,請先設(shè)置音頻類型:不同的音頻類型中,有的允許聲音被靜音鍵靜音模聋、有的與其它聲音混合肩民、或是允許App在后臺時播放。 根據(jù)不同的類別和當(dāng)前設(shè)備的音頻狀態(tài)來選擇合適的方案链方,然后將其配置到你 的音頻中去持痰。例如,非必要情況下祟蚀,請不要打斷用戶正在收聽的來自另一個App 的音樂工窍。總之前酿,當(dāng)你的App在運(yùn)行時患雏,最好不要改變其原有類型,當(dāng)然那種需 要錄制和重放不同時間音頻的App除外罢维。開發(fā)者指南淹仑,請參閱
AudioSessionProgrammingGuide0
音頻處理實例

上邊的類別這塊比較難理解當(dāng)時也不是理解類別里的只個名詞的意思,專門去查了下資料肺孵。

原英文版的意思如下:
個人環(huán)境:solo ambient 環(huán)境:ambient 播放:playback 錄制: record 播放并錄制:play and record

AVAudioSession主要能控制App的哪些表現(xiàn)以及如何控制的呢匀借?首先AVAudioSession將使用音頻的場景分成七大類,通過設(shè)置Session為不同的類別平窘,可以控制:

音頻七個狀態(tài)

可以看到吓肋,其實默認(rèn)的就是“AVAudioSessionCategorySoloAmbient”類別。從表中我們可以總結(jié)如下:

  • AVAudioSessionCategoryAmbient : 只用于播放音樂時初婆,并且可以和QQ音樂同時播放蓬坡,比如玩游戲的時候還想聽QQ音樂的歌猿棉,那么把游戲播放背景音就設(shè)置成這種類別。同時屑咳,當(dāng)用戶鎖屏或者靜音時也會隨著靜音萨赁,這種類別基本使用所有App的背景場景。

  • AVAudioSessionCategorySoloAmbient: 也是只用于播放,但是和"AVAudioSessionCategoryAmbient"不同的是兆龙,用了它就別想聽QQ音樂了杖爽,比如不希望QQ音樂干擾的App,類似節(jié)奏大師紫皇。同樣當(dāng)用戶鎖屏或者靜音時也會隨著靜音慰安,鎖屏了就玩不了節(jié)奏大師了。

  • AVAudioSessionCategoryPlayback: 如果鎖屏了還想聽聲音怎么辦聪铺?用這個類別化焕,比如App本身就是播放器,同時當(dāng)App播放時铃剔,其他類似QQ音樂就不能播放了撒桨。所以這種類別一般用于播放器類App。

  • AVAudioSessionCategoryRecord: 有了播放器键兜,肯定要錄音機(jī)凤类,比如微信語音的錄制,就要用到這個類別普气,既然要安靜的錄音谜疤,肯定不希望有QQ音樂了,所以其他播放聲音會中斷现诀。想想微信語音的場景夷磕,就知道什么時候用他了。

  • AVAudioSessionCategoryPlayAndRecord: 如果既想播放又想錄制該用什么模式呢仔沿?比如VoIP企锌,打電話這種場景,PlayAndRecord就是專門為這樣的場景設(shè)計的 于未。

  • AVAudioSessionCategoryMultiRoute: 想象一個DJ用的App撕攒,手機(jī)連著HDMI到揚(yáng)聲器播放當(dāng)前的音樂,然后耳機(jī)里面播放下一曲烘浦,這種常人不理解的場景抖坪,這個類別可以支持多個設(shè)備輸入輸出。

  • AVAudioSessionCategoryAudioProcessing: 主要用于音頻格式處理闷叉,一般可以配合AudioUnit進(jìn)行使用

音頻處理的七個狀態(tài)介紹完畢擦俐,應(yīng)該大體上能理解音頻各個狀態(tài)的工作原理了。
讓我們再回到原文

當(dāng)時可以重新播放被打斷的音頻:有時正在播放的音頻會被另一個App的音頻中 斷握侧。暫時性中斷(如來電鈴聲)被認(rèn)為是可恢復(fù)的蚯瞧。永久中斷(如Siri打開的音樂播 放列表)被認(rèn)為是無法恢復(fù)的嘿期。當(dāng)一個可恢復(fù)的中斷發(fā)生時,你的APP應(yīng)該在中 斷結(jié)束時自動重新播放被打斷的音頻埋合。例如备徐,一個正在播放配樂的游戲和一個播 放音頻的多媒體App都應(yīng)該可以恢復(fù)播放。


讓其他App知道何時將暫時性的音頻播放完畢:如果你的App可能會暫時中斷其 他App的音頻甚颂,它應(yīng)該對音頻會話進(jìn)行適當(dāng)?shù)臉?biāo)記蜜猾,這樣其他App就能知道何 時可以安全的恢復(fù)。
更多開發(fā)者指南振诬,請參閱AVFoundation中的
AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation蹭睡。


只在特定時間對聲音控件有反應(yīng):不管你的App是在前臺還是后臺運(yùn)行,用戶可 以從你App的外部控制音頻播放赶么,比如控制中心或耳機(jī)控制肩豁。如果你的App正 在音頻相關(guān)的環(huán)境中播放音頻,或者連接到一個支持AirPlay的設(shè)備上辫呻,那么它 可以對音頻控制做出回應(yīng)蓖救。否則,當(dāng)控件激活時印屁,你的App不能停止其他App 正在播放的音頻。


不要重新定義聲音控件:人們希望音頻控制在所有App中都能保持一致斩例。永遠(yuǎn)不 要重新定義聲音控件雄人。如果你的App不支持相應(yīng)控件,那么它就不應(yīng)該對它們 做出響應(yīng)念赶。

總結(jié)础钠,音頻處理的方式介紹完了,其中心點(diǎn)就是音頻的七大狀態(tài)和處理方式的理解叉谜,只要那段能理解這節(jié)基本就搞定旗吁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市停局,隨后出現(xiàn)的幾起案子很钓,更是在濱河造成了極大的恐慌,老刑警劉巖董栽,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件码倦,死亡現(xiàn)場離奇詭異,居然都是意外死亡锭碳,警方通過查閱死者的電腦和手機(jī)袁稽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來擒抛,“玉大人推汽,你說我怎么就攤上這事补疑。” “怎么了歹撒?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵莲组,是天一觀的道長。 經(jīng)常有香客問我栈妆,道長胁编,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任鳞尔,我火速辦了婚禮嬉橙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寥假。我一直安慰自己市框,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布糕韧。 她就那樣靜靜地躺著枫振,像睡著了一般。 火紅的嫁衣襯著肌膚如雪萤彩。 梳的紋絲不亂的頭發(fā)上粪滤,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機(jī)與錄音雀扶,去河邊找鬼杖小。 笑死,一個胖子當(dāng)著我的面吹牛愚墓,可吹牛的內(nèi)容都是我干的予权。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼浪册,長吁一口氣:“原來是場噩夢啊……” “哼扫腺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起村象,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤笆环,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后厚者,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咧织,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年籍救,在試婚紗的時候發(fā)現(xiàn)自己被綠了习绢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖闪萄,靈堂內(nèi)的尸體忽然破棺而出梧却,到底是詐尸還是另有隱情,我是刑警寧澤败去,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布放航,位于F島的核電站,受9級特大地震影響圆裕,放射性物質(zhì)發(fā)生泄漏广鳍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一吓妆、第九天 我趴在偏房一處隱蔽的房頂上張望赊时。 院中可真熱鬧,春花似錦行拢、人聲如沸祖秒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竭缝。三九已至,卻和暖如春沼瘫,著一層夾襖步出監(jiān)牢的瞬間抬纸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工耿戚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留湿故,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓溅话,卻偏偏與公主長得像,于是被迫代替她去往敵國和親歌焦。 傳聞我的和親對象是個殘疾皇子飞几,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348