基于Android平台的天气预报短信服务系统-课程设计

合集下载

安卓天气项目课程设计

安卓天气项目课程设计

安卓天气项目课程设计一、课程目标知识目标:1. 学生能理解并掌握安卓应用开发的基本知识,包括界面设计、数据存储和异步任务。

2. 学生能够运用所学知识,实现一个功能完整的天气查询应用。

3. 学生理解并掌握JSON数据的解析方法,能够将其应用于天气信息的获取。

技能目标:1. 学生通过动手实践,提升编程能力,能够独立完成安卓应用的界面搭建和逻辑编写。

2. 学生通过项目实践,掌握在安卓应用中调用第三方API的方法,提高解决实际问题的能力。

3. 学生通过团队合作,提升沟通协调能力和项目协作能力。

情感态度价值观目标:1. 学生培养对编程的兴趣和热情,增强对信息技术的认同感。

2. 学生通过解决实际问题,体验科技带来的便利,培养创新意识和实践精神。

3. 学生在团队合作中,学会尊重他人,培养责任感和集体荣誉感。

课程性质:本课程为实践性课程,以项目为导向,结合课本知识,让学生在动手实践中掌握安卓应用开发技能。

学生特点:学生为高年级学生,具备一定的编程基础,思维活跃,喜欢挑战性任务。

教学要求:教师需关注学生的个体差异,提供个性化指导,确保学生在项目实践中掌握课程知识,实现学习目标。

通过项目评估,检验学生的学习成果。

二、教学内容1. 安卓应用开发基础- 界面设计:Activity生命周期,布局管理器(如LinearLayout, RelativeLayout),常用控件(如Button, TextView)的使用。

- 数据存储:SharedPreferences和SQLite数据库的使用。

- 异步任务:AsyncTask的使用,网络请求(如使用HttpURLConnection或Volley)。

2. 第三方API调用- 了解HTTP协议,掌握GET请求的使用。

- JSON数据格式解析:使用JSONObject和JSONArray处理数据。

3. 天气应用项目实践- 界面设计:搭建天气查询主界面,显示天气信息的列表界面。

- 数据获取:调用天气API,获取实时天气数据。

《2024年基于AndroidStudio的天气预报APP设计与实现》范文

《2024年基于AndroidStudio的天气预报APP设计与实现》范文

《基于AndroidStudio的天气预报APP设计与实现》篇一一、引言随着移动互联网的快速发展,天气预报APP已经成为人们日常生活中不可或缺的一部分。

基于AndroidStudio的天气预报APP 设计与实现,不仅能够满足用户对于天气信息的即时需求,还能提供个性化的服务,提高用户体验。

本文将详细介绍基于AndroidStudio的天气预报APP的设计与实现过程。

二、需求分析在进行APP设计之前,首先需要对用户需求进行深入的分析。

天气预报APP的主要功能包括实时天气查询、未来天气预报、气象预警、生活指数查询等。

用户群体涵盖广泛,包括但不限于普通市民、户外活动爱好者、农业从业人员等。

在需求分析阶段,要充分考虑不同用户群体的需求特点,确保APP的功能满足用户的实际需求。

三、设计思路1. 界面设计:界面设计应遵循简洁、易用、美观的原则。

采用直观的布局,使用户能够快速找到所需功能。

同时,要考虑不同分辨率和屏幕尺寸的设备,确保兼容性。

2. 功能模块:根据需求分析,将APP划分为多个功能模块,如实时天气查询模块、未来天气预报模块、气象预警模块、生活指数查询模块等。

每个模块都有独立的功能,同时又相互关联,形成一个完整的系统。

3. 数据获取:APP通过与第三方天气数据服务商合作,获取实时和未来的天气数据。

数据应实时更新,确保信息的准确性。

四、实现过程1. 开发环境搭建:安装AndroidStudio开发环境,配置必要的开发工具和SDK。

2. 界面开发:使用XML语言进行界面布局设计,通过Java 或Kotlin语言实现界面逻辑。

3. 功能实现:根据设计思路,逐步实现各个功能模块。

例如,实时天气查询模块通过调用第三方API获取天气数据,并在界面上展示;未来天气预报模块通过算法对天气数据进行处理和预测,为用户提供未来一段时间的天气预报。

