Я хочу получить долготу и широту в эмуляторе Android для тестирования.
Кто-нибудь может подсказать мне, как этого добиться?
Как установить местоположение эмулятора в тестовое положение?
Я хочу получить долготу и широту в эмуляторе Android для тестирования.
Кто-нибудь может подсказать мне, как этого добиться?
Как установить местоположение эмулятора в тестовое положение?
Ответы:
Вы можете подключиться к эмулятору через Telnet. Затем у вас есть консоль эмулятора, которая позволяет вводить определенные данные, такие как гео-исправления, сеть и т. Д.
Как использовать консоль подробно объясняется здесь . Для подключения к консоли откройте командную строку и введите
telnet localhost 5554
Затем вы можете использовать команду geo, чтобы установить широту, долготу и, если необходимо, высоту на устройстве, которое передается всем программам с помощью провайдера местоположения GPS. Смотрите ссылку выше для дальнейших инструкций.
Конкретная команда для запуска в консоли
geo fix <longitude value> <latitude value>
Я нашел этот сайт полезным для поиска реалистичного латинского языка: http://itouchmap.com/latlong.html
Если вам нужно больше одной координаты, вы можете использовать файл kml с маршрутом, это немного описано в этой статье . Я не могу найти лучший источник в данный момент.
geo fix
Команда доступна только если вы auth
первый. Может быть , стоит упомянуть ...
Никто здесь не упомянул встроенное решение самого эмулятора, поэтому для будущих посетителей я бы хотел поделиться им с визуальными эффектами.
Сначала запустите эмулятор Android и нажмите кнопку меню (3 точки), показанную ниже:
Затем на левой панели выберите Местоположение и измените координаты в соответствии с вашими потребностями. После нажатия кнопки Отправить изменения вступят в силу (я рекомендую вам открыть Google Карты для лучшего понимания).
Версия Android Studio: 2.3.3
Кроме того, для того, чтобы ваши различные местоположения приходили к вашему приложению в режиме реального времени, вы можете использовать файл GPX. Создать этот файл очень просто по ссылке в Google Map:
Используйте кнопку «Загрузить GPS / KML», чтобы загрузить созданный файл в эмулятор, выберите скорость и нажмите зеленую кнопку воспроизведения внизу. Места будут отправлены в режиме реального времени, как показано на рисунке ниже.
Я искал лучший способ установить координаты GPS эмулятора, чем использовать geo fix
и вручную определять конкретные координаты широты и долготы.
Не найдя ничего, я собрал небольшую программу, которая использует GWT и API Карт Google, чтобы запустить инструмент карты на основе браузера, чтобы установить местоположение GPS в эмуляторе:
Надеемся, что это может быть полезно, чтобы помочь другим, которые, несомненно, также наткнуться на эту трудность / вопрос.
ConnectionRefused
сообщение, если я запускаю эмулятор GPS перед запуском виртуального устройства Android. В верхней части моего браузера также написано «Ошибка при подключении к порту 5554 ...» Все работает нормально, если я нажимаю кнопку «Изменить порт эмулятора» для повторного подключения
geo fix 42,42 42,42 42
запятые вместо точек.
Если вы используете Eclipse
, перейдите к Window->Open Perspective->DDMS
, затем введите один Location Controls
и нажмите Send
.
LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location location = mlocManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Unable to send command to the emulator
. Есть идеи, почему это не работает? Я использую Nexus 4 AVD по умолчанию
Для пользователей Android Studio:
запустить эмулятор,
Затем перейдите к Tools -> Android ->Android device monitor
откройте Emulator Control
вкладку и используйте группу элементов управления местоположением.
Предполагая, что у вас есть настроенное и запущенное представление карты:
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, перейдите в меню «Окно», выберите «Показать представление»> «Другое»> «Управление эмулятором», и вы можете отправить координаты из появившейся панели управления эмулятора.
runOnFirstFix
? Потому что это событие, которое возникает, когда устройство впервые получает GPS-положение, поэтому, если оно когда-либо было поднято, оно getMyLocation
обязательно должно вернуть значение.
Для нового эмулятора:
http://developer.android.com/tools/devices/emulator.html#extended
В основном, нажмите на кнопку с тремя точками в элементах управления эмулятора (справа от эмулятора), и откроется меню, которое позволит вам управлять эмулятором, включая местоположение
1. Пользователи Android Studio.
После запуска эмулятора зайдите в Инструменты-> Android-> Монитор устройства Android
Щелкните по вкладке управления эмулятором в группе элементов управления местоположением.
2. Затмение пользователей.
Сначала в Eclipse In Menu Выберите «Окно», затем «Открыть перспективу», затем выберите «DDMS». то есть Window-> Open Prespective-> DDMS.
Вы увидите на левой панели устройства и на правой стороне вы увидите различные вкладки. Выберите вкладку «Управление эмулятором».
Внизу вы увидите панель управления местоположением. Выберите вкладку «Вручную».
Введите долготу и широту в текстовые поля, затем нажмите кнопку «Отправить». Он отправит вам позицию эмулятора и приложение.
3. Использование telnet.
В команде запуска введите это.
telnet localhost 5554
Если вы не используете Windows, вы можете использовать любой клиент Telnet.
После подключения через telnet используйте следующую команду, чтобы отправить свою позицию в эмулятор.
geo fix long lat
geo fix -121.45356 46.51119 4392
4. Используйте браузерный инструмент Google Maps
Существует программа, которая использует GWT и API Карт Google для запуска инструмента карт на основе браузера, чтобы установить местоположение GPS в эмуляторе:
Использование команды "geo" в консоли эмулятора
Чтобы отправить данные фиктивного местоположения из командной строки:
Запустите ваше приложение в эмуляторе Android и откройте терминал / консоль в каталоге / tools вашего SDK.
Подключитесь к консоли эмулятора:
telnet localhost 5555
(Замените 5555 тем портом, на котором работает ваш эмулятор)
Отправка данных о местоположении: * Географическое исправление для отправки фиксированного географического местоположения.
Эта команда принимает долготу и широту в десятичных градусах и дополнительную высоту в метрах. Например:
geo fix -121.45356 46.51119 4392
Я написал скрипт на 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()
Я использую функцию затмения DDMS для отправки GPS.
В Linux, где порты связи заблокированы. Перейдите в терминал к папке platform-tools внутри android sdk
и запустите эту команду:
./adb -s #{device_name} emu geo fix #{longitude} #{latitude}
В Mac, Linux или Cygwin:
echo 'geo fix -99.133333 19.43333 2202' | nc localhost 5554
Это приведет вас в Мехико. Измените свою долготу / широту / высоту соответственно. Этого должно быть достаточно, если вы не заинтересованы в nmea.
У меня сработало следующее решение - открой командную строку и напиши:
adb emu geo fix [longtitude] [latitude]
Наконец, с последним выпуском Android Studio 4 и его новым обновлением Эмулятора 23.10.2009 стало проще. Запустите свой эмулятор и перейдите к параметрам эмулятора ...> во вкладке «Маршруты» вы можете выбрать две точки на карте от / до и начать новый маршрут с регулируемой скоростью воспроизведения, которая может достигать более 1000 км / ч!
См. Получение местоположения пользователя
Посмотрите в разделе « Предоставление ложных данных о местоположении» . Вы найдете решение для этого.
Сначала перейдите в раздел DDMS в вашем затмении, чем откройте эмулятор Control .... Перейти в раздел Manual установите lat и long, а затем нажмите кнопку Send.
Я пытался установить гео-фикс через adb для многих точек и не мог заставить мое приложение видеть какие-либо данные GPS. Но когда я попытался открыть DDMS, выбрать процесс моего приложения и отправить координаты через вкладку управления эмулятором, это сразу сработало.
Если вы используете Android Studio (1.3):
Просто сделайте ответ Альберто Гаона в одну строку
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
работа.
Если вышеуказанные решения не работают. Попробуй это:
Внутри вашего android Manifest.xml добавьте следующие две ссылки вне тега приложения, но, конечно, внутри тега manifest
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses-permission>
<uses-permission android:name="android.permission.INTERNET" ></uses-permission>
Мне не удалось получить исправление GPS на эмуляторе, когда эмулятор работал с изображением Android без API Google. Как только я изменил изображение, чтобы оно содержало API Google, все упомянутые здесь способы сработали.
Убедитесь, что вы выбрали изображение с API Google при создании AVD.
Уже упомянутый многократный ответ на использование команды оболочки « geo fix ... » является правильным ответом. Но в случае, если вы используете LocationClient.getLastLocation () для извлечения ваших данных, стоит упомянуть, что сначала они не будут работать. Класс LocationClient использует сервис Google Play для получения координат. Для меня это начало работать после запуска приложения эмуляторов карт. При первом запуске вас попросят разрешить приложениям Google доступ к вашему местоположению, что, я полагаю, сработает.
Для собственного проекта я разработал онлайн-сервис, который может предоставить эмулятор местоположения для эмулятора Android.
Он использует geo nmea, а не geo fix, что позволяет ему устанавливать скорость, курс, точное время и т. Д. В дополнение только к широте / долготе.
Служба требует утилиту командной строки nc (netcat) и ничего больше.
Вы можете использовать эмулятор, такой как genymotion, который дает вам возможность эмулировать ваше текущее местоположение GPS и т. Д.
Есть плагин для Android Studio, который называется «Mock Location Plugin». Вы можете эмулировать несколько точек с этим плагином. Вы можете найти подробное руководство по использованию в этой ссылке: Android Studio. Имитация нескольких точек GPS с плагином Mock Location
Откройте Android studio-> Меню инструментов-> Android-> Android Device Monitor-> Вкладка Эмулятор-> Управление местоположением-> Установите необходимую широту и долготу и проверьте ваш проект в соответствии с вашими потребностями
В затмении:
Возможно, вам придется перетащить окно DDMS вниз. «Элементы управления местоположением» находятся в разделе «Действия с телефонией» и могут быть скрыты в виде консоли обычного размера (панель с консолью, LogCat и т. Д. Может скрывать ее!)
~