package com.miviclin.droidengine2d.util;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.pm.ConfigurationInfo;
import android.media.AudioManager;
import android.view.Window;
import android.view.WindowManager;

/**
 * Clase de utilidad que contiene metodos que simplifican tareas relacionadas con las Activities.
 * 
 * @author Miguel Vicente Linares
 * 
 */
public class ActivityUtilities {
	
	/**
	 * Detecta si el dispositivo soporta OpenGL ES 2.0
	 * 
	 * @param activity Activity sobre la que opera este metodo
	 * @return true si lo soporta, false en caso contrario
	 */
	public static boolean detectOpenGLES20(Activity activity) {
		ActivityManager am = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
		ConfigurationInfo info = am.getDeviceConfigurationInfo();
		return (info.reqGlEsVersion >= 0x20000);
	}
	
	/**
	 * Cambia la orientacion de la Activity a PORTRAIT. Es posible que la Activity se reinicie al llamar a este metodo.
	 * 
	 * @param activity Activity sobre la que opera este metodo
	 */
	public static void setOrientationToPortrait(Activity activity) {
		activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
	}
	
	/**
	 * Cambia la orientacion de la Activity a LANDSCAPE. Es posible que la Activity se reinicie al llamar a este metodo.
	 * 
	 * @param activity Activity sobre la que opera este metodo
	 */
	public static void setOrientationToLandscape(Activity activity) {
		activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
	}
	
	/**
	 * Oculta el titulo de la Activity
	 * 
	 * @param activity Activity sobre la que opera este metodo
	 */
	public static void hideTitle(Activity activity) {
		activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
	}
	
	/**
	 * Configura la Activity para que ocupe toda la pantalla, ocultando la barra de notificaciones, etc
	 * 
	 * @param activity Activity sobre la que opera este metodo
	 */
	public static void setToFullscreen(Activity activity) {
		activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
		activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
	}
	
	/**
	 * Configura la Activity para que mientras sea visible, la pantalla se mantenga encendida
	 * 
	 * @param activity Activity sobre la que opera este metodo
	 */
	public static void keepScreenOn(Activity activity) {
		activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
	}
	
	/**
	 * Sugiere que mientras la Activity sea visible, los botones hardware de control de volumen del dispositivo puedan controlar el volumen
	 * del stream de musica
	 * 
	 * @param activity Activity sobre la que opera este metodo
	 */
	public static void controlMusicPlayBackStream(Activity activity) {
		activity.setVolumeControlStream(AudioManager.STREAM_MUSIC);
	}
	
}

@@ -244,32 +244,57 @@
 a.AudioManager;%0A
+import android.os.Build;%0A
 import android.v
@@ -341,16 +341,64 @@
 nager;%0A%0A
+import com.miviclin.droidengine2d.BuildConfig;%0A%0A
 /**%0A * C
@@ -628,16 +628,146 @@
 L ES 2.0
+.%3Cbr%3E%0A%09 * NOTA: Si el dispositivo es un emulador de android, se asume que soporta OpenGL ES 2.0 por lo que devolvera siempre true.
 %0A%09 * %0A%09 
@@ -1100,16 +1100,119 @@
 Info();%0A
+%09%09if (BuildConfig.DEBUG) %7B%0A%09%09%09if (Build.FINGERPRINT.startsWith(%22generic%22)) %7B%0A%09%09%09%09return true;%0A%09%09%09%7D%0A%09%09%7D%0A
 %09%09return

Add a workaround that allows running the engine on the Android Emulator