我正在尝试使用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)
感谢您的帮助。
答案 0 :(得分:0)
在此链接上:
您可以通过直接阅读NMEA消息解决GPS日期问题。看看这对你有帮助。