版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、唯辱致戒工用優(yōu)CHAFKSSHLI SHSTiTUTE 3r TWtXfl口LESiSV課程設(shè)計(jì)報(bào)告課程名稱:移動(dòng)平臺(tái)開發(fā)設(shè)計(jì)題目:天氣預(yù)報(bào)院 系:計(jì)算機(jī)科學(xué)與工程學(xué)院專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班 級(jí):學(xué) 號(hào):姓 名:指導(dǎo)教師:孫霞設(shè)計(jì)地點(diǎn):N6-113開課時(shí)間:2016至2017學(xué)年第1學(xué)期目錄1. 引言 錯(cuò)誤!未定義書簽。.題目描述 錯(cuò)誤!未定義書簽。.設(shè)計(jì)意義 錯(cuò)誤!未定義書簽。2. 開發(fā)環(huán)境 錯(cuò)誤!未定義書簽。.硬件環(huán)境 錯(cuò)誤!未定義書簽。.軟件環(huán)境 錯(cuò)誤!未定義書簽。3. 相關(guān)技術(shù)及知識(shí)點(diǎn) 錯(cuò)誤!未定義書簽。.Activity 錯(cuò)誤!未定義書簽。.Service 錯(cuò)誤!未定義書簽。.網(wǎng)
2、絡(luò)通信 錯(cuò)誤!未定義書簽。4. 需求分析 錯(cuò)誤!未定義書簽。.系統(tǒng)功能需求分析 錯(cuò)誤!未定義書簽。.系統(tǒng)流程圖 錯(cuò)誤!未定義書簽。.系統(tǒng)界面需求分析 錯(cuò)誤!未定義書簽。.系統(tǒng)性能需求分析 錯(cuò)誤!未定義書簽。5. 設(shè)計(jì)與實(shí)現(xiàn) 錯(cuò)誤!未定義書簽。.界面布局 錯(cuò)誤!未定義書簽。.省市二級(jí)聯(lián)動(dòng) 錯(cuò)誤!未定義書簽。.獲取天氣數(shù)據(jù) 錯(cuò)誤!未定義書簽。.播放背景音樂 錯(cuò)誤!未定義書簽。6. 個(gè)人總結(jié) 錯(cuò)誤!未定義書簽。參考資料 錯(cuò)誤!未定義書簽。1 . 引言1.1. 題目描述本次實(shí)驗(yàn)是開發(fā)一款基于Android 平臺(tái)的天氣預(yù)報(bào)應(yīng)用, 將網(wǎng)絡(luò)系統(tǒng)的功能擴(kuò)展到智能手機(jī)終端上,讓手機(jī)能夠通過移動(dòng)網(wǎng)絡(luò)訪問Web網(wǎng)站
3、并處理各種各樣的業(yè)務(wù),可以讓智能手機(jī)用戶能夠隨時(shí)隨地查詢互聯(lián)網(wǎng)所提供的天氣信息。1.2. 設(shè)計(jì)意義可以讓廣大Android 手機(jī)用戶能夠在第一時(shí)間獲取最新的天氣預(yù)報(bào)信息, 以便提前預(yù)防, 方便出行。同時(shí),把氣象災(zāi)害造成的損失降到最低,也可以提高公共服務(wù)質(zhì)量,更好的發(fā)揮氣象事業(yè)對(duì) 經(jīng)濟(jì)社會(huì)發(fā)展的現(xiàn)實(shí)性作用,有巨大的實(shí)用價(jià)值。 雖然該技術(shù)在Android 平臺(tái)已經(jīng)比較成熟,但是通過該軟件的開發(fā)仍然能幫助我更好的認(rèn)識(shí)Android 系統(tǒng)的工作原理。2 . 開發(fā)環(huán)境2.1. 硬件環(huán)境 戴爾靈越筆記本電腦2.2. 軟件環(huán)境Android 的上層應(yīng)用程序是用 Java 語言開發(fā)的,一般情況下是基于 Dal
4、vik 虛擬機(jī)的,所以Google 公司推薦使用主流的 Java 集成開發(fā)環(huán)境Eclipse 。而用 Java 語言進(jìn)行開發(fā),需要用到 SUN公司提供的 Java SDK(其中包括 JRE Java Runtime Environment)。此外,Android 的應(yīng)用程 序開發(fā)和Java開發(fā)有較大區(qū)別白需要使用Google提供的Android SDK同時(shí),要在 Eclipse上安裝ADT,為Android開發(fā)提供開發(fā)工具的升級(jí)或者變更,是 Eclipse下開發(fā)工具的升級(jí)或下載 的工具。簡(jiǎn)言之,需要以下軟件,才能搭建Android 開發(fā)環(huán)境,從而進(jìn)行Android 應(yīng)用程序的開發(fā)。(1) Ja
5、va SDK(2) Eclipse(3) Android SDK(4) ADT3 .相關(guān)技術(shù)及知識(shí)點(diǎn)3.1. Activity應(yīng)用程序中,一個(gè) Activity通常就是一個(gè)單獨(dú)的屏幕,它上面可以顯示一些控件也可以監(jiān)聽并處理用戶的事件做出響應(yīng)。Activity 之間通過Intent進(jìn)行通彳t。在Intent 的描述結(jié)構(gòu)中,有兩個(gè)最重要的部分:動(dòng)作 和動(dòng)作對(duì)應(yīng)的數(shù)據(jù)。典型的動(dòng)作類型有:M AIN (activity的門戶)、VIEW PICK、EDIT等。而動(dòng)作對(duì)應(yīng)的數(shù)據(jù)則以URI的形式進(jìn)行表示。例如:要查看一個(gè)人的聯(lián)系方式,你需要?jiǎng)?chuàng)建一個(gè)動(dòng)作類型為VIEW的intent ,以及一個(gè)表示這個(gè)人的U
6、RI。與之有關(guān)系的一個(gè)類叫IntentFilter 。相對(duì)于intent是一個(gè)有效的做某事的請(qǐng)求,一個(gè)intentfilter則用于描述一個(gè) activity (或者IntentReceiver )能夠操作哪些intent 。一個(gè)activity如果要顯示一個(gè)人的聯(lián)系方式時(shí),需要聲明一個(gè)IntentFilter ,這個(gè)IntentFilter 要知道怎么去處理VIEW動(dòng)作和表示一個(gè)人的URL IntentFilter 需要在中定義。通過解析各種intent ,從一個(gè)屏幕導(dǎo)航到另一個(gè)屏幕是很簡(jiǎn)單的。當(dāng)向前導(dǎo)航時(shí),activity將會(huì)調(diào)用startActivity(Intent myIntent)
7、方法。然后,系統(tǒng)會(huì)在所有安裝的應(yīng)用程序中定義的IntentFilter中查找,找到最匹配 myIntent 的Intent 對(duì)應(yīng)的activity 。新的activity 接收到myIntent的通知后,開始運(yùn)行。當(dāng) startActivity方法被調(diào)用將觸發(fā)解析myIntent的動(dòng)作,這個(gè)機(jī)制提供了兩個(gè)關(guān)鍵好處:A、Activities能夠重復(fù)利用從其它組件中以Intent 的形式產(chǎn)生的一個(gè)請(qǐng)求;B、Activities可以在任何時(shí)候被一個(gè)具有相同IntentFilter 的新的Activity 取代。3.2. Service一個(gè)Service是一段長生命周期的,沒有用戶界面的程序,可以用來
8、開發(fā)如監(jiān)控類程序。比較好的一個(gè)例子就是一個(gè)正在從播放列表中播放歌曲的媒體播放器。在一個(gè)媒體播放器的應(yīng)用中,應(yīng)該會(huì)有多個(gè)activity ,讓使用者可以選擇歌曲并播放歌曲。然而,音樂重放這個(gè)功能并沒有對(duì)應(yīng)的activity ,因?yàn)槭褂谜弋?dāng)然會(huì)認(rèn)為在導(dǎo)航到其它屏幕時(shí)音樂應(yīng)該還在播放的。在這個(gè) 例子中,媒體播放器這個(gè)activity 會(huì)使用()來啟動(dòng)一個(gè)service ,從而可以在后臺(tái)保持音樂的播放。同時(shí),系統(tǒng)也將保持這個(gè)service 一直執(zhí)行,直到這個(gè) service 運(yùn)行結(jié)束。另外,我們還可以通過使用()方法,連接到一個(gè) service 上(如果這個(gè)service 還沒有運(yùn)行將啟動(dòng)它)。當(dāng)連接
9、 到一個(gè)service 之后,我們還可以service 提供的接口與它進(jìn)行通訊。拿媒體播放器這個(gè)例子來說,我們還可以進(jìn)行暫停、重播等操作。Service使用步驟如下(1)繼承 service 類;(2)配置清單文件中application 節(jié)點(diǎn)里對(duì)服務(wù)進(jìn)行配置 service name=".SMSService"/> 。服務(wù)不能自己運(yùn)行,需要通過()或()啟動(dòng)服務(wù)通過startService()方法啟動(dòng)的服務(wù)于調(diào)用者沒有關(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ù)的 on
10、Create()->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í)服務(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ù)的 onUnbind()->onDestory(),想主動(dòng)解除綁定可使用(),系統(tǒng)依次調(diào)用 onUnbind()->onDestory() 。3.3. 網(wǎng)絡(luò)通信JSONB據(jù)解析:(1) JavaScript Object Notation是一
11、種輕量級(jí)的數(shù)據(jù)交換格式;(2) Android API中直接支持對(duì)JSON數(shù)據(jù)的處理;(3)常用類 JSONObject、JSONArray、JSONStringer 和 JSONTokener等;(4)數(shù)據(jù)在名稱/值對(duì)中、數(shù)據(jù)由逗號(hào)分隔、花括號(hào)保存對(duì)象、方括號(hào)保存數(shù)組。HttpURLConnection :提供了基于HTTP的網(wǎng)絡(luò)訪問方法,主要的操作步驟為:(1)利用URLM址實(shí)例化URL類;(2)由 URL類創(chuàng)建 HttpURLConnection 對(duì)象;(3)以GET/POS訪式向服務(wù)器發(fā)送請(qǐng)求;(4)接收服務(wù)器響應(yīng)。4 .需求分析4.1. 系統(tǒng)功能需求分析(1) 能夠由用戶設(shè)置省份城市
12、;(2) 根據(jù)用戶設(shè)置的城市,點(diǎn)擊刷新按鈕獲取當(dāng)?shù)禺?dāng)天的日期、天氣信息以及未來六天的天氣情況。(3) 以淡入淡出的方式顯示主頁面;(4) 打開軟件時(shí)可以自動(dòng)播放音樂,用戶可以在Menu菜單里選擇關(guān)閉音樂;(5) Menu菜單里可以查看開發(fā)者信息。4.2. 系統(tǒng)流程圖圖4-1系統(tǒng)流程圖4.3. 系統(tǒng)界面需求分析目前國內(nèi)軟件開發(fā)者在設(shè)計(jì)過程中很注重軟件的開發(fā)技術(shù)及其具有的業(yè)務(wù)功能,而忽略了用戶對(duì)軟件界面的需求,影響軟件的易用性、友好性。界面設(shè)計(jì)要簡(jiǎn)約、美觀,不能太復(fù)雜,讓用戶操作起來太繁瑣,影響用戶的使用體驗(yàn), 要在交互性與應(yīng)用性上讓用戶感到舒適,讓用戶準(zhǔn)確、高效、輕松、愉快地完成天氣的查詢,所以
13、軟件的友好性、易用性對(duì)軟件系統(tǒng)至關(guān)重要。4.4. 系統(tǒng)性能需求分析軟件在完成功能需求之后,還要進(jìn)一步的優(yōu)化,不能占用手機(jī)太多的內(nèi)存資源,在交互性上使 用戶獲得最佳感受,讓使用不同手機(jī)設(shè)備的用戶都能有良好地體驗(yàn)。5 .設(shè)計(jì)與實(shí)現(xiàn)5.1. 界面布局在頁面的布局上,因?yàn)榻缑嬖O(shè)計(jì)的比較簡(jiǎn)單,所以只使用了基礎(chǔ)的橫向布局和縱向布局,橫向布局與縱向布局交替使用,完成了天氣預(yù)報(bào)的界面設(shè)計(jì)。J A,Wla也:事天氣孩報(bào)-JLi near Lay outJ |_| Linea rLjyout. imaq&VieiArl Ic|Ab; wea.crty ;1門看尸 imaqeView2L imageView
14、S - i :2 Linea rLdyoutlAb day_te)rtView 陽 tevtViewl -1 Ab wea_textVie>w| Lines rLayouttinea rLdyout| | Linea rLyout| tinea rLayout linea rLayout imageView6 -施| textViewS -W無天氣"日 li&tViewl太原 o中M星用三天IW2016-12-2B/£直: 通由OTDTF Ajt-r理寺羯音宜埼達(dá)碼 fUj: 3領(lǐng)先擔(dān)用Nf六天團(tuán)天,飛電;里HR三 如出1士翎 -C-ITC 西二問碼無邦埃聞而
15、 3噂盛狀11鳳 二? uia .9014-12WTC比掙餐房的依應(yīng)史劇話州 T*,i3,3O爾的元尚知):為風(fēng)星瞅2(ii M 241mrc圖5-1界面布局圖5-2軟件主界面天用二2pi4i-T?-3n mg ekim比oiAF1£網(wǎng) 3-4»3昨,邕F3 44I:期劉刈樂法29南用轉(zhuǎn)北閏I201«-13"3TO-6TC南北JQ圖5-3啟動(dòng)界面圖5-4天氣信息界面圖5-5刷新界面圖5-6作者信息界面5.2. 省市二級(jí)聯(lián)動(dòng)將老師給的中國省市的編號(hào)手動(dòng)輸入到文件中,再定義省份和城市編號(hào)兩個(gè)數(shù)組,再定義ArrayAdapter ,在兩個(gè)下拉框上分別放上監(jiān)聽器
16、,將省份與城市進(jìn)行綁定,將所選擇的城市的城市編號(hào)存放到一個(gè)數(shù)組之中,以便之后進(jìn)行天氣信息的獲取。關(guān)鍵代碼:private int 口 cities = ;private int 口 citycode = ;(new OnClickListener() Overridepublic void onClick(View v) nflate(null );sp1 = (Spinner)sp2 = (Spinner)(newOnItemSelectedListener() Overridepublic void onItemSelected(AdapterView<> parent, Vi
17、ew view, int position, long id) etStringArray( citycode position);Overridepublic void onNothingSelected(AdapterView<> parent) oString();cityId = st1 ;("city" ,().toString();("citycode" , cityId );();refresh。; );("取消",null );AlertDialog dialog =();(););史 13出? dlfeM
18、iKiK圖5-7選擇省份圖5-8選擇省份5.3. 獲取天氣數(shù)據(jù)URL獲取天氣信息主要使用的是 HttpURLConnection類,提供了基于HTTP的網(wǎng)絡(luò)訪問方法,E 類創(chuàng)建HttpURLConnection對(duì)象,以GET/POS訪式向服務(wù)器發(fā)送請(qǐng)求,接收服務(wù)器響應(yīng),最后通 過JSONB據(jù)解析,將解析得到數(shù)據(jù)綁定到相應(yīng)的組件中。關(guān)鍵代碼:public void refresh。builder = new ;View v1 = .inflate(null );("Waiting");refresh_textView = (TextView) (v1);final Alert
19、Dialog dialog =();("正在送來"+()+ "的天氣信息”);new Thread() public void run() String url = "&weaid=" + cityId +"&&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json"( "da11111", url);HttpClient client = new DefaultHttpClient();Http
20、Get 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) try Message msg = ();Bundle data
21、 = newBundle();JSONObject ob = newJSONObject(jsondata);JSONArray arr = ( "result" );StringBuilder sb = newStringBuilder();for ( int i = 0; i < (); i+) JSONObject job = (JSONObject) (i);( "days" ) + "," );( "da" , "" );( "week") + ",
22、" );( "temperature" ) + "," );( "humidity" ) + "," );( "weather" ) + "," );( "wind" ) + "," );( "winp" ) + "," );( "weather_icon" ) + "," );( "weather_icon1" );( &qu
23、ot;key" + i, ();(data);(0);(msg); catch (JSONException e) penConnection();(3000);("GET");int code1 =();URL url2 = newURL(img2_url);HttpURLConnection conn2 = (HttpURLConnection) url2 .openConnection();(3000);("GET");int code2 =();if (code1 =&& code2 = InputStream is1
24、=(); InputStream is2 =(); bp = (is1);bp1 = (is2);; catch (MalformedURLException e) tart();handler = new Handler。Overridepublic void handleMessage(Message msg) etString( "key" + 0);String st =(",");("今天"+st1);(st0);(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。Overridepublic void handleMessage(Message msg) / TODOAuto-generated method stub(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年象州縣機(jī)關(guān)事務(wù)管理局公開招聘編外工作人員備考題庫及完整答案詳解一套
- 2026年湖北銀行武漢財(cái)富管理人員社會(huì)招聘?jìng)淇碱}庫帶答案詳解
- 儀隴縣司法局關(guān)于公開選聘儀隴縣法律顧問團(tuán)成員8-120的備考題庫及完整答案詳解一套
- 2025年高職火箭發(fā)動(dòng)機(jī)制造與試驗(yàn)技術(shù)(發(fā)動(dòng)機(jī)技術(shù))期末試題
- 企業(yè)內(nèi)部知識(shí)協(xié)同分享激勵(lì)政策
- 教師資格證面試聽力技巧
- 面試技巧浦發(fā)銀行
- 2025年航空業(yè)商業(yè)航天創(chuàng)新報(bào)告
- 2025年工業(yè)廢水處理設(shè)備五年技術(shù)突破報(bào)告
- 2026年植物基食品風(fēng)味報(bào)告
- 2025年遼鐵單招考試題目及答案
- 醫(yī)療行業(yè)數(shù)據(jù)安全事件典型案例分析
- 2026年生物醫(yī)藥創(chuàng)新金融項(xiàng)目商業(yè)計(jì)劃書
- 湖南名校聯(lián)考聯(lián)合體2026屆高三年級(jí)1月聯(lián)考化學(xué)試卷+答案
- 井下爆破安全培訓(xùn)課件
- 2026年安全員證考試試題及答案
- 山東省濰坊市2024-2025學(xué)年二年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 空氣源熱泵供熱工程施工方案
- 合伙車輛分車協(xié)議書
- 2026屆濰坊市重點(diǎn)中學(xué)高一化學(xué)第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 中國馬克思主義與當(dāng)代2024版教材課后思考題答案
評(píng)論
0/150
提交評(píng)論