首页 > 系统 > Android > 正文

Android手机屏幕变化监听

2019-11-07 22:48:03
字体:
来源:转载
供稿:网友

监听手机屏幕的打开关闭   工具类,可直接使用

package com.utils;

import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.PowerManager;/*** 手机锁屏监听*/public class ScreenListener {PRivate static ScreenListener mScreenListener;private Context mContext;private ScreenBroadcastReceiver mScreenReceiver;private ScreenStateListener mScreenStateListener;public ScreenListener(Context context) {mContext = context;mScreenReceiver = new ScreenBroadcastReceiver();}public static ScreenListener getInstance(Context context) {if (mScreenListener == null) {synchronized (ScreenListener.class) {if (mScreenListener == null) {mScreenListener = new ScreenListener(context);}}}return mScreenListener;}/*** screen状态广播接收者*/private class ScreenBroadcastReceiver extends BroadcastReceiver {private String action = null;@Overridepublic 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();}}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表