歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 訪問Android硬件資源の管理網絡和Wifi連接

訪問Android硬件資源の管理網絡和Wifi連接

日期:2017/3/1 10:33:13   编辑:Linux編程

(1)ConnectivityManager

在Android中,ConnectivityManager類代表網絡連接服務,它被用來監控網絡連接狀態,配置失效重連,並控制網絡天線等。獲取Connectivity Manager實例的方法是使用getSystemService,並指定Context.CONNECTIVITY_SERVICE作為參數,代碼片段如下:

[java]
  1. String cserviceName = Context.CONNECTIVITY_SERVICE;
  2. ConnectivityManager cm = (ConnectivityManager) getSystemService(cserviceName);
要使用Connectivity Manager來讀寫網絡狀態時,需要在AndroidManifest.xml文件中加入如下的許可: [html]
  1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  2. <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

Connectivity Manager在較高層面提供了管理可用網絡連接的接口,使用getActiveNetworkInfo和getNetworkInfo函數可以查詢獲取NetworkInfo對象,該對象包含了當前活動網絡連接或者指定類型的不可用網絡連接的詳細信息。

1.1)設置首選網絡

當任何認證的應用程序請求網絡連接時,Android都會優先嘗試使用首選網絡連接。設置首選網絡連接的函數是setNetworkPreference,代碼片段如下:

[java]
  1. cm.setNetworkPreference(ConnectivityManager.TYPE_WIFI);

當首選網絡連接不可用或者連接丟失時,Android將自動嘗試使用第二優先連接類型。


1.2)監控網絡連接

ConnectivityManager最常用的一個功能就是當網絡連接狀態改變時通知應用程序,這是通過應用程序實現自己的Broadcast Receiver來監聽ConnectivityManager.CONNECTIVITY_ACTION類型的intent來實現的。這個intent提供了以下幾種extra來進一步明確發生改變的網絡狀態:

1)ConnectivityManager.EXTRA_IS_FAILOVER:值為true說明當前的連接是首選網絡失效重連後的連接;

2)ConnectivityManager.EXTRA_NO_CONNECTIVITY:值為true表示當前設備沒有連接到網絡;

3)ConnectivityManager.EXTRA_REASON:如果當前的廣播代表網絡失效,則這個值包含了連接失效的原因描述;

4)ConnectivityManager.EXTRA_NETWORK_INFO:返回NetworkInfo對象,包含了當前連接事件相關的網絡詳細信息;

5)ConnectivityManager.EXTRA_OTHER_NETWORK_INFO:在一個網絡斷開連接時,這個值返回NetworkInfo對象,包含了可能的網絡失效重連的詳細信息;

Copyright © Linux教程網 All Rights Reserved