Como punto de partida, con un dispositivo enraizado, es posible hacer algo como:
#!/system/bin/sh
# Verificar si el dispositivo está enraizado
if [ $(id -u) -ne 0 ]; then
echo "Este script requiere acceso de superusuario."
exit 1
fi
# Obtener el PID de Maps
mapspid=$(pgrep -f com.google.android.apps.maps)
# Verificar si la ubicación GPS precisa está habilitada
is_enabled=$(settings get secure location_providers_allowed | grep 'gps')
if [ -z "$mapspid" ] && [ ! -z "$is_enabled" ]; then
# maps NO se está ejecutando y la ubicación GPS precisa está habilitada
# Deshabilitar la ubicación GPS precisa
settings put secure location_providers_allowed '-gps'
else
# maps se está ejecutando
# Habilitar la ubicación GPS precisa
[ -z "$is_enabled" ] && settings put secure location_providers_allowed '+gps'
fi
Esto se puede colocar en cron
cada minuto o cada 30 segundos.
Otra solución sería usar un script envoltorio para ejecutar Maps, luego cuando se lance, volver a configurar la ubicación como 'no precisa'.
No probado.