今天要分享的是Android手机设备集成天气预报功能的方案。我采用的方案是使用聚合数据上的全国天气预报API。如需要,可申请:https://www.juhe.cn/docs/api/...
实现步骤:
1.到聚合数据官网上注册,然后申请申请全国天气预报SDK数据,生成AppKey。
2.配置工程,将开发包里的juhe_sdk_v_1_1.jar拷贝到libs根目录下,将libJuheSDK_v_1_0.so拷贝到libsarmeabi目录下,如图:
35284624_201607221458450582303196.png
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();  
                }  
            }  
        });  

tinna
179 声望5 粉丝

过去之心不可得,现在之心不可得,未来之心不可得!