与谷歌眼镜打交道时,在开发者预览版本 或 先睹为快状态版本里,谷歌有两个可用的API / SDK。第一个是谷歌眼镜的 Mirror API,这是一个基于RESTful接口,从远程服务器发送卡片到谷歌眼镜timeline的云。第二个是眼镜的开发工具包,构建在Android SDK上,用来开发直接运行在眼镜的应用程序。这些应用程序还可以利用Android NDK和原生代码协作。由于它是建立在Android SDK上,尽管原生应用程序开发时不需要它,但确实公开了一些很好的额外特性。

英巴卡迪诺科技的 Appmethod 应用开发平台 和 RAD Studio 开发工具支持Android应用程序开发,包括支持原生谷歌眼镜的应用程序。你可以用你选择的C++或Object Pascal编程语言。这种支持同时基于Android SDK和NDK。一旦谷歌眼镜的Android ADB驱动加载完毕,你可以对待它就像任何其他Android设备一样。本文使用RAD Studio开发工具来贯穿谷歌眼镜的方方面面。本文示例使用Object Pascal,也涉及到RAD Studio,但是你在这看到的所有示例,也适用于C + +,或个别的C++ Builder和Delphi的产品(用移动附加包)。同样地,这大部分示例也能在Appmethod上工作。你可以按照本文中的步骤,下载一个RAD Studio或 Appmethod 的 免费30天许可 。

谷歌眼镜说明

谷歌眼镜除是一个Android平台的设备外,还意味着更多。本质上来说,它是你穿戴在头上的小型平板。它有一个运行ARM v7 NEON指示的双核ARM Cortex-A9 CPU,一个照相机,和典型的移动设备的传感器。对亏最近的升级,它运行Android 4.4 KitKat(API 19)系统。它能够运行许多原生的Android应用程序,但这仅仅是个开始。

眼镜的主要输出是640x360显示屏,看起来出奇的好。谷歌号称相当于在8英尺处有一个25英寸的屏幕。它还有一个骨传导扬声器和可选的耳机用做放音。它有一大堆的输入传感器:麦克风,加速计,陀螺仪,磁力计(指南针),环境光感器,接近传感器和一个向前可以捕捉5百万像素照片或720p的视频的广角相机。此外,有一个右太阳穴的触摸板,还有一个传感器针对眼睛进行眨眼检测,以及“头检测”的传感器。后两者的支持仍在测试。

Google Glass并不是第一个Android 系统供电光学头戴式电脑,但它可能是最具革新性的。相比于其他Android设备上的通用输入模块:一块触摸屏或者键盘,Google Glass的主要输入设备采用的是声音和位于右侧太阳穴附近的一块非常小的触控式控制板。这块触摸板不能用于点击特定窗口小部件或应用程序,但通常会提供四个基本手势: 向前和向后导航、选择、或者后退按钮,如果没有做过其他操作,回退按钮将退出你的应用程序。

Google Glass的主要用户界面是一系列卡片组成的时间线的概念。一次轻击唤醒Google Glass。向左或向右移动可以使时间轴向前或向后移动。从首页卡上,轻击或使用声音控制可以打开已安装应用程序的列表,当启动某个已安装的应用时,通常会继续使用左侧到右侧的导航模式。

Figure 1 - Google Glass首页屏幕

安装ADB USB驱动

在windows上开发Android应用之前需要安装ADB USB驱动. 在以前,对于Google Glass这一过程更加复杂. 在 Google USB 驱动第9版出来后, Google Glass提供官方的支持. 只需要运行Android Tools工具集(和RAD Studio在一起安装的) 就会打开 Android SDK 管理界面. 在Package列表Extra的最下部安装Google USB 驱动即可.

Figure 2 - Android SDK管理界面

在设备管理界面你会在Other devices看到一个以黄色三角打头的词条,这就是Glass 1.可以在Android SDK 的安装目录下找到extrasgoogleusb_driver. 下面示例为安装了 Android SDK 以及RAD Studio后默认的安装路径:

C:UsersPublicDocumentsEmbarcaderoStudio14.0PlatformSDKsadt-bundle-windows-x86-20131030sdkextrasgoogleusb_driver

建立第一个原生的Glassware App
RAD Studio 可以建立跨终端的各种应用,不论Android或是iOS. 由于Glass的特殊性,这里假设你即将创建的就是该应用. 如果需要在多终端上使用,可以使用混合开发技巧.

RAD Studio提供创建应用的多种模板. 先从空白应用开始, 这也是大多数Glassware的入口点, 当然了3D应用的广泛性也是不言而喻的.

Figure 3 - FireMonkey Mobile Application Wizard

为谷歌眼镜设置IDE

