Entradas

Mostrando las entradas de 2016

¿Qué es Jetpack Compose?

Jetpack Compose es la biblioteca de IU de Android más reciente que ha tomado la plataforma de desarrollo móvil de Android por sorpresa. Con Jetpack Compose, los desarrolladores pueden construir aplicaciones de alta calidad y sofisticadas que son más fáciles de mantener y escalar. La introducción de Jetpack Compose representa un cambio significativo en la forma en que se crea la interfaz de usuario de una aplicación de Android. En lugar de trabajar con una jerarquía de vistas de Android, Jetpack Compose utiliza un enfoque de programación declarativa para definir la IU de una aplicación. Esto significa que los desarrolladores pueden escribir código que describe cómo debe verse la interfaz de usuario de una aplicación, en lugar de manipular directamente los objetos de vista. Jetpack Compose también viene con una serie de herramientas que facilitan el diseño y la personalización de la interfaz de usuario de una aplicación. Desde una amplia variedad de widgets personalizados hasta la capaci...

Hacer la barra de status transparente en Android.

Imagen
Había estado luchando una semana para logra que mi actividad principal tuviera el statusBar transparente, y luego cuando el bottom sheet se expandiera cambiara de color. Probé de todo, poniendo en el tema las banderas de drawSystemBackground, translucentStatusBar, etc., no lograba lo que quería hasta que encontré este reminder de JimRobs en github if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ // Get Window final Window window = getWindow(); // Set Fullscreen window.getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN ); // Set status bar color // ! Can also be set in style resource (/res/values-v21/styles.xml) // @android:color/transparent window.setStatusBarColor(Color.TRANSPARENT); } Aquí la r eferencia a su reminder , Este código lo agregué en el método onActivityCreated de mi fragmento.  Quedando como resultado algo así, solo que no pue...

Trabajando con Bluetooth Low Energy (BLE) en Android

Actualmente estoy desarrollando un app que requiere la comunicación con dispositivos bluetooth low energy. Todo parecía muy sencillo, pero la verdad es que hay que escribir mucho código para hacer que funcione servicios, broadcast receivers, binding a servicios, entre otros. Mientras voy desarrollando tengo en mi gradle el minSDK de mi teléfono (Nexus 6p - SDK 24) esto con el simple hecho de compilar mas rápido.  La aplicación se espera que trabaje desde Android 4.3 SDK18 que fue cuando se introdujo BLE en Android. Todo iba muy bien hasta que cambié el gradle a minSDK 18.. encontré que todo mi código estaba hecho para SDK21 donde hay métodos nuevos para escanear BLE devices. Para ser mas concreto cambian los callBacks a partir del SDK 21. Lo resolví de la siguiente manera Primero nos creamos dos métodos: scanLeDevice21 y scanLeDevice18. /** * Scan for BLE devices with Android API 21 and up * * @param enable Enabled scanning */ @RequiresApi(21) ...

Android Nougat 7.0 desde hoy!

Imagen
Si señores, se vino la nueva versión. A partir de hoy empieza a el despliegue de Android Nougat 7.0. Para los que tenemos dispositivos Nexus, ya sea Nexus 6, 6P, 5X, Pixel C, en cualquier momento del día aparecerá la notificación para descargar la actualización. Esta versión, será más personal, con controles rápidos de configuración, soporte para varios entornos locales por ejemplo si hablamos varios idiomas, los resultados de las búsquedas se mostraran en los idiomas que tengamos en configurados. El soporte multi ventana, es cierto que Samsung y otros fabricantes lo tenían, pero ahora es nativo. Más batería, más immersive y más seguro. A la espera por que se instale.  Saludos. Para más información https://android.googleblog.com/2016/08/android-70-nougat-more-powerful-os-made.html

Parcelable en Español

