我想处理音量按钮的长按(大约 10 秒)(音量增大或音量减小无关紧要)。
出于这个原因,我使用了自己的实现MediaKeyListener
private class LoongPressKeyListener extends MediaKeyListener {
public boolean mediaAction(int action, int source,
Object paramObject) {
System.out.println("::: action=" + action + ";source=" + source + ";object=" + paramObject);
}
public boolean keyDown(int keycode, int status) {
switch (Keypad.key(keycode)) {
case Keypad.KEY_VOLUME_UP:
case Keypad.KEY_VOLUME_DOWN:
System.out.println("volume keyDown");
return true;
default:
return super.keyDown(keycode, status);
}
}
public boolean keyUp(int keycode, int status) {
switch (Keypad.key(keycode)) {
case Keypad.KEY_VOLUME_UP:
case Keypad.KEY_VOLUME_DOWN:
System.out.println("volume keyUp");
return true;
default:
return super.keyUp(keycode, status);
}
}
}
但是由于某些原因keyUp
和keyDown
方法只有在前台应用时才被调用。mediaAction
只有当应用程序在后台时才被调用。
有人可以解释这是正确的行为吗?是否可以从后台处理长音量按钮?