이슈 : 도즈 모드 진입 후 시간이 지날수록

handler postDelayed 나 timer 실행 지연 시간이 점점 더 지연됨

 

설명 : foreground service 실행 중인데, 하물며 도즈 모드까지 실행했음에도 불구하고

handler postDelayed 나 timer 반복 실행 시간이 점점 더 지연되는 현상 생김.

 

해결 : AlarmManagerCompat.setAlarmClock(...) 를 통해 해결

- foreground service 만 실행하고 도즈 모드는 제거함.

 

- AlarmManaerComapt 는

기존 AlarmManager > AlarmClockInfo 또는 setExact 을 통해

os 버전 별로 (마시멜로 기준) 각각 구현하는 수고로움을 하나로 통합 제공하고 있다

 

참고 링크 : https://wangjingke.com/2016/09/23/Multiple-ways-to-schedule-repeated-tasks-in-android

블루투스 스캔 호출 빈도가 짧은 시간 안에 너무 잦으면

ScanCallback() 에 어떤 onScanFailed, onScanResult, onBatchScanResults 도 호출되지 않는다.

로그 > status=6 은 

D/BluetoothAdapter: isLeEnabled(): ON
D/BluetoothLeScanner: onScannerRegistered() - status=6 scannerId=-1 mScannerId=0

 

ScanCallback.java

/**
  * Fails to start scan as application tries to scan too frequently.
  * @hide
  */
public static final int SCAN_FAILED_SCANNING_TOO_FREQUENTLY = 6;

 

 

방법 1. 스캔 호출하는 시간 간격을 늘려준다.

방법 2. address 나 uuid 를 알고 있다면 직접 접속으로 스캐닝과 병행하여 구현한다.

 

- 참조 링크

https://github.com/NordicSemiconductor/Android-Scanner-Compat-Library/issues/18#issuecomment-402412139

- 블루투스 도움되는 링크

NordicSemiconductor / Android-BLE-Library https://github.com/NordicSemiconductor/Android-BLE-Library.git

Making Android BLE work — part 1 by Martijn van Welie https://link.medium.com/jOoagTLCY4

+ Recent posts