Android アプリケーションの実行中にインターネット接続を確認したいと考えています。サービスを使用してみましたが、最適なオプションではないようです。サービスでブロードキャストレシーバーを実装する方法はありますか? それとも、サービスをあきらめて放送受信機だけを使わなければなりませんか?
9168 次
3 に答える
3
接続を毎秒チェックするのは賢明ではありません。または、アクション ( ConnectivityManager.CONNECTIVITY_ACTION )をリッスンして、アクティブなネットワークに接続しているかどうかを識別できます。
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
さらに、現在アクティブなネットワーク タイプ (Type_WIFI、Type_MOBILE) を確認できます。
このように、接続を毎秒チェックし続けるサービスは必要ありません。
于 2013-05-06T10:31:53.357 に答える
1
この目的でService
orを使用する必要はありません。BroadCastReceiver
サーバーにpingを実行する必要があるたびに、接続ステータスを確認してください。
boolean
これをチェックし、接続ステータスに応じて (true/false)を返すメソッドを作成できます。以下のメソッドは同じことを行います。
public static boolean isNetworkAvailable(Context mContext) {
try {
final ConnectivityManager conn_manager = (ConnectivityManager) mContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo network_info = conn_manager
.getActiveNetworkInfo();
if (network_info != null && network_info.isConnected()) {
if (network_info.getType() == ConnectivityManager.TYPE_WIFI)
return true;
else if (network_info.getType() == ConnectivityManager.TYPE_MOBILE)
return true;
}
} catch (Exception e) {
// TODO: handle exception
}
return false;
}
于 2013-05-06T08:55:35.677 に答える