2016-03-25 16 views
2

Die Google-Music-App (auf OnePlus One, Cyanogen OS-Version 12.1) den nächsten Song spielt, wenn die Volume-Up Hardware-Key lang gedrückt und spielt die vorheriger Song auf einer Leiser-Taste lange drücken. Ist es möglich, diese Aktionen in einem BroadcastReceiver zu empfangen? Oder behandelt das Betriebssystem diese langen Klicks nur als MEDIA_BUTTON-Aktion? (Falls keine meiner beiden Annahmen richtig ist, wie funktioniert Google Play tun?)lange Volumen-Taste drücken

Edit 1:

Scheint, wie es eine MEDIA_BUTTON Aktion ist mit "MEDIA_NEXT". Aber warum empfängt mein Empfänger die Aktion nicht?

String action = intent.getAction(); 
    if(action.equalsIgnoreCase(Intent.ACTION_MEDIA_BUTTON)) { 
      KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); 
      if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) { 
       //my play code 
      }else if (KeyEvent.KEYCODE_MEDIA_NEXT == event.getKeyCode()) { 
       //my play next code 
      }else if (KeyEvent.KEYCODE_MEDIA_PREVIOUS == event.getKeyCode()) { 
      //my play prev code 
     }else if (KeyEvent.KEYCODE_MEDIA_PAUSE == event.getKeyCode()) { 
      //my pause code 
     } 
    } 

es im Manifest mit registriert ist:

<receiver android:name=".receiver.AudioPlayerBroadcastReceiver"> 
     <intent-filter> 
      //other actions (they all work fine) 
      <action android:name="android.intent.action.MEDIA_BUTTON" /> 
     </intent-filter> 
    </receiver> 

Antwort

1

Cyanogen sendet ein MEDIA_NEXT Ereignis auf langes Drücken der Lautstärke. (Zumindest hat Cyanegemod 11 dies auf meinem Handy)

Sie sollten in der Lage sein, dies leicht zu testen. Hören Sie einfach MEDIA_NEXT und prüfen Sie, ob Sie es bei langem Drücken erhalten.

bearbeiten 1: Siehe BroadcastReceiver for ACTION_MEDIA_BUTTON not working

(auch: bitte eine neue Frage öffnen, anstatt eine alte zu bearbeiten, wenn Sie ein neues Problem haben)

+0

Danke, aktualisiert nur meine Frage darauf! Kannst du mein Problem erkennen? –