吳亞林
摘 要:時(shí)代在變,人們生活的質(zhì)量也發(fā)生了改變,方便快捷的生活的方式讓人們享受生活的樂趣,對(duì)于出行的人來說擁有一個(gè)完美的外出計(jì)劃之外,一個(gè)好的天的情況也是不可少的因素。手機(jī)天氣預(yù)報(bào)能夠方便了解到當(dāng)天的天氣狀況,對(duì)出行的人們來說相當(dāng)?shù)姆奖?,而大多?shù)用戶在使用安卓手機(jī),因此,設(shè)計(jì)一款基于安卓的手機(jī)天氣預(yù)報(bào)系統(tǒng)來迎合大多數(shù)人的需求。本設(shè)計(jì)采用了Android開源系統(tǒng)技術(shù),它可以通過圖片和文字顯示當(dāng)天和未來幾天的天氣情況。能夠?qū)崿F(xiàn)從Baidu上獲得天氣預(yù)報(bào)信息,并將天氣信息保存在后臺(tái)服務(wù)中。系統(tǒng)還提供短信的天氣數(shù)據(jù)服務(wù),用戶發(fā)送關(guān)鍵字可獲取天氣狀況的短信回復(fù),并且可以查看或者刪除這些信息。
關(guān)鍵詞:Android;手機(jī)天氣預(yù)報(bào);SMS
DOI:10.16640/j.cnki.37-1222/t.2015.24.112
1 基于Android的天氣預(yù)報(bào)系統(tǒng)開發(fā)的背景
以前的電視媒體播放的天氣給許多不經(jīng)常注意或者沒時(shí)間在意天氣狀況人們帶來不便,這時(shí)候一個(gè)手機(jī)天氣預(yù)報(bào)可以很方便的查詢和了解只要很短的時(shí)間就能了解未來幾天天氣情況,于是各種手機(jī)天氣預(yù)報(bào)也隨之的就發(fā)展起來,如今的安卓已占據(jù)手機(jī)市場(chǎng)的主導(dǎo)地位,這個(gè)天氣預(yù)報(bào)系統(tǒng),能夠通過圖文來顯示當(dāng)天和未來幾天的天氣狀況,顯示的內(nèi)容有溫度、PM2.5和風(fēng)速等情況。這些天氣數(shù)據(jù)是通過訪問百度提供的天氣預(yù)報(bào)接口獲取的,可以按照用戶設(shè)置的時(shí)間間隔,周期性的從Baidu上獲取天氣預(yù)報(bào)信息,并把天氣狀況的信息保存在后臺(tái)服務(wù)里面。這個(gè)項(xiàng)目還提供短信服務(wù)功能,其他用戶可以向安裝本應(yīng)用的手機(jī)上發(fā)送關(guān)鍵字,然后可以把保存在后臺(tái)數(shù)據(jù)庫(kù)的天氣情況通過短信的方式自動(dòng)發(fā)送給用戶。每一個(gè)發(fā)送出去的短信都會(huì)被保存下來,在系統(tǒng)數(shù)據(jù)的界面中,用戶能查看或者刪除這些回復(fù)的內(nèi)容。
2 系統(tǒng)的需求分析
2.1 系統(tǒng)功能需求分析
這個(gè)軟件需要展示即時(shí)的天氣預(yù)報(bào)信息。主要展示的功能有:
(1)可以對(duì)城市進(jìn)行選擇以及對(duì)頻率更新進(jìn)行設(shè)置。
(2)從百度獲取圖片和信息顯示當(dāng)天的天氣和未來的天氣信息,包括溫度、PM2.5、風(fēng)向情況等。
(3)所有的天氣預(yù)報(bào)信息數(shù)據(jù)都是是通過service去向服務(wù)器獲取的,service可以設(shè)置固定的時(shí)間段,通過百度提供的天氣預(yù)報(bào)獲取天氣預(yù)報(bào)信息,從而將天氣信息保存在本地?cái)?shù)據(jù)庫(kù)中。
2.2 系統(tǒng)界面需求
這個(gè)程序用戶界面設(shè)計(jì),采用TabHost控件。TabHost控件的每一個(gè)標(biāo)簽頁(yè)與Activity相關(guān)聯(lián),Activity又能對(duì)應(yīng)多個(gè)功能布局,這樣就可以將不同標(biāo)簽頁(yè)的代碼放在不同的文件中,方便用戶的操作使用。
WeatherForecast類共設(shè)置3個(gè)標(biāo)簽頁(yè),是繼承了TabActivity的Tab標(biāo)簽頁(yè)。
三個(gè)標(biāo)簽頁(yè)分別為:“天氣預(yù)報(bào)”、“歷史數(shù)據(jù)”、“系統(tǒng)設(shè)置”。他們相關(guān)聯(lián)的代碼是:WheatherActivity、HistoryActivity和SetUpActivity。
WeatherForecast.java里面的代碼搭建了用戶界面的框架,設(shè)置了標(biāo)簽頁(yè)的圖片、文字和他們所對(duì)應(yīng)的Activity,在對(duì)應(yīng)的Activity里面設(shè)置他們的功能和界面。
3 基于Android的天氣預(yù)報(bào)的設(shè)計(jì)與實(shí)現(xiàn)
3.1 天氣預(yù)報(bào)功能模塊的實(shí)現(xiàn)
天氣預(yù)報(bào):天氣預(yù)報(bào)的主頁(yè)面在啟動(dòng)時(shí)不會(huì)顯示出當(dāng)前的天氣信息,想要獲取當(dāng)前的天氣信息,這需要讓用戶自己到設(shè)置選項(xiàng)里邊查找到“啟動(dòng)服務(wù)”的按鈕,通過點(diǎn)擊該按鈕才能把獲取天氣信息的service啟動(dòng)。選項(xiàng)菜單里還有“停止服務(wù)”和“退出”選項(xiàng) ?!疤鞖忸A(yù)報(bào)”這個(gè)選項(xiàng)卡里面相關(guān)聯(lián)的布局名稱是tab_weather.xml,這是個(gè)較為繁瑣的界面布局,多次嵌套了線性布局,交叉使用了橫向和縱向的屬性。
3.2 歷史數(shù)據(jù)功能模塊的實(shí)現(xiàn)
歷史數(shù)據(jù):歷史數(shù)據(jù)頁(yè)面主要顯示SQLite數(shù)據(jù)庫(kù)中的短信服務(wù)信息,顯示的信息包括發(fā)送的時(shí)間、發(fā)送人的手機(jī)號(hào)碼和數(shù)據(jù)庫(kù)回復(fù)短信內(nèi)容 。顯示列表數(shù)據(jù)一般用傳統(tǒng)的listview來展示數(shù)據(jù),通過把獲取到的信息加到一個(gè)定義好的list里,再通過adapter加載list,用它來把數(shù)據(jù)匹配到對(duì)應(yīng)的組件上。這樣做的好處是實(shí)現(xiàn)更復(fù)雜的界面,例如在列表添加提示信息“SQLite數(shù)據(jù)庫(kù)的短信服務(wù)信息”,而不是去寫baseadapter適配。關(guān)于歷史數(shù)據(jù)選項(xiàng)卡里面關(guān)鍵代碼1.setContentView(R.layout.tab_history)設(shè)置布局2. setListAdapter(dataAdapter)加載適配。
3.3 系統(tǒng)設(shè)置功能模塊的實(shí)現(xiàn)
系統(tǒng)設(shè)置:系統(tǒng)設(shè)置頁(yè)面主要用于保存和恢復(fù)用戶的設(shè)置,第一次啟動(dòng)或恢復(fù)默認(rèn)設(shè)置(在選項(xiàng)菜單中)后,界面中的編輯框會(huì)顯示系統(tǒng)的默認(rèn)設(shè)置,有城市的名字,更新頻率,是否提供短消息服務(wù),是否記錄了短消息業(yè)務(wù)的數(shù)據(jù)信息和短消息服務(wù)等編輯。SetupActivity.java文件中,主要代碼在RestoreDefaultSetup()、UpdateUI()和SaveConfig()這三個(gè)函數(shù)中。RestoreDefaultSetup()用來加載系統(tǒng)的缺省配置;系統(tǒng)設(shè)置的UI界面是獲取是Config類里面數(shù)據(jù)來更新的,SaveConfig()根據(jù)界面設(shè)置的數(shù)據(jù)更改Config類,然后再去調(diào)用數(shù)據(jù)庫(kù)的DBAdapter.SaveConfig()函數(shù),將Config類中的數(shù)據(jù)更新到數(shù)據(jù)庫(kù)。
4 后臺(tái)服務(wù)
后臺(tái)服務(wù)是本項(xiàng)目的關(guān)鍵模塊,一開始進(jìn)入系統(tǒng)時(shí)并沒有執(zhí)行,當(dāng)用戶啟動(dòng)后,它便一直運(yùn)行在后臺(tái),只有等到用戶在去操作“停止服務(wù)”按鈕時(shí),才能執(zhí)行停止服務(wù)。后臺(tái)服務(wù)主要用來執(zhí)行向百度天氣API獲取天氣預(yù)報(bào)信息、讀取天氣信息的SMS短信,短信發(fā)送等操作。
5 總結(jié)
開發(fā)Android天氣預(yù)報(bào),一定要抓住重要內(nèi)容。天氣預(yù)報(bào)主要由天氣預(yù)報(bào)、歷史數(shù)據(jù)、系統(tǒng)設(shè)置三個(gè)界面組成,能正常獲取各個(gè)城市的天氣情況的信息,其他功能是在這個(gè)功能的基礎(chǔ)上補(bǔ)充添加的,但是基本的功能是必不可少的。
參考文獻(xiàn):
[1]李剛.瘋狂Android講義[M].電子工業(yè)出版社,2011(06).
[2]張孝祥.java就業(yè)培訓(xùn)教程[S].清華大學(xué)出版社,2003(09).
[3] 知乎周刊http://zhuanlan.zhihu.com/Weekly[OL].
[4]柯元旦.Android內(nèi)核剖析[M].電子工業(yè)出版社,2011(09).endprint