Воспроизведение звука, когда приложение неактивно / находится в фоновом режиме относительно отключения звука / переключения вызова - PullRequest
4 голосов
/ 06 июня 2011

Я хочу воспроизводить звук, когда мое приложение находится в фоновом режиме, и соблюдаю переключатель mute-ring.

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

sound = [[AVAudioPlayer alloc] initWithContentsOfURL:fileUrl error:nil];
sound.numberOfLoops = -1;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
/* ... */
[sound playAtTime:0];

AVAudioSessionCategoryPlayback заставляет мое приложение игнорировать переключатель беззвучного режима / звонка и воспроизводить звук в фоновом режиме.

Поскольку я хочу иметьПоследнее поведение без первого, я искал решение для запроса состояния Silent / Rind-Switch.Я пробовал разные подходы, но, похоже, это работало для большинства пользователей:

 -(BOOL)silenced {
 #if TARGET_IPHONE_SIMULATOR
     // return NO in simulator. Code causes crashes for some reason.
     return NO;
 #endif

CFStringRef state;
UInt32 propertySize = sizeof(CFStringRef);
AudioSessionInitialize(NULL, NULL, NULL, NULL);
AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);
if(CFStringGetLength(state) > 0)
        return NO;
else
        return YES;

}

Я нашел это здесь: Как программно определить выключатель звука iPhone?

Этот код не работает для меня.Несмотря на то, что телефон отключен, «состояние» не пусто.

У кого-нибудь есть идеи, почему это не работает для меня?Я занимаюсь разработкой и тестированием для iOS 4.3.

Thx.

Редактировать Я использовал CFShow, чтобы показать содержимое kAudioSessionProperty_AudioRoute, и это каждый раз «Speaker», тем не менее, я изменил состояние переключателя отключения звука / звонка.

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