MPMusicPlayerController убивает RemoteIO на маршруте iPhone Speaker - PullRequest
0 голосов
/ 01 апреля 2012

У меня есть приложение, которое использует RemoteIO для обработки ввода-вывода (категория PlayAndRecord), а также включает MPMusicPlayerController.

Странная вещь: только на iPhone, когда RemoteIO работает, а динамик iPhone - это аудионазначение, начало воспроизведения в MPMusicPlayerController приведет к событию kAudioSessionBeginInterruption, и мой RemoteIO будет отключен.Музыка iPod (MPMusicPlayerController) продолжает воспроизводиться.

Похоже, что на iPhone с маршрутом динамика, RemoteIO и MPMusicPlayerController не могут воспроизводиться одновременно?На iPad у меня не было проблем с запуском как RemoteIO, так и MPMusicPlayerController.На iPhone, если я подключу что-то (наушники, динамики и т. Д.) К разъему для гарнитуры, все будет работать нормально, и оба потока будут работать.Это кажется проблемой только на iPhone, если Speaker является местом назначения.

Я перезаписываю вывод AudioSession на динамик iPhone (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker) при обнаружении вывода Receiver, это делается для более естественного ожиданияПользователь.Плеер iPod, кажется, также делает это.

Я также установил для свойства kAudioSessionProperty_OverrideCategoryMixWithOthers значение true.Это позволяет плееру iPod (предположительно) играть вместе.

Я написал тестовый код, чтобы позже перезапустить сеанс RemoteIO, что в свою очередь приведет к остановке воспроизведения MPMusicPlayerController.Таким образом, указывая на то, что назначение динамика может быть эксклюзивным?

Я также пытался использовать оба члена 'iPodMusicPlayer' и 'applicationMusicPlayer' MPMusicPlayerController, между этими двумя результатами не было никаких различий.

Любой совет, безусловно, ценится

1 Ответ

0 голосов
/ 05 апреля 2012

Я пойду дальше и отвечу на свой вопрос, так как думаю, что понял это. Тем не менее, я не доволен результатами.

Похоже, что MPMusicPlayerController (iPod Player) меняет аудио-маршрут, независимо от того, какой маршрут приложение уже использует для своего RemoteIO. Оказывается, это происходит как на iPhone, так и на iPad.

Это может быть легко продемонстрировано следующим образом:

  • Подключаемое USB-устройство ввода звука
  • Подключение колонок BlueTooth
  • Настройка системного плеера iPod на использование колонок BlueTooth
  • Запустить приложение, которое выполняет PlayRecord с использованием RemoteIO со встроенным MPMusicPlayerController
  • Аудио вход / выход (PlayRecord) будет обрабатываться с входа USB на выход приемника
  • Включение воспроизведения на встроенном контроллере MPMusicPlayerController

Результат:

  • Аудио маршрут изменится на BlueTooth Input / Output
  • Песня будет воспроизводиться на динамиках BlueTooth
  • RemoteIO получит прерывание kAudioSessionBegin
  • Перезапуск потока RemoteIO приведет к остановке MPMusicPlayerController

Что бы я хотел, чтобы произошло:

  • MPMusicPlayerController будет просто воспроизводить то аудио-назначение, которое уже используется приложением.

Я добавил в свой Apple Bug указанную выше информацию.

...