[英]Trying to send GPS coordinates to the android emulator
我正在嘗試編寫一個程序,該程序將使用 telnet 發送 GPS 坐標。
我不斷收到以下異常:
Exception in thread "Timer-0" java.lang.NullPointerException
at org.apache.commons.net.telnet.Telnet._sendByte(Telnet.java:1060)
at org.apache.commons.net.telnet.TelnetOutputStream.write(TelnetOutputStream.java:87)
at org.apache.commons.net.io.ToNetASCIIOutputStream.write(ToNetASCIIOutputStream.java:77)
at org.apache.commons.net.io.ToNetASCIIOutputStream.write(ToNetASCIIOutputStream.java:111)
at java.io.PrintStream.write(PrintStream.java:430)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272)
at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:85)
at java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:168)
at java.io.PrintStream.write(PrintStream.java:477)
at java.io.PrintStream.print(PrintStream.java:619)
at java.io.PrintStream.println(PrintStream.java:756)
at com.example.myandroid.gpsSender$1.run(gpsSender.java:34)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
我不知道為什么我會得到這個。 你能告訴我嗎? 謝謝這是我的代碼:
package com.example.myandroid;
import org.apache.commons.net.telnet.TelnetClient;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.SocketException;
import java.util.Timer;
import java.util.TimerTask;
public class gpsSender {
private TelnetClient telnet = new TelnetClient();
public static void main(String[] args) throws Exception {
gpsSender client = new gpsSender();
client.start();
}
public String start() throws Exception {
// Connect to the specified server
telnet.connect("localhost", 5554);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
float longitude = 1;
float latitude = 1;
int count = 0;
PrintStream out = new PrintStream(telnet.getOutputStream());
public void run() {
out.println("geo fix " + String.valueOf(longitude) + " "
+ String.valueOf(latitude));
out.flush();
System.out.println("geo fix " + String.valueOf(longitude) + " "
+ String.valueOf(latitude));
longitude++;
latitude++;
count++;
if (count > 1000) {
cancel();
}
}
}, 0, 1000);
try {
telnet.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ("Done");
}
public void write(String value) {
try {
} catch (Exception e) {
e.printStackTrace();
}
}
}
線
telnet.disconnect();
將要執行,所以你不會有 output stream 要寫入,因此是 NPE。 您應該刪除該行。
感謝您發布此問題。 這種方法讓我可以在我的 Robotium 測試中輕松地操作模擬器的硬件和傳感器。 以下是將模擬器的電池電量設置為 100% 的代碼片段:
TelnetClient telnet = new TelnetClient();
telnet.connect("10.0.2.2",5554);
PrintStream out = new PrintStream(telnet.getOutputStream());
out.println("power capacity 100");
out.flush();
telnet.disconnect();
不要使用 localhost,而是嘗試 10.0.2.2 - 那是模擬器通常打開的 IP 地址,但我不確定您是否可以使用模擬器建立 telnet 通信。
編輯:這是一個遠程登錄模擬器的鏈接,但它來自命令 window - 也許你可以為你的測試編寫一個小批處理腳本來發送 gps 坐標但是如果你必須以某種方式與你的運行測試同步,你必須這樣做來自 Android 應用程序。 看起來模擬器確實在本地主機上,而您的“電腦”在 10.0.2.2 上
當然使用 10.0.2.2 iP 並確保您在清單中提供正確的權限..但是,如果您需要輸入長。 和緯度。 在另一個應用程序中使用它們..你真的不需要telnet,對於模擬器,有一個叫做“模擬器控制”的小window,你可以手動輸入長。 和緯度。 但是使用與模擬器的 telnet 通信,這可能不會發生。 在真正的手機上,你可以使用“NetwProvider.getLocation()”,但當然你也不能在模擬器上測試它..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.