2012-02-27 91 views
2

我有一個電池小部件,並且由於某種原因,在手機插入交流電時它不會收到BATTERY_PLIGGED_AC整數。電池管理器未收到BATTERY_PLUGGED_AC int

我有另一個小工具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); 

希望有人能夠發現什麼,我做錯了。謝謝!

+1

你好,找到一個方法。寫了一篇文章來回答我自己的問題,但作爲堆棧溢出的初學者,我必須等待8個小時,直到我能回答我自己的問題。我已經保存了我的答案,並會在8小時內發佈它,以免未來的人遇到同樣的問題。我不得不承認它是一個奇怪的! – philleonard 2012-02-27 18:33:15

回答

1

想象一下。對不起,對於這篇文章,我本應該再看一遍。爲了將來的參考,如果人們似乎有同樣的問題,在我看來,USB值與BatteryManager.BATTERY_STATUS_UNKNOWN捆綁在一起,但不是AC。因此,我所做的只是分配一個新的私人詮釋充電到BatteryManager.BATTERY_PLUGGED_AC變量的值。如果這是真的(並且該設備充電throygh 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爲什麼通過USB INT困惑(2),而不是AC( 1)。

謝謝!