使用ContentObserver获取系统环的音量时双重日志

时间:2013-06-30 12:53:17

标签: android contentobserver

我正在尝试使用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部分内记录两次吗?

0 个答案:

没有答案