Кто-нибудь знает, как предоставить свой собственный LocationProvider и опубликовать его в системе, , чтобы другие приложения могли получить ссылку на него из LocationManager?Как предоставить свой собственный LocationProvider на Android?
ответ
Читать учебник о Android location provider mock
Я не намерен предоставлять mock-location-data для собственного приложения, но , чтобы иметь дополнительный LocationProvider для всех других приложений на телефоне на выбор. –
Таким образом, руководство по поводу «определения местоположения провайдера Android» не помогает. –
Что предложил Pentium10, кажется, отсутствует, проверьте http://pedroassuncao.com/2009/11/android-location-provider-mock/
или LocationManagerProximitryTest на Google: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/location/LocationManagerProximityTest.java
Или вот другой аналогичный вопрос с рабочим раствором/кода : Android mock location on device?
Нельзя делать.
Проблема заключается в том, что только OEM-производителям разрешено устанавливать нового поставщика местоположения. Сторонний разработчик не может предоставить своему приложению разрешение, необходимое для установки нового поставщика местоположения (android.permission.INSTALL_LOCATION_PROVIDER).
Посмотреть ответ Дайан Hackborn (Android инженер рамки) в этой теме:
https://groups.google.com/d/topic/android-developers/OvCcdvO6jZY/discussion
Для установки нового поставщика местоположения, вы должны разработать совершенно новую прошивку (как http://www.cyanogenmod.com/), вставьте новый провайдера местоположения в этом прошивке и установите все это на телефоне пользователя.
Смотрите эту SO нить, а также: Why are these permissions being refused?
Все это из-за соображений безопасности.
Возможно ли это на корневом устройстве? – JohnyTex
@JohnyTex да возможно на корневом устройстве (или пользовательском роме). См. Инструкции на странице https://github.com/microg/android_packages_apps_UnifiedNlp –
Для осуществления разработки и тестирования вы можете установить поставщика услуг определения местоположения. Вам нужно включить «Разрешить макеты» в настройках разработчика, чтобы приложения могли видеть местоположения от этого провайдера.
Пример кода, посмотрите на воспроизведение GPX:
https://github.com/johncarpenter/Android-GPX-Mock-Location-Provider
Код для регистрации поставщика местоположения начинается в строке 203 файла android/src/com/twolinessoftware/android/PlaybackService.java
.
Если вы хотите «реального» поставщика местоположения (например, для развертывания своей функциональности как части приложения конечного пользователя), некоторые источники утверждают, что это невозможно, если только этот поставщик не находится в пакете, подписанном с системным ключом, поэтому вам придется создавать свой собственный ПЗУ из источника, подписывать его с помощью своего ключа, подписывать своего провайдера местоположений с тем же ключом и устанавливать как на свой телефон.
Тем не менее, Android в какой-то момент представил «разобщенных» поставщиков местоположения. По-видимому, им было необходимо, чтобы переместить свой собственный NetworkLocationProvider из ядра Android в пакет Google Apps.
Я еще не видел, что в настоящее время существует нераспределенный провайдер местоположений, и я не знаю о его использовании с открытым исходным кодом, но похоже, что в последней версии Android есть поддержка поставщиков услуг «послепродажного обслуживания».
Исходный код для соответствующей библиотеки в
https://github.com/CyanogenMod/android_frameworks_base/tree/cm-10.1/location/lib
Поставщик место должен расширить com.android.location.provider.LocationProviderBase
.
Классы и методы задокументированы в коде.
Редактировать: Глядя на
https://github.com/android/platform_frameworks_base/blob/master/core/res/AndroidManifest.xml
начиная с линии 607, он выглядит как уровень защиты для INSTALL_LOCATION_PROVIDER
разрешения является signatureOrSystem
. Это означает, что любое приложение, которое использует эту функцию (то есть устанавливает поставщика местоположения, не обязательно самого провайдера локализации), либо нужно будет подписаться с тем же ключом, что и платформа (для чего вам потребуется построить всю систему Android из источника) или быть установленным как системное приложение (которое может работать на корневых устройствах).
Существует некоторый код на
https://github.com/microg/NetworkLocation
, который, кажется, реализовать LocationProvider. Я еще не посмотрел на него (пока) или не построил его, поэтому я не могу сказать, работает ли он и что для него требуется. Но, возможно, это дает некоторые указатели.
Если я создаю свой собственный LocationProvider, как мне его зарегистрироваться или установить? Я не могу найти ничего в манифесте ... – JohnyTex
Я никогда не делал этого сам, но на сайте https://github.com/microg/android_packages_apps_UnifiedNlp есть пользовательский поставщик местоположения. Это приложение должно иметь весь код для установки правильного поставщика местоположения. Если вы хотите попробовать приложение, оно должно быть установлено как системное приложение (просто установите его и переместите в папку системного приложения через терминал или adb) и вам понадобится хотя бы один сервер, который может быть приложением для пользовательского пространства. – user149408
Спасибо! Хотя эта библиотека, кажется, отсутствует:
- 1. Как я могу предоставить свой собственный макет для CommonsWare EndlessAdapter
- 2. Mocking Android LocationProvider
- 3. Как создать свой собственный класс в Android?
- 4. Предоставить собственный способ блокировки экрана
- 5. LocationProvider
- 6. Как заменить значок xampp на свой собственный?
- 7. Создайте свой собственный компонент в Android
- 8. BSTR, как сделать свой собственный?
- 9. Android, где поставить свой собственный класс Bluetooth
- 10. Как написать свой собственный AuthorizeTag?
- 11. Как добавить свой собственный EnumValueMapperSupport
- 12. Android: Создайте свой собственный движок двигателя двигателя
- 13. Я создал свой собственный медиапланер в android
- 14. Создайте свой собственный диск для эмулятора Android
- 15. Создайте свой собственный стиль
- 16. Как определить свой собственный SelectableChannel?
- 17. Как написать свой собственный itoa?
- 18. Сделайте свой собственный массив
- 19. Как получить статус LocationProvider в android
- 20. Реализовать свой собственный SizeOf
- 21. Создание свой собственный отладчик
- 22. Дать свой собственный Makefile
- 23. Создайте свой собственный браузер
- 24. Как я могу создать свой собственный ActionBar?
- 25. Ошибка JSON Parser после перехода на свой собственный класс Android
- 26. Создайте свой собственный API
- 27. Назовите свой собственный файл
- 28. Установите делегат UIScrollView на свой собственный класс
- 29. Как предоставить каждому объекту магазина собственный массив?
- 30. Как получить $ locationProvider?
есть ли удовлетворяющий ответ на этот вопрос ??????? –