0

我正在尝试使用 android 硬件抽象层来打印来自我手机的 gps 设备(我相信是高通)而不是外部设备的 NMEA 消息。所有使用 Android 本机代码的示例似乎都是针对使用外部 gps 设备的。在 android qemu 的情况下,模拟器指向一个获取模拟 gps 信息的文件描述符,这也不是我想要的。我使用 libloc_api 创建了一个 GpsInterface 实例,但我不确定如何使用回调函数来获取 NMEA 消息。这是我用来获取 gps 接口的一段代码:

#include "hardware/gps.h"
#include "hardware/hardware.h" 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>    
static const GpsInterface* sGpsInterface = NULL;

int main() {

    int err = 0;
    size_t gps_size = 0;
    hw_module_t* module;

    err = hw_get_module(GPS_HARDWARE_MODULE_ID, (hw_module_t const**)&module);
    if (err == 0) {
        hw_device_t* device;
        err = module->methods->open(module, GPS_HARDWARE_MODULE_ID, &device);
        struct gps_device_t* gps_device = (struct gps_device_t *)device;
        sGpsInterface = gps_device->get_gps_interface(gps_device);
    }

    if (!sGpsInterface )
        printf("No Interface!\n");
    mod = module->name;
    printf("module name = %s\n", mod);

我必须使用本机代码来获取 GPS,所以我不是在寻找 SDK 答案,除非有一个应用程序可以创建一个设备,我可以从中读取 NMEA 流(例如 /dev/ttyGPS)。

谢谢你的帮助。

4

1 回答 1

0

在这个链接上:

Android : 从 2012 年 1 月 1 日起,显示 GP 日期提前 1 天的三星 Galaxy Tabs 和 Android 2.2 设备

您有解决 GPS 日期问题的方法,可以通过直接阅读 NMEA 消息来解决。看看能不能帮到你。

于 2012-10-17T15:33:01.973 回答