Qualcuno sa come fornire il proprio LocationProvider e pubblicarlo sul sistema, in modo che altre app possano recuperarne un riferimento dal LocationManager?Come fornire il proprio LocationProvider su Android?
risposta
Leggi un tutorial su Android location provider mock
Non intendo fornire mock-location-data per la propria applicazione ma per avere un LocationProvider aggiuntivo per tutte le altre applicazioni del telefono tra cui scegliere. –
Quindi il tutorial sul "fornitore di localizzazione Android simulato" non è utile. –
Cosa Pentium10 suggerito sembra essere in linea, controlla http://pedroassuncao.com/2009/11/android-location-provider-mock/
O il LocationManagerProximitryTest da Google: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/location/LocationManagerProximityTest.java
O qui qualche altra domanda simile con soluzione/codice funzionante : Android mock location on device?
Non può essere eseguito.
Il problema è che solo agli OEM è consentito installare un nuovo fornitore di posizione. Uno sviluppatore di terze parti non può concedere alla sua applicazione l'autorizzazione richiesta per installare un nuovo fornitore di posizione (android.permission.INSTALL_LOCATION_PROVIDER).
vedere la risposta di Dianne Hackborn (ingegnere quadro Android) in questa discussione:
https://groups.google.com/d/topic/android-developers/OvCcdvO6jZY/discussion
Per installare un nuovo fornitore di posizione, si dovrebbe sviluppare un nuovo firmware (come http://www.cyanogenmod.com/), inserire il nuovo fornitore di localizzazione in questo firmware e installare tutte queste cose sul telefono dell'utente.
Vai a questa SO filo, così: Why are these permissions being refused?
Tutto questo a causa di problemi di sicurezza.
È possibile su un dispositivo rooted? – JohnyTex
@JohnyTex sì è possibile su dispositivo rooted (o rom personalizzata). Vedere le istruzioni su https://github.com/microg/android_packages_apps_UnifiedNlp –
Per scopi di sviluppo e test è possibile implementare un fornitore di posizioni fittizie. È necessario abilitare "Consenti posizioni simulate" nelle opzioni sviluppatore affinché le applicazioni possano vedere le posizioni da quel fornitore.
Per un esempio di codice, guarda GPX riproduzione:
https://github.com/johncarpenter/Android-GPX-Mock-Location-Provider
Il codice per la registrazione del provider di localizzazione inizia in linea 203 del file di android/src/com/twolinessoftware/android/PlaybackService.java
.
Se si vuole un "vero" del fornitore (ad esempio, per distribuire la funzionalità come parte di un'applicazione per l'utente finale), alcune fonti dicono che non si può fare a meno che tale fornitore è in un pacchetto firmato con la chiave di sistema, in modo da dovresti creare la tua ROM dalla sorgente, firmarla con la tua chiave, firmare il tuo fornitore di localizzazione con la stessa chiave e installarla sul tuo telefono.
Tuttavia, ad un certo punto Android ha introdotto provider di indirizzi "separati". Apparentemente ne avevano bisogno per spostare il proprio NetworkLocationProvider dal core Android nel pacchetto di Google Apps.
Non ho ancora visto un provider di località disaggregato che funziona nella pratica e non sono a conoscenza di alcun codice open source che lo utilizza, ma sembra che la versione recente di Android supporti i provider di posizione "aftermarket".
Il codice sorgente per la rispettiva biblioteca è a
https://github.com/CyanogenMod/android_frameworks_base/tree/cm-10.1/location/lib
un provider di localizzazione avrebbe dovuto estendersi com.android.location.provider.LocationProviderBase
.
Classi e metodi sono documentati nel codice.
Edit: Guardando
https://github.com/android/platform_frameworks_base/blob/master/core/res/AndroidManifest.xml
partire dalla riga 607, sembra che il livello di protezione per il permesso INSTALL_LOCATION_PROVIDER
è signatureOrSystem
. Ciò significa che qualsiasi app che utilizza questa funzione (cioè installa un fornitore di posizione, non necessariamente il fornitore di loca stesso) dovrebbe essere firmata con la stessa chiave della piattaforma (che richiederebbe di costruire l'intero sistema Android dalla sorgente) o essere installato come applicazione di sistema (che potrebbe funzionare su dispositivi rooted).
C'è un codice a
https://github.com/microg/NetworkLocation
che sembra implementare un LocationProvider. Non l'ho guardato in dettaglio (ancora) o costruito, quindi non posso dire se funziona e cosa è richiesto per questo. Ma forse fornisce alcune indicazioni.
Se creo il mio LocationProvider, come posso registrarlo/installarlo? Non riesco a trovare nulla nel manifest ... – JohnyTex
Non l'ho mai fatto da solo, ma c'è un fornitore di posizione personalizzato disponibile su https://github.com/microg/android_packages_apps_UnifiedNlp. Questa applicazione dovrebbe avere tutto il codice per l'installazione di un fornitore di posizione adeguato. Se si desidera provare l'app, è necessario installarla come app di sistema (basta installarla e spostarla nella cartella dell'app di sistema tramite Terminal o adb) e necessita di almeno un back-end, che può essere un'app dello spazio utente. – user149408
Grazie! Anche se questa libreria sembra mancare:
- 1. Guardare $ locationProvider in Angular.js
- 2. Come implementare il proprio server WHOIS?
- 3. Come posso ottenere il proprio supporto usando reselect su redux?
- 4. Android - Fornire risorse alternative non funziona?
- 5. Fornire il proprio script quando si usa l'applicazione plugin in Gradle 1.0
- 6. Come cercare il nome di un contatto dal proprio numero di telefono su Android?
- 7. CheckBoxPreference con il proprio layout
- 8. Adattatore di sincronizzazione proprio per Android?
- 9. compilando il proprio glibc
- 10. implementare il proprio sizeof
- 11. Come fornire contenuto per Intent.ACTION_GET_CONTENT
- 12. Errore Android: è necessario fornire attributo layout_width
- 13. Come creare il proprio dotnet offfuscator
- 14. Come creare il proprio simbolo matematico laTex?
- 15. Come creare il proprio parser SQL?
- 16. Come creare il proprio database in redis?
- 17. Crea il proprio bot su telegramma con php
- 18. soap 1.2 android Fornire un'azione sapone valida
- 19. Servire utilizzando il proprio file binario su Cedar, Heroku
- 20. Perché creare il proprio CMS?
- 21. Ottieni il proprio indirizzo IP
- 22. Costruire il proprio framework php
- 23. Come fornire animazione quando si chiama un'altra attività in Android?
- 24. Sviluppare il mio CMS proprio
- 25. Come fornire diversi launcher icona per il sapore del prodotto
- 26. $ routeProvider/$ locationProvider non è una funzione nell'instradamento AngularJS
- 27. pubblicare il proprio sito Symbol per WinDbg
- 28. jQuery può fornire il nome del tag?
- 29. Come posso fornire i file per il download?
- 30. come disegnare il campo Password proprio come disegniamo Ember.TextField?
c'è qualche risposta soddisfacente per questa domanda ??????? –