Как мне запустить приложение GPS в фоновом режиме? - PullRequest
10 голосов
/ 05 августа 2011

Я хочу отправлять свое текущее местоположение в веб-службу php через каждые 5 минут, даже если мое приложение работает в фоновом режиме. Я пытаюсь сделать это, но оно работает хорошо, когда мое приложение работает, но когда я помещаю это приложение в фоновый режим, оно прекращает отправку данных, поэтому, пожалуйста, любой собеседник расскажет, как я могу запустить свое приложение в фоновом режиме.

Ответы [ 2 ]

8 голосов
/ 05 августа 2011

Под "запуском в фоновом режиме" вы имеете в виду запуск под экраном блокировки? Если это так, то вам нужно установить PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;

Пост Запуск приложения Windows Phone под экраном блокировки от Хайме Родригеса хорошо освещает эту тему.

Однако, если вы говорите о запуске приложения, которое продолжает работать, пока пользователь использует другие приложения на устройстве, то это невозможно. В сборке операционной системы Mango вы можете создавать фоновые агенты, но они запускаются каждые 30 минут и только в течение 15 секунд, как описано в MSDN .

На официальном форуме UserVoice для разработки Windows Phone есть запрос Предоставить агента для отслеживания маршрутов , но даже если он будет принят, он не будет доступен в течение достаточно долгого времени.

4 голосов
/ 06 августа 2011

Приложения для отслеживания - это основная часть того, что я зарабатываю на жизнь, и перспектива использования WP7, подобной этой, является основной причиной, по которой я ее приобрел.

С точки зрения энергопотребления передача данных - это самая дорогая вещь, которую вы можете сделать, за которой следует тщательный отбор проб с помощью GPS и акселерометров.

Чтобы получить трассу, которая точно соответствует дорогам, вынужна более высокая частота дискретизации.WP7 не позволит вам сэмплировать чаще, чем раз в секунду.Это (просто) достаточно быстро, чтобы отследить автомобиль, и при таком уровне энергопотребления батарея будет работать около часа , если вы регистрируете данные на телефоне и не пытаетесь их передать .

Вы также обнаружите, что если вы передаете для каждой выборки, ваш интервал выборки составит не менее 15 секунд.Выполнение веб-вызова в другом потоке не поможет, поскольку для его завершения потребуется более одной секунды, а у вас закончатся сокеты менее чем за минуту с интервалом выборки в одну секунду.

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

Это, однако, только основные проблемы, с которыми сталкивается каждый разработчик трекера.Более интересными являются вопросы близости в пространстве и времени, измерения отклонения от маршрута, как определять маршруты и геозоны в зависимости от времени, как связать их в именованные наборы для целей оценки правил и как связать правила с именованными наборами.маршрутов и геозон.

И затем происходит периодическая кластеризация, которая вводит все календарные кошмары, которые слишком велики для обычного разработчика настольного программного обеспечения.Чтобы применить ограничение скорости для школьной зоны, вам нужно знать часовой пояс, переход на летнее время, два времени начала и окончания, а также даты начала и окончания школьных каникул в этом регионе.

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

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