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

郑重声明:本文转载自:http://www.cnblogs.com/zhaoyanjun

原文链接:http://www.cnblogs.com/zhaoyanjun/p/5614592.html

更多干货文章,请扫描二维码订阅哦:

您可以扫描上面的二维码,来关注我的微信公众号,来学习更多的干货文章!

另外,我还建了一个免费的知识星球,感兴趣的微信扫码即可加入!

image

更多相关文章

  1. 安卓隐藏标题栏状态栏 ,实现全屏效果
  2. Android屏幕尺寸、标题栏高度、状态栏高度、当前View尺寸
  3. android button多状态, selector
  4. Android 利用隐藏API实现屏幕亮度调节
  5. Android平板大屏幕的设置
  6. 2012-7-17 固定屏幕显示模式Android: ScreenOrientation,全屏
  7. android 设置支持pad等大屏幕、大分辨率的设备!!
  8. Android 支持多屏幕机制
  9. Android 使用SeekBar 变更屏幕亮度和声音音量

随机推荐

  1. MYSQL 死锁
  2. MYSQL ACID
  3. MYSQL锁
  4. 分布式事务(ACID)
  5. 17、华为 华三中小型企业网络架构搭建 【
  6. MYSQL 源码阅读 六
  7. 分布式数据库中间件设想
  8. 16、华为 华三中小型企业网络架构搭建 【
  9. VBOX的虚拟网卡
  10. 小小的设计失误带来的痛苦