Перейти к содержанию
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 эмодзи.

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

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

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

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