Page 96 - 2020학년도 MDP과제발표회 자료집 (통신과) (3)
P. 96
Toast.makeText(getApplicationContext(), " 데이터 전송중 오류가 발생",
Toast.LENGTH_LONG).show();
finish(); // App 종료
}
}
// connectToSelectedDevice() : 원격 장치와 연결하는 과정을 나타냄.
// 실제 데이터 송수신을 위해서는 소켓으로부터 입출력 스트림을 얻고 입출력 스트림을
이용하여 이루어 진다.
void connectToSelectedDevice(String selectedDeviceName) {
// BluetoothDevice 원격 블루투스 기기를 나타냄.
mRemoteDevie = getDeviceFromBondedList(selectedDeviceName);
// java.util.UUID.fromString : 자바에서 중복되지 않는 Unique 키 생성.
UUID uuid =
java.util.UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
try {
// 소켓 생성, RFCOMM 채널을 통한 연결.
// createRfcommSocketToServiceRecord(uuid) : 이 함수를 사용하여 원격 블루
투스 장치와
// 통신할 수 있는 소켓을 생성함.
// 이 메소드가 성공하면 스마트폰과 페어링 된 디바이스간 통신 채널에 대응하는
// BluetoothSocket 오브젝트를 리턴함.
mSocket = mRemoteDevie.createRfcommSocketToServiceRecord(uuid);
mSocket.connect(); // 소켓이 생성 되면 connect() 함수를 호출함으로써 두기기
의 연결은 완료된다.
// 데이터 송수신을 위한 스트림 얻기.
// BluetoothSocket 오브젝트는 두개의 Stream 을 제공한다.
// 1. 데이터를 보내기 위한 OutputStrem
// 2. 데이터를 받기 위한 InputStream
mOutputStream = mSocket.getOutputStream();
mInputStream = mSocket.getInputStream();
receiveData();
} catch (Exception e) { // 블루투스 연결 중 오류 발생
Toast.makeText(getApplicationContext(),
" 블루투스 연결 중 오류가 발생했습니다.", Toast.LENGTH_LONG).show();
finish(); // App 종료
}
}
- 99 -