android - 电池充电

标签 android battery

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

最佳答案

I have class which extends BroadcastReceiver and override onReceive. I need to check start and end charging and duration time, but I don't know where to start.

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

<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>

然后您的 Java 类必须与其名称相匹配:

public class BatteryReceiver extends BroadcastReceiver {

   @Override
   public void onReceive(Context context, Intent intent) {
      // do your stuff
   }
}

或者您可以动态创建BoadcastReceiver,然后将其绑定(bind)到Service 或Activity 中(这取决于您的需要):

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);
}

How can I detect when and how long the charger is plugged?

它可以通过更多可能的方式实现。当然,当充电器连接和断开时,你需要在某个地方保存时间,然后减去时间:

long chargingTime = endChargingTime - startChargingTime;

你可以使用 SharedPreferences节省时间的地方(伪代码):

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();
}

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

关于android - 电池充电,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23581942/

相关文章:

objective-c - 电池百分比 - 在任何 iPhone 上进行准确测试

android - 如何为 Android 实现 Google App 索引

Android - 包含 ExpandableListView 的 NestedScrollView 在展开时不会滚动

java - Android Lint 提示 ActionBar 可能出现 NullPointerException

android - ListView onItemLongClickListener 不会阻止链接点击

android - 即使设备在信标附近保持静止,应用程序也会在 didEnterRegion() 和 didExitRegion() 之间循环

android - 颜色.xml : Error: Unsupported type 'component' (Android studio)

arduino - 如何在 Arduino IDE 中将 4.15V 锂 ionic 电池的电池电压转换为电池百分比? (我正在制作某种 LED 电池指示灯)

c++ - 在笔记本电脑上读取当前电池充电/放电率

ios - 如何从连接的 iOS 设备获取电池充电周期?