ANDROID关于亮屏和暗屏还有解锁的监听事件http://blog.youkuaiyun.com/muskmelon123/article/details/7522023

本文介绍了一个简单的Android应用案例,用于监听屏幕的状态变化,包括屏幕开启、关闭及解锁等事件,并通过日志记录这些状态的变化。

转自:http://blog.youkuaiyun.com/muskmelon123/article/details/7522023


package com.lock.muskmelon;

import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

public class Lock8secondActivity extends Activity {

		public void onCreate(Bundle savedInstanceState) {   

		super.onCreate(savedInstanceState);   

		setContentView(R.layout.main);   
		
		
        final String TAG = null;
		
        
		
		final IntentFilter filter = new IntentFilter();  
        filter.addAction(Intent.ACTION_SCREEN_OFF);  
        filter.addAction(Intent.ACTION_SCREEN_ON); 
        filter.addAction(Intent.ACTION_USER_PRESENT); 
          
        final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {  
            @Override  
            public void onReceive(final Context context, final Intent intent) {
            	

                String action = intent.getAction();  

                
               if(Intent.ACTION_SCREEN_ON.equals(action))
               {  
                    Log.d(TAG, "screen is on...");  
            	   
               }
               
               else if(Intent.ACTION_SCREEN_OFF.equals(action))
               {  
                    Log.d(TAG, "screen is off...");  
               }  
               
               else if(Intent.ACTION_USER_PRESENT.equals(action))
               {
            	   Log.d(TAG, "screen is unlock..."); 
               }
               
            }  
        };  
        
        registerReceiver(mBatInfoReceiver, filter);
		
		
		
	}   

} 


```markdown 代码概述 Android系统在用户长时间未操作设备时,会依次进入(dim)(off)状态,这一过程中系统服务电源管理模块会输出大量日志。这些日志记录了屏幕状态的变化、WakeLock的释放、以及锁界面的显示时机。 代码解析 以下是与“长时间未操作导致至灭”过程相关的典型日志及其含义: 1. **屏幕进入状态** 日志关键词:`DisplayPowerController: Screen brightness going to dim` ``` D DisplayPowerController: Screen brightness going to dim for screen state 2 ``` - 当设备长时间未操作但仍未完全熄灭时,系统将屏幕亮度调至最低但仍保持亮着(通常用于通知用户设备仍在运行)。 - `ScreenState 2` 表示当前屏幕处于“Dim”状态。 2. **屏幕进入灭状态** 日志关键词:`DisplayPowerController: Turning screen off` ``` I DisplayPowerController: Turning screen off due to timeout ``` - 表示系统因超时未操作而关闭屏幕背光,进入“Off”状态。 - 此时设备进入休眠,仅保留基本系统运行。 3. **PowerManagerService记录灭事件** 日志关键词:`PowerManagerService: Going to sleep` ``` I PowerManagerService: Going to sleep due to SCREEN_TIMEOUT ``` - 表示 PowerManagerService 决定让设备进入休眠状态。 - `SCREEN_TIMEOUT` 表明是由屏幕超时触发的休眠。 4. **锁界面准备显示** 日志关键词:`KeyguardService: onWakeLockReleased` ``` D KeyguardService: onWakeLockReleased ``` - 当屏幕熄灭后,系统通常会准备显示锁界面(如果设置了锁密码/图案等)。 - 表示与锁相关的唤醒锁已释放。 5. **传感器关闭(可选)** 日志关键词:`ProximitySensor`, `FingerprintWakeUp` 等 ``` D ProximitySensor: Proximity sensor disabled ``` - 屏幕熄灭后,系统可能会关闭一些传感器以节省电量。 相关日志关键词汇总(用于查找至灭流程): - `DisplayPowerController: Screen brightness going to dim` - `DisplayPowerController: Turning screen off due to timeout` - `PowerManagerService: Going to sleep due to SCREEN_TIMEOUT` - `KeyguardService: onWakeLockReleased` - `ScreenState 2`(表示dim状态) - `ScreenState 0`(表示off状态) - `DisplayPowerState: state=OFF` - `ProximitySensor: Proximity sensor disabled` 知识点(列出该代码中遇到的知识点) 1. **Android PowerManager机制** 系统通过 PowerManagerService 控制屏幕状态设备休眠逻辑。 2. **DisplayPowerController与屏幕状态** 负责控制屏幕的亮、、灭状态,并与底层驱动通信。 3. **WakeLock机制** 应用或系统组件通过 WakeLock 控制设备是否保持唤醒状态,释放后可能触发灭。 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值