【发布时间】:2018-12-22 00:31:31
【问题描述】:
我是 android 新手,我正在制作一个应用程序,该应用程序将监听连续的音量增大和音量减小按键并振动模式。
我已经尝试使用 dispatchKeyEvent() 并且它可以检测到音量的上下变化,但它会阻止用户更改音量。
public boolean dispatchKeyEvent(KeyEvent event) {
int action = event.getAction();
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
if (action == KeyEvent.ACTION_DOWN) {
System.out.println("UP"); // I know i can use Log but this is quicker to type
}
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
if (action == KeyEvent.ACTION_DOWN) {
System.out.println("DOWN");
}
return true;
default:
return super.dispatchKeyEvent(event);
}
}
此外,我希望能够在屏幕关闭(并且应用程序在后台)时执行此操作,但显然服务无法与关键事件交互。
我到处都找到了非常矛盾的答案;我之前使用的一个应用程序在后台播放声音,屏幕关闭并且连续按了3次电源按钮,但是这里的许多问题都有类似于“不可能”的答案。
我不介意使用电源按钮而不是音量键(事实上两者都很好),但这似乎更难实现。
TLDR:
如何阻止监听器阻塞他们正在监听的键。
2.如何在后台运行它。
任何帮助将不胜感激!
编辑:关于 no2,我找到了一种使用电源按钮执行此操作的方法,方法是在服务中注册广播接收器并监听屏幕关闭和屏幕开启意图。
【问题讨论】: