如何检测耳机按键?

时间:2016-07-22 07:35:01

标签: ios objective-c iphone remote-access headphones

我正在尝试检测用户是否按下耳机键,我正在使用2种方法。

-(void)headsetMicrophoneDetection
{
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [[MPRemoteCommandCenter sharedCommandCenter].togglePlayPauseCommand addTarget:self action:@selector(onTooglePlayPause)];

    NSLog(@"calling headset method");
}
-(void)onTooglePlayPause
{
    NSLog(@"kishore");
}
- (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent
{
    NSLog(@"callig method to :)");
    if (theEvent.type == UIEventTypeRemoteControl) {
        switch(theEvent.subtype) {
            case UIEventSubtypeRemoteControlTogglePlayPause:
                NSLog(@"Hello");
                break;
            case UIEventSubtypeRemoteControlPlay:
                NSLog(@"Hello 2");
                break;
            case UIEventSubtypeRemoteControlPause:
                NSLog(@"Hello 3");
                break;
            case UIEventSubtypeRemoteControlStop:
                NSLog(@"Hello 4");
                break;
            default:
                return;
        }
    }
}

但是在调用这种方法后我没有得到,我的代码中有什么错误,我启用了后台服务进行音频检查&我正在使用NSObject类中的所有方法。

2 个答案:

答案 0 :(得分:0)

请检查以下代码。

- (BOOL)isHeadsetPluggedIn {
    AVAudioSessionRouteDescription* route = [[AVAudioSession sharedInstance] currentRoute];
    for (AVAudioSessionPortDescription* desc in [route outputs]) {
        if ([[desc portType]     isEqualToString:AVAudioSessionPortHeadphones])
           return YES;
    }
    return NO;}

答案 1 :(得分:0)

尝试将其包含在viewDidAppear

[[AVAudioSession sharedInstance] setActive:YES error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

这在viewDidDisappear

[[AVAudioSession sharedInstance] setActive:NO error:nil];