2013-02-09 126 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