導航:首頁 > 操作系統 > android待機喚醒

android待機喚醒

發布時間:2022-08-17 20:14:30

『壹』 android系統後台喚醒怎麼關閉

Android 系統支持應用程序及服務在待機前保存程序運行狀態,如待機前關閉文件讀寫、usb 操作、暫停音樂播放;也支持喚醒後的程序狀態恢復,如恢復打開文件進行讀寫操作,恢復 usb 操作、恢復音樂播放等。這些狀態的保存和恢復功能可以保證系統在待機喚醒後能正常工作。
主要提供兩種方式:
1、待機廣播消息和喚醒廣播消息。
2、Wakelock 鎖機制。

分為兩個部分說明一下:
1、android 系統待機處理機制
待機廣播消息和喚醒廣播消息
系統在 PowerManagerService 類中注冊了 2 個廣播分別用於待機前和喚醒後發送。
void initInThread(){
//喚醒後:
mScreenOnIntent=newIntent(Intent.ACTION_SCREEN_ON);//喚醒後發送
mScreenOnIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
//待機前:
mScreenOffIntent=newIntent(Intent.ACTION_SCREEN_OFF);//待機時發送
mScreenOffIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
}
這里順帶說明一下廣播接收的優先順序問題:
接收者按照在 Manifest.xml 文件中設置的接收順序依次接收Intent,順序執行的,接收的優先順序可以在系統配置文件中設置:
聲明在intent-filter元素的android:priority 屬性中,數值越大優先順序別越高,其取值范圍為-1000到1000。當然也可以在調用IntentFilter對象的setPriority()方法進行設置
Wakelock 鎖機制:
應用程序可以通過申請 wakelock 鎖的機制來對系統是否待機作出投票,當有任何一個應用申請了 wakelock 鎖,待機時沒有釋放掉,系統是不會進入待機的,直到所有應用的 wakelock 鎖都釋放掉了,才會進入待機。

『貳』 Android OS進程長時間處於「保持喚醒狀態」

在設置→開發人員選項里修改→喚醒

『叄』 Android操作系喚醒耗電異常怎麼辦 如何解決耗電異常

Android系統耗電異常解決辦法如下:

  1. 關機。使用原裝充電器為手機充電,直到充滿,而且充電期間不能開機。

  2. 電池充滿之後在不拔電源的前提下開機,進系統之後使用「re文件管理器」或者「文件大師」等同類型的工具刪除/data/system/batterystats.bin這個文件(batterystats.bin這個文件是android系統記錄的包括電壓在內的各種電池信息,刪除這個文件之後系統會重新統計這個電池的使用信息)

  3. 拔下電源,正常使用手機直到自動關機,在等待1~2分鍾之後再次開機,把剩餘電量全部用盡。

  4. 關機狀態下重新為手機電池充電,充滿後即可開始正常使用,此時手機已經重新獲取了當前電池的電量信息。


『肆』 android gsensor 休眠震動喚醒功能如何實現

一、喚醒源

設備休眠後,通過觸發喚醒源使設備恢復正常工作模式。設備喚醒源有多種,對於Android設備常見的就有PowerKey、來電喚醒、Alarm喚醒等。

喚醒源的實現處於內核空間,本文重點討論下PowerKey作為喚醒源的具體實現。

二、PowerKey喚醒源

PowerKey喚醒設備的原理,本質其實就是中斷。


PowerKey連接到CPU的一個輸入(Input)引腳(Pin)上,該Pin運行在中斷模式上。一旦PowerKey按下,引發Pin中斷;而該中斷具有喚醒CPU的功能,於是設備得以喚醒。

三、PowerKey對應的Pin
Configuration

和PowerKey相連的Pin的具體配置位於板級dts文件中,比如如下配置:

arch/arm/boot/dts/xxxxx.dts
power-key {
/** 是CPU的哪個Pin */
gpios = <&gpio0 GPIO_A5 GPIO_ACTIVE_LOW>;
/** Key code */
linux,code = <116>;
/** 起個名字 */
label = "power";
/** 該Pin具有wakeup的功能 */
gpio-key,wakeup;
};

著重說下linux,code =
<116>,116怎麼來的?

