2011-07-15 17 views
7

¿Cómo obtengo eventos táctiles como puede de una actividad usando public boolean onTouchEvent(MotionEvent event)? Obviamente no hay un método onTouchEvent para anular en un servicio, entonces ¿cómo puedo hacer esto? ¿Hay una manera directa o una solución confiable?Obteniendo eventos táctiles (coordenadas, MotionEvents, etc.) en un servicio

Mi idea es crear un servicio que escuche en segundo plano para que el usuario haga un gesto determinado, luego haga algo cuando el usuario haya hecho el gesto correcto. ¡Gracias!

EDITAR: Esta pregunta está destinada a la respuesta a este question.

+0

No lo sé al 100%, así que no voy a poner esto en las respuestas, pero la idea de un Servicio es que no hay interacción humana. También creo que 9 de cada 10 personas que usarían el teléfono no estarían haciendo gestos fuera de una aplicación, por lo que cualquier solución puede mostrar un controlador que podría ralentizar la experiencia general del usuario. – DeeV

+0

Bueno, eche un vistazo a estas dos aplicaciones https://market.android.com/details?id=mobi.conduction.swipepad.android&feature=search_result y https://market.android.com/details?id=com.mobilemerit .wavelauncher & feature = search_result. Estoy tratando de encontrar la manera de hacerlo. – Brian

+0

Entonces espero que alguien responda esto porque me gustaría saber también. Aunque, creo * que son widgets personalizados como los que se encuentran en el escritorio del teléfono, solo que siempre están en la parte superior. Si recuerdo bien, el Wave Launcher comienza fuera de la pantalla y tienes que arrastrarlo hacia arriba. Los 20 píxeles inferiores eran el borde del widget que grabó que se tocaba. Por lo que parece, la almohadilla de deslizamiento es de la misma manera. Tampoco uses un servicio. – DeeV

Respuesta

0

Puede crear una vista 0x0 y agregarla a la ventana del Servicio como un diálogo del sistema que siempre está en la parte superior.

Puede escuchar eventos usando el permiso 'WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH'. Desafortunadamente, solo puede obtener el evento táctil inicial y no puede pasar el evento para reducir las actividades. Me alegra que no puedas hacer eso en realidad; ¿Te imaginas cómo el malware podría explotar esto para obtener las credenciales del usuario?

+0

Gracias, pero si se refiere a mi pregunta, tengo un enlace a una pregunta que muestra cómo funcionaría. Mi mayor problema es obtener los gestos táctiles en movimiento. Aplicaciones como Wave Launcher y SwipePad pueden hacerlo, pero no sé cómo. – Brian

Cuestiones relacionadas