Как эмулировать местоположение GPS в эмуляторе Android? - PullRequest
417 голосов
/ 17 февраля 2010

Я хочу получить долготу и широту в эмуляторе Android для тестирования.

Может ли кто-нибудь подсказать мне, как этого добиться?

Как настроить местоположение эмулятора для проверкиположение

Ответы [ 31 ]

428 голосов
/ 17 февраля 2010

Вы можете подключиться к эмулятору через Telnet. Затем у вас есть консоль эмулятора, которая позволяет вводить определенные данные, такие как гео-исправления, сеть и т. Д.

Как использовать консоль подробно объясняется здесь . Для подключения к консоли откройте командную строку и введите

telnet localhost 5554

Затем вы можете использовать команду geo, чтобы установить широту, долготу и, если необходимо, высоту на устройстве, которое передается всем программам с помощью провайдера местоположения gps. Смотрите ссылку выше для дальнейших инструкций.

Специальная команда для запуска в консоли:

geo fix <longitude value> <latitude value>

Я нашел этот сайт полезным для нахождения реалистичного лат / лнг: http://itouchmap.com/latlong.html

Если вам нужно больше одной координаты, вы можете использовать файл kml с маршрутом, это немного описано в этой статье . Я не могу найти лучшего источника в данный момент.

105 голосов
/ 15 октября 2010

Я искал лучший способ установить координаты GPS эмулятора, чем использовать geo fix и вручную определять координаты конкретной широты и долготы.

Невозможно найти что-либо, я собрал небольшую программу, использующую GWT и API Карт Google, чтобы запустить инструмент карты на основе браузера для установки местоположения GPS в эмуляторе:

Android-GPS-эмулятор

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

android-gps-emulator

80 голосов
/ 23 января 2012

Если вы используете Eclipse, перейдите к Window->Open Perspective->DDMS, введите один из них в Location Controls и нажмите Send.

72 голосов
/ 14 июля 2017

Никто здесь не упомянул встроенное решение самого эмулятора, поэтому для будущих посетителей я бы хотел поделиться им с визуальными эффектами.

Сначала запустите эмулятор Android и нажмите кнопку меню (3 точки), показанных ниже:

emulator with menu button

Затем на левой панели выберите Местоположение и измените координаты в соответствии с вашими потребностями.После нажатия кнопки Отправить изменения вступят в силу немедленно (я рекомендую вам открыть Google Карты для лучшего понимания).

enter image description here

Android Studio Версия: 2.3.3

Кроме того, для того, чтобы различные местоположения приходили на ваше приложение в режиме реального времени, вы можете использовать файл GPX.Создать файл из ссылки на карту Google очень просто:

  1. Перейдите на карту Google, выберите местоположение, затем нажмите «Направления» и введите второе местоположение.
  2. После маршрутасоздайте, скопируйте ссылку из браузера
  3. Перейдите на этот сайт: https://mapstogpx.com и вставьте ссылку в поле "Let's Go"
  4. Нажмите кнопку "Let's Go" иФайл GPX будет загружен

Используйте кнопку «Загрузить GPS / KML», чтобы загрузить созданный файл в эмулятор, выберите скорость и нажмите зеленую кнопку воспроизведения внизу.Места будут отправлены в режиме реального времени, как показано на рисунке ниже.

enter image description here

32 голосов
/ 23 февраля 2015

Для пользователей Android Studio:

запустите эмулятор,

Затем перейдите на Tools -> Android ->Android device monitor

, откройте вкладку Emulator Control и используйте группу элементов управления местоположением.

13 голосов
/ 06 ноября 2012

1. Пользователи Android Studio.

После запуска эмулятора зайдите в Инструменты-> Android-> Монитор устройства Android

Щелкните по вкладке управления эмулятором в группе элементов управления местоположением.

2. Пользователи Eclipse.

Сначала в Eclipse In Menu Выберите «Окно», затем выберите «Открыть перспективу», затем выберите «DDMS». Т.е. Window-> Open Prespective-> DDMS.

Вы увидите на левой панели устройства и на правой стороне вы увидите различные вкладки. Выберите вкладку «Управление эмулятором».

Внизу вы увидите панель управления местоположением. Выберите вкладку «Вручную».

Введите долготу и широту в текстовые поля, затем нажмите кнопку «Отправить». Он отправит вам позицию эмулятора и приложение.

3. Использование telnet.

