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ù)提供了接口---管理器篮灼,不同的組件會有不同的管理器進行管理德频,主要有Wi-Fi管理,連接管理晋辆, 電話管理渠脉,電源管理,振動管理瓶佳,音量管理芋膘,輸入法管理,窗口管理等等霸饲,我們通過這些系統(tǒng)服務(wù)接口就可以方便地獲取系統(tǒng)信息为朋。我在此處把一些可能和華為項目 相關(guān)的管理器拿出來仔細研究研究。
Wi-Fi管理(重點):
WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);
//獲取Wi-Fi配置接口的屬性
List wifiConfig = wifi_service.getConfiguredNetworks();
wifiConfig中包含四個屬性:
BSSID:BSS是一種特殊的Ad-hoc LAN(一種支持點對點訪問的無線網(wǎng)絡(luò)應(yīng)用模
式)的應(yīng)用厚脉,一個無線網(wǎng)絡(luò)至少由一個連接到有線網(wǎng)絡(luò)的AP和若干無線
工作站組成习寸,這種配置稱為一個基本服務(wù)裝置。一群計算機設(shè)定相同的
BSS名稱傻工,即可自成一個group霞溪,而此BSS名稱,即所謂BSSID中捆。通常鸯匹,手
機WLAN中,bssid其實就是無線路由的MAC地址泄伪。
networkid:網(wǎng)絡(luò)ID殴蓬。
PreSharedKey:無線網(wǎng)絡(luò)的安全認證模式。
SSID:SSID(Service Set Identif)用于標識無線局域網(wǎng)蟋滴,SSID不同的無線網(wǎng)
絡(luò)是無法進行互訪的染厅。
//獲取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就是接受信號強度指示凌净。在這可以直
接和華為提供的Wi-Fi信號閾值進行比較來提供給用戶,讓用戶對網(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:對該訪問點安全方面的描述误算。
//獲取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,表示準備就緒懦尝。
WIFI_STATE_UNKNOWN:常量4知纷,表示未知狀態(tài)。
說明:進行網(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():獲取詳細狀態(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" />
當網(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:屏幕點亮翩活,鍵盤關(guān)閉阱洪。
FULL_WAKE_LOCK:屏幕點亮,鍵盤點亮菠镇。
ACQUIRE_CAUSES_WAKEUP:當通過喚醒鎖喚醒設(shè)備時冗荸,強制屏幕或鍵盤馬上點
亮(例如:作為重要信息的通知)。
ON_AFTER_RELEASE:當喚醒鎖釋放時用戶的Activity組件會被重置利耍,這會造
成屏幕持續(xù)顯示較長的事件蚌本。
//通過喚醒鎖的“acquire”方法按照指定的等級來喚醒設(shè)備,當不需要喚醒鎖時
可以通過“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”方法取消震動,或者當用戶的程序退出時出嘹,所有用戶啟動的震動都將停
止席楚。
平臺系統(tǒng)信息:Android平臺對系統(tǒng)中的進程管理,文件系統(tǒng)税稼,環(huán)境變量烦秩,系統(tǒng)時間,平臺信息和電池管理等核心部分的訪問進行深層次的封裝郎仆,從而讓開發(fā)者能夠獲得更多的核心系統(tǒng)信息只祠。
android.os.Process
//獲取當前進程的方法
android.os.Process.getElapsedCpuTime():獲取消耗的時間。
android.os.Process.myPid():獲取該進程的ID扰肌。
android.os.Process.myTid():獲取調(diào)用進程的ID抛寝。
android.os.Process.myUid():獲取該進程的用戶ID。
android.os.Process.supportsProcesses:判斷該進程是否支持多進程曙旭。
// 獲取/設(shè)置線程優(yōu)先級
getThreadPriority(int tid):獲取指定ID的線程的優(yōu)先級盗舰。
setThreadPriority(int priority):設(shè)置當前線程的優(yōu)先級。
setThreadPriority(int tid,int priority):設(shè)置指定ID的線程的優(yōu)先級桂躏。
//管理進程
killProcess(int pid):殺死指定的進程钻趋。
sendSignal(int pid,int singal):向指定的進程發(fā)送信號。
android.os.Environment
//獲取系統(tǒng)環(huán)境變量
getDataDirectory():獲取當前系統(tǒng)中數(shù)據(jù)文件夾環(huán)境變量剂习。
getDownloadCacheDirectory():獲取當前系統(tǒng)中下載緩存文件環(huán)境變量蛮位。
getExternalStorageDirectory():獲取當前系統(tǒng)中外部存儲文件環(huán)境變量。
getRootDirectory():獲取當前系統(tǒng)中根文件環(huán)境變量鳞绕。