Obtén la versión, orientación, tamaño o densidad de pantalla en Android


Ayer publicamos una nueva versión de la aplicación de Nosinmiubuntu para Android. Fue una semana intensa en la que me dí cuenta de hasta que punto hay diferencias entre las diferentes versiones de Android y los dispositivos.

La semana pasada os hable de como localizar aplicaciones. La solución era muy simple, aplicando nombres específicos a las carpetas nos llegaba de sobra. Lo mismo se puede aplicar por ejemplo para determinados layouts o imágenes. Simplemente con hacer su versión y colocarlo en la carpeta correspondiente bastaría.

En mi caso con esto no bastaba y necesitaba obtener por código parámetros tales como la versión de Android, la densidad de pantalla o el tamaño de pantalla. Vamos a ver como con unas simples instrucciones seremos capaces de adaptar nuestra aplicación a cualquier dispositivo.

Lo primero que veremos es como reconocer la versión de Android. 

Para ello utilizamos la clase Build. Esta nos va a dar la versión Android que tenemos con el método VERSION, y con el parámetro SDK_INT obtendremos el número entero definido para nuestra versión. De esta forma si queremos hacer algo para versiones iguales o superiores a HONEYCOMB, por ejemplo, solo tendreis que utilizar el siguiente código.

Buid.VERSION_CODES contiene una enumeración con las diferentes versiones de Android.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
 //HONEYCOMB Y SUPERIOR            
}else{
 //VERSIONES INFERIORES A HONEYCOMB  
}

Otro tema que también puede que necesitéis es la densidad de píxeles de la pantalla. Para ello debemos acceder a getResources y dentro de este a los DisplayMetrics. Con esto podemos verificar la densidad de píxeles de la pantalla.

if(getResources().getDisplayMetrics().densityDpi == DisplayMetrics.DENSITY_XHIGH){}

Siguiendo con el tamaño de pantalla, también podemos verificar el tamaño de la pantalla: pequeña, mediana, grande y cuando llegaron las tablets, extra-grande. Seguimos con getResources y ahora accedemos a getConfiguration y dentro de este a screenLayout. A continuación comparamos con los valores referentes a los tamaños de pantalla. En el caso siguiente estamos comprobando si se trata de una pantalla extra-grande.

if (getResources().getConfiguration().screenLayout ==  Configuration.SCREENLAYOUT_SIZE_XLARGE) {}

Por último, podemos comprobar también la orientación de la pantalla. Esta tiene dos estados: LANDSCAPE o PORTRAIT. Landscape es cuando la pantalla esta de tal forma que se vé más ancha que alta y portrait al revés.

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {}

Como veis, también accedemos a getResources, getConfiguration y esta vez evaluamos la orientation.

Comments are closed.