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 监听屏幕是否锁屏的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Android 屏幕切换监听的实例代码

    昨天,我试着在屏幕切换时,使View显示在不同的位置,在网上搜索了一些资料,自己做了一段时间,终于完成了功能. 由于屏幕切换会调用activity的各个生命周期,所以需要在manifest的activity属性加上代码 android:configChanges="keyboardHidden|orientation|screenSize|locale|layoutDirection" 然后重写onConfigurationChanged(),加上自己的处理代码 @Override p

  • 封装的android监听手指左右滑动屏幕的事件类分享

    左右滑动是智能手机最常用的动作,在此简单的封装了一下,以后直接拿来用就可以了. 简单的只需要几行就可以了,下面那个类是封装好了的. package com.example.test; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.util.Log; import android.widget.RelativeLayout; public c

  • Android 监听屏幕是否锁屏的实例代码

    今天,简单讲讲如何监听手机屏幕是否锁屏. 实现方法: 1)通过BroadcastReceiver接收广播Intent.ACTION_SCREEN_ON和Intent.ACTION_SCREEN_OFF可以判断屏幕状态是否锁屏,但是只有屏幕状态发生改变时才会发出广播: 2)如果要在屏幕状态发生改变之前就想获取屏幕状态,可以通过反射机制调用PowerManager的isScreenOn方法 . 具体实现,见代码: 直接上代码: 1.定义一个接收广播的类 package com.app.lib; im

  • android 监听SD卡文件变化的实现代码

    Android系统API提供了FileObserver抽象类(Linux的INotify机制)来监听系统/sdcard中的文件或文件夹,FileObserver类能对sdcard中的文件及文件夹的打开.创建.移动和删除操作进行监控.下面看看代码实现: (1)创建目录监听器: import android.os.FileObserver; import android.util.Log; /** * SD卡中的目录创建监听器. * * @author mayingcai */ public cla

  • Android 广播监听网络状态详解及实例代码

    Android 广播监听网络状态 我们在做多线程下载的时候,或者是在加载h5界面的时候,常常会遇到网络状态不好或者断网的时候,在这或者当我们的应用程序启动没有退出的时候,我们就需要对网络状态监听加以判断. 这时候,我们一般情况下,两种方式进行处理. 第一: 开启服务. 第二:发送广播的形式. 建议采用方法二. 源代码如下: 广播: /** * 有网络的广播 */ BroadcastReceiver connectionReceiver = new BroadcastReceiver() { @O

  • 在as中监听自定义事件并处理事件的实例代码

    场景描述:点击一张图片,响应事件.必须在AS中,去监听事件,并处理事件. 1 自定义了一个事件,如下: 复制代码 代码如下: package bridge { import flash.events.Event; import mx.events.FlexEvent; public class MyEvent extends Event { public static const myclick:String="myclick"; public function MyEvent(typ

  • Android监听横竖屏切换功能

    偶然在项目中用到播放视频时,需要横屏将视频全屏播放,所以需要监听屏幕的横竖屏切换事件. 横竖屏切换监听效果: ConfigChanges,用于捕获手机状态的改变,当横竖屏切换,屏幕尺寸变化,弹出键盘,系统设置改变等条件,就会触发回调事件onConfigurationChanged.让Activity捕捉到该事件,需要做如下步骤: 声明Activity需要捕捉的事件类型,在manifest的配置: <activity android:name=".MainActivity" and

  • Android 监听锁屏、解锁、开屏 功能代码

    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

  • Android如何监听屏幕旋转

    背景 关于个人,前段时间由于业务太忙,所以一直没有来得及思考并且沉淀点东西:同时组内一个个都在业务上能有自己的思考和总结,在这样的氛围下,不由自主的驱使周末开始写点东西,希望自己除了日常忙于业务,可以沉淀点东西,加上自己的成长.. 关于切入点,最近在做应⽤内悬浮球功能时,需要监听屏幕旋转事件来对悬浮球的位置进⾏调整,发现有些情况下并不能收到系统回调,思考了⼀翻,做了⼀个屏幕旋转的模拟监听,基本上能达到⽬的. 问题 悬浮球在停⽌拖拽后,需要贴边到⼿机屏幕的左右两侧. 在竖屏状态下,x坐标为0即为左

  • Android PhoneWindowManager监听屏幕右侧向左滑动实现返回功能

    由于项目没有设计返回键,一旦进入别的应用,就无法回到桌面.只能通过串口输入input keyevent 4(返回键)来返回桌面,为了方便调试,在Framework 中监听手势,实现返回功能. 在frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager中有这么一段代码 mSystemGestures = new SystemGesturesPointerEventListener(context,

  • Android编程实现的一键锁屏程序详解

    本文实例讲述了Android编程实现的一键锁屏程序.分享给大家供大家参考,具体如下: 据笔者了解,所有的Android手机都用电源键来手动锁屏.笔者使用手机时,一天之内手动锁屏的次数绝对不少于30次.如果都用电源键来进行的话,那么电源键的使用寿命一定不会长久. 虽然现在有很多的桌面软件都集成了一键锁屏,但是要安装这些软件就必须安装它们的其他组件,这点让人很不爽,因为他们会定期自动更新,或者在后台运行一些我不想要的东西.所以我决定自己写一个锁屏程序. 经过在android开发文档里面的查找,我发现

  • android监听View加载完成的示例讲解

    最近项目中需要实现一个GridView显示6*5=30项,并铺满整个界面,界面中还有自定义ActionBar等其他控件,所以需要获取剩下屏幕的高度.通过百度得知View有一个监听函数,亲测使用有效,特此记录,方便日后查阅. gv_test.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayo

随机推荐