4. 数据交互:实现APP与第三方天气数据服务商的数据交互,确保数据的实时性和准确性。

基于Android平台的天气预报系统设计

基于Android平台的天气预报系统设计

基于Android平台的天气预报系统设计基于Android平台的天气预报系统设计天气预报是人们日常生活中不可或缺的信息之一,无论是为了出行还是安排活动,对天气情况的了解都有着重大的意义。

为了满足用户对天气预报的需求,本文将基于Android平台设计一款天气预报系统。

一、系统需求分析1. 用户需求用户对天气预报系统的主要需求包括实时天气信息、七天内的天气预报、城市切换等功能,并能够提供准确、可靠的天气数据。

2. 数据需求系统需要从可靠的天气数据源获取相关天气数据,包括温度、湿度、风力、风向等信息,并需要支持多个城市的数据查询。

3. 功能需求系统需要提供以下功能:(1)实时天气信息展示:根据用户选择的城市,显示当前城市的实时天气信息,包括温度、湿度、天气状况等。

(2)天气预报:显示未来七天内的天气预报,包括每天的温度范围、天气状况等。

(3)城市切换:支持用户根据需求切换城市,以获取不同城市的天气预报。

(4)数据更新:系统需要能够自动定时更新天气数据,以保持数据的准确性。

二、系统设计1. 界面设计系统的主要界面包括实时天气信息展示界面和天气预报界面。

实时天气信息展示界面会显示当前城市的温度、湿度、天气状况等信息,以及一张相关的天气图片。

天气预报界面会显示未来七天内的天气情况,包括每天的温度范围、天气状况等。

2. 数据获取与处理系统需要通过网络请求从可靠的天气数据源获取相关天气数据。

获取到的数据可以通过JSON格式进行解析,并存储到系统数据库中,以便后续的展示和查询。

3. 功能实现(1)实时天气信息展示:系统会在主界面上显示当前城市的实时天气信息。

通过定时请求服务器接口,获取最新的天气数据,并更新到界面上。

(2)天气预报:在天气预报界面中,系统会显示未来七天内的天气预报。

利用已储存的数据,将七天内的天气数据一一展示出来,包括日期、温度范围、天气状况等。

(3)城市切换:用户可以通过系统提供的城市切换功能,选择不同的城市。

基于Android平台的天气预报软件设计_毕业设计

基于Android平台的天气预报软件设计_毕业设计

本科毕业论文(设计)题目基于Android平台的天气预报软件设计基于Android平台的天气预报软件设计摘要:Google于2008年推出了一款名为Android的开源智能手机操作系统,它采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。

Android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验。

因此,对于软件从业人员来说,Android平台具有无限的吸引力。

目前Android操作系统已经成为用户最多的智能操作系统。

本天气预报软件的设计,为Android终端用户提供一款方便的实时天气预报查询软件,为用户带来良好的用户体验及便利的对天气情况进行掌控。

本天气预报软件采用ViewFlipper组件,提供友好的界面滑动切换方式,同时减少系统运行时占用的空间。

使用Files方式保存天气信息,Shared Preferences保存用户偏好设置,节约了文件存储的空间。

本文就在分析讨论Android手机软件开发技术原理的基础上,利用Android中基本组件和常用设计模式,开发出能为用户提供更好的基于Android平台的手机天气预报软件。

