Android superposition de saisir TOUS les toucher, et de les transmettre?
J'essaie d'obtenir tous les cas les données de quelque chose comme un système de superposition, de déplacer mes sprites autour basé sur cette touche, puis permettre à l'OS/page d'accueil/navigateur pour agir sur les données comme il se doit(ou vice versa). J'ai trouvé des questions similaires, mais rien qui ne me mène nulle part je n'ai pas déjà été:
L'obtention de la Vue de la réception de tous les événements tactiles
(Mise en œuvre, avec les résultats ci-dessous)
La création d'un système de superposition de la fenêtre (toujours au top)
Ce que je peux faire:
Je peux SOIT prendre TOUS les événements tactiles et d'agir sur eux par déplacement de mes sprites et de ne pas permettre à l'OS/page d'accueil/navigateur pour voir l'un d'eux, OU bien je peux laisser les événements tactiles de passer à travers et obtenez seulement un “TOUCH_OUTSIDE” pour mon appli pour agir.
À atteindre mon objectif:
Je ne PEUX PAS pour la vie de me comprendre un moyen de contourner les DEUX de travailler avec les données. Les seules méthodes que je pense, que je n'arrive pas mis en œuvre sont:
Intercepter les données de mon APPLICATION et de la passer sur OS/page d'accueil/navigateur de travailler avec
En permettant à l'OS/page d'accueil/navigateur pour obtenir les données d'abord, puis l'obtention d'un rappel à l'information en quelque sorte
En permettant à l'OS/page d'accueil/navigateur pour obtenir les données, la loi sur les données, et le sondage pour que leur défilement/des valeurs de position sont pour agir sur elle dans mon APPLICATION.
Je crains que ce n'est tout simplement pas possible, je pense que j'ai lu quelque part dans une partie de la documentation que je ne peux pas le trouver maintenant:
“C'est tout ou rien, soit votre vue est de tous les événements, ou aucun d'entre eux”
(Pour éviter toute confusion, je ne veux pas dire que j'ai deux points de vue. Je veux dire que j'ai un point de vue contrôlé par activité/service de la superposition de l'OS/page d'accueil/navigateur. Comme un panneau de verre si vous voulez.)
Je vous remercie pour toutes les informations utiles que vous pouvez offrir, c'est très apprécié!
[Mise à JOUR]
Posté ma propre documentation sur la question ci-dessous, afin de ne pas être source de confusion.
- est l'enracinement d'une option, et vous essayer d'obtenir que cela fonctionne pour un seul appareil, ou un périphérique générique? J'ai une solution qui implique l'enracinement du téléphone et de suivi /dev/input/eventX, où X est le flux d'événements qui fournit des informations sur l'événement tactile. Cela ne fonctionne que, cependant, si votre appareil est enracinée, et doit être personnalisés à l'aide d'un périphérique.
Vous devez vous connecter pour publier un commentaire.
Trouvé cette documentation que pratiquement indique qu'il n'est pas possible de faire les deux:
Android : Multi-touch et TYPE_SYSTEM_OVERLAY
Ils discutent des solutions de contournement, mais je ne pense pas que l'un d'eux sera effectivement travailler pour exactement ce que je suis en train de faire. Les deux, compte tenu des événements de l'application sous-jacente, et d'être en mesure de snoop à agir sur eux pour moi.
Quelqu'un veut en désaccord je aimerais entendre de bonnes nouvelles 😀
Vous pouvez utiliser le GestureOverlayView, si vous souhaitez masquer les lignes de il attire, vous pouvez définir la couleur Transparente #00000000 afin de ne pas se montrer, et puis vous pouvez capturer toutes les attentions, et les gestes.
http://developer.android.com/resources/articles/gestures.html
Je cherchais la même chose.
Cet indicateur fait l'affaire pour moi FLAG_NOT_TOUCH_MODAL
Fonctionne sur Android 7 et 8 de configuration comme ci-dessous.
La seule action que j'ai mis en œuvre jusqu'à présent est une touche pour fermer la fenêtre superposée.
J'ai aussi utilisé le code à partir d'ici Exemple de Système de Superposition de Code sur Github qui a été nécessaire pour obtenir les événements.
Par la façon dont Google Maps fait un très bon travail avec cette sur Android 8. Vous pouvez faire glisser leur superposition fenêtre autour de, la redimensionner ou la fermer. Et toutes les autres applications fonctionnent bien, alors que c'est.
Ce n'est pas la solution optimale, mais il fonctionne. Redémarrez le service de basculement de l'indicateur de ne pas toucher. mettre booléen supplémentaire à l'Intention
qui est utilisé pour startservice pour déterminer l'état antérieur de la bascule de la valeur. Une meilleure mise en œuvre serait de feu l'intention de
le contact lorsque la fenêtre est à l'écoute et après une période déterminée lors de l'écoute pas.