2010-08-03 81 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工具鏈第一。