import lrscp.lib.CmdUtils.Service.OsCmd; import lrscp.lib.swt.SwtUtils; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener; import com.android.ddmlib.IDevice; import com.android.ddmuilib.ScreenShotDialog; import com.android.ddmuilib.ScreenShotDialog.OnShowListener; public class AndroidVirtualScreen { private static ScreenShotDialog mScreenShotDialog; private static WelcomDialog mWelcomeDialog; public static void main(String[] args) { if (!checkAdb()) { Shell shell = new Shell(); SwtUtils.center(shell, 10); MessageDialog.openError(shell, "Error", "Adb is not installed in your system!"); return; } mWelcomeDialog = new WelcomDialog(new Shell(), SWT.DIALOG_TRIM); startScreenShotDialog(); mWelcomeDialog.open(); } private static boolean checkAdb() { try { OsCmd.exec("adb"); return true; } catch (Exception e) { return false; } } private static void startScreenShotDialog() { AndroidDebugBridge.init(true); AndroidDebugBridge.createBridge("adb", true); AndroidDebugBridge.addDeviceChangeListener(new IDeviceChangeListener() { @Override public void deviceDisconnected(IDevice device) { Display.getDefault().syncExec(new Runnable() { @Override public void run() { if (mScreenShotDialog != null && !mScreenShotDialog.mShell.isDisposed()) { mScreenShotDialog.mShell.dispose(); } System.exit(0); } }); } @Override public void deviceConnected(final IDevice device) { new Thread(new Runnable() { @Override public void run() { Display.getDefault().asyncExec(new Runnable() { @Override public void run() { if (mScreenShotDialog == null) { mScreenShotDialog = new ScreenShotDialog(new Shell(Display.getDefault(), SWT.SHELL_TRIM)); mScreenShotDialog.setOnShowListener(new OnShowListener() { @Override public void onShow() { if (mWelcomeDialog != null) { mWelcomeDialog.getParent().dispose(); } } }); mScreenShotDialog.open(device); // AndroidDebugBridge.disconnectBridge(); System.exit(0); } } }); } }).start(); } @Override public void deviceChanged(IDevice device, int changeMask) {} }); } }