// Sets the current USB device and interface
  private boolean setAdbInterface(UsbDevice device, UsbInterface intf) {
    if (mDeviceConnection != null) {
      if (mInterface != null) {
        mDeviceConnection.releaseInterface(mInterface);
        mInterface = null;
      }
      mDeviceConnection.close();
      mDevice = null;
      mDeviceConnection = null;
    }

    if (device != null && intf != null) {
      UsbDeviceConnection connection = mManager.openDevice(device);
      if (connection != null) {
        log("open succeeded");
        if (connection.claimInterface(intf, false)) {
          log("claim interface succeeded");
          mDevice = device;
          mDeviceConnection = connection;
          mInterface = intf;
          mAdbDevice = new AdbDevice(this, mDeviceConnection, intf);
          log("call start");
          mAdbDevice.start();
          return true;
        } else {
          log("claim interface failed");
          connection.close();
        }
      } else {
        log("open failed");
      }
    }

    if (mDeviceConnection == null && mAdbDevice != null) {
      mAdbDevice.stop();
      mAdbDevice = null;
    }
    return false;
  }
 private void handleDeviceOnline(AdbDevice device) {
   log("device online: " + device.getSerial());
   device.openSocket("shell:exec logcat");
 }