cb6d9e61d1
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
38 lines
1.0 KiB
Bash
38 lines
1.0 KiB
Bash
#!/usr/bin/env bash
|
|
# android_emu_geo_fix — Fake GPS location on Android emulator via emu geo fix.
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
# shellcheck source=adb_wsl.sh
|
|
source "$SCRIPT_DIR/adb_wsl.sh"
|
|
|
|
android_emu_geo_fix() {
|
|
local serial lon lat alt
|
|
|
|
adb_pick_serial "$@" || exit 3
|
|
local serial="$ADB_PICK_SERIAL"
|
|
set -- "${ADB_PICK_REST[@]}"
|
|
|
|
lon="${1:?android_emu_geo_fix: longitude required}"
|
|
lat="${2:?android_emu_geo_fix: latitude required}"
|
|
alt="${3:-}"
|
|
|
|
# geo fix only works on emulators, not physical devices
|
|
if [[ "$serial" != emulator-* ]]; then
|
|
echo "android_emu_geo_fix: geo fix only works on emulators (got '$serial')" >&2
|
|
return 1
|
|
fi
|
|
|
|
adb_s "$serial" emu geo fix "$lon" "$lat" ${alt:+"$alt"}
|
|
|
|
if [[ -n "$alt" ]]; then
|
|
echo "GPS set: $lon, $lat (alt=$alt) on $serial"
|
|
else
|
|
echo "GPS set: $lon, $lat on $serial"
|
|
fi
|
|
}
|
|
|
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
android_emu_geo_fix "$@"
|
|
fi
|