2012-03-22 1 views
0

Есть ли способ программно проверить, используется ли аудиосистема исключительно на iPhone? Если приложение пытается использовать аудиосистему при активном вызове FaceTime или сотового телефона, при попытке запуска аудио будет возникать ошибка. Я хотел бы проверить, используется ли аудиосистема исключительно перед попыткой запуска аудио.проверить, используется ли аудиосистема

Приложение, над которым я работаю, является приложением типа VOIP. Когда есть входящий вызов, я хотел бы проверить, можно ли использовать аудиосистему до того, как на вызов будет дан ответ. Я пробовал CTCallCenter, и он работает для сотовых телефонов, но звонки FaceTime не отображаются там.

Спасибо, Conway

ответ

0

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

+0

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

-1

Посмотрите на делегатов обработки прерываний в документации аудио сессии.

https://developer.apple.com/Library/ios/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/Introduction/Introduction.html

Вы можете установить флаг в вашем приложении, чтобы предотвратить от ответа вашего голосового вызова, если вы между beginInterruption и методами endInterruption.

+0

Есть пара проблем с beginInterruption и endInterruption: –

+0

Первая проблема: они не попадают парами, поэтому в какой-то момент я получил последний beginInterruption, но не получил и endInterruption; то мое приложение думает, что оно постоянно прерывается. Вторая проблема: механизм прерывания не прерывается между не прерываемым звуком (сотовый телефон и факс-вызовы) и прерывистым звуком (музыкальным проигрывателем). –

+0

Извините, что вы все еще испытываете проблемы. Если вы найдете хорошее решение, пожалуйста, опубликуйте его. Мне было бы очень интересно услышать об этом. – learnvst