检测耳机按钮双击并长按(单击)Android

时间:2016-03-23 07:45:38

标签: android headset

检测耳机按钮双击并长按(单击)Android

我正在尝试下面的代码

 public class MediaButtonReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            Log.e("----onReceive--", " ");

            if (Intent.ACTION_HEADSET_PLUG.equals(intent.getAction())) {

                Log.e("----jack out--", " ");

                if (intent.getExtras().getInt("state") == 1)// if plugged
                    Toast.makeText(context, "earphones plugged", Toast.LENGTH_LONG)
                            .show();
                else
                    Toast.makeText(context, "earphones un-plugged",
                            Toast.LENGTH_LONG).show();
            }

            if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
                Toast.makeText(context, "button pressed", Toast.LENGTH_LONG).show();
                // key=intent.getExtras().getString("EXTRA_KEY_EVENT");

            }

            abortBroadcast();

        }

它检测到耳机按钮正确点击

但是,我们如何检测长按和双击耳机

1 个答案:

答案 0 :(得分:0)

对于双击,您可以通过覆盖活动onKeyDown方法并测量每次点击之间经过的时间来检测它:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_HEADSETHOOK){
        //check if it's the first or the second click and measure time between them
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

还有一个活动onKeyLongPress方法,但它似乎无法在我的设备上使用耳机按钮,因为当我长按耳机按钮它启动Google Now时我无法在我的活动中检测到它