我从两年前发现post有人说这是不可能完成的。 我还发现我可以使用ACTION_USER_PRESENT来检测用户何时解锁屏幕,但是我可以检测用户何时打开屏幕(通过任何操作)?是否有可能检测到用户(Android)打开屏幕?
编辑:我想知道,当用户按下任意键或做其他任何可以打开屏幕
我从两年前发现post有人说这是不可能完成的。 我还发现我可以使用ACTION_USER_PRESENT来检测用户何时解锁屏幕,但是我可以检测用户何时打开屏幕(通过任何操作)?是否有可能检测到用户(Android)打开屏幕?
编辑:我想知道,当用户按下任意键或做其他任何可以打开屏幕
我开始写这个作为一个评论,但事实证明太大。
我也找不到任何东西。你can't have a key listener on services和你显然无法注册一个广播接收器的电源按钮,only for media buttons。也许你可以在广播接收机上对屏幕进行此操作,并检查当前的活动)? Like this,例如:
ActivityManager am = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE);
List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
Log.d(WebServiceHelper.TAG, "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName()+" Package Name : "+ componentInfo.getPackageName());
如果你可以得到检测与焦点的活动是锁屏,你增加的是谁把他/她的手机上的用户的机会。也许在广播接收器的另一种方法是to detect if the phone is locked,但我想这将是通常的情况下,无论所显示的当前活动:
KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean locked = km.inKeyguardRestrictedInputMode();
希望这能以某种方式帮助。这是一个有趣的问题。
你在找这个吗?
@Override
public void onConfigurationChanged (Configuration newConfig)
,并把这个在您的清单中为每个活动要定向通知:
android:configChanges="orientation" >
我不想改变方向。我想知道用户什么时候按任何按钮或做任何可以打开屏幕 –
哦,对不起。我误读为“转身”。 –
系统将会播放Intent.ACTION_SCREEN_ON,当屏幕开启时,您可以使用它来捕捉事件。
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
// your code here
}
}
}
请注意,您不能自己公开这个活动。
这不是我要求的 –
请参阅:http://stackoverflow.com/a/9478013/362298 –
此操作用于检测屏幕何时开启\关我想知道用户什么时候开启屏幕 –