2016-12-05 4 views
0

Kürzlich habe ich begonnen, Audio zu meinem Projekt hinzuzufügen, wenn Sie auf einen Knopf tippen, wird es einen schönen Sound-Effekt machen, aber selbst wenn der Mute-Schalter meines iPhones eingeschaltet ist, wird der Ton immer noch abgespielt. Ich würde gerne wissen, wie man erkennt, dass der Benutzer auf den Mute-Schalter umgeschaltet hat und wenn ja, den Ton der App komplett stumm schaltet.Ton stummschalten, wenn Benutzer schaltet Mute ein

Antwort

1

Sie können nicht wirklich testen müssen, wenn der Mute-Schalter eingeschaltet ist, sondern nur Ihre AudioSession sagen, welche Kategorie Wiedergabe-Modus geeignet ist, und lassen Sie iOS entscheiden, ob der Ton sollte oder nicht spielen.

https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html

Sie AVAudioSessionCategoryAmbient wollen, die die App wird dazu führen, dass durch die Mute-Taste zum Schweigen gebracht werden.

+0

Danke! Hat den Trick gemacht! –

0

Apple hat keine direkte API, um den stillen Modus auf iPhones kennenzulernen. Aber wir haben ein wenig Arbeit, um es herauszufinden.

Vorherige SO-Antworten können Ihnen dabei helfen, die Problemumgehung zu finden.

How to programmatically sense the iPhone mute switch?

How can I detect whether an iOS device is in silent mode or not?

Für die schnelle und Arbeitslösung von 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."); 
} 
+0

Ich sehe .... und wo ich diesen Code zum Stummschalten der Taste oder Sound der gesamten App, wenn Mute eingeschaltet ist? –

+0

Ich lege das in die Viewdidload? –