我正在制作一个应用程序,需要在用户摇动手机时打开/关闭屏幕。到目前为止,我已经有了一个 SensorEventListener,它可以按照答案中的建议监听震动这个问题 https://stackoverflow.com/questions/2317428/android-i-want-to-shake-it.
当我检测到震动时,我会按照中的建议更改屏幕亮度的值这个问题的答案 https://stackoverflow.com/questions/1875669/calling-hidden-api-in-android-to-turn-screen-off。如果我实际上没有关闭屏幕,这一切都很好...如果我通过将亮度设置为 0.01fpublic void setBright(float value)
方法效果完美。但是,如果我将亮度设置为 0.0f,手机将不会再次转动屏幕......至少在我按下电源按钮之前不会。
我想做的事情可能吗?我究竟做错了什么?
- 编辑 -
谢谢Dre https://stackoverflow.com/users/23033/dre and 冰激凌 https://stackoverflow.com/users/314089/icyerasor我进一步研究了这个问题。我获得了一个部分唤醒锁定 http://developer.android.com/intl/fr/reference/android/os/PowerManager.html之前我把亮度设置为0.0f,但是晃动手机还是不亮。然而,当我调试应用程序时,我发现当我在屏幕关闭的情况下摇动手机时,setBright(1.0f) 会被正确调用;我怀疑锁屏在某种程度上弄乱了它,因为当我按下电源按钮时它就会启动。按下电源按钮后,应用程序将继续像平常一样工作。有没有办法绕过锁屏?
感谢您的帮助!
不过,我同意 icyerasor 的猜测——如果猜测正确并且手机将要休眠,您将必须获得一个PARTIAL_WAKE_LOCK http://developer.android.com/intl/fr/reference/android/os/PowerManager.html让CPU保持清醒before您将亮度设置为 0.0
我会在回答之前对此进行测试,但目前我无法访问 Android 设备。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)