블루투스 챗 예제

Token2Shell이 Windows IoT 장치에서 사용자 지정 Bluetooth 서비스에 연결하려면 먼저 Token2Shell이 실행되는 PC와 페어링해야 합니다. 우리는 ChatServer의 인스턴스를 만들고 클라이언트연결(), clientDiconnected() 및 messageReceived() 신호에 응답합니다. BluetoothService 유형은 서비스 이름 및 설명과 같은 발견된 채팅 서버의 세부 정보와 채팅 서버를 제공하는 Bluetooth 장치의 이름 및 주소를 캡슐화합니다. 연결을 설정하기 위해 Bluetooth소켓으로 전달됩니다. 그런 다음 PC에서 페어링을 시작할 때 설정한 암호를 입력할 수 있는 [Windows 장치 포털] » [Bluetooth] 페이지에 팝업 창이 표시됩니다. 모든 블루투스 활동에는 Bluetooth어댑터가 필요합니다. BluetoothAdapter를 얻으려면 정적 getDefaultAdapter() 메서드를 호출합니다. 이렇게 하면 장치의 자체 블루투스 어댑터(블루투스 라디오)를 나타내는 Bluetooth 어댑터가 반환됩니다. 전체 시스템에 하나의 Bluetooth 어댑터가 있으며 응용 프로그램이 이 개체를 사용하여 상호 작용할 수 있습니다. getDefaultAdapter()가 null을 반환하면 장치가 블루투스를 지원하지 않습니다. 예: Bluetooth를 사용하도록 설정하면 활동이 onActivityResult() 콜백에서 RESULT_OK 결과 코드를 받습니다. 오류로 인해 Bluetooth를 사용하지 않았거나 사용자가 “아니오”로 응답한 경우 결과 코드는 RESULT_CANCELED입니다. 이 페이지는 클래식 블루투스에 초점을 맞추고 있습니다.

클래식 블루투스는 스트리밍 및 안드로이드 장치 간의 통신을 포함 더 많은 배터리 집약적 인 작업에 적합한 선택입니다. 전력이 낮은 Bluetooth 장치의 경우 Android 4.3(API 수준 18)에서 Bluetooth 저에너지에 대한 API 지원을 소개합니다. 자세한 내용은 블루투스 저에너지를 참조하십시오. 응용 프로그램에서 Bluetooth 기능을 사용하려면 두 개의 권한을 선언해야 합니다. 이들 중 첫 번째는 블루투스입니다. 연결 요청, 연결 수락 및 데이터 전송과 같은 Bluetooth 통신을 수행하려면 이 권한이 필요합니다. 두 장치 간에 연결을 만들려면 한 장치가 서버 소켓을 열어야 하고 다른 장치는 서버 장치의 MAC 주소를 사용하여 연결을 시작해야 하기 때문에 서버 측 메커니즘과 클라이언트 측 메커니즘을 모두 구현해야 합니다. 서버 장치와 클라이언트 장치는 각각 다른 방법으로 필요한 BluetoothSocket을 얻습니다.

들어오는 연결이 수락되면 서버는 소켓 정보를 수신합니다. 클라이언트는 서버에 RFCOMM 채널을 열 때 소켓 정보를 제공합니다. 스레드의 cancel() 방법을 사용하면 BluetoothSocket을 닫아 언제든지 연결을 종료할 수 있습니다. Bluetooth 연결을 사용하여 완료되면 이 메서드를 항상 호출해야 합니다. Android 3.0부터 Bluetooth API에는 블루투스 프로필 작업에 대한 지원이 포함되어 있습니다. 블루투스 프로파일은 장치 간의 블루투스 기반 통신을 위한 무선 인터페이스 사양입니다. 핸즈프리 프로필을 예로 들 수 있습니다. 휴대폰이 무선 헤드셋에 연결하려면 두 장치 모두 핸즈프리 프로필을 지원해야 합니다. Android 4.0(API 수준 14)은 블루투스 건강 장치 프로필(HDP)에 대한 지원을 소개합니다. 이를 통해 블루투스를 사용하여 심박수 모니터, 혈액 측정기, 온도계 및 저울과 같은 Bluetooth를 지원하는 건강 장치와 통신하는 응용 프로그램을 만들 수 있습니다. 블루투스 건강 API는 클래스 블루투스 건강, 블루투스 건강 콜백, 및 블루투스 헬스 앱 구성을 포함, 키 클래스 및 인터페이스에 설명되어 있는. Bluetooth소켓을 사용하면 항상 close()로 전화하십시오.

이렇게 하면 연결된 소켓이 즉시 닫히고 관련된 모든 내부 리소스가 해제됩니다. 클라이언트는 새 QBluetoothSocket을 만들고 원격 서비스 매개 변수에 의해 설명 된 원격 서비스에 연결 합니다. 슬롯은 레디리드(), 커넥티드() 및 연결이 끊어진() 신호에 연결됩니다. 메시지는 sendMessage() 신호를 내보내서 ChatServer 및 ChatClient 인스턴스를 통해 모든 원격 장치로 전송됩니다.