Тема: Alfa 147 + Android
Показать сообщение отдельно
Старый 10.03.2012, 20:23   #26
tsynik
Старший Пользователь
 
Регистрация: 17.03.2011
Город: Moscow
Регион: 77, 97, 99, 177
Машина: Alfa Romeo
Сообщений: 322
tsynik has a spectacular aura abouttsynik has a spectacular aura abouttsynik has a spectacular aura about
По умолчанию

Цитата:
Сообщение от Vadim72 Посмотреть сообщение
Пришлось использовал программу Autostart, которая после загрузки планшета запускает от имени рута скрипт /data/opt/autostart.sh.

Как ты переключаешь интерфейсы?Можно ли посмотреть листинг твоего скрипта?

По умолчанию используется ttyS0,а надо использовать ttyUSB0.Прописываю setprop ro.kernel.android.gps ttyUSB0

Очень надеюсь на ответ.
Autostart.sh - нормально. По-хорошему на планшете также нужно установить busybox в /system/bin или /system/xbin, чтобы был полноценный shell с поддержкой конструкций if. Скрипт выглядит примерно так:

Код:
#!/system/bin/busybox ash

sleep 2

#
# GPS
#

# Загружаем модуль ядра
insmod pl2303.ko

/system/bin/setprop "ro.kernel.android.gps" "ttyS1"
/system/bin/setprop "ro.tty.speed" "9600"

# если подключен внешний GPS (есть устройство /dev/ttyUSB0)
if [ -c /dev/ttyUSB0 ]; then
	# создаём символическую ссылку
	busybox ln -s /dev/ttyUSB0 /dev/ttyS1
	/system/bin/log -t init.sh "Linking /dev/ttyUSB0 to /dev/ttyS1 for GPS"
else
	busybox ln -s /dev/ttyS0 /dev/ttyS1
	/system/bin/log -t init.sh "/dev/ttyUSB0 does not exist. Use internal GPS (/dev/ttyS0)"
fi

# USB Audio
#/system/bin/setprop "media.audio.out.mode" "usb"

# Navitel SafeStart
sed -i 's/SafeExit = 0/SafeExit = 1/g' /data/data/com.navitel/settings.001.ini
В библиотеке GPS андроида может как обрабатываться, так и в принципе не использоваться параметр "ro.kernel.android.gps".

Идешь в /system/lib или /system/lib/hw/ и находишь там *gps*.so, это и есть бинарник библиотеки, работающей с gps. Копируешь его на карту памяти и на компьютер.

Проверить можно любым HEX-редактором. Открываешь в HEX-редакторе загруженный файл (libgps.so?), поиск - "ro.kernel.android.gps", если совпадения есть - значит устройство по-умолчанию можно переназначить на /dev/ttyUSB0). Просто устанавливаешь значение ro.kernel.android.gps = ttyUSB0 через setprop в autostart.sh, этого должно быть достаточно.

Если нет, тогда нужно посмотреть в HEX-редакторе совпадения на /dev/* и поменять /dev/ttyS0 на (к примеру) /dev/ttyS1 (или любое другое не существующее в /dev/ устройство с именем той же длинны), а это будет ссылка либо на /dev/ttyUSB0 либо на /dev/ttyS0. Так имеет смысл делать, если есть встроенный GPS-модуль. Если его нет, тогда просто при загрузке линковать /dev/ttyUSB0 на то устройство, с которым работает библиотека. Также, важным моментом является скорость работы порта (4800 9600 etc). Если после загрузки по команде cat /dev/ttyUSB0 ты видишь данные NMEA а не мусор - скорость ставить не нужно, и так всё ОК.

Последний раз редактировалось tsynik; 10.03.2012 в 21:03.
tsynik вне форума   Ответить с цитированием