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

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

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

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


person UMAR-MOBITSOLUTIONS    schedule 17.02.2010    source источник
comment
Если вы используете Genymotion: stackoverflow.com / questions / 30709329 /   -  person Hachem Benyahia    schedule 09.09.2016
comment
Вы можете установить одно из многих приложений для имитации местоположения в Play Store.   -  person whoKnows    schedule 01.11.2017


Ответы (34)


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

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

telnet localhost 5554

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

Конкретная команда для запуска в консоли:

geo fix <longitude value> <latitude value>

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

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

person Janusz    schedule 17.02.2010
comment
используя географическое исправление, я также установил фиктивную широту и долготу, по-прежнему получая нулевое местоположение. - person UMAR-MOBITSOLUTIONS; 17.02.2010
comment
добавление большого количества значений через telnet, теперь он работает ... я не знаю, почему ввод двух или трех значений не работал ... он работает, пока я не закрою эмулятор, когда я закрою эмулятор, мне нужно снова ввести фиктивные значения. - person UMAR-MOBITSOLUTIONS; 17.02.2010
comment
или простой способ включить gps в эмуляторе и перейти к управлению эмулятором, дать фиктивные значения lat, long и отправить, вы получите эти значения в эмуляторе в качестве местоположения gps. - person UMAR-MOBITSOLUTIONS; 23.05.2011
comment
Похоже, это не работает. У меня есть регистратор GPS, работающий в эмуляторе, который печатает оператор отладки в обработчике onLocationChanged, а установка широты / долготы через geo не показывает вывода ... - person Cerin; 16.07.2012
comment
Но как насчет разрешений в AndroidManifest.xml? - person MrBr; 04.04.2013
comment
adb emu geo fix 30.219470 -97.745361 - person Bryan Rehbein; 08.08.2013
comment
Я заметил, что вам нужно, чтобы ваше приложение отслеживало позицию, ЗАТЕМ вводите координаты. Он не займет последнюю позицию в аккаунте, если вы зарегистрированы для обновления местоположения. (Это кажется логичным.) - person tiktak; 28.03.2014
comment
Следите за порядком, «лон до лата»! - person Christoph; 15.04.2014
comment
Я написал приложение MockGeoFix (< href = "https://github.com/luv/mockgeofix" rel = "nofollow noreferrer"> исходный код), который предоставляет тот же интерфейс, что и эмулятор, поэтому вы можете подключиться к телефону через порт 5554 по Telnet и использовать geo fix или geo nmea так же, как с эмулятором. - person luv; 20.06.2016
comment
Команда geo fix доступна, только если вы сначала auth. Стоит упомянуть ... - person aroth; 26.07.2016
comment
Команда типа geo fix 40 57.5555 0 12 выдает ошибку: KO: argument '.5555 0 12' is not a number. Хотя работает следующее: geo fix 40 57,5555 0 12. Вероятно, это какая-то проблема, связанная с локализацией. - person ezze; 16.10.2017
comment
Это решение не имеет особого смысла после того, как местоположение и файлы GPX были добавлены в пользовательский интерфейс эмулятора. См. Ответ @eden ниже - person Oleg Gryb; 19.05.2019

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

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

эмулятор с кнопкой меню

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

введите описание изображения здесь

Версия Android Studio: 2.3.3

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

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

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

введите описание изображения здесь

person eden    schedule 14.07.2017
comment
в этом решении нужны игровые сервисы в эмуляторе? - person Kevan Aghera; 06.04.2018
comment
Я так не думаю. - person eden; 06.04.2018
comment
когда я открываю приложение в эмуляторе google api client null, поэтому не могу загрузить карту в эмуляторе. и мобильное устройство мне подходит. - person Kevan Aghera; 06.04.2018
comment
Вы вошли в систему? - person eden; 06.04.2018
comment
пожалуйста, сделайте это и дайте нам знать результат - person eden; 06.04.2018
comment
Я подтверждаю, что для этого не нужно входить в свою учетную запись Google. Прохладный! - person xarlymg89; 06.06.2018
comment
Мне пришлось перезапустить эмулируемую ОС, чтобы она распознала новое местоположение. - person Nate Whittaker; 20.05.2019
comment
Как разрешить эмулятору использовать мое реальное местоположение (местоположение ноутбука) без явного указания долготы и широты? - person Kareem Jeiroudi; 09.07.2019
comment
Эмулятор Android, поставляемый с Android Studio 3.5.1, не имеет опции отправки на вкладке местоположения. есть кнопка установки местоположения, но она не меняет местоположение при чтении с использованием пакета геолокатора - person Aseem; 10.11.2019

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

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

