Показать сообщение отдельно
Старый 07.04.2015, 02:12   #1
Lexx09
Старший Пользователь
 
Регистрация: 18.04.2009
Город: Краснодар
Регион: 23, 93
Машина: Приора хэтчбек
Сообщений: 977
Lexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud of
По умолчанию iCarDS + ARC Welder + Яндекс.Навигатор

Как я уже писал ранее, в эмуляторе ARC Welder прекрасно запустился Яндекс.Навигатор. Маршруты прокладывает, звук есть. Красота! Громоздкий Bluestacks теперь вроде как и не нужен.

Но есть одно "но". На моих домашних Windows7 и Windows8.1 навигатор, да и браузеры тоже, не видят реальных GPS-координат даже с использованием драйвера виртуального сенсора местоположения (GPSDirect). Тут пишут, что приемники на чипах U-Blox могут работать, как сенсор. Но у меня, да и у большинства, наверное, обычные USB GPS-приемники. Поэтому решил исправить это недоразумение.

В Chrome есть эмуляция местоположения. На изменение этих данных навигатор реагирует. Возникла идея подсунуть туда реальные координаты, получаемые с GpsGate. Для этого пришлось править расширение "App Runtime for Chrome".

Сначала пробовал сделать аналогично инструкции "Внедрение в браузер" из самого GpsGate. Не получилось. Наткнулся на безопасность в расширениях - Content Security Policy запрещает загружать скрипты со сторонних сайтов (коим прикидывается GpsGate), также запрещено выполнение eval. Обойти эти запреты никак не получилось.

Потом сделал по другому. Использовал XHR, а вместо eval использовал парсинг json. Вуаля! Навигатор координаты увидел. Теперь Bluestacks точно не нужен.

Для тестирования в домашних условиях написал эмулятор GPS-приемника, который выдает случайно меняющие в небольших пределах координаты и другие параметры. Пробовал использовать Fidelity Satellite Emulator, но в нем карта не отображалась и координаты не менялись, хотя задал и движение и скорость.

Записал небольшое "домашнее" видео:
http://www.youtube.com/watch?v=UogU3Qz0YfM

На видео навигатор "мечется", т.к. координаты случайные.

---------------------------------------------------------------------------

Инструкция


Используем 64-битную операционную систему. В моем случае это Windows 7. Для редактирования текстовых, html, js и json файлов используем текстовый редактор Notepad++. Блокнотом лучше не пользоваться.


1. Установка и настройка GpsGate

Устанавливаем GpsGate Splitter последней версии.

Запускаем GPSGate.

На вкладке "Input" в выпадающем списке выбираем COM-порт, на котором "висит" GPS-приемник, нажимаем "Settings..." и указываем скорость обмена данными (Baud rate). Например, для BU-353s4 по умолчанию скорость 4800. Или же подбираем максимальную скорость перебором по наличию валидных данных. При использовании скрипта GPSSetBaudrate указываем скорость такую же, как в параметре command ini-файла.

На этой же вкладке нажимаем кнопку "Open". Картинка должна стать зеленой, и должны появиться надписи "Running OK!" и "GPS data with valid position.".

На вкладке "Output" в выпадающем списке выбираем "GPS in browser" и нажимаем кнопку "Add".

На этой же вкладке в выпадающем списке выбираем "Virtual COM port" и нажимаем кнопку "Add". Выбираем из списка номер свободного COM-порта. Этот номер порта прописываем в настройках iCarDS.

На вкладке "Advanced" нажимаем кнопку "Show more options…".

На вкладке "Input" в выпадающем списке "Retry connection to input" выбираем "On Timeout".

На этой же вкладке нажимаем кнопку "Open", через пару секунд – "Close". Это нужно, чтобы GpsGate запомнила настройки.


2. Установка эмулятора

Устанавливаем последнюю версию браузера Chrome.

В Chrome устанавливаем расширение "ARC Welder". При этом дополнительно автоматически будет скачано и установлено расширение "App Runtime for Chrome".

Идем в расширения Chrome, ставим галку "Режим разработчика". Проверяем, чтобы были установлены и включены оба расширения – "ARC Welder" и "App Runtime for Chrome", т.к. возможны глюки при установке. Если чего-то нет – повторяем установку отсутствующего расширения.

Сюда выложил файл App_Runtime_for_Chrome_47.5021.508.11.crx для переноса в авто через флешку, чтобы не тратить мобильный трафик и время. Устанавливается перетаскиванием в окно Chrome с расширениями. "ARC Welder" так не устанавливается, его необходимо устанавливать через интернет по вышеуказанной ссылке после установки "App Runtime for Chrome".

Создаем папку, в которой будут будут храниться установленные apk в виде распакованных расширений. Например, F:\ARC_Welder.

