今回は, ネットワークの状態変化を検出し, 落ちたのか接続したのかを確認します。
○検出用のBroadcastReceiver をつくる
まずBroadcastReceiverクラスを拡張して, 状態変化が起こった場合に, ネットワークの状態を検出し, その状態を取得します( 状態取得方法は, こちら のコードを使っています )
public class NetworkConnectionReceiver extends BroadcastReceiver { //private static String TAG = "NetworkConnectionReceiver"; @Override public void onReceive(Context context, Intent intent) { ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); boolean connect = NetworkConnection.isConnected(manager); //String message = connect ? "Connect" : "Disconnect"; //Log.d(TAG, message); //Toast.makeText(context, message, Toast.LENGTH_LONG).show(); } }コメントアウトの部分を外すと, Logを残したりします。
コードはこれだけです。
○アプリケーション全体で検出をする場合
AndroidManifest.xml で, BroadcastReceiver を登録しましょう。
ポイントは, android.net.conn.CONNECTIVITY_CHANGE です。
さて, テストですが, アプリをバックグラウンドで動かしたまま, wifi 設定などをoff にすると, Logcat で見れたりなんかします。
○特定のActivity 内で検出する場合
特定のActivity 内で変化が起きたときのみ検出する場合は, Activity内で, インスタンス化して登録します。 さらに, UI とからめたりする場合は, inner クラスで定義すべし。
コードで登録する場合はこんな感じです。
NetworkConnectionReceiver receiver = new NetworkConnectionReceiver(); intentFilter = new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); registerReceiver(receiver, intentFilter);
0 件のコメント:
コメントを投稿