![](/img/trans.png)
[英]How to detect when user turns on/off talkback in android programmatically
[英]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.