我使用广播接收器来检测耳机按钮动作。我在onReceive
函数中使用此代码进行长按:
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
return;
}
KeyEvent event = (KeyEvent) intent
.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
int action = event.getAction();
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_HEADSETHOOK:
if (action == KeyEvent.FLAG_LONG_PRESS)
Toast.makeText(context, "Long click!", Toast.LENGTH_SHORT).show();
break;
}
abortBroadcast();
}
但它不起作用。问题出在哪里?还有其他办法吗?
答案 0 :(得分:1)
以下是解决方案:
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
return;
}
KeyEvent event = (KeyEvent) intent
.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
int action = event.getAction();
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_HEADSETHOOK:
if (action == KeyEvent.ACTION_UP)
if (SystemClock.uptimeMillis() - event.getDownTime() > 2000)
Toast.makeText(context, "Long click!", Toast.LENGTH_SHORT).show();
break;
}
abortBroadcast();
}