android - 在 Android 中测试 GPS

标签 android android-emulator gps

是否可以在模拟器中测试 GPS?

我知道如何发送单个坐标,我还看到了加载 GPX 或 KML 文件的可能性(还没有真正尝试过),但我的意思是,如果有一些组件会很好,它会发送坐标周期性地模拟正常的人体运动:)

也许有可能以编程方式进行?

非常感谢您提供任何建议或链接。

穆尔

最佳答案

我编写了一个粗略且现成的 java 控制台应用程序来实现 telnet 客户端并从坐标文件中读取。这不是最漂亮的代码,但它有效:

import org.apache.commons.net.telnet.TelnetClient;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.text.DecimalFormat;
import java.text.NumberFormat;

public class AutomatedTelnetClient {
   private TelnetClient telnet = new TelnetClient();
   private InputStream in;
   private PrintStream out;
   private String prompt = "#";

   public AutomatedTelnetClient(String server, String user, String password) {
      try {
         // Connect to the specified server
         telnet.connect("127.0.0.1", 5554);
         // Get input and output stream references
         in = telnet.getInputStream();
         out = new PrintStream(telnet.getOutputStream());

         readUntil("OK");
         sendGeoFixes("c:\\junk\\esk.txt");
         System.out.println("Finished");
      } catch (Exception e) {
         e.printStackTrace();
      }
   }

   private void delay() {
      long t = System.currentTimeMillis();
      long finish = t + 15000;
      boolean loop = true;
      while (loop) {
         t = System.currentTimeMillis();
         if (t > finish)
            loop = false;
      }
   }

   private void sendGeoFixes(String fn) {
      boolean loop = true;
      String line;
      BufferedReader br = null;
      String lat, lon;

      String formatStr = "000.000000";
      NumberFormat formatter = new DecimalFormat(formatStr);
      String gf = "geo fix ";
      try {
         br = new BufferedReader(new FileReader(fn));
         do {
            try {
               line = br.readLine();
               if (line == null)
                  break;
               String sa[] = line.split(",");
               if (sa.length < 2)
                  break;
               lat = sa[0];
               String slat = formatter.format(Float.parseFloat(lat));
               lon = sa[1];
               String slon = formatter.format(Float.parseFloat(lon));
               String sFix = slat + " " + slon;
               write(gf + sFix);
               String ans = readUntil("OK");
               System.out.println(ans);
               delay();
      } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
         } while (loop);
      } catch (FileNotFoundException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }

   public String readUntil(String pattern) {
      try {
         char lastChar = pattern.charAt(pattern.length() - 1);
         StringBuffer sb = new StringBuffer();
         char ch = (char) in.read();
         while (true) {
            System.out.print(ch);
            sb.append(ch);
            if (ch == lastChar) {
               if (sb.toString().endsWith(pattern)) {
                  return sb.toString();
               }
            }
            ch = (char) in.read();
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
      return null;
   }

   public void write(String value) {
      try {
         out.println(value);
         out.flush();
         System.out.println(value);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }


   public static void main(String[] args) {
      try {
         AutomatedTelnetClient telnet = new AutomatedTelnetClient(
               "127.0.0.1", "username", "password");
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

“esk.txt”文件格式如下:

-1.059408,54.476764
-1.056685,54.477731
-1.048233,54.479462
-1.044054,54.479968
-1.038213,54.482259
-1.034194,54.482496
-1.027904,54.480873
-1.01868,54.479361
-1.017364,54.47953

等等

关于android - 在 Android 中测试 GPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4745212/

相关文章:

android - 实现我自己的 OnTouchListener

android - 将自定义文本/注释添加到日期选择器

android - 模拟器 HDPI 与 MDPI 与 LDPI

android-emulator - OpenSL ES 无法在 Android 模拟器上播放音频

java - 与另一个 Android Activity 共享 LocationListener

javascript - 如何在 html5 移动网络应用程序中使用 javascript 编辑 exif GPS 信息

ios - 阻止使用虚假位置 iPhone 应用程序的用户

android - ormlite:sql语句不像抛出异常

java - 更有效地使用 findViewById

android - 尝试运行我的应用程序时出现 "Unfortunately (my app) has Stopped"错误