如何从GPSD检索数据并在Android Client中使用它们

时间:2019-06-05 08:25:56

标签: java android sockets tcp gpsd


我必须让Android客户端在Google地图中显示汽车位置。车辆上装有树莓。 我已经看到一些应用程序以NMEA形式显示GPSD数据,但这对我来说还不够。

我对从GPSD守护程序缓冲数据进行了一些评论。 Oracle支持Java ME将数据共享到客户端,但是有人知道是否存在其他选择?

您能告诉我什么是检索此数据并将其在google Maps Api中使用的最佳方法(或从Android Daemon获取数据的最佳协议)吗? 感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

一种解决方案是在您的Android应用中实现GPSD客户端。 为此,您可以使用例如该JAVA库。 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();

希望这会有所帮助。