am d06f8e2f: Merge change 1730 into donut

Merge commit 'd06f8e2f4cb97b5a397793ba7b53e62ab73925f8'

* commit 'd06f8e2f4cb97b5a397793ba7b53e62ab73925f8':
  Make the ddmlib API use IDevice instead of Device
This commit is contained in:
Android (Google) Code Review
2009-05-15 16:25:37 -07:00
committed by The Android Open Source Project
41 changed files with 841 additions and 819 deletions

View File

@@ -16,7 +16,7 @@
package com.android.ddms; package com.android.ddms;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.DebugPortManager.IDebugPortProvider; import com.android.ddmlib.DebugPortManager.IDebugPortProvider;
import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.IPreferenceStore;
@@ -53,15 +53,15 @@ public class DebugPortProvider implements IDebugPortProvider {
/** /**
* Returns a static debug port for the specified application running on the * Returns a static debug port for the specified application running on the
* specified {@link Device}. * specified {@link IDevice}.
* @param device The device the application is running on. * @param device The device the application is running on.
* @param appName The application name, as defined in the * @param appName The application name, as defined in the
* AndroidManifest.xml package attribute. * AndroidManifest.xml package attribute.
* @return The static debug port or {@link #NO_STATIC_PORT} if there is none setup. * @return The static debug port or {@link #NO_STATIC_PORT} if there is none setup.
* *
* @see IDebugPortProvider#getPort(Device, String) * @see IDebugPortProvider#getPort(IDevice, String)
*/ */
public int getPort(Device device, String appName) { public int getPort(IDevice device, String appName) {
if (mMap != null) { if (mMap != null) {
Map<String, Integer> deviceMap = mMap.get(device.getSerialNumber()); Map<String, Integer> deviceMap = mMap.get(device.getSerialNumber());
if (deviceMap != null) { if (deviceMap != null) {
@@ -107,7 +107,7 @@ public class DebugPortProvider implements IDebugPortProvider {
if (entry.length == 3) { if (entry.length == 3) {
deviceName = entry[2]; deviceName = entry[2];
} else { } else {
deviceName = Device.FIRST_EMULATOR_SN; deviceName = IDevice.FIRST_EMULATOR_SN;
} }
// get the device map // get the device map

View File

@@ -17,7 +17,7 @@
package com.android.ddms; package com.android.ddms;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.IShellOutputReceiver; import com.android.ddmlib.IShellOutputReceiver;
import com.android.ddmlib.Log; import com.android.ddmlib.Log;
@@ -96,7 +96,7 @@ public class DeviceCommandDialog extends Dialog {
* Prepare and display the dialog. * Prepare and display the dialog.
* @param currentDevice * @param currentDevice
*/ */
public void open(Device currentDevice) { public void open(IDevice currentDevice) {
Shell parent = getParent(); Shell parent = getParent();
Shell shell = new Shell(parent, getStyle()); Shell shell = new Shell(parent, getStyle());
shell.setText("Remote Command"); shell.setText("Remote Command");
@@ -219,13 +219,13 @@ public class DeviceCommandDialog extends Dialog {
private String mCommand; private String mCommand;
private Text mText; private Text mText;
private int mResult; private int mResult;
private Device mDevice; private IDevice mDevice;
/** /**
* Constructor; pass in the text widget that will receive the output. * Constructor; pass in the text widget that will receive the output.
* @param device * @param device
*/ */
public Gatherer(Shell shell, Device device, String command, Text text) { public Gatherer(Shell shell, IDevice device, String command, Text text) {
mShell = shell; mShell = shell;
mDevice = device; mDevice = device;
mCommand = command; mCommand = command;
@@ -307,7 +307,7 @@ public class DeviceCommandDialog extends Dialog {
* We have to run the command in a thread so that the UI continues * We have to run the command in a thread so that the UI continues
* to work. * to work.
*/ */
private void executeCommand(Shell shell, Device device) { private void executeCommand(Shell shell, IDevice device) {
Gatherer gath = new Gatherer(shell, device, commandString(), mText); Gatherer gath = new Gatherer(shell, device, commandString(), mText);
gath.start(); gath.start();
} }

View File

@@ -16,7 +16,7 @@
package com.android.ddms; package com.android.ddms;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyEvent;
@@ -75,7 +75,7 @@ public class StaticPortEditDialog extends Dialog {
public StaticPortEditDialog(Shell parent, ArrayList<Integer> ports) { public StaticPortEditDialog(Shell parent, ArrayList<Integer> ports) {
super(parent, SWT.DIALOG_TRIM | SWT.BORDER | SWT.APPLICATION_MODAL); super(parent, SWT.DIALOG_TRIM | SWT.BORDER | SWT.APPLICATION_MODAL);
mPorts = ports; mPorts = ports;
mDeviceSn = Device.FIRST_EMULATOR_SN; mDeviceSn = IDevice.FIRST_EMULATOR_SN;
} }
/** /**

View File

@@ -18,7 +18,7 @@ package com.android.ddms;
import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Client; import com.android.ddmlib.Client;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log; import com.android.ddmlib.Log;
import com.android.ddmlib.Log.ILogOutput; import com.android.ddmlib.Log.ILogOutput;
import com.android.ddmlib.Log.LogLevel; import com.android.ddmlib.Log.LogLevel;
@@ -90,7 +90,7 @@ import java.util.ArrayList;
/** /**
* This acts as the UI builder. This cannot be its own thread since this prevent using AWT in an * This acts as the UI builder. This cannot be its own thread since this prevent using AWT in an
* SWT application. So this class mainly builds the ui, and manages communication between the panels * SWT application. So this class mainly builds the ui, and manages communication between the panels
* when {@link Device} / {@link Client} selection changes. * when {@link IDevice} / {@link Client} selection changes.
*/ */
public class UIThread implements IUiSelectionListener { public class UIThread implements IUiSelectionListener {
/* /*
@@ -153,7 +153,7 @@ public class UIThread implements IUiSelectionListener {
// the table we show in the left-hand pane // the table we show in the left-hand pane
private DevicePanel mDevicePanel; private DevicePanel mDevicePanel;
private Device mCurrentDevice = null; private IDevice mCurrentDevice = null;
private Client mCurrentClient = null; private Client mCurrentClient = null;
// status line at the bottom of the app window // status line at the bottom of the app window
@@ -1450,13 +1450,13 @@ public class UIThread implements IUiSelectionListener {
} }
/** /**
* Sent when a new {@link Device} and {@link Client} are selected. * Sent when a new {@link IDevice} and {@link Client} are selected.
* @param selectedDevice the selected device. If null, no devices are selected. * @param selectedDevice the selected device. If null, no devices are selected.
* @param selectedClient The selected client. If null, no clients are selected. * @param selectedClient The selected client. If null, no clients are selected.
* *
* @see IUiSelectionListener * @see IUiSelectionListener
*/ */
public void selectionChanged(Device selectedDevice, Client selectedClient) { public void selectionChanged(IDevice selectedDevice, Client selectedClient) {
if (mCurrentDevice != selectedDevice) { if (mCurrentDevice != selectedDevice) {
mCurrentDevice = selectedDevice; mCurrentDevice = selectedDevice;
for (TablePanel panel : mPanels) { for (TablePanel panel : mPanels) {

View File

@@ -485,7 +485,7 @@ final class AdbHelper {
byte[] request = formAdbRequest(String.format( byte[] request = formAdbRequest(String.format(
"host-serial:%1$s:forward:tcp:%2$d;tcp:%3$d", //$NON-NLS-1$ "host-serial:%1$s:forward:tcp:%2$d;tcp:%3$d", //$NON-NLS-1$
device.serialNumber, localPort, remotePort)); device.getSerialNumber(), localPort, remotePort));
if (write(adbChan, request) == false) { if (write(adbChan, request) == false) {
throw new IOException("failed to submit the forward command."); throw new IOException("failed to submit the forward command.");
@@ -523,7 +523,7 @@ final class AdbHelper {
byte[] request = formAdbRequest(String.format( byte[] request = formAdbRequest(String.format(
"host-serial:%1$s:killforward:tcp:%2$d;tcp:%3$d", //$NON-NLS-1$ "host-serial:%1$s:killforward:tcp:%2$d;tcp:%3$d", //$NON-NLS-1$
device.serialNumber, localPort, remotePort)); device.getSerialNumber(), localPort, remotePort));
if (!write(adbChan, request)) { if (!write(adbChan, request)) {
throw new IOException("failed to submit the remove forward command."); throw new IOException("failed to submit the remove forward command.");
@@ -697,7 +697,7 @@ final class AdbHelper {
// if the device is not -1, then we first tell adb we're looking to talk // if the device is not -1, then we first tell adb we're looking to talk
// to a specific device // to a specific device
if (device != null) { if (device != null) {
String msg = "host:transport:" + device.serialNumber; //$NON-NLS-1$ String msg = "host:transport:" + device.getSerialNumber(); //$NON-NLS-1$
byte[] device_query = formAdbRequest(msg); byte[] device_query = formAdbRequest(msg);
if (write(adbChan, device_query) == false) if (write(adbChan, device_query) == false)

View File

@@ -107,7 +107,7 @@ public final class AndroidDebugBridge {
/** /**
* Classes which implement this interface provide methods that deal * Classes which implement this interface provide methods that deal
* with {@link Device} addition, deletion, and changes. * with {@link IDevice} addition, deletion, and changes.
*/ */
public interface IDeviceChangeListener { public interface IDeviceChangeListener {
/** /**
@@ -116,7 +116,7 @@ public final class AndroidDebugBridge {
* This is sent from a non UI thread. * This is sent from a non UI thread.
* @param device the new device. * @param device the new device.
*/ */
public void deviceConnected(Device device); public void deviceConnected(IDevice device);
/** /**
* Sent when the a device is connected to the {@link AndroidDebugBridge}. * Sent when the a device is connected to the {@link AndroidDebugBridge}.
@@ -124,7 +124,7 @@ public final class AndroidDebugBridge {
* This is sent from a non UI thread. * This is sent from a non UI thread.
* @param device the new device. * @param device the new device.
*/ */
public void deviceDisconnected(Device device); public void deviceDisconnected(IDevice device);
/** /**
* Sent when a device data changed, or when clients are started/terminated on the device. * Sent when a device data changed, or when clients are started/terminated on the device.
@@ -132,10 +132,10 @@ public final class AndroidDebugBridge {
* This is sent from a non UI thread. * This is sent from a non UI thread.
* @param device the device that was updated. * @param device the device that was updated.
* @param changeMask the mask describing what changed. It can contain any of the following * @param changeMask the mask describing what changed. It can contain any of the following
* values: {@link Device#CHANGE_BUILD_INFO}, {@link Device#CHANGE_STATE}, * values: {@link IDevice#CHANGE_BUILD_INFO}, {@link IDevice#CHANGE_STATE},
* {@link Device#CHANGE_CLIENT_LIST} * {@link IDevice#CHANGE_CLIENT_LIST}
*/ */
public void deviceChanged(Device device, int changeMask); public void deviceChanged(IDevice device, int changeMask);
} }
/** /**
@@ -215,7 +215,7 @@ public final class AndroidDebugBridge {
/** /**
* Returns whether the ddmlib is setup to support monitoring and interacting with * Returns whether the ddmlib is setup to support monitoring and interacting with
* {@link Client}s running on the {@link Device}s. * {@link Client}s running on the {@link IDevice}s.
*/ */
static boolean getClientSupport() { static boolean getClientSupport() {
return sClientSupport; return sClientSupport;
@@ -391,7 +391,7 @@ public final class AndroidDebugBridge {
} }
/** /**
* Adds the listener to the collection of listeners who will be notified when a {@link Device} * Adds the listener to the collection of listeners who will be notified when a {@link IDevice}
* is connected, disconnected, or when its properties or its {@link Client} list changed, * is connected, disconnected, or when its properties or its {@link Client} list changed,
* by sending it one of the messages defined in the {@link IDeviceChangeListener} interface. * by sending it one of the messages defined in the {@link IDeviceChangeListener} interface.
* @param listener The listener which should be notified. * @param listener The listener which should be notified.
@@ -406,7 +406,7 @@ public final class AndroidDebugBridge {
/** /**
* Removes the listener from the collection of listeners who will be notified when a * Removes the listener from the collection of listeners who will be notified when a
* {@link Device} is connected, disconnected, or when its properties or its {@link Client} * {@link IDevice} is connected, disconnected, or when its properties or its {@link Client}
* list changed. * list changed.
* @param listener The listener which should no longer be notified. * @param listener The listener which should no longer be notified.
*/ */
@@ -446,23 +446,23 @@ public final class AndroidDebugBridge {
* Returns the devices. * Returns the devices.
* @see #hasInitialDeviceList() * @see #hasInitialDeviceList()
*/ */
public Device[] getDevices() { public IDevice[] getDevices() {
synchronized (sLock) { synchronized (sLock) {
if (mDeviceMonitor != null) { if (mDeviceMonitor != null) {
return mDeviceMonitor.getDevices(); return mDeviceMonitor.getDevices();
} }
} }
return new Device[0]; return new IDevice[0];
} }
/** /**
* Returns whether the bridge has acquired the initial list from adb after being created. * Returns whether the bridge has acquired the initial list from adb after being created.
* <p/>Calling {@link #getDevices()} right after {@link #createBridge(String, boolean)} will * <p/>Calling {@link #getDevices()} right after {@link #createBridge(String, boolean)} will
* generally result in an empty list. This is due to the internal asynchronous communication * generally result in an empty list. This is due to the internal asynchronous communication
* mechanism with <code>adb</code> that does not guarantee that the {@link Device} list has been * mechanism with <code>adb</code> that does not guarantee that the {@link IDevice} list has been
* built before the call to {@link #getDevices()}. * built before the call to {@link #getDevices()}.
* <p/>The recommended way to get the list of {@link Device} objects is to create a * <p/>The recommended way to get the list of {@link IDevice} objects is to create a
* {@link IDeviceChangeListener} object. * {@link IDeviceChangeListener} object.
*/ */
public boolean hasInitialDeviceList() { public boolean hasInitialDeviceList() {
@@ -719,19 +719,19 @@ public final class AndroidDebugBridge {
} }
/** /**
* Notify the listener of a new {@link Device}. * Notify the listener of a new {@link IDevice}.
* <p/> * <p/>
* The notification of the listeners is done in a synchronized block. It is important to * The notification of the listeners is done in a synchronized block. It is important to
* expect the listeners to potentially access various methods of {@link Device} as well as * expect the listeners to potentially access various methods of {@link IDevice} as well as
* {@link #getDevices()} which use internal locks. * {@link #getDevices()} which use internal locks.
* <p/> * <p/>
* For this reason, any call to this method from a method of {@link DeviceMonitor}, * For this reason, any call to this method from a method of {@link DeviceMonitor},
* {@link Device} which is also inside a synchronized block, should first synchronize on * {@link IDevice} which is also inside a synchronized block, should first synchronize on
* the {@link AndroidDebugBridge} lock. Access to this lock is done through {@link #getLock()}. * the {@link AndroidDebugBridge} lock. Access to this lock is done through {@link #getLock()}.
* @param device the new <code>Device</code>. * @param device the new <code>IDevice</code>.
* @see #getLock() * @see #getLock()
*/ */
void deviceConnected(Device device) { void deviceConnected(IDevice device) {
// because the listeners could remove themselves from the list while processing // because the listeners could remove themselves from the list while processing
// their event callback, we make a copy of the list and iterate on it instead of // their event callback, we make a copy of the list and iterate on it instead of
// the main list. // the main list.
@@ -755,19 +755,19 @@ public final class AndroidDebugBridge {
} }
/** /**
* Notify the listener of a disconnected {@link Device}. * Notify the listener of a disconnected {@link IDevice}.
* <p/> * <p/>
* The notification of the listeners is done in a synchronized block. It is important to * The notification of the listeners is done in a synchronized block. It is important to
* expect the listeners to potentially access various methods of {@link Device} as well as * expect the listeners to potentially access various methods of {@link IDevice} as well as
* {@link #getDevices()} which use internal locks. * {@link #getDevices()} which use internal locks.
* <p/> * <p/>
* For this reason, any call to this method from a method of {@link DeviceMonitor}, * For this reason, any call to this method from a method of {@link DeviceMonitor},
* {@link Device} which is also inside a synchronized block, should first synchronize on * {@link IDevice} which is also inside a synchronized block, should first synchronize on
* the {@link AndroidDebugBridge} lock. Access to this lock is done through {@link #getLock()}. * the {@link AndroidDebugBridge} lock. Access to this lock is done through {@link #getLock()}.
* @param device the disconnected <code>Device</code>. * @param device the disconnected <code>IDevice</code>.
* @see #getLock() * @see #getLock()
*/ */
void deviceDisconnected(Device device) { void deviceDisconnected(IDevice device) {
// because the listeners could remove themselves from the list while processing // because the listeners could remove themselves from the list while processing
// their event callback, we make a copy of the list and iterate on it instead of // their event callback, we make a copy of the list and iterate on it instead of
// the main list. // the main list.
@@ -791,19 +791,19 @@ public final class AndroidDebugBridge {
} }
/** /**
* Notify the listener of a modified {@link Device}. * Notify the listener of a modified {@link IDevice}.
* <p/> * <p/>
* The notification of the listeners is done in a synchronized block. It is important to * The notification of the listeners is done in a synchronized block. It is important to
* expect the listeners to potentially access various methods of {@link Device} as well as * expect the listeners to potentially access various methods of {@link IDevice} as well as
* {@link #getDevices()} which use internal locks. * {@link #getDevices()} which use internal locks.
* <p/> * <p/>
* For this reason, any call to this method from a method of {@link DeviceMonitor}, * For this reason, any call to this method from a method of {@link DeviceMonitor},
* {@link Device} which is also inside a synchronized block, should first synchronize on * {@link IDevice} which is also inside a synchronized block, should first synchronize on
* the {@link AndroidDebugBridge} lock. Access to this lock is done through {@link #getLock()}. * the {@link AndroidDebugBridge} lock. Access to this lock is done through {@link #getLock()}.
* @param device the modified <code>Device</code>. * @param device the modified <code>IDevice</code>.
* @see #getLock() * @see #getLock()
*/ */
void deviceChanged(Device device, int changeMask) { void deviceChanged(IDevice device, int changeMask) {
// because the listeners could remove themselves from the list while processing // because the listeners could remove themselves from the list while processing
// their event callback, we make a copy of the list and iterate on it instead of // their event callback, we make a copy of the list and iterate on it instead of
// the main list. // the main list.
@@ -830,11 +830,11 @@ public final class AndroidDebugBridge {
* Notify the listener of a modified {@link Client}. * Notify the listener of a modified {@link Client}.
* <p/> * <p/>
* The notification of the listeners is done in a synchronized block. It is important to * The notification of the listeners is done in a synchronized block. It is important to
* expect the listeners to potentially access various methods of {@link Device} as well as * expect the listeners to potentially access various methods of {@link IDevice} as well as
* {@link #getDevices()} which use internal locks. * {@link #getDevices()} which use internal locks.
* <p/> * <p/>
* For this reason, any call to this method from a method of {@link DeviceMonitor}, * For this reason, any call to this method from a method of {@link DeviceMonitor},
* {@link Device} which is also inside a synchronized block, should first synchronize on * {@link IDevice} which is also inside a synchronized block, should first synchronize on
* the {@link AndroidDebugBridge} lock. Access to this lock is done through {@link #getLock()}. * the {@link AndroidDebugBridge} lock. Access to this lock is done through {@link #getLock()}.
* @param device the modified <code>Client</code>. * @param device the modified <code>Client</code>.
* @param changeMask the mask indicating what changed in the <code>Client</code> * @param changeMask the mask indicating what changed in the <code>Client</code>

View File

@@ -199,7 +199,7 @@ abstract class ChunkHandler {
protected static Client checkDebuggerPortForAppName(Client client, String appName) { protected static Client checkDebuggerPortForAppName(Client client, String appName) {
IDebugPortProvider provider = DebugPortManager.getProvider(); IDebugPortProvider provider = DebugPortManager.getProvider();
if (provider != null) { if (provider != null) {
Device device = client.getDevice(); Device device = client.getDeviceImpl();
int newPort = provider.getPort(device, appName); int newPort = provider.getPort(device, appName);
if (newPort != IDebugPortProvider.NO_STATIC_PORT && if (newPort != IDebugPortProvider.NO_STATIC_PORT &&

View File

@@ -147,9 +147,15 @@ public class Client {
} }
/** /**
* Returns the {@link Device} on which this Client is running. * Returns the {@link IDevice} on which this Client is running.
*/ */
public Device getDevice() { public IDevice getDevice() {
return mDevice;
}
/** Returns the {@link Device} on which this Client is running.
*/
Device getDeviceImpl() {
return mDevice; return mDevice;
} }

View File

@@ -48,7 +48,7 @@ public class DebugPortManager {
* @return The non-random debugger port or {@link #NO_STATIC_PORT} if the {@link Client} * @return The non-random debugger port or {@link #NO_STATIC_PORT} if the {@link Client}
* should use the automatic debugger port provider. * should use the automatic debugger port provider.
*/ */
public int getPort(Device device, String appName); public int getPort(IDevice device, String appName);
} }
private static IDebugPortProvider sProvider = null; private static IDebugPortProvider sProvider = null;

View File

@@ -16,7 +16,6 @@
package com.android.ddmlib; package com.android.ddmlib;
import com.android.ddmlib.Client;
import com.android.ddmlib.log.LogReceiver; import com.android.ddmlib.log.LogReceiver;
import java.io.IOException; import java.io.IOException;
@@ -30,50 +29,20 @@ import java.util.Map;
/** /**
* A Device. It can be a physical device or an emulator. * A Device. It can be a physical device or an emulator.
*
* TODO: make this class package-protected, and shift all callers to use IDevice
*/ */
public final class Device implements IDevice { final class Device implements IDevice {
/**
* The state of a device.
*/
public static enum DeviceState {
BOOTLOADER("bootloader"), //$NON-NLS-1$
OFFLINE("offline"), //$NON-NLS-1$
ONLINE("device"); //$NON-NLS-1$
private String mState;
DeviceState(String state) {
mState = state;
}
/**
* Returns a {@link DeviceState} from the string returned by <code>adb devices</code>.
* @param state the device state.
* @return a {@link DeviceState} object or <code>null</code> if the state is unknown.
*/
public static DeviceState getState(String state) {
for (DeviceState deviceState : values()) {
if (deviceState.mState.equals(state)) {
return deviceState;
}
}
return null;
}
}
/** Emulator Serial Number regexp. */ /** Emulator Serial Number regexp. */
final static String RE_EMULATOR_SN = "emulator-(\\d+)"; //$NON-NLS-1$ final static String RE_EMULATOR_SN = "emulator-(\\d+)"; //$NON-NLS-1$
/** Serial number of the device */ /** Serial number of the device */
String serialNumber = null; private String mSerialNumber = null;
/** Name of the AVD */ /** Name of the AVD */
String mAvdName = null; private String mAvdName = null;
/** State of the device. */ /** State of the device. */
DeviceState state = null; private DeviceState mState = null;
/** Device properties. */ /** Device properties. */
private final Map<String, String> mProperties = new HashMap<String, String>(); private final Map<String, String> mProperties = new HashMap<String, String>();
@@ -91,22 +60,42 @@ public final class Device implements IDevice {
* @see com.android.ddmlib.IDevice#getSerialNumber() * @see com.android.ddmlib.IDevice#getSerialNumber()
*/ */
public String getSerialNumber() { public String getSerialNumber() {
return serialNumber; return mSerialNumber;
} }
/** {@inheritDoc} */
public String getAvdName() { public String getAvdName() {
return mAvdName; return mAvdName;
} }
/**
* Sets the name of the AVD
*/
void setAvdName(String avdName) {
if (isEmulator() == false) {
throw new IllegalArgumentException(
"Cannot set the AVD name of the device is not an emulator");
}
mAvdName = avdName;
}
/* /*
* (non-Javadoc) * (non-Javadoc)
* @see com.android.ddmlib.IDevice#getState() * @see com.android.ddmlib.IDevice#getState()
*/ */
public DeviceState getState() { public DeviceState getState() {
return state; return mState;
} }
/**
* Changes the state of the device.
*/
void setState(DeviceState state) {
mState = state;
}
/* /*
* (non-Javadoc) * (non-Javadoc)
* @see com.android.ddmlib.IDevice#getProperties() * @see com.android.ddmlib.IDevice#getProperties()
@@ -134,7 +123,7 @@ public final class Device implements IDevice {
@Override @Override
public String toString() { public String toString() {
return serialNumber; return mSerialNumber;
} }
/* /*
@@ -142,7 +131,7 @@ public final class Device implements IDevice {
* @see com.android.ddmlib.IDevice#isOnline() * @see com.android.ddmlib.IDevice#isOnline()
*/ */
public boolean isOnline() { public boolean isOnline() {
return state == DeviceState.ONLINE; return mState == DeviceState.ONLINE;
} }
/* /*
@@ -150,7 +139,7 @@ public final class Device implements IDevice {
* @see com.android.ddmlib.IDevice#isEmulator() * @see com.android.ddmlib.IDevice#isEmulator()
*/ */
public boolean isEmulator() { public boolean isEmulator() {
return serialNumber.matches(RE_EMULATOR_SN); return mSerialNumber.matches(RE_EMULATOR_SN);
} }
/* /*
@@ -158,7 +147,7 @@ public final class Device implements IDevice {
* @see com.android.ddmlib.IDevice#isOffline() * @see com.android.ddmlib.IDevice#isOffline()
*/ */
public boolean isOffline() { public boolean isOffline() {
return state == DeviceState.OFFLINE; return mState == DeviceState.OFFLINE;
} }
/* /*
@@ -166,7 +155,7 @@ public final class Device implements IDevice {
* @see com.android.ddmlib.IDevice#isBootLoader() * @see com.android.ddmlib.IDevice#isBootLoader()
*/ */
public boolean isBootLoader() { public boolean isBootLoader() {
return state == DeviceState.BOOTLOADER; return mState == DeviceState.BOOTLOADER;
} }
/* /*
@@ -305,8 +294,10 @@ public final class Device implements IDevice {
} }
Device(DeviceMonitor monitor) { Device(DeviceMonitor monitor, String serialNumber, DeviceState deviceState) {
mMonitor = monitor; mMonitor = monitor;
mSerialNumber = serialNumber;
mState = deviceState;
} }
DeviceMonitor getMonitor() { DeviceMonitor getMonitor() {

View File

@@ -18,7 +18,7 @@ package com.android.ddmlib;
import com.android.ddmlib.AdbHelper.AdbResponse; import com.android.ddmlib.AdbHelper.AdbResponse;
import com.android.ddmlib.DebugPortManager.IDebugPortProvider; import com.android.ddmlib.DebugPortManager.IDebugPortProvider;
import com.android.ddmlib.Device.DeviceState; import com.android.ddmlib.IDevice.DeviceState;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
@@ -289,9 +289,8 @@ final class DeviceMonitor {
String[] param = d.split("\t"); // $NON-NLS-1$ String[] param = d.split("\t"); // $NON-NLS-1$
if (param.length == 2) { if (param.length == 2) {
// new adb uses only serial numbers to identify devices // new adb uses only serial numbers to identify devices
Device device = new Device(this); Device device = new Device(this, param[0] /*serialnumber*/,
device.serialNumber = param[0]; DeviceState.getState(param[1]));
device.state = DeviceState.getState(param[1]);
//add the device to the list //add the device to the list
list.add(device); list.add(device);
@@ -329,12 +328,12 @@ final class DeviceMonitor {
for (int dd = 0 ; dd < count ; dd++) { for (int dd = 0 ; dd < count ; dd++) {
Device newDevice = newList.get(dd); Device newDevice = newList.get(dd);
// see if it matches in id and serial number. // see if it matches in id and serial number.
if (newDevice.serialNumber.equals(device.serialNumber)) { if (newDevice.getSerialNumber().equals(device.getSerialNumber())) {
foundMatch = true; foundMatch = true;
// update the state if needed. // update the state if needed.
if (device.state != newDevice.state) { if (device.getState() != newDevice.getState()) {
device.state = newDevice.state; device.setState(newDevice.getState());
device.update(Device.CHANGE_STATE); device.update(Device.CHANGE_STATE);
// if the device just got ready/online, we need to start // if the device just got ready/online, we need to start
@@ -344,7 +343,7 @@ final class DeviceMonitor {
if (startMonitoringDevice(device) == false) { if (startMonitoringDevice(device) == false) {
Log.e("DeviceMonitor", Log.e("DeviceMonitor",
"Failed to start monitoring " "Failed to start monitoring "
+ device.serialNumber); + device.getSerialNumber());
} }
} }
@@ -424,7 +423,7 @@ final class DeviceMonitor {
if (device.isEmulator()) { if (device.isEmulator()) {
EmulatorConsole console = EmulatorConsole.getConsole(device); EmulatorConsole console = EmulatorConsole.getConsole(device);
if (console != null) { if (console != null) {
device.mAvdName = console.getAvdName(); device.setAvdName(console.getAvdName());
} }
} }
} catch (IOException e) { } catch (IOException e) {
@@ -510,7 +509,7 @@ final class DeviceMonitor {
MonitorThread monitorThread = MonitorThread.getInstance(); MonitorThread monitorThread = MonitorThread.getInstance();
for (Client client : clients) { for (Client client : clients) {
Device device = client.getDevice(); Device device = client.getDeviceImpl();
int pid = client.getClientData().getPid(); int pid = client.getClientData().getPid();
monitorThread.dropClient(client, false /* notify */); monitorThread.dropClient(client, false /* notify */);

View File

@@ -202,9 +202,9 @@ public final class EmulatorConsole {
* @param d The device that the console links to. * @param d The device that the console links to.
* @return an <code>EmulatorConsole</code> object or <code>null</code> if the connection failed. * @return an <code>EmulatorConsole</code> object or <code>null</code> if the connection failed.
*/ */
public static synchronized EmulatorConsole getConsole(Device d) { public static synchronized EmulatorConsole getConsole(IDevice d) {
// we need to make sure that the device is an emulator // we need to make sure that the device is an emulator
Matcher m = sEmulatorRegexp.matcher(d.serialNumber); Matcher m = sEmulatorRegexp.matcher(d.getSerialNumber());
if (m.matches()) { if (m.matches()) {
// get the port number. This is the console port. // get the port number. This is the console port.
int port; int port;

View File

@@ -16,7 +16,6 @@
package com.android.ddmlib; package com.android.ddmlib;
import com.android.ddmlib.Device.DeviceState;
import com.android.ddmlib.log.LogReceiver; import com.android.ddmlib.log.LogReceiver;
import java.io.IOException; import java.io.IOException;
@@ -40,6 +39,35 @@ public interface IDevice {
/** Device change bit mask: build info change. */ /** Device change bit mask: build info change. */
public static final int CHANGE_BUILD_INFO = 0x0004; public static final int CHANGE_BUILD_INFO = 0x0004;
/**
* The state of a device.
*/
public static enum DeviceState {
BOOTLOADER("bootloader"), //$NON-NLS-1$
OFFLINE("offline"), //$NON-NLS-1$
ONLINE("device"); //$NON-NLS-1$
private String mState;
DeviceState(String state) {
mState = state;
}
/**
* Returns a {@link DeviceState} from the string returned by <code>adb devices</code>.
* @param state the device state.
* @return a {@link DeviceState} object or <code>null</code> if the state is unknown.
*/
public static DeviceState getState(String state) {
for (DeviceState deviceState : values()) {
if (deviceState.mState.equals(state)) {
return deviceState;
}
}
return null;
}
}
/** /**
* Returns the serial number of the device. * Returns the serial number of the device.
*/ */

View File

@@ -551,13 +551,13 @@ final class MonitorThread extends Thread {
// we should drop the client, but also attempt to reopen it. // we should drop the client, but also attempt to reopen it.
// This is done by the DeviceMonitor. // This is done by the DeviceMonitor.
client.getDevice().getMonitor().addClientToDropAndReopen(client, client.getDeviceImpl().getMonitor().addClientToDropAndReopen(client,
IDebugPortProvider.NO_STATIC_PORT); IDebugPortProvider.NO_STATIC_PORT);
} else { } else {
Log.i("ddms", " (recycling client connection as well)"); Log.i("ddms", " (recycling client connection as well)");
// we should drop the client, but also attempt to reopen it. // we should drop the client, but also attempt to reopen it.
// This is done by the DeviceMonitor. // This is done by the DeviceMonitor.
client.getDevice().getMonitor().addClientToDropAndReopen(client, client.getDeviceImpl().getMonitor().addClientToDropAndReopen(client,
IDebugPortProvider.NO_STATIC_PORT); IDebugPortProvider.NO_STATIC_PORT);
} }
} }

View File

@@ -16,7 +16,7 @@
package com.android.ddmlib.log; package com.android.ddmlib.log;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log; import com.android.ddmlib.Log;
import com.android.ddmlib.MultiLineReceiver; import com.android.ddmlib.MultiLineReceiver;
import com.android.ddmlib.log.EventContainer.EventValueType; import com.android.ddmlib.log.EventContainer.EventValueType;
@@ -82,7 +82,7 @@ public final class EventLogParser {
* @param device The device. * @param device The device.
* @return <code>true</code> if success, <code>false</code> if failure or cancellation. * @return <code>true</code> if success, <code>false</code> if failure or cancellation.
*/ */
public boolean init(Device device) { public boolean init(IDevice device) {
// read the event tag map file on the device. // read the event tag map file on the device.
try { try {
device.executeShellCommand("cat " + EVENT_TAG_MAP_FILE, //$NON-NLS-1$ device.executeShellCommand("cat " + EVENT_TAG_MAP_FILE, //$NON-NLS-1$

View File

@@ -22,7 +22,6 @@ import com.android.ddmlib.IDevice;
import com.android.ddmlib.IShellOutputReceiver; import com.android.ddmlib.IShellOutputReceiver;
import com.android.ddmlib.RawImage; import com.android.ddmlib.RawImage;
import com.android.ddmlib.SyncService; import com.android.ddmlib.SyncService;
import com.android.ddmlib.Device.DeviceState;
import com.android.ddmlib.log.LogReceiver; import com.android.ddmlib.log.LogReceiver;
import java.io.IOException; import java.io.IOException;

View File

@@ -20,11 +20,11 @@ import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Client; import com.android.ddmlib.Client;
import com.android.ddmlib.ClientData; import com.android.ddmlib.ClientData;
import com.android.ddmlib.DdmPreferences; import com.android.ddmlib.DdmPreferences;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.AndroidDebugBridge.IClientChangeListener; import com.android.ddmlib.AndroidDebugBridge.IClientChangeListener;
import com.android.ddmlib.AndroidDebugBridge.IDebugBridgeChangeListener; import com.android.ddmlib.AndroidDebugBridge.IDebugBridgeChangeListener;
import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener; import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener;
import com.android.ddmlib.Device.DeviceState; import com.android.ddmlib.IDevice.DeviceState;
import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ILabelProviderListener;
@@ -76,7 +76,7 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
public final static String ICON_HALT = "halt.png"; //$NON-NLS-1$ public final static String ICON_HALT = "halt.png"; //$NON-NLS-1$
public final static String ICON_GC = "gc.png"; //$NON-NLS-1$ public final static String ICON_GC = "gc.png"; //$NON-NLS-1$
private Device mCurrentDevice; private IDevice mCurrentDevice;
private Client mCurrentClient; private Client mCurrentClient;
private Tree mTree; private Tree mTree;
@@ -93,7 +93,7 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
private final ArrayList<IUiSelectionListener> mListeners = new ArrayList<IUiSelectionListener>(); private final ArrayList<IUiSelectionListener> mListeners = new ArrayList<IUiSelectionListener>();
private final ArrayList<Device> mDevicesToExpand = new ArrayList<Device>(); private final ArrayList<IDevice> mDevicesToExpand = new ArrayList<IDevice>();
private IImageLoader mLoader; private IImageLoader mLoader;
@@ -102,13 +102,13 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
/** /**
* A Content provider for the {@link TreeViewer}. * A Content provider for the {@link TreeViewer}.
* <p/> * <p/>
* The input is a {@link AndroidDebugBridge}. First level elements are {@link Device} objects, * The input is a {@link AndroidDebugBridge}. First level elements are {@link IDevice} objects,
* and second level elements are {@link Client} object. * and second level elements are {@link Client} object.
*/ */
private class ContentProvider implements ITreeContentProvider { private class ContentProvider implements ITreeContentProvider {
public Object[] getChildren(Object parentElement) { public Object[] getChildren(Object parentElement) {
if (parentElement instanceof Device) { if (parentElement instanceof IDevice) {
return ((Device)parentElement).getClients(); return ((IDevice)parentElement).getClients();
} }
return new Object[0]; return new Object[0];
} }
@@ -121,8 +121,8 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
} }
public boolean hasChildren(Object element) { public boolean hasChildren(Object element) {
if (element instanceof Device) { if (element instanceof IDevice) {
return ((Device)element).hasClients(); return ((IDevice)element).hasClients();
} }
// Clients never have children. // Clients never have children.
@@ -147,13 +147,13 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
/** /**
* A Label Provider for the {@link TreeViewer} in {@link DevicePanel}. It provides * A Label Provider for the {@link TreeViewer} in {@link DevicePanel}. It provides
* labels and images for {@link Device} and {@link Client} objects. * labels and images for {@link IDevice} and {@link Client} objects.
*/ */
private class LabelProvider implements ITableLabelProvider { private class LabelProvider implements ITableLabelProvider {
public Image getColumnImage(Object element, int columnIndex) { public Image getColumnImage(Object element, int columnIndex) {
if (columnIndex == DEVICE_COL_SERIAL && element instanceof Device) { if (columnIndex == DEVICE_COL_SERIAL && element instanceof IDevice) {
Device device = (Device)element; IDevice device = (IDevice)element;
if (device.isEmulator()) { if (device.isEmulator()) {
return mEmulatorImage; return mEmulatorImage;
} }
@@ -192,17 +192,17 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
} }
public String getColumnText(Object element, int columnIndex) { public String getColumnText(Object element, int columnIndex) {
if (element instanceof Device) { if (element instanceof IDevice) {
Device device = (Device)element; IDevice device = (IDevice)element;
switch (columnIndex) { switch (columnIndex) {
case DEVICE_COL_SERIAL: case DEVICE_COL_SERIAL:
return device.getSerialNumber(); return device.getSerialNumber();
case DEVICE_COL_STATE: case DEVICE_COL_STATE:
return getStateString(device); return getStateString(device);
case DEVICE_COL_BUILD: { case DEVICE_COL_BUILD: {
String version = device.getProperty(Device.PROP_BUILD_VERSION); String version = device.getProperty(IDevice.PROP_BUILD_VERSION);
if (version != null) { if (version != null) {
String debuggable = device.getProperty(Device.PROP_DEBUGGABLE); String debuggable = device.getProperty(IDevice.PROP_DEBUGGABLE);
if (device.isEmulator()) { if (device.isEmulator()) {
String avdName = device.getAvdName(); String avdName = device.getAvdName();
if (avdName == null) { if (avdName == null) {
@@ -279,15 +279,15 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
/** /**
* Classes which implement this interface provide methods that deals * Classes which implement this interface provide methods that deals
* with {@link Device} and {@link Client} selection changes coming from the ui. * with {@link IDevice} and {@link Client} selection changes coming from the ui.
*/ */
public interface IUiSelectionListener { public interface IUiSelectionListener {
/** /**
* Sent when a new {@link Device} and {@link Client} are selected. * Sent when a new {@link IDevice} and {@link Client} are selected.
* @param selectedDevice the selected device. If null, no devices are selected. * @param selectedDevice the selected device. If null, no devices are selected.
* @param selectedClient The selected client. If null, no clients are selected. * @param selectedClient The selected client. If null, no clients are selected.
*/ */
public void selectionChanged(Device selectedDevice, Client selectedClient); public void selectionChanged(IDevice selectedDevice, Client selectedClient);
} }
/** /**
@@ -371,7 +371,7 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
@Override @Override
protected void postCreation() { protected void postCreation() {
// ask for notification of changes in AndroidDebugBridge (a new one is created when // ask for notification of changes in AndroidDebugBridge (a new one is created when
// adb is restarted from a different location), Device and Client objects. // adb is restarted from a different location), IDevice and Client objects.
AndroidDebugBridge.addDebugBridgeChangeListener(this); AndroidDebugBridge.addDebugBridgeChangeListener(this);
AndroidDebugBridge.addDeviceChangeListener(this); AndroidDebugBridge.addDeviceChangeListener(this);
AndroidDebugBridge.addClientChangeListener(this); AndroidDebugBridge.addClientChangeListener(this);
@@ -391,10 +391,10 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
} }
/** /**
* Returns the selected {@link Device}. If a {@link Client} is selected, it returns the * Returns the selected {@link IDevice}. If a {@link Client} is selected, it returns the
* Device object containing the client. * IDevice object containing the client.
*/ */
public Device getSelectedDevice() { public IDevice getSelectedDevice() {
return mCurrentDevice; return mCurrentDevice;
} }
@@ -476,9 +476,9 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
* This is sent from a non UI thread. * This is sent from a non UI thread.
* @param device the new device. * @param device the new device.
* *
* @see IDeviceChangeListener#deviceConnected(Device) * @see IDeviceChangeListener#deviceConnected(IDevice)
*/ */
public void deviceConnected(Device device) { public void deviceConnected(IDevice device) {
exec(new Runnable() { exec(new Runnable() {
public void run() { public void run() {
if (mTree.isDisposed() == false) { if (mTree.isDisposed() == false) {
@@ -511,9 +511,9 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
* This is sent from a non UI thread. * This is sent from a non UI thread.
* @param device the new device. * @param device the new device.
* *
* @see IDeviceChangeListener#deviceDisconnected(Device) * @see IDeviceChangeListener#deviceDisconnected(IDevice)
*/ */
public void deviceDisconnected(Device device) { public void deviceDisconnected(IDevice device) {
deviceConnected(device); deviceConnected(device);
// just in case, we remove it from the list of devices to expand. // just in case, we remove it from the list of devices to expand.
@@ -529,9 +529,9 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
* @param device the device that was updated. * @param device the device that was updated.
* @param changeMask the mask indicating what changed. * @param changeMask the mask indicating what changed.
* *
* @see IDeviceChangeListener#deviceChanged(Device) * @see IDeviceChangeListener#deviceChanged(IDevice)
*/ */
public void deviceChanged(final Device device, int changeMask) { public void deviceChanged(final IDevice device, int changeMask) {
boolean expand = false; boolean expand = false;
synchronized (mDevicesToExpand) { synchronized (mDevicesToExpand) {
int index = mDevicesToExpand.indexOf(device); int index = mDevicesToExpand.indexOf(device);
@@ -550,7 +550,7 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
// client of this particular device was killed. In this case, we'll need to // client of this particular device was killed. In this case, we'll need to
// manually reselect the device. // manually reselect the device.
Device selectedDevice = getSelectedDevice(); IDevice selectedDevice = getSelectedDevice();
// refresh the device // refresh the device
mTreeViewer.refresh(device); mTreeViewer.refresh(device);
@@ -606,7 +606,7 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
// make sure the device is expanded. Normally the setSelection below // make sure the device is expanded. Normally the setSelection below
// will auto expand, but the children of device may not already exist // will auto expand, but the children of device may not already exist
// at this time. Forcing an expand will make the TreeViewer create them. // at this time. Forcing an expand will make the TreeViewer create them.
Device device = client.getDevice(); IDevice device = client.getDevice();
if (mTreeViewer.getExpandedState(device) == false) { if (mTreeViewer.getExpandedState(device) == false) {
mTreeViewer.setExpandedState(device, true); mTreeViewer.setExpandedState(device, true);
} }
@@ -676,7 +676,7 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
* Returns a display string representing the state of the device. * Returns a display string representing the state of the device.
* @param d the device * @param d the device
*/ */
private static String getStateString(Device d) { private static String getStateString(IDevice d) {
DeviceState deviceState = d.getState(); DeviceState deviceState = d.getState();
if (deviceState == DeviceState.ONLINE) { if (deviceState == DeviceState.ONLINE) {
return "Online"; return "Online";
@@ -710,22 +710,22 @@ public final class DevicePanel extends Panel implements IDebugBridgeChangeListen
TreeItem[] items = mTree.getSelection(); TreeItem[] items = mTree.getSelection();
Client client = null; Client client = null;
Device device = null; IDevice device = null;
if (items.length == 1) { if (items.length == 1) {
Object object = items[0].getData(); Object object = items[0].getData();
if (object instanceof Client) { if (object instanceof Client) {
client = (Client)object; client = (Client)object;
device = client.getDevice(); device = client.getDevice();
} else if (object instanceof Device) { } else if (object instanceof IDevice) {
device = (Device)object; device = (IDevice)object;
} }
} }
notifyListeners(device, client); notifyListeners(device, client);
} }
private void notifyListeners(Device selectedDevice, Client selectedClient) { private void notifyListeners(IDevice selectedDevice, Client selectedClient) {
if (selectedDevice != mCurrentDevice || selectedClient != mCurrentClient) { if (selectedDevice != mCurrentDevice || selectedClient != mCurrentClient) {
mCurrentDevice = selectedDevice; mCurrentDevice = selectedDevice;
mCurrentClient = selectedClient; mCurrentClient = selectedClient;

View File

@@ -16,7 +16,7 @@
package com.android.ddmuilib; package com.android.ddmuilib;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.EmulatorConsole; import com.android.ddmlib.EmulatorConsole;
import com.android.ddmlib.EmulatorConsole.GsmMode; import com.android.ddmlib.EmulatorConsole.GsmMode;
import com.android.ddmlib.EmulatorConsole.GsmStatus; import com.android.ddmlib.EmulatorConsole.GsmStatus;
@@ -1039,7 +1039,7 @@ public class EmulatorControlPanel extends SelectionDependentPanel {
* Callback on device selection change. * Callback on device selection change.
* @param device the new selected device * @param device the new selected device
*/ */
public void handleNewDevice(Device device) { public void handleNewDevice(IDevice device) {
if (mParent.isDisposed()) { if (mParent.isDisposed()) {
return; return;
} }

View File

@@ -16,7 +16,7 @@
package com.android.ddmuilib; package com.android.ddmuilib;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log; import com.android.ddmlib.Log;
import com.android.ddmlib.RawImage; import com.android.ddmlib.RawImage;
@@ -47,7 +47,7 @@ public class ScreenShotDialog extends Dialog {
private Label mBusyLabel; private Label mBusyLabel;
private Label mImageLabel; private Label mImageLabel;
private Button mSave; private Button mSave;
private Device mDevice; private IDevice mDevice;
/** /**
@@ -66,9 +66,9 @@ public class ScreenShotDialog extends Dialog {
/** /**
* Prepare and display the dialog. * Prepare and display the dialog.
* @param device The {@link Device} from which to get the screenshot. * @param device The {@link IDevice} from which to get the screenshot.
*/ */
public void open(Device device) { public void open(IDevice device) {
mDevice = device; mDevice = device;
Shell parent = getParent(); Shell parent = getParent();

View File

@@ -17,20 +17,20 @@
package com.android.ddmuilib; package com.android.ddmuilib;
import com.android.ddmlib.Client; import com.android.ddmlib.Client;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
/** /**
* A Panel that requires {@link Device}/{@link Client} selection notifications. * A Panel that requires {@link Device}/{@link Client} selection notifications.
*/ */
public abstract class SelectionDependentPanel extends Panel { public abstract class SelectionDependentPanel extends Panel {
private Device mCurrentDevice = null; private IDevice mCurrentDevice = null;
private Client mCurrentClient = null; private Client mCurrentClient = null;
/** /**
* Returns the current {@link Device}. * Returns the current {@link Device}.
* @return the current device or null if none are selected. * @return the current device or null if none are selected.
*/ */
protected final Device getCurrentDevice() { protected final IDevice getCurrentDevice() {
return mCurrentDevice; return mCurrentDevice;
} }
@@ -46,7 +46,7 @@ public abstract class SelectionDependentPanel extends Panel {
* Sent when a new device is selected. * Sent when a new device is selected.
* @param selectedDevice the selected device. * @param selectedDevice the selected device.
*/ */
public final void deviceSelected(Device selectedDevice) { public final void deviceSelected(IDevice selectedDevice) {
if (selectedDevice != mCurrentDevice) { if (selectedDevice != mCurrentDevice) {
mCurrentDevice = selectedDevice; mCurrentDevice = selectedDevice;
deviceSelected(); deviceSelected();

View File

@@ -16,7 +16,7 @@
package com.android.ddmuilib.explorer; package com.android.ddmuilib.explorer;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.FileListingService; import com.android.ddmlib.FileListingService;
import com.android.ddmlib.IShellOutputReceiver; import com.android.ddmlib.IShellOutputReceiver;
import com.android.ddmlib.SyncService; import com.android.ddmlib.SyncService;
@@ -99,7 +99,7 @@ public class DeviceExplorer extends Panel {
private Image mPackageImage; private Image mPackageImage;
private Image mOtherImage; private Image mOtherImage;
private Device mCurrentDevice; private IDevice mCurrentDevice;
private String mDefaultSave; private String mDefaultSave;
@@ -631,7 +631,7 @@ public class DeviceExplorer extends Panel {
/** /**
* Sets the new device to explorer * Sets the new device to explorer
*/ */
public void switchDevice(final Device device) { public void switchDevice(final IDevice device) {
if (device != mCurrentDevice) { if (device != mCurrentDevice) {
mCurrentDevice = device; mCurrentDevice = device;
// now we change the input. but we need to do that in the // now we change the input. but we need to do that in the

View File

@@ -17,7 +17,7 @@
package com.android.ddmuilib.log.event; package com.android.ddmuilib.log.event;
import com.android.ddmlib.Client; import com.android.ddmlib.Client;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log; import com.android.ddmlib.Log;
import com.android.ddmlib.Log.LogLevel; import com.android.ddmlib.Log.LogLevel;
import com.android.ddmlib.log.EventContainer; import com.android.ddmlib.log.EventContainer;
@@ -80,7 +80,7 @@ public class EventLogPanel extends TablePanel implements ILogListener,
private IImageLoader mImageLoader; private IImageLoader mImageLoader;
private Device mCurrentLoggedDevice; private IDevice mCurrentLoggedDevice;
private String mCurrentLogFile; private String mCurrentLogFile;
private LogReceiver mCurrentLogReceiver; private LogReceiver mCurrentLogReceiver;
private EventLogParser mCurrentEventLogParser; private EventLogParser mCurrentEventLogParser;
@@ -407,7 +407,7 @@ public class EventLogPanel extends TablePanel implements ILogListener,
* Starts a new logcat and set mCurrentLogCat as the current receiver. * Starts a new logcat and set mCurrentLogCat as the current receiver.
* @param device the device to connect logcat to. * @param device the device to connect logcat to.
*/ */
private void startEventLog(final Device device) { private void startEventLog(final IDevice device) {
if (device == mCurrentLoggedDevice) { if (device == mCurrentLoggedDevice) {
return; return;
} }

View File

@@ -16,7 +16,7 @@
package com.android.ddmuilib.logcat; package com.android.ddmuilib.logcat;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log; import com.android.ddmlib.Log;
import com.android.ddmlib.MultiLineReceiver; import com.android.ddmlib.MultiLineReceiver;
import com.android.ddmlib.Log.LogLevel; import com.android.ddmlib.Log.LogLevel;
@@ -163,7 +163,7 @@ public class LogPanel extends SelectionDependentPanel {
private int mFilterMode = FILTER_NONE; private int mFilterMode = FILTER_NONE;
/** Device currently running logcat */ /** Device currently running logcat */
private Device mCurrentLoggedDevice = null; private IDevice mCurrentLoggedDevice = null;
private ICommonAction mDeleteFilterAction; private ICommonAction mDeleteFilterAction;
private ICommonAction mEditFilterAction; private ICommonAction mEditFilterAction;
@@ -481,7 +481,7 @@ public class LogPanel extends SelectionDependentPanel {
* Starts a new logcat and set mCurrentLogCat as the current receiver. * Starts a new logcat and set mCurrentLogCat as the current receiver.
* @param device the device to connect logcat to. * @param device the device to connect logcat to.
*/ */
public void startLogCat(final Device device) { public void startLogCat(final IDevice device) {
if (device == mCurrentLoggedDevice) { if (device == mCurrentLoggedDevice) {
return; return;
} }
@@ -928,7 +928,7 @@ public class LogPanel extends SelectionDependentPanel {
t.setLinesVisible(false); t.setLinesVisible(false);
if (mGlobalListener != null) { if (mGlobalListener != null) {
addTableToFocusListener(t); addTableToFocusListener(t);
} }
// create a controllistener that will handle the resizing of all the // create a controllistener that will handle the resizing of all the

View File

@@ -17,7 +17,7 @@
package com.android.dumpeventlog; package com.android.dumpeventlog;
import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log; import com.android.ddmlib.Log;
import com.android.ddmlib.Log.ILogOutput; import com.android.ddmlib.Log.ILogOutput;
import com.android.ddmlib.Log.LogLevel; import com.android.ddmlib.Log.LogLevel;
@@ -112,9 +112,9 @@ public class DumpEventLog {
} }
// now get the devices // now get the devices
Device[] devices = bridge.getDevices(); IDevice[] devices = bridge.getDevices();
for (Device device : devices) { for (IDevice device : devices) {
if (device.getSerialNumber().equals(args[0])) { if (device.getSerialNumber().equals(args[0])) {
try { try {
grabLogFrom(device, args[1]); grabLogFrom(device, args[1]);
@@ -133,7 +133,7 @@ public class DumpEventLog {
} }
} }
private static void grabLogFrom(Device device, String filePath) throws IOException { private static void grabLogFrom(IDevice device, String filePath) throws IOException {
LogWriter writer = new LogWriter(filePath); LogWriter writer = new LogWriter(filePath);
LogReceiver receiver = new LogReceiver(writer); LogReceiver receiver = new LogReceiver(writer);
writer.setReceiver(receiver); writer.setReceiver(receiver);

View File

@@ -19,7 +19,6 @@ package com.android.ide.eclipse.adt.internal.launch;
import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Client; import com.android.ddmlib.Client;
import com.android.ddmlib.ClientData; import com.android.ddmlib.ClientData;
import com.android.ddmlib.Device;
import com.android.ddmlib.IDevice; import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log; import com.android.ddmlib.Log;
import com.android.ddmlib.MultiLineReceiver; import com.android.ddmlib.MultiLineReceiver;
@@ -1381,9 +1380,9 @@ public final class AndroidLaunchController implements IDebugBridgeChangeListener
* This is sent from a non UI thread. * This is sent from a non UI thread.
* @param device the new device. * @param device the new device.
* *
* @see IDeviceChangeListener#deviceConnected(Device) * @see IDeviceChangeListener#deviceConnected(IDevice)
*/ */
public void deviceConnected(Device device) { public void deviceConnected(IDevice device) {
synchronized (sListLock) { synchronized (sListLock) {
// look if there's an app waiting for a device // look if there's an app waiting for a device
if (mWaitingForEmulatorLaunches.size() > 0) { if (mWaitingForEmulatorLaunches.size() > 0) {
@@ -1415,10 +1414,10 @@ public final class AndroidLaunchController implements IDebugBridgeChangeListener
* This is sent from a non UI thread. * This is sent from a non UI thread.
* @param device the new device. * @param device the new device.
* *
* @see IDeviceChangeListener#deviceDisconnected(Device) * @see IDeviceChangeListener#deviceDisconnected(IDevice)
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public void deviceDisconnected(Device device) { public void deviceDisconnected(IDevice device) {
// any pending launch on this device must be canceled. // any pending launch on this device must be canceled.
String message = "%1$s disconnected! Cancelling '%2$s'!"; String message = "%1$s disconnected! Cancelling '%2$s'!";
synchronized (sListLock) { synchronized (sListLock) {
@@ -1451,9 +1450,9 @@ public final class AndroidLaunchController implements IDebugBridgeChangeListener
* @param device the device that was updated. * @param device the device that was updated.
* @param changeMask the mask indicating what changed. * @param changeMask the mask indicating what changed.
* *
* @see IDeviceChangeListener#deviceChanged(Device, int) * @see IDeviceChangeListener#deviceChanged(IDevice, int)
*/ */
public void deviceChanged(Device device, int changeMask) { public void deviceChanged(IDevice device, int changeMask) {
// We could check if any starting device we care about is now ready, but we can wait for // We could check if any starting device we care about is now ready, but we can wait for
// its home app to show up, so... // its home app to show up, so...
} }

View File

@@ -18,10 +18,9 @@ package com.android.ide.eclipse.adt.internal.launch;
import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Client; import com.android.ddmlib.Client;
import com.android.ddmlib.Device;
import com.android.ddmlib.IDevice; import com.android.ddmlib.IDevice;
import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener; import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener;
import com.android.ddmlib.Device.DeviceState; import com.android.ddmlib.IDevice.DeviceState;
import com.android.ddmuilib.IImageLoader; import com.android.ddmuilib.IImageLoader;
import com.android.ddmuilib.ImageHelper; import com.android.ddmuilib.ImageHelper;
import com.android.ddmuilib.TableHelper; import com.android.ddmuilib.TableHelper;
@@ -99,7 +98,7 @@ public class DeviceChooserDialog extends Dialog implements IDeviceChangeListener
private boolean mDisableAvdSelectionChange = false; private boolean mDisableAvdSelectionChange = false;
/** /**
* Basic Content Provider for a table full of {@link Device} objects. The input is * Basic Content Provider for a table full of {@link IDevice} objects. The input is
* a {@link AndroidDebugBridge}. * a {@link AndroidDebugBridge}.
*/ */
private class ContentProvider implements IStructuredContentProvider { private class ContentProvider implements IStructuredContentProvider {
@@ -123,13 +122,13 @@ public class DeviceChooserDialog extends Dialog implements IDeviceChangeListener
/** /**
* A Label Provider for the {@link TableViewer} in {@link DeviceChooserDialog}. * A Label Provider for the {@link TableViewer} in {@link DeviceChooserDialog}.
* It provides labels and images for {@link Device} objects. * It provides labels and images for {@link IDevice} objects.
*/ */
private class LabelProvider implements ITableLabelProvider { private class LabelProvider implements ITableLabelProvider {
public Image getColumnImage(Object element, int columnIndex) { public Image getColumnImage(Object element, int columnIndex) {
if (element instanceof Device) { if (element instanceof IDevice) {
Device device = (Device)element; IDevice device = (IDevice)element;
switch (columnIndex) { switch (columnIndex) {
case 0: case 0:
return device.isEmulator() ? mEmulatorImage : mDeviceImage; return device.isEmulator() ? mEmulatorImage : mDeviceImage;
@@ -175,8 +174,8 @@ public class DeviceChooserDialog extends Dialog implements IDeviceChangeListener
} }
public String getColumnText(Object element, int columnIndex) { public String getColumnText(Object element, int columnIndex) {
if (element instanceof Device) { if (element instanceof IDevice) {
Device device = (Device)element; IDevice device = (IDevice)element;
switch (columnIndex) { switch (columnIndex) {
case 0: case 0:
return device.getSerialNumber(); return device.getSerialNumber();
@@ -514,7 +513,7 @@ public class DeviceChooserDialog extends Dialog implements IDeviceChangeListener
* Returns a display string representing the state of the device. * Returns a display string representing the state of the device.
* @param d the device * @param d the device
*/ */
private static String getStateString(Device d) { private static String getStateString(IDevice d) {
DeviceState deviceState = d.getState(); DeviceState deviceState = d.getState();
if (deviceState == DeviceState.ONLINE) { if (deviceState == DeviceState.ONLINE) {
return "Online"; return "Online";
@@ -533,9 +532,9 @@ public class DeviceChooserDialog extends Dialog implements IDeviceChangeListener
* This is sent from a non UI thread. * This is sent from a non UI thread.
* @param device the new device. * @param device the new device.
* *
* @see IDeviceChangeListener#deviceConnected(Device) * @see IDeviceChangeListener#deviceConnected(IDevice)
*/ */
public void deviceConnected(Device device) { public void deviceConnected(IDevice device) {
final DeviceChooserDialog dialog = this; final DeviceChooserDialog dialog = this;
exec(new Runnable() { exec(new Runnable() {
public void run() { public void run() {
@@ -565,9 +564,9 @@ public class DeviceChooserDialog extends Dialog implements IDeviceChangeListener
* This is sent from a non UI thread. * This is sent from a non UI thread.
* @param device the new device. * @param device the new device.
* *
* @see IDeviceChangeListener#deviceDisconnected(Device) * @see IDeviceChangeListener#deviceDisconnected(IDevice)
*/ */
public void deviceDisconnected(Device device) { public void deviceDisconnected(IDevice device) {
deviceConnected(device); deviceConnected(device);
} }
@@ -578,10 +577,10 @@ public class DeviceChooserDialog extends Dialog implements IDeviceChangeListener
* @param device the device that was updated. * @param device the device that was updated.
* @param changeMask the mask indicating what changed. * @param changeMask the mask indicating what changed.
* *
* @see IDeviceChangeListener#deviceChanged(Device, int) * @see IDeviceChangeListener#deviceChanged(IDevice, int)
*/ */
public void deviceChanged(final Device device, int changeMask) { public void deviceChanged(final IDevice device, int changeMask) {
if ((changeMask & (Device.CHANGE_STATE | Device.CHANGE_BUILD_INFO)) != 0) { if ((changeMask & (IDevice.CHANGE_STATE | IDevice.CHANGE_BUILD_INFO)) != 0) {
final DeviceChooserDialog dialog = this; final DeviceChooserDialog dialog = this;
exec(new Runnable() { exec(new Runnable() {
public void run() { public void run() {
@@ -663,15 +662,15 @@ public class DeviceChooserDialog extends Dialog implements IDeviceChangeListener
} else { } else {
int index = mDeviceTable.getSelectionIndex(); int index = mDeviceTable.getSelectionIndex();
Object data = mViewer.getElementAt(index); Object data = mViewer.getElementAt(index);
if (data instanceof Device) { if (data instanceof IDevice) {
handleSelection((Device)data); handleSelection((IDevice)data);
} else { } else {
handleSelection(null); handleSelection(null);
} }
} }
} }
private void handleSelection(Device device) { private void handleSelection(IDevice device) {
mResponse.setDeviceToUse(device); mResponse.setDeviceToUse(device);
enableOkButton(); enableOkButton();
} }
@@ -686,9 +685,9 @@ public class DeviceChooserDialog extends Dialog implements IDeviceChangeListener
if (mDeviceTable.getSelectionCount() == 0) { if (mDeviceTable.getSelectionCount() == 0) {
AndroidDebugBridge bridge = AndroidDebugBridge.getBridge(); AndroidDebugBridge bridge = AndroidDebugBridge.getBridge();
Device[] devices = bridge.getDevices(); IDevice[] devices = bridge.getDevices();
for (Device device : devices) { for (IDevice device : devices) {
Client[] clients = device.getClients(); Client[] clients = device.getClients();
for (Client client : clients) { for (Client client : clients) {
@@ -724,9 +723,9 @@ public class DeviceChooserDialog extends Dialog implements IDeviceChangeListener
// loop through all the Avd and put the one that are not running in the list. // loop through all the Avd and put the one that are not running in the list.
if (mFullAvdList != null) { if (mFullAvdList != null) {
Device[] devices = AndroidDebugBridge.getBridge().getDevices(); IDevice[] devices = AndroidDebugBridge.getBridge().getDevices();
avdLoop: for (AvdInfo info : mFullAvdList) { avdLoop: for (AvdInfo info : mFullAvdList) {
for (Device d : devices) { for (IDevice d : devices) {
if (info.getName().equals(d.getAvdName())) { if (info.getName().equals(d.getAvdName())) {
continue avdLoop; continue avdLoop;
} }

View File

@@ -17,7 +17,6 @@
package com.android.ide.eclipse.adt.internal.project; package com.android.ide.eclipse.adt.internal.project;
import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Device;
import com.android.ddmlib.IDevice; import com.android.ddmlib.IDevice;
import com.android.ddmlib.AndroidDebugBridge.IDebugBridgeChangeListener; import com.android.ddmlib.AndroidDebugBridge.IDebugBridgeChangeListener;
import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener; import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener;
@@ -138,7 +137,7 @@ public class ApkInstallManager implements IDeviceChangeListener, IDebugBridgeCha
* (non-Javadoc) * (non-Javadoc)
* @see com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener#deviceDisconnected(com.android.ddmlib.Device) * @see com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener#deviceDisconnected(com.android.ddmlib.Device)
*/ */
public void deviceDisconnected(Device device) { public void deviceDisconnected(IDevice device) {
synchronized (mInstallList) { synchronized (mInstallList) {
for (int i = 0 ; i < mInstallList.size() ;) { for (int i = 0 ; i < mInstallList.size() ;) {
ApkInstall install = mInstallList.get(i); ApkInstall install = mInstallList.get(i);
@@ -174,7 +173,7 @@ public class ApkInstallManager implements IDeviceChangeListener, IDebugBridgeCha
* (non-Javadoc) * (non-Javadoc)
* @see com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener#deviceChanged(com.android.ddmlib.Device, int) * @see com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener#deviceChanged(com.android.ddmlib.Device, int)
*/ */
public void deviceChanged(Device device, int changeMask) { public void deviceChanged(IDevice device, int changeMask) {
// nothing to do. // nothing to do.
} }
@@ -183,7 +182,7 @@ public class ApkInstallManager implements IDeviceChangeListener, IDebugBridgeCha
* (non-Javadoc) * (non-Javadoc)
* @see com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener#deviceConnected(com.android.ddmlib.Device) * @see com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener#deviceConnected(com.android.ddmlib.Device)
*/ */
public void deviceConnected(Device device) { public void deviceConnected(IDevice device) {
// nothing to do. // nothing to do.
} }

View File

@@ -19,7 +19,7 @@ package com.android.ide.eclipse.ddms;
import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Client; import com.android.ddmlib.Client;
import com.android.ddmlib.DdmPreferences; import com.android.ddmlib.DdmPreferences;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log; import com.android.ddmlib.Log;
import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener; import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener;
import com.android.ddmlib.Log.ILogOutput; import com.android.ddmlib.Log.ILogOutput;
@@ -77,7 +77,7 @@ public final class DdmsPlugin extends AbstractUIPlugin implements IDeviceChangeL
/** Image loader object */ /** Image loader object */
private ImageLoader mLoader; private ImageLoader mLoader;
private Device mCurrentDevice; private IDevice mCurrentDevice;
private Client mCurrentClient; private Client mCurrentClient;
private boolean mListeningToUiSelection = false; private boolean mListeningToUiSelection = false;
@@ -96,7 +96,7 @@ public final class DdmsPlugin extends AbstractUIPlugin implements IDeviceChangeL
/** /**
* Classes which implement this interface provide methods that deals * Classes which implement this interface provide methods that deals
* with {@link Device} and {@link Client} selectionchanges. * with {@link IDevice} and {@link Client} selectionchanges.
*/ */
public interface ISelectionListener { public interface ISelectionListener {
@@ -107,10 +107,10 @@ public final class DdmsPlugin extends AbstractUIPlugin implements IDeviceChangeL
public void selectionChanged(Client selectedClient); public void selectionChanged(Client selectedClient);
/** /**
* Sent when a new {@link Device} is selected. * Sent when a new {@link IDevice} is selected.
* @param selectedDevice the selected device. If null, no devices are selected. * @param selectedDevice the selected device. If null, no devices are selected.
*/ */
public void selectionChanged(Device selectedDevice); public void selectionChanged(IDevice selectedDevice);
} }
/** /**
@@ -365,9 +365,9 @@ public final class DdmsPlugin extends AbstractUIPlugin implements IDeviceChangeL
* This is sent from a non UI thread. * This is sent from a non UI thread.
* @param device the new device. * @param device the new device.
* *
* @see IDeviceChangeListener#deviceConnected(Device) * @see IDeviceChangeListener#deviceConnected(IDevice)
*/ */
public void deviceConnected(Device device) { public void deviceConnected(IDevice device) {
// if we are listening to selection coming from the ui, then we do nothing, as // if we are listening to selection coming from the ui, then we do nothing, as
// any change in the devices/clients, will be handled by the UI, and we'll receive // any change in the devices/clients, will be handled by the UI, and we'll receive
// selection notification through our implementation of IUiSelectionListener. // selection notification through our implementation of IUiSelectionListener.
@@ -384,9 +384,9 @@ public final class DdmsPlugin extends AbstractUIPlugin implements IDeviceChangeL
* This is sent from a non UI thread. * This is sent from a non UI thread.
* @param device the new device. * @param device the new device.
* *
* @see IDeviceChangeListener#deviceDisconnected(Device) * @see IDeviceChangeListener#deviceDisconnected(IDevice)
*/ */
public void deviceDisconnected(Device device) { public void deviceDisconnected(IDevice device) {
// if we are listening to selection coming from the ui, then we do nothing, as // if we are listening to selection coming from the ui, then we do nothing, as
// any change in the devices/clients, will be handled by the UI, and we'll receive // any change in the devices/clients, will be handled by the UI, and we'll receive
// selection notification through our implementation of IUiSelectionListener. // selection notification through our implementation of IUiSelectionListener.
@@ -397,16 +397,16 @@ public final class DdmsPlugin extends AbstractUIPlugin implements IDeviceChangeL
AndroidDebugBridge bridge = AndroidDebugBridge.getBridge(); AndroidDebugBridge bridge = AndroidDebugBridge.getBridge();
if (bridge != null) { if (bridge != null) {
// get the device list // get the device list
Device[] devices = bridge.getDevices(); IDevice[] devices = bridge.getDevices();
// check if we still have devices // check if we still have devices
if (devices.length == 0) { if (devices.length == 0) {
handleDefaultSelection((Device)null); handleDefaultSelection((IDevice)null);
} else { } else {
handleDefaultSelection(devices[0]); handleDefaultSelection(devices[0]);
} }
} else { } else {
handleDefaultSelection((Device)null); handleDefaultSelection((IDevice)null);
} }
} }
} }
@@ -419,9 +419,9 @@ public final class DdmsPlugin extends AbstractUIPlugin implements IDeviceChangeL
* @param device the device that was updated. * @param device the device that was updated.
* @param changeMask the mask indicating what changed. * @param changeMask the mask indicating what changed.
* *
* @see IDeviceChangeListener#deviceChanged(Device) * @see IDeviceChangeListener#deviceChanged(IDevice)
*/ */
public void deviceChanged(Device device, int changeMask) { public void deviceChanged(IDevice device, int changeMask) {
// if we are listening to selection coming from the ui, then we do nothing, as // if we are listening to selection coming from the ui, then we do nothing, as
// any change in the devices/clients, will be handled by the UI, and we'll receive // any change in the devices/clients, will be handled by the UI, and we'll receive
// selection notification through our implementation of IUiSelectionListener. // selection notification through our implementation of IUiSelectionListener.
@@ -453,11 +453,11 @@ public final class DdmsPlugin extends AbstractUIPlugin implements IDeviceChangeL
} }
/** /**
* Sent when a new {@link Device} and {@link Client} are selected. * Sent when a new {@link IDevice} and {@link Client} are selected.
* @param selectedDevice the selected device. If null, no devices are selected. * @param selectedDevice the selected device. If null, no devices are selected.
* @param selectedClient The selected client. If null, no clients are selected. * @param selectedClient The selected client. If null, no clients are selected.
*/ */
public synchronized void selectionChanged(Device selectedDevice, Client selectedClient) { public synchronized void selectionChanged(IDevice selectedDevice, Client selectedClient) {
if (mCurrentDevice != selectedDevice) { if (mCurrentDevice != selectedDevice) {
mCurrentDevice = selectedDevice; mCurrentDevice = selectedDevice;
@@ -478,10 +478,10 @@ public final class DdmsPlugin extends AbstractUIPlugin implements IDeviceChangeL
} }
/** /**
* Handles a default selection of a {@link Device} and {@link Client}. * Handles a default selection of a {@link IDevice} and {@link Client}.
* @param device the selected device * @param device the selected device
*/ */
private void handleDefaultSelection(final Device device) { private void handleDefaultSelection(final IDevice device) {
// because the listener expect to receive this from the UI thread, and this is called // because the listener expect to receive this from the UI thread, and this is called
// from the AndroidDebugBridge notifications, we need to run this in the UI thread. // from the AndroidDebugBridge notifications, we need to run this in the UI thread.
try { try {

View File

@@ -20,7 +20,7 @@ package com.android.ide.eclipse.ddms.views;
import com.android.ddmlib.Client; import com.android.ddmlib.Client;
import com.android.ddmlib.ClientData; import com.android.ddmlib.ClientData;
import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmuilib.DevicePanel; import com.android.ddmuilib.DevicePanel;
import com.android.ddmuilib.ScreenShotDialog; import com.android.ddmuilib.ScreenShotDialog;
import com.android.ddmuilib.DevicePanel.IUiSelectionListener; import com.android.ddmuilib.DevicePanel.IUiSelectionListener;
@@ -243,11 +243,11 @@ public class DeviceView extends ViewPart implements IUiSelectionListener {
} }
/** /**
* Sent when a new {@link Device} and {@link Client} are selected. * Sent when a new {@link IDevice} and {@link Client} are selected.
* @param selectedDevice the selected device. If null, no devices are selected. * @param selectedDevice the selected device. If null, no devices are selected.
* @param selectedClient The selected client. If null, no clients are selected. * @param selectedClient The selected client. If null, no clients are selected.
*/ */
public void selectionChanged(Device selectedDevice, Client selectedClient) { public void selectionChanged(IDevice selectedDevice, Client selectedClient) {
// update the buttons // update the buttons
doSelectionChanged(selectedClient); doSelectionChanged(selectedClient);
doSelectionChanged(selectedDevice); doSelectionChanged(selectedDevice);
@@ -289,7 +289,7 @@ public class DeviceView extends ViewPart implements IUiSelectionListener {
} }
} }
private void doSelectionChanged(Device selectedDevice) { private void doSelectionChanged(IDevice selectedDevice) {
mCaptureAction.setEnabled(selectedDevice != null); mCaptureAction.setEnabled(selectedDevice != null);
} }

View File

@@ -17,7 +17,7 @@
package com.android.ide.eclipse.ddms.views; package com.android.ide.eclipse.ddms.views;
import com.android.ddmlib.Client; import com.android.ddmlib.Client;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmuilib.explorer.DeviceExplorer; import com.android.ddmuilib.explorer.DeviceExplorer;
import com.android.ide.eclipse.ddms.CommonAction; import com.android.ide.eclipse.ddms.CommonAction;
import com.android.ide.eclipse.ddms.DdmsPlugin; import com.android.ide.eclipse.ddms.DdmsPlugin;
@@ -26,6 +26,7 @@ import com.android.ide.eclipse.ddms.DdmsPlugin.ISelectionListener;
import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.Separator; import org.eclipse.jface.action.Separator;
import org.eclipse.swt.graphics.Device;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IActionBars; import org.eclipse.ui.IActionBars;
import org.eclipse.ui.ISharedImages; import org.eclipse.ui.ISharedImages;
@@ -151,7 +152,7 @@ public class FileExplorerView extends ViewPart implements ISelectionListener {
* Sent when a new {@link Device} is selected. * Sent when a new {@link Device} is selected.
* @param selectedDevice the selected device. * @param selectedDevice the selected device.
*/ */
public void selectionChanged(Device selectedDevice) { public void selectionChanged(IDevice selectedDevice) {
mExplorer.switchDevice(selectedDevice); mExplorer.switchDevice(selectedDevice);
} }

View File

@@ -16,12 +16,13 @@
package com.android.ide.eclipse.ddms.views; package com.android.ide.eclipse.ddms.views;
import com.android.ddmlib.Client;
import com.android.ddmlib.IDevice;
import com.android.ddmuilib.SelectionDependentPanel;
import com.android.ide.eclipse.ddms.DdmsPlugin; import com.android.ide.eclipse.ddms.DdmsPlugin;
import com.android.ide.eclipse.ddms.DdmsPlugin.ISelectionListener; import com.android.ide.eclipse.ddms.DdmsPlugin.ISelectionListener;
import com.android.ddmlib.Client;
import com.android.ddmlib.Device;
import com.android.ddmuilib.SelectionDependentPanel;
import org.eclipse.swt.graphics.Device;
import org.eclipse.ui.part.ViewPart; import org.eclipse.ui.part.ViewPart;
/** /**
@@ -62,7 +63,7 @@ public abstract class SelectionDependentViewPart extends ViewPart implements ISe
* *
* @see ISelectionListener * @see ISelectionListener
*/ */
public final void selectionChanged(Device selectedDevice) { public final void selectionChanged(IDevice selectedDevice) {
mPanel.deviceSelected(selectedDevice); mPanel.deviceSelected(selectedDevice);
} }
} }

View File

@@ -17,7 +17,7 @@
package com.android.eventanalyzer; package com.android.eventanalyzer;
import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log; import com.android.ddmlib.Log;
import com.android.ddmlib.Log.ILogOutput; import com.android.ddmlib.Log.ILogOutput;
import com.android.ddmlib.Log.LogLevel; import com.android.ddmlib.Log.LogLevel;
@@ -253,9 +253,9 @@ public class EventAnalyzer implements ILogListener {
} }
// now get the devices // now get the devices
Device[] devices = bridge.getDevices(); IDevice[] devices = bridge.getDevices();
for (Device device : devices) { for (IDevice device : devices) {
if (device.getSerialNumber().equals(mInputDevice)) { if (device.getSerialNumber().equals(mInputDevice)) {
grabLogFrom(device); grabLogFrom(device);
return; return;
@@ -300,7 +300,7 @@ public class EventAnalyzer implements ILogListener {
} }
} }
private void grabLogFrom(Device device) throws IOException { private void grabLogFrom(IDevice device) throws IOException {
mParser = new EventLogParser(); mParser = new EventLogParser();
if (mParser.init(device) == false) { if (mParser.init(device) == false) {
printAndExit("Failed to get event-log-tags from " + device.getSerialNumber(), printAndExit("Failed to get event-log-tags from " + device.getSerialNumber(),

View File

@@ -17,7 +17,7 @@
package com.android.hierarchyviewer.device; package com.android.hierarchyviewer.device;
import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log; import com.android.ddmlib.Log;
import com.android.ddmlib.MultiLineReceiver; import com.android.ddmlib.MultiLineReceiver;
@@ -30,7 +30,7 @@ import java.util.regex.Pattern;
public class DeviceBridge { public class DeviceBridge {
private static AndroidDebugBridge bridge; private static AndroidDebugBridge bridge;
private static final HashMap<Device, Integer> devicePortMap = new HashMap<Device, Integer>(); private static final HashMap<IDevice, Integer> devicePortMap = new HashMap<IDevice, Integer>();
private static int nextLocalPort = Configuration.DEFAULT_SERVER_PORT; private static int nextLocalPort = Configuration.DEFAULT_SERVER_PORT;
public static void initDebugBridge() { public static void initDebugBridge() {
@@ -57,11 +57,11 @@ public class DeviceBridge {
AndroidDebugBridge.removeDeviceChangeListener(listener); AndroidDebugBridge.removeDeviceChangeListener(listener);
} }
public static Device[] getDevices() { public static IDevice[] getDevices() {
return bridge.getDevices(); return bridge.getDevices();
} }
public static boolean isViewServerRunning(Device device) { public static boolean isViewServerRunning(IDevice device) {
initDebugBridge(); initDebugBridge();
final boolean[] result = new boolean[1]; final boolean[] result = new boolean[1];
try { try {
@@ -75,11 +75,11 @@ public class DeviceBridge {
return result[0]; return result[0];
} }
public static boolean startViewServer(Device device) { public static boolean startViewServer(IDevice device) {
return startViewServer(device, Configuration.DEFAULT_SERVER_PORT); return startViewServer(device, Configuration.DEFAULT_SERVER_PORT);
} }
public static boolean startViewServer(Device device, int port) { public static boolean startViewServer(IDevice device, int port) {
initDebugBridge(); initDebugBridge();
final boolean[] result = new boolean[1]; final boolean[] result = new boolean[1];
try { try {
@@ -93,7 +93,7 @@ public class DeviceBridge {
return result[0]; return result[0];
} }
public static boolean stopViewServer(Device device) { public static boolean stopViewServer(IDevice device) {
initDebugBridge(); initDebugBridge();
final boolean[] result = new boolean[1]; final boolean[] result = new boolean[1];
try { try {
@@ -116,9 +116,9 @@ public class DeviceBridge {
* <p/>This starts a port forwarding between a local port and a port on the device. * <p/>This starts a port forwarding between a local port and a port on the device.
* @param device * @param device
*/ */
public static void setupDeviceForward(Device device) { public static void setupDeviceForward(IDevice device) {
synchronized (devicePortMap) { synchronized (devicePortMap) {
if (device.getState() == Device.DeviceState.ONLINE) { if (device.getState() == IDevice.DeviceState.ONLINE) {
int localPort = nextLocalPort++; int localPort = nextLocalPort++;
device.createForward(localPort, Configuration.DEFAULT_SERVER_PORT); device.createForward(localPort, Configuration.DEFAULT_SERVER_PORT);
devicePortMap.put(device, localPort); devicePortMap.put(device, localPort);
@@ -126,7 +126,7 @@ public class DeviceBridge {
} }
} }
public static void removeDeviceForward(Device device) { public static void removeDeviceForward(IDevice device) {
synchronized (devicePortMap) { synchronized (devicePortMap) {
final Integer localPort = devicePortMap.get(device); final Integer localPort = devicePortMap.get(device);
if (localPort != null) { if (localPort != null) {
@@ -136,7 +136,7 @@ public class DeviceBridge {
} }
} }
public static int getDeviceLocalPort(Device device) { public static int getDeviceLocalPort(IDevice device) {
synchronized (devicePortMap) { synchronized (devicePortMap) {
Integer port = devicePortMap.get(device); Integer port = devicePortMap.get(device);
if (port != null) { if (port != null) {

View File

@@ -16,7 +16,7 @@
package com.android.hierarchyviewer.scene; package com.android.hierarchyviewer.scene;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.hierarchyviewer.device.Configuration; import com.android.hierarchyviewer.device.Configuration;
import com.android.hierarchyviewer.device.Window; import com.android.hierarchyviewer.device.Window;
import com.android.hierarchyviewer.device.DeviceBridge; import com.android.hierarchyviewer.device.DeviceBridge;
@@ -31,7 +31,7 @@ import java.net.Socket;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
public class CaptureLoader { public class CaptureLoader {
public static Image loadCapture(Device device, Window window, String params) { public static Image loadCapture(IDevice device, Window window, String params) {
Socket socket = null; Socket socket = null;
BufferedInputStream in = null; BufferedInputStream in = null;
BufferedWriter out = null; BufferedWriter out = null;

View File

@@ -16,7 +16,7 @@
package com.android.hierarchyviewer.scene; package com.android.hierarchyviewer.scene;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.hierarchyviewer.device.Window; import com.android.hierarchyviewer.device.Window;
import com.android.hierarchyviewer.device.DeviceBridge; import com.android.hierarchyviewer.device.DeviceBridge;
@@ -29,7 +29,7 @@ import java.io.BufferedReader;
import java.io.InputStreamReader; import java.io.InputStreamReader;
public class ProfilesLoader { public class ProfilesLoader {
public static double[] loadProfiles(Device device, Window window, String params) { public static double[] loadProfiles(IDevice device, Window window, String params) {
Socket socket = null; Socket socket = null;
BufferedReader in = null; BufferedReader in = null;
BufferedWriter out = null; BufferedWriter out = null;

View File

@@ -16,7 +16,7 @@
package com.android.hierarchyviewer.scene; package com.android.hierarchyviewer.scene;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.hierarchyviewer.device.DeviceBridge; import com.android.hierarchyviewer.device.DeviceBridge;
import com.android.hierarchyviewer.device.Window; import com.android.hierarchyviewer.device.Window;
@@ -36,7 +36,7 @@ import java.util.regex.Pattern;
public class ViewHierarchyLoader { public class ViewHierarchyLoader {
@SuppressWarnings("empty-statement") @SuppressWarnings("empty-statement")
public static ViewHierarchyScene loadScene(Device device, Window window) { public static ViewHierarchyScene loadScene(IDevice device, Window window) {
ViewHierarchyScene scene = new ViewHierarchyScene(); ViewHierarchyScene scene = new ViewHierarchyScene();
// Read the views tree // Read the views tree

View File

@@ -16,7 +16,7 @@
package com.android.hierarchyviewer.scene; package com.android.hierarchyviewer.scene;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.hierarchyviewer.device.Window; import com.android.hierarchyviewer.device.Window;
import com.android.hierarchyviewer.device.DeviceBridge; import com.android.hierarchyviewer.device.DeviceBridge;
@@ -27,15 +27,15 @@ import java.net.InetSocketAddress;
import java.net.Socket; import java.net.Socket;
public class ViewManager { public class ViewManager {
public static void invalidate(Device device, Window window, String params) { public static void invalidate(IDevice device, Window window, String params) {
sendCommand("INVALIDATE", device, window, params); sendCommand("INVALIDATE", device, window, params);
} }
public static void requestLayout(Device device, Window window, String params) { public static void requestLayout(IDevice device, Window window, String params) {
sendCommand("REQUEST_LAYOUT", device, window, params); sendCommand("REQUEST_LAYOUT", device, window, params);
} }
private static void sendCommand(String command, Device device, Window window, String params) { private static void sendCommand(String command, IDevice device, Window window, String params) {
Socket socket = null; Socket socket = null;
BufferedWriter out = null; BufferedWriter out = null;

View File

@@ -16,7 +16,7 @@
package com.android.hierarchyviewer.scene; package com.android.hierarchyviewer.scene;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.hierarchyviewer.device.DeviceBridge; import com.android.hierarchyviewer.device.DeviceBridge;
import com.android.hierarchyviewer.device.Window; import com.android.hierarchyviewer.device.Window;
@@ -30,7 +30,7 @@ import java.net.Socket;
import java.util.ArrayList; import java.util.ArrayList;
public class WindowsLoader { public class WindowsLoader {
public static Window[] loadWindows(Device device) { public static Window[] loadWindows(IDevice device) {
Socket socket = null; Socket socket = null;
BufferedReader in = null; BufferedReader in = null;
BufferedWriter out = null; BufferedWriter out = null;

View File

@@ -1,6 +1,6 @@
package com.android.hierarchyviewer.ui; package com.android.hierarchyviewer.ui;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.RawImage; import com.android.ddmlib.RawImage;
import com.android.hierarchyviewer.util.WorkerThread; import com.android.hierarchyviewer.util.WorkerThread;
import com.android.hierarchyviewer.scene.ViewNode; import com.android.hierarchyviewer.scene.ViewNode;
@@ -51,7 +51,7 @@ import java.util.concurrent.ExecutionException;
class ScreenViewer extends JPanel implements ActionListener { class ScreenViewer extends JPanel implements ActionListener {
private final Workspace workspace; private final Workspace workspace;
private final Device device; private final IDevice device;
private GetScreenshotTask task; private GetScreenshotTask task;
private BufferedImage image; private BufferedImage image;
@@ -73,7 +73,7 @@ class ScreenViewer extends JPanel implements ActionListener {
private JSlider zoomSlider; private JSlider zoomSlider;
ScreenViewer(Workspace workspace, Device device, int spacing) { ScreenViewer(Workspace workspace, IDevice device, int spacing) {
setLayout(new BorderLayout()); setLayout(new BorderLayout());
setOpaque(false); setOpaque(false);

View File

@@ -17,7 +17,7 @@
package com.android.hierarchyviewer.ui; package com.android.hierarchyviewer.ui;
import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.hierarchyviewer.device.DeviceBridge; import com.android.hierarchyviewer.device.DeviceBridge;
import com.android.hierarchyviewer.device.Window; import com.android.hierarchyviewer.device.Window;
import com.android.hierarchyviewer.laf.UnifiedContentBorder; import com.android.hierarchyviewer.laf.UnifiedContentBorder;
@@ -147,7 +147,7 @@ public class Workspace extends JFrame {
private DevicesTableModel devicesTableModel; private DevicesTableModel devicesTableModel;
private WindowsTableModel windowsTableModel; private WindowsTableModel windowsTableModel;
private Device currentDevice; private IDevice currentDevice;
private Window currentWindow = Window.FOCUSED_WINDOW; private Window currentWindow = Window.FOCUSED_WINDOW;
private JButton displayNodeButton; private JButton displayNodeButton;
@@ -235,7 +235,7 @@ public class Workspace extends JFrame {
} }
devicesTableModel = new DevicesTableModel(); devicesTableModel = new DevicesTableModel();
for (Device device : DeviceBridge.getDevices()) { for (IDevice device : DeviceBridge.getDevices()) {
DeviceBridge.setupDeviceForward(device); DeviceBridge.setupDeviceForward(device);
devicesTableModel.addDevice(device); devicesTableModel.addDevice(device);
} }
@@ -926,7 +926,7 @@ public class Workspace extends JFrame {
} }
public void cleanupDevices() { public void cleanupDevices() {
for (Device device : devicesTableModel.getDevices()) { for (IDevice device : devicesTableModel.getDevices()) {
DeviceBridge.removeDeviceForward(device); DeviceBridge.removeDeviceForward(device);
} }
} }
@@ -1293,10 +1293,10 @@ public class Workspace extends JFrame {
private class DevicesTableModel extends DefaultTableModel implements private class DevicesTableModel extends DefaultTableModel implements
AndroidDebugBridge.IDeviceChangeListener { AndroidDebugBridge.IDeviceChangeListener {
private ArrayList<Device> devices; private ArrayList<IDevice> devices;
private DevicesTableModel() { private DevicesTableModel() {
devices = new ArrayList<Device>(); devices = new ArrayList<IDevice>();
} }
@Override @Override
@@ -1320,7 +1320,7 @@ public class Workspace extends JFrame {
} }
@WorkerThread @WorkerThread
public void deviceConnected(final Device device) { public void deviceConnected(final IDevice device) {
DeviceBridge.setupDeviceForward(device); DeviceBridge.setupDeviceForward(device);
SwingUtilities.invokeLater(new Runnable() { SwingUtilities.invokeLater(new Runnable() {
@@ -1331,7 +1331,7 @@ public class Workspace extends JFrame {
} }
@WorkerThread @WorkerThread
public void deviceDisconnected(final Device device) { public void deviceDisconnected(final IDevice device) {
DeviceBridge.removeDeviceForward(device); DeviceBridge.removeDeviceForward(device);
SwingUtilities.invokeLater(new Runnable() { SwingUtilities.invokeLater(new Runnable() {
@@ -1341,14 +1341,14 @@ public class Workspace extends JFrame {
}); });
} }
public void addDevice(Device device) { public void addDevice(IDevice device) {
if (!devices.contains(device)) { if (!devices.contains(device)) {
devices.add(device); devices.add(device);
fireTableDataChanged(); fireTableDataChanged();
} }
} }
public void removeDevice(Device device) { public void removeDevice(IDevice device) {
if (device.equals(currentDevice)) { if (device.equals(currentDevice)) {
reset(); reset();
} }
@@ -1360,12 +1360,12 @@ public class Workspace extends JFrame {
} }
@WorkerThread @WorkerThread
public void deviceChanged(Device device, int changeMask) { public void deviceChanged(IDevice device, int changeMask) {
if ((changeMask & Device.CHANGE_STATE) != 0 && if ((changeMask & IDevice.CHANGE_STATE) != 0 &&
device.isOnline()) { device.isOnline()) {
// if the device state changed and it's now online, we set up its port forwarding. // if the device state changed and it's now online, we set up its port forwarding.
DeviceBridge.setupDeviceForward(device); DeviceBridge.setupDeviceForward(device);
} else if (device == currentDevice && (changeMask & Device.CHANGE_CLIENT_LIST) != 0) { } else if (device == currentDevice && (changeMask & IDevice.CHANGE_CLIENT_LIST) != 0) {
// if the changed device is the current one and the client list changed, we update // if the changed device is the current one and the client list changed, we update
// the UI. // the UI.
loadWindows().execute(); loadWindows().execute();
@@ -1378,12 +1378,12 @@ public class Workspace extends JFrame {
return devices == null ? 0 : devices.size(); return devices == null ? 0 : devices.size();
} }
public Device getDevice(int index) { public IDevice getDevice(int index) {
return index < devices.size() ? devices.get(index) : null; return index < devices.size() ? devices.get(index) : null;
} }
public Device[] getDevices() { public IDevice[] getDevices() {
return devices.toArray(new Device[devices.size()]); return devices.toArray(new IDevice[devices.size()]);
} }
} }

View File

@@ -17,7 +17,7 @@
package com.android.screenshot; package com.android.screenshot;
import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Device; import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log; import com.android.ddmlib.Log;
import com.android.ddmlib.RawImage; import com.android.ddmlib.RawImage;
import com.android.ddmlib.Log.ILogOutput; import com.android.ddmlib.Log.ILogOutput;
@@ -133,16 +133,16 @@ public class Screenshot {
} }
// now get the devices // now get the devices
Device[] devices = bridge.getDevices(); IDevice[] devices = bridge.getDevices();
if (devices.length == 0) { if (devices.length == 0) {
printAndExit("No devices found!", true /* terminate */); printAndExit("No devices found!", true /* terminate */);
} }
Device target = null; IDevice target = null;
if (emulator || device) { if (emulator || device) {
for (Device d : devices) { for (IDevice d : devices) {
// this test works because emulator and device can't both be true at the same // this test works because emulator and device can't both be true at the same
// time. // time.
if (d.isEmulator() == emulator) { if (d.isEmulator() == emulator) {
@@ -159,7 +159,7 @@ public class Screenshot {
} }
} }
} else if (serial != null) { } else if (serial != null) {
for (Device d : devices) { for (IDevice d : devices) {
if (serial.equals(d.getSerialNumber())) { if (serial.equals(d.getSerialNumber())) {
target = d; target = d;
break; break;
@@ -192,7 +192,7 @@ public class Screenshot {
/* /*
* Grab an image from an ADB-connected device. * Grab an image from an ADB-connected device.
*/ */
private static void getDeviceImage(Device device, String filepath, boolean landscape) private static void getDeviceImage(IDevice device, String filepath, boolean landscape)
throws IOException { throws IOException {
RawImage rawImage; RawImage rawImage;