BACKGROUND_FRAMES – Leap Motion API

之前在运行Leap Motion官方示例程序的时候,发现一个问题:当程序失去操作系统焦点的时候,程序显示“Focus Lost”并不再接收数据,直到程序取回操作系统焦点。

这里我们发现有两个问题:
1.是程序不再接受来自设备的数据,还是设备不再进行识别?
2.为什么要程序失去操作系统焦点后就停止数据获取了呢?或者是设备停止识别了呢?

这两个问题的重点在于:
1.设备是否暂停识别?还是一直在识别,只是程序暂停从设备获取数据?
2.是否有办法使得程序能在无焦点状态还持续获取数据?

我们在官方文档中获取到许多有用的信息:
1.Leap Motion的工作机制:USB – Leap Service/Daemon – Leap APP。
Leap Motion传感器负责采集手部信息(每帧两张VGA大小的黑白图像),通过USB总线发送给Leap驻守在系统的服务(Windows)或守护进程(Mac或Linux),该Service负责进行数据处理(从图片中抽取手部信息,获取空间坐标点等数据,Leap Motion算法之所在),APP从Service获取这些可用数据。
2.除非在控制器中手动暂停跟踪,否则设备会一直获取数据和处理数据。
3.APP是否运行在后台接收数据是可控的。默认不允许,估计是出于节省设备开销的考虑。
4.API中的Leap::Controller::PolicyFlag可以控制这个属性,枚举成员有POLICY_DEFAULT和POLICY_BACKGROUND_FRAMES(后台接收帧)。

结论:
1.除非在控制器中手动暂停跟踪,否则设备会一直获取数据和处理数据。是否允许在后台接收数据是应用程序决定的,与设备无关。
2.controller.setPolicyFlags(Controller::PolicyFlag::POLICY_BACKGROUND_FRAMES);//该语句将程序设置成允许在后台接收数据。

如无注明,均为原创。转载请注明: 转载自MITGAI`S THINKING
本文链接地址: BACKGROUND_FRAMES – Leap Motion API

知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

如果本文对您生活或工作产生了积极影响,那我非常高兴。
如果您愿意为文章的内容或想法提供支持,欢迎点击下边的捐赠按钮,资助作者创作更多高价值高品质的内容。
支付宝捐赠
anyShare分享到:

发表回复