2015-01-11 2 views
-1

Итак, я занимаюсь большим количеством исследований по этому вопросу, и я не могу заставить этот код обнаруживать, когда нажата кнопка воспроизведения/паузы на гарнитуре. В настоящее время мой код прослушивает нажатые кнопки громкости, на которые выводится действие для моего приложения.Слушатель кнопки паузы/воспроизведения

Проблема, с которой я столкнулся, заключается в том, что в мое приложение нет mp3 или мультимедиа, поэтому мне просто нужно приложение, чтобы обнаружить, когда нажата кнопка физического воспроизведения/паузы.

Я рассмотрел http://www.sagorin.org/ios-playing-audio-in-background-audio/, к которому я не увенчался успехом из-за того, что в приложении не обнаружено мультимедиа. Я также попытался сделать первую функцию ответчика без везения.

любые идеи, или если у кого-то была аналогичная проблема, это было бы весьма полезно. Спасибо

+1

«Я также попытался сделать первую функцию ответчику не повезло.» Покажите, что вы сделали, пожалуйста. – matt

ответ

1

Пожалуйста, взгляните на Remote Control-segment of the documentation. Необходимо получить три критерия для уведомления о нажатии кнопки на гарнитуре:

  • Будьте первым ответчиком. Контроллер представления или просмотра, представляющий мультимедийный контент, должен быть первым ответчиком.
  • Включите доставку событий дистанционного управления. Ваше приложение должно явно запросить начало приема событий дистанционного управления.
  • Начните играть аудио. Ваше приложение должно быть «Now Playing». Повторно, даже если ваше приложение является первым ответчиком и вы включили доставку событий, ваше приложение не получает события дистанционного управления, пока оно не начнет воспроизводить аудио.

После того как вы выполнили эти требования, вы можете начать кодирование. Из документации:

Листинг 5-1 не Подготовка получать события дистанционного управления

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    // Turn on remote control event delivery 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

    // Set itself as the first responder 
    [self becomeFirstResponder]; 
} 

Когда вид или вид управления больше не управлять аудио или видео, он должен отключить доставку дистанционного контрольных событий. Он должен также оставить статус первого ответчика в viewWillDisappear: method, , как показано в листинге 5-2.

Листинг 5-2 Завершение получения событий дистанционного управления

- (void)viewWillDisappear:(BOOL)animated { 

    // Turn off remote control event delivery 
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents]; 

    // Resign as first responder 
    [self resignFirstResponder]; 

    [super viewWillDisappear:animated]; 
} 

Обработка удаленных событий управления

Для обработки событий пульта дистанционного управления, первый ответчик должен реализовать в remoteControlReceivedWithEvent: метод, объявленный UIResponder. Реализация метода должна оценивать подтип каждого объекта UIEvent , переданного в, а затем, основываясь на подтипе, отправить соответствующее сообщение объекту, представляющему аудио- или видеоконтент. Листинг 5-3 отправляет воспроизведение, приостановку и остановку сообщений на аудио объект. Возможны другие подтипы UIEvent удаленного управления, см. UIEvent Class Ссылка для деталей.

Листинг 5-3 Обработка событий дистанционного управления

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

    if (receivedEvent.type == UIEventTypeRemoteControl) { 

     switch (receivedEvent.subtype) { 

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

      case UIEventSubtypeRemoteControlPreviousTrack: 
       [self previousTrack: nil]; 
       break; 

      case UIEventSubtypeRemoteControlNextTrack: 
       [self nextTrack: nil]; 
       break; 

      default: 
       break; 
     } 
    } 
} 
Смежные вопросы