2012-09-01 63 views
0

我有一個應用程序: 3D立方體(OPENGLES)與觸摸和關鍵支持。我正在使用KEYCODE_VOLUME_UP/DOWN放大/縮小。負責的方法放置在: MyGLSurfaceView擴展GLSurfaceView。我的問題是,當我按下縮小/ int,它工作正常,但我也有音量加/減功能。是否可以快速解決這個問題?KEYCODE_VOLUME_UP/DOWN改變功能

代碼:

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

回答

2

系統的音量控制是由onKeyDown事件執行。在班級中返回true取消系統正在處理的onKeyUp事件,但onKeyDown已經運行。相反,重寫onKeyDown它應該工作。

編輯:經過一番研究,似乎覆蓋dispatchKeyEvent應該防止onKeyDown和onKeyUp事件的最佳方法。

+0

@override for OnKeyDown方法解決了問題。 5秒的工作。非常感謝! –