Social Icons

2013年2月16日 星期六

GeoCoder,判斷是否可以連上Internet兩三事

為什麼會將GeoCoder和Internet一起將起講,是因為使用GeoCoder造成我的程式會hang住,查了一陣子才發現和網路有關所以就在這裡一起談談了。 話說,Geocoder是Google提供的一個可以輸入坐標位置,然後fanc反查出地址的強大服務,不過小弟用了之後卻發生水土不服,而造成程式上吐下瀉的情況,原因是網路部位不穩,或者無法存取網路的時候,會讓程式停在哪裡,然後系統就會跳出程式無回應的警告視窗。 為什麼會這樣呢,其實是程式中會註冊座標移動的callback,當座標位置一旦有改變時就會呼叫這個callback。好死不死在這個callback中會呼叫GeoCoder來反查地址,並改變UI的文字。就這樣一旦網路不通的時候,就讓程式停在那裡了。 所以說,如果要使用GeoCoder一定要善用,只好另起一個Thread,背景執行,或者檢察現在網路是否有通嘍,下面就是檢察網路是否有通的程式碼了。
public boolean isInternetConnect() {
  boolean isConnected = false;
  ConnectivityManager connec =  (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connec.getNetworkInfo(0).isConnectedOrConnecting() == true ||  
         connec.getNetworkInfo(1).isConnectedOrConnecting() == true  ) {
         isConnected = true;
        }
        return isConnected;
}
其中connec.getNetworkInfo(0)是指Mobile phone(GPRS,3G),connec.getNetworkInfo(1)是檢察WiFi有沒有通。

沒有留言:

張貼留言