я разрабатываю приложение для Android, где мой класс расширяет ContentObserver. Я регистрирую свой класс для наблюдения за изменениями в VOLUME_RING.
метод onchange моего класса вызывается только при изменении кнопки громкости.
Проблема в том, что глобальная переменная int, которая обновляется в конструкторе класса, не получает обновлений в методе onchange.
Код ниже - это то, что я пробовал,
public class VolumeChecker extends ContentObserver
{
Context context;
Handler handler;
int initialVolume;
public VolumeChecker(Context c, Handler handler)
{
super(handler);
context=c;
this.handler = handler;
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
initialVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
Log.e("inisde","volvhevker - intitvol " + initialVolume);
}
@Override
public boolean deliverSelfNotifications()
{
return super.deliverSelfNotifications();
}
@Override
public void onChange(boolean selfChange)
{
super.onChange(selfChange);
Log.e("onchange","initialVolume" + initialVolume);
refresh();
}
public void refresh()
{
new VolumeChecker(context,handler);
}
}
Значение переменной initialVolume, которое обновляется в конструкторе при обновлении, не отражается в методе onchange.
Пожалуйста, помогите. Спасибо!