Android的參數大致分成兩塊:系統服務參數和平台系統資訊。
系統服務參數:Android的系統服務不僅指服務元件,而且還包括 Android 系統提供的服務功能。Android為這些系統服務參數提供了介面---管理器,不同的組件會有不同的管理器進行管理,主要有Wi-Fi管理,串連管理, 電話管理,電源管理,震動管理,音量管理,IME管理,視窗管理等等,我們通過這些系統服務介面就可以方便地擷取系統資訊。我在此處把一些可能和華為項目 相關的管理器拿出來仔細研究研究。
Wi-Fi管理(重點):
WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);
//擷取Wi-Fi配置介面的屬性
List wifiConfig = wifi_service.getConfiguredNetworks();
wifiConfig中包含四個屬性:
BSSID:BSS是一種特殊的Ad-hoc LAN(一種支援點對點訪問的無線網路應用模
式)的應用,一個無線網路至少由一個串連到有線網路的AP和若干無線
工作站組成,這種配置稱為一個基本服務裝置。一群電腦設定相同的
BSS名稱,即可自成一個group,而此BSS名稱,即所謂BSSID。通常,手
機WLAN中,bssid其實就是無線路由的MAC地址。
networkid:網路ID。
PreSharedKey:無線網路的安全認證模式。
SSID:SSID(Service Set Identif)用於標識無線區域網路,SSID不同的無線網
絡是無法進行互訪的。
//擷取Wi-Fi的串連資訊
WifiInfo wifiinfo = wifi_service.getConnectionInfo();
wifiinfo.getBSSID():擷取BSSIS(上面已說明)。
wifiinfo.getSSID():擷取SSID(上面已說明)。
wifiinfo.getIpAddress():擷取IP地址。
wifiinfo.getMacAddress():擷取MAC地址。
wifiinfo.getNetworkId():擷取網路ID。
wifiinfo.getLinkSpeed():擷取連線速度,可以讓使用者獲知這一資訊。
wifiinfo.getRssi():擷取RSSI,RSSI就是接受訊號強度指示。在這可以直
接和華為提供的Wi-Fi訊號閾值進行比較來提供給使用者,讓使用者對網路
或地理位置做出調整來獲得最好的串連效果。
//擷取DHCP資訊
DhcpInfo dhcpinfo = wifi_service.getDhcpInfo();
ipAddress:擷取IP地址。
gateway:擷取網關。
netmask:擷取子網路遮罩。
dns1:擷取DNS。
dns2:擷取備用DNS。
serverAddress:擷取伺服器位址。
//擷取掃描資訊
List scanResult = wifi_service.getScanResults();
BSSID:擷取BSSID(上面已說明)。
SSID:擷取網路名稱(上面已說明)。
level:擷取訊號等級。
frequency:擷取頻率。
capabilites:對該訪問點安全方面的描述。
//擷取Wi-Fi的網路狀態
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,表示未知狀態。
說明:進行網路連接的時候,這些狀態都會被顯示在Notification上,直
接可以通過此處擷取各個狀態來完成華為的Notification中Wi- Fi
狀態顯示的需求。
串連管理:
ConnectivityManager connectionManager = (ConnectivityManager)
getSystemService(CONNECTIVITY_SERVICE);
//擷取網路的狀態資訊,有下面三種方式
NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
NetworkInfo wifiInfo =
connectionManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobileInfo =
connectionManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
getDetailedState():擷取詳細狀態。
getExtraInfo():擷取附加資訊。
getReason():擷取串連失敗的原因。
getType():擷取網路類型(一般為移動或Wi-Fi)。
getTypeName():擷取網路類型名稱(一般取值“WIFI”或“MOBILE”)。
isAvailable():判斷該網路是否可用。
isConnected():判斷是否已經串連。
isConnectedOrConnecting():判斷是否已經串連或正在串連。
isFailover():判斷是否串連失敗。
isRoaming():判斷是否漫遊。
//網路狀態接聽程式的使用
在程式中寫一個Service類繼承BroadcasrReceiver:
public class NetMonitor extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
}
}
在androidManifest.xml中申明該Rervice:
<service android:name="NetMonitor" android:lable="NetMonitor">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</service>
當網路狀態發生改變的時候,就可以通過該Rervice監聽到該變化,並作出相應
的動作。
電源管理:
PowerManager power = (PowerManager) getSystemService(POWER_SERVICE);
PARTIAL_WAKE_LOCK:螢幕關閉,鍵盤關閉。
SCREEN_DIM_WAKE_LOCK:螢幕邊暗,鍵盤關閉。
SCREEN_BRIGHT_WAKE_LOCK:螢幕點亮,鍵盤關閉。
FULL_WAKE_LOCK:螢幕點亮,鍵盤點亮。
ACQUIRE_CAUSES_WAKEUP:當通過喚醒鎖喚醒裝置時,強制螢幕或鍵盤馬上點
亮(例如:作為重要訊息的通知)。
ON_AFTER_RELEASE:當喚醒鎖釋放時使用者的Activity組件會被重設,這會造
成螢幕持續顯示較長的事件。
//通過喚醒鎖的“acquire”方法按照指定的等級來喚醒裝置,當不需要喚醒鎖時
可以通過“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”方法就可以設定震動持續的時間並啟動震動,通過震動
器的“cancel”方法取消震動,或者當使用者的程式退出時,所有使用者啟動的震動都將停
止。
平台系統資訊:Android平台對系統中的進程管理,檔案系統,環境變數,系統時間,平台資訊和電池管理等核心部分的訪問進行深層次的封裝,從而讓開發人員能夠獲得更多的核心系統資訊。
android.os.Process
//擷取當前進程的方法
android.os.Process.getElapsedCpuTime():擷取消耗的時間。
android.os.Process.myPid():擷取該進程的ID。
android.os.Process.myTid():擷取調用進程的ID。
android.os.Process.myUid():擷取該進程的使用者ID。
android.os.Process.supportsProcesses:判斷該進程是否支援多進程。
// 擷取/設定線程優先順序
getThreadPriority(int tid):擷取指定ID的線程的優先順序。
setThreadPriority(int priority):設定當前線程的優先順序。
setThreadPriority(int tid,int priority):設定指定ID的線程的優先順序。
//管理進程
killProcess(int pid):殺死指定的進程。
sendSignal(int pid,int singal):向指定的進程發送訊號。
android.os.Environment
//擷取系統內容變數
getDataDirectory():擷取當前系統中資料檔案夾環境變數。
getDownloadCacheDirectory():擷取當前系統中下載快取檔案環境變數。
getExternalStorageDirectory():擷取當前系統中外部隱藏檔環境變數。
getRootDirectory():擷取當前系統中根檔案環境變數。