|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Impossible d'appeler fonction callback à l'intérieur d'une classe |
Débuté par Evan T'HOOFT, 06 juil. 2025 19:46 - 2 réponses |
| |
| | | |
|
| |
Membre enregistré 3 messages |
|
Posté le 06 juillet 2025 - 19:46 |
Bonjour,
Je suis débutant sur Windev et j'ai un petit soucis que je n'arrive pas à comprendre. Je travaille sur une petite application mobile et j'aimerai pouvoir utiliser les fonctions GPS du téléphone. J'ai crée une classe qui fait des requêtes http pour gérer des fonctions similaires. Du coup je voulais gérer mes fonctions liées au GPS dedans. J'ai alors rédigé ce code (code simplifié):
GeoHelper est une Classe
FIN
Procedure Constructeur() GPSInitParamètre(gpsAuto, gpsEnergieElevée + gpsPrécisionElevée) etat est une chaîne = ""
SELON GPSEtat() CAS gpsActivé etat = "ACTIF" CAS gpsDésactivé etat = "Désactivé" CAS gpsHorsService etat = "Hors service" CAS gpsIndisponible etat = "Indisponible" CAS gpsDisponible etat = "Disponible" AUTRE CAS etat = "Autre cas :(" FIN
Info("GPS: " + etat)
GPSSuitDéplacement(onGpsPositionReceived, 500)
Procedure GLOBAL onGpsPositionReceived(pos est une geoPosition) Info(pos.Latitude + " | " + pos.Longitude)
Résultat sur mon téléphone: Lorsque l'appli se lance ma boite Info apparait avec le texte: "GPS: ACTIF". Mais je n'ai jamais ma boite Info avec la Latitude et la longitude qui apparait... Pourquoi ?
J'avais mis ma procédure onGpsPositionReceived en privé à la base je me suit dit que GPSSuitDéplacement n'y avait peut être pas accès, je l'ai alors passée en publique mais ça n'a pas marché non plus... Et en global non plus.
D'où peut provenir ce soucis et pourquoi mon callback n'est pas appelé ?
Merci d'avance, Evan. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 676 messages |
|
Posté le 06 juillet 2025 - 21:47 |
Salut, Nulle part dans votre code vous vérifier si votre position est valide. Attention, si vous êtes sur Android, vos info peuvent provoquer une erreur fatale . Il est préférable de faire des toast . Est tu sur que 500 est une durée suffisante pour récupérer la position ? La fonction gpssuitdéplacement nécessite un vrai déplacement De plus il faut la mettre dans un thread persistant. Il faut aussi demander a l'utilisateur les permissions nécessaires. Bien sûr tout cela est indiqué dans l'aide que n'as pas lus. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 messages |
|
Posté le 06 juillet 2025 - 22:29 |
Bonsoir, C'est vrai je vais rajouter une vérification pour la position. Pour le info je n'ai pas eu de soucis jusqu'ici mais je vais quand même changer dans le doute. La valeur de 500 me renvoie les coordonnées toutes les 5 secondes même sans la distance (testé dans mon exemple sans classe). Pour ce qui est du thread persistent c'est noté merci de l'information. Pour les permissions elles m'ont été demandée j'ai indiqué que j'acceptais de partager ma position dans cette application.
Non j'ai lu la doc (c'est surement là que j'ai trouvé toutes ces procedures...). J'ai même un exemple simplifié qui fonctionne... Mais dans cet exemple qui fonctionne mon callback est une procédure interne. Ici ce que je voudrais c'est avoir en callback qui est une méthode de ma classe et je voulais simplement savoir pourquoi elle n'est pas appelée. Je ne vois pas pourquoi me dire que je n'ai pas lu la doc... |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|