`
zhouxiaoli521
  • 浏览: 562485 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

在做一个程序的时候,需要时刻保持某一服务是启动的,因此想到了通过监听屏幕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. };  


 

那怎么才能保证我的服务一直是启动状态呢,其实还有另一个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>  
http://blog.csdn.net/chenghai2011/article/details/7219336
 
分享到:
评论

相关推荐

    android全局事件监听器

    在Android开发中,全局事件监听器是一种非常实用的设计模式,它允许开发者在整个应用程序范围内监听特定的事件,而无需在每个需要响应的类中都添加监听代码。标题中的"android全局事件监听器"指的是一个实现此类功能...

    Java监听键盘鼠标全局事件[定义].pdf

    SysHook库提供了鼠标Hook和键盘Hook两个函数,分别用于捕捉鼠标事件和键盘事件。 六、Java VM和JNI的交互 Java VM和JNI的交互是Java监听键盘鼠标全局事件的核心。Java VM可以通过JNI调用native方法,以便与操作...

    netscanner_键盘全局监听_

    标题中的“netscanner_键盘全局监听_”表明这是一个与网络扫描和键盘全局监听相关的程序或工具。在IT行业中,键盘全局监听通常指的是一个应用程序能够捕获并处理系统中的所有键盘事件,即使焦点不在该应用上也能实现...

    Qt全局鼠标、键盘事件监听器库

    【Qt全局鼠标、键盘事件监听器库】是一个用于在Windows和Linux系统上实现跨平台的全局鼠标和键盘事件捕获的库。这个库基于流行的Qt框架,为开发者提供了一个便捷的方式来监听并处理系统的输入事件,无论是来自应用...

    C# Hock 全局监听程序外的键盘和鼠标的事件

    在IT领域,尤其是在Windows应用程序开发中,有时我们需要捕获系统级别的事件,比如全局键盘和鼠标活动,即使这些事件发生在我们的应用程序之外。C#语言提供了一种实现这一目标的方法,通过使用钩子(Hook)技术。"C#...

    vue项目消息链接全局创建监听

    在上述代码中,开发者通过`new WebSocket(wsUrl)`创建了一个WebSocket连接,并监听了`onopen`、`onmessage`、`onerror`和`onclose`事件来处理各种状态。 3. **全局消息**:在Vue项目中,为了在整个应用范围内共享...

    hook全局监听键盘事件

    在C#编程环境中,"hook全局监听键盘事件"是指通过特定技术手段监控并处理系统级别的键盘输入事件。这种技术常用于开发需要捕获用户键盘行为的应用,如游戏、自动化工具或者安全软件。以下是对这个主题的详细解释: ...

    给键盘添加全局监听需要用到的包jintellitype-1.3.9.rar

    给键盘添加全局监听需要用到的包jintellitype-1.3.9 内含示例源代码

    Node.js-Node.js全局键盘和鼠标侦听器

    在标题“Node.js-Node.js全局键盘和鼠标侦听器”中,提及的是如何在 Node.js 环境下实现对键盘和鼠标的全局监听。这种功能通常用于构建桌面应用、自动化脚本或游戏控制等场景。 在描述中,我们看到“全局键盘和鼠标...

    微信小程序全局变量改变监听的实现方法

    当时想到的就是使用全局变量,在 app.js 中定义好全局变量,点击组件页面时就修改全局变量的值,父页面同样使用全局变量的值,这样一来就可以动态打开/关闭弹出层且传递值了。 下面先看看 app.js 中怎么定义的: ...

    C# 全局监听键盘源代码

    (1)当C#监听页面窗口,不在第一页面或者页面窗口不在最前方时,能监听到键盘的任何一个键的信息; (2)当C#监听窗口隐藏时,也可以监听到键盘信息,还可以设置快捷键: (3)C#代码写作过程中,可做键盘交互,...

    QT 键盘监听(重写监听事件)

    为了全局监听键盘事件,我们需要自定义一个事件过滤器类,继承自QObject,并重写其eventFilter()方法。事件过滤器可以拦截应用程序中的所有事件,包括键盘事件。 ```cpp #include #include class KeyboardFilter...

    jquery监听鼠标滚轮事件+js监听滚轮事件

    这个例子和jQuery版本相似,只是使用了原生的事件监听方法。注意,对于不支持`event.preventDefault()`的老版本IE,还需要设置`event.returnValue = false`来阻止默认行为。 总结,无论使用jQuery还是原生...

    android.intent.action.TIME_TICK

    "SCREEN_ON"广播在用户解锁设备或者屏幕由关闭状态变为打开状态时触发,这使得应用能够根据屏幕的状态进行相应的操作,比如暂停或恢复某些任务。而"BATTERY"广播则与电池状态变化有关,当设备的电池电量发生变化时,...

    dotnet-GlobalHooks允许您监听全局键盘和鼠标事件

    全局钩子是一种技术,允许开发者在操作系统级别设置钩子,监听和处理系统的键盘和鼠标事件。这使得应用程序能够在不处于焦点或前台运行时,也能捕获用户的输入。 在全球钩子的工作原理中,它通过向系统注册一个钩子...

    java 键盘监听,可以不设置交点全局监听。

    运行后可以在后台进行监听键盘时间。后台支持打印记录,现在可以打出键盘编号,不用设置焦点就能监听键盘所有操作。

    Electron中通过globalShortcut实现监听键盘事件进而实现快捷键功能示例代码.zip

    综上所述,`Electron`中的`globalShortcut`模块提供了简单易用的方式来监听和响应全局键盘事件,从而实现快捷键功能。开发者可以根据需求注册不同的快捷键组合,并在触发时执行相应的业务逻辑。通过合理地运用`...

    android 后台监听按键事件方法及demo

    android 后台监听按键事件方法及demoandroid 后台监听按键事件方法及demo

    Qt 全局键盘监听例子 shortcut

    QT 下的全局键盘监听例子,用sqlite记录某个路径下的可执行文件或软件的信息,然后监听pause键。当用户按下pause键,然后再输入某个软件的关键字时,比如ps,然后空格或回车就可以启动photoshop。Qt 4.8环境编译通过...

    键鼠全局监听java附加cpp的源码

    标题 "键鼠全局监听java附加cpp的源码" 涉及的是一个跨语言编程的项目,其中Java和C++协同工作以实现全局的键盘和鼠标事件监听功能。这种技术通常用于系统级监控、自动化测试或者游戏外挂等场景。 在Java中,原生...

Global site tag (gtag.js) - Google Analytics