2014-05-24 3 views
1

У меня есть приложение, которое говорит пользователю и слушает речевой ответ пользователя. Я заметил, что когда я подключаю свой телефон к своей автомобильной аудиосистеме и использую приложение, когда приложение работает, оно получает уведомление о прерывании, а приложение Music начинает играть музыку, а не позволяет моему приложению продолжать.UIApplication -beginReceivingRemoteControlEvents заставляет музыкальное приложение захватывать аудио

Этого не происходит, если телефон не подключен к внешнему устройству, и это происходит не в тот момент, когда я включаю телефон, только когда речь останавливается и телефон играет через автомобиль. Я провел некоторое тестирование и решил, что это поведение появляется, когда я вызываю метод beginReceivingRemoteControlEvents в своем приложении. Если я не регистрирую события удаленного управления при загрузке приложения, проблема не возникает, но я не могу отображать информацию о «сейчас воспроизводящем» для своего аудио или использовать элементы управления автомобиля для управления воспроизведением.

Кто-нибудь нашел способ прослушивания событий дистанционного управления, не лишившись управления воспроизведением звука устройства?

ответ

2

Это часто происходит от стереосистемы автомобиля, а не от устройства iOS. Проверьте руководство по стереосистеме и переключите его из режима аудио в режим iPod (или все, что ваше руководство называет этими параметрами). В основном, ваша автомобильная стереосистема прослушивает уведомление о завершении дорожки и использует это для запуска уведомления о воспроизведении следующего трека. Это вызывает MPMusicPlayer, который обычно выбирает первую дорожку в алфавитном порядке в библиотеке вашего устройства. Возможно, в программном обеспечении есть обходной путь, но я обнаружил, что проще всего изменить настройку на стереосистеме.

0

Используйте следующие действия для отключения события дистанционного управления (возможно, придется заменить togglePlayPauseCommand с playCommand, или то и другое):

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; 
Смежные вопросы