电池管理器未收到 BATTERY PLUGGED AC in
Posted
技术标签:
【中文标题】电池管理器未收到 BATTERY PLUGGED AC in【英文标题】:Battery Manager not receiving BATTERY_PLUGGED_AC int 【发布时间】:2012-02-27 17:53:03 【问题描述】:我有一个电池小部件,但由于某种原因,当手机插入交流电时,它没有收到 BATTERY_PLIGGED_AC
整数。
我有另一个用于BATTERY_PLUGGED_USB
的小部件,它工作得很好。
我看不出我的代码有什么问题:
public void onReceive(Context context, Intent intent)
status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN);
batterylevel = intent.getIntExtra("level", 0);
updateAppWidget(context);
public void updateAppWidget(Context context)
RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.androidbatterywidget_layout);
updateViews.setTextViewText(R.id.textView1, " " + batterylevel + "%");
if (status == BatteryManager.BATTERY_PLUGGED_USB)
updateViews.setImageViewResource(R.id.imageView2, R.drawable.usb);
else if (status == BatteryManager.BATTERY_PLUGGED_AC)
updateViews.setImageViewResource(R.id.imageView2, R.drawable.bolt);
else
updateViews.setImageViewResource(R.id.imageView2, R.drawable.empty);
希望有人能够发现我做错了什么。谢谢!
【问题讨论】:
您好,找到了解决方法。写了一篇文章来回答我自己的问题,但作为堆栈溢出的初学者,我必须等待 8 小时才能回答我自己的问题。我已经保存了我的答案并将在 8 小时内发布它,以防将来人们遇到同样的问题。我不得不承认它很奇怪! 【参考方案1】:想了个办法。很抱歉这篇文章我自己应该多看一会儿。如果人们似乎有同样的问题,以供将来参考,在我看来,USB 值与 BatteryManager.BATTERY_STATUS_UNKNOWN 捆绑在一起,而不是 AC。因此,我所做的只是为 BatteryManager.BATTERY_PLUGGED_AC 变量的值分配一个新的私有 int 充电。如果这是真的(并且设备正在通过 AC 充电),那么该值为 1,所以我只需将之前的 if 语句替换为
if (charging == 1)
updateViews.setImageViewResource(R.id.imageView2, R.drawable.bolt);
现在代码读取;
private int batterylevel = 0;
private int status;
private int charging;
private BroadcastReceiver myReceiver = new BroadcastReceiver()
public void onReceive(Context context, Intent intent)
status = intent.getIntExtra("status", BatteryManager.BATTERY_HEALTH_UNKNOWN);
charging = intent.getIntExtra("plugged", BatteryManager.BATTERY_PLUGGED_AC);
batterylevel = intent.getIntExtra("level", 0);
updateAppWidget(context);
public void updateAppWidget(Context context)
RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.androidbatterywidget_layout);
updateViews.setTextViewText(R.id.textView1, " " + batterylevel + "%");
if (charging == 1)
updateViews.setImageViewResource(R.id.imageView2, R.drawable.bolt);
else if (status == BatteryManager.BATTERY_PLUGGED_USB)
updateViews.setImageViewResource(R.id.imageView2, R.drawable.usb);
else
updateViews.setImageViewResource(R.id.imageView2, R.drawable.empty);
我确信有一种更“雄伟”的方式来做到这一点,但我只是对为什么 USB int 插入 USB (2) 而不是 AC (1) 时通过了感到困惑。
谢谢!
【讨论】:
以上是关于电池管理器未收到 BATTERY PLUGGED AC in的主要内容,如果未能解决你的问题,请参考以下文章