亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

想問下有沒有其他方法,還是我的實現有問題?

想問下有沒有其他方法,還是我的實現有問題?

慕斯王 2022-10-11 15:11:45
休眠的過程是屏幕先變灰再變黑,想要實現在自動休眠灰屏時,點擊后(屏幕會變亮)實現一些操作。試了以下兩種方案:1、注冊SCREEN_BRIGHTNESS廣播,嘗試獲取屏幕的變化,無果,應該是android自身沒有發送對應的廣播消息2、點擊時獲取系統的亮度值,(通過oldBrightness = getInt(getContentResolver(), SCREEN_BRIGHTNESS);)但發現還是255,即還是亮,所以無法判斷。
查看完整描述

2 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

系統會發送廣播
Intent.ACTION_SCREEN_OFF

Intent.ACTION_SCREEN_ON

Intent.ACTION_USER_PRESENT

查看完整回答
反對 回復 2022-10-16
?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

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

  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");
}
});

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


查看完整回答
反對 回復 2022-10-16
  • 2 回答
  • 0 關注
  • 252 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號