调节音量时隐藏系统提示框(Hide device volume HUD when adjust the volume)
2016-05-02 23:07
806 查看
有这样一个需求,在特定页面调节系统音量的时候需要隐藏系统的音量 HUD 提示框。首先想到的是肯定是找控制系统音量的那个类,查找一下有没有对应的接口提供,过了一下 MPMusicPlayerController 并没有找到我需要的接口。又
Google 了一下,找到了设置音量的类 MPVolumeView ,根据 stackoverflow 上的答案,说是这样设置
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:
获取系统音量API:
参考链接:
1、applicationMusicPlayer volume notification
2、MPVolumeView
3、iOS 编程修改系统音量
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 编程修改系统音量
相关文章推荐
- 关于IOS7以及向下兼容音量控制问题
- iOS编程修改系统音量
- iOS_隐藏系统音量(MPVolumeView初探)
- iOS音频播放的几种方式,打开后台模式的音乐播放、使用AVAudioPlayer播放音乐、播放指定的音频文件、注册音频文件
- iOS编程修改系统音量
- iOS 控制系统的音量改变
- 视频播放器上实现AirPlay投屏功能
- mac 安装npm
- mac安装npm
- DPM恢复Exchange 2013数据库
- DPM恢复Exchange 2013单个邮箱
- DPM恢复Exchange 2013单个邮箱
- 作为产品经理在设计产品过程中你需要使用哪些文档?
- [备忘]RPM的查询功能
- npm 安装yeoman时出现npm WARN deprecated npmconf@2.1.2报错...解决办法
- mipmap 只是放 launcher icons
- Red Hat 7.2 RPM安装Mysql 5.7.12
- 产品经理第一堂课
- IPMI
- 三个非典型产品经理的职场故事