關於IOS7以及向下兼容音量控制問題

最近作個簡單的播放界面,只是簡單的設計到播放音頻,ios系統自帶播放有四個類能夠播放音頻html

AVPlayer,AVAudioPlayer,MPMusicPlayerController,MPMoviePlayerController
 
由於設計到播放本地和網絡音頻,人又比較偷懶,嘗試看用自帶的類能不能作個較好的功能,通過各類嘗試以後,決定用AVAudioPlayer播放本地音頻,網絡音頻用MPMoviePlayerController。其實AVPlayer既能夠播放本地又能夠播放網絡音頻,可是因爲官方封裝的東西太少,原本都還能夠湊合着用一下,可是由於最近推出了IOS7,在IOS7下運行會出現獲取不到網絡音頻的時間信息,以致於錯誤到0/0這種表達式跳轉到彙編裏卡主,調試了很久才找到問題,剛開始還覺得是基礎數據類型強轉出現了問題(不知道是否是官方文檔沒注意更新,獲取時間的接口被棄用仍是改用別的api了,總之就是在IOS7如下能獲取音頻時間,IOS7以上就所有是0)。各類糾結以後決定AVAudioPlayerMPMoviePlayerController組合,可是問題冒出來了,MPMoviePlayerController不能控制音量,必須經過

[[MPMusicPlayerController applicationMusicPlayer] setVolume:value];ios

來設置系統音量,好吧,湊合着用吧,可是奇葩問題是連續不斷的,IOS7以上次api廢棄,這是神馬節奏,看官方解釋api

// The current volume of playing music, in the range of 0.0 to 1.0.網絡

// This property is deprecated -- use MPVolumeView for volume control instead.app

 

@property(nonatomic) float volume NS_DEPRECATED_IOS(3_0, 7_0);ide

ok,那沒辦法了,就用MPVolumeView來搞吧,各類addSubview以後,我插,怎麼樣都看不到slider,無奈在網上也搜了好久,在谷歌裏輸關鍵字的時候看到了「mpvolumeviewnot showing in simulator」這句,我去,果斷真機調試,這尼瑪纔有了slider,驚訝啊,爲毛這種東西文檔裏沒找到,難道我傻逼了,吐槽到此了。atom

最後說一下,關於音量控制spa

AVPlayer:提供音量控制api,可是隻支持IOS7設計

AVAudioPlayer:提供音量控制api,目前是都支持調試

MPMusicPlayerController:提供音量控制api,可是支持IOS7如下

MPMoviePlayerController:貌似暫時不支持音量控制

之後要用系統自帶控件播放音頻的小夥伴們要掌握好了

 

 

轉載自:

矢倉_Andy

 

http://blog.sina.com.cn/s/blog_5c5c87d80101bel4.html

相關文章
相關標籤/搜索