Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 电池管理器未接收到电池\u已插入\u AC int_Android_Widget_Power Management - Fatal编程技术网

Android 电池管理器未接收到电池\u已插入\u AC int

Android 电池管理器未接收到电池\u已插入\u AC int,android,widget,power-management,Android,Widget,Power Management,我有一个电池小部件,由于某种原因,当手机插入交流电时,它不会接收到电池\u pliged_AC整数 我有另一个用于电池\u插入式\u USB的小部件,它工作正常 我看不出我的代码有任何错误: public void onReceive(Context context, Intent intent) { status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN); batterylevel

我有一个电池小部件,由于某种原因,当手机插入交流电时,它不会接收到
电池\u pliged_AC
整数

我有另一个用于
电池\u插入式\u 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);

希望有人能发现我做错了什么。谢谢

想了个办法。很抱歉,这篇文章我自己应该多看一会儿。作为将来的参考,如果人们似乎有同样的问题,在我看来,USB值与BatteryManager.BATTERY_STATUS_UNKNOWN捆绑在一起,而不是AC。因此,我所做的只是为BatteryManager.BATTERY_PLUGGED_AC变量的值分配一个新的私有int充电。如果这是真的(并且设备通过交流充电),那么值是1,所以我简单地用

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)时被传递感到困惑


谢谢

你好,我找到了一条绕过它的路。写了一篇帖子来回答我自己的问题,但是作为一个堆栈溢出的初学者,我不得不等8个小时,直到我能回答我自己的问题。我已经保存了我的答案,并将在8小时后发布,以防将来人们遇到同样的问题。我得承认这很奇怪!