{"id":594,"date":"2017-08-08T23:54:19","date_gmt":"2017-08-08T22:54:19","guid":{"rendered":"http:\/\/www.pixnbgames.com\/blog\/?p=594"},"modified":"2017-08-08T23:54:19","modified_gmt":"2017-08-08T22:54:19","slug":"como-saber-si-tu-aplicacion-android-se-esta-ejecutando-sobre-una-television-o-un-dispositivo-movil","status":"publish","type":"post","link":"https:\/\/www.pixnbgames.com\/blog\/libgdx\/como-saber-si-tu-aplicacion-android-se-esta-ejecutando-sobre-una-television-o-un-dispositivo-movil\/","title":{"rendered":"Como saber si tu aplicaci\u00f3n Android se est\u00e1 ejecutando sobre una televisi\u00f3n o un dispositivo m\u00f3vil"},"content":{"rendered":"<p>Dado que existen multitud de dispositivos diferentes ejecutando Android, en ocasiones nos conviene conocer si nuestra aplicaci\u00f3n se est\u00e1 ejecutando sobre un dispositivo de tipo smartphone o de tipo televisi\u00f3n, de forma que nuestra aplicaci\u00f3n se adapte sin necesidad de generar distintas versiones para cada tipo de dispositivo.<\/p>\n<p>La forma de hace esto en Android es bastante sencilla, usando el m\u00e9todo <code>getCurrentModeType()<\/code> de la clase <code>android.app.UiModeManager<\/code>.<\/p>\n<h2>Usarlo desde libGDX<\/h2>\n<p>La forma en la que lo uso en libGDX es declarando un enumerado que define los posibles modos de juego.<\/p>\n<pre lang=\"Java\" line=\"1\">\/** List of supported game modes. *\/\r\npublic static enum GameMode {\r\n    \/** With touch screen: smartphones, tablets, etc. *\/\r\n    PHONE,\r\n\t\r\n    \/** Without touch screen: televisions. *\/\r\n    TV\r\n}\r\n<\/pre>\n<p>Por otro lado, dentro del <i>core<\/i> del juego tengo una clase de configuraci\u00f3n, con diferentes constantes que definen el comportamiento del videojuego. Una de estos valores es el <code>gameMode<\/code>:<\/p>\n<pre lang=\"Java\">\/** Game configuration. *\/\r\npublic class GameConfig {\r\n\r\n    \/** Game mode: TV by default. *\/\r\n    public static GameMode gameMode = GameMode.TV;\r\n    ...\r\n}\r\n<\/pre>\n<p>Desde el lanzador Android del juego, clase <code>AndroidLauncher<\/code>, se establece el valor la variable <code>gameMode<\/code>:<\/p>\n<pre lang=\"Java\">public class AndroidLauncher extends AndroidApplication {\r\n    @Override\r\n    protected void onCreate (Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n\r\n        \/\/ Determines if the hardware is a television or not\r\n        UiModeManager uiModeManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);\r\n        if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) {\r\n            GameConfig.gameMode = GameMode.TV;\r\n        } else {\r\n            GameConfig.gameMode = GameMode.PHONE;\r\n        }\r\n        \r\n        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();\r\n        initialize(new MyGdxGame(), config);\r\n    }\r\n    ....\r\n}\r\n<\/pre>\n<p>Eso es todo. Despu\u00e9s, en el desarrollo del videojuego podremos comprobar en cualquier momento el modo de juego establecido y realizar las acciones necesarias:<\/p>\n<pre lang=\"Java\">...\r\nif (GameConfig.gameMode == GameMode.PHONE) {\r\n    \/\/ do ...\r\n} else {\r\n    \/\/ do ...\r\n}\r\n...\r\n<\/pre>\n<p>Espero que este art\u00edculo les haya resultado de utilidad.<\/p>\n<p>Un saludo!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dado que existen multitud de dispositivos diferentes ejecutando Android, en ocasiones nos conviene conocer si nuestra aplicaci\u00f3n se est\u00e1 ejecutando sobre un dispositivo de tipo smartphone o de tipo televisi\u00f3n, de forma que nuestra aplicaci\u00f3n se adapte sin necesidad de <a class=\"more-link\" href=\"https:\/\/www.pixnbgames.com\/blog\/libgdx\/como-saber-si-tu-aplicacion-android-se-esta-ejecutando-sobre-una-television-o-un-dispositivo-movil\/\">Seguir leyendo <span class=\"screen-reader-text\">  Como saber si tu aplicaci\u00f3n Android se est\u00e1 ejecutando sobre una televisi\u00f3n o un dispositivo m\u00f3vil<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[19,14],"tags":[20,39,15],"language":[5],"_links":{"self":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts\/594"}],"collection":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/comments?post=594"}],"version-history":[{"count":5,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts\/594\/revisions"}],"predecessor-version":[{"id":601,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts\/594\/revisions\/601"}],"wp:attachment":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/media?parent=594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/categories?post=594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/tags?post=594"},{"taxonomy":"language","embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/language?post=594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}