下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本文格式為Word版,下載可任意編輯安卓天氣預(yù)報(bào)查詢(xún)app實(shí)驗(yàn)報(bào)告 課 程 設(shè) 計(jì) 報(bào) 告 課程名稱(chēng) : 移動(dòng)平臺(tái)開(kāi)發(fā)設(shè)計(jì)題目: 天氣預(yù)報(bào) 院 系: 計(jì)算機(jī)科學(xué)與工程學(xué)院 專(zhuān) 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)班 級(jí): 學(xué) 號(hào): 姓 名: 指導(dǎo)老師: 孫 霞 設(shè)計(jì)地點(diǎn): 開(kāi)課時(shí)間: 2021 N6-113 至 2021 學(xué)年第 1 學(xué)期 名目 1. 引言 . 錯(cuò)誤 ! 未定義書(shū)簽。 . 題目描述 . 錯(cuò)誤 ! 未定義書(shū)簽。 . 設(shè)計(jì)意義 . 錯(cuò)誤 ! 未定義書(shū)簽。 2. 開(kāi)發(fā)環(huán)境 . 錯(cuò)誤 ! 未定義書(shū)簽。 . 硬件環(huán)境 . 錯(cuò)誤 ! 未定義書(shū)簽。 . 軟件環(huán)境 . 錯(cuò)誤 ! 未定義書(shū)簽。 3. 相關(guān)技術(shù)
2、及學(xué)問(wèn)點(diǎn) . 錯(cuò)誤 ! 未定義書(shū)簽。 . Activity . 錯(cuò)誤! 未定義書(shū)簽。 . Service . 錯(cuò)誤! 未定義書(shū)簽。 . 網(wǎng)絡(luò)通信 . 錯(cuò)誤 ! 未定義書(shū)簽。 4. 需求分析 . 錯(cuò)誤 ! 未定義書(shū)簽。 . 系統(tǒng)功能需求分析 . . 錯(cuò)誤 ! 未定義書(shū)簽。 . 系統(tǒng)流程圖 . 錯(cuò)誤 ! 未定義書(shū)簽。 . 系統(tǒng)界面需求分析 . . 錯(cuò)誤 ! 未定義書(shū)簽。 . 系統(tǒng)性能需求分析 . . 錯(cuò)誤 ! 未定義書(shū)簽。 5. 設(shè)計(jì)與實(shí)現(xiàn) . 錯(cuò)誤 ! 未定義書(shū)簽。 . 界面布局 . 錯(cuò)誤 ! 未定義書(shū)簽。 . 省市二級(jí)聯(lián)動(dòng) . 錯(cuò)誤 ! 未定義書(shū)簽。 . 獵取天氣數(shù)據(jù) . 錯(cuò)誤 ! 未定義書(shū)簽
3、。 . 播放背景音樂(lè) . 錯(cuò)誤 ! 未定義書(shū)簽。 6. 個(gè)人總結(jié) . 錯(cuò)誤 ! 未定義書(shū)簽。 參考資料 . 錯(cuò)誤 ! 未定義書(shū)簽。 1. 引言 1.1. 題目描述 本次試驗(yàn)是開(kāi)發(fā)一款基于 Android 平臺(tái)的天氣預(yù)報(bào)應(yīng)用, 將網(wǎng)絡(luò)系統(tǒng)的功能擴(kuò)展到智能手機(jī)終端上, 讓手機(jī)能夠通過(guò)移動(dòng)網(wǎng)絡(luò)訪(fǎng)問(wèn) Web網(wǎng)站并處理各種各樣的業(yè)務(wù), 可以讓智能手機(jī)用戶(hù)能夠隨時(shí)隨地查詢(xún)互聯(lián)網(wǎng)所供應(yīng)的天氣信息。 1.2. 設(shè)計(jì)意義 可以讓廣闊 Android 手機(jī)用戶(hù)能夠在第一時(shí)間獵取最新的天氣預(yù)報(bào)信息, 以便提前預(yù)防, 便利出行。同時(shí),把氣象災(zāi)難造成的損失降到最低,也可以提高公共服務(wù)質(zhì)量,更好的發(fā)揮氣象事業(yè)對(duì) 經(jīng)濟(jì).進(jìn)
4、展的現(xiàn)實(shí)性作用,有巨大的有用價(jià)值。 雖然該技術(shù)在 Android 平臺(tái)已經(jīng)比較成熟,但是 通過(guò)該軟件的開(kāi)發(fā)仍舊能關(guān)心我更好的熟悉 Android 系統(tǒng)的工作原理。 2. 開(kāi)發(fā)環(huán)境 2.1. 硬件環(huán)境 戴爾靈越筆記本電腦 2.2. 軟件環(huán)境 Android 的上層應(yīng)用程序是用 Java 語(yǔ)言開(kāi)發(fā)的,一般狀況下是基于 Dalvik 虛擬機(jī)的,所以Google 公司推舉使用主流的 Java 集成開(kāi)發(fā)環(huán)境 Eclipse 。而用 Java 語(yǔ)言進(jìn)行開(kāi)發(fā),需要用到 SUN 公司供應(yīng)的 Java SDK(其中包括 JRE: Java Runtime Environment) 。此外, Android 的應(yīng)
5、用程序開(kāi)發(fā)和 Java 開(kāi)發(fā)有較大區(qū)分的,需要使用 Google 供應(yīng)的 Android SDK。同時(shí),要在 Eclipse 上安裝 ADT,為 Android 開(kāi)發(fā)供應(yīng)開(kāi)發(fā)工具的升級(jí)或者變更,是 Eclipse 下開(kāi)發(fā)工具的升級(jí)或下載 的工具。 簡(jiǎn)言之,需要以下軟件,才能搭建 Android 開(kāi)發(fā)環(huán)境,從而進(jìn)行 Android 應(yīng)用程序的開(kāi)發(fā)。 (1) Java SDK (2) Eclipse (3) Android SDK (4) ADT 3. 相關(guān)技術(shù)及學(xué)問(wèn)點(diǎn) 3.1. Activity 應(yīng)用程序中,一個(gè) Activity 通常就是一個(gè)單獨(dú)的屏幕,它上面可以顯示一些控件也可以監(jiān)聽(tīng)并處理用
6、戶(hù)的大事做出響應(yīng)。 Activity 之間通過(guò) Intent 進(jìn)行通信。在 Intent 的描述結(jié)構(gòu)中,有兩個(gè)最重要的部分:動(dòng)作和動(dòng)作對(duì)應(yīng)的數(shù)據(jù)。 典型的動(dòng)作類(lèi)型有: M AIN( activity 的門(mén)戶(hù))、 VIEW、PICK、EDIT 等。而動(dòng)作對(duì)應(yīng)的數(shù)據(jù)則以 URI 的形式進(jìn)行表示。例如:要查看一個(gè)人的聯(lián)系方式, 你需要?jiǎng)?chuàng)建一個(gè)動(dòng)作類(lèi)型為 VIEW 的intent ,以及一個(gè)表示這個(gè)人的 URI。 與之有關(guān)系的一個(gè)類(lèi)叫 IntentFilter 。相對(duì)于 intent 是一個(gè)有效的做某事的懇求,一個(gè)intentfilter 則用于描述一個(gè) activity (或者 IntentRece
7、iver )能夠操作哪些 intent 。一個(gè)activity 假如要顯示一個(gè)人的聯(lián)系方式時(shí),需要聲明一個(gè) IntentFilter ,這個(gè) IntentFilter 要知道怎么去處理 VIEW 動(dòng)作和表示一個(gè)人的 URI。IntentFilter 需要在 中定義。通過(guò)解析各種intent ,從一個(gè)屏幕導(dǎo)航到另一個(gè)屏幕是很簡(jiǎn)潔的。當(dāng)向前導(dǎo)航時(shí), activity 將會(huì)調(diào)用startActivity(Intent myIntent) 方法。然后,系統(tǒng)會(huì)在全部安裝的應(yīng)用程序中定義的 IntentFilter 中查找, 找到最匹配 myIntent 的 Intent 對(duì)應(yīng)的 activity 。新的
8、 activity 接收到myIntent 的通知后,開(kāi)頭運(yùn)行。當(dāng) startActivity 方法被調(diào)用將觸發(fā)解析 myIntent 的動(dòng)作,這個(gè)機(jī)制供應(yīng)了兩個(gè)關(guān)鍵好處: A、Activities 能夠重復(fù)利用從其它組件中以 Intent 的形式產(chǎn)生的一個(gè)懇求; B、Activities 可以在任何時(shí)候被一個(gè)具有相同 IntentFilter 的新的 Activity 取代。 3.2. Service 一個(gè) Service 是一段長(zhǎng)生命周期的,沒(méi)有用戶(hù)界面的程序,可以用來(lái)開(kāi)發(fā)如監(jiān)控類(lèi)程序。 比較好的一個(gè)例子就是一個(gè)正在從播放列表中播放歌曲的媒體播放器。 在一個(gè)媒體播放器的應(yīng)用中,應(yīng)當(dāng)會(huì)有多個(gè)
9、 activity ,讓使用者可以選擇歌曲并播放歌曲。然而,音樂(lè)重放這個(gè)功能并 沒(méi)有對(duì)應(yīng)的 activity ,由于使用者當(dāng)然會(huì)認(rèn)為在導(dǎo)航到其它屏幕時(shí)音樂(lè)應(yīng)當(dāng)還在播放的。在這個(gè) 例子中,媒體播放器這個(gè) activity 會(huì)使用 () 來(lái)啟動(dòng)一個(gè) service ,從而可以在后臺(tái)保持音樂(lè)的播放。同時(shí),系統(tǒng)也將保持這個(gè) service 始終執(zhí)行,直到這個(gè) service 運(yùn)行結(jié)束。另外,我們還可以通過(guò)使用 () 方法,連接到一個(gè) service 上(假如這個(gè) service 還沒(méi)有運(yùn)行將啟動(dòng)它)。當(dāng)連接到一個(gè) service 之后,我們還可以 service 供應(yīng)的接口與它進(jìn)行通訊。拿媒體播放器這
10、個(gè)例子來(lái) 說(shuō),我們還可以進(jìn)行暫停、重播等操作。 , 3.3. 網(wǎng)絡(luò)通信 JSON數(shù)據(jù)解析: ( 1) JavaScript Object Notation 是一種輕量級(jí)的數(shù)據(jù)交換格式; ( 2) Android API 中直接支持對(duì) JSON數(shù)據(jù)的處理; ( 3)常用類(lèi) JSONObject、JSONArray、JSONStringer 和 JSONTokener等; ( 4)數(shù)據(jù)在名稱(chēng) / 值對(duì)中、數(shù)據(jù)由逗號(hào)分隔、花括號(hào)保存對(duì)象、方括號(hào)保存數(shù)組。 HttpURLConnection : 供應(yīng)了基于 HTTP的網(wǎng)絡(luò)訪(fǎng)問(wèn)方法,主要的操作步驟為: (1) 利用 URL地址實(shí)例化 URL類(lèi); (2)
11、 由 URL類(lèi)創(chuàng)建 HttpURLConnection 對(duì)象; (3) 以 GET/POST方式向服務(wù)器發(fā)送懇求; (4) 接收服務(wù)器響應(yīng)。 4. 需求分析 4.1. 系統(tǒng)功能需求分析 ( 1) 能夠由用戶(hù)設(shè)置省份城市; ( 2) 依據(jù)用戶(hù)設(shè)置的城市,點(diǎn)擊刷新按鈕獵取當(dāng)?shù)禺?dāng)天的日期、天氣信息以及將來(lái)六天的天氣狀況。 ( 3) 以淡入淡出的方式顯示主頁(yè)面; ( 4) 打開(kāi)軟件時(shí)可以自動(dòng)播放音樂(lè),用戶(hù)可以在 Menu菜單里選擇關(guān)閉音樂(lè); ( 5) Menu菜單里可以查看開(kāi)發(fā)者信息。 4.2. 系統(tǒng)流程圖 Service 使用步驟如下 : ( 1)繼承 service 類(lèi); ( 2)配置清單文件中
12、application 節(jié)點(diǎn)里對(duì)服務(wù)進(jìn)行配置 service name=.SMSService/ 。 服務(wù)不能自己運(yùn)行 , 需要通過(guò) () 或() 啟動(dòng)服務(wù) 通過(guò) startService() 方法啟動(dòng)的服務(wù)于調(diào)用者沒(méi)有關(guān)系 , 即使調(diào)用者關(guān)閉了 , 服務(wù)仍舊運(yùn)行想停止 服務(wù)要調(diào)用 (), 此時(shí)系統(tǒng)會(huì)調(diào)用 onDestory(), 使用此方法啟動(dòng)時(shí) , 服務(wù)首次啟動(dòng)系統(tǒng)先調(diào)用服務(wù)的 onCreate()-onStart(), 假如服務(wù)已經(jīng)啟動(dòng)再次調(diào)用只會(huì)觸發(fā) onStart() 方法。 使用 bindService() 啟動(dòng)的服務(wù)與調(diào)用者綁定 , 只要調(diào)用者關(guān)閉服務(wù)就終止 , 使用此方法啟動(dòng)時(shí)
13、 服務(wù)首次啟動(dòng)系統(tǒng)先調(diào)用服務(wù)的 onCreate()-onBind(), 假如服務(wù)已經(jīng)啟動(dòng)再次調(diào)用不會(huì)再觸發(fā) 這 2 個(gè)方法 , 調(diào)用者退出時(shí)系統(tǒng)會(huì)調(diào)用服務(wù)的 (), 系統(tǒng)依次調(diào)用 onUnbind()-onDestory() onUnbind()-onDestory(), 想主動(dòng)解除綁定可使用 。 4.4. 系統(tǒng)性能需求分析 軟件在完勝利能需求之后, 還要進(jìn)一步的優(yōu)化, 不能占用手機(jī)太多的內(nèi)存資源, 在交互性上使用戶(hù)獲得最佳感受,讓使用不同手機(jī)設(shè)備的用戶(hù)都能有良好地體驗(yàn)。 打開(kāi)軟件 界面啟動(dòng) 否 網(wǎng)絡(luò)連接 是 進(jìn)入主界面 播放音樂(lè) 選擇城市 刷新天氣 結(jié)束 圖 4-1 系統(tǒng)流程圖 4.3.
14、系統(tǒng)界面需求分析 目前國(guó)內(nèi)軟件開(kāi)發(fā)者在設(shè)計(jì)過(guò)程中很注意軟件的開(kāi)發(fā)技術(shù)及其具有的業(yè)務(wù)功能, 而忽視了用戶(hù) 對(duì)軟件界面的需求,影響軟件的易用性、友好性。 界面設(shè)計(jì)要簡(jiǎn)約、美觀,不能太簡(jiǎn)單,讓用戶(hù)操 作起來(lái)太繁瑣, 影響用戶(hù)的使用體驗(yàn), 要在交互性與應(yīng)用性上讓用戶(hù)感到舒適, 讓用戶(hù) 精確、高效、 輕松、開(kāi)心地完成天氣的查詢(xún) ,所以軟件的友好性、易用性對(duì)軟件系統(tǒng)至關(guān)重要。 5. 設(shè)計(jì)與實(shí)現(xiàn) 5.1. 界面布局 在頁(yè)面的布局上,由于界面設(shè)計(jì)的比較簡(jiǎn)潔, 所以只使用了基礎(chǔ)的橫向布局和縱向布局,橫向布局與縱向布局交替使用,完成了天氣預(yù)報(bào)的界面設(shè)計(jì)。 圖 5-1 界面布局 圖 5-2 軟件主界面 圖 5-3
15、啟動(dòng)界面 圖 5-4 天氣信息界面 圖 5-5 刷新界面 圖 5-6 信息界面 5.2. 省市二級(jí)聯(lián)動(dòng) 將老師給的中國(guó)省市的編號(hào)手動(dòng)輸入到文件中,再定義省份和城市編號(hào)兩個(gè)數(shù)組,再定義 ArrayAdapter ,在兩個(gè)下拉框上分別放上監(jiān)聽(tīng)器, 將省份與城市進(jìn)行綁定, 將所選擇的城市的城市編號(hào)存放到一個(gè)數(shù)組之中,以便之后進(jìn)行天氣信息的獵取。 關(guān)鍵代碼: private int cities = ; private int citycode = ; ( new OnClickListener() Override public void onClick(View v) nflate( null )
16、; sp1 = (Spinner) sp2 = (Spinner) ( new OnItemSelectedListener() Override public void onItemSelected(AdapterView parent, View view, int position, long id) etStringArray( citycode position); Override public void onNothingSelected(AdapterView parent) oString(); cityId = st1 ; ( city ,().toString(); (
17、citycode , cityId ); (); refresh(); ); ); ( 取消 , null ); AlertDialog dialog = (); (); 圖5-7 選擇省份 圖5-8 選擇省份 5.3. 獵取天氣數(shù)據(jù) 獵取天氣信息主要使用的是 HttpURLConnection 類(lèi),供應(yīng)了基于 HTTP的網(wǎng)絡(luò)訪(fǎng)問(wèn)方法, 由 URL 類(lèi)創(chuàng)建 HttpURLConnection 對(duì)象,以 GET/POST方式向服務(wù)器發(fā)送懇求,接收服務(wù)器響應(yīng),最終通過(guò) JSON數(shù)據(jù)解析,將解析得到數(shù)據(jù)綁定到相應(yīng)的組件中。 關(guān)鍵代碼: public void refresh() builder =
18、new ; View v1 = .inflate( null ); ( Waiting ); refresh_textView = (TextView) ( 正在送來(lái) +()+ 的天氣信息 ); (v1); final AlertDialog dialog = (); new Thread() public void run() String url = weaid= + cityId + appkey=10003sign=b59bc3ef6191eb9f747dd4e83c99f2a4format=json ; ( da11111 , url); HttpClient client = ne
19、w DefaultHttpClient(); HttpGet get = new HttpGet(url); try HttpResponse response = (get); HttpEntity is = (); parseJson(is); (); catch (ClientProtocolException e) tart(); new Thread() public void run() try sleep (1000); (); catch (InterruptedException e) tart(); public void parseJson(String jsondata
20、) try Message msg = (); Bundle data = newBundle(); JSONObject ob = newJSONObject(jsondata); JSONArray arr = ( result ); StringBuilder sb = newStringBuilder(); for ( int i = 0; i (); i+) JSONObject job = (JSONObject) (i); ( days ) + , ); ( da , ); ( week ) + , ); ( temperature ) + , ); ( humidity ) +
21、 , ); ( weather ) + , ); ( wind ) + , ); ( winp ) + , ); ( weather_icon ) + , ); ( weather_icon1 ); ( key + i, (); (data); (0); (msg); catch (JSONException e) penConnection(); (3000); ( GET); int code1 = (); URL url2 = newURL(img2_url); HttpURLConnection conn2 = (HttpURLConnection) url2 .openConnect
22、ion(); (3000); ( GET); int code2 = (); if (code1 = code2 = InputStream is1 = (); InputStream is2 = (); bp = (is1); bp1 = (is2); (1); catch (MalformedURLException e) tart(); handler = new Handler() Override public void handleMessage(Message msg) etString( key + 0); String st = ( , ); ( 今日 +st1); (st0
23、); (st4); (st2); (st3); (st6); (st5); String img1_url = st7.toString(); String img2_url = st8.toString(); ( ersdfsfgdvystnsdbrev , img2_url); getImg(img1_url, img2_url); handler1 = new Handler() Override public void handleMessage(Message msg) / TODOAuto-generated method stub (msg); if = 1) ( bp); ( bp1); ; 5.4. 播放背景音樂(lè) 在 src 中新建一個(gè) service 類(lèi),在其中實(shí)現(xiàn)播放音樂(lè)的功能, 在主程序中調(diào)用時(shí), 直接用 intend 跳轉(zhuǎn),想要停止播放時(shí),直接停止這
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲業(yè)成本控制與預(yù)算管理指南(標(biāo)準(zhǔn)版)
- 餐飲食品安全管理與操作手冊(cè)
- 城市道路施工質(zhì)量驗(yàn)收制度
- 成品倉(cāng)庫(kù)管理制度
- 采購(gòu)檔案管理與保密制度
- 辦公室網(wǎng)絡(luò)安全教育與培訓(xùn)制度
- 養(yǎng)老院老人健康監(jiān)測(cè)人員社會(huì)保險(xiǎn)制度
- 南陽(yáng)市第六人民醫(yī)院2025年第二批公開(kāi)招聘專(zhuān)業(yè)技術(shù)人員備考題庫(kù)參考答案詳解
- 養(yǎng)老院?jiǎn)T工培訓(xùn)與考核制度
- 第六章 數(shù)據(jù)的分析 期末復(fù)習(xí)訓(xùn)練(含答案)2024-2025學(xué)年度北師大版數(shù)學(xué)八年級(jí)上冊(cè)
- 2025年遼鐵單招考試題目及答案
- 醫(yī)療行業(yè)數(shù)據(jù)安全事件典型案例分析
- 2026年生物醫(yī)藥創(chuàng)新金融項(xiàng)目商業(yè)計(jì)劃書(shū)
- 湖南名校聯(lián)考聯(lián)合體2026屆高三年級(jí)1月聯(lián)考化學(xué)試卷+答案
- 井下爆破安全培訓(xùn)課件
- 2026年安全員證考試試題及答案
- 山東省濰坊市2024-2025學(xué)年二年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 空氣源熱泵供熱工程施工方案
- 合伙車(chē)輛分車(chē)協(xié)議書(shū)
- 2026屆濰坊市重點(diǎn)中學(xué)高一化學(xué)第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 中國(guó)馬克思主義與當(dāng)代2024版教材課后思考題答案
評(píng)論
0/150
提交評(píng)論