【发布时间】:2013-01-20 10:58:19
【问题描述】:
我正在使用此代码在我的应用中显示电池电量。它工作正常,但不会自动更新电池电量。
如何自动更新电池电量。
public class MainActivity extends Activity {
private TextView txtBattery;
private BroadcastReceiver mBatteryLevelReciver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this);
//int rawLevel = intent.getIntExtra("level", -1);
int rawLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
//int scale = intent.getIntExtra("scale", -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
int level = -1;
if (rawLevel >= 0 && scale > 0) {
level = (rawLevel * 100) / scale;
}
txtBattery.setText("Battery3 Level Remaining :" + level + "%");
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtBattery = (TextView) findViewById(R.id.batterymeter_txt);
batteryLevel();
}
private void batteryLevel() {
IntentFilter batteryLevelFliter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(mBatteryLevelReciver, batteryLevelFliter);
}
}
【问题讨论】:
-
也许是一个每 x 秒执行一次的计时器(timertask)?还是我误解了这个问题?
-
@Keyser 我刚刚发现了同样的问题here。改变 context.unregisterReceiver(this);但我不知道该怎么做!
-
afaik 一些 android 设备仅在电池以 10 的倍数变化时发送该广播。(即 100%->90%->80% 等)。无论如何,你在哪里创建这个 batteryLevel() ?一个活动 ?服务?
标签: android