有2种方法:
1.chmod 666 dev/bus/usb/*
2.如果没有android root权限那就麻烦一点,描述个大概
AndroidManifest.xml中添加:
<uses-feature android:name="android.hardware.usb.host" android:required="true"/>
...
<uses-permission android:name="android.hardware.usb.host" />
<uses-permission android:name="ANDROID.PERMISSION.HARDWARE_TEST" />
...
<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" />
device_filter.xml内容:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-device vendor-id="1204" product-id="34323" />
<usb-device vendor-id="1204" product-id="241" />
</resources>
//确认需要通信的usb devide的vid和pid。确认这里是十进制。
代码中用usbManager open你需要open的设备然后获取fd。这个fd是关键,通过jni把fd传进libusb:
UsbDeviceConnection usbDeviceC = manager.openDevice(mUsbDevice);
int fd = usbDeviceC.getFileDescriptor();
--------------------jni------------------------传递fd进libusb,修改libusb接口
ibusb_device_handle *h = NULL;
h = libusb_open_device_with_vid_pid(p_ctx, vid, pid, fd);
libusb_control_transfer(h, 0x40, vendor_command, address, 0x00, dbuf, num_bytes, 1000);
.....
libusb 在core.c中添加
DEFAULT_VISIBILITY
libu