成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

開發原生的 Google 眼鏡應用

移動開發 Android
與谷歌眼鏡打交道時,在開發者預覽版本或先睹為快狀態版本里,谷歌有兩個可用的API / SDK。第一個是谷歌眼鏡的 Mirror API,這是一個基于RESTful接口,從遠程服務器發送卡片到谷歌眼鏡timeline的云。第二個是眼鏡的開發工具包,構建在Android SDK上,用來開發直接運行在眼鏡的應用程序。這些應用程序還可以利用Android NDK和原生代碼協作。由于它是建立在Android SDK上,盡管原生應用程序開發時不需要它,但確實公開了一些很好的額外特性。

與谷歌眼鏡打交道時,在開發者預覽版本或先睹為快狀態版本里,谷歌有兩個可用的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 的安裝目錄下找到extras\google\usb_driver. 下面示例為安裝了 Android SDK 以及RAD Studio后默認的安裝路徑:

C:\Users\Public\Documents\Embarcadero\Studio\14.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\extras\google\usb_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雙擊該文件打開編輯。

這有兩個編輯操作需要保證在你的操作清單中。第一個在<intent-filter>標簽中。你需要指定你想要回應聲音觸發器的操作。可以通過添加下面的標簽實現:

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

然后,你需要在<activity>標簽中為這個響應添加元數據:

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

此參數指定 了XML 文件 voice_trigger_start.xml 將定義你的聲音觸發器。此文件可以具有任何名稱, 雖然它應該在 XML 目錄中,但當你添加文件時它需要和此處指定的名稱匹配

關于聲音觸發器的需要注意一點:Google有一個核準的 voice triggers  列表,但是如果你想使用一個不同的,你只能被允許在開發中使用,并且需要在你的manifest中添加特殊的權限。直接將下面的內容添加到 <%uses-permission%> 的后面:

  1. <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文件:

    1. <?xml version="1.0" encoding="UTF-8"?> 
    2.       
    3. <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:\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 顯示更新的圖像,需要使用下述代碼:

  1. // Event handler for the CameraComponent’s SampleBufferReady event 
  2.     procedure TMainForm.CameraComponent1SampleBufferReady( 
  3.       Sender: TObject; const ATime: Int64); 
  4.     Begin 
  5.       // Use Synchronize to move the execution to the main UI thread. 
  6.       TThread.Synchronize(TThread.CurrentThread, GetImage); 
  7.     end;       
  8.     procedure TMainForm.GetImage; 
  9.      begin 
  10.       // imgCameraView is a TImage component on the UI for displaying the image 
  11.   CameraComponent1.SampleBufferToBitmap(imgCameraView.Bitmap, True); 
  12.     end; 

使用觸摸板

與touchpad進行交互的最簡單的方式是交互式手勢。Pan 交互式手勢提供了一系列事件當你的手指在觸摸板上滑動時。舉個例子,你可以使用Pan手勢的水平移動來完成不同選項之間的切換。

為響應交互式手勢,只需簡單的拓展表單的觸摸屬性,然后指定獨特的你想接受事件的交互式手勢。 之后,當用戶進行交互式手勢操作時,OnGesture事件會觸發這里有一個手勢處理器的例子,允許用戶基于交互式手勢的水平位置來設置屏幕的超時時間。

  1. procedure TMainForm.FormGesture(Sender: TObject; 
  2.       const EventInfo: TGestureEventInfo; var Handled: Boolean); 
  3.     var 
  4.       x: Integer; 
  5.     begin 
  6.       // Handle the Pan Interactive Gesture 
  7.       if EventInfo.GestureID = igiPan then 
  8.       begin 
  9.         // 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; 
  32.     end; 

注意一點,如果用戶在觸摸板上滑下那么除了Pan手勢之外后退按鈕事件也會被觸發。你可以 自己捕獲并處理后退按鈕事件。用下面的代碼在你的表單中簡單的添加OnKeyUp事件處理器:

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

如果你總是設置Key為0,那么用戶將不能退出應用,因此適當的考慮考慮。

結論

RAD StudioAppmethod為開發原生Glassware提供了極大的便利,加上支持 C++ 和 Object Pascal,選擇的余地大大增加r. RAD Studio還提供了原生的示例應用演示了上述的種種特性。文檔也詳細說明了操作步驟。此外還提供了 使用其它多種感應器,手勢動作等等的示例,想直接進入GDK 查看相關的細節也很方便,而且GDK也在一直持續更新,可以在我后續的Delphi.org的博文中看到相關GDK的說明

英文原文:Developing Native Google Glass Apps

參與翻譯(7人):petert, 0x0bject, GoodLoser, AndyLam, Pupa, winnieS, it瞌睡蟲

譯文原文:http://www.oschina.net/translate/developing-native-google-glass-apps

責任編輯:閆佳明 來源: oschina
相關推薦

2013-05-17 11:53:44

googleGoogle Glas

2012-06-06 13:41:46

Google智能眼鏡

2013-07-01 14:17:50

谷歌眼鏡Google Glas

2014-01-17 10:44:36

Google智能隱形眼

2013-04-24 09:08:17

Google眼鏡

2013-04-17 11:03:52

智能手機Google GlasGoogle眼鏡

2014-08-29 09:41:42

Google Glas開源

2020-04-10 20:50:44

物聯網眼鏡技術

2024-03-11 15:54:36

AI眼鏡生成式AI

2013-02-20 09:44:21

GoogleGoogle GlasGoogle眼鏡

2013-03-25 16:27:59

2022-02-21 09:00:00

云原生應用開發

2015-05-04 13:21:56

DartAndroid

2012-07-06 13:16:37

Google Go

2023-01-05 14:41:24

2023-12-26 10:04:29

Electron應用開發框架

2013-11-22 11:03:45

GoogleWeb開發工具

2019-12-23 14:28:43

AR眼鏡機器學習算法

2010-02-06 14:19:26

ibmdwGoogleMap
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本不卡免费新一二三区 | 欲色av | 成人夜晚看av | 又黑又粗又长的欧美一区 | 久久久久一区 | 91精品国产色综合久久 | 国内精品视频免费观看 | 久久99精品久久久久 | 国产精品呻吟久久av凹凸 | 久久不射电影网 | 亚洲一区 | 亚洲精品美女 | 麻豆精品国产91久久久久久 | 最新av在线网址 | 韩国精品一区二区三区 | 国产激情视频在线 | 亚洲精品日韩一区二区电影 | 国产午夜亚洲精品不卡 | 黄网在线观看 | 国产福利二区 | 成人黄色电影在线观看 | 欧美亚洲一区二区三区 | 日韩二区| 久久久久久国产精品久久 | 亚洲一区二区在线播放 | 国产欧美精品一区二区色综合朱莉 | 天天干天天玩天天操 | 福利久久 | 亚洲精品久久久一区二区三区 | 天天操夜夜操 | 91超碰caoporn97人人 | 久久乐国产精品 | 97精品视频在线观看 | 日韩一区二区黄色片 | 欧美精品中文字幕久久二区 | 亚洲精品美女在线观看 | 国产免费一区二区 | 国产精品1| 51ⅴ精品国产91久久久久久 | 99久久久无码国产精品 | 自拍偷拍亚洲欧美 |