Battery Manager не получает BATTERY_PLUGGED_AC int - PullRequest
2 голосов
/ 27 февраля 2012

У меня есть виджет батареи, и по какой-то причине он не получает целое число 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);

Надеюсь, кто-то сможет определить, что я сделал неправильно.Спасибо!

1 Ответ

1 голос
/ 29 февраля 2012

Обдумал способ обойти.Извините за этот пост, я должен был посмотреть на него немного дольше.Для дальнейшего использования, если кажется, что люди сталкиваются с той же проблемой, мне кажется, что значение USB связано с BatteryManager.BATTERY_STATUS_UNKNOWN, но не с сетевым адаптером.Таким образом, вместо этого все, что я сделал, это назначил новую частную внутреннюю зарядку значению переменной BatteryManager.BATTERY_PLUGGED_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).

Спасибо!

...