您的位置:首页 > 产品设计 > 产品经理

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();

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: