我正在通过USB连接从Android设备上的佳能eos相机上听事件。
正如我们所知,接收事件和接收数据都来自canon eos的端点,因此我无法同时完成这些工作。
现在我可以成功获得事件。但是仍然存在一个问题,例如,我收到一个ObjectAdded事件,然后我将对象从相机复制到我的Android设备,这需要几秒钟,在我完成复制工作后返回检查端点中的批量事件,我发现我无法在复制工作期间触发这些事件,似乎我应该在事件被触发时立即拉事件,否则如果我稍后检查它们,我将丢失它们。对于nikon来说,这不是问题,因为我们从中断端点获取事件并从端点获取数据,我们总是可以从中断端点检查事件而无需等待。但是我应该为canon eos做些什么?
我不确定导致丢失事件的原因,但是我只是在不进行保存照片之类的其他事情的情况下进行测试:
while (isReadingInterruptEvent) {
if (!isEosPullingImage) {
List<EosEvent> eosEvents = checkEvents();
if (eosEvents != null) {
Log.e("eosEvent:", eosEvents.size() + "");
}
}
Thread.sleep(1000);
}
我每1秒检查一次事件,我发现间隔时间越长,就越有可能错过事件。