2013-04-24 35 views
1

我正在研究制作一个应用程序,防止音量上/下按键的默认操作,并希望得到一些输入,看看我是否会浪费我的时间尝试。安卓 - 阻止锁定硬件按钮

下面是设置:

我有一个三星Galaxy S3。我喜欢听音乐。通常我会无意中改变手机锁定时和我口袋里播放的音量。

起初我认为它会很简单;已经测试了用于检索音量键的整数值的onKeyDown()方法的简单覆盖。我很快意识到,只有当我不锁定手机并保持该应用程序打开时,这才会起作用。

接下来,我发现了一些关于服务的文章,但是我相信这也不符合我的需求,因为它不是Activity的子集,所以不实现onKeyDown();除非我错了,否则唤醒锁实际上会唤醒和/或解锁手机?

现在应该放弃还是实际可以实现?
(实际上它必须能够为这整个的一点是,我没有支付£3这一个功能的应用程序笑)。

注:运行4.2.1
新到Android ,但不适用于Java。

Steve。

编辑:只是一个想法,但如果我延长活动,以我自己的类(和覆盖的onkeydown),并实例化它的服务作为一个静态实例,将是自定义活动持续,而手机被锁定?

编辑2:我发现this SO post建议使用FLAG_SHOW_WHEN_LOCKED。我就开始看这个,当我回家,但我仍然是开放的建议和意见:d

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

同样非常感谢@StoneBird让我走得这么远,有时候它会帮助我们把它与一个知道在说什么(希望^ _-)的人散列出来。

回答

0

试试这个吗?

Settings.System

你可以这样开始每隔1毫秒的服务,并设置系统音量保持在一个稳定的水平。由于该值每1毫秒被覆盖一次,因此不需要进行密钥检查。

另外,市场上有免费的数量管理员,所以你不必为此付费。

+0

这是人们如何实现这种类型的功能在android供电设备?要有一个恒定的循环(在我自己的线程中,我假设),这是不断设置音量值?对我来说,这似乎是不好的做法,但如果我错了,一定要纠正我。 – Steve 2013-04-25 08:10:13

+0

我在寻找听众,但找不到任何相关的东西,所以我想出了这个想法,这实际上是一种暴力风格的东西。但是,您可以侦听“ACTION_SCREEN_OFF”和“ACTION_SCREEN_ON”来控制何时启动循环。这些是全系统广播。 – StoneBird 2013-04-25 15:56:03

+0

当您有一项活动并希望它在锁定状态下工作时,'FLAG_SHOW_WHEN_LOCKED'非常有用。但是你必须先开始你的活动。 – StoneBird 2013-04-25 15:59:00