1、首先定义 ScreenListener 

package com.app.lib;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.PowerManager;
/**
* Created by ${zyj} on 2016/6/21.
*/
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();
}
}

 2、使用

package com.app.lib;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private ScreenListener screenListener ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
screenListener = new ScreenListener( MainActivity.this ) ;
screenListener.begin(new ScreenListener.ScreenStateListener() {
@Override
public void onScreenOn() {
Toast.makeText( MainActivity.this , "屏幕打开了" , Toast.LENGTH_SHORT ).show();
}
@Override
public void onScreenOff() {
Toast.makeText( MainActivity.this , "屏幕关闭了" , Toast.LENGTH_SHORT ).show();
}
@Override
public void onUserPresent() {
Toast.makeText( MainActivity.this , "解锁了" , Toast.LENGTH_SHORT ).show();
}
});
}
}

  

 

Android 监听锁屏、解锁、开屏 操作相关推荐

  1. android 强制锁屏代码,Android 监听锁屏、解锁、开屏 功能代码

    1.首先定义 ScreenListener package com.app.lib; import android.content.BroadcastReceiver; import android. ...

  2. android锁屏代码分析,Android 监听锁屏、解锁、开屏 功能代码

    1.首先定义 ScreenListener package com.app.lib; import android.content.BroadcastReceiver; import android. ...

  3. android 监听锁屏 权限,Android中监听锁屏变化和防止锁屏

    Android app中可能存在某些可视化耗时操作,需要防止锁屏. 一.监听锁屏 添加权限 首先来看如何监听锁屏,使用BroadcastReceivercaset来监听 1.锁屏监听 public c ...

  4. Android锁屏界面监听按键,Android 监听锁屏/开屏事件

    1. 两种方案 (1) 监听BroadcastReceiver (2)获取PowerManager事件 2.  BroadcastReceiver 2.1. 事件 总共有3个事件: Intent.AC ...

  5. Android监听锁屏键、Home键

    项目用到了,记录下,返回键什么的物理按键使用onKeyDown监听就可以了,但是锁屏键.Home键不可以,这里使用广播监听两者状态变化 IntentFilter片段: mFilter.addActio ...

  6. android解锁界面分析,Android 7.0 锁屏解锁之向上滑动显示解锁界面分析

    Android 7.0 锁屏解锁之向上滑动显示解锁界面分析 by jing.chen 锁屏的解锁操作是在锁屏界面向上滑动实现的,通过向上滑动调出解锁界面(如图案.PIN.密码解锁界面),在解锁界面输入 ...

  7. Android 监听横竖屏切换

    Android 监听横竖屏切换 重写 Activity 中的 onConfigurationChanged 方法 override fun onConfigurationChanged(newConf ...

  8. Android监听截屏事件

    截屏方案对比(截屏事件没有同一的api) 方案一:利用FileObserver监听某个目录中资源变化情况 优点:操作简单 缺点: 不同的手机,默认截屏图片储存的文件夹可能不同 不同的手机,事件回调可能 ...

  9. Android监听手机屏幕解锁和判断屏幕状态

    开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在AndroidManifest配置里面注册action为 android.intent.action.USER_PRES ...

最新文章

  1. Mask-RCNN技术解析
  2. 在ATS 5.3.0上开启stats_over_http插件
  3. 妙用“IP地址冲突”揪出害群之马
  4. 如何升级浏览器_绿茶浏览器app下载安装_绿茶浏览器软件最新版免费下载
  5. Intel Realsense D435 如何设置曝光参数(exposure)
  6. php mongodb 别名,PHP mongo与mongodb扩展 | 码路春哥
  7. java 字符串 1_java 字符串操作大全1
  8. Android studio修改Logcat颜色
  9. CSDN 七夕包分配,最后一天啦!
  10. Java Spring-事务管理
  11. win10专业版修改家庭计算机,win10家庭版升级专业版的最完美的方法_win10专业版技巧...
  12. HTTP请求详细过程
  13. Android系统预装Chrome并自定义主页
  14. 如何用标题博得观众眼球
  15. 1296: 植树问题(C语言)
  16. TIA博途中数组Array的基本使用方法详解
  17. Elasticsearch:理解 Master,Elections,Quorum 及 脑裂
  18. RAID卡原理与设置
  19. elasticsearch部署过程中各种报错解析
  20. 简单的python画图小实例

热门文章

  1. java中的运算符_java中的运算符
  2. 为了OFFER系列 | 牛客网美团点评数据分析刷题
  3. scipy和statsmodels处理回归
  4. 五十三、爱彼迎数据集分析建模
  5. EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs'
  6. 基于用户的协同过滤(余弦相似度)
  7. 旷厂练习生 | 小白进阶之三个月发表一篇CVPR
  8. 总奖金近9万!视频超分辨率大赛等你来战!
  9. 谣言止于智者:基于深度强化学习的谣言早期检测模型
  10. 免费报名 | 智源论坛:智能处理器探索,AI技术前沿精粹尽览