クラスが ContentObserver を拡張する Android アプリを開発しています。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 メソッドに反映されません。
助けてください。ありがとう!