天气预报 李元 王朴.docx

上传人:b****3 文档编号:4931591 上传时间:2022-12-11 格式:DOCX 页数:37 大小:119.72KB
下载 相关 举报
天气预报 李元 王朴.docx_第1页
第1页 / 共37页
天气预报 李元 王朴.docx_第2页
第2页 / 共37页
天气预报 李元 王朴.docx_第3页
第3页 / 共37页
天气预报 李元 王朴.docx_第4页
第4页 / 共37页
天气预报 李元 王朴.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

天气预报 李元 王朴.docx

《天气预报 李元 王朴.docx》由会员分享,可在线阅读,更多相关《天气预报 李元 王朴.docx(37页珍藏版)》请在冰豆网上搜索。

天气预报 李元 王朴.docx

天气预报李元王朴

1:

(北京)

CHINAUNIVERSITYOFPETROLEUM

Android大作业报告

 

天气预报程序

院系名称:

地球物理与信息工程学院

专业名称:

计算机科学与技术

学号:

20120113422012011337

姓名:

王朴李元

 

完成日期2014年11月5日

一.项目总体介绍:

本组所研发的天气预报系统,利用XX地图接口获取用户所在地,并利用现有的网络快速获取AccuWeather接口的天气信息并显示到手机终端上,为用户提供实时的天气查询和近期天气查询服务,为工作、出行等带来便利。

本软件具有定位、更新查询实时天气、一周天气变化、拍照及分享至微信朋友圈等功能,背景音乐可播放或关闭。

二.任务分析:

本软件应该包含三个模块:

1.显示天气预报的用户界面:

在这个软件中,有一个显示天气情况的用户界面,可以定位获取当地天气,通过图片和文字显示当前和未来一周的天气状况,包括所查询地点当天的各时段的温度,及未来一周的最高温度、最低温度、雨雪情况等。

点击刷新可更新实时天气,这些天气数据是通过后台服务获取的。

2.查询地点的输入选择模块:

在用户主界面点击定位按钮可以自动定位到用户所在城市并更新显示所在城市的天气状况。

用户想查询其它地点的天气状况时,可以点击城市名进入查询地点更换界面,输入城市名关键字,后台服务将城市名转换为关键编码并从ACCU上获取天气预报信息,并将天气信息显示在界面中。

并且该界面会记住用户所查询的城市历史纪录,用户可选择手动删除历史纪录。

3.开关背景乐及拍照分享等功能的菜单模块:

3.任务实施

首先环境配置:

从csdn网站下载XX地图的sdk包,加到AndroidPrivateLibraries文件夹下;从AccuWeather官网下载sdk包,加到AndroidPrivateLibraries文件夹下。

需要在androidmanifest.xml文件里添加如下权限:

name="android.permission.INTERNET"/>

name="android.permission.BAIDU_LOCATION_SERVICE">

name="android.permission.BAIDU_LOCATION_SERVICE">

name="android.permission.ACCESS_NETWORK_STATE">

name="android.permission.ACCESS_WIFI_STATE">

name="android.permission.CHANGE_WIFI_STATE">

1.用户界面设计:

整个界面共分为三部分:

当前天气显示部分、24小时天气状况显示部分、未来一周天气状况显示部分。

(1)当前天气显示部分:

显示当前时间地点的温度、天气情况等,有定位、地点更换、更新等功能选择。

(2)24小时天气状况显示部分:

当前一天内分时间段的温度及天气状况显示。

(3)未来一周天气状况显示部分:

未来一周内每日的最高温、最低温及天气状况显示。

主界面(当前天气显示部分)Weather.xml

xmlversion="1.0"encoding="utf-8"?

>

android="

xmlns:

geekui="

android:

layout_width="match_parent"

android:

layout_height="match_parent">

android:

layout_width="match_parent"

android:

layout_height="match_parent"

android:

layout_above="@+id/clock"

android:

background="@color/deepskyblue"

android:

padding="20dp">

android:

layout_width="match_parent"

android:

layout_height="match_parent"

android:

scaleType="centerCrop"/>

android:

id="@+id/temp"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignParentLeft="true"

android:

layout_alignParentTop="true"

android:

text="35°"

android:

textColor="#ddd"

android:

textSize="72dp"/>

android:

id="@+id/tempicon"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignBottom="@+id/temp"

android:

layout_alignParentRight="true"

android:

layout_alignTop="@+id/temp"

android:

scaleType="centerInside"

android:

src="@drawable/s07"/>

android:

id="@+id/setapp"

android:

layout_width="40dp"

android:

layout_height="40dp"

android:

layout_alignParentBottom="true"

android:

layout_alignParentLeft="true"

android:

background="@drawable/rect_circle"

android:

scaleType="centerInside"

android:

src="@drawable/locate"/>

android:

id="@+id/textReport"

android:

layout_width="match_parent"

android:

layout_height="wrap_content"

android:

layout_above="@+id/setapp"

android:

layout_below="@+id/temp"

android:

ellipsize="marquee"

android:

focusable="true"

android:

padding="5dp"

android:

text="无法获取信息"

android:

textColor="@android:

color/white"

android:

textSize="16dp"/>

android:

id="@+id/city"

android:

layout_width="match_parent"

android:

layout_height="40dp"

android:

layout_alignParentBottom="true"

android:

layout_centerHorizontal="true"

android:

layout_marginLeft="60dp"

android:

layout_marginRight="60dp"

android:

background="@drawable/rect_circle"

android:

ellipsize="middle"

android:

gravity="center"

android:

minWidth="100dp"

android:

singleLine="true"

android:

text="点击添加城市"

android:

textColor="@android:

color/white"

android:

textSize="20dp"/>

android:

id="@+id/refresh"

android:

