【问题标题】:Android NDK - JNI - HALAndroid NDK - JNI - HAL
【发布时间】:2015-07-02 13:18:01
【问题描述】:

在 Android NDK 项目中,我们需要使用 HAL 接口访问蓝牙。我们的意图是做这样的事情:

#include <hardware/hardware.h>
#include <hardware/bluetooth.h>
....

void load_Module(....)
{ 
hw_module_t* module;
hw_device_t* device;

bdt_log("Loading HAL lib + extensions");

err = hw_get_module(BT_HARDWARE_MODULE_ID, (hw_module_t const**)&module);
if (err == 0){
    err = module->methods->open(module, BT_HARDWARE_MODULE_ID, &device);
    if (err == 0) {
        bt_device = (bluetooth_device_t *)device;
        sBtInterface = bt_device->get_bluetooth_interface();
    }
  }
}

每个人似乎都在做同样的事情(在谷歌示例代码中)。当我们尝试编译时似乎出现了问题:

#include <hardware/hardware.h> no such file

我们在 Android.mk 中正确添加了清单权限并正确添加了库

我们还需要添加更多内容吗?有没有我可以参考的工作项目?

【问题讨论】:

标签: android android-ndk


【解决方案1】:

您正在尝试在 Android NDK 项目中使用 libhardware。 libhardware 是 Android 框架的一部分,而不是 NDK 的一部分。

https://github.com/android/platform_hardware_libhardware

因此,如果您可以使用 libhardware 构建项目,那么您的项目不具备真正的 Android 二进制兼容性。它适用于某些设备、某些版本,但不能保证。

根据我的经验,我相信您可以在 AOSP 上构建您的代码。您需要为 AOSP 而不是 NDK 修改 Android.mk。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多