• 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

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


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

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

    • От 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 пользователей онлайн

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