PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Разработка программ > Программы управления > iCarDS > Bluestacks

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2015, 17:14   #521
sirota
Бывалый писикарщик
 
Аватар для sirota
 
Регистрация: 27.09.2008
Город: Собянинск
Регион: 77, 97, 99, 177
Машина: шкода а5
Сообщений: 5,443
sirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant future
По умолчанию

Цитата:
Сообщение от Lexx09 Посмотреть сообщение
У меня нет ее.
Планируете продолжить изыскания в плане работы GPS в блюстаке без костылей?
__________________
То win 10х64, то win 8.1x64

Видео регистрация на web. камеру:http://www.youtube.com/watch?v=1hPPLRBBIqc
sirota вне форума   Ответить с цитированием
Старый 21.10.2015, 12:14   #522
Lexx09
Старший Пользователь
 
Регистрация: 18.04.2009
Город: Краснодар
Регион: 23, 93
Машина: Приора хэтчбек
Сообщений: 979
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
По умолчанию

Цитата:
Сообщение от sirota Посмотреть сообщение
Планируете продолжить изыскания в плане работы GPS в блюстаке без костылей?
Не планирую, а продолжаю потрошить Bluestacks.

В папке /data/downloads нашел приложение BlueStacksLocationProvider.apk. Это приложение запрашивает координаты у функции UpdateGpsCoordinates.

Приложение состоит из двух сервисов и одного класса.

Первый сервис "GpsServiceStartReceiver" - автозагружаемый, и после автозагрузки запускает второй сервис "GpsService". Т.к. в Bluestacks версий 0.9.х.х и выше время до срабатывания автозагрузки составляет секунд 30, то первый сервис запустится через это время, и только потом "пойдут" координаты.

Второй сервис "GpsService" просто запускает класс "QueryCoordinates", который в фоне циклически запрашивает координаты у функции UpdateGpsCoordinates и устанавливает их в качестве текущих. Но делает это как-то странно, а именно:
  • Каждые 20 сек посылается запрос к функции UpdateGpsCoordinates для получения координат.
  • Затем, в течение следующих 20 сек, эти полученные координаты устанавливаются в качестве текущих каждые 2 сек.
И так в бесконечном цикле. Это видно на 1-м и 2-м скриншотах (цифры после "Received result" - это координаты).

Еще нашел вот что - если в папке /data создать файл gps_debug_log, то в логах Android появятся записи приложения BlueStacksLocationProvider.apk. Примеры на первых 5-ти скриншотах:
  • 1-й и 2-й скриншоты - координаты берутся из реестра (GpsMode=1, GpsSource=8).
  • 3-й, 4-й и 5-й скриншоты - координаты берутся с датчика местоположения (GpsMode=1, GpsSource=2).
На 3-м скриншоте видно, что функция UpdateGpsCoordinates координаты не выдает, т.к. не соблюдаются условия.

Декомпилировал BlueStacksLocationProvider.apk и изменил так, чтобы координаты запрашивались и устанавливались каждую секунду. Но все равно осталась проблема, что координаты приложениями не определяются в реальном времени, а определяются только в момент запуска, и то после нескольких перезапусков.

Поковырявшись в BlueStacksLocationProvider.apk решил заменить провайдера "network" на "gps". Теперь заработало так, как надо. При изменении координат в реестре они, не более, чем через секунду, обновляются в эмуляторе, и приложения их сразу видят. Правда, в логах появилось ругательство "Provider gps unknown" (4-й скриншот).

В реестре координаты меняются при наличии датчика местоположения (при этом GpsSource становится равным 2). Но функция UpdateGpsCoordinates выдает координаты только, если GpsSource=8. Изменил HD-Frontend.exe таким образом, чтобы координаты из реестра выдавались при GpsSource=2. Получилась такая цепочка:
  1. Мой самописный эмулятор GPS передает координаты в GpsGate.
  2. GpsGate через виртуальный COM-порт выдает координаты виртуальному датчику местоположения GpsDirect.
  3. Bluestacks видит этот датчик и в реальном времени обновляет координаты в реестре.
  4. BlueStacksLocationProvider.apk каждую секунду запрашивает координаты у функции UpdateGpsCoordinates и устанавливает их в качестве текущих.
По такой схеме все заработало! 5-й скриншот. Но в Яндекс.Навигаторе вместо дельтаплана - зеленый кружок с буквой Я, который перемещается рывками каждую секунду (6-й скриншот, маленький зеленый кружок - это откуда был рывок).

Для работы этой схемы мне пришлось:
1. Изменить HD-Agent.exe для работы с датчиком местоположения в Win7.
2. Изменить HD-Frontend.exe для выдачи координат из реестра при GpsSource=2.
3. Изменить BlueStacksLocationProvider.apk для увеличения скорости получения и установки координат; так же сменил провайдера с "network" на "gps".

