【问题标题】:KEYCODE_VOLUME_UP/DOWN changing functionalityKEYCODE_VOLUME_UP/DOWN 更改功能
【发布时间】:2012-09-01 14:48:22
【问题描述】:

我有一个应用程序: 具有触摸和按键支持的 3D Cube (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;
   }

【问题讨论】:

    标签: java android android-sdk-tools


    【解决方案1】:

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

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

    【讨论】:

    • @override for OnKeyDown 方法解决了问题。 5秒的工作。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多