OverrideCategoryDefaultToSpeaker не отвечает с iPod Touch - PullRequest
1 голос
/ 10 декабря 2011

Небольшая предыстория:

Я работаю над приложением для iOS, которое выполняет аудиозапись и использует категорию аудиосеансов AVAudioSessionCategoryPlayAndRecord.Приложение также воспроизводит звуковые эффекты, которые я хочу воспроизводить через основной динамик устройства (пока пользователь не записывает).Чтобы остановить вывод звука при воспроизведении через основные динамики во время записи, я использую следующий фрагмент кода:

UInt32 defaultRoute = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,
                        sizeof (defaultRoute),
                        &defaultRoute);

Когда пользователь начинает запись, я снова запускаю тот же код с defaultRoute из 0, чтоприводит к тому, что выводимый звук перестает воспроизводиться через динамики и поэтому не включается в запись.Этот метод отлично работает на iPhone.

Проблема:

Когда я запускаю тот же код на iPod Touch (4-го поколения), kAudioSessionProperty_OverrideCategoryDefaultToSpeakerсобственность, кажется, не имеет никакого влияния.В результате, когда пользователь записывает звук на iPod Touch, звуковые эффекты будут воспроизводиться через динамик и включаться в запись.

Кто-нибудь знает, почему это происходит, или как это исправить?Я хочу, чтобы поведение на iPod Touch соответствовало поведению на iPhone: вывод звука не воспроизводится через основные динамики во время записи.

Примечание:

Наиболее близким решением, которое я получил, является обнаружение, является ли устройство iPod Touch, и, если это так, отключение звука системы при записи начинается с использованием следующего фрагмента кода:

[MPMusicPlayerController iPodMusicPlayer].volume = 0.0;

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

Любая помощь будет оценена!

...