关键字:Android;天气预报;智能手机平台Design of weather forecast software Based on the Android Abstract:Google in 2008 launched a product called the Android open source smart phone operating system, which uses the Linux kernel, Open Handset Alliance (OHA) members can be free to use and modify the SDK package, open source, it has good scalability of the system. The most important feature of Android is its open architecture, not only has a very good development and debugging environment, but also supports a variety of scalable user experience. Therefore, for software professionals, the Android platform has unlimited appeal. Android operating system has become the user the most intelligent operating system.The weather software designed for the Android end users to provide a convenient, real-time weather query software, to provide users with a good user experience and convenience of control of the weather conditions. The weather forecast software the ViewFlipper components, friendly interface sliding switch, while reducing the space occupied when the system is running. Files saved Weather Information, Shared Preferences to save user preferences settings, save the file storage space. This article on the basis of analysis and discussion of the Android mobile phone software development technical principles, using the basic components and common design patterns Android, developers can provide users with better mobile phone weather forecast software based on the Android platform.Keywords:Android;weather forecast;smart phone platform目录1系统概述 (1)1.1 研究内容 (1)1.2 研究意义 (1)1.3 研究现状和发展趋势 (1)2系统分析 (4)2.1 研究目标 (4)2.2 需求分析 (4)2.3 性能分析 (4)3程序设计 (6)3.1 用户界面设计 (6)3.2 程序模块设计 (9)4程序开发 (10)4.1 文件结构与用途 (10)4.2 数据存储 (13)4.2.1 Shared Preferences (13)4.2.2 Files (14)4.3 主要功能代码 (18)4.3.1 获取天气数据 (18)4.3.2 网络检查 (20)4.3.3 定时更新时间 (21)4.3.4 ViewFlipper手势监听 (21)4.3.5 城市管理中城市点击事件 (23)4.4 主要界面结构布局代码 (24)4.4.1 ViewFlipper框架结构 (25)4.4.2 城市管理界面 (25)4.4.3 生活指数 (26)4.4.4 城市简介 (27)5系统测试 (29)总结 (36)参考文献 (37)致谢 (1)1系统概述1.1 研究内容Android平台手机天气预报软件是基于Android手机平台,运用Java语言,应用/网站上提供的免费的webService接口获取天气预报信息,深入研究Android平台Activity、Service、Broadcast Receiver、Content Provider这四大组件及Android平台的程序运行机制,开发出针对使用Android平台的手机天气预报系统。

安卓天气通课程设计

安卓天气通课程设计

安卓天气通课程设计一、课程目标知识目标:1. 学生理解安卓应用开发的基本原理,掌握天气应用的相关知识。

2. 学生了解并掌握使用网络API获取实时天气信息的方法。

3. 学生掌握在安卓应用中使用SQLite数据库存储数据的技术。

技能目标:1. 学生能够运用所学知识,独立设计并开发一款简易的安卓天气应用。

2. 学生通过实践,提升问题解决能力和团队协作能力。

3. 学生学会使用各类开发工具,如Android Studio、SQLite等,并能够灵活运用。

情感态度价值观目标:1. 培养学生对编程和科技的兴趣,激发创新意识。

2. 培养学生面对困难勇于挑战、善于克服的良好品质。

3. 增强学生的环保意识,认识到实时关注天气变化对生活、学习的重要性。

本课程针对高年级学生,结合学科特点和教学要求,以实用性为导向,旨在提高学生的实践操作能力和创新思维。

课程内容紧密联系课本知识,确保学生在掌握基础知识的同时,能够学以致用,培养实际开发能力。

通过分解课程目标为具体的学习成果,有助于教师在教学设计和评估过程中,更好地关注学生的学习进度和成长。

二、教学内容1. 安卓应用开发基础:- Android Studio使用方法- 基本界面布局与控件使用- 事件处理与界面交互2. 网络编程与API调用:- HTTP协议基础- 网络请求库(如Retrofit、OkHttp)的使用- 天气API获取与解析3. 数据存储技术:- SQLite数据库基础操作- 数据库在安卓应用中的使用4. 天气应用设计与实现:- 界面设计及美观性优化- 功能模块划分与实现- 应用调试与优化教学内容安排与进度:第一周:安卓应用开发基础,学习Android Studio使用方法,界面布局与控件使用。

第二周:事件处理与界面交互,为天气应用设计界面原型。

第三周:网络编程与API调用,学习HTTP协议和天气API的使用。

第四周:数据存储技术,掌握SQLite数据库在安卓应用中的使用。

安卓开发天气课程设计

安卓开发天气课程设计

安卓开发天气课程设计一、课程目标知识目标:1. 掌握安卓开发中网络请求的使用,了解如何通过API获取天气数据;2. 学会使用JSON解析天气数据,提取所需信息;3. 熟悉安卓界面设计,掌握常用布局和控件的使用,实现天气信息的展示。

技能目标:1. 能够独立完成一个简单的天气查询APP,实现查询指定城市的天气功能;2. 培养学生解决实际问题的能力,将所学知识应用于实际项目中;3. 提高学生的编程能力和团队协作能力,通过项目实践,学会分工合作,共同完成任务。

