Código Android para subir el volumen multimedia mediante programación (AudioManager)

Usa AudioManager.adjustStreamVolume() con ADJUST_RAISE. Requiere el permiso MODIFY_AUDIO_SETTINGS (concedido a sistema/apps con consentimiento del usuario a través del panel de volumen).

Kotlin (Moderno)

val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
audioManager.adjustStreamVolume(
    AudioManager.STREAM_MUSIC,
    AudioManager.ADJUST_RAISE,
    AudioManager.FLAG_SHOW_UI // o FLAG_PLAY_SOUND
)

Java (Legado)

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.adjustStreamVolume(
    AudioManager.STREAM_MUSIC,
    AudioManager.ADJUST_RAISE,
    AudioManager.FLAG_SHOW_UI
);

Tipos de flujo

  • STREAM_MUSIC — multimedia, juegos, video.
  • STREAM_RING — tonos de llamada, notificaciones.
  • STREAM_ALARM — alarmas.
  • STREAM_VOICE_CALL — volumen durante la llamada.
  • STREAM_SYSTEM — sonidos del sistema.
  • STREAM_DTMF — tonos de marcado.
  • STREAM_ACCESSIBILITY — TalkBack.
  • STREAM_BLUETOOTH_SCO — voz de auricular BT.

Indicadores

  • FLAG_SHOW_UI — muestra el control deslizante de volumen del sistema en un aviso.
  • FLAG_PLAY_SOUND — reproduce el tono de cambio de volumen.
  • FLAG_REMOVE_SOUND_AND_VIBRATE — ajuste silencioso.
  • FLAG_VIBRATE — retroalimentación háptica.

Práctica recomendada (API 28+)

Usa AudioManager.setStreamVolume() con un índice absoluto (0–máximo) para control preciso. Consulta el máximo mediante getStreamMaxVolume().

val maxVol = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVol, AudioManager.FLAG_SHOW_UI)

Permisos

  • No se necesita permiso especial para adjustStreamVolume (iniciado por el usuario).
  • setStreamVolume requiere MODIFY_AUDIO_SETTINGS_NOTIFICATION_POLICY o acción del usuario.
  • No secuestres las teclas de volumen — anula onKeyDown(KeyEvent.KEYCODE_VOLUME_UP) en Activity.

Prueba en un dispositivo real: el enrutamiento de audio del emulador es diferente.