可以进行城市、更新频率的设置可以通过图片和文字显示当前和未来的天气状况包括温度、湿度、风向和雨雪情况等。
这些天气数据是通过后台服务获取的这个后台服务可以按照一定时间间隔从Google上获取天气预报信息并将天气信息保存在数据库中。
从上面的描述中可以基本了解软件的功能需求 1 启动App Widget应用程序 2 设置界面对要显示天气预报的城市及更新频率进行设置 3 显示界面通过文字和图片显示当前的天气情况包括日期、时间、城市、最高温度、最低温度、当前温度等。
4 详细界面通过文字图片动画显示当前的天气情况包括城市当前天气、温度、风向、风速、湿度同时显示今后四天的天气情况。
2.3 性能分析 程序响应速度快、安全性高、信息处理速度快。
第三章 系统开发环境及相关技术 第三章 系统开发环境及相关技术 3.1 Android开发环境介绍 Android的上层应用程序是用Java语言开发同时还需要基于Dalvik虚拟机所以Google公司推荐使用主流的Java继承开发环境Eclipse。
只有Eclipse还不够因为是使用Java语言进行开发还应该有由SUN公司提供的Java SDK其中包括JREJava Runtime Environment。
此外Android的应用程序开发和Java开发有较大区别的所以还需要有Google提供的Android SDK。
同时还需要在Eclipse安装ADT为Android开发提供开发工具的升级或者变更是Eclipse下开发工具的升级下载的工具。
简言之需要以下软件才能搭建Android开发环境从而进行Android应用程序的开发。
1 Java SDK 2 Eclipse 3 Android SDK 4 ADT 3.2 Android开发平台搭建 Android开发平台搭建步骤 ①首先到http://www.eclipse.org/downloads/下载Eclipse集成开发环境并且解压这里推荐下载Java EE 集成版本可以为平台的搭建省下不少工作。
接着再去http://java.sun.com/javase/downloads/index.
jsp 站点下载SDK后安装下载http://dl.google.com/android/android-sdk-windows-1.5_r1.zipAndroid SDK1.5后解压。
第一步下载工序就结束了。
②双击Eclipse解压后目录中的eclipse.exe然后启动选择Eclipse菜单中的Help-gt Install New Software-gt 选项卡上的Available Software点击右侧的“Add”输入http://dl-ssl.google.com/android/eclipse/后确定然后在“Work with”下拉菜单中选择刚才输入的网址。
过一会就会出现一个Developer Tools选项勾上以后点击Next以后Eclipse会自动网上查找Android 开发工具插件然后找到Android DDMS和Android Development Tools选中这两个点击FinishEclipse就会自动下载并安装Android插件了最后会提示第三章 系统开发环境及相关技术 重启Eclipse。
③重启后选择Eclipse菜单中的Windows-gt Preferences 在左侧的Android项目中SDK Location中填入Android SDK解压后的目录然后点击Apply。
④在WindowsXP的系统变量中的path变量中添加一个值该值指向解压后的Android SDK目录下的tools文件夹。
第四章 程序设计 第四章 程序设计 4.1 用户界面设计 根据需求分析可以知道应用程序应包含三个主要的用户界面这里需要进一步分析每个用户界面中应该包括哪些显示内容。
在“设置页面”中需要对要显示天气预报的城市及更新频率进行设置。
在“显示页面”中显示当前的天气状况包括城市名称、温度、湿度、风向、雨雪情况和获取数据时间等信息。
在“详细页面”动态显示当前天气情况还要显示未来四天的天气情况。
根据对用户界面显示内容的分析绘制出用户界面的草图如图4-1所示。
图4-1 用户界面草图 4.2 数据库设计 本软件中有两部分数据需要存储一个是显示页面的数据另一个详细页面的数据。
因此选择SQLite数据库作为存储数据的方法建立数据库forcasts.db并且建立两张表weather_forcastt和weather_widget分别存储显示页面的数据和详细页面的数据。
表4-1 详细页面的数据库表weather_forcast的结构 属性 数据类型 说明 _id integer 自动增加的主键 widgetId integer 组件的ID号 dayOfWeek text 周几 low integer 最低温度 第四章 程序设计 hight integer 最高温度 icon text 显示天气的图标 condition text 未来天气情况 表4-2 显示页面的数据库表weather_widget的结构 属性 数据类型 说明 _id integer 存储Widget组件id city text 进行天气信息查询的城市名 updateMilis text 进行天气信息查询的频率单位为分/次 isConfigured text 是否设置 postalCode text 城市标记 forecastDate integer 预报日期 condition text 当前天气情况 tempF integer 最高温度 tempC integer 最低温度 humidity text 当前湿度 icon text 天气图标 windCondition text 风向风速情况 lastUpdateTime integer 最后一次更新时间 4.3 程序模块设计 从功能需求上分析可以看出整个应用程序应划分为4个模块分别是程序启动、用户界面、后台服务和数据库适配器各模块之间的关系如图4-2所示。
第四章 程序设计 从模块结构图中不难看出后台服务是整个应用程序的核心主要是“数据获取模块”负责周期性的从Google获取天气信息。
后台服务在程序启动时就由AppWidgetProvider启动也可由用户界面通过startService进行启动启动后的后台服务将一直保持运行状态。
用户界面从数据库中获取天气信息而没有直接通过网络访问Google的天气数据。
之所以这么实际一方面可以避免因网络通信不畅造成界面失去响应另一方面后台服务可以及时更新数据以保证数据的准确性。
数据库适配器封装了所有对SQLite数据库操作的方法用户界面和后台服务会调用它来实现数据库操作。
在完成用户界面设计、数据库设计和模块设计后至此程序设计阶段基本完成。
第四章 程序设计 第五章 程序开发 第五章 程序开发 5.1 文件结构与用途 在程序开发阶段首先确定“Android平台3G手机气象软件”的工程名为ty-weather据程序模块设计的内容建立ty-weather工程。
Weather工程源代码的结构如图5.1所示。
图5.1 ty-weather工程的源代码文件 为了使源代码文件的结构更加清晰Weather工程设置了多个命名空间分别用来保存用户界面、数据库、后台服务和工具实体的源代码文件源代码文件的名称以及说明如表5.1所示。
表5.1 ty-weather工程的文件用途说明 包 名 称 文 件 名 说 明 com.ty.weather ConfigureActivity.java “设置页面”的Activity com.ty.weather DetailForecastActivity.java “详细页面”的Activity com.ty.weather ForecastProvider.java 天气预报相关数据提供者操作数据库 com.ty.weather ForecastService.java 后台进程内服务 com.ty.weather ForecastTimeService.java 后台时间服务 com.ty.weather ForecastWidget.java 实现AppWidget组件并启动服务 com.ty.weather WebServiceHelper.java 网络数据获取模块 第五章 程序开发 com.ty.weather.util ForecastEntity.java 未来天气信息的类 com.ty.weather.util ForecastUtil.java 天气信息工具类 com.ty.weather.util WidgetEntity.java 当前天气信息的类 Android的资源文件保存在/res的子目录中。
其中、/res/anim目录中保存的是产生动画效果的XML文件/res/drawable/目录中保存的是图像文件/res/values目录中保存的是用来自定义字符串和颜色的文件/res/xml目录中保存的是XML格式的数据文件。
所有在程序开发阶段可以被调用的资源都保存在这些目录中具体每个资源文件的用途可以参考表5.2 表5.2 资源文件名称与用途 资源目录 文 件 说 明 anim rotatecurrentweather.xml 渐变透明度动画效果 translatecloudleft.xml 画面转换位置移动动画效果从左至右 translatecloudright.xml 画面转换位置移动动画效果从右至左 translaterain01.xml 画面转换位置移动动画效果从上至下 translaterain02.xml 画面转换位置移动动画效果从上至下 translaterain03.xml 画面转换位置移动动画效果从上至下 translaterain04.xml 画面转换位置移动动画效果从上至下 translaterain05.xml 画面转换位置移动动画效果从上至下 drawable cloudy.png 这个文件夹里是工程里所用的图片如有表示天气状况、数字等此处不赘述。
dots.png number_7_tahoma.png weather_sunny.png layout configure.xml 设置城市、天气更新频率的布局 weather.xml “显示页面”的布局 detail.xml “详细显示”页面上边的显示当前天气的布局 detailitems.xml “详细显示”页面下边的显示未来天气的布局 values color.xml 保存颜色的XML文件 strings.xml 保存字符串的XML的文件 xml weatherwidget.xml AppWidget的属性文件 5.2 数据提供者 数据提供者ForecastProvider继承ContentProvider是在应用程序间共享第五章 程序开发 数据的一种接口机制。
应用程序在不同的进程中运行因此数据和文件在不同的应用程序之间是不能够直接进行访问的。
而CotentProvider为程序员提供了较高级的数据共享方法应用程序可以指定需要共享的数据而其他应用程序则可以在不知数据来源、路径的情况下对共享数据进行查询、添加、删除和更新等操作。
在介绍ForecastProvider的核心代码前首先了解一下WidgetEntity.java当前天气信息的类和ForecastEntity.java未来天气信息的类。
1 WidgetEntity.java的部分代码 public class WidgetEntity private ArrayListltForecastEntitygt details new ArrayListltForecastEntitygt //ForecastEntity对象 private Integer id //编号 private Integer updateMilis //更新频率 private String city //城市 private String postalCode //城市标记 private Long forecastDate //预报时间 private String condition //天气情况 private Integer tempF //华氏温度 private Integer tempC //摄氏温度 private String humidity //湿度 private String icon //天气图标 private String windCondition //风力风向 private Long lastUpdateTime //最后更新时间 private Integer isConfigured //是否已设置 ...... 从代码中可以看出除ForecastEntity 的对象details WidgetEntity类中有以上公有静态属性id、updateMilis 、updateMilis、postalCode、forecastDate、condition、tempF、tempC、humidity、icon、windCondition、lastUpdateTime、isConfigured完全对应数据库中weather_widget的表。
2 ForecastEntity.java的部分代码 public class ForecastEntity private Integer id //编号 private String dayOfWeek //星期 private Integer low //最低温度 private Integer hight //最高温度 private String icon //天气图标 private String condition //天气情况 第五章 程序开发 private Integer widgetId //组件id 从代码中可以看出WidgetEntity类中有以上公有静态属性id、dayOfWeek、low、hight、icon、condition、widgetId完全对应数据库中weather_forcast的表。
在创建ForecastProvider时首先需要使用数据库、文件系统或网络实现底层存储功能这里我们采用数据库建立了数据库设计中的两张表从而实现了底层存储功能。
然后在继承ContentProvider的类中实现基本数据操作的接口函数包括添加、删除、查找和更新等功能。
下面就核心代码进行分析。
1 创建数据库DatabaseHelper类继承SQLiteOpenHelperSQLiteOpenHelper这个类可以辅助建立、更新和打开数据库。
DatabaseHelper在建立数据库时同时建立了两个数据库表weather_widget和weather_forcast并对保存配置信息的表进行了初始化。
具体代码如下所示 private static class DatabaseHelper extends SQLiteOpenHelper //数据库名称 private static final String DATABASE_NAME quotforecasts.dbquot //数据库版本 private static final int DATABASE_VERSION 2 //构造方法重载父类构造 public DatabaseHelperContext context supercontext DATABASE_NAME null DATABASE_VERSION public void onCreateSQLiteDatabase db //创建weather_widget表 public void onCreateSQLiteDatabase db //创建weather_widget表 db.execSQLquotCREATE TABLE quot TABLE_WIDGET quot quot ...... //创建weather_forecast表 db.execSQLquotCREATE TABLE quot TABLE_FORECAST quot quot ...... //重写onUpgrade方法 Override public void onUpgradeSQLiteDatabase db int oldVersion int newVersion ...... 第五章 程序开发 2 URI设置ContentProvider可以提供多个数据集调用者使用URI通用资源标识符对不同的数据集的数据进行操作。
URI用来地位任何远程或本地的可用资源。
ContentProvider使用的URI语法结构content://ltauthoritygt/ltdata_pathgt/ltidgt。
因此.
上一篇:
java经典小程序
下一篇:
儿童四肢皮肤挫伤采用美宝疮疡贴治疗的疗效