Cómo emular la ubicación GPS en el emulador de Android?


Quiero obtener longitud y latitud en el emulador de Android para probar.

¿Puede alguien guiarme cómo lograr esto?

¿Cómo establezco la ubicación del emulador en una posición de prueba?

Author: jdev, 2010-02-17

30 answers

Puede conectarse al Emulador a través de Telnet. Luego tiene una consola emuladora que le permite ingresar ciertos datos como correcciones geográficas, red, etc.

Cómo usar la consola se explica ampliamente aquí. Para conectarse a la consola, abra una línea de comandos y escriba

telnet localhost 5554

Luego puede usar el comando geo para establecer una latitud, longitud y, si es necesario, altitud en el dispositivo que se pasa a todos los programas que utilizan el proveedor de ubicación gps. Ver el enlace de arriba para más instrucción.

El comando específico a ejecutar en la consola es

geo fix <longitude value> <latitude value>

Encontré este sitio útil para encontrar un lat/lng realista: http://itouchmap.com/latlong.html

Si necesita más de una coordenada, puede usar un archivo kml con una ruta, ya que también se describe un poco en este artículo . No puedo encontrar una mejor fuente en este momento.

 418
Author: Janusz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-12 02:57:07

Estaba buscando una mejor manera de establecer las coordenadas GPS del emulador que usar geo fix y determinar manualmente las coordenadas de latitud y longitud específicas.

Incapaz de encontrar nada, armé un pequeño programa que usa GWT y la API de Google Maps para lanzar una herramienta de mapas basada en navegador para establecer la ubicación GPS en el emulador:

Android-gps-emulador

Esperemos que pueda ser útil para ayudar a otros que sin duda tropezarán con esto dificultad / pregunta también.

android-emulador de gps

 104
Author: dpdearing,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-08 14:30:33

Si está usando Eclipse, vaya a Window->Open Perspective->DDMS, luego escriba uno en Location Controls y presione Send.

 80
Author: SteveCav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-29 08:36:45

Aquí nadie mencionó la solución incorporada del emulador en sí, por lo que para futuros visitantes, me gustaría compartirla con elementos visuales.

Primero, ejecute su emulador de Android y haga clic en el botón de menú (3 puntos) que se muestra a continuación:

emulador con botón de menú

Luego, desde el panel izquierdo, seleccione Ubicación y cambie las coordenadas de acuerdo a sus necesidades. Después de presionar el botón Enviar , los cambios entrarán en vigor inmediatamente (te recomiendo que abras Google Maps para mejor comprensión).

introduzca la descripción de la imagen aquí

Versión de Android Studio: 2.3.3

 33
Author: eden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-14 09:00:38

Para los usuarios de Android Studio:

Ejecute el emulador,

Luego, vaya a Tools -> Android ->Android device monitor

Abra la pestaña Emulator Control y use el grupo controles de ubicación.

 32
Author: ofer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-19 11:11:13

Asumiendo que tienes un mapview configurado y funcionando:

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

Necesitarás el siguiente permiso en tu manifiesto:

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

Y para enviar coordenadas simuladas al emulador desde Eclipse, vaya al menú "Ventana", seleccione "Mostrar vista" > "Otro" > "Control del emulador", y puede enviar coordenadas desde el panel de control del emulador que aparece.

 13
Author: David Hedlund,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-17 10:22:24

Para el nuevo emulador:

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

Básicamente, haga clic en el botón de tres puntos en los controles del emulador (a la derecha del emulador) y se abrirá un menú que le permitirá controlar el emulador incluyendo la ubicación

 12
Author: f.khantsis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-02 10:30:14

1. Usuarios de Android Studio.

Después de ejecutar el emulador goto Tools->Android - > Android device monitor

Haga clic en la pestaña Control del emulador cambiar desde el grupo controles de ubicación.

2. Usuarios de Eclipse.

Primero En Eclipse En El Menú, Seleccione "Ventana", luego Seleccione "Abrir Perspectiva" y Luego Seleccione "DDMS". es decir, Ventana-> Abrir Prespectiva - >DDMS.