android-gps-emulator

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

person dpdearing    schedule 15.10.2010
comment
вау спасибо! установка работала нормально, но мне не удалось установить соединение с эмулятором - ›журнал выводит java.net.ConnectionRefused. Затем я попробовал telnet localhost 5554 (с терминала), и это сработало .. Кто-нибудь еще успешно тестировал ваш эмулятор на Mac? - person ottel142; 12.09.2013
comment
Я не тестировал его, но это выглядит так здорово, что я думаю, что Google должен рассказать об этом миру. Простые идеи всегда лучше. Почему об этом никто не подумал? - person tiktak; 28.03.2014
comment
@ ottel142 - Да, я действительно работаю на Mac без этой проблемы (использую Chrome на Mavericks). Я вижу это сообщение ConnectionRefused, если я запускаю эмулятор GPS перед запуском виртуального устройства Android. В верхней части браузера также отображается сообщение Ошибка при подключении к порту 5554 ... Все работает нормально, если я нажимаю кнопку «Изменить порт эмулятора» для повторного подключения. - person dpdearing; 06.04.2014
comment
Именно то, что мне нужно. - person David; 30.03.2016
comment
Это хорошая программа, но локальность системы меняет способ работы с плавающей запятой. В моей системе это должно быть geo fix 42,42 42,42 42 запятые вместо точек. - person nurettin; 19.06.2016
comment
@nurettin Спасибо за отзыв. Я создам для этого задачу. Если у вас есть исправление, я бы хотел, чтобы вы создали пиар - person dpdearing; 23.06.2016
comment
@dpdearing Я бы с радостью попробовал разные способы, но времени мало. Моя первая попытка - использовать String.format("geo fix %f %f на GeoFixAsyncCallback.onSuccess вместо объединения с плавающей точкой с + - person nurettin; 23.06.2016
comment
Это отличный проект, но у меня он не работает. Я не могу подключиться через telnet к своему устройству Android. - person marti_; 07.01.2018
comment
@Osgux Не стесняйтесь размещать описание своих проблем на GitHub - person dpdearing; 08.01.2018

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

person SteveCav    schedule 23.01.2012
comment
Это, безусловно, самый простой метод, который я когда-либо видел. Убедитесь, что вы настроили AVD с поддержкой GPS, затем в перспективе DDMS щелкните эмулятор, который работает в разделе «Устройства», выберите вкладку «Управление эмулятором» на центральной правой панели, затем внизу находится раздел «Элементы управления местоположением», упомянутый SteveCav (Использование Eclipse Juno 4.2 для разработчиков Java с последней версией ADT). В панель «Мое местоположение» даже были предварительно загружены данные о местоположении. - person Steven Magana-Zook; 18.11.2012
comment
отличный ответ! работает с любым ide, потому что ddms является частью sdk (yoursdkfolder / tools /) - person Zarokka; 05.12.2013
comment
Это, а также решение telnet, описанное выше, у меня не работало. Я пытаюсь определить свое местоположение таким образом, но оно все еще равно нулю. LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Location location = mlocManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); - person crowmagnumb; 31.07.2014
comment
Когда я использую элементы управления местоположением в DDMS, я получаю следующую ошибку при попытке отправить Unable to send command to the emulator. Есть идеи, почему это не работает? Я использую Nexus 4 AVD по умолчанию - person emersonthis; 21.09.2014
comment
@zarroka - я использую Android SDK, а в Window нет опции Open Perspective (или DDMS). Что вы имели в виду, что он работает с любым SDK? - person dwanderson; 10.04.2015
comment
Я не могу это сделать, элементы управления локациями неактивны - person Utsav Gupta; 09.10.2015

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

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

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

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

person ofer    schedule 23.02.2015
comment
В моем случае все поля не редактируются. У тебя есть идея? - person Olkunmustafa; 05.10.2016
comment
@MustafaOlkun Это, вероятно, означает, что эти элементы управления есть в самом эмуляторе. Ищите ... рядом с эмулятором. - person Justin; 02.11.2016
comment
У меня точно такая же проблема. Они не редактируются. и да, есть .... Однако, когда я помещаю что-нибудь и отправляю, в приложении ничего не меняется .... - person KansaiRobot; 01.02.2017

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

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, перейдите в меню «Окно», выберите «Показать вид»> «Другое»> «Управление эмулятором», и вы можете отправить координаты из появившейся панели управления эмулятором.

person David Hedlund    schedule 17.02.2010
comment
а дружище где долгота и широта ?? - person UMAR-MOBITSOLUTIONS; 17.02.2010
comment
Я пробовал использовать этот ответ, отправляя фиктивные значения в элемент управления эмулятором, но когда я нажимаю кнопку отправки, он ничего не делает, нет сообщения, ничего не появляется, чтобы подтвердить отправленные значения или нет. seocnd thing GeoPoint g = myLocation.getMyLocation (); возвращает нулевое значение. - person UMAR-MOBITSOLUTIONS; 17.02.2010
comment
Вы уверены, что используете его в runOnFirstFix? Потому что это событие возникает, когда устройство впервые получает координаты GPS, поэтому, если оно когда-либо возникает, getMyLocation обязательно должен вернуть значение. - person David Hedlund; 17.02.2010

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

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

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

person f.khantsis    schedule 02.05.2016

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

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

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

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

Сначала в меню «Eclipse» выберите «Окно», затем выберите «Открыть перспективу», затем выберите «DDMS». т.е. Окно- ›Открыть предполагаемое-› DDMS.

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

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

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

3. Используя telnet.

В команде запуска введите это.

telnet localhost 5554

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

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

geo fix long lat    
geo fix -121.45356 46.51119 4392

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

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

android-gps-emulator

person Muhammad Yousaf Sulahria    schedule 06.11.2012
comment
Этот первый вариант сработал для меня с одним небольшим изменением. Я не мог открыть окно DDMS из Eclipse, у меня была пустая серая страница. Но пока у меня был запущен эмулятор, если бы я открывал DDMS из командной строки (C: \ Program Files \ Android \ android-sdk \ tools \ ddms), я мог бы увидеть окно, которое вы описали с помощью устройств слева и вкладки Emulator Control. на правом. Спасибо! - person Eric Barr; 12.11.2013

Наконец, с последним выпуском Android Studio 4 и его новым обновлением эмулятора 23.10.2019 это стало проще. Запустите свой эмулятор и перейдите к параметрам эмулятора ...> на вкладке «Маршруты» вы можете выбрать две точки на карте от / до и начать новый маршрут с регулируемой скоростью воспроизведения, которая может достигать более 1000 км / ч!

введите описание изображения здесь

person Smile2Life    schedule 27.10.2019
comment
так как получить текущую широту и долготу? - person Mahmoud Ayman; 13.06.2020

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

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

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

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

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

  3. Отправьте данные о местоположении: * geo fix, чтобы отправить фиксированное географическое местоположение.

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

    geo fix -121.45356 46.51119 4392
    
person Dan Zhao    schedule 12.04.2011

Я написал скрипт на 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()
person user937284    schedule 15.07.2015
comment
Работает как шарм! Спасибо, что поделился. - person Alberto Gaona; 21.08.2015
comment
Ммммм. Я думаю, есть небольшая ошибка: насколько я знаю, сообщение с географическим исправлением получает долготу и широту в таком порядке: вы отправляете их в обратном порядке. См. Ответы выше. - person Alberto Gaona; 21.08.2015
comment
Не работает. Эмулятор прослушивает порт, но ничего не получает. - person Durga Swaroop; 04.12.2016

У меня сработало следующее решение - откройте командную строку и напишите:

adb emu geo fix [longtitude] [latitude]
person Asaf Pinhassi    schedule 26.10.2016

В Mac, Linux или Cygwin:

echo 'geo fix -99.133333 19.43333 2202' | nc localhost 5554

Это доставит вас в Мехико. Соответственно измените свою долготу / широту / высоту. Этого должно быть достаточно, если вас не интересует nmea.

