用摇晃在Android中打开/关闭屏幕
我正在制作一个应用程序,当用户摇动手机时需要打开/关闭屏幕。到目前为止,我已经有了一个SensorEventListener,它可以按照this question的回答中的建议监听抖动。用摇晃在Android中打开/关闭屏幕
当我检测到晃动时,我按照this question's answer中的建议更改了屏幕亮度的值。如果我实际上没有关闭屏幕,那么这一切都会很好......如果通过public void setBright(float value)
方法将亮度设置为0.01f,则它可以很好地工作。但是,如果我将亮度设置为0.0f,手机将不会再次打开屏幕......直到至少按下电源按钮。
是我想要做的可能吗?我究竟做错了什么?
- 编辑 -
感谢Dre和icyerasor我再进去看了问题。在我将亮度设置为0.0f之前,我获得PARTIAL_WAKE_LOCK,但是当我摇动手机时它仍然不亮。但是,当我调试应用程序时,我发现setBright(1.0f)在屏幕关闭时摇动手机时会被调用;我的怀疑是,锁屏不知怎么搞乱了,因为当我按下电源按钮时,它会开启。按下电源按钮后,应用程序会继续像往常一样继续工作。有没有办法绕过锁屏?
感谢您的帮助!
只是一个猜测:将它设置为brighnes 0.0也可能使手机进入睡眠模式?
当你想打开它重新编程,尝试获取ACQUIRE_CAUSES_WAKEUP激活锁定:
PowerManager pm = (PowerManager)mContext.getSystemService(
Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(
PowerManager.SCREEN_BRIGHT_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP,
TAG);
wl.acquire(1000);
我同意icyerasor的猜测,但是 - 如果猜测是正确的,手机睡觉你会要获得PARTIAL_WAKE_LOCK
保持清醒CPU设置亮度为0.0
回答之前,我会测试这个之前,但我没有在这个时刻访问Android设备。
我甚至会推荐SCREEN_BRIGHT_WAKE_LOCK。 ACQUIRE_CAUSES_WAKEUP只是一个额外的修改器。并且在使用PARTIAL_WAKE_LOCK时被忽略(至少你链接的文档说的是这样的哦,只是看到我复制了代码而没有执行标志..编辑。 – icyerasor 2011-03-06 23:09:42
是的,但是持有'SCREEN_BRIGHT_WAKE_LOCK',然后尝试将亮度设置为0可能会失败,问题是CPU可能会进入休眠状态,并且OP的代码停止运行,他们需要保持'PARTIAL_WAKE_LOCK'来保持CPU的唤醒状态并且它们的代码正在运行 – Dre 2011-03-06 23:12:02
啊好的,那么他应该.acquire(), setBrightnesTo100(); .release(),对吗? – icyerasor 2011-03-06 23:15:21
你是否成功达到了这个要求? – Gajini 2013-08-30 07:31:48
对不起,我的要求改变了,对我的项目来说不再是问题。我的最后是我最好的猜测:如果你停用锁屏,它可能会工作。 – 2013-08-30 14:55:59
我遇到类似的问题。但是我想知道当屏幕关闭时如何检测设备的摇晃事件。 – Shikhar 2014-03-21 12:47:59