繁体   English   中英

是否可以检测到用户何时打开屏幕(Android)?

[英]Is it possible to detect when the screen turns on by the user (Android)?

我发现两年前的帖子说有人无法做到。 我还发现可以使用ACTION_USER_PRESENT来检测用户何时解锁屏幕,但是可以检测到用户何时打开屏幕(通过任何操作)?

编辑:我想知道用户何时按下任何按钮或执行其他可以打开屏幕的操作

系统将广播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

        }
    }
}

请注意,您不能自己广播此事件。

我开始写这篇文章作为评论,但结果太大了。

我也找不到任何东西。 不能在服务上使用键侦听器,并且显然不能为电源按钮( 仅用于媒体按钮)注册广播接收器。 也许您可以在屏幕上的广播接收器上执行此操作,并检查当前活动是什么? 像这样 ,例如:

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());

如果您可以检测到具有焦点的活动是锁定屏幕,则增加了打开手机的用户的机会。 广播接收器上的另一种方法可能是检测电话是否已锁定,但是我想无论当前显示的是哪种活动,通常都是这种情况:

KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean locked = km.inKeyguardRestrictedInputMode();

希望这可以有所帮助。 这是一个有趣的问题。

您在找这个吗?

@Override
public void onConfigurationChanged (Configuration newConfig)

并将其放置在清单中,以便您需要定向通知的每个活动:

android:configChanges="orientation" >

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM