IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Obtenir la géolocalisation [Android]


Sujet :

Composants FMX Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut Obtenir la géolocalisation
    Bonjour,

    me voilà face aux affres de Androïd
    je tente sans succès d'utiliser la position GPS de mon téléphone test (un Lenny3)
    J'ai d'abord essayé un programme de mon cru et me suis fait la réflexion : "cela vient de moi"
    J'ai ensuite tenté le programme exemple d'Embarcadero (Location) et même résultat !
    J'ai même essayé en mode magasin ! rassurez-moi cela peut fonctionner en mode Debug+Développement ?

    Conclusion : soit c'est mon téléphone (pourtant le programme GoogleMap fonctionne) soit c'est mon environnement Delphi qui déconne (je penche pour cette hypothèse)

    donc, une petite image de ma configuration projet
    Nom : ConfigAndroid.PNG
Affichages : 673
Taille : 58,6 Ko
    et à vous de voir où je plante moi je vois pas

    P.S. j'ai vu qu'il y avait aussi une option liste des droits avec Service Cartographique besoin ou pas ?

    [EDIT] j'ai utilisé le projet Démo qui se trouve ici "C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\SensorInfo" surprise si certains sensors sont bien testé, et GPS disponible pour celui-ci j'ai des NAN comme valeurs de latitude et longitude !
    j'en déduit qu'il y a un problème de format peut être ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Je n'ai pas la solution mais...

    Citation Envoyé par SergioMaster Voir le message
    pourtant le programme GoogleMap fonctionne
    ... coupe le WIFI pour t'assurer qu'il te localise bien par GPS

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 661
    Points : 3 630
    Points
    3 630
    Billets dans le blog
    2
    Par défaut
    Bonsoir,

    J'ai utilisé un TLocationSensor dans une petite appli Android pour avoir obtenir les coordonnées du lieu (application qui me sert à régler la monture du télescope).
    Je ne vois pas de problème avec ta configuration de projet. 2 choses sont à voir :
    1) est ce que le GPS est activé sur le terminal Android ?
    2) est ce que la propriété "Active" du TLocationSensor est à true ?

    Voici un petit exemple qui récupère donc la latitude et la longitude (avec accessoirement la conversation en heure, minute, seconde) dans 2 TLabel en utilisant l'évènement OnLocationChanged du TLocationSensor:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    procedure TForm1.LocationSensor1LocationChanged(Sender: TObject; const OldLocation, NewLocation: TLocationCoord2D);
    begin
       if NewLocation.Latitude > 0 then
          Label1.Text := 'Latitude :  '+Format('%2.2f', [NewLocation.Latitude])+' Nord ('+DegDecToDMS(NewLocation.Latitude)+')'
        else
          Label1.Text := 'Latitude :  '+Format('%2.2f', [NewLocation.Latitude])+' Sud ('+DegDecToDMS(NewLocation.Latitude)+')';
     
        if NewLocation.Longitude > 0 then
          Label2.Text := 'Longitude :  '+Format('%2.2f', [NewLocation.Longitude])+' Est'+' ('+DegDecToDMS(NewLocation.Longitude)+')'
        else
          Label2.Text := 'Longitude :  '+Format('%2.2f', [abs(NewLocation.Longitude)])+' Ouest'+' ('+DegDecToDMS(NewLocation.Longitude)+')';
    end;
     
    function TForm1.DegDecToDMS( DegDec : Real ):String;
    var
      Tmp : real;
      S : string;
          function DeuxCar( S1 : String): String;
          begin
             if length(S1)=1 then Result := '0'+S1 else Result := S1;
          end;
    begin
        S := '';
        S := inttostr(abs(trunc(DegDec)));  // récup la partie entière
        Tmp := Frac(DegDec);   // renvoi la partie décimale
        Tmp := Tmp * 60;
        S := S + '°' + DeuxCar( inttostr(abs(trunc(Tmp))));
        Tmp := Frac(Tmp)*60;
        S := S + chr(39) + DeuxCar( inttostr(abs(trunc(Tmp))));
        Tmp := Frac(Tmp)*1000;
        S := S + '"' + inttostr(abs(trunc(Tmp)));
        Result := S;
    end;
    Ce code fonctionne sur mon Galaxy S4 (Android 5.0.1).

    Je n'ai pas coché l'option "Service Cartographique" dans la liste des droits mais dans les permissions d'utilisation les options "accéder à un emplacement approximatif" et "accéder à un emplacement précis" sont cochées.

    PS: petite précision le Wifi et les données mobiles sont désactivés afin d'être certain d'utiliser le GPS (le petit icône du GPS est bien affiché).
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    merci à vous deux. Pour ce qui est du wifi, et pour répondre d'abord à Andnotor, j'ai la "chance?" de travailler à domicile (pionnier du télétravail depuis la fin du siècle dernier). Situé au plein milieu des vignes il était facile pour moi de sortir de la maison, m'éloigner de mon Wifi et en quelques mètres de tester d'abord le wifi de mon voisin, puis la 4G (je suis en limite), puis le réseau normal .... tout cela sans résultat et avant même l'ouverture de la discussion.

    @gbegreg : oui aux deux questions

    La piste WIFI n'était donc sans doute pas le problème.

    Ce matin, je re-vérifie mes paramètres téléphone rien ne semble clocher, sauf le bluetooth inactivé (par choix pour un essai mais aussi pour baisser la conso) .
    je désactive le wifi pour tester à nouveau : toujours rien !
    je réactive le wifi et le bluetooth (bizarre mon appareil me dit que la fonction bluetooth permet de localiser mon appareil par rapport aux autres ou un message dans le genre). Je re-teste alors, par acquit de conscience les différents programmes et devinez ..... bingo j'ai mes positions !

    Étrange quand même que le Bluetooth soit obligatoire (à ma connaissance je n'ai aucun appareil bluetooth donnant une position!)

    Je n'ai plus qu'à attendre que cela se réchauffe dehors pour retourner faire une petite ballade dans les vignes de mon voisin, peut être en profiterai-je (si je vois mon voisin) pour aller gouter le vin nouveau à la cave !

    Bref, pour revenir au code (laissons les vignes de coté)
    Mes recherches suites à ce problème m'ont également permis de voir que l'on pouvait directement utilisé les intents pour localiser l'appareil, je vais étudier cette solution de près car selon mes lectures c'est le seul bon moyen pour utiliser la localisation dans un service Androïd.

    Je laisse la discussion ouverte au cas où quelqu'un aurait une idée du pourquoi de ce phénomène, le résultat de mes essais "Away from Keyboard" et peut être pour mes essais avec les intents.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    Bonjour,

    Serge, j'ai testé le programme exemple d'Embarcadero : "Location" et il fonctionne correctement sur mon smartphone Sony (Android 4).
    Je n'ai pas coché l'option Service Cartographique dans la liste des droits.
    Je pense que cela vient de ton mobile. T'as essayé le programme exemple sur un autre smartphone d'une autre marque?

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Re,

    je suis allé faire mon petit tour ! et tout les programmes fonctionnent dans leur partie GPS, bien sûr je suis resté dans une zone relativement petite (faut quand même que je reste proche de mon téléphone fixe) et n'ai donc pas détecté de changement significatif au niveau de la position

    Vous allez vous tordre de rire si je vous dit que j'ai désactivé le Bluetooth et que ça fonctionnait aussi ? au final je ne sais quel élément j'ai pu modifier sur mon portable pour que cela fonctionne !

    Prochaine étape : comprendre ce que c'est qu'un Android Service, la différence avec un Android Service Intent
    est-ce que c'est ce qu'il faut écrire pour mettre un programme Androïd en tache de fond ou est-ce que Service Android n'a rien à voir avec service windows ?

    Puis comment programmer l'utilisation du sensor dans ce cas de figure! Car mes lectures disent que l'utilisation TLocationSensor plante le service (mais peut être était-ce dans d'anciennes versions) et tout les bouts de code sont incomplets! je vous raconte pas les galères pour trouver les uses nécessaires !
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment obtenir un polynome de regression
    Par evariste_galois dans le forum Mathématiques
    Réponses: 17
    Dernier message: 19/01/2007, 15h06
  2. PROGRESS- Obtenir le ROWNUM, ROWID, etc?!?
    Par nmathon dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/05/2003, 14h05
  3. Fonction/méthode pour obtenir l'IP de la machine
    Par sirex007 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 10/04/2003, 14h36
  4. Comment obtenir la liste des paramètres d'une SP ?
    Par Le Gritche dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/03/2003, 16h54
  5. Obtenir les taches en cours
    Par mlerat22 dans le forum MFC
    Réponses: 3
    Dernier message: 17/06/2002, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo