Superposición de Android para tomar todo el tacto, y pasarlos?

Estoy básicamente tratando de obtener todos los datos del evento de toque de algo así como una superposición del sistema, mover mis sprites alrededor basado en estos datos de tacto, y luego permitir que el OS / homescreen / navegador para actuar sobre los datos como debería (o viceversa). He encontrado preguntas similares, pero nada que me lleva a ninguna parte que no he sido ya:

Obtener la vista que está recibiendo todos los eventos de toque

(Implementado, con resultados a continuación) Creación de una ventana de superposición del sistema (siempre en la parte superior)

Que puedo hacer:

Puedo SACAR TODOS los eventos de toque y actuar sobre ellos moviendo mis sprites y no permitir que el OS / homescreen / browser vea ninguno de ellos, O PUEDO permitir que los eventos de toque pasen a través y sólo obtener un "TOUCH_OUTSIDE" para mi aplicación para actuar.

Mi objetivo no alcanzado:

NO PUEDO por la vida de mí averiguar una manera de conseguir AMBOS para trabajar con los datos. Los únicos métodos que se me ocurren, que no puedo implementar, son: Interceptar los datos en mi APP y pasarlos a OS / homescreen / navegador para trabajar con Permitir que el OS / homescreen / navegador obtenga los datos primero y luego obtener una devolución de llamada con información de alguna manera Permitir que el sistema operativo / pantalla de inicio / navegador obtenga los datos, actúe sobre los datos y los encuesta para cuáles son sus valores de desplazamiento / ubicación para actuar sobre él en mi APP.

Me temo que esto simplemente no es posible, creo que he leído en algún lugar en alguna documentación que no puedo encontrar ahora: "Es todo o nada, ya sea su vista obtiene todos los eventos, o ninguno de ellos"

(Para evitar la confusión, no quiero decir que tengo dos puntos de vista.Quiero decir que tengo una vista controlada a través de la actividad / servicio que superponen el OS / homescreen / navegador.Como un panel de vidrio si lo desea.)

Gracias por cualquier información útil que puede ofrecer, es muy apreciado!

[UPDATE] Publicó mi propia documentación sobre el asunto a continuación, para no ser confuso.

Encontró esta documentación que afirma que no es posible hacer ambas cosas: Android: Multi touch y TYPE_SYSTEM_OVERLAY

Ellos discuten las soluciones, pero no creo que ninguno de ellos funcionará realmente para exactamente lo que estoy tratando de hacer. Ambos dados los eventos a la aplicación subyacente, y ser capaz de espiarlos para actuar sobre ellos para mí.

Para crear una vista de superposición, al configurar el LayoutParams debe configurar el tipo TYPE_SYSTEM_OVERLAY y utilizar el indicador FLAG_WATCH_OUTSIDE_TOUCH. Esto presenta un problema porque, como indica la documentación de Android: "no recibirá el gesto completo hacia abajo / hacia arriba / hacia arriba, solo la ubicación de la primera hacia abajo como ACTION_OUTSIDE". Para recibir toda la gama de eventos táctiles es necesario utilizar el tipo TYPE_SYSTEM_ALERT, pero esto hace que la superposición se haga cargo de la pantalla y deje de interactuar con otros elementos.

Alguien quiere estar en desacuerdo Me encantaría escuchar buenas noticias 😀

Puede usar el GestureOverlayView, si desea ocultar las líneas que dibuja, puede configurar el color como Transparente # 00000000 para que no aparezca y, a continuación, puede capturar todos los toques y gestos.

http://developer.android.com/resources/articles/gestures.html

Esta no es la solución óptima, pero funciona. Reinicie el servicio tocando la bandera que no se puede tocar. poner booleano extra a Intent que se utiliza para startservice para determinar el estado anterior cambiar el valor. Una mejor aplicación sería disparar la intención de tocar cuando la ventana está escuchando y después de un período fijo cuando no está escuchando.

public class bleh extends Service { public void onCteqwer(int i) { Context context; Class <bleh> context1 = bleh.class; WindowManager.LayoutParams params = null; WindowManager mang = (WindowManager) getSystemService(WINDOW_SERVICE); //check previous state of service if(i==0) params = new WindowManager.LayoutParams(arg0,arg1,arg2,arg3,arg4,arg5); if(i==1) params = new WindowManager.LayoutParams (WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,arg0,arg1,arg2,arg3,arg4); LayoutInflater inflater = (LayoutInflater) getSystemService (LAYOUT_INFLATER_SERVICE); View mViw = inflater.inflate(arg, null); mViw.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); mang.addView(mViw, params); Intent z = new Intent(context, context1); if(i==0) z.putExtra("name", 1); if(i==1) z.putExtra("name", 0); stopSelf(); startService(z); } @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); Bundle i=intent.getExtras(); int userName = 0; if (i != null) { userName = i.getInt("name"); onCteqwer(userName); } } 
  • ¿Cómo determinar un tacto largo en androide?
  • Android: ViewPager y HorizontalScrollVIew
  • Creación de ImageButton de forma irregular con diferentes estados de clic
  • Android Move ImageView
  • Vista de desplazamiento de Android en evento táctil
  • Dibujar una ruta de movimiento de un solo toque en android
  • Manejo de eventos táctiles - onInterceptTouchEvent y onTouchEvent
  • JQuery Arrastrar y soltar en dispositivos táctiles (iPad, Android)
  • El evento "touchmove" en el sistema android: Transformer Prime
  • WebView en Galería deteniendo eventos de desplazamiento / toque
  • Ocultar barra de acciones en touch android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.