android天气预报报告
Android 天气预报简介
Android 谷歌天气预报该项目是东方标准广州java培训中心为java技术开发学习人员和android技术开发班的学员共同开发研制的一款生活助手软件《谷歌天气预报》。
项目来自于日常生活中天气预报新闻。
由于人们日益紧凑的生活节奏,对于天气的关注不如以前那么重要,所以为了节省人们的业余时间,直接将天气预报功能搬入了手机软件功能当中,方便人们阅读浏览当地天气情况,并适当做出生活调整。
该项目技术要点为:推送功能+后台服务设计Service+联网功能HTTP+xml解析器XmlPullParser等技术。
一.项目介绍《谷歌天气预报》是一款简单的天气预报定制软件。
界面简洁易懂,方便用户使用。
可以查询几大城市的天气预报情况,主要功能有天气预告、城市温度、湿度、未来几天天气预测等。
该软件使用起来非常方便。
只要输入所查看的城市,软件自动提供当地的天气情况,以供查询。
二.For personal use only in study and research; not for commercial use三.四.功能说明1、进入软件页面2、功能说明1)、【天气】功能:显示当前天气情况。
资料来自于互联网真实天气预报。
2)、【城市】功能:显示当前所在城市。
3)、【温度】功能:显示选择城市天气温度变化。
资料来自互联网真实天气温度预告。
4)、【湿度】功能:显示当地城市湿度5)、【天气预测】功能:预测未来几天的天气状况。
可以预测未来三天以内的天气资料。
6)、【更新日期】功能: 显示当前天气日期。
五.程序设计技术说明本程序主要使用Service服务。
Android开发中,当需要创建在后台运行的程序的时候,就要使用到Service。
Service 可以分为有无限生命和有限生命两种。
特别需要注意的是Service跟Activities是不同的(简单来说可以理解为后台与前台的区别),例如,如果需要使用Service的话,需要调用startService(),从而利用 startService()去调用Service中的OnCreate()和onStart()方法来启动一个后台的Service。
安卓天气预报查询app实验报告
课程设计报告课程名称: 移动平台开发设计题目:天气预报院系:计算机科学与工程学院专业:计算机科学与技术班级:学号:姓名:指导教师:孙霞设计地点: N6-113开课时间: 2016 至 2017 学年第 1 学期目录1. 引言 ........................................................... 错误!未定义书签。
. 题目描述 ................................................... 错误!未定义书签。
. 设计意义 ................................................... 错误!未定义书签。
2. 开发环境 ....................................................... 错误!未定义书签。
. 硬件环境 ................................................... 错误!未定义书签。
. 软件环境 ................................................... 错误!未定义书签。
3. 相关技术及知识点................................................ 错误!未定义书签。
. Activity ................................................... 错误!未定义书签。
. Service .................................................... 错误!未定义书签。
. 网络通信 ................................................... 错误!未定义书签。
4. 需求分析 ....................................................... 错误!未定义书签。
基于Android的-知天气-数据主动监控系统设计与实现的研究报告
基于Android的-知天气-数据主动监控系统设计与实现的研究报告随着气候变化和天气的不稳定性越来越严重,天气预报对于人们的生活和生产已经越来越重要。
为了更好地预防气象灾害和保障人们的安全,掌握天气变化信息非常必要。
本研究提出了一种基于Android的-知天气-数据主动监控系统设计与实现的方案,以提高人们在天气预报方面的准确性和效率。
一、系统设计本系统的设计采用三层架构,即用户层、业务逻辑层和数据访问层。
系统结构图如下所示:用户层主要包含用户界面设计和交互逻辑。
用户可以通过界面查询当前天气情况、未来几天的天气预报、空气质量和生活指数。
用户还可以设置关注城市和天气预警。
业务逻辑层主要包括通过API获取天气数据、对数据进行处理和分析、生成预报报告和预警信息等。
此外,还需要对用户关注的城市进行监测,主动推送相关信息。
数据访问层主要负责天气数据的查询和操作。
本系统采用第三方API进行数据获取,同时也会将用户关注城市的天气数据保存在本地数据库中。
二、系统实现本系统采用Android Studio进行开发,使用了第三方API进行数据获取和展示。
用户可以通过应用程序主界面轻易地查询到当前定位城市的天气情况,也可以通过搜索功能添加/删除想要关注的城市。
同时,本系统还加入了推送功能,当用户关注的城市出现重要天气变化时,会主动推送相关信息。
此外,在预警信息方面,本系统同样可以通过API获取和展示。
除此之外,为了更好地保证用户体验,本系统还加入了各种便捷功能,包括天气预报分享、天气预报动态壁纸、生活指数查询等等。
三、总结通过本研究,我们提出了一种基于Android的-知天气-数据主动监控系统设计与实现的方案,通过该方案实现了定位查询城市实时天气、搜索添加关注城市、主动推送关注城市天气变化、预警信息展示等功能,大大提高了人们在天气预报方面的准确性和效率。
在今后的应用和推广中,我们还需不断完善和更新,以及优化系统的性能和稳定性。
Android天气预报系统文档
[键入公司名称]实训课程设计天气预报程序xx2011/12/291项目任务概述1.1项目背景随着3G时代的到来,移动互联网成为Internet下一个热点,android可以很好的使用Internet,获取网站上的数据,android天气预报系统就利用这一方式为用户提供服务。
天气预报的主要功能是为用户提供今日以及未来两天的天气预报。
1.2 项目任务本项目实现在 Android移动设备天气预报功能,系统根据用户输入的地址,在Internet上请求获得该地址的天气情况,并发回数据,在系统调用该数据后,将天气实况显示给用户。
2需求分析用户可以使用该系统实现日记的编写,修改和删除,日记内容阅读以及以文本文档形式将日记导入SDcard中。
2.1总体用例图查看当日天气预报查看未来两天天气预报查看地理信息图12.2 天气预报用例图查看当日天气预报2.3天气预报业务流程输入地址选择列表item进入系统进入今日预报页面退出系统图2用户通过点击桌面图标,进入系统。
再通过在文本框中输入的地址,来进入当天天气预报界面。
再点击箭头按钮,页面跳转到未来两天天气预报的界面。
2.4 查看未来两天天气预报用例图2.5 查看未来两天天气预报流程图图22.6 查看地理信息用例图查看未来两天天气预报输入地址选择列表item点击按钮进入系统进入今日预报页面进入明日预报界面退出系统2.7查看地理信息流程图图33 系统设计3.1 天气预报系统UI——登录界面查看地理信息点击MENU 选择MENU 查看地理信息回到系统图43.2天气预报UI——登录界面说明在此界面中,正如大家所见。
含有两个TextView组件,一个ImageView组件,一个AutoCompleteTextView,其字符大小分别是默认的大小。
其中AutoCompleteTextView能够给用户提供选项列表,用户只要单击列表中的一项,此页面就回自动跳转到下一页面。
3.3 天气预报UI——今日天气预报界面图5 图63.4天气预报UI——今日天气预报界面说明此界面中分别含有六个TextView组件,五个ImageView组件,一个ImageButton 组件,一个Menu,在此布局文件中有五个相对布局。
“移动应用开发”实验报告---天气预报
“移动应用开发”实验报告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数据与处理。
基于Android的天气预报APP的设计与实现
基于Android的天气预报APP的设计与实现基于Android的天气预报APP的设计与实现一、引言现如今,移动互联网的普及使得手机成为人们生活中不可或缺的工具之一。
天气预报是手机上常用的功能之一,能够提供精准的天气信息,帮助人们合理安排出行和生活。
因此,基于Android的天气预报APP的设计与实现变得尤为重要。
二、功能需求分析在设计与实现之前,首先对天气预报APP的功能需求进行分析。
根据用户的需求,天气预报APP的主要功能如下:1. 实时天气查询:用户可以随时随地查询当前所在位置的实时天气信息,包括温度、风速、湿度等。
2. 天气预报功能:用户可以查看未来几天的天气预报,包括温度变化趋势、天气状况等,帮助用户进行合理的出行计划。
3. 城市切换功能:用户可以切换不同城市进行天气查询,方便用户查看其他地区的天气情况。
4. 生活指数推荐:根据天气情况,推荐用户合适的衣着、环境指数等生活建议,提供更好的生活体验。
5. 天气提醒功能:用户可以设置天气提醒,当天气状况达到所设阈值时,APP会发送通知提醒用户。
6. 数据更新功能:APP需要提供数据更新的功能,保持天气数据的及时性与准确性。
三、系统设计在系统设计阶段,需要考虑系统的整体架构以及各个模块的设计。
1. 系统架构设计基于Android平台的天气预报APP的系统架构如下:(1) 用户界面层:这是用户与APP进行交互的界面层,用户可以通过界面层进行数据的输入与输出。
(2) 业务逻辑层:这是处理业务逻辑的层,包括天气数据的获取、数据展示、天气提醒的设置等功能。
(3) 数据访问层:这是与后台数据进行交互的层,负责获取实时天气数据和天气预报数据。
(4) 后台数据层:这是存储实时天气数据和天气预报数据的后台数据库。
2. 模块设计(1) 用户界面设计:根据功能需求,设计用户友好的界面,包括实时天气显示界面、预报天气显示界面、城市切换界面等。
(2) 数据获取与处理模块设计:该模块负责向后台数据层请求天气数据,并对数据进行处理,提供给用户界面层显示。
android 天气预报功能详解
通过google接口在Android中实现天气预报效果Android可以通过google实现获取指定经纬度位置或者某一个城市的天气信息。
如果是根据经纬度查询天气信息,需要对精度为进行转换,例如lat值为31.174165,需要过滤掉小数点,变为31174165传到接口中,维度也一样处理,处理后传给/ig/api?weather=,,,31174165,121433841既可以获取数据。
这里要注意一个问题,如果大家获取的经纬度序列很长,直接去掉小数点,有时候也无法获取天气信息,例如40.478224838152528,124.97828006744385,去掉小数点后,传到参数位置,无法获取值,需要大家将经纬度按下面方式转换一下,只取小数点后6位就可以了。
int latI = (int) (lat * 1E6);int lonI = (int) (lon * 1E6);下面的例子演示了根据输入城市,获取该城市的天气预报,Weather.java的61行,是根据经纬度获取天气信息。
工程结构:Weather.java类package com.AndroidWeather;import java.io.InputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils;import org.w3c.dom.Document;import org.w3c.dom.NodeList;import org.xml.sax.InputSource;import android.app.Activity;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.TextView;public class Weather extends Activity {public EditText ETplace;public TextView TvPlace;public Button query;public TextView placeName;public ImageView imView;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main1);ETplace = (EditText) findViewById(R.id.place);query = (Button) findViewById(R.id.query);imView = (ImageView) findViewById(R.id.myImageView);placeName = (TextView) findViewById(Place);query.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) {try {TvPlace = (TextView) findViewById(Place); // String place = ETplace.getText().toString();String place =CntoSpell.getFullSpell(ETplace.getText().toString());placeName.setText(place);String weather = "";// String url = "/ig/api?&weather=" // + place;String url ="/ig/api?weather=,,,31174165,121433841";DefaultHttpClient client = new DefaultHttpClient();HttpUriRequest req = new HttpGet(url);HttpResponse resp = client.execute(req);// String strResult =// EntityUtils.toString(resp.getEntity());// Log.i("weather->", strResult);// 一华氏度等于9/5摄氏度数值+32HttpEntity ent = resp.getEntity();InputStream stream = ent.getContent();DocumentBuilder b =DocumentBuilderFactory.newInstance().newDocumentBuilder();Document d = b.parse(new InputSource(stream));NodeList n =d.getElementsByTagName("forecast_conditions");// 获得图片url 当天的。
基于Android平台的天气预报系统设计
基于Android平台的天气预报系统设计基于Android平台的天气预报系统设计一、引言随着移动互联网的快速发展,人们对于天气预报的需求也越来越高。
天气预报系统成为了人们日常生活中不可或缺的一部分,通过天气预报系统,人们可以方便地获取准确的天气信息,从而做好相应的准备。
近年来,基于Android平台的天气预报系统开始受到人们的关注和使用。
本文旨在探讨基于Android平台的天气预报系统的设计。
二、系统需求分析1.功能需求(1)实时天气查询:用户可以根据所在位置或者指定地点查询实时天气情况;(2)未来天气预测:用户可以查看未来一周内的天气预测,包括温度、湿度、风力等信息;(3)城市切换:用户可以切换不同城市的天气信息;(4)气象预警:系统可以及时推送气象预警信息给用户,以便用户做好相应的应对措施;(5)天气统计:系统可以对历史天气数据进行统计分析,提供数据可视化展示。
2.性能需求(1)响应时间:系统应能够及时响应用户的查询请求,并在短时间内返回准确的结果;(2)稳定性:系统应具备稳定的运行性能,能够长时间运行而不产生崩溃等故障;(3)界面友好:系统的界面设计应符合用户的使用习惯,易于操作;(4)数据准确性:系统提供的天气数据应准确可靠,能够及时更新。
三、系统设计1.前端设计(1)用户界面:系统提供一个简洁、直观的用户界面,采用现代化的UI设计风格,用户可以通过界面进行各种操作;(2)实时天气查询:在主界面上提供实时天气查询功能,用户可以输入所在位置或者选择城市进行查询;(3)未来天气预测:用户在查询完实时天气后,可滑动屏幕或点击按钮查看未来一周内的天气预测;(4)城市切换:用户可以在设置中切换不同城市,系统会根据城市来更新天气数据;(5)气象预警:系统可在主界面上以弹窗或通知的形式提醒用户气象预警信息;(6)天气统计:用户可以在设置中查看历史天气数据的统计信息(如最高温度、最低温度、降雨量等),系统通过图表等方式展示数据。
安卓天气预报查询app实验报告
课程设计报告课程名称: 移动平台开发设计题目:天气预报院系:计算机科学与工程学院专业:计算机科学与技术班级:学号:姓名:指导教师:孙霞设计地点: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)。
手机安卓开发设计报告-天气预报APP
手机安卓开发设计报告-天气预报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平台上的技术和工具,开发出一款可以及时准确显示天气信息的应用程序。
随着智能手机的普及和移动设备的不断更新换代,天气预测应用也成为了人们生活中必不可少的一部分。
本文将从Android技术的角度出发,从需求分析、功能设计、界面设计和技术实现等方面,对天气预测应用进行浅析。
一、需求分析需求分析是软件开发的第一步,通过需求分析可以帮助开发人员更好地了解用户需求,从而指导产品的设计和实现。
在天气预测应用的需求分析中,我们需要考虑以下几个方面:1.实现的功能:天气预测应用需要实现的基本功能是获取用户所在位置的天气信息,并在界面上展示出来。
进一步地,我们还可以考虑增加预报未来一周的天气、空气质量等功能,以提升用户体验。
2.用户需求和使用场景:用户在使用天气预测应用时,主要是为了了解当日和未来几天的天气情况,在做出相关的决策。
因此,我们可以根据用户需求,设计出简洁明了的界面,将关键信息展示在醒目的位置,方便用户查看和使用。
同时,我们也要考虑到用户在不同场景下使用的情况,比如在室内和室外、白天和晚上等不同环境下的使用情况。
3.技术实现:天气预测应用需要通过调用天气API来获取天气信息,同时也需要使用一些开源库和框架来完成一些需要的功能,比如定位、动态权限申请、网络请求等。
二、功能设计在进行功能设计时,我们需要根据需求分析的结果,设定合理的功能和实现方式。
针对天气预测应用,我们可以考虑以下几个功能:1.获取位置信息:首先,我们需要获取用户所在位置的信息,才能够获取到对应的天气信息。
这个功能可以通过调用Android系统提供的LocationManager服务实现。
同时,也要考虑到用户拒绝或授予定位权限不同的情况下的处理。
2.获取天气信息:获取天气信息需要调用天气API,获取到的数据包括天气情况、温度、湿度、风力等信息。
这个功能可以通过Retrofit框架进行实现,同时也需要根据API的使用文档和返回数据格式进行相关的数据解析与处理。
安卓天气预报报告
安卓天气预报报告基于Android平台的天气预报系统的设计与开发目录1.前言...............................................................1.1 系统开发的目的 ..............................................1.2 项目需求分析 ................................................ .天气预报程序设计 (2)2.1 Android的UI界面的实现.......................................2.2欢迎界面的实现................................................2.3 主界面功能实现 ...............................................2.4数据存储......................................................3.结束语.............................................................?1.前言1.1 系统开发的目的由于智能手机的快速普及~智能操作系统在手机市场占据了很大一部分~其中以Andriod和iOS最为流行。
为了让智能手机用户能够随时随地查询互联网所提供的信息~一种非常高效的方法就是将网络系统的功能扩展到智能手机终端上~让手机能够通过移动网络访问Web网站并处理各种各样的业务。
由于在大学学习过java语言~并且Andriod系统是基于java语言开发的~因此想开发一套基于Andriod平台的3G手机气象软件~并从网上获取天气预报信息。
Android平台的天气预报软件的开发可以进一步扩大气象信息的覆盖面~让广大Android手机用户能够在第一时间获取最新的天气预报信息~以便提前预防~方便出行。
基于Android的手机天气预报系统
基于Android的手机天气预报系统合肥学院2013届毕业论文(设计)论文(设计)题目基于Android的手机天气预报系统院系名称计算机科学与技术系专业(班级)计算机科学与技术2009级本科3班姓名(学号)丁同飞(0904013004)指导教师屠菁系负责人袁暋完成时间2013-06-02基于Android的手机天气预报系统中文摘要天气预报为人们了解天气状况和出行安排带来了方便,但是,大多数天气预报软件都是基于PC端,查询起来并不是很便捷。
而随着智能手机的普及和3G技术的发展,手机端实现天气查询成为了可能,因此,实现手机端的天气预报系统成为了人们迫切需要且切实可行的需求。
本设计使用Android设计技术开发了一种运用在Android系统上的手机天气预报软件系统,本系统通过选择城市来获得天气,风向,温度等信息。
基于手机的天气预报系统软件可以使用户对于各地的天气情况的实时掌握,极大的方便了用户的出行和行程安排,避免了不必要的麻烦,具有很强的实用性。
本论文首先进行了项目的背景介绍,开发的目的及意义,接着进行系统分析(包括需求分析、研究目标和内容),接着分析了Android系统的框架,然后介绍了本系统的用到的技术以及平台的搭建,最后论述了本系统的详细设计(包括功能模块设计、数据库设计等),接着进行了项目的测试用例分析,最后给出了结论以及展望。
关键词:天气预报;Android;linux内核Based on the Android of mobile phone weather forecast systemABSTRACTWeather Forecast for people to understand weather conditions and travel arrangements to bring the convenience, however, most weather forecasts are based on the PC side software, check it is not very convenient. With the popularity of smart phones and 3G technology, mobile client queries become possible to achieve weather, therefore, realize the phone side of weather forecasting system has become an urgent need for people with practical needs.This design uses design techniques developed an Android application in the Android system mobile weather software system, the system by selecting the city to get weather, wind direction, temperature and other information. Phone-based weather forecasting system software allows users around the weather conditions for real-time control, which greatly facilitates the user's travel and travel arrangements, to avoid unnecessary trouble, and highly practical.This paper first introduces the background for the project, the development of purpose and meaning, followed by systems analysis (including needs analysis, research objectives and content), and then analyzes the framework of the Android system, then introduces the technology used in this system as well as platform structures, and finally discusses the detailed design of the system (including functional module design, database design, etc.), followed by analysis of the project's test cases, and finally gives the conclusion and outlook.Keyword: android;the Linux kernel;the weather forecast目录中文摘要 ...................................................................... ABSTRACT (I)目录 .................................................................... I I 第一章绪论 01.1引言 01.2系统开发的背景介绍 01.3系统开发的目的 (1)1.4项目开发的意义 (1)第二章系统分析 (2)2.1研究目标 (2)2.2需求分析 (2)2.3系统研究内容 (3)2.4项目需求分析 (3)第三章系统架构分析 (4)3.1 Android系统的特点 (4)3.2 Android的功能 (4)3.3 Android架构 (5)3.3.1 Linux Kernel (6)3.3.2 Android Runtime (6)3.3.3 Library (7)3.3.4 Application Framework (7)3.3.5 Application (7)3.4系统组件 (8)3.4.1 Activity (8)3.4.2 Service (8)3.4.3 BroadcastReceiver (9)3.4.4 Content Provider (9)第四章系统开发及其相关技术 (10)4.1 Android开发环境介绍 (10)4.2 Android开发平台搭建 (10)4.3 SQlite (11)4.3.1 SQlite简介 (11)4.3.2 SQlite特性 (11)4.3.3 SQlite功能 (12)4.3.4 SQlite类型 (12)第五章系统的设计与实现 (13)5.1技术支持 (13)5.2数据库的设计 (14)5.3主要模块 (16)5.3.1项目功能界面 (16)5.3.2项目框架 (17)5.4主要代码解析 (18)第六章系统测试与运行 (28)6.1系统功能界面 (28)结论 (32)参考文献 (33)致谢 (34)第一章绪论1.1引言手机是已经成为了生活中不可少的通信设备,没有手机有时会让人觉得寸步难行,手机将脱离传统的打电话,发短信等基本功能,而基于智能手机的处理能力和可扩展能力,基于3G网络高速数据传输,越来越多的功能和业务将被开发出来并大规模的应用。
基于Android系统的手机天气预报软件毕业设计(论文)
本科生毕业设计论文基于Android系统的手机天气预报软件摘要随着智能手机的快速普及,智能手机操作系统市场风生水起。
为了让智能手机用户能够随时随地查询互联网所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网以及互联网访问Web网站并处理各种各样的业务。
因此,智能手机的应用软件及其需要的服务将有广阔的发展前景。
在如今这个智能手机系统群雄纷争的时候,2008年Google推出了一款名为Android的开源智能手机操作系统,它采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。
这款软件包括了操作系统、用户界面和应用程序,即智能手机工作所需要的全部软件。
Android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。
因此,对于软件从业人员来说,Android平台具有无限的吸引力。
本文就在分析讨论Android手机软件开发技术原理的基础上,开发出能为用户提供更好的基于Android平台的3G手机气象软件。
关键词:Android 手机天气预报软件系统Based on the Android system of mobile phone weatherforecasting softwareAbstractWith intelligent the rapid spread of the mobile phone, intelligent mobile phone operating system market wind. In order to make intelligent mobile phone users to anytime inquires the services provided by the Internet, a highly efficient way is the function of the application system will be expanded to the mobile phone terminal, keep the cell phone and Internet access to YiDongWang through Web site and to handle all sorts of business. Therefore, smartphone applications software and its need to service will have broad development prospects.Now in the smart phone system at the strife in 2008, Google launched a new Android smart phone called the open source operating system, it USES Linux kernel, open mobile phone alliance (OHA) members can use any and modify SDK bag, the system of open source sex make its have the expansion of good sex. This software, including the operating system, the user interface and application, namely intelligent mobile phones need all the software. Android is the biggest characteristic of the open architecture, not only has the very good development, debugging environment, but also support various scalable user experience, including rich graphics components, multimedia support functions and strong browser. So, for software professionals for, Android platform with an infinite appeal.In this paper the analysis about Android mobile phone software development based on the principle of technology, to develop a user can provide better based on the Android platform 3 G mobile phone weather software.Keywords: Android mobile phone weather forecasting software system第一章绪论 (5)1.1 研究内容 (5)1.2 研究意义 (5)1.3 研究现状和发展趋势 (5)第二章系统分析 (7)2.1 研究目标 (7)2.2 需求分析 (7)2.3 性能分析 (7)2.4 系统研究内容 (7)2.5 项目需求分析 (8)2.6 系统构架图 (8)第三章系统开发环境及相关技术 (10)3.1 Android开发环境介绍 (10)3.2 Android开发平台搭建 (10)3.3 Android应用程序设计原理 (11)第四章 Google android移动平台的相关理论 (13)4.1 Goolge android 移动平台的概述 (13)4.1.1 Android系统的特点: (13)4.1.2 Android的功能: (13)4.2 Google android移动平台开发过程研究 (14)4.3 Google android移动平台下的应用研究 (15)4.4 小结 (15)第五章 android手机天气预报系统程序设计 (17)5.1 用户界面设计 (17)5.2 天气实况预报系统的具体实现 (18)5.2.1 Android平台的用户界面实现................................... 错误!未定义书签。
基于android的天气预报系统实践主题内容
基于android的天气预报系统实践主题内容基于Android的天气预报系统实践简介•介绍天气预报系统的重要性•说明本文将针对Android平台开发天气预报系统的实践实践目标•确定开发目标:提供实时天气数据、精准预报功能•设计用户界面:简洁、易用的界面设计,展示天气信息•选择数据源:检索可靠的天气数据API,获取天气数据•选取技术方案:选择合适的Android开发工具和框架•开发与测试:按照需求实现功能,并进行测试和调试•发布部署:发布可用的天气预报应用版本步骤1.确定开发目标–分析用户需求,了解用户对天气预报功能的期望–确定要提供的天气信息包括:温度、湿度、天气状况、风力等2.设计用户界面–列出主要的界面元素:温度显示、天气图标、预报信息等–设计简洁明了的用户界面,方便用户查看天气信息3.选择数据源–搜索可靠的天气数据API,查看其提供的数据类型和更新频率–筛选出适合项目需求的API,确保数据的准确性和稳定性4.选取技术方案–选择合适的Android开发工具,如Android Studio–考虑使用第三方开源框架,加速开发进程,提升系统性能5.开发与测试–根据设计的界面,实现Android应用的前端与后端功能–对应用进行测试和调试,确保功能正常运行6.发布部署–根据Android应用发布规范,准备应用的发布版本–将应用上架到应用商店或通过其他途径发布,使用户可以下载和使用总结•总结本文主要介绍了基于Android的天气预报系统的实践过程•强调重要步骤:确定开发目标、设计用户界面、选择数据源、选取技术方案、开发与测试、发布部署•鼓励读者通过实践,深入了解Android应用开发的相关知识,并为用户提供功能实用的天气预报应用。
基于Android的天气预报系统实践简介天气预报系统在我们日常生活中扮演着重要角色,帮助我们合理安排活动和出行。
基于Android平台的天气预报系统可以方便用户随时获取天气信息,提供实时的预报功能。
基于Android天气预报查询系统研究
基于Android天气预报查询系统研究摘要:随着智能终端发展的越来越快,用户数量与日俱增,加上人们对生活质量的要求也越来越高,基于Android操作系统的APP软件需求也在不断增加,移动终端上的查询系统的应用迎来了一个崭新的时代,手机的普及、功能的日益强大以及互联网的迅猛发展为基于手机系统开发天气预报查询软件提供了可能,本文介绍了基于Android的平台而开发的一个天气预报查询软件。
使用户方便对各地的天气情况的实时掌握,极大的方便了用户的行程安排或其他情况,避免了不必要的麻烦,且界面美观,操作简单,具有很强的实用性。
关键词:智能终端;Android;天气预报引言智能手机诞生26年,据外媒报道,美国媒体机构Zenith发布的最新研究报告预测,在2018年,全球智能手机用户数量将会继续增长。
其中,中国智能手机用户数量将位居全球第一,达到13亿。
基本人手一部了。
与其他深入日常生活的科技一样,在未来的几十年内,手机是不会轻易消失的。
用户对APP软件的需求也在不断增加。
智能手机具有独立的操作系统,像个人电脑一样支持用户自行安装软件、游戏等第三方服务商提供的程序。
目前智能手机等电子设备常用的操作系统是Android,它是以linux为内核的操作系统。
也是开发一些应用软件常用的软件平台。
对于我们绝大多数人来说,天气状况是和我们日常生活联系十分紧密的一项因素,因此及时地掌握未来的天气情况,对我们的生活是十分有帮助的,一款非常实用的天气预报查询软件的开发就非常有必要。
1.需求分析天气预报和每一个人息息相关,关系到每一个人的衣食住行。
智能手机及移动互联网的快速发展为我们充分利用碎片化时间提供了方便。
它能够为你准确地预报最近几天的天气以及气温状况,让你能够及时地获知气温变化的情况,根据温度和天气来增减衣物调整出行的情况,避免生病以及各种麻烦,非常好用。
十分轻便简单的一款小应用,也不会占用你太多的空间。
只要您的手机连接到网络上,轻轻点击几下手指,就能快速查询到全国各地和全世界各大城市的天气预报。
Android手机天气预报项目报告
开发目标现有的3 G技术和移动互联网技术的快速发展,智能手机功能的不断增强,让基于An droid平台的查询需求越来越多。
本软件就是利用现有的网络快速获取网络上的天气信息并显示到手机终端上,为用户提供实时的天气查询和近期天气查询服务,为工作、出行等带来便利。
通过Web Service等技术让用户体验到前所未有的移动计算。
第2章项目设计项目总体设计本软件是一个App Widget应用程序,启动程序后可以进行城市、更新频率的设置,可以通过图片和文字显示当前和未来的天气状况,包括温度、湿度、风向和雨雪情况等。
这些天气数据是通过后台服务获取的,这个后台服务可以按照一定的时间间隔,通过Google提供的服务获取天气预报信息,并将天气信息保存在数据库中。
该软件的基本功能需求有:(1)启动App Widget应用程序;(2)设置界面:对要显示天气预报的城市及更新频率进行设置;(3)显示界面:通过文字和图片显示当前的天气情况,包括日期、时间、城市、最高温度、最低温度、当前温度等。
(4)详细界面:在显示出“显示界面”上所有信息的同时用列表的形式显示今后四天的天气情况。
技术框架设计开发环境An droid的上层应用程序是用Java语言开发的,一般情况下是基于Dalvik虚拟机的,所以Google公司推荐使用主流的Java集成开发环境Eclipse。
而用Java语言进行开发,需要用到SUN公司提供的Java SDK(其中包括JRE Java Run time En viro nment) 。
此外,An droid 的应用程序开发和Java开发有较大区别的,需要使用Google提供的An droid SDK。
同时,要在Eclipse上安装ADT为An droid开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级或下载的工具。
简言之,需要以下软件,才能搭建An droid开发环境,从而进行An droid 应用程序的开发。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android天气预报论文学院: 电子信息工程学院专业: 计算机应用学号: 11033801135学生姓名: 郎红指导教师: 黄炜日期: 2013年11月13一、项目背景现有的3G技术和移动互联网技术的快速发展,智能手机功能的不断增强,让基于Android平台的查询需求越来越多。
本软件就是利用现有的网络快速获取网络上的天气信息并显示到手机终端上,为用户提供实时的天气查询和近期天气查询服务,为工作、出行等带来便利。
通过Web Service等技术让用户体验到前所未有的移动计算。
二、需求分析(一)功能需求在这个综合示例中,有一个显示天气情况的用户界面,可以通过图片和文字显示当前和未来几天的天气状况,包括温度、湿度、风向和雨雪情况等。
这些天气数据是通过后台服务获取的,这个后台服务按照一定时间间隔,从搜索引擎上获取天气预报信息,并将天气信息保存在后台服务中。
示例还需要提供基于SMS短信的天气数据服务,其他手机用户可以向本示例所在的手机上发送SMS短信,在短信中包含特定的关键字,则可以将已有的天气情况通过SMS短信回复给用户。
最后,每个被发送的SMS短信都会被记录下来,用户可以浏览或删除这些记录信息。
(二)界面需求从上面的描述中可以基本了解软件的功能需求,但为了将需求分析过程变得简单明了,首先找出用户界面上需要显示的内容。
功能描述中有“显示天气情况的用户界面”和“用户可以浏览或删除这些记录信息”,除此以外,一般应用软件还应有显示配置信息的界面。
因此,本示例应该包含三个用户界面:显示天气预报的用户界面、显示已发送SMS短信的用户界面、浏览和设置配置信息的用户界面(三)内部功能从用户界面出发,分析隐藏在界面后面的内部功能,这些功能则是程序正常运行的基础(1)显示天气预报的用户界面;①获取搜索引擎的天气数据②保存天气数据信息(2)显示SMS短信的用户界面①根据关键字监视SMS短信②发送包含天气信息的SMS短信③将发送SMS短信的相关信息写入数据库(3)浏览和设置配置信息的用户界面①将用户设置的配置信息保存到数据库②启动时读取数据库中的配置信息③支持恢复缺省设置三、程序设计(一)用户界面设计根据需求中的用户界面分析,应用程序应包含三个主要的用户界面,每个用户界面的显示内容在“显示天气预报的用户界面”中,显示目标城市的当前的天气状况,包括城市名称、温度、湿度、风向、雨雪情况和获取数据时间等信息。
在界面的下方显示未来四天的天气状况,但仅包括温度和雨雪情况在“显示已发送SMS短信的用户界面”中,显示每个回复短信的时间、目标手机号码、城市名称、当天的天气状况和未来一天的天气状况在“浏览和设置配置信息的用户界面”中,显示希望获取天气预报的城市名称、获取数据的频率和短信监视的关键字,并允许用户设置是否提供短信服务,以及是否记录回复短信信息用户界面草图:(二)数据库设计本示例主要有两种数据需要存储配置信息:因为配置信息的数据量很小,从Android支持的存储方式上分析,可以保存在SharedPreference、文件或SQLite数据库中SMS短信服务信息: SMS短信服务信息是一个随着时间推移而不断增加的数据,属于文本信息,而且有固定的格式,因此适合使用SQLite数据库进行存储综合分析这两个需要存储的数据,选择SQLite数据库作为存储数据的方法(1)配置信息:配置信息中主要保存目标城市的名称,访问搜索引擎更新天气信息的频率,请求天气信息服务短信的关键字,以及是否提供短信服务和是否记录短信服务内容,配置信息的数据库表结构(2)SMS短信服务信息:SMS短信服务信息主要保存请求天气服务短信的发送者、短信内容、接收时间和回复信息的内容,SMS短信服务信息的数据库表结构(三)程序设计程序模块设计:从功能需求上分析,可以将整个应用程序划分为4个模块,分别是用户界面、后台服务、数据库适配器和短信监听器。
下图是模块结构图从模块结构图中不难看出,后台服务是整个应用程序的核心,主要包含数据获取子模块和短信服务子模块。
数据获取子模块负责周期性的从搜索引擎获取天气信息;短信服务子模块则负责处理接收到的服务请求短信,并发送包含天气信息的短信。
后台服务由用户界面通过Intent启动,启动后的后台服务可以在用户界面关闭后仍然保持运行状态,直到用户通过用户界面发送Intent停止服务,或系统因资源不足而强行关闭服务。
用户界面从后台服务获取天气信息,而没有直接通过网络访问搜索引擎的天气数据。
一方面是因为后台服务使用了工作线程,通过后台服务获取天气数据可以避免因网络通信不畅造成界面失去响应。
另一方面,在用户关闭界面后,后台服务仍然需要更新天气信息,以保证短信服务数据的准确性。
用户界面通过直接调用数据库适配器,向SQLite数据库中读写配置信息,或对SMS短信服务信息进行操作。
短信监听器是一个BroadcastReceiver,监视所有接收到的短信。
如果短信中包含用户自定义的关键字,短信监听器则会认为这条短信是天气服务请求短信,将短信的相关信息写入后台服务的短信服务队列。
如果用户在配置信息中选择无需提供短信服务,短信监听器仍然继续监听所有短信,只是后台服务不再允许将服务请求短信写入服务队列。
数据库适配器封装了所有对SQLite数据库操作的方法,用户界面和后台服务会调用它实现数据库操作。
四、项目功能描述(一)系统主要功能本软件要完成在android手机上实现天气的即时预报。
所涉及的功能有:1.启动程序后可以进行城市、更新频率的设置;2.可以通过图片和文字显示当前和未来的天气状况,包括温度、湿度、风向和雨雪情况等。
使用效果图实现与相应天气的结合。
3.这些天气数据是通过后台服务获取的,这个后台服务可以按照一定的时间间隔,通过搜索引擎提供的公共接口获取天气预报信息,并将天气信息保存在本地数据库中。
(二) 工程结构在程序开发阶段,首先确定“天气预报软件”的工程名称为WeatherDemo,包名称为edu.hrbeu.WeatherDemo。
然后根据程序模块设计的内容,建立WeatherDemo示例,WeatherDemo示例源代码的文件结构:为了使源代码文件的结构更加清晰,WeatherDemo示例设置了多个命名空间中,分别用来保存用户界面、数据库、后台服务、SMS短信和天气数据的源代码文件,WeatherDemo 示例的命名空间WeatherDemo示例将不同用途的源代码文件放置在不同的命名空间中。
WeatherDemo示例的文件用途说明Android资源文件保存在/res的子目录中。
/res/drawable目录中保存的是图像文件,/res/layout目录中保存的是布局文件,/res/values目录中保存的是用来定义字符串和颜色的文件,/res/xml目录保存的是XML格式的数据文件。
所有在程序开发阶段可以被调用的资源都保存在这些目录中,资源文件名称与用途:(三)数据库适配器数据库适配器是最底层的模块,主要用于封装用户界面和后台服务对SQLite数据库的操作。
数据库适配器的核心代码主要在DBAdapter.java文件中用户保存配置信息的类文件Config.javaConfig.java文件的全部代码如下:1 package edu.hrbeu.WeatherDemo.DB;23 public class Config {4 public static String CityName;5 public static String RefreshSpeed;6 public static String ProvideSmsService;7 public static String SaveSmsInfo;8 public static String KeyWord;910 public static void LoadDefaultConfig(){11 CityName = "New York";12 RefreshSpeed = "60";13 ProvideSmsService = "true";14 SaveSmsInfo = "true";15 KeyWord = "NY";16 }17 }从代码中不难看出,公有静态属性CityName、RefreshSpeed、ProvideSmsService、SaveSmsInfo和KeyWord,完全对应数据库中保存配置信息表的属性(参照表12.1)。
在程序启动后,保存在数据库中的城市名称、更新频率、是否提供短信服务、是否保存短信信息和关键字等内容,将被读取到这个Config类中,供其它模块做逻辑判断时使用。
代码第10行的LoadDefaultConfig()函数,保存了程序内置的配置参数此函数会在两个情况下被调用,用户主动选择“恢复缺省设置”;首次启动程序时,用来初始化保存配置参数的数据库,DBAdapter类与以往介绍过的数据库适配器类相似,都具有继承SQLiteOpenHelper的帮助类DBOpenHelper 。
DBOpenHelper在建立数据库时,同时建立两个数据库表,并对保存配置信息的表进行了初始化。
在DBAdapter类中,用户界面会调用SaveConfig()和LoadConfig(),从SQLite数据库中保存和读取配置信息。
保存配置信息时,SaveConfig()函数会将Config类中的公有静态属性写入数据库;反之,LoadConfig()会将数据库中的配置信息写入Config类中的公有静态属性。
另一个会调用DBAdapter类的是后台服务,即WeatherService类。
后台服务主要调用SaveOneSms(SimpleSms sms)、DeleteAllSms()和GetAllSms()函数,分别用来保存SMS短信记录、删除所有SMS数据记录和获取所有SMS数据记录。
在GetAllSms()函数中,调用了一个私有函数ToSimpleSms(Cursor cursor),用来将从数据库获取的数据转换为SimpleSms实例数组。
(四)短信监听器短信监听器本质上是BroadcastReceiver,用于监听Android系统所接收到的所有SMS 短消息,可以在应用程序关闭后仍然继续运行,核心代码在SmsReceiver.java文件中。
在介绍SmsReceiver类前,先说明用来保存SMS短信内容和相关信息的SimpleSms类。
android.telephony.SmsMessage是Android提供的短信类,但这里需要一个更精简、小巧的类,保存少量的信息,因此构造了SimpleSms类,仅用来保存短信的发送者、内容、接收时间和返回结果。