ConnectivityManager簡介之網絡連接狀態

  1. /** 

  2.   * 測試ConnectivityManager 

  3.   * ConnectivityManager主要管理和網絡連接相關的操作 

  4.   * 相關的TelephonyManager則管理和手機、運營商等的相關信息;WifiManager則管理和wifi相關的信息。 

  5.   * 想訪問網絡狀態,首先得添加權限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  

  6.   * NetworkInfo類包含了對wifi和mobile兩種網絡模式連接的詳細描述,通過其getState()方法獲取的State對象則代表着 

  7.   * 連接成功與否等狀態。 

  8.   *  

  9.   */  


  1. public void testConnectivityManager() {  

  2.   ConnectivityManager connManager = (ConnectivityManager) this  

  3.     .getSystemService(CONNECTIVITY_SERVICE);  

  4.   // 獲取代表聯網狀態的NetWorkInfo對象  

  5.   NetworkInfo networkInfo = connManager.getActiveNetworkInfo();  

  6.   // 獲取當前的網絡連接是否可用  

  7.   boolean available = networkInfo.isAvailable();  

  8.   if(available){  

  9.    Log.i("通知""當前的網絡連接可用");  

  10.   }  

  11.   else{  

  12.    Log.i("通知""當前的網絡連接可用");  

  13.   }  

  14.   

  15.   State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();  

  16.   if(State.CONNECTED==state){  

  17.    Log.i("通知""GPRS網絡已連接");  

  18.   }  

  19.     

  20.   state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();  

  21.   if(State.CONNECTED==state){  

  22.    Log.i("通知""WIFI網絡已連接");  

  23.   }  

  24.     

  25.   // 跳轉到無線網絡設置界面  

  26.   startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));  

  27.   // 跳轉到無限wifi網絡設置界面  

  28.   startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));  

  29.     

  30.  }  


(注意:上面的代碼只是示例,直接運行的話有待修改。)

上面判斷網絡類型的方法只是爲了展示用法,其實完全可以通過networkInfo.getType()的返回值來判斷。

 如:

[java] view plaincopy

  1. Context context = listActivity.getApplicationContext();//獲取應用上下文  

  2. ConnectivityManager connectivityManager = (ConnectivityManager) context  

  3. .getSystemService(Context.CONNECTIVITY_SERVICE);//獲取系統的連接服務  

  4. NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();//獲取網絡的連接情況  

  5. if(activeNetInfo.getType()==ConnectivityManager.TYPE_WIFI){  

  6. //判斷WIFI網  

  7. }else if(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) {  

  8. //判斷3G網  

  9. }  



android.util.Log常用的方法有以下5個:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根據首字母對應VERBOSEDEBUG,INFOWARNERROR

1、Log.v 的調試顏色爲黑色的,任何消息都會輸出,這裏的v代表verbose囉嗦的意思,平時使用就是Log.v("","");

2、Log.d的輸出顏色是藍色的,僅輸出debug調試的意思,但他會輸出上層的信息,過濾起來可以通過DDMS的Logcat標籤來選擇.

3、Log.i的輸出爲綠色,一般提示性的消息information,它不會輸出Log.v和Log.d的信息,但會顯示i、w和e的信息

4、Log.w的意思爲橙色,可以看作爲warning警告,一般需要我們注意優化Android代碼,同時選擇它後還會輸出Log.e的信息。

5、Log.e爲紅色,可以想到error錯誤,這裏僅顯示紅色的錯誤信息,這些錯誤就需要我們認真的分析,查看棧的信息了。

注意:不同的打印方法在使用時都是某個方法帶上(String tag, String msg)參數,tag表示的是打印信息的標籤,msg表示的是需要打印的信息。

下面是我做的一個簡單的LogDemo(Step By Step):

Step 1:準備工作(打開LogCat視窗).

 啓動Eclipse,在Window->Show View會出來一個對話框,當我們點擊Ok按鈕時,會在控制檯窗口出現LogCat視窗.如下圖:

Step 2:新建一個Android工程,命名爲LogDemo.

Step 3:設計UI界面,我們在這裏就加了一個Button按鈕(點擊按鈕出現Log日誌信息).

Main.xml代碼如下:

 

[xhtml] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

  3.     android:orientation="vertical"  

  4.     android:layout_width="fill_parent"  

  5.     android:layout_height="fill_parent"  

  6.     >  

  7. <TextView    

  8.     android:layout_width="fill_parent"   

  9.     android:layout_height="wrap_content"   

  10.     android:text="@string/hello"  

  11.     />  

  12. <Button  

  13.  android:id="@+id/bt"  

  14.  android:layout_width="wrap_content"  

  15.  android:layout_height="wrap_content"  

  16.  android:text="Presse Me Look Log"  

  17. />  

  18. </LinearLayout>  


Step 4:設計主類LogDemo.java,代碼如下:

[java] view plaincopy

  1. public class LogDemo extends Activity {  

  2.     

  3.  private static final String ACTIVITY_TAG="LogDemo";  

  4.  private Button bt;  

  5.     public void onCreate(Bundle savedInstanceState) {  

  6.         super.onCreate(savedInstanceState);  

  7.         setContentView(R.layout.main);  

  8.         //通過findViewById找到Button資源  

  9.         bt = (Button)findViewById(R.id.bt);  

  10.         //增加事件響應  

  11.         bt.setOnClickListener(new Button.OnClickListener(){  

  12.     @Override  

  13.    public void onClick(View v) {  

  14.     Log.v(LogDemo.ACTIVITY_TAG, "This is Verbose.");  

  15.     Log.d(LogDemo.ACTIVITY_TAG, "This is Debug.");  

  16.     Log.i(LogDemo.ACTIVITY_TAG, "This is Information");  

  17.     Log.w(LogDemo.ACTIVITY_TAG, "This is Warnning.");  

  18.     Log.e(LogDemo.ACTIVITY_TAG, "This is Error.");  

  19.    }  

  20.            

  21.         });  

  22.     }  

  23.           

  24. }  


Step 5:運行LogDemo工程,效果如下:

當我們點擊按鈕時,會觸發事件,在Logcat視窗下有如下效果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章