![]() |
Цитата:
|
Цитата:
В папке /data/downloads нашел приложение BlueStacksLocationProvider.apk. Это приложение запрашивает координаты у функции UpdateGpsCoordinates. Приложение состоит из двух сервисов и одного класса. Первый сервис "GpsServiceStartReceiver" - автозагружаемый, и после автозагрузки запускает второй сервис "GpsService". Т.к. в Bluestacks версий 0.9.х.х и выше время до срабатывания автозагрузки составляет секунд 30, то первый сервис запустится через это время, и только потом "пойдут" координаты. Второй сервис "GpsService" просто запускает класс "QueryCoordinates", который в фоне циклически запрашивает координаты у функции UpdateGpsCoordinates и устанавливает их в качестве текущих. Но делает это как-то странно, а именно:
Еще нашел вот что - если в папке /data создать файл gps_debug_log, то в логах Android появятся записи приложения BlueStacksLocationProvider.apk. Примеры на первых 5-ти скриншотах:
Декомпилировал BlueStacksLocationProvider.apk и изменил так, чтобы координаты запрашивались и устанавливались каждую секунду. Но все равно осталась проблема, что координаты приложениями не определяются в реальном времени, а определяются только в момент запуска, и то после нескольких перезапусков. Поковырявшись в BlueStacksLocationProvider.apk решил заменить провайдера "network" на "gps". Теперь заработало так, как надо. При изменении координат в реестре они, не более, чем через секунду, обновляются в эмуляторе, и приложения их сразу видят. Правда, в логах появилось ругательство "Provider gps unknown" (4-й скриншот). В реестре координаты меняются при наличии датчика местоположения (при этом GpsSource становится равным 2). Но функция UpdateGpsCoordinates выдает координаты только, если GpsSource=8. Изменил HD-Frontend.exe таким образом, чтобы координаты из реестра выдавались при GpsSource=2. Получилась такая цепочка:
Для работы этой схемы мне пришлось: 1. Изменить HD-Agent.exe для работы с датчиком местоположения в Win7. 2. Изменить HD-Frontend.exe для выдачи координат из реестра при GpsSource=2. 3. Изменить BlueStacksLocationProvider.apk для увеличения скорости получения и установки координат; так же сменил провайдера с "network" на "gps". Можно еще попробовать:
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 и уже оттуда удалять. http://s018.radikal.ru/i506/1510/a1/810a02901c43t.jpg http://s006.radikal.ru/i215/1510/af/9bbe52643999t.jpg http://i016.radikal.ru/1510/51/80ea6c55d89bt.jpg http://s017.radikal.ru/i403/1510/25/3d06cbea1b0ft.jpg http://s019.radikal.ru/i611/1510/c0/e7da61baf8c1t.jpg http://s005.radikal.ru/i212/1510/63/099d774a72bdt.jpg |
Даааа...потрошитель ты знатный :shok:
|
Честно говоря, у себя никаких проблем не наблюдаю с традиционной связкой GpsGate+GPSBridge даже в гибридном спящем режиме, которым начал недавно пользоваться.
Если уснул с открытым навигатором в Bluestacks, то при просыпании все нормально продолжает работать после того, как модем автоматически подключится к сети. Из мелочей:
Потрошу скорее из спортивного интереса. |
Цитата:
Цитата:
Я так понимаю, что заставить использовать BS режим GpsSource = 1 вообще не реально, т.к. это не реализовано в самом BS? |
Исправил BlueStacksLocationProvider.apk - увеличил скорость запроса координат до 10 раз в секунду. Как и предполагал, рывки не пропали, дельтаплан не появился.
Нашел, как сделать вывод еще одних логов работы с GPS:
|
Цитата:
|
Цитата:
|
Цитата:
http://pccar.ru/showpost.php?p=331962&postcount=382 |
Krysanov, при таком способе физическая клавиатура вообще насовсем отключается. А в моем способе ее можно включить в настройках. Хотя, и включать не обязательно... Физическая клавиатура продолжает работать даже, когда отображается экранная.
|
Часовой пояс GMT +4, время: 15:17. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot