В iOS 5 после изменения категории «AudioQueueStart» использовал 3 ~ 5 секунд, чтобы начать запись - PullRequest
1 голос
/ 13 октября 2011

После того, как я изменил категорию AudioSession с kAudioSessionCategory_MediaPlayback на kAudioSessionCategory_PlayAndRecord, метод AudioQueueStart завис на 3 ~ 5 секунд, чтобы начать запись.

Проблема возникает только на устройствах iOS с iOS 5, а не в Simulator или на устройствах с iOS 4 или iOS 3.

Вот что я пробовал:

Если я не изменяю категорию, но всегда использую kAudioSessionCategory_PlayAndRecord, все работает нормально. AudioQueueStart начать запись примерно через 0,01 секунды. Но так как я хочу, чтобы мой звук исходил из динамика устройства, я не могу все время использовать kAudioSessionCategory_PlayAndRecord.

Одновременное использование kAudioSessionOverrideAudioRoute_Speaker и kAudioSessionCategory_PlayAndRecord - хорошая идея, но если я это сделаю, мне также придется справляться с множеством ситуаций kAudioSessionProperty_AudioRouteChange, таких как пользователь подключает или снимает наушники, подключает Bluetooth гарнитура и т. д. Это слишком сложно.

Любой совет или решение будет оценено.

1 Ответ

3 голосов
/ 14 октября 2011

Наконец-то я нашел способ обойти проблему, которая, на мой взгляд, является ошибкой iOS 5.

Я установил категорию на kAudioSessionCategory_PlayAndRecord и использую следующий код:

UInt32 defaultToSpeaker = TRUE;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(defaultToSpeaker), &defaultToSpeaker);

Обратите внимание, что идентификатор kAudioSessionProperty_OverrideCategoryDefaultToSpeaker доступен только в iOS 3.1 или более поздней версии.

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