Наше приложение использует remoteIO (аудиоустройство) для получения аудиовхода с микрофона и DSP через него в режиме реального времени, оно имеет функцию обратного вызова, которая дает мне буфер, и я работаю над ним.
В то же время нам нужно проигрывать звуки через avAudioPlayer.
Я вставил в свой init this: (направьте звуки на динамик и дайте ему воспроизвести и записать)
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
но потом я увидел что-то странное. Звук воспроизводится из маленького динамика - тот, который вы используете, чтобы надеть уши, в телефонных звонках.
Тогда я сделал трюк.
Я видел, что для того, чтобы действительно направить звуки на динамики, мне нужно что-то воспроизвести и одновременно выполнить эти 4 строки выше.
Если я делаю это 1 раз, то звуки возвращаются в динамики навсегда .
Я сделал это с помощью таймера, который вызывает метод, и в тот момент, когда этот метод выполняет их, я воспроизводил звук с помощью avaudioPlayer, а затем исправлял его и направлял звук в динамики.
У кого-нибудь есть какое-либо решение или объяснение этой вещи?
Мне действительно нужно воспроизводить звуки через динамики без трюков.