KEYCODE_VOLUME_UP / DOWN更改功能

时间:2012-09-01 14:48:23

标签: java android android-sdk-tools

我有一个应用程序: 3D立方体(OPENGLES)具有触摸和键支持。我使用KEYCODE_VOLUME_UP / DOWN来放大/缩小。负责的方法放在: MyGLSurfaceView扩展了GLSurfaceView 。我的问题是,当我按下缩小/ int时,它工作正常,但我也有音量增大/减小功能。可以快速解决这个问题吗?

代码:

       @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;
   }

1 个答案:

答案 0 :(得分:2)

系统音量控制由onKeyDown事件执行。在类中返回true会取消onKeyUp事件被系统处理,但onKeyDown已经运行。改为覆盖onKeyDown,它应该可以工作。

编辑:经过一些研究,似乎是覆盖dispatchKeyEvent的最佳方法,它应该阻止onKeyDown和onKeyUp事件。