【问题标题】:onKeyLongPress not working for KeyboardKeyonKeyLongPress 不适用于键盘键
【发布时间】:2015-09-15 05:41:15
【问题描述】:

如何在 KeyboardKey 上捕捉 onKeyLongPress。下面的代码只有在我输入“KEYCODE_VOLUME_DOWN”或“KEYCODE_VOLUME_UP”而不是“KEYCODE_Q”时才有效。我也尝试写“113”而不是“KeyEvent.KEYCODE_Q”,但没有帮助。

(如果您需要 XML,请询问。)

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_Q) {
        shortPress = false;
        Toast.makeText(this, "longPress", Toast.LENGTH_SHORT).show();
        return true;
    }

    return false;
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_Q) {
        if(event.getAction() == KeyEvent.ACTION_DOWN){
            event.startTracking();
            if(event.getRepeatCount() == 0){
                shortPress = true;
            }
            return true;
        }
    }

    return super.onKeyDown(keyCode, event);
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_G) {
        if(shortPress){
            Toast.makeText(this, "shortPress", Toast.LENGTH_SHORT).show();
        }
        
        shortPress = false;

        return true;
    }

    return super.onKeyUp(keyCode, event);
}

【问题讨论】:

  • 我认为 onKeyLongPress 方法仅适用于硬件键而不是软件键盘。你用的是硬件键盘吗?
  • 不,我正在开发自己的软键盘。你能告诉我如何检测KeyboardKey上的长按吗?提前致谢。
  • 如果您正在开发键盘,您将不会收到传入的键盘事件。您正在生成键盘事件。按键的触摸会从您的视图上的触摸中找到。
  • 嗯好的。没错,但我仍然无法入睡,因为我的键盘无法检测到按键上的长按。你能告诉我如何在没有我的视图坐标和那些东西的情况下检测每个按钮上的长按吗?感谢您的回复。

标签: android android-softkeyboard onkeydown onkeyup android-input-method


【解决方案1】:

对于软键盘,您应该像任何其他应用程序一样使用适当的计时器来处理长按事件。 LatinIME 也使用此解决方案,请查看。

PointerTracker.onDownEventInternal.startLongPressTimer()

【讨论】:

    【解决方案2】:

    我的长按空格键的解决方案。

    private long ms_press;
    ...
    @Override
    public void onPress( int i ){
        ms_press = System.currentTimeMillis();
    }
    ...
    @Override
    public void onKey( int primaryCode, int[] keyCodes) {
        if( primaryCode == 32 && (System.currentTimeMillis()-ms_press) >= 1000  ){ 
            //long press on Space key
        }else{
            //...
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-09-27
      • 2021-09-30
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 2011-12-14
      相关资源
      最近更新 更多