Imagen
Parcelable Interfaz para clases cuya instancias pueden ser escritas y restauradas de un Par cel . Parcel Paquete, grupo o montón. Contenedor para un mensaje (data y referencias de objeto) que puede ser enviado a través de IBinder.  Bien ¿y que hacemos con eso? Cuando pasamos parámetros a un Intent, o un fragmento o actividad dentro de un Bundle podemos pasar todo un objeto, ¿cómo?  implementando Parcelable en nuestra clase.  Anteriormente utilizaba Serializable, pero es recomendable utilizar Parcelable  en vez de Serializable sencillamente porque es mucho más rápido. Se pueden leer este artículo de Philippe Breaul Ingeniero de Software en Google  Parcelable vs Serializable  para más  detalle sobre las diferencias de ambos. Supongamos que vamos a enviar parámetros a un IntentService para un Login por ejemplo, LoginRequest loginRequest = new LoginRequest(this, mEmailView.getText().toString(), ...

Cómo aprender más Android, usa Android Lint.

Imagen
Siempre me han gustado las cosas buenas (los últimos gadgets tecnológicos del mercado, buena ropa, buenos autos, etc) en el código soy igual. Una de las herramientas que me ha ayudado muchísimo en cuanto al aprendizaje de Android es Android Lint, acá el link para más detalles. En resumen, Android List es una herramienta que te ayuda a verificar tu código, estructura, buenas practicas entre muchas otras sin necesidad siquiera de correr tu aplicación. Ayer, mientras analizaba el código viejo de una de mis apps, la cual estoy actualizando a una nueva versión, aprendí por ejemplo, sobre las clases estáticas y el Context de Android. Un fragmento de ejemplo de un singleton. public class MyClass { private static Context context; private static MyClass myClassInstance; /** * Return an instance of this class */ public static MyClass getInstance(Context c) { context = c; if (myClassInstance == null) { myClassInstance = new MyCla...

Build Variants | Variantes de compilación de Android Studio.

Imagen
Android Studio es una herramienta maravillosa con muchas características que facilitan el desarrollo de nuestras aplicaciones. Hoy les quiero hablar sobre las variantes de compilación o Build Variants en inglés, quizá no sea la mejor traducción pero es la que me parece correcta Las variantes de compilación te permiten generar diferentes versiones de tu aplicación según sea la necesidad de tu proyecto. El ejemplo que tiene la documentación de Android sería una aplicación que tiene la versión full y la versión demo. Voy a crear estas dos variantes de compilación en el siguiente tutorial. Una vez creado nuestro proyecto, lo primero que vamos a hacer es abrir la configuración del módulo de la aplicación. Hacemos clic derecho en app -> Open Module Settings o en Mac, presionamos Command + Flecha hacia abajo. Open Module Settings Esto nos mostrará el dialogo de la estructura del proyecto. Project Structure Este dialogo tiene las pestañas Properties, Signing, Flavor...

Android Developers Blog: First Preview of Android N: Developer APIs & Tools

Android Developers Blog: First Preview of Android N: Developer APIs & Tools Android N precie ya está disponible para todos los desarrolladores, la imagen estará disponible sólo para nexus 6, 5x y 6p (ya me toca comprar nuevo teléfono), o usar el emulador.

Cambios en Google Play Services | Compilación de API selectiva

Si reciben este error luego de actualizar parte del SDK de Android Error:Execution failed for task ':app:compileReleaseJavaWithJavac'. java.io.FileNotFoundException: C:....\intermediates\exploded-aar\com.google.android.gms\play-services\8.4.0\jars\classes.jar (The system cannot find the path specified) Quiere decir que deben aplicar cambios en las dependencias de sus proyectos. A partir de la versión 6.5 de Google Play services (GPS) los paquetes de la API se compilan selectivamente, esto quiere decir que hay que agregar sólo lo que nos interesa para nuestro proyecto, esto ayuda a reducir el limite de los 65.536 métodos que seguramente les pasó luego de agregar la librería de GPS. Entonces, ahora en vez de compilar compile 'com.google.android.gms:play-services:8.4.0 Puedes incluir, como en mi caso sólo Google Cloud Messaging com.google.android.gms:play-services-gcm:8.4.0 A continuación una tabla con cada uno de los paquetes de la API de GPS. Table 1. Individual...