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

開發(fā)原生的 Google 眼鏡應(yīng)用

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

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

英巴卡迪諾科技的  Appmethod  應(yīng)用開發(fā)平臺和 RAD Studio 開發(fā)工具支持Android應(yīng)用程序開發(fā),包括支持原生谷歌眼鏡的應(yīng)用程序。你可以用你選擇的C++或Object Pascal編程語言。這種支持同時基于Android SDK和NDK。一旦谷歌眼鏡的Android ADB驅(qū)動加載完畢,你可以對待它就像任何其他Android設(shè)備一樣。本文使用RAD Studio開發(fā)工具來貫穿谷歌眼鏡的方方面面。本文示例使用Object Pascal,也涉及到RAD Studio,但是你在這看到的所有示例,也適用于C + +,或個別的C++ Builder和Delphi的產(chǎn)品(用移動附加包)。同樣地,這大部分示例也能在Appmethod上工作。你可以按照本文中的步驟,下載一個RAD Studio或  Appmethod 的  免費30天許可 。

谷歌眼鏡說明

谷歌眼鏡除是一個Android平臺的設(shè)備外,還意味著更多。本質(zhì)上來說,它是你穿戴在頭上的小型平板。它有一個運行ARM v7 NEON指示的雙核ARM Cortex-A9 CPU,一個照相機,和典型的移動設(shè)備的傳感器。對虧最近的升級,它運行Android 4.4 KitKat(API 19)系統(tǒng)。它能夠運行許多原生的Android應(yīng)用程序,但這僅僅是個開始。

眼鏡的主要輸出是640x360顯示屏,看起來出奇的好。谷歌號稱相當于在8英尺處有一個25英寸的屏幕。它還有一個骨傳導揚聲器和可選的耳機用做 放音。它有一大堆的輸入傳感器:麥克風,加速計,陀螺儀,磁力計(指南針),環(huán)境光感器,接近傳感器和一個向前可以捕捉5百萬像素照片或720p的視頻的 廣角相機。此外,有一個右太陽穴的觸摸板,還有一個傳感器針對眼睛進行眨眼檢測,以及“頭檢測”的傳感器。后兩者的支持仍在測試。

Google Glass并不是第一個Android 系統(tǒng)供電光學頭戴式電腦,但它可能是最具革新性的。相比于其他Android設(shè)備上的通用輸入模塊:一塊觸摸屏或者鍵盤,Google Glass的主要輸入設(shè)備采用的是聲音和位于右側(cè)太陽穴附近的一塊非常小的觸控式控制板。這塊觸摸板不能用于點擊特定窗口小部件或應(yīng)用程序,但通常會提供 四個基本手勢: 向前和向后導航、選擇、或者后退按鈕,如果沒有做過其他操作,回退按鈕將退出你的應(yīng)用程序。

Google Glass的主要用戶界面是一系列卡片組成的時間線的概念。一次輕擊喚醒Google Glass。向左或向右移動可以使時間軸向前或向后移動。從首頁卡上,輕擊或使用聲音控制可以打開已安裝應(yīng)用程序的列表,當啟動某個已安裝的應(yīng)用時,通常 會繼續(xù)使用左側(cè)到右側(cè)的導航模式。

Figure 1 - Google Glass首頁屏幕

安裝ADB USB驅(qū)動

在windows上開發(fā)Android應(yīng)用之前需要安裝ADB USB驅(qū)動. 在以前,對于Google Glass這一過程更加復雜. 在 Google USB 驅(qū)動第9版出來后, Google Glass提供官方的支持. 只需要運行Android Tools工具集(和RAD Studio在一起安裝的) 就會打開 Android SDK 管理界面. 在Package列表Extra的最下部安裝Google USB 驅(qū)動即可.

Figure 2 - Android SDK管理界面

在設(shè)備管理界面你會在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 可以建立跨終端的各種應(yīng)用,不論Android或是iOS. 由于Glass的特殊性,這里假設(shè)你即將創(chuàng)建的就是該應(yīng)用. 如果需要在多終端上使用,可以使用混合開發(fā)技巧.

RAD Studio提供創(chuàng)建應(yīng)用的多種模板. 先從空白應(yīng)用開始, 這也是大多數(shù)Glassware的入口點, 當然了3D應(yīng)用的廣泛性也是不言而喻的.