對於鍵盤,每一個按鍵都有唯一的編碼,在Linux中,編碼值位於:

input.h (kernelincludeuapilinux)
/*
* Keys and buttons
*/
#define KEY_RESERVED 0
#define KEY_ESC 1
#define KEY_BACKSPACE 14
#define KEY_TAB 15
#define KEY_POWER 116 /* SC System Power Down */


可知,PowerKey的編碼也在該文件中,且編碼值為116;一旦按下PowerKey,該值作為鍵值傳到input_event結構體的code成員變數中:

input.h (kernelincludeuapilinux)
/*
* The event structure itself
*/

struct input_event {
struct timeval time;
__u16 type;
__u16 code;
__s32 value;
};

之後我們會寫個Linux應用程序讀取code值。

『伍』 怎樣讓android系統休眠啊,關屏後還一直喚醒著,很耗電

讓android系統休眠,關屏後還一直喚醒著,很耗電的解決辦法如下:

  1. 系統運行的時候有很多軟體後台運行著,可以卸載一些不常用的軟體,來減低系統的負荷。

  2. 可以將系統屏幕關閉時間減少,來減少屏幕開啟時間過長,打開手機設置,點擊顯示,找到屏幕自動關閉選項,將時間設置到最低。

『陸』 android系統睡眠狀態如何喚醒線程和廣播

不能!
(不能手動喚醒,因為肯定需要點亮屏幕(手動點亮屏幕),所以並不是真睡眠狀態)。
只能提前設置,比如鬧鍾,具體到「廣播」即收音機,那麼只建議使用第三方程序,如「蜻蜓FM」,就像鬧鍾可以定時自動開啟。

如果是自己造,相當於重新編個程序出來,需要掌握大量專業性的東西,得不償失

『柒』 安卓手機雙擊喚醒屏幕怎麼實現的

可以通過設置來完成,以魅族手機為例,具體操作方法如下:

1、在手機主界面打開設置。

『捌』 java代碼怎麼控制android休眠和喚醒

喚醒:android.intent.action.SCREEN_ON (代碼)

休眠:android.intent.action.SCREEN_OFF (代碼)

android系統一段時間沒有操作,

屏幕(screen)將從高亮(bright)變為暗淡(dim),如果再過段時間還是沒有操作,屏幕(screen)從暗淡(dim)變為關閉(off).這時,系統將進入休眠.

而對於某些需要保持系統喚醒甚至屏幕喚醒的應用(比如視頻播放器和音樂播放器)來說,就必須要有一個機制,使得系統不進入休眠狀態,設置保持屏幕亮屏狀態.

wakelock即用來實現以上目的

接下來對每一個模塊具體分析:


powermanager

對應文件是android/frameworks/base/core/java/android/os/PowerManager.java


在Android中應用程序並不是直接同PowerManagerService交互的,而是通過PowerManager間接地與PowerManagerService打交道。

此文件定義了一個powermanager類.

主要實現了

1,wakelock的申請與釋放

public WakeLock newWakeLock(int flags, String tag)

2,系統延時進入休眠

public void userActivity(long when, boolean noChangeLights)

3,系統強制休眠

public void goToSleep(long time)

4,屏幕亮度設置

public void setBacklightBrightness(int brightness)

5,屏幕狀態查詢

public boolean isScreenOn()

6,系統重啟

public void reboot(String reason)


細節

wakelock的申請與釋放

