0
我正在開發和應用哪些流數據來自在線,我已經使用Android MediaPlayer和AudioManager和一切工作正常。我卡在ACTION_MEDIA_BUTTON中通過耳機按鈕播放/暫停播放器。廣播接收器爲ACTION_MEDIA_BUTTON未解僱
僅供參考,我已經使用在stackover建議的一路,setPriority到 999或1000或10000也註冊在android系統menifeast文件監聽器等 而非結果。
BroadcarstReceiver文件
公共類HeadSetReceiver擴展廣播接收器{
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();
}
}
}
*我在MediaPlayerService.java註冊監聽器 - 在OnCreate()作爲 後續*
headSetReceiver = new HeadSetReceiver();
IntentFilter filter2 = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
filter2.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
registerReceiver(playerRadioService.headSetReceiver,filter2);
同時也可作爲跟蹤
unregisterReceiver(headSetReceiver);
,但我不知道未註冊的onDestroy,我所缺少的實現,因此有沒有這方面的結果。
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
據我所知,如果你像在onCreate()中一樣動態地註冊接收者,不需要在清單文件中聲明。 –
你可以確認,註冊和聲明是否相同或不同? –