UPDATE: Sorry the code below works fine for me, but I am using iOS4. For iOS5, this answer will help solve your problem - Detecting Ring / Silent / Mute iPhone switch using AVAudioPlayer not working?
This piece of code you need. Define the global gAudioSessionInited var. This flag tells you whether your mute switch is on or off.
// "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."); }
source share