Создаем папку, которая будет являться картой памяти для эмулятора. Например, F:\sdcard.


3. Разрешение эмуляции местоположения в Chrome

Разрешение эмуляции местоположения делается однократно.

Запускаем Chrome. Нажимаем Ctrl+Shift+J ("Инструменты разработчика").

На вкладке "Emulation" в разделе "Sensors" ставим галку "Emulate geolocation coordinates":



Если панель с вкладкой "Emulation" не видна, то нажимаем кнопку "Show/hide drawer":




4. Установка Яндекс.Навигатора

Запускаем "ARC Welder" из панели запуска приложений Chrome, нажимаем кнопку "Choose", выбираем папку F:\ARC_Welder.

В "ARC Welder" нажимаем кнопку "Add your APK", выбираем apk-файл Яндекс.Навигатора v1.61. Версия 1.62 не работает в эмуляторе, поэтому ставим 1.61.

Ориентацию оставляем "Landscape", форм-фактор выбираем "Maximized".

Нажимаем кнопку "Launch App", чтобы произошла установка. Закрываем запустившийся навигатор.

В папке F:\ARC_Welder появится папка вида Яндекс.Навигатор_1.61.apk_export_LqJJJ.


4.1. Правка расширения Яндекс.Навигатор

Заходим в папку F:\ARC_Welder\Яндекс.Навигатор_1.61.apk_export_LqJ JJ и открываем файл manifest.json в текстовом редакторе (Notepad++).

В секции "permissions" исправляем:
{"fileSystem": ["write"]}
на
{"fileSystem": ["write", "retainEntries", "directory"]}

В секции "permission" в конце, после "geolocation", добавляем "http://localhost:*/*" через запятую.

В итоге секция "permissions" должна выглядеть так:



В секции "arc_metadata" исправляем:
"enableExternalDirectory": false
на
"enableExternalDirectory": true

Если при установке APK указали неверную ориентацию и/или форм-фактор, то это можно поправить – в файле manifest.json изменяем параметры:
"formFactor" – прописываем "maximized",
"orientation" – прописываем "landscape"

После правки manifest.json необходимо обновить расширение, нажав "Обновить" в расширениях Chrome:



Далее необходимо указать эмулятору местоположение папки, которая будет являться картой памяти. Запускаем навигатор (из панели запуска приложений Chrome или из расширений Chrome). В появившемся диалоговом окне выбираем папку F:\sdcard. Это диалоговое окно будет показано один раз. Если в дальнейшем необходимо будет сменить папку – то нажимаем на значок папки в левом верхнем углу тулбара навигатора.

Закрываем запустившийся навигатор.


4.2. Перенос кешированных карт

Открываем папку F:\sdcard\Android\data\ru.yandex.yandexnavi\files\ cache. Переименовываем свои файлы кешированных карт так, чтобы они совпадали с теми, что уже есть в папке. Удаляем файлы в папке, копируем туда свои файлы.

Примечание: файлы в папке могут быть такие – icons-ru_-2.00.sqlite, regions-ru_-2.00.sqlite, tiles-ru_-2.00.sqlite, или такие – icons-ru_RU-2.00.sqlite, regions-ru_RU-2.00.sqlite, tiles-ru_RU-2.00.sqlite.


4.3. Перенос избранного

Избранное хранится в одном из файлов в папке расширения. Файл имеет в начале сигнатуру "FGUI". Расположение и имя файла случайное при каждой установке.

Т.е. надо перебрать все файлы в папке File System расширения Yandex.Navigator, найти тот, который начинается с сигнатуры "FGUI", и заменить его своим.

Для облегчения поиска файла написал скрипт FindFavourites.exe.

Запускаем скрипт, вводим ID расширения Yandex.Navigator (смотрим в расширениях Chrome):



Нажимаем кнопку "OK".

Если файл избранного будет найден, то откроется папка, содержащая этот файл, а так же появится модальное сообщение с именем файла. В противном случае появится сообщение, что файл избранного не найден.

Файл избранного создается навигатором непонятно в какой момент времени. Если скрипт не нашел файл избранного, то надо еще раз запустить навигатор, зайти в избранное.

В моем случае сигнатура "FGUI" нашлась в файле …\p\03\00000370.

Удаляем этот файл. Копируем в эту папку свой файл избранного (favourites), переименовываем его в 00000370.


5. Правка расширения "App Runtime for Chrome"

Идем в папку %LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions\mfaihdlpglflfgpfjcifdjdjcc kigekc. Можно скопировать эту строку и вставить в проводник, убрав пробел перед kigekc (форум сам их вставляет).

Заходим в подпапку с номером версии.

Копируем в нее файл getGPS.min.js из архива getGPS.min.rar

В этой же папке открываем файл gen_index.min.html в текстовом редакторе (Notepad++).

