当用户打开静音开关时静音
Mute Sound When User Toggles Mute switch On
最近我开始在我的项目中添加音频,当你点击一个按钮时它会产生很好的声音效果但即使我的 iPhone 的静音开关打开声音仍然播放。我想知道如何检测用户是否已打开静音开关,如果是,则将应用程序的声音完全静音。
Apple 没有直接 API 了解 iPhone 上的静音模式。但是我们确实有一些解决办法。
以前的 SO 答案可以帮助您找到解决方法。
How to programmatically sense the iPhone mute switch?
来自 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.");
}
您可能不需要实际测试静音开关是否打开,相反,只需告诉您的 AudioSession 什么类别播放模式是合适的,让 iOS 决定是否播放声音。
您需要 AVAudioSessionCategoryAmbient,这将导致应用被静音按钮静音。
最近我开始在我的项目中添加音频,当你点击一个按钮时它会产生很好的声音效果但即使我的 iPhone 的静音开关打开声音仍然播放。我想知道如何检测用户是否已打开静音开关,如果是,则将应用程序的声音完全静音。
Apple 没有直接 API 了解 iPhone 上的静音模式。但是我们确实有一些解决办法。
以前的 SO 答案可以帮助您找到解决方法。
How to programmatically sense the iPhone mute switch?
来自 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.");
}
您可能不需要实际测试静音开关是否打开,相反,只需告诉您的 AudioSession 什么类别播放模式是合适的,让 iOS 决定是否播放声音。
您需要 AVAudioSessionCategoryAmbient,这将导致应用被静音按钮静音。