学习《第一行代码》之实战项目-天气预报API实例

前言

书上提及中国天气网提供的API接口早已经无法调用,初期费了些周折,项目搁浅了一段时间,现重新接触项目,学会了调用聚合数据,功能得以实现。本篇系学习酷欧天气项目,做出小项目-搜杰天气,后续依情况或许再添加些许功能。和我一样看这本书的初学者们可能到这一块就卡壳了,我当时也是,如今克服了,现分享出来,供需要的人参考。

一.功能需求及技术可行性分析

搜杰天气应具备的功能:

可以罗列出全国所有的省市县。 
可以查看全国任意城市的天气信息。 
可以自由顺利地切换城市,查看其他城市的天气。 
可以手动更新及后台更新天气。 
主要用到UI,网络,定位,数据存储和服务等技术。

二.如何使用聚合数据

1.聚合数据官网地址:https://www.juhe.cn/

2.注册完账号-申请数据-天气预报-全国天气预报-点击申请-进入我的数据-点击操作中的查看-记下AppKey,代码中用上。

3.其余的根据开发文档学习。

4.(2016.2.23更新)

距上次提交该项目与更新博客已有一个多月了,当时试用应用没问题,就一直没怎么用过(Android开发者用iPhone的弊端?以后每天多用点Android测试机),昨晚点开应用,发现没法正常使用了。今天去ZF部门办个小事耽搁了大半天(解决事情只用了五分钟,ZF部门,呵呵了),不过一直惦记着这个Bug,晚上再点开应用,还是无法正常使用,不知怎么回事,看着界面一直显示“正在加载”,仔细思索下,猜想是API接口过期了,打开聚合数据,一看果然猜想没错,显示次数为0。但是,重新续费得花99元/50000次,接着,(原谅我无耻下)重新注册个账号,于是便又有了500次,运用新生成的AppKey,便解决问题了,应用正常使用。

新手注意,具体只改动以下三个地方,再Rebuild Project,下载代码到手机上就可以正常使用了。 
图片描述
图片描述
图片描述

这三幅图,只改动”key=….”,换成你按1-3步骤完成后生成的AppKey即可,完毕。

三.项目地址

My GitHub : https://github.com/Iamasoldier6/SoldierWeather-搜杰天气(SoldierWeather)。 
Welcome to star and fork it!

An Imasoldier6 Android Developer

原文地址:http://www.cnblogs.com/Iamasoldier6/p/5131738.html

Android天气预报实验报告模板 public class SetCityActivity extends Activity { //定义的一个自动定位的列表 private ListView gpsView; //定义的一个省份可伸缩性的列表 private ExpandableListView provinceList; //定义的用于过滤的文本输入框 private TextView filterText; //定义的一个记录城市码的SharedPreferences文件名 public static final String CITY_CODE_FILE="city_code"; //城市的编码 private String[][] cityCodes; //省份 private String[] groups; //对应的城市 private String[][] childs; //自定义的伸缩列表适配器 private MyListAdapter adapter; //记录应用程序widget的ID private int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.set_city); gpsView = (ListView)findViewById(R.id.gps_view); provinceList= (ExpandableListView)findViewById(R.id.provinceList); //设置自动定位的适配器 gpsView.setAdapter(new GPSListAdapter(SetCityActivity.this)); //==============================GPS================================= //当单击自动定位时 gpsView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { TextView localeCity = (TextView)view.findViewById(R.id.locateCityText); localeCity.setText("正在定位..."); final LocateHandler handler = new LocateHandler(localeCity); //添加一个线程来处理定位 new Thread(){ public void run() { Map<Integer, String> cityMap= getLocationCityInfo(); //记录匹配的城市的索引 int provinceIndex = -1; int cityIndex = -1; //传给处理类的数据封装对象 Bundle bundle = new Bundle(); if(cityMap!=null) { //得到图家名 String country = cityMap.get(LocationXMLParser.COUNTRYNAME); //只匹配国地区的天气 if(country!=null&&country.equals("国")){ //得到省 String province = cityMap.get(LocationXMLParser.ADMINISTRATIVEAREANAME); //得到市 String city = cityMap.get(LocationXMLParser.LOCALITYNAME); //得到区县 String towns = cityMap.get(LocationXMLParser.DEPENDENTLOCALITYNAME); Log.i("GPS", "============"+province+"."+city+"."+towns+"=============="); //将GPS定位的城市与提供能查天气的城市进行匹配 StringBuilder matchCity = new StringBuilder(city); matchCity.append("."); matchCity.append(towns); //找到省份 for(int i=0; i<groups.length; i++) { if(groups[i].equals(province)) { provinceIndex = i; break; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值