'Headless Android Emulator: GPS Location does not work even with setting Geo Fix

Summary: Entering geo fixes into the Emulator Console of a headless emulator does not set moc location data. Is there a workaround?

Steps to reproduce:

1) Start the emulator with the command

  emulator -avd Pixel2API27 -no-window 

2) Set the location data with command

 telnet localhost 5554
 auth <auth Token>
 geo fix -121.45356 46.51119 4392

3) Get the location data

 adb shell dumpsys location

Observed result:

Current Location Manager state:
  Location Listeners:
    Reciever[6ca7e93 listener UpdateRecord[passive com.google.android.gms(10013 foreground) Request[POWER_NONE passive fastest=0]]]
    Reciever[f7aded0 listener UpdateRecord[passive android(1000 foreground) Request[POWER_NONE passive fastest=+30m0s0ms]]]
    Reciever[c146ec9 listener UpdateRecord[passive android(1000 foreground) Request[POWER_NONE passive fastest=0]]]
    Reciever[6ea99ce listener UpdateRecord[passive com.google.android.gms(10013 foreground) Request[POWER_NONE passive fastest=0]]]
  Active Records by Provider:
    passive:
      UpdateRecord[passive android(1000 foreground) Request[POWER_NONE passive fastest=0]]
      UpdateRecord[passive android(1000 foreground) Request[POWER_NONE passive fastest=+30m0s0ms]]
      UpdateRecord[passive com.google.android.gms(10013 foreground) Request[POWER_NONE passive fastest=0]]
      UpdateRecord[passive com.google.android.gms(10013 foreground) Request[POWER_NONE passive fastest=0]]
  Overlay Provider Packages:
    network: com.google.android.gms
    fused: com.google.android.gms
  Historical Records by Provider:
    android: passive: Min interval 0 seconds: Max interval 1800 seconds: Duration requested 1 out of the last 1 minutes: Currently active
    com.google.android.gms: passive: Interval 0 seconds: Duration requested 0 out of the last 0 minutes: Currently active
  Last Known Locations:
  Last Known Locations Coarse Intervals:
  Geofences:
  Enabled Providers:
    fused
    passive
  mWhitelist=[] mBlacklist=[]
  Throttling Whitelisted Packages:

    com.google.android.gms
  fudger: offset: -83, 431 (meters)
passive Internal State:
mReportLocation=true
gps Internal State:
  mStarted=false
  mFixInterval=1000
  mDisableGps (battery saver mode)=false
  mEngineCapabilities=0x0 ( )
GNSS_KPI_START
  KPI logging start time: +11s943ms
  KPI logging end time: +1m18s661ms
  Number of location reports: 0
  Number of TTFF reports: 0
  Number of position accuracy reports: 0
  Number of CN0 reports: 0
GNSS_KPI_END
  native internal state: Gnss Debug Interface not available

network Internal State (com.google.android.gms):
REMOTE SERVICE name=network pkg=com.google.android.gms version=2
fused Internal State (com.google.android.gms):
REMOTE SERVICE name=fused pkg=com.google.android.gms version=1

Note: As you can see Last Known Locations: is empty

Anyone have ideas?



Solution 1:[1]

A bit late to the party, but I was facing this same issue and found a solution. I added the -no-passive-gps parameter and now my headless emulator gets location updates.

Examlple:

emulator -avd Pixel6 -no-snapshot -no-boot-anim -no-audio -no-window -delay-adb -no-passive-gps

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 tepe