我正在尝试使用 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)。
谢谢你的帮助。