Как отправить длинное нажатие из InstrumentationTestCase? - PullRequest
3 голосов
/ 26 мая 2010

В Android, как я могу отправить длинное нажатие с InstrumentationTestCase? Я хотел бы, например, сделать sendKeys(KEYCODE_DPAD_CENTER), но сделать это длинным кликом.

Ответы [ 2 ]

2 голосов
/ 26 мая 2010

Не знаю, единственный ли это / правильный путь, но мне удалось сделать это следующим образом:

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));
}
0 голосов
/ 15 июня 2015

Вы можете попробовать вспомогательный метод ниже:

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);
...