Android-Overlay, um ALLE Touch zu greifen und sie weiterzugeben?
Ich bin im Grunde zu versuchen, um alle touch-event-Daten aus so etwas wie ein system, overlay, meine sprites um, basierend auf diesen touch-Daten, dann kann der OS/homescreen/browser zu handeln auf die Daten, wie es sollte(oder Umgekehrt). Ich habe ähnliche Fragen, aber nichts, das mich führt, wo ich es noch nicht geschehen war:
Immer der Ansicht, dass der Empfang alle touch-events
(Umgesetzt, Ergebnisse siehe unten)
Erstellen einer system-overlay-Fenster (immer im Vordergrund)
Was ich tun kann:
Kann ich ENTWEDER greifen Sie ALLE touch-events und handeln Sie auch, indem mein sprites und nicht zulassen, dass die OS/homescreen/im browser zu sehen, alle von Ihnen, ODER ich SONST zulassen, kann die touch-Ereignisse passieren und nur ein "TOUCH_OUTSIDE" für meine app zu handeln.
Mein unerreichbares Ziel:
Ich KANN NICHT für das Leben von mir herauszufinden, einen Weg, um immer BEIDE arbeiten mit den Daten. Die einzigen Methoden, die ich mir denken kann, dass ich kann nicht umgesetzt werden:
Das abfangen der Daten in meine APP und übergeben Sie es auf OS/homescreen/browser arbeiten mit
So dass die OS/homescreen/browser die Daten zuerst, und dann ein Rückruf mit der information irgendwie
So dass die OS/homescreen/browser um die Daten zu erhalten, wirken auf die Daten, und die Umfrage für das, was Ihre scroll - /Lage-Werte sind um so zu handeln, es in mein APP.
Ich Angst, dass dies einfach nicht möglich, ich glaube, ich habe irgendwo gelesen, in irgendeiner Dokumentation, die ich nicht finden kann jetzt:
"Es ist alles oder nichts, entweder Ihr Blick bekommt alle Ereignisse, oder keiner von Ihnen"
(Um Verwirrung zu vermeiden, ich meine nicht, dass ich in zwei Ansichten. Ich meine, ich habe eine view gesteuert über Aktivität/service überlagerung der OS/homescreen/browser. Wie eine Glasscheibe, wenn man so will.)
Danke für jede hilfreiche information, die Sie anbieten können, es ist sehr viel geschätzt!
[UPDATE]
Habe meine eigene Dokumentation über die Frage unten, so dass nicht verwirrend sein.
InformationsquelleAutor der Frage While-E | 2012-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Dokumentation, die ziemlich viel erklärt, dass es nicht möglich ist, beides zu tun:
Android : Multi-touch und TYPE_SYSTEM_OVERLAY
Diskutieren Sie über workarounds, aber ich glaube nicht, dass einer von Ihnen funktioniert tatsächlich, für genau das, was ich versuche zu tun. Sowohl angesichts der Ereignisse der zugrunde liegenden app, und Sie können snoop Sie, handeln Sie für mich.
Jemand will, um zu widersprechen, ich würde gerne hören, gute Neuigkeiten 😀
InformationsquelleAutor der Antwort While-E
Können Sie die GestureOverlayView, wenn Sie wollen ausblenden der Zeilen zieht es Sie können die Farbe auf Transparent #00000000, damit es nicht zeigen, bis, und dann können Sie erfassen alle Berührungen und gesten.
http://developer.android.com/resources/articles/gestures.html
InformationsquelleAutor der Antwort emalamisura
Ich war auf der Suche für die gleiche Sache.
Dieses flag funktioniert der trick für mich FLAG_NOT_TOUCH_MODAL
Funktioniert auf Android 7-und 8-setup wie unten.
Die einzige Aktion, die ich umgesetzt habe, so weit ist einen Hauch zu schließen, die overlay-Fenster.
Ich auch verwendet code von hier Beispiel-System-Overlay-Code auf Github die nötig war, um die Ereignisse.
Durch die Art und Weise Google Maps macht einen wirklich netten job mit dieser auf Android-8. Sie können ziehen Sie die overlay-Fenster rund, Größe ändern oder schließen. Und alle anderen apps funktionieren, während es ist.
InformationsquelleAutor der Antwort mswlogo
Dies ist nicht die optimale Lösung aber es funktioniert. Starten Sie den Dienst ein-und ausschalten der Flagge nicht Anfassen. setzen boolean extra in der Absicht, die verwendet wird, um startservice zu bestimmen vorherigen Zustand Umschalten Wert. Eine bessere Umsetzung wäre, um das Feuer der Absicht zu berühren, wenn das Fenster überwacht und nach einer festgelegten Frist, wenn Sie nicht hören.
InformationsquelleAutor der Antwort Rico