Замена стандартного поставщика GPS-сигналов на устройствах Android - PullRequest
9 голосов
/ 03 сентября 2010

Я хотел бы заменить поставщика местоположения GPS по умолчанию на телефонах Android своим собственным источником координат.

Существует ли какой-либо слой / API / библиотека / провайдер, который позволил бы заменить моего провайдера сигналов вместо встроенного аппаратного GPS или считывать данные с внешнего плагина? Это должно позволить всем приложениям, которые используют сервис GPS, получать мой сигнал вместо GPS. В идеале замена должна иметь доступ к сигналу GPS (для сравнения / исправления или для переключения между двумя поставщиками).

Я думаю, например, реализовать свой собственный LocationManager и зарегистрировать его в системе (по желанию или по умолчанию), если это возможно. Но на этом этапе я все еще пытаюсь выяснить, что возможно и подходит.

Спасибо за любые ссылки.

Ответы [ 3 ]

4 голосов
/ 14 сентября 2010

Замена «по умолчанию» в настоящее время недопустима, и единственный способ обойти это - создать фиктивного поставщика. Сначала вы должны установить разрешение безопасности:

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

Во-вторых, настройте свой код на использование фиктивного провайдера, который вы создадите. Здесь есть отличная информация о том, как этого добиться: http://diffract.me/2009/11/android-location-provider-mock/

1 голос
/ 07 сентября 2010

Я сейчас только в процессе чтения про Android SDK.Однако я понимаю, что вы могли бы обеспечить реализацию намерения GPS_PROVIDER.

Затем любое приложение может перейти к использованию предпочтительного намерения GPS_PROVIDER.

См .: http://developer.android.com/guide/topics/intents/intents-filters.html

0 голосов
/ 13 сентября 2010

Я почти уверен, что провайдеры определения местоположения по умолчанию для точного определения местоположения встроены в Android.

Учитывая, что Google все больше осознает потенциальное неправильное использование и использование системных ресурсов приложениями, я бы сказал, что этохорошая вещь.В противном случае люди смогут обмануть пользователя, думая, что он где-то еще, используя достоверную настройку «Использовать спутники GPS».

Единственный способ увидеть, что вы можете добавить провайдера местоположения, - это android.location.LocationManager.addTestProvider (......) , для чего требуется разрешение ACCESS_MOCK_LOCATION.Теперь этот метод и разрешение задокументированы как предназначенные для «тестирования».Я не могу найти источник, в котором конкретно говорится, что это разрешение не предоставляется для приложений, выпущенных на рынке, но я сильно подозреваю, что это так.

...