2013-04-17 5 views
4

지정된 시간에 지정된 지점을 길게 클릭하고 싶습니다. 아마 자신의 방법, 뭔가 같은 쓸 수 UiDevice :Android UIAutomator 기기를 오래 클릭하십시오.

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

그것을 만족 해결책이 아니다 그러나 불행하게도 클래스에 긴 클릭과 같은 방법이 없습니다 , 어떤 생각을 더 잘하는 방법? 왜 그들은 그러한 방법을 놓치고 있습니까?

+0

는 아래의 링크를 ? –

+0

아래 링크를 클릭하십시오. ? "' –

답변

2

나는 UiObject를 스 와이프한다고 생각합니다.

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

누구나 저에게 큰 도움이됩니다. 의사가 한 단계에 약 5ms가 걸렸지 만 사실이 아님을 알았습니다.

+0

개체가 없습니다. x, y에 긴 클릭을하고 싶습니다. – maszter

+0

이 슬쩍 통화는 Android 4.3에서 시도했을 때 작동합니다. UiObject.longClick()이 실제로 길게 누르기를 원합니다. – tmin

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

시작 지점과 끝 지점이 같습니다. 그런 다음 uiDevice longclick을 시뮬레이션 할 수 있습니다.