android - बिना छुपाए गए प्रस्तुति के बिना हर स्पर्श ईवेंट का पता लगाएं?



android-activity touch-event (1)

मैं एंड्रॉइड लाइब्रेरी विकसित कर रहा हूं जिसके लिए इसका उपयोग करने वाले ऐप पर सभी टच इवेंट्स ट्रैक करना आवश्यक है I अभी के लिए उपयोगकर्ताओं को उनकी गतिविधि की dispatchTouchEvent() उनकी हर गतिविधि पर ओवरराइड करना चाहिए जैसा की नीचे दिखाया गया

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

लेकिन Appsee Appsee.start(“key”); साथ स्पर्श इवेंट का पता लगाता है Appsee.start(“key”); ऑन क्रेट विधि को पहली गतिविधि में एकीकृत किया गया है जहां ऐप शुरू होता है। यह कैसे संभव है। कोई मदद??


जवाब देने के रूप में यह दूसरों के लिए सहायक हो सकता है उत्तर लाइब्रेरी के लिए उपयोगी होगा जो कि टच ईवेंट्स को अवरोधन करने की आवश्यकता होती है।

यदि आप डिस्पैच टचएवेंट () को ओवरराइड करना चाहते हैं ( यदि आप लाइब्रेरी के लिए कोडिंग कर रहे हैं तो एमआईटी) गतिविधि की विधि तो हम विंडो का उपयोग कर सकते हैं। कॉलबैक क्लास विंडो के अपने खुद के कार्यान्वयन को बनाएं। नीचे दिए गए कोड के रूप में कॉलबैक करें और फिर इसे अपनी गतिविधि से विंडो ऑब्जेक्ट को कॉलबैक के रूप में सेट करें।

नीचे दिए गए गतिविधि संदर्भ उदाहरण के लिए नीचे कोड स्निपेट के रूप में करें

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

क्लास मायवंडो कॉलबैक निम्न होगा:

आपको MyWindowCallback के प्रेषण TouchEventMethod () पर TouchEvent मिलेगा जहां आप इन्हें आवश्यकतानुसार उपयोग कर सकते हैं

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);

    }
}




touch-event