これもまた調べ物の一環で。
3Gが有効かどうかを調べる方法をば。
if文のConnetivityManager.TYPE_MOBILEの場合が3Gです。
比較用にWiFiも条件に入れています。
あ、実行環境は私が所有するSoftbank X06HT(Desire) 2.2(Froyo)です。
// 3Gの状態を取得する ConnectivityManager cm = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE); // ネットワーク情報を全て取得 NetworkInfo[] networkInfos = cm.getAllNetworkInfo(); for(NetworkInfo ni: networkInfos) { if (ni.getType() == ConnectivityManager.TYPE_WIFI || ni.getType() == ConnectivityManager.TYPE_MOBILE) { // 3GかWiFiの場合は情報を取得 Log.d(TAG, "TypeName = " + ni.getTypeName()); Log.d(TAG, "SubtypeName = " + ni.getSubtypeName()); Log.d(TAG, "isAvailable = " + ni.isAvailable()); Log.d(TAG, "connected = " + ni.isConnected()); } }
- モバイルネットワークOFF, WiFi OFFの場合:
11-12 01:15:26.651: DEBUG/Top(8401): TypeName = mobile
11-12 01:15:26.651: DEBUG/Top(8401): SubtypeName = UMTS
11-12 01:15:26.651: DEBUG/Top(8401): isAvailable = true
11-12 01:15:26.651: DEBUG/Top(8401): connected = false
11-12 01:15:26.651: DEBUG/Top(8401): TypeName = WIFI
11-12 01:15:26.651: DEBUG/Top(8401): SubtypeName =
11-12 01:15:26.651: DEBUG/Top(8401): isAvailable = false
11-12 01:15:26.651: DEBUG/Top(8401): connected = false - モバイルネットワークOFF, WiFi ONの場合:
11-12 01:19:07.901: DEBUG/Top(8401): TypeName = mobile
11-12 01:19:07.901: DEBUG/Top(8401): SubtypeName = UMTS
11-12 01:19:07.901: DEBUG/Top(8401): isAvailable = true
11-12 01:19:07.901: DEBUG/Top(8401): connected = false
11-12 01:19:07.901: DEBUG/Top(8401): TypeName = WIFI
11-12 01:19:07.901: DEBUG/Top(8401): SubtypeName =
11-12 01:19:07.901: DEBUG/Top(8401): isAvailable = true
11-12 01:19:07.901: DEBUG/Top(8401): connected = true - モバイルネットワークON, WiFi OFFの場合:
11-12 01:16:53.891: DEBUG/Top(8401): TypeName = mobile
11-12 01:16:53.891: DEBUG/Top(8401): SubtypeName = UMTS
11-12 01:16:53.891: DEBUG/Top(8401): isAvailable = true
11-12 01:16:53.891: DEBUG/Top(8401): connected = true
11-12 01:16:53.891: DEBUG/Top(8401): TypeName = WIFI
11-12 01:16:53.891: DEBUG/Top(8401): SubtypeName =
11-12 01:16:53.891: DEBUG/Top(8401): isAvailable = false
11-12 01:16:53.891: DEBUG/Top(8401): connected = false - モバイルネットワークON, WiFi ONの場合:
11-12 01:18:09.711: DEBUG/Top(8401): TypeName = mobile
11-12 01:18:09.711: DEBUG/Top(8401): SubtypeName = UMTS
11-12 01:18:09.711: DEBUG/Top(8401): isAvailable = true
11-12 01:18:09.711: DEBUG/Top(8401): connected = false
11-12 01:18:09.711: DEBUG/Top(8401): TypeName = WIFI
11-12 01:18:09.711: DEBUG/Top(8401): SubtypeName =
11-12 01:18:09.711: DEBUG/Top(8401): isAvailable = true
11-12 01:18:09.711: DEBUG/Top(8401): connected = true
という結果でした。モバイルネットワークはOFFにしても、isAvailableはtrueのままだけど、WiFiはOFFにしたらisAvailableがfalseになるんすねー。接続だけはさせないよってことだろうか?
あとWiFiをONの状態でWiFiの電波のないところで試したいような気がしたけれど、まぁ3Gで接続するだけだろうからなぁ。