{@samplecode

*PowerManager pm = (PowerManager)mContext.getSystemService(

* Context.POWER_SERVICE);

*PowerManager.WakeLock wl = pm.newWakeLock(

* PowerManager.SCREEN_DIM_WAKE_LOCK

* | PowerManager.ON_AFTER_RELEASE,

* TAG);

*wl.acquire();

* // ...

*wl.release();

一共有如下幾個flag來進行不一樣的喚醒方式.可以根據需要設置

Flag Value CPU Screen Keyboard

PARTIAL_WAKE_LOCK On* can-off Off

SCREEN_DIM_WAKE_LOCK On Dim Off

PROXIMITY_SCREEN_OFF_WAKE_LOCK on 距離感測器時關閉 off

SCREEN_BRIGHT_WAKE_LOCK On Bright Off

FULL_WAKE_LOCK On Bright Bright


ACQUIRE_CAUSES_WAKEUP 確保wakelock,主要用於視頻播放器

ON_AFTER_RELEASE = 0x20000000 release後倒計時,關閉屏幕

...


userActivity的作用:

使系統從其他狀態進入全部打開狀態,比如從暗屏(dim)切換到亮屏,並重置倒計時計數器

『玖』 android os進程長時間處於「保持喚醒狀態」,什麼原因

我也在找這個問題解決辦法,但是很遺憾 還沒有!下邊有一篇文章寫的比較清楚:只有飛行模式有辦法解決!而且還有個問題:今天半天時間看了下流量,這個進程居然一下耗費了13M多的流量,真的不知道是什麼情況!!
------------------------------以下轉自網路--------------------------------
Android OS 進程耗電多的問題是否有解決辦法?
簡單的說就是Android手機(根據查閱,各種型號Android手機均有可能出現此情況)變得異常費電,查看電量信息,android os進程耗電最大,待機時佔用到60%+的電量。

網友總結有以下特點:
1.關掉背景同步和各種谷歌服務,無效
2.用鈦同步凍結各種有可能在待機時工作的服務和軟體(包括各種谷歌服務),無效
3.能挪到SD卡的程序統統挪到SD卡,無效
4.關掉WLAN,GPS,數據傳輸,數據漫遊,無效
5.打開USB調試,無效
6.充滿電以後重啟一次,無效
7.用CPU大師設置屏幕關閉時自動降頻至384MHZ或者192MHZ,無效
8.用PLUS工具箱提高超頻電壓,因為不能設置1.2GHZ以上的值,嘗試設置成56-800一類的若干組高電壓數值,無效
9.飛行模式,有效
10.考慮到9有效,綜合考慮4,因此在4的基礎上,手動指定運營商為聯通,並設置為2G網路,無效
11.用PLUS工具箱切換了O2,港版,新歐版等幾種基帶配置,無效
12.刷ROM,無效
13.用autostart關掉各種自啟動關聯,無效

網友分析得出的原因:
「不
正常耗電是因為android os在待機時不斷喚醒設備造成的。至於具體是什麼子進程在不斷讓android os工作,可以通過wake
lock的使用情況來確定。所以安裝模擬終端,用take
wakelock的方式得到/proc/wakelock文件,然後進行查看,結果數次查看的結果都是mmc_delayed_work進程非常頻繁的使
用wake lock。(1小時5000次以上)然後重啟在充電和飛行模式下做同樣的測試,結果mmc_delayed_work進程使用wake
lock的次數幾乎可以忽略(只有幾次),據此基本可以確定,是mmc_delayed_work在不插電的情況下工作不正常,不斷請求CPU資源,導致了android os一直喚醒待機時的設備,造成異常耗電。此問題基本上和谷歌服務什麼的沒任何關系。」
那麼,這種情況應該如何解決呢?這樣的好點基本導致手機無法正常使用了,但純待機都到不了12小時,希望有高人給用戶些建議

閱讀全文

與android待機喚醒相關的資料

熱點內容
內置函數計算絕對值python 瀏覽:88
千聊免費課程可以重新加密嗎 瀏覽:507
python能代替php嗎 瀏覽:252
phpexcel樣式 瀏覽:265
安卓手機有沒有什麼軟體可以阻止彈廣告的 瀏覽:306
linux區域網搭建伺服器 瀏覽:690
python編譯器mac 瀏覽:293
windows的doc命令 瀏覽:463
nfc全加密門禁卡 瀏覽:636
身份信息被加密 瀏覽:482
我的鹽城app怎麼添加不了家庭成員 瀏覽:493
php商城並發 瀏覽:348
熊貓繪畫app怎麼做出大佬的筆刷 瀏覽:603
雲存儲伺服器知識 瀏覽:461
伺服器cpu是什麼指令集 瀏覽:591
糖貓t10怎麼安裝app 瀏覽:992
電腦加密u盤怎麼使用 瀏覽:518
linux如何升級php版本升級 瀏覽:841
二級程序員c語言難度 瀏覽:353
批處理編譯qt 瀏覽:67