2016-10-19 5 views
1

Android 기반 장치가 USB 호스트가 아닌 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를 통해 연결하고 있는데 그 중 하나는 호스트이고 다른 하나는 장치이지만 장치는 호스트를 인식하지 못합니다.

+0

에서 체크 android.hardware.usb.accessory 아마 장치는 USB 액세서리 모드에 있고 다른 하나는 호스트와 같은 역할을합니다. 아마 그 중 하나가 액세서리 목록을 검색 할 수 없기 때문일 수 있습니까? –

+0

실제로 사실입니다. 그 중 하나는 액세서리 모드이고 다른 하나는 호스트 모드입니다. 그러나 왜이 방법으로 연결할 수 없습니까 ?? –

+0

USB 호스트 만 액세서리 목록을 검색 할 수 있음을 이해합니다. –

답변

0

경고 : 올바른 OTG 라인을 사용해야합니다! 사용-기능

<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

예, 가난한 영어입니다. 두 모바일을 연결하면 슬레이브 모바일이 충전됩니까? –

+0

예, 충전은 가능하지만 슬레이브는 호스트를 인식하지 못하고 마스터 모바일은 슬레이브를 찾습니다. –

관련 문제