connecting to controller ------LeapMotion API
2016-02-01 17:30
633 查看
创建一个Controller对象,来连接设备,这个对象自动的建立与LM后台进程或服务的连接,后台进程随后在Frame对象中可以用来传递追踪数据。
Leap::Contriller controller;
使用controller对象来获取连接状态和连接硬件的情况,以及应用的参数设置情况。
Getting Frames
获得Frame 对象包括通过controller.frame()函数来追踪数据。当APP准备处理数据来得到设备产生的最新数据集时,你可以调用这个函数。你可以实现Listener对象定义一个回调函数,并且当新的数据帧准备就时,Controller会唤醒这个函数。
Foreground and background APPlications
通常情况下,只有应用在当前系统中获得焦点时,LM服务才向其传递数据。这种特性能够防止应用在不获得焦点的空载时,获得其他应用的输入数据的情况。
获得图像
为了从相机获得图像,必须设置图像性质,控制面板中的allow Imags选项,需要选中。
启动手势
为了使用内置的手势(built-in gestures),首先需要使用 controller。enableGesture();
只需要开启,应用中需要的手势。
连接状态
当你创造一个控制器,对象将建立与LM服务的连接,controller.isserviceConneceted属性变成true.同样的,如果LM硬件接入并被服务检测到时,controller.isConnected()属性变为真。
控制器事件监听器
控制器对象使用监听机制监听一些事件。为了处理这些事件,你能够拓展Listener类实现回调函数。当事件发生时,控制器唤醒相关的回调函数。
事件包括:
下面的例子表明监听器父类的实现。
为controller添加监听器
Leap::Contriller controller;
使用controller对象来获取连接状态和连接硬件的情况,以及应用的参数设置情况。
Getting Frames
获得Frame 对象包括通过controller.frame()函数来追踪数据。当APP准备处理数据来得到设备产生的最新数据集时,你可以调用这个函数。你可以实现Listener对象定义一个回调函数,并且当新的数据帧准备就时,Controller会唤醒这个函数。
Foreground and background APPlications
通常情况下,只有应用在当前系统中获得焦点时,LM服务才向其传递数据。这种特性能够防止应用在不获得焦点的空载时,获得其他应用的输入数据的情况。
获得图像
为了从相机获得图像,必须设置图像性质,控制面板中的allow Imags选项,需要选中。
启动手势
为了使用内置的手势(built-in gestures),首先需要使用 controller。enableGesture();
controller.enableGesture(Leap::Gesture::TYPE_CIRCLE);
只需要开启,应用中需要的手势。
连接状态
当你创造一个控制器,对象将建立与LM服务的连接,controller.isserviceConneceted属性变成true.同样的,如果LM硬件接入并被服务检测到时,controller.isConnected()属性变为真。
控制器事件监听器
控制器对象使用监听机制监听一些事件。为了处理这些事件,你能够拓展Listener类实现回调函数。当事件发生时,控制器唤醒相关的回调函数。
事件包括:
onConnect() | The Controller连接了服务和LM设备 |
onDeviceChange() | LM硬件状态发生改变 |
onDisconnect() | The Controller服务和LM设备失去连接 |
onExit() | The Controller对象被销毁 |
onFocusGained() | 应用获取焦点,并开始接受数据 |
onFocusLost() | 应用失去焦点,停止接受数据theBACKGROUND_FRAMES_POLICY. |
onFrame() | 新的数据帧已经准备就绪 |
onInit() | The Controller对象被初始化 |
onServiceConnect() | The Controller连接到服务 |
onServiceDisconnect() |
#include <iostream> #include "Leap.h" using namespace Leap; class LeapEventListener : public Listener { public: virtual void onConnect(const Controller&); virtual void onDisconnect(const Controller&); virtual void onFrame(const Controller&); }; void LeapEventListener::onConnect(const Controller& controller) { std::cout << "Connected" << std::endl; // Enable gestures, set Config values: controller.enableGesture(Gesture::TYPE_SWIPE); controller.config().setFloat("Gesture.Swipe.MinLength", 200.0); controller.config().save(); } //Not dispatched when running in a debugger void LeapEventListener::onDisconnect(const Controller& controller) { std::cout << "Disconnected" << std::endl; } void LeapEventListener::onFrame(const Controller& controller) { std::cout << "New frame available" << std::endl; Frame frame = controller.frame(); // Process this frame's data... }
为controller添加监听器
Controller controller; LeapEventListener listener; controller.addListener(listener);
相关文章推荐
- 使用追踪API----LeapMotion API
- rpm包相关操作
- 基于K2 BPM的大型连锁企业开关店选址管理解决方案
- rpm包的安装方法
- 鬼畜输入法产品经理:小咖秀这是对我们“简单直接的 copy”
- Using QEMU for Embedded Systems Development, Part 1
- Using QEMU for Embedded Systems Development, Part 3
- cBPM调试——codeblocks 配置交叉编译和调试环境
- 五道口宅男 - Material on Mobile Development
- cBPM - set codeblock parameters
- google-chrome-stable Download (DEB, RPM)
- 在内网环境中安装npm
- 在内网环境中安装npm
- 滴滴产品经理面试
- Angular的Directive,以及copmile和link方法
- SKPSMTPMESSAGE的Subject乱码解决
- BPMN流程图的绘制的注意要点
- 在ubuntu中安装rpm包
- OpenStack Networking – FlatManager and FlatDHCPManager
- 七星级产品经理张小龙做产品也会痛苦!他有3句狠话值得学习