我正在尝试使用Observer内容更改系统环卷。使用这个卷整数我想触发另一个java文件。
我成功使用下面的代码,但问题是我总是得到两个日志。我试图区分previousVolume和ChangedVolume。我不是为什么我要在更改方法中记录日志?关于这一点的好处是价值没有改变?
以下是我尝试的代码:
public class VolumeChecker extends ContentObserver
{
int previousVolume;
Context context;
public VolumeChecker(Context c, Handler handler)
{
super(handler);
context=c;
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
previousVolume = audio.getStreamVolume(AudioManager.STREAM_MUSIC);
}
@Override
public boolean deliverSelfNotifications()
{
return super.deliverSelfNotifications();
}
@Override
public void onChange(boolean selfChange)
{
super.onChange(selfChange);
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
Log.e("changed", "Volume"+currentVolume);
}
}
将obersever-from服务注册为:
Volume = new VolumeChecker(this,new handler());
getApplicationContext().getContentResolver().registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, Volume );
有人知道为什么它会在onChange部分内记录两次吗?