person Alberto Gaona    schedule 03.06.2015
comment
Возможно, вам придется настроить 5554 на текущий порт прослушивания эмулятора. - person Alberto Gaona; 04.06.2015
comment
как вы определили ценность для разных городов? Я пытаюсь скопировать значение из карт Google, и оно не находится в диапазоне от 90 до - 90. - person anotherCoder; 15.06.2021

Я использую функцию DDMS затмения для отправки GPS. введите описание изображения здесь

person boiledwater    schedule 17.06.2013

В Linux, где коммуникационные порты заблокированы. переместите терминал в папку инструментов платформы внутри android sdk и запустите эту команду:

./adb -s #{device_name} emu geo fix #{longitude} #{latitude}
person abhishek singh    schedule 17.12.2013

См. Получение местоположения пользователя

Просмотрите раздел Предоставление фиктивных данных о местоположении. Вы найдете для этого решение.

person daemon54    schedule 15.03.2012

Сначала перейдите в раздел DDMS в своем затмении, чем откройте элемент управления эмулятором .... Перейдите в раздел вручную, установите широту и долготу, а затем нажмите кнопку отправки

person sachin pareek    schedule 13.12.2012

Я пытался установить географическое исправление через adb для многих точек и не мог заставить мое приложение видеть какие-либо данные GPS. Но когда я попытался открыть DDMS, выбрав процесс своего приложения и отправив координаты через вкладку управления эмулятором, это сразу сработало.

person James    schedule 08.08.2010
comment
Вам не нужно указывать процесс ... Или, возможно, DDMS в 2010 требует этого. - person ; 14.02.2012

Dalvik Debug Monitor> Выберите эмулятор> вкладка Emulator Control> Location Controls.

DDMS - android_sdk / tools / ddms ИЛИ android_sdk / tools / monitor

person Dan    schedule 11.12.2012

Если вы используете eclipse, то с помощью контроллера эмулятора вы можете вручную установить широту и долготу и запустить приложение на основе карты в эмуляторе.

person Swapnil    schedule 27.01.2014

Если вы используете Android Studio (1.3):

  • Нажмите на меню «Инструменты».
  • «Android»
  • «Монитор устройства Android»
  • нажмите на свой текущий эмулятор
  • Вкладка «Управление эмулятором»
  • перейдите в "Управление местоположением" и введите широту и долготу.
person electrobabe    schedule 06.08.2015

Просто сделайте ответ Альберто Гаоны одной строкой

token=$(cat ~/.emulator_console_auth_token); cat <(echo -e "auth $token \n  geo fix 96.0290791 16.9041016  \n exit") - | nc localhost 5554

5554 - это номер порта эмулятора, показанный в adb devices.

Лучше бы adb emu сработало.

person Kyaw Tun    schedule 26.01.2017
comment
очень полезный лайнер! в моем случае мне пришлось удалить пробелы между \ n: token = $ (cat ~ / .emulator_console_auth_token); cat ‹(echo -e auth $ token \ ngeo fix 96.0290791 19.9041016 \ nexit) - | NC localhost 5554 - person Jeremie; 23.03.2017

Если вышеуказанные решения не работают. Попробуй это:

Внутри вашего android Manifest.xml добавьте следующие две ссылки ВНЕ тега приложения, но, конечно, внутри тега манифеста

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses-permission>
<uses-permission android:name="android.permission.INTERNET" ></uses-permission>
person ssgao    schedule 08.10.2012

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

Убедитесь, что вы выбрали изображение с API Google при создании AVD.

person dvim    schedule 17.10.2012
comment
что вы имеете в виду под изображением и при создании AVD, как мне выбрать изображение с помощью API Google? при создании AVD в eclipse таких опций нет. - person user1911703; 28.07.2015
comment
Убедитесь, что вы загрузили изображения с API Google через диспетчер Android SDK. - person dvim; 28.07.2015

Уже упомянутый многократный ответ на использование команды оболочки "geo fix ..." является правильным ответом. Но если вы используете LocationClient.getLastLocation () для получения данных, стоит упомянуть, что сначала он не будет работать. Класс LocationClient использует сервис Google Play для получения координат. Для меня это начало работать после того, как однажды запустил приложение эмуляторов карт. Во время первого запуска вас просят разрешить приложениям Google доступ к вашему местоположению, что, я думаю, помогает.

person Maik    schedule 24.10.2013

