7

Android アプリケーションの実行中にインターネット接続を確認したいと考えています。サービスを使用してみましたが、最適なオプションではないようです。サービスでブロードキャストレシーバーを実装する方法はありますか? それとも、サービスをあきらめて放送受信機だけを使わなければなりませんか?

4

3 に答える 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

この目的でServiceorを使用する必要はありません。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 に答える