先贴这个adbtest的例子,用android的usb sdk传输adb协议数据,将android的logcat信息打印再屏幕上。
我研究这个例子的目的是为了实现usb传输tcpip数据,需要借用adb。
http://www.java2s.com/Code/Android/Hardware/USBdevicethatsupportstheadbprotocol.htm
这例子具体有几个类:adbdevice
、adbmessage
、`adbsocket
。
其中adbdevice
是主类,里面有个线程WaitThread
主要是用到usb异步读的地方。
huesb异步操作的主要流程是:
1. 调用initialize(UsbDeviceConnection connection, UsbEndpoint endpoint)
初始化好1个request,connection是指明连接的,endpoint可以是相应的in或out;
2. 调用queue(ByteBuffer buffer, int length)
提交Buffer去读或者写数据;
3. 调用setClientData(Object data)
可以做标记,具体作用在下面代码的注释里。
4. 调用usbDeviceConection的requestWait()
等待request异步请求生效;注意requestWait()对所有endpoint提交的request都可能生效。很重要的一点是要判断提交的request是否是wait到的request,才能控制不同endpoint的数据流。
贴代码和注释:
private class WaiterThread extends Thread {
public boolean mStop;
public void run() {