Verá en el Panel de Dispositivos del lado izquierdo y en el Lado derecho verá diferentes pestañas. Seleccionar Pestaña" Control del Emulador".

En la parte inferior verá el Panel de Controles de Ubicación. Seleccione la Pestaña "Manual".

Introduzca la longitud y la latitud en los Cuadros de texto a continuación, Haga clic en Enviar Botón. Le enviará la posición al emulador y a la aplicación.

3. Usando telnet.

En el comando run escriba esto.

telnet localhost 5554

Si no está utilizando Windows puede utilizar cualquier cliente telnet.

Después de conectarse con telnet use el siguiente comando para enviar su posición a emulador.

geo fix long lat    
geo fix -121.45356 46.51119 4392

4. Utilice la herramienta de Google maps basada en el navegador

Hay un programa que utiliza GWT y la API de Google Maps para lanzar una herramienta de mapas basada en navegador para establecer la ubicación GPS en el emulador:

Android-gps-emulator

 12
Author: Muhammad Yousaf Sulahria,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-16 19:45:25

Usando el comando" geo " en la consola del emulador

Para enviar datos de ubicación simulados desde la línea de comandos:

  1. Inicie su aplicación en el emulador de Android y abra un terminal / consola en el directorio /tools de su SDK.

  2. Conéctese a la consola del emulador:

    telnet localhost 5555 (Reemplace 5555 con cualquier puerto en el que se esté ejecutando su emulador)

  3. Enviar los datos de ubicación: * geo fix para enviar una ubicación geográfica fija.

    Este comando acepta una longitud y latitud en grados decimales, y una altitud opcional en metros. Por ejemplo:

    geo fix -121.45356 46.51119 4392
    
 10
Author: Dan Zhao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-20 20:55:57

Escribí un script en python para enviar ubicaciones gps al emulador a través de telnet. Define una ubicación de origen y una de destino. También hay un desplazamiento de tiempo que le permite controlar cuánto tiempo se enviarán las coordenadas al dispositivo. Un lugar está siendo empujado una vez por segundo.

En el siguiente ejemplo, el script se mueve de Berlín a Hamburgo en 120 segundos. Un paso / ubicación gps por segundo con distancias aleatorias.

#!/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()
 8
Author: user937284,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-20 21:34:45

Uso la función DDMS plug eclipse para enviar GPS. introduzca la descripción de la imagen aquí

 5
Author: boiledwater,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-17 09:39:29

En Linux donde los puertos de comunicación están bloqueados. navegue el terminal a la carpeta platform-tools dentro de android sdk y ejecute este comando:

./adb -s #{device_name} emu geo fix #{longitude} #{latitude}
 5
Author: abhishek singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-17 08:26:13

En Mac, Linux o Cygwin:

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

Eso te pondrá en la Ciudad de México. Cambie su longitud/latitud/altitud en consecuencia. Eso debería ser suficiente si no está interesado en nmea.

 5
Author: Alberto Gaona,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-03 20:57:49

Ver Obtener la Ubicación del usuario

Busque en Proporcionando Datos de Ubicación Simulados. Usted encontrará la solución para ello.

 4
Author: daemon54,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-21 01:32:22

Primero vaya a la sección DDMS en su eclipse Que el control del emulador abierto .... Ir A La Sección Manual ajuste lat y largo y luego presione el botón Enviar

 4
Author: sachin pareek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-13 07:00:45

La siguiente solución funcionó para mí: abra la línea de comandos y escriba:

adb emu geo fix [longtitude] [latitude]
 4
Author: Asaf Pinhassi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-26 05:20:05

Estaba tratando de establecer la corrección geográfica a través de adb para muchos puntos y no pude obtener mi aplicación para ver los datos de GPS. Pero cuando intenté abrir DDMS, seleccionar el proceso de mi aplicación y enviar coordenadas a través de la pestaña de control del emulador funcionó de inmediato.

 3
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-08 12:38:10

Dalvik Debug Monitor > Seleccionar Emulador > Pestaña Control del Emulador > Controles de Ubicación.

DDMS andro android_sdk/tools/ddms O android_sdk/tools / monitor

 3
