블루투스 구현을 하고 있는데 사용하고 있는 코드가 예전버전이라 그런지 연결은 되는데 바로 연결이 끊깁니다. 오류 로그는
E/BluetoothService: disconnected
java.io.IOException: socket closed
at android.net.LocalSocketImpl$SocketInputStream.read(LocalSocketImpl.java:104)
at android.bluetooth.BluetoothSocket.read(BluetoothSocket.java:640)
at android.bluetooth.BluetoothInputStream.read(BluetoothInputStream.java:96)
at java.io.InputStream.read(InputStream.java:101)
at com.example.line.rc_controller.Pairing_blue$ConnectedThread.run(Pairing_blue.java:371)
이고 코드를 짜는데 사용하는 예제 소스는 구글에 돌아다니고 있는 BluetoothChat라는 예제를 사용하고 있습니다.(좀 예전 코드 같긴 하지만....)
private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInstream;
private final OutputStream mmOutStream;
public ConnectedThread(BluetoothSocket socket) {
Log.d(TAG, "create ConnectedThread");
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
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() {
Log.i(TAG, "BEGIN mConnectedThread");
byte[] buffer = new byte[1024];
int bytes;
while (true) {
try {
bytes = mmInstream.read(buffer);
}catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
break;
}
}
}
public void write(byte[] buffer) {
try {
mmOutStream.write(buffer);
} catch (IOException e) {
Log.e(TAG, "Exception during write", e);
}
}
public void cancel() {
try {
mmSocket.close();
}catch (IOException e) {
Log.e(TAG, "close() of connect socket failed", e);
}
}
}
오류가 나는 소스부분입니다. 에러가 나는 부분의 코드를 확인해 보니
bytes = mmInstream.read(buffer);
부분에서 나는것 같은데 무엇이 잘못된 건지 잘 모르겠습니다. 해결방법을 알려주시면 감사하겠습니다.