2017-11-08 22 views
0

私は、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()); 
     } 
    } 

答えて

0

は、私が覚えている限りでは、それは、Androidのセキュリティ機能ですので、それはそうするようにユーザ注文までデバイスは、ホストに接続されません。 Androidデバイスでオプションを選択すると、USBガジェットドライバの設定が変更され、接続が可能になります。

hereのように、この動作を変更できるオプションがAndroidデベロッパーオプションにあります。

関連する問題