• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于安卓手機的智能測量儀App設計與實現(xiàn)

      2018-12-13 07:02:02孫嘉鵬北京市十一學校
      數(shù)碼世界 2018年11期
      關鍵詞:傾斜角調(diào)用代碼

      孫嘉鵬 北京市十一學校

      1.開發(fā)背景與需求

      在日常生活中,我們經(jīng)常會遇到想要知道某個對象的距離或者高度,但恰巧沒有尺子或者不方便測量的情況。例如,你到旅游景點看到一個雕塑或者一棟大樓,想知道它的高度,卻不方便直接測量。又比如,當你在某個地方發(fā)現(xiàn)一件有趣的事情,你想把它的位置分享給朋友,但是GPS獲取的只是人自身的位置,而不是所感興趣目標的位置,這個時候我們希望有個工具能自動測量目標離人的距離,再與人的GPS位置和目標相對于人的角度(可通過手機的方向傳感器獲得)相結(jié)合,則可計算出目標的準確位置。

      針對以上需求,本文將開發(fā)一款基于安卓手機的智能測量儀App,通過用戶的簡單操作即可實現(xiàn)測量某個感興趣目標的高度或者距離。該App將使用谷歌公司提供的App Inventor[1]平臺進行開發(fā),該平臺是一個適用于安卓手機App開發(fā)的在線編程軟件,可通過代碼拼裝的方式快速方便地實現(xiàn)所需功能。

      2.設計原理

      測量距離和高度的基本原理如圖1所示。整個測量過程分為以下兩步:

      步驟1)用戶手拿手機,打開攝像頭,并將手機屏幕中心對準被測量對象的底部,點擊拍照按鈕的同時,可利用手機的方向傳感器獲得向下的傾斜角α;

      步驟2)用戶再次打開攝像頭,并將手機屏幕中心對準被測量對象的頂部,點擊拍照按鈕的同時,再次利用手機的方向傳感器獲得向上的傾斜角β。

      假定用戶的身高h1已知,用戶手拿手機的位置與用戶的頭部大概距離為0.3m,則用戶手機離對面的高度為(h1-0.3)。因此,我們可以根據(jù)三角函數(shù)得到以下兩個公式,分別用來計算被測量對象與用戶的距離d,以及被測量對象的高度h2。

      d=h1*tanα;

      h2=h1-0.3+d*tanβ;

      圖1 使用手機測量距離和高度的基本原理

      3.界面設計

      在App Inventor中,調(diào)用照相機時,會自動彈出照相界面,并引導用戶照相。所以我們不需要單獨為它設計界面。除此之外,還需要設計三個頁面。首先,用戶需要設置自己的身高,我們可以使用一個文本框供用戶輸入,同時提供一個按鈕供用戶第一次調(diào)用攝像頭,并給用戶相應的拍照方法提示,如圖2(a)所示。用戶點擊按鈕后,將第一次進入拍照界面,如圖3(a)所示。用戶將取像畫面中心對準被測量對象底部,然后點擊拍照按鈕,之后將返回第二個頁面,繼續(xù)引導用戶進行第二次拍照,如圖所示2(b)。用戶再次點擊按鈕后,將第二次進入拍照界面,如圖3(b)所示。用戶將取像畫面中心對準被測量對象頂部,然后點擊拍照按鈕,之后將進入第三個頁面,顯示計算結(jié)果,同時顯示我們所獲得的其它信息,包括身高和兩次拍照的角度,如圖2(c)所示。同時,該界面提供一個返回按鈕,可以回到第一個頁面,重新開始下一次測量。

      圖2 智能測量儀的三個頁面

      圖3 兩次拍照界面

      4.功能實現(xiàn)

      下面,分四個方面分別介紹該App的實現(xiàn)細節(jié)。

      4.1 使用微數(shù)據(jù)庫存儲數(shù)據(jù)

      用戶需要拍攝兩次來提供足夠的計算信息。在這里,可以選擇將數(shù)據(jù)以參數(shù)形式在頁面之間傳遞,也可以采用微數(shù)據(jù)庫[2]來存儲數(shù)據(jù)。因為App Inventor的限制,我們只能在頁面間傳遞一個參數(shù),所以,為了方便起見,這里使用微數(shù)據(jù)庫。

      對于同一個用戶來說,身高是不變的。所以,當用戶第二次以及以后再進行測量時,不需要用戶重新輸入身高了,除非用戶自己想要修改數(shù)據(jù)。同時,身高也是一個必需的計算參數(shù),所以,如果用戶沒有正確輸入,要給出提示,讓用戶正確輸入身高。第一張頁面初始化和存儲身高信息的塊代碼,以及最后取用數(shù)據(jù)庫數(shù)據(jù)的塊代碼分別如圖4和圖5所示。

      圖4 頁面初始化和存儲身高信息的塊代碼

      圖5 取用數(shù)據(jù)庫數(shù)據(jù)的塊代碼

      4.2 調(diào)用照相機

      在App Inventor中,照相機組件是非常簡便易用的,從上圖可以看到,我們只需要一個塊代碼,就可以調(diào)用照相機來拍照。之后,在完成拍攝時,我們需要提取角度信息,需要調(diào)用拍攝完成事件來存儲傾斜角,相應的塊代碼如圖6所示。

      圖6 調(diào)用拍攝完成事件來存儲傾斜角的塊代碼

      4.3 獲取傾斜角

      在APP Inventor中,傾斜角的定義是:當設備水平放置時,其值為0°;隨著設備頂部向下傾斜至豎直時,其值為90°,繼續(xù)沿相同方向翻轉(zhuǎn),其值逐漸減小,直到屏幕朝向下方的位置,其值變?yōu)?°;同樣,當設備底部向下傾斜直到指向地面時,其值為-90°,繼續(xù)沿同方向翻轉(zhuǎn)到屏幕朝上時,其值為0°。如圖7所示。

      圖7 傾斜角測量示意圖

      因為手機豎直時,傾斜角給出的角度是90度。向前向后繼續(xù)傾斜,角度絕對值都將同樣變小,所以,我們計算出的高度值,可能有兩個。如上圖所示,我們的照相角度都為負值,所以在塊代碼中取絕對值,相應的塊代碼如圖8所示。

      圖8 計算傾斜角的塊代碼

      4.4 距離和高度計算

      通過前面的分析,我們需要進行兩次三角變換來分別計算距離和高度,以及我們可能獲得兩個高度值。我們需要一些局部變量作為中間變量來進行計算,相應的塊代碼如圖9所示。

      圖9 計算距離和高度的塊代碼

      5.總結(jié)與展望

      本文基于App Inventor設計與實現(xiàn)了一款用于測量對象距離和高度的安卓手機App,在日常生活中有廣泛的應用。然而,本App還有一些待完善和擴展的地方。首先,在用戶瞄準被測量對象時,應該在屏幕中間提供一個“十”字準星幫助用戶獲得更準確的角度信息,但是由于APP Inventor的限制,照相機無法被放置在一個畫布中,只能被獨立調(diào)用,所以我們只能讓用戶盡量將被測對象位置置于屏幕中央。這樣一來,測量的結(jié)果就存在更大的誤差。另外,不同型號的手機對角度的測量準確性也有很大差異,需要設計一些校準方法來提高測量的準確性。另外,該App需要用戶操作兩個步驟才能測量高度,未來可探索只操作一次即可測量高度的方法。

      猜你喜歡
      傾斜角調(diào)用代碼
      以“傾斜角與斜角”為例談概念教學
      核電項目物項調(diào)用管理的應用研究
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      創(chuàng)世代碼
      動漫星空(2018年11期)2018-10-26 02:24:02
      創(chuàng)世代碼
      動漫星空(2018年2期)2018-10-26 02:11:00
      創(chuàng)世代碼
      動漫星空(2018年9期)2018-10-26 01:16:48
      創(chuàng)世代碼
      動漫星空(2018年5期)2018-10-26 01:15:02
      基于飛參Щp-4配電板的傾斜角故障研究
      電子測試(2018年14期)2018-09-26 06:04:14
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
      利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
      类乌齐县| 阳高县| 全南县| 奉节县| 阳朔县| 浮梁县| 唐山市| 东莞市| 佛坪县| 南漳县| 武汉市| 邹城市| 金川县| 乳山市| 任丘市| 潞城市| 贺州市| 高安市| 怀宁县| 沁阳市| 康平县| 峨边| 宁都县| 壶关县| 信丰县| 龙海市| 普安县| 崇礼县| 儋州市| 来安县| 武山县| 宜君县| 时尚| 会泽县| 通化市| 德清县| 紫阳县| 达州市| 古交市| 红桥区| 临颍县|