美文网首页
iOS 应用中调整手机系统音量

iOS 应用中调整手机系统音量

作者: 斌小狼 | 来源:发表于2020-03-01 20:30 被阅读0次

    注意:设置或者获取音量可能很多地方都用的到,因此可以把下面的方法写在 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.3、设置大小:

    // 参数值范围: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 <MediaPlayer/MediaPlayer.h>'

    注意:
    在app刚刚初始化的时候使用MPVolumeView获取音量大小可能为 0,因此使用[[AVAudioSession sharedInstance]outputVolume],使用AVAudioSession需要导入头文件 #import <AVFoundation/AVFoundation.h>

    - (float)getVolume
    {
        return self.volumeSlider.value > 0 ? self.volumeSlider.value : [[AVAudioSession sharedInstance] outputVolume];
    }
    

    三、监听系统音量的变化

    3.1、使用通知监听

    监听系统音量变化 Notification Name: @"AVSystemController_SystemVolumeDidChangeNotification"
    接收到通知之后获取音量值使用 notification.info[@"AVSystemController_AudioVolumeNotificationParameter"]

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(systemVolumeDidChangeNoti:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];
    
    - (void)systemVolumeDidChangeNoti:(NSNotification* )noti
    {
        // 当前手机音量
        float volume = [[noti.userInfo valueForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue];
    }
    

    3.2销毁监听

    - (void)dealloc
    {
        [[NSNotificationCenter defaultCenter]removeObserver:self];
    }
    

    相关文章

      网友评论

          本文标题:iOS 应用中调整手机系统音量

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