Die Android-App kann nicht über Emulator mit FusedLocationApi auf den Speicherort zugreifen

9

Ich habe eine Android-App, die den Standort bekommt:

%Vor%

Beim Betrieb auf dem Gerät (Galaxy S3, Android 4.4.4) gibt es überhaupt kein Problem. Beim Ausführen auf Emulator (Android Studio Standard qemu, Android 7.1, x86-64) bekomme ich keine Position in meiner App. onConnected wird aufgerufen, ich kann sogar den letzten Ort lesen, obwohl ich keine Ortsaktualisierungen bekomme ( requestLocationUpdates completion nie aufgerufen).

Ich habe:

  • <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> zu Manifest hinzugefügt (zusätzlich zum groben und feinen Speicherort).
  • Es wurde versucht, die Google-Standorteinstellungen im Emulator zu ändern (hohe Genauigkeit, Energiesparmodus, nur Gerät)
  • Einstellungsstandort über die Emulator-GUI versucht.
  • Versucht, die Option "Erkannte ADB-Position verwenden" des Emulators ein- und auszuschalten.
  • Versucht adb -s emulator-5555 emu geo fix 12.34 56.78 (Befehl funktioniert, lesen Sie weiter, um zu sehen, warum)

Ich kann meine App immer noch nicht dazu bringen, eine Standortaktualisierung zu erhalten. Ich habe die integrierten Google Maps des Emulators ausprobiert und er erhält Standort-Updates perfekt. Ich kann die aktuelle Position auf der Karte sofort ändern, wenn ich verschiedene Koordinaten über Geo Fix sende.

Aber meiner App sind Standortinformationen nicht bekannt. Ich habe versucht, mindestens 2 Minuten (mein Standortanfrageintervall) zu warten, bevor ich eine andere Koordinate auch sendete. Was mache ich falsch?

    
Can Poyrazoğlu 10.01.2017, 01:26
quelle

1 Antwort

3

Ich habe das gleiche Problem auf dem Emulator kennengelernt. Das einzige Problem, das ich gefunden habe, ist PRIORITY_HIGH_ACCURACY.

Erläuterung: Es ist die einzige Option, die Android dazu zwingt, den GPS-Chip einzuschalten (virtueller Chip im Fall des Emulators). Auf einem echten Gerät ist dies kein Problem, da das Telefon den Zellenempfang und das WLAN verwenden kann, um einen ungefähren Standort herauszufinden. Auf dem Emulator gibt es keinen Zellenempfang und das WLAN wird nur als Netzwerkverbindung abstrahiert. So kann der Emulator das GPS nur für den Standort verwenden.

Wenn Sie PRIORITY_HIGH_ACCURACY wirklich nicht in Ihrer tatsächlichen Anwendung verwenden möchten, können Sie für FusedLocationApi eine Genauigkeitsgruppe erstellen (oder eine Beispielanwendung finden), die auf PRIORITY_HIGH_ACCURACY gesetzt ist. Führen Sie das aus, bevor Sie Ihre eigentliche App ausführen (PRIORITY_BALANCED_POWER_ACCURACY) und ein letzter bekannter Standort verfügbar ist.

    
startoftext 26.06.2017 16:16
quelle