IOS代码修改音量实例详解

 更新时间:2017年05月26日 11:23:41   投稿:lqh  
这篇文章主要介绍了IOS代码修改音量实例详解的相关资料,需要的朋友可以参考下

IOS代码修改音量实例详解

最近在做一个项目,需要用户在打开APP后,自动将音量调节到某个值,于是研究了一下。

之前做过iOS上声音的研究,苹果对iPhone设备的输入/输出的控制很严格,因为苹果要控制用户体验的一致性。比如:用户将耳机拔下来的时候,苹果认为,用户这时候不希望其他人知道自己在听什么,于是这时候声音会被自动暂停。在音量调整上,苹果也采取了类似的策略。苹果认为,用户不需要APP来为他指定音量,因为这样有时候用户会感到不舒服。苹果的开发文档是这么说的:

You cannot change device volume programatically,however MPVolumeView (volume slider) is there to change device volume but only through user interaction. 

苹果提供了一个让用户手动修改音量的方法:MPVolumeView。用户通过拖动slider bar修改音量,就是下面这玩意儿:


虽然苹果将几乎所有的代码实现控制音量的方法都堵死了,但通过一些私有的方法还是可以修改的。比如,我们遍历一下MPVolumeView的subViews,从中得到UISlider,然后修改slider的value。这种方法虽然可以修改,但访问了私有的类,有被App Store拒绝的风险。而且不知道什么时候苹果修改MPVolumeView的结构,这样的方法就不行了。

下面介绍一个可以修改音量的小trick,一个苹果想干掉而没法干掉的方法:

MPMusicPlayerController* musicController = [MPMusicPlayerController applicationMusicPlayer]; 
musicController.volume = 0.2; 

使用之前需要添加MediaPlayer.framework。

为什么说苹果想干掉而没法干掉呢?这个方法是在iOS3.0里添加的,当时估计还没有”不允许使用代码修改音量“这样的规范;后来在7.0的时候,这个方法被depress掉了,说明苹果是想干掉的。但是对于一个持续改进的系统来说,一般都要做向前兼容,否则就会出现像WP6-WP7-WP8这样的悲剧。所以苹果对于去掉一个方法是非常谨慎的,终于还是把这个方法留着了,在它强大的围墙里给开发都留下了一扇窗户。

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • iOS中自动实现对象序列化的方法详解

    iOS中自动实现对象序列化的方法详解

    这篇文章主要给大家介绍了在iOS中自动实现对象序列化的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • UIImage加载图片Images.xcassets加载方法的影响

    UIImage加载图片Images.xcassets加载方法的影响

    这篇文章主要介绍了UIImage加载图片Images.xcassets加载方法的影响的相关资料,需要的朋友可以参考下
    2016-12-12
  • 浅谈WKWebView 在64位设备上的白屏问题

    浅谈WKWebView 在64位设备上的白屏问题

    下面小编就为大家带来一篇浅谈WKWebView 在64位设备上的白屏问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Xcode8 更新解决模拟器找不到的方法

    Xcode8 更新解决模拟器找不到的方法

    这篇文章主要介绍了Xcode8 更新解决模拟器找不到的方法的相关资料,需要的朋友可以参考下
    2016-12-12
  • iOS 懒加载的使用实例代码

    iOS 懒加载的使用实例代码

    本篇文章主要介绍了iOS 懒加载的使用实例代码,详细的介绍了什么是懒加载和优点,及其实例。有兴趣的可以了解一下
    2017-05-05
  • H5混合开发IOS中遇到的坑

    H5混合开发IOS中遇到的坑

    本篇文章主要给大家讲述了在用H5混合开发APP时,IOS项目中遇到的坑以及解决办法,需要的朋友参考一下吧。
    2017-12-12
  • iOS 组件化初步构思

    iOS 组件化初步构思

    这篇文章主要介绍了iOS组件化初步构思,并对iOS组件化常用方式的讨论进行了方案分析,以便帮助大家对ios组件化有一个深刻的了解
    2023-03-03
  • iOS中实现检测Zoombie对象的具体方法

    iOS中实现检测Zoombie对象的具体方法

    这篇文章主要给大家介绍了关于iOS中实现检测Zoombie对象的具体方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • iOS的CoreAnimation开发框架中的Layer层动画制作解析

    iOS的CoreAnimation开发框架中的Layer层动画制作解析

    在iOS中UIView层的属性会映射到CoreAnimation框架的CALayer,这里我们来看一下iOS的CoreAnimation开发框架中的Layer层动画制作解析,需要的朋友可以参考下
    2016-07-07
  • iOS将地址解析成经纬度的方法

    iOS将地址解析成经纬度的方法

    这篇文章主要为大家详细介绍了iOS将地址解析成经纬度的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论