Android參數分析
Android的參數大緻分成兩塊:系統服務參數和平台系統資訊。 系統服務參數:Android的系統服務不僅指服務元件,而且還包括Android 系統提供的服務功能。Android為這些系統服務參數提供了接口---管理器,不同的元件會有不同的管理器進行管理,主要有Wi-Fi管理,連接配接管理,電話管理,電源管理,振動管理,音量管理,輸入法管理,視窗管理等等,我們通過這些系統服務接口就可以友善地擷取系統資訊。我在此處把一些可能和華為項目相關的管理器拿出來仔細研究研究。 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():擷取目前系統中根檔案環境變量。 |