현재 SPP를 bluetoothchat로 구현해놓은 상태인데요...
연결된 디바이스에서 데이터를
byte를 78byte를 보내니 안드로이드 APP에서 한번에 다 받을때가 있고,
나눠서 받는데 나눠서 받는것도 마음대로 받더라구요...
찾아보니 spp 특성상 프레임의 경계가 없어서 그렇다고 하던데...
이럴경우 제 생각에서는 endpoint를 주어서 endpoint를 받을때 까지 처리하면 될거같은데..
아래와 유사하게 구성하니 데이터가 제대로 받지 않더라구요...
다른 방법으로 해야하나요???
상대에서는 e2 00 01 04 ~~~이런식으로 데이터를 52 78 44 6 bytes 씩 각각 보내에서 앱에서 받습니다.
제발 도움 부탁드리겠습니다...
private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream;
public ConnectedThread(BluetoothSocket socket) {
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
// Get the BluetoothSocket input and output streams
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) {
Log.e(TAG, "temp sockets not created", e);
}
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
public void run() {
byte[] buffer = new byte[78]; //data길이만큼
int bytes = 0;
while (true) {
try {
while (mmInStream.read(buffer)) {
bytes= mmInStream.read(buffer);
Log.i(TAG, "length "+ bytes);
if (mmInStream.available() == 0)
break;
}
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
prevaluedelete=false;
connectionLost();
break;
}
}
}