情感态度价值观目标:1. 激发学生对编程的兴趣,培养学习热情,提高自主学习的积极性;2. 培养学生面对问题的积极态度,敢于挑战,勇于克服困难;3. 增强学生的环保意识,通过了解天气变化,关注气候变化,培养学生的社会责任感。

课程性质:本课程为实践性课程,旨在让学生通过实际操作,掌握安卓开发的基本技能,学会应用所学知识解决实际问题。

学生特点:学生具备一定的编程基础,对安卓开发有一定了解,但实际操作能力有待提高。

教学要求:注重实践操作,以学生为主体,教师引导学生主动探究,培养学生解决问题的能力。

在教学过程中,关注学生的个体差异,提供个性化指导。

通过课程学习,使学生在知识、技能和情感态度价值观方面均取得具体的学习成果。

二、教学内容1. 网络请求基础:讲解HTTP协议,介绍使用OkHttp库进行网络请求的方法,包括GET请求的使用和异常处理。

相关教材章节:第十章 网络编程,第三节 HTTP网络请求。

2. JSON解析:讲解JSON数据格式,学习使用Gson库进行JSON数据的解析,提取天气信息。

相关教材章节:第十章 网络编程,第四节 数据解析。

3. 界面设计:复习安卓常用布局(如LinearLayout、RelativeLayout等),控件(如TextView、ImageView等)的使用,设计天气展示界面。

相关教材章节:第六章 用户界面设计,第一、二节 布局与控件。

基于Android系统的天气预报APP设计

基于Android系统的天气预报APP设计1.引言近年来,随着智能手机用户数量的迅速增长,手机应用程序(APP)的开发步入了一个快速进步的阶段。

其中,天气预报APP因其好用性和广泛需求而成为了用户下载最多的APP之一。

为了满足用户对天气预报的需求,本文将设计一个基于Android系统的天气预报APP,旨在提供准确、好用、便利的天气预报功能,通过天气数据的得到和展示,援助用户合理打算平时生活和出行活动。

2.功能需求分析天气预报APP的核心功能是提供准确的天气预报信息。

除此之外,依据用户的需求和市场实际状况,我们还可以为APP添加以下功能:(1)实时天气展示:每日天气的展示包括天气预报的动态更新、实时温度、湿度、风向风力等指标的展示,同时可以提供天气现象的图标以及简易的天气状况文字描述。

(2)生活指数推送:依据天气状况,推送用户相关的生活指数,例如穿衣指数、运动指数、空气质量指数等。

(3)城市切换和定位:用户可以通过手动切换城市来得到其他城市的天气预报信息,同时也可以通过定位功能自动得到所在城市的天气预报。

(4)天气趋势猜测:通过历史天气数据的分析和猜测模型的建立,猜测将来数天的天气走势,提供给用户参考。

(5)天气预警信息:当遇到恶劣天气或气象灾难时,准时向用户发送天气预警信息。

(6)多语言支持:支持多国多语言,使宽广用户更加便利地使用APP。

3.系统架构设计(1)用户界面设计:接受简洁、直观的用户界面设计,使用户能够快速上手操作,同时思量到不同尺寸和区分率的Android设备,适配不同屏幕。

(2)数据得到和处理:通过与天气服务提供商合作,从全球范围内得到天气数据,包括天气现象、温度、湿度、风力风向等数据。

同时,对于历史数据的处理和分析,以及对将来天气的猜测,需要建立相应的算法模型。

(3)定位功能:利用手机的GPS功能进行定位,得到用户当前所在的城市信息,为用户提供准确的定位天气预报。

(4)后台服务:需要实现一个稳定的后台服务,负责数据的更新和推送,同时对于天气预警信息的接收和推送也可以通过后台服务实现。

基于Android的天气预报APP的设计与实现

基于Android的天气预报APP的设计与实现基于Android的天气预报APP的设计与实现一、引言如今,移动互联网的飞速发展使得人们获取信息的方式更为便捷。

天气预报是人们日常生活中特别关注的内容之一。

为了满足用户对天气信息实时性、准确性的需求,开发一款基于Android平台的天气预报APP显得尤为重要。

