關(guān)于android的wifi信息

Android的參數(shù)大致分成兩塊:系統(tǒng)服務(wù)參數(shù)和平臺系統(tǒng)信息。


系統(tǒng)服務(wù)參數(shù):Android的系統(tǒng)服務(wù)不僅指服務(wù)組件,而且還包括 Android 系統(tǒng)提供的服務(wù)功能。Android為這些系統(tǒng)服務(wù)參數(shù)提供了接口---管理器,不同的組件會有不同的管理器進(jìn)行管理,主要有Wi-Fi管理,連接管理, 電話管理,電源管理,振動管理,音量管理,輸入法管理,窗口管理等等,我們通過這些系統(tǒng)服務(wù)接口就可以方便地獲取系統(tǒng)信息。我在此處把一些可能和華為項目 相關(guān)的管理器拿出來仔細(xì)研究研究。

Wi-Fi管理(重點(diǎn)):

WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);

//獲取Wi-Fi配置接口的屬性

List wifiConfig = wifi_service.getConfiguredNetworks();

wifiConfig中包含四個屬性:

BSSID:BSS是一種特殊的Ad-hoc LAN(一種支持點(diǎn)對點(diǎn)訪問的無線網(wǎng)絡(luò)應(yīng)用模

式)的應(yīng)用,一個無線網(wǎng)絡(luò)至少由一個連接到有線網(wǎng)絡(luò)的AP和若干無線

工作站組成,這種配置稱為一個基本服務(wù)裝置。一群計算機(jī)設(shè)定相同的

BSS名稱,即可自成一個group,而此BSS名稱,即所謂BSSID。通常,手

機(jī)WLAN中,bssid其實(shí)就是無線路由的MAC地址。

networkid:網(wǎng)絡(luò)ID。

PreSharedKey:無線網(wǎng)絡(luò)的安全認(rèn)證模式。

SSID:SSID(Service Set Identif)用于標(biāo)識無線局域網(wǎng),SSID不同的無線網(wǎng)

絡(luò)是無法進(jìn)行互訪的。

//獲取Wi-Fi的連接信息

WifiInfo wifiinfo = wifi_service.getConnectionInfo();

wifiinfo.getBSSID():獲取BSSIS(上面已說明)。

wifiinfo.getSSID():獲取SSID(上面已說明)。

wifiinfo.getIpAddress():獲取IP地址。

wifiinfo.getMacAddress():獲取MAC地址。

wifiinfo.getNetworkId():獲取網(wǎng)絡(luò)ID。

wifiinfo.getLinkSpeed():獲取連接速度,可以讓用戶獲知這一信息。

wifiinfo.getRssi():獲取RSSI,RSSI就是接受信號強(qiáng)度指示。在這可以直

接和華為提供的Wi-Fi信號閾值進(jìn)行比較來提供給用戶,讓用戶對網(wǎng)絡(luò)

或地理位置做出調(diào)整來獲得最好的連接效果。

//獲取DHCP信息

DhcpInfo dhcpinfo = wifi_service.getDhcpInfo();

ipAddress:獲取IP地址。

gateway:獲取網(wǎng)關(guān)。

netmask:獲取子網(wǎng)掩碼。

dns1:獲取DNS。

dns2:獲取備用DNS。

serverAddress:獲取服務(wù)器地址。

//獲取掃描信息

List scanResult = wifi_service.getScanResults();

BSSID:獲取BSSID(上面已說明)。

SSID:獲取網(wǎng)絡(luò)名(上面已說明)。

level:獲取信號等級。

frequency:獲取頻率。

capabilites:對該訪問點(diǎn)安全方面的描述。

//獲取Wi-Fi的網(wǎng)絡(luò)狀態(tài)

int wifiState = wifi_service.getWifiState();

WIFI_STATE_DISABLING:常量0,表示停用中。

WIFI_STATE_DISABLED:常量1,表示不可用。

WIFI_STATE_ENABLING:常量2,表示啟動中。

WIFI_STATE_ENABLED:常量3,表示準(zhǔn)備就緒。

WIFI_STATE_UNKNOWN:常量4,表示未知狀態(tài)。

說明:進(jìn)行網(wǎng)絡(luò)連接的時候,這些狀態(tài)都會被顯示在Notification上,直

接可以通過此處獲取各個狀態(tài)來完成華為的Notification中Wi- Fi

狀態(tài)顯示的需求。

連接管理:

ConnectivityManager connectionManager = (ConnectivityManager)

getSystemService(CONNECTIVITY_SERVICE);

//獲取網(wǎng)絡(luò)的狀態(tài)信息,有下面三種方式

NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();

NetworkInfo wifiInfo =

connectionManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

NetworkInfo mobileInfo =

connectionManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

