Page 1 of 1

Intents et Foreground Service

Posted: Tue Jun 27, 2023 7:54 am
by Yanoh
Bonjour,
Le contexte :
Un appareil externe au système concentre des données de géolocalisation de plusieurs balises et les rend disponible grâce au Bluetooth Low Energy.
Sur un smartphone ou tablette un "foreground service" s'occupe de gérer la partie Bluetooth Low Energy, récupère et décode les trames pour les injecter dans Alpine Quest grâce aux "Intents". Les "Intents" mettent à jours les repères sur la carte.
Pour info, J'ai installé la dernière version d'Alpine Quest Pro

Les questions :

1) Dans Alpine Quest : à chaque mise à jour des données (qui peut être à 1 sec), donc des repères, un flicker des tuiles est visible comme si l'ensemble de l'écran est redessiné. Est ce qu'il existe un moyen d'éviter cela ?
2) En fonction de l'ordre de lancement des applications, Alpine Quest ne réagit pas au "Intents" (AQ se lance mais les repères ne sont pas mis à jour) alors que mon "foregroud service" continue à en émettre et je ne m'explique pas pourquoi, avez-vous une idée ?

Re: Intents et Foreground Service

Posted: Thu Jun 29, 2023 9:15 am
by Psyberia-Support
Bonjour,
Pour le point 1, il doit y avoir une re-génération des tuiles impactées, si vous affichez seulement 1 point, normalement seulement la tuile correspondante est mise à jour, mais si vous ajoutez vos points à une trace par example, la zone a mettre à jour peut être bien plus grande. Après je ne sais pas si le "flicker" dont vous parlez est lié à cela ou non, ou si vous pensez que c'est vraiment quelque chose d'anormal...
Pour le point 2, lorsque l'appli ne réagit pas, ouvrez les logs pour voir si elle a bien reçut l'Intent (menu principal -> Plus -> Rapport d'erreur -> fichier Application.log.
Vous devriez vois plusieurs message en lien avec les intent reçus, en particulier un message du type "new valid location from 'null': ..." ou "new valid command location: " (en fonction du type de vos intents).

Puis-je vous demandez pourquoi vous utilisez des Intents pour envoyez les positions à AlpineQuest et non à travers le framework "Mock locations" de Android? Dans ce cas vous pouvez même utiliser l'enregistreur de trace pour enregistrer vos positions.

Cordialement

Re: Intents et Foreground Service

Posted: Thu Jun 29, 2023 2:14 pm
by Yanoh
Bonjour,
Merci pour le retour rapide,
Pour le point 1 :
pour préciser un peu plus, j'affiche un groupe de repères, plus de 10 sur la carto d'Alpine Quest et pour chaque repère, il s'agit de l'emplacement d'une balise de géolocalisation. Lorsque la mise à jour des positions des balises se fait (au maximum toutes les secondes) il y a autant d'Intents que de repères et c'est la que l'on peut apercevoir certaines tuiles se redessiner, même pas forcément celles qui ont un repère.

Pour le point 2, je vais regarder les log pour essayer de comprendre mon soucis.

Je ne connais pas le framework "Mock Locations" mais il me semble qu'il permet d'envoyer une position GPS autre que celle fournie par le smartphone, mais je ne vois pas très bien dans mon cas comment cela peut fonctionner ?

Cordialement

Re: Intents et Foreground Service

Posted: Fri Jun 30, 2023 1:46 pm
by Yanoh
Bonjour,
Voici avec une image capturée sur mon smartphone de l'effet furtif de l'affichage des tuiles "décalées"

Cordialement

Re: Intents et Foreground Service

Posted: Mon Jul 03, 2023 5:46 pm
by Psyberia-Support
Merci pour la capteur d'écran, effectivement je vais voir si je peux corriger cela.

Re: Intents et Foreground Service

Posted: Mon Jul 10, 2023 2:55 pm
by Psyberia-Support
Bonjour,
D'après mes tests ce problème d'affichage est dû à l’accélération graphique lorsqu'il y a beaucoup de rafraîchissements successifs de la carte.
Vous pouvez tester en désactivant temporairement l'accélération graphique de la carte avec ce user setting (dispo dans la dernière version beta 2.3.5c.r8295):

Code: Select all

map.canvas.disable_ha=true
Après avoir redémarrer l'appli, si les effets disparaissent, alors c'est confirmé.
Si c'est bien le cas, une première solution serait d'envoyer les intents de manière successive, et non en même temps si possible.
Une seconde solution est de réduire le nombre de rafraîchissements, par exemple avec cet autre user setting, ce qui réduira peut être l'effet indésirable:

Code: Select all

map.canvas.tiles.fade_delay_ms=0
Dans tous les cas je ne vous conseil pas de garder l'accélération graphique désactivée, des problèmes d'affichages peuvent apparaître ailleurs.