Kann jemand Ihren eigenen LocationProvider zur Verfügung stellen und es zum System, veröffentlichen, also können andere apps eine Referenz zu ihm vom StandortManager holen?Wie stelle ich einen eigenen LocationProvider für Android bereit?
Antwort
ein Tutorial Lesen Sie mehr über Android location provider mock
Ich beabsichtige nicht, Mock-location-Daten für eigene Anwendungen anzugeben, sondern , um einen zusätzlichen LocationProvider für alle anderen Anwendungen auf dem Telefon zur Auswahl zu haben. –
Daher ist das Tutorial über den "Android Location Provider Mock" nicht hilfreich. –
Was Pentium10 scheint vorgeschlagen offline zu sein Besuche http://pedroassuncao.com/2009/11/android-location-provider-mock/
Oder die LocationManagerProximitryTest von Google: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/location/LocationManagerProximityTest.java
Oder hier einige andere ähnliche Frage mit Arbeitslösung/code : Android mock location on device?
Es kann nicht getan werden.
Das Problem ist, dass nur OEMs einen neuen Standortanbieter installieren dürfen. Ein Drittentwickler kann seiner Anwendung nicht die Berechtigung erteilen, einen neuen Standortanbieter zu installieren (android.permission.INSTALL_LOCATION_PROVIDER).
Siehe Antwort von Dianne Hackborn (Android Framework Ingenieur) in diesem Thread:
https://groups.google.com/d/topic/android-developers/OvCcdvO6jZY/discussion
einen neuen Standort Provider installieren Sie eine ganz neue Firmware (wie http://www.cyanogenmod.com/) entwickeln sollten, legen Sie Ihre neue Standort-Provider in dieser Firmware und installieren Sie alle diese Sachen auf dem Telefon des Benutzers.
Sehen Sie diese SO fädeln, aber auch: Why are these permissions being refused?
All dies wegen Sicherheitsbedenken.
Ist es auf einem gerooteten Gerät möglich? – JohnyTex
@JohnyTex ja ist es möglich, auf gerooteten Gerät (oder benutzerdefinierte ROM). Siehe Anweisungen unter https://github.com/microg/android_packages_apps_UnifiedNlp –
Zu Entwicklungs- und Testzwecken können Sie einen Mock Location Provider implementieren. Sie müssen in den Entwickleroptionen "Zulässige Standorte zulassen" aktivieren, damit Anwendungen Standorte von diesem Anbieter sehen können.
Ein Codebeispiel, schauen GPX-Wiedergabe:
https://github.com/johncarpenter/Android-GPX-Mock-Location-Provider
Der Code den Standort-Anbieter für die Registrierung beginnt in Zeile 203 der Datei android/src/com/twolinessoftware/android/PlaybackService.java
.
Wenn Sie einen "echten" Standortanbieter wünschen (z. B. um Ihre Funktionalität als Teil einer Endanwenderanwendung bereitzustellen), sagen einige Quellen, dass dies nicht möglich ist, es sei denn, dieser Anbieter ist in einem Paket mit dem Systemschlüssel signiert Sie müssten Ihr eigenes ROM aus der Quelle erstellen, es mit Ihrem Schlüssel signieren, Ihren Standortanbieter mit dem gleichen Schlüssel unterschreiben und beide auf Ihrem Telefon installieren.
Allerdings führte Android irgendwann "entbündelte" Standortanbieter ein. Anscheinend brauchten sie das, um ihren eigenen NetworkLocationProvider vom Android-Kern in das Google Apps-Paket zu verschieben.
Ich habe noch nicht gesehen, wie ein entbündelter Standortanbieter in der Praxis funktioniert, und mir ist kein Open-Source-Code bekannt, aber die aktuelle Version von Android scheint Unterstützung für Aftermarket-Standortanbieter zu bieten.
Quellcode für die jeweilige Bibliothek ist bei
https://github.com/CyanogenMod/android_frameworks_base/tree/cm-10.1/location/lib
Ein Standort-Anbieter com.android.location.provider.LocationProviderBase
verlängern würde.
Klassen und Methoden sind im Code dokumentiert.
Edit: Mit Blick auf
https://github.com/android/platform_frameworks_base/blob/master/core/res/AndroidManifest.xml
ab Zeile 607, es sieht aus wie das Schutzniveau für die INSTALL_LOCATION_PROVIDER
Erlaubnis ist signatureOrSystem
. Dies bedeutet, dass jede App, die diese Funktion verwendet (dh einen Standortanbieter installiert, nicht unbedingt den Standortanbieter selbst), mit demselben Schlüssel wie die Plattform signiert werden müsste (dazu müssten Sie Ihr gesamtes Android-System aus der Quelle erstellen). oder als Systemanwendung installiert werden (was auf gerooteten Geräten funktionieren könnte).
Es ist ein Code bei
https://github.com/microg/NetworkLocation
, die eine LocationProvider umzusetzen scheint. Ich habe es noch nicht im Detail angeschaut oder gebaut, also kann ich nicht sagen, ob es funktioniert und was dafür nötig ist. Aber vielleicht gibt es ein paar Hinweise.
Wenn ich meinen eigenen LocationProvider erstelle, wie registriere/installiere ich ihn? Ich kann nichts im Manifest finden ... – JohnyTex
Ich habe das nie selbst gemacht, aber es gibt einen benutzerdefinierten Standortanbieter unter https://github.com/microg/android_packages_apps_UnifiedNlp. Diese App sollte den gesamten Code zum Installieren eines richtigen Standortanbieters enthalten. Wenn Sie die App ausprobieren möchten, muss sie als System-App installiert werden (installieren Sie sie einfach und verschieben Sie sie über Terminal oder adb in den System-App-Ordner) und benötigt mindestens ein Backend, bei dem es sich um eine Userspace-App handeln kann. – user149408
Danke! Obwohl diese Lib scheint zu fehlen:
- 1. Wie stelle ich einen Web-Service für Amazon EC2 bereit?
- 2. Wie stelle ich eine Textdatei in einer Android App bereit?
- 3. Wie stelle ich einen benutzerdefinierten SharePoint-Zeitgeberauftrag bereit?
- 4. Wie stelle ich eine Angular.js App bereit?
- 5. Wie stelle ich einen UDP-Port auf dem Docker bereit?
- 6. Wie stelle ich einen INF-basierten Treiber bereit?
- 7. Wie stelle ich tomcat7-maven-plugin bereit?
- 8. Wie stelle ich ein Datenbankprojekt bereit?
- 9. Wie stelle ich Anwendungen im Administratormodus bereit?
- 10. Wie stelle ich eine Java-Webanwendung bereit?
- 11. Wie stelle ich eine Typ-Annotation für AsRef bereit?
- 12. Ich habe eine Keystore-Datei, wie stelle ich keyManagers für sslContext in der Android App bereit?
- 13. Wie schreibe ich eigenen LocationService für Android?
- 14. Wie stelle ich einen 3rd-Party-Satz von Bibliotheken für Nexus bereit?
- 15. LocationProvider
- 16. Wie stelle ich einen Jax-Ws-Dienst für Eclipse oder Tomcat bereit?
- 17. Wie stelle ich Inline-Eingaben für einen IPython (Notebook) -Shellbefehl bereit?
- 18. Wie stelle ich einen Filter für die ersten Ergebnisse im ContactPicker bereit?
- 19. Wie stelle ich Django 1.6, Python 3.3 und Apache bereit?
- 20. Wie stelle ich Anwendungen bereit, die von dynamischen Bibliotheken abhängen?
- 21. Wie stelle ich eine JAX-RS-Anwendung bereit?
- 22. Wie stelle ich die ICU-Bibliotheken mit CMake bereit?
- 23. Wie stelle ich eine Qt-Anwendung unter Windows bereit?
- 24. Wie stelle ich eine öffentlich zugängliche SharePoint 2007-Website bereit?
- 25. Wie stelle ich eine node.js App mit maven bereit?
- 26. Wie stelle ich eine Rails-App auf Dreamhost bereit?
- 27. Wie stelle ich ein Warepaket in Netbeans bereit/ein?
- 28. Wie stelle ich den _NET_WM_STATE_FULLSCREEN-Hinweis mit xcb bereit?
- 29. Wie stelle ich eine vorbereitete git commit-Nachricht bereit?
- 30. Windows Azure: Wie stelle ich eine Konfigurationseinstellung als Umgebungsvariable bereit?
gibt es eine befriedigende Antwort für diese Frage ??????? –