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 :

Connexion bluetooth impossible.


Sujet :

API standards et tierces Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Connexion bluetooth impossible.
    Bonjour.
    Je débute dans la programmation sur android et je bloque sur un problème depuis 2 jours sans trouver la solution.

    Je crée une application dans le but de communiquer via bluetooth à une carte arm7.
    Jusqu'ici, j'arrive a trouver le device de connexion, créer le socket. Mais dès que j'arrive à la connexion, l'application plante. Impossible de savoir pourquoi ni comment y remédier.

    Merci d'avance pour votre aide.
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    package com.example.bluetooth_pasapas;
     
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Set;
    import java.util.UUID;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.bluetooth.BluetoothAdapter;
    import android.bluetooth.BluetoothDevice;
    import android.bluetooth.BluetoothSocket;
    import android.util.Log;
    import android.view.Menu;
    import android.widget.Toast;
     
    public class MainActivity extends Activity {
    	 private Set<BluetoothDevice> devices;
    	 BluetoothAdapter blueAdapter = BluetoothAdapter.getDefaultAdapter();
    	 private BluetoothDevice device = null;// le périphérique (le module bluetooth)
         private BluetoothSocket socket = null;
         private InputStream receiveStream = null;// Canal de réception
         private OutputStream sendStream = null;// Canal d'émission
     
         public void connect() {
        		Log.d("debug", "Entre dans connect");
        	    new Thread() {
        	         public void run() {
        	        	 	Log.d("debug", "Thread ok");
        	            try {
        	             	Log.d("debug", "Try to connect");
        	                socket.connect();// Tentative de connexion
        	             	Log.d("debug", "Connect OK ok");
        	                Toast.makeText(MainActivity.this, "Connexion Ok", Toast.LENGTH_SHORT).show();
        	                // Connexion réussie
        	            } catch (IOException e) {
        	                // Echec de la connexion
        	            	e.printStackTrace();
        	            	  Toast.makeText(MainActivity.this, "Fail Connexion", Toast.LENGTH_SHORT).show();
        	            }
        	        }
        	    }.start();
        	}
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Log.d("debug", "depart");
            devices = blueAdapter.getBondedDevices(); 
     
            for (BluetoothDevice blueDevice : devices) {
              Toast.makeText(MainActivity.this, "Device = " + blueDevice.getName(), Toast.LENGTH_SHORT).show();
            }
     
     
            BluetoothAdapter blueAdapter;
            Set<BluetoothDevice> setpairedDevices = BluetoothAdapter.getDefaultAdapter().getBondedDevices();
            BluetoothDevice[] pairedDevices = (BluetoothDevice[]) setpairedDevices.toArray(new BluetoothDevice[setpairedDevices.size()]);
            Log.d("debug", "tableau de device save");
     
            for(int i=0;i<pairedDevices.length;i++)
            {
                // On teste si ce périphérique contient le nom du module bluetooth connecté au microcontrôleur
            	Log.d("debug", "Boucle des paires devices");
                if(pairedDevices[i].getName().contains("BLueLink")) {
                	Log.d("debug", "Bluelink find");
                	 Toast.makeText(MainActivity.this, "Device trouve", Toast.LENGTH_SHORT).show();
                    device = pairedDevices[i];
                    try {
                        // On récupère le socket de notre périphérique
                    	Log.d("debug", "Creation socket");
                        socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
                        Toast.makeText(MainActivity.this, "socket cree", Toast.LENGTH_SHORT).show();
                        receiveStream = socket.getInputStream();// Canal de réception (valide uniquement après la connexion)
                        sendStream = socket.getOutputStream();// Canal d'émission (valide uniquement après la connexion)
                        Toast.makeText(MainActivity.this, "sTREAM oK", Toast.LENGTH_SHORT).show();   
                    } catch (IOException e) {
                        e.printStackTrace();
     
                    }
                connect();
                break;
                }   
            }
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    }

  2. #2
    Membre éclairé
    Avatar de maxusn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 174
    Points : 661
    Points
    661
    Par défaut
    Bonjour,

    l'application plante.
    ca ne nous aide pas vraiment a savoir ou se trouve le problème.

    Il faudrait que tu postes l'exception qui t'es retournée.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    En ce qui concerne l'exception, j'ai :
    FATAL EXCEPTION : thread-116763
    Voila le résultat de Logcat pour plus de détail :


    Sinon, quand je ne me connecte pas via une méthode mais que je mets tous le code dans le "onCreate", l'appli ne "plante" plus mais je rentre directement dans l'exception toujours à cause de

  4. #4
    Membre éclairé
    Avatar de maxusn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 174
    Points : 661
    Points
    661
    Par défaut
    Citation Envoyé par thesmogs Voir le message
    Sinon, quand je ne me connecte pas via une méthode mais que je mets tous le code dans le "onCreate", l'appli ne "plante" plus mais je rentre directement dans l'exception toujours à cause de
    je dirais que tu rentre dans l'exception ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Toast.makeText(MainActivity.this, "Connexion Ok", Toast.LENGTH_SHORT).show();
    il me semble que le toast.makeText() doit être exécuter depuis l'UI thread et non depuis un thread de "fond" (ce que tu fais).

    si quelqu'un peut confirmer / infirmer car je ne suis pas certain.

  5. #5
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    L'erreur n'est pas complète, mais indique bien une manipulation graphique en dehors du thread graphique.

    Il faut passer par Activity#runOnUiThread(Runnable)... ou revoir le code pour utiliser un callback avec ton thread ou encore mieux, utiliser une AsyncTask pour ta connexion.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    On dirait plutot l'utilisation d'une AsyncTask (ou d'un Handler ce qui revient au même) dans un thread qui n'est PAS le thread UI....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    C'était bien ça. Il va falloir que je bosse un peu vos réponses car je me suis mis à android il y a deux semaines, et il y a encore pas mal de travail.

    Mais effectivement ça marche mieux maintenant, cela explique pourquoi l'appli ne plantait pas quand tout était dans le "onCreate".

    Du coup j'ai toujours ma petite question. Je ne comprend pas pourquoi
    ne fonctionne pas. Si c'est bien cette ligne qui plante.

  8. #8
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Pour te répondre véritablement, il faudrait voir l'intégralité de l'erreur (dont on a qu'un bout en rouge sur ton screenshot, et nom de Zeus, mets l'erreur en version texte !).
    Le bon point avec Java, c'est que les erreurs sont très verbeuses et servent assez souvent à comprendre facilement ce qui s'est passé. Savoir les lire est très important.

    Mais là, tu as déjà un premier problème de manipulation du thread graphique dans un autre thread (communication entre divers thread, non propre à Android) en faisant une opération en background car tu as dû avoir auparavent une NetworkOnMainThreadException (pas de traitement long sur le thread graphique, non propre à Android, bien que cette plate-forme soulève clairement l'erreur).
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Je me pencherai plus particulièrement sur le problème que tu as soulevé demain Hizin.
    (juste pour l’aparté, je suis en stage 4e année d’école d'ingé en électronique en Inde. J'ai décidé de faire une application sur android mais mon maître de stage n'y connais rien, je ne peux donc pas lui demandé de l'aide).

    Désormais Logcat m'affiche les erreurs suivantes pour la connexion :
    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
    06-24 23:02:45.164: D/debug(32277): Creation socket
    06-24 23:02:45.174: I/BluetoothSocket.cpp(32277): Setting Master socket option
    06-24 23:02:45.184: D/debug(32277): Connection ??
    06-24 23:02:49.398: W/System.err(32277): java.io.IOException: Service discovery failed
    06-24 23:02:49.398: W/System.err(32277): 	at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:478)
    06-24 23:02:49.398: W/System.err(32277): 	at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:236)
    06-24 23:02:49.398: W/System.err(32277): 	at com.example.bluetooth_pasapas.MainActivity.onCreate(MainActivity.java:79)
    06-24 23:02:49.408: W/System.err(32277): 	at android.app.Activity.performCreate(Activity.java:4538)
    06-24 23:02:49.408: W/System.err(32277): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
    06-24 23:02:49.408: W/System.err(32277): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2161)
    06-24 23:02:49.408: W/System.err(32277): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2240)
    06-24 23:02:49.408: W/System.err(32277): 	at android.app.ActivityThread.access$600(ActivityThread.java:139)
    06-24 23:02:49.408: W/System.err(32277): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
    06-24 23:02:49.418: W/System.err(32277): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    06-24 23:02:49.418: W/System.err(32277): 	at android.os.Looper.loop(Looper.java:156)
    06-24 23:02:49.418: W/System.err(32277): 	at android.app.ActivityThread.main(ActivityThread.java:4987)
    06-24 23:02:49.418: W/System.err(32277): 	at java.lang.reflect.Method.invokeNative(Native Method)
    06-24 23:02:49.418: W/System.err(32277): 	at java.lang.reflect.Method.invoke(Method.java:511)
    06-24 23:02:49.418: W/System.err(32277): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    06-24 23:02:49.428: W/System.err(32277): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    06-24 23:02:49.428: W/System.err(32277): 	at dalvik.system.NativeStart.main(Native Method)
    06-24 23:02:49.498: D/libEGL(32277): loaded /system/lib/egl/libGLES_android.so
    06-24 23:02:49.508: D/libEGL(32277): loaded /system/lib/egl/libEGL_adreno200.so
    06-24 23:02:49.528: D/libEGL(32277): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
    06-24 23:02:49.528: D/libEGL(32277): loaded /system/lib/egl/libGLESv2_adreno200.so
    06-24 23:02:49.608: I/Adreno200-EGLSUB(32277): <ConfigWindowMatch:1991>: Format RGBA_8888.
    06-24 23:02:49.618: D/OpenGLRenderer(32277): Enabling debug mode 0
    06-24 23:02:51.179: D/memalloc(32277): /dev/pmem: Unmapping buffer base:0x4d967000 size:5087232 offset:5038080
    06-24 23:02:53.191: D/memalloc(32277): /dev/pmem: Unmapping buffer base:0x4d894000 size:5128192 offset:5087232
    06-24 23:02:55.193: D/memalloc(32277): /dev/pmem: Unmapping buffer base:0x4d894000 size:5160960 offset:5128192
    06-24 23:02:57.205: D/memalloc(32277): /dev/pmem: Unmapping buffer base:0x4d894000 size:5070848 offset:5038080
    06-24 23:02:59.177: D/memalloc(32277): /dev/pmem: Unmapping buffer base:0x4d894000 size:5095424 offset:5070848
    En ce qui concerne le problème de Thread, si vous avez une explication ou un lien afin que je puisse comprendre vraiment de quoi il s'agit.
    Merci d'avance.

Discussions similaires

  1. Connexion ssh impossible
    Par le mage tophinus dans le forum Réseau
    Réponses: 6
    Dernier message: 12/07/2007, 13h37
  2. [C#][PocketPC] Connexion bluetooth
    Par PoZZyX dans le forum Windows Forms
    Réponses: 15
    Dernier message: 11/11/2006, 23h06
  3. Comment créer une connexion Bluetooth ?
    Par kurkaine dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/06/2006, 22h11
  4. Réponses: 9
    Dernier message: 02/01/2006, 16h05
  5. [C# - Connexion POSTGRESSQL] - Impossible de se connecter
    Par angusyoung34 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 28/12/2005, 15h16

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