У меня есть ContentObserver, зарегистрированный на android.provider.Settings.System, который должен наблюдать изменения любой громкости звука.Он уведомляется, как и ожидалось, при нажатии аппаратных кнопок громкости, но не уведомляется, когда я меняю громкость звука через 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);
Я прочитал этот и этот пост и AudioManager и Settings.System документация и не может найти причину, по которой Обозреватель получает уведомление при изменении громкости с помощью кнопок громкости, но не при изменении его с помощью AudioManager.
Спасибо за помощь!