Android Se connecter à un périphérique Bluetooth


Exemple

Après avoir obtenu BluetoothDevice, vous pouvez communiquer avec lui. Ce type de communication est effectué en utilisant des flux d'entrée / sortie de socket:

Voici les étapes de base pour l'établissement de la communication Bluetooth:

1) Initialiser socket:

 private BluetoothSocket _socket;
 //...
 public InitializeSocket(BluetoothDevice device){
    try {
        _socket = device.createRfcommSocketToServiceRecord(<Your app UDID>);
    } catch (IOException e) {
        //Error
    }
  }

2) Connectez-vous à la prise:

try {
    _socket.connect();
} catch (IOException connEx) {
    try {
        _socket.close();
    } catch (IOException closeException) {
        //Error
    }
}

if (_socket != null && _socket.isConnected()) {
    //Socket is connected, now we can obtain our IO streams
}

3) Obtention des flux d'entrée \ sortie socket

private InputStream _inStream;
private OutputStream _outStream;
//....
try {
    _inStream = _socket.getInputStream();
    _outStream =  _socket.getOutputStream();
} catch (IOException e) {
   //Error
}

Flux d'entrée - Utilisé comme canal de données entrant (recevoir des données du périphérique connecté)

Flux de sortie - Utilisé comme canal de données sortant (envoi de données au périphérique connecté)

Après avoir terminé la 3ème étape, nous pouvons recevoir et envoyer des données entre les deux appareils en utilisant des flux précédemment initialisés:

1) Réception de données (lecture depuis le flux d'entrée du socket)

byte[] buffer = new byte[1024];  // buffer (our data)
int bytesCount; // amount of read bytes

while (true) {
    try {
        //reading data from input stream
        bytesCount = _inStream.read(buffer);
        if(buffer != null && bytesCount > 0)
        {
            //Parse received bytes
        }
    } catch (IOException e) {
        //Error
    }
}

2) Envoi de données (écriture dans le flux de sortie)

public void write(byte[] bytes) {
    try {
        _outStream.write(bytes);
    } catch (IOException e) {
        //Error
    }
}
  • Bien entendu, les fonctionnalités de connexion, de lecture et d’écriture doivent être effectuées dans un thread dédié.
  • Les sockets et les objets Stream doivent être