2013-12-12 4 views
1

Я ищу запись приложения, ориентированного на местоположение, для Android. Мое приложение периодически вызывало вызовы на центральный сервер, передавая текущее местоположение пользователя. Я не хочу разряжать аккумулятор, поэтому я рассматриваю возможность использования провайдера местоположений Passive.Как часто выполняется опрос пользователей Android (не приложений) для местоположения?

В соответствии с описанием поставщика не производится активный опрос (следовательно, он обозначается как «Пассивный»). Вместо этого он полагается на другие приложения, запрашивающие активные опросы.

Мой вопрос: если опрос других приложений для местоположения не означает, что поставщик Passive никогда не предоставляет никаких данных? Или же сама ОС Android периодически проводит опрос для местоположения. Если да, то какова частота опроса?

СООБЩЕНИЕ

ответ

3

вы можете использовать Google Play Services Location API. Его поставщик с плавным местоположением избавит вас от таких проблем. Забудьте о том, какие поставщики использовать или как часто выполняется опрос, или если есть опрос других приложений. Вместо этого укажите требования высокого уровня, такие как «высокая точность» или «низкая мощность», и с какого промежутка времени ваше приложение должно быть уведомлено. Используйте прослушиватели или намерения получать обновления местоположения из службы определения местоположения. Вот more recent article with some code.

+0

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

+0

@siva Как заявляет OP в своем вопросе, он «смотрит на запись приложения, ориентированного на местоположение», поэтому кажется, что он не написал никакого кода. Даже если бы он это сделал, вероятно, на ранних этапах разработки очень подходящее время для выбора API более высокого уровня, что является моим советом. Кроме того, я не предоставил ни одной строки кода, так как вы можете сказать, что она истощает больше батареи, чем какой-либо другой гипотетический код?!? – Rafa

0

AFAIK Android OS не будет проводить опрос для самого местоположения. Если некоторые приложения опросили его, вы можете получить его. См. Android - Are there query-able services that already poll for GPS location?.

Если какое-либо приложение не было опрошено для местоположения в течение длительного времени, последнее известное местоположение может быть возвращено пассивным провайдером. Если ваше приложение сильно зависит от местоположения, вы можете действительно захотеть опросить его самостоятельно или если ничто не будет возвращено пассивным провайдером, вы можете сами получить его. Частота получения местоположения может составлять 5 минут (что предлагает Google в документации на Android). Эта частота может варьироваться в зависимости от требований вашего приложения.

ли вы читать андроида документацию requestLocationUpdates из LocationManager, он говорит:

Выбор разумное значение для minTime важно сохранить срок службы батареи. Для каждого обновления местоположения требуется питание от GPS, WIFI, Cell и других радиостанций. Выберите значение minTime как можно выше, сохраняя при этом разумный пользовательский интерфейс. Если ваше приложение не находится на переднем плане и показывает местоположение для пользователя, тогда ваше приложение должно избегать использования активного провайдера (например, NETWORK_PROVIDER или GPS_PROVIDER), но если вы настаиваете, то выберите minTime 5 * 60 * 1000 (5 минут) или выше. Если ваше приложение находится на переднем плане и показывает местоположение пользователю, тогда вам необходимо выбрать более быстрый интервал обновления.

Это мои 2 цента относительно вашего вопроса.

+0

Принятый ответ на вопрос, который вы связали с ссылками [блог android] (http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html). Я был бы готов принять это в качестве ответа, если бы он был не таким старым. – MetaFight

+0

@MetaFight Вы нашли что-то странное в этом ответе, который, кажется, был изменен в последних версиях API? –

+0

Не из-за быстрого взгляда я взял на это. Это еще более двух лет. Достаточно долго для постоянно развивающегося API, такого как Android, чтобы сделать некоторые довольно радикальные изменения. – MetaFight

0

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

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1500000, 0, locationListener); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1500000, 0, locationListener); 

Если вы хотите ждать других приложений, или не хотите, чтобы истощить аккумулятор/поиск пользователей точного местоположения вы можете использовать locationManager.getLastLocation(); Это привычка быть всегда точно, однако это лучшее, что вы можете надеяться на фактически не Забегая поиск местонахождения

+0

Я факт, что ОС Android никогда не регистрируется где-то? – MetaFight

+0

@MetaFight http://developer.android.com/training/location/retrieve-current.html заявляет, что все, что вам нужно, - это получить ваше текущее местоположение, которое требует подключения клиента местоположения и получения текущего местоположения. –

+0

Я знаю, что я педантичен, но ссылка, которую вы указали, на самом деле не указывает, что ОС никогда не проводит опрос о местоположении. Я ищу окончательный источник. – MetaFight

0

Хотя я не считаю, что PASSIVE_LOCATION PROVIDERS не получит никакого места, если никакие другие приложения не получат местоположение, this - это сообщение, которое евангелизирует его.

Я считаю, что в самой ОС бывают некоторые резидентные службы, которые слушают местоположение, изменив события. потому что услуги определения местоположения без карт, как правило, используют GPS. Но я рекомендую вам взглянуть на this discussion (вероятно, надежный источник).

Смежные вопросы