2010年10月05日

[android] WiFiのON/OFFを取得するには

ワイヤレス設定のWiFi ON/OFFを取得する方法です
※WiFiの接続状態ではなくWiFi設定のON/OFFです

IntentFilterの設定
WiFiのON/OFFが変更された時にWIFI_STATE_CHANGED_ACTIONのインテントが投げられるので、IntentFilterで受け取ります

  
    
  


Permissionの設定
WIFI_STATE_CHANGED_ACTIONのインテントを受け取るにはACCESS_WIFI_STATEのパーミッションが必要です


Receiverの処理
WifiManagerのgetWifiState()でWiFiのON/OFF状態を取得できます
public class WifiOnOffReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {
      WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

      if (wm.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {
        // WiFiがONになった時の処理
      } else if (wm.getWifiState() == WifiManager.WIFI_STATE_DISABLED) {
        // WiFiがOFFになった時の処理
      }
    }
  }
}

WifiState()の遷移
[WIFIをON ] → WIFI_STATE_ENABLING → WIFI_STATE_ENABLED
[WIFIをOFF] → WIFI_STATE_DISABLING → WIFI_STATE_DISABLED
[失 敗 時 ] → WIFI_STATE_UNKNOWN
posted by meloncake at 01:35| Comment(2) | TrackBack(0) | Android

2010年10月04日

[android] WiFiに接続しているかを判定する

WiFiに接続中かを判定する方法です。
ConnectivityManagerからActiviNetworkInfo()を取得できます。アクティブネットワークがWIFIでCONNECTEDであることを判定します
public static boolean isWifiConnected(Context context) {
  ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo info = cm.getActiveNetworkInfo();

  if (info != null) {
    return (
      (info.getType() == ConnectivityManager.TYPE_WIFI) &&
      (info.isConnected())
    );
  }

  return false;
}
Permissionの設定
ActiviNetworkInfo()を受け取るするにはACCESS_NETWORK_STATEのパーミッションが必要です

posted by meloncake at 01:04| Comment(0) | TrackBack(0) | Android

2010年10月03日

[android] WiFi接続時にオンライン処理を起動する

WIFIに接続した時、オンライン処理を実行する方法です。

IntentFilterの設定
WiFiの接続状態が変更された時にNETWORK_STATE_CHANGED_ACTIONのインテントが投げられるので、IntentFilterで受け取ります

  
    
  


Permissionの設定
NETWORK_STATE_CHANGED_ACTIONのインテントを受け取るにはACCESS_WIFI_STATEのパーミッションが必要です


Receiverの処理
NETWORK_STATE_CHANGED_ACTIONインテントのExtra(WifiManager.EXTRA_NETWORK_INFO)に変更後のNetworkInfoが格納されています。NetworkInfo内のスタータスがCONNECTEDになっているかを判定します。(注:Statusで処理するよりも.isConnected()を使う方が正確かもしれません)
public class WifiReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) {
      Bundle extras = intent.getExtras();
      if (extras != null) {
        NetworkInfo info = extras.getParcelable(WifiManager.EXTRA_NETWORK_INFO);
        if (info != null) {
          if (nwInfo.getState().equals(NetworkInfo.State.CONNECTED)) {
            // サービス呼び出し(WIFI接続時のオンライン処理)
            context.startService(new Intent(context, MyService.class));
          }
        }
      }
    }
  }
}

続きを読む
posted by meloncake at 23:24| Comment(0) | TrackBack(0) | Android