마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Android Doze 모드 BLE scanning

0 추천
안녕하세요 초보 개발자입니다.

안드로이드 앱에서 BLE 스캐닝 기능을 구현하고있습니다. 이는 foregroundService에서 notification을 띄운채로 앱이 꺼져도 계속해서 서비스가 동작하는 형태입니다. Service 내에는  AlarmManager가 1분에 한번씩 ble Scanner를 작동시켜 scan을 60초 진행합니다. 어떻게 보면 무한으로 ble scanning 하는 기능이죠.

해당 앱은 200시간 넘게 테스트 해본 결과 동작은 잘하지만 문제는 Doze 모드 진입시 입니다.
PC 터미널에서 adb 로 배터리 충전 해제 밑 doze 모드로 강제 진입 후 테스트 내용입니다.

1분에 한번씩 AlarmManager가 지정된 scanner 동작은 정상적으로 동작중인 것으로 확인이 됩니다.
문제는 여기서 Scanning Result가 DOZE 모드 진입 전과는 차이가 확연하게 나타납니다. Scanning Result가 계속 해서 쌓여야하는게 정상인 반면에, DOZE 모드 에 들어오면 scanning result 가 1개~2개 정도로 드문드문하게 들어옵니다.  
참고로 ble 신호를 advertising 하는 기기에 대한 scanfilter는 해당 기기의 이름으로 진행했으며, 그 해당 기기는 버튼동작으로 ble 신호를 약 5초간 advertising 하도록 설정을 해놨습니다.

요약을 하자면 doze mode 진입후에는 alarm manager로 스케쥴된 주기적인 ble scanner는 정상 동작 하는거 같으나, 신호가 거의 안 들어오는 문제입니다.

혹시 제가 놓치는 부분이나 그런게 있는지 알려주실 수 있으면 정말 큰 도움이 될것같아요.
DroidNoob (200 포인트) 님이 2023년 10월 30일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...