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();
     }
 
     /**