本文将围绕这一主题展开,介绍该APP的设计与实现过程。

二、需求分析为了更好地满足用户的需求,我们首先进行了需求分析。

通过问卷调查以及市场调研,我们发现用户对天气预报APP的需要主要包括以下几个方面:1. 实时更新的天气信息:用户希望能够随时获取最新的天气信息,包括温度、湿度、风力等。

2. 多地区选择:用户希望能够预测不同地区的天气情况,以便进行出行安排。

3. 友好的用户界面:用户界面应该简洁明了,操作方便,具有良好的用户体验。

4. 天气趋势分析:用户希望能够查看未来几天的天气情况,以便合理规划活动。

基于以上需求,我们着手设计和实现这款APP。

三、系统设计在设计阶段,我们首先进行了系统架构的设计。

整个系统分为前端和后端两部分。

1. 前端设计:前端主要负责用户交互和数据展示。

我们采用了Android Studio作为开发工具,使用Java进行编码。

主要包括城市选择、天气信息展示和天气趋势分析等功能。

2. 后端设计:后端主要负责数据的获取和处理。

我们使用了和风天气API作为天气数据的来源,通过其提供的接口获取实时的天气数据。

四、系统实现在系统实现阶段,我们按照系统设计的架构开始编码工作。

1. 城市选择:用户可以通过输入城市名称或定位功能选择所需查询的城市。

通过与和风天气API交互,获取该城市的天气数据。

2. 天气信息展示:将从后端获取到的天气数据进行解析,并在界面上展示出来。

包括当前的温度、湿度、风力等,以及一些天气建议等。

3. 天气趋势分析:通过和风天气API提供的未来几天的天气数据,我们可以将这些数据进行处理,并在界面上以图表等形式呈现出来,帮助用户更加直观地了解未来几天的天气情况。

基于Android的天气预报短信系统的毕业设计说明书

信息工程学院本科生毕业设计说明书题目:基于Android的天气短信系统的设计与实现姓名:丁柏林学号: 2011110262 专业:计算机科学与技术班级: 11计科2班指导教师:房爱东目录1 系统概述 (1)1.1 设计目的 (1)1.2 设计思路 (1)1.3系统需求分析 (1)1.4开发环境 (2)1.4.1 Android开发环境的介绍 (2)1.4.2 Android的开发平台搭建 (2)1.5 运行环境 (3)1.6 参考文献 (3)2.总体设计 (4)2.1系统结构 (4)2.1.1 系统流程图 (4)2.1.2 模块结构图 (4)2.2数据库的设计 (6)2.3 模块功能设计 (6)2.3.1 获取当前天气功能 (6)2.3.2 选择城市的功能 (6)2.3.3 发送短信的功能 (7)3.运行设计 (8)3.1用户界面设计 (8)3.2 运行代码 (10)4.系统测试 (28)4.1功能性测试 (28)4.2 稳定性测试 (30)4.3 安全性测试 (30)5 结论 (31)1 系统概述近几年来随着3G 技术成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。

在Google和Android 手机联盟的共同推动下,Android在众多移动应用开发平台中脱颖而出。

Android是一个真正意义上的开源智能手机操作系统,该系统一经推出立即受到全球移动设备厂商和开发者的热捧。

为顺应潮流,本设计旨在搭载 Android 的移动设备上运行,实现天气状况的实时动态更新与显示,并将显示的天气可以发短信给指定的联系人。

1.1 设计目的天气软件是一种非常实用的信息服务,随着智能手机的不断普及,各种智能手机平台下都有各种各样的天气软件。

Android作为现在主流的智能手机之一,自然也需要这方面的软件。

天气关系到人们的日常生活,如告知温暖,方便出行等。

此外,对未来天气的预测你还可以指定发短信给家里不会上网的父母,帮助父母进行农作物的浇灌、施肥、收割等工作。

基于安卓的天气预报毕业设计

基于安卓的天气预报毕业设计
摘要:
本篇毕业设计基于安卓平台,设计并实现了一款天气预报应用。

该应用可以提供当日和未来几天的天气信息,并能根据用户所在位置自动更新天气数据。

应用根据收集到的数据生成图标化的天气情况,并提供用户友好的界面与交互。

