Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 안드로이드 스튜디오 애뮬레이터
- TwomonUSB
- compse collectAsState
- Room 데이터베이스 업데이트
- 셀룰로오스-g-폴리락타이드 공중합체
- apk이름변경
- 안드로이드스튜디오 jdk
- 안드로이드 비콘
- 비콘스캐닝
- 모의위치 주입
- 스레드 #코루틴
- 안드로이드 sms
- var 와 val
- 플라스틱 생분해
- 코틀린 트리거 버튼
- 토글 험수
- bluetoothmanager
- 라이브데이터 postValue
- 코루틴 job
- viewmodelscope
- 커스텀스피너
- 코루틴스코프
- 1회용 플라스틱컵
- #큐구조 #큐다운로드
- compse state
- TowmonUSB 연결오류
- 상태바 가려짐현상 #소프트키 가려짐
- 안드로이드 mvvm
- withContext
- 코틀린 이미지저장 #파일저장
Archives
- Today
- Total
EnjoyLife
안드로이드로 비콘 구현시 알아야할 API(기본소양) 본문
비콘(Beacon) 스캔 기능을 Android에서 직접 구현할 때 기본이 되는 주요 BLE(Bluetooth Low Energy) API는 다음과 같습니다:
- BluetoothManager & BluetoothAdapter
- BluetoothManager를 통해 시스템 블루투스 서비스(BLUETOOTH_SERVICE)를 얻고,
- BluetoothAdapter로 디바이스의 블루투스 상태(on/off) 확인 및 BLE 스캐너 객체를 가져옵니다.
kotlin복사편집val btManager = getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager val btAdapter = btManager.adapter - BluetoothLeScanner
- BluetoothAdapter.bluetoothLeScanner로 획득한 BluetoothLeScanner를 통해 스캔을 시작·중지합니다.
- startScan(...), stopScan(...) 메서드를 사용하며, 간단한 스캔부터 필터/설정 적용 스캔까지 제공합니다. Android DevelopersAndroid Developers
- ScanSettings & ScanFilter
- ScanSettings.Builder로 스캔 모드(배터리 우선, 저지연 등), 레포팅 간격 등을 지정하고,
- ScanFilter.Builder로 특정 서비스 UUID나 제조사 데이터(MSD) 등을 필터링할 수 있습니다. Android Developers
- ScanCallback & ScanResult
- 스캔 결과는 ScanCallback의 onScanResult(), onBatchScanResults()로 비동기 콜백됩니다.
- 각 ScanResult에는 getDevice(), getRssi(), getScanRecord() 등이 있어, RSSI나 광고 패킷 데이터를 확인할 수 있습니다. Android Developers
- ScanRecord.getManufacturerSpecificData()
- iBeacon 등 커스텀 비콘 프로토콜은 제조사 특정 데이터(MSD)에 담겨 전달되므로,
- ScanRecord.getManufacturerSpecificData(companyId)로 원시 비콘 데이터를 추출해 파싱해야 합니다. Android Developers
- 런타임 권한 처리
- Android 12(API 31) 이상: BLUETOOTH_SCAN, BLUETOOTH_CONNECT 권한
- 위치 권한: ACCESS_FINE_LOCATION 또는 ACCESS_COARSE_LOCATION (일부 OS 버전에서 필수)
- 권한 요청 후 checkSelfPermission() → requestPermissions() 흐름을 구현해야 합니다.
- 백그라운드 스캔 & 전경 서비스
- 백그라운드 제약이 강화된 최신 Android에서는 Foreground Service를 통해 스캔을 유지하는 패턴을 자주 사용합니다.
- 공식 가이드 ‘Communicate in the background’ 참고: Android Developers
- (선택) CompanionDeviceManager
- 단말 페어링/연결까지 관리할 때 CompanionDeviceManager를 사용할 수 있으나, 필터링 이슈가 있어 단순 스캔용으론 BluetoothLeScanner가 일반적입니다. Android Developers
- (선택) AltBeacon 같은 서드파티 라이브러리
- 비콘 전용 라이브러리(예: AltBeacon Library)의 BeaconManager, Region, RangeNotifier 등을 활용하면 스캔·파싱 로직을 간소화할 수 있습니다.
이 API들을 조합해 스캔 주기, 필터, 권한, 백그라운드 동작 방식을 설계하면 Android에서 안정적인 비콘 스캔 기능을 구현할 수 있습니다.