大佬教程收集整理的这篇文章主要介绍了Android 监听屏幕是否锁屏的实例代码,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
今天,简单讲讲如何监听手机屏幕是否锁屏。
实现方法:
1)通过BroadcastReceiver接收广播Intent.ACTION_SCREEN_ON和Intent.ACTION_SCREEN_OFF可以判断屏幕状态是否锁屏,但是只有屏幕状态发生改变时才会发出广播;
2)如果要在屏幕状态发生改变之前就想获取屏幕状态,可以通过反射机制调用PoweRMANager的isScreenOn方法 。
具体实现,见代码:
直接上代码:
1.定义一个接收广播的类
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 监听屏幕是否锁屏的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
以上是大佬教程为你收集整理的Android 监听屏幕是否锁屏的实例代码全部内容,希望文章能够帮你解决Android 监听屏幕是否锁屏的实例代码所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。