Android는 중심 역할로 저전력 블루투스 (BLE)를 위한 플랫폼 지원을 기본으로 제공하고, 앱이 기기 검색, 서비스 쿼리, 정보 전송에 사용할 수 있는 API를 제공합니다.
일반적인 사용 사례의 예시는 다음과 같습니다.
- 근처 기기 사이에서 소량의 데이터를 전송합니다.
- 근접 센서와 상호작용하여 사용자의 현재 위치를 기반으로 맞춤설정된 환경 제공
기본 블루투스와 달리 BLE는 전력 소비량이 크게 감소하도록 설계되었습니다. 이를 통해 앱은 근접 센서, 심박수 모니터, 피트니스 기기와 같이 더 엄격한 전력 요구사항이 있는 BLE 기기와 통신할 수 있습니다.
주의: 사용자가 BLE를 사용하여 기기를 다른 기기와 페어링하면 사용자 기기의 모든 앱에서 두 기기 간에 통신하는 데이터에 액세스할 수 있습니다.
따라서 앱에서 민감한 정보를 캡처하는 경우 앱 레이어 보안을 구현하여 해당 데이터의 개인 정보를 보호해야 합니다.
기본사항
BLE 지원 기기가 서로 데이터를 전송하려면 먼저 통신 채널을 형성해야 합니다. 블루투스 LE API를 사용하려면 매니페스트 파일에서 여러 권한을 선언해야 합니다. 앱에서 블루투스를 사용할 권한이 있으면 앱은 BluetoothAdapter
에 액세스하여 기기에서 블루투스를 사용할 수 있는지 확인해야 합니다. 블루투스를 사용할 수 있는 경우 기기는 근처 BLE 기기를 검색합니다.
기기를 찾으면 BLE 기기의 GATT 서버에 연결하여 BLE 기기의 기능을 탐색합니다.
연결되면 사용 가능한 서비스 및 특성에 따라 연결된 기기를 통해 데이터를 전송할 수 있습니다.
주요 용어 및 개념
다음은 주요 BLE 용어와 개념을 요약한 것입니다.
- 일반 속성 프로필 (GATT)
- GATT 프로필은 BLE 링크를 통해 '속성'이라고 하는 짧은 데이터를 주고받기 위한 일반 사양입니다. 현재의 모든 BLE 애플리케이션 프로필은 GATT를 기반으로 합니다. 자세한 내용은 GitHub의 Android BluetoothLeGatt 샘플을 검토하세요.
- 프로필
- 블루투스 SIG는 BLE 기기의 여러 프로필을 정의합니다. 프로필은 기기가 특정 애플리케이션에서 작동하는 방식에 관한 사양입니다. 기기는 프로필을 두 개 이상 구현할 수 있습니다. 예를 들어, 기기에는 심박수 모니터와 배터리 잔량 감지기가 포함될 수 있습니다.
- 속성 프로토콜 (ATT)
- GATT는 속성 프로토콜 (ATT)을 기반으로 구축됩니다. 이를 GATT/ATT라고도 합니다 ATT는 저전력 블루투스 기기에서 실행되도록 최적화됩니다. 이를 위해 가능한 한 적은 수의 바이트를 사용합니다. 각 속성은 정보를 고유하게 식별하는 데 사용되는 문자열 ID의 표준화된 128비트 형식인 범용 고유 식별자 (UUID)로 고유하게 식별됩니다. ATT에서 전송되는 속성은 특성 및 서비스 형식으로 지정됩니다.
- 특성
- 특성에는 단일 값과 특성 값을 설명하는 0~n 설명어가 포함됩니다. 특성은 클래스와 유사한 유형으로 생각할 수 있습니다.
- 설명어
- 설명어는 특성 값을 설명하도록 정의된 속성입니다. 예를 들어 설명어는 사람이 읽을 수 있는 설명, 특성 값의 허용 범위 또는 특성 값과 관련된 측정 단위를 지정할 수 있습니다.
- 서비스
- 서비스는 특성의 모음입니다. 예를 들어 '심박수 측정'과 같은 특성이 포함된 '심박수 모니터'라는 서비스를 만들 수 있습니다. 기존 GATT 기반 프로필과 서비스 목록은 bluetooth.org에서 확인할 수 있습니다.
역할과 책임
기기가 저전력 블루투스 기기와 상호작용할 때 다음과 같은 역할과 책임이 적용됩니다.
중앙 기기와 주변기기. 이는 저전력 블루투스 자체에 적용됩니다. 중앙 역할의 기기는 스캔하여 광고를 찾고, 주변기기 역할이 있는 기기는 광고를 만듭니다.
GATT 서버 및 GATT 클라이언트 비교 이것은 연결이 설정된 후 두 기기가 서로 통신하는 방식을 결정합니다. 차이점을 이해하기 위해 Android 휴대전화와 BLE 기기인 활동 추적기가 있다고 가정해 보겠습니다. 스마트폰은 중심 역할을 지원하고 활동 추적기는 주변기기 역할을 지원합니다. 저전력 블루투스 연결을 설정하려면 각각 하나씩 필요합니다. 주변기기만 지원하는 두 가지는 서로 통신할 수 없으며 중앙 기기만 지원하는 두 가지도 서로 통신할 수 없습니다.
휴대전화와 활동 추적기가 연결되면 GATT 메타데이터를 서로 전송하기 시작합니다. 전송하는 데이터의 종류에 따라 둘 중 하나가 서버 역할을 할 수 있습니다. 예를 들어 활동 추적기가 센서 데이터를 휴대전화에 보고하려는 경우 활동 추적기가 서버 역할을 하는 것이 적절할 수 있습니다. 활동 추적기가 휴대전화로부터 업데이트를 수신하려는 경우 휴대전화가 서버로 작동하는 것이 좋습니다.
이 주제에 사용된 예에서는 Android 기기에서 실행되는 앱이 GATT 클라이언트입니다. 앱은 심박수 프로필을 지원하는 BLE 심박수 모니터인 GATT 서버에서 데이터를 가져옵니다.
또는 GATT 서버 역할을 하도록 앱을 설계할 수 있습니다. 자세한 내용은 BluetoothGattServer
를 참고하세요.