代码之家  ›  专栏  ›  技术社区  ›  JRL

如何从仪器测试用例发送长新闻?

  •  3
  • JRL  · 技术社区  · 14 年前

    在Android系统中,我如何才能从 InstrumentationTestCase ?例如,我想做一个 sendKeys(KEYCODE_DPAD_CENTER) 但要点击很久。

    2 回复  |  直到 9 年前
        1
  •  2
  •   JRL    14 年前

    不知道这是不是唯一/正确的方法,但我设法做到了:

    public void longClickDpadCenter() throws Exception {
        getInstrumentation().sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_CENTER));
        Thread.sleep(ViewConfiguration.get(mContext).getLongPressTimeout());
        getInstrumentation().sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_CENTER));
    }
    
        2
  •  0
  •   BoredT    9 年前

    您可以尝试下面的helper方法:

    private void longPress(int key) {
        long downTime = SystemClock.uptimeMillis();
        long eventTime = SystemClock.uptimeMillis();
        KeyEvent event1 = new KeyEvent(downTime, eventTime, KeyEvent.ACTION_DOWN, key, 0);
        KeyEvent event2 = new KeyEvent(downTime, eventTime, KeyEvent.ACTION_DOWN, key, 1);
        getInstrumentation().sendKeySync(event1);
        getInstrumentation().sendKeySync(event2);
    }
    

    使用示例:

    longPress(KeyEvent.KEYCODE_ENTER);