Cómo adaptar tu App a Samsung Dex

Cómo adaptar tu App a Samsung Dex

Samsung no deja de sorprendernos, hace unos meses apareció en el mercado el nuevo producto de los de Corea del Sur, se trata del Samsung DeX Station.

Este dock para nuestro Note 8 y S8 nos permite disfrutar de la experiencia de un PC simplemente conectado monitor, ratón y teclado. El rendimiento te sorprenderá.

Este artículo esta escrito desde el DeX y la verdad, llevo días utilizándolo y no hecho de menos el PC tradicional.

Pero hoy no venimos a contaros detalles comerciales, pero si te interesa saber más te paso esta dirección.

Al grano, ¿Qué tengo que hacer para que mi app funcione a full screen en Samsung DeX?

Muy sencillo, sigue estos simples pasos y tu app funcionará como una aplicación de escritorio, una ventaja más que ofrecer a tus clientes/usuarios y desmarcarte del resto:

1 Habilita multi-window

Para ejecutar en Samsung DeX, las aplicaciones deben ser compatibles con Android Multi-Window: esto permite minimizar, maximizar y redimensionar. Si no se admite Multi-Window, la aplicación se abre en una ventana de tamaño fijo.

Para habilitar Multi-Window, pega este código en el AndroidManifest.xml:


<activity>
 android:resizeableActivity="true"
</activity>

Si lo hiciste bien, ahora cuando ejecutes tu app en Samsung DeX aparecerá los botones de redimensionar en la barra de título

2 Habilitar ratón y teclado

No declares explícitamente la compatibilidad con la pantalla táctil, ya que puede desactivar el mouse y las interacciones del teclado. Esta declaración explícita se hace de la siguiente forma:


<uses-configuration android:reqTouchScreen="finger">
<uses-feature android:name="android.hardware.touchscreen">
<android:required="true">

Si declaras explícitamente compatibilidad con la pantalla táctil, la aplicación no se iniciará en modo Escritorio y mostrará el siguiente mensaje:

Muy fácil, ¿No? Con esto debe ser suficiente, pero te paso unos tips más para tener control absoluto de la transformación de la resolución al pasar al modo DeX

3 Manejar cambios en la configuración en tiempo de ejecución

El cambio entre el móvil y el modo Samsung DeX causa cambios en la configuración del tiempo de ejecución, similar a un cambio de orientación de vertical a horizontal. Para obtener resultados óptimos al ejecutar aplicaciones en el modo de escritorio, sigue las buenas prácticas de Android en cuanto runtime.

¿Qué ocurre cuando pasamos al modo DeX al meter nuestro móvil en el dock?:

  1. La densidad cambia entre xxxhdpi y mdpi.
  2. Cambio de resolución entre WQHD y FHD.
  3. Cambio de orientación entre vertical y horizontal.
  4. Cambio de diseño de pantalla.
  5. Cambio de tamaño de pantalla.
  6. Cambio de tamaño de pantalla más pequeño.
  7. Cambio de modo de interfaz de usuario entre el móvil y el escritorio.

Puedes usar los siguientes calificadores para proporcionar recursos alternativos de Android en el modo Samsung DeX:

  • UI mode : desk
  • Screen layout : xlarge
  • Density : mdpi
  • Resolution : FHD

Por ejemplo, la siguiente ilustración muestra un ejemplo de uso de diferentes recursos para diferentes densidades de pantalla.

Esta imagen demuestra el manejo correcto de ppp para fuentes en diferentes tamaños de pantalla: cuando se cambia el tamaño de la aplicación Samsung DeX, el tamaño y la escala de la fuente siguen siendo adecuados para el tamaño de la pantalla.

Si prefieres manejar los cambios de configuración tú mismo, debes implementar el siguiente código en el AndroidManifest.xml. Esto evitará que la aplicación se reinicie cuando la densidad de la pantalla cambie entre los modos móvil y Samsung DeX:

Declaración KeepAlive


<application>
<meta-data android:name=“com.samsung.android.keepalive.density” android:value=“true”/>
</application>

Código Java para detectar el modo Samsung DeX


import android.content.res.Configuration;
import java.lang.reflect.Field;
import java.lang.Class;

Configuration config = getResources().getConfiguration();
try {
Class configClass = config.getClass();
if(configClass.getField("SEM_DESKTOP_MODE_ENABLED").getInt(configClass)
== configClass.getField("semDesktopModeEnabled").getInt(config)) {

// Samsung DeX mode enabled
}
} catch(NoSuchFieldException e) {
} catch(IllegalAccessException e) {
} catch(IllegalArgumentException e) {
}

Si lo prefieres, puedes utilizar esta técnica para detectar el modo Samsung DeX en su controlador:


receiver android:name=".MainActivity$DesktopModeReceiver"
intent-filter
action android:name="android.app.action.ENTER_KNOX_DESKTOP_MODE"
action android:name="android.app.action.EXIT_KNOX_DESKTOP_MODE"
intent-filter
receiver

En el código de tu app, implementa un receptor de difusión para detectar la entrada y la salida del modo Samsung DeX.

<p id="tw-target-text" class="tw-data-text tw-ta tw-text-small" dir="ltr" data-placeholder="Traducción"><span lang="es">public class DesktopModeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if ("android.app.action.ENTER_KNOX_DESKTOP_MODE".equals(action)) { Toast.makeText(context, "Desktop mode ON", Toast.LENGTH_LONG).show(); } else if ("android.app.action.EXIT_KNOX_DESKTOP_MODE".equals(action)) { Toast.makeText(context, "Desktop mode OFF", Toast.LENGTH_LONG).show(); } } }</span></p>
<p dir="ltr" data-placeholder="Traducción">

Bueno esto es todo, las ventajas son muchas y ningún inconveniente. Si tienes alguna duda o problema sobre el desarrollo, puedes abrir un post en nuestro foro y estaremos encantados de ayudarte.

Gracias¡, nos vemos pronto Samsungners

 

Autor: David Cantón

Embajador Samsung Dev Spain, Responsable del Dpto. de Desarrollos Móviles y VR/AR en Notegés Consulting y fundador de Samsungners.com. Especializado en la creación de videojuegos con Unity3D y Unreal Engine, modelado 3D, desarrollo de movilidad multiplataforma con React Native, Ionic y Xamarin y amante del ecosistema Samsung.

Share This Post On

3 Comentarios

  1. Gracias por compartir el tutorial. Tengo que empezar a adaptar ciertas Apps que serían útiles en Samsung Dex.

    Post a Reply
  2. Me surge una duda, ¿Sufre algún tipo de lag cuando tecleas?

    Post a Reply

Deja un comentario

A %d blogueros les gusta esto:
Bitnami