Android BatteryManager Alternativen

Ich versuche, Akku-Stats in meiner Anwendung für einige Benchmarking zu bekommen. Der wundervolle BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER lässt mich die Mikro-Verstärker des Gerätes abfragen, was großartig ist. Dies wurde jedoch nur in API 21 eingeführt, so dass die Anzahl der Geräte, die dies erreichen kann, ziemlich begrenzt ist. Gibt es einen kompatiblen Weg, um etwas Ähnliches in niedrigeren Versionen der APIs (bis zu 4.0) zu tun? Ich weiß, BatteryManager.EXTRA_LEVEL wird mir den Prozentsatz geben, aber das ist wirklich nicht feinkörnig.

  • Die Beziehung zwischen Phonegaps "onBodyLoad () / onDeviceReady ()" Funktionen und Jquery's "$ (document) .ready ()"
  • Ist es möglich, LLVM-Bibliotheken zu Android / ARM zu kompilieren
  • Wie erstelle ich das Hamburger-Icon, das für ActionBarToggle auf Android Toolbar mit einem benutzerdefinierten Drawable verwendet wird?
  • Md5 mit Android und PHP
  • Open Street Map arbeitet offline android
  • ClassCastException: android.widget.EditText
  • Android ListView Live-Aktualisierung
  • OnItemClickListener funktioniert nicht mit ListView Element mit Schaltfläche
  • Wie man Audio auf Android-Verschleiß aufnimmt
  • Android, Sendung parcelable Daten
  • Libgdx Setup UI gibt 2 unerwartete Fehler im neuen GWT-Projekt
  • Wie verwende ich FragmentPagerAdapter, um Tabs mit verschiedenen Inhalten zu haben?
  • 3 Solutions collect form web for “Android BatteryManager Alternativen”

    Soweit ich weiß, können Sie das nicht mit älteren öffentlichen APIs machen. Ich arbeitete auf einer System-Level-App, die Batterie-Nutzung Stats an einen Benutzer zeigt. Ich habe meinen Code von Android Einstellungen App und meine Benutzer benötigen root Zugriff oder die App muss mit Plattform-Schlüssel signiert werden. Sie können in PowerUsageDetail , BatteryInfo und PowerUsageSummary Klassen schauen . Wenn Sie Glück haben, können Sie Zugang zu versteckten APIs mit JAVA Reflexion erhalten. Andernfalls benötigen Sie Plattformschlüssel oder Wurzel. Die internen APIs ändern sich sehr oft, so dass es ein Schmerz ist.

    Es gibt auch ein paar Werkzeuge, die Sie vielleicht auschecken möchten:

    • Adb Shell Müllsack Batterien
    • Adb Shell Dumpsys Batterieinfo
    • Batterie Historiker
    • Adb shell bugreport

    Dumpsys Quellcode

    Viel Glück!

    Bearbeiten:

    Mein altes Projekt könnte für dich nützlich sein.

    Anfang dieses Jahres lief ich in einen interessanten Artikel über eine Methode, um Smartphones zu lokalisieren, die nur auf dem Stromverbrauch des Gerätes basierten, genannt PowerSpy .

    Während ich die Methode selbst niemals umgesetzt habe, behaupten die Autoren:

    Auf Android-Lesung des Telefons aggregierte Leistungsmesser wird durch wiederholtes Lesen der folgenden zwei Dateien durchgeführt:
    /sys/class/power_supply/battery/voltage_now
    /sys/class/power_supply/battery/current_now

    Sie behaupten auch, die Methode auf Nexus 4, Nexus 5 und HTC getestet zu haben. Während dies nicht so spezifisch ist, welche genauen Versionen von Android die Geräte mit ausgerüstet wurden, soll Nexus 4 mit API Level 17 und Nexus 5 mit API Level 19 kommen, aber beide Telefone scheinen OS-Upgrades unterworfen zu sein.

    Allerdings scheint dies eine radikal andere Methode zu sein, wenn man mit denjenigen übereinstimmt, die von den anderen Plakaten erwähnt werden, also wohl erwähnenswert. Leider scheint es ein Low-Level-Ansatz, so dass eine Menge Arbeit erforderlich sein könnte, um zu bekommen, was Sie brauchen, da Macht, wie in Physik, nicht wirklich bedeutet, Batterieverbrauch. Aber vielleicht brauchst du es so.

    Zuletzt hat der Artikel erwähnt, dass der Zugriff auf die beiden Dateien keine besonderen Berechtigungen erfordert (welche Art von motiviert die Studie, die sie an erster Stelle).

    BEARBEITEN

    Zweites Denken, wenn du P=U*I (nimm U und ich wie oben erwähnt) und integrieren über die Zeit (das wäre eine Summe in diesem diskreten Fall) könnte man nur eine sehr gute Annäherung des Batterieverbrauchs. Vielleicht färbst du auch in einem Kalman-Filter (um den Lärm auf U und I zu dämpfen, wobei zu beachten ist, dass deine Algorithmen nicht der einzige Verbraucher sind) und du kannst einfach was du willst.

    Wie pro die Batterie Überwachung Ausbildung http://developer.android.com/training/monitoring-device-state/battery-monitoring.html , können Sie die aktuelle Batterie Informationen, indem Sie:

     IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatus = context.registerReceiver(null, ifilter); int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1); float batteryPct = level / (float)scale; 

    Beachten Sie, dass Sie dies weiterhin wiederholt aufrufen müssen, um den aktualisierten Akkustand zu erhalten. Wenn du deine App aufwachst und das überprüft, nimmt das die Batterie selbst, sie schlagen vor:

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.