今回は, ネットワークの状態変化を検出し, 落ちたのか接続したのかを確認します。
○検出用の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 件のコメント:
コメントを投稿