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). 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?
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.
Tags und Links android location android-emulator fusedlocationproviderapi android-fusedlocation