Наблюдение изменений громкости, сделанных приложениями - PullRequest
3 голосов
/ 10 февраля 2012

У меня есть 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.

Спасибо за помощь!

1 Ответ

4 голосов
/ 10 февраля 2012

AudioManager действительно передает намерение

android.media.VOLUME_CHANGED_ACTION`

Но это не часть официальной документацииТак что это может измениться в будущих выпусках.Но вы могли бы использовать это по крайней мере для пряничных устройств.

Вы можете найти больше информации о дополнениях в намерениях от здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...