手机安卓开发设计报告-天气预报APP
基于AndroidStudio的天气预报APP设计与实现

基于AndroidStudio的天气预报APP设计与实现基于Android Studio的天气预报APP设计与实现一、引言随着智能手机的普及,人们对天气预报的需求也越来越大。
天气预报APP作为一种重要的生活辅助工具,对于雨天出行、户外活动的安排、衣物搭配等方面都有着重要的作用。
本文将介绍基于Android Studio的天气预报APP的设计与实现。
二、需求分析在开发天气预报APP之前,首先需要对用户需求进行分析。
根据市场研究,用户对于天气预报APP的需求主要有以下几个方面:1. 准确的天气预报信息:用户希望获取当前和未来几天的天气情况,包括温度、湿度、风力等信息;2. 实时更新:用户希望天气信息能够实时更新,使其能够及时了解最新的天气状况;3. 用户体验:用户希望使用简单、操作流畅的APP,同时能够个性化设置,例如添加多个城市、查看不同地区的天气情况等;4. 数据来源:用户对天气数据的来源也有要求,希望能够信任数据来源,确保数据的准确性。
三、系统设计基于以上需求,设计并实现一个功能完善的天气预报APP需要考虑以下几个方面:1. 用户界面设计:设计一个直观、美观的用户界面,可以通过页面的布局和色彩搭配来提升用户体验;2. 天气数据接口:选择可信赖的天气数据接口,可以通过与数据接口提供商合作来获取天气数据,确保数据的实时性和准确性;3. 数据存储:设计一个数据库来存储用户的设置信息,包括添加的城市、个性化设置等,使用户在下次打开APP时能够恢复之前的设置;4. 数据更新机制:设计一个数据更新机制,自动更新天气数据,并提供手动更新功能,确保用户获取到最新的天气信息;5. 用户交互设计:设计一个简单、易用的用户交互界面,可以通过点击、滑动等操作来获取和切换城市的天气信息;6. 错误处理:考虑到天气数据接口可能出现异常,需要设计相应的错误处理机制,例如网络异常时给出提示信息或者使用缓存数据。
四、技术实现基于Android Studio进行天气预报APP的开发,可以利用Android Studio提供的图形化界面设计工具和代码编辑器进行开发,主要技术有以下几个方面:1. 使用Android SDK提供的API获取用户当前的地理位置信息;2. 通过HTTP请求获取天气数据,并解析JSON格式的数据;3. 使用SQLite数据库进行数据存储,保存用户的设置信息;4. 使用多线程技术实现数据的异步更新,避免主线程阻塞;5. 使用Android Studio的UI设计工具进行界面布局和样式设置;6. 进行错误处理,例如网络异常时给出用户友好的提示信息。
《2024年基于AndroidStudio的天气预报APP设计与实现》范文

《基于AndroidStudio的天气预报APP设计与实现》篇一一、引言随着移动互联网的快速发展,天气预报APP已经成为人们日常生活中不可或缺的一部分。
为了满足用户对天气信息的即时需求,本文将详细介绍基于AndroidStudio的天气预报APP的设计与实现过程。
本APP旨在提供准确、及时的天气信息,同时具备良好的用户体验和交互设计。
二、需求分析1. 功能需求:(1)实时获取并显示当前位置的天气情况。
(2)支持多城市天气查询。
(3)提供未来几天的天气预报。
(4)支持主题皮肤切换,以满足用户个性化需求。
(5)简洁易用的界面设计,便于用户操作。
2. 用户体验需求:(1)启动速度快,响应时间短。
(2)界面美观,布局合理。
(3)操作简单,易于上手。
(4)信息展示清晰,易于理解。
三、设计阶段1. 架构设计:采用MVC(Model-View-Controller)架构模式,将数据、视图和控制逻辑分离,便于后期维护和扩展。
2. 界面设计:采用Android原生控件,结合UI设计原则,设计出简洁、美观的界面。
支持主题皮肤切换,满足用户个性化需求。
3. 数据获取:通过调用第三方天气API接口,获取实时和未来几天的天气数据。
4. 数据库设计:使用SQLite数据库存储用户经常查询的城市信息,以提高查询速度。
四、实现阶段1. 开发环境搭建:安装AndroidStudio开发环境,配置好JDK、AndroidSDK等开发工具。
2. 界面开发:根据UI设计稿,使用Android原生控件开发界面。
实现主题皮肤切换功能。
3. 数据处理与展示:调用第三方天气API接口,获取天气数据。
对数据进行解析和处理,将结果展示在界面上。
4. 数据库操作:使用SQLite数据库存储用户经常查询的城市信息。
提供城市管理功能,方便用户添加、删除和修改城市信息。
5. 功能实现:实现多城市天气查询、未来几天天气预报等功能。
五、测试与优化1. 功能测试:对APP的各个功能进行测试,确保功能正常、无bug。
安卓天气预报查询app实验报告

