2010-08-03 6 views
3

모든,안드로이드 - GPS를 보내는 스크립트 텔넷 세션은

내가 에뮬레이터를 통해 연결된 geo fix long lat altitude 명령의 사용을 통해 에뮬레이터에 가짜 GPS 정보 능력 익숙를 추적합니다.

내가 원하는 것은 잠재적으로 다른 컴퓨터에서 GPS를 수신했다고 생각하여 에뮬레이터를 위조하기 위해 Android 기기로 보내야하는 위도, 경도, 고도를 생성하는 시뮬레이션을 실행하고 싶습니다.

scripting a telnet session에 대한 다양한 솔루션을 참조하십시오. 가장 좋은 방법은 같은 그것은 의사에 보인다 : 그것은 (하지 Windows에서) 맥에서 작동하지만

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

이 큰 해킹처럼 보인다. 이 작업을 수행하는 더 좋은 방법이 있습니까? (나는 트랙을 미리 생성해서 경로로 입력 할 수 없으며, 안드로이드 시스템은 실시간 시뮬레이션의 일부이지만, 에뮬레이터에서 실행될 때 위치 업데이트가 없다. 다른 시스템은 이러한 위치 업데이트를 계산할 책임이있다).

편집 : 대체 방법은 파이썬의 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) 찾고있는 가까운 거리에 있습니다. 간단히 말해서 솔루션의 해킹처럼 보이지는 않습니다. 이는 현대적인 플랫폼에서 쉽게 작동 할 수있는 매우 유닉스 스타일의 스크립트 스타일 솔루션처럼 보입니다.

각 수정 프로그램에 대한 새 연결을 열지 않으려면 표준 출력에 수정 프로그램을 작성한 프로그램을 작성하여 netcat에 파이프 할 수 있어야합니다.

+0

Netcat은 이런 식으로 아주 좋습니다. - while (true) 루프가 CPU를 로스팅하는 것 외에는 아무도 신경 쓰지 않는 전화에서 확실히 그렇습니다. –

+0

while 루프에는 업데이트 시간이 설정된 페이싱이 거의 포함되어 있습니다. 콜백, I/O 또는 슬립 메커니즘 차단과 같은 가능성이 있습니다. 궁극적으로 이것은 테스트 시스템에 관한 것이었지만 대화식으로 사용할 수 있거나 배터리로 전원을 공급해야 할 필요는 없었습니다. –

0

&은 순수 netcat 을 사용하여 클라이언트/서버 터미널을 파이프 소켓 및 while (true) 문으로 만드는 것보다 효과적입니다.

루프가 어떤 코드인지 확실하지 않지만 PHP (스크립트)를 사용하면이 루프가 치명적입니다. 즉, 모든 유형의 소켓, 심지어 스트림 소켓에 대한 함수가 있지만 입/출력 루프로 인해 CPU로드가 다소 유용하지는 않습니다 (여러 클라이언트를 처리 할 때 더욱 그렇습니다).

Netcat: the TCP/IP swiss army knife

C source ...이며,이 how to build it입니다.

먼저 도구 키트를 Android NDK으로 설정해야 할 수 있습니다.

관련 문제