• 0
Kitty

[Андроид] Можно ли эмулировать координаты GPS на эмуляторе?

Вопросы

Здравствуйте.

Можно ли на эмуляторе увидеть координаты устройства с помощью LocationSensor или это возможно только на реальном устройстве?

Код ниже ничего не показывает. Просто белый квадрат в браузере WebBrowser.

void __fastcall TForm1::LocationSensor1LocationChanged(TObject *Sender, const TLocationCoord2D &OldLocation,
		  const TLocationCoord2D &NewLocation)
{
    String LGoogleMapsURL = "https://maps.google.com/maps?q=%s,%s";
	Label1->Text = String().sprintf(L"%2.5f", NewLocation.Latitude);
	Label2->Text = String().sprintf(L"%2.5f", NewLocation.Longitude);
	TVarRec vr[] = {Label1->Text, Label2->Text};
	WebBrowser1->Navigate(Format(LGoogleMapsURL, vr, 2));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
 LocationSensor1->Active = true;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 ответов на этот вопрос

  • 0

Такое возможно, если:

  1. Эмулятор имеет возможность работать с сетью через компьютер (на котором он установлен);
  2. Поддерживается эмуляция GPS.

Есть эмуляторы, которые всё это умеют.  Умеет ли это делать стандартный эмулятор из SDK, который идёт с RAD Studio из коробки, точно не могу сказать, так как уже давно им не пользуюсь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Попробовала этот код на реальном устройстве. Все тоже самое - ничего не показывает. :(

Разрешения Access coarse location and Access fine location установлены.

Что мною упущено?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Код рабочий. Обычно, требуется некоторое время для получения координат и данных из GoogleMaps.

 

Координаты на устройстве определяются?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Не понимаю, но событие LocationSensor1LocationChanged упорно не происходит. :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Добрый день,

 

Стандартный эмулятор поддерживает указание гео координат. Но для этого нужно подключиться к симулятору через telnet и прописать ему ручками местоположение. 

 

1. Включаем поддержку клиента Telnet для Windows 7-8

Пуск - Панель управления - Программы и компоненты - Включение или отключение компонентов windows - Клиент Telnet (ставим галочку)

post-1-0-94722900-1423234996_thumb.png

 

2. Подключаем к эмулятору через telnet

Запускаем командную строку cmd:

post-1-0-95167400-1423235059.png

 

3. Задаем координаты эмулятора

задаем координаты и смотрим, как в сенсоре срабатывает событие смены геопозиции:

post-1-0-86427600-1423235101_thumb.png

 

Подробности тут:

  1. Using the Emulator Console
  2. Geo Location Provider Emulation

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Похожий контент

    • От Паршенко Виктор
      Доброго времени суток.
      Возникла проблема с использование TLocationSensor в Delphi 10.3 Rio под iOS. 
      Открыл, скомпилировал и установил приложение LocationDemo взятое из примеров.
      Device: iPhone 7+, version ios: 12.1.3. 
      При запуске, приложение запросило разрешение на доступ к геолокации (разумеется разрешил)
      Индикатор локации в верхнем баре показал, что его сейчас используют, но само приложение не реагирует на это никак. В частности событие OnChangeLocation не срабатывает у TLocationSensor. 
      Что делал я, чтоб попытаться устранить эту проблему:
      - скомпилировал этот же проект под Android (пример рабочий, Android отреагировал и показал мне местоположение)
      - внес изменения в системные юниты по рабочему примеру : 
      - открывал любые другие приложения, которые используют геолокацию (успешно находит и показывает мое местоположение)
      У меня закончились идеи, почему не работает TLocationSensor на iOS.
      P.S. не проверял компиляцию на версии делфи по ниже (10.2.3, 10.2 ... ). 
      Для красоты эксперимента, есть тут кто на Rio использовал геолокацию для iOS, у вас работает? 
       
    • От Alex Bakulin
      Вопрос простой - есть какие-то встроенные методы, которые позволяют определять пройденное расстояние? Оно понятно, что можно искать расстояние между двумя точками, но вдруг уже до нас что-то придумали. 
    • От Равиль Зарипов (ZuBy)
      Здравствуйте!
       
      Вот начал разбираться с TLocationSensor, хочу сделать трекер для себя
      И вот с чем столкнулся.
       
      Разъясните пжлста суть этих значении
      Accuracy - точность, с этим понятно
      Distance - дистанция между срабатыванием OnLocationChanged?
      Optimize - оптимизация чего?
       
      Они как-то влияют на событие
      OnLocationChanged(Sender: TObject;  const OldLocation, NewLocation: TLocationCoord2D); Есть ли у них минимальные и максимальные значения?
       
      Я так понимаю компоненту неважно откуда идут данные AGPS\ГЛОНАСС\GPS?
    • От Kitty
      Здравствуйте.
      Точки останова показывают что событие LocationChanged не вызывается. Разрешения Access coarse location and Access fine location установлены. Что еще надо сделать?
      void __fastcall TForm1::LocationSensor1LocationChanged(TObject *Sender, const TLocationCoord2D &OldLocation, const TLocationCoord2D &NewLocation) { String LGoogleMapsURL = "https://maps.google.com/maps?q=%s,%s"; Label1->Text = String().sprintf(L"%2.5f", NewLocation.Latitude); Label2->Text = String().sprintf(L"%2.5f", NewLocation.Longitude); TVarRec vr[] = {Label1->Text, Label2->Text}; WebBrowser1->Navigate(Format(LGoogleMapsURL, vr, 2)); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormShow(TObject *Sender) { LocationSensor1->Active = true; }
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу