zoukankan      html  css  js  c++  java
  • 关于IOS7以及向下兼容音量控制问题

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

    AVPlayer,AVAudioPlayer,MPMusicPlayerController,MPMoviePlayerController
     
    因为设计到播放本地和网络音频,人又比较偷懒,尝试看用自带的类能不能做个较好的功能,经过各种尝试之后,决定用AVAudioPlayer播放本地音频,网络音频用MPMoviePlayerController。其实AVPlayer既可以播放本地又可以播放网络音频,但是由于官方封装的东西太少,本来都还可以凑合着用一下,但是因为最近推出了IOS7,在IOS7下运行会出现获取不到网络音频的时间信息,以至于错误到0/0这种表达式跳转到汇编里卡主,调试了好久才找到问题,刚开始还以为是基础数据类型强转出现了问题(不知道是不是官方文档没注意更新,获取时间的接口被弃用还是改用别的api了,总之就是在IOS7以下能获取音频时间,IOS7以上就全部是0)。各种纠结之后决定AVAudioPlayerMPMoviePlayerController组合,但是问题冒出来了,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,无奈在网上也搜了很久,在谷歌里输关键字的时候看到了“mpvolumeviewnot showing in simulator”这句,我去,果断真机调试,这尼玛才有了slider,惊讶啊,为毛这种东西文档里没找到,难道我傻逼了,吐槽到此了。

    最后说一下,关于音量控制

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

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

    MPMusicPlayerController:提供音量控制api,但是支持IOS7以下

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

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

    转载自:

    矢倉_Andy

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

  • 相关阅读:
    微信小程序:动画(Animation)
    小程序滚动事件之头部渐隐渐现demo
    小程序tab栏可滑动,可点击居中demo
    ES7中前端异步特性:async、await。
    vue中生成二维码
    vue之vue-cookies
    echarts中boundaryGap属性
    ES6数组方法总结
    手写自己的ORM框架For SQlServer(简单的CURD)
    Sqlsever新增作业执行计划傻瓜式操作
  • 原文地址:https://www.cnblogs.com/Xer-Lee/p/3584281.html
Copyright © 2011-2022 走看看