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

API standards et tierces Android Discussion :

BluetoothChat pour connexion à plusieurs smartphones


Sujet :

API standards et tierces Android

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Par défaut BluetoothChat pour connexion à plusieurs smartphones
    Bonsoir à tous,
    Je suis totalement coïncée sur mon projet android. Déjà, je viens à peine de commencer à apprendre le langage et je dois modifier le BluetoothChat pour connecter plusieurs équipements, mais pas simultannément, plutôt en boucle. En termes plus clairs, je range les équipements apparés dans un tableau que je parcours ensuite un à un. Lorsque je me connecte à un équipement, j'envoi juste un petit message , je me déconnecte directement et je passe au suivant.
    J'ai suivi la philosophie du BTChat et là je réussi à avoir les équipements dans une chaine de caractère séparés par des points virgules (devicelistactivity). Comment transmettre cette liste à l'activity principale(bluetoothchat) en détruisant le OnItemClickListener? Car je ne veux plus connecter un équipement au click, mais tous mis dans un tableau.
    Je sais que c'est long, mais je devais être claire.

    Merci

  2. #2
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    Je ne connais pas le BTChat mais tu sauves quand même ton tableau dans une db, sharedPrefs, sdcard...?

    sinon tu risques de tout perdre lolllllll

    le OnItemClickListener tu peux le mettre .setEnabled = false pour le désactiver. C'est comme si tu le détruisais, en fait tu le désactives et libère des ressource.

    Ensuite il suffit de le réutiliser au lieu de le recréer.

  3. #3
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Déjà, je viens à peine de commencer à apprendre le langage et je dois modifier le BluetoothChat pour connecter plusieurs équipements,
    Tout d'abord avant de te jeter corps perdu dans ce code essaye de bien comprendre les interactions entre eux (Thread, Activity,..).

    J'ai suivi la philosophie du BTChat et là je réussi à avoir les équipements dans une chaine de caractère séparés par des points virgules (devicelistactivity). Comment transmettre cette liste à l'activity principale(bluetoothchat) en détruisant le OnItemClickListener? Car je ne veux plus connecter un équipement au click, mais tous mis dans un tableau.
    Pourquoi dans ce cas avoir deux activity ?
    Si tu souhaites garder ces deux activity il faut que tu passes par les bundles de l'intent de retour :

    donc au lieu d'avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Intent intent = new Intent();
                intent.putExtra(EXTRA_DEVICE_ADDRESS, address);
     
                // Set result and finish this Activity
                setResult(Activity.RESULT_OK, intent);
    tu auras

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Intent intent = new Intent();
                intent.putStringArrayListExtra(EXTRA_DEVICES_ADDRESS, addresses); // adresses est une liste de string contenant toutes les adresses mac
    // tu trouveras ces adresses mac lors du discovery du bluetooth
     
                // Set result and finish this Activity
                setResult(Activity.RESULT_OK, intent);
    Attention :
    De même sur la récupération tu récupérer une liste d'adresse et non l'adresse.

    Tu en as besoin de qu'une seule au final, avec la récupération de te liste au démarrage de l'application.

    Tu mets tout tes devices dans un tableau comme sur l'exemple et tu le parcours en te connectant un par un depuis un Thread.

    Tu n'as plus besoin du OnItemClickListener puisque cela se fera automatiquement a moins que tu ne souhaites qu'un utilisateur lance la procédure.

    La détection des devices devra se faire dans le OnCreate/OnStart de ton activity Principale.

  4. #4
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Par défaut
    ça c'est sûr, j'ai bien étudié le code avant de commencer à le modifier. Même comme quelques zones d'ombres demeurent, mais au fil des jours, je le comprends mieux.

    J'utilise 2 activities pour que le code ne soit pas complètement dépendant. C'est à dire je voudrait que chaque tâche (découverte et recherche d'équipements, connexion, saisie, ...) soit modifiable sans avoir à toucher aux autres parties.


    Est ce que StringArrayList est une variable système standard? Parce que lorsque je l'utilise j'ai une erreur.


    Justement, c'est l'un de mes problèmes aussi: Eliminer le SetOnItemClickListener.

    Si je recupère les équipements dans le onCreate de l'activity principale, est ce de là que je pourrai les récupérer pour les parcourir dans la connexion? C'est à dire que c'est plutôt labas que je fais le contrôle du resultCode de l'intent avec resultat?

  5. #5
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    J'utilise 2 activities pour que le code ne soit pas complètement dépendant. C'est à dire je voudrait que chaque tâche (découverte et recherche d'équipements, connexion, saisie, ...) soit modifiable sans avoir à toucher aux autres parties.
    ok

    Est ce que StringArrayList est une variable système standard? Parce que lorsque je l'utilise j'ai une erreur.
    Oui quelle erreur, et peux tu nous montrer le code ?

    Justement, c'est l'un de mes problèmes aussi: Eliminer le SetOnItemClickListener.

    Si je recupère les équipements dans le onCreate de l'activity principale, est ce de là que je pourrai les récupérer pour les parcourir dans la connexion? C'est à dire que c'est plutôt labas que je fais le contrôle du resultCode de l'intent avec resultat?
    Si tu veux rester absolument sur deux activity comme tu le demande plus haut il te faudra soit à la fin du discovery envoyer automatiquement la liste à ton activity parente.
    Soit avec un Bouton Send Devices par exemple.

  6. #6
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Par défaut
    Bonsoir et désolée pour le retard à réagir, petit déplacement.
    Bon là j'ai essayé de résoudre mes erreurs qui n'étaient pas du tout fondées. En effet, l'erreur sur intent.putStringArrayListExtra(EXTRA_DEVICE_ADDRESS, AddressList). Je mettais S à DEVICE et aussi mon AddressList je l'avais mal utilisé (String au lieu de type approprié ici qui est un arrayList<>). Ainsi, j'ai résolu le problème avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ArrayList<String> AddressList = new ArrayList<String>();
    ...
    Intent intent = new Intent();
                intent.putStringArrayListExtra(EXTRA_DEVICE_ADDRESS, AddressList);
    Maintenant, comme je l'ai dis au début, je voudrais faire une boucle de connexion entre tous les équipements du ArrayList. Pour cela, je dois me connecter aux équipements un après un (ce que je peux faire dans l'activity principale après que je récupère la liste envoyée par l'intent), envoyer un petit message, recevoir directement le même message en retour et enfin me déconnecter de l'équipement et passer au suivant dans la liste. Après avoir minutieusement étudié le code, je sais qu'il faut que je fasse ça dans le thread connectedThread de BluetoothChatService.java . Comment? C'est ce que je n'ai pas encore trouvé.

  7. #7
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Maintenant, comme je l'ai dis au début, je voudrais faire une boucle de connexion entre tous les équipements du ArrayList. Pour cela, je dois me connecter aux équipements un après un (ce que je peux faire dans l'activity principale après que je récupère la liste envoyée par l'intent), envoyer un petit message, recevoir directement le même message en retour et enfin me déconnecter de l'équipement et passer au suivant dans la liste. Après avoir minutieusement étudié le code, je sais qu'il faut que je fasse ça dans le thread connectedThread de BluetoothChatService.java . Comment? C'est ce que je n'ai pas encore trouvé.

    Un algo vite Fait

    Devices = Get ArrayDevice (Inquiry)

    For Device in Devices
    Device.Connect();
    Device.write();
    Device.DisConnect();
    end


    Après si tu veux attendre la réponse du device alors il te faudra soit faire un wait dans la boucle, qui attendra sur une réponse du device.

    Si c'est le cas le mieux est de basculer ce code en dehors du Main Thread pour ne pas bloquer l'application. Par défaut comme je l'avais signalé auparavant cela sera toujours mieux.

Discussions similaires

  1. [ImageMagick] Boucle pour créer plusieurs images
    Par zimotep dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 10/01/2006, 21h44
  2. [C#] Un composant pour afficher plusieurs lignes ?
    Par Tips dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/12/2005, 19h47
  3. [Prototype] Avoir plusieurs instances
    Par pedouille dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 17/12/2005, 09h12
  4. Réponses: 2
    Dernier message: 12/09/2005, 15h33
  5. [C#] [Sockets] Eclaircissements pour connexions asynchrones
    Par Sinclair dans le forum Windows Forms
    Réponses: 6
    Dernier message: 08/06/2004, 17h50

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