Срок службы батареи

есть ли способ или как получить или узнать срок службы батареи? Я вношу информацию о батарее так же, как в «Battery Doctor Saver Pro», разница в том, что срок службы мне нужен. я понятия не имею, как это сделать. Кто-нибудь может мне с этим помочь? Спасибо за вашу помощь. :) пока это мой код без «срока жизни», о котором я сказал.

private BroadcastReceiver battery_receiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            boolean isPresent = intent.getBooleanExtra("present", false);
            String technology = intent.getStringExtra("technology");
            int plugged = intent.getIntExtra("plugged", -1);
            int scale = intent.getIntExtra("scale", -1);
            int health = intent.getIntExtra("health", 0);
            int status = intent.getIntExtra("status", 0);
            int rawlevel = intent.getIntExtra("level", -1);
            int level = 0;

            Bundle bundle = intent.getExtras();

            Log.i("BatteryLevel", bundle.toString());

            if (isPresent) {
                if (rawlevel >= 0 && scale > 0) {
                    level = (rawlevel * 100) / scale;
                }

                String info = "Battery Level: " + level + "%\n";

                info += ("Technology: " + technology + "\n");
                info += ("Plugged: " + getPlugTypeString(plugged) + "\n");
                info += ("Health: " + getHealthString(health) + "\n");
                info += ("Status: " + getStatusString(status) + "\n");

                setBatteryLevelText(info + "\n\n" + bundle.toString());
            } else {
                setBatteryLevelText("Battery not present!!!");
            }
        }
    };

    private String getPlugTypeString(int plugged) {
        String plugType = "Unknown";

        switch (plugged) {
        case BatteryManager.BATTERY_PLUGGED_AC:
            plugType = "AC";
            break;
        case BatteryManager.BATTERY_PLUGGED_USB:
            plugType = "USB";
            break;
        }

        return plugType;
    }

    private String getHealthString(int health) {
        String healthString = "Unknown";

        switch (health) {
        case BatteryManager.BATTERY_HEALTH_DEAD:
            healthString = "Dead";
            break;
        case BatteryManager.BATTERY_HEALTH_GOOD:
            healthString = "Good Condition";
            break;
        case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
            healthString = "Over Voltage";
            break;
        case BatteryManager.BATTERY_HEALTH_OVERHEAT:
            healthString = "Over Heat";
            break;
        case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:
            healthString = "Failure";
            break;
        }

        return healthString;
    }

    private String getStatusString(int status) {
        String statusString = "Unknown";

        switch (status) {
        case BatteryManager.BATTERY_STATUS_CHARGING:
            statusString = "Charging";
            break;
        case BatteryManager.BATTERY_STATUS_DISCHARGING:
            statusString = "Discharging";
            break;
        case BatteryManager.BATTERY_STATUS_FULL:
            statusString = "Full";
            break;
        case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
            statusString = "Not Charging";
            break;
        }

        return statusString;
    }

person Ringgo Lacuna De Jesus    schedule 02.02.2012    source источник


Ответы (2)


Не совсем уверен, что вы пытаетесь сделать здесь, чтобы рассчитать ватт-часы или ампер-часы, проверьте эту ссылку: http://www.powerstream.com/battery-capacity-calculations.htm Если вы хотите узнать, сколько времени осталось от батареи, которую вы используете в данный момент, вам нужно получить текущий уровень заряда батареи, а затем узнать, насколько быстро она работает. разряжается, либо проверяя, насколько быстро он был разряжен до этого момента, а затем делая предположение, либо зная, какой ток вы будете потреблять.

Наилучшие результаты будут достигнуты, если вы откалибруете свой код именно для той батареи, которую используете.

(похоже, я запутался с ответом ;))

person Bender    schedule 02.02.2012

Как я уже говорил в Получить оставшееся время работы от батареи с телефона Android, вам нужно будет получить текущий уровень заряда батареи и работать из некоторой оценки того, как быстро он в настоящее время истощается. Это будет зависеть от загрузки процессора, яркости экрана, активных радиостанций и, возможно, множества других факторов.

Короткий ответ, конечно, можно получить оценку, но это будет непросто и может быть не очень точным.

person Jaloopa    schedule 02.02.2012
comment
Он не может быть точным, поскольку вы не можете точно предсказать, как пользователь будет использовать свой телефон в течение следующих нескольких минут/часов. - person Stephen C; 02.02.2012
comment
Истинный. Хотя может быть возможно создать профиль конкретного пользователя с течением времени, чтобы получить более точную оценку (например, если устройство регулярно не используется с 9 утра до полудня, это потенциально может быть учтено). Либо так, либо сделайте это так, как это делают индикаторы батареи ноутбука, т.е. время, основанное на потреблении тока. - person Jaloopa; 02.02.2012
comment
Спасибо за ответ @Jaloopa :)) - person Ringgo Lacuna De Jesus; 02.02.2012
comment
Спасибо за помощь @Stephen :)) - person Ringgo Lacuna De Jesus; 02.02.2012
comment
@ Джалупа, а, сэр? есть код как сделать анимацию заряда батареи? что я имею в виду при зарядке, значок сверху телефона? Спасибо за помощь :) - person Ringgo Lacuna De Jesus; 07.02.2012