有没有方法从Android SDK获取电池信息?如电池剩余寿命等?我无法通过文档找到它。SDK中的Android电池
回答
您可以注册意图接收器以接收ACTION_BATTERY_CHANGED的广播:http://developer.android.com/reference/android/content/Intent.html#ACTION_BATTERY_CHANGED。文档说广播是粘性的,所以即使在电池状态发生变化之后,您仍然可以抓住它。
下面是一个快速示例,可以帮助您了解所用电池的数量,电池电压和温度。
以下代码粘贴到的活性:
@Override
public void onCreate() {
BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
int scale = -1;
int level = -1;
int voltage = -1;
int temp = -1;
@Override
public void onReceive(Context context, Intent intent) {
level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
Log.e("BatteryManager", "level is "+level+"/"+scale+", temp is "+temp+", voltage is "+voltage);
}
};
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryReceiver, filter);
}
在我的电话,这具有每10秒以下输出:
ERROR/BatteryManager(795): level is 40/100 temp is 320, voltage is 3848
因此,这意味着电池为40%完整,温度为32.0摄氏度,电压为3.848伏特。
这是一个很好的例子,但是为什么你将它记录在“错误”级别? – GetUsername 2011-06-29 07:11:04
@GetUsername除个人偏好之外,没有特别的错误级别日志记录原因。对于在发布我的应用程序之前删除的日志记录,我喜欢登录错误级别,因此很容易在logcat输出中看到日志记录。 – plowman 2011-06-29 17:15:22
我需要在电池上安装显示器并检查电平和状态。我正在开发MonoForAndroid,所以这就是我想出的。我把它放在这里以防有人有类似的要求。 (我已经测试过这个并且很好地工作)。
try
{
var ifilter = new IntentFilter(Intent.ActionBatteryChanged);
Intent batteryStatusIntent = Application.Context.RegisterReceiver(null, ifilter);
var batteryChangedArgs = new AndroidBatteryStateEventArgs(batteryStatusIntent);
_Battery.Level = batteryChangedArgs.Level;
_Battery.Status = batteryChangedArgs.BatteryStatus;
}
catch (Exception exception)
{
ExceptionHandler.HandleException(exception, "BatteryState.Update");
throw new BatteryUpdateException();
}
namespace Leopard.Mobile.Hal.Battery
{
public class AndroidBatteryStateEventArgs : EventArgs
{
public AndroidBatteryStateEventArgs(Intent intent)
{
Level = intent.GetIntExtra(BatteryManager.ExtraLevel, 0);
Scale = intent.GetIntExtra(BatteryManager.ExtraScale, -1);
var status = intent.GetIntExtra(BatteryManager.ExtraStatus, -1);
BatteryStatus = GetBatteryStatus(status);
}
public int Level { get; set; }
public int Scale { get; set; }
public BatteryStatus BatteryStatus { get; set; }
private BatteryStatus GetBatteryStatus(int status)
{
var result = BatteryStatus.Unknown;
if (Enum.IsDefined(typeof(BatteryStatus), status))
{
result = (BatteryStatus)status;
}
return result;
}
}
}
#region Internals
public class AndroidBattery
{
public AndroidBattery(int level, BatteryStatus status)
{
Level = level;
Status = status;
}
public int Level { get; set; }
public BatteryStatus Status { get; set; }
}
public class BatteryUpdateException : Exception
{
}
#endregion
public static String batteryLevel(Context context)
{
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
int percent = (level*100)/scale;
return String.valueOf(percent) + "%";
}
- 1. Android电池电量
- 2. Android的电池电量低
- 3. 检测电池充电Android
- 4. Android电池消耗
- 5. Android电池保存
- 6. Android电池优化
- 7. Android电池广播
- 8. android的电池指示器
- 9. Spotify安卓SDK with Doze电池优化
- 10. SQLite电池消耗 - android
- 11. Android电池应用程序
- 12. iOS/Android GPS电池吸取?
- 13. Android电池消耗问题
- 14. Android java touch电池图标
- 15. Android registerListener和电池寿命
- 16. Android AppWidget电池状态
- 17. 在Android中播放视频的电池电量
- 18. 如何减少android的电池使用
- 19. 的Android FusedLocationProvider和电池寿命
- 20. 跟踪android app的电池消耗量?
- 21. Android的NFC电池关机模式
- 22. Android Wear:BleLEScan耗尽我的电池
- 23. Android的webkit和电池消耗
- 24. 获取电池的温度android
- 25. 创建“电池使用”的意图android
- 26. 管理的Android GPS高效电池
- 27. 使用http时的Android电池
- 28. Android的电池温度正确性
- 29. 降低电池消耗的Android
- 30. OSX中的电池状态?
你可以张贴一些示例代码这一点。我不知道如何接收广播意图。 – 2009-12-21 05:59:52