在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上正确添加了清单和正确添加库的权限
我们需要添加更多内容吗?是否有可以参考的工作项目?
答案 0 :(得分:1)
您尝试在Android NDK项目中使用libhardware。 libhardware是Android框架的一部分,而不是NDK的一部分。
https://github.com/android/platform_hardware_libhardware
如果您可以使用libhardware构建项目,那么您的项目不具备Android的真正二进制兼容性。它适用于某些设备,某些版本,但不能保证。
根据我的经验,我相信您可以在AOSP上构建代码。您需要为AOSP而不是NDK修改Android.mk。