2013-02-09 92 views
3

我有一個應用程序的小型服務,白天收集數據,並將數據保存到SD卡。前提是數據量很大,因此應用程序在任何情況下都不應該通過用戶的數據計劃上傳這些數據。確保http連接是通過WiFi

存在wifi'存在'但無法使用的情況,並且電話儘可能使用數據計劃連接儘可能路由網絡請求(如果可能)。

有沒有一種方法,無論骯髒,以確保請求將只通過WiFi連接或失敗否則?

編輯:

通過閱讀我的問題,我發現,這是怎麼回事我也沒詳細解釋。我正在從環境中收集數據(某種形式的日誌記錄),並且數據在SD卡上累積。當用戶靠近或在家(或任何其他啓用WiFi的地方)時,軟件應該通過http POST請求檢測該數據並將其退出SD卡內容。文件大小爲1MB或更大,所以即使我檢測到Wifi的存在,它也可以在傳輸過程中更改。或者更糟糕的是,Wifi可能打開,但無法路由,所以電話會通過數據計劃路由連接,並且會損壞您當月的預算。

回答

0

你可以用兩件事做到這一點:

1-上傳前,再檢查一下,目前移動是通過Wi-Fi連接,這裏有一個例子功能

public static boolean isConnectedToWiFi(Context context) { 
    NetworkInfo activeNetwork = getConnectivityManager(context) 
      .getActiveNetworkInfo(); 
    if (activeNetwork != null) { 
     return activeNetwork.isConnected() 
       && activeNetwork.getType() == ConnectivityManager.TYPE_WIFI; 
    } 
    return false; 
} 

2 - 聽連接變化廣泛android.net.conn.CONNECTIVITY_CHANGE監測連接變化時,例如切換到3G