Ответ 1
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 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
в файле mainActivity onCreate.
4. Должно быть быстрее, скажите в течение минуты (например, iPhone, который, вероятно, работает и в режиме самолета!)
Имейте в виду, что iPhone работает с "высококачественным оборудованием". Android можно запускать на чистых устройствах. Это зависит от:
- Качество аппаратного обеспечения устройства;
- Число спутников, которые в данный момент видны на небе;
- Возраст альманаха и эфемеридных данных на кеш-кеш,
- GPS может не считывать спутники, потому что пользователь находится внутри здания или что-то в этом роде.
5. Код должен работать на большинстве устройств
Какой самый старый Android-API вы хотите запустить?
6. Телефон может включать/выключать в любое время и путешествовать на любое расстояние
Я не понял. В чем вы обеспокоены этим?
----------------------------------------------- -------------------------------
Обновление 1:
"... Я хотел бы использовать Android 4.0 и выше..."
Я тестировал функции GPS с Android 2.3 до 5.0. Все работает очень хорошо на всех.
"... Я заметил, что одно демо-приложение, основанное на гео-координатах, которое работало на других устройствах, не работает в моем LGG3 с Android 5.0. Любая идея об этом?...
Вы проверяли разрешения GPS на настройках Android? (Может быть, он отключен) Или может быть проблема с оборудованием? Вы пытались использовать другое подобное устройство?
"... Предположим, что GPS показывает правильное местоположение в Нью-Йорке, Я выключаю телефон и затем включаюсь после достижения Лондона, то будет ли он по-прежнему показывать правильное местоположение (без Интернета)?... "
Похоже, вы путаете вещи: чтение GPS-местоположения - это одно. Показывать, что это место в MAP - это еще одна вещь!
Вам не нужно подключаться к Интернету для чтения GPS-данных. Но, если вы хотите показать это местоположение в MAP, возможно, вам понадобится интернет (для загрузки ресурсов карты и т.д.).
Если вы не собираетесь регулярно собирать GPS-адреса (скажем, от 10 до 10 минут), тогда будет лучше использовать AlarmManager, чтобы запланировать таймер, который "провёл" ваше приложение и скажет "эй, время, чтобы сделать считывание GPS!".
"... И что вы думаете о последнем Fused API?...
Я тестировал его и использовал его некоторое время, но я его бросил. Необходимо, чтобы службы Google Play были установлены для работы (не проблема, большинство пользователей имеют их на своих устройствах). Но если вам нужна ТОЧНОСТЬ (как и я), это не сработает. Он использует "плавленные датчики" (акселерометр, gps, wifi, компас и т.д.), Чтобы попытаться получить местоположение пользователя с минимальной мощностью. Иногда он говорит, что вы в 10 милях от того места, где вы на самом деле. Я не мог заставить его работать нормально, чтобы сохранить "путь", где был пользователь. Но это действительно экономит аккумулятор.