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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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
    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 chevronné
    Avatar de maxusn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    175
    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 : 175
    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
    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
    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 chevronné
    Avatar de maxusn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    175
    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 : 175
    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 : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    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 confirmé

    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
    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....

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