Mejor, se puede registrar un ContentObserver
de la siguiente manera:
getApplicationContext().getContentResolver().registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, new ContentObserver(){...});
Su ContentObserver podría tener este aspecto:
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);
}
}
Cuando se hace:
getApplicationContext().getContentResolver().unregisterContentObserver(mContentObserver);
Una precaución , creo h: a veces las notificaciones parecen retrasarse si hay muchas pulsaciones de botones rápidamente.
Use ContentObserver y obtenga los volúmenes de audiomanager. Recientemente lo utilicé y funciona muy bien. [Verifique esta solución en stackoverflow] (http://stackoverflow.com/questions/6896746/android-is-there-a-broadcast-action-for-volume-changes) – user2503849
it' es una publicación más antigua, pero es insignificante que no haya implementado un broadcat hasta ahora en Android ... 5 años después, todavía no se emitió ... – Opiatefuchs
@Opiatefuchs Quizás cree una solicitud para ello, aquí: https://issuetracker.google.com/issues. Voy a protagonizarlo :) –