1 package com.example.area;
3 import android.bluetooth.BluetoothAdapter;
4 import android.bluetooth.BluetoothDevice;
5 import android.bluetooth.BluetoothSocket;
6 import android.os.Handler;
7 import android.os.Message;
8 import android.util.Log;
10 import java.io.BufferedReader;
11 import java.io.IOException;
12 import java.io.InputStream;
13 import java.io.InputStreamReader;
14 import java.io.OutputStream;
15 import java.util.UUID;
32 private static final String
TAG =
"_LiaisonBluetooth";
33 private static final String
ID =
"00001101-0000-1000-8000-00805F9B34FB";
39 private BluetoothSocket
socket = null;
40 private BluetoothDevice
module = null;
69 bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
70 if (!bluetoothAdapter.isEnabled())
72 Log.d(TAG,
"Activation du Bluetooth");
73 bluetoothAdapter.enable();
83 Set<BluetoothDevice> appareilsAppaires = bluetoothAdapter.getBondedDevices();
85 Log.d(TAG,
"Recherche l'appareil : " + idAppareil);
86 for (BluetoothDevice appareil : appareilsAppaires)
88 Log.d(TAG,
"Nom : " + appareil.getName() +
" | Adresse : " + appareil.getAddress());
89 if (appareil.getName().equals(idAppareil) || appareil.getAddress().equals(idAppareil))
107 Log.d(TAG,
"Création de la socket pour l'appareil : " + module.getName() +
" | Adresse : " + module.getAddress());
110 socket = module.createRfcommSocketToServiceRecord(UUID.fromString(ID));
112 catch (IOException e)
116 Log.d(TAG,
"Echec de la création de socket");
123 Message message =
new Message();
125 message.obj = module.getName();
126 handlerIHM.sendMessage(message);
138 if (module == null || socket == null)
141 Log.d(TAG,
"Connexion au module " + module.getName() +
" | Adresse : " + module.getAddress());
144 @Override
public void run()
148 bluetoothAdapter.cancelDiscovery();
150 fluxReception = socket.getInputStream();
151 fluxEnvoi = socket.getOutputStream();
152 if (!tReception.isAlive())
154 Message message =
new Message();
156 message.obj = module.getName();
157 handlerIHM.sendMessage(message);
159 catch (IOException e)
161 Log.e(TAG,
"Erreur ouverture du socket");
173 if (module == null || socket == null)
176 Log.d(TAG,
"Déconnexion du module " + module.getName() +
" | Adresse : " + module.getAddress());
179 @Override
public void run()
185 Message message =
new Message();
187 message.obj = module.getName();
188 handlerIHM.sendMessage(message);
190 catch (IOException e)
192 Log.e(TAG,
"Erreur fermeture du socket");
204 if (module == null || socket == null)
209 @Override
public void run()
213 if(socket.isConnected())
215 Log.d(TAG,
"Envoi vers le module " + module.getName() +
" | Adresse : " + module.getAddress() +
" | Données : " + donnees);
216 fluxEnvoi.write(donnees.getBytes());
221 Log.e(TAG,
"Erreur envoi socket");
232 return module.getName();
250 @Override
public void run()
252 Log.d(TAG,
"Démarrage du thread Réception pour le module " + module.getName() +
" | Adresse : " + module.getAddress());
253 BufferedReader reception =
new BufferedReader(
new InputStreamReader(fluxReception));
259 if (socket.isConnected())
261 trame = reception.readLine();
262 if(trame.length() > 0)
264 Log.d(TAG,
"Trame : " + trame);
265 Message message =
new Message();
268 handlerIHM.sendMessage(message);
272 catch (IOException e)
275 Message message =
new Message();
277 message.obj = module.getName();
278 handlerIHM.sendMessage(message);
286 catch (InterruptedException e)
291 Log.d(TAG,
"Arrêt du thread Réception pour le module " + module.getName() +
" | Adresse : " + module.getAddress());
308 catch (InterruptedException e)
boolean rechercherAppareil(String idAppareil)
Méthode permettant de rechercher un appareil à partir d'une adresse.
boolean creerSocket()
Méthode permettant de créer une socket à partir d'un appareil.
static final int RECEPTION_TRAME
static final int CONNEXION_SOCKET
void arreter()
Méthode qui permet d'arrêter lire les données entrantes.
LiaisonBluetooth(String nomAppareil, Handler handlerIHM)
Constructeur de la classe LiasonBluetooth.
void envoyer(String donnees)
Méthode pour envoyer des données.
static BluetoothAdapter bluetoothAdapter
static final int CREATION_SOCKET
void run()
Méthode qui permet de lire les données entrantes.
void deconnecter()
Méthode pour fermer la connexion avec un appareil.
void connecter()
Méthode pour ouvrir la connexion avec un appareil.
Permet de gérer la communication bluetooth.
static final int DECONNEXION_SOCKET
void activerBluetooth()
Méthode permettant d'activer le bluetooth s'il ne l'est pas.
InputStream fluxReception