zoukankan      html  css  js  c++  java
  • iOS 播放器静音设置方法

    介绍:整理的两种设置播放器播放静音的方法

    一、MPVolumeView-设置音量值为0

    1.获取到当前系统音量值(恢复音量时有用)

    volumeFloat = [self getVolume];
    
    -(float) getVolume
    {
        //获取系统系统音量视图
        MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: CGRectMake(-1000, -100, 100, 100)];
        volumeView.hidden = NO;//不显示系统音量调节视图
        [self addSubview:volumeView];
        volumeViewSlider = nil;
        for(UIView *view in [volumeView subviews])
        {
            if([[[view class] description] isEqualToString:@"MPVolumeSlider"])
            {
                volumeViewSlider=(UISlider *)view;
                break;
            }
        }
        float val = [volumeViewSlider value];
        return val;
    }

    2.关闭系统音量(设置音量值为0)

    //关闭系统音量(静音)
    -(void)closeSysVolume
    {
        [volumeViewSlider setValue:0 animated:NO];
    }

    3.恢复原来的音量

    -(void)reStartSysVolume
    {
        NSLog(@"重启音量");
    
        if (volumeFloat == 0) {
            volumeFloat = 0.5;
        }
        [volumeViewSlider setValue:volumeFloat animated:NO];
        //注:设置恢复后不会影响系统音量图标的正常显示
        MPVolumeView *volumeView = [MPVolumeView new];
        volumeView.hidden = YES;
    }

    二、AVAudioSession

    1.静音

    //关闭系统音量(静音)
    -(void)closeSysVolume
    {
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:nil];
    }

    2.重新开启音量(注:调用closeSysVolume后使用该方法无效--还没找到恢复音量方法)

    -(void)reStartSysVolume
    {
        NSLog(@"重启音量");
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
    }

    三、补充

    如果不想通过设置系统方式静音,可以更简单的使用播放器自带的音量属性实现静音(推荐这种方式,而不是使用修改系统方式)。例如ijkplayer的playbackVolume属性:

    //关闭音量(静音)
    -(void)closeSysVolume{
        NSLog(@"静音模式");
        self.player.playbackVolume = 0;
    }
    //重启音量
    -(void)reStartSysVolume{
        NSLog(@"重启音量");
        self.player.playbackVolume = 1;
    }
  • 相关阅读:
    温故知新 将Date和String类型相互转换
    温故知新 线程
    温故知新 数组
    温故知新 集合
    温故知新 流(字节流与字符流)
    温故知新 jdbc 数据库调取封装
    Reds 持久化 高并发 高可用
    批量修改文件后缀名
    scala之旅-核心语言特性【高阶函数】(十)
    scala之旅-核心语言特性【使用混入组合类】(九)
  • 原文地址:https://www.cnblogs.com/wusang/p/8438224.html
Copyright © 2011-2022 走看看