【发布时间】:2013-04-26 03:47:29
【问题描述】:
我正在研究制作一个应用程序来阻止音量增大/减小按键的默认操作,并希望获得一些输入,看看我是否会浪费时间尝试。
设置如下:
我有一台三星 Galaxy S3。我喜欢听音乐。当手机被锁在口袋里时,我经常会无意中改变正在播放的音量。
起初我认为这很简单;测试了 onKeyDown() 方法的简单覆盖,用于检索音量键的整数值。很快我就意识到,只有在我不锁定手机并且只保持该应用程序打开的情况下,这才有效。
接下来我发现了一些关于服务的文章,但是我相信这也不能满足我的需求,因为它不是 Activity 的子集,因此没有实现 onKeyDown();除非我弄错了,否则唤醒锁实际上会唤醒和/或解锁手机?
我现在应该放弃,还是真的可以做到?
(实际上它必须是可能的,因为我不必为这个功能支付 3 英镑的应用程序费用。哈哈)
注意:运行 4.2.1
刚接触 Android,但不是 Java。
史蒂夫。
编辑:只是一个想法,但如果我将 Activity 扩展到我自己的类(并覆盖 onKeyDown),并将其作为静态实例在 Service 中实例化,那么该自定义活动是否会在电话中持续存在被锁了吗?
Edit2:我找到了this SO post,它建议使用 FLAG_SHOW_WHEN_LOCKED。我回家后会开始研究这个,但我仍然愿意接受建议和建议:D
编辑 3:
好的,如果我开始在这里失去情节,请告诉我...
使用广播接收器,我将监听 ACTION_SCREEN_OFF 标志。如果调用它,请创建我的自定义活动(使用 onKeyDown() 覆盖)并将其设置为 FLAG_SHOW_WHEN_LOCKED 以接管我的锁定屏幕(我不在乎,因为屏幕已关闭)。然后接收器监听 ACTION_SCREEN_OFF,如果被调用,它将在显示屏幕之前销毁 Activity(或者之后,如果它闪烁,我不会打扰)。
(甚至可能只是暂停它,并且只有在检测到解锁时才将其杀死)。
也非常感谢 @StoneBird 让我走到这一步,有时与知道那里在谈论什么的人讨论一下会有所帮助(希望 ^_-)。
【问题讨论】: