Свойства iPhone AudioSession - PullRequest
       4

Свойства iPhone AudioSession

1 голос
/ 25 июля 2010

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

  1. может одновременно записывать и воспроизводить звук
  2. может смешивать аудиовыход с другимиприложение, например, iPod
  3. аудио выход на динамик, когда наушники не подключены
  4. аудио выход на наушники, когда он подключен

Я использовал следующий код.

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *audioSessionError;
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&audioSessionError];

UInt32 mix = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(mix), &mix);

UInt32 route = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(route), &route);

[audioSession setActive:YES error:&audioSessionError];

Тем не менее, я могу достичь 1-3, но потерпел неудачу на 4. Когда наушники подключены, звук все еще идет через динамик.Затем я попытался установить kAudioSessionProperty_OverrideCategoryDefaultToSpeaker вместо kAudioSessionProperty_OverrideAudioRoute, но это привело к остановке iPod вместо микширования обоих звуков.Может ли кто-нибудь помочь, указав, что не так с приведенным выше кодом?

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 02 февраля 2011

Я думаю, что это:

UInt32 route = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(route), &route);

Специально означает использовать динамик.Действие по умолчанию (для использования наушников при подключении) должно быть:

    UInt32 route = kAudioSessionOverrideAudioRoute_None;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...