崔雪

摘 要:本設計運用開放性強的Android系統,在智能手機端研發一款用于查詢城市天氣預報情況的APP。該天氣預報查詢系統界面友好,可操作性和實用性強,具有良好的可拓展性和維護性,可使用戶實時掌握當地天氣情況,方便出行和生產安排。經過測試,該天氣預報查詢系統可穩定運行,基本滿足用戶天氣服務需求。
關鍵詞:Android系統;天氣預報查詢;設計
中圖分類號:TN929.53文獻標識碼:A文章編號:1003-5168(2020)29-0004-03
Abstract: This design uses the open Android system to develop an APP for querying the weather forecast of the city on the smart phone. The weather forecast query system has a friendly interface, strong operability and practicability, good scalability and maintainability, allowing users to grasp the local weather conditions in real time, facilitating travel and production arrangements. After testing, the weather forecast query system can operate stably and basically meet the needs of users for weather services.
Keywords: Android system;weather forecast enquiry;design
4G技術的廣泛應用和5G信息大時代的到來給智能手機移動應用開發帶來良好時機。Android系統是真正意義上的開源智能手機操作系統,平臺為開發者提供了一個能自主選擇使用各種代碼搭配的寬松環境,使其不用受到強制性條件約束,催生各種新穎軟件應用,移動應用需求增多,也使得應用軟件開發成為時下最熱門的技術之一。天氣預報則可以預測一地短時間內天氣變化,和人們生產生活具有密切關系。在信息資源能夠高速傳輸、快速集中的網絡化時代,突破時空局限,優化氣象數據資料,在自主研發天氣預報查詢客戶端上及時進行氣象信息發布,能更好滿足本地社會發展需要[1-2]。因此,基于Android系統的天氣預報查詢系統設計值得研究。
1 項目設計
1.1 總體概述
本系統是一個APP Widget應用窗口小部件,在移動端主頁面調出相關程序并開始運行后,根據用戶需求自主設定目標城市,具體氣象數據信息由文字和圖片聯合進行展示,內容包括近一周天氣預報情況,具體有溫度、風向、風速、降水情況等。該系統可實現的基礎性功效有:第一,將反映該APP明顯特征的歡迎界面顯示給用戶;第二,啟動APP Widget應用程序,為凸顯人性化服務,單獨將簡易實時的天氣數據和時間通過小部件顯示方式放置于移動端桌面,如果用戶單擊部件窗口,便會直接切換至查詢系統顯示界面,界面內含七天內天氣詳情;用戶可根據需要自動定位所在城市并設置常住城市,支持雙城市天氣情況小部件顯示,為使用戶翻找快捷,還支持以文本輸入框方式來篩選查詢城市,點觸屏幕選中目標城市便可切換至該城市的天氣顯示界面;第四,天氣顯示界面具體內容包括定制城市七天天氣詳情(溫度、晴雨情況、穿衣指數、空氣質量等),并附有公歷和農歷對應日期,標注傳統節氣和法定休假日,用戶還可通過點擊菜單鍵來更新當前天氣顯示界面背景。
1.2 設計目標
本天氣預報查詢系統具有較強的適用性和穩定性,以最小成本消耗滿足廣大用戶需求。因此,本設計應該達到以下四點要求:系統可實時對應目標城市最新天氣情況;可自主選擇定制城市,通過下拉列表菜單或文本框內輸入方式實現;盡量消耗較少流量,以此減少用戶套餐費用支出,一般在標準間隔時段內通過后臺自動更新天氣實況,其他時段以預先緩存的天氣實況為準;系統要有高用戶友好度,操作方便快捷,界面美觀大方,支持widget。
2 系統設計
2.1 開發和運行環境
開發環境主要包括JavaSE13(Java 語言軟件開發工具包)、Eclipse4.13(集成開發環境)、安卓開發工具包ADT Plug-in24.0.2,支持系統為Android7.0或更高版本,計算機端系統為Windows8。
2.2 數據庫設計
APP所用氣象數據資料通過調取全國氣象系統儲存記錄得到,因為氣象系統網絡城市碼固定,所以要將各城市碼的獲取作為得到特定城市天氣詳情的前置條件,設計思路為在構建本系統數據庫時將各城市碼緩存在本地,利用Android系統網絡查詢功能將城市碼儲存在本地SQlite數據庫,以備日后隨時調取使用。在本地新建一數據庫,命名為db_weather.db,此數據庫包含provinces和cities兩個子目錄。Cities表內含city num(城市碼),可幫助進行天氣查詢操作。此外,還有外鍵province_id和provinces表構成一對多的匹配關聯。
2.3 主要方法和步驟
首先,進行Android開發所需體系構建,新建一項目,命名為WeatherForecastSystem。然后,在本開發程序進行第一次試啟動運行時,從備用數據庫中將db_weather.db相關資料全部導入本程序數據庫。其次,搭建顯示界面用于選擇定制城市,系統自動獲取相關信息資料,找尋符合用戶搜索需求的省一級、市一級名稱和對應城市碼,進而訪問http://m.weather.com.cn/data/<城市碼>.html,得到氣象要素數據詳情。對從網絡上獲取的天氣詳情進行解析翻譯,緩存氣象數據和城市碼,關聯更新日期,更新日期前數據有效,超過更新日期則數據無效,系統重復上述操作獲取最新天氣情況。最后設置固定時間,根據儲存城市碼自動更新操作。
2.4 運用的技術和方法
主要使用的工具如下:Mockplus手機界面原型設計工具可靈活設計特色桌面圖標,安卓系統Socket通信技術用于編寫客戶端代碼、安卓廣播,窗口小部件App Widgets和JSON數據解析幫助實現主要功能。
3 主要功能模塊設計
3.1 項目框架
在包含安卓開發工具(Android Development Tools)的Eclipse中新建一個項目,命名為WeatherForecastSystem(天氣預報系統)。然后,在該項目內預設多個NameSpace(標識符可見范圍)用以儲存使用者預設界面布局、數據庫、隱藏運行程序和工具實體源代碼文件。具體文件包括的內容如表1所示。
3.2 城市列表創建和過濾
城市列表是通過繼承android.widget.BaseExpandableListAdapter適配器實現的,以實現其public View getGroupView()和public Void getChildView()分別獲取一級分類列表和二級分類列表為主要目的。由于此操作僅可成功實現文本顯示功能,相應利用TextView組件填充便可滿足功能要求。開發者欲構建此自定義適配器,從預先建立的省一級的Python列表和Numpy數組String[]groups及含有地級市級別子列表String[][]childs獲取數據便可。此外,為達成篩選功效,人們需要搭建android.widget.Filterable接口,此接口先配置了一個getFilter()返回Filter過濾器列表,所以仍要構建一個Filter過濾類。在設計的天氣預報查詢系統中,搭建一個內部類CityFilter,它繼承android.widget.Filter類,覆蓋操作達成兩個方法:一是performFiltering()獲取FilterResults過濾選出所需對象;二是依據獲取到的FilterResults對象更新適配器的publishResults()。
其中,performFiltering(CharSequence constraint)方法的實現是通過constraint關鍵字達成的。先以省一級為對標級別開始匹配操作,若匹配順利,則此省下屬全部城市會加入進來,若匹配不成功,則依序與該省份下轄城市進行核驗關聯,然后匹配,此后僅加入符合匹配結果的城市。匹配結果記錄在與Map
3.3 widget窗體部件的更新
本查詢系統桌面小部件里附加時間顯示功能,所以窗口小部件必須順利進行實時更新,保證本程序和手機系統內置時間一致。此類設計專門針對特定時間實現特定操作。其思路是在設計窗口小部件的更新函數方法中內置一自動運行后臺服務項目,以此實現更新窗口小部件中的時鐘顯示,并且可以自動在間隔一分鐘時重復運行此后臺服務。自建一可以隱藏或最小化的運行服務類,達成該服務方法需要先啟動調出的onStart()方法,得到widget的布局對象、AppWidgetManager和城市碼并更新天氣,獲取當前時間設置,警報服務精確到秒級,間隔設置在1 min。然后,在實現AppWidgetProvider的widget類的更新函數方法中運行此自建服務項目。若手機用戶有取消查詢系統窗口小部件的需求,在刪除widget部件時,調用的后臺服務也將結束持續響應。支持這種操作不可缺少的是實現Service類中的onDestory()方法,該方法在服務結束時被調出,根據此方法取消AlarManager內置的預警功能。在widget類中的onDisabled()方法中調用stopService方法可以取消時鐘后臺自動更新的功能,其中的onDisabled方法在widget被用戶刪除時由系統自動調用。
自建一個Service服務后,系統將在清單文件AndroidManifest.xml中標明此自建服務,經過上述的設置步驟后,窗口小部件就可以達成自動更新的目的。
3.4 GPS定位功能的實現
查詢系統若想在手機端使用GPS定位功能,需要先獲取GPS定位管理器,接下來獲取位置提供程序。為精準滿足用戶需求,可利用Criteria設置對象條件篩選location provider結果,獲取最終位置提供程序后,可順利調出位置管理器對象中的getLastKnownLocation()方法,得到最后地址封裝標的。最后標的編譯處理由類創建對象的過程中,Geocoder將經緯度處理為地理位置信息List對象,List對象可獲取使用者地址名。軟件開發過程中,ADT插件可實現為安卓模擬器指定隨意地址的功效。此外,為實現定位功能,還需要設置一解析XML的工具類,本系統主要利用LocationXMParser完成。
4 結語
天氣預報APP軟件推廣應用后,用戶自行下載即可隨時隨地獲取實時天氣狀況,相比其他信息獲取途徑,天氣APP軟件充分利用移動互聯網便捷高效的傳播優勢,能更好提醒用戶每日天氣情況,提供具體且準確的實時天氣預報及其他多元化功能服務,提升了氣象服務水平。
參考文獻:
[1]姚勝.基于Android的天氣預報客戶端設計與研究[J].計算機測量與控制,2019(9):253-256.
[2]陳利婷.基于App Inventor的天氣預報系統的設計與實現[J].電腦知識與技術,2019(11):81-82.