附件模式是否要求设备处于MTP模式?

时间:2017-11-08 14:44:22

标签: android usb libusb android-open-accessory

我尝试使用libusb和Android Open Accessory协议编写Windows应用程序作为Android设备的主机。

然而,我发现我甚至无法与手机发起握手,除非它已经处于MTP模式(我正在对Pixel XL进行测试,后者将恢复为& #34;充电模式"每次拔掉它时。)

我无法在网上找到任何答案,所以我想我会问这里。如何在不必每次都手动将其置于MTP模式的情况下连接到手机?

下面的Windows libusb代码:

std::vector<AndroidDevice> devices;

libusb_device *** listptr = new libusb_device **;

libusb_device ** list;

libusb_init(NULL);

int deviceCount = libusb_get_device_list(NULL, listptr);

list = *listptr;

delete listptr;

for (int i = 0; i < deviceCount; i++) {
    libusb_device * device = list[i];

    libusb_device_descriptor desc;

    int result = libusb_get_device_descriptor(device, &desc);

    if (desc.idVendor == GOOGLE_VENDOR_ID) {
        libusb_device_handle ** handleptr = new libusb_device_handle *;

        result = libusb_open(device, handleptr); //Returns "not supported" error unless phone is in MTP

        libusb_device_handle * handle = *handleptr;

        delete handleptr;

        if (!result) {
            devices.emplace_back(device, handle);
        }
        else {
            printf("Error opening device: %s\n", errorDescription(result).c_str());
        }
    }

1 个答案:

答案 0 :(得分:0)

据我记忆,它是Android的安全功能,因此设备无法连接到主机,直到用户命令它为止。选择Android设备上的选项可更改USB小工具驱动程序配置,允许连接。

Android开发人员选项中有一个选项可以更改此行为,如here所述。