课程设计报告课程名称: 移动平台开发设计题目:天气预报院系:计算机科学与工程学院专业:计算机科学与技术班级:学号:姓名:指导教师:孙霞设计地点: N6-113开课时间: 2016 至 2017 学年第 1 学期目录1. 引言 ........................................................... 错误!未定义书签。
. 题目描述 ................................................... 错误!未定义书签。
. 设计意义 ................................................... 错误!未定义书签。
2. 开发环境 ....................................................... 错误!未定义书签。
. 硬件环境 ................................................... 错误!未定义书签。
. 软件环境 ................................................... 错误!未定义书签。
3. 相关技术及知识点................................................ 错误!未定义书签。
. Activity ................................................... 错误!未定义书签。
. Service .................................................... 错误!未定义书签。
. 网络通信 ................................................... 错误!未定义书签。
4. 需求分析 ....................................................... 错误!未定义书签。
《基于Android平台的蒙文天气预报客户端Widget的设计与实现》范文

《基于Android平台的蒙文天气预报客户端Widget的设计与实现》篇一一、引言随着移动互联网的飞速发展,天气预报已成为人们日常生活中不可或缺的信息服务。
尤其在多民族聚居的地区,如我国内蒙古等地,蒙文天气预报的需求日益增长。
本文旨在探讨基于Android平台的蒙文天气预报客户端Widget的设计与实现,以满足当地居民的天气信息需求。
二、设计背景与目标设计背景:随着Android设备的普及,越来越多的用户选择使用移动设备获取天气信息。
因此,开发一款适用于Android平台的蒙文天气预报客户端Widget具有重要意义。
设计目标:本设计旨在实现一款界面友好、操作便捷、支持蒙文显示的天气预报Widget,以满足内蒙古等地区用户对天气信息的需求。
三、设计原则与思路设计原则:本设计遵循用户体验至上、简洁明了、可定制化等原则,确保用户能够轻松获取天气信息。
设计思路:首先,进行需求分析,明确用户需求;其次,进行功能设计,包括天气预报、实时更新、蒙文显示等功能;再次,进行界面设计,确保界面简洁明了,符合用户习惯;最后,进行技术实现,确保Widget的稳定性和兼容性。
四、功能设计与实现1. 天气预报功能:通过调用第三方天气API,获取实时天气数据,包括温度、湿度、风力等信息。
同时,支持未来几天的天气预报。
2. 实时更新功能:Widget支持实时更新天气数据,确保用户能够随时获取最新的天气信息。
3. 蒙文显示功能:为满足内蒙古地区用户的需求,Widget支持蒙文显示,确保用户能够轻松读取天气信息。
4. 定制化功能:用户可以根据自己的需求,自定义Widget的显示内容、布局等。
五、界面设计与实现界面设计:采用简洁明了的界面设计风格,确保用户能够轻松使用Widget。
同时,考虑不同用户的使用习惯和需求,提供多种布局和样式供用户选择。
技术实现:采用Android开发技术,实现Widget的界面和功能。
具体包括布局文件编写、Java或Kotlin代码编写、资源文件管理等方面。
基于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平台的蒙文天气预报客户端Widget的设计与实现》范文

《基于Android平台的蒙文天气预报客户端Widget的设计与实现》篇一一、引言随着移动互联网的快速发展,天气预报成为了人们日常生活中不可或缺的一部分。
针对蒙文用户,开发一款基于Android平台的蒙文天气预报客户端Widget,不仅能够满足用户对天气信息的即时需求,还能提高用户体验,增强应用的实用性和便捷性。
本文将详细介绍该Widget的设计与实现过程。
二、需求分析1. 用户需求:蒙文用户希望获得实时、准确的天气预报信息,同时希望应用界面友好、操作简便。
2. 功能需求:Widget应具备显示当前天气、未来几天天气预报、生活指数、空气质量等功能。
3. 技术需求:采用Android平台开发,支持蒙文显示,具备较好的兼容性和稳定性。
三、设计思路1. 界面设计:界面应简洁明了,符合蒙文用户的使用习惯。
采用蒙文进行显示,确保用户能够轻松理解应用内容。
2. 功能设计:Widget应具备实时更新天气信息的功能,同时提供多种皮肤和布局选项,以满足用户个性化需求。
3. 技术选型:采用Android Studio开发工具,使用Java或Kotlin语言进行编程,利用Android Weather API获取天气数据。
四、具体实现1. 界面实现:使用XML布局文件定义Widget的界面结构,通过自定义控件和布局实现蒙文显示。
同时,采用Android动画和过渡效果,提高界面的美观性和用户体验。
2. 功能实现:通过调用Android Weather API获取天气数据,并在Widget中实时显示。
实现未来几天天气预报、生活指数、空气质量等功能,为用户提供全面的天气信息。
3. 兼容性和稳定性:针对不同型号和配置的Android设备进行测试,确保Widget具有良好的兼容性和稳定性。
同时,采用异步加载和缓存技术,提高应用的响应速度和性能。
五、测试与优化1. 测试:对Widget进行功能测试、性能测试和兼容性测试,确保应用在各种情况下都能正常运行。
“移动应用开发”实验报告---天气预报

