Я реализую этот метод получения данных по Bluetooth по этой ссылке здесь , в частности, в классе Serial Socket у нас есть метод:
void write(byte[] data) throws IOException {
if (!connected)
throw new IOException("not connected");
socket.getOutputStream().write(data);
}
@Override
public void run() { // connect & read
try {
socket = device.createRfcommSocketToServiceRecord(BLUETOOTH_SPP);
socket.connect();
if(listener != null)
listener.onSerialConnect();
} catch (Exception e) {
if(listener != null)
listener.onSerialConnectError(e);
try {
socket.close();
} catch (Exception ignored) {
}
socket = null;
return;
}
connected = true;
try {
byte[] buffer = new byte[1024];
int len;
//noinspection InfiniteLoopStatement
while (true) {
len = socket.getInputStream().read(buffer);
byte[] data = Arrays.copyOf(buffer, len);
if(listener != null)
listener.onSerialRead(data);
}
} catch (Exception e) {
connected = false;
if (listener != null)
listener.onSerialIoError(e);
try {
socket.close();
} catch (Exception ignored) {
}
socket = null;
}
}
Где метод run разделяется данные следующим образом: если вы отправляете «Hello world», он делает «H», а затем возвращается к «ello World», всегда отделяя первый di git от других, мне нужны полные данные, потому что если вы используете Метод setText для отображения данных будет отображать только то, что будет позже, а метод добавления у меня не работает.