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

时间:2015-01-20 19:48:40

标签: java android camera usb

使用Android USB框架我检索相关端点并使用这些端点与系留相机进行通信。我可以从尼康相机连接和接收事件,它从中断端点发送事件。但是,连接佳能相机时,不会从此端点接收数据/事件。

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

目前使用的示例代码;

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

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

1 个答案:

答案 0 :(得分:1)

经过大量试验和错误以及USB嗅探后,管理好了。

虽然似乎没有通过中断端点发送任何东西,但终点结果是相同的 - 而我正在使用IN& OUT端点从摄像机请求事件,然后处理返回的事件列表。

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

另一个不同之处在于,对于尼康来说,我正在寻找的事件(ObjectAdded)是:0x4002而对于佳能来说,事件代码是0xC181