// Importation des bibliothèques nécessaires
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;
// Classe principale de l'application
public class MainActivity extends AppCompatActivity {
private BluetoothAdapter mBluetoothAdapter;
private BluetoothSocket mmSocket;
private BluetoothDevice mmDevice;
private OutputStream mmOutputStream;
private InputStream mmInputStream;
private Thread workerThread;
private byte[] readBuffer;
private int readBufferPosition;
private volatile boolean stopWorker;
// Méthode appelée lorsque l'application est lancée
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialisation de l'adaptateur Bluetooth
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
// Vérification de la disponibilité de Bluetooth sur l'appareil
if (mBluetoothAdapter == null) {
// Afficher un message d'erreur si Bluetooth n'est pas disponible
Toast.makeText(this, "Bluetooth non disponible",
Toast.LENGTH_SHORT).show();
return;
}
// Activation de Bluetooth si nécessaire
if (!mBluetoothAdapter.isEnabled()) {
Intent enableBluetooth = new
Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBluetooth, 0);
}
// Connexion à la carte Arduino via Bluetooth
try {
// Obtention de l'adresse MAC de la carte Arduino
String macAddress = "XX:XX:XX:XX:XX:XX"; // remplacez par l'adresse MAC
de votre carte Arduino
mmDevice = mBluetoothAdapter.getRemoteDevice(macAddress);
// Création d'un socket Bluetooth pour la connexion
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
mmSocket.connect();
mmOutputStream = mmSocket.getOutputStream();
mmInputStream = mmSocket.getInputStream();
// Initialisation du thread pour la réception des données
beginListenForData();
} catch (IOException e) {
// Afficher un message d'erreur si la connexion échoue
// Méthode pour envoyer des données à la carte Arduino
public void sendData(String data) {
try {
mmOutputStream.write(data.getBytes());
} catch (IOException e) {
// Afficher un message d'erreur si l'envoi de données échoue
Toast.makeText(this, "L'envoi de données a échoué",
Toast.LENGTH_SHORT).show();
}
}
// Méthode pour recevoir des données de la carte Arduino
void beginListenForData() {
final Handler handler = new Handler();
final byte delimiter = 10; // Caractère de fin de ligne
stopWorker = false;
readBufferPosition = 0;
readBuffer = new byte[1024];
workerThread = new Thread(new Runnable() {
public void run() {
while (!Thread.currentThread().isInterrupted() && !stopWorker)
{
try {
int bytesAvailable = mmInputStream.available();
if (bytesAvailable > 0) {
byte[] packetBytes = new byte[bytesAvailable];
mmInputStream.read(packetBytes);
for (int i = 0; i < bytesAvailable; i++) {
byte b = packetBytes[i];
if (b == delimiter) {
byte[] encodedBytes = new
byte[readBufferPosition];
System.arraycopy(readBuffer, 0,
encodedBytes, 0, encodedBytes.length);
final String data = new
String(encodedBytes, "US-ASCII");
readBufferPosition = 0;
handler.post(new Runnable() {
public void run() {
// Traitement des données reçues
ici
// Par exemple, affichage des
données dans un TextView
TextView textView =
findViewById(R.id.textView);
textView.setText(data);
}
});
} else {
readBuffer[readBufferPosition++] = b;
}
}
}
} catch (IOException e) {
stopWorker = true;
}
}
}
});
workerThread.start();
}
}