主显示屏的实际分辨率是640x360, 而它的像素密度是1.5。这就意味着一个有效分辨率为472x240的控制布局 (实际像素除以像素密度)。 RAD Studio 包含一个针对谷歌眼镜,尺寸已经精准的设备布局器。您可以在IDE的设计图面上从下拉列表中选择它。

Figure 4 - Design Surface with Google Glass Layout

这种布局将谷歌眼镜的任一颜色都有效。同样的,您可以在设备管理中通过(Tools -> Options -> Environment Options -> Form Designer -> Device Manager)定义你自己的谷歌眼镜设备。为Android平台添加一个新的设备。您只需激活景观左方向。您将需要提供一个至少472x240像素的背景图片。如果你愿意,你可以指定状态栏的大小,但是你将通常把它隐藏在眼镜应用里 (更多关于这一点)。

声控启动支持

当运行你的应用时它会自动启动,但是一旦你关闭了应用,你将不会再菜单中找到它。这是因为谷歌眼镜和其他传统安卓应用相比,采用了不同的启动机制。不过,这个问题很容易添加支持。

一旦你第一次创建了你的应用程序,RAD Studio会创建一个AndroidManifest.template.xml文件。这个模版文件是用来为你的安卓应用生成实际使用的AndroidManifest.xml文件。

我发现添加该文件到项目中使得按需打开并编辑该文件其实非常简单。右键点击你的项目文件,选择Add...这会打开一个文件浏览对话框使得你可以选择AndroidMainfest.template.xml。这时,你可以通过Project Manager双击该文件打开编辑。

这有两个编辑操作需要保证在你的操作清单中。第一个在标签中。你需要指定你想要回应声音触发器的操作。可以通过添加下面的标签实现:

<action android:name="com.google.android.glass.action.VOICE_TRIGGER" />

然后,你需要在标签中为这个响应添加元数据:

<meta-data android:name="com.google.android.glass.VoiceTrigger" android:resource="@xml/voice_trigger_start" />

此参数指定 了XML 文件 voice_trigger_start.xml 将定义你的声音触发器。此文件可以具有任何名称, 虽然它应该在 XML 目录中,但当你添加文件时它需要和此处指定的名称匹配

关于声音触发器的需要注意一点:Google有一个核准的 voice triggers 列表,但是如果你想使用一个不同的,你只能被允许在开发中使用,并且需要在你的manifest中添加特殊的权限。直接将下面的内容添加到 <%uses-permission%> 的后面:

<uses-permission android:name="com.google.android.glass.permission.DEVELOPMENT" />

你可以提交自己的推荐声音触发器到Google,如果被批准了将会添加到这个列表中。

现在你需要创建一个 voice_trigger_start.xml 文件。

1.右键 Project Manager 然后选择 Add New > Other > Web Documents > XML File来添加一个新的XML文件到你的项目中。

2.重命名这个XML文件为voice_trigger_start.xml 或者任何你在manifest中指定的名字. manifest不包含 .xml 后缀.

3.保存XML文件到你的项目目录下.

4.像下面这样编辑XML文件:

<?xml version="1.0" encoding="UTF-8"?><trigger keyword="Your keyword here" />

如果你有指定的开发许可,你可以用任意你想要的短语或关键字来替换 Your keyword here。现在当你的应用被部署后,它将会与应用图片一起显示在菜单系统上。

最终, 你需要配置你的部署使得voice_trigger_start.xml 文件被放在Android应用apk包的正确位置。 可以通过部署管理器来完成这一配置,具体参看 Project > Deployment 菜单选项。简单的点击添加文件按钮(左边第二个)然后浏览并选择 voice_trigger_start.xml 文件。 添加文件后你需要编辑 res/xml的 Remote Path, 这将会将它放到apk包的正确位置。

通用Glass App配置

通常来讲,安卓应用中都会在屏幕上方放置一个状态栏。在Google Glass中,状态栏是隐藏的。在你的应用中隐藏工具栏需要进行两个步骤的处理。首先,你可以在设计阶段讲表格的BoarderStyle设置为None。接着,为了在运行阶段移除状态栏,需要依次点击Project->Options->Version Info,在最上面的下拉框中选择All configurations – Android Platform,然后将键theme的值从TitleBar修改为No TitleBar。

Figure 5 - 工程选项 - 主题无标题栏

默认的安卓主题是灰色和黑色字体配合白色背景的Halo Light。对于手机或者平板来讲,这个主题是不错的,但是在Google Glass上面,白色像素非常亮,导致黑色像素基本上是透明的一样。距离你的眼睛非常近的一块几乎全白的屏幕就像拿一个手电筒照你的眼睛,非常不舒服。幸好RAD Studio还有一款Halo Dark主题,和一款为Google Glass量身打造的一款风格主题。这款风格主题背景为黑色,字体采用淡淡的彩色并具有稍大的字号。这是一款基于推荐的Google Glass风格主题。

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

