今天要分享的是Android手机设备集成天气预报功能的方案。我采用的方案是使用聚合数据上的全国天气预报API。如需要,可申请:https://www.juhe.cn/docs/api/id/39
实现步骤:
1.到聚合数据官网上注册,然后申请申请全国天气预报SDK数据,生成AppKey。
2.配置工程,将开发包里的juhe_sdk_v_1_1.jar拷贝到libs根目录下,将libJuheSDK_v_1_0.so拷贝到libs\armeabi目录下,如图:
3.根据接口说明文档找到以下方法:
<span style="font-family:SimSun;font-size:18px;">/** * 根据城市名查询天气 * * @param cityname * 城市名,如:"苏州" * @param format * 未来6天预报(future)两种返回格式,1或2,默认1 * * @param jsonCallBack * */ public void getByCitys(String cityname, int format, JsonCallBack jsonCallBack) /** * 天气种类及标识列表 * * @param jsonCallBack * */ public void getUni(JsonCallBack jsonCallBack) /** * * 根据IP查询天气 * * @param ip * ip地址,如:58.215.185.154 * @param format * 未来6天预报(future)两种返回格式,1或2,默认1 * @param jsonCallBack * */ public void getByIP(String ip, int format, JsonCallBack jsonCallBack)/** * * 根据GPS坐标查询天气 * * * @param lon * 经度 * @param lat * 纬度 * @param format * 未来6天预报(future)两种返回格式,1或2,默认1 * @param jsonCallBack * */ public void getByGEO(double lat, double lon, int format, JsonCallBack jsonCallBack) /** * 城市天气三小时预报 * * @param cityname * @param jsonCallBack * */ public void getForecast3h(String cityname, JsonCallBack jsonCallBack) /** * 支持城市列表 * * @param jsonCallBack */ public void getCities(JsonCallBack jsonCallBack)</span>
4.程序中调用方法
首先,在AnroidManifest.xml中添加权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.READ_CONTACTS" />
在application标签内部加入你申请的openid
<meta-data android:name="com.thinkland.juheapi.openid" android:value="申请的openid" />
在使用前需要调用一次初始化方法
CommonFun.initialize(getApplicationContext());
导入相关包
impimport com.thinkland.juheapi.common.CommonFun;import com.thinkland.juheapi.common.JsonCallBack;import com.thinkland.juheapi.data.weather.WeatherData
调用方法
//根据城市名/id查询天气 WeatherData weatherData = WeatherData.getInstance(); weatherData.getByCitys("苏州", 1, new JsonCallBack() { @Override public void jsonLoaded(JSONObject arg0) { // TODO Auto-generated method stub try { int code = arg0.getInt("resultcode"); if (code == 200) { JSONObject resultJson = arg0.getJSONObject("result"); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } });