ScrccnModc() { int screenMode = 0; try{ screenMode = Settings. Sytem.getInt(getContentResolver(),Setti ngs.System.SCREEN-BRIGHTNESS-MODE); } catch(Exception localException) {) return screenMode; }
[0119] 2、所述本機運行數(shù)據(jù)包括移動終端當前的網(wǎng)絡類型信息,如2G、3G、4G、WiFi等, 移動終端在收發(fā)信號進行無線通信的過程中會產生耗電,且基于不同的網(wǎng)絡類型其通信方 式不同,從而造成不同程度的耗電量,4G的耗電量大于2G和3G,WiFi耗電量相對最低,故 不同的網(wǎng)絡狀態(tài)會對移動終端產生不同的耗電量。在具體實施例中,以Android系統(tǒng)為例, 通過ConnectivityManager獲取到Networkslnfo對象,調用方法getType ()獲取類型,判 斷是 WiFi 還是mobile,如果是 mobile 則調用方法 getNetworkClass (int networkType)判 斷是2G、3G還是4G。在其他實施例中,還可以通過監(jiān)聽網(wǎng)絡狀態(tài)改變的廣播獲取網(wǎng)絡類型 信息。
[0120] 3、所述本機運行數(shù)據(jù)包括當前自啟動的應用程序列表,檢測當前自啟動的應用程 序,并記錄在應用程序列表中。應用程序的運行是主要的耗電項,應用程序在運行過程中 占用系統(tǒng)內存,且為了使運行的應用程序更加順暢而提高CPU運行頻率,這些行為都會造 成大量的耗電。而自啟動是在未經用戶授權啟動的情況下自行啟動的行為,使得其應用程 序運行于系統(tǒng)中,從而造成耗電,且運行的應用程序越多耗電量越大。在具體實施例中,以 Android系統(tǒng)為例,通過獲取應用程序的Applicationlnfo信息,檢查其Permission中是否 有RECEIVE_B00T_C0MPLETED,如果有則該應用程序為開機自啟動項。在其他實施例中,也可 以通過向系統(tǒng)注冊一個后臺服務,監(jiān)聽應用程序的自啟動行為,將自啟動應用程序的包名 記錄到所述應用程序列表中。
[0121] 4、所述本機運行數(shù)據(jù)包括本機各傳感器的運行狀態(tài)數(shù)據(jù)。如用于感知手機當前 加速度的加速度傳感器,用于根據(jù)移動終端所處的光線條件自動調節(jié)屏幕亮度的光線傳感 器,用于測量溫度的溫度傳感器,以及用于測量某個對象到屏幕距離的距離傳感器等各種 傳感器。智能移動終端有很多的傳感器,這些部件在手機不需要使用時可能還處在活躍狀 態(tài),從而造成電量損耗。在具體實施例中,以Android為例,該系統(tǒng)提供了驅動程序管理各 種傳感器,通過監(jiān)聽器的方式監(jiān)聽傳感器硬件來感知外部環(huán)境的變化。通過獲取傳感器服 務SensorManager獲取各傳感器的運行狀態(tài)數(shù)據(jù),所述獲取SensorManager的代碼如下:
[0122] Manager = (SensorManager)getSystemService(SENS0R_SERVICE);
[0123] 調用各傳感器的監(jiān)聽器registerListener ()方法,獲取傳感器的頻率值。 如 SensorManager.SENSOR_DELAY_FASTEST為最快的頻率,SensorManager.SENSOR_DELAY_GAME為適合游戲的頻率,SensorManager.SENSOR_DELAY_NORMAL為正常頻率, SensorManager.SENSOR_DELAY_UI為適合用戶界面變化的頻率。
[0124] 5、所述本機運行數(shù)據(jù)包括本機鎖屏狀態(tài)下以后臺服務運行的應用程序列表,檢測 以后臺服務運行的應用程序,并記錄到預設列表中。后臺進程也是造成電量消耗過快的一 大因素,比如QQ、微信等軟件都會常駐后臺,并在接收到消息時發(fā)出提醒,雖然后臺進程不 會消耗CPU,但會占用內存,造成電量消耗。很多手機軟件并無必要常駐后臺,但為了推送廣 告、提高軟件的活躍率等指標,都會在后臺常駐,這就造成CPU在鎖屏之后始終不能進入休 眠狀態(tài),從而造成耗電。在具體實施例中,可先獲取系統(tǒng)的root權限,注入后臺服務進程, 監(jiān)控以后臺服務運行的應用程序,獲取其包名記錄于相應的預設列表中。
[0125] 6、所述本機運行數(shù)據(jù)包括本機的鎖屏設置時間值。鎖屏也會產生耗電,鎖屏時間 越長耗電越多,故縮短鎖屏時間可以節(jié)省電量。在具體實施例中,以Android系統(tǒng)為例,通 過調用以下函數(shù)獲取當前本機的鎖屏設置時間值:
[0126] private int getScreenOffTirneQ { int screenOffTime = 0; try{ screenOflTime.=Settings.Sytein.getInt(getContentResoiver(),S ettings.System.SCREEN_OFF_TIMEOUT); } catch(Exception localException){} return screenOffTime; }
[0127] 在其他實施例中,通過在系統(tǒng)中設置一個鎖屏時間異常檢測進程,從開啟屏幕時 開始運行,鎖屏后停止運行。如果該進程運行時間過長,超過設定的閾值,則判斷該鎖屏時 間異常,記錄該異常數(shù)據(jù)作為鎖屏數(shù)據(jù)。
[0128] 此外,所述請求指令還包括本機當前的電池電量,以便依照該電池電量配置最優(yōu) 化的省電配置信息。
[0129] 上述的本機運行數(shù)據(jù)只是對運行數(shù)據(jù)的部分列表,還可以包括系統(tǒng)運行中其他存 在耗電的部件、程序、狀態(tài)等的運行數(shù)據(jù)或設置數(shù)據(jù),在此不一一列舉。本發(fā)明所述請求單 元12將所述運行數(shù)據(jù)發(fā)送給云端服務器,請求依據(jù)發(fā)送的數(shù)據(jù)信息反饋相應的省電優(yōu)化 配置信息。從硬件和軟件的雙重角度分析系統(tǒng)的耗電情況,使對移動終端的耗電分析更全 面,從而得到的省電優(yōu)化配置信息也更精準、更全面。
[0130] 獲取單元13用于通過遠程接口獲取云端服務器反饋的省電優(yōu)化配置信息;
[0131] 云端服務器接收到本機客戶端發(fā)送的請求指令,向客戶端反饋相應的省電優(yōu)化配 置信息,獲取單元13通過遠程端口獲取云端服務器反饋的省電優(yōu)化配置信息。其中,云端 服務器基于移動終端的身份信息發(fā)送相應的省電優(yōu)化配置信息,如機型信息或MAC地址信 息等唯一性確定移動終端身份的信息。所述獲取單元13接收到云端反饋的包含省電優(yōu)化 配置信息的數(shù)據(jù)包,對其進行解析,獲取相應的省電優(yōu)化配置數(shù)據(jù)。
[0132] 執(zhí)行單元14用于根據(jù)所述省電優(yōu)化配置信息執(zhí)行對移動終端的省電修復過程, 完成優(yōu)化。
[0133] 接收到云端服務器反饋的省電優(yōu)化配置信息,由本發(fā)明裝置所述的執(zhí)行單元14 基于相應的信息執(zhí)行省電修復過程,對移動終端的硬件和軟件的相應設置進行調整,以減 少移動終端的耗電。具體包括:
[0134] 1、所述執(zhí)行單元14依據(jù)接收到的省電配置信息包含的屏幕亮度的省電配置信息 調整屏幕亮度。以Android系統(tǒng)為例,在具體實施例中,通過調用以下函數(shù)實現(xiàn)對屏幕亮度 值的設置,以調節(jié)屏幕亮度:
[0135] private void savcScrccnBrightncss(int paramlnt) { tryj Settings. System.putInt(getContentResolver(),Settings. System. SCR EEN_BRIGHTNESS, paramlnt); } c ate h (Ex c eption 1 oc al Ex c ep tion) {
[0136] local Exception.printStackTrace(); } }
[0137] 其中,參數(shù)paramlnt為要設置的屏幕亮度值,在具體實施例中為接收到的省電配 置信息中的屏幕亮度值。
[0138] 2、所述網(wǎng)絡類型信息為反饋的省電配置信息提供參考,基于該網(wǎng)絡類型信息反饋 適合該網(wǎng)絡類型的最優(yōu)化的省電模式。
[0139] 3、所述執(zhí)行單元14依據(jù)接收到的省電配置信息中的禁止自啟動的應用程序包 名,禁止本機相應的應用程序的自啟動行為。以Android系統(tǒng)為例,在具體實施例中,向獲 取root權限的系統(tǒng)注入一個后臺服務,監(jiān)控應用程序的自啟動行為,如果自啟動的應用程 序為省電配置信息中的禁止自啟動的應用程序包名,則禁止該應用程序自啟動,具體可通 過調用函數(shù)killProcessO終止應用程序的啟動行為。依次對接收到的省電配置信息中的 禁止自啟動的應用程序執(zhí)行以上操作,終止該些應用程序的自啟動行為。
[0140] 4、所述執(zhí)行單元14依據(jù)接收到的省電配置信息中的傳感器狀態(tài)信息設定當前的 傳感器狀態(tài)。如以Android系統(tǒng)為例,在具體實施例中,sens orManager管理系統(tǒng)的傳感 器,調用函數(shù)getDefaultSensor(int type)獲取指定的傳感器,如方向傳感器,參數(shù)type 為 sensor. TYPE_ORIENTATION ;光線傳感器,參數(shù) type 為 sensor. TYPE_LIGHT。通過回調調 用函數(shù)onSe nsorChangedO依照接收到的省電配置信息中的傳感器頻率值修改相應的傳 感器的頻率值。
[0141] 5、所述執(zhí)行單元14依據(jù)接收到的省電配置信息中的禁止以后臺服務運行的應用 程序的包名,關閉相應的應用程序的后臺服務。以Android系統(tǒng)為例,在具體實施例中,向 獲取root權限的系統(tǒng)注入一個后臺服務,監(jiān)控以后臺服務運行的應用程序。如果應用程序 為省電配置信息中的禁止以后臺服務運行的應用程序的包名,則關閉該應用程序,具體可 通過調用函數(shù)killProcessO或forceStopPackageO終止該應用程序。依次對接收到的 省電配置信息中的禁止以后臺服務運行的應用程序執(zhí)行以上操作,終止該些應用程序。
[0142] 6、所述執(zhí)行單元14依據(jù)接收到的省電配置信息中的鎖屏設置時間值設置本機的 鎖屏設置時間,具體將所述獲取的鎖屏設置時間值替換當前的鎖屏設置時間值。以Android 系統(tǒng)為例,在具體實施例中,通過調用以下函數(shù)實現(xiàn)對鎖屏設置時間的調整:
[0143] private void setScreenOffTime(int paramlnt) { try{ Settings. System.putInt(getContentReso!ver(),Settings. System. SCR E EN_0 F F_T IM EOIJ T, p aram I n t); } catch{Exception local Exception) { localException.printStackTraceQ; } }
[