2016-08-12 5 views
9

Wie kann ich Akku Ladegeschwindigkeit in Android-Gerät erkennen? Ich kann den Batteriestatus unter Verwendung des folgenden Codes erkennen. aber keine Ladegeschwindigkeit.Wie kann man die Ladegeschwindigkeit der Batterie testen?

IntentFilter filter = new IntentFilter(); 
filter.addAction(Intent.ACTION_BATTERY_CHANGED); 
BatteryChangeReceiver receiver = new BatteryChangeReceiver(subscriber); 
registerReceiver(receiver, filter); 


public class BatteryChangeReceiver extends BroadcastReceiver { 

    @Override public void onReceive(Context context, Intent intent) { 
       // here I get all battery status. 
    } 
    } 

Ich beziehe mich auch this, this und this kann aber nicht die Möglichkeit zu überprüfen, Ladegeschwindigkeit finden.

Es gibt eine App (Ampere), die Ladegeschwindigkeit anzeigt. enter image description here enter image description here Wie kann ich das erreichen?

Vielen Dank im Voraus.

+0

Machen Sie eine Kombination aus Zeit und Ladung Prozentsatz. – Amy

+0

Nein, es wird angezeigt, sobald ich das Ladegerät angeschlossen habe. Wenn ich an USB-Kabel anschließe, dann wird langsames Aufladen und wenn Wandladegerät und schnelles Aufladen angezeigt. –

+0

Ich denke, Sie können es im Dmesg-Protokoll des Geräts finden. –

Antwort

4

Verwenden Sie die BatteryManager. Es bietet die Eigenschaft BATTERY_PROPERTY_CURRENT_AVERAGE, die Ihnen den durchschnittlichen Batteriestrom in Mikroampere gibt. Leider kann der Zeitraum, über den diese Informationen gesammelt werden, von Gerät zu Gerät unterschiedlich sein. Negative Werte bedeuten Entladen, positive Werte bedeuten, dass das Telefon aufgeladen wird.

Alternativ können Sie BATTERY_PROPERTY_CURRENT_NOW verwenden (es sieht so aus, als ob Ampere diesen Ansatz verwendet). Es gibt den momentanen Batteriestrom zurück. Es mag nicht korrekt sein, also ist es eine gute Idee, diese Eigenschaft ein paar Mal aufzurufen und den Durchschnitt zu berechnen.

Beispielcode:

BatteryManager batteryManager = (BatteryManager) Context.getSystemService(Context.BATTERY_SERVICE); 
int averageCurrent = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_AVERAGE); 
+0

Es wird in API 21 hinzugefügt. Können Sie die Lösung bereitstellen, die auch in der niedrigeren Version funktioniert? –

+0

Nur Telefone mit einer Batterieanzeige (https://source.android.com/devices/tech/power/device.html) können BATTERY_PROPERTY_CURRENT_AVERAGE zurückmelden. Zum Beispiel kann Nexus 5 nur BATTERY_PROPERTY_CAPACITY bereitstellen. – Jehy

1

Ich denke nicht, ihre jede mögliche Weise Geschwindigkeit zu erfassen Lade: Aber man kann es in problematischer Weise tun: 1) Sie können geladene Ebene aufzeichnen (Prozentsatz oder Anzahl) von

int level = intent.getIntExtra (BatteryManager.EXTRA_LEVEL, 0); batteryTxt.setText (String.valueOf (level) + "%");

2) Und dann nach einiger Bearbeitungszeit können Sie wieder die aktuelle geladene Ebene mit dem gleichen Code erhalten. 3) Dann berechnen Sie die Differenz und dann können Sie die Ladegeschwindigkeit kennen.

Dies ist nur die Idee, wie Sie es implementieren können.

Hoffe, dies wird Ihnen helfen

Verwandte Themen