Est-ce que quelqu'un sait comment fournir votre propre LocationProvider et le publier sur le système, afin que d'autres applications puissent y trouver une référence à partir de LocationManager?Comment fournir votre propre LocationProvider sur Android?
Répondre
Lire un tutoriel sur Android location provider mock
Je n'ai pas l'intention de fournir des données de localisation simulées pour ma propre application, mais pour avoir un LocationProvider supplémentaire pour toutes les autres applications sur le téléphone à choisir. –
Ainsi, le tutoriel sur le "fournisseur de localisation Android" n'est pas utile. –
Ce qui Pentium10 suggéré semble être déconnecté, consultez http://pedroassuncao.com/2009/11/android-location-provider-mock/
Ou le LocationManagerProximitryTest par google: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/location/LocationManagerProximityTest.java
Ou ici une autre question similaire avec une solution/code de travail : Android mock location on device?
Cela ne peut pas être fait.
Le problème est que seuls les OEM sont autorisés à installer un nouveau fournisseur de localisation. Un développeur tiers ne peut pas accorder à son application l'autorisation requise pour installer un nouveau fournisseur d'emplacement (android.permission.INSTALL_LOCATION_PROVIDER).
Voir la réponse de Dianne Hackborn (ingénieur-cadre Android) dans ce fil:
https://groups.google.com/d/topic/android-developers/OvCcdvO6jZY/discussion
Pour installer un nouveau fournisseur d'emplacement, vous devez développer un nouveau firmware entier (comme http://www.cyanogenmod.com/), insérez votre nouveau fournisseur d'emplacement dans ce firmware et installer tous ces trucs sur le téléphone de l'utilisateur.
Voir ce sujet SO, ainsi: Why are these permissions being refused?
Tout cela à cause des problèmes de sécurité.
Est-ce possible sur un appareil enraciné? – JohnyTex
@JohnyTex oui c'est possible sur l'appareil enraciné (ou rom personnalisé). Voir les instructions sur https://github.com/microg/android_packages_apps_UnifiedNlp –
À des fins de développement et de test, vous pouvez implémenter un fournisseur d'emplacement fictif. Vous devez activer "Autoriser les emplacements fictifs" dans les options du développeur afin que les applications puissent voir les emplacements de ce fournisseur.
Pour un exemple de code, regardez GPX Lecture:
https://github.com/johncarpenter/Android-GPX-Mock-Location-Provider
Le code d'enregistrement du fournisseur d'emplacement commence dans la ligne 203 du fichier android/src/com/twolinessoftware/android/PlaybackService.java
. Si vous voulez un "vrai" fournisseur de localisation (par exemple pour déployer votre fonctionnalité dans une application utilisateur), certaines sources disent que cela ne peut être fait que si ce fournisseur est dans un paquet signé avec la clé du système, donc vous devez créer votre propre ROM à partir de la source, la signer avec votre clé, signer votre fournisseur de localisation avec la même clé et l'installer sur votre téléphone.
Cependant, Android a introduit des fournisseurs de localisation "dégroupés". Apparemment, ils en avaient besoin pour transférer leur propre NetworkLocationProvider du noyau Android dans le package Google Apps. Je n'ai pas encore vu de fournisseur de localisation dégroupé travaillant en pratique et je ne connais aucun code open source qui l'utilise, mais il semble que la version récente d'Android ait un support pour les fournisseurs de localisation "aftermarket".
code source pour la bibliothèque respective est à
https://github.com/CyanogenMod/android_frameworks_base/tree/cm-10.1/location/lib
Un fournisseur d'emplacement devrait étendre com.android.location.provider.LocationProviderBase
.
Les classes et les méthodes sont documentées dans le code.
Edit: En regardant
https://github.com/android/platform_frameworks_base/blob/master/core/res/AndroidManifest.xml
à partir de la ligne 607, il semble que le niveau de protection pour l'autorisation INSTALL_LOCATION_PROVIDER
est signatureOrSystem
. Cela signifie que toute application qui utilise cette fonctionnalité (ie installe un fournisseur de localisation, pas nécessairement le fournisseur de locaion lui-même) devra soit être signée avec la même clé que la plate-forme (ce qui nécessiterait de construire votre système Android complet) ou être installé en tant qu'application système (ce qui peut fonctionner sur des périphériques enracinés).
Il y a un code à
https://github.com/microg/NetworkLocation
qui semble mettre en œuvre un LocationProvider. Je ne l'ai pas examiné en détail (encore) ou construit, donc je ne peux pas dire si cela fonctionne et ce qui est nécessaire pour cela. Mais peut-être que cela fournit des indications.
Si je crée mon propre LocationProvider, comment l'enregistrer/l'installer? Je ne trouve rien dans le manifeste ... – JohnyTex
Je ne l'ai jamais fait moi-même, mais il y a un fournisseur de localisation sur https://github.com/microg/android_packages_apps_UnifiedNlp. Cette application devrait avoir tout le code pour installer un fournisseur de localisation approprié. Si vous voulez essayer l'application, elle doit être installée en tant qu'application système (installez-la et déplacez-la dans le dossier de l'application système via Terminal ou adb) et nécessite au moins un backend, qui peut être une application utilisateur. – user149408
Merci! Bien que cette lib semble manquer:
- 1. Comment ajouter mon propre LocationProvider?
- 2. LocationProvider
- 3. Votre propre adaptateur de synchronisation pour Android?
- 4. Comment supprimez-vous votre propre application du marché android
- 5. Comment implémenter votre propre serveur WHOIS?
- 6. Comment tester "UDP header longueur incorrecte" sur votre propre?
- 7. Comment créer votre propre HashMap en Java?
- 8. Dessiner votre propre barre d'onglets?
- 9. Comment implémenter votre propre rendu DirectShow personnalisé?
- 10. Comment créer votre propre symbole mathématique laTex?
- 11. Comment créer votre propre impression Fonction PHP
- 12. Comment créer votre propre XP pilote d'imprimante
- 13. Création de votre propre HRESULT?
- 14. Héberger un site web sur votre propre serveur
- 15. Exécution de votre propre serveur GAE
- 16. Utiliser votre propre API pour construire votre site
- 17. Créer votre propre fédération google wave
- 18. Eclipse ajoutant votre propre commande de construction
- 19. Pouvez-vous construire votre propre MSTEST DataSource
- 20. ASP.NET - Construire votre propre système de routage
- 21. créer votre propre référentiel svn hébergement
- 22. Comment mettre votre application sur votre iphone?
- 23. Comment gérer @JoinColumn dans votre propre implémentation NamingStrategy?
- 24. Comment exclure votre propre application du menu Partage?
- 25. Comment construire votre propre analyseur lexical pour StringTemplate?
- 26. Comment créez-vous votre propre skin ADF Faces?
- 27. Comment obtenir ou posséder votre propre adresse IP?
- 28. Comment PASSER votre propre connexion mysql à Zend_DB?
- 29. Comment gérez-vous un événement déclenché dans votre classe à l'intérieur de votre propre classe?
- 30. Étendre application Contacts sur Android pour fournir le cryptage
est-il une réponse satisfaisante pour cette question ??????? –