開發原生的 Google 眼鏡應用 【已翻譯100%】(2/2)

使用傳感器

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

定位和GPS

Glass內置有GPS。TLocationSensor具有一個OnLocationChanged事件,這一事件在GPS組件被激活時產生,在有除Distance性質的以外的位置信息改變時也會產生這一事件。在OnLocationChanged事件的處理方法中,有一個 NewLocation參數,這一參數包含新位置的經緯度。

運動和方向追蹤

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

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

Camera處理

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

調用 TCameraComponent, 設置 Active屬性為true, 接著相應OnSampleBufferReadyevent. 記住這一過程不是在 UI 線程里, 所以要想UI 顯示更新的圖像,需要使用下述代碼:

// Event handler for the CameraComponent’s SampleBufferReady event
procedure TMainForm.CameraComponent1SampleBufferReady(Sender: TObject; const ATime: Int64);
Begin// Use Synchronize to move the execution to the main UI thread.TThread.Synchronize(TThread.CurrentThread, GetImage);
end;procedure TMainForm.GetImage;
begin// imgCameraView is a TImage component on the UI for displaying the imageCameraComponent1.SampleBufferToBitmap(imgCameraView.Bitmap, True);
end;

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

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

procedure TMainForm.FormGesture(Sender: TObject;const EventInfo: TGestureEventInfo; var Handled: Boolean);
varx: Integer;
begin// Handle the Pan Interactive Gestureif EventInfo.GestureID = igiPan thenbegin// Specific processing for the beginning of the gesture – save the start locationif TInteractiveGestureFlag.gfBegin in EventInfo.Flags thenbeginfPanStart := EventInfo.Location;fStartVal := pbTimeOut.Value;endelse// Specific processing at the end of the gesture – set the timeoutif TInteractiveGestureFlag.gfEnd in Eventinfo.Flags thenbeginSetScreenOffTimeout(Trunc(pbTimeOut.Value * 1000));endelse// Update the display based on the current gesture positionbeginif not (TInteractiveGestureFlag.gfInertia in EventInfo.Flags) thenbeginx := Trunc((fPanStart.X - EventInfo.Location.X)/10) * 10;pbTimeOut.Value := fStartVal + x;end;DisplayTimeOut(Trunc(pbTimeOut.Value));end;end;
end;

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

if Key = vkHardwareBack then
begin  // Do whatever you want to do here  Key := 0;// Set Key = 0 if you want to prevent the default action
end;

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

結論

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541293.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541293.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541293.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux下php的安裝,Linux下PHP安裝

1 下載php源碼安裝包 個人是php-5.6.30.tar.gzphp2 解壓文件mysqltar -zxvf php-5.6.30.tar.gznginx3 編譯安裝sqlcd php-5.6.30api建立www用戶和www用戶組curlgroupadd wwwsocketuseradd -g www wwwphp-fpm在編譯以前先把依賴包都裝上urlyum install curl curl-develyum inst…

PHP array_filter()函數與示例

PHP array_filter()函數 (PHP array_filter() Function) array_filter() function is used to apply a filter on array elements based on the function and returns the array with filtered elements, it accepts an array to be checked and a callback function. The call…

微軟宣布以 262 億美元現金收購 LinkedIn

北京時間6月13日20:45(美國當地時間6月13日上午8:45),微軟(Nasdaq: MSFT)和LinkedIn(領英,NYSE: LNKD)對外宣布,雙方達成協議,微軟宣布將以每股196美元、總價262億美元的價格收購LinkedIn,由現金…

linux vim 快速定位位置,vim快速移動定位的一些操作命令

很多時候你在編輯文件時移動光標都會花很長時間,這樣就無法高效的編輯了,要想達到高效編輯最好能夠將光標馬上定位到你需要的位置,vim就是可以滿足你這樣需求的一款編輯器,本節就要講一下vim快速移動定位的一些操作命令。下面的操…

本月初 本月末 java_本月內容作家(2018年8月)

本月初 本月末 javaWe are feeling glad to announce that Prerana Jain is the Content Writer Of The Month (August 2018) on the basis of her excellent contribution and her support to us. 我們很高興地宣布, Prera??na Jain憑借其出色的貢獻和對我們的支…

“玲瓏杯”線上賽 Round #15 河南專場 F 咸魚文章

elttiL moT nwod eht teerts sllac ruo god ” ehT peek god ” . piZ si a peehs god . tuB nehw moT seirt ot yas ” peeS ” , ti semoc tuo ” peek ” . dnA ni a yaw moT si thgir . piZ si syawla gnignirb sgniht oh rof su ot peek ! ll’I llet uoy tuoba emos fo m…

線性代數向量內積_向量的外積| 使用Python的線性代數

