Обнаружение выключения звука iPhone в iOS 5 - PullRequest
6 голосов
/ 17 ноября 2011

Я знаю, что Apple не предоставляет способ определения состояния переключателя iPhone mute/silence в iOS 5 .Тем не менее, я попробовал метод, упомянутый в другом месте, чтобы обнаружить это путем воспроизведения аудиофайла и измерения его времени выполнения.Однако, несмотря на то, что мой iPhone был отключен, аудиофайл все равно воспроизводился.Я использую [AVAudioPlayer play] и вычисляю время до вызова audioPlayerDidFinishPlaying.Вам известен трюк для воспроизведения аудиофайла, который завершится рано / немедленно, если телефон отключен?

1 Ответ

4 голосов
/ 17 ноября 2011

ОБНОВЛЕНИЕ: Извините, приведенный ниже код работает хорошо для меня, но я использую iOS4.Для iOS5 этот ответ решит вашу проблему - Обнаружение переключателя Ring / Silent / Mute на iPhone с помощью AVAudioPlayer не работает?

Этот фрагмент кода - то, что вам нужно.Определить глобальный gAudioSessionInited вар.Этот флаг говорит вам, включен ли ваш выключатель звука.

// "Ambient" makes it respect the mute switch. Must call this once to init session
if (!gAudioSessionInited)
{
    AudioSessionInterruptionListener inInterruptionListener = NULL;
    OSStatus error;
    if ((error = AudioSessionInitialize (NULL, NULL, inInterruptionListener, NULL)))
        NSLog(@"*** Error *** error in AudioSessionInitialize: %d.", error);
    else
        gAudioSessionInited = YES;
}

SInt32  ambient = kAudioSessionCategory_AmbientSound;
if (AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (ambient), &ambient))
{
    NSLog(@"*** Error *** could not set Session property to ambient.");
}
...