Сразу после кода:
<script src="gen_index.min.js"></script>
вставляем:
<script src="getGPS.min.js"></script>



На данном этапе можно запустить Яндекс.Навигатор в эмуляторе, проверить работоспособность и реагирование на реальные GPS-координаты.

При первом запуске навигатора появится окно GpsGate с запросом на разрешение доступа веб-страницы к GPS-координатам. В нем необходимо разрешить доступ навсегда, нажав кнопку "Yes, always":




6. Избавление от верхнего тулбара в навигаторе

Идем в папку %LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions\mfaihdlpglflfgpfjcifdjdjcc kigekc. Можно скопировать эту строку и вставить в проводник, убрав пробел перед kigekc (форум сам их вставляет).

Заходим в подпапку с номером версии.

Копируем в нее файл getGPS.min.js из архива getGPS.min.2.rar с перезаписью.

Открываем файл gen_index.min.js в текстовом редакторе (Notepad++).

Сразу после кода:
this.previousZoom_=c;
вставляем:
b+=_TOPBAR_HEIGHT;d.height+=_TOPBAR_HEIGHT;




7. Инсталлятор

Инсталлятор (InstallYandexNavigator.rar) состоит из двух исполняемых файлов - Install.exe и CopyCahe.exe.

Инсталлятор делает то, что прописано в пунктах 4.1, 4.2, 4.3, 5 и 6 данной инструкции.

Install.exe делает следующее:
  • Копирует файл getGPS.min.js
  • Правит файл gen_index.min.html
  • Правит файл gen_index.min.js
  • Правит файл manifest.json расширения Yandex.Navigator
  • Копирует файл избранного, если есть

Рядом с Install.exe обязательно должен быть файл getGPS.min.js.

Если есть избранное, то этот файл должен быть рядом с Install.exe под именем favourites.

Все пути, файлы и идентификаторы будут определены автоматически.

Файл избранного создается навигатором не сразу, а в непонятно какой момент времени. Если после запуска Install.exe файл избранного не скопировался, то надо запустить навигатор, подвигать карту, зайти в избранное, выйти, закрыть навигатор. После этого опять запустить Install.exe. Возможно, придется так сделать несколько раз.



CopyCahe.exe копирует файлы кешированных карт в папку карты памяти. При этом файлы будут автоматически переименованы, чтобы совпадать с теми, что уже есть в папке карты памяти.



Порядок установки
  1. Устанавливаем Яндекс.Навигатор с помощью "ARC Welder" (п. 4 данной инструкции без подпунктов).
  2. Запускаем Install.exe.
  3. После окончания работы инсталлятора и вывода результата - обновляем расширение Yandex.Navigator.
  4. Запускаем Яндекс.Навигатор, выбираем папку, которая будет являться картой памяти. Например, F:\sdcard.
  5. Немного двигаем карту.
  6. Закрываем навигатор.
  7. Копируем свои файлы кешированных карт в папку cache рядом с CopyCahe.exe.
  8. Запускаем CopyCahe.exe.

8. Встраивание в iCarDS
  • Шаблон: FSReal
  • Имя программы: Яндекс.Навигатор
  • Имя окна программы: Yandex.Navigator
  • Путь к файлу программы: C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
  • Параметры командной строки: --profile-directory=Default --app-id=kcggmonbnhhhlpaccnemioakhgnbjfie, где kcggmonbnhhhlpaccnemioakhgnbjfie – это ID приложения Yandex.Navigator
  • Захват: Да
  • Наложение: Да
  • X: 200
  • Y: 0


Есть проблемка – iCarDS не реагирует на закрытие навигатора крестиком в тулбаре самого навигатора. Поэтому закрывать надо с помощью самого iCarDS.

Для скрытия указателя мыши в навигаторе используем файлы из архива HideCursor2.rar из темы "Очередной скрыватель указателя мышки".
Вложения
Тип файла: rar getGPS.min.rar (690 байт, 529 просмотров)
Тип файла: rar FindFavourites.rar (375.9 Кб, 505 просмотров)
Тип файла: rar getGPS.min.2.rar (785 байт, 489 просмотров)
Тип файла: rar InstallYandexNavigator.rar (776.9 Кб, 528 просмотров)
__________________
Приора хэтчбек
Win7 x64 Pro, Intel Core i3-3240 Ivy Bridge 2x3.4GHz HT, DDR3 2x4Gb, SSD SiliconPower Ace A55 128GB SATAIII, ASRock B75M-ITX, M2-ITX rev.2F, GPS Beitian BN-808, Logitech Wireless Touch Keyboard K400r, ИК-пульт Prology RCD-350, круиз-контроль...

Последний раз редактировалось Lexx09; 26.12.2015 в 11:46. Причина: Обновил ссылку на App Runtime for Chrome
Lexx09 вне форума   Ответить с цитированием