當前位置:首頁 » 安卓系統 » android休眠

android休眠

發布時間: 2022-04-12 08:36:22

1. android開發中如何捕捉自動休眠灰屏的這個事件

捕捉自動休眠灰屏的事件,可以通過監聽系統的廣播獲得當前手機屏幕的狀態,廣播需要在注冊文件中注冊,具體的實現代碼如下:

public class ScreenListener {
private Context mContext;
private ScreenBroadcastReceiver mScreenReceiver;
private ScreenStateListener mScreenStateListener;

public ScreenListener(Context context) {
mContext = context;
mScreenReceiver = new ScreenBroadcastReceiver();
}

/**
* screen狀態廣播接收者
*/
private class ScreenBroadcastReceiver extends BroadcastReceiver {
private String action = null;

@Override
public void onReceive(Context context, Intent intent) {
action = intent.getAction();
if (Intent.ACTION_SCREEN_ON.equals(action)) { // 開屏
mScreenStateListener.onScreenOn();
} else if (Intent.ACTION_SCREEN_OFF.equals(action)) { // 鎖屏
mScreenStateListener.onScreenOff();
} else if (Intent.ACTION_USER_PRESENT.equals(action)) { // 解鎖
mScreenStateListener.onUserPresent();
}
}
}

/**
* 開始監聽screen狀態
*
* @param listener
*/
public void begin(ScreenStateListener listener) {
mScreenStateListener = listener;
registerListener();
getScreenState();
}

/**
* 獲取screen狀態
*/
private void getScreenState() {
PowerManager manager = (PowerManager) mContext
.getSystemService(Context.POWER_SERVICE);
if (manager.isScreenOn()) {
if (mScreenStateListener != null) {
mScreenStateListener.onScreenOn();
}
} else {
if (mScreenStateListener != null) {
mScreenStateListener.onScreenOff();
}
}
}

/**
* 停止screen狀態監聽
*/
public void unregisterListener() {
mContext.unregisterReceiver(mScreenReceiver);
}

/**
* 啟動screen狀態廣播接收器
*/
private void registerListener() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);
mContext.registerReceiver(mScreenReceiver, filter);
}

public interface ScreenStateListener {// 返回給調用者屏幕狀態信息
public void onScreenOn();

public void onScreenOff();

public void onUserPresent();
}
}

在上面的代碼中,用到了動態注冊廣播,在需要監聽屏幕狀態的activity中,當不需要監聽的時候,如activity finish的時候,使用unregisterListener解除廣播監聽;
下面是在Activity中調用;
ScreenListener l = new ScreenListener(this);
l.begin(new ScreenStateListener() {

@Override
public void onUserPresent() {
Log.e("onUserPresent", "onUserPresent");
}

@Override
public void onScreenOn() {
Log.e("onScreenOn", "onScreenOn");
}

@Override
public void onScreenOff() {
Log.e("onScreenOff", "onScreenOff");
}
});

通過以上步驟即實現了對屏幕狀態的監聽.

2. 如何讓android系統禁止休眠

在開發Android程序時,有時候在程序運行的時候,不能讓系統休眠,否則有一些運行會停止,因此我們需要設置禁止休眠,有兩種方式:一種是添加許可權,別一種是代碼中設置,建議使用第一種方式,這樣,在安裝程序的時候會進行提醒:
第一種方式:
在Manifest.xml文件裡面用user-permission聲明
名稱為:android.permission.WAKE_LOCK

第二種方式:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
把這段代碼加在setContentView(R.layout.main)之前即可

3. Android應用禁止屏幕休眠的幾種方法

方法一:添加休眠鎖,休眠鎖必須成對出現。

方法二:在Activity布局中設置Windows屬性進行控制,但是一定要在載入布局之前執行,此種方法的局限性是只有在Activity類中有效,Activity退出時失效。

方法三:在View布局中添加屬性,此種方法的好處是不一定非要在Activity界面運行時屏幕常亮才有效,View啟動後可以自主設置。

View的xml布局中加入:

  • android:KeepScreenOn="true"

  • 代碼中執行是否保持屏幕常亮:

  • View.setKeepScreenOn(true);

  • View.setKeepScreenOn(false);

