Android监听屏幕解锁和判断屏幕状态

开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在配置里面注册action为 android.intent.action.USER_PRESENT的广播,则可以监听解锁事件。但有时候,在后台执行某个操作时,需要主动判断屏幕的状态,比如是否是亮着的,可以使用PowerManager的isScreenOn方法进行判断,比如屏幕是否开启了自动旋转等。

注册监听解锁广播:


1

2

3

4

5

<receiver android:name="com.home.testscreen.MyReceiver"

            <intent-filter

                <action android:name="android.intent.action.USER_PRESENT" /> 

            </intent-filter

        </receiver>

MyReceiver:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

package com.home.testscreen; 

  

import android.content.BroadcastReceiver; 

import android.content.Context; 

import android.content.Intent; 

import android.widget.Toast; 

  

public class MyReceiver extends BroadcastReceiver

  

    @Override

    public void onReceive(Context
context, Intent intent) { 

        // 解锁 

        if (intent != null

                && Intent.ACTION_USER_PRESENT.equals(intent.getAction())) { 

            Toast.makeText(context, "屏幕已解锁", Toast.LENGTH_SHORT).show(); 

        

    

  

}

主动判断屏幕是否亮着:

?


1

2

3

4

5

6

7

public boolean isScreenOn(Context
context) { 

    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 

    if (pm.isScreenOn()) { 

        return true

    

    return false

}

判断是否开启了重力感应:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

/**

 * 是否开启了重力感应

 * @param context

 * @return

 */

public boolean screenIsOpenRotate(Context
context) { 

    int gravity = 0

    try 

        gravity = Settings.System.getInt(context.getContentResolver(), 

                Settings.System.ACCELEROMETER_ROTATION); 

    catch (SettingNotFoundException
e) { 

        e.printStackTrace(); 

    

    if (gravity == 1)

        return true

    

    return false

}

时间: 2024-10-18 14:20:32

Android监听屏幕解锁和判断屏幕状态的相关文章

Android监听view的attached或detached状态

我们在开发中,希望监听View的attached或detached状态,来进行比如eventbus的注册与解注册的操作,非常的方便实用. 可以使用系统给我们提供的listener,代码使用如下: mView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View v) { EventBus.getDefault

android监听屏幕打开关闭广播无响应的情况

android在屏幕打开和关闭的时候会发出广播,但是如果receiver配置在AndroidManifest.xml中时,receiver是接受不到任何广播的. <receiver android:name="cn.abcd.listener.ScreenStateReceiver" > <intent-filter> <action android:name="android.intent.action.SCREEN_OFF" /&g

android监听键盘

android中的带有输入功能的页面布局经常被弹出的键盘遮挡,一种处理方法是监听键盘的弹出,设置布局的padding或隐藏某些占位控件,使得输入框不被键盘遮挡.一种常用的方法是当Activity设置为android:windowSoftInputMode="adjustResize"的时候,键盘的弹出和隐藏会触发onSizeChaged的事件,用下面的自定义RealativeLayout则能监听这个函数并判断键盘是弹出还是收起. /* * @Project: GZJK * @Autho

Android 监听锁屏/开屏事件

1. 两种方案 (1) 监听BroadcastReceiver (2)获取PowerManager事件 2.  BroadcastReceiver 2.1. 事件 总共有3个事件: Intent.ACTION_SCREEN_ON : 屏幕点亮 Intent.ACTION_SCREEN_OFF :屏幕关闭 Intent.ACTION_USER_PRESENT: 用户解锁 2.2. 权限 监听用户解锁需要在AndroidManifest中注册权限 <uses-permission android:n

Android 监听APP进入后台或切换到前台方案对比

在我们开发的过程中,经常会遇到需要我们判断app进入后台,或者切换到前台的情况.比如我们想判断app切换到前台时,显示一个解锁界面,要求用户输入解锁密码才能继续进行操作:我们想判断app切换到后台,记录一下log:或者当用户切换回前台时,我们想刷新一下页面的数据等等...... android里面监听app前后台的方案很多(这还是得归根于安卓提供了丰富的api和强大的架构支撑,呵呵~),比如可以通过ActivityManager提供的getRunningAppProcesses()获取系统当前运

Android 监听ListView、GridView滑动到底部

// 监听listview滚到最底部mIndexList.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { // 当不滚动时 case OnScrollListener.SCROLL_STATE_IDLE: // 判断滚动到底部 if (view.get

android 监听网络状态的变化及实战

android 监听网络状态的变化及实际应用 转载请注明博客地址:http://blog.csdn.net/gdutxiaoxu/article/details/53008266 平时我们在请求错误的情况下,通常会进行处理一下,一般来说,主要分为两方面的错误 - 没有网络的错误 - 在有网络的情况下,我们客户端的错误或者服务器端的错误 今天这篇博客主要阐述以下问题 怎样监听网络状态的变化,包括是否打开WiFi,否打开数据网络,当前连接的网络是否可用 网络没有打开情况下的处理,如弹出对话框,跳转到

Android监听ScrollView滑动到顶端和底部

MainActivity如下: package cn.testscrollview; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ScrollView; import android.app.Activity; /** * Demo描述: * 监

Android 监听 Android中监听系统网络连接打开或者关闭的实现代码

本篇文章对Android中监听系统网络连接打开或者关闭的实现用实例进行了介绍.需要的朋友参考下 很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.Intent;  import android.net.ConnectivityManager;  import android.ne