Android: как отправить информацию о местоположении на сервер, когда приложение неактивно - PullRequest
0 голосов
/ 22 ноября 2011

Как правильно реализовать приложение Android на основе определения местоположения, которое периодически отправляет свое местоположение на сервер?

Вот конкретный поток, который я хотел бы реализовать:

  1. Главное приложение для Android неактивно (т.е. не было запущено)
  2. На основе местоположения GPSустройства сервер может отправить сообщение (через C2DM) на устройство
  3. После получения сообщения в панели уведомлений должно появиться уведомление (которое затем можно использовать для запуска приложения)

Моя основная путаница связана с пунктом № 1: как отправить GPS-координаты на сервер, если приложение еще не запущено?Это просто вопрос внедрения службы, которая периодически отправляет местоположение телефона на сервер?Как я могу убедиться, что служба всегда работает после того, как пользователь установил приложение?

(Приложение Groupon для Android делает нечто подобное, когда вы периодически получаете уведомления о ближайших сделках, даже когда приложение неактивно. Любая идеякак они могли это реализовать?)

Ответы [ 3 ]

1 голос
/ 22 ноября 2011

Взгляните на эту статью. Пример кода дает хороший пример того, на что вы смотрите.

0 голосов
/ 22 ноября 2011

Я бы не использовал просто Service. Лучше установить будильник, используя AlarmManager каждый (5 минут, 15 минут или что вам нужно), а затем получить местоположение. @CommonsWare сделали несколько кодов , что весьма полезно (это касается и WEAK_LOCKS, поэтому, если телефон переходит в спящий режим, все работает и т. Д.)

Кроме того, вам не нужно использовать C2DM, потому что вы должны отправить свое местоположение на сервер, а сервер ответит вам гео-информацией. C2DM предназначен только для случая, когда вы не начинаете связь.

0 голосов
/ 22 ноября 2011

Вы можете просто создать фоновую службу, а затем реализовать слушатель местоположения. В этом приемнике местоположения вы можете установить временной интервал в методе requestLocationUpdate, чтобы пинговать GPS через определенные интервалы времени. Вот пример расположения менеджера:

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, timeinterval2, 0, locationListener);

Вы можете отправить это местоположение на сервер из службы. Вы также можете отправлять уведомления для запуска приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...