1. Я хочу получить местоположение GPS с точностью ~ 0,0001
Вы можете слушать только поставщика GPS и отбрасывать местоположение, если оно не имеет требуемой минимальной точности:
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 5, myLocationListener); // "myLocationListener" must be an object from a class that implements LocationListener
// "myLocationListener" implementation of LocationListener.onLocationChanged
public void onLocationChanged(Location location)
{
int MIN_ACCURACY = 5; // in metters
if ((!location.hasAccuracy()) || (location.getAccuracy() > MIN_ACCURACY))
{
// discard this location and keep listening to new location readings
}
else
{
// that's a good reading!
// do somethings you want... blah, blah, blah...
// stop updates when you get the location to preserve users' battery.
locationManager.removeUpdates(myLocationListener);
}
}
2. Не хочу пользоваться Интернетом; Хотя сеть GSM / CDMA в порядке.
Да, GPS работает полностью автономно. Android может использовать Интернет ТОЛЬКО для обновления кеша данных A-GPS и обеспечения более быстрого чтения при холодном запуске обновлений.
3. Должен быть получен программно при запуске приложения
Затем вызовите элемент locationManager.requestLocationUpdates
в событии onCreate mainActivity.
4. Должно быть быстрее, скажем, в течение минуты (например, iPhone, который, вероятно, также работает в режиме полета!)
Имейте в виду, что iPhone работает с «высококачественным оборудованием». Android можно запускать на дрянных устройствах. Так что это будет зависеть от:
- Аппаратное качество устройства;
- Количество спутников, которые видны на небе в данный момент;
- Возраст данных альманаха и эфемерид в кэше GPS;
- GPS может не считывать данные со спутников, потому что пользователь находится внутри здания или чего-то подобного.
5. Код должен работать на большинстве устройств.
Какой самый старый API Android вы хотите, чтобы он запускал?
6. Телефон может включаться / выключаться в любое время и путешествовать на любое расстояние
Я не понял. Что вас беспокоит по этому поводу?
------------------------------------------------------------------------------
Обновление 1:
"... Я хочу использовать Android 4.0 и выше ..."
Я тестировал функции GPS на устройствах с Android 2.3 и 5.0. На всех из них все работает нормально.
"... Я заметил, что одно демонстрационное приложение на основе географических координат, которое работало на других устройствах, не работает в моем LGG3 с Android 5.0. Есть идеи по этому поводу? ..." em>
Вы проверяли разрешения GPS в настройках Android? (Может быть, он отключен) Или может быть проблема с оборудованием? В другом подобном аппарате пробовали?
"... Предположим, что GPS показывает правильное местоположение в Нью-Йорке, я выключаю телефон, а затем включаю его по прибытии в Лондон, тогда он по-прежнему будет показывать правильное местоположение (без интернета)? ... "
Похоже, вы что-то путаете: одно дело - определить местоположение по GPS. Другое дело, отображать это местоположение на КАРТЕ!
Вам не нужно быть подключенным к Интернету, чтобы считывать данные о местоположении по GPS. Но, если вы хотите показать это местоположение на КАРТЕ, возможно, вам понадобится Интернет (для загрузки ресурсов карты и т. Д.).
Если вам нужно продолжать периодически собирать данные о местоположении GPS (скажем, от 10 до 10 минут), тогда будет лучше использовать AlarmManager, чтобы запланировать таймер, который будет "нажимать" на ваше приложение и говорить: "Эй, пора сделать показания GPS. ! ».
"... Что вы думаете о последней версии Fused API? ..."
Я тестировал его и использовал некоторое время, но я отказался от него. Для работы необходимо установить сервисы Google Play (это не проблема, у большинства пользователей они есть на своих устройствах). Но если вам нужна ТОЧНОСТЬ (как мне), это не сработает. Он использует «встроенные датчики» (акселерометр, GPS, Wi-Fi, компас и т. Д.), Чтобы попытаться определить местоположение пользователя с минимальной мощностью. Иногда говорится, что вы находитесь в 10 милях от того места, где находитесь на самом деле. Я не мог заставить его нормально работать, чтобы сохранить «путь», на котором был пользователь. Но это действительно экономит батарею.
person
Christian
schedule
05.05.2015