Vérification des écouteurs connectés à l'appareil par programmation?
-
19-09-2019 - |
Question
J'utilise la classe AVAudioPlayer
pour jouer les fichiers .mp3 dans mon application. Est-il possible de vérifier si les écouteurs sont connectés au dispositif programme?
Dans la première génération d'appareils iPod, la barre de contrôle du volume est caché (pour la musique et des vidéos) lorsqu'aucune écouteurs sont connectés.
La solution
Vous pouvez obtenir la « route » audio en cours en appelant AudioSessionGetProperty
avec la propriété kAudioSessionProperty_AudioRoute
.
Cela vous donne une chaîne telle que « casque » ou « Président ».
Vous pouvez également utiliser AudioSessionAddPropertyListener
pour écouter quand les changements d'itinéraire (par exemple. Débrancher le casque)
Voir la documentation de pomme ici
Autres conseils
AudioSessionGetProperty et AudioSessionAddPropertyListener sont dépréciées dans iOS 7.
Au lieu, utilisez: 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;
}
}
Il existe deux approches:
1) vérifier l'état instantané de l'itinéraire audio
détecter si un casque (non microphone) sont branchés à un dispositif iOS
Cette réponse vous fournit une méthode prête pour détecter si le casque est branché.
2) de suivre les événements de changement d'itinéraire, et définir un indicateur à chaque changement d'itinéraire entre le casque et le casque d'écoute non-
Comment détecter programme écouteur iPhone?
(voudrait probablement ajouter le code du premier lien dans ce fait pour déterminer si le casque / statut de non-casque a été changé dans le changement d'itinéraire rappel)