所有
我熟悉通过模拟器连接时使用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")
答案 0 :(得分:1)
也许这接近你正在寻找的东西
答案 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工具链。