| 
 Сделал сборки с вроде работающим чтением 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".
 |