关键词:安卓平台、天气预报、应用、界面、交互
1. 引言
2. 系统设计
2.1 应用结构
本应用采用MVC(Model-View-Controller)设计模式,将业务逻辑、用户界面和数据分离。

Model层负责与天气数据源进行通讯和处理,同时提供数据给View和Controller 层。

View层负责界面展示,Controller层负责用户交互和数据控制。

2.2 数据获取与处理
应用通过访问相关天气预报API来获取实时天气和未来几天的预测信息。

API返回的数据经过处理和解析后,存储到本地数据库中。

2.3 用户界面设计
应用提供简洁、直观的用户界面,使用各种图标和颜色来展示天气情况。

用户可以通过滑动屏幕查看不同时间段的天气信息,也可以点击具体日期查看该日期的气象信息。

3. 实施与结果
3.1 技术选型
本应用使用Java语言进行开发,使用Android Studio作为开发环境。

应用的界面使用Android自带的UI组件和自定义View进行开发,数据库使用SQLite进行存储。

3.2 功能实现
应用实现了以下功能:天气数据获取与展示、定位功能、数据缓存、气象信息图表展示等。

应用在不同屏幕尺寸的设备上均可以正常运行,并具有较好的响应速度。

4. 总结与展望。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录1. 需求分析 (1)1.1 功能需求 (1)1.2 界面需求 (1)1.3 内部功能 (1)2. 程序设计 (3)2.1 用户界面设计 (3)2.2 数据库设计 (3)2.2.1配置信息 (3)2.2.2 SMS短信服务信息 (4)2.3 程序模块设计 (4)3. 程序开发 (5)3.1 文件结构与用途 (5)3.2 数据库适配器 (6)3.3 短信监听器 (10)3.4 后台服务 (12)3.4.1短信发送模块 (12)3.4.2数据库获取模块 (14)3.5 用户界面 (18)3.5.1 WeatherActivity (19)3.5.2 HistoryActivity (20)3.5.3 SetupActivity (24)3.5.4 GoogleMapActivity (26)4.总结 (35)5. 参考文献 (36)天气预报短信服务系统1.需求分析1.1 功能需求天气预报短信服务系统中,有一个显示天气情况的用户界面,可以通过图片和文字显示当前和未来几天的天气状况,包括温度、湿度、风向和雨雪情况等。

这些天气数据是通过后台服务获取的,这个后台服务可以按照一定时间间隔,从Yahoo上获取天气预报信息,并将天气信息保存在后台服务中。

系统还需要提供基于SMS短信的天气数据服务,其他手机用户可以向本示例所在的手机上发送SMS短信,并在短信中包含用户指定的关键字,则可以将保存在后台服务中的天气情况,再通过SMS短信回复给用户。

最后,每个被发送的SMS短信都要被记录下来,用户可以浏览或删除这些回复信息。

本系统还要显示地图,在地图上显示某地方的天气信息。

1.2 界面需求本示例包含三个主要的用户界面:(1)显示天气预报的用户界面;(2)显示已发送SMS短信的用户界面;(3)浏览和设置配置信息的用户界面;(4)Google地图,在地图上覆盖天气信息。

1.3 内部功能隐藏在用户界面后面的内部功能,是用户界面能够正确实现的基础,如下所述:(1)显示天气预报的用户界面;(2)获取Yahoo的天气数据;(3)显示SMS短信的用户界面;(4)根据关键字监视SMS短信;(5)发送包含天气信息的SMS短信;(6)将发送的SMS短信写入数据库;(7)浏览和设置配置信息的用户界面;(8)将用户设置的配置信息保存到数据库;(9)启动时读取数据库中的配置信息;(10)恢复缺省设置;(11)显示Google地图且覆盖天气信息的用户界面,写入获取的谷歌密钥。

2.程序设计2.1 用户界面设计详细分析应用程序中四个主要用户界面包含的显示内容,如下所述:(1)在“显示天气预报的用户界面”中,根据Yahoo可以提供的数据,在界面上可以显示当前的天气状况,包括城市名称、温度、雨雪情况和获取数据时间等信息;还可以显示未来一天的天气状况,仅包括温度和雨雪情况;(2)在“显示已发送SMS短信的用户界面”中,应显示每个回复短信的时间、目标手机号码、城市名称、当天的天气状况和未来一天的天气状况;(3)在“浏览和设置配置信息的用户界面”中,应显示获取天气预报的目标城市名称、获取数据的频率和短信的关键字,并允许用户设置是否提供短信服务以及是否记录回复的短信信息;(4)在“显示谷歌地图及在地图上覆盖天气信息界面”中,应显示Google地图,当用户点击地图上某城市时,会显示某城市信息及天气情况。