getDetailedState():獲取詳細(xì)狀態(tài)。

getExtraInfo():獲取附加信息。

getReason():獲取連接失敗的原因。

getType():獲取網(wǎng)絡(luò)類型(一般為移動或Wi-Fi)。

getTypeName():獲取網(wǎng)絡(luò)類型名稱(一般取值“WIFI”或“MOBILE”)。

isAvailable():判斷該網(wǎng)絡(luò)是否可用。

isConnected():判斷是否已經(jīng)連接。

isConnectedOrConnecting():判斷是否已經(jīng)連接或正在連接。

isFailover():判斷是否連接失敗。

isRoaming():判斷是否漫游。

//網(wǎng)絡(luò)狀態(tài)偵聽器的使用

在程序中寫一個Service類繼承BroadcasrReceiver:

public class NetMonitor extends BroadcastReceiver {

public void onReceive(Context context, Intent intent) {

}

}

在androidManifest.xml中申明該Rervice:

.NET.conn.CONNECTIVITY_CHANGE" />

當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生改變的時候,就可以通過該Rervice監(jiān)聽到該變化,并作出相應(yīng)

的動作。

電源管理:

PowerManager power = (PowerManager) getSystemService(POWER_SERVICE);

PARTIAL_WAKE_LOCK:屏幕關(guān)閉,鍵盤關(guān)閉。

SCREEN_DIM_WAKE_LOCK:屏幕邊暗,鍵盤關(guān)閉。

SCREEN_BRIGHT_WAKE_LOCK:屏幕點(diǎn)亮,鍵盤關(guān)閉。

FULL_WAKE_LOCK:屏幕點(diǎn)亮,鍵盤點(diǎn)亮。

ACQUIRE_CAUSES_WAKEUP:當(dāng)通過喚醒鎖喚醒設(shè)備時,強(qiáng)制屏幕或鍵盤馬上點(diǎn)

亮(例如:作為重要信息的通知)。

ON_AFTER_RELEASE:當(dāng)喚醒鎖釋放時用戶的Activity組件會被重置,這會造

成屏幕持續(xù)顯示較長的事件。

//通過喚醒鎖的“acquire”方法按照指定的等級來喚醒設(shè)備,當(dāng)不需要喚醒鎖時

可以通過“release”方法來釋放。

PowerManager.WakeLock locker = powerManager.NewWakeLock(PowerManager.

ACQUIRE_CAUSES_WAKEUP|powerManager.SCREEN_BRIGHT_WAKE_LOCK,

"PowerServiceDemo");

locker.acquire();

locker.release();

振動管理:

Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);

通過振動器的“vibrate”方法就可以設(shè)置震動持續(xù)的時間并啟動震動,通過震動

器的“cancel”方法取消震動,或者當(dāng)用戶的程序退出時,所有用戶啟動的震動都將停

止。

平臺系統(tǒng)信息:Android平臺對系統(tǒng)中的進(jìn)程管理,文件系統(tǒng),環(huán)境變量,系統(tǒng)時間,平臺信息和電池管理等核心部分的訪問進(jìn)行深層次的封裝,從而讓開發(fā)者能夠獲得更多的核心系統(tǒng)信息。

android.os.Process

//獲取當(dāng)前進(jìn)程的方法

android.os.Process.getElapsedCpuTime():獲取消耗的時間。

android.os.Process.myPid():獲取該進(jìn)程的ID。

android.os.Process.myTid():獲取調(diào)用進(jìn)程的ID。

android.os.Process.myUid():獲取該進(jìn)程的用戶ID。

android.os.Process.supportsProcesses:判斷該進(jìn)程是否支持多進(jìn)程。

// 獲取/設(shè)置線程優(yōu)先級

getThreadPriority(int tid):獲取指定ID的線程的優(yōu)先級。

setThreadPriority(int priority):設(shè)置當(dāng)前線程的優(yōu)先級。

setThreadPriority(int tid,int priority):設(shè)置指定ID的線程的優(yōu)先級。

//管理進(jìn)程

killProcess(int pid):殺死指定的進(jìn)程。

sendSignal(int pid,int singal):向指定的進(jìn)程發(fā)送信號。

android.os.Environment

//獲取系統(tǒng)環(huán)境變量

getDataDirectory():獲取當(dāng)前系統(tǒng)中數(shù)據(jù)文件夾環(huán)境變量。

getDownloadCacheDirectory():獲取當(dāng)前系統(tǒng)中下載緩存文件環(huán)境變量。

getExternalStorageDirectory():獲取當(dāng)前系統(tǒng)中外部存儲文件環(huán)境變量。

getRootDirectory():獲取當(dāng)前系統(tǒng)中根文件環(huán)境變量。

主要參考文章請點(diǎn)這里.

具體用法參考地址.?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容