自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

谷歌眼鏡說明

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

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

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

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

Figure 1 - Google Glass首頁屏幕

安裝ADB USB驅(qū)動(dòng)

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

Figure 2 - Android SDK管理界面

在設(shè)備管理界面你會(huì)在Other devices看到一個(gè)以黃色三角打頭的詞條,這就是Glass 1.可以在Android SDK 的安裝目錄下找到extras\google\usb_driver. 下面示例為安裝了 Android SDK 以及RAD Studio后默認(rèn)的安裝路徑:

C:\Users\Public\Documents\Embarcadero\Studio\14.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\extras\google\usb_driver

建立第一個(gè)原生的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的入口點(diǎn), 當(dāng)然了3D應(yīng)用的廣泛性也是不言而喻的.

Figure 3 - FireMonkey Mobile Application Wizard

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

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

Figure 4 - Design Surface with Google Glass Layout

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

聲控啟動(dòng)支持

當(dāng)運(yùn)行你的應(yīng)用時(shí)它會(huì)自動(dòng)啟動(dòng),但是一旦你關(guān)閉了應(yīng)用,你將不會(huì)再菜單中找到它。這是因?yàn)楣雀柩坨R和其他傳統(tǒng)安卓應(yīng)用相比,采用了不同的啟動(dòng)機(jī)制。不過,這個(gè)問題很容易添加支持。

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

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

這有兩個(gè)編輯操作需要保證在你的操作清單中。第一個(gè)在<intent-filter>標(biāo)簽中。你需要指定你想要回應(yīng)聲音觸發(fā)器的操作??梢酝ㄟ^添加下面的標(biāo)簽實(shí)現(xiàn):

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

然后,你需要在<activity>標(biāo)簽中為這個(gè)響應(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 目錄中,但當(dāng)你添加文件時(shí)它需要和此處指定的名稱匹配

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

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

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

現(xiàn)在你需要?jiǎng)?chuàng)建一個(gè) voice_trigger_start.xml 文件。

  1. 右鍵 Project Manager 然后選擇 Add New > Other > Web Documents > XML File來添加一個(gè)新的XML文件到你的項(xiàng)目中。

  2. 重命名這個(gè)XML文件為voice_trigger_start.xml 或者任何你在manifest中指定的名字. manifest不包含 .xml 后綴.

  3. 保存XML文件到你的項(xiàng)目目錄下.

  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)在當(dāng)你的應(yīng)用被部署后,它將會(huì)與應(yīng)用圖片一起顯示在菜單系統(tǒng)上。

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

通用Glass App配置

通常來講,安卓應(yīng)用中都會(huì)在屏幕上方放置一個(gè)狀態(tài)欄。在Google Glass中,狀態(tài)欄是隱藏的。在你的應(yīng)用中隱藏工具欄需要進(jìn)行兩個(gè)步驟的處理。首先,你可以在設(shè)計(jì)階段講表格的BoarderStyle設(shè)置為None。接著,為了在運(yùn)行階段移除狀態(tài)欄,需要依次點(diǎn)擊Project->Options->Version Info,在最上面的下拉框中選擇All configurations – Android Platform,然后將鍵theme的值從TitleBar修改為No TitleBar。

Figure 5 - 工程選項(xiàng) - 主題無標(biāo)題欄

默 認(rèn)的安卓主題是灰色和黑色字體配合白色背景的Halo Light。對(duì)于手機(jī)或者平板來講,這個(gè)主題是不錯(cuò)的,但是在Google Glass上面,白色像素非常亮,導(dǎo)致黑色像素基本上是透明的一樣。距離你的眼睛非常近的一塊幾乎全白的屏幕就像拿一個(gè)手電筒照你的眼睛,非常不舒服。幸 好RAD Studio還有一款Halo Dark主題,和一款為Google Glass量身打造的一款風(fēng)格主題。這款風(fēng)格主題背景為黑色,字體采用淡淡的彩色并具有稍大的字號(hào)。這是一款基于推薦的Google Glass風(fēng)格主題。

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

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

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

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

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

使用傳感器

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

定位和GPS

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

運(yùn)動(dòng)和方向追蹤

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

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

Camera處理

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

調(diào)用 TCameraComponent, 設(shè)置 Active屬性為true, 接著相應(yīng)OnSampleBufferReadyevent. 記住這一過程不是在 UI 線程里, 所以要想U(xiǎn)I 顯示更新的圖像,需要使用下述代碼:

  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進(jìn)行交互的最簡單的方式是交互式手勢(shì)。Pan 交互式手勢(shì)提供了一系列事件當(dāng)你的手指在觸摸板上滑動(dòng)時(shí)。舉個(gè)例子,你可以使用Pan手勢(shì)的水平移動(dòng)來完成不同選項(xiàng)之間的切換。

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

注意一點(diǎn),如果用戶在觸摸板上滑下那么除了Pan手勢(shì)之外后退按鈕事件也會(huì)被觸發(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)用,因此適當(dāng)?shù)目紤]考慮。

結(jié)論

RAD StudioAppmethod為開發(fā)原生Glassware提供了極大的便利,加上支持 C++ 和 Object Pascal,選擇的余地大大增加r. RAD Studio還提供了原生的示例應(yīng)用演示了上述的種種特性。文檔也詳細(xì)說明了操作步驟。此外還提供了 使用其它多種感應(yīng)器,手勢(shì)動(dòng)作等等的示例,想直接進(jìn)入GDK 查看相關(guān)的細(xì)節(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

責(zé)任編輯:閆佳明 來源: 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

智能手機(jī)Google GlasGoogle眼鏡

2014-08-29 09:41:42

Google Glas開源

2020-04-10 20:50:44

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

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

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

2015-05-04 13:21:56

DartAndroid

2012-07-06 13:16:37

Google Go

2023-12-26 10:04:29

Electron應(yīng)用開發(fā)框架

2012-04-09 22:16:41

Google 眼鏡

2023-01-05 14:41:24

2019-12-23 14:28:43

AR眼鏡機(jī)器學(xué)習(xí)算法

2013-11-22 11:03:45

GoogleWeb開發(fā)工具
點(diǎn)贊
收藏

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