“移动应用开发”实验报告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数据与处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、需求分析
(一)引言
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 运行环境
软件需要在支持安卓系统的可移动设备中正确安装才能正常运行。
安卓版本需在2.2及以上,同时建议用户如果是在手机移动设备使用的话,需确保手机支持联网服务。
3.3 设计和实现上的限制
Eclipse是开发相关应用软件的首选集成开发环境,安卓开发环境首先需要安装支持java应用
软件运行的java开发软件包(即JDK),然后安装集成开发环境Eclipse,最后安装Android SDK 的Eclipse的ADT插件。
Android SDK和Eclipse的ADT插件是必须使用的。
软件支持高效、快速的数据存储方式,包括快速数据存储方式SharedPreferences、文件存储和轻量级关系数据块SQLite,可软件可以使用适合的方法对数据进行进程保存和访问。
3.4 假设和约束(依赖)
软件必须在安卓系统下才可以正常运行,若需要获取天气更新或者是短信服务,需确保用户的数码设备支持联网及短信服务。
(三) 外部接口需求
1 用户的手机设备可以支持联网。
2 用户界面
3 软件接口
软件提供轻量级的进程间通信机制
Intent,实现跨进程组件通信。
4 访问硬件的API库函数通讯接口
4.1 HTTP 协议:有多种接口可
以调用你可以用Java类库
封装的HttpConnection 或
者用Apach的开源项目的
HttpGet 或者HttpPost ,
服务器端需要编写
Serlvet来响应客户端的请求。
4.2 Sokcet :就是服务器端不断监听双方约定好的端口号,客户端通过服务器IP去
请求连接,连接成功后,得到Socket 的输入输出流,直接操作即可。
(四) 系统功能需求
天气信息显示和获取
功能描述:需有一个显示天气情况的用户界面,要求百度地图显示各城市位置(如:北京、长沙、广州等3-5个城市),以及用图标表示各城市对应的气象信息,表示出“晴、雨、雪”和“气温”简洁气象信息。
输入输出信息:
输入:当触摸某一城市对应的气象图标时,显示该城市当天的温度、湿度、风向和雨雪详细天气信息,并预报该城市后面几天的气象信息。
输出:气象信息的获取,从百度上获取天气预报信息,这些天气数据是通过后台服务获取的,这个后台服务可以按照一定时间间隔,并将各城市的天气信息保存到SQLite数据库中。
二、概要设计
概要设计
1.Ui界面
我们的ui界面秉承着清新的风格开发出来的。
整个软件界面使用一个线性布局,让所有的元素从屏幕上方向下填充,并给整个线性布局进行权重划分。
线性布局的最上方是一个TextView,显示当前城市的名字,接着往下是一个相对布局,相对布局的左侧是天气的图片,右侧是三个天气相关的参数。
接着是一个线性布局,布局的左上方是三个TextView,分别显示“预报”,“趋势”,“指数”
功能,通过点击相应的TextView,下方的一个线性布局展现不同的功能。
功能面板文字的下方是一个大的线性布局,用来显示未来三天的天气情况。
在这个大的线性布局中,又含有三个小的线性布局,这三个小线性布局中包含了日期,天气图片和风力状况等(这些控件从上到下垂直居中显示)。
通过给整个XML文件中LinearLayout布局的的子级布局添加权重,让各个部分从上到下有序的显示,让当前城市名称在屏幕的上方显示,功能面板位于屏幕下方显示,以匹配不同尺寸屏幕,让软件的显示效果更好。
软件的整体布局风格是清新,优美,大方。
2.功能设计
功能上实现实时的获取天气信息,获取百度api返回数据,解析百度api返回的json数据,根据解析到的数据绘制气温趋势图,并将数据反馈到app上的相应的区域。
通过使用ViewPager类,来实现天气预报软件中多个城市间的无缝页面切换。
由于组员都缺少JA V A开发经验,对安卓开发也不熟悉,所以我们决定采用调用API的方法来实时获取不同城市的天气预报数据,在这次项目中我们将采用百度的车载API。
通过HttpClient类和AsyncTask异步类来获取网络数据。
最后通过Gson类来解析获取的网络数据,并给页面中的所有的布局空间设置id,在AsyncTask得到网络数据之后将这些数据同步到软件界面上,呈现给用户。
三、功能模块
我主要负责监听程序的设计,监听用户按键,并进行相应的动作。
只要用户滑动面板,就切换到下一个城市,并获得下一个城市的天气数据,
显示在面板上。
每隔15分钟自动更新天气数据。
主要代码如下:
下面的代码处理网络连接部分,用GSON解析网络上获得的Json网页:
下面代码访问网络:。