Недавно я начал добавлять аудио в свой проект, когда вы нажимаете кнопку, это произведет приятный звуковой эффект, но даже если мой микрофон выключится, звук все еще играет. Я хотел бы знать, как обнаружить, что пользователь переключился на переключатель отключения звука, и если так отключить звук приложения полностью.Приглушение звука при переключении пользователя при отключении звука
ответ
Вам не нужно на самом деле проверить, если немой переключатель включен, вместо этого, просто скажите AudioSession какой категории режим воспроизведения подходит и пусть IOS решить, если звук должен играть или нет.
Вы хотите AVAudioSessionCategoryAmbient, который будет вызывать приложение, чтобы заставить замолчать с помощью кнопки отключения звука.
Apple не имеет прямого API, чтобы узнать о бесшумном режиме на iPhone. однако у нас есть определенная работа, чтобы понять это.
Предыдущие ответы могут помочь вам найти обходной путь.
How to programmatically sense the iPhone mute switch?
How can I detect whether an iOS device is in silent mode or not?
Для быстрого и рабочего раствора от SO answer.
// "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.");
}
Я вижу .... и где я помещаю этот код, чтобы отключить звук или звук кнопки всего приложения, если отключен звук? –
Я положил это на viewdidload? –
Спасибо! Трюк! –