aboutsummaryrefslogtreecommitdiffstats
path: root/hierarchyviewer2
diff options
context:
space:
mode:
Diffstat (limited to 'hierarchyviewer2')
-rw-r--r--hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java18
-rw-r--r--hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java34
2 files changed, 50 insertions, 2 deletions
diff --git a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java
index 63b30c0..f397b1f 100644
--- a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java
+++ b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java
@@ -17,6 +17,7 @@
package com.android.hierarchyviewerlib;
import com.android.ddmlib.AdbCommandRejectedException;
+import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log;
import com.android.ddmlib.RawImage;
@@ -88,6 +89,21 @@ public abstract class HierarchyViewerDirector implements IDeviceChangeListener,
return sDirector;
}
+ /**
+ * Init the DeviceBridge with an existing {@link AndroidDebugBridge}. This loops until
+ * a bridge exists or a timeout is reached.
+ */
+ public boolean acquireBridge() {
+ return DeviceBridge.acquireBridge();
+ }
+
+ /**
+ * Creates an {@link AndroidDebugBridge} connected to adb at the given location.
+ *
+ * If a bridge is already running, this disconnects it and creates a new one.
+ *
+ * @param adbLocation the location to adb.
+ */
public void initDebugBridge() {
DeviceBridge.initDebugBridge(getAdbLocation());
}
@@ -633,7 +649,7 @@ public abstract class HierarchyViewerDirector implements IDeviceChangeListener,
}
}
}
-
+
public void setPixelPerfectAutoRefreshInterval(int value) {
synchronized (mPixelPerfectRefreshTimer) {
if (mPixelPerfectAutoRefreshInterval == value) {
diff --git a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java
index 20feeec..74fbc13 100644
--- a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java
+++ b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java
@@ -80,6 +80,37 @@ public class DeviceBridge {
}
}
+ /**
+ * Init the DeviceBridge with an existing {@link AndroidDebugBridge}. This loops until
+ * a bridge exists or a timeout is reached.
+ */
+ public static boolean acquireBridge() {
+ int count = 10;
+ do {
+ sBridge = AndroidDebugBridge.getBridge();
+ if (sBridge == null) {
+ try {
+ Thread.sleep(500);
+ count--;
+ if (count == 0) {
+ return false;
+ }
+ } catch (InterruptedException e) {
+ // pass
+ }
+ }
+ } while (sBridge == null);
+
+ return true;
+ }
+
+ /**
+ * Creates an {@link AndroidDebugBridge} connected to adb at the given location.
+ *
+ * If a bridge is already running, this disconnects it and creates a new one.
+ *
+ * @param adbLocation the location to adb.
+ */
public static void initDebugBridge(String adbLocation) {
if (sBridge == null) {
AndroidDebugBridge.init(false /* debugger support */);
@@ -89,6 +120,7 @@ public class DeviceBridge {
}
}
+ /** Disconnects the current {@link AndroidDebugBridge}. */
public static void terminate() {
AndroidDebugBridge.terminate();
}
@@ -117,7 +149,7 @@ public class DeviceBridge {
* <p/>
* This starts a port forwarding between a local port and a port on the
* device.
- *
+ *
* @param device
*/
public static void setupDeviceForward(IDevice device) {