国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于安卓手機(jī)的智能測量儀App設(shè)計(jì)與實(shí)現(xiàn)

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

孫嘉鵬 北京市十一學(xué)校

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

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

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

2.設(shè)計(jì)原理

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

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

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

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

d=h1*tanα;

h2=h1-0.3+d*tanβ;

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

3.界面設(shè)計(jì)

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

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

圖3 兩次拍照界面

4.功能實(shí)現(xiàn)

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

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

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

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

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

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

4.2 調(diào)用照相機(jī)

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

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

4.3 獲取傾斜角

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

圖7 傾斜角測量示意圖

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

圖8 計(jì)算傾斜角的塊代碼

4.4 距離和高度計(jì)算

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

圖9 計(jì)算距離和高度的塊代碼

5.總結(jié)與展望

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

猜你喜歡
傾斜角調(diào)用代碼
中低比轉(zhuǎn)速帶導(dǎo)葉離心泵出水邊傾斜角對無葉區(qū)壓力脈動的影響研究
系統(tǒng)虛擬化環(huán)境下客戶機(jī)系統(tǒng)調(diào)用信息捕獲與分析①
神秘的代碼
一周機(jī)構(gòu)凈增(減)倉股前20名
一行代碼玩完19億元衛(wèi)星
近期連續(xù)上漲7天以上的股
基于屬性數(shù)據(jù)的系統(tǒng)調(diào)用過濾方法
利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
直線問題的錯解分析
點(diǎn)擊直線與圓的考點(diǎn)
孝义市| 衡南县| 汉源县| 麟游县| 阳春市| 和龙市| 孟连| 晴隆县| 仙桃市| 天镇县| 铜梁县| 舒兰市| 安仁县| 蒲城县| 集贤县| 泸定县| 长顺县| 墨脱县| 筠连县| 德钦县| 八宿县| 攀枝花市| 西畴县| 九寨沟县| 县级市| 奉节县| 监利县| 东海县| 英超| 古丈县| 潜山县| 太保市| 渝北区| 太谷县| 沙坪坝区| 阿荣旗| 梁山县| 旺苍县| 吉隆县| 高碑店市| 孙吴县|