когда вы используете сеанс для воспроизведения и записи, воспроизведение происходит из динамика, используемого для телефона, в противном случае он выходит из динамика, расположенного в нижней части телефона. это для предотвращения обратной связи. Вы можете переопределить это так (но остерегайтесь обратной связи, не проблема, если вы не делаете оба сразу)
//when the category is play and record the playback comes out of the speaker used for phone conversation to avoid feedback
//change this to the normal or default speaker
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof (doChangeDefaultRoute), &doChangeDefaultRoute);
этот код работает на 3.1.2, ранее sdk нужно делать по-другому.
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
status = AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, sizeof (audioRouteOverride), &audioRouteOverride);
Вы должны быть осторожны с этим методом, он переопределит, даже если у вас подключены наушники, вы должны отслеживать прерывания и соответственно менять маршруты. намного лучше, используя 3.1.2