Обнаружение ввода пользователя с помощью гарнитуры - PullRequest
1 голос
/ 26 октября 2011

Я пытаюсь определить пользовательский ввод (щелчок) в наушниках, подключенных к iPhone. До сих пор я только нашел, как обнаружить прерывания, используя AVAudioSession. Верно ли AVAudioSession или есть другой способ? как?

Ответы [ 2 ]

1 голос
/ 03 сентября 2015

Теперь стало проще, чем с iOS 7. Чтобы выполнить блокировку при нажатии кнопки воспроизведения / паузы в наушниках:

    MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];

    [commandCenter.togglePlayPauseCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent * _Nonnull event) {
        NSLog(@"toggle button pressed");
        return MPRemoteCommandHandlerStatusSuccess;
    }];

или, если вы предпочитаете использовать метод вместо блока:

    [commandCenter.togglePlayPauseCommand addTarget:self action:@selector(toggleButtonAction)];

Для остановки:

    [commandCenter.togglePlayPauseCommand removeTarget:self];

или

    [commandCenter.togglePlayPauseCommand removeTarget:self action:@selector(toggleButtonAction)];

Вам необходимо добавить это в область включений вашего файла:

@import MediaPlayer;
1 голос
/ 26 октября 2011

Вы хотите это:

beginReceivingRemoteControlEvents

Вы реализуете что-то подобное в одном из ваших классов VC:

 // If using a nonmixable audio session category, as this app does, you must activate reception of 
//    remote-control events to allow reactivation of the audio session when running in the background.
//    Also, to receive remote-control events, the app must be eligible to become the first responder.
- (void) viewDidAppear: (BOOL) animated {

    [super viewDidAppear: animated];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
}

- (BOOL) canBecomeFirstResponder {

    return YES;
}


    // Respond to remote control events

- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {

    if (receivedEvent.type == UIEventTypeRemoteControl) {

        switch (receivedEvent.subtype) {

            case UIEventSubtypeRemoteControlTogglePlayPause:
                [self playOrStop: nil];
                break;

            default:
                break;
        }
    }
}

См. Пример кода здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...