Как принимать данные по Bluetooth?

Для принятия данных по Bluetooth в Android вы можете использовать BluetoothAdapter и BluetoothSocket. Вот пошаговая инструкция, как это сделать:

Шаг 1: Проверьте наличие разрешения Bluetooth в манифесте приложения. Добавьте следующую строку в блок <manifest>:

<uses-permission android:name="android.permission.BLUETOOTH"/>

Шаг 2: Включите Bluetooth на устройстве и получите экземпляр BluetoothAdapter:

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

Шаг 3: Проверьте, подключено ли устройство Bluetooth, и запросите разрешение у пользователя, если оно не включено:

if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled()) {
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}

Шаг 4: Найдите устройство Bluetooth, с которым хотите установить соединение, используя BluetoothDevice:

BluetoothDevice device = bluetoothAdapter.getRemoteDevice(deviceAddress);

Шаг 5: Установите соединение с устройством Bluetooth, создав экземпляр BluetoothSocket:

BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID);
socket.connect();

Шаг 6: Прочтите данные, полученные по Bluetooth, с помощью InputStream:

InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int bytesRead = inputStream.read(buffer);
String receivedData = new String(buffer, 0, bytesRead);

Вы также можете использовать BufferedReader для чтения данных по строкам:

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line = reader.readLine();

Шаг 7: Закройте соединение и освободите ресурсы после чтения данных:

inputStream.close();
socket.close();

Убедитесь, что вы выполняете эти действия в отдельном потоке, а не в основном UI потоке, чтобы не блокировать пользовательский интерфейс.

Надеюсь, эта информация была полезной. Удачи в вашем проекте!