На самом деле это может быть ошибка iOS.У меня такая же проблема при переключении на выход HDMI (тоже iOS 4.3).В 50% случаев изменение маршрута происходит успешно, и звук, как и ожидалось, выходит из телевизора, а не из iPad.В остальных 50% случаев после подключения адаптера HDMI у меня вообще нет звука, ни телевизора, ни iPad.Я получаю звук обратно, как только снова отсоединяю адаптер.
Так что я не могу предложить вам хорошее решение, только обходной путь.Зарегистрируйтесь для изменения аудио маршрута (установив прослушиватель свойства для свойства kAudioSessionProperty_AudioRouteChange).Когда сработает этот обратный вызов, обработайте его, например, повторно инициализировав все содержимое Core Audio.Это не очень хорошее решение, но оно работает.
Обновление:
В вашем особом случае система ведет себя почти так, как Apple говорит, что она должна себя вести.Позвольте мне привести цитату из Руководства Apple по интерфейсу для iOS:
Случай для воспроизведения аналогичен, но имеет разные результаты, как показано в правой части рисунка.Если пользователь отключает гарнитуру во время воспроизведения, ваш обратный вызов должен приостановить звук.Если пользователь подключает гарнитуру во время воспроизведения, обратный вызов должен просто позволить продолжить воспроизведение.
Итак, Apple говорит: переключение с внутреннего динамика на наушники -> воспроизведение продолжается.Переключение с наушников на внутренний динамик -> паузы воспроизведения.Согласно этой цитате, это поведение, которое вы должны реализовать самостоятельно, а не то, которое система навязывает вам, но оно довольно близко к поведению, которое вы на самом деле видите, не так ли?