当我的手机屏幕在Android中关闭时无法检测到震动事件

问题描述 投票:2回答:1

在我的应用程序中,我想检测抖动事件,并且我正在使用SensorEventListener,当我的活动在前台运行时,代码工作正常。但是当我按下手机的锁定按钮来锁定屏幕时,无法检测到震动事件。我在三星gts5360上测试了我的代码。但是相同的代码在sony ericssion xperia mini pro上运行良好。实际上,当我让设备闲置大约时,我的三星手机没有检测到震动事件。锁定设备后45秒。

然后我摇动手机,它没有检测到震动,但是当我在几秒钟之后晃动手机时它开始听动摇。我的三星手机的这种行为并不一致。它会在一段随机时间后开始和停止聆听震动事件。

现在我的问题是“这是Android设备在屏幕锁定/关闭时没有检测到震动事件的功能吗?”。

如果是,那么我的三星手机在锁定手机几秒钟后如何开始/停止收听?

在“Sony ericssion xperia mini pro”中屏幕锁定/关闭时,它是如何连续收听震动事件的?

此功能是否因供应商而异?

如果某些身体需要我的代码然后让我知道,我会提供它。

android sensor shake motion-detection screen-lock
1个回答
0
投票

问题是很长一段时间没有一致的标准,当屏幕熄灭时如何处理传感器。有些设备允许它继续工作,而有些设备则不能。最终Android团队决定,为了使其工作,应用程序应该为这种操作获取部分唤醒锁定:

PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);
PowerManager.WakeLock lock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "SensorRead");
lock.acquire();

需要此权限:"android.permission.WAKE_LOCK"

您需要确保在完成唤醒锁定后释放唤醒锁定,以便CPU可以完全进入睡眠状态。

即使这一切都可能无效。我发现LG手机最近不太可能支持背景传感器。此外,许多摩托罗拉手机不需要唤醒锁定,而只需在屏幕关闭时重新注册传感器。

© www.soinside.com 2019 - 2024. All rights reserved.