您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页iOS 系统媒体音量

iOS 系统媒体音量

来源:二三四教育网

iOS 媒体音量获取以及控制

获取系统音量
// 需要引入<AVFoundation/AVFoundation.h>
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
CGFloat systemVolume = audioSession.outputVolume;

调整系统音量

iOS7 之后,可以使用系统提供的MPVolumeView(需要引入<MediaPlayer/MediaPlayer.h>)来控制系统媒体音量。这个控件创建以后,放到视图的可视区域之外,然后通过遍历获取到私有属性MPVolumeSlider,然后通过自己创建的UISlider来对应改变MPVolumeSlider的 Value,这样就能达到控制系统媒体音量的目的。

/// 系统提供的获取音量的控件
@property (nonatomic, strong) MPVolumeView *volumeView;
/// 从上一个控件遍历得到的 Slider
@property (nonatomic, weak) UISlider *mpVolumeSlider;
/// 自己的 Slider
@property (nonatomic, strong) UISlider *volumeSlider;
_volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(-1000, -100, 100, 100)];
[_volumeView setShowsVolumeSlider:YES];
_volumeView.showsRouteButton = NO;
[_volumeView sizeToFit];
[self addSubview:_volumeView];
[_volumeView userActivity];
for (UIView *subView in [_volumeView subviews]) {
   if ([subView.class.description isEqualToString:@"MPVolumeSlider"]){
      _mpVolumeSlider = (UISlider*)subView;
      break;
   }
}

监听系统媒体音量变化

通过注册通知AVSystemController_SystemVolumeDidChangeNotification来监听系统音量的改变,来对应自定义 UI 的改变。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(systemVolumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];
- (void)systemVolumeChanged:(NSNotification *)notification {
    if([[notification.userInfo objectForKey:@"AVSystemController_AudioVolumeChangeReasonNotificationParameter"] isEqualToString:@"ExplicitVolumeChange"]) {
        float volume = [[[notification userInfo] objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue];

        [self.volumeSlider setValue:volume animated:YES];
    }
}

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

热门图文

Copyright © 2019-2025 how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务