安卓 - 为发送GPS轨迹编写脚本的Telnet会话。

3

大家好,

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

我想做的是,在可能与 Android 设备不同的计算机上运行模拟,产生应该发送到 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系统是实时模拟的一部分,但由于它在模拟器上运行,所以没有位置更新。另一个系统负责计算这些位置更新)。
编辑: 另一种可能更干净的替代方法是使用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")
2个回答

1

1

Netcat(上面示例中的nc)可以编译成几乎任何东西,包括Windows和Android本身。

简而言之,这看起来不像是一个黑客式的解决方案,它看起来更像是一个非常传统的Unix脚本风格的解决方案,可以轻松地在任何现代平台上运行。

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


Netcat在这方面非常棒 - 除了while(true)循环会使CPU过热 - 虽然在手机上可能没有人关心,但仍然如此。 - Martin Zeitler
while循环几乎肯定包括定时更新的节奏,可能是通过回调、阻塞I/O或睡眠机制完成的。尽管最终这是关于一个测试系统,而不是需要交互使用或电池供电的系统。 - Chris Stratton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接