2016-10-19 50 views
1

私はアンドロイドを搭載したデバイスがUSB-Device(USBホストではない)として動作するアプリケーションを開発しています。だから私は私のアンドロイドデバイスが接続されているホストを見つける必要があります。ここに私のコードです:GetAccessoryListが呼び出されたときにUsbManagerがnullを返します

btnRefresh.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //UsbAccessory[] usbAccessory = new UsbAccessory[1]; 
       mUsbManager = (UsbManager)getSystemService(Context.USB_SERVICE); 
       usbAccessory = mUsbManager.getAccessoryList(); 
       List<String> accessoryListTemp= new ArrayList<String>(); 

       if (usbAccessory != null) { 
        if (usbAccessory.length > 0) { 
         String hhhh = usbAccessory[0].getModel(); 
         accessoryListTemp.add(hhhh); 
        } 
       } 
       //accessoryListTemp.add("hamed test item"); 
       ArrayAdapter<String> arrayAdapterTemp = new ArrayAdapter<String>(getApplicationContext(), 
         android.R.layout.simple_spinner_item, accessoryListTemp); 
       arrayAdapterTemp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

       spinnerHosts.setAdapter(arrayAdapterTemp); 
      } 
     }); 

私はaccessoryListTemp変数でnullを得た理由を理解できません。おそらく、デバイスが見つかりませんでしたが、実際にはデバイスが接続されていて、他のデバイスがデバイスを検出したことを意味します。 具体的には、私はUSB経由で2台のAndroid携帯電話を接続していますが、そのうちの1台はホストで、もう1台はデバイスですが、デバイスはホストを認識しません。

+0

はたぶんあなたのデバイスがUSBアクセサリモードであり、もう一つはホストのような役割を果たします。たぶんそのうちの1人がアクセサリーリストを取得できないのでしょうか? –

+0

実際には本当ですか、そのうちの1つはアクセサリモードで、もう1つはホストモードですが、なぜこのように接続できないのですか? –

+0

私は、USBホストだけがアクセサリリストを取得できることを理解しています。 –

答えて

0

警告:正しいOTGラインを使用する必要があります。用途・機能で チェックandroid.hardware.usb.accessory

<manifest ...> 
<uses-feature android:name="android.hardware.usb.accessory" /> 

<uses-sdk android:minSdkVersion="<version>" /> 
... 
<application> 
    <uses-library android:name="com.android.future.usb.accessory" /> 
    <activity ...> 
     ... 
     <intent-filter> 
      <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" /> 
     </intent-filter> 

     <meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" 
      android:resource="@xml/accessory_filter" /> 
    </activity> 
</application> 

+0

正確にはどういう意味ですか? OTGケーブル? –

+0

はい、私の英語は貧しいです。 2台のモバイルを接続すると、充電中のスレーブの携帯電話ですか? –

+0

はい、充電中ですが、スレーブはホストを認識できず、同時にマスターのモバイルがスレーブを見つけます。 –

関連する問題