调节音量时隐藏系统提示框(Hide device volume HUD when adjust the volume)
来源:互联网 发布:数据分析项目案例 编辑:程序博客网 时间:2024/04/30 08:54
有这样一个需求,在特定页面调节系统音量的时候需要隐藏系统的音量 HUD 提示框。首先想到的是肯定是找控制系统音量的那个类,查找一下有没有对应的接口提供,过了一下 MPMusicPlayerController 并没有找到我需要的接口。又 Google 了一下,找到了设置音量的类 MPVolumeView ,根据 stackoverflow 上的答案,说是这样设置
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: CGRectZero];[self.view addSubview: volumeView];可以隐藏掉系统音量调节显示框。测试了一下,发现隐藏不了。到后来才发现忽略了很重要的一点,上面的这段代码我是放在开始调用 startRecord 接口的时候才设置的,而 stackoverflow 上给出的答案是在 viewDidLoad 的时候去设置的,后来尝试性的把上面这段代码放到 viewDidLoad 里面执行,果然 OK !想了一下不是很明白,不管是调用 viewDidLoad 还是 startRecord 都是在主线程上执行,而且 startRecord 是在界面出现之后才去点击界面触发的,还想着是否跟界面已经 load 完之前和之后有关系,又把测试代码放到了 viewWillAppear: 和 viewDidAppear: 函数,结果作用是跟 viewDidLoad 是一致的。说明跟界面加载前还是后没有关系。那到底是什么原因导致在长按按钮 hide 系统音量提示框无效呢??想不明白。。。
同样想不明白的是,既然是 MPVolumeView 类里面的 MPVolumeSlider 来控制系统的音量提示框的,那么我就直接拿到 MPVolumeSlider 将它的 hidden 属性设置为 YES,按理来说应该也可以的,
做了如下测试,结果失败了,没能隐藏音量提示框。
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: CGRectMake(-100, -100, 0, 0)]; UISlider* volumeViewSlider = nil; for (UIView *view in [volumeView subviews]){ if ([view.class.description isEqualToString:@"MPVolumeSlider"]){ volumeViewSlider = (UISlider*)view; volumeViewSlider.frame = CGRectMake(-1000, -100, 100, 100); volumeViewSlider.hidden = YES; break; } }
又加了一句,
[self.view sendSubviewToBack:volumeViewSlider];
发现还是失败了,挺纳闷的。
权且就先记录一下吧,以后有想到什么在回过头来看看。
note: 必须的真机测试,模拟器测试没有效果。
调节系统音量API:
[[MPMusicPlayerController applicationMusicPlayer] setVolume:volume];
获取系统音量API:
_originVolume = [AVAudioSession sharedInstance].outputVolume;
参考链接:
1、applicationMusicPlayer volume notification
2、MPVolumeView
3、iOS 编程修改系统音量
1 0
- 调节音量时隐藏系统提示框(Hide device volume HUD when adjust the volume)
- IOS音量调节--隐藏系统音量调节
- volume
- volume
- 菜鸟之路-Volume、Brightness调节
- nova-volume 删除时 dd 整个 volume
- 调节系统音量(话筒)
- ios 调节系统音量
- VMFS volume generates the error
- the study of volume change
- the solve of volume problem
- 如何调节系统声音音量
- 调节IOS系统的音量
- The Volume is dirty 的解决方法
- The volume is dirty,出现蓝屏,解决方案
- Volume 0. Getting Started 458 - The Decoder
- Show Media Volume Slider on the UI
- 《TCP/IP Illustrated Volume 1:The Protocols》
- JDBC笔记-Transaction
- gulp 组件化
- 关于Android中如何过滤HTML标签
- 轴承故障诊断
- freemarker 用template快速构造XML
- 调节音量时隐藏系统提示框(Hide device volume HUD when adjust the volume)
- JAVA语言之基数排序
- OC里面的类
- [算法导论] 快速排序
- Adobe Photoshop CC2015 下载-安装-注册机破解
- String abc=null;String abc="";String abc;三种写法有什么区别?
- 友元
- MATLAB与C/C++混合编程之MATLAB调用C程序
- 解决setInterval计时器不准的问题