簡體   English   中英

Android UIAutomator長按設備

[英]Android UIAutomator long click on device

我想用指定的時間長按指定的點。 不幸的是,沒有像在課堂上長按一樣的方法: UiDevice我可能會編寫自己的方法,如下所示:

private void longClick(int x, int y, long time) {
    android.graphics.Point point = new android.graphics.Point(x, y);
    android.graphics.Point[] points = new android.graphics.Point[2];
    points[0] = point;
    points[1] = point;
    getUiDevice().swipe(points, time / 5); // according to documentation, each step lasts 5ms
}

或使用反射並調用longTap:

private void longClick(int x, int y) {
    Field mUiAutomationBridgeField = getUiDevice().getClass().getDeclaredField("mUiAutomationBridge");
    mUiAutomationBridgeField.setAccessible(true);
    Object mUiAutomationBridge = mUiAutomationBridgeField.get(getUiDevice());
    Field mInteractionControllerField = mUiAutomationBridge.getClass().getDeclaredField("mInteractionController");
    mInteractionControllerField.setAccessible(true);
    Object mInteractionController = mInteractionControllerField.get(mUiAutomationBridge);
    Method longTap = mInteractionController.getClass().getDeclaredMethod("longTap", int.class, int.class);
    longTap.setAccessible(true);
    longTap.invoke(mInteractionController, x, y);
}

然而,它不是滿意的解決方案,任何想法如何做得更好的方式? 他們為什么錯過這種方法?

getUiDevice().getInstance().swipe(x, y, x, y, 400);

起點和終點相同。 然后你可以模擬uiDevice longclick。

我認為刷UiObject更好。

yourUiObject.swipeRight(int steps);
yourUiObject.swipeLeft(int steps);
yourUiObject.swipeDown(int steps);
yourUiObject.swipeUp(int steps);

他們中的任何人都對我有用。 請注意,該文檔說一步大約需要5毫秒,但我發現它不是真的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM