use SDK to build instrumentation based UI Automator
Change-Id: I0fa2d4a7cd3b0df8d752d1b76cb6762d52efcf08
diff --git a/uiautomator/instrumentation/Android.mk b/uiautomator/instrumentation/Android.mk
index ed20993..0c93b4c 100644
--- a/uiautomator/instrumentation/Android.mk
+++ b/uiautomator/instrumentation/Android.mk
@@ -23,7 +23,7 @@
$(call all-java-files-under, ../library/core-src)
LOCAL_JAVA_LIBRARIES := android.test.runner
LOCAL_MODULE := uiautomator-instrumentation
-# below to be uncommented once core-src is using public API only
-#LOCAL_SDK_VERSION := current
+# TODO: change this to 18 when it's available
+LOCAL_SDK_VERSION := current
include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/uiautomator/library/core-src/com/android/uiautomator/core/InteractionController.java b/uiautomator/library/core-src/com/android/uiautomator/core/InteractionController.java
index 286895d..e05d5eb 100644
--- a/uiautomator/library/core-src/com/android/uiautomator/core/InteractionController.java
+++ b/uiautomator/library/core-src/com/android/uiautomator/core/InteractionController.java
@@ -16,6 +16,7 @@
package com.android.uiautomator.core;
+import android.accessibilityservice.AccessibilityService;
import android.app.UiAutomation;
import android.app.UiAutomation.AccessibilityEventFilter;
import android.graphics.Point;
@@ -754,4 +755,8 @@
properties, pointerCoords, 0, 0, 1, 1, 0, 0, InputDevice.SOURCE_TOUCHSCREEN, 0);
injectEventSync(event);
}
+
+ public boolean toggleRecentApps() {
+ return mUiAutomatorBridge.performGlobalAction(AccessibilityService.GLOBAL_ACTION_RECENTS);
+ }
}
diff --git a/uiautomator/library/core-src/com/android/uiautomator/core/UiAutomatorBridge.java b/uiautomator/library/core-src/com/android/uiautomator/core/UiAutomatorBridge.java
index 3b9887d..bc5bc8e 100644
--- a/uiautomator/library/core-src/com/android/uiautomator/core/UiAutomatorBridge.java
+++ b/uiautomator/library/core-src/com/android/uiautomator/core/UiAutomatorBridge.java
@@ -133,6 +133,10 @@
return true;
}
+ public boolean performGlobalAction(int action) {
+ return mUiAutomation.performGlobalAction(action);
+ }
+
public abstract Display getDefaultDisplay();
public abstract long getSystemLongPressTime();
diff --git a/uiautomator/library/core-src/com/android/uiautomator/core/UiDevice.java b/uiautomator/library/core-src/com/android/uiautomator/core/UiDevice.java
index 139d388..39c37b4 100644
--- a/uiautomator/library/core-src/com/android/uiautomator/core/UiDevice.java
+++ b/uiautomator/library/core-src/com/android/uiautomator/core/UiDevice.java
@@ -18,12 +18,10 @@
import android.app.UiAutomation;
import android.app.UiAutomation.AccessibilityEventFilter;
-import android.content.Context;
import android.graphics.Point;
import android.os.Build;
import android.os.Environment;
import android.os.RemoteException;
-import android.os.ServiceManager;
import android.os.SystemClock;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -33,8 +31,6 @@
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
-import com.android.internal.statusbar.IStatusBarService;
-
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
@@ -340,14 +336,7 @@
public boolean pressRecentApps() throws RemoteException {
Tracer.trace();
waitForIdle();
- final IStatusBarService statusBar = IStatusBarService.Stub.asInterface(
- ServiceManager.getService(Context.STATUS_BAR_SERVICE));
-
- if (statusBar != null) {
- statusBar.toggleRecentApps();
- return true;
- }
- return false;
+ return getAutomatorBridge().getInteractionController().toggleRecentApps();
}
/**