Итак, проблема в том, что у меня есть видеокамера, которая подключена к телефону через Bluetooth. Вся связь с устройством осуществляется через службу Android. Сервис периодически обновляет камеру GPS-координатами. Сервис, к сожалению, написан не моей компанией, и мы имеем контроль только над его запуском и отправкой ему команд (однако GPS он выполняет самостоятельно, если он подключен к устройству). Как только служба запускается нашим приложением, мы пытаемся подключиться к любым сопряженным устройствам, которые содержат OUI моей компании. После того, как устройство отключится (возможно, оно выключится или разрядится батарея), оно не будет автоматически повторно подключено, пока пользователь не перезапустит наше приложение. Таким образом, координаты GPS не будут отправлены на камеру в этом сценарии.
Это проблема, потому что пользователь (который ничего не знает об этих услугах и что не так) будет думать, что если он снова включил устройство, оно должно быть подключено.
Поэтому я подумал, что могу использовать AlarmManager с широковещательным приемником или службой (вероятно, службой намерений, поскольку для завершения соединения требуется несколько секунд). Возможно, раз в несколько минут я мог бы проверить подключение к камере. Если он присутствует, просто выйдите, а если нет, попробуйте подключиться (если есть сопряженные устройства).
Однако проблема в том, что если мое приложение уже запущено? Если это так, то пользователь управляет подключением к устройству (у него запрашивается это). Нужно ли мне использовать общие настройки или что-то в этом роде, чтобы узнать, запущено ли мое приложение? Есть ли способ узнать из службы, запущено ли приложение? Я вижу, что это становится сложным. Если у кого-то есть идеи, как с этим справиться, дайте мне знать.