Можно еще попробовать:
  • Увеличить скорость запроса координат до 10 раз в секунду. Но не думаю, что рывки пропадут.
  • Протестировать на реальном GPS-приемнике с датчиком местоположения (например, на VK-172).
Конечно, в идеале было бы неплохо добиться чтения координат в реальном времени из COM-порта или датчика местоположения без промежуточной записи в реестр и чтения оттуда, тем более, что так вроде изначально работает, но плохо...

PS: Долго мучался с тем, что мои изменения, внесенные в HD-Frontend.exe никак не отражались на работе, все работало по старому. В итого выяснил, что вместо моего правленного HD-Frontend.exe запускается скомпилированный (native image) из папки c:\windows\assembly\nativeimages_v2.0.50727_32\hd-frontend\17a65e6ccd86293d8908aa427c0f3d54\hd-frontend.ni.exe
Нашел это с помощью PETools при запущенном Bluestacks. Просто так этот файл и папку удалить нельзя. Пришлось загружаться с LiveCD и уже оттуда удалять.

__________________
Приора хэтчбек
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; 22.10.2015 в 10:28.
Lexx09 вне форума   Ответить с цитированием
Старый 21.10.2015, 12:24   #523
sirota
Бывалый писикарщик
 
Аватар для sirota
 
Регистрация: 27.09.2008
Город: Собянинск
Регион: 77, 97, 99, 177
Машина: шкода а5
Сообщений: 5,443
sirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant futuresirota has a brilliant future
По умолчанию

Даааа...потрошитель ты знатный
__________________
То win 10х64, то win 8.1x64

Видео регистрация на web. камеру:http://www.youtube.com/watch?v=1hPPLRBBIqc
sirota вне форума   Ответить с цитированием
Старый 21.10.2015, 12:48   #524
Lexx09
Старший Пользователь
 
Регистрация: 18.04.2009
Город: Краснодар
Регион: 23, 93
Машина: Приора хэтчбек
Сообщений: 979
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
По умолчанию

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

Если уснул с открытым навигатором в Bluestacks, то при просыпании все нормально продолжает работать после того, как модем автоматически подключится к сети. Из мелочей:
  • Спонтанное пропадание кнопки iCarDS, наложенной на Bluestacks. Это я поправлю своим скриптом. В цикле буду проверять - если кнопка не видна, то вытащу ее поверх окна Bluestacks.
  • Один раз iCarDS не смог подключиться к виртуальному COM-порту GpsGate.
Была, правда, одна железячная проблема... GPS и модем давным-давно были подключены к хабу D-Link DUB-H7, который питался от NSD15-12S5. И все это недавно как начало глючить со страшной силой - то интернет отвалится, то GPS, то все сразу и по сто раз за день. В диспетчере устройств вместо хаба - "Unknown device", обновление конфигурации не помогает, только перетыкание USB-кабеля. Надоело это, убрал хаб, а GPS и модем воткнул в системник. Теперь полет нормальный.

Потрошу скорее из спортивного интереса.
__________________
Приора хэтчбек
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 вне форума   Ответить с цитированием
Старый 22.10.2015, 06:59   #525
Glouck
Старший Пользователь
 
Регистрация: 03.10.2006
Возраст: 51
Город: Moscow
Регион: 77, 97, 99, 177
Машина: Nissan Elgrand
Сообщений: 246
Glouck will become famous soon enough
По умолчанию

Цитата:
Сообщение от Lexx09 Посмотреть сообщение
Не планирую, а продолжаю потрошить Bluestacks.
Восхищаюсь... Большое и полезное дело ты затеял...

Цитата:
Но в Яндекс.Навигаторе вместо дельтаплана - зеленый кружок с буквой Я, который перемещается рывками каждую секунду (6-й скриншот, маленький зеленый кружок - это откуда был рывок).
Это, похоже, будет проблемой из-за того, что координаты берутся из реестра. Для нормальной работы навигаторов надо передавать и остальную информацию с приемника - скорость, азимут, время и т.п.

Я так понимаю, что заставить использовать BS режим GpsSource = 1 вообще не реально, т.к. это не реализовано в самом BS?
Glouck вне форума   Ответить с цитированием
Старый 23.10.2015, 15:30   #526
Lexx09
Старший Пользователь
 
Регистрация: 18.04.2009
Город: Краснодар
Регион: 23, 93
Машина: Приора хэтчбек
Сообщений: 979
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
По умолчанию

