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 :

Maintenir un bind a un service dans une application


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 105
    Points : 57
    Points
    57
    Par défaut Maintenir un bind a un service dans une application
    Bonjour

    J'ai un service qui gère une communication en bluetooth avec un boitier Arduino. Cela intègre l'authentification auprès du boitier Arduino.
    L'activation de la liaison Bluetooth et l'authentification étant un peu longue, elle est réalisée au moment de la création du service.

    J'ai besoin de pouvoir interroger le service depuis plusieurs activités d'une autre application. Je souhaiterai pouvoir faire le bind une fois pour toute au lancement de l'application et n'avoir ensuite plus qu'a interroger le service. Comment puis-je faire cela ?

    Actuellement dans mon premier test, le bind est réalisé lors de la création de l'activité. Mais je ne vois pas comment pouvoir l'utiliser depuis les autres activités.

    Merci d'avance.

    Nathalie

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Je t'invite à consulter cette doc qui répond à ta question :
    https://developer.android.com/guide/...-services.html

    Dans ton cas je dirais qu'il faut utiliser la solution du messenger , qui permet à plusieurs activities de "parler" au service.

    La seule contrainte est d'arriver à stoper le service quand ton application passe en arrière plan afin de ne pas tuer la batterie avec une connexion qui ne s’arrêterait jamais.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 105
    Points : 57
    Points
    57
    Par défaut
    Merci pour l'info. En fait j'utilise déjà Messenger pour communiquer avec le service. Mon problème essentiel est que le Bind est lent à cause de la connexion (bluetooth puis authent arduino) et que dès que je change d'activité (ou que l'orientation de l'écran change), le bind est perdu donc le service s'arrête et donc il faut refaire une connexion.

    J'ai l'impression de ce que j'ai lu que Messenger ne s'utilise qu'avec les bound services.

    Mais finalement j'ai réussi à resoudre mon problème de la facon suivante :

    Un bound Service peut aussi être un service lancé en tache de fond.

    Du coup lors de la création de ma MainActivity, je lance le service, ainsi le service à le temps d'initialiser la connexion bluetooth et avec l'arduino.

    Ensuite dans chaque activité qui doit interagir avec le service je fais le bind mais cette fois la connexion est déjà prête donc c'est plus rapide. Même si je perds le bind ca se relance facilement.

    Par contre malgré tout ce que j'ai pu lire sur le web tant en Français qu'en Anglais je trouve que tout ce qui touche aux services et à la communication inter-applicative n'est pas très claire.

    Pour la conso de la batterie je vais couper le bluetooth dès que j'aurais trop de temps sans interactions.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Ton erreur est probablement de faire ta connexion bluetooth dans le bind de ton service.

    Elle devrait être fait dans un thread à part (ce que n'est pas un service) lancé dans le start du service et coupée dans le stop.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 105
    Points : 57
    Points
    57
    Par défaut
    Oui je suis d'accord avec toi.
    En fait la connexion bluetooth etait bien fait dans le onCreate, mais quand tu travailles uniquement avec le binding, le service n'est créé qu'au moment du bind donc le onCreate se déroule à ce moment là.
    Du coup mon service n'était pas opérationnel avant 3 ou 4 secondes et le service s'arretait au moment du unBind (sauf s'il est utilisé par d'autres appli ce qui n'est pas mon cas).

    L'astuce consiste à le lancer, du coup lors du bind/unbind le service ne s'arrete pas.

    Merci pour les cours et tutoriels pour apprendre Arduino

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

Discussions similaires

  1. Plusieurs services dans une application
    Par Drlord dans le forum Android
    Réponses: 2
    Dernier message: 14/03/2012, 16h13
  2. Réponses: 0
    Dernier message: 10/08/2010, 22h58
  3. Intégrer un web service dans une application java
    Par madjidri dans le forum Services Web
    Réponses: 2
    Dernier message: 08/06/2008, 14h53
  4. Réponses: 7
    Dernier message: 17/10/2007, 17h06
  5. Binding sur <h:inputText> dans une boucle
    Par danyboy85 dans le forum JSF
    Réponses: 6
    Dernier message: 29/05/2007, 11h16

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