Androidの携帯電話のネットの状態は総括を収集します


原文:http://my.eoe.cn/myboby/archive/17849.html?f=nge
ネットワーク状態には三つの種類があります。
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/