Quiero obtener longitud y latitud en el emulador de Android para probar.¿Cómo emular la ubicación del GPS en el emulador de Android?
¿Alguien me puede guiar para lograrlo?
¿Cómo configuro la ubicación del emulador en una posición de prueba?
Quiero obtener longitud y latitud en el emulador de Android para probar.¿Cómo emular la ubicación del GPS en el emulador de Android?
¿Alguien me puede guiar para lograrlo?
¿Cómo configuro la ubicación del emulador en una posición de prueba?
Puede conectarse al emulador a través de Telnet. Luego tiene una consola Emulator que le permite ingresar ciertos datos como geo-soluciones, red, etc.
Cómo usar la consola se explica extensamente here. Para conectarse a la consola de abrir una línea de comandos y escriba
telnet localhost 5554
A continuación, puede utilizar el comando geo para establecer una latitud, longitud y si es necesario altitud en el dispositivo que se pasa a todos los programas utilizando el proveedor de localización GPS . Vea el enlace de arriba para obtener más instrucciones.
El comando específico para funcionar en la consola es
geo fix <longitude value> <latitude value>
me encontré con este sitio útil para buscar un realista LAT/LNG: http://itouchmap.com/latlong.html
Si necesita más de una coordenada se puede utilizar un kml archivo con una ruta también se describe un poco en este article. No puedo encontrar una mejor fuente en este momento.
usando geo fix también he establecido que la latitud y la longitud fallan obteniendo una ubicación nula. – UMAR
agregando muchos valores a través de telnet ahora está funcionando ... no sé por qué ingresando dos o tres valores no funciona ... funciona hasta que cierro el emulador cuando cierro el emulador tengo que ingresar valores falsos de nuevo. – UMAR
o manera simple enciende gps en el emulador y ve al control del emulador, dale latitud, valores largos y envía los valores en el emulador como una ubicación gps. – UMAR
Suponiendo 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();
}
});
que necesitará el siguiente permiso en su manifiesto:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Y para enviar coordenadas falsas para el emulador de 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.
pero mi amigo, ¿dónde están la longitud y la latitud? – UMAR
He intentado usar esta ans enviando valores falsos al control del emulador pero cuando presiono el botón enviar no hace nada, ningún mensaje aparece nada para confirmar los valores enviados o no. seocnd thing GeoPoint g = myLocation.getMyLocation(); está devolviendo valor nulo. – UMAR
¿Estás seguro de que lo estás utilizando en 'runOnFirstFix'? Porque ese es el evento que se produce cuando el dispositivo recibe por primera vez la posición GPS, por lo que si alguna vez se plantea, 'getMyLocation' definitivamente debe devolver un valor. –
Estaba tratando de establecer la configuració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.
No necesita especificar un proceso ... O quizás DDMS en 2010 requiera hacer eso. –
Estaba buscando una mejor manera de establecer las coordenadas del GPS del emulador que usando geo fix
y determinando manualmente las coordenadas de latitud y longitud específicas.
No se pudo encontrar nada, armar un pequeño programa que utiliza GWT y la API de Google Maps para lanzar una herramienta de mapa basado en navegador para establecer la ubicación GPS en el emulador:
suerte puede ser útil para ayudar a otros que sin duda tropezarán con esta dificultad/pregunta también.
¡Excelente herramienta! Muchas gracias! –
¡Realmente genial, gracias muchísimo! :) –
¡guau, gracias! la configuración funcionó bien, pero no pude gestionar una conexión con el emulador -> el registro imprime java.net.ConnectionRefused. entonces probé telnet localhost 5554 (desde la terminal) y funcionó ... ¿alguien más ha probado tu emulador con éxito en mac? – ottel142
Usando el comando "geo" en la consola emulador
Para enviar los datos de ubicación simuladas desde la línea de comandos:
iniciar su aplicación en el emulador de Android y abrir una terminal/consola en el directorio de SDK/tools.
conectarse a la consola emulador:
telnet localhost 5555
(Reemplazar 5555 con cualquier puerto de su emulador se ejecuta en)
enviar los datos de localización: * fix geo a enviar un geo-ubicación fija.
Este comando acepta una longitud y una latitud en grados decimales, y una altitud opcional en metros. Por ejemplo:
geo fix -121.45356 46.51119 4392
Si está utilizando Eclipse
, vaya a Window->Open Perspective->DDMS
, a continuación, escriba una en Location Controls
y pulsa Send
.
Este es, de lejos, el método más fácil que he visto. Asegúrese de configurar su AVD con soporte GPS, luego en el DDMS Haga clic en el emulador que se ejecuta en Dispositivos, elija la pestaña Control del emulador en el panel central derecho y en la parte inferior esté la sección Controles de ubicación mencionada por SteveCav (Usando Eclipse Juno 4.2 para desarrolladores Java con el ADT más reciente). Controles de mi ubicación el panel incluso estaba precargado con datos de ubicación. –
¡excelente respuesta! funciona con cualquier ide porque ddms es parte del sdk (yoursdkfolder/tools /) – Zarokka
Esto, ni el telnet por lo lution anterior, estaba trabajando para mí.Estoy tratando de obtener mi ubicación así, pero sigue siendo nula. 'LocationManager mlocManager = (LocationManager) getSystemService (Context.LOCATION_SERVICE);' 'Ubicación location = mlocManager.getLastKnownLocation (LocationManager.NETWORK_PROVIDER);' – crowmagnumb
mirar debajo de Providing Mock Location Data. Encontrarás la solución para ello.
Si las soluciones anteriores no funcionan. Prueba esto:
Dentro de su Manifest.xml androide, añadir las siguientes dos enlaces FUERA de la etiqueta de la aplicación, pero dentro de la etiqueta manifiesta por supuesto
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses-permission>
<uses-permission android:name="android.permission.INTERNET" ></uses-permission>
yo era incapaz de conseguir una posición GPS en el emulador cuando el emulador ejecutaba la imagen de Android sin las API de Google. Tan pronto como cambié la imagen para contener las API de Google, funcionaron todas las formas aquí mencionadas de obtener una corrección de GPS.
Asegúrese de seleccionar una imagen con Google API al crear AVD.
¿Qué quiere decir con Image y al crear AVD, cómo seleccionaría una imagen con las API de Google? no existen tales opciones mientras se crea AVD en eclipse. – user1911703
Asegúrese de haber descargado imágenes con las API de Google a través del administrador de Android SDK. – dvim
1. Usuarios de Android Studio.
Después de ejecutar el emulador Goto Herramientas-> Android-> monitor de dispositivos Android
Haga clic en el cambio emulador Ficha Control del grupo que controla la ubicación.
2. Usuarios de Eclipse.
Primero en Eclipse En el menú, seleccione "Ventana", luego seleccione "Abrir perspectiva", luego seleccione "DDMS". es decir Ventana-> Abrir Presente-> DDMS.
Verá en el panel de dispositivos del lado izquierdo y en el lado derecho verá diferentes pestañas. Seleccione la pestaña "Emulator Control".
En la parte inferior verá el Panel de controles de ubicación. Seleccione la pestaña "Manual".
Ingrese la longitud y la latitud en los cuadros de texto y luego haga clic en el botón Enviar. Te enviará la posición a tu emulador y a la aplicación.
3. Usando telnet.
En el comando ejecutar, escriba esto.
telnet localhost 5554
Si no está utilizando Windows puede utilizar cualquier cliente de Telnet.
Después de conectar con telnet, utilice el siguiente comando para enviar su posición al emulador.
geo fix long lat
geo fix -121.45356 46.51119 4392
4. Uso de la herramienta basada en los mapas de Google
navegador Hay un programa que utiliza GWT y la API de Google Maps para lanzar una herramienta de mapa basado en navegador para establecer la ubicación GPS en el emulador :
Esta primera opción funcionó para mí, con un pequeño cambio. No pude abrir la ventana DDMS de Eclipse, acabo de recibir una página gris en blanco. Pero mientras ejecutaba el emulador, si abría DDMS desde el símbolo del sistema (C: \ Archivos de programa \ Android \ android-sdk \ tools \ ddms), entonces podía ver la ventana que describió con Dispositivos a la izquierda y "Emulator Control" "pestaña a la derecha". ¡Gracias! –
Dalvik Debug monitor> Seleccionar emulador> emulador Ficha control> Ubicación de controles.
DDMS - android_sdk/herramientas/O DDMS android_sdk/herramientas/monitor
Primero ve en la sección DDMS en su Eclipse que el control de emulación abierta .... Ve a la sección Manual establecer lat y largo, luego presione el botón Enviar
Utilizo la función DDMS del eclipse para enviar GPS.
El ya se ha mencionado varias veces responden a utilizar el comando shell "solución geo ..." es la respuesta correcta. Pero en caso de que use LocationClient.getLastLocation() para recuperar sus datos, vale la pena mencionar que no funcionará al principio. La clase LocationClient usa el servicio Google Play para recuperar las coordenadas. Para mí, esto comenzó a funcionar después de ejecutar la aplicación de mapas de emuladores una vez. Durante el primer inicio, se le pedirá que permita que las aplicaciones de Google accedan a su ubicación, lo que supongo que es el truco.
En Linux, donde los puertos de comunicación están bloqueados. navegar por el terminal a la carpeta de plataforma de herramientas dentro android sdk
y el fuego de este comando:
./adb -s #{device_name} emu geo fix #{longitude} #{latitude}
Si está utilizando Eclipse y luego usa el regulador del emulador puede configurar manualmente la latitud y longitud y ejecutar aplicación basada en su mapa en emulador
En eclipse:
Puede 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 cubriéndolo!)
~
dentro de DDMS que encontré en Emulator Control. Pestaña debajo de los controles de ubicación. – user914425
Para los usuarios de Android Studio:
ejecutar el emulador,
A continuación, vaya a Tools -> Android ->Android device monitor
abrir la pestaña Emulator Control
, y utilizar el grupo de controles de ubicación.
En mi caso, todos los archivos de archivo no son editables. Tienes una idea ? –
@MustafaOlkun Probablemente significa que el emulador tiene esos controles en él. Busque un "..." al lado del emulador. – Justin
Tengo el mismo problema. No son editables y sí, está el "...". Sin embargo, cuando coloco algo allí y Enviar, nada cambia en la aplicación .... – KansaiRobot
Para un proyecto propio, desarrollé un servicio en línea que puede proporcionar una ubicación simulada para el emulador de Android.
Utiliza geo nmea en lugar de geo fix que le permite establecer la velocidad, el rumbo, 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.
En Mac, Linux o Cygwin:
echo 'geo fix -99.133333 19.43333 2202' | nc localhost 5554
que le pondrá en la Ciudad de México. Cambie su longitud/latitud/altitud en consecuencia. Eso debería ser suficiente si no estás interesado en nmea.
Es posible que deba ajustar el 5554 al puerto de escucha de su emulador actual. –
Escribí un script de python para enviar las ubicaciones gps al emulador a través de telnet. Define una fuente y una ubicación de destino. También hay una compensación de tiempo que le permite controlar cuánto tiempo se presionarán las coordenadas en el dispositivo. Una ubicación está siendo presionada una vez por segundo.
En el siguiente ejemplo, el script se mueve de Berlín a Hamburgo en 120 segundos. Ubicación de un paso/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()
¡Funciona como un encanto! Gracias por compartir. –
@AlbertoGaona ¡Me alegro de que funcionó para ti! – user937284
Mmmmm. Creo que hay un pequeño error: por lo que sé, el mensaje de configuración geográfica obtiene Longitude y Latitude, en ese orden: los estás enviando al revés. Ver respuestas arriba. –
Si utilizas Android Studio (1.3):
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á una menú que le permitirá controlar el emulador incluyendo la ubicación
puede utilizar un emulador como genymotion que le da la flexibilidad para emular a su ubicación GPS actual, etc.
Sí, Genymotion funciona bien. Aunque todavía no puedo instalar Android Maps ... – KansaiRobot
@KansaiRobot Bueno, tuve que instalar Google Play (http://stackoverflow.com/questions/17831990/how-do-you-install-google-frameworks-play -accounts-etc-on-a-genymotion-virt) en el emulador –
Hay un complemento para Android Studio llamado "Mock Location Plugin". Puede emular varios puntos con este complemento. Puede encontrar un manual de uso detallado en este enlace: Android Studio. Simulate multiple GPS points with Mock Location Plugin
No se puede comentar aún, por lo que actualizando @ectomorphs responda aquí, que cuando telneting ahora requiere tener un token de autenticación. En Linux que 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 shell script se puede establecer el coorinate al igual que
#!/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
La siguiente solución que funcionó para mí - línea de comandos abierta y escribir:
adb emu geo fix [longtitude] [latitude]
Sólo asegúrese de 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
.
Hubiera sido mejor si adb emu
funcionara.
muy útil un trazador de líneas! en mi caso tuve que eliminar los espacios entre \ n: token = $ (cat ~/.emulator_console_auth_token); cat <(echo -e "auth $ token \ ngeo corregir 96.0290791 19.9041016 \ nexit") - | nc localhost 5554 – Jeremie
Nadie mencionó aquí la solución incorporada del emulador en sí, así que para futuros visitantes, me gustaría compartirlo con imágenes.
primer lugar, ejecute el emulador de Android y haga clic en el botón de menú (3 puntos) que se muestran a continuación:
A continuación, en el panel izquierdo, seleccione Ubicación y cambiar las coordenadas de acuerdo a sus necesidades . Después de presionar Enviar botón, los cambios tendrán efecto inmediatamente (le recomiendo que abra Google Maps para una mejor comprensión).
Android Studio Versión: 2.3.3
he hecho un pequeño script similar a una de las respuestas anteriores, pero utilizando en lugar de expect
python
- porque es un poco más simple (expect
fue inventado para esto).
#!/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"
uso Ejemplo: sendloc 5554 2.35607 48.8263
abierto Android estudio-> Herramientas menu-> Android-> Dispositivo Android Monitor-> Pestaña emulador> Localización control-> Establecer su latitud requerida y longitud y comprobar su proyecto según su necesidad
puede establecer el valor de ubicación estática (Latitud y longitud) ¿qué ubicación necesita verificar directamente en la parte de codificación? –
Si está utilizando Genymotion: http://stackoverflow.com/questions/30709329/give-fake-location-to-genymotion-emulator –
Puede instalar uno de los muchos aplicación de ubicación simulada s en Play Store. – whoKnows