安卓天气预报查询app实验报告
- 格式:doc
- 大小:3.64 MB
- 文档页数:16
Android天气预报论文学院: 电子信息工程学院专业: 计算机应用学号: 11033801135学生姓名: 郎红指导教师: 黄炜日期: 2013年11月13一、项目背景现有的3G技术和移动互联网技术的快速发展,智能手机功能的不断增强,让基于Android平台的查询需求越来越多。
本软件就是利用现有的网络快速获取网络上的天气信息并显示到手机终端上,为用户提供实时的天气查询和近期天气查询服务,为工作、出行等带来便利。
通过Web Service等技术让用户体验到前所未有的移动计算。
二、需求分析(一)功能需求在这个综合示例中,有一个显示天气情况的用户界面,可以通过图片和文字显示当前和未来几天的天气状况,包括温度、湿度、风向和雨雪情况等。
这些天气数据是通过后台服务获取的,这个后台服务按照一定时间间隔,从搜索引擎上获取天气预报信息,并将天气信息保存在后台服务中。
示例还需要提供基于SMS短信的天气数据服务,其他手机用户可以向本示例所在的手机上发送SMS短信,在短信中包含特定的关键字,则可以将已有的天气情况通过SMS短信回复给用户。
最后,每个被发送的SMS短信都会被记录下来,用户可以浏览或删除这些记录信息。
(二)界面需求从上面的描述中可以基本了解软件的功能需求,但为了将需求分析过程变得简单明了,首先找出用户界面上需要显示的内容。
功能描述中有“显示天气情况的用户界面”和“用户可以浏览或删除这些记录信息”,除此以外,一般应用软件还应有显示配置信息的界面。
因此,本示例应该包含三个用户界面:显示天气预报的用户界面、显示已发送SMS短信的用户界面、浏览和设置配置信息的用户界面(三)内部功能从用户界面出发,分析隐藏在界面后面的内部功能,这些功能则是程序正常运行的基础(1)显示天气预报的用户界面;①获取搜索引擎的天气数据②保存天气数据信息(2)显示SMS短信的用户界面①根据关键字监视SMS短信②发送包含天气信息的SMS短信③将发送SMS短信的相关信息写入数据库(3)浏览和设置配置信息的用户界面①将用户设置的配置信息保存到数据库②启动时读取数据库中的配置信息③支持恢复缺省设置三、程序设计(一)用户界面设计根据需求中的用户界面分析,应用程序应包含三个主要的用户界面,每个用户界面的显示内容在“显示天气预报的用户界面”中,显示目标城市的当前的天气状况,包括城市名称、温度、湿度、风向、雨雪情况和获取数据时间等信息。
课程设计报告课程名称: 移动平台开发设计题目:天气预报院系:计算机科学与工程学院专业:计算机科学与技术班级:学号:姓名:指导教师:孙霞设计地点: N6-113开课时间: 2016 至 2017 学年第 1 学期目录1. 引言 ........................................................... 错误!未定义书签。
. 题目描述 ................................................... 错误!未定义书签。
. 设计意义 ................................................... 错误!未定义书签。
2. 开发环境 ....................................................... 错误!未定义书签。
. 硬件环境 ................................................... 错误!未定义书签。
. 软件环境 ................................................... 错误!未定义书签。
3. 相关技术及知识点................................................ 错误!未定义书签。
. Activity ................................................... 错误!未定义书签。
. Service .................................................... 错误!未定义书签。
. 网络通信 ................................................... 错误!未定义书签。
4. 需求分析 ....................................................... 错误!未定义书签。
“移动应用开发”实验报告1数据代码即运行结果截图一、整体架构、本次实验我分配的任务是查看某地区天气的活动代码编写和添加权限与注册的相关代码,具体的过程在下面:1、活动(Activity)整体结构2、设计界面(layout)整体结构二、数据代码本次作业(天气预报)的设计界面效果图如下:2接着需要编写遍历省市县的活动,即MainActivity。
代码如下:package com.example.chen.weatherforecast;import android.app.ProgressDialog;import android.content.Intent;import android.content.SharedPreferences;import android.preference.PreferenceManager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.Window;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;3import java.util.ArrayList;import java.util.List;import DB.CoolWeatherDB;import model.City;import model.County;import model.Province;import unity.HttpCallbackLinster;import unity.HttpUtil;import util.Utility;public class MainActivity extends AppCompatActivity {public static final int LEVEL_PROVINCE = 0; //省级public static final int LEVEL_CITY = 1; //市级public static final int LEVEL_COUNTY = 2; //县级private ProgressDialog progressDialog;private ListView listView; //显示省市县的数据private TextView title_text; //标题内容private ArrayAdapter<String> adapter; //listView 的适配器private List<String> datalist = new ArrayList<String>();private List<Province> provinceList; //省列表private List<City> cityList; //市列表private List<County> countyList; //县列表private CoolWeatherDB coolWeatherDB;private Province selectProvince; //选中的省private City selectCity; //选中的市private int currentLevel; //选中的县private Boolean isFromWeatherActivity;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(yout.activity_main);isFromWeatherActivity =getIntent().getBooleanExtra("from_weather_activity",false);SharedPreferences pref =PreferenceManager.getDefaultSharedPreferences(MainActivity.this);if(pref.getBoolean("city_cheeked",false)&& !isFromWeatherActivity ) { Intent intent = new Intent(this,LookWeather.class);startActivity(intent);finish();4} listView = (ListView)findViewById(R.id.list_view);title_text = (TextView)findViewById(R.id.title_text);adapter = newArrayAdapter<String>(MainActivity.this,yout.simple_list_item_1, datalist);listView.setAdapter(adapter);coolWeatherDB = CoolWeatherDB.getInstance(this);listView.setOnItemClickListener(newAdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {if(currentLevel == LEVEL_PROVINCE) {selectProvince = provinceList.get(position);querCity(); //选中省,则查找该省的市} else if(currentLevel == LEVEL_CITY) {selectCity = cityList.get(position);querCounty(); //选中市,则查找该市的县} else if(currentLevel == LEVEL_COUNTY) //选中县,则查找该县所对应的天气{String countyCode = countyList.get(position).getCountycode();Intent intent = new Intent(MainActivity.this,LookWeather.class); intent.putExtra("county_code",countyCode);startActivity(intent);finish();} } });querProvince();} //查找省,如果在数据库中没有找到,则在服务器上找private void querProvince() {provinceList = coolWeatherDB.loadProvince();if(provinceList.size() > 0) {datalist.clear();for(Province province : provinceList) {datalist.add(province.getProvinceName());}adapter.notifyDataSetChanged();listView.setSelection(0);title_text.setText("中国");currentLevel = LEVEL_PROVINCE;} else{ //在服务器上查找5querfromServer(null, "province");} } //查找市,如果在数据库中没有找到,则在服务器上找private void querCity() {cityList = coolWeatherDB.loadCity(selectProvince.getId());if(cityList.size() > 0) {datalist.clear();for(City city : cityList) {datalist.add(city.getCityName());}adapter.notifyDataSetChanged();listView.setSelection(0);title_text.setText(selectProvince.getProvinceName());currentLevel = LEVEL_CITY;} else{ querfromServer(selectProvince.getProvinceCode(),"city");} } //查找县,如果在数据库中没有找到,则在服务器上找private void querCounty() {countyList = coolWeatherDB.loadCounty(selectCity.getId());if(countyList.size() > 0) {datalist.clear();for(County county : countyList) {datalist.add(county.getCountyName());} adapter.notifyDataSetChanged();listView.setSelection(0);title_text.setText(selectCity.getCityName());currentLevel = LEVEL_COUNTY;} else{ querfromServer(selectCity.getCityCode(),"county");} } //根据传入的代号和类型在服务器上查找数据private void querfromServer(final String code,final String type){ String address;if(!TextUtils.isEmpty(code)) { address ="/data/list3/city" + code +".xml";} else{ address = "/data/list3/city.xml";} showProgressDialog();HttpUtil.sendRequstWithURLConnection(address, newHttpCallbackLinster() {@Overridepublic void onFinish(String response) { boolean result = false;if ("province".equals(type)) { result =Utility.handleProvince(coolWeatherDB, response);6} else if ("city".equals(type)) { result =Utility.handleCity(coolWeatherDB, response, selectProvince.getId());} else if ("county".equals(type)) { result =Utility.handleCounty(coolWeatherDB, response, selectCity.getId());} if (result) { runOnUiThread(new Runnable() { @Overridepublic void run() { closeProgressDialog();if ("province".equals(type)) { querProvince();} else if ("city".equals(type)) { querCity();} else if ("county".equals(type)) { querCounty();} } });} } public void onError(Exception e) { runOnUiThread(new Runnable() { @Overridepublic void run() { closeProgressDialog();Toast.makeText(MainActivity.this,"加载失败",Toast.LENGTH_SHORT).show();} });} });} private void showProgressDialog() { if(progressDialog == null){ progressDialog = new ProgressDialog(MainActivity.this);progressDialog.setMessage("正在加载...");progressDialog.setCanceledOnTouchOutside(false);} progressDialog.show();} private void closeProgressDialog() {if(progressDialog != null) {progressDialog.dismiss();} } //捕获返回键,来判断此时应直接返回省,市列表还是返回到显示天气的页面public void onBackPressed() {if(currentLevel == LEVEL_COUNTY) {querCity();}else if(currentLevel == LEVEL_CITY) {querProvince();}else { if (isFromWeatherActivity) {Intent intent = new Intent(MainActivity.this, LookWeather.class); startActivity(intent);} finish();} } }还要加上权限声明和注册Activity,即AndroidManifest.xml的代码:7<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="com.example.chen.weatherforecast"><uses-permission android:name="android.permission.INTERNET"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /> </intent-filter></activity><activity android:name=".LookWeather"> </activity></application></manifest>2、获取省、市、县的天气数据在Utility类中添加解析JSON数据与处理。
实验报告实验四天气预报
姓名:
学号:
课程名称:
所在学院:
专业班级:
任课教师:
四、实验重要代码
实验的核心代码主要是下截图的红框部分:
以下解释核心代码,具体文件见WeatherDemo.
1. 三大功能实现模块的设置(WeatherDemo.java文件)
三大块:天气预报、历史数据、系统设置
五、实验结果展示(工程运行结果)
1.用户面:
三大块功能块的介绍:
2.实现
(1)天气预报
设置要获取天气的城市,输入它的城市ID,这里以101020100(上海)为例。
(所有城市的ID在获取中国天气网API时设置在WeatherAdapter.java中)
更新频率为10秒/次,短信服务关键字为SH
设置完毕之后,点右上角刷新,查看用户界面的”天气预报”,结果如下:
(2)模拟发送短信
在tool->android 中设置模拟发送短息要求。
比如手机会收到来自用户156001078获取天气预报的请求。
虚拟手机会收到该手机发送的带有关键字SH的弹出短信。
(因为手机不适配的问题,在自己手机上无法进行短信发送功能模拟,所以换用虚拟机,实现短信发送功能。
)。
课程设计报告课程名称: 移动平台开发设计题目:天气预报院系:计算机科学与工程学院专业:计算机科学与技术班级:学号:姓名:指导教师:孙霞设计地点:N6-113开课时间:2016 至2017 学年第1 学期目录1.引言 01.1.题目描述 01.2.设计意义 02.开发环境 02.1.硬件环境 02.2.软件环境 03.相关技术及知识点 (1)3.1.Activity (1)3.2.Service (1)3.3.网络通信 (2)4.需求分析 (2)4.1.系统功能需求分析 (2)4.2.系统流程图 (3)4.3.系统界面需求分析 (3)4.4.系统性能需求分析 (3)5.设计与实现 (4)5.1.界面布局 (4)5.2.省市二级联动 (5)5.3.获取天气数据 (8)5.4.播放背景音乐 (12)6.个人总结 (13)参考资料 (14)1.引言1.1.题目描述本次实验是开发一款基于Android平台的天气预报应用,将网络系统的功能扩展到智能手机终端上,让手机能够通过移动网络访问Web网站并处理各种各样的业务,可以让智能手机用户能够随时随地查询互联网所提供的天气信息。
1.2.设计意义可以让广大Android手机用户能够在第一时间获取最新的天气预报信息,以便提前预防,方便出行。
同时,把气象灾害造成的损失降到最低,也可以提高公共服务质量,更好的发挥气象事业对经济社会发展的现实性作用,有巨大的实用价值。
虽然该技术在Android平台已经比较成熟,但是通过该软件的开发仍然能帮助我更好的认识Android系统的工作原理。
2.开发环境2.1.硬件环境戴尔灵越笔记本电脑2.2.软件环境Android的上层应用程序是用Java语言开发的,一般情况下是基于Dalvik虚拟机的,所以Google公司推荐使用主流的Java集成开发环境Eclipse。
而用Java语言进行开发,需要用到SUN 公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。
基于Android的天气预报APP的设计与实现一、引言现如今,挪动互联网的普及使得手机成为人们生活中不行或缺的工具之一。
天气预报是手机上常用的功能之一,能够提供精准的天气信息,援助人们合理打算出行和生活。
因此,变得尤为重要。
二、功能需求分析在设计与实现之前,起首对天气预报APP的功能需求进行分析。
依据用户的需求,天气预报APP的主要功能如下:1. 实时天气查询:用户可以随时随地查询当前所在位置的实时天气信息,包括温度、风速、湿度等。
2. 天气预报功能:用户可以查看将来几天的天气预报,包括温度变化趋势、天气状况等,援助用户进行合理的出行规划。
3. 城市切换功能:用户可以切换不同城市进行天气查询,便利用户查看其他地区的天气状况。
4. 生活指数推举:依据天气状况,推举用户合适的衣着、环境指数等生活建议,提供更好的生活体验。
5. 天气提示功能:用户可以设置天气提示,当天气状况达到所设阈值时,APP会发送通知提示用户。
6. 数据更新功能:APP需要提供数据更新的功能,保持天气数据的准时性与准确性。
三、系统设计在系统设计阶段,需要思量系统的整体架构以及各个模块的设计。
1. 系统架构设计基于Android平台的天气预报APP的系统架构如下:(1) 用户界面层:这是用户与APP进行交互的界面层,用户可以通过界面层进行数据的输入与输出。
(2) 业务逻辑层:这是处理业务逻辑的层,包括天气数据的得到、数据展示、天气提示的设置等功能。
(3) 数据访问层:这是与后台数据进行交互的层,负责得到实时天气数据和天气预报数据。
(4) 后台数据层:这是存储实时天气数据和天气预报数据的后台数据库。
2. 模块设计(1) 用户界面设计:依据功能需求,设计用户友好的界面,包括实时天气显示界面、预报天气显示界面、城市切换界面等。
(2) 数据得到与处理模块设计:该模块负责向后台数据层请求天气数据,并对数据进行处理,提供给用户界面层显示。
(3) 天气提示模块设计:依据用户的设置,实现天气提示功能,当天气满足提示阈值时,发送通知提示用户。
手机安卓开发设计报告-天气预报APP一、需求分析(一)引言1.编写目的1.1 为用户提供一个显示天气预报的软件,可以根据百度地图显示用户需求的城市位置,以及用图标表示各城市对应的气象信息,可以简洁的表示出“晴、雨、雪”和“气温”气象信息。
2. 项目风险2.1 (项目风险识别是指找出影响项目目标顺利实现的主要风险因素,并识别出这些风险究竟有哪些基本特征、可能会影响到项目的那些方面。
)2.2 联网收费视用户电话运营商的收费标准决定2.3 手机或者无线信号不好时,可能无法连接或更新天气情况3. 预期读者和阅读建议3.1 预期读者:会使用已经安装安卓系统的手机或者平板电脑及其他移动设备的用户3.2 阅读建议:读者应通过该文档可以了解相关项目的需求分析、使用注意事项以及可能存在的风险4. 产品范围2.2手机,平板电脑,MP4,导航仪,上网本,电纸书等使用安卓系统的数码领域(二)综合描述1.产品的状况1.1 Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。
目前未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
Android操作系统最初由Andy Rubin开发,最初主要支持手机。
2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他数码领域上。
我们开发的相关项目正是一个在安卓平台上开发的软件,可以用这个软件来实现用户在一些简单的手持设备如手机或者平板电脑等上面及时的了解到用户所在城市的天气预报。
2. 产品的功能2.1 天气信息获取2.2 天气信息显示3. 系统配置功能3.1 用户类和特性安卓平台用户:安卓新用户可以使用软件来了解用户所在城市的天气预报。
熟悉安卓平台用户还可以选择对相关软件的系统按自己的喜好进行配置并保留自己的个性化系统配置。
安卓软件开发者:安卓软件开发者(喜好者)可以通过相关的开源代码来了解软件运行的原理。
3.2 运行环境软件需要在支持安卓系统的可移动设备中正确安装才能正常运行。
随着智能手机一步步走进普通人的生活,它将成为人们获取信息的主要设备。
因此手机的娱乐应用服务将会有很大的发展空间手机快捷查询软件就是其中的一项。
Android平台提供给用户非常方便的快捷查询功能这将为快捷查询服务的设计与实现提供了更好的平台。
另外Android平台基本上是免费的,所以能够有效降低软件的成本,最终让每个用户能够自由地获取信息,也为手机快捷查询服务的普及做出贡献。
本文研究分析了Android平台的系统架构和组件模型接着解析了Android中的重要API和应用构成以Intent和生命周期的机制。
在此基础上基于Android平台设计和开发手机快捷查询天气软件。
本系统界面友好、操作便捷具有良好的可扩展性和可维护性;系统经过测试、可以稳定运行、能够满足手机用户的基本需求。
关键词智能手机Android API 用户IAs smartphones is walking into the life of ordinary people step by step, it will become the main equipment of access to information.Therefore, mobile entertainment application service there will be a very big development space of mobile phone quick query software is one of them.Android platform to provide users with convenient and fast query function for the design and implementation of a quick query service provides a better platform.Also the Android platform is essentially free, so can effectively reduce the cost of software, finally let each user can freely access to information and also contribute to the popularization of mobile phone quick query service.This study analyzes the Android platform system architecture and component model and analyzes the important part of the Android API and application of mechanism with the Intent and life cycle.On the basis of the design and development based on the Android platform mobile phone quick query software in the weather.This system friendly interface, convenient operation, good scalability and maintainability;System tested, stable operation, and can satisfy the basic needs of mobile phone users.Keyword smart phone Android API (Application Programming Interface) UserII目录摘要 (I)Abstract (II)第1章绪论 (1)1.1 国内外手机系统现状 (1)1.2 Android系统的优势 (1)1.2.1 开放性 (1)1.2.2 挣脱束缚 (1)1.2.3 丰富的硬件 (2)1.2.4 开发商 (2)1.3 Android的发展趋势 (2)1.3.1 国产手机品牌纷纷加速海外布局 (3)1.4 本章小结 (3)第2章相关技术简介 (4)2.1 开发工具 (4)2.1.1 JDK(Java Development Kit) (4)2.1.2 Android SDK 介绍 (4)2.1.3 Eclipse 开发工具介绍 (4)2.1.4 Android Development Tools(ADT)介绍 (4)2.2 开发环境搭建 (5)2.2.1 开发环境搭建的步骤 (5)2.2.2JDK安装 (5)2.2.3Eclipse安装 (5)2.2.4Android SDK安装 (6)2.2.5ADT安装 (7)2.2.6 创建A VD (7)2.3 本章小结 (7)第3章需求分析 (8)3.1 开发背景 (8)3.2 开发需求分析 (8)3.2.1 开发需求分析的作用 (8)3.2.2 天气预报需求分析 (8)3.3 本章小结 (9)第4章项目功能描述 (10)4.1 系统主要功能 (10)4.2 项目工程结构图 (10)4.2.1 项目工程 (10)4.3 XML和JSON详情 (11)III4.3.1XML解析 (11)4.3.2JSON解析 (12)4.3.3XML的解析方式有两种 (13)4.4本章小结 (14)第5章程序代码设计 (15)5.1 帮助界面 (15)5.2 登陆界面 (16)5.3 主界面 (19)5.4 本章小结 (40)结论 (41)致谢 (42)参考文献 (43)附录1 (44)IV第1章绪论1.1 国内外手机系统现状在早期的手机内部是没有智能操作系统的,所有的软件都是由手机生产商在设计时所定制的,因此手机在设计完成后基本是没有扩展功能的。
基于Android的天气预报查询系统的实现摘要:随着智能手机一步步走进人们的生活,它将成为人们获取信息的主要设备,相关应用越来越广泛,并在人们的日常生活中扮演着越来越重要的角色。
因此,关键应用程序的开发成为影响移动智能终端普及的重要因素,设计并开发实用、方便的应用程序具有重要的意义和良好的市场前景。
Android作为当前最流行的操作平台,自然也存在着大量的应用服务需求。
Android是基于Linux平台完全开源的手机操作系统,同时开发语言为Java,因此我选择了以Android为平台的手机天气预报系统来作为我的毕业设计,目的是帮助用户随时随地查询天气信息及天气变化情况,让生活更加舒适方便。
本文详细讲述了Android平台下天气软件的界面设计及界面的实现、控件的使用、界面的布局等内容,结合中国气象网的天气数据,将准确的天气情况以友好的方式呈现给用户,使用户可以更加赏心悦目地体验本软件的服务。
关键词:Android 天气软件手机天气预报软件系统System implementation of weather query based onAndroidAbstractWith the development of intelligent mobile phone step by step into people's lives, it will become the main device to obtain information, related to more widely, and plays a more and more important role in people's daily life. Therefore, the development of critical applications has become an important factor affecting the popularization of mobile intelligent terminal, application design and development of practical, convenient has important significance and good market prospects. Android as the most popular operating platform, natural also exist in application service needs of a large number of.Android is a mobile phone operating system Linux platform based on open source, at the same time, the development of language Java, so I chose the platform of mobile phone weather system with Android as my graduation design, the purpose is to help the user whenever and wherever possible query weather information and weather condition, make life more comfortable and convenient. This paper describes the layout of content, interface design and interface control weather software under the Android platform use, interface, combined with the weather data of China Meteorological Network, will be accurate weather conditions in a friendly way is presented to the user, the user can be more pleasant experience of the software service.Keyword:Android weather software the software system of mobile phone weather目录第一章绪论 (1)1.1 研究内容.................................................................................................. . (1)1.2 课题背景和意义 (1)1.3 发展现状及趋势 (1)第二章系统分析 (2)2.1需求分析 (2)2.2 Android系统的特点 (2)2.3系统规划 (3)2.4系统构架图 (4)第三章Android开发环境及相关技术 (4)3.1 Android开发环境介绍 (4)3.2 Android开发平台搭建 (5)3.3相关技术介绍 (5)第四章程序设计 (10)4.1 界面设计 (10)4.2 项目框架 (13)4.3 主要功能实现 (14)4.31 获取城市码db_weather.db 数据库文件 (14)4.32 实现可伸缩性列表的构建与过滤 (18)4.33 GPS定位功能的实现 (21)4.34 Widget窗体小部件的更新 (25)第五章功能测试 (27)第六章结论 (31)致谢 (31)参考文献 (32)第一章绪论1.1研究内容Android平台手机气象软件是基于Android手机平台,运用Java语言,从Google上获取天气预报信息,开发出针对使用Android平台的手机天气预报系统。
课程设计报告课程名称: 移动平台开发设计题目:天气预报院系:计算机科学与工程学院专业:计算机科学与技术班级:学号:姓名:指导教师:孙霞设计地点: N6-113开课时间: 2016 至 2017 学年第 1 学期目录1. 引言 ........................................................... 错误!未定义书签。
. 题目描述 ................................................... 错误!未定义书签。
. 设计意义 ................................................... 错误!未定义书签。
2. 开发环境 ....................................................... 错误!未定义书签。
. 硬件环境 ................................................... 错误!未定义书签。
. 软件环境 ................................................... 错误!未定义书签。
3. 相关技术及知识点................................................ 错误!未定义书签。
. Activity ................................................... 错误!未定义书签。
. Service .................................................... 错误!未定义书签。
. 网络通信 ................................................... 错误!未定义书签。
4. 需求分析 ....................................................... 错误!未定义书签。
. 系统功能需求分析............................................ 错误!未定义书签。
. 系统流程图 ................................................. 错误!未定义书签。
. 系统界面需求分析............................................ 错误!未定义书签。
. 系统性能需求分析............................................ 错误!未定义书签。
5. 设计与实现 ..................................................... 错误!未定义书签。
. 界面布局 ................................................... 错误!未定义书签。
. 省市二级联动................................................ 错误!未定义书签。
. 获取天气数据................................................ 错误!未定义书签。
. 播放背景音乐................................................ 错误!未定义书签。
6. 个人总结 ....................................................... 错误!未定义书签。
参考资料 ........................................................... 错误!未定义书签。
1.引言1.1.题目描述本次实验是开发一款基于Android平台的天气预报应用,将网络系统的功能扩展到智能手机终端上,让手机能够通过移动网络访问Web网站并处理各种各样的业务,可以让智能手机用户能够随时随地查询互联网所提供的天气信息。
1.2.设计意义可以让广大Android手机用户能够在第一时间获取最新的天气预报信息,以便提前预防,方便出行。
同时,把气象灾害造成的损失降到最低,也可以提高公共服务质量,更好的发挥气象事业对经济社会发展的现实性作用,有巨大的实用价值。
虽然该技术在Android平台已经比较成熟,但是通过该软件的开发仍然能帮助我更好的认识Android系统的工作原理。
2.开发环境2.1.硬件环境戴尔灵越笔记本电脑2.2.软件环境Android的上层应用程序是用Java语言开发的,一般情况下是基于Dalvik虚拟机的,所以Google公司推荐使用主流的Java集成开发环境Eclipse。
而用Java语言进行开发,需要用到SUN 公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。
此外,Android的应用程序开发和Java开发有较大区别的,需要使用Google提供的Android SDK。
同时,要在Eclipse 上安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级或下载的工具。
简言之,需要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发。
(1) Java SDK(2) Eclipse(3) Android SDK(4) ADT3.相关技术及知识点3.1.Activity应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
Activity之间通过Intent进行通信。
在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据。
典型的动作类型有:M AIN(activity的门户)、VIEW、PICK、EDIT 等。
而动作对应的数据则以URI 的形式进行表示。
例如:要查看一个人的联系方式,你需要创建一个动作类型为VIEW 的intent,以及一个表示这个人的URI。
与之有关系的一个类叫IntentFilter。
相对于intent 是一个有效的做某事的请求,一个intentfilter 则用于描述一个activity(或者IntentReceiver)能够操作哪些intent。
一个activity 如果要显示一个人的联系方式时,需要声明一个IntentFilter,这个IntentFilter 要知道怎么去处理VIEW 动作和表示一个人的URI。
IntentFilter 需要在中定义。
通过解析各种intent,从一个屏幕导航到另一个屏幕是很简单的。
当向前导航时,activity 将会调用startActivity(Intent myIntent)方法。
然后,系统会在所有安装的应用程序中定义的IntentFilter 中查找,找到最匹配myIntent 的Intent 对应的activity。
新的activity 接收到myIntent 的通知后,开始运行。
当startActivity 方法被调用将触发解析myIntent 的动作,这个机制提供了两个关键好处:A、Activities 能够重复利用从其它组件中以Intent 的形式产生的一个请求;B、Activities 可以在任何时候被一个具有相同IntentFilter 的新的Activity 取代。
3.2.Service一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。
比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。
在一个媒体播放器的应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌曲。
然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。
在这个例子中,媒体播放器这个activity 会使用()来启动一个service,从而可以在后台保持音乐的播放。
同时,系统也将保持这个service 一直执行,直到这个service 运行结束。
另外,我们还可以通过使用()方法,连接到一个service 上(如果这个service 还没有运行将启动它)。
当连接到一个service 之后,我们还可以service 提供的接口与它进行通讯。
拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。
Service使用步骤如下:(1)继承service类;(2)配置清单文件中<application>节点里对服务进行配置<servicename=".SMSService"/>。
服务不能自己运行,需要通过()或()启动服务通过startService()方法启动的服务于调用者没有关系,即使调用者关闭了,服务仍然运行想停止服务要调用(),此时系统会调用onDestory(),使用此方法启动时,服务首次启动系统先调用服务的onCreate()-->onStart(),如果服务已经启动再次调用只会触发onStart()方法。
使用bindService()启动的服务与调用者绑定,只要调用者关闭服务就终止,使用此方法启动时,服务首次启动系统先调用服务的onCreate()-->onBind(),如果服务已经启动再次调用不会再触发这2个方法,调用者退出时系统会调用服务的onUnbind()-->onDestory(),想主动解除绑定可使用(),系统依次调用onUnbind()-->onDestory()。
3.3.网络通信JSON数据解析:(1)JavaScript Object Notation是一种轻量级的数据交换格式;(2)Android API中直接支持对JSON数据的处理;(3)常用类JSONObject、JSONArray、JSONStringer和JSONTokener等;(4)数据在名称/值对中、数据由逗号分隔、花括号保存对象、方括号保存数组。
HttpURLConnection:提供了基于HTTP的网络访问方法,主要的操作步骤为:(1)利用URL地址实例化URL类;(2)由URL类创建HttpURLConnection对象;(3)以GET/POST方式向服务器发送请求;(4)接收服务器响应。
4.需求分析4.1.系统功能需求分析(1)能够由用户设置省份城市;(2)根据用户设置的城市,点击刷新按钮获取当地当天的日期、天气信息以及未来六天的天气情况。