【问题标题】:turn the screen on/off in Android with a shake摇一摇在 Android 中打开/关闭屏幕
【发布时间】:2011-03-06 22:47:43
【问题描述】:

我正在制作一个需要在用户摇动手机时打开/关闭屏幕的应用。到目前为止,我已经有了一个 SensorEventListener,它可以按照this question 的答案中的建议来监听震动。

当我检测到抖动时,我会按照this question's answer 中的建议更改屏幕亮度值。如果我实际上不关闭屏幕,这一切都很好......如果我通过public void setBright(float value) 方法将亮度设置为0.01f,它会完美运行。但是,如果我将亮度设置为 0.0f,手机将不会再次转动屏幕……至少在我按下电源按钮之前不会。

我正在尝试做的事情可能吗?我做错了什么?

-- 编辑--

感谢Dreicyerasor 我已经进一步调查了这个问题。我在将亮度设置为 0.0f 之前获得了PARTIAL_WAKE_LOCK,但是当我摇晃手机时它仍然无法打开。但是,当我调试应用程序时,我发现当我在屏幕关闭的情况下摇动手机时 setBright(1.0f) 会被调用;我怀疑锁屏在某种程度上弄乱了它,因为当我按下电源按钮时它就会启动。在我按下电源按钮后,该应用程序继续像往常一样工作。有没有办法绕过锁屏?

感谢您的帮助!

【问题讨论】:

  • 这个要求你成功了吗?
  • 抱歉,我的要求发生了变化,这对我的项目来说不再是问题。我的最后一个猜测是最好的:如果您停用锁屏,它可能会起作用。
  • 我遇到了和你类似的问题。但是我想知道当屏幕关闭时您是如何检测设备的抖动事件的。
  • 我已经很久没有研究这个问题了,但我记得,我只是使用了一个 SensorEventListener 并遵循了答案中提供的建议。

标签: android sensors brightness


【解决方案1】:

我同意 icyerasor 的猜测,但是 -- 如果猜测正确并且手机将进入睡眠状态,您将必须获得一个 PARTIAL_WAKE_LOCK 以保持 CPU 处于唤醒状态设置亮度之前为 0.0

我会在回答之前对此进行测试,但目前我无法访问 Android 设备。

【讨论】:

  • 我什至会推荐一个 SCREEN_BRIGHT_WAKE_LOCK。 ACQUIRE_CAUSES_WAKEUP 只是一个额外的修改器。并且在使用 PARTIAL_WAKE_LOCK 时被忽略(至少您链接的文档是这样说的。哦,刚刚看到我复制了代码而没有修改标志.. 编辑。
  • 是的,但是持有SCREEN_BRIGHT_WAKE_LOCK 然后尝试将亮度设置为 0 可能会失败,问题是 CPU 可能会进入睡眠状态并且 OP 的代码停止运行。他们需要持有PARTIAL_WAKE_LOCK 以保持 CPU 唤醒和他们的代码运行。
  • 啊,好吧。然后他应该 .acquire(), setBrightnesTo100(); .release(),对吧?
  • 谢谢!我按照你们的建议做了,但还是不行。我用更多信息编辑了这个问题,如果有帮助的话:)
【解决方案2】:

只是猜测:将其设置为亮度 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多