我目前正在开发一个 Java 项目,其目的之一是在地图上显示用户的当前位置。代码完成后,我意识到用户有可能在应用程序仍在运行时拔掉 GPS 设备。在重新创建上述场景时,我发现应用程序永远挂在代码上:
detectedGPSPortBufferReader.readLine();
所以,我去找了旧的 Java Docs,找到了enableReceiveTimeout()方法,一切都很完美。(值为 30000,30 秒)
现在,我设法想到了另一种情况,其中用户可以重新插入设备。在这种情况下,我的客户希望设备重新开始阅读。但不幸的是,这并没有发生。
我正在与我的好友“The Good Old Java Docs”一起工作,并且希望你们中的任何一位极客之神能够指导我的旅程。
我的代码:
try {
myGPSConnector.detectedGPSPort.enableReceiveTimeout(3000);
if(myGPSConnector.detectedGPSPortBufferReader.readLine() != null)
{
myGPSConnector.nmeaResponse = myGPSConnector.detectedGPSPortBufferReader.readLine();
System.out.println(myGPSConnector.nmeaResponse);
}
}
catch (Exception e)
{
locationString = "GPS Device not detected.";
}
@derrabink:它可以是不同的流,因为我尝试对我的代码使用以下扩展:
try {
myGPSConnector.detectedGPSPort.enableReceiveTimeout(3000);
if(myGPSConnector.detectedGPSPortBufferReader.readLine() != null)
{
myGPSConnector.nmeaResponse = myGPSConnector.detectedGPSPortBufferReader.readLine();
System.out.println(defaultGPSConnector.nmeaResponse);
}
}
catch (Exception e)
{
locationString = "GPS Device not detected.";
try {
defaultGPSConnector.detectedGPSPort.enableReceiveTimeout(30);
}
catch (UnsupportedCommOperationException e1)
{
System.out.println("UnsupportedCommOperationException");
}
try {
locationString = defaultGPSConnector.detectedGPSPortBufferReader.readLine();
}
catch (IOException e1)
{
System.out.println("IOException ");
}
它总是打印IOException