Android -锁定时阻塞硬件按钮



我正在考虑制作一个应用程序,防止音量上/下键的默认动作,并希望得到一些输入,看看我是否会浪费我的时间尝试。

设置如下:

我有一部三星Galaxy S3。我喜欢听音乐。当手机锁在口袋里的时候,我经常无意中改变播放内容的音量。

一开始我以为会很简单;测试了onKeyDown()方法的简单重写,用于检索音量键的整数值。我很快意识到,只有当我不锁手机,只打开那个应用程序时,这才有效。

接下来我发现了一些关于服务的文章,但我认为这也不能满足我的需求,因为它不是Activity的子集,所以没有实现onKeyDown();如果我没记错的话,唤醒锁真的能唤醒或解锁手机吗?

我现在应该放弃吗,还是这实际上是可以实现的?
(游戏邦注:实际上这是可能的,因为我不需要为这一功能支付3英镑。lol)

注:运行4.2.1
对Android来说是新的,但对Java来说不是。

史蒂夫。

编辑:只是一个想法,但如果我扩展活动到我自己的类(并覆盖onKeyDown),并实例化它在一个服务作为一个静态实例,会自定义活动持续,而手机被锁定?

Edit2:我发现了这个SO帖子,建议使用FLAG_SHOW_WHEN_LOCKED。我回家后会开始看这个,但我仍然愿意接受建议和建议:D

编辑3:如果我开始失去情节,告诉我…
使用广播接收器,我将监听ACTION_SCREEN_OFF标志。如果它被调用,创建我的自定义活动(与onKeyDown()覆盖),并将其设置为FLAG_SHOW_WHEN_LOCKED接管我的锁屏幕(我不在乎,因为屏幕是关闭的)。接收器然后监听ACTION_SCREEN_OFF,如果被调用,它将在显示屏幕之前销毁活动(或之后,如果它闪烁,我不会感到困扰)。(甚至可能只是暂停它,只有当它检测到解锁时才杀死它)。

也非常感谢@StoneBird让我走了这么远,有时它有助于与知道那里谈论什么的人讨论(希望^_-)。

试一下?

设置。系统

您可以启动一个服务,并设置系统音量,如每1毫秒保持一个稳定的水平。不需要键检查,因为该值每隔1毫秒重写一次。

而且,市场上有免费的音量管理器,所以你不必为此付费。

最新更新