关于iOS7以及向下兼容音量控制问题


title: 关于iOS7以及向下兼容音量控制问题
date: 2013-09-27 16:43:50
tags:

  • iOS7
  • AVPlayer
  • AVAudioPlayer
  • MPMusicPlayerController
  • MPMoviePlayerController
    categories: iOS

最近做个简单的播放界面,只是简单的设计到播放音频,iOS系统自带播放有四个类可以播放音频:

AVPlayerAVAudioPlayerMPMusicPlayerControllerMPMoviePlayerController

因为设计到播放本地和网络音频,人又比较偷懒,尝试看用自带的类能不能做个较好的功能,经过各种尝试之后,决定用AVAudioPlayer播放本地音频,网络音频用MPMoviePlayerController。其实AVPlayer既可以播放本地又可以播放网络音频,但是由于官方封装的东西太少,本来都还可以凑合着用一下,但是因为最近推出了iOS7,在iOS7下运行会出现获取不到网络音频的时间信息,以至于错误到0/0这种表达式跳转到汇编里卡主,调试了好久才找到问题,刚开始还以为是基础数据类型强转出现了问题(不知道是不是官方文档没注意更新,获取时间的接口被弃用还是改用别的api了,总之就是在iOS7以下能获取音频时间,iOS7以上就全部是0)。各种纠结之后决定AVAudioPlayer和MPMoviePlayerController组合,但是问题冒出来了,MPMoviePlayerController不能控制音量,必须通过

[[MPMusicPlayerController applicationMusicPlayer] setVolume:value];

来设置系统音量,好吧,凑合着用吧,但是奇葩问题是接二连三的,iOS7以上次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.

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

ok,那没办法了,就用MPVolumeView来搞吧,各种addSubview之后,我插,怎么样都看不到slider,无奈在网上也搜了很久,在谷歌里输关键字的时候看到了“mpvolumeview not showing in simulator”这句,我去,果断真机调试,这尼玛才有了slider,惊讶啊,为毛这种东西文档里没找到,难道我傻逼了,吐槽到此了。
最后说一下,关于音量控制

  • AVPlayer:提供音量控制api,但是只支持iOS7

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

  • MMusicPlayerController:提供音量控制api,但是支持iOS7以下

  • MPMoviePlayerController:貌似暂时不支持音量控制

以后要用系统自带控件播放音频的小伙伴们要掌握好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值