Исправил BlueStacksLocationProvider.apk - увеличил скорость запроса координат до 10 раз в секунду. Как и предполагал, рывки не пропали, дельтаплан не появился.

Нашел, как сделать вывод еще одних логов работы с GPS:
  1. В реестре в разделе HKLM\SOFTWARE\BlueStacks\Guests\Android\Config создать строковый параметр GpsDebugLogs со значением yes.
  2. Создать папку C:\TEMP\BlueStacks, в ней появится файл gps.log.
__________________
Приора хэтчбек
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 вне форума   Ответить с цитированием
Старый 23.10.2015, 17:03   #527
vasekbfg
Старший Пользователь
 
Регистрация: 24.01.2014
Возраст: 38
Город: Москва
Регион: 77, 97, 99, 177
Машина: NSGV
Сообщений: 143
vasekbfg is on a distinguished road
По умолчанию

Цитата:
Сообщение от Lexx09 Посмотреть сообщение
Возникла кое-какая идея причины такого некорректного поведения GPSBridge. Экспериментально проверил. Подтвердилась.

А предположил я то, что GPSBrdige конфликтует сам с собой, а именно - сервис при каждом запуске создает новый поток, который пытается получить данные с TCP-порта, а т.к. порт занят другим, ранее созданным, потоком, то возникает ошибка.

Накликал 10 раз по иконке GPSBridge и посмотрел логи (отфильтровано по ошибкам):


В логах видно, что сообщения об ошибках от GPSBridge идут не раз в 10 сек, а массово.

Для 100% уверенности проверил количество потоков:


Их 10! И каждый пытается подключиться к TCP-порту. По правильному, поток должен быть один, и его можно остановить, запустить, перезапустить. Косяк разработчиков.
присоединюсь к трабле, похоже и у меня такая штука возникает , при потере координат только перезапуск помогает , наверное убиваются лишние потоки бриджа , уже есть какое-то решение этого косяка?
vasekbfg вне форума   Ответить с цитированием
Старый 26.10.2015, 15:48   #528
Lexx09
Старший Пользователь
 
Регистрация: 18.04.2009
Город: Краснодар
Регион: 23, 93
Машина: Приора хэтчбек
Сообщений: 979
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
По умолчанию

Цитата:
Сообщение от sirota Посмотреть сообщение

Как сделать, что бы после старта блюстака( v 0.9.23...), работала экранная клавиатура.
Сейчас после старта работает физическая...захожу в настройки....выключаю физическую, теперь можно набирать пальцем на экранной...но после перезагрузки опять включена физическая
Отписался на 4pda.
__________________
Приора хэтчбек
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.10.2015, 20:07   #529
Krysanov
Super Moderator
 
Аватар для Krysanov
 
Регистрация: 12.11.2013
Возраст: 45
Город: Горно-Алтайск
Регион: 04
Машина: lexus rx300
Сообщений: 3,148
Krysanov is a splendid one to beholdKrysanov is a splendid one to beholdKrysanov is a splendid one to beholdKrysanov is a splendid one to beholdKrysanov is a splendid one to beholdKrysanov is a splendid one to beholdKrysanov is a splendid one to beholdKrysanov is a splendid one to behold
По умолчанию

Цитата:
Сообщение от Lexx09 Посмотреть сообщение
Отписался на 4pda.
А мне вот это помогло
http://pccar.ru/showpost.php?p=331962&postcount=382
__________________
Windows 8.1, 64 бит, iCar DS 1.7.0.60
LGA 1155 Intel(R) Core(TM) i5-3570 CPU @ 3,4 GHz (6 Mb), 2x DDRIII 4Gb 1333 MHz KINGMAX, ASRock IntelB75, VGA (DVI+HDMI)+PCX16 3,0, SSD TOSHIBA OCZ tr150 на 240 GB, 2,5 Samsung SATA 1 Tb 5400 rpm, 8Mb, M4-atx -hv
Проект Кристалл-М=многоканальный звук в Lexus rx300 на базе CarPC!
Установка Windows, iCarDS и всего, что необходимо для CarPC!
_________________________________________

Krysanov вне форума   Ответить с цитированием
Старый 27.10.2015, 00:42   #530
Lexx09
Старший Пользователь
 
Регистрация: 18.04.2009
Город: Краснодар
Регион: 23, 93
Машина: Приора хэтчбек
Сообщений: 979
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
По умолчанию

Krysanov, при таком способе физическая клавиатура вообще насовсем отключается. А в моем способе ее можно включить в настройках. Хотя, и включать не обязательно... Физическая клавиатура продолжает работать даже, когда отображается экранная.
__________________
Приора хэтчбек
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 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 10 (пользователей: 0 , гостей: 10)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 22:39.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot