Чтобы сканирование BLE работало в приложениях Android, предназначенных для Android 10, вам нужно попросить пользователя
ACCESS_BACKGROUND_LOCATION
вместе с ACCESS_FINE_LOCATION, а также не забудьтедобавьте разрешение в манифесте:
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
Вот объяснение, почему:
Android 10 (уровень API 29) вводит ряд функций и изменений поведения, чтобы лучше защитить конфиденциальность пользователей. Эти изменения расширяют прозрачность и контроль, который пользователи имеют над своими данными и возможностями, которые они предоставляют приложениям.
Короче говоря, ваша проблема:
Доступ к расположению устройства в фоновом режиме требует разрешения
Для поддержки дополнительного контроля, который пользователи имеют над доступом к приложениюДля получения информации о местоположении Android 10 предоставляет разрешения ACCESS_BACKGROUND_LOCATION .
В отличие от разрешений ACCESS_FINE_LOCATION и ACCESS_COARSE_LOCATION , разрешение ACCESS_BACKGROUND_LOC влияет только на доступ ACCESS_BACKGROUND_LOCк месту, когда он работает в фоновом режиме. Приложение считается имеющим доступ к местоположению в фоновом режиме, если не выполняется одно из следующих условий:
Видна активность, принадлежащая приложению. В приложении запущена служба переднего плана, которая объявила тип службы переднего плана.
Чтобы объявить тип службы переднего плана для службы в вашем приложении, установите для targetSdkVersion или compileSdkVersion своего приложения значение 29 или выше. Узнайте больше о том, как службы переднего плана могут продолжать инициируемые пользователем действия, требующие доступа к местоположению.
Надеюсь, это решит вашу проблему:)