2.2 数据库设计本系统主要存储两种数据,详述如下:(1)配置信息:因为配置信息的数据量很小,从Android支持的存储方式上分析,可以保存在SharePreference、文件或SQLite数据库中;(2)SMS短信服务信息:SMS短信服务信息是一个随着时间推移而不断增加的数据,属于文本信息,且有固定的格式,因此适合使用SQLite数据库进行存储。

综合分析这两种需要存储的数据,选择SQLite数据库作为存储数据的方法2.2.1配置信息配置信息中主要保存天气信息查询的城市名称,访问Yahoo更新天气信息的频率,请求天气信息SMS短信的关键字,且是否提供短信服务和是否记录短信服务内容,其数据库表如下:2.2.2 SMS短信服务信息SMS短信服务信息主要保存请求服务短信的发送者、短信内容、接收时间和回复信息的内容,其数据库表如下:2.3 程序模块设计从功能需求上分析,可以将整个应用程序划分为4个模块,分别是用户界面、后台服务、数据库适配器和短信监听器。

1.由模块结构图中可知,后台服务是整个应用程序的核心,主要包含两个子模块,一个是“数据获取模块”,负责周期性的从Yahoo获取天气信息;另一个是“短信服务模块”,负责处理接收到的服务请求短信,并发送包含天气信息的短信2.后台服务由用户界面通过Intent启动,启动后的后台服务可以在用户界面关闭后仍然保持运行状态,直到用户通过用户界面发送Intent停止服务,或系统因资源不足而强行关闭服务3.用户界面从后台服务获取天气信息,而没有直接通过网络访问Google的天气数据(1)一方面是因为后台服务使用了工作线程,通过后台服务获取天气数据可以避免因网络通信不畅造成界面失去响应(2)另一方面,在用户关闭界面后,后台服务仍然需要更新天气信息,以保证短信服务数据的准确性。

用户界面还会调用数据库适配器,向SQLite数据库中写入、读取配置信息,或对SMS短信服务信息进行操作4.短信监听器是一个BroadcastReceiver,监视所有接收到的短信(1)如果短信中包含用户自定义的关键字,短信监听器则会认为这条短信是天气服务请求短信,将短信的相关信息写入后台服务的短信服务队列(2)如果用户在配置信息中选择无需提供短信服务,短信监听器仍然继续监听所有短信,只是后台服务不再允许将服务请求短信写入服务队列5.数据库适配器封装了所有对SQLite数据库操作的方法,用户界面和后台服务会调用它实现数据库操作。

3.程序开发3.1 文件结构与用途在程序开发阶段,首先确定“天气预报短信服务系统”的工程名称为MyWeather,包名称为edu.hrbeu.WeatherDemo,据程序模块设计的内容,建立WeatherDemo。

为了使源代码文件的结构更加清晰,WeatherDemo设置了多个命名空间,分别用来保存用户界面、数据库、后台服务、SMS短信和天气数据的源代码文件,命名空间的名称以及说明参考表3_1。

表3_1WeatherDemo的命名空间WeatherDemo示例将不同用途的源代码文件放置在不同的命名空间中,源代码文件的名称和用途可以参考表3_2。

Android的资源文件保存在/res的子目录中:(1)/res/drawable目录中保存的是图像文件(2)/res/layout目录中保存的是布局文件(3)/res/values目录中保存的是用来定义字符串和颜色的文件(4)/res/xml目录保存的是XML格式的数据文件所有在程序开发阶段可以被调用的资源都保存在这些目录中,具体每个资源文件的用途可以参考表3_3。

表3_3 资源文件名称与用途3.2 数据库适配器数据库适配器是最底层的模块,主要用于封装用户界面和后台服务对SQLite 数据库的操作,数据库适配器的核心代码主要在DBAdapter.java文件中,用户保存配置信息的类文件Config.java。

