Android - 从 USB 接收佳能(相机)事件

Android - Receiving Canon (Camera) events from USB

使用 Android USB 框架,我检索了相关端点并使用这些端点与系留摄像头进行通信。我可以连接尼康相机并从中接收事件,它从中断端点发送事件。但是,当连接到佳能相机时,没有从该端点收到 data/event。

我在某处读到佳能不遵守 PTP,并从 BULK IN 端点发送事件,但是,相机也没有从该端点发送任何 data/events。

当前正在使用的示例代码;

byte[] data = new byte[4096];
int bytesRead = usbDeviceConnection.bulkTransfer(interruptEndpoint, data, data.length, 1000);
if(bytesRead > 0)
{
  // Read event
}

知道如何从佳能读取数据吗?目前似乎相机没有发送任何东西,但我知道它 is.The 确切型号是 EOS 7D。

经过大量的反复试验和 USB 嗅探,成功实现了此功能。

虽然似乎没有通过中断端点发送任何内容,但终点是相同的 - 相反,我使用 IN 和 OUT 端点从相机请求事件,然后处理返回的事件列表。

另一个问题似乎是佳能有一个自定义的 PTP,它使用它可以在 USB 数据包中嵌入额外的数据。

另一个区别是,对于尼康,我正在寻找的 EventCode (ObjectAdded) 是:0x4002 而对于佳能,EventCode 是 0xC181