4. android 如何禁止系統休眠

使用如下代碼即可:

PowerManagerpm=
(PowerManager)getSystemService(Context.POWER_SERVICE);
mWakeLock=pm.newWakeLock(
PowerManager.SCREEN_DIM_WAKE_LOCK,"SoundRecorder");

mWakeLock.acquire();

看錯,原來不是指APP啊

5. android 如何讓手機進入休眠狀態,又如何喚

1.WakeLock主要代碼如下:

PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this.getClass().getName());//持有喚醒鎖
wakeLock.setReferenceCounted(false);
wakeLock.acquire(30*1000);//30s亮屏
wakeLock.release();//釋放鎖,滅屏

2.FLAG_KEEP_SCREEN_ON代碼如下
可使用 FLAG_KEEP_SCREEN_ON 替換WakeLock的方式.
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//亮屏
this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//滅屏

6. 如何使用Android防止休眠許可權

實現這一功能的方法有兩種,一種是在Manifest.xml文件裡面聲明,一種是在代碼裡面修改LayoutParams的標志位。具體如下:
1、在AndroidManifest.xml文件裡面用user-permission聲明。代碼如下:
< uses-permission android:name=」android.permission.WAKE_LOCK」 >
這種方法,在安裝apk時,系統會提示安裝人是否允許使用禁止休眠功能。
2、在程序中用代碼實現。代碼如下:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
把這段代碼加在setContentView(R.layout.main)之前即可
這種方法,安裝時,不會提示安裝人是否允許使用禁止休眠功能

7. android系統休眠關閉了哪些功能

Android的幾種不同的休眠模式
如果不進行特別的設置,Android會在一定時間後屏幕變暗,在屏幕變暗後一定時間內,約幾分鍾,CPU也會休眠,大多數的程序都會停止運行,從而節省電量。但你可以在代碼中通過對Powmanager API的調用來設置不同的休眠模式。
Flag Value CPU Screen Keyboard
PARTIAL_WAKE_LOCK On* Off Off
SCREEN_DIM_WAKE_LOCK On Dim Off
SCREEN_BRIGHT_WAKE_LOCK On Bright Off
FULL_WAKE_LOCK On Bright Bright
如上表,最高等級的休眠是屏幕,鍵盤等,cpu都全部休眠。可以設置不同的模式,讓其產生不同的休眠,比如讓cpu保持運行。

8. android關閉屏幕 但不進入休眠

android關閉屏幕但不進入休眠應該是系統出現故障,解決方法為:
1、在專業人士的指導下進行刷機,具體步驟為:
a、打開「刷機助手」官方網站,在頁面中下載刷機助手。下載完成後安裝並啟動刷機助手。
b、用手機原裝數據線將手機與電腦相連接,然後等待刷機助手完成初始化工作。待刷機助手成功識別手機後,可以點擊「一鍵刷機」按鈕開始刷機。
c、點擊「瀏覽」按鈕選擇之前下載的刷機包,若沒有下載可以使用刷機助手市場下載ROM包。選擇手機對應的型號開始下載ROM。
d、選擇刷機包後點擊「下一步」按鈕備份手機數據,以免數據丟失。備份開始前,在手機中允許刷機助手讀取簡訊、聯系人等記錄。然後點擊「刷機」按鈕開始備份並刷機,慢慢等待刷機完成。
2、聯系手機維修人員,對手機進行維修。

9. 如何使android手機鎖屏但是不進入休眠狀態

三星手機一般建議進行以下操作:
1.查看您的機器是否開啟了智能休眠功能。
2.檢查手機背景燈時長,選擇最短時間嘗試。
3.點擊電源鍵觀察是否可以鎖屏。
4.檢查是否使用了第三方主題軟體。若有安裝,建議卸載刪除。
5.將近期安裝的軟體卸載刪除。
6.請備份手機中數據(聯系人,簡訊,圖片等),然後恢復出廠設置。
若問題依然存在,請您攜帶購機發票、包修卡和機器送到三星服務中心,由專業的售後工程師幫助檢測。

10. 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)切換到亮屏,並重置倒計時計數器

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:335
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:944
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:740
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:371