2012-02-27 7 views
2

バッテリーウィジェットがあり、何らかの理由で電話機がACに接続されているときに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

答えて

1

このポストに申し訳ありません、もう少し自分自身でそれを見ていたはずです。将来の参考に人々が同じ問題を抱えているようであれば、USB値はBatteryManager.BATTERY_STATUS_UNKNOWNにバンドルされていますが、ACはバンドルされていないようです。そこで、私は、新しいプライベートint課金をBatteryManager.BATTERY_PLUGGED_AC変数の値に割り当てていました。これが真である(そしてデバイスがAC throygh充電された)場合、その値は1であるので、私は単に

if (charging == 1) 
     updateViews.setImageViewResource(R.id.imageView2, R.drawable.bolt); 

今コード読み取り

と私の以前のif文を置き換えます。

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)。

ありがとうございます!