Config.java文件的全部代码如下package edu.hrbeu.WeatherDemo.DB;public class Config {public static String CityName;public static String RefreshSpeed;public static String ProvideSmsService;public static String SaveSmsInfo;public static String KeyWord;public static void LoadDefaultConfig() {CityName = "chaohu";RefreshSpeed = "20";ProvideSmsService = "true";SaveSmsInfo = "true";KeyWord = "HF";}从代码中不难看出,公有静态属性CityName、RefreshSpeed、ProvideSmsService、SaveSmsInfo和KeyWord,完全对应数据库中保存配置信息表的属性。

在程序启动后,保存在数据库中的城市名称、更新频率、是否提供短信服务、是否保存短信信息和关键字等内容,将被写入这个Config类中,供其他模块在做逻辑判断LoadDefaultConfig()函数保存了程序内置的配置参数,此函数会在两个情况下被调用(1)用户主动选择“恢复缺省设置”(2)首次启动程序时,用来初始化保存配置参数的数据库DBAdapter类与以往介绍过的数据库适配器类相似,都具有继承SQLiteOpenHelper的帮助类DBOpenHelper 。

DBOpenHelper在建立数据库时,同时建立两个数据库表,并对保存配置信息的表进行了初始化,初始化的相关代码在如下:private static final String DB_NAME = "weather_app.db";private static final String DB_TABLE_CONFIG = "setup_config";private static final String DB_CONFIG_ID = "1";private static final int DB_VERSION = 1;public static final String KEY_ID = "_id";public static final String KEY_CITY_NAME = "city_name";public static final String KEY_REFRESH_SPEED = "refresh_speed";public static final String KEY_SMS_SERVICE = "sms_service";public static final String KEY_SMS_INFO = "sms_info";public static final String KEY_KEY_WORD = "key_word";private static final String DB_TABLE_SMS = "sms_data";public static final String KEY_SENDER = "sms_sender";public static final String KEY_BODY = "sms_body";public static final String KEY_RECEIVE_TIME = "sms_receive_time";public static final String KEY_RETURN_RESULT = "return_result";/** 静态Helper类,用于建立、更新和打开数据库*/private static class DBOpenHelper extends SQLiteOpenHelper {public DBOpenHelper(Context context, String name, CursorFactory factory, int version) {super(context, name, factory, version);}private static final String DB_CREATE_CONFIG = "create table " +DB_TABLE_CONFIG+ " ("+ KEY_ID+ " integer primary key autoincrement, " +KEY_CITY_NAME+ " text not null, " + KEY_REFRESH_SPEED+ " text," +KEY_SMS_SERVICE +" text, " + KEY_SMS_INFO + " text, " +KEY_KEY_WORD + " text);";private static final String DB_CREATE_SMS = "create table " +DB_TABLE_SMS+ " ("+ KEY_ID+ " integer primary key autoincrement, " +KEY_SENDER+ " text not null, " + KEY_BODY+ " text, " +KEY_RECEIVE_TIME +" text, " + KEY_RETURN_RESULT + " text);";@Overridepublic void onCreate(SQLiteDatabase _db) {_db.execSQL(DB_CREATE_CONFIG);_db.execSQL(DB_CREATE_SMS);//初始化系统配置的数据表Config.LoadDefaultConfig();ContentValues newValues = new ContentValues();newValues.put(KEY_CITY_NAME, Config.CityName);newValues.put(KEY_REFRESH_SPEED, Config.RefreshSpeed);newValues.put(KEY_SMS_SERVICE, Config.ProvideSmsService);newValues.put(KEY_SMS_INFO, Config.SaveSmsInfo);newValues.put(KEY_KEY_WORD, Config.KeyWord);_db.insert(DB_TABLE_CONFIG, null, newValues);}@Overridepublic void onUpgrade(SQLiteDatabase _db, int _oldVersion, int_newVersion) {_db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE_CONFIG);_db.execSQL("DROP TABLE IF EXISTS " + DB_CREATE_SMS);onCreate(_db);}}在DBAdapter类中,用户界面会调用SaveConfig()和LoadConfig(),从SQLite数据库中保存和读取配置信息。

相关文档
最新文档