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

Android Discussion :

Récupérer dans différentes vues les données issues d'un service


Sujet :

Android

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut Récupérer dans différentes vues les données issues d'un service
    Bonjour à toutes et à tous,

    Dans une application, je souhaite récupérer les données du GPS et de la boussole via un service que je crée. Ça, je sais faire, ainsi que d'activer/désactiver le service.

    Un service n'ayant pas d'interface graphique, je souhaite récupérer ces données dans mon activité principale ainsi que dans des activités secondaires (intent) pour réaliser des affichages liés à ces données. Ça, je ne sais pas faire.
    Comment fait-on ? un petit exemple ...

    Merci de votre aide.

    Pierre

  2. #2
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Bon, ben comme je n'ai pas de proposition(s) , je vais vous décrire ce que j'ai fait avec mes petits doigts : j'utilise des Handler.

    La classe Service se présente comme suit :

    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
    public class MonPremierService extends Service {
        public static Handler hndXfr; // le Handler qui permet de récupérer les données
        XfrData xfrData; // la classe interne qui permet le transfert
     
        // tout le code interne au service qui va bien. Par exemple une info GPS
            @Override
            public void onLocationChanged(Location location) { // sur un changement de position
                xfrData = new XfrData(hndXfr, location); // création d'un nouveau thread avec l'adresse du Handler vers où envoyer les infos
                xfrData.start(); // lancement du thread
            }
     
     
        private class XfrData extends Thread {
            Handler hndRet;
            Location dataGPS;
            public XfrData(Handler hnd, Location location) {
                hndRet = hnd; // récupération du Handler
                dataGPS = location; // récupération des données GPS
            }
            @Override public void run() { //procédure de messagerie
                Message msg = hndRet.obtainMessage();
                Bundle b = new Bundle();
                b.putParcelable("GPS_Data", dataGPS);
                msg.setData(b);
                hndRet.sendMessage(msg);
            }
        }
    }
    Puis, dans chacune des activités qui souhaite utiliser le service, il faut placer ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Handler handlerGPS = new Handler() { // le Handler de récupération des données
            public void handleMessage(Message msg) { // ici, je récupère les données du GPS
                Location dataGPS = msg.getData().getParcelable("GPS_Data");
                latitude.setText(String.format("%.6f", dataGPS.getLatitude()));
                longitude.setText(String.format("%.6f", dataGPS.getLongitude()));
                altitude.setText(String.format("%.1f", dataGPS.getAltitude()));
            }
        };
     
        protected void onResume() {
            super.onResume();
            MonPremierService.hndXfr = handlerGPS; // on envoie le Handler sur lequel récupérer les données
        }
    Voilà, ce n'est peut-être pas très orthodoxe, mais ça fonctionne bien.

    Cordialement.

    Pierre

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/05/2015, 11h14
  2. Réponses: 0
    Dernier message: 02/11/2012, 16h33
  3. Réponses: 1
    Dernier message: 28/03/2008, 15h49
  4. [VB.Net] Comment récupérer dans un textbox une donnée BDD ?
    Par zzzmoi dans le forum Accès aux données
    Réponses: 10
    Dernier message: 08/07/2007, 02h08
  5. Réponses: 4
    Dernier message: 26/07/2006, 14h29

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