天天看點

Android參數分析

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():擷取目前系統中根檔案環境變量。

繼續閱讀