Dado que existen multitud de dispositivos diferentes ejecutando Android, en ocasiones nos conviene conocer si nuestra aplicación se está ejecutando sobre un dispositivo de tipo smartphone o de tipo televisión, de forma que nuestra aplicación se adapte sin necesidad de generar distintas versiones para cada tipo de dispositivo.
La forma de hace esto en Android es bastante sencilla, usando el método getCurrentModeType() de la clase android.app.UiModeManager.
Usarlo desde libGDX
La forma en la que lo uso en libGDX es declarando un enumerado que define los posibles modos de juego.
1 2 3 4 5 6 7 8 | /** List of supported game modes. */ public static enum GameMode { /** With touch screen: smartphones, tablets, etc. */ PHONE, /** Without touch screen: televisions. */ TV } |
Por otro lado, dentro del core del juego tengo una clase de configuración, con diferentes constantes que definen el comportamiento del videojuego. Una de estos valores es el gameMode:
/** Game configuration. */ public class GameConfig { /** Game mode: TV by default. */ public static GameMode gameMode = GameMode.TV; ... } |
Desde el lanzador Android del juego, clase AndroidLauncher, se establece el valor la variable gameMode:
public class AndroidLauncher extends AndroidApplication { @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Determines if the hardware is a television or not UiModeManager uiModeManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE); if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) { GameConfig.gameMode = GameMode.TV; } else { GameConfig.gameMode = GameMode.PHONE; } AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); initialize(new MyGdxGame(), config); } .... } |
Eso es todo. Después, en el desarrollo del videojuego podremos comprobar en cualquier momento el modo de juego establecido y realizar las acciones necesarias:
... if (GameConfig.gameMode == GameMode.PHONE) { // do ... } else { // do ... } ... |
Espero que este artículo les haya resultado de utilidad.
Un saludo!