私は、libusbとAndroid Open Accessoryプロトコルを使用してAndroidデバイスのホストとして動作するWindowsアプリケーションを作成しようとしています。アクセサリモードでは、デバイスをMTPモードにする必要がありますか?
しかし、既にMTPモードになっていない限り、電話でハンドシェイクを開始することはできません(Pixel XLをテストしています.Pelite 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());
}
}