7
votes

Obtenir un câble USB Câble branché Evénement en utilisant extra_pluggeged ne fonctionne pas

Mon intention est d'avoir enregistré les préférences Statut actuel du dispositif Android Câble USB / Power: connecté / déconnecté. Du site développeur, je vois qu'il y a deux incidents d'obtenir cet état: action_power_connected / déconnecté. J'ai donc utilisé le même code que publié aux développeurs:

http: //developer.android.com/training/Monitoringing-device-state/battery-monitoring.html

Dans la section Monitez les modifications de l'état de charge.

Manifeste xxx

code Java xxx

quand je branche le câble USB En / out que la diffusion est toujours correctement envoyé et capturé dans PowerConnectionRecefeiver, mais toujours avec le même résultat (= câble est branché).

Je l'ai testé avec Galaxy Nexus 4.1.1 / 4.2.1 - Je reçois toujours 2xFalse dans Toast (ChargePlug = False, USBCharge = False).

Pourquoi < / Strong> Intention.getintextra (batterieManager.extra_plugged, -1) retourne toujours la valeur par défaut "-1"?

Merci.

PS. Tout fonctionne bien si je m'inscris dans Java xxx

... en service ou en activité. Mais selon le site des développeurs Android, il n'est pas une condition préalable à rendre le code ci-dessus pour renvoyer la valeur correcte;


2 commentaires

3 Réponses :


8
votes

Je traitais avec le même problème, sur votre message. Je pense que la question est que le code, dans la page d'entraînement Android auquel vous avez fourni un lien, est incorrect.

action_power_connected et action_power_disconnected ne "transport" pas les données que vous interrogez de l'intention de votre code. Je ne pouvais pas obtenir les mêmes choses à travailler sur mes appareils non plus (1er Gen Nexus 7 exécutant Android 4.3 et Nexus One exécutant Android 2.3.6) et, parce qu'il semble ne pas travailler nulle part, je viens au "mauvais code" Conclusion. P>

Je l'ai corrigé avec le code suivant. C'est en fait très proche de ce que vous avez fourni en tant que solution, sauf que cela entrera dans mon radiodifférieur directement et non dans une activité. Dans votre code ci-dessus, l'extrait ici irait juste avant la ligne de départ "Int LoadPlug". Après cela, changez «Intention» dans la même ligne (votre ligne), commençant «Int LoadPlug», à «Mintent». P>

final Intent mIntent = context.getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));


0 commentaires

2
votes

Je ne suis pas sûr de savoir pourquoi vous rencontrez des problèmes, mais ce qui a fonctionné pour moi, enregistrez-vous pour les actions Action_Power_Connected and Action_Power_Connected et Action_Power_Disconnected: xxx

et implémentant le récepteur de diffusion comme suit: xxx


0 commentaires

1
votes
public class PowerConnectionReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        final Intent mIntent = context.getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

        int status = mIntent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
        boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;


        int chargePlug = mIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
        boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
        boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;

    }
}

0 commentaires