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