问题描述
我正在创建一个应用程序,我需要在其中响应虚拟屏幕上的按钮和大多数耳机上的硬件媒体按钮上的按键事件。仅通过为虚拟按钮设置onClickListener并在我的onKeyDown方法中拦截KEYCODE_HEADSETHOOK即可轻松实现。但是,我注意到的是,对于这两个按钮,只有在(1)释放按钮,然后同时按下和按下向上键或(2)长按时,才发送按键事件。按住此键不放,直到释放按钮。用户一旦按下任一按钮,我就需要捕获按键按下事件。
对于虚拟按钮,我通过创建一个自定义按钮实现了这一点,该按钮简单地扩展了Button并像这样覆盖了onTouchEvent
public class CustomButton extends androidx.appcompat.widget.AppCompatButton
{
@Override
public boolean onTouchEvent(MotionEvent event)
{
super.onTouchEvent(event);
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
performClick();
return true;
case MotionEvent.ACTION_UP:
default:
return false;
}
}
}
这对于虚拟按钮很好用,但是我无法弄清楚如何对硬件按钮执行相同的操作,或者甚至不可能。谁能指出我正确的方向?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)