///
Search
🏔️

05.(220516)(Kotlin Find BLE Devices)안드로이드 공식 개발 문서를 통한 상세 코드리뷰

안드로이드는 저전력 블루투스(BLE)에 대한 기본 플랫폼 지원을 제공하며 앱이 장치 검색, 서비스 쿼리, 정보 전송에 사용할 수 있는 API를 제공하고 있습니다.
주변 장치 간에 소량의 데이터 전송을 위한 사례로 쓰이고 있습니다.
근접 센서와 상호 작용하여 사용자에게 현재 위치에 따라 사용자 정의 경험을 제공합니다.
기존의 블루투스와는 달리 BLE는 상당히 낮은 전력 소모를 위해 설계되었다.
이를 통해 앱은 근접 센서, 심박수 모니터 및 피트니스 장치와 같이 전력 요구 사항이 엄격한 BLE 장치와 통신할 수 있습니다.

주의할 점

사용자가 BLE을 사용하여 장치를 다른 장치와 페어링하면 두 장치 간에 통신되는 데이터는 사용자 장치의 모든 앱에서 액세스할 수 있습니다.
이러한 이유로, 당신의 앱이 중요한 데이터를 캡처하는 경우, 당신은 그 데이터의 개인 정보를 보호하기 위해 앱 계층 보안을 구현해야 한다.

기본 사항

BLE 지원 장치가 서로 간에 데이터를 전송하려면 먼저 통신 채널을 구성해야 합니다. Bluetooth LE API를 사용하려면 매니페스트 파일에 몇 가지 권한을 선언해야 합니다.
앱에 Bluetooth 사용 권한이 있으면 앱에서 Bluetooth 어댑터에 액세스하여 장치에서 Bluetooth를 사용할 수 있는지 확인해야 합니다. Bluetooth를 사용할 수 있는 경우 장치는 근처 BLE 장치를 검색합니다. 장치가 발견되면 BLE 장치의 GATT 서버에 연결하여 BLE 장치의 기능을 검색합니다. 일단 연결이 되면, 이용 가능한 서비스와 특성에 따라 연결된 기기로 데이터를 전송할 수 있다.

주요 용어 및 개념

다음은 주요 BLE 용어 및 개념을 요약한 것입니다.

일반 특성 프로파일(GATT)

GATT 프로필은 BLE 링크를 통해 "속성"으로 알려진 짧은 데이터를 주고받기 위한 일반적인 규격이다. 현재 모든 BLE 애플리케이션 프로파일은 GATT를 기반으로 합니다. 자세한 내용은 GitHub에서 Android Bluetooth LeGat 샘플을 참조하십시오.

프로필

블루투스 SIG는 BLE 장치를 위한 많은 프로필을 정의한다. 프로필은 특정 응용 프로그램에서 장치가 작동하는 방식에 대한 규격입니다. 장치는 둘 이상의 프로필을 구현할 수 있습니다. 예를 들어 장치에는 심박수 모니터와 배터리 수준 검출기가 포함될 수 있다.

속성 프로토콜(ATT)

GATT는 속성 프로토콜(ATT) 위에 구축된다. 이를 GATT/ATT라고도 하며, ATT는 BLE 장치에서 실행되도록 최적화되어 있습니다. 이를 위해, 그것은 가능한 적은 바이트를 사용한다. 각 속성은 UUID(Universally Unique Identifier)에 의해 고유하게 식별되며, 이는 정보를 고유하게 식별하기 위해 사용되는 문자열 ID에 대한 표준화된 128비트 형식이다. ATT에서 전송되는 속성은 특성 및 서비스로 포맷됩니다.

특성

특성에는 특성 값을 설명하는 단일 값과 0-n 설명자가 포함됩니다. 특성은 클래스와 유사한 유형으로 생각할 수 있습니다.

설명자

설명자는 특성 값을 설명하는 정의된 속성입니다. 예를 들어 설명자는 사람이 읽을 수 있는 설명, 특성 값의 허용 범위 또는 특성 값에 특정한 측정 단위를 지정할 수 있다.

서비스

서비스는 특성의 집합입니다. 예를 들어, "심박수 측정"과 같은 특성을 포함하는 "심박수 모니터"라는 서비스를 사용할 수 있습니다. 기존 GATT 기반 프로필 및 서비스 목록은 bluetooth.org에서 확인할 수 있습니다.

역할 및 책임

장치가 BLE 장치와 상호 작용할 때 다음과 같은 역할 및 책임이 적용됩니다.
중심 대 주변 장치. 이는 BLE 연결 자체에 적용됩니다. 중앙 역할의 장치가 스캔하여 광고를 찾고 주변 역할의 장치가 광고를 만듭니다.
GATT 서버 대 GATT 클라이언트. 이것은 두 장치가 연결을 설정한 후 서로 통신하는 방법을 결정합니다. 그 차이를 이해하기 위해, 당신이 안드로이드 폰과 BLE 장치인 활동 추적기를 가지고 있다고 상상해 보세요. 전화기는 중앙 역할을 지원하고 활동 추적기는 주변 역할을 지원합니다. BLE 연결을 설정하려면 둘 중 하나가 필요합니다. 주변 장치만 지원하는 두 가지는 서로 통신할 수 없고 중앙 장치만 지원하는 두 가지는 통신할 수 없습니다.
전화기와 활동 추적기가 연결되면 GATT 메타데이터를 서로 전송하기 시작합니다. 전송되는 데이터의 종류에 따라 둘 중 하나가 서버 역할을 할 수 있습니다. 예를 들어, 활동 추적기가 센서 데이터를 전화기에 보고하려는 경우 활동 추적기가 서버 역할을 하는 것이 적절할 수 있습니다. 활동 추적기가 전화기로부터 업데이트를 수신하려는 경우, 전화기가 서버 역할을 하는 것이 좋습니다.
이 항목에서 사용한 예에서 앱(Android 기기에서 실행 중)은 GATT 클라이언트입니다. 이 앱은 심박수 프로파일을 지원하는 BLE 심박수 모니터인 GATT 서버에서 데이터를 가져옵니다. 또는 GATT 서버 역할을 수행하도록 앱을 설계할 수 있습니다. 자세한 내용은 Bluetooth Gat 서버를 참조하십시오.