---
name: android_emu_geo_fix
kind: function
lang: bash
domain: infra
version: "1.0.0"
purity: impure
signature: "android_emu_geo_fix([--serial <S>], longitude: string, latitude: string, [altitude: string]) -> void"
description: "Fake GPS location on Android emulator via emu geo fix. Emulator-only (not physical devices)."
tags: [android, emulator, geo, gps, location, pendiente-usar]
params:
  - name: "--serial <S>"
    desc: "Optional emulator serial. Auto-detected if omitted."
  - name: "longitude"
    desc: "Longitude (decimal degrees). Passed first — opposite to human lat/lon convention."
  - name: "latitude"
    desc: "Latitude (decimal degrees)."
  - name: "altitude"
    desc: "Optional altitude in meters."
output: "Stdout 'GPS set: <lon>, <lat> (alt=...) on <serial>'. Exit 0."
uses_functions: [adb_wsl_bash_infra]
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
tested: false
tests: []
test_file_path: ""
file_path: "bash/functions/infra/android_emu_geo_fix.sh"
---

## Ejemplo

```bash
# Fijar GPS en Madrid (emulador activo)
android_emu_geo_fix -3.7038 40.4168

# Con altitud
android_emu_geo_fix -3.7038 40.4168 650

# Emulador especifico
android_emu_geo_fix --serial emulator-5554 -3.7038 40.4168
```

## Notas

El orden de argumentos es **longitud primero, latitud segundo** — opuesto a la convencion humana habitual (lat/lon). Esto sigue el protocolo del comando `emu geo fix` de Android.

Solo funciona en emuladores (`emulator-*`). Si el serial apunta a un dispositivo fisico, la funcion sale con error y exit 1.

Usa `adb_pick_serial` de `adb_wsl.sh` para resolver el dispositivo objetivo.
Sale con exit 3 si no hay ningun device conectado.
