android监测屏幕锁屏解屏

定义一个ScreenListener类,直接拷贝到程序中就可以用


package com.scapp;
//监测屏幕状态的类
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.PowerManager;


public class ScreenListener {


private Context mContext;
   private ScreenBroadcastReceiver mScreenReceiver;
   private ScreenStateListener mScreenStateListener;
 
   public ScreenListener(Context context) {
       mContext = context;
       mScreenReceiver = new ScreenBroadcastReceiver();
   }
 
    
   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();
           }
       }
   }
    


   public void begin(ScreenStateListener listener) {
       mScreenStateListener = listener;
       registerListener();
       getScreenState();
   }
 
    


   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();
           }
       }
   }
 
    
   public void unregisterListener() {
       mContext.unregisterReceiver(mScreenReceiver);
   }
 
    
   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();
   }

}

在需要监测的activity中先定义ScreenListener的一个变量

private ScreenListener screenListener;//监测屏幕状态

private boolean isLockOpenActivity = false;//用来监测是不是由锁屏然后解屏进入的activity


//屏幕锁屏 解屏

screenListener = new ScreenListener( WindowDetailActivity.this ) ;

screenListener.begin(new ScreenListener.ScreenStateListener() {

          @Override

          public void onScreenOn() {

           

          if(isLockOpenActivity){

          active = true;

           

          //拿窗户数据

          ConnectThread connThread = new ConnectThread(id, h, SCConstant.SC_INTERFACE_CONNECT);

          new Thread(connThread, "Connect").start();

          //拿摄像头数据

          ConnectThread cameraThread = new ConnectThread(id, null,

  SCConstant.SC_INTERFACE_START_VIDEO);

          new Thread(cameraThread, "Connect").start();

             

                  isLockOpenActivity = false;

          }

       

          }

 

           

          @Override

          public void onScreenOff() {

           

        isLockOpenActivity = true;

        //停止拿摄像头数据

        ConnectThread connThread = new ConnectThread(id, null,

      SCConstant.SC_INTERFACE_STOP_VIDEO);

      new Thread(connThread, "Connect").start();

  active = false;


//               Toast.makeText( WindowDetailActivity.this , "屏幕关闭了" , Toast.LENGTH_SHORT ).show();

          }

 

          @Override

          public void onUserPresent() {

//               Toast.makeText( WindowDetailActivity.this , "解锁了" , Toast.LENGTH_SHORT ).show();

          }

      });

我这个程序中,需要实现锁屏的时候停止请求摄像头数据,当解锁后需要重新请求窗子数据和摄像头数据,具体情况具体再做处理




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值