Android - 用于发送GPS轨道的脚本telnet会话

时间:2010-08-03 19:37:02

标签: android geolocation telnet

所有

我熟悉通过模拟器连接时使用geo fix long lat altitude命令伪造GPS信息到模拟器的功能。

我想做的是让可能在另一台计算机上运行的模拟生成lat,long,altitudes,应该发送到Android设备,以伪造模拟器认为它已经接收到GPS更新。

我看到scripting a telnet session的各种解决方案;似乎最好的解决方案是伪代码:

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

这似乎是一个大黑客,虽然它适用于Mac(不适用于Windows)。有一个更好的方法吗? (我无法提前生成轨道并将其作为路径提供; Android系统是实时模拟的一部分,但由于它在模拟器上运行,因此没有位置更新。另一个系统负责计算这些位置更新)。

编辑: 替代方法,也许更干净,是使用python的telnetlib库。

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

3 个答案:

答案 0 :(得分:1)

也许这接近你正在寻找的东西

https://github.com/xperimental/fakegps

答案 1 :(得分:1)

Netcat(上例中的nc)几乎可以编译任何东西,包括windows和android本身。

简而言之,这看起来不像解决方案的黑客,它看起来像一个非常传统的unix脚本风格解决方案,可以很容易地在任何现代平台上工作。

如果您不想为每个修补程序打开一个新连接,您应该只能编写一个程序,为标准输出生成修复程序并将其传输到netcat。

答案 2 :(得分:0)

这种方式更加简单&有效地创建一个裸netcat的客户端/服务器终端 而不是使用管道套接字和while(true)语句。

不确定循环的代码是什么,但是使用PHP(脚本化)这个循环只是致命的。 我的意思是,任何类型的套接字都有函数,甚至是流套接字 - 但它们有点无用b / c由输入/输出循环引起的CPU负载(当处理多个客户端时更糟糕,我猜)。 / p>

Netcat: the TCP/IP swiss army knife

这是C source ...,这是how to build it

您可能需要先设置Android NDK工具链。

相关问题