2017-02-08 7 views
2

私は約推定しようとしています。下記の方法でAndroidの電池残量を確認していますが、常に正確ではありません。バッテリーが20%、15%に達したときに2回 を保存した上から法の下 アンドロイドのバッテリー残時間を見積もる

  • それはおよそ推定値を計算します優先して、現在のタイムスタンプを保存します、精度を向上させるためにどんな提案を入力してください残りのバッテリ寿命を推定

    おかげで

    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

代わりにそれらのサンプルに基づいてプロジェクションを行うと考えましたか?たとえば、減った%ごとにサンプルを取り、既知のアルゴリズムの1つを使って投影しますか? :) – JohanShogun

+0

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

+0

あなたはUtilクラスの環境設定を投稿できますか? – Kaushal28

答えて

2

分析に基づいています。他の人たちは、バッテリレベルの変化を聞く必要があると言いました。さらに、それらの状況を把握しなければなりません。しばらくすると、バッテリーの平均時間を計算するのに十分なデータが得られます。さらに、バッテリーがいつ早く排水するのか、排水が遅くなったのかを知っているので、これに基づいて見積もりを改善することができます。また、ユーザーがいつデバイスを充電するかを知ることができます。追跡することができ、バッテリレベルを使用することができる多くのイベントがあります。さらに、画面のオン/オフをいつでも追跡することができます。残りのバッテリ寿命を計算するアルゴリズムはあなた次第:)

あなたはこれを試すことができます:

は、バッテリ統計からすべての情報を収集し、トータルでの使用を数えます。その後、毎秒の使用量、1秒あたりのバッテリの放電量を計算します。

はmAhのバッテリ容量を取得し、残りのこの式と一緒に暮らすの計算:用法の速度あたりの総容量

私は、これは(少なくともビット)を説明したいと考えています。

+0

現在のバッテリ容量をmAhで取得する方法は? (総バッテリ容量ではない) –

+0

このサンプルコードを試してください。 http://stackoverflow.com/a/22243511/1567907 –

+1

上記の例のリンクは、現在のバッテリ容量ではなく、バッテリ容量の合計です –

関連する問題