我有一个注册到android.provider.Settings.System的ContentObserver,它应该观察任何音量的变化。单击硬件音量按钮时会按预期通知,但在通过AudioManager.setStreamVolume或AudioManager.adjustStreamVolume更改音量时不会通知。
以下是我的ContentObserver的样子:
// this is a Service
this.getApplicationContext().getContentResolver().registerContentObserver(
android.provider.Settings.System.CONTENT_URI,
true, new ContentObserver(new Handler()) {
public void onChange(boolean selfChange) {
Log.d("ContentObserver", "got notified");
}
});
这里我对AudioManager.adjustStreamVolume的调用:
// this.context is the activities context
this.context.getSystemService(Context.AUDIO_SERVICE).adjustStreamVolume(
AudioManager.STREAM_RING, AudioManager.ADJUST_LOWER,
AudioManager.FLAG_SHOW_UI);
我已阅读this和that帖子以及AudioManager和Settings.System文档,但无法找到在更改音量时通知观察者的原因按钮,但不是用AudioManager更改它时。
感谢您的帮助!
答案 0 :(得分:4)
AudioManager确实广播了一个意图
android.media.VOLUME_CHANGED_ACTION`
但这不是官方文件的一部分。所以这可能会在未来版本中发生变化但你可以使用这至少姜饼设备。
您可以从here
找到有关意图中的额外内容的更多信息