我有一个应用程序:
具有触摸和按键支持的3D立方体(OPENGLES)。我正在使用KEYCODE_VOLUME_UP / DOWN进行放大/缩小。负责此操作的方法位于:
MyGLSurfaceView扩展了GLSurfaceView。我的问题是,当我按缩小/内插时,它可以正常工作,但是我也有音量增大/减小功能。可以为此快速解决吗?
码:
@Override
public boolean onKeyUp(int keyCode, KeyEvent evt) {
switch(keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT: // Decrease Y-rotational speed
renderer.speedY -= 0.3f;
break;
case KeyEvent.KEYCODE_DPAD_RIGHT: // Increase Y-rotational speed
renderer.speedY += 0.3f;
break;
case KeyEvent.KEYCODE_DPAD_UP: // Decrease X-rotational speed
renderer.speedX -= 0.3f;
break;
case KeyEvent.KEYCODE_DPAD_DOWN: // Increase X-rotational speed
renderer.speedX += 0.3f;
break;
case KeyEvent.KEYCODE_VOLUME_DOWN:// Zoom out (decrease z)
renderer.z -= 0.4f;
break;
case KeyEvent.KEYCODE_VOLUME_UP: // Zoom in (increase z)
renderer.z += 0.4f;
break;
case KeyEvent.KEYCODE_DPAD_CENTER:
renderer.speedY = 0;
renderer.speedX = 0;
renderer.z = -6.0f;
break;
}
return true;
}
最佳答案
系统音量控制由onKeyDown事件执行。在您的类中返回true会取消系统正在处理的onKeyUp事件,但是onKeyDown已经运行。改写onKeyDown,它应该可以工作。
编辑:经过一些研究,似乎最好的方法是覆盖dispatchKeyEvent,这应该同时防止onKeyDown和onKeyUp事件。
关于java - KEYCODE_VOLUME_UP/DOWN更改功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12228716/