LINUX.ORG.RU

Самописный провайдер навигационных данных под Android - возможно ли такое?

 , , ,


0

1

Смотрю сейчас вот эту документацию по LocationManager:

https://developer.android.com/reference/android/location/LocationManager#addT...

И есть там вот такая загадочная функция:

void addTestProvider (String name, 
                boolean requiresNetwork, 
                boolean requiresSatellite, 
                boolean requiresCell, 
                boolean hasMonetaryCost, 
                boolean supportsAltitude, 
                boolean supportsSpeed, 
                boolean supportsBearing, 
                int powerRequirement, 
                int accuracy) 
Creates a mock location provider and adds it to the set of active providers.

Судя по параметрам, никакого «рабочего» провайдела такая функция создать не может. Это просто заглушка для автоматического тестирования кода, ничего более...

А есть ли возможность создать самописаного провайдела, с которым смогли бы работать и Google Maps и Яндекс.Карты? И назначить этому провайдеру максимальный приоритет (точность) чтобы выбирался именно он?

Можно ли такое сделать? В какую сторону копать? В интернетах по данному вопросу информации практически нет.

★★★★★

что значит провайдер?

трекер или что?

sqq
()

Продакшен апликейшеном вроде будет игнорировать такие провайдеры. Насколько я помню, там чтоб тестировать, надо было явно указать тестовый провайдер.

Копать например тут

https://www.google.by/amp/s/mobiarch.wordpress.com/2012/07/17/testing-with-mo...

F457 ★★★★
()
Последнее исправление: F457 (всего исправлений: 1)
Ответ на: комментарий от l4gfcm

Там реализация fused location provider. Для приложений которым нужен оный из play services, который могут не устанавливать. Но это не имеет отношения к системному location manager-у и тестовому провайдеру.

F457 ★★★★
()

Конечно можно. Расцвет темы был сразу после релиза Pokemon Go, начинай оттуда.

t184256 ★★★★★
()
Ответ на: комментарий от F457

Хочу понять, сторонние программы типа Gogle Maps и Яндекс.Карт смогут работать с таким провайдером?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Обычно нет. Там понятно от куда тебе координаты приходят с реального гпс или с тестового. Посему если программистам не было лень, не дебажные билды будут игнорировать тестовые данные.

Тут перспективней копать в сторону fused провайдеров с фдроида для гуглокарт. Или как с помощью рута подменить системный менеджер. Но не уверен, что он поможет для Яндекса - у них был свой велосипед для геолокации, который хоть и использует системные апи, но делает это по своему. Как писали выше, 5а форумах покемонщиков должна быть инфа, если все те дыры не прикрыли давно.

F457 ★★★★
()
10 января 2019 г.
Ответ на: комментарий от F457

Тут перспективней копать в сторону fused провайдеров с фдроида для гуглокарт.

Названия проектов можешь сказать? А то по названиям и кратким описаниям вообще не понятно что программы в секции Navigation делают.


Как писали выше, 5а форумах покемонщиков должна быть инфа, если все те дыры не прикрыли давно.

Нужно не через дыры, а чтоб официально работало на любом Андроиде v.4 - v.7

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от l4gfcm

В F-droid есть несколько кастомных провайдеров. Можешь посмотреть для примера.

Названия, названия мне нужны.

Я нашел только FakeTraveler (Fake your location). Но он не работает с GoogleMaps и Яндекс.Картами. Пишет, что mocked-локация установлена, а GoogleMaps/Яндекс.Карты все равно берут данные с GPS.

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от Xintrea

Да, и в настройках разработчика установлено:

Выбрать приложение для фиктивных местоположений
Приложение для создания фиктивных местоположений: Fake Travel

Но толку от этого никакого.

Xintrea ★★★★★
() автор топика

ну, обманывали же игроки как-то эту хайповую AR игру.. как же она называлась-то.. покемон го? где ходить надо было, а они на диване сидели и своих персонажей прокачивали.

значит, есть возможность.

aol ★★★★★
()
Ответ на: комментарий от aol

Этих покемонов-го было выпущено куча релизов. На разных языках, разных версий. Насколько я понимаю, искали релизы, которые по недосмотру выпускали в дебаг-режиме, и в нем подмена локации работать будет.

А я имею в виду нормальные картографические программы, типа GoogleMaps и Яндекс.Карт, которые по-человечески собираются в режиме релиза, и в которых подмена не срабатывает просто так.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

https://github.com/microg/android_packages_apps_UnifiedNlp
ну остальное по слову UnifiedNlp нагуглишь

Нужно не через дыры, а чтоб официально работало на любом Андроиде v.4 - v.7

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

F457 ★★★★
()
Ответ на: комментарий от F457

Я сейчас нашел программу Mock Location, кстати российского разработчика. Она подменяет координаты и у GoogleMap и у Яндекс.Карты, и видимо вообще у любых картографических программ.

А Fake Travel из F-Droid этого сделать не может. Непонятно почему. Неужели используются разные API/методы?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от aquadon

Смотря что ты имеешь в виду под nlp backend. Если вот это:

https://github.com/microg/android_packages_apps_UnifiedNlp
https://github.com/microg/android_external_UnifiedNlpApi

то нет, потому что это оверхед. Та же отечественная Mock Location подменяет навигационные данные без этого куска microG. Вот и надо разобраться как это делать.

Пока что я смотрю на вот эту функцию:

https://developer.android.com/reference/android/location/LocationManager#addT...

void addTestProvider (String name, 
                boolean requiresNetwork, 
                boolean requiresSatellite, 
                boolean requiresCell, 
                boolean hasMonetaryCost, 
                boolean supportsAltitude, 
                boolean supportsSpeed, 
                boolean supportsBearing, 
                int powerRequirement, 
                int accuracy) 
Creates a mock location provider and adds it to the set of active providers.


Дело осложняется тем, что мне надо ее дергать из C++ приложения Qt/QML, а Java я не знаю, чтобы создать экземпляр провайдера. Поэтому пока ищу возможные варианты, как народ делает.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от F457

Продакшен апликейшеном вроде будет игнорировать такие провайдеры. Насколько я помню, там чтоб тестировать, надо было явно указать тестовый провайдер.
Копать например тут
https://www.google.by/amp/s/mobiarch.wordpress.com/2012/07/17/testing-with-mo...

Вот я и хочу понять, этим методом можно пробрасывать фейковые координаты в GoogleMaps/Yandex.Карты, или даже заморачиваться не стоит?

Хотя я внимательно прочитал, и в этой статье написано другое. Не как создать фиктивный провайдер для всех приложений, а как создать фиктивный провайдер _внутри_ _своего_ приложения. А это совсем не то что нужно.

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 2)
Ответ на: комментарий от Xintrea

Mock Location

дык декомпильни ее и глянь. Эт же джава, если нет обфускации, там будет все относительно понятно.

F457 ★★★★
()
Ответ на: комментарий от Xintrea

Копать например тут
https://www.google.by/amp/s/mobiarch.wordpress.com/2012/07/17/testing-with-mo...

Для лучшего понимания предметной области, сделал перевод на русский этой статьи:

Тестирование приложений в Android с использованием фиктивных данных о местоположении

Xintrea ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.