如果设备已被唤醒或进入睡眠状态,如何检查应用程序
Posted
技术标签:
【中文标题】如果设备已被唤醒或进入睡眠状态,如何检查应用程序【英文标题】:How to check in application if the device has been awoken or went to sleep 【发布时间】:2014-09-28 23:00:38 【问题描述】:在我的 android 应用中,我想在设备唤醒时收到通知 以及设备何时进入睡眠状态。 基于此,我必须执行一些操作。 请帮忙。
请注意
SCREEN_ON / OFF 不同。屏幕可能已关闭,但设备可能 在接到电话的情况下仍处于唤醒状态。什么时候我们 将手机靠近我们的耳朵接近传感器会关闭屏幕, 但设备不会进入睡眠状态。
【问题讨论】:
***.com/questions/5007721/… @Ankit 有什么适合你的解决方案吗? 【参考方案1】:您可以捕获内置的 IntentFilter。
Intent.ACTION_SCREEN_ON
Intent.ACTION_SCREEN_OFF
使用服务和广播接收器组合,您可以实现您所寻找的。p>
你会发现完整的演示HERE
更新:
你可以使用PowerManager类的一些方法。
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
if(pm.isScreenOn())
// not sleep
else
// sleep
API 级别 >=20
if(pm.isInteractive())
// not sleep
else
// sleep
解释:
public boolean isScreenOn ()
在 API 级别 7 中添加
此方法在 API 级别 20 中已弃用。
请改用isInteractive()
。
如果设备处于交互状态,则返回 true。
由于历史原因,此方法的名称是指屏幕的电源状态,但它实际上描述了设备的整体交互状态。此方法已替换为isInteractive()
。
此方法返回的值仅表示设备是否处于交互状态,可能与屏幕开启或关闭无关。要确定屏幕的实际状态,请使用getState()
。
返回
True
如果设备处于交互状态。
参考HERE
【讨论】:
SCREEN_ON / OFF 不同。屏幕可能已关闭,但设备可能仍处于唤醒状态,以防接到电话。当我们将手机靠在耳边时,接近传感器会关闭屏幕,但设备不会进入睡眠状态。【参考方案2】:http://androidexample.com/Screen_Wake_Sleep_Event_Listner_Service_-_Android_Example/index.php?view=article_discription&aid=91&aaid=115
我认为这个链接解决了你的问题
import android.content.Context;
import android.content.Intent;
公共类 AEScreenOnOffReceiver 扩展 BroadcastReceiver
private boolean screenOff; @Override public void onReceive(Context context, Intent intent) //Toast.makeText(context, "BroadcastReceiver", Toast.LENGTH_SHORT).show(); if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) screenOff = true; else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) screenOff = false; // Toast.makeText(context, "BroadcastReceiver :"+screenOff, Toast.LENGTH_SHORT).show(); // Send Current screen ON/OFF value to service Intent i = new Intent(context, AEScreenOnOffService.class); i.putExtra("screen_state", screenOff); context.startService(i);
【讨论】:
以上是关于如果设备已被唤醒或进入睡眠状态,如何检查应用程序的主要内容,如果未能解决你的问题,请参考以下文章