检测音量减小按钮是否按下两次OBJC iOS

问题描述 投票:0回答:1

我想调用一个函数,如果在同一秒内按下音量减小按钮两次,这可能还是不可能?!

ios objective-c
1个回答
0
投票

Willeke 的链接至少为您提供了一个良好的起点。
如果您的设备是带OC的iPhone,使用AVFoundation和MediaPlayer可以监控音量变化。
1、

#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>

2、

@property (nonatomic, strong) MPVolumeView* volumeView;
@property (nonatomic, strong) UISlider* volumeSlider;

3、

NSError* error = nil;
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&error];
    if (error) {
        NSLog(@"error setting category:%@", error.localizedDescription);
    }
    
    _volumeView = [[MPVolumeView alloc] initWithFrame:CGRectZero];
    [self.view addSubview:self.volumeView];

    // 找到MPVolumeView上的UISlider
    for (UIView *view in [self.volumeView subviews]){
        if ([view isKindOfClass:[UISlider class]]) {
            self.volumeSlider = (UISlider *)view;
            break;
        }
    }
    
    [self.volumeSlider addTarget:self action:@selector(volumeChanged:) forControlEvents:UIControlEventValueChanged];

4、

- (void)dealloc {
    [self.volumeSlider removeTarget:self action:@selector(volumeChanged:) forControlEvents:UIControlEventValueChanged];
}

- (void)volumeChanged:(UISlider *)sender {
    NSLog(@"%.2f", sender.value);
}

方法中可以监听音量变化,如果想要连续点击1秒,需要设置一个时间戳作为锚点。 但这种方法有一些问题:

  1. 去掉了系统默认的音量调节UI,新的iOS系统无法使用MPVolumeView;
  2. 锁屏时,APP处于非活动状态时无法生效;
  3. 不同的iOS版本可能会有不同的效果。
© www.soinside.com 2019 - 2024. All rights reserved.