Android: эмуляция gps
От: korzhik Россия  
Дата: 17.06.10 11:16
Оценка: 18 (5)
Всем привет

понадобилось мне тут сделать простую вещь: сэмулировать поток gps данных на android'ном эмуляторе.

Попробовал через Dalvik Debug Monitor
Посылал через него единичные координаты, в LocationListener приходят нули.
Решил загрузить kml файл — не грузит. Оказалось что нужен определённо построенный kml файл, и не любой kml сюда подойдёт.
Хорошо. Нашёл сервис для конвертации kml'ов — http://ge2adt.appspot.com/
Сделал хороший kml файл — загрузил в ddms — файл загрузился, но при проигрывании этого файла в эмулятор ничего не приходит.

Решил подступиться через telnet:
telnet localhost 5554
geo fix 37.33453 55.364353
OK


всё работает. Отлично. Так как мне надо проиграть путь, то делаю скрипт на питоне.
Привожу здесь скрипт, вдруг кому пригодится:
import telnetlib
import time

tn = telnetlib.Telnet("localhost", 5554)
tn.read_until("OK");

f = open("route.txt")
for s in f:
    print s
    tn.write("geo fix " + s)
    tn.read_until("OK")
    time.sleep(1);
f.close()

tn.write("exit\n")
tn.close()


Замечаю что маркер на карте как то скачет не по детски. В общем оказалось у "geo fix" проблемы с точностью.
Уже в сотых долях вкрадываются неточности.

В общем выход нашёлся простой: надо для "geo fix" подавать координаты умноженные на 100.0
ну а в месте использования этих координат соответственно делить на 100.0

Вот такой неожиданный гемморой на ровном месте.
Пишу это для потомков, а также для того чтобы можеть быть прийдёт какой нибудь гуру и скажет "вот там надо было всего лишь галочку поставить и всё бы заработало"

PS
Сижу на XP с android-sdk_r06
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.