音量ボタンの長押し(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
アプリがバックグラウンドの場合にのみ呼び出されました。
誰かがこれが正しい動作であることを説明できますか? また、バックグラウンドからの長い音量ボタンの押下を処理することは可能ですか?