Back to project page tetris-android.
The source code is released under:
MIT License
If you think the Android project tetris-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.badlogic.androidgames.framework.impl; // w w w . j a v a 2s . c om import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.app.Activity; import android.content.Context; import android.opengl.GLSurfaceView; import android.opengl.GLSurfaceView.Renderer; import android.os.Bundle; import android.os.PowerManager; import android.os.PowerManager.WakeLock; import android.view.KeyEvent; import android.view.Window; import android.view.WindowManager; import com.badlogic.androidgames.framework.Audio; import com.badlogic.androidgames.framework.FileIO; import com.badlogic.androidgames.framework.FileIOInternal; import com.badlogic.androidgames.framework.Game; import com.badlogic.androidgames.framework.Graphics; import com.badlogic.androidgames.framework.Input; import com.badlogic.androidgames.framework.Screen; import com.ultimate39.android.games.tetris.GameScreen; public abstract class GLGame extends Activity implements Game, Renderer { enum GLGameState { Initialized, Running, Paused, Finished, Idle } GLSurfaceView glView; GLGraphics glGraphics; Audio audio; Input input; FileIO fileIO; FileIOInternal fileIOIn; Screen screen; GLGameState state = GLGameState.Initialized; Object stateChanged = new Object(); long startTime = System.nanoTime(); WakeLock wakeLock; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); glView = new GLSurfaceView(this); glView.setRenderer(this); setContentView(glView); glGraphics = new GLGraphics(glView); fileIO = new AndroidFileIO(getAssets()); fileIOIn = new AndroidFileIOInternal(this); audio = new AndroidAudio(this); input = new AndroidInput(this, glView, 1, 1); PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "GLGame"); } public void onResume() { super.onResume(); glView.onResume(); wakeLock.acquire(); } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { glGraphics.setGL(gl); synchronized (stateChanged) { if (state == GLGameState.Initialized) screen = getStartScreen(); state = GLGameState.Running; screen.resume(); startTime = System.nanoTime(); } } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { } @Override public void onDrawFrame(GL10 gl) { GLGameState state = null; synchronized (stateChanged) { state = this.state; } if (state == GLGameState.Running) { float deltaTime = (System.nanoTime() - startTime) / 1000000000.0f; startTime = System.nanoTime(); screen.update(deltaTime); screen.present(deltaTime); } if (state == GLGameState.Paused) { screen.pause(); synchronized (stateChanged) { this.state = GLGameState.Idle; stateChanged.notifyAll(); } } if (state == GLGameState.Finished) { screen.pause(); screen.dispose(); synchronized (stateChanged) { this.state = GLGameState.Idle; stateChanged.notifyAll(); } } } @Override public void onPause() { synchronized (stateChanged) { if (isFinishing()) state = GLGameState.Finished; else state = GLGameState.Paused; while (true) { try { stateChanged.wait(); break; } catch (InterruptedException e) { } } } wakeLock.release(); glView.onPause(); super.onPause(); } public GLGraphics getGLGraphics() { return glGraphics; } @Override public Input getInput() { return input; } @Override public FileIO getFileIO() { return fileIO; } public FileIOInternal getFileIOIn() { return fileIOIn; } @Override public Graphics getGraphics() { throw new IllegalStateException("We are using OpenGL!"); } @Override public Audio getAudio() { return audio; } @Override public void setScreen(Screen screen) { if (screen == null) throw new IllegalArgumentException("Screen must not be null"); this.screen.pause(); this.screen.dispose(); screen.resume(); screen.update(0); this.screen = screen; } @Override public Screen getCurrentScreen() { return screen; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_HOME)) { System.out.println(screen.getClass().getSimpleName()); if (screen.getClass().getSimpleName().equals("GameScreen")) { screen.fuck(); return true; } } return super.onKeyDown(keyCode, event); } }