diff options
Diffstat (limited to 'hierarchyviewer/src/com/android/hierarchyviewer/device/DeviceBridge.java')
-rw-r--r-- | hierarchyviewer/src/com/android/hierarchyviewer/device/DeviceBridge.java | 237 |
1 files changed, 0 insertions, 237 deletions
diff --git a/hierarchyviewer/src/com/android/hierarchyviewer/device/DeviceBridge.java b/hierarchyviewer/src/com/android/hierarchyviewer/device/DeviceBridge.java deleted file mode 100644 index f585ea66f..000000000 --- a/hierarchyviewer/src/com/android/hierarchyviewer/device/DeviceBridge.java +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.hierarchyviewer.device; - -import com.android.ddmlib.AdbCommandRejectedException; -import com.android.ddmlib.AndroidDebugBridge; -import com.android.ddmlib.IDevice; -import com.android.ddmlib.Log; -import com.android.ddmlib.MultiLineReceiver; -import com.android.ddmlib.ShellCommandUnresponsiveException; -import com.android.ddmlib.TimeoutException; -import com.android.hierarchyviewer.scene.VersionLoader; - -import java.io.IOException; -import java.io.File; -import java.util.HashMap; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class DeviceBridge { - private static AndroidDebugBridge bridge; - - private static final HashMap<IDevice, Integer> devicePortMap = new HashMap<IDevice, Integer>(); - private static int nextLocalPort = Configuration.DEFAULT_SERVER_PORT; - - public static void initDebugBridge() { - if (bridge == null) { - AndroidDebugBridge.init(false /* debugger support */); - } - if (bridge == null || !bridge.isConnected()) { - String adbLocation = System.getProperty("hierarchyviewer.adb"); - if (adbLocation != null && adbLocation.length() != 0) { - adbLocation += File.separator + "adb"; - } else { - adbLocation = "adb"; - } - - bridge = AndroidDebugBridge.createBridge(adbLocation, true); - } - } - - public static void startListenForDevices(AndroidDebugBridge.IDeviceChangeListener listener) { - AndroidDebugBridge.addDeviceChangeListener(listener); - } - - public static IDevice[] getDevices() { - return bridge.getDevices(); - } - - public static boolean isViewServerRunning(IDevice device) { - initDebugBridge(); - final boolean[] result = new boolean[1]; - try { - if (device.isOnline()) { - device.executeShellCommand(buildIsServerRunningShellCommand(), - new BooleanResultReader(result)); - if (!result[0]) { - if (VersionLoader.loadProtocolVersion(device) > 2) { - result[0] = true; - } - } - } - } catch (IOException e) { - e.printStackTrace(); - } catch (TimeoutException e) { - e.printStackTrace(); - } catch (AdbCommandRejectedException e) { - e.printStackTrace(); - } catch (ShellCommandUnresponsiveException e) { - e.printStackTrace(); - } - return result[0]; - } - - public static boolean startViewServer(IDevice device) { - return startViewServer(device, Configuration.DEFAULT_SERVER_PORT); - } - - public static boolean startViewServer(IDevice device, int port) { - initDebugBridge(); - final boolean[] result = new boolean[1]; - try { - if (device.isOnline()) { - device.executeShellCommand(buildStartServerShellCommand(port), - new BooleanResultReader(result)); - } - } catch (IOException e) { - e.printStackTrace(); - } catch (TimeoutException e) { - e.printStackTrace(); - } catch (AdbCommandRejectedException e) { - e.printStackTrace(); - } catch (ShellCommandUnresponsiveException e) { - e.printStackTrace(); - } - return result[0]; - } - - public static boolean stopViewServer(IDevice device) { - initDebugBridge(); - final boolean[] result = new boolean[1]; - try { - if (device.isOnline()) { - device.executeShellCommand(buildStopServerShellCommand(), - new BooleanResultReader(result)); - } - } catch (IOException e) { - e.printStackTrace(); - } catch (TimeoutException e) { - e.printStackTrace(); - } catch (AdbCommandRejectedException e) { - e.printStackTrace(); - } catch (ShellCommandUnresponsiveException e) { - e.printStackTrace(); - } - return result[0]; - } - - public static void terminate() { - AndroidDebugBridge.terminate(); - } - - /** - * Sets up a just-connected device to work with the view server. - * <p/>This starts a port forwarding between a local port and a port on the device. - * @param device - */ - public static void setupDeviceForward(IDevice device) { - synchronized (devicePortMap) { - if (device.getState() == IDevice.DeviceState.ONLINE) { - int localPort = nextLocalPort++; - try { - device.createForward(localPort, Configuration.DEFAULT_SERVER_PORT); - devicePortMap.put(device, localPort); - } catch (TimeoutException e) { - Log.e("hierarchy", "Timeout setting up port forwarding for " + device); - } catch (AdbCommandRejectedException e) { - Log.e("hierarchy", String.format( - "Adb rejected forward command for device %1$s: %2$s", - device, e.getMessage())); - } catch (IOException e) { - Log.e("hierarchy", String.format( - "Failed to create forward for device %1$s: %2$s", - device, e.getMessage())); - } - } - } - } - - public static void removeDeviceForward(IDevice device) { - synchronized (devicePortMap) { - final Integer localPort = devicePortMap.get(device); - if (localPort != null) { - try { - device.removeForward(localPort, Configuration.DEFAULT_SERVER_PORT); - devicePortMap.remove(device); - } catch (TimeoutException e) { - Log.e("hierarchy", "Timeout removing port forwarding for " + device); - } catch (AdbCommandRejectedException e) { - Log.e("hierarchy", String.format( - "Adb rejected remove-forward command for device %1$s: %2$s", - device, e.getMessage())); - } catch (IOException e) { - Log.e("hierarchy", String.format( - "Failed to remove forward for device %1$s: %2$s", - device, e.getMessage())); - } - } - } - } - - public static int getDeviceLocalPort(IDevice device) { - synchronized (devicePortMap) { - Integer port = devicePortMap.get(device); - if (port != null) { - return port; - } - - Log.e("hierarchy", "Missing forwarded port for " + device.getSerialNumber()); - return -1; - } - - } - - private static String buildStartServerShellCommand(int port) { - return String.format("service call window %d i32 %d", - Configuration.SERVICE_CODE_START_SERVER, port); - } - - private static String buildStopServerShellCommand() { - return String.format("service call window %d", Configuration.SERVICE_CODE_STOP_SERVER); - } - - private static String buildIsServerRunningShellCommand() { - return String.format("service call window %d", - Configuration.SERVICE_CODE_IS_SERVER_RUNNING); - } - - private static class BooleanResultReader extends MultiLineReceiver { - private final boolean[] mResult; - - public BooleanResultReader(boolean[] result) { - mResult = result; - } - - @Override - public void processNewLines(String[] strings) { - if (strings.length > 0) { - Pattern pattern = Pattern.compile(".*?\\([0-9]{8} ([0-9]{8}).*"); - Matcher matcher = pattern.matcher(strings[0]); - if (matcher.matches()) { - if (Integer.parseInt(matcher.group(1)) == 1) { - mResult[0] = true; - } - } - } - } - - public boolean isCancelled() { - return false; - } - } -} |