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 监听锁屏、解锁、开屏 功能代码的相关知识,希望对大家有所帮助!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

android锁屏代码分析,Android 监听锁屏、解锁、开屏 功能代码相关推荐

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

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

  2. android横竖屏切换布局闪退,Android-Activity横竖屏切换不杀死Activity 并监听横竖屏切换...

    在上一篇博客,Android-Activity临时数据的保存,中讲解到,当发生横竖屏切换的时候,系统会杀死Activity并重新启动Activity 系统会杀死Activity 12-12 08:11 ...

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

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

  4. Android 监听横竖屏切换

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

  5. Android事件的响应,Android 开发事件响应之基于监听的事件响应

    Android 开发事件响应之基于监听的事件响应 本文将介绍Android 操作系统如何通过监听来实现对事件的响应. Android 开发事件响应之基于监听的事件响应 背景介绍 Android 开发事 ...

  6. android软键盘回车键改成完成按钮,Android修改软键盘回车键并监听

    首先在XML中修改想把回车键改变为什么键 android:imeOptions="actionSend" android:inputType="text" 其中 ...

  7. Android实现来电和去电的监听

    写个实例实现Android中来电和去电的监听,来电可以使用PhoneStateListener对电话状态的改变进行监听,去电需要动态或者静态去注册广播接收器,对去电进行监听: 来电: 来电所对应的三种 ...

  8. Android广播接实现电话的监听(电话的状态,拦截)

    Android广播接实现电话的监听 1:需要在AndroidManifest.xml清单中添加权限 <uses-permission android:name="android.per ...

  9. Android RecyclerView(九)滑动监听综述

    Android RecyclerView(九)滑动监听 1 RecyclerView 的滑动监听 1.1 RecyclerView 设置滑动监听 mRecyclerView.setOnScrollLi ...

最新文章

  1. Linux-企业邮件部署
  2. Tesorflow源代码安装方式以及错误的解决方法
  3. JAVA基础中容易踩坑的知识点
  4. Android4.4.2KK竖屏强制更改为横屏的初步简略方案
  5. 查看域名真实IP地址NSlookup命令使用浅析
  6. 深入了解C#系列:谈谈C#中垃圾回收与内存管理机制
  7. 更改VS的运行主窗体
  8. highcharts 显示网格
  9. matplotlib 子图超过4个_Matplotlib从入门到精通
  10. 亚太地区数学建模优秀论文_数学建模美赛强势来袭!
  11. mysql二进制格式_二进制格式安装 MySQL
  12. mysql references关键字_mysql关键字有哪些?
  13. 如何开好一个软件类周会和周报
  14. Win10 桌面图标出现空文件夹的删除及桌面图标排列问题
  15. js摇号程序_车管所怎么摇号流程及查询
  16. 如何把catia完全卸载干净_catia卸载不了怎么解决-解决catia无法卸载的方法 - 河东软件园...
  17. 2021年中国BI商业智能应用实践白皮书
  18. php 链接oracle tns,PHP连接Oracle ORA
  19. 首例 3次IPO:前2次申请科创板、创业板均撤回、第3次改为主板、难圆其说变更保代及券商……
  20. 学历证书有用吗?到了社会才知道

热门文章

  1. python垃圾回收
  2. 傅里叶级数与傅里叶变换_Part7_离散傅里叶变换的性质
  3. 五丶Linux存储管理 一
  4. 内联函数(inline 函数)详解
  5. RESTEasy初探
  6. java easyrest_RESTEasy实例
  7. 天地图获取点击位置的经纬度
  8. 零基础HTML入门教程(14)——表格
  9. android权限授权
  10. Small World Theory