Для того, чтобы телефон получал координаты с выключенным экраном:
- нужен сервис, тогда координаты будут получаться, даже если активно другое приложение; еще лучше foreground service, чтоб оно было неубиваемое, в случае когда os не хватает ресурсов, как бонус у юззера, всегда будет понимание, почему батарейка так быстро садится :)
- в сервисе запустить locationManager.addProximityAlert с какими-нибудь левыми координатами (например 0,0), ну или если вы пользуетесь этим методом, то с вашими координатами. В этом случае телефон сам просыпается (без включения экрана) для опроса координат, правда, батарею жрет немерено (тестировал: 100% зарядка на sgs-III при опросе координат раз в минуту съедает зарядку за 7 часов).
Чтобы приложение могло отсылать на сервер координаты, да, нужен WAKE_LOCK
, достаточно PARTIAL_WAKE_LOCK
. Для периодической отправки можно воспользоваться Handler'ом с postDelayed или ScheduledThreadPoolExecutor с scheduleAtFixedRate и проч. Использовать AlarmManager - из пушки по воробьям, на SO присутствует мнение, мол, оставьте AlarmManager для будильников и прочих напоминалок, т.е. для юзера.