線性代數向量內積Prerequisites: 先決條件: Defining Vector using Numpy 使用Numpy定義向量 Learn: how to code for outer product of two vectors using am inbuilt function in numpy library? 了解:如何使用numpy庫中的內置函數為兩個向量的外部乘…

c語言案例朗讀工具源碼,C語言編寫簡單朗讀小工具(有源碼)

原標題:C語言編寫簡單朗讀小工具(有源碼)最近不少人在后臺留言說學C都是面對枯燥的控制臺程序,能不能體現一下C語言的實際用途,今天我們就理論結合實踐一把:C語言結合VBS腳本編寫一個簡單的朗讀小工具,做一個能夠發音的…

WAS集群系列(5):集群搭建:步驟3:安裝IHS軟件

選擇“安裝IBM HTTPServer”選項,點擊“安裝向導”。例如以下圖提示: 安裝提示,逐步點擊“下一步”,當中偶有幾處細節注意就可以。列舉例如以下: (1)、產品安裝路徑與先前WAS軟件所安裝路徑統一…

L1-056 猜數字 C語言,PAT L1-032 Left-pad

根據新浪微博上的消息,有一位開發者不滿NPM(Node Package Manager)的做法,收回了自己的開源代碼,其中包括一個叫left-pad的模塊,就是這個模塊把javascript里面的React/Babel干癱瘓了。這是個什么樣的模塊?就是在字符串…

單鏈表刪除整表_單鏈表刪除

單鏈表刪除整表Deletion can be at various positions like: 刪除可以在各個位置進行,例如: Deleting the first node 刪除第一個節點 Deleting the last node 刪除最后一個節點 Deleting the intermediate node 刪除中間節點 刪除單個鏈表中的第一個節…

WordPress數據表wp-options數據字段存JSON數據

2019獨角獸企業重金招聘Python工程師標準>>> wp_options表是WordPress中最重要的表,一切程序設置、主題設置和絕大多數插件的設置大都保存在此表。 WordPress里面數據表wp-options數據字段存JSON數據 : a:90: {s:11:"^wp-json/?$"…

css scroll屬性_CSS中的scroll-behavior屬性

css scroll屬性CSS | 滾動行為屬性 (CSS | scroll-behavior property) Who does not want their links to function smoothly and attractively? This type of functionality is very easy to implement. All you need is a bit of awareness about the property that would h…

c 語言五子棋游戲代碼,C語言案例:控制臺版本的五子棋游戲【代碼】

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓return true;}x;}return false;}bool isLeftInclinedWin(bool isBlack,int x,int y){char c isBlack ? :O;int count;while(x>0 && y>0 && state[x][y] c){y--;x--;}count 0;if(state[x][y] c) count 1…

基于HTML5 Canvas 實現彈出框

用戶鼠標移入時,有彈出框出現,這樣的需求很常見。這在處理HTML元素實現時簡單,但是如果是對 HTML5 Canvas 構成的圖形進行處理,這種方法不再適用,因為 Canvas 使用的是另外一套機制,無論在 Canvas 上繪制多…

半素數c語言,非常簡單的c題目 不懂 緊急求助

1 半素數素數是指大于1且只有1和他本身兩個因子的正整數,例如2、3、5、89都是素數,2、4、10都不是素數。在這里我給半素數下一個定義:一個大于1的正整數能分解為兩個素數的乘積,那么這個正整數就是半素數,比如62*3&am…

JavaScript | 嵌套if的示例

Example: 例: In this example, we are reading salary of an employee and finding the discount and net pay based on given salary and discount rate. 在此示例中,我們正在讀取員工的薪水,并根據給定的薪水和折扣率找到折扣和凈工資。 …

POJ 1014 Dividing 背包

二進制優化,事實上是物體的分解問題。 就是比方一個物體有數量限制,比方是13,那么就須要把這個物體分解為1。 2, 4, 6 假設這個物體有數量為25,那么就分解為1, 2, 4。 8。 10 看出規…

node.js 中間件_Node.js中的Passport中間件(模塊)

node.js 中間件Hi! Welcome to Node.js Authentication Series, where well study and program the passport module or middleware. 嗨! 歡迎使用Node.js身份驗證系列 ,我們將在其中研究和編程通行證模塊或中間件 。 Nowadays, an important tool in m…

android開發自動提示框,Android 多種簡單的彈出框樣式設置代碼

簡介這是一個基于AlertDialog和Dialog這兩個類封裝的多種彈出框樣式,其中提供各種簡單樣式的彈出框使用說明。同時也可自定義彈出框。項目地址:http://www.easck.com/jjdxmashl/jjdxm_dialogui特性1.使用鏈式開發代碼簡潔明了2.所有的彈出框樣式都在Dial…