首页 > 解决方案 > 如何从 GPSD 检索数据并在 Android 客户端中使用它们

问题描述


我必须制作将在 Google 地图中显示汽车位置的 Android 客户端。车辆上安装了覆盆子。我见过一些将 GPSD 数据显示为 NMEA 形式的应用程序,但这对我来说还不够。

我对来自 GPSD 守护程序的缓冲数据进行了一些回顾。Oracle 支持 java ME 将数据共享到客户端,但有人知道是否存在任何替代方案吗?

你能告诉我检索这些数据并在 google Maps Api 中使用它们的最佳方法是什么(或从 Android Daemon 获取数据的最佳协议)?谢谢你的帮助 :)

标签: javaandroidsocketstcpgpsd

解决方案


一种解决方案是在您的 Android 应用程序中实现 GPSD 客户端。为此,您可以使用例如这个 JAVA lib。 https://github.com/ivkos/gpsd4j

然后您只需要知道安装在 Raspberry Pi 上的 GPSD 服务器的 IP 地址并配置您的客户端即可。

下面的示例显示了如何实例化 GPSD 客户端和检索 Gps 数据

    GpsdClientOptions options = new GpsdClientOptions()
        .setReconnectOnDisconnect(true)
        .setConnectTimeout(3000) // ms
        .setIdleTimeout(30) // seconds
        .setReconnectAttempts(5)
        .setReconnectInterval(3000); // ms
    GpsdClient client = new GpsdClient("192.168.43.213", 2947, options);
    // Adds a message handler that handles incoming TPV messages
    client.addHandler(TPVReport.class, tpv -> {
        Double lat = tpv.getLatitude();
        Double lon = tpv.getLongitude();
        Double altitude = tpv.getAltitude();
        Double speed =tpv.getSpeed();

        logger.info("Latitude= "+lat+" Longitude="+lon+" Altitude="+altitude+" Speed="+speed);
    });

    client.start();
    client.watch();

希望它会有所帮助。


推荐阅读