【问题标题】:Getting battery status from a service in Android从 Android 中的服务获取电池状态
【发布时间】:2012-09-05 14:12:09
【问题描述】:

我正在开发一个应用程序,我需要为此监控服务的剩余电池百分比。谁能告诉我该怎么做?我发现了一些示例代码,它们从活动而不是服务中获取电池状态。

谢谢。

【问题讨论】:

标签: android service status battery


【解决方案1】:

使用 ACTION_BATTERY_CHANGED。每次电池值变化时都会调用它。 请看下面的代码,看看它是如何完成的:

public void onCreate()
{

this.registerReceiver(this.mBatInfoReceiver, 
        new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context arg0, Intent intent) {

    int level = intent.getIntExtra("level", 0);
    Log.e("test", String.valueOf(level) + "%");

     }
};


public void onDestroy(){

    // unregister receiver
    this.unregisterReceiver(this.mBatInfoReceiver);
}

【讨论】:

  • 有效!谢谢 !清单接收器不工作!通过代码实现。
【解决方案2】:

有什么区别? 您应该能够在服务中注册电池事件的接收器,就像您注册活动一样。 例如:

private final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context arg0, Intent intent) {
        int rawLevel = intent.getIntExtra("level", -1);
        int scale = intent.getIntExtra("scale", -1);
        int status = intent.getIntExtra("status", -1);
        // Do something
    }
};

public void onCreate() {
    registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}

public void onDestroy() {
     unregisterReceiver(this.mBatInfoReceiver);
}

【讨论】:

    【解决方案3】:

    我认为您必须使用 ACTION_BATTERY_CHANGED。请注意,这是一个 sticky 意图,因此您不需要直接在广播接收器中监视它。您可以直接从 Activity 获取引用。

    来自安卓文档:

    因为它是一个粘性意图,所以您不需要注册广播接收器——只需调用 registerReceiver 传入 null 作为接收器,如下一个 sn-p 所示,返回当前电池状态意图。

    http://developer.android.com/training/monitoring-device-state/battery-monitoring.html

    【讨论】:

      【解决方案4】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多