안드로이드 개발 질문/답변
(글 수 45,052)
Bluetooth 질문 드립니다.
Bluetooth Read() 함수 호출시 간헐적으로 죽는 현상이 발생하는데요.
DDMS에는 Signal 11 이라는 메세지를 뿌리며 죽어 버림니다.
private class ReceiveThread extends Thread {
public void run() {
byte[] buffer = new byte[2048];
int length = 0;
OSPLog.writeInfoADB("Data Receive Ready", OSPLog.PREFIX_OSPBLUETOOTH);
while (true) {
try {
OSPLog.writeInfoADB("RECV Start!", "");
if ( m_InputStream != null )
length = m_InputStream.read(buffer, 0, buffer.length);
OSPLog.writeInfoADB("RECV READ!", "");
OSPClassMgr.getOSPJNIInterface().OSPBtReceived(buffer, length);
} catch (IOException e) {
break;
}
}
}
}
위 코드를 보시면, RECV Start!! 까지 찍히고 죽는걸로 봐서 Read() 함수를 호출하면서 죽는거 같은데..
도무지 왜 죽는지 모르겠네요; 매번 발생 하는게 아니라 간헐적으로 발생하며 Server쪽에서 Data를 쉬지 않고 전송 할때 더 비번히 발생 합니다.
아무리 구글링 해도 안나오고..;; 도와주세요;; 죽을 이유가 없는데..
참고로 아래 JNI 콜하는 함수에서는 바이트 배열을 복사해서 사용 하기때문에 별 문제가 없어요.
Bluetooth Read() 함수 호출시 간헐적으로 죽는 현상이 발생하는데요.
DDMS에는 Signal 11 이라는 메세지를 뿌리며 죽어 버림니다.
private class ReceiveThread extends Thread {
public void run() {
byte[] buffer = new byte[2048];
int length = 0;
OSPLog.writeInfoADB("Data Receive Ready", OSPLog.PREFIX_OSPBLUETOOTH);
while (true) {
try {
OSPLog.writeInfoADB("RECV Start!", "");
if ( m_InputStream != null )
length = m_InputStream.read(buffer, 0, buffer.length);
OSPLog.writeInfoADB("RECV READ!", "");
OSPClassMgr.getOSPJNIInterface().OSPBtReceived(buffer, length);
} catch (IOException e) {
break;
}
}
}
}
위 코드를 보시면, RECV Start!! 까지 찍히고 죽는걸로 봐서 Read() 함수를 호출하면서 죽는거 같은데..
도무지 왜 죽는지 모르겠네요; 매번 발생 하는게 아니라 간헐적으로 발생하며 Server쪽에서 Data를 쉬지 않고 전송 할때 더 비번히 발생 합니다.
아무리 구글링 해도 안나오고..;; 도와주세요;; 죽을 이유가 없는데..
참고로 아래 JNI 콜하는 함수에서는 바이트 배열을 복사해서 사용 하기때문에 별 문제가 없어요.