Привет всем, я придерживался этой проблемы, и я не вижу своей ошибки. Раньше я использовал в основном для различного рисования привязки к определенному уровню, тем не менее, я пытаюсь использовать его в BroadcastReceiver, который отслеживает изменения батареи, проблема в том, что я не получаю никакого обновления пользовательского интерфейса при вызове изменения setImageLevel? 1001 *
Приемник вещания работает следующим образом
public class BatteryReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(LOG, "Fired Changed");
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
int percent = (level * 100) / scale;
imageBattery = (ImageView) findViewById(R.id.imageBatery);
imageBattery.setImageLevel(percent);
Log.d(LOG, "On UI running I am");
// imageBattery.getDrawable().mutate();
// imageBattery.invalidate();
// Log.d(LOG,"DRawable: "+((LevelListDrawable)imageBattery.getDrawable()).getCurrent());
}
}
Отображается журнал, но он не меняет мой ImageView, если вы можете указать мне правильное направление, или у вас есть какое-либо понимание этой проблемы?
Немного больше информации
Здесь моя регистрация и отмена регистрации в той же активности, что и BroadcastReceiver
@Override
public void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.BATTERY_CHANGED");
registerReceiver(receiver, filter);
}
@Override
public void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
Как создать ImageView Drawable:
<ImageView
android:id="@+id/imageBatery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/battery_status" />
А также battery_status.xml - это отрисовка ( Я удалил некоторые из отрисовываемых элементов, потому что вы получаете идею от 0 до 100 )
<item
android:drawable="@drawable/stat_sys_battery_100"
android:maxLevel="100"/>
<item
android:drawable="@drawable/stat_sys_battery_90"
android:maxLevel="90"/>
<item
android:drawable="@drawable/stat_sys_battery_80"
android:maxLevel="80"/>