Android 电池充电

Android 电池充电,android,battery,Android,Battery,如何检测充电器的插入时间和插入时间? 我有一个扩展BroadcastReceiver并覆盖onReceive的类。我需要检查充电的开始和结束以及持续时间,但我不知道从哪里开始。你能帮帮我吗 我有一个扩展BroadcastReceiver并覆盖onReceive的类。我 需要检查开始和结束充电以及持续时间,但我不需要 知道从哪里开始 首先,您需要创建正确的BroadcastReceiver,以监听电池充电变化。您可以通过清单静态创建它: <receiver android:name=".Ba

如何检测充电器的插入时间和插入时间? 我有一个扩展BroadcastReceiver并覆盖onReceive的类。我需要检查充电的开始和结束以及持续时间,但我不知道从哪里开始。你能帮帮我吗

我有一个扩展BroadcastReceiver并覆盖onReceive的类。我 需要检查开始和结束充电以及持续时间,但我不需要 知道从哪里开始

首先,您需要创建正确的
BroadcastReceiver
,以监听电池充电变化。您可以通过清单静态创建它:

<receiver android:name=".BatteryReceiver">
    <intent-filter>
       <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
       <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
    </intent-filter>
</receiver>
或者,您可以动态创建BoadcastReceiver,并将其绑定到服务或活动中(这取决于您的需要):

如何检测充电器的插入时间和插入时间

这可以通过更可能的方式实现。确保在连接和断开充电器时,您需要节省一些时间,然后减去时间:

long chargingTime = endChargingTime - startChargingTime;
您可以在节省时间的地方使用(伪代码):


希望它能帮助解决您面临的问题。

看到这一点,也许可以帮助您:谢谢您的回复:)我可以检查电池是否正在充电,但我无法计算您在收到充电器插件意图和电池完全意图时可以捕获日期的时间,以毫秒为单位计算差值,并从中计算时间。谢谢!你们能告诉我,我的公共类BatteryReceiver是内置的,所以必须是静态的吗?否则,应用程序无效stoped@user3590445为什么是内在的?为什么不能在单个文件中正常使用?好:)但我不明白如何在BatteryReceiver类中创建SharedReferences,但我需要它在onReceive中使用,对吗?@user3590445如何在示例中动态创建broadcastReiver。
private void registerChargingReceiver() {
    if (intentFilter == null) {
        intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_POWER_CONNECTED);
        intentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED);
    }
    if (receiver == null) {
        receiver = new BroadcastReceiver() {

            @Override
            public void onReceive(Context context, Intent i) {

                // changer is connected
                if (i.getAction().equals(Intent.ACTION_POWER_CONNECTED)) {

                    // do proper actions
                }
                // changer is disconneted
                if (i.getAction().equals(Intent.ACTION_POWER_DISCONNECTED)) {

                    // do proper actions
                }
            }
        };
    }

    // registering receiver
    registerReceiver(receiver, intentFilter);
}
long chargingTime = endChargingTime - startChargingTime;
if (intent.getAction().equals(Intent.ACTION_POWER_CONNECTED)) {

    // remove time when charger was diconnected (last before)
    prefs.edit().remove("chargingEndTime");

    // save time when charged is connected
    prefs.edit().putLong("chargingStartTime", System.currentTimeMillis());

    prefs.edit().commit();
}

if (intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED)) {

    // save time when charger is disconnected
    prefs.putLong("chargingEndTime", System.currentTimeMillis()).commit();
}