安卓天气预报实训报告.docx
《安卓天气预报实训报告.docx》由会员分享,可在线阅读,更多相关《安卓天气预报实训报告.docx(8页珍藏版)》请在冰豆网上搜索。
安卓实训设计报告
Android天气预报
设计题目:
班级:
姓名:
学号:
指导老师:
日期:
2012年6月7日
内容要求
一、题目分析,功能要求。
1.1实验目的
熟悉Android软件开发的基本架构
利用Eclipse和ADT插件设计贪天气预报
1.2功能
本软件就是利用现有的网络快速获取网络上的天气信息并显示到手机终端上,为用户提供实时的天气查询和近期天气查询服务,为工作、出行等带来便利。
通过WebService等技术让用户体验到前所未有的移动计算。
二、 实验设计
本软件是一个AppWidget应用程序,启动程序后可以进行城市、更新频率的设置,可以通过图片和文字显示当前和未来的天气状况,包括温度、湿度、风向和雨雪情况等。
这些天气数据是通过后台服务获取的,这个后台服务可以按照一定的时间间隔,通过Google提供的服务获取天气预报信息,并将天气信息保存在数据库中。
该软件的基本功能需求有:
(1)启动AppWidget应用程序;
(2)设置界面:
对要显示天气预报的城市及更新频率进行设置;
(3)显示界面:
通过文字和图片显示当前的天气情况,包括日期、时间、城市、最高温度、最低温度、当前温度等。
(4)详细界面:
在显示出“显示界面”上所有信息的同时用列表的形式显示今后四天的天气情况。
三、 实验程序
见附录一。
四、 实验效果图图
五、 总结
(1)在Android平台上可以通过WebService技术方便的获取互联网上的资源信息,在智能手机强大的硬件功能和快速的移动互联网的支持下,可以更加方便的利用网络上的资源,为生活、工作带来极大的便利。
(2)Android语言的开发组件Activity、IntentReceiver、Service、ContentProvider等提供了强大的数据处理功能。
合理的设计数据库可以方便的实现各页面、进程之间的数据共享、数据的传递,也会使程序的运行更加稳定。
(3)Android系统中的视图组件View和ViewGroup等的灵活使用,可以设计出界面美观,用户操作方便灵活的页面,并可以实现页面各种不同的显示布局以及动画效果等。
(4)使用SAX的方式解析android应用程序中的XML数据文件,可以提供很好的性能需求。
之所以选择SAX的方式来解析XML文件,是因为它是一种非常优秀的轻量级解决方案。
使用android平台的硬件环境主要是手机和其它一些嵌入式设备。
这些设备都需要比较快的解析速度和尽可能少的内存占用,同时满足这两方面要求的技术中SAX是一个非常好的选择。
附录一
布局
1.
xmlversion="1.0"encoding="utf-8”?
>
2.android="/res/android”3.android:orientation="vertical”4.android:layout_width="fill_parent”5.android:layout_height="fill_parent”6.>7.8.android:id="@+id/tvPlace”9.android:layout_width="fill_parent”10.android:layout_height="wrap_content”11./>12.13.android:id="@+id/place”14.android:layout_width="fill_parent”15.android:layout_height="wrap_content”16.android:hint="输入城市名称(汉字或者拼音)"17./>18.19.android:id="@+id/query”20.android:layout_width="fill_parent"21.android:layout_height="wrap_content”22.android:text="查询"23./>24.将网络图片转换为android的bitmap对象25.package;26.import;27.import;28.import;29.import;30.import;31.import;32.import;33.publicclassUtils(34.publicstaticStringweek(StringenWeek)(35.if(enWeek.equals("Mon")||enWeek.equals("Monday"))36.return”星期一”;37.elseif(enWeek.equals("Tue")||enWeek.equals("Tuesday"))38.return”星期二”;39.elseif(enWeek.equals("Wed")||enWeek.equals("Wednesday"))40.return”星期三”;41.elseif(enWeek.equals("Thu")||enWeek.equals("Thursday"))42.return”星期四”;43.elseif(enWeek.equals("Fri")||enWeek.equals("Friday"))44.return”星期五”;45.elseif(enWeek.equals("Sat")||enWeek.equals("Saturday"))46.return”星期六”;47.elseif(enWeek.equals("Sun")||enWeek.equals("Sunday"))48.return”星期日”;49.return"";50.}51.publicstaticStringweather(StringenWeather)(52.if(enWeather.equals("Clear"))53.return”晴”;54.elseif(enWeather.equals("PartlySunny")55.||enWeather.equals("partly_cloudy"))56.return”多云”;57.elseif(enWeather.equals("ChanceofRain"))58.return”晴转雨”;59.elseif(enWeather.equals("storm"))60.return"暴雨”;61.elseif(enWeather.equals("thunderstorm"))62.return”雷阵雨”;63.elseif(enWeather.equals("fog"))64.return”大雾”;65.elseif(enWeather.equals("haze"))66.return”有雾”;67.elseif(enWeather.equals("rain"))68.return"雨";69.elseif(enWeather.equals("heavyrain"))70.return"大雨";71.elseif(enWeather.equals("lightrain"))72.return"小雨";73.elseif(enWeather.equals("heavyrain"))74.return"大雨";75.elseif(enWeather.equals("snow"))76.return”有雪”;77.///还需要补充。。。。78.return"";79.}80.publicstaticBitmapreturnBitMap(StringimgUrl)(81.URLmyImgUrl=null;82.Bitmapbitmap=null;83.try(84.myImgUrl=newURL(imgUrl);85.}catch(MalformedURLExceptione)(86.e.printStackTrace();87.}88.try{89.HttpURLConnectionconn=(HttpURLConnection)myImgUrl90..openConnection();91.conn.setDoInput(true);92.conn.connect();93.InputStreamis=conn.getInputStream();94.bitmap=BitmapFactory.decodeStream(is);95.is.close();96.}catch(IOExceptione){97.e.printStackTrace();98.}99.returnbitmap;100.}101.}下面的程序通过Google提供的api来获取天气预报信息1.package;2.import;3.import;4.import;5.import;6.import;7.import;8.import;9.import;10.import;11.import;12.import;13.import;14.import;15.import;16.import;17.import;18.import;19.import;20.import;21.import;22.import;23.import;24.import;25.publicclassWeatherextendsActivity(26.publicEditTextETplace;27.publicTextViewTvPlace;28.publicButtonquery;29.publicTextViewplaceName;30.publicImageViewimView;31./**Calledwhentheactivityisfirstcreated.*/32.©Override33.publicvoidonCreate(BundlesavedInstanceState)(34.super.onCreate(savedlnstanceState);35.setContentView(;36.ETplace=(EditText)findViewById(;37.query=(Button)findViewById(;38.imView=(ImageView)findViewById(;39.placeName=(TextView)findViewById(;40.query.setOnClickListener(newButton.OnClickListener()(41.publicvoidonClick(Viewv)(42.try{43.TvPlace=(TextView)findViewById(;44.Stringplace=CntoEn.getFullSpell(ETplace.getText().toString());45.placeName.setText(place);46.Stringweather="";47.Stringurl="/api?&weather="+place;48.DefaultHttpClientclient=newDefaultHttpClient();49.HttpUriRequestreq=newHttpGet(url);50.HttpResponseresp=client.execute(req);51.//StringstrResult=EntityUtils.toString(resp.getEntity());52.//Log.i("weather->”,strResult);53.//一华氏度等于9/5摄氏度数值+3254.HttpEntityent=resp.getEntity();55.InputStreamstream=ent.getContent();56.DocumentBuilderb=DocumentBuilderFactory.newInstance()57..newDocumentBuilder();58.Documentd=b.parse(newInputSource(stream));59.NodeListn=d.getElementsByTagName("forecast_conditions");60.//获得图片url当天的。61.StringimgUrl="";62.imgUrl+=n.item(0).getChildNodes().item(3).getAttributes().item(0).getNodeValue();63.imView.setImageBitmap(Utils.returnBitMap(imgUrl));64.//今后4天预报65.for(inti=0;i66.weather+=Utils.week(n.item(i).getChildNodes().item(0)67..getAttributes().item(0).getNodeValue());68.weather+=",";69.weather+=(Integer70..parseInt(n.item(i).getChildNodes().item(1)71..getAttributes().item(0).getNodeValue())-32)*5/9;72.weather+="~";73.weather+=(Integer74..parseInt(n.item(i).getChildNodes().item(2)75..getAttributes().item(0).getNodeValue())-32)*5/9;76.weather+=",";77.weather+=Utils.weather(n.item(i).getChildNodes().item(4)78..getAttributes().item(0).getNodeValue());79.weather+="\n";80.}81.Log.i("parseedweather->",weather);82.TvPlace.setText(weather);83.}catch(Exceptione)(84.e.printStackTrace();85.}86.}});87.}88.}添加权限1.xmlversion="1.0"encoding="utf-8"?>2.android="/res/android"3.package=""4.android:versionCode="1"5.android:versionName="1.0">6.name="">7.icon="@drawable/icon"android:label="@string/app_name">8.name=".Weather”9.android:label="@string/app_name">10.11.name=""/>12.name=""/>13.14.15.16.
android="/res/android”
3.android:
orientation="vertical”
4.android:
layout_width="fill_parent”
5.android:
layout_height="fill_parent”
6.>
7.8.android:id="@+id/tvPlace”9.android:layout_width="fill_parent”10.android:layout_height="wrap_content”11./>12.13.android:id="@+id/place”14.android:layout_width="fill_parent”15.android:layout_height="wrap_content”16.android:hint="输入城市名称(汉字或者拼音)"17./>18.19.android:id="@+id/query”20.android:layout_width="fill_parent"21.android:layout_height="wrap_content”22.android:text="查询"23./>24.将网络图片转换为android的bitmap对象25.package;26.import;27.import;28.import;29.import;30.import;31.import;32.import;33.publicclassUtils(34.publicstaticStringweek(StringenWeek)(35.if(enWeek.equals("Mon")||enWeek.equals("Monday"))36.return”星期一”;37.elseif(enWeek.equals("Tue")||enWeek.equals("Tuesday"))38.return”星期二”;39.elseif(enWeek.equals("Wed")||enWeek.equals("Wednesday"))40.return”星期三”;41.elseif(enWeek.equals("Thu")||enWeek.equals("Thursday"))42.return”星期四”;43.elseif(enWeek.equals("Fri")||enWeek.equals("Friday"))44.return”星期五”;45.elseif(enWeek.equals("Sat")||enWeek.equals("Saturday"))46.return”星期六”;47.elseif(enWeek.equals("Sun")||enWeek.equals("Sunday"))48.return”星期日”;49.return"";50.}51.publicstaticStringweather(StringenWeather)(52.if(enWeather.equals("Clear"))53.return”晴”;54.elseif(enWeather.equals("PartlySunny")55.||enWeather.equals("partly_cloudy"))56.return”多云”;57.elseif(enWeather.equals("ChanceofRain"))58.return”晴转雨”;59.elseif(enWeather.equals("storm"))60.return"暴雨”;61.elseif(enWeather.equals("thunderstorm"))62.return”雷阵雨”;63.elseif(enWeather.equals("fog"))64.return”大雾”;65.elseif(enWeather.equals("haze"))66.return”有雾”;67.elseif(enWeather.equals("rain"))68.return"雨";69.elseif(enWeather.equals("heavyrain"))70.return"大雨";71.elseif(enWeather.equals("lightrain"))72.return"小雨";73.elseif(enWeather.equals("heavyrain"))74.return"大雨";75.elseif(enWeather.equals("snow"))76.return”有雪”;77.///还需要补充。。。。78.return"";79.}80.publicstaticBitmapreturnBitMap(StringimgUrl)(81.URLmyImgUrl=null;82.Bitmapbitmap=null;83.try(84.myImgUrl=newURL(imgUrl);85.}catch(MalformedURLExceptione)(86.e.printStackTrace();87.}88.try{89.HttpURLConnectionconn=(HttpURLConnection)myImgUrl90..openConnection();91.conn.setDoInput(true);92.conn.connect();93.InputStreamis=conn.getInputStream();94.bitmap=BitmapFactory.decodeStream(is);95.is.close();96.}catch(IOExceptione){97.e.printStackTrace();98.}99.returnbitmap;100.}101.}下面的程序通过Google提供的api来获取天气预报信息1.package;2.import;3.import;4.import;5.import;6.import;7.import;8.import;9.import;10.import;11.import;12.import;13.import;14.import;15.import;16.import;17.import;18.import;19.import;20.import;21.import;22.import;23.import;24.import;25.publicclassWeatherextendsActivity(26.publicEditTextETplace;27.publicTextViewTvPlace;28.publicButtonquery;29.publicTextViewplaceName;30.publicImageViewimView;31./**Calledwhentheactivityisfirstcreated.*/32.©Override33.publicvoidonCreate(BundlesavedInstanceState)(34.super.onCreate(savedlnstanceState);35.setContentView(;36.ETplace=(EditText)findViewById(;37.query=(Button)findViewById(;38.imView=(ImageView)findViewById(;39.placeName=(TextView)findViewById(;40.query.setOnClickListener(newButton.OnClickListener()(41.publicvoidonClick(Viewv)(42.try{43.TvPlace=(TextView)findViewById(;44.Stringplace=CntoEn.getFullSpell(ETplace.getText().toString());45.placeName.setText(place);46.Stringweather="";47.Stringurl="/api?&weather="+place;48.DefaultHttpClientclient=newDefaultHttpClient();49.HttpUriRequestreq=newHttpGet(url);50.HttpResponseresp=client.execute(req);51.//StringstrResult=EntityUtils.toString(resp.getEntity());52.//Log.i("weather->”,strResult);53.//一华氏度等于9/5摄氏度数值+3254.HttpEntityent=resp.getEntity();55.InputStreamstream=ent.getContent();56.DocumentBuilderb=DocumentBuilderFactory.newInstance()57..newDocumentBuilder();58.Documentd=b.parse(newInputSource(stream));59.NodeListn=d.getElementsByTagName("forecast_conditions");60.//获得图片url当天的。61.StringimgUrl="";62.imgUrl+=n.item(0).getChildNodes().item(3).getAttributes().item(0).getNodeValue();63.imView.setImageBitmap(Utils.returnBitMap(imgUrl));64.//今后4天预报65.for(inti=0;i66.weather+=Utils.week(n.item(i).getChildNodes().item(0)67..getAttributes().item(0).getNodeValue());68.weather+=",";69.weather+=(Integer70..parseInt(n.item(i).getChildNodes().item(1)71..getAttributes().item(0).getNodeValue())-32)*5/9;72.weather+="~";73.weather+=(Integer74..parseInt(n.item(i).getChildNodes().item(2)75..getAttributes().item(0).getNodeValue())-32)*5/9;76.weather+=",";77.weather+=Utils.weather(n.item(i).getChildNodes().item(4)78..getAttributes().item(0).getNodeValue());79.weather+="\n";80.}81.Log.i("parseedweather->",weather);82.TvPlace.setText(weather);83.}catch(Exceptione)(84.e.printStackTrace();85.}86.}});87.}88.}添加权限1.xmlversion="1.0"encoding="utf-8"?>2.android="/res/android"3.package=""4.android:versionCode="1"5.android:versionName="1.0">6.name="">7.icon="@drawable/icon"android:label="@string/app_name">8.name=".Weather”9.android:label="@string/app_name">10.11.name=""/>12.name=""/>13.14.15.16.
8.android:
id="@+id/tvPlace”
9.android:
10.android:
layout_height="wrap_content”
11./>
12.13.android:id="@+id/place”14.android:layout_width="fill_parent”15.android:layout_height="wrap_content”16.android:hint="输入城市名称(汉字或者拼音)"17./>18.19.android:id="@+id/query”20.android:layout_width="fill_parent"21.android:layout_height="wrap_content”22.android:text="查询"23./>24.将网络图片转换为android的bitmap对象25.package;26.import;27.import;28.import;29.import;30.import;31.import;32.import;33.publicclassUtils(34.publicstaticStringweek(StringenWeek)(35.if(enWeek.equals("Mon")||enWeek.equals("Monday"))36.return”星期一”;37.elseif(enWeek.equals("Tue")||enWeek.equals("Tuesday"))38.return”星期二”;39.elseif(enWeek.equals("Wed")||enWeek.equals("Wednesday"))40.return”星期三”;41.elseif(enWeek.equals("Thu")||enWeek.equals("Thursday"))42.return”星期四”;43.elseif(enWeek.equals("Fri")||enWeek.equals("Friday"))44.return”星期五”;45.elseif(enWeek.equals("Sat")||enWeek.equals("Saturday"))46.return”星期六”;47.elseif(enWeek.equals("Sun")||enWeek.equals("Sunday"))48.return”星期日”;49.return"";50.}51.publicstaticStringweather(StringenWeather)(52.if(enWeather.equals("Clear"))53.return”晴”;54.elseif(enWeather.equals("PartlySunny")55.||enWeather.equals("partly_cloudy"))56.return”多云”;57.elseif(enWeather.equals("ChanceofRain"))58.return”晴转雨”;59.elseif(enWeather.equals("storm"))60.return"暴雨”;61.elseif(enWeather.equals("thunderstorm"))62.return”雷阵雨”;63.elseif(enWeather.equals("fog"))64.return”大雾”;65.elseif(enWeather.equals("haze"))66.return”有雾”;67.elseif(enWeather.equals("rain"))68.return"雨";69.elseif(enWeather.equals("heavyrain"))70.return"大雨";71.elseif(enWeather.equals("lightrain"))72.return"小雨";73.elseif(enWeather.equals("heavyrain"))74.return"大雨";75.elseif(enWeather.equals("snow"))76.return”有雪”;77.///还需要补充。。。。78.return"";79.}80.publicstaticBitmapreturnBitMap(StringimgUrl)(81.URLmyImgUrl=null;82.Bitmapbitmap=null;83.try(84.myImgUrl=newURL(imgUrl);85.}catch(MalformedURLExceptione)(86.e.printStackTrace();87.}88.try{89.HttpURLConnectionconn=(HttpURLConnection)myImgUrl90..openConnection();91.conn.setDoInput(true);92.conn.connect();93.InputStreamis=conn.getInputStream();94.bitmap=BitmapFactory.decodeStream(is);95.is.close();96.}catch(IOExceptione){97.e.printStackTrace();98.}99.returnbitmap;100.}101.}下面的程序通过Google提供的api来获取天气预报信息1.package;2.import;3.import;4.import;5.import;6.import;7.import;8.import;9.import;10.import;11.import;12.import;13.import;14.import;15.import;16.import;17.import;18.import;19.import;20.import;21.import;22.import;23.import;24.import;25.publicclassWeatherextendsActivity(26.publicEditTextETplace;27.publicTextViewTvPlace;28.publicButtonquery;29.publicTextViewplaceName;30.publicImageViewimView;31./**Calledwhentheactivityisfirstcreated.*/32.©Override33.publicvoidonCreate(BundlesavedInstanceState)(34.super.onCreate(savedlnstanceState);35.setContentView(;36.ETplace=(EditText)findViewById(;37.query=(Button)findViewById(;38.imView=(ImageView)findViewById(;39.placeName=(TextView)findViewById(;40.query.setOnClickListener(newButton.OnClickListener()(41.publicvoidonClick(Viewv)(42.try{43.TvPlace=(TextView)findViewById(;44.Stringplace=CntoEn.getFullSpell(ETplace.getText().toString());45.placeName.setText(place);46.Stringweather="";47.Stringurl="/api?&weather="+place;48.DefaultHttpClientclient=newDefaultHttpClient();49.HttpUriRequestreq=newHttpGet(url);50.HttpResponseresp=client.execute(req);51.//StringstrResult=EntityUtils.toString(resp.getEntity());52.//Log.i("weather->”,strResult);53.//一华氏度等于9/5摄氏度数值+3254.HttpEntityent=resp.getEntity();55.InputStreamstream=ent.getContent();56.DocumentBuilderb=DocumentBuilderFactory.newInstance()57..newDocumentBuilder();58.Documentd=b.parse(newInputSource(stream));59.NodeListn=d.getElementsByTagName("forecast_conditions");60.//获得图片url当天的。61.StringimgUrl="";62.imgUrl+=n.item(0).getChildNodes().item(3).getAttributes().item(0).getNodeValue();63.imView.setImageBitmap(Utils.returnBitMap(imgUrl));64.//今后4天预报65.for(inti=0;i66.weather+=Utils.week(n.item(i).getChildNodes().item(0)67..getAttributes().item(0).getNodeValue());68.weather+=",";69.weather+=(Integer70..parseInt(n.item(i).getChildNodes().item(1)71..getAttributes().item(0).getNodeValue())-32)*5/9;72.weather+="~";73.weather+=(Integer74..parseInt(n.item(i).getChildNodes().item(2)75..getAttributes().item(0).getNodeValue())-32)*5/9;76.weather+=",";77.weather+=Utils.weather(n.item(i).getChildNodes().item(4)78..getAttributes().item(0).getNodeValue());79.weather+="\n";80.}81.Log.i("parseedweather->",weather);82.TvPlace.setText(weather);83.}catch(Exceptione)(84.e.printStackTrace();85.}86.}});87.}88.}添加权限1.xmlversion="1.0"encoding="utf-8"?>2.android="/res/android"3.package=""4.android:versionCode="1"5.android:versionName="1.0">6.name="">7.icon="@drawable/icon"android:label="@string/app_name">8.name=".Weather”9.android:label="@string/app_name">10.11.name=""/>12.name=""/>13.14.15.16.
13.android:
id="@+id/place”
14.android:
15.android:
16.android:
hint="输入城市名称(汉字或者拼音)"
17./>
18.19.android:id="@+id/query”20.android:layout_width="fill_parent"21.android:layout_height="wrap_content”22.android:text="查询"23./>24.将网络图片转换为android的bitmap对象25.package;26.import;27.import;28.import;29.import;30.import;31.import;32.import;33.publicclassUtils(34.publicstaticStringweek(StringenWeek)(35.if(enWeek.equals("Mon")||enWeek.equals("Monday"))36.return”星期一”;37.elseif(enWeek.equals("Tue")||enWeek.equals("Tuesday"))38.return”星期二”;39.elseif(enWeek.equals("Wed")||enWeek.equals("Wednesday"))40.return”星期三”;41.elseif(enWeek.equals("Thu")||enWeek.equals("Thursday"))42.return”星期四”;43.elseif(enWeek.equals("Fri")||enWeek.equals("Friday"))44.return”星期五”;45.elseif(enWeek.equals("Sat")||enWeek.equals("Saturday"))46.return”星期六”;47.elseif(enWeek.equals("Sun")||enWeek.equals("Sunday"))48.return”星期日”;49.return"";50.}51.publicstaticStringweather(StringenWeather)(52.if(enWeather.equals("Clear"))53.return”晴”;54.elseif(enWeather.equals("PartlySunny")55.||enWeather.equals("partly_cloudy"))56.return”多云”;57.elseif(enWeather.equals("ChanceofRain"))58.return”晴转雨”;59.elseif(enWeather.equals("storm"))60.return"暴雨”;61.elseif(enWeather.equals("thunderstorm"))62.return”雷阵雨”;63.elseif(enWeather.equals("fog"))64.return”大雾”;65.elseif(enWeather.equals("haze"))66.return”有雾”;67.elseif(enWeather.equals("rain"))68.return"雨";69.elseif(enWeather.equals("heavyrain"))70.return"大雨";71.elseif(enWeather.equals("lightrain"))72.return"小雨";73.elseif(enWeather.equals("heavyrain"))74.return"大雨";75.elseif(enWeather.equals("snow"))76.return”有雪”;77.///还需要补充。。。。78.return"";79.}80.publicstaticBitmapreturnBitMap(StringimgUrl)(81.URLmyImgUrl=null;82.Bitmapbitmap=null;83.try(84.myImgUrl=newURL(imgUrl);85.}catch(MalformedURLExceptione)(86.e.printStackTrace();87.}88.try{89.HttpURLConnectionconn=(HttpURLConnection)myImgUrl90..openConnection();91.conn.setDoInput(true);92.conn.connect();93.InputStreamis=conn.getInputStream();94.bitmap=BitmapFactory.decodeStream(is);95.is.close();96.}catch(IOExceptione){97.e.printStackTrace();98.}99.returnbitmap;100.}101.}下面的程序通过Google提供的api来获取天气预报信息1.package;2.import;3.import;4.import;5.import;6.import;7.import;8.import;9.import;10.import;11.import;12.import;13.import;14.import;15.import;16.import;17.import;18.import;19.import;20.import;21.import;22.import;23.import;24.import;25.publicclassWeatherextendsActivity(26.publicEditTextETplace;27.publicTextViewTvPlace;28.publicButtonquery;29.publicTextViewplaceName;30.publicImageViewimView;31./**Calledwhentheactivityisfirstcreated.*/32.©Override33.publicvoidonCreate(BundlesavedInstanceState)(34.super.onCreate(savedlnstanceState);35.setContentView(;36.ETplace=(EditText)findViewById(;37.query=(Button)findViewById(;38.imView=(ImageView)findViewById(;39.placeName=(TextView)findViewById(;40.query.setOnClickListener(newButton.OnClickListener()(41.publicvoidonClick(Viewv)(42.try{43.TvPlace=(TextView)findViewById(;44.Stringplace=CntoEn.getFullSpell(ETplace.getText().toString());45.placeName.setText(place);46.Stringweather="";47.Stringurl="/api?&weather="+place;48.DefaultHttpClientclient=newDefaultHttpClient();49.HttpUriRequestreq=newHttpGet(url);50.HttpResponseresp=client.execute(req);51.//StringstrResult=EntityUtils.toString(resp.getEntity());52.//Log.i("weather->”,strResult);53.//一华氏度等于9/5摄氏度数值+3254.HttpEntityent=resp.getEntity();55.InputStreamstream=ent.getContent();56.DocumentBuilderb=DocumentBuilderFactory.newInstance()57..newDocumentBuilder();58.Documentd=b.parse(newInputSource(stream));59.NodeListn=d.getElementsByTagName("forecast_conditions");60.//获得图片url当天的。61.StringimgUrl="";62.imgUrl+=n.item(0).getChildNodes().item(3).getAttributes().item(0).getNodeValue();63.imView.setImageBitmap(Utils.returnBitMap(imgUrl));64.//今后4天预报65.for(inti=0;i66.weather+=Utils.week(n.item(i).getChildNodes().item(0)67..getAttributes().item(0).getNodeValue());68.weather+=",";69.weather+=(Integer70..parseInt(n.item(i).getChildNodes().item(1)71..getAttributes().item(0).getNodeValue())-32)*5/9;72.weather+="~";73.weather+=(Integer74..parseInt(n.item(i).getChildNodes().item(2)75..getAttributes().item(0).getNodeValue())-32)*5/9;76.weather+=",";77.weather+=Utils.weather(n.item(i).getChildNodes().item(4)78..getAttributes().item(0).getNodeValue());79.weather+="\n";80.}81.Log.i("parseedweather->",weather);82.TvPlace.setText(weather);83.}catch(Exceptione)(84.e.printStackTrace();85.}86.}});87.}88.}添加权限1.xmlversion="1.0"encoding="utf-8"?>2.android="/res/android"3.package=""4.android:versionCode="1"5.android:versionName="1.0">6.name="">7.icon="@drawable/icon"android:label="@string/app_name">8.name=".Weather”9.android:label="@string/app_name">10.11.name=""/>12.name=""/>13.14.15.16.
19.android:
id="@+id/query”
20.android:
layout_width="fill_parent"
21.android:
22.android:
text="查询"
23./>
24.
将网络图片转换为android的bitmap对象
25.package;
26.import;
27.import;
28.import;
29.import;
30.import;
31.import;
32.import;
33.publicclassUtils(
34.publicstaticStringweek(StringenWeek)(
35.if(enWeek.equals("Mon")||enWeek.equals("Monday"))
36.return”星期一”;
37.elseif(enWeek.equals("Tue")||enWeek.equals("Tuesday"))
38.return”星期二”;
39.elseif(enWeek.equals("Wed")||enWeek.equals("Wednesday"))
40.return”星期三”;
41.elseif(enWeek.equals("Thu")||enWeek.equals("Thursday"))
42.return”星期四”;
43.elseif(enWeek.equals("Fri")||enWeek.equals("Friday"))
44.return”星期五”;
45.elseif(enWeek.equals("Sat")||enWeek.equals("Saturday"))
46.return”星期六”;
47.elseif(enWeek.equals("Sun")||enWeek.equals("Sunday"))
48.return”星期日”;
49.return"";
50.}
51.publicstaticStringweather(StringenWeather)(
52.if(enWeather.equals("Clear"))
53.return”晴”;
54.elseif(enWeather.equals("PartlySunny")
55.||enWeather.equals("partly_cloudy"))
56.return”多云”;
57.elseif(enWeather.equals("ChanceofRain"))
58.return”晴转雨”;
59.elseif(enWeather.equals("storm"))
60.return"暴雨”;
61.elseif(enWeather.equals("thunderstorm"))
62.return”雷阵雨”;
63.elseif(enWeather.equals("fog"))
64.return”大雾”;
65.elseif(enWeather.equals("haze"))
66.return”有雾”;
67.elseif(enWeather.equals("rain"))
68.return"雨";
69.elseif(enWeather.equals("heavyrain"))
70.return"大雨";
71.elseif(enWeather.equals("lightrain"))
72.return"小雨";
73.elseif(enWeather.equals("heavyrain"))
74.return"大雨";
75.elseif(enWeather.equals("snow"))
76.return”有雪”;
77.///还需要补充。
。
78.return"";
79.}
80.publicstaticBitmapreturnBitMap(StringimgUrl)(
81.URLmyImgUrl=null;
82.Bitmapbitmap=null;
83.try(
84.myImgUrl=newURL(imgUrl);
85.}catch(MalformedURLExceptione)(
86.e.printStackTrace();
87.}
88.try{
89.HttpURLConnectionconn=(HttpURLConnection)myImgUrl
90..openConnection();
91.conn.setDoInput(true);
92.conn.connect();
93.InputStreamis=conn.getInputStream();
94.bitmap=BitmapFactory.decodeStream(is);
95.is.close();
96.}catch(IOExceptione){
97.e.printStackTrace();
98.}
99.returnbitmap;
100.}
101.}
下面的程序通过Google提供的api来获取天气预报信息
1.package;
2.import;
3.import;
4.import;
5.import;
6.import;
7.import;
8.import;
9.import;
10.import;
11.import;
12.import;
13.import;
14.import;
15.import;
16.import;
17.import;
18.import;
19.import;
20.import;
21.import;
22.import;
23.import;
24.import;
25.publicclassWeatherextendsActivity(
26.publicEditTextETplace;
27.publicTextViewTvPlace;
28.publicButtonquery;
29.publicTextViewplaceName;
30.publicImageViewimView;
31./**Calledwhentheactivityisfirstcreated.*/
32.©Override
33.publicvoidonCreate(BundlesavedInstanceState)(
34.super.onCreate(savedlnstanceState);
35.setContentView(;
36.ETplace=(EditText)findViewById(;
37.query=(Button)findViewById(;
38.imView=(ImageView)findViewById(;
39.placeName=(TextView)findViewById(;
40.query.setOnClickListener(newButton.OnClickListener()(
41.publicvoidonClick(Viewv)(
42.try{
43.TvPlace=(TextView)findViewById(;
44.Stringplace=CntoEn.getFullSpell(ETplace.getText().toString());
45.placeName.setText(place);
46.Stringweather="";
47.Stringurl="/api?
&weather="+place;
48.DefaultHttpClientclient=newDefaultHttpClient();
49.HttpUriRequestreq=newHttpGet(url);
50.HttpResponseresp=client.execute(req);
51.//StringstrResult=EntityUtils.toString(resp.getEntity());
52.//Log.i("weather->”,strResult);
53.//一华氏度等于9/5摄氏度数值+32
54.HttpEntityent=resp.getEntity();
55.InputStreamstream=ent.getContent();
56.DocumentBuilderb=DocumentBuilderFactory.newInstance()
57..newDocumentBuilder();
58.Documentd=b.parse(newInputSource(stream));
59.NodeListn=d.getElementsByTagName("forecast_conditions");
60.//获得图片url当天的。
61.StringimgUrl="";
62.imgUrl+=n.item(0).getChildNodes().item(3).getAttributes().item(0).getNodeValue();
63.imView.setImageBitmap(Utils.returnBitMap(imgUrl));
64.//今后4天预报
65.for(inti=0;i66.weather+=Utils.week(n.item(i).getChildNodes().item(0)67..getAttributes().item(0).getNodeValue());68.weather+=",";69.weather+=(Integer70..parseInt(n.item(i).getChildNodes().item(1)71..getAttributes().item(0).getNodeValue())-32)*5/9;72.weather+="~";73.weather+=(Integer74..parseInt(n.item(i).getChildNodes().item(2)75..getAttributes().item(0).getNodeValue())-32)*5/9;76.weather+=",";77.weather+=Utils.weather(n.item(i).getChildNodes().item(4)78..getAttributes().item(0).getNodeValue());79.weather+="\n";80.}81.Log.i("parseedweather->",weather);82.TvPlace.setText(weather);83.}catch(Exceptione)(84.e.printStackTrace();85.}86.}});87.}88.}添加权限1.xmlversion="1.0"encoding="utf-8"?>2.android="/res/android"3.package=""4.android:versionCode="1"5.android:versionName="1.0">6.name="">7.icon="@drawable/icon"android:label="@string/app_name">8.name=".Weather”9.android:label="@string/app_name">10.11.name=""/>12.name=""/>13.14.15.16.
66.weather+=Utils.week(n.item(i).getChildNodes().item(0)
67..getAttributes().item(0).getNodeValue());
68.weather+=",";
69.weather+=(Integer
70..parseInt(n.item(i).getChildNodes().item
(1)
71..getAttributes().item(0).getNodeValue())-32)*5/9;
72.weather+="~";
73.weather+=(Integer
74..parseInt(n.item(i).getChildNodes().item
(2)
75..getAttributes().item(0).getNodeValue())-32)*5/9;
76.weather+=",";
77.weather+=Utils.weather(n.item(i).getChildNodes().item(4)
78..getAttributes().item(0).getNodeValue());
79.weather+="\n";
80.}
81.Log.i("parseedweather->",weather);
82.TvPlace.setText(weather);
83.}catch(Exceptione)(
84.e.printStackTrace();
85.}
86.}});
88.}
添加权限
xmlversion="1.0"encoding="utf-8"?
2.android="/res/android"3.package=""4.android:versionCode="1"5.android:versionName="1.0">6.name="">7.icon="@drawable/icon"android:label="@string/app_name">8.name=".Weather”9.android:label="@string/app_name">10.11.name=""/>12.name=""/>13.14.15.16.
android="/res/android"
3.package=""
versionCode="1"
versionName="1.0">
6.name="">7.icon="@drawable/icon"android:label="@string/app_name">8.name=".Weather”9.android:label="@string/app_name">10.11.name=""/>12.name=""/>13.14.15.16.
name="">
7.icon="@drawable/icon"android:label="@string/app_name">8.name=".Weather”9.android:label="@string/app_name">10.11.name=""/>12.name=""/>13.14.15.16.
icon="@drawable/icon"android:
label="@string/app_name">
8.name=".Weather”9.android:label="@string/app_name">10.11.name=""/>12.name=""/>13.14.15.16.
name=".Weather”
10.
11.name=""/>12.name=""/>13.14.15.16.
name=""/>
12.name=""/>13.14.15.16.
13.
14.
15.
16.
下载文档到电脑,查找使用更方便
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
copyright@ 2008-2022 冰点文档网站版权所有
经营许可证编号:鄂ICP备2022015515号-1