블루투스 스캔을 사용하던 중 화면이 꺼져있는 경우, 아래와 같은 에러가 발생하였다.
'Cannot start unfiltered scan in screen-off. This scan will be resumed later'
원인은 뜻 그대로 필터링되지 않은 스캔은 화면이 꺼졌을 경우 시작할 수 없다.
추가로 삼성에서 제조한 스마트폰은 스캔 필터 리스트가 비어있을 경우 마찬가지의 에러가 발생하며, 그 외의 스마트폰에서는 빈 리스트만 넣어줘도 작동하는 것을 확인하였다.
해결 방법은 스캔시 필터를 걸어주면 된다. 아래는 예제 코드이다.
fun startScan(context: Context) {
val bluetoothManager =
context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
val scanner = bluetoothManager.adapter.bluetoothLeScanner
val scanSettings = ScanSettings.Builder().run {
setScanMode(ScanSettings.SCAN_MODE_BALANCED)
build()
}
val filters = mutableListOf<ScanFilter>()
//스캔 필터 생성
val scanFilter = ScanFilter.Builder().run {
//0x004C : iBeacon
setManufacturerData(0x004C, byteArrayOf(), byteArrayOf())
build()
}
//스캔 필터 추가
filters.add(scanFilter)
scanner.startScan(filters, scanSettings, object :ScanCallback(){
override fun onScanFailed(errorCode: Int) {
//스캔 에러 처리
}
override fun onScanResult(callbackType: Int, result: ScanResult?) {
//스캔 결과 처리 (실시간 데이터)
}
override fun onBatchScanResults(results: MutableList<ScanResult>?) {
//스캔 결과 처리 (이전 스캔 데이터)
}
})
}
참고 링크:
'안드로이드 > Report' 카테고리의 다른 글
Android Studio - Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper '-jvm-target' option 해결 방법 (0) | 2020.03.08 |
---|---|
RecyclerView 사용시 끊김현상 없애는 방법 (0) | 2020.01.28 |
안드로이드 앱 배포시 '지원되는 기기 0개' 오류 해결 (0) | 2019.12.27 |
Android: 프로그레스바(ProgressBar) 회전하지 않는 문제 해결 (0) | 2019.12.27 |
Android: ERR_CLEARTEXT_NOT_PERMITTED 오류 (0) | 2019.12.20 |