В команде run введите this.

telnet localhost 5554

Если вы не используете Windows, вы можете использовать любой клиент telnet.

После соединения с telnet используйте следующую команду для отправки вашей позиции в эмулятор.

geo fix long lat    
geo fix -121.45356 46.51119 4392

4. Используйте браузерный инструмент Google maps

Существует программа, которая использует GWT и API Карт Google для запуска инструмента карты на основе браузера для установки местоположения GPS в эмуляторе:

Android-GPS-эмулятор

13 голосов
/ 17 февраля 2010

Предполагается, что у вас настроено и запущено представление карты:

MapView mapView = (MapView) findViewById(R.id.mapview);
final MyLocationOverlay myLocation = new MyLocationOverlay(this, mapView);

mapView.getOverlays().add(myLocation);
myLocation.enableMyLocation();

myLocation.runOnFirstFix(new Runnable() {
    public void run() {
        GeoPoint pt = myLocation.getMyLocation();
    }
});

Вам понадобится следующее разрешение в манифесте:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

И чтобы отправить ложные координаты в эмулятор из Eclipse, перейдите в меню «Окно», выберите «Показать представление»> «Прочее»> «Управление эмулятором», и вы можете отправить координаты из появившейся панели управления эмулятора.

13 голосов
/ 02 мая 2016

Для нового эмулятора:

http://developer.android.com/tools/devices/emulator.html#extended

По сути, нажмите кнопку с тремя точками в элементах управления эмулятора (справа от эмулятора), и откроется меню, которое позволит вам управлять эмулятором, включая местоположение

10 голосов
/ 12 апреля 2011

Использование команды "geo" в консоли эмулятора

Чтобы отправить данные фиктивного местоположения из командной строки:

  1. Запустите ваше приложение в эмуляторе Android и откройте терминал / консоль в каталоге / tools вашего SDK.

  2. Подключение к консоли эмулятора:

    telnet localhost 5555 (замените 5555 тем портом, на котором работает ваш эмулятор)

  3. Отправка данных о местоположении: * Географическое исправление для отправки фиксированного географического местоположения.

    Эта команда принимает долготу и широту в десятичных градусах и необязательную высоту в метрах. Например:

    geo fix -121.45356 46.51119 4392
    
8 голосов
/ 15 июля 2015

Я написал скрипт на python для отправки местоположений gps в эмулятор через telnet. Он определяет источник и место назначения. Существует также временной сдвиг, который позволяет вам контролировать, как долго координаты будут переданы на устройство. Одна локация толкается раз в секунду.

В приведенном ниже примере сценарий перемещается из Берлина в Гамбург за 120 секунд. Один шаг / GPS-местоположение в секунду со случайными расстояниями.

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import telnetlib
from time import sleep
import random

HOST = "127.0.0.1"
PORT = 5554
TIMEOUT = 10
LAT_SRC = 52.5243700
LNG_SRC = 13.4105300
LAT_DST = 53.5753200
LNG_DST = 10.0153400
SECONDS = 120

LAT_MAX_STEP = ((max(LAT_DST, LAT_SRC) - min(LAT_DST, LAT_SRC)) / SECONDS) * 2
LNG_MAX_STEP = ((max(LNG_DST, LNG_SRC) - min(LNG_DST, LNG_SRC)) / SECONDS) * 2

DIRECTION_LAT = 1 if LAT_DST - LAT_SRC > 0 else -1
DIRECTION_LNG = 1 if LNG_DST - LNG_SRC > 0 else -1

lat = LAT_SRC
lng = LNG_SRC

tn = telnetlib.Telnet(HOST, PORT, TIMEOUT)
tn.set_debuglevel(9)
tn.read_until("OK", 5)

tn.write("geo fix {0} {1}\n".format(LNG_SRC, LAT_SRC))
#tn.write("exit\n")

for i in range(SECONDS):
    lat += round(random.uniform(0, LAT_MAX_STEP), 7) * DIRECTION_LAT
    lng += round(random.uniform(0, LNG_MAX_STEP), 7) * DIRECTION_LNG

    #tn.read_until("OK", 5)
    tn.write("geo fix {0} {1}\n".format(lng, lat))
    #tn.write("exit\n")
    sleep(1)

tn.write("geo fix {0} {1}\n".format(LNG_DST, LAT_DST))
tn.write("exit\n")

print tn.read_all()
...