Je n'arrive pas à trouver un moyen de savoir sur Android si les écouteurs sont branchés. J'ai trouvé diverses solutions, mais elles semblent toujours retourner fausses. La seule chose qui semble fonctionner correctement est une BroadcastReceiver
, mais ce n'est pas ce dont j'ai besoin:
J'ai juste besoin de quelque chose comme ça
if(headphones plugged in) {
}
Y a-t-il une telle fonction? Faut-il des autorisations spéciales?
Vous pouvez utiliser ce code pour vérifier si le casque est branché
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.isWiredHeadsetOn();
(Ne vous inquiétez pas de la dépréciation, il est toujours utilisable pourUNIQUEMENTen vérifiant si le casque est branché.)
Et vous avez besoin de <uses-permission Android:name="Android.permission.MODIFY_AUDIO_SETTINGS" />
Disponible dans Android 2.0 +
Utilisez ce code ...
AudioManager am1 = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
Log.i("WiredHeadsetOn = ", am1.isWiredHeadsetOn()+"");
Log.i("MusicActive = ", am1.isMusicActive()+"");
Log.i("SpeakerphoneOn = ", am1.isSpeakerphoneOn()+"");
AudioManager.isWiredHeadsetOn () estOBSOL&EGRAVE;TE. Vous devez donc utiliser AudioManager.getDevices () method à la place:
private boolean isHeadphonesPlugged(){
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
AudioDeviceInfo[] audioDevices = audioManager.getDevices(AudioManager.GET_DEVICES_ALL);
for(AudioDeviceInfo deviceInfo : audioDevices){
if(deviceInfo.getType()==AudioDeviceInfo.TYPE_WIRED_HEADPHONES
|| deviceInfo.getType()==AudioDeviceInfo.TYPE_WIRED_HEADSET){
return true;
}
}
return false;
}
Utiliser API Google Awareness
C'est très riche en émotions contextuelles.