Java 通过USB电缆与Android设备连接的Xbox 360控制器通信

Java 通过USB电缆与Android设备连接的Xbox 360控制器通信,java,android,usb,xbox360,Java,Android,Usb,Xbox360,我正在从事一个Android项目,该项目将连接到Xbox 360控制器。我希望能够通过控制器的输入报告捕获用户反馈。我正在使用Virtual Box和AndroidVM进行测试,并将以下内容用于USB协议(特别是与Xbox控制器相关的协议): 列举一些我用来提供信息的链接。我还参考了HID协议信息来检查数据包描述 我已经成功地通过VM检测和枚举了控制器,并且已经成功地使用Android SDK API获取了输入报告(例如,USBManager,USBInterface,USBDevice

我正在从事一个Android项目,该项目将连接到Xbox 360控制器。我希望能够通过控制器的输入报告捕获用户反馈。我正在使用Virtual Box和AndroidVM进行测试,并将以下内容用于USB协议(特别是与Xbox控制器相关的协议):

列举一些我用来提供信息的链接。我还参考了HID协议信息来检查数据包描述

我已经成功地通过VM检测和枚举了控制器,并且已经成功地使用Android SDK API获取了输入报告(例如,
USBManager
USBInterface
USBDevice
等),但仅通过使用控制传输请求明确请求报告

我希望能够通过适当端点上的中断来提取这些输入报告。我尝试从第一个接口上的第一个端点读取数据包(
getInterface[0]
getEndpoint[0]
),我确实收到了数据,但在解析字节缓冲区中的数据时遇到了困难(我将缓冲区设置为little endian)。特别是,如何知道每个数据包的分隔符?我知道每个数据包都以一个Sync字段开始,这个Sync是8位的,最后两位表示PID开始的位置,但我不确定这到底意味着什么。有多少文档描述了Ks和Js用于同步,它们是如何表示为位的?另外,所有数据包都应该有一个EOP,这需要解析还是由硬件处理