3

我试图估计大约。使用以下方法在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;
}
4

1 回答 1

2

估计剩余电池寿命是基于分析。正如其他人所说,您必须聆听电池电量的变化,此外您还必须跟踪它们。一段时间后,您将有足够的数据来计算电池的平均使用时间。此外,您知道电池何时快速耗尽,何时耗尽缓慢,因此您可以基于此改进您的估计。此外,您还将知道用户在什么时间为设备充电。有很多事件可以跟踪并使用电池电量。此外,您还可以跟踪屏幕何时打开或关闭。计算剩余电池寿命的算法取决于你:)

你可以试试这个:

从电池统计中收集所有信息,并统计总使用量。然后计算每秒的使用量,每秒消耗了多少电池。

以 mAh 为单位获取电池容量,并使用以下公式计算剩余电量:每次使用速度的总容量

我希望这能解释(至少有点)。

于 2017-02-08T08:20:00.883 回答