【问题标题】:Android - blocking hardware buttons while lockedAndroid - 锁定时阻止硬件按钮
【发布时间】: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 让我走到这一步,有时与知道那里在谈论什么的人讨论一下会有所帮助(希望 ^_-)。

【问题讨论】:

    标签: android samsung-mobile


    【解决方案1】:

    试试这个?

    Settings.System

    您可以每隔 1 毫秒启动一项服务并设置系统音量,以使其保持稳定水平。由于该值每 1 毫秒被覆盖一次,因此不需要进行密钥检查。

    此外,市场上有免费的容量保持器,因此您无需为此付费。

    【讨论】:

    • 这就是人们在 android 设备中实现此类功能的方式吗?要有一个不断设置音量值的恒定循环(我假设在它自己的线程中)?对我来说这似乎是一种不好的做法,但如果我错了,一定要纠正我。
    • 我正在搜索听众,但找不到任何相关内容,所以我想出了这个想法,这实际上是一种蛮力风格的东西。但是你可以监听ACTION_SCREEN_OFFACTION_SCREEN_ON 来控制你什么时候开始循环。这些是系统范围的广播。
    • FLAG_SHOW_WHEN_LOCKED 在您有活动并希望它在锁定时工作时很有用。但是你必须先开始你的活动。
    • 好的,感谢您提供的信息,非常有用;这导致我这样做:我可以使用服务来监听 ACTION_SCREEN_OFF 操作来启动我的活动(使用 FLAG_SHOW_WHEN_LOCKED)吗?或者屏幕关闭/锁定的事实是否会阻止显示操作?
    • 在你的 manifest.xml 中,你可以注册<receiver> 来加载你的广播接收器类,所以你不需要一个单独的服务来监听东西。使用该标志,您的窗口将接管锁定屏幕。但是,由于屏幕关闭,我不知道接管锁定屏幕是否有任何用处。
    猜你喜欢
    • 2013-08-22
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 2021-12-11
    • 2011-04-28
    • 2016-09-04
    相关资源
    最近更新 更多