Android - скриптинг сеанса телнета для отправки треков GPS - PullRequest
3 голосов
/ 03 августа 2010

Все,

Я знаком со способностью подделывать информацию GPS в эмуляторе с помощью команды geo fix long lat altitude при подключении через эмулятор.

Что бы я хотелдля этого нужно запустить симуляцию, потенциально работающую на другом компьютере, для отображения широты и долготы, которые должны быть отправлены на устройство Android, чтобы имитировать эмулятор и думать, что он получил обновление GPS.

Я вижу различные решения для сценариев сеанса telnet ;Похоже, что лучшее решение в псевдокоде:

while true:
    if position update generated / received
        open subprocess and call "echo 'geo fix lon lat altitude' | nc localhost 5554"

Это похоже на большой взлом, хотя он работает на Mac (не на Windows).Есть лучший способ сделать это?(Я не могу сгенерировать треки заранее и передать их как маршрут; система Android является частью симуляции в реальном времени, но, поскольку она работает на эмуляторе, обновления позиций не выполняются. Другая система отвечает за расчет этих обновлений позиций).

edit: Альтернативный метод, возможно, более чистый, состоит в использовании библиотеки telnetlib из python.

import telnetlib
tn = telnetlib.Telnet("localhost",5554)
while True:
    if position update generated / received
        tn.write("geo fix longitude latitude altitude\r\n")

Ответы [ 3 ]

1 голос
/ 21 февраля 2011

Netcat (nc в приведенном выше примере) компилируется практически для всего, включая windows и сам андроид.

Короче говоря, это не похоже на взлом решения, это похоже на очень традиционное решение в стиле сценариев Unix, которое можно легко настроить для работы на любой современной платформе.

Есливам не нравится открывать новое соединение для каждого исправления, вы должны просто написать программу, которая генерирует исправления для стандартного вывода, и направить ее в netcat.

1 голос
/ 21 февраля 2011

Может быть, это близко к тому, что вы ищете

https://github.com/xperimental/fakegps

0 голосов
/ 01 января 2013

Просто проще и эффективнее создать клиент-серверный терминал с чистым netcat. чем с пипеткой и оператором while (true).

Не уверен насчет кода, который представляет этот цикл, но для PHP (с использованием скриптов) этот цикл просто фатален. Я имею в виду, что есть функции для любого типа сокетов, даже потоковых, - но они несколько бесполезны из-за загрузки ЦП, вызванной циклом ввода-вывода (я думаю, что при работе с несколькими клиентами еще хуже).

Netcat: швейцарский армейский нож TCP / IP

Это C источник ... , а это как его построить .

Может потребоваться сначала настроить цепочку инструментов Android NDK .

...