【发布时间】:2014-03-17 10:37:21
【问题描述】:
如何在android中将手机的电池电量显示为文本视图?
【问题讨论】:
如何在android中将手机的电池电量显示为文本视图?
【问题讨论】:
在问任何问题之前,请使用谷歌。顺便点击Here 希望对你有帮助。
【讨论】:
如果您只是想以百分比显示当前电池电量,则无需注册接收器等。这样就可以了:
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = getActivity().registerReceiver(null, ifilter);
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale;
我设备的电池电量目前为 94% - batteryPct 的值为 0.94。
然后可以像这样在 TextView 中显示:
textView.setText(Float.toString(batteryPct * 100) + "%"); // Displays '94.0%' using my example value
见:http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
【讨论】:
你可以有教程检查here
【讨论】:
教程是Here。特别是:
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale;
【讨论】:
最好的方法是使用广播接收器,因为每次电池状态发生变化时都会触发 onRecieve,因此当电量下降时,您的值将始终准确。
在您的活动的 onCreate 中,您需要为电池状态注册一个广播接收器:
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_POWER_CONNECTED);
filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
batteryMonitor = new batteryChargeMonitor();
getActivity().registerReceiver(batteryMonitor, filter);
batteryMonitor 类如下所示:
private class batteryChargeMonitor extends BroadcastReceiver{
public void onReceive(Context context, Intent intent)
{
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
if(status > -1 && scale > -1 && level > -1)
{
float charge = (level/(float)scale) * 1oo;
Toast.makeText(context, "Battery Charge: " + charge + "%" Toast.LENGTH_LONG).show();
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING
|| status == BatteryManager.BATTERY_STATUS_FULL;
}
}
}
【讨论】:
来自这里的链接link
接收者
public class PowerConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
}
}
AndroidManifest.xml 添加如下
代码更改
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);
// Are we charging / charged?
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
// 我们如何收费?
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
【讨论】: