2016-11-13 112 views
1

我正在寫一個程序,捕捉耳機按鈕然後做不同的事情取決於多久,你有多少次按它。去api level 21. Android 5.0。 所以我可以趕上按鈕按下,但是當啓動一個MP3播放器,然後它開始捕捉按鈕按下。我怎樣才能防止呢? 第二個問題你如何恢復暫停的MP3,其和其他程序不是我的程序播放MP3。耳機按鈕控制Android 5.0

audioSession = new MediaSession(getApplicationContext(), "TAG11"); 
    MsCallback=  new MediaSession.Callback() { 

     @Override 
     public boolean onMediaButtonEvent(final Intent mediaButtonIntent) { 
      String intentAction = mediaButtonIntent.getAction(); 
      Log.i("onMediaButtonEvent", intentAction); 
      if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) { 
       KeyEvent event = mediaButtonIntent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); 

       if (event != null) { 
        if(toast!=null){ 
         toast.cancel(); 
        } 
        toast = Toast.makeText(getApplicationContext(), "headsetbutton press", Toast.LENGTH_SHORT); 
        toast.show(); 
       } 
      } 
      return super.onMediaButtonEvent(mediaButtonIntent); 
     } 


    }; 
    audioSession.setCallback(MsCallback); 

    PlaybackState state = new PlaybackState.Builder() 
      .setActions(PlaybackState.ACTION_PLAY_PAUSE) 
      .setState(PlaybackState.STATE_PLAYING, 0, 0, 0) 
      .build(); 
    audioSession.setPlaybackState(state); 
    audioSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS); 

    audioSession.setActive(true); 
+0

可能無法阻止其他程序將聽衆放在按鈕上。你也許可以聽新的聽衆,然後刪除他們,但我不知道這是否可能。 Idk如果劫持按鈕甚至是一個好主意。可能勾選將其用於音樂的用戶。 – Carcigenicate

+0

Thx回答。訣竅可能是您需要重新綁定它。但你如何發現它被盜?用戶可以設置按鈕的功能,然後將其設置爲播放音樂,然後播放音樂。它有點像這個程序,但想做更多的選擇。 https://play.google.com/store/apps/details?id=com.kober.headset&hl=zh-CN – user2773829

+0

有沒有辦法獲得可變列表的聽衆?可以直接操縱它。 – Carcigenicate

回答

0

爲了聽媒體的重要事件清單檔案中的聲明廣播reciever像這樣

<receiver android:name=".RemoteControlReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.MEDIA_BUTTON" /> 
     </intent-filter> 
    </receiver> 

RemoteControlReceiver類擴展BroadcastReceiver和提取關鍵事件,像這樣

鍵碼
@Override 
public void onReceive(Context context, Intent intent) { 
    Log.d(TAG, "onReceive: "); 
    if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { 
     KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); 
     int keyCode = event.getKeyCode(); 

    } 
} 

每個耳機上的基本按鈕通常是Pause/Play按鈕

+0

您需要使用mAudioManager.registerMediaButtonEventReceiver( mRemoteControlResponder); – user2773829

+0

那麼你應該包括你如何掛接RemoteControlResponder來獲得意圖。像這樣'mAudioManager =(AudioManager)getSystemService(Context.AUDIO_SERVICE); mRemoteControlResponder = new ComponentName(getPackageName(), RemoteControlReceiver.class.getName()); mAudioManager.registerMediaButtonEventReceiver( mRemoteControlResponder);'且它的唯一值低於5.0。甚至不確定它的工作在4.4那裏你使用MediaSessionCompat。 – user2773829