Cómo cambiar los iconos de la barra de navegación o reorganizar los botones sin root

Aquellos de ustedes que ejecutan la primera Vista previa de desarrollador de Android O pueden haber jugado con su personalizador de barra de navegación oculta ubicado en el Sintonizador SystemUI. Este personalizador de la barra de navegación ha existido en AOSP durante meses, pero se pensó que la única forma de acceder a él en Android Nougat era a través de una modificación del APK de la interfaz de usuario del sistema, que, por supuesto, requeriría acceso a la raíz. No fue sino hasta esta semana que descubrimos que se podía acceder al personalizador de barra de navegación oculta de Android Nougat sin necesidad de acceso root, una ROM personalizada o un mod de interfaz de usuario del sistema. Con esta función, podemos cambiar los íconos de la barra de navegación, cambiar las teclas o agregar botones adicionales.

Así es: es posible modificar su barra de navegación en una ROM completamente desarraigada con un gestor de arranque bloqueado. La funcionalidad que la gente pensaba que estaba limitada a Android O en realidad es accesible para cualquier persona que ejecute Android Nougat en Nexus, Pixel, OnePlus y algunos teléfonos Sony, HTC y Motorola. Si su dispositivo ejecuta un software cercano al software de Google (lo siento, usuarios de Samsung y Huawei / Honor), entonces es probable que su dispositivo tenga el personalizador de barra de navegación AOSP oculto que podemos usar. En este tutorial, le mostraré cómo puede usar el personalizador de la barra de navegación para cambiar los iconos de los botones a lo que desee o reorganizarlos en el orden que desee.

Google Pixel Nav Bar en el Nexus 6

Barra de navegación invertida en Nexus 6


Modificación de la barra de navegación - Configuración

