Я думаю, вы делаете это слишком сложно.
Библиотека маяков Android предназначена для сканирования маяков в фоновом режиме и автоматического перезапуска после того, как приложение убито, для сканирования маяков. Он делает все это автоматически из коробки без необходимости создавать какие-либо службы упаковки или менеджеры работ. Такие обертки, вероятно, усложняют ситуацию и вызывают неожиданные побочные эффекты.
Вышеприведенное также работает, если вы создаете свою собственную библиотеку, которая оборачивает библиотеку маяков Android, при условии, что записи библиотеки AndroidManifest.xml объединены в файл AndroidManifest.xml вашей библиотеки. Это откроет ряд внутренних служб библиотеки Android Beacon в манифесте, включая StartupBroadcastReceiver, BeaconService и ScanJob. Эти три службы необходимы для выполнения функций, указанных в первом абзаце.
Если вы сделали вышеупомянутое, единственное, что вам нужно сделать, - это предоставить некоторый кодовый хук для настройки мониторинга / измерения радиомаяка при запуске приложения. Это может быть просто вызов метода POJO внутри вашей библиотеки, например new MyLibraryManager().start(Context context);
(вам, вероятно, придется передать объект Context, поскольку это необходимо для создания BeaconManager библиотеки маяков Android.)
Для автоматического перезапуска сканирования после прекращения работы приложения вышеупомянутый хук должен каким-то образом выполняться при запуске приложения. (Автоматический перезапуск библиотеки - это службы, описанные выше, но вам все равно нужно сделать вызовы, чтобы сообщить библиотеке, начинать ли сканирование и с какими настройками.)
Самое простое решение - поручить разработчикам, использующим вашу библиотеку, поместить вызов описанной выше ловушки (например, new MyLibraryManager().start(Context context);
) в их собственный пользовательский метод Application#onCreate()
. Возможно, вам удастся найти другое умное решение с BroadcastReceiver, которое не требует этого.