我正在尝试编写一个 Windows 应用程序来充当使用 libusb 和 Android Open Accessory 协议的 Android 设备的主机。
但是,我发现我什至无法与手机握手,除非它已经处于 MTP 模式(我正在测试 Pixel XL,每次拔下它都会恢复到“充电模式”) .
我在网上找不到任何答案,所以我想我会在这里问。如何连接手机而无需每次都手动将其置于 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());
}
}