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