Author: Dan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-11 18:13:43

Si está utilizando eclipse, entonces utilizando el controlador del emulador, puede configurar manualmente la latitud y la longitud y ejecutar su aplicación basada en mapas en emulador

 2
Author: Swapnil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-27 16:44:27

Si estás usando Android Studio (1.3):

  • Haga clic en el menú"Herramientas"
  • "Androide"
  • "Android device monitor"
  • haga clic en su emulador actual
  • Pestaña "Control del emulador"
  • vaya a" Controles de ubicación " e ingrese Lat y Lon
 2
Author: electrobabe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-06 12:47:54

Solo haz la respuesta de Alberto Gaona en una línea

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

5554 es el número de puerto del emulador que se muestra en adb devices.

Habría sido mejor si adb emu de trabajo.

 2
Author: Kyaw Tun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-26 04:06:22

Si las soluciones anteriores no funcionan. Prueba esto:

Dentro de su Manifiesto android.xml, agregue los siguientes dos enlaces FUERA de la etiqueta de la aplicación, pero dentro de su etiqueta de manifiesto, por supuesto

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses-permission>
<uses-permission android:name="android.permission.INTERNET" ></uses-permission>
 1
Author: ssgao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-08 04:03:05

No pude obtener una corrección de GPS en el emulador cuando emulador estaba ejecutando Android Image sin API de Google. Tan pronto como cambié la imagen para contener las API de Google, todas las formas mencionadas aquí para obtener una solución de GPS funcionaron.

Asegúrese de seleccionar una imagen con las API de Google al crear AVD.

 1
Author: dvim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-17 05:10:37

Para un proyecto propio, desarrollé un servicio en línea que puede proporcionar una ubicación simulada al emulador de Android.

Utiliza geo nmea en lugar de geo fix, lo que le permite establecer la velocidad, el curso, el tiempo preciso, etc. además de solo lat / lon.

El servicio requiere la utilidad de línea de comandos nc (netcat) y nada más.

Http://www.kisstech.ch/nmea/

 1
Author: Gerhard Wesp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-01 23:08:38

Puedes usar un emulador como genymotion que te da la flexibilidad de emular tu ubicación GPS actual, etc.

 1
Author: Neil B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-06 14:56:14

Hay un plugin para Android Studio llamado "Mock Location Plugin". Puede emular varios puntos con este plugin. Puede encontrar un manual de uso detallado en este enlace: Android Studio. Simule múltiples puntos GPS con el complemento de ubicación Simulada

 1
Author: Jesús Amieiro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-18 07:28:42

Abre Android studio - > Menú Herramientas - > Android - > Monitor de dispositivo Android - > Pestaña Emulador- > Control de ubicación - > Establece tu latitud y longitud requeridas y verifica tu proyecto según tu necesidad

 1
Author: Premkumar Manipillai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-07 10:33:50

La respuesta ya mencionada varias veces para usar el comando shell "geo fix..." es la respuesta correcta. Pero en caso de que utilice LocationClient.getLastLocation () para recuperar tus datos vale la pena mencionar que no funcionará al principio. La clase LocationClient utiliza el servicio Google Play para recuperar las coordenadas. Para mí esto comenzó a funcionar después de ejecutar la aplicación emuladores mapas una vez. Durante el primer inicio, se le pedirá que permita el acceso de Google apps a su ubicación, que supongo que hace el truco.

 0
Author: Maik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-24 07:25:21

En eclipse:

Es posible que tenga que arrastrar la ventana DDMS hacia abajo. 'Controles de ubicación' se encuentra en 'Acciones de telefonía' y puede estar oculto por una vista de consola de tamaño normal(la barra con consola, LogCat, etc. puede estar cubriendo!)

~

 0
Author: Droid Teahouse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-06 08:35:18

Todavía no puedo comentar, así que actualizar @ectomorfos responde aquí, que cuando telneting ahora requiere tener un token de autenticación. En linux está bajo /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()

Desde un script de shell se puede establecer el coorinate de la siguiente manera

#!/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
 0
Author: draekko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-11 14:06:50