IOS代碼修改音量實(shí)例詳解
IOS代碼修改音量實(shí)例詳解
最近在做一個(gè)項(xiàng)目,需要用戶(hù)在打開(kāi)APP后,自動(dòng)將音量調(diào)節(jié)到某個(gè)值,于是研究了一下。
之前做過(guò)iOS上聲音的研究,蘋(píng)果對(duì)iPhone設(shè)備的輸入/輸出的控制很?chē)?yán)格,因?yàn)樘O(píng)果要控制用戶(hù)體驗(yàn)的一致性。比如:用戶(hù)將耳機(jī)拔下來(lái)的時(shí)候,蘋(píng)果認(rèn)為,用戶(hù)這時(shí)候不希望其他人知道自己在聽(tīng)什么,于是這時(shí)候聲音會(huì)被自動(dòng)暫停。在音量調(diào)整上,蘋(píng)果也采取了類(lèi)似的策略。蘋(píng)果認(rèn)為,用戶(hù)不需要APP來(lái)為他指定音量,因?yàn)檫@樣有時(shí)候用戶(hù)會(huì)感到不舒服。蘋(píng)果的開(kāi)發(fā)文檔是這么說(shuō)的:
You cannot change device volume programatically,however MPVolumeView (volume slider) is there to change device volume but only through user interaction.
蘋(píng)果提供了一個(gè)讓用戶(hù)手動(dòng)修改音量的方法:MPVolumeView。用戶(hù)通過(guò)拖動(dòng)slider bar修改音量,就是下面這玩意兒:
雖然蘋(píng)果將幾乎所有的代碼實(shí)現(xiàn)控制音量的方法都堵死了,但通過(guò)一些私有的方法還是可以修改的。比如,我們遍歷一下MPVolumeView的subViews,從中得到UISlider,然后修改slider的value。這種方法雖然可以修改,但訪問(wèn)了私有的類(lèi),有被App Store拒絕的風(fēng)險(xiǎn)。而且不知道什么時(shí)候蘋(píng)果修改MPVolumeView的結(jié)構(gòu),這樣的方法就不行了。
下面介紹一個(gè)可以修改音量的小trick,一個(gè)蘋(píng)果想干掉而沒(méi)法干掉的方法:
MPMusicPlayerController* musicController = [MPMusicPlayerController applicationMusicPlayer]; musicController.volume = 0.2;
使用之前需要添加MediaPlayer.framework。
為什么說(shuō)蘋(píng)果想干掉而沒(méi)法干掉呢?這個(gè)方法是在iOS3.0里添加的,當(dāng)時(shí)估計(jì)還沒(méi)有”不允許使用代碼修改音量“這樣的規(guī)范;后來(lái)在7.0的時(shí)候,這個(gè)方法被depress掉了,說(shuō)明蘋(píng)果是想干掉的。但是對(duì)于一個(gè)持續(xù)改進(jìn)的系統(tǒng)來(lái)說(shuō),一般都要做向前兼容,否則就會(huì)出現(xiàn)像WP6-WP7-WP8這樣的悲劇。所以蘋(píng)果對(duì)于去掉一個(gè)方法是非常謹(jǐn)慎的,終于還是把這個(gè)方法留著了,在它強(qiáng)大的圍墻里給開(kāi)發(fā)都留下了一扇窗戶(hù)。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
iOS中自動(dòng)實(shí)現(xiàn)對(duì)象序列化的方法詳解
這篇文章主要給大家介紹了在iOS中自動(dòng)實(shí)現(xiàn)對(duì)象序列化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05UIImage加載圖片Images.xcassets加載方法的影響
這篇文章主要介紹了UIImage加載圖片Images.xcassets加載方法的影響的相關(guān)資料,需要的朋友可以參考下2016-12-12淺談WKWebView 在64位設(shè)備上的白屏問(wèn)題
下面小編就為大家?guī)?lái)一篇淺談WKWebView 在64位設(shè)備上的白屏問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04iOS中實(shí)現(xiàn)檢測(cè)Zoombie對(duì)象的具體方法
這篇文章主要給大家介紹了關(guān)于iOS中實(shí)現(xiàn)檢測(cè)Zoombie對(duì)象的具體方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01iOS的CoreAnimation開(kāi)發(fā)框架中的Layer層動(dòng)畫(huà)制作解析
在iOS中UIView層的屬性會(huì)映射到CoreAnimation框架的CALayer,這里我們來(lái)看一下iOS的CoreAnimation開(kāi)發(fā)框架中的Layer層動(dòng)畫(huà)制作解析,需要的朋友可以參考下2016-07-07