C:UsersPublicDocumentsEmbarcaderoStudio14.0StylesAndroid

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

构建你的应用

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

开发原生的 Google 眼镜应用 【已翻译100%】(1/2)相关推荐

  1. 开发原生的 Google 眼镜应用 【已翻译100%】(2/2)

    使用传感器 Glass没有键盘或触摸屏,但仍然具有移动设备所有的标准的传感器.你可以使用标准的传感器组件来访问这些传感器. 定位和GPS Glass内置有GPS.TLocationSensor具有一个 ...

  2. ASP.NET MVC 的 WebGrid 的 6 个重要技巧 【已翻译100%】

    ASP.NET MVC 中 WebGrid 的 6 个重要技巧 https://www.oschina.net/translate/webgrid-in-asp-net-mvc-important-t ...

  3. 从 C++ 到 Objective-C 的快速指南 【已翻译100%】

    **简介 ** 当我开始为iOS写代码的时候,我意识到,作为一个C++开发者,我必须花费更多的时间来弄清楚Objective-C中怪异的东西.这就是一个帮助C++专家的快速指南,能够使他们快速的掌握A ...

  4. 微服务最佳实践 【已翻译100%】

    在我还不知道什么叫微服务架构的时候我就使用过它.以前,我写了一些管道程序(pipeline application),它由一些相互和队列交互的模块构成.自那之后,一批ThoughtWorks的专家也讨 ...

  5. 编程语言python这个词怎么翻译_五大理由从 Python 转到 Go 语言【已翻译100%】...

    #3 优化 令人惊讶的是,在大多数的应用场景中,Go 语言比 Python(版本2或3)更快.Benchmarking Game 中可以看到对比的结果,当然这是不公平的,这依赖于应用类型和用户用例. ...

  6. 改善OpenStack上DHCP的性能 【已翻译100%】

    你有没有碰到过OpenStack中,VM失去IP地址的问题?如果有的话,你知道那可能是什么问题 --特别是如果你拥有大量的节点和VM.你的客户会因为没有明显原因却断了与VM的连接而感到 挫败.甚至云的 ...

  7. java 翻译 go语言_cgo 和 Go 语言是两码事【已翻译100%】...

    cgo不是Go 借用 JWZ的一句话 有些人,当他们面临一个问题时,认为"我知道,我会使用 cgo ".那么现在,他们有了两个问题. 最近有人在 Gopher 的 Slack Ch ...

  8. Google眼镜 失败的传感器开发

    Google眼镜 头部转动跟踪的失败开发 开发一个基于google眼镜的头部方向跟踪项目 原方案是利用google眼镜上的加速度传感器或者重力传感器进行坐标的跟踪,从而实现对头部运动的跟踪. 第一步实 ...

  9. unity 谷歌广告介入_Unity为开发人员发布Google广告

    unity 谷歌广告介入 Everyone loves something new. New ad formats, new advertisers, and new content means mo ...

最新文章

  1. 1、Reactive Extensions for .NET(译)
  2. QT的QAudioDeviceInfo类的使用
  3. 逆向与汇编的一些笔记
  4. Linux watch 监控系统状态
  5. 达梦数据查询编码_查询数据库的编码方式
  6. POJ1212 HDU1650 UVA180 LA5240 Eeny Meeny【约瑟夫环】
  7. 嵌入式学习步骤及方法(精典)
  8. HTML中更改hr宽度高度颜色
  9. 扪心自问!15个IT技术人员必须思考的问题
  10. 硬盘提示设备未就绪要如何办啊
  11. 1、开启ArcGIS 脚本学习之路
  12. 计算机会计内容是什么,会计电算化包括什么内容
  13. vue_music:歌手singer.vue页面
  14. Vue生命周期(个人理解)
  15. vivo公司商业模型分析 - SWOT模型/ 麦肯锡7S模型 /波特五力分析模型
  16. 为什么剩余数不能相加_数学运算之剩余问题
  17. Java封装的具体概念及如何实现封装
  18. 开放·凝聚·激励 :云和恩墨2019年中团建圆满结束
  19. 项目整合bboss框架连接Elasticsearch
  20. IMX6ULL学习笔记(20)——UART串口使用

热门文章

  1. 中国最强AI超级服务器问世,每秒提供AI计算2000万亿次
  2. 大厂女神节,到处都是企业文化的味道
  3. 证券市场股票基金等数据接口
  4. java.exe 关闭后自动重启
  5. 相位解包裹 matlab,二维相位解包裹matlab
  6. Buck电路基本介绍
  7. sysbench 做性能测试
  8. 直线的参数方程ABC【基础中级高阶辅导】
  9. 神经网络时间序列分析,神经网络模型可解释性
  10. JVM-类加载器 详解(手画多图)面试常问 绝对值得阅读!!!