朱瑜紅,鄧 志
(寧夏大學 物理電氣信息學院,寧夏 銀川 750021)
Android是一個專為移動終端打造的軟件平臺,其主要包括操作系統(tǒng)、中間件、用戶界面及應用程序.Android系統(tǒng)擁有移動終端能便捷使用所需的全部軟件,并且其開放性還保證了該平臺不會阻礙任何移動產業(yè)的創(chuàng)新.正是因為Android系統(tǒng)這種開源、完整、免費的特性,自它誕生以來迅速得到了大量用戶以及許多廠商的青睞.在Android系統(tǒng)下手機的各種應用異常豐富,例如拍照、導航等,但在這些應用中都沒有關于太陽角度計算的功能.在本文中基于Android系統(tǒng)平臺,利用Google Android SDK和JAVA Eclipse等開發(fā)工具,設計了一個有關太陽角度計算的軟件.該軟件可作為一個組件方便的添加到應用中,給予這些應用更多的功能和實用性.例如結合導航功能可以迅速判斷此時此地的太陽角度,進而判斷方向,即使在陰雨天也不用擔心.或者可以將這種功能集成到天氣預報軟件中,可為軟件增添趣味性.
太陽直射點的緯度為δ(北緯δ取正值,南緯δ取負值),黃道面與赤道面的二面角為α(α即地理和天文中的“黃赤交角”,α的大小為23.5°),太陽在黃道上的點相對春分點的角度為ω(ω以下簡稱“黃道角”,一年中某天的ω角度可利用這天與春分日的天數差n表示,對平年近似算式為對閏年近似算式為.直射點緯度δ,黃赤交角α,黃道角ω三者之間的關系為:sin(δ)=sin(α)*sin(ω),利用該公式即可計算出太陽直射點的緯度.
建立地心坐標系:Z軸方向取從地心指向地軸北極的方向,X軸取赤道面與太陽直射經度線平面的交線方向,Y軸取赤道上位于X軸東側90°角的方向.建立本地坐標系:z軸取垂直地面指向正天頂的方向,x軸取正南方向,y軸取正東方向.假設某地在地球上的緯度為θ(北緯θ取正值,南緯θ取負值),該地某時刻對應的時間角為φ(φ為當地經度與太陽直射經度之間的差值,φ每小時轉過的角度為15°,φ的大小可以利用該時刻與當地正午時刻的時間差t表示,公式為:φ=15°*t,t的單位為小時,上午 t取負值,下午t取正值),則地心坐標系與本地坐標系之間的轉化關系為:
設當天的太陽的直射點緯度為δ,則由兩個坐標系的轉化關系可得到太陽直射點位置矢量在本地坐標系中的表達式為:
假設太陽在本地坐標系中的高度角為H(H為太陽與地平線的夾角),方位角為P(P為太陽在地面上的豎直投影點與本地坐標系原點連線和本地坐標系正南方向之間的夾角,該角在正南方向偏東則取正值,偏西則取負值),則太陽的直射點位置矢量在本地坐標系中的表達式又為:
本地坐標系中的兩個表達式是完全等價的,因此有:
本文設計的太陽角度計算軟件主要包括以下幾部分:
(1)程序界面,其布局文件為 eslayout文件夾中名為main.xml的文件.在此文件中同時設置了相對應的圖形界面,其布局方式選用相對布局,使用xml語言編寫;
(2)前次使用所記錄的信息,保存在res/raw中,可以實現快速訪問;
(3)太陽角度計算相關程序city.java使用java語言編寫,實現了通過經緯度計算得出當前時刻的太陽偏角與仰角;
(4)軟件主程序命名為sunangle.java,使用java語言編寫.在此程序中完成對控件的監(jiān)聽,同時進行相應的操作以及對用戶操作的響應.
此軟件的使用者是廣大用戶,為此設計出的程序必須具有良好的人機交互界面,這樣才能便于用戶使用,從而增加用戶的操作興趣,提高軟件的普及率.因此,主界面的實現從以下幾個方面設計完成.
2.2.1 城市選擇菜單的創(chuàng)建與布局
2.2.2 經緯度輸入文本框的布局
由于//TextView是不可編輯文本框,因此需要調用setText()函數來設置其中的內容,并且在相對布局方式中要將其位置設置在“當地緯度”、“當地經度”的右邊,同時將其文本框中的文字大小設置為18dp.其默認緯度是38.16°,默認經度是106.1°,為銀川所在經緯度.
2.2.3 太陽仰角與偏角顯示布局
2.2.4 當前時間顯示布局
2.2.5 Button按鈕控件的布局
太陽角度計算主要通過city.java程序實現,將輸入的經緯度經過判斷與計算,得到太陽仰角與偏角的數值,將此數值返回主程序sunangle.java.
該程序流程圖如圖1所示,在得到相關數據后首先會對經緯度的數值進行判斷,如果不在范圍內,則會輸出太陽仰角為0°,偏角為0°.如果通過判定,則會計算出相應的太陽仰角與偏角.
圖1 太陽角度計算程序city.java流程圖
主程序流程圖如圖2所示.在程序開始后會有程序監(jiān)聽,其間隔是1000毫秒,即一秒鐘.主要目的是獲取經度和緯度的具體數值,然后會將其實例化為sunangle.java.
經度和緯度數值的獲取方式有三種,一是讀取經度和緯度輸入框中的具體數值,二是讀取前次使用所保存的數據,最后一種方法是判斷下拉菜單所選擇的城市,然后讀取相應城市的經度和緯度.
圖2 主程序sunangle.java流程圖
圖3至圖6是程序運行的效果圖.
圖3 程序主界面
圖4 城市選擇
圖5 幫助界面
圖6 程序運行界面
經過應用演示和測試,本文設計開發(fā)的太陽角度計算軟件能夠在所有Android操作系統(tǒng)的手機和移動終端上安裝并穩(wěn)定運行,可以為不同需求的用戶提供準確、便捷的服務.因此本設計具有較強的實用性,對其他類似開發(fā)工作也具有一定的參考借鑒意義.
〔1〕劉乾發(fā).基于Java平臺的手機軟件架構的研究與應用[D].浙江:浙江大學軟件學院,2007.
〔2〕姚顯昊,劉衛(wèi)國.Android的架構和應用開發(fā)研究[J].計算機系統(tǒng)應用,2008(11):78-81.
〔3〕FrankAbleson,Android 開發(fā)簡介.developer Works.2009(6):130-131.
〔4〕楊豐盛.Android應用開發(fā)揭秘[M].北京:機械工業(yè)出版社,2010.28.
〔5〕高煥堂.Google Android應用框架原理與程式設計[M].(2008-11-29)[2011-03-05],http://d.download.csdn.net/down/820544/carylin.