2017-02-08 4 views
2

Ich versuche, die ca. schätzen. verbleibende Akkulaufzeit in Android unter Verwendung der Methode unten, aber es ist nicht in allen Zeiten korrekt. Bitte geben Sie eine Anregung, die Genauigkeit zu verbessern,Schätzen Sie die verbleibende Akkulaufzeit in Android

  • Below Methode aktuelle Zeitstempel in Präferenz sparen, wenn die Batterie zu 20%, 15%
  • Es berechnen wird ca. Schätzung von oben 2 mal gespeichert

Dank

public static String getBatteryEstimation(Context context){ 
    String contentText = ""; 
    try{ 
     //timestamp recorded when battery reach 20% 
     long time1 = PreferencesUtil.getInstance().getLong(PreferencesUtil.KEY_BATTERY_THERESHOLD_TIME_1); 

     //timestamp recorded when battery reach 15% 
     long time2 = PreferencesUtil.getInstance().getLong(PreferencesUtil.KEY_BATTERY_THERESHOLD_TIME_2); 

     long timeDiffInMillis = time2 - time1; 
     long timeTakenFor1Percentage = Math.round(timeDiffInMillis/5); 
     long timeLastForNext15Percentage = timeTakenFor1Percentage * 15; 

     long hoursLast = Math.abs(TimeUnit.MILLISECONDS.toHours(timeLastForNext15Percentage)); 
     long minutesLast = Math.abs(TimeUnit.MILLISECONDS.toMinutes(timeLastForNext15Percentage)-        TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(timeLastForNext15Percentage))); 

     String timeLastMessage = ""; 
     if(hoursLast > 0){ 
      timeLastMessage = String.valueOf(minutesLast)+" hour(s) "+String.valueOf(minutesLast) + " min(s)"; 
     } else { 
      timeLastMessage = String.valueOf(minutesLast) + " min(s)"; 
     } 

     DateFormat dateFormat = new SimpleDateFormat("HH:mm dd MMM"); 
     Date date = new Date(); 
     contentText = String.format(context.getString(R.string.battery_low_content_1), timeLastMessage, dateFormat.format(date)); 
    } catch (Exception e){ 
     e.printStackTrace(); 
    } 

    return contentText; 
} 
+0

Haben Sie darüber nachgedacht, mehr Proben zu nehmen und stattdessen eine Projektion basierend darauf zu erstellen? Nehmen Sie zum Beispiel ein Beispiel für jedes% verringert und machen Sie dann eine Projektion mit einem der bekannten Algorithmen? :) – JohanShogun

+0

http://android.stackexchange.com/questions/45734/how-does-the-android-os-estimate-remaining-battery-time –

+0

Können Sie die Präferenz Util-Klasse? – Kaushal28

Antwort

2

die verbleibende Lebensdauer der Batterie Abschätzen basiert auf Analysen. Wie die anderen Leute sagten, müssen Sie auf den Batteriestand achten und zusätzlich müssen Sie sie im Auge behalten. Nach einiger Zeit haben Sie genug Daten, um zu berechnen, wie lange der Akku durchschnittlich hält. Außerdem wissen Sie, wann die Batterie schnell abfließt und wenn die Abflüsse langsam sind, so dass Sie auf dieser Grundlage Ihre Einschätzung verbessern können. Außerdem wissen Sie, in welcher Zeit der Benutzer die Geräte lädt. Es gibt viele Ereignisse, die verfolgt werden können und den Akkustand verwenden. Außerdem können Sie verfolgen, ob der Bildschirm ein- oder ausgeschaltet ist. Der Algorithmus der verbleibenden Batterielebensdauer der Berechnung hängt von Ihnen

:) können Sie dies versuchen:

alle Informationen sammeln aus den Akkudaten und die Nutzung insgesamt zählen. Berechnen Sie dann den Verbrauch pro Sekunde, wie viel die Batterie pro Sekunde leer war.

die Batteriekapazität in mAh, erhalten und die restlichen leben mit dieser Formel berechnet werden: Gesamtkapazität pro Geschwindigkeit der Nutzung

Ich hoffe, das erklärt (zumindest etwas).

+0

Wie bekomme ich die aktuelle Batteriekapazität in mAh? (nicht die gesamte Batteriekapazität) –

+0

Probieren Sie diesen Beispielcode aus. http://StackOverflow.com/a/22243511/1567907 –

+1

oben Beispiel Link für die gesamte Batteriekapazität, nicht für die aktuelle Batteriekapazität –

Verwandte Themen