2015-11-08 73 views
0

我對Android非常陌生,我正在創建一個音樂播放器。 我對MediaSession不熟悉,現在我有一個運行正常的音樂播放器,但它不支持對耳機單擊或響應呼叫時暫停。Android MediaSession對耳機沒有反應

這是我的代碼:

ComponentName mediaButtonReceiver = new ComponentName(context, MusicPlayerNotificationReceiver.class); 
    final MediaSessionCompat mediaSession = new MediaSessionCompat(context, "Start MP", mediaButtonReceiver, null); 
    mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS); 
    LockerActivity.getInstance().runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      mediaSession.setCallback(MusicPlayer.this); 
     } 
    }); 
    mediaSession.setActive(true); 

我也有與此動作

​​

這是我所有的代碼ralated到MediaSession定義的BroadcastReceiver。 所以,現在,我只是試圖從耳機得到通知。我在onReceive()的第一行有一個斷點,我點擊耳機上的按鈕,沒有任何反應。如果我長時間點擊按鈕比android進入聆聽模式的講話說明。

我還需要什麼?

+0

嘗試爲MusicPlayerNotificationReceiver類創建顯式廣播PendingIntent,並將其作爲MediaSessionCompat構造函數中的第四個參數傳遞。 –

+0

@MikeM。沒有工作。 – SnapDragon

+0

您確定Receiver在清單中正確列出;正確的拼寫,正確的文件夾等? –

回答

0

首先,我所做的一切對UI線程運行調用MediaSession然後我加入這個代碼從谷歌的訓練:

AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE); 
... 

// Start listening for button presses 
am.registerMediaButtonEventReceiver(RemoteControlReceiver); 
... 

// Stop listening for button presses 
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver); 

http://developer.android.com/training/managing-audio/volume-playback.html#PlaybackControls

,我看到了這個定義的回調SO回答: How to use the new MediaSession class to receive media button presses on Android 5.x?

順便說一句,它是在MediaSession.Callback,而不是在BroadcastReceiver catched。