Android中文天氣預(yù)報(bào)程序_第1頁
Android中文天氣預(yù)報(bào)程序_第2頁
Android中文天氣預(yù)報(bào)程序_第3頁
Android中文天氣預(yù)報(bào)程序_第4頁
Android中文天氣預(yù)報(bào)程序_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、http:Android中文天氣預(yù)報(bào)程序2010年09月13日星期一12:47大家好!由于項(xiàng)目原因好長時(shí)間沒學(xué)android了。今天抽出點(diǎn)兒時(shí)間做個(gè)天氣預(yù)報(bào)程序。貼出來希望對(duì)大家有用。先說一下Google天氣預(yù)報(bào)的AIP吧。http:我發(fā)現(xiàn)在模擬器上面返回的結(jié)果和在pc上返回的結(jié)果不太一樣,pc上有中文的,android模擬器上沒有的。好了不說別的了。開始吧!nowstart。1。建立工程。我取名sbsWeather。結(jié)構(gòu)如下:日上hsbsWeather-com,weatherCntoEn.java+1Ut依Java+:IWeatherjava國西genGeneratedJavaFiles+a

2、hAndroid2,0,皂LassetsFi"resE-Lz!-drawable-hdpi+L3dravable-ldpiII3'drawable'mdpi三巨layout-Xmain.xml-&valuesiKstrings.xml<iAndroidManifestxml;"_L回perties我們一步一步來,慢慢完善2。我習(xí)慣先寫布局。1.2. <?xmlversion="1.0"encoding="utf-8"?>3. <LinearLayoutxmlns:a

3、ndroid="http:4. android:orientation="vertical"5. android:layout_width="fill_parent"6. android:layout_height="fill_parent"7. >8. <TextView9. android:id="+id/tvPlace"10. android:layout_width="fill_parent"11. android:layout_height="wrap_

4、content"12. />13. <EditText14. android:id="+id/place"15. android:layout_width="fill_parent"16. android:layout_height="wrap_content"17. android:hint="輸入城市名稱(漢字或者拼音)"18. />19. <Button20. android:id="+id/query"21. android:layout_width=&

5、quot;fill_parent"22. android:layout_height="wrap_content"23. android:text="查詢"24. />25. </LinearLayout>復(fù)制代碼3。我們要做的是中文天氣預(yù)報(bào)哦??墒荊oogle為我們返回的是中文。再有我們得把用戶輸入的中文轉(zhuǎn)換為拼音再傳給Google才可以?,F(xiàn)在,需要準(zhǔn)備一些工具。編寫中文拼音轉(zhuǎn)換類,CntoEn.java。網(wǎng)上好多的。自己隨便找一個(gè)就哦了。這個(gè)不貼代碼了。搜Java中文轉(zhuǎn)音頻即可。Utils.java轉(zhuǎn)換Google返回的英

6、文。一對(duì)一的轉(zhuǎn)換吧,好像沒別的跟好的辦法。另外其中還有個(gè)方法是將網(wǎng)絡(luò)圖片轉(zhuǎn)換為android的bitmap對(duì)象的。1.2. packagecom.sbs.weather;3. importjava.io.IOException;4. importjava.io.InputStream;5. .HttpURLConnection;6. .MalformedURLException;7. .URL;8. importandroid.graphics.Bitmap;9. importandroid.graphics.BitmapFactory;10. publicclassUtils11. publ

