2017-07-08 3 views
0

Je suis en train de créer un accessoire pour Android. Lorsqu'il est connecté au téléphone, il lance une application pour afficher certaines informations. Jusqu'ici tout va bien. J'ai une démo de cette course.L'acquisition de l'écran ou une partie de l'écran lorsque l'accessoire est connecté dans Android

Je veux que cette application soit visible et ne pas être en mesure de fermer à moins que vous retirez l'accessoire. J'ai trouvé quelques façons de le faire, mais ils ne sont pas garantis de travailler. Le dessin sur d'autres applications nécessite l'activation d'une action utilisateur spécifique, telle que la surveillance des processus en cours d'exécution.

enter image description here

Y at-il une solution non hacky pour ce type de problème?

je peux compiler ma propre version d'Android et je peux signer mon application avec la signature du système si cela peut faire une différence.

Répondre

1

Si vous avez la possibilité d'éditer le code source Android, éditez le fichier core/java/android/app/ActivityThread.java pour modifier la méthode handleMessage(). Les activités sont lancées, reprises, arrêtées et détruites de cet endroit. Cette méthode fait beaucoup plus que cela, mais pour votre cas d'utilisation, c'est là que vous pouvez ajouter votre chèque pour voir si votre matériel est connecté au téléphone Android, puis choisissez de gérer ou d'ignorer le message approprié. Un autre moyen d'y parvenir si vous avez la possibilité d'éditer le code source Android est de modifier la barre d'état elle-même et d'ajouter votre vue au-dessus de la barre d'état. La barre d'état est géré par paquet SystemUI qui est sous frameworks/base/packages/SystemUI/ je commencerais avec ce fichier /frameworks/base/packages/SystemUI/res/layout/super_status_bar.xml et d'analyser plus où il est utilisé. Avec la première option, vous pouvez bloquer le lancement ou la reprise de toutes les autres applications et avec une deuxième approche, votre interface utilisateur fera partie de la barre d'état et les autres applications continueront à fonctionner normalement.