Android NDK - JNI - HAL

时间:2015-07-02 13:18:01

标签: android android-ndk

在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上正确添加了清单和正确添加库的权限

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

1 个答案:

答案 0 :(得分:1)

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

https://github.com/android/platform_hardware_libhardware

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

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