¿Cómo manejo los eventos de la pantalla táctil en el código nativo de Android sin pasar por Java*?
Frecuentes
Visto 6,444 equipos
6
Nos gustaría manejar todas las entradas táctiles con código nativo de Android. Queremos inicializar el código del método onCreate() de Android y luego hacer que se haga cargo de todas las entradas. Hemos analizado la actividad nativa en la muestra; sin embargo, creemos que algunas de las estructuras y métodos que utiliza solo están disponibles para todas las aplicaciones nativas.
Una vez inicializado, básicamente debería ejecutarse solo, procesando eventos táctiles. Volverá a llamar a los métodos de Java, que ya hemos descubierto. El problema que tenemos es evitar que Java maneje los métodos y cómo hacer que el código nativo maneje las entradas táctiles sin que se llame y pase el evento.
¿Cómo podemos configurar este código nativo para manejar todos los eventos táctiles, sin tener que pasar por Activity.onTouchEvent (evento MotionEvent)?
2 Respuestas
6
Que yo sepa no se puede hacer eso.
Como dijiste en los comentarios, puedes hacerlo si tu aplicación se ejecuta en una actividad nativa (la actividad nativa de muestra muestra cómo comenzar). Al final, probablemente tendrás algo como:
int32_t handle_input(struct android_app* app, AInputEvent* event) {
int32_t eventType = AInputEvent_getType(event);
switch(eventType){
case AINPUT_EVENT_TYPE_MOTION:
switch(AInputEvent_getSource(event)){
case AINPUT_SOURCE_TOUCHSCREEN:
int action = AKeyEvent_getAction(event) & AMOTION_EVENT_ACTION_MASK;
switch(action){
case AMOTION_EVENT_ACTION_DOWN:
break;
case AMOTION_EVENT_ACTION_UP:
break;
case AMOTION_EVENT_ACTION_MOVE:
break;
}
break;
} // end switch
break;
case AINPUT_EVENT_TYPE_KEY:
// handle key input...
break;
} // end switch
}
Si no me equivoco, no puede manejar la entrada en código nativo si su aplicación se ejecuta en una actividad Java estándar.
Respondido el 05 de junio de 14 a las 08:06
1
No puede manejar los eventos táctiles sin hacer llamadas en java. La única forma es ampliar las clases de componentes o personalizar el SDK de Android .jar, que es una tarea larga.
Respondido 12 Feb 14, 07:02
¿Podría explicar qué quiere decir con clases de componentes, por favor? - steve3280712
Por componente me refiero a Diseños o Botones o ImageView, etc., etc. en android - Shahzeb
La razón por la que no quiero aceptar esta respuesta es porque la actividad nativa es 100% nativa y, por lo tanto, maneja las entradas sin pasar por Java. - steve3280712
Técnicamente, no puede hacerlo 100% nativo, siempre hay algún tipo de enlace Java. - jakub keller
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas android android-ndk or haz tu propia pregunta.
Solo tengo curiosidad acerca de por qué desea manejar eventos en el lado nativo y pasarlos al lado de Java, ya que ya puede manejarlos en Java y no hay necesidad de pasar nada después. - eozgonul