Figure 3 - FireMonkey Mobile Application Wizard

為谷歌眼鏡設(shè)置IDE

主顯示屏的實際分辨率是640x360, 而它的像素密度是1.5。這就意味著一個有效分辨率為472x240的控制布局 (實際像素除以像素密度)。 RAD Studio 包含一個針對谷歌眼鏡,尺寸已經(jīng)精準的設(shè)備布局器。您可以在IDE的設(shè)計圖面上從下拉列表中選擇它。

Figure 4 - Design Surface with Google Glass Layout

這種布局將谷歌眼鏡的任一顏色都有效。同樣的,您可以在設(shè)備管理中通過(Tools -> Options -> Environment Options -> Form Designer -> Device Manager)定義你自己的谷歌眼鏡設(shè)備。為Android平臺添加一個新的設(shè)備。您只需激活景觀左方向。您將需要提供一個至少472x240像素的背 景圖片。如果你愿意,你可以指定狀態(tài)欄的大小,但是你將通常把它隱藏在眼鏡應(yīng)用里 (更多關(guān)于這一點)。

聲控啟動支持

當運行你的應(yīng)用時它會自動啟動,但是一旦你關(guān)閉了應(yīng)用,你將不會再菜單中找到它。這是因為谷歌眼鏡和其他傳統(tǒng)安卓應(yīng)用相比,采用了不同的啟動機制。不過,這個問題很容易添加支持。

一旦你第一次創(chuàng)建了你的應(yīng)用程序,RAD Studio會創(chuàng)建一個AndroidManifest.template.xml文件。這個模版文件是用來為你的安卓應(yīng)用生成實際使用的AndroidManifest.xml文件。

我發(fā)現(xiàn)添加該文件到項目中使得按需打開并編輯該文件其實非常簡單。右鍵點擊你的項目文件,選擇Add...這會打開一個文件瀏覽對話框使得你可以選擇AndroidMainfest.template.xml。這時,你可以通過Project Manager雙擊該文件打開編輯。

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

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

然后,你需要在<activity>標簽中為這個響應(yīng)添加元數(shù)據(jù):

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

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

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

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

你可以提交自己的推薦聲音觸發(fā)器到Google,如果被批準了將會添加到這個列表中。

現(xiàn)在你需要創(chuàng)建一個 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" /> 

如果你有指定的開發(fā)許可,你可以用任意你想要的短語或關(guān)鍵字來替換 Your keyword here。現(xiàn)在當你的應(yīng)用被部署后,它將會與應(yīng)用圖片一起顯示在菜單系統(tǒng)上。

最終, 你需要配置你的部署使得voice_trigger_start.xml 文件被放在Android應(yīng)用apk包的正確位置。 可以通過部署管理器來完成這一配置,具體參看 Project > Deployment 菜單選項。簡單的點擊添加文件按鈕(左邊第二個)然后瀏覽并選擇 voice_trigger_start.xml 文件。 添加文件后你需要編輯 res/xml的 Remote Path, 這將會將它放到apk包的正確位置。

通用Glass App配置

通常來講,安卓應(yīng)用中都會在屏幕上方放置一個狀態(tài)欄。在Google Glass中,狀態(tài)欄是隱藏的。在你的應(yīng)用中隱藏工具欄需要進行兩個步驟的處理。首先,你可以在設(shè)計階段講表格的BoarderStyle設(shè)置為None。接著,為了在運行階段移除狀態(tài)欄,需要依次點擊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風格主題。

為了改變你的應(yīng)用的風格,可以從工具面板中添加一個TStyleBook到表格中。在項目管理器中,確保Android被選為目標平臺。為你的應(yīng)用 (空白的設(shè)計面)選擇TForm,并在對象檢查器中設(shè)置StyleBook屬性為你剛剛放置到表格中的TStyleBook。現(xiàn)在雙擊 TStyleBook然后點擊加載按鈕,并導航到styles文件夾下。默認情況下該文件夾可以在這個路徑下被找到:

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

Glass應(yīng)用通常有一個能在透明背景下顯示出輪廓的白色應(yīng)用圖標。你可以在工程選項對話框的Application選項中改變應(yīng)用的啟動圖標。

構(gòu)建你的應(yīng)用

