Androidの携帯電話のネットの状態は総括を収集します
原文:http://my.eoe.cn/myboby/archive/17849.html?f=nge
ネットワーク状態には三つの種類があります。
Connective ityManager、WifiManager、TelephonyManager。TelephonyManagerは初めてActivityに入るたびに自動的にネットワークが切断された信号を受信します。ネットワークの状態が変わるたびに何度もフィードバックを受けます。そして状態が正しくないです。これはまだ分かりません。なぜですか?教えてください。
WifiManageこれは携帯電話のWifi接続を傍受するためのものです。
以下の例を示します。
1、携帯電話のネットワーク状態を傍受する(GPRS、WIFI、UMTSなどを含む)
2、携帯の状態が変わったら、放送を送ります。
3、ネットワーク接続に失敗した時、故障の切り替えを行う
4、利用可能なネットワークの高精度と粗い状態をアプリケーションに提供する。
以下はインスタンスコードです。
ネットワーク状態には三つの種類があります。
Connective ityManager、WifiManager、TelephonyManager。TelephonyManagerは初めてActivityに入るたびに自動的にネットワークが切断された信号を受信します。ネットワークの状態が変わるたびに何度もフィードバックを受けます。そして状態が正しくないです。これはまだ分かりません。なぜですか?教えてください。
WifiManageこれは携帯電話のWifi接続を傍受するためのものです。
以下の例を示します。
public class NetworkConnectChangedReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {// wifi , wifi
int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
LogTag.showTAG_e("WIFI ", "wifiState"+wifiState);
switch (wifiState) {
case WifiManager.WIFI_STATE_DISABLED:
break;
case WifiManager.WIFI_STATE_DISABLING:
break;
//
}
}
// wifi , WifiManager.WIFI_STATE_DISABLING, WIFI_STATE_DISABLED , 。
// WifiManager.WIFI_STATE_ENABLED , wifi
if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) {
Parcelable parcelableExtra = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (null != parcelableExtra) {
NetworkInfo networkInfo = (NetworkInfo) parcelableExtra;
State state = networkInfo.getState();
boolean isConnected = state==State.CONNECTED;// ,
LogTag.showTAG_e(this.getClass().getSimpleName(), "isConnected"+isConnected);
if(isConnected){
}else{
}
}
}
}
Connectivity Managerは各種ネットワーク状態をモニターできます。1、携帯電話のネットワーク状態を傍受する(GPRS、WIFI、UMTSなどを含む)
2、携帯の状態が変わったら、放送を送ります。
3、ネットワーク接続に失敗した時、故障の切り替えを行う
4、利用可能なネットワークの高精度と粗い状態をアプリケーションに提供する。
以下はインスタンスコードです。
// , wifi 。.
// 。wifi , , 。
// , wifi,
public class ConnectionChangeResiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(context.CONNECTIVITY_SERVICE);
// GPRS
NetworkInfo mobleworkInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
// wifi
NetworkInfo wifiworkInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifiworkInfo.isConnected()) {
// wifi
} else if (mobleworkInfo.isConnected()) {
// GPRS
} else {
//
}
}
}
放送受信を書いてからコードに登録して放送を受信し、キャンセルします。public class TestconNection {
private ConnectionChangeResiver conResiver;
private Context context;
private TestconNection(Context context){
this.context = context;
}
/**
*
*/
private void registReceive() {
IntentFilter intentFilter = new IntentFilter(
ConnectivityManager.CONNECTIVITY_ACTION);
conResiver = new ConnectionChangeResiver();
context.registerReceiver(conResiver, intentFilter);
}
/**
*
*/
private void unregistReceive(){
context.unregisterReceiver(conResiver);
}
}
//XML
<!-- -->
<receiver android:name=".util.ConnectionChangeResiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Android開発フォーラム http://www.eoeandroid.com/