当按下耳机按钮时,在android API中生成按键代码\u媒体\u播放\u暂停>;21?

当按下耳机按钮时,在android API中生成按键代码\u媒体\u播放\u暂停>;21?,android,Android,我正在尝试获取处理动作\媒体\按钮意图的关键代码。我正在处理API>21,下面是我的代码。每次按下耳机按钮,我都会收到keyCode=keyCode\U HEADESTOOK。有人能告诉我什么时候我会收到KEYCODE\u MEDIA\u PLAY\u PAUSE或KEYCODE\u MEDIA\u NEXT或任何其他与媒体相关的KEYCODE吗 public class MainActivity extends Activity { @Override protected void onC

我正在尝试获取处理动作\媒体\按钮意图的关键代码。我正在处理API>21,下面是我的代码。每次按下耳机按钮,我都会收到keyCode=keyCode\U HEADESTOOK。有人能告诉我什么时候我会收到KEYCODE\u MEDIA\u PLAY\u PAUSE或KEYCODE\u MEDIA\u NEXT或任何其他与媒体相关的KEYCODE吗

public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setVolumeControlStream(AudioManager.STREAM_MUSIC);
    final MediaSession session = new MediaSession(getApplicationContext(), "TRIGGER");
    session.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS);
    session.setActive(true);
    PlaybackState state = new PlaybackState.Builder()
            .setActions(PlaybackState.ACTION_PLAY | PlaybackState.ACTION_PLAY_PAUSE |
                            PlaybackState.ACTION_PLAY_FROM_MEDIA_ID | PlaybackState.ACTION_PAUSE |
                            PlaybackState.ACTION_SKIP_TO_NEXT | PlaybackState.ACTION_SKIP_TO_PREVIOUS)
            .setState(PlaybackState.STATE_PLAYING, 1, 2, SystemClock.elapsedRealtime())
            .build();
    session.setPlaybackState(state);


    session.setCallback(new MediaSession.Callback() {
        @Override
        public boolean onMediaButtonEvent(final Intent mediaButtonIntent) {

            String intentAction = mediaButtonIntent.getAction();

            if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction))
            {
                KeyEvent event = (KeyEvent)mediaButtonIntent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
                if (event != null)
                {
                    int action = event.getAction();
                    int code = event.getKeyCode();
                    if (action == KeyEvent.ACTION_DOWN) {
                        Log.i("TRIGGER", "EVENT RECEIVED");
                        Log.i("TRIGGER", String.valueOf(event));
                        Log.i("TRIGGER", String.valueOf(action));
                        Log.i("TRIGGER", String.valueOf(code));
                    }
                }

            }
           return super.onMediaButtonEvent(mediaButtonIntent);
        }


    });

}
在清单文件中还提到了意图过滤器,如下所示

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

当你按下这些按钮时,你会得到这些事件,或者你说你是,但它们不工作?我的耳机上只有一个按钮。正如我在使用其他音乐播放器时所体验到的,该按钮用于播放、暂停或转发音轨,我希望该按钮能够生成动作、媒体、播放或任何与媒体相关的关键代码。但当我按下那个按钮时,它只会生成keyCode作为keyCode\u头方法OK。有没有办法进一步检查预期的键码?它是如何用于这些事情的?长时间按住或双击等?按住一段时间将打开我手机中的谷歌语音搜索。我会检查双击,明天告诉你。我不是说要尝试这些东西。只是问你在其他应用中是如何使用它的。这些应用程序怎么知道你们按下时是指暂停而不是跳过曲目?
09-11 17:39:42.134  15765-15789/com.example.amit.myapplication I/OpenGLRenderer﹕ Initialized EGL, version 1.4
09-11 17:39:42.147  15765-15789/com.example.amit.myapplication D/OpenGLRenderer﹕ Enabling debug mode 0
09-11 17:39:46.843  15765-15765/com.example.amit.myapplication I/TRIGGER﹕ EVENT RECEIVED
09-11 17:39:46.843  15765-15765/com.example.amit.myapplication I/TRIGGER﹕ KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_HEADSETHOOK, scanCode=226, metaState=0, flags=0x8, repeatCount=0, eventTime=217783805, downTime=217783641, deviceId=4, source=0x101 }
09-11 17:39:46.843  15765-15765/com.example.amit.myapplication I/TRIGGER﹕ 0
09-11 17:39:46.843  15765-15765/com.example.amit.myapplication I/TRIGGER﹕ 79