监听屏幕点亮和关闭状态

监听屏幕的状态就需要广播,我们还必须要动态注册广播才能实现监听屏幕亮暗(静态注册无效)。我这里是在service做的处理,没啥技术难度,直接上代码。

package com.kale.camerademo;

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;

/**
 * @author:金凯
 * @tips :
 * @web :http://blog.csdn.net/lamp_zy/article/details/7968938
 * @date :2014-2-27
 */
public class ScreenService extends Service {

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    public void onCreate() {
        super.onCreate();
        /* 注册屏幕唤醒时的广播 */
        IntentFilter mScreenOnFilter = new IntentFilter("android.intent.action.SCREEN_ON");
        ScreenService.this.registerReceiver(mScreenOReceiver, mScreenOnFilter);

        /* 注册机器锁屏时的广播 */
        IntentFilter mScreenOffFilter = new IntentFilter("android.intent.action.SCREEN_OFF");
        ScreenService.this.registerReceiver(mScreenOReceiver, mScreenOffFilter);
    }

    public void onDestroy() {
        super.onDestroy();
        ScreenService.this.unregisterReceiver(mScreenOReceiver);
    }

    /**
     * 锁屏的管理类叫KeyguardManager,
     * 通过调用其内部类KeyguardLockmKeyguardLock的对象的disableKeyguard方法可以取消系统锁屏,
     * newKeyguardLock的参数用于标识是谁隐藏了系统锁屏
     */
    private BroadcastReceiver mScreenOReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();

            if (action.equals("android.intent.action.SCREEN_ON")) {
                System.out.println("—— SCREEN_ON ——");
            } else if (action.equals("android.intent.action.SCREEN_OFF")) {
                System.out.println("—— SCREEN_OFF ——");
            }
        }

    };

}

启动服务:

startService(new Intent(MainActivity.this,ScreenService.class));

运行结果:

时间: 2024-11-25 10:56:47

监听屏幕点亮和关闭状态的相关文章

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

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

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

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

全局监听SCREEN_ON和SCREEN_OFF的替代方法--监听屏幕解锁事件

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

Android监听view的attached或detached状态

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

设置休眠时间,获得休眠时间,监听屏幕状态,服务启动界面

public class MyService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { Log.e("zz","zz"); MyService.ScreenListener mScreenListener= new MyService.ScreenListe

查看监听端口号,以及关闭进程

查看本机的监听端口号 netstat -an 回车 此命令可以查看本机已经启动的监听端口 -------------------------------------------------------------------------------------------------- 在windows命令行窗口下执行:   C:\>netstat -ano 我们可以知道某一端口被那个进程(对应PID)占用:然后我们可以打开任务管理器:查看某一PID对应的进程名:如果PID没有显示,菜单>查看

Android如何在activity中控制屏幕点亮与关闭

Android中通过各种Lock锁对电源进行控制,需要注意的是加锁和解锁必须成对出现. //启用屏幕常亮功能 PowerManager pm =(PowerManager) getSystemService(POWER_SERVICE); wakeLock= pm.newWakeLock(PowerManager.FULL_WAKE_LOCK| PowerManager.ACQUIRE_CAUSES_WAKEUP, myPowerManager.TAG); wakeLock.acquire();

IOS第五天(2:用户登录,回车的监听(代理模式UITextFieldDelegate)) 和关闭键盘

*********用户登录,回车的监听(代理模式UITextFieldDelegate) #import "HMViewController.h" @interface HMViewController () <UITextFieldDelegate> @property (weak, nonatomic) IBOutlet UITextField *userNameText; @property (weak, nonatomic) IBOutlet UITextField

监听电话来时候的一些状态

#import <CoreTelephony/CTCallCenter.h> #import <CoreTelephony/CTCall.h> /// 监听拨打电话状态 _callCenter = [[CTCallCenter alloc] init]; _callCenter.callEventHandler=^(CTCall* call) { if (call.callState == CTCallStateDisconnected) { NSLog(@"挂断电话&q