馮金濤
摘要:智能手機(jī)正在成為新的測量記錄和計算處理工具。本文針對三個簡單測量問題(前方交會、單一導(dǎo)線和水準(zhǔn)路線),研究基于Android智能手機(jī)平臺的程序設(shè)計方法,取得了一些經(jīng)驗,成功編制出相關(guān)程序。
關(guān)鍵詞:測量;程序設(shè)計;Android系統(tǒng);智能手機(jī)
中圖分類號:P209;TP311.1 文獻(xiàn)標(biāo)志碼:A 文章編號:1674-9324(2017)16-0256-04
隨著時代發(fā)展和科技進(jìn)步,智能手機(jī)已成為人們必備的日常生活用品,其應(yīng)用范圍不斷擴(kuò)大,可以服務(wù)于人們多方面的工作和生活需要。智能手機(jī)的核心是開放式的手機(jī)操作系統(tǒng),使用者可根據(jù)需要安裝不同的軟件,從而提高了手機(jī)的可擴(kuò)展性。目前主要的手機(jī)操作系統(tǒng)是Google公司推出的Android和蘋果公司的iOS,而Android系統(tǒng)由于開放源代碼,得到手機(jī)行業(yè)內(nèi)眾多廠家和服務(wù)提供商的支持,占有絕大部分的市場份額。智能手機(jī)也可以應(yīng)用于測量數(shù)據(jù)的記錄和處理工作,已有很多專家學(xué)者在此方面進(jìn)行了研究和程序開發(fā)。測量人員以前曾經(jīng)普遍使用各種專門的記錄手簿,利用計算器作輔助計算,這種手工作業(yè)方式的效率偏低。后來出現(xiàn)了面向工程技術(shù)人員使用的可編程計算器(例如SHARP PC—E500,CASIO fx—5800P等),可部分減少測量人員的數(shù)據(jù)記錄和處理工作,以及隨后出現(xiàn)的各種掌上電腦(PDA:Personal Digital Assistant),所有這些電子設(shè)備都需花費一定數(shù)量的資金購買并深入研究程序開發(fā)技巧。然而隨著智能手機(jī)的出現(xiàn),這些可編程計算器或掌上電腦在測量工作中將逐漸被淘汰。由于智能手機(jī)用途廣泛,且已成為人們必備的日常生活用品,測量技術(shù)人員研究基于Android系統(tǒng)的測量程序開發(fā)技術(shù),提升其使用價值,無疑是具有重要意義的。目前手機(jī)應(yīng)用軟件市場可提供下載的各種程序眾多,但專用于測繪生產(chǎn)作業(yè)的卻很少,其中一個重要原因是廣大測繪技術(shù)人員還未掌握基于Android系統(tǒng)的測量程序設(shè)計方法。本文以三個簡單測量工作(前方交會、單一導(dǎo)線和水準(zhǔn)路線)的計算程序開發(fā)為例,分析其中遇到的一些問題和解決方法,希望對相關(guān)技術(shù)人員有所幫助。
一、Android應(yīng)用程序開發(fā)簡介
Android是Google公司發(fā)布的基于Linux內(nèi)核的開源手機(jī)平臺,包括操作系統(tǒng)、中間件和各種應(yīng)用軟件。中間件是指Google公司為Android應(yīng)用程序開發(fā)而專門提供的各種函數(shù)庫和運行時環(huán)境,以及應(yīng)用程序框架,程序員可以很方便地在此基礎(chǔ)上開發(fā)各種應(yīng)用程序。Android應(yīng)用程序開發(fā)類似于在Windows平臺上用Visual Studio集成開發(fā)環(huán)境作可視化編程,其工作過程可分為兩部分:GUI界面設(shè)計和編寫程序代碼。Android平臺的應(yīng)用開發(fā)語言是Java,開發(fā)環(huán)境可以選用Eclipse+ADT或Android Studio,所有這些工具都可以從互聯(lián)網(wǎng)免費下載使用。Eclipse是IBM公司在2000年11月以開放源碼的授權(quán)和運作模式發(fā)布的,程序員可通過增加插件使其成為多種計算機(jī)語言(例如Java、C/C++、COBOL、PHP、Perl、Python等)的開發(fā)工具,作Android應(yīng)用程序開發(fā)必須先下載并安裝ADT插件(Android Development Toolkits)。Eclipse提供了對多種平臺特性的支持,使用時間較長,擁有大量的用戶群,但Google公司為了方便開發(fā)者基于Android開發(fā),在2013年首次推出Android Studio,并建議廣大Android開發(fā)者盡快放棄Eclipse+ADT的開發(fā)環(huán)境,改為使用Android Studio[1][2]。在開發(fā)環(huán)境中完成GUI界面設(shè)計和程序代碼輸入后,可通過Android虛擬設(shè)備(AVD:Android Virtual Device)測試運行。AVD的運行界面如同真實手機(jī),但啟動較慢,為此可使用第三方提供的Genymotion工具代替[1,3]。程序員還可以將手機(jī)與計算機(jī)系統(tǒng)相連,直接用手機(jī)進(jìn)行測試。已測試成功的程序即可在手機(jī)上安裝運行,投入使用。
五、程序設(shè)計的一些經(jīng)驗
作者初學(xué)Android應(yīng)用程序開發(fā),在編程過程中也不可避免地遇到許多困難,經(jīng)過反復(fù)測試終于一一解決??偨Y(jié)出如下一些經(jīng)驗:
1.首先應(yīng)根據(jù)具體問題,確定窗體界面的數(shù)量。以上的前方交會程序比較簡單,只有一個Activity,程序啟動后輸入有關(guān)數(shù)據(jù),然后單擊命令按鈕即可獲得計算結(jié)果。單一導(dǎo)線和水準(zhǔn)路線由于區(qū)分多種類型,需要分別提供窗體界面,使編程工作更加復(fù)雜。
2.由于手機(jī)屏幕尺寸有限,在界面設(shè)計時不宜使用太多的控件。以上三個程序在接收一系列的角度、距離或高差觀測值時,只采用一個編輯框控件,各數(shù)據(jù)依次錄入,彼此之間以逗號隔開。在程序代碼中調(diào)用split()方法可自動區(qū)分各觀測值,從而使界面簡潔,方便使用。這種方法還可用于區(qū)分點名和坐標(biāo)(或高程)數(shù)據(jù),從而在同一個編輯框中可以輸入已知點的完整信息(點名+該點的坐標(biāo)或高程數(shù)據(jù))。
3.Intent通常用于在一個窗體界面(MainActivity)中啟動另一個窗體界面(AcitivityToStart),這時應(yīng)指明AcitivityToStart對應(yīng)的類,即所謂Intent的“顯式調(diào)用”:
Intent intent=new Intent(MainActivity.this,ActivityToStart.class);
startActivity(intent);
但是由于單一導(dǎo)線和水準(zhǔn)路線都區(qū)分多種類型,分別有各自的窗體界面,它們屬于不同的類,因此不能直接按照上述方法操作,否則系統(tǒng)會提示編譯錯誤。這時可以通過設(shè)置Component屬性來確定將啟動哪個窗體界面,從而解決這一問題。有關(guān)的代碼如下:
ComponentName comp=null;
switch(dxType){ // dxType表示導(dǎo)線類型,在選擇界面中指定
case 1: //選擇支導(dǎo)線
comp=new ComponentName(MainActivity.this,ZhiActivity.class); break;
case 2: //選擇閉合導(dǎo)線
comp=new ComponentName(MainActivity.this,BiheActivity.class); break;
case 3: //選擇附合導(dǎo)線
comp=new ComponentName(MainActivity.this,F(xiàn)uheActivity.class); break; }
Intent intent=new Intent();
intent.setComponent(comp);
MainActivity.this.startActivity(intent);
4.在單一導(dǎo)線的測量計算程序中,已知點和未知點都具有多種屬性(包括點名,x坐標(biāo)和y坐標(biāo)),因此應(yīng)當(dāng)開發(fā)相應(yīng)的point類,將已知點和未知點都作為該類的對象進(jìn)行創(chuàng)建,從而提高代碼的使用效率。水準(zhǔn)路線的測量計算程序也有同樣的問題,可以同樣處理。
本文針對三個簡單測量問題(前方交會、單一導(dǎo)線和水準(zhǔn)路線),研究基于Android智能手機(jī)平臺的測量程序設(shè)計方法,編制出相關(guān)程序,并在真實手機(jī)上測試成功。這些程序還可以作進(jìn)一步的改進(jìn),例如增加容錯功能和異常處理機(jī)制,將計算結(jié)果以報表形式輸出等。智能手機(jī)的功能很多,以智能手機(jī)為平臺的Android應(yīng)用程序開發(fā)也具有豐富的內(nèi)容,學(xué)習(xí)Android應(yīng)用程序開發(fā)應(yīng)當(dāng)首先學(xué)習(xí)Java編程語言[1]。另一方面,Android應(yīng)用程序不僅用于智能手機(jī),也可用于智能電視、游戲機(jī)和一些可穿戴的智能設(shè)備(例如手表和眼鏡),甚至用于汽車和機(jī)器人的控制系統(tǒng)設(shè)計,因此這項技術(shù)具有重大的應(yīng)用價值,必然會激起更多學(xué)生和科技人員的興趣。
參考文獻(xiàn):
[1]李剛.瘋狂Android講義(第3版)[M].北京:電子工業(yè)出版社,2015.
[2]尹孟征.基于Android的APP開發(fā)平臺綜述[J].通訊電源技術(shù),2016,33(4).
[3]王向輝,張國印,沈潔.Android應(yīng)用程序開發(fā)(第3版)[M].北京:清華大學(xué)出版社,2016.
[4]程效軍,鮑峰,顧孝烈.測量學(xué)(第五版)[M].上海:同濟(jì)大學(xué)出版社,2016.