在android平板上取位置和天氣的實現方式

         對於開發人員而言,取天氣信息這是一個很常用的功能,要取到天氣,首先要取到位置信息即經緯度。


怎樣實現在android的平板上取到位置信息?我們有三種常用方式:第一種、通過wifi得到經緯度;第二種、通過基站:這個需要在手機和平板上安裝sim卡;第三種、通過GPS:在室內難以取到,在室外才行。(需要說明的是谷歌的https ://www.google.com/loc/json取地址已經停用了。


由於方式2要依賴SIM卡,方式3在室內效果太差,並且我們上網經常是通過wifi,所以這種方式最常用,我們就採用此方式。其實通過wifi上網時,google mapsbaidu maps是通過無線路由器的mac地址(而不是wifi信號)定位的,這個原理網上有高人測試過,見http://www.diypda.com/forum.php?mod=viewthread&tid=114364&page=1

         因爲google地圖由於GFW的原因不太好用,所以我們大方的採用baiduAPI


1、設置AndroidManfest.xml權限


<!-- 訪問網絡的權限 -->


<uses-permission android:name="android.permission.INTERNET" />


<!-- 訪問精確位置的權限 -->


<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


<!-- 訪問網絡狀態的權限 -->


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


<!-- 訪問WIFI網絡狀態的權限 -->


<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />


<!-- 改變WIFI網絡狀態的權限 -->


<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />


2、導入baidumapapi.jar


import com.baidu.mapapi.BMapManager;


import com.baidu.mapapi.LocationListener;


3、初始化設置BMapManager


mapManager = new BMapManager(this);


mapManager.init("授權key",new MKGeneralListener());


//mapManager.getLocationManager().setNotifyInternal(20, 5);


4、獲取經緯度


mapManager.getLocationManager().requestLocationUpdates(new MyLocationListener());


mapManager.start();


 

LocationListener中獲取經緯度


class MyLocationListener implements LocationListener {


        @Override


        public void onLocationChanged(Location arg0) {


            System.out.println(arg0.getLongitude());//經度
          System.out.println(arg0.getLatitude());//緯度

        }


    }


 

這樣我們終於完成了取經緯度的動作,是爲取天氣的第一步。


 

第二步,通過經緯度獲取Yahoo 代表城市的WOEID,例如我通過第一步取到我所在位置的經緯度分別爲30.459723114.427391,則通過地址


http://where.yahooapis.com/geocode?q=30.459723,+114.427391&gflags=R&appid=NrTfYV7e 可以返回一個詳細的xml文件。



  

第三步,通過yahoo取得真實的天氣信息(代碼表示)


方式是訪問地址http://weather.yahooapis.com/forecastrss?w=2163866&u=f ,其中2163866是在第二步中實現的。


 

第四步,將天氣代碼解析出來,這個非常簡單。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章