0 votos

Cambiar el IME predeterminado a un IME personalizado al construir una ROM personalizada

He desarrollado un teclado personalizado (IME) para Android que puedo instalar y usar en el dispositivo sin problemas.

El siguiente paso que quiero dar es establecer este teclado como el método de entrada predeterminado en una compilación personalizada de AOSP en la que estoy trabajando.

Estoy teniendo dificultades para descubrir qué cambios debo hacer en el código fuente de AOSP para lograr esto.

Cualquier orientación sobre cómo hacer que mi teclado personalizado sea el predeterminado sería muy apreciada.

0voto

Igor Basko Puntos 101

Finalmente, descubrí que hay varias formas de reemplazar el IME predeterminado en AOSP.

Los enfoques que consideré incluyen:

  1. Cambiar el código fuente predeterminado de LatinIME.
  2. Modificar el código fuente de InputMethodManagerService para seleccionar el IME personalizado.
  3. Actualizar las propiedades de System.Secure para que InputMethodManagerService seleccione el IME personalizado.
  4. Otros enfoques posibles de los que puede que no esté al tanto.

Elegí actualizar las propiedades de System.Secure al inicio, específicamente enabled_input_methods y default_input_method. Este método permite que el IME personalizado se establezca como predeterminado sin alterar el código principal de AOSP, lo que facilita su mantenimiento.

Para implementar esto, utilicé el comando settings put secure dentro del script init.rc del dispositivo, que ejecuta un script bash al inicio para ejecutar los comandos de configuración necesarios.

Así es como se ve el init.rc:

on property:sys.boot_completed=1
    ...
    start vendor.boot_start_sh

service vendor.boot_start_sh /vendor/bin/boot_start.sh
    class main
    user root
    group root system
    disabled
    oneshot

El archivo init.rc se encuentra en la carpeta del dispositivo específico para el que estás creando.

Un ejemplo de init.rc para dragonboard se encuentra aquí.

Este script init.rc activa un script boot_start.sh al completarse el inicio:

#!/system/bin/sh
settings put secure enabled_input_methods com.my_custom_ime.package/.CustomIMEService
settings put secure default_input_method com.my_custom_ime.package/.CustomIMEService

Estos cambios aseguran que las configuraciones se inicialicen para que InputMethodManagerService las lea y seleccione el IME personalizado en lugar de depender de su lógica integrada.

Si alguien tiene experiencia con otros métodos o sugerencias para mejorar este enfoque, ¡me encantaría escuchar sus opiniones!

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X