iOS 隐藏系统音量提示框(随笔)

最近公司在做视频类的项目,所以跟视频音频方面打交道比较多。因为在网上找来一下,没有直接能用的,所以自己也就写来一个

目前有一个需求

自定义系统音量进度条(iOS 可查看小红书视频详情页)

需求分析

  1. 当用户按手机上声音加减按钮的时候,系统会弹出当前音量大小的提示框,这个时候我们需要隐藏系统弹出来的当前音量提示框
  2. 监听系统音量的变化,自定义音量进度条
  3. 进度条默认是隐藏的,当系统音量发生变化时,显示自定义的进度条,两秒后再隐藏音量隐藏进度条

需求实现(代码)

首先引入系统媒体框架

#import <MediaPlayer/MediaPlayer.h>
  1. 隐藏进度条。这里需要注意的是,volumeView 不能设置 hidden 属性为 YES,否则系统的音量提示框会弹出来
    // 隐藏系统音量提示框
    MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: CGRectZero];
    volumeView.clipsToBounds = YES;
    [self.view addSubview: volumeView];
  1. 监听系统音量变化,实现自定义音量滑杆,自定义音量滑竿默认隐藏,音量改变后两秒滑竿消失,这里的 sliderView(就是一个自定义的滑竿) 初始化时透明度为 0.0,
// 设置音量相关
- (void)settingVolume {
    //监听系统音量变化
    AVAudioSession *session = [AVAudioSession sharedInstance];
    [session setCategory:AVAudioSessionCategoryAmbient error:nil];
    [session setActive:YES error:nil];
    NSError *error;
    [[AVAudioSession sharedInstance] setActive:YES error:&error];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChangeNotification:)name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];
}
    
// 音量改变
- (void)volumeChangeNotification:(NSNotification *)noti {
    if (self.sliderView.alpha == 0.0) {
        [UIView animateWithDuration:0.25 animations:^{
            self.sliderView.alpha = 1.0;
        }];
    }
    float volume = [[[noti userInfo] objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue];
    self.sliderView.value = volume;
    self.currentTime = [NSDate date].timeIntervalSince1970;
    // 两秒后消失
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSTimeInterval nowTime = [NSDate date].timeIntervalSince1970;
        // 容错处理,处理用户连续按音量加减时的情况
        if ((nowTime - self.currentTime) >= 2.0) {
            [UIView animateWithDuration:0.25 animations:^{
                self.sliderView.alpha = 0.0;
            } ];
        }
    });
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容