工程源码下载链接:http://download.csdn.net/detail/sailor_luo/9883334
目录
一、前言 2
二、需求分析 2
三、系统设计
1、系统流程 2
2、函数流程 3
四、系统实现
1、实现分析 4
2、函数分析 4
3、具体代码实现 5
五、实验结果分析 7
六、实训过程与实训总结
1、实现分析 10
2、函数分析 10
3、具体代码实现 10
七、参考文献 11
八、附件(代码) 11
一、 前言
在手机网络天气预报的实现项目中实际运用eclipse所学到的知识的巩固内容。一方面拓展知识面一方面锻炼调试能力。满足手机网络天气预报的功能显示一周七天的天气温度。
1. 问题描述:绘制网络天气预报的气温折线图
2. 开发(使用)工具:eclipse,tomcat8.5,UC浏览器
3. 运行环境:android Development Tools中的虚拟机
4. 数据要求:代码清晰明了,便于开发者读懂。界面条理清晰,系统必须具有安全性、可靠性、独立性。
二、 需求分析
该程序使用eclipse平台实现一个天气温度显示功能,并画出折线图。从系统服务器中获取当天温度,在界面中显示折线图,并标出当前温度以及当前星期。
1. 使用android类库中canvas和paint等绘制一条温度曲线,带有横纵坐标和获取温度值。
2. 使用多线程进行界面刷新,每隔10s更新一次界面,并且设置随机函数,随机获取温度的值。
3. 使用Tomcat搭建简单服务器,并设置随机数据,APP获取网络中的随机数据值(网页每十秒刷新一次),并在布局中显示气温折线图,使用LogCat中打印从网络获取的数据(包括当前时间和获取的七个温度参数)。
三、 系统设计
1. 系统流程
利用http中的client方式进行数据传输
2. 函数流程
(1)把布局设为FrameLayout布局以显示气温折线图
(2)配置tomcat访问网络数据,使用httpclient发送get请求
1)创建HttpClient对象。
2)创建HttpGet对象。
3)如果需要发送请求参数,可以直接将要发送的参数连接到URL地址中,也可以调用HttpGet的setParams()方法来添加请求参数。
4)调用HttpClient对象的execute()方法发送请求。执行该方法将返回一个HttpResponse对象。
5)调用HttpResponse的getEntity()方法,可获得包含服务器的响应内容的HttpEntity对象,通过该对象可以获取服务器的响应内容。
(3)新建一个继承View的activity用paint类绘制气温折线图
(4)在MainActivity创建线程完成随机生成数据和休眠更新数据功能
Thread(Runnable runnable)
四、 系统实现
1. 实现分析:
(1) Android平台用户界面的实现
基于XML开发的Android用户可视化界面。XML文件放在工程/res/layout下面。这个目录可包含所有应用程序所需的代码部分。当要使用到这些资源时,在代码目录中打开R.java文件即可。在XML文件里编辑界面的代码,画出七天之内的天气变化折线图。并通过使用继承自View Group的Layout管理器来组织Android UI中的单个元素到屏幕上。
(2) 更新画面
使用Random函数每隔10秒更新一次数据。
考虑到查询天气需要访问网络,查询返回的结果响应时间快慢每次不一样,为了避免造成界面主线程阻塞,所以采用多线程方式访问网络(并设置时间延迟),当线程执行完查询后,通过发Message方式通知界面上的控件进行更新数据,主线程通过Handler获知消息,然后执行更新界面控件内容。
(3) 天气信息的获取
从Web Service提供商中提取天气预报的数据信息,为客户端服务。其基本功能是当用户运行天气预报系统程序时,在手机屏幕上显示未来一周内的天气预报。为此,需要解决的问题是手机终端从Web服务器获取了所有类型的数据之后,将这些数据进一步交给Android手机终端View组件,在手机界面上显示给客户。
2. 函数分析:
(1) 画图使用paint类和canvas类进行折线图的绘制,画笔的颜色以及笔触的宽度以及画布的设置。
(2) 通过Thread类的构造方法创建线程,每隔10秒用random进行更新一下系统中的数据,让线程休眠10秒,在运用消息处理类handler对象的handleMessage()方法对其进行处理。
(3) 联网服务器端进行系统更新,使用HttpClient访问网络。
1) 创建httpclient对象:
HttpClient client=new DefaultHttpClient();
2) 创建httpget对象,采用get方式:
HttpGet get=new HttpGet(target);
3) 发送请求参数HttpResponse response;
4) 调用httpclient对象的execute()方法发送请求
5) 调用httpresponse的getStatusLine()获得服务器响应的内容
通过 public void setVal(ArrayList<String> val) {
// TODO Auto-generated method stub
for(int i=0;i<tempval.length;i++){
String ss=val.get(i);
tempval[i]=Integer.parseInt(ss);
}
}
将服务器中的更新数据与界面链接
3. 具体函数实现:
(1)新建画图类继承View用paint类绘制气温折线图
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
Paint paint= new Paint();
(2)每隔十秒更新一次气温数据,数据每次随机生成7个
休眠线程代码:
new Thread(new Runnable() {
public void run() {
while(true){
Thread.sleep(10000);
}
Hander类和message类主要代码:
handler =new Handler(){
public void handleMessage(Message msg) {
chartView.setVal( (ArrayList<Integer>) msg.obj);
chartView.invalidate();
super.handleMessage(msg);
(4) 下载配置tomcat,httpclient访问网络
访问网络实现
将需要访问的jsp放到配置好的tomcat文件夹下
添加访问权限:
五、 实验结果分析
1、
2、界面显示
从服务器返回值,并进行显示。下图为虚拟机
第一次数据显示 第二次数据显示
此时打印logcat
安卓课程设计报告--《基于网络返参的安卓天气预测分析》
最新推荐文章于 2024-06-21 17:40:00 发布