当我想要实现音量变化检测时,遇到了一个问题。由于变化检测必须通过服务在后台进行检测,我无法拦截音量键的按下。
我尝试使用ContentObserver来监听音量设置的更改,但它没有工作。但是我进一步发掘了一下,发现我的ContentObserver在像这样注册时可以检测到音量变化:
this.getApplicationContext().getContentResolver().registerContentObserver(
android.provider.Settings.System.CONTENT_URI, true,
mSettingsContentObserver );
我尝试更改第一个参数(要侦听的设置URI),但未成功。那么,如何实现这一点?我不想在每次更改设置时更新用户界面(我正在将 Seekbar 设置为特定位置)。
那么,如何注册内容观察器以侦听媒体音量的更改?
以下是 ContentObserver 的代码:
public class SettingsContentObserver extends ContentObserver {
public SettingsContentObserver(Handler handler) {
super(handler);
}
@Override
public boolean deliverSelfNotifications() {
return super.deliverSelfNotifications();
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
myMethod();
}
}