2010-08-03 90 views
3

所有,Android的 - 用于发送GPS脚本telnet会话跟踪

我所熟悉的通过使用时通过仿真器连接geo fix long lat altitude命令的能力,假的GPS信息到仿真器。

我想要做的是在潜在的不同计算机上运行一个模拟程序,生成纬度,长度,高度,应该发送到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") 

回答

1

Netcat的(在上面的例子中NC)编译的任何事情,包括Windows和Android本身。

总之,这看起来并不像一个解决方案的黑客攻击,它看起来像一个非常传统的UNIX脚本式的解决方案,它可以很容易地做出任何现代的平台上工作。

如果你不喜欢打开每个修复一个新的连接,你应该能够只写生成修复到标准输出和管道将它导入netcat的程序。

+0

Netcat对于这样的事情来说非常棒 - 除了while(true)循环正在烘烤CPU之外 - 确实在手机上没有人会关心,但仍然如此。 – 2012-12-31 10:18:35

+0

while循环几乎可以肯定地包含更新的定时调步,很可能是用回调完成的,阻塞了I/O或者睡眠机制。尽管最终这是关于测试系统,而不是需要交互式使用或电池供电的系统。 – 2012-12-31 15:20:33

0

这只是更容易的方式&有效地创建一个客户端/服务器终端与裸管网 比管道套接字和while(true)语句。

不确定该循环是哪个代码,但是对于PHP(脚本化),此循环只是致命的。 我的意思是,有任何类型的套接字,甚至是流套接字的函数 - 但它们在输入/输出循环造成的CPU负载(在处理多个客户端时更糟,我猜测)有点没用。

Netcat: the TCP/IP swiss army knife

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

您可能需要来设置Android NDK工具链第一。