美文网首页
iOS 设置默认音量大小

iOS 设置默认音量大小

作者: super_2e20 | 来源:发表于2020-07-02 11:55 被阅读0次
1、导入头文件#import <MediaPlayer/MediaPlayer.h>
2、viewDidILoad 里面调用setVolume
-(void)setVolume{

MPVolumeView *volumeView = [[MPVolumeView alloc]init];
volumeView.showsVolumeSlider = YES;
UISlider *volumeViewSlider = nil;
if (volumeViewSlider == nil) {
    
for (UIView *view in [volumeView subviews]) {
    if ([view.class.description isEqualToString:@"MPVolumeSlider"]) {
        volumeViewSlider = (UISlider *)view;
        break;
    }
}
}
[volumeViewSlider setValue:0.7 animated:NO];
[volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];
[volumeView sizeToFit];
[volumeView setFrame:CGRectMake(0, 0, 100, 100)];
self.volumeViewSlider =volumeViewSlider;
if ([UIDevice currentDevice].systemVersion.floatValue >= 13.0) {
       // 适配iOS13,音量条修改
    MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer];

    if (([musicPlayer respondsToSelector:@selector(setVolume:)])) {
    //消除警告
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wdeprecated-declarations"
                
                [musicPlayer setVolume:0.7];
                
    #pragma clang diagnostic pop
                
            }
   } else {
      [self.view addSubview:volumeView];

   }
}
// 监听音量变化 这个可根据具体需求来设置
//   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];
3、如果需要控制手动设置需要实现监听方法 不让用户调整
 // 音量改变做处理
- (void)volumeChanged:(NSNotification *)notification {
CGFloat volume = [[notification.userInfo objectForKey:@"AVSystemController_AudioVolumeNotificationParameter" ] doubleValue];
// 声音不允许修改,重新设置为默认
if (volume < 0.7 - 0.03 || volume > 0.7 + 0.03) {
    NSLog(@"音量%lf", volume);
    [self.volumeViewSlider setValue:0.7 animated:NO];
    [self.volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];
   }
}
4、注意注意:此时发现iOS13以下的怎么没有起作用!!!
可以设置以下代码解决哦
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [self.volumeViewSlider setValue:0.7 animated:NO];
    [self.volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];
});

相关文章

网友评论

      本文标题:iOS 设置默认音量大小

      本文链接:https://www.haomeiwen.com/subject/nyglqktx.html