EnjoyLife

안드로이드로 비콘 구현시 알아야할 API(기본소양) 본문

카테고리 없음

안드로이드로 비콘 구현시 알아야할 API(기본소양)

Aiden96 2025. 5. 13. 13:55

 

비콘(Beacon) 스캔 기능을 Android에서 직접 구현할 때 기본이 되는 주요 BLE(Bluetooth Low Energy) API는 다음과 같습니다:

  1. BluetoothManager & BluetoothAdapter
    • BluetoothManager를 통해 시스템 블루투스 서비스(BLUETOOTH_SERVICE)를 얻고,
    • BluetoothAdapter로 디바이스의 블루투스 상태(on/off) 확인 및 BLE 스캐너 객체를 가져옵니다.
    kotlin
    복사편집
    val btManager = getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager val btAdapter = btManager.adapter
  2. BluetoothLeScanner
    • BluetoothAdapter.bluetoothLeScanner로 획득한 BluetoothLeScanner를 통해 스캔을 시작·중지합니다.
    • startScan(...), stopScan(...) 메서드를 사용하며, 간단한 스캔부터 필터/설정 적용 스캔까지 제공합니다. Android DevelopersAndroid Developers
  3. ScanSettings & ScanFilter
    • ScanSettings.Builder로 스캔 모드(배터리 우선, 저지연 등), 레포팅 간격 등을 지정하고,
    • ScanFilter.Builder로 특정 서비스 UUID나 제조사 데이터(MSD) 등을 필터링할 수 있습니다. Android Developers
  4. ScanCallback & ScanResult
    • 스캔 결과는 ScanCallback의 onScanResult(), onBatchScanResults()로 비동기 콜백됩니다.
    • 각 ScanResult에는 getDevice(), getRssi(), getScanRecord() 등이 있어, RSSI나 광고 패킷 데이터를 확인할 수 있습니다. Android Developers
  5. ScanRecord.getManufacturerSpecificData()
    • iBeacon 등 커스텀 비콘 프로토콜은 제조사 특정 데이터(MSD)에 담겨 전달되므로,
    • ScanRecord.getManufacturerSpecificData(companyId)로 원시 비콘 데이터를 추출해 파싱해야 합니다. Android Developers
  6. 런타임 권한 처리
    • Android 12(API 31) 이상: BLUETOOTH_SCAN, BLUETOOTH_CONNECT 권한
    • 위치 권한: ACCESS_FINE_LOCATION 또는 ACCESS_COARSE_LOCATION (일부 OS 버전에서 필수)
    • 권한 요청 후 checkSelfPermission() → requestPermissions() 흐름을 구현해야 합니다.
  7. 백그라운드 스캔 & 전경 서비스
    • 백그라운드 제약이 강화된 최신 Android에서는 Foreground Service를 통해 스캔을 유지하는 패턴을 자주 사용합니다.
    • 공식 가이드 ‘Communicate in the background’ 참고: Android Developers
  8. (선택) CompanionDeviceManager
    • 단말 페어링/연결까지 관리할 때 CompanionDeviceManager를 사용할 수 있으나, 필터링 이슈가 있어 단순 스캔용으론 BluetoothLeScanner가 일반적입니다. Android Developers
  9. (선택) AltBeacon 같은 서드파티 라이브러리
    • 비콘 전용 라이브러리(예: AltBeacon Library)의 BeaconManager, Region, RangeNotifier 등을 활용하면 스캔·파싱 로직을 간소화할 수 있습니다.

이 API들을 조합해 스캔 주기, 필터, 권한, 백그라운드 동작 방식을 설계하면 Android에서 안정적인 비콘 스캔 기능을 구현할 수 있습니다.