這個時候你已經(jīng)準備好去為Google眼鏡構(gòu)建一個與Glass一體化的應(yīng)用。Glass與傳統(tǒng)的移動應(yīng)用相較而言,是一種不同的使用范例,因此你需要在應(yīng)用設(shè)計中投入一些思考。下面是一些有關(guān)如何與Glass的不同元素交互從而達到更好的用戶體驗的小技巧。

使用傳感器

Glass沒有鍵盤或觸摸屏,但仍然具有移動設(shè)備所有的標準的傳感器。你可以使用標準的傳感器組件來訪問這些傳感器。

定位和GPS

Glass內(nèi)置有GPS。TLocationSensor具有一個OnLocationChanged事件,這一事件在GPS組件被激活時產(chǎn)生,在 有除Distance性質(zhì)的以外的位置信息改變時也會產(chǎn)生這一事件。在OnLocationChanged事件的處理方法中,有一個 NewLocation參數(shù),這一參數(shù)包含新位置的經(jīng)緯度。

運動和方向追蹤

要追蹤Glass和穿戴者的運動和方向,需要使用TMotionSensorTOrientationSensor組件。它們提供設(shè)備的加速度、角度狀態(tài)、前進方向、速度和運動等信息。由于Glass被用戶穿戴在頭上,因此設(shè)備的這些運動信息實際上被翻譯成用戶如何張望、頭部如何運動等信息。

實際上信息是從很多不同的傳感器中獲取的,包括陀螺儀、磁力計、加速計。你可以在一段時間內(nèi)使用一個TTimer來輪詢傳感器的運動和方向信息,也可以只讀取某一個時刻的信息。

Camera處理

TCameraComponent 可以操作相機中的幀. 可以一次抓取多個幀作為預(yù)覽,也可以一次一幀. Google在抓取圖像時需要保持設(shè)備的打開狀態(tài),但不一定需要展示正在捕獲的圖像 (盡管展示當前圖像更有利于使用者).

調(diào)用 TCameraComponent, 設(shè)置 Active屬性為true, 接著相應(yīng)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手勢的水平移動來完成不同選項之間的切換。

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

  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手勢之外后退按鈕事件也會被觸發(fā)。你可以 自己捕獲并處理后退按鈕事件。用下面的代碼在你的表單中簡單的添加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; 

如果你總是設(shè)置Key為0,那么用戶將不能退出應(yīng)用,因此適當?shù)目紤]考慮。

結(jié)論

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

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

物聯(lián)網(wǎng)眼鏡技術(shù)

2013-02-20 09:44:21

GoogleGoogle GlasGoogle眼鏡

2024-03-11 15:54:36

AI眼鏡生成式AI

2013-03-25 16:27:59

2015-05-04 13:21:56

DartAndroid

2012-07-06 13:16:37

Google Go

2022-02-21 09:00:00

云原生應(yīng)用開發(fā)

2012-04-09 22:16:41

Google 眼鏡

2019-12-23 14:28:43

AR眼鏡機器學習算法

2023-01-05 14:41:24

2013-11-22 11:03:45

GoogleWeb開發(fā)工具

2010-02-06 14:19:26

ibmdwGoogleMap
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲性视频 | 日韩精品视频在线观看一区二区三区 | 日韩免费1区二区电影 | 免费黄色在线观看 | 欧美精品久久 | 久久久久久综合 | 国产激情在线 | 久久久精品一区二区 | 成年人精品视频 | 精品在线视频播放 | 狠狠干五月天 | 久久久久亚洲精品 | 免费看国产一级特黄aaaa大片 | 精品国产一区二区国模嫣然 | 在线观看国产视频 | 天堂久久天堂综合色 | 欧美一极视频 | 欧美三级在线 | 女人av | 中文字幕亚洲欧美 | 成人午夜精品 | 成人av免费 | 欧美日韩国产一区二区 | 国产国语精品 | 国产天堂| 日韩视频区 | 久色网| 亚洲视频一区二区三区四区 | 欧美精品在线播放 | 美国a级毛片免费视频 | 成人不卡视频 | 国产一区二区三区久久久久久久久 | 久草在线青青草 | av网站在线看 | 97精品国产手机 | 国产日韩欧美另类 | 欧美日韩在线电影 | 人人做人人澡人人爽欧美 | 日本色高清 | 97国产精品视频人人做人人爱 | h片在线播放|