Ребята у меня адаптер gps/glonass, с либой из шапки происходит постоянное мигание, то gps то glonass и так покругу.
К сожалению либа от DaveMF у меня не заработала вообще, все приложения перебрасывают в системные настройки жпс.
Я решил разобраться в чем дело, взял за основу вот этот проект:
https://github.com/kconger/android-serial-gps-driver скомпилил его используя android NDK и получил точно тот же результат - мигание.
Так вот согласно исходникам обновление операется на GSV, и делается проверка:
Код:
if (num_messages==msg_number)
update_gps_svstatus(&r->sv_status);
Вобщем сделал дамп NMEA сообщений которые приходят на последовательный порт увидел что:
Код:
$GPGSV,3,1,10,01,10,057,24,02,19,241,21,03,37,062,23,06,55,242,41*75
$GPGSV,3,2,10,12,14,320,31,17,77,044,34,23,02,096,13,24,17,290,39*72
$GPGSV,3,3,10,28,36,163,39,32,08,034,20*75
$GLGSV,3,1,09,65,39,110,19,66,09,159,36,72,30,045,17,78,30,227,20*66
$GLGSV,3,2,09,79,41,286,34,80,09,342,17,81,52,308,28,87,20,076,24*6A
$GLGSV,3,3,09,88,60,032,14*5E
видно что идет GPGSV (gps) несколько сообщений, и когда num_messages==msg_number выполняется update_gps_svstatus
затем GLGSV (glonass) и снова num_messages==msg_number и снова обновление update_gps_svstatus что неправильно, обновлять нужно все один раз за цикл
Вобщем подковырял я исходники чтобы сделать сквозную нумерацию, и обновление по приходу нового GPGSV с msg_number == 1
Также подправил чтобы использовалось ro.kernel.android.gps и ro.kernel.android.gps.speed По идее библиотека сама выставит скорость и no_echo для этого порта.
Короче поставил вроде работает но нужно тестирование.
Скачать:
gps.default.zip