版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Android天氣預(yù)報(bào)系統(tǒng)學(xué)院:計(jì)算機(jī)與信息工程學(xué)院班級(jí):10軟件技術(shù)1班姓名:學(xué)號(hào):指導(dǎo)教師:
一、設(shè)計(jì)目標(biāo)設(shè)計(jì)完成一個(gè)實(shí)用穩(wěn)定的天氣預(yù)報(bào)系統(tǒng),同時(shí)使其能滿足大部分用戶的需求。因此針對(duì)上述要求,本設(shè)計(jì)應(yīng)滿足:1.系統(tǒng)能及時(shí)的反饋指定預(yù)報(bào)城市的天氣情況2.自動(dòng)定位用戶所在城市,支持GPS定位3.節(jié)省流量開梢.規(guī)定在指定的時(shí)間間隔內(nèi)才更新天氣,其它時(shí)段顯示緩存的天氣4.操作方便快捷,使用簡(jiǎn)單,界面設(shè)計(jì)美觀大方,支持widget二、開發(fā)及運(yùn)行環(huán)境JDK1.6EclipseADT16.0及以上Android2.2及以上WindowXP及以上三、數(shù)據(jù)庫設(shè)計(jì)由于在本系統(tǒng)中是通過中央氣象臺(tái)的WebService提供的API訪問得到的天氣預(yù)報(bào),在查詢指定城市的天氣時(shí),需要用到它提供的城市碼,而城市碼相對(duì)穩(wěn)定不變,所以在構(gòu)建系統(tǒng)時(shí)將其事先通過Android的網(wǎng)絡(luò)訪問技術(shù)將其緩沖到本地SQLite數(shù)據(jù)庫進(jìn)行保存起來,方便以后的查詢,同時(shí)節(jié)省了流量開銷.綜上所述在本地建立db_weather.db的數(shù)據(jù)庫,其中的表結(jié)構(gòu)如下:其中只存在兩個(gè)表:provices和citysCity中存在city_num用天氣的查詢,同時(shí)還存在外鍵province_id與provices表形成1對(duì)n的關(guān)系。四、主要功能實(shí)現(xiàn)1.獲取城市碼db_weather.db數(shù)據(jù)庫文件獲取全國(guó)各地的城市碼,是通過訪問中央氣象局網(wǎng)從省份直轄市到城鎮(zhèn)一級(jí)一級(jí)深入得到的,獲得一個(gè)地區(qū)的城市碼總共需要訪問4次網(wǎng)絡(luò)。訪問/dat5/city.xml得到省份直轄市列表與它的編號(hào):2.訪問/dat5/city<省份編號(hào)>.xml得到該省份直轄市的城市編號(hào)(如訪問山東:/dat5/city12.xml)3.訪問/dat5/city<城市編號(hào)>.xml得到該城市的縣區(qū)編號(hào)(如訪問濟(jì)南:/dat5/city1201.xml)4.訪問/dat5/city<縣區(qū)編號(hào)>.xml得到該縣區(qū)的編號(hào)編號(hào)(如訪問長(zhǎng)清:/dat5/city120212.xml)首先實(shí)現(xiàn)上述功能需使用Android的網(wǎng)絡(luò)訪問技術(shù),故編寫工具類WebAccessTools類如下:publicclassWebAccessTools{ privateContextcontext;publicWebAccessTools(Contextcontext){ this.context=context; } /** *根據(jù)給定的url地址訪問網(wǎng)絡(luò),得到響應(yīng)內(nèi)容(這里為GET方式訪問) *@paramurl指定的url地址 *@returnweb服務(wù)器響應(yīng)的內(nèi)容,為<code>String</code>類型,當(dāng)訪問失敗時(shí),返回為null */ publicStringgetWebContent(Stringurl){ //創(chuàng)建一個(gè)http請(qǐng)求對(duì)象 HttpGetrequest=newHttpGet(url); //創(chuàng)建HttpParams以用來設(shè)置HTTP參數(shù) HttpParamsparams=newBasicHttpParams(); //設(shè)置連接超時(shí)或響應(yīng)超時(shí) //HttpConnectionParams.setConnectionTimeout(params,3000); //HttpConnectionParams.setSoTimeout(params,5000); //創(chuàng)建一個(gè)網(wǎng)絡(luò)訪問處理對(duì)象 HttpClienthttpClient=newDefaultHttpClient(params); try{ //執(zhí)行請(qǐng)求參數(shù)項(xiàng) HttpResponseresponse=httpClient.execute(request); //判斷是否請(qǐng)求成功 if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){ //獲得響應(yīng)信息 Stringcontent=EntityUtils.toString(response.getEntity()); returncontent; }else{ //網(wǎng)連接失敗,使用Toast顯示提示信息 Toast.makeText(context,"網(wǎng)絡(luò)訪問失敗,請(qǐng)檢查您機(jī)器的聯(lián)網(wǎng)設(shè)備!",Toast.LENGTH_LONG).show(); } }catch(Exceptione){ e.printStackTrace(); }finally{ //釋放網(wǎng)絡(luò)連接資源 httpClient.getConnectionManager().shutdown(); } returnnull; }}2.GPS定位功能的實(shí)現(xiàn)Android中調(diào)用GPS功能,首先要獲取GPS定位管理器LocationManager,獲取LocationManager后就是獲取助LocationProvider,可以通過Criteria對(duì)象設(shè)置過濾條件來獲得最符合用戶需求的LocationProvider,得到LocationProvider后就可通過調(diào)用LocationManager對(duì)象的getLastKnownLocation()方法來獲取Location地址封裝對(duì)象。最后由實(shí)例化的Geocoder將Location中的經(jīng)度和緯度反編譯為地址信息集合List對(duì)象。從而由List對(duì)象來得到當(dāng)前用戶地址名。在開發(fā)過程中通過Eclipse中的ADT抽件的DDMS可以為Android模擬器指定任意地址,如下:使用的代碼如下:由此可知,為了實(shí)現(xiàn)GPS的定位功能還需要實(shí)現(xiàn)一個(gè)解析XML的工具類,在本系統(tǒng)中由工具類LocationXMParser完成,它繼承至org.xml.sax.helpers.DefaultHandler類。用于專門用于解析XMI文件。publicsynchronizedMap<Integer,String>getLocationCityInfo(){ LocationManagerlocationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); //設(shè)置一個(gè)Criteria標(biāo)準(zhǔn)用于過濾LocationProvider Criteriacriteria=newCriteria(); //設(shè)置不需要高度信息 criteria.setAltitudeRequired(false); //設(shè)置不需要方位信息 criteria.setBearingRequired(false); //設(shè)置得到的為免費(fèi) //criteria.setCostAllowed(false); //得到最好的可用的Provider Stringprovider=locationManager.getBestProvider(criteria,true); //得到當(dāng)前的位置對(duì)象 Locationlocation=locationManager.getLastKnownLocation(provider); if(location!=null){ doublelatitude=location.getLatitude();//得到經(jīng)度 doublelongitude=location.getLongitude();//得到緯度 //根據(jù)經(jīng)緯度得到詳細(xì)的地址信息 //定義的一個(gè)網(wǎng)絡(luò)訪問工具類WebAccessToolswebTools=newWebAccessTools(this); StringaddressContext=webTools.getWebContent("/maps/geo?output=xml&q="+latitude+","+longitude); //解析地址信息 SAXParserFactoryspf=SAXParserFactory.newInstance(); try{ SAXParserparser=spf.newSAXParser(); XMLReaderreader=parser.getXMLReader(); LocationXMLParserhandler=newLocationXMLParser(); reader.setContentHandler(handler); StringReaderread=newStringReader(addressContext); //創(chuàng)建新的輸入源SAX解析器將使用InputSource對(duì)象來確定如何讀取XML輸入 InputSourcesource=newInputSource(read); //開始解析 reader.parse(source); //判斷是否存在地址 if(handler.hasAddress()) returnhandler.getDetailAddress(); }catch(ParserConfigurationExceptione){ e.printStackTrace(); }catch(SAXExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } }returnnull;}上面代碼中的getDetailAddress()方法返回的是一個(gè)Map對(duì)象,其中封裝了從XML中解析得到的國(guó)家、省份、縣區(qū)和城市四個(gè)信息。在得到這些信息后,系統(tǒng)將與數(shù)據(jù)庫中預(yù)存的省份城市相比較,最終匹配得到該地區(qū)的城市碼完成GPS自動(dòng)定位功能的實(shí)現(xiàn)。3.Widget窗體小部件的更新由于widget中的時(shí)鐘關(guān)系,需要對(duì)widget顯示進(jìn)行時(shí)刻的更新用來保持與系統(tǒng)中時(shí)間的一致。實(shí)現(xiàn)這個(gè)功能需要用到AlarmManager類,這個(gè)類專門用來設(shè)定在某個(gè)指定的時(shí)間去完成指定的事件。設(shè)計(jì)思路是在widget的onUpdate方法中啟動(dòng)一個(gè)自定義更新后臺(tái)服務(wù),更新widget,并設(shè)定下一分鐘再次調(diào)用此服務(wù)。具體實(shí)現(xiàn)過步驟如下:publicvoidonStart(Intentintent,intstartId){ super.onStart(intent,startId); Log.i("widgetService","===================updatewidget==========================="); //得到widget的布局對(duì)象 RemoteViewsviews=WeatherWidget.getWeatherView(this); //得到AppWidgetManagerwidget管理器 AppWidgetManagerappWidgetManager=AppWidgetManager.getInstance(this); int[]appids=appWidgetManager.getAppWidgetIds(newComponentName(this,WeatherWidget.class)); //====================================================== //得到城市碼 SharedPreferencessp=getSharedPreferences(SetCityActivity.CITY_CODE_FILE,SetCityActivity.MODE_PRIVATE); StringcityCode=sp.getString("code",""); if(cityCode!=null&&cityCode.trim().length()>0){ Log.i("widget","===================updateweather==========================="); WeatherWidget.updateAppWidget(views,this,appWidgetManager,cityCode); } //====================================================== appWidgetManager.updateAppWidget(appids,views); //獲取當(dāng)前時(shí)間 Datedate=newDate(); longnow=date.getTime(); longunit=60000;//間隔一分鐘 ints=date.getSeconds();//得到秒數(shù) unit=60000-s*1000;//將時(shí)間精確到秒 pintent=PendingIntent.getService(this,0,intent,0); //計(jì)時(shí)器 alarm=(AlarmManager)getSystemService(Context.ALARM_SERVICE); //AlarmManager.RTC_WAKEUP設(shè)置服務(wù)在系統(tǒng)休眠時(shí)同樣會(huì)運(yùn)行 //第二個(gè)參數(shù)是下一次啟動(dòng)service時(shí)間 alarm.set(AlarmManager.RTC_WAKEUP,now+unit,pintent); }這樣就實(shí)現(xiàn)了widget的更新功能,其實(shí)在配制widget的AppWidgetProviderlnfo的配置文件中通過設(shè)置android:updatePeriodMillis屬性來設(shè)置widget的自動(dòng)更新,它的單位中毫秒,但由于自動(dòng)更新對(duì)性能的損壞,故它有一個(gè)最低值。這最低值長(zhǎng)于一分鐘,故而與該系統(tǒng)的要求不符,故以調(diào)用后臺(tái)Service的方式來解決。五、功能測(cè)試本系統(tǒng)的測(cè)試,主要是通過手動(dòng)操作該系統(tǒng),查看是否存在異?;虿僮鞯慕Y(jié)果是否符合設(shè)計(jì)初衷來完成的,現(xiàn)將系統(tǒng)的主要操作結(jié)果截圖展示如下:一、當(dāng)系統(tǒng)初次啟動(dòng)時(shí),由于沒有設(shè)置預(yù)報(bào)城市,則自動(dòng)由MianActivity天氣顯示視圖跳轉(zhuǎn)到setCityActivity城市設(shè)置視圖,并要求用戶選擇預(yù)報(bào)城市,如下:二、接下來點(diǎn)擊確定選擇城市,則系統(tǒng)確定用戶單擊城市的城市碼跳轉(zhuǎn)至天氣顯示界面,如下:三、跳轉(zhuǎn)到天氣顯示界面后,可單擊“菜單”按鈕來顯示天氣的菜單:四、選擇“設(shè)置城市”菜單項(xiàng),則跳轉(zhuǎn)至設(shè)置城市的視圖界面,在這里可以在輸入城市的關(guān)鍵字在進(jìn)行過濾查詢,這樣就及大的方便了用戶的選擇:五、如果要定位當(dāng)前的城市,單擊“定位當(dāng)前城市”自動(dòng)設(shè)置城市,而在此之前必須在DDMS控制面板中指定一個(gè)經(jīng)緯度,來開啟GPS功能:六、widget窗體小部件的添加是通過長(zhǎng)按桌面的空白處,出現(xiàn)一個(gè)選項(xiàng)菜單,然后選擇“窗體小部件”,接著在彈出的選項(xiàng)中選擇“天氣精靈”即本系統(tǒng),則設(shè)計(jì)的小窗體部件將會(huì)出現(xiàn)在主屏幕的桌而上:
論大學(xué)生寫作能力寫作能力是對(duì)自己所積累的信息進(jìn)行選擇、提取、加工、改造并將之形成為書面文字的能力。積累是寫作的基礎(chǔ),積累越厚實(shí),寫作就越有基礎(chǔ),文章就能根深葉茂開奇葩。沒有積累,胸?zé)o點(diǎn)墨,怎么也不會(huì)寫出作文來的。寫作能力是每個(gè)大學(xué)生必須具備的能力。從目前高校整體情況上看,大學(xué)生的寫作能力較為欠缺。一、大學(xué)生應(yīng)用文寫作能力的定義那么,大學(xué)生的寫作能力究竟是指什么呢?葉圣陶先生曾經(jīng)說過,“大學(xué)畢業(yè)生不一定能寫小說詩歌,但是一定要寫工作和生活中實(shí)用的文章,而且非寫得既通順又扎實(shí)不可?!睂?duì)于大學(xué)生的寫作能力應(yīng)包含什么,可能有多種理解,但從葉圣陶先生的談話中,我認(rèn)為:大學(xué)生寫作能力應(yīng)包括應(yīng)用寫作能力和文學(xué)寫作能力,而前者是必須的,后者是“不一定”要具備,能具備則更好。眾所周知,對(duì)于大學(xué)生來說,是要寫畢業(yè)論文的,我認(rèn)為寫作論文的能力可以包含在應(yīng)用寫作能力之中。大學(xué)生寫作能力的體現(xiàn),也往往是在撰寫畢業(yè)論文中集中體現(xiàn)出來的。本科畢業(yè)論文無論是對(duì)于學(xué)生個(gè)人還是對(duì)于院系和學(xué)校來說,都是十分重要的。如何提高本科畢業(yè)論文的質(zhì)量和水平,就成為教育行政部門和高校都很重視的一個(gè)重要課題。如何提高大學(xué)生的寫作能力的問題必須得到社會(huì)的廣泛關(guān)注,并且提出對(duì)策去實(shí)施解決。二、造成大學(xué)生應(yīng)用文寫作困境的原因:(一)大學(xué)寫作課開設(shè)結(jié)構(gòu)不合理。就目前中國(guó)多數(shù)高校的學(xué)科設(shè)置來看,除了中文專業(yè)會(huì)系統(tǒng)開設(shè)寫作的系列課程外,其他專業(yè)的學(xué)生都只開設(shè)了普及性的《大學(xué)語文》課。學(xué)生寫作能力的提高是一項(xiàng)艱巨復(fù)雜的任務(wù),而我們的課程設(shè)置僅把這一任務(wù)交給了大學(xué)語文教師,可大學(xué)語文教師既要在有限課時(shí)時(shí)間內(nèi)普及相關(guān)經(jīng)典名著知識(shí),又要適度提高學(xué)生的鑒賞能力,且要教會(huì)學(xué)生寫作規(guī)律并提高寫作能力,任務(wù)之重實(shí)難完成。(二)對(duì)實(shí)用寫作的普遍性不重視?!按髮W(xué)語文”教育已經(jīng)被嚴(yán)重地“邊緣化”。目前對(duì)中國(guó)語文的態(tài)度淡漠,而是呈現(xiàn)出全民學(xué)英語的大好勢(shì)頭。中小學(xué)如此,大學(xué)更是如此。對(duì)我們的母語中國(guó)語文,在大學(xué)反而被漠視,沒有相關(guān)的課程的設(shè)置,沒有系統(tǒng)的學(xué)習(xí)實(shí)踐訓(xùn)練。這其實(shí)是國(guó)人的一種偏見。應(yīng)用寫作有它自身的規(guī)律和方法。一個(gè)人學(xué)問很大,會(huì)寫小說、詩歌、戲劇等,但如果不曉得應(yīng)用文寫作的特點(diǎn)和方法,他就寫不好應(yīng)用文。(三)部分大學(xué)生學(xué)習(xí)態(tài)度不端正。很多非中文專業(yè)的大學(xué)生對(duì)寫作的學(xué)習(xí)和訓(xùn)練都只是集中在《大學(xué)語文》這一門課上,大部分學(xué)生只愿意被動(dòng)地接受大學(xué)語文老師所講授的文學(xué)經(jīng)典故事,而對(duì)于需要學(xué)生動(dòng)手動(dòng)腦去寫的作文,卻是盡可能應(yīng)付差事,這樣勢(shì)必不能讓大學(xué)生的寫作水平有所提高。(四)教師的實(shí)踐性教學(xué)不強(qiáng)。學(xué)生寫作能力的提高是一項(xiàng)艱巨復(fù)雜的任務(wù),但在教學(xué)中有不少教師過多注重理論知識(shí),實(shí)踐性教學(xué)環(huán)節(jié)卻往往被忽視。理論講了一大堆,但是實(shí)踐卻幾乎沒有,訓(xùn)練也少得可憐。閱讀與寫作都需要很強(qiáng)的實(shí)踐操作,學(xué)習(xí)理論固然必不可少,但是閱讀方法和寫作技巧的掌握才是最重要的。由于以上的原因,我們的大學(xué)生的寫作水平著實(shí)令人堪憂,那么如何走出這一困境,筆者提出一些建議,希望能對(duì)大學(xué)生寫作水平的提高有所幫助。三、提高大學(xué)生應(yīng)用寫作能力的對(duì)策(一)把《應(yīng)用寫作》課設(shè)置為大學(xué)生的必修課。在中國(guó)的每一所大學(xué),《應(yīng)用寫作》應(yīng)該成為大學(xué)生的必修課。因?yàn)樵谶@個(gè)被某些人形容為實(shí)用主義、功利主義甚囂塵上的時(shí)代,也是個(gè)人生存競(jìng)爭(zhēng)最激烈的時(shí)代,人們比任何時(shí)代都更需要學(xué)會(huì)寫作實(shí)用性的文章,比如職場(chǎng)競(jìng)爭(zhēng)中的求職信,生活中的財(cái)經(jīng)文書、法律文書等,以提高個(gè)人的生存競(jìng)爭(zhēng)能力。(二)端正大學(xué)生的學(xué)習(xí)態(tài)度。首先,要讓大學(xué)生充分認(rèn)識(shí)到實(shí)用寫作課的重要性,這門課關(guān)乎
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能電網(wǎng)建設(shè)股東合作協(xié)議3篇
- 電影劇組化妝師聘用合同
- 城市監(jiān)控系統(tǒng)防水涂料施工合同
- 保險(xiǎn)公司租賃合同
- 太陽能電站水電路施工合同
- 2024年跨境投資代持協(xié)議書3篇
- 國(guó)有企業(yè)采購項(xiàng)目招標(biāo)
- 臨時(shí)珠寶鑒定師聘用協(xié)議模板
- 跨界合作項(xiàng)目櫥窗施工合同
- 醫(yī)療診所場(chǎng)所租賃合約
- 國(guó)家開放大學(xué)本科《當(dāng)代中國(guó)政治制度》期末紙質(zhì)考試總題庫2025珍藏版
- GB 44246-2024家用和類似用途電器、體育用品的電氣部分及電玩具安全技術(shù)規(guī)范
- 2024國(guó)家開放大學(xué)電大本科《混凝土結(jié)構(gòu)設(shè)計(jì)原理》期末試題及答案試
- DL∕T 1474-2021 交、直流系統(tǒng)用高壓聚合物絕緣子憎水性測(cè)量及評(píng)估方法
- 金融科技概論教案
- 車位租給別人安裝充電樁協(xié)議
- 2024年河南資本市場(chǎng)白皮書
- 2024遼寧中考數(shù)學(xué)二輪專題復(fù)習(xí) 微專題 二次函數(shù)與直角三角形問題(課件)
- 2025屆云南省昆明盤龍區(qū)聯(lián)考九年級(jí)英語第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 無菌技術(shù)護(hù)理三基選擇題
- 物流運(yùn)輸管理實(shí)務(wù)(第2版)高職物流管理專業(yè)全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論