Requisitos : necesitará un dispositivo compatible con el personalizador de barra de navegación AOSP. Vea la sección de "compatibilidad" en este hilo. (Nota: es posible que el OEM o el tipo de su dispositivo no figuren en ese hilo. La única forma de saber con certeza si su dispositivo es compatible es probarlo, que le mostraremos cómo hacerlo a continuación.

Hay dos formas de modificar nuestra barra de navegación. Uno es con una aplicación, y el otro es a través de comandos de shell ADB (que es cómo funciona la aplicación). Les mostraremos a ambos para completar, pero tenga en cuenta que a partir de ahora, no puede modificar los iconos de la barra de navegación de stock a través de la aplicación hasta que el desarrollador actualice su aplicación para incluir esta función.

Lo primero que debemos hacer es asegurarnos de que sea posible modificar la barra de navegación de su dispositivo. Si su dispositivo es uno de los que figuran como compatibles en el hilo de la barra de navegación personalizada, entonces es probable que lo sea. Podemos verificarlo mediante el breve tutorial que acompaña a esta aplicación.

Instale la aplicación desde Google Play Store (y también regístrese para la prueba beta para que podamos usar su función experimental para reorganizar la barra de navegación más adelante). A continuación, abra la aplicación y continúe con las pantallas introductorias. La barra de navegación personalizada le pedirá que le otorgue un cierto permiso llamado WRITE_SECURE_SETTINGS para continuar con el uso de la aplicación. Hay dos formas de hacer esto, como se indica en la solicitud.

  1. Si tiene un dispositivo rooteado, abra Terminal Emulator en su teléfono y concédale acceso root escribiendo su . Luego, ingrese este comando: pm grant xyz.paphonb.systemuituner android.permission.WRITE_SECURE_SETTINGS
  2. Si su dispositivo no está rooteado, deberá otorgar el permiso a través de ADB. Abra un símbolo del sistema / terminal en su máquina y luego ingrese el siguiente comando: adb shell pm grant xyz.paphonb.systemuituner android.permission.WRITE_SECURE_SETTINGS

Una vez que haya otorgado este permiso a la aplicación a través de cualquiera de los dos métodos anteriores, la aplicación procederá con una prueba de compatibilidad. Si su barra de navegación no cambia, desafortunadamente no tiene suerte. Si su barra de navegación cambia para mostrar un botón de flecha hacia la derecha, ¡felicidades, su dispositivo es compatible! Ahora podemos pasar a modificar nuestra barra de navegación.


Reorganizar los botones de la barra de navegación

Método de aplicación

Ahora que ha configurado la aplicación, es muy, muy fácil reorganizar los botones de la barra de navegación. Debes estar en la versión de prueba beta de la aplicación Barra de navegación personalizada para poder hacer esto, así que regresa y asegúrate de estar en el canal beta antes de continuar.

Si está en la versión beta, verá una sección llamada ajustes experimentales en la sección principal de Configuración. Toca eso y verás las opciones que te permiten reemplazar las teclas de retroceso, inicio y recientes existentes. Puede reorganizar fácilmente sus teclas aquí haciendo que el botón de retroceso cambie al botón de resumen (reciente) y que el botón de resumen (reciente) cambie al botón de retroceso. O cámbielos de la forma que desee, aquí no hay limitaciones reales. Después de cambiar las teclas, también puede jugar con las opciones de diseño en el menú de configuración de la barra de navegación.

Método ADB

Y aquí le mostramos cómo hacer lo mismo con los comandos ADB, si lo prefiere. El comando que modificaremos es la preferencia de configuración segura llamada sysui_nav_bar. Esta preferencia es una cadena que contiene el diseño de la barra de navegación. La estructura predeterminada de la preferencia es la siguiente

 space, back;home;recent, space 

Donde el espacio representa un espacio vacío que separa las teclas de la barra de navegación entre sí, y atrás, inicio y reciente representan los 3 botones predeterminados en la barra de navegación. Si queremos intercambiar la parte posterior y la clave reciente, por ejemplo, tendríamos que modificar la cadena de la siguiente manera

 space, recent;home;back, space 

Nota: si está intentando ingresar alguno de los siguientes comandos desde un entorno de shell rooteado como Terminal Emulator en su teléfono, entonces deberá omitir "adb shell" de los comandos antes de enviarlos.

Ahora, para modificar realmente esta cadena, necesitamos usar el comando de shell ADB con esta sintaxis

 adb shell settings put secure sysui_nav_bar "STRING" 

Por lo tanto, el comando que enviaríamos para intercambiar las teclas recientes y atrás se vería así

 adb shell settings put secure sysui_nav_bar "space, recent;home;back, space" 

Como puede suponer, esto es bastante flexible. Podemos mover las teclas como queramos modificando el valor de cadena de la preferencia. Podemos, por ejemplo, hacer que nuestras teclas de barra de navegación volteadas se justifiquen hacia la izquierda o hacia la derecha cambiando la ubicación de los dos espacios:

Justificado a la izquierda:

 adb shell settings put secure sysui_nav_bar "recent;home;back, space, space" 

Justificado a la derecha:

 adb shell settings put secure sysui_nav_bar "space, space, recent;home;back" 

Pero también podemos cambiar los botones de la barra de navegación para que sean algo completamente diferente a las teclas estándar atrás, inicio o recientes, como enviar uno de los muchos KeyEvents. Aprovecharemos este hecho en la siguiente sección, donde le mostraremos cómo cambiar los íconos en los botones de la barra de navegación.


Iconos de barra de navegación personalizados

Ahora, la siguiente sección puede no parecer un gran problema debido al hecho de que hay numerosas aplicaciones en Play Store que prometen cambiar su barra de navegación sin root. Y funcionan, sin embargo, muchos usuarios informan que estas aplicaciones tienen errores en ciertas aplicaciones como Chrome, cuando se reproduce video a pantalla completa o en algunos juegos. Además, muchas de estas aplicaciones requieren que habilite un Servicio de accesibilidad para monitorear las aplicaciones para saber cuándo cambiar el color de la barra de navegación, lo que puede reducir el rendimiento. Finalmente, si confía en estas aplicaciones durante demasiado tiempo, puede sorprenderse de repente al ver que dejan de funcionar cuando Android O se implementa porque la próxima versión de Android está matando la capacidad de estas aplicaciones para dibujar sobre los elementos de la interfaz de usuario del sistema.

El método que estamos utilizando se basa en la implementación de Google del sintonizador de barra de navegación, por lo que no tiene ninguno de estos problemas. Sin embargo, actualmente hay un problema sobre el que queremos hablar por adelantado: si elige seguir este método para modificar su botón de inicio, la acción de presionar prolongadamente el botón de inicio ya no funcionará, lo que significa que no puede acceder rápidamente al Asistente de Google desde el botón de inicio más. Si está de acuerdo con eso, entonces aquí le mostramos cómo cambiar los íconos en la barra de navegación.

Lo primero que deberá hacer es descargar los iconos con los que desea reemplazar los iconos de las teclas de la barra de navegación predeterminada. Le proporcionaré enlaces de descarga para que pueda tomar los iconos de la barra de navegación de Google Pixel, pero depende de usted encontrar sus propios iconos si desea algo más. Necesitará los iconos en formato PNG, y en cuanto al tamaño, puede determinar el tamaño de los iconos que necesita buscando las métricas de densidad de visualización de su dispositivo en Material.io y correlacionándolo con una tabla de referencia de tamaños de iconos.

Los créditos para la extracción de estos íconos de la barra de navegación de Google Pixel van para Dariomrk, Miembro Senior. Descargue este archivo si tiene una pantalla de 1920x1080p y este si tiene una pantalla de 2560x1440p. Extraiga el contenido de cualquiera de los archivos zip en una carpeta llamada "NavIcons" en el directorio raíz de su almacenamiento.

Una vez que tenga los iconos en el lugar apropiado, ingrese el siguiente comando de shell ADB (advertencia, es largo):

 adb shell settings put secure sysui_nav_bar "space, key(4:file:///storage/emulated/0/NavIcons/back.png);key(3:file:///storage/emulated/0/NavIcons/home.png);key(187:file:///storage/emulated/0/NavIcons/recents.png), space" 

Lo que hace este comando es reemplazar las teclas atrás, inicio y recientes con KeyEvents que realizan la misma función. En particular, el reverso se reemplaza con KEYCODE_BACK, el inicio se reemplaza con KEYCODE_HOME y el reciente se reemplaza con KEYCODE_APP_SWITCH. Estos códigos de teclas realizan exactamente la misma función, pero como estamos usando KeyEvents, podemos especificar qué ícono queremos usar para ellos. En este caso, apuntamos hacia back.png, home.png y recents.png que guardamos en / NavIcons.

Sin embargo, al reemplazar las teclas de stock con KeyEvents, perdemos la capacidad de inicio de pulsación prolongada porque actualmente no hay forma de reconocer eventos de pulsación prolongada de entradas de teclas simuladas.

Me doy cuenta de que en este momento, este método puede no parecer ideal o fácil de implementar, pero en el momento de escribir esto, la aplicación Barra de navegación personalizada no se ha actualizado para admitir agregar sus propios iconos. Por ahora, mi método (que es exactamente cómo funciona esa aplicación, y cuando la aplicación se actualice, enfrentará la misma limitación) es cómo puede obtener los iconos personalizados que desee en su barra de navegación.


Eso es todo por este tutorial. En futuros tutoriales, mostraré posibles usos prácticos para cambiar su barra de navegación, especialmente de manera contextual utilizando una aplicación de automatización como Tasker. Siga la categoría de tutoriales para mantenerse al día con los últimos consejos y trucos que publicamos.