设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

开发原生的Google眼镜应用

2014-6-12 11:40| 发布者: joejoe0332| 查看: 5863| 评论: 0|原作者: petert, 0x0bject, AndyLam, Pupa, GoodLoser, it瞌睡虫, winnieS|来自: oschina

摘要: 与谷歌眼镜打交道时,在开发者预览版本或先睹为快状态版本里,谷歌有两个可用的API / SDK。第一个是谷歌眼镜的 Mirror API,这是一个基于RESTful接口,从远程服务器发送卡片到谷歌眼镜timeline的云。第二个是眼镜的 ...

  为了改变你的应用的风格,可以从工具面板中添加一个TStyleBook到表格中。在项目管理器中,确保Android被选为目标平台。为你的应用(空白的设计面)选择TForm,并在对象检查器中设置StyleBook属性为你刚刚放置到表格中的TStyleBook。现在双击TStyleBook然后点击加载按钮,并导航到styles文件夹下。默认情况下该文件夹可以在这个路径下被找到:

C:\Users\Public\Documents\Embarcadero\Studio\14.0\Styles\Android


  Glass应用通常有一个能在透明背景下显示出轮廓的白色应用图标。你可以在工程选项对话框的Application选项中改变应用的启动图标。


构建你的应用

  这个时候你已经准备好去为Google眼镜构建一个与Glass一体化的应用。Glass与传统的移动应用相较而言,是一种不同的使用范例,因此你需要在应用设计中投入一些思考。下面是一些有关如何与Glass的不同元素交互从而达到更好的用户体验的小技巧。


使用传感器

  Glass没有键盘或触摸屏,但仍然具有移动设备所有的标准的传感器。你可以使用标准的传感器组件来访问这些传感器。


定位和GPS

  Glass内置有GPS。TLocationSensor具有一个OnLocationChanged事件,这一事件在GPS组件被激活时产生,在有除Distance性质的以外的位置信息改变时也会产生这一事件。在OnLocationChanged事件的处理方法中,有一个 NewLocation参数,这一参数包含新位置的经纬度。


运动和方向追踪

  要追踪Glass和穿戴者的运动和方向,需要使用TMotionSensorTOrientationSensor组件。它们提供设备的加速度、角度状态、前进方向、速度和运动等信息。由于Glass被用户穿戴在头上,因此设备的这些运动信息实际上被翻译成用户如何张望、头部如何运动等信息。

  实际上信息是从很多不同的传感器中获取的,包括陀螺仪、磁力计、加速计。你可以在一段时间内使用一个TTimer来轮询传感器的运动和方向信息,也可以只读取某一个时刻的信息。


Camera处理

 

  TCameraComponent 可以操作相机中的帧. 可以一次抓取多个帧作为预览,也可以一次一帧. Google在抓取图像时需要保持设备的打开状态,但不一定需要展示正在捕获的图像 (尽管展示当前图像更有利于使用者).


  调用 TCameraComponent, 设置 Active属性为true, 接着相应OnSampleBufferReadyevent. 记住这一过程不是在 UI 线程里, 所以要想UI 显示更新的图像,需要使用下述代码:


01// Event handler for the CameraComponent’s SampleBufferReady event
02procedure TMainForm.CameraComponent1SampleBufferReady(
03  Sender: TObject; const ATime: Int64);
04Begin
05  // Use Synchronize to move the execution to the main UI thread.
06  TThread.Synchronize(TThread.CurrentThread, GetImage);
07end;
08  
09procedure TMainForm.GetImage;
10begin
11  // imgCameraView is a TImage component on the UI for displaying the image
12  CameraComponent1.SampleBufferToBitmap(imgCameraView.Bitmap, True);
13end;


使用触摸板


  与touchpad进行交互的最简单的方式是交互式手势。Pan 交互式手势提供了一系列事件当你的手指在触摸板上滑动时。举个例子,你可以使用Pan手势的水平移动来完成不同选项之间的切换。


  为响应交互式手势,只需简单的拓展表单的触摸属性,然后指定独特的你想接受事件的交互式手势。 之后,当用户进行交互式手势操作时,OnGesture事件会触发这里有一个手势处理器的例子,允许用户基于交互式手势的水平位置来设置屏幕的超时时间。


01procedure TMainForm.FormGesture(Sender: TObject;
02  const EventInfo: TGestureEventInfo; var Handled: Boolean);
03var
04  x: Integer;
05begin
06  // Handle the Pan Interactive Gesture
07  if EventInfo.GestureID = igiPan then
08  begin
09    // Specific processing for the beginning of the gesture – save the start location
10    if TInteractiveGestureFlag.gfBegin in EventInfo.Flags then
11    begin
12      fPanStart := EventInfo.Location;
13      fStartVal := pbTimeOut.Value;
14    end
15    else
16    // Specific processing at the end of the gesture – set the timeout
17    if TInteractiveGestureFlag.gfEnd in Eventinfo.Flags then
18    begin
19      SetScreenOffTimeout(Trunc(pbTimeOut.Value * 1000));
20    end
21    else
22    // Update the display based on the current gesture position
23    begin
24      if not (TInteractiveGestureFlag.gfInertia in EventInfo.Flags) then
25      begin
26        x := Trunc((fPanStart.X - EventInfo.Location.X)/10) * 10;
27        pbTimeOut.Value := fStartVal + x;
28      end;
29      DisplayTimeOut(Trunc(pbTimeOut.Value));
30    end;
31  end;
32end;


  注意一点,如果用户在触摸板上滑下那么除了Pan手势之外后退按钮事件也会被触发。你可以 自己捕获并处理后退按钮事件。用下面的代码在你的表单中简单的添加OnKeyUp事件处理器:


1if Key = vkHardwareBack then
2begin  
3  // Do whatever you want to do here  
4  Key := 0;
5  // Set Key = 0 if you want to prevent the default action
6end;


  如果你总是设置Key为0,那么用户将不能退出应用,因此适当的考虑考虑。


结论


  RAD Studio Appmethod为开发原生Glassware提供了极大的便利. 加上支持 C++ 和 Object Pascal, 选择的余地大大增加r. RAD Studio还提供了 原生的示例应用演示了上述的种种特性. 文档也详细说明了 操作步骤 . 此外还提供了 使用其它多种感应器,手势动作等等的示例. 想直接进入 GDK 查看相关的细节也很方便. 而且GDK也在一直持续更新. 可以在我后续的Delphi.org的博文中看到 相关GDK的说明.


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部