Android: Cómo controlar el botón de inicio

Estamos tratando de proporcionar una aplicación a la hija mentalmente y físicamente discapacitados de mi vecina que le permite utilizar una tableta Android como un locutor, es decir, presiona unos botones grandes y los dispositivos genera el habla. La aplicación es básicamente un WebView y un objeto adicional en Javascript utilizado para realizar y controlar la generación de voz, además de alguna lógica para manejar los cambios de orientación. Los archivos Html se generan sin conexión para su diseño específico de los elementos de conversación. También hemos añadido algunas funciones de reproducción de música e imágenes para hacer que el dispositivo sea más atractivo para ella.

El problema es que el botón de inicio la trae de vuelta a la locura de la pantalla de lanzamiento de Android, y que en el dispositivo de prueba (Archos 70) el botón de inicio no es un botón físico, sino que se muestra en la pantalla táctil en sí, por lo que es demasiado fácil de Accidentalmente.

Así que me gustaría volver al lanzador de Android sólo presionando una secuencia de casa, de vuelta, el hogar con ninguna otra acción en el medio.

¿Puedo lograr esto haciendo que mi aplicación sea el lanzador? ¿Cómo puedo entonces volver al lanzador original en la casa, atrás, secuencia casera? Parece que esto va profundamente en las entrañas de Android, ¿eh?

La única pista que encontré hasta ahora es el botón Inicio de reemplazo para una aplicación de reemplazo de casa de coches , pero esto es -1 nominal y se informa de que funcionan en el emulador sólo. También dudo si podría abandonar por completo el lanzador original, ya que de lo contrario no hay acceso a más, por ejemplo, el control de dispositivo de masa USB para permitir que los nuevos archivos HTML para ser descargado, la aplicación para ser matado y reiniciado, y así sucesivamente.

Estoy dispuesto a ir para un kludge también. Tal vez un servicio de fondo podría ser iniciado que traería la aplicación al frente de nuevo como sea necesario?

¿Puedo lograr esto haciendo que mi aplicación sea el lanzador? ¿Cómo puedo entonces volver al lanzador original en la casa, atrás, secuencia casera? Parece que esto va profundamente en las entrañas de Android, ¿eh?

Sí. No demasiado profundamente en las entrañas. Puede iniciar manualmente un lanzador especificando el componente, tenga en cuenta que esto puede variar de un dispositivo a otro y de usuario a usuario, si sólo está utilizando este código en privado podría codificarlo, pero si lo libera debe permitir que el usuario Especifique su aplicación de inicio real.

/* This should come from a preference that let's the user select an activity that can handle the HOME intent */ String packageName = "com.android.launcher"; String packageClass = "com.android.launcher2.Launcher"; Intent home_intent = new Intent(Intent.ACTION_MAIN); home_intent.addCategory(Intent.CATEGORY_HOME); home_intent.setComponent(new ComponentName(packageName, packageClass)); home_intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); /* Here you should catch the exception when the launcher has been uninstalled, and let the user save themselves by opening the Market or an app list or something. Users sometimes use root apps to uninstall the system launcher, so your fake launcher is all that is left. Might as well give the poor user a hand. */ startActivity(home_intent); 

La detección de la casa / la espalda / el hogar es un poco awkard porque el hogar no vendrá como un onKeyEvent sino como una nueva intención. Simplemente presionando el botón de retroceso y luego mostrar un mensaje es probablemente un enfoque seguro / bueno.

No se puede anular el botón Inicio. Puede escribir una aplicación que responda a la intención del hogar (eso es lo que hace un lanzador), pero eso es todo.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.