2011-11-09 22 views
7

Mi aplicación transmite música y quiero poder pausar/reproducir/saltar desde cualquier dispositivo Bluetooth que pueda admitir estos botones (automóvil, auriculares, etc.). Cuando se conecta a través del bluetooth de un automóvil, el audio se transmite automáticamente, pero los botones de control no afectan la transmisión de audio de mi aplicación. En su lugar, abre el reproductor multimedia predeterminado. ¿Cómo enruto estos botones para afectar mi aplicación?Controles de audio Bluetooth en Android

+0

Hola, ¿Puede compartir código de ejemplo para este mismo? –

Respuesta

15

¿Ha registrado BroadcastReceiver en su aplicación para escuchar eventos MEDIA_BUTTON usando AudioManager.registerMediaButtonEventReceiver()?

Después de registrarse, los eventos del botón se pueden manejar procesando el objeto KeyEvent adjunto en los extras como EXTRA_KEY_EVENT. Por ejemplo:

@Override 
public void onReceive(Context context, Intent intent) { 
    final KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); 
    if (event.getAction() != KeyEvent.ACTION_DOWN) return; 

    switch (event.getKeyCode()) { 
     case KeyEvent.KEYCODE_MEDIA_STOP: 
      // stop music 
      break; 
     case KeyEvent.KEYCODE_HEADSETHOOK: 
     case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: 
      // pause music 
      break; 
     case KeyEvent.KEYCODE_MEDIA_NEXT: 
      // next track 
      break; 
     case KeyEvent.KEYCODE_MEDIA_PREVIOUS: 
      // previous track 
      break; 
    } 
} 

Este Android Developer blog post también tienen algo de información sobre el tema agradable.

+0

Vi los eventos 'MEDIA_BUTTON' entrar en el registro, por lo que parece prometedor. Lo intentaré mañana. –

5

En relación con la accepted answer, tenga en cuenta que uno de los códigos de tecla ha cambiado en Ice Cream Sandwich:

El código clave que se pasa para reproducir/pausar la intención ha cambiado en ICS. Ver este http://code.google.com/p/media-button-router/issues/detail?id=10#c5

El código clave que había sido enviado antes de la ICS fue KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE. Ahora hay dos códigos de tecla separados para reproducción y pausa (126 y 127).

Está enviando KEYCODE_MEDIA_PLAY (126) y KEYCODE_MEDIA_PAUSE (127).

https://code.google.com/p/android/issues/detail?id=23172