我正在开发一款应用程序,其中Android驱动的设备充当USB设备(不是USB主机)。所以我需要找到我的android设备连接的主机。这是我的代码:
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连接两部Android手机,其中一部是主机,另一部分是设备,但设备无法识别主机。
答案 0 :(得分:0)
警告:你应该使用正确的OTG线!! 在uses-feature
中检查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>