2017-06-12 2 views
0

Ich entwickle und App, die Daten aus dem Internet streamen, habe ich Android MediaPlayer und AudioManager und alles funktioniert gut. Ich bin in ACTION_MEDIA_BUTTON steckengeblieben, um den Player über die Kopfhörer-Taste abzuspielen/anzuhalten.Broadcast Receiver für ACTION_MEDIA_BUTTON nicht gefeuert

FYI, habe ich den ganzen Weg in stackover, setPriority zu 999 oder 1000 oder 10000 auch Zuhörer registrieren in android menifeast Datei usw. aber nicht dazu führen, vorgeschlagen verwendet.

BroadcarstReceiver Datei

public class HeadSetReceiver erweitert BroadcastReceiver {

onHeadsetEventListener mCallback; 


    public interface onHeadsetEventListener { 
     void onHeadsetRemoved(); 

     void onHeadsetNextClicked(); 

     void onHeadsetPreviousClicked(); 

     void onHeadsetPlayPauseClicked(); 
    } 


    @Override 
    public void onReceive(Context context, Intent intent) { 

     mCallback = (onHeadsetEventListener) context; 


     // Intent.ACTION_HEADSET_PLUG << Trigger as soon i plug and unplug the headphone.. 

     if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) { 
      int state = intent.getIntExtra("state", -1); 
      switch (state) { 
       case 0: 
        mCallback.onHeadsetRemoved(); 
        break; 
       case 1: 
        break; 
      } 
     } 

     // Intent.ACTION_MEDIA_BUTTON ---- Not triggered even after register listener 
     if (intent.getAction().equals(Intent.ACTION_MEDIA_BUTTON)) { 
      KeyEvent event = (KeyEvent) intent 
        .getParcelableExtra(Intent.EXTRA_KEY_EVENT); 
      int keycode = event.getKeyCode(); 
      int action = event.getAction(); 
      Log.i("keycode", String.valueOf(keycode)); 
      Log.i("action", String.valueOf(action)); 
      //onKeyDown(keyCode, event) 
      if (keycode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE || keycode == KeyEvent.KEYCODE_HEADSETHOOK) 
       if (action == KeyEvent.ACTION_DOWN) 
        mCallback.onHeadsetPlayPauseClicked(); 
      if (keycode == KeyEvent.KEYCODE_MEDIA_NEXT) 
       if (action == KeyEvent.ACTION_DOWN) 
        mCallback.onHeadsetNextClicked(); 
      if (keycode == KeyEvent.KEYCODE_MEDIA_PREVIOUS) 
       if (action == KeyEvent.ACTION_DOWN) 
        mCallback.onHeadsetPreviousClicked(); 

     } 
    } 
} 

* I Zuhörer in MediaPlayerService.java registriert haben - OnCreate() als folgen *

headSetReceiver = new HeadSetReceiver(); 

IntentFilter filter2 = new IntentFilter(Intent.ACTION_MEDIA_BUTTON); 
filter2.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); 
registerReceiver(playerRadioService.headSetReceiver,filter2); 

Und auch nicht registriert onDestroy als

unregisterReceiver(headSetReceiver); 

folgen, aber ich bin mir nicht sicher, zu implementieren und damit auf das kein Ergebnis gibt, was ich fehle.

Logcat

--------- beginning of system 
06-13 00:03:36.316 1192-1202/? D/BroadcastQueue: Add broadcastBroadcastRecord{30a21c3 u0 android.intent.action.MEDIA_BUTTON} into (background/order), now header = BroadcastRecord{30a21c3 u0 android.intent.action.MEDIA_BUTTON}, size = 1 
06-13 00:03:36.318 1192-1202/? D/BroadcastQueue: Add broadcastBroadcastRecord{16bfa40 u0 android.intent.action.MEDIA_BUTTON} into (background/order), now header = BroadcastRecord{30a21c3 u0 android.intent.action.MEDIA_BUTTON}, size = 2 
06-13 00:03:36.321 1192-1961/? V/BroadcastQueue: Finished with ordered broadcast BroadcastRecord{30a21c3 u0 android.intent.action.MEDIA_BUTTON}, [background], remain = 1 
06-13 00:03:36.324 1192-2185/? V/BroadcastQueue: Finished with ordered broadcast BroadcastRecord{16bfa40 u0 android.intent.action.MEDIA_BUTTON}, [background], remain = 0 
06-13 00:03:36.755 271-335/? D/phoneserver: rsrp[0]=97,rscp[0]=255,rxlev[0]=99 ind_str= 
              +CESQ: 99,99,255,255,22,97 

Antwort

0

Haben Sie den Empfänger in Ihrer Manifest-Datei zu erklären?

+0

Nach meinem Wissen, wenn Sie den Empfänger dynamisch registrieren, wie ich in onCreate() getan, keine Notwendigkeit, in Manifest-Datei zu deklarieren. –

+0

Könnten Sie PLZ bestätigen, registrieren und erklären sind gleich oder anders? –

Verwandte Themen