精华内容
下载资源
问答
  • 屏幕广播 android监听屏幕开/关状态示例。
  • Android 监听屏幕解锁事件

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                    在做一个程序的时候,需要时刻保持某一服务是启动的,因此想到了通过监听屏幕SCREEN_ON和SCREEN_OFF这两个action。奇怪的是,这两个action只能通过代码的形式注册,才能被监听到,使用AndroidManifest.xml 完全监听不到。查了一下,发现这是PowerManager那边在发这个广播的时候,做了限制,限制只能有register到代码中的receiver才能接收。


    1. private void registerScreenActionReceiver(){   
    2.     final IntentFilter filter = new IntentFilter();   
    3.     filter.addAction(Intent.ACTION_SCREEN_OFF);   
    4.     filter.addAction(Intent.ACTION_SCREEN_ON);   
    5.     registerReceiver(receiver, filter);   
    6. }   
    7.    
    8. private final BroadcastReceiver receiver =new BroadcastReceiver(){   
    9.    
    10.     @Override   
    11.     public void onReceive(final Context context,final Intent intent) {   
    12.         // Do your action here   
    13.    
    14.     }   
    15.    
    16. };   
    private void registerScreenActionReceiver(){      final IntentFilter filter = new IntentFilter();      filter.addAction(Intent.ACTION_SCREEN_OFF);      filter.addAction(Intent.ACTION_SCREEN_ON);      registerReceiver(receiver, filter);  }    private final BroadcastReceiver receiver = new BroadcastReceiver(){        @Override      public void onReceive(final Context context, final Intent intent) {          // Do your action here        }    };  

           那怎么才能保证我的服务一直是启动状态呢,其实还有另一个Action可以反映出用户正在使用手机的行为,每个用户在使用手机的时候,首先按电源键将屏幕点亮,紧接着就是解锁。解锁动作通过android.intent.action.USER_PRESENT发送出来,我们就能识别出该用户进入了home界面,也就能启动我们相应的服务了,不管你是要谈对话框welcome用户,还是后台启动程序升级服务,都可以!以神的名义发誓,该Action在AndroidManifest.xml中可以监听得到。


    1. <application android:icon="@drawable/icon" android:label="@string/app_name">   
    2.     <activity android:name=".ScreenActionTestActivity"   
    3.         android:label="@string/app_name">   
    4.         <intent-filter>   
    5.             <action android:name="android.intent.action.MAIN" />   
    6.             <category android:name="android.intent.category.LAUNCHER" />   
    7.         </intent-filter>   
    8.     </activity>   
    9.     <receiver android:name=".ActionReceiver">   
    10.         <intent-filter android:priority="90000">   
    11.             <action android:name="android.intent.action.USER_PRESENT" />   
    12.         </intent-filter>   
    13.     </receiver>   
    14. </application>   
    <application android:icon="@drawable/icon" android:label="@string/app_name">      <activity android:name=".ScreenActionTestActivity"          android:label="@string/app_name">          <intent-filter>              <action android:name="android.intent.action.MAIN" />              <category android:name="android.intent.category.LAUNCHER" />          </intent-filter>      </activity>      <receiver android:name=".ActionReceiver">          <intent-filter android:priority="90000">              <action android:name="android.intent.action.USER_PRESENT" />          </intent-filter>      </receiver>  </application>  

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • 今天小编通过本文给大家分享android如何监听手机屏幕是否锁屏。实现方法很简单,需要的朋友参考下吧
  • Android设备屏幕锁定/解锁/屏幕点亮监听Android屏幕锁定,解锁,开屏比较常用,故抽象成一个公共的DeviceScreenListener。在使用使用,首先new出一个DeviceScreenListener,然后注册(register)使用,使用后不要忘记...

    Android设备屏幕锁定/解锁/屏幕点亮监听

    Android屏幕锁定,解锁,开屏比较常用,故抽象成一个公共的DeviceScreenListener。

    在使用使用,首先new出一个DeviceScreenListener,然后注册(register)使用,使用后不要忘记注销,一般在生命周期的onDestory里面unregister。

    抽象的DeviceScreenListener:

    package zhangphil.app;

    import android.content.BroadcastReceiver;

    import android.content.Context;

    import android.content.Intent;

    import android.content.IntentFilter;

    /**

    * Created by Phil on 2017/7/18.

    */

    /**

    * 对于开发者来说,可能更多需要关注ScreenStateListener中的两个函数:

    * void onScreenOff(); 屏幕锁定

    * void onUserPresent(); 屏幕处于解锁状态且可以正常使用

    */

    public class DeviceScreenListener {

    private Context mContext;

    private ScreenBroadcastReceiver mScreenBroadcastReceiver;

    private ScreenStateListener mScreenStateListener;

    public DeviceScreenListener(Context context) {

    mContext = context;

    mScreenBroadcastReceiver = 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();

    }

    }

    }

    /**

    * 开始监听屏幕开/关状态

    *

    * @param listener

    */

    public void register(ScreenStateListener listener) {

    mScreenStateListener = listener;

    /**

    * 注册屏幕设备开屏/锁屏的状态监听

    */

    IntentFilter filter = new IntentFilter();

    filter.addAction(Intent.ACTION_SCREEN_ON);

    filter.addAction(Intent.ACTION_SCREEN_OFF);

    filter.addAction(Intent.ACTION_USER_PRESENT);

    mContext.registerReceiver(mScreenBroadcastReceiver, filter);

    //initScreenState(); //可选

    }

    /**

    * 代码启动阶段获取设备屏幕初始状态

    */

    /**

    private void initScreenState() {

    PowerManager manager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);

    if (manager.isScreenOn()) {

    if (mScreenStateListener != null) {

    mScreenStateListener.onScreenOn();

    }

    } else {

    if (mScreenStateListener != null) {

    mScreenStateListener.onScreenOff();

    }

    }

    }

    */

    /**

    * 注销屏幕设备开屏/锁屏的状态监听

    */

    public void unregister() {

    mContext.unregisterReceiver(mScreenBroadcastReceiver);

    mScreenBroadcastReceiver = null;

    mScreenStateListener = null;

    }

    interface ScreenStateListener {

    /**

    * 此时屏幕已经点亮,但可能是在锁屏状态

    * 比如用户之前锁定了屏幕,按了电源键启动屏幕,则回调此方法

    */

    void onScreenOn();

    /**

    * 屏幕被锁定

    */

    void onScreenOff();

    /**

    * 屏幕解锁且可以正常使用

    */

    void onUserPresent();

    }

    }

    在一个activity中使用:

    package zhangphil.app;

    import android.support.v7.app.AppCompatActivity;

    import android.os.Bundle;

    import android.util.Log;

    public class MainActivity extends AppCompatActivity {

    DeviceScreenListener listener = new DeviceScreenListener(this);

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    /**

    * 注册监听

    */

    listener.register(new DeviceScreenListener.ScreenStateListener() {

    @Override

    public void onScreenOn() {

    Log.d("设备屏幕", "屏幕点亮");

    }

    @Override

    public void onScreenOff() {

    Log.d("设备屏幕", "屏幕锁定");

    }

    @Override

    public void onUserPresent() {

    Log.d("设备屏幕", "屏幕解锁且可以正常使用");

    }

    });

    }

    @Override

    protected void onDestroy() {

    super.onDestroy();

    /**

    * 注销监听

    */

    listener.unregister();

    }

    }

    展开全文
  • Android监听屏幕是否锁屏

    千次下载 热门讨论 2012-06-13 10:37:23
    监听是否锁屏,详见博文:http://blog.csdn.net/m_changgong/article/details/7608911
  • * 监听屏幕亮度变化 */ private ContentObserver mBrightnessObserver = new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { //do your things } }; @Override ...
    /**
         * 监听屏幕亮度变化
         */
        private ContentObserver mBrightnessObserver = new ContentObserver(new Handler()) {
            @Override
            public void onChange(boolean selfChange) {
                //do your things
            }
        };
    
        @Override
        protected void onResume()
        {
            super.onResume();
            getContentResolver().registerContentObserver(
                    Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS), true,
                    mBrightnessObserver);
        }
    
        @Override
        protected void onDestroy()
        {
            super.onDestroy();
            getContentResolver().unregisterContentObserver(
                    mBrightnessObserver);
        }

     

     
    展开全文
  • Android监听屏幕锁屏

    千次阅读 2019-05-09 22:47:55
    import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.PowerManager; /** * Created by ${zyj}...

    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

    展开全文
  • Android监听屏幕的滑动事件

    千次阅读 2020-05-21 21:40:18
    实现监听屏幕上下左右滑动事件 前段时间为了实现这个功能在网上找了很多教程,发现很多教程都是很大的篇幅,对于像我这种一点都不了解的人GestureListener的人来说可能很难理解,动不动就是几百行代码,也不方便我们...
  • 直播视频系统源码,android监听屏幕亮度变化实现的相关代码 /** * 监听屏幕亮度变化 */ private ContentObserver mBrightnessObserver = new ContentObserver(new Handler()) { @Override public void onChange...
  • * 创建一个监听器类 监听android锁屏与解锁事件 */ public class ScreenListener { private Context mContext; private ScreenBroadcastReceiver mScreenReceiver; private ScreenStateListener ...
  • android 监听屏幕是否锁屏

    千次阅读 2017-09-12 08:59:57
    今天,简单讲讲如何监听手机屏幕是否锁屏。 实现方法:1)通过BroadcastReceiver接收广播Intent.ACTION_SCREEN_ON和Intent.ACTION_SCREEN_OFF可以判断屏幕状态是否锁屏,但是只有屏幕状态发生改变时才会发出...
  • 一、实现屏幕状态的广播 实现代码如下所示: public class ScreenBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = ...
  • Android 监听屏幕旋转事件

    千次阅读 2017-10-31 15:06:37
    一.Activity#onConfigurationChanged二.动态注册广播监听 Intent.ACTION_CONFIGURATION_CHANGED
  • Android监听屏幕解锁和判断屏幕状态

    千次阅读 2015-02-11 17:17:30
    开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在配置里面注册action为 android.intent.action.USER_PRESENT的广播,则可以监听解锁事件。但有时候,在后台执行某个操作时,需要...
  • // 监听熄屏和亮屏需要添加权限 <uses-permission android:name="android.permission.DEVICE_POWER"/> public class PowerScreenReceiver extends BroadcastReceiver { private static final String TAG = ...
  • Android 监听屏幕唤醒和关闭的广播

    万次阅读 2014-10-01 17:36:27
    今天希望应用程序的服务运行时,可以监听屏幕的唤醒。继续百度学习法,连同监听闭幕关闭也一同学习了。   此种情况需要动态注册系统广播。在AndroidManifest.xml中静态注册的实际运行中无效。 private ...
  • 注意:onConfigurationChanged事件并不是只有屏幕方向改变才可以触发,其他的一些系统设置改变也可以触发,比如打开或者隐藏键盘。   当我们的屏幕方向发生改变时,就可以触发...uses-permission Android:n...
  • 在做一个程序的时候,需要时刻保持某一服务是启动的,因此想到了通过监听屏幕SCREEN_ON和SCREEN_OFF这两个action。奇怪的是,这两个action只能通过代码的形式注册,才能被监听到,使用AndroidManifest.xml 完全监听...
  • 记录贴,直接上代码! 1、工具类 public class LayoutChangedListener { private View decorView = null;... // HD100设备,屏幕的固定高度为800 private OnLayoutChangeListener layoutChangeL...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,771
精华内容 25,108
关键字:

安卓监听屏幕