Перейти к содержанию

Уменьшение громкости воспроизведения до нуля

В iOS приложении из-за упоминаемого здесь бага 17292753 невозможно уменьшить громкость воспроизведения аппаратными кнопками до нуля. Чтобы заглушить звук при воспроизведении, начиная со сборки 2.6.26 добавлены методы

[[FPWCSApi2 getAudioManager] muteAudio];

для отключения и

[[FPWCSApi2 getAudioManager] unmuteAudio];

для восстановления звука.

Чтобы обойти баг и позволить отключать звук аппаратными кнопками, необходимо подписаться на события изменения громкости (code)

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];

и при снижении уровня, возвращаемого кнопками, до определенного значения отключать звук, а при превышении - включать (code)

- (void)volumeChanged:(NSNotification *)notification
{
    float volume =
    [[[notification userInfo]
      objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"]
     floatValue];

    currentVolume = volume;

    if (volume <= 0.0625) {
        [[FPWCSApi2 getAudioManager] muteAudio];
    } else {
        [[FPWCSApi2 getAudioManager] unmuteAudio];
    }

}