如何在服务中检测长按音量键?

我想在服务中检测音量键中的长按。 以下是我的选择:


A)让用户从锁定屏幕控制音量

在屏幕关闭时,我不想检测用户是否按下了服务中的音量按钮。 我已经尝试过(使用2天)使用contentObserver ,但问题是contentObserver检测到音量变化,并且当屏幕关闭时音量不会改变。 有什么方法可以让用户从锁定屏幕控制音量?


B)从服务中检测长按音量按钮

我怎样才能做到这一点? 屏幕关闭时是否可以使用任何广播接收器? 有没有办法在服务中实现dispatchKeyEvent

我见过这个 ,但对我来说,第二个答案在后台不起作用。 我认为最简单的方法是选项A因为我已经为用户更改音量设置了所有内容,所以我可以让用户从锁定屏幕控制音量吗? 如果没有,还有什么我可以做的吗?

非常感谢,

Ruchir