Detectar todos los eventos táctiles sin sobrepasar a dispatchTouchEvent ()?

Estoy desarrollando la biblioteca de Android que necesita rastrear todos los eventos de toque en la aplicación que lo usa. Por ahora, los usuarios deben reemplazar la actividad dispatchTouchEvent() de cada actividad en cada una de sus actividades. Como se muestra abajo

 @Override public boolean dispatchTouchEvent(MotionEvent event) { MyLib.dispatchTouchEvent(event); return super.dispatchTouchEvent(event); } 

Pero Appsee detecta eventos de contacto con Appsee.start(“key”); On onCreate método integrado en la primera actividad donde se inicia la aplicación. Cómo es esto posible. ¿¿Alguna ayuda??

Responder como esto puede ser útil a otros. Respuesta será útil para la biblioteca que requiere interceptar eventos de toque.

Si no desea anular el método de actividad dispatchTouchEvent () ( Imp en caso de que esté codificando para la biblioteca ), podemos usar la clase Window.Callback. Cree su propia implementación de Window.Callback como código a continuación y, a continuación, establezca como devolver la llamada al objeto Window de su actividad.

Haga lo mismo que en el siguiente fragmento de código para la instancia de contexto de Actividad que obtiene.

 //set Window.Callback for getting touch event final Window win = context.getWindow(); final Window.Callback localCallback = win.getCallback(); win.setCallback(new MyWindowCallback(localCallback)); 

Clase MyWindowCallback será como:

Usted recibirá TouchEvent en dispatchTouchEventMethod () de MyWindowCallback donde puede usar estos como sea necesario.

 import android.annotation.SuppressLint; import android.util.Log; import android.view.ActionMode; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.accessibility.AccessibilityEvent; public class MyWindowCallback implements Window.Callback{ Window.Callback localCallback; public MyWindowCallback(Window.Callback localCallback) { this.localCallback = localCallback; } @Override public boolean dispatchKeyEvent(KeyEvent event) { return localCallback.dispatchKeyEvent(event); } @SuppressLint("NewApi") @Override public boolean dispatchKeyShortcutEvent(KeyEvent event) { return localCallback.dispatchKeyShortcutEvent(event); } @Override public boolean dispatchTouchEvent(MotionEvent event) { //YOU WILL GET TOUCH EVENTS HERE>> USE AS REQUIRED>> return localCallback.dispatchTouchEvent(event); } @Override public boolean dispatchTrackballEvent(MotionEvent event) { return localCallback.dispatchTrackballEvent(event); } @SuppressLint("NewApi") @Override public boolean dispatchGenericMotionEvent(MotionEvent event) { return localCallback.dispatchGenericMotionEvent(event); } @Override public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { return localCallback.dispatchPopulateAccessibilityEvent(event); } @Override public View onCreatePanelView(int featureId) { return localCallback.onCreatePanelView(featureId); } @Override public boolean onCreatePanelMenu(int featureId, Menu menu) { return localCallback.onCreatePanelMenu(featureId, menu); } @Override public boolean onPreparePanel(int featureId, View view, Menu menu) { boolean ret = localCallback.onPreparePanel(featureId, view, menu); return ret; } @Override public boolean onMenuOpened(int featureId, Menu menu) { return localCallback.onMenuOpened(featureId, menu); } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { return localCallback.onMenuItemSelected(featureId, item); } @Override public void onWindowAttributesChanged(WindowManager.LayoutParams attrs) { localCallback.onWindowAttributesChanged(attrs); } @Override public void onContentChanged() { localCallback.onContentChanged(); } @Override public void onWindowFocusChanged(boolean hasFocus) { Log.d("","ttest onfocus changed called"); localCallback.onWindowFocusChanged(hasFocus); } @Override public void onAttachedToWindow() { localCallback.onAttachedToWindow(); } @Override public void onDetachedFromWindow() { localCallback.onDetachedFromWindow(); } @Override public void onPanelClosed(int featureId, Menu menu) { localCallback.onPanelClosed(featureId, menu); } @Override public boolean onSearchRequested() { return localCallback.onSearchRequested(); } @SuppressLint("NewApi") @Override public ActionMode onWindowStartingActionMode(ActionMode.Callback callback) { return localCallback.onWindowStartingActionMode(callback); } @SuppressLint("NewApi") @Override public void onActionModeStarted(ActionMode mode) { localCallback.onActionModeStarted(mode); } @SuppressLint("NewApi") @Override public void onActionModeFinished(ActionMode mode) { localCallback.onActionModeFinished(mode); } } 
  • Pasar los toques a la vista bajo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.