Для собственного проекта я разработал онлайн-сервис, который может предоставить эмулятору Android смоделированное местоположение.

Он использует географические координаты, а не географические координаты, которые позволяют устанавливать скорость, курс, точное время и т. Д. В дополнение к широте и долготе.

Службе требуется утилита командной строки nc (netcat) и ничего больше.

http://www.kisstech.ch/nmea/

person Gerhard Wesp    schedule 01.03.2015

Вы можете использовать эмулятор, например genymotion, который дает вам гибкость для эмуляции вашего текущего местоположения по GPS и т. Д.

person Neil B    schedule 06.06.2016
comment
@KansaiRobot Ну, мне действительно нужно было установить Google Play (stackoverflow.com/questions/17831990/) на эмуляторе - person Neil B; 03.02.2017

Для Android Studio существует плагин «Mock Location Plugin». Вы можете эмулировать несколько точек с помощью этого плагина. Вы можете найти подробное руководство по использованию по этой ссылке: Android Studio. Имитация нескольких точек GPS с помощью плагина Mock Location

person Jesús Amieiro    schedule 18.07.2016

Пока не могу комментировать, поэтому обновите здесь ответ @ectomorphs, который при использовании telneting теперь требует наличия токена аутентификации. В Linux, который находится в /home/username/.emulator_console_auth_token

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

FILE = open('/home/username/.emulator_console_auth_token', 'r')
AUTH_TOKEN = FILE.read()
FILE.close()

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("auth {0}\n".format(AUTH_TOKEN))
tn.read_until("OK", 5)

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()

Из сценария оболочки можно установить координату следующим образом

#!/usr/bin/env bash
export ATOKEN=`cat ~/.emulator_console_auth_token`
echo -ne "auth $ATOKEN\ngeo fix -99.133333 19.43333 2202\n"  | nc localhost 5554
person draekko    schedule 11.10.2016

Откройте Android studio-> меню инструментов-> Android-> Android Device Monitor-> вкладка эмулятора-> контроль местоположения-> Установите требуемую широту и долготу и проверьте свой проект в соответствии с вашими потребностями.

person Premkumar Manipillai    schedule 07.11.2017
comment
вы можете установить значение статического местоположения (широта и долгота), какое местоположение вам нужно проверить непосредственно в части кодирования? - person Premkumar Manipillai; 11.12.2017

В затмении:

Возможно, вам придется перетащить окно DDMS вниз. «Управление расположением» находится в разделе «Действия с телефонной связью» и может быть скрыто консольным видом обычного размера (панель с консолью, LogCat и т. Д. Может закрывать его!)

~

person Droid Teahouse    schedule 06.01.2015
comment
Внутри DDMS я нашел под управлением эмулятора. Вкладка под элементами управления местоположением. - person user914425; 11.08.2015

Я сделал небольшой скрипт, похожий на один из предыдущих ответов, но с использованием expect вместо python - потому что он немного проще (expect был изобретен для этого).

#!/usr/bin/expect

set port [lindex $argv 0]
set lon [lindex $argv 1]
set lat [lindex $argv 2]

set timeout 1
spawn telnet localhost $port
expect_after eof { exit 0 }

## interact
expect OK

set fp [open "~/.emulator_console_auth_token" r]
if {[gets $fp line] != -1} {
  send "auth $line\r"
}

send "geo fix $lon $lat\r"
expect OK
send "exit\r"

Пример использования: sendloc 5554 2.35607 48.8263

person BoD    schedule 21.08.2017

У меня была такая же проблема в Android Studio 3.5.1. Когда я щелкнул три точки справа от эмулятора Android и выбрал вкладку местоположения, я не увидел параметр отправки. Я попытался установить точку местоположения, но это не изменило мое местоположение в купертино по умолчанию. Откройте карты Google, и он автоматически определит ваше местоположение, и ваше местоположение купертино изменится.

person Aseem    schedule 10.11.2019

Перейдите к Extended controls в эмуляции. После этого вы можете установить местоположение для эмуляции, выполнив поиск или перетащив карту в то место, которое вы хотите установить.

location

Наконец, нажмите кнопку SET LOCATION, чтобы сохранить.

person Vieclam24hNetVn    schedule 07.06.2021
comment
Ты был прав! - person Doan Bui; 07.06.2021