layout_width="40dp"

android:

layout_height="40dp"

android:

layout_alignParentBottom="true"

android:

layout_alignParentRight="true"

android:

layout_alignTop="@+id/city"

android:

background="@drawable/rect_circle"

android:

src="@drawable/ic_action_refresh"/>

android:

id="@+id/clock"

android:

layout_width="match_parent"

android:

layout_height="80dp"

android:

layout_above="@+id/hours"

android:

background="@color/future"/>

android:

id="@+id/hours"

android:

layout_width="match_parent"

android:

layout_height="60dp"

android:

layout_above="@+id/days"

android:

background="@color/future"

android:

horizontalSpacing="1dp"

android:

listSelector="@color/future"

android:

numColumns="6"

android:

scrollbars="none"

android:

scrollingCache="false"

android:

stretchMode="columnWidth"/>

--以下是未来一周天气预报-->

android:

id="@+id/days"

android:

layout_width="match_parent"

android:

layout_height="100dp"

android:

layout_above="@+id/weeks"

android:

background="@color/darkturquoise"/>

android:

id="@+id/weeks"

android:

layout_width="match_parent"

android:

layout_height="60dp"

android:

layout_alignParentBottom="true"

android:

background="@color/darkturquoise"

android:

horizontalSpacing="1dp"

android:

listSelector="@color/darkturquoise"

android:

numColumns="7"

android:

scrollbars="none"

android:

scrollingCache="false"

android:

stretchMode="columnWidth"/>

城市选择界面findcity.xml

xmlversion="1.0"encoding="utf-8"?

>

android="

android:

layout_width="match_parent"

android:

layout_height="match_parent">

android:

layout_width="match_parent"

android:

layout_height="50dp"

android:

background="#ddd"/>

android:

id="@+id/back"

android:

layout_width="30dp"

android:

layout_height="30dp"

android:

layout_alignParentLeft="true"

android:

layout_margin="10dp"

android:

background="@drawable/rect_circle"

android:

scaleType="centerInside"

android:

src="@drawable/ic_ab_back_holo_light"/>

android:

id="@+id/editfind"

android:

layout_width="match_parent"

android:

layout_height="40dp"

android:

layout_marginBottom="5dp"

android:

layout_marginLeft="55dp"

android:

layout_marginRight="55dp"

android:

layout_marginTop="5dp"

android:

hint="点击搜索地名"/>

android:

id="@+id/find"

android:

layout_width="30dp"

android:

layout_height="30dp"

android:

layout_alignParentRight="true"

android:

layout_margin="10dp"

android:

background="@drawable/rect_circle"

android:

scaleType="centerInside"

android:

src="@drawable/ic_action_search"/>

android:

id="@+id/citylist"

android:

layout_width="match_parent"

android:

layout_height="match_parent"

android:

layout_marginTop="50dp"

android:

background="@android:

color/background_light"

android:

divider="#ddd"

android:

dividerHeight="1px"

android:

listSelector="#0000"

android:

scaleType="centerInside"

android:

scrollingCache="false"/>

拍摄照片、分享朋友圈功能界面

android="

xmlns:

tools="

android:

layout_width="match_parent"

android:

layout_height="match_parent"

android:

paddingBottom="@dimen/activity_vertical_margin"

android:

paddingLeft="@dimen/activity_horizontal_margin"

android:

paddingRight="@dimen/activity_horizontal_margin"

android:

paddingTop="@dimen/activity_vertical_margin"

tools:

context=".TakePhoto">

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

text="@string/hello_world"/>

2.天气查询、定位等功能实现:

(1)天气查询

该功能实现利用了AccuWeather提供的接口,将所需要查询的城市名字作为参数,想服务器发出请求,服务端以省/市/区的形式返回城市信息及编码,建立数据库存入城市查询记录。

建立URL地址,向服务器请求数据信息。

该功能牵涉到三个文件。

分别是FindCity.java、WEBProvider.java和GetData.java。

代码如下:

FindCity.java

packagecom.yoyo.EasyWeather;

importjava.util.*;

importcom.yoyo.EasyWeather.Data.*;

importcom.yoyo.EasyWeather.Bean.*;

importcom.yoyo.EasyWeather.Util.*;

importandroid.app.*;

importandroid.content.*;

importandroid.os.*;

importandroid.util.Log;

importandroid.view.*;

importandroid.view.View.*;

importandroid.widget.*;

importandroid.widget.AdapterView.*;

publicclassFindCityextendsActivity{

privateListViewlist;

privateEditTextetext;

privatestaticHandlermHandler;

privateStringjson;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.findcity);

list=(ListView)findViewById(R.id.citylist);

etext=(EditText)findViewById(R.id.editfind);

setLocalList();

Viewbtn=findViewById(R.id.find);

btn.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

Stringtext=etext.getText().toString();

if(text.length()!

=0){

searchCity(text);

}

}

});

Viewback=findViewById(R.id.back);

back.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

finish();

}

});

mHandler=newHandler(){

@Override

publicvoidhandleMessage(Messagemsg){

switch(msg.what){

case0x2014:

setFindList();

break;

}

super.handleMessage(msg);

}

};

}

privatevoidsetFindList(){

List>Items=newArrayList>();

for(EasyCitycity:

parseCity.citys){

MapItem=newHashMap();

Item.put("area",city.getCountry().getLocalizedName()+"/"+

city.getAdministrativeArea().getLocalizedName()+"/"+city.getLocalizedName());

Items.add(Item);

}

SimpleAdapteradp=newSimpleAdapter(this,

Items,R.layout.item_city,newString[]{"area"},newint[]{R.id.city});

list.setAdapter(adp);

list.setOnItemClickListener(newOnItemClickListener(){

@Override

pu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1