浏览代码

comment out android show keyboard. Now using JmeSystem method to show/hide android soft keyboard.

iwgeric 10 年之前
父节点
当前提交
5948479de4

+ 9 - 0
jme3-android/src/main/java/com/jme3/app/AndroidHarness.java

@@ -88,6 +88,13 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
      */
     protected int eglStencilBits = 0;
 
+    /**
+     * Set the desired frame rate.  If frameRate > 0, the application
+     * will be capped at the desired frame rate.
+     * (default = -1, no frame rate cap)
+     */
+    protected int frameRate = -1;
+
     /**
      * Sets the type of Audio Renderer to be used.
      * <p>
@@ -239,6 +246,8 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
             settings.setResolution(disp.getWidth(), disp.getHeight());
             settings.setAudioRenderer(audioRendererType);
 
+            settings.setFrameRate(frameRate);
+
             // Create application instance
             try {
                 if (app == null) {

+ 16 - 7
jme3-android/src/main/java/com/jme3/system/android/OGLESContext.java

@@ -75,7 +75,8 @@ public class OGLESContext implements JmeContext, GLSurfaceView.Renderer, SoftTex
     protected SystemListener listener;
     protected boolean autoFlush = true;
     protected AndroidInputHandler androidInput;
-    protected int minFrameDuration = 0;                   // No FPS cap
+    protected long minFrameDuration = 0;                   // No FPS cap
+    protected long lastUpdateTime = 0;
     protected JoyInput androidSensorJoyInput = null;
 
     public OGLESContext() {
@@ -225,6 +226,12 @@ public class OGLESContext implements JmeContext, GLSurfaceView.Renderer, SoftTex
             androidInput.loadSettings(settings);
         }
 
+        if (settings.getFrameRate() > 0) {
+            minFrameDuration = (long)(1000d / (double)settings.getFrameRate()); // ms
+            logger.log(Level.FINE, "Setting min tpf: {0}ms", minFrameDuration);
+        } else {
+            minFrameDuration = 0;
+        }
     }
 
     @Override
@@ -320,23 +327,25 @@ public class OGLESContext implements JmeContext, GLSurfaceView.Renderer, SoftTex
                 throw new IllegalStateException("onDrawFrame without create");
             }
 
-            long milliStart = System.currentTimeMillis();
-
             listener.update();
             if (autoFlush) {
                 renderer.onFrame();
             }
 
-            long milliDelta = System.currentTimeMillis() - milliStart;
+            long updateDelta = System.currentTimeMillis() - lastUpdateTime;
 
             // Enforce a FPS cap
-            if (milliDelta < minFrameDuration) {
-                //logger.log(Level.FINE, "Time per frame {0}", milliDelta);
+            if (updateDelta < minFrameDuration) {
+//                    logger.log(Level.INFO, "lastUpdateTime: {0}, updateDelta: {1}, minTimePerFrame: {2}",
+//                            new Object[]{lastUpdateTime, updateDelta, minTimePerFrame});
                 try {
-                    Thread.sleep(minFrameDuration - milliDelta);
+                    Thread.sleep(minFrameDuration - updateDelta);
                 } catch (InterruptedException e) {
                 }
             }
+
+            lastUpdateTime = System.currentTimeMillis();
+
         }
     }