Android の wifi 接続について具体的な質問があります。Web サーバーからデータをダウンロードするプロジェクトに取り組んでおり、同期を開始する前に毎回、次のようなインターネット接続について確認しています。
public static boolean isOnline(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
public static boolean chkNetworkStatus(Context context) {
boolean result = false;
new Thread() {
@Override
public void run() {
for(int i=0;i<3;i++){
HttpGet requestForTest = new HttpGet("http://m.google.com");
try {
new DefaultHttpClient().execute(requestForTest);
responded = true;
} catch (Exception e) {
responded = false;
}
}
}
}.start();
boolean isOnline = isOnline(context);
if(responded && isOnline){
result = true;
} else {
result = false;
}
Log.e("","responded : "+responded);
return result;
}
しかし、この状況では、まだwifiに接続していて、歩いている(接続が失われている)ときに同期ボタンを押すと、接続されているためまだtrueが返されますが、実際には何もしていません.
これを検出できる方法はありますか、それとも使用しているクラスでconnectionTimeOut
関数を使用する必要がありますか?HttpURLConnection