注意:設(shè)置或者獲取音量可能很多地方都用的到寇壳,因此可以把下面的方法寫在最appdelegate中
一、設(shè)置音量相關(guān)
注意:?設(shè)置音量大小,如果不在播放音樂的時候設(shè)置這個的話可能會直接設(shè)置鈴聲山涡,而且設(shè)置的值可能設(shè)置不上,如果要在app剛剛啟動的時候設(shè)置音量,需要將AVAudioSession設(shè)置為活躍狀態(tài)[[AVAudioSession sharedInstance]setActive:YES error:error];
1.1?獲取MPVolumeView
?- (MPVolumeView*)volumeView {
? ? ? ?if (!_volumeView) {
? ? ? ? ? _volumeView= [[MPVolumeViewalloc]initWithFrame:CGRectMake(-100, ? ? ? ? ? ? ? ? ? ? -100,40,40)];
? ?//將x院尔、y設(shè)置成-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魁亦、設(shè)置大小:
參數(shù)值范圍:0~100
- (void)setVolume:(float)value {
? ? ? self.volumeSlider = [self volumeSlider];
? ? ? // 需要設(shè)置 showsVolumeSlider 為 YES
? ? ? self.volumeView.showsVolumeSlider = YES;?
? ? ?[self.volumeSlidersetValue:value animated:NO];
? ? ?[self.volumeSlider sendActionsForControlEvents:UIControlEventTouchUpInside];
? ? ?[self.volumeView sizeToFit];
?? }
二羔挡、獲取音量大小
首先你需要導(dǎo)入#import頭文件洁奈。
注意:?在app剛剛初始化的時候使用MPVolumeView獲取音量大小可能為0,因此使用[[AVAudioSession sharedInstance]outputVolume]绞灼,使用AVAudioSession需要導(dǎo)入頭文件#import
-(float)getVolume{
?? ?return self.volumeSlider.value > 0 ? self.volumeSlider.value : [[AVAudioSession sharedInstance]outputVolume];
}
三利术、監(jiān)聽系統(tǒng)音量的變化
3.1、使用通知監(jiān)聽
?[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(systemVolumeDidChangeNoti:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];
-(void)systemVolumeDidChangeNoti:(NSNotification* )noti{
//目前手機(jī)音量
? ? ? ? float voiceSize = [[noti.userInfo valueForKey:@"AVSystemController_AudioVolumeNotificationParameter"]floatValue];
}
3.2銷毀監(jiān)聽
-(void)dealloc{
? ? [[NSNotificationCenter defaultCenter]removeObserver:self];
}