web-dev-qa-db-fra.com

Vérifiez si les écouteurs sont branchés

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?

17
dosse91214

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 +

32
Naskov

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()+"");
8
Ravi Makvana

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;
    }
3
anivaler

Utiliser API Google Awareness

C'est très riche en émotions contextuelles.

0