これもまた調べ物の一環で。
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で接続するだけだろうからなぁ。
