天气信息的请求短信存储界面。
①、根据关键字监听服务请求短信。
②、将加工好的信息通过SMS发送给请求者。
③、将请求信息和发送的SMS短信存储到数据库。
(3)、显示地图信息的界面。
①、可以进行地图显示并给自己定位。
②、显示对方的位置信息,并将对方的位置画的地图上。
③、通过点击对方位置获取对方近6天的天气情况
(4)、配置界面。
①、将用户设置的配置信息存储到数据库。
②、启动时读取数据库的配置信息。
③、恢复默认配置。
以上就是整个程序功能分析。
3.2、位置和天气模块功能设计
3.2.1、界面的详细设计
界面的主设计模式是使用Android的选项卡(TabHost),将各个界面嵌入到这个选项卡中。
* 第一个界面为天气预报界面,主要显示当天的详细天气信息,包括雨雪,温度,风力风向,日期,城市等信息,还需要大体显示未来5天的天气信息,包括日期,温度和雨雪情况以及显示此数据的更新日期。
* 第二个界面显示请求要发送天气信息的短信存储界面,在此界面中,我们需要显示请求人手机号码,请求信息,回复短信的内容,回复的时间。
* 第三个界面显示地图信息的界面,这个界面需要设置地图显示自己和对方的位置,还需要一个写入对方手机号的输入框和一个发送位置按钮。
* 第四个界面是配置界面,实现其他三个界面的配置,显示城市名称,是否提供短信服务,是否记录短信服务信息,短信服务关键字,保存设置和启动默认设置。界面的详细设计中以精简和准确显示为基本原则,界面设计的具体样式如图21-24所示:
所有的界面都必须有后台数据作为支持,下面进行应用程序的数据库设计。
3.2.2、数据库设计
本应用程序一共需要存储三种数据,天气数据,短信服务数据和配置信息数据,Android数据库配置主要以三种方式为主,Share Preference、文件和数据库SQlite,一般情况下配置信息使用Share Preference更好一些,但是短信服务信息是一个随着时间推移不断增加的数据,天气信息也是需要时刻进行网络交互并且需要更新的数据,所以天气数据信息和短信服务信息使用数据库设计,最终选择统一使用SQlite数据库进行数据存储设计。
配置信息需要存储城市名称,请求天气信息服务的关键字,是否保存天气服务短信数据,是否提供天气短信服务,所以配置信息的数据库表结构如表1:
表 1 配置信息存储数据结构表
属性 数据类型 说明 id Integer 自动增加的主键 City_name Text 城市名称 SMS_Service Text 是否提供短信服务,接收到请求短信时,是否恢复天气信息 SMS_info Text 是否存储短信信息,记录SMS短信与否 Key_word Text 短信服务关键字,过滤请求服务短信 SMS短信服务信息主要保存短信服务请求的发送者手机号码,发送的内容,恢复短信的时间以及回复的内容,SMS短信服务信息结构如表2:
表 2短信存储数据结构表
属性 数据类型 说明 id Integer 自动增加的主键 Sender Text 请求服务短信的发送人的电话号码 Body Text 请求短信的内容 Receive_time Text 请求短信接收到的时间 Return_result Text SMS回复短信发送的内容,需要的天气信息 天气数据信息主要包括当前以及未来六天的日期,天气雨雪情况,温度,湿度,城市信息,风力风向,星期几和网络天气位图信息,天气数据信息结构如下表3:
表 3 天气情况数据存储结构表
属性 数据类型 说明 id Integer 自动增加的主键 Date Text 日期 Weather Text 网络获取的天气信息,雨、雪、雾等情况 Temperature Text 温度信息 Imagetitle Text 天气标志信息 City Text 城市信息 Wind Text 风力风向信息 Dayofweek Text 星期 Icon Text 天气图片信息 以上是本应用程序设计主要使用的三张数据库表,下来介绍整个程序模块之间的关系。
3.2.3、应用程序的总体设计
从功能上可以将整个应用程序划分为五个模块,配置信息模块,用户界面模块,数据库适配器模块,短信监听器模块和地理位置信息模块。配置信息模块用来存储配置信息,监听配置信息改变等;用户界面模块用来显示处理用户界面需要的数据;数据库适配器模块用来存储数据,为其他模块提供需要的数据;短信监听器模块用来监听短信,并过滤短信,区分到底是一般短信、天气短信还是位置短信;地理位置模块用来显示自己的位置信息,并在对方允许的情况下显示对方的位置信息。这些模块相互之间都有内在联系,每一个模块必须在其他模块的配合下才可以完成工作,各个模块之间的关系可以用图25表示。
从模块结构图中不难看出后台服务是整个设计的核心,后台服务主要包括数据获取模块和短信发送模块。其中数据获取模块负责周期性的从网络中获取天气信息,并将之存储到数据库中。短信模块由短信监听器模块和短信发送模块两大块实现,短信监听器监听到短信,并将数据发送到后台服务,后台服务完成存储和回复短信功能。界面的更新全部由后台服务进行控制,所有需要的数据由后台服务从数据库中进行读取并将之反馈给界面,这样设计的好处在于,如果网络情况不是很好,界面不会因为网络交互而失去响应,在界面关闭后,后台服务仍可继续更新数据库中的天气信息,以便于获取最新的天气信息,用户界面和数据库有直接联系的界面是配置界面和短信服务显示界面,系统配置界面可以直接对数据库进行读写,其他的界面都必须经由后台服务。
短信监听器是一个BroadcastReceiver,监听收到的短信,如果短息中包含我们事先设置好的关键字,短信监听器就会认为这是我们需要处理的短信,就会向后台服务发送请求,后台服务收到请求后就将短信发送出去,当然如果配置信息中没有选择提供短信服务,这短信监听器就不会向后台服务发送任何请求。
第四章 天气功能模块的实现
天气数据来自中国气象局,这里需要解析这些数据,处理数据以及显示数据,现在先来看看能获取什么数据。
4.1、存储数据模块sqlite数据库
sqlite是一个轻量级的数据库,它不能存储图片之类的信息,这里存储的数据以text格式为主。Android SDK中包含了关于SQlite的管理类,这些类基本都存在于Android.database.sqlite包中,在这个包中可以发现很多应用,比如管理数据库版本信息,创建数据库,创建数据库表,删除数据库等等,可以迅速的实现数据库的增删查改功能,本文程序主要使用sqlite数据库进行应用程序配置信息,天气数据和短信数据的存储,修改以及删除功能,
4.1.1、sqlite数据库的创建
本应用程序需要创建三张表,这里以天气数据库表的创建过程为例,短信和配置信息表的创建过程类同。数据库的创建主要是通过server语句进行的,下边是创建天气数据库表的server语句:
private static final String DB_CTEATE_WEATHER="create table "+
DB_TABLE_WEATHWE+"("+KEY_ID+" integer primary key autoincrement,"+KEY_WEATHER+" text,"+KEY_TEMPERATURE+" text,"+KEY_IMAGETITLE+" text,"+KEY_CITY+" text,"+KEY_WIND+" text,"+KEY_WEEK+" text,"+KEY_IMAGE+" text,"+KEY_DATE+" text"+");";
在这个语句中看到了天气数据库表所需要的所有列信息,它们都是以create table语句作为起始语句,然后接数据库表名称,括号中是天气数据库的数据,有id,当前时间信息,天气情况,温度,湿度,城市信息,风力风向,星期和转换成数据流的图片。
4.1.2、数据的存储
天气数据库表一共建立了4个方法,第一个是天气数据存储方法,叫saveWeather()这里需要一个ContentValues对象,这个对象可以理解为
上一篇:
基于Android的多功能视频播放器的系统设计
下一篇:
面向android系统的测试工具_毕业论文