我尝试连接自定义USB设备。我已经用android doc一步一步地做了一切,但我仍然在连接对象上得到空指针。这是我的活动:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PendingIntent mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
registerReceiver(usbReceiver, filter);
usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
while (deviceIterator.hasNext()) {
UsbDevice device = deviceIterator.next();
if (device.getVendorId() == 1659 && device.getProductId() == 8963) {
this.device = device;
usbManager.requestPermission(device, mPermissionIntent);
Toast.makeText(MainActivity.this, "vendor: " + device.getVendorId() + "ID " + device.getProductId() , Toast.LENGTH_SHORT).show();
break;
}
}
这就是我尝试连接USB设备的方式:
mTestButton = (Button) findViewById(R.id.button);
mTestButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
usbInterface = device.getInterface(0);
if (connection != null) {
connection = usbManager.openDevice(device);
connection.claimInterface(usbInterface, false);
for (int i = 0; i < usbInterface.getEndpointCount(); i++) {
UsbEndpoint end = usbInterface.getEndpoint(i);
if (end.getDirection() == UsbConstants.USB_DIR_IN) {
usbEndpointIn = end;
} else {
usbEndpointOut = end;
}
}
//SEND START COMMAND TO THE USB DEVICE;
int result = connection.bulkTransfer(usbEndpointOut, "START".getBytes(), "START".getBytes().length, 1000);
Log.e("SEND RESULT", result + "");
//START READING in run method
readThread = new Thread((Runnable) MainActivity.this);
readThread.start();
} else {
Toast.makeText(MainActivity.this, "Connection is null", Toast.LENGTH_SHORT).show();
}
但是连接仍然是空的:/请帮助。
答案 0 :(得分:0)
试试这个,
<manifest ...>
<uses-feature android:name="android.hardware.usb.host" />
<uses-sdk android:minSdkVersion="12" />
...
<application>
<activity ...>
...
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</activity>
</application>
</manifest>
device_filter.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-device vendor-id="1234" product-id="5678" class="255" subclass="66" protocol="1" />
</resources>
更多信息:点击here