[IOS] —— 获取系统音量和获取app音量

获取系统音量

iOS的音量控制接口在MediaPlayer库中

  1. 首先要将该库导入 #import <MediaPlayer/MPVolumeView.h>
  2. 而MPVolumeView中负责控制音量的是它的子视图MPVolumeSlider,而这个类并未对外公开,所以我们应该将这个不公开的类赋值给能让我们控制的类,那么就需要遍历volumeView的子视图,把它找出来,并赋值给另外一个view
MPVolumeView *volumeView   = [{MPVolumeView alloc] init];
UISlider *volumeViewSlider = nil;
for (UIView *view in [volumeView subviews]) {
    if ([view.class.description isEqualToString:@"MPVolumeSlider"]) {
        volumeViewSlider = (UISlider *)view;
        break;
    }
}
//设置框架
[volumeView setFrame:CGRectMake(-1000, -100, 100, 100)];
// change system volume, the value is between 0.0f and 1.0f
[volumeViewSlider setValue:0.3f animated:NO];

[self.view addSubview:volumeView];
// send UI control event to make the change effect right now. 立即生效
[volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];

这时候我们就可以通过模拟器的±音量键来控制系统的音量了

获取app的内部音量

这需要我们去结合UISlider和AVPlayer的使用,通过改变UISlider的value值,进而来改变AVPlayer的音量大小

//设置声音slider
    UISlider *volumeSlider = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth - 100, 20)];
    volumeSlider.center = CGPointMake(kControlBarCenterX, kControlBarCenterY -20);
    volumeSlider.maximumValue = 1;
    volumeSlider.value = 0.3;
    volumeSlider.minimumTrackTintColor = [UIColor greenColor];
    [volumeSlider addTarget:self action:@selector(handleVolumeAction:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:volumeSlider];

handleVolumeAction响应事件
#pragma mark - 该变音量
-(void)handleVolumeAction:(UISlider *)sender {
    [self.player setVolume:sender.value];
}

这时我们已经可以通过拖动UISlider来改变它的value值进而改变AVplayer的音量

发布了11 篇原创文章 · 获赞 11 · 访问量 882

猜你喜欢

转载自blog.csdn.net/kk177/article/details/105757140