Androidハードウェア抽象化レイヤーを使用して、外部デバイスではなく、携帯電話のgpsデバイス(Qualcommと信じています)からの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 を取得するにはネイティブ コードを使用する必要があるため、NMEA ストリームを読み取ることができるデバイスを作成するアプリ (例: /dev/ttyGPS) がない限り、SDK の回答は探していません。
助けてくれてありがとう。