我相信,你“可以”在没有根的情况下做到这一点 .
你是'll need to do it all using some native C code interfacing with the USB device using USBFS. The big issue comes from the lack of documentation of linux'的usbfs . 基本上一切都必须通过ioctls来完成 . 那就是说你打开设备就像通常用Java一样 . 然后从USBDeviceConnection传递文件描述符
除此之外,您需要自己解析所有USB描述符 . 你可以再次从USBDeviceConnection获得它们 . 从描述符跳转到描述符很简单,找到每个描述符意味着什么是大量头痛的文档,但是你可以在www.usb.org上找到大部分文档 .
我已经编写了解析音频设备所需的大部分代码,并且我一直试图提交等时传输,然后开始出错 .
在切换到libusb之后,我发现问题,在我的情况下,是因为音频设备也有HID控制器,默认驱动程序正在攻击那些并且从同步传输中窃取所有带宽 . 如果我早先知道这一点,我可能已经坚持使用非root非libusb方法 . 因为它确实通过lib usb获得等时传输,但它需要一个有根设备:(
在某些时候我会回到它 .
总之,我很确定它可能但它不会那么容易!