블루투스 개요

Android 플랫폼에는 블루투스 네트워크 스택 지원 기능이 포함되어 있어 기기가 다른 블루투스 기기와 무선으로 데이터를 교환할 수 있습니다. 앱 프레임워크는 블루투스 API를 통해 블루투스 기능에 액세스할 수 있는 권한을 제공합니다. 이러한 API를 통해 앱은 다른 블루투스 기기에 연결하여 지점 간 무선 기능 및 멀티 포인트 무선 기능을 사용할 수 있습니다.

블루투스 API를 사용하여 앱은 다음 작업을 할 수 있습니다.

  • 다른 Bluetooth 기기를 검색합니다.
  • 페어링된 블루투스 기기의 로컬 블루투스 어댑터를 쿼리합니다.
  • RFCOMM 채널을 설정합니다.
  • 서비스 검색을 통해 다른 기기에 연결
  • 다른 기기와 데이터를 주고받습니다.
  • 여러 연결을 관리합니다.

이번 주제에서는 기본 블루투스에 중점을 둡니다. 기본 블루투스는 기기 간 스트리밍 및 통신 등 배터리를 많이 사용하는 작업에 적합합니다. 저전력 요구사항이 있는 블루투스 기기의 경우 저전력 블루투스 연결을 사용하는 것이 좋습니다.

이 문서에서는 다양한 블루투스 프로필을 설명하고 블루투스 API를 사용하여 블루투스를 사용하여 통신하는 데 필요한 네 가지 주요 작업을 실행하는 방법을 설명합니다.

  • Bluetooth를 설정하는 중입니다.
  • 근처에 페어링되었거나 사용 가능한 기기를 찾습니다.
  • 기기 연결.
  • 기기 간 데이터 전송

블루투스 API 사용 데모는 블루투스 채팅 샘플 앱을 참고하세요.

기본사항

블루투스 지원 기기가 서로 데이터를 전송하려면 먼저 페어링 프로세스를 사용하여 통신 채널을 형성해야 합니다. 한 기기는 검색 가능한 기기가 수신되는 연결 요청에 사용할 수 있게 됩니다. 다른 기기가 서비스 검색 프로세스를 사용하여 검색 가능한 기기를 찾습니다. 검색 가능한 기기가 페어링 요청을 수락하면 두 기기가 보안 키를 교환하는 결합 프로세스를 완료합니다. 기기는 나중에 사용할 수 있도록 이러한 키를 캐시합니다. 페어링 및 결합 프로세스가 완료되면 두 기기가 정보를 교환합니다. 세션이 완료되면 페어링 요청을 시작한 기기가 검색 가능한 기기에 연결한 채널을 해제합니다. 그러나 두 기기는 연결된 상태로 유지되므로 서로의 범위 내에 있고 두 기기 모두 연결을 삭제하지 않은 경우 향후 세션 중에 자동으로 다시 연결할 수 있습니다.

블루투스 API를 사용하려면 매니페스트 파일에서 여러 권한을 선언해야 합니다. 앱에서 블루투스를 사용할 권한이 있으면 앱은 BluetoothAdapter에 액세스하여 기기에서 블루투스를 사용할 수 있는지 확인해야 합니다. Bluetooth를 사용할 수 있는 경우, 연결하려면 다음 세 단계를 따르세요.

특정 기기는 제공하는 데이터를 선언하는 특정 블루투스 프로필을 사용합니다.

기준 클래스와 인터페이스

모든 블루투스 API는 android.bluetooth 패키지에서 사용할 수 있습니다. 블루투스 연결을 만드는 데 필요한 클래스와 인터페이스는 다음과 같습니다.

BluetoothAdapter
로컬 블루투스 어댑터 (블루투스 라디오)를 나타냅니다. BluetoothAdapter는 모든 블루투스 상호작용의 진입점입니다. 이를 통해 다른 블루투스 기기를 검색하고, 연결된(페어링된) 기기 목록을 쿼리하고, 알려진 MAC 주소를 사용하여 BluetoothDevice를 인스턴스화하고, 다른 기기의 통신을 수신 대기하는 BluetoothServerSocket를 만들 수 있습니다.
BluetoothDevice
원격 블루투스 기기를 나타냅니다. BluetoothSocket를 통해 원격 기기와의 연결을 요청하거나 이름, 주소, 클래스, 결합 상태와 같은 기기 정보를 쿼리하는 데 사용합니다.
BluetoothSocket
블루투스 소켓 (TCP Socket와 유사함)의 인터페이스를 나타냅니다. 이는 앱이 InputStreamOutputStream를 사용하여 다른 블루투스 기기와 데이터를 교환할 수 있게 하는 연결 지점입니다.
BluetoothServerSocket
수신 요청을 수신 대기하는 열린 서버 소켓 (TCP ServerSocket와 유사)을 나타냅니다. 두 기기를 연결하려면 한 기기가 이 클래스를 사용하여 서버 소켓을 열어야 합니다. 원격 블루투스 기기가 이 기기로 연결을 요청하면 해당 기기는 연결을 수락한 다음 연결된 BluetoothSocket를 반환합니다.
BluetoothClass
블루투스 기기의 일반적인 특징과 기능을 설명합니다. 이는 기기의 클래스와 서비스를 정의하는 읽기 전용 속성 집합입니다. 이 정보는 기기 유형과 관련된 유용한 힌트를 제공하지만, 이 클래스의 속성이 기기에서 지원하는 모든 블루투스 프로필과 서비스를 설명하지는 않을 수도 있습니다.
BluetoothProfile
블루투스 프로필을 나타내는 인터페이스입니다. 블루투스 프로필은 기기 간의 블루투스 기반 통신을 위한 무선 인터페이스 사양입니다. 일례로 Hands-Free 프로필이 있습니다. 프로필에 관한 자세한 내용은 블루투스 프로필을 참고하세요.
BluetoothHeadset
블루투스 헤드셋을 휴대전화와 함께 사용할 수 있도록 지원합니다. 여기에는 블루투스 헤드셋 프로필과 핸즈프리 (v1.5) 프로필이 모두 포함됩니다.
BluetoothA2dp
고급 오디오 배포 프로필 (A2DP)을 사용하여 블루투스 연결을 통해 한 기기에서 다른 기기로 고품질 오디오를 스트리밍할 수 있는 방법을 정의합니다.
BluetoothHealth
블루투스 서비스를 제어하는 의료 기기 프로필 프록시를 나타냅니다.
BluetoothHealthCallback
BluetoothHealth 콜백을 구현하는 데 사용하는 추상 클래스입니다. 앱 등록 상태 및 블루투스 채널 상태의 변경사항에 관한 업데이트를 수신하려면 이 클래스를 확장하고 콜백 메서드를 구현해야 합니다.
BluetoothHealthAppConfiguration
Bluetooth Health 서드 파티 앱이 원격 블루투스 의료 기기와 통신하기 위해 등록하는 앱 구성을 나타냅니다.
BluetoothProfile.ServiceListener
특정 프로필을 실행하는 내부 서비스에 연결되었거나 연결 해제되었을 때 BluetoothProfile IPC (프로세스 간 통신) 클라이언트에 알리는 인터페이스입니다.