注意:设置或者获取音量可能很多地方都用的到,因此可以把下面的方法写在最appdelegate中
一、设置音量相关
注意: 设置音量大小,如果不在播放音乐的时候设置这个的话可能会直接设置铃声,而且设置的值可能设置不上,如果要在app刚刚启动的时候设置音量,需要将AVAudioSession设置为活跃状态[[AVAudioSession sharedInstance]setActive:YES error:error];
1.1 获取MPVolumeView
- (MPVolumeView*)volumeView {
if (!_volumeView) {
_volumeView= [[MPVolumeViewalloc]initWithFrame:CGRectMake(-100, -100,40,40)];
//将x、y设置成-100就会将音量界面隐藏
//下面两行代码都会使音量界面重新显示
// [_volumeView setHidden:YES];
// [_volumeView removeFromSuperview];
[self.window addSubview:_volumeView];
}
return _volumeView;
}
1.2、 获取MPVolumeView上面的滑条
- (UISlider*)volumeSlider {
UISlider* volumeSlider =nil;
for(UIView*viewin[self.volumeViewsubviews]) {
if ([view.class.description isEqualToString:@"MPVolumeSlider"]){
volumeSlider = (UISlider*)view;
break;
}
}
returnvolumeSlider;
}
1.2、设置大小:
参数值范围:0~100
- (void)setVolume:(float)value {
self.volumeSlider = [self volumeSlider];
// 需要设置 showsVolumeSlider 为 YES
self.volumeView.showsVolumeSlider = YES;
[self.volumeSlidersetValue:value animated:NO];
[self.volumeSlider sendActionsForControlEvents:UIControlEventTouchUpInside];
[self.volumeView sizeToFit];
}
二、获取音量大小
首先你需要导入#import头文件。
注意: 在app刚刚初始化的时候使用MPVolumeView获取音量大小可能为0,因此使用[[AVAudioSession sharedInstance]outputVolume],使用AVAudioSession需要导入头文件#import
-(float)getVolume{
return self.volumeSlider.value > 0 ? self.volumeSlider.value : [[AVAudioSession sharedInstance]outputVolume];
}
三、监听系统音量的变化
3.1、使用通知监听
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(systemVolumeDidChangeNoti:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];
-(void)systemVolumeDidChangeNoti:(NSNotification* )noti{
//目前手机音量
float voiceSize = [[noti.userInfo valueForKey:@"AVSystemController_AudioVolumeNotificationParameter"]floatValue];
}
3.2销毁监听
-(void)dealloc{
[[NSNotificationCenter defaultCenter]removeObserver:self];
}