Page 202 - 3-1
P. 202
mSocket.connect(); // 소켓이 생성 되면 connect() 함수를 호출함으로써 두기기의 연
결은 완료된다.
// 데이터 송수신을 위한 스트림 얻기.
// BluetoothSocket 오브젝트는 두개의 Stream 을 제공한다.
// 1. 데이터를 보내기 위한 OutputStrem
// 2. 데이터를 받기 위한 InputStream
mOutputStream = mSocket.getOutputStream();
mInputStream = mSocket.getInputStream();
// 데이터 수신 준비.
beginListenForData();
onConnected();
} catch (Exception e) { // 블루투스 연결 중 오류 발생
Toast.makeText(MainActivity.getContext(),
" 블루투스 연결 중 오류가 발생했습니다.", Toast.LENGTH_LONG).show();
//finish(); // App 종료
}
}
// 데이터 수신 쓰레드 사용 수신된 메시지를 계속 검사함( )
void beginListenForData() {
final Handler handler = new Handler();
readBufferPosition = 0; // 버퍼 내 수신 문자 저장 위치.
readBuffer = new byte[1024]; // 수신 버퍼.
// 문자열 수신 쓰레드.
mWorkerThread = new Thread(new Runnable() {
@Override
public void run() {
// interrupt() 메소드를 이용 스레드를 종료시키는 예제이다.
// interrupt() 메소드는 하던 일을 멈추는 메소드이다.
// isInterrupted() 메소드를 사용하여 멈추었을 경우 반복문을 나가서 스레드가 종
료하게 된다.
while (!Thread.currentThread().isInterrupted()) {
try {
// InputStream.available() : 다른 스레드에서 blocking 하기 전까지 읽은
수 있는 문자열 개수를 반환함.
- 202 -