FC2ブログ
ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » Android »【Android】【Java】WIFI接続ONを取得する

【Android】【Java】WIFI接続ONを取得する  


 今回はWIFI接続の暗黙的Intent で手動接続を促した後、接続ONを取得して処理を実行するブロードキャストレシーバーを考えてみた。

 実際にやってみてわかった事だが、WifiManager.WIFI_STATE_CHANGED_ACTION を受信して実行だと上手く行かない。というのはこのアクションは接続ボタンをONにしたらすぐに受信できるので、確かにWIFI自体はONになってるのだが、その時点では認証やネットワークへの接続自体が完了していないらしい。どうしてもタイムラグが生じる。だから別のアクション: WifiManager.NETWORK_STATE_CHANGED_ACTION の方で受信してみたら、タイミング的に上手く行った。そのコード。

■BroadcastReceiver
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
ConnectivityManager cm = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
if (cm != null) {
NetworkInfo info = cm.getActiveNetworkInfo();
if (info != null && info.isConnected()) {
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (wm != null && wm.isWifiEnabled()) {
//WifiInfo winfo = wm.getConnectionInfo();
//ここで処理等(5秒以内でできるもの)
}
}
}
}
}
};

■Activity の onCreate() 等
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//動的 IntentFilter の設定
registerReceiver(receiver, new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION));
}

■パーミッション
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 null チェックは念のため。実機ではあまり必要ないかも。エミュレータではあった方が良いけどね。パーミッションも処理によっては「CHANGE_~」は必要ないかもね。もちろん静的用途なら BroadcastReceiver を1つの専用クラスにして、AndroidManifest.xml に receiver タグ、intent-filter タグでアクションを設定しても良いと思う。


(関連記事)
【Android】WIFI, Bluetooth 接続の暗黙的Intent



スポンサーサイト

category: Android

thread: プログラミング

janre: コンピュータ

tb: 0   cm: --



トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/109-9d283e19
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

▲ Pagetop