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 :

Lier un service avec une activité/fragment


Sujet :

Android

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Par défaut Lier un service avec une activité/fragment
    Bonjour a tous,
    Je souhaiterais savoir comment on peut lier un service avec une activité pour récupérer les infos qu'il recoit.
    Pour ma part j'ai un service qui recoit des coordonnées gps d'un autre appareil et je voudrais donc récupérer ces données pour afficher une map.
    Comment procéder ?

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Par défaut
    Bonjour,

    une solution simple est d'utiliser le broadcast : http://developer.android.com/referen...tReceiver.html

    Cordialement.

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Par défaut
    Bonjour,

    merci pour la réponse, j'avais regarder un peu de ce coté la ais pas trés bien compris, je vais donc m'y repencher.
    Il faut que je fasse un receiver dans ma classe activité qui appel ma classe service c'est ca ??

    Merci

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Par défaut
    Dans ton cas le service doit envoyer des informations, coordonnées gps à une activité contenant une carte. Le service va donc envoyer un message broadcast. Ce message broadcast aura un clé ; ton activité recevra cette clé avec le message associé dans un receiver.

    MyService.java, lorsque tu as besoin d'envoyer les infos :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Intent intent = new Intent();
    intent.setAction(MY_KEY); //MY_KEY est une chaîne de caractères
    intent.putExtra("latitude", My_Latitude);
    intent.putExtra("longitude", My_longitude);
    sendBroadcast(intent);
    L'activité qui doit recevoir l'info :

    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
     
    //pour recevoir les broadcast
    private BroadcastReceiver bReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if(intent.getAction().equals(MY_KEY)) { //broadcast reçu, on récupère les info associé à la clé
                String latitute = intent.getExtra("latitude");
                String longitude = intent.getExtra("longitude");
            }
        }
    }
     
    @Override
    public void onResume(){
         super.onResume();
         IntentFilter filter = new IntentFilter();
         filter.addAction(MY_KEY); //on filtre pour recevoir le message associé à la clé qu'on a choisi
        registerReceiver(bReceiver, filter); //enregistre le receiver
    }
     
    @Override
    public void onPause(){
         super.onPause();
         unregisterReceiver(bReceiver); //libérer le receiver
    }
    Normalement il ne doit pas y avoir trop d'erreurs dans le code^^

    Cordialement,
    Nicolas.

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Par défaut
    Merci, beaucoup, je vais tester ça !!

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Par défaut
    Bonjour,
    Bon ca marche niquel, merci !!
    Maintenant j'essaye de faire en sorte que quand je suis sur le fragment de la map il détecte si il recoit les positions. La si je vais sur la map avant de recevoir des positions, il faut que je sorte du fragment pour y re entrer pour qu'il l'affiche. J'ai fais un Thread qui doit s'occuper de ça mais il ne met pas a jour la valeur. Cette methode n'est pas trés propre je pense, ca se ressent au chargement de la carte qui galere un peu plus. Par contre je comprend pas pq il ne récupère les nouvelles valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class test implements Runnable{
     
            @Override
            public void run() {
                while(true) {
                    pos = getArguments().getParcelable("position");
                    Log.i("pos", "" + pos.getLatitude());
                    if (pos.getLatitude() != 0) {
                        Log.i("pos", "" + pos.getLatitude());
                        break;
                    }
                }
            }
        }
    Bon je vais me coucher (je suis au canada). Bonne journée et merci encore !

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Par défaut
    Bonjour,

    tu n'as pas besoin de thread pour qu'un fragment ait des infos de l'activité à laquelle il est lié.

    tu peux directement appeler une méthode du fragment dans l'activité. Je prends l'exemple d'un textview (je ne me souviens plus des méthodes pour afficher des points sur une carte :p mais le principe est le même je suppose) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //dans le receiver
    Fragment my_fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
    if(my_fragment instanceof my_class_fragment)
       my_fragment.setTextView("i'm a fragment");
    et dans la class du fragment tu as la méthode de défini :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void setTextView(String text){
         my_textview.setText(text);
    }

  8. #8
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Par défaut
    Impecable ca fonctionne !!

Discussions similaires

  1. [2.0][VB.NET] Lier un textbox avec une db en dynamique
    Par thierry007 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 30/11/2006, 18h07
  2. lier un combo avec une zone de texte
    Par joss56 dans le forum IHM
    Réponses: 2
    Dernier message: 28/11/2006, 16h11
  3. [C#] Comment lier un label avec une DataSource ?
    Par LE NEINDRE dans le forum ASP.NET
    Réponses: 3
    Dernier message: 29/08/2006, 14h17
  4. [MFC ?] lier un javascript avec une application
    Par hiko-seijuro dans le forum MFC
    Réponses: 8
    Dernier message: 10/11/2005, 14h50
  5. [Plugin] Créer un modèle et lier un éditeur avec une vue
    Par freekk91 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 27/03/2005, 20h00

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