Более того, вы можете зарегистрировать ContentObserver
следующим образом:
getApplicationContext().getContentResolver().registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, new ContentObserver(){...});
Ваш ContentObserver может выглядеть следующим образом:
public class SettingsContentObserver extends ContentObserver {
private AudioManager audioManager;
public SettingsContentObserver(Context context, Handler handler) {
super(handler);
audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
}
@Override
public boolean deliverSelfNotifications() {
return false;
}
@Override
public void onChange(boolean selfChange) {
int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
Log.d(TAG, "Volume now " + currentVolume);
}
}
Когда сделано:
getApplicationContext().getContentResolver().unregisterContentObserver(mContentObserver);
Один предостережение , тыс. h - иногда уведомления, кажется, задерживаются, если есть много нажатий на кнопки быстро.
Используйте ContentObserver и получите тома от аудиомастера. Я недавно использовал его, и он отлично работает. [Проверить это решение в stackoverflow] (http://stackoverflow.com/questions/6896746/android-is-there-a-broadcast-action-for-volume-changes) – user2503849
it' s более старая почта, но ничтожно, что в настоящее время в Android не реализована широкоформатная передача ... 5 лет спустя, до сих пор нет трансляции ... – Opiatefuchs
@Opiatefuchs Возможно, создайте запрос для этого, здесь: https://issuetracker.google.com/issues. Я буду звать это :) –