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;
    }
}