1、允許靜音模式下播放聲音
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil];?
[[AVAudioSession sharedInstance] setActive:YES error:nil];
- (void)dealloc { ? ?
????????[[UIApplication sharedApplication] endReceivingRemoteControlEvents];?
} }
2、實現(xiàn)聲音控制
@property (nonatomic, strong)MPVolumeView *volumeView;
@property (nonatomic, strong)UISlider *volumeSlider;
[[AVAudioSession sharedInstance]outputVolume]; ?? ? ? ?
MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer]; ? ?
if (([musicPlayer respondsToSelector:@selector(setVolume:)]) && [[[UIDevice currentDevice] systemVersion] floatValue] >= 13.0) { ? ? ? ?
//消除警告
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations" ? ? ? ?
????if ([self getVolume] == 0) {
? ? ? ? ? ? [musicPlayer setVolume:0.5];? ? ? ??
????????}
#pragma clang diagnostic pop? ?
}else { ? ? ? ?
// 低版本按照正常的設置依然不能控制音量? 故使用了MPMusicPlayerController ? ? ? ?
if ([self getVolume] == 0) {
? ? ? ? ? ?[musicPlayer setVolume:0.5]; ? ? ? ?
????} ? ?
}
- (MPVolumeView *)volumeView {
? ? if (!_volumeView) {
? ? ? ? _volumeView = [[MPVolumeView alloc] initWithFrame:CGRectZero];
? ? ? ? // 將x、y設置成 -100 就會將音量界面隱藏
? ? ? ? // 下面兩行代碼都會使音量界面重新顯示
?? ? ? ? [_volumeView setHidden:YES];
?? ? ? ? [_volumeView removeFromSuperview];
? ? ? ? [self.view addSubview:_volumeView];
? ? }
? ? return _volumeView;
}
- (UISlider*)volumeSlider {
? ? UISlider* volumeSlider =nil;
? ? for(UIView*view in[self.volumeView subviews]) {
? ? ? ? if ([view.class.description isEqualToString:@"MPVolumeSlider"]){
? ? ? ? ? ? volumeSlider = (UISlider*)view;
? ? ? ? ? ? break;
? ? ? ? }
? ? }
? ? return volumeSlider;
}
- (float)getVolume {
? ? return self.volumeSlider.value > 0 ? self.volumeSlider.value : [[AVAudioSession sharedInstance] outputVolume];
}
這樣? 簡單的靜音模式下播放聲音就實現(xiàn)了? ?內容可根據(jù)自身情況進行更改。demo地址