Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как заставить LocationSensor ловить координаты используя ТОЛЬКО GPS?


M1shQa

Вопрос

Опубликовано

Есть проект, который ловит координаты широты и долготы через локейшн сервис, может поймать даже при выключенном GPS и это большая проблема. Как поставить приоритетность? дело в том, что если телефон получает данные о местоположении с помощью сотовой сети, то в программе проходит проверка включенности GPS и она стартует с "плохими" координатами.. Если в настройках телефона отключить использование для местоположения сотовой сети и включить использование ТОЛЬКО GPS то все работает, но клиент не будет разбираться в этом :(

Рекомендуемые сообщения

  • 0
  • Модераторы
Опубликовано

можно не разрешать приложению работать пока пользователь не включит высокую точность по GPS

function IsGPS_high_accuracy: Boolean;
// uses AndroidApi.Helpers, AndroidApi.JNI.Provider;
var
  Provider: string;
  LocationMode: integer;
begin
  Result := false;
{$IFDEF ANDROID}
  if TOSVersion.Check(4, 4) then
  begin
    LocationMode := TJSettings_Secure.JavaClass.getInt(TAndroidHelper.Context.getContentResolver,
      TJSettings_Secure.JavaClass.LOCATION_MODE);
    Result := LocationMode <> TJSettings_Secure.JavaClass.LOCATION_MODE_HIGH_ACCURACY;
  end
  else
  begin
    Provider := JStringToString(TJSettings_Secure.JavaClass.GetString(TAndroidHelper.Context.getContentResolver,
      TJSettings_system.JavaClass.LOCATION_PROVIDERS_ALLOWED));
    Result := (Pos('gps', Provider) > 0);
  end;
{$ENDIF}
end;

 

  • 0
Опубликовано
53 минуты назад, ZuBy сказал:

можно не разрешать приложению работать пока пользователь не включит высокую точность по GPS


function IsGPS_high_accuracy: Boolean;
// uses AndroidApi.Helpers, AndroidApi.JNI.Provider;
var
  Provider: string;
  LocationMode: integer;
begin
  Result := false;
{$IFDEF ANDROID}
  if TOSVersion.Check(4, 4) then
  begin
    LocationMode := TJSettings_Secure.JavaClass.getInt(TAndroidHelper.Context.getContentResolver,
      TJSettings_Secure.JavaClass.LOCATION_MODE);
    Result := LocationMode <> TJSettings_Secure.JavaClass.LOCATION_MODE_HIGH_ACCURACY;
  end
  else
  begin
    Provider := JStringToString(TJSettings_Secure.JavaClass.GetString(TAndroidHelper.Context.getContentResolver,
      TJSettings_system.JavaClass.LOCATION_PROVIDERS_ALLOWED));
    Result := (Pos('gps', Provider) > 0);
  end;
{$ENDIF}
end;

 

Правильно ли я понимаю, что мы вставляем эту функцию, далее пишем условие, где если 

IsGPS_high_accuracy

= тру, тогда действие выполняется и т.д.? п.с. еще раз Вам огромное спасибо!

  • 0
Опубликовано

но даже если так сделаешь и у тебя включен GPS все равно не всегда передают правильные координаты об этом я уже давно писал и решени не нашли

  • 0
  • Модераторы
Опубликовано
1 минуту назад, Martifan сказал:

но даже если так сделаешь и у тебя включен GPS все равно не всегда передают правильные координаты об этом я уже давно писал и решени не нашли

как понять не всегда правильные координаты?

  • 0
Опубликовано
1 минуту назад, ZuBy сказал:

как понять не всегда правильные координаты?

если смотреть как работает компонент TMapView то все четка без проблем "синяя точка" показывает реальные координаты когда едешь и каком направление но если использовать компонент LocationSensor то он тоже показывать но время от времени перескакивает не понятно куда ну ошибается на несколько километров но мгновенно обратно возвращается 

  • 0
Опубликовано (изменено)
32 минуты назад, Martifan сказал:

если смотреть как работает компонент TMapView то все четка без проблем "синяя точка" показывает реальные координаты когда едешь и каком направление но если использовать компонент LocationSensor то он тоже показывать но время от времени перескакивает не понятно куда ну ошибается на несколько километров но мгновенно обратно возвращается 

Я тут на днях ставил свою метку по LocationSensor и наблюдал как ведет себя "синяя точка" MapView, так вот она тоже иногда скачет по базовым станциям (как и координаты полученные через LocationSensor). Происходит это в момент потери спутников. Кстати, направление движения можно самостоятельно реализовать через Heading, меняя вид метки

Изменено пользователем Rusland

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...