7、icstaticStringweek(StringenWeek)12. if(enWeek.equals("Mon")|enWeek.equals("Monday")13. return"星期一"14. elseif(enWeek.equals("Tue")|enWeek.equals("Tuesday")15. return"星期二"16. elseif(enWeek.equals("Wed")|enWeek.equals("Wednesday

8、")17. return"星期三"18. elseif(enWeek.equals("Thu")|enWeek.equals("Thursday")19. return"星期四"20. elseif(enWeek.equals("Fri")|enWeek.equals("Friday")21. return"星期五"22. elseif(enWeek.equals("Sat")|enWeek.equals("Satu

9、rday")23. return"星期六"24. elseif(enWeek.equals("Sun")|enWeek.equals("Sunday")25. return"星期日"26. return""27. 28. publicstaticStringweather(StringenWeather)29. if(enWeather.equals("Clear")30. return"晴";31. elseif(enWeather.equal

10、s("PartlySunny")32. |enWeather.equals("partly_cloudy")33. return"多云";34. elseif(enWeather.equals("ChanceofRain")35. return"晴轉(zhuǎn)雨"36. elseif(enWeather.equals("storm")37. return"暴雨";38. elseif(enWeather.equals("thunderstorm"

11、)39. return"雷陣雨"40. elseif(enWeather.equals("fog")41. return"大霧";42. elseif(enWeather.equals("haze")43. return"有霧";44. elseif(enWeather.equals("rain")45. return"雨";46. elseif(enWeather.equals("heavyrain")47. return"

12、大雨";48. elseif(enWeather.equals("lightrain")49. return"小雨";50. elseif(enWeather.equals("heavyrain")51. return"大雨";52. elseif(enWeather.equals("snow")53. return"有雪";54. /還需要補(bǔ)充。55. return""56. 57. publicstaticBitmapreturnBitMap

13、(StringimgUrl)58. URLmyImgUrl=null;59. Bitmapbitmap=null;60. try61. myImgUrl=newURL(imgUrl);62. catch(MalformedURLExceptione)63. e.printStackTrace();64. 65. try66. HttpURLConnectionconn=(HttpURLConnection)myImgUrl67. .openConnection();68. conn.setDoInput(true);69. conn.connect();70. InputStreamis=co

14、nn.getInputStream();71. bitmap=BitmapFactory.decodeStream(is);72. is.close();73. catch(IOExceptione)74. e.printStackTrace();75. 76. returnbitmap;77. 78. 復(fù)制代碼4。開始真正的工作咯。下面的程序通過Google提供的api來獲取天氣預(yù)報(bào)信息。1. packagecom.sbs.weather;2.3. importjava.io.InputStream;4.5. importjavax.xml.parsers.DocumentBuilder;6

15、. importjavax.xml.parsers.DocumentBuilderFactory;7.8. importorg.apache.http.HttpEntity;9. importorg.apache.http.HttpResponse;10. importorg.apache.http.client.methods.HttpGet;11. importorg.apache.http.client.methods.HttpUriRequest;12. importorg.apache.http.impl.client.DefaultHttpClient;13. importorg.

16、apache.http.util.EntityUtils;14. importorg.w3c.dom.Document;15. importorg.w3c.dom.NodeList;16. importorg.xml.sax.InputSource;17.18. importandroid.app.Activity;19. importandroid.graphics.Bitmap;20. importandroid.os.Bundle;21. importandroid.os.Handler;22. importandroid.os.Message;23. importandroid.uti

17、l.Log;24. importandroid.view.View;25. importandroid.widget.Button;26. importandroid.widget.EditText;27. importandroid.widget.ImageView;28. importandroid.widget.TextView;29.30. publicclassWeatherextendsActivity31.32. publicEditTextETplace;33. publicTextViewTvPlace;34. publicButtonquery;35. publicText

18、ViewplaceName;36. publicImageViewimView;37.38. /*Calledwhentheactivityisfirstcreated.*/39. Override40. publicvoidonCreate(BundlesavedInstanceState)41. super.onCreate(savedInstanceState);42. setContentView(R.layout.main);43.44. ETplace=(EditText)findViewById(R.id.place);45. query=(Button)findViewById

19、(R.id.query);46. imView=(ImageView)findViewById(R.id.myImageView);47. placeName=(TextView)findViewById(R.id.placeName);48.49. query.setOnClickListener(newButton.OnClickListener()50. publicvoidonClick(Viewv)51. try52. TvPlace=(TextView)findViewById(R.id.tvPlace);53.54. Stringplace=CntoEn.getFullSpell

20、(ETplace.getText().toString();55. placeName.setText(place);56. Stringweather=""57. Stringurl="58. DefaultHttpClientclient=newDefaultHttpClient();59. HttpUriRequestreq=newHttpGet(url);60. HttpResponseresp=client.execute(req);61.62. /StringstrResult=EntityUtils.toString(resp.getEntity()

21、;63. /Log.i("weather->",strResult);64. 一華氏度等于9/5攝氏度數(shù)值+3265.66. HttpEntityent=resp.getEntity();67. InputStreamstream=ent.getContent();68.69. DocumentBuilderb=DocumentBuilderFactory.newInstance()70. .newDocumentBuilder();71. Documentd=b.parse(newInputSource(stream);72. NodeListn=d.getElem

22、entsByTagName("forecast_conditions");73.74. /獲得圖片url當(dāng)天的。75. StringimgUrl=""76. imgUrl+=n.item(0).getChildNodes().item(3).getAttributes().item(0).getNodeValue();77. imView.setImageBitmap(Utils.returnBitMap(imgUrl);78.79. /今后4天預(yù)報(bào)80. for(inti=0;i<n.getLength();i+)81. weather+=Uti

23、ls.week(n.item(i).getChildNodes().item(0)82. .getAttributes().item(0).getNodeValue();83. weather+=","84. weather+=(Integer85. .parseInt(n.item(i).getChildNodes().item(1)86. .getAttributes().item(0).getNodeValue()-32)*5/9;87. weather+=""88. weather+=(Integer89. .parseInt(n.item(i)

24、.getChildNodes().item(2)90. .getAttributes().item(0).getNodeValue()-32)*5/9;91. weather+=","92. weather+=Utils.weather(n.item(i).getChildNodes().item(4)93. .getAttributes().item(0).getNodeValue();94. weather+="n"95. 96. Log.i("parseedweather->",weather);97. TvPlace.s

25、etText(weather);98.99. catch(Exceptione)100. e.printStackTrace();101. 102.103. );104. 105. 復(fù)制代碼5。嗯這一步相當(dāng)重要,就是添加權(quán)限。要是沒有權(quán)限一切白搭!1. <?xmlversion="1.0"encoding="utf-8"?>2. <manifestxmlns:android="http:3. package="com.sbs.weather"4. android:versionCode="1"5. android:versionName="1.0">6. <uses-permissionandroid:name="android.permission.INTERNET"></uses-permission>7. <app

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論