【问题标题】:Detect Volume Button Press when Screen off屏幕关闭时检测音量按钮按下
【发布时间】:2012-06-30 19:49:41
【问题描述】:

我有一项服务可以检测我的 Android 手机的显示屏何时打开或关闭。关闭时,该服务调用一个活动,该活动使用 dispatchKeyEvent 来检测何时按下音量增大按钮。不幸的是,当屏幕关闭时,活动显然无法执行此操作。 (见this post.)

不过,我注意到,某种程度的东西正在检测该事件,因为当我在屏幕关闭时按下音量增大按钮时会出现以下 LogCat 消息:“CatService:返回当前 sInstance”。该消息似乎是特定于设备的,因为在不同的设备上,日志中会出现不同的内容,但我真的只关心第一个设备。

我对 CatService 进行了一些研究,但没有发现太多,也无法弄清楚如何使用它或生成日志消息的任何东西来检测音量增大按钮的按下情况。任何人都可以对此有所了解,我将不胜感激。

【问题讨论】:

  • 如果您正在运行 logcat,您可能连接了 USB 数据线并阻止了手机的处理器进入睡眠状态。在使用电池运行时需要让它休眠是这个想法的主要障碍之一。

标签: android


【解决方案1】:

在屏幕关闭时继续检测此类事件的唯一方法是获取一个 WakeLock,它允许屏幕关闭,但仍让您的应用正常运行。然而,这会消耗相当多的电池寿命,并且只应在绝对必要时使用。

在这种情况下,您需要PARTIAL_WAKE_LOCK

【讨论】:

  • 谢谢,Raghav 和 Chris。我的问题的原因是我最近升级到 ICS,这样做失去了使用音量按钮唤醒手机/打开屏幕的能力(显然内置于 2.3 或我之前拥有的 Sense 版本(得到也升级了))并希望创建一些东西来恢复该功能(我的电源按钮很难按下)。根据您告诉我的内容,在操作之前检测到音量按钮按下的任何操作都与我能做的任何事情完全不同,因为它是在较低级别进行的。
  • 如果它是 Stock ROM 中的一个功能,那么它很可能是在固件级别添加的,就像对主页按钮的处理一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多