天气预报代码大全基于Android的天气预报的设计与实现
目录
1.引言1
2.系统分析2
2.1需求分析  2
2.2可行性分析  2
2.3性能分析  3
3.系统设计3
3.1总体结构设计  3
3.2数据库设计  3
3.3数据获取与显示  5
3.4详细设计  6
4.系统实现7
4.1软件界面设计7
4.2天气信息显示模块7
4.3城市管理显示模块9
4.4主界面数据请求12
5.系统测试12
5.1测试方案设计12
5.2测试用例创建13
5.3测试结果分析14
6.结语14
参考文献14
基于Android的天气预报的设计与实现
摘要:智能手机现在已经成为人们的随身必带物,甚至因为智能手机而出现的一个种族--低头族。所以智能手机系统已经成为了人们所关注的一个信息,基于手机智能系统的应用程序也开始受人们关注。在这个智能系统终端的飞速发展过程中,出现了几大权威,如谷歌公司创立的Android系统,苹果公司创立的iOS系统等。该项目是用eclipse开发工具开发的在Android系统的智能手机上运行的天气预报软件。这个软件具有显示未来几天内的天气信息和有查看其它城市的天气信息的功能。与现在市面有出现的天气预报软件相比,这个软件有不用花太多流量就可以查看天气信息;且这个软件完全没有广告的优点。本项目就在剖析讨论基于Android系统的技术的基石上开发设计,为了使天气预报这个应用程序更加简单明了。
关键词:Android 天气预报手机软件数据库
1.引言
手机智能系统的来临,使人们的生活质量发生改变,如学习,不再需要花时间去图书馆或者书店,人们只需要在手机上下载相关文本,就可以学习到新的东西。Android系统又是所
有手机智能系统的占比率是最大的。Android开发变成了一种主流趋势。天气的信息,一直是人们所关系的一个话题。本项目就是做基于Android系统的天气预报的设计与实现。天气预报这个APP是一个能提供天气信息的应用程序,可以让人们在现如今这个快节奏的发展过程中随时随地的获取天气信息。在这个信息与科技飞速发展的时代,我们每天需要获取的信息是非常大的,但是相较于以前传统的天气预报APP来讲,本项目以直观明了的方式,将最新的天气信息传递给用户,让人们在出行之前,只需要点开应用程序就可以看到天气信息,并且天气预报这个应用程序有记录功能,只需要一次配置,长时间不用换的好处。天气预报以其简单性、明了性、易用性深受广大用户的喜换,而且这个天气预报应用程序的一个亮点在于,不会添加一些广告等影响用户体验的东西。
此项目实现了基于时间点近几天的天气信息情况,还有城市选择,各个城市的天气情况。
2.基于Android的天气预报的系统分析
在开发一个新的项目之前,需要对项目所需要的功能和要求进行分析,经过分析之后,再进行系统分析,根据项目的功能和要求及系统分析之后,编写出整个项目设计开发中的具体设计方案。且需求分析的不太准确使,会对开发人员在开发的后期进行修改的时候有很大的阻力,因此开发人员对需求分析的准确性非常重视,需求分析已经成为了整个开发过程中最重要的一个环节。
需求分析前期所需要用到的方法,技术必然会影响到软件开发的质量、效率以及最终的运行的结果成败。
2.1需求分析
现阶段,手机已经变成了人们的随身携带物。且手机的功能变得越来越壮大了,人们可以打开手机的网络服务,获取一些人们上传在网络上的信息;这样就使人们对上网的功能需求就积聚增大,因而也带动了手机软件的发展,并使我国的移动通讯服务也得到了非常大的提升。越来越多的手机APP被用在手机上,修正了原始系统的缺点。手机智能系统的飞速发展,从早期的诺基亚无敌的手机塞班系统帝国,到Android系统与iOS系统的出现。
此软件在Android系统的手机上,通过网络查询实现天气状况的报告和未来天气的预报等功能,让人们的出行和生活得到方便和保证。
此软件是利用Web Service这个API来获取天气信息的应用程序,点开软件后可以进行城市之间的选择,利用activity所写的界面将这个城市的天气信息,包括温度,风向,天气提示等信息显示出来。这些数据都是从后台服务获取,从中国天气网上获取天气的相关信息,并将天气的信息存储在手机自带的数据库(SQLite)中,方便用户的观看和更新,即联网获取最新一次,就可接下来一段时间查看。
从上面对此软件的描述,我们可以知道到此软件的功能需求:
(1)首先要启动Weather;
(2)设置界面:对城市管理和预警管理进行设置;
(3)显示界面:显示天气信息,其中包括了日期,相关温度,风向,温馨的天气提示等。2.2可行性分析
2.2.1 技术可行性
在软件人员开发Android系统相关应用是所用的开发语言是Java语言,因为Java语言经过这么长时间的更新已经趋于成熟,所以Java语言学习起来简单,且方便的长处。安卓是开源的系统,学习Android的人非常多,使得Android系统趋于完美。在eclipse上编写代码,使开发更加便捷。由此,此项目有技术可行性。
2.2.2 操作可行性
一个系统的操作困难与否对于用户的体验是有非常大影响,因为操作非常麻烦困难,就会丢失客户,所以系统应该拥有操作简单,易懂的特点。本项目是基于Android的软件,只需
要用户在手机上安装本系统的APP安装包即可进行操作,操作界面简单明了,只要用户使用过智能手机,便可以进行各项功能的使用。
2.2.3 经济可行性
本项目采用eclipse来完成设计与开发,且eclipse是免费开发软件,只需要具备技术,就可以完成开发。所以这个项目无需花费财力。只需要花时间去设计编写代码即可完成。因此,经济可行性可以通过。
2.3性能分析
(1)点击Weather.apk安装此APP。
(2)点击左上角进行城市选择。
(3)点击右上角进行用户登录。
此APP操作简单,设计人性化,应用也方便,没有广告等。安全性高,数据响应快,方便实用。
3.基于Android的天气预报的系统设计
3.1总体结构设计
此项目是手机APP,将每个功能都独立化,且每个功能模块之间的联系不太紧密,使各个功能达到互不影响的要求。方便后期的修改。
本项目的总体结构由一个主界面和主界面上的一些功能模块组成,各个模块分为设置按钮、显示天气信
息、刷新按钮、设置又有城市管理和预警管理,天气预报系统功能模块图如图1所示
图1天气预报系统功能模块图
3.2数据库设计
本设计运用得数据库是SQLite数据库,大部分的符合sql92规则的数据都能被SQLite所支持,且所有主流的操作系统都可以允许SQLite数据库。
3.2.1数据库存储方法
在该软件中,需要存储天气的一些信息,所以利用Android系统自带的数据库SQLite来存储。Android平台也为开发人员提供了一个SharedPreferences类,它是一个简单的,小型的存储类,非常适合存储应用程序的一些配置参数以及一些简单的数据,如基于本地的一些登录信息,一会默认设置的参数存储。采用SharedPreferences这个类的方式去存储数据的时候,数据会存放在扩展名为txt的文件中
(1)使用SharedPreferences这个方法来保存数据的代码有如下:
public static void getCityInfoToShared(Context context){
BufferedReader bufread = null;
try{
bufr=newBufferedReader(new
Assets().open("city_")));
String line = null;
SharedPreferences sp = SharedPreferences("cityInfo",Context.MODE_PRIV A TE);
SharedPreferences.Editor editor = sp.edit();
while((l = adLine())!=null){
if(!l.equals("")){
String[] data = line.split(",");
editor.putString(data[1],data[0]); } }
editormit();
}catch (Exception e){
Log.String(), ";加载城市列表失败");
}finally {
try {
if (bufr != null)
bufr.close();
}catch (Exception e){ } }}
运行上面的代码,SharedPreferences会把这些数据保存在city_这个文件中,可以在File Explorer的这个工具打开,在手机文件夹中的data目录下的city_的shared_prefs的目录下。
3.3数据获取与显示
3.3.1数据获取
该项目利用HttpURLConnection这个类来完成数据请求的。利用这个类,从中国天气网上获取需要的城市的天气信息,然后返回给工具类中的解析类,在经过json解析技术,将数据解析出来,并返回到主界面上的每个组件中显示。
HttpURLConnection网络服务代码如下:
public static String getWeatherJsonData(String path){
Log.i("smile", path);
if(TextUtils.isEmpty(path)) {
Log.e(";提示信息:", ";路径不能为空");
return null;
}else{
try {
URL url = new URL(path);
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setReadTimeout(5000);
int code = c.getResponseCode();
if (code == 200) {
String data = InputStream());
return data;
}else{
Log.e(";提示信息:", ";连接失败");
return null; }
}catch (Exception e){
e.printStackTrace();
Log.String(), ";获取失败");
return null; } } }
数据请求如图2所示
图2 数据请求
3.3.2数据显示
将读出的数据利用JSON解析技术,解析出来并显示在写好的组件上。
在该项目中,利用Java的封装技术,让json解析技术封装在jsonutiles.java这个类中。JSON 解析是一种简单小型性的数据格式转换的一种方式,它有着非常好的可读性和方便飞快编写
的特点,开发人员给json解析做了很多很好的技术改动,使json解析技术更加简单,使用起来方便便捷。使得解析出来的数据具有通性,可以在不同的手机智能系统上使用。因此,在该项目中采用了json解析这个类。代码如下:
public static WeatherInfo getWeatherInfo(String key,String jsonData){
try {
JSONObject jsonObject = new JSONObject(jsonData);
JSONObject jsonWeather = JSONObject(key);
WeatherInfo weatherInfo = new WeatherInfo();
weatherInfo.String("city"));
//weatherInfo.String("aqi")); weatherInfo.String("ganmao"));
weatherInfo.String("wendu"));
JSONArray jsonDayWeahers = JSONArray("forecast");
List<DayWeatherInfo> dayWeatherInfos = new ArrayList<DayWeatherInfo>();
for(int i=0;i<jsonDayWeahers.length();i++){
JSONObject obj = JSONObject(i);
DayWeatherInfo dayWeatherInfo = new DayWeatherInfo();
dayWeatherInfo.String("fengxiang"));
dayWeatherInfo.String("fengli"));
dayWeatherInfo.String("high"));
dayWeatherInfo.String("low"));
dayWeatherInfo.String("type"));
dayWeatherInfo.String("date"));
dayWeatherInfos.add(dayWeatherInfo); }
weatherInfo.setForecast(dayWeatherInfos);
JSONObject jsonObject1 = JSONObject("yesterday");
DayWeatherInfo dayWeatherInfo = new DayWeatherInfo();
dayWeatherInfo.String("fx"));
dayWeatherInfo.String("fl"));
dayWeatherInfo.String("high"));
dayWeatherInfo.String("low"));
dayWeatherInfo.String("type"));
dayWeatherInfo.String("date"));
weatherInfo.setY esterday(dayWeatherInfo);
return weatherInfo;
}catch (Exception e){
e.printStackTrace();
Log.String(),";获取Json数据失败");
return null;}}}
3.4详细设计
3.4.1项目设计内容
该项目的主要设计内容是将未来一段时间的天气信息表现出来。使用开发工具eclipse开发设计天气预报的各个界面的显示,以及将从中国天气网上获取的数据显示在界面上。
3.4.1项目设计目标