Frage

ich die AVAudioPlayer Klasse bin mit spielen MP3-Dateien in meiner App. Ist es möglich, zu prüfen, ob die Kopfhörer an das Gerät angeschlossen sind programmatisch?

In der ersten Generation iPod-Geräte, wird die Lautstärke-Steuerleiste ausgeblendet (für Musik und Videos), wenn keine Kopfhörer angeschlossen sind.

War es hilfreich?

Lösung

Sie können die aktuelle Audio-Route 'erhalten, indem AudioSessionGetProperty mit dem kAudioSessionProperty_AudioRoute Eigenschaft aufrufen. Dies gibt Ihnen eine Zeichenkette wie „Kopfhörer“ oder „Lautsprecher“.

Sie können auch AudioSessionAddPropertyListener verwenden, um zu hören, wenn die Routenänderungen (z. B. Trennen Kopfhörer)

Sehen Sie apple docs hier

Andere Tipps

AudioSessionGetProperty und AudioSessionAddPropertyListener sind veraltet in iOS 7.

Verwenden Sie stattdessen: AVAudioSessionRouteChangeNotification

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleRouteChange:) name:AVAudioSessionRouteChangeNotification object:nil];

Listener,

-(void)handleRouteChange:(NSNotification*)notification 
{
    NSInteger reason = [[[notification userInfo] objectForKey:AVAudioSessionRouteChangeReasonKey] integerValue];
    switch (reason) {
        case AVAudioSessionRouteChangeReasonOldDeviceUnavailable :
            break;
        case AVAudioSessionRouteChangeReasonNewDeviceAvailable :
            break;
        case AVAudioSessionRouteChangeReasonOverride :
            break;
        case AVAudioSessionRouteChangeReasonCategoryChange :
            break;
        case AVAudioSessionRouteChangeReasonWakeFromSleep :
            break;
        case AVAudioSessionRouteChangeReasonNoSuitableRouteForCategory :
            break;
        case AVAudioSessionRouteChangeReasonRouteConfigurationChange :
            break;
        case AVAudioSessionRouteChangeReasonUnknown:
        default:
            break;
    }
}

Es gibt zwei Ansätze:

1) überprüfen Sie den momentanen Zustand der Audio-Route

erkennen, wenn Kopfhörer (nicht Mikrofon) in auf einem iOS-Gerät angeschlossen werden

Diese Antwort liefert Ihnen eine fertige Methode zum Erfassen, ob Kopfhörer angeschlossen sind.

2) Routenänderungsereignisse überwachen, und einen Flag, wenn die Streckenänderungen zwischen Headset und nicht-Headset

Wie programmatisch in iphone Hörmuschel erkennen?

(würde wahrscheinlich wollen Sie den Code aus dem ersten Link in diese hinzufügen, um festzustellen, ob tatsächlich Headset / nicht-Headset Status innerhalb der Routenänderung Rückruf geändert wurde)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top