Сделал сборки с вроде работающим чтением GPS-координат через COM-порт. Но проверить на домашнем компе не могу, т.к. что-то сломалось - данные через COM-порт перестали проходить внутрь MEmu (и внутрь Ubuntu в VirtualBox тоже). Вернее, проходят изредка, и с тормозами, зависаниями и потерями символов. Читаем первое сообщение темы.
Для желающих поэкспериментировать вот несколько наработок: - В папке /system/lib/hw необходимо заменить файл gps.intel.so на другой, с возможностью чтения NMEA из последовательного порта. Я брал отсюда. Из образа соответствующей версии Android извлекаем system.sfs, а уже из него вытаскиваем gps.default.so, переименовываем в gps.intel.so, копируем в папку /system/lib/hw эмулятора и выставляем такие-же разрешения, как у оригинального. gps.default.so из образа 4.2 вроде не работает в эмуляторе на 4.2, поэтому берем из образа 4.4.
- Необходимо дать разрешения rw-rw-rw- устройству /dev/ttyS0 (COM1 в настройках виртуальной машины). Это можно сделать несколькими способами:
- Способ preinstall.sh, init.d.
- Способ install-recovery.sh.
- В 4.2 оба предыдущих способа не работают, т.к. в init.rc закомментирован вызов сервиса с запуском install-recovery.sh. А вызов preinstall.sh отсутствует во всех версиях. Поэтому 3-й способ - поправить разрешения в файле ueventd.rc. Но этот файл при каждой загрузке Android восстанавливается из ramdisk, поэтому надо распаковать ramdisk, поправить ueventd.rc, запаковать файлы обратно. Все это можно сделать в виртуальной машине Ubuntu под VirtualBox, подключив vmdk-файлы.
- В файл /system/build.prop добавляем строки (скорость указываем свою):
ro.kernel.android.gps=ttyS0
ro.kernel.android.gpsttybaud=4800
- В настройках местоположения включаем "По спутникам GPS".
|