最近做一个项目,需要更改蓝牙默认,现将悲惨的寻找历史记录下来,以此回顾。
--------------------------------------------------------------------分割线----------------------------------------
蓝牙默认名称在打开蓝牙的时候,会显示出来,查找源码,依次是localBluetoothAdapter.getName(),BluetoothAdapter.getName();
BluetoothManagerService.getName(); IBluetoothService这个AIDL非常坑人,最后的实现在package/apps/Bluetooth下的AdapterService,其中调用getName(),从AdapterProperties绕了一圈回到AdapterService中,调用getAdapterPropertiesNative,至此,java中的调用过程结束。
下面是在.cpp文件中艰难的寻找。
最后,找到了属性BTM_DEF_LOCAL_NAME的定义。位置: device/qcom/common/bdroid_buildcfg.h.
但是这里还不是最终的定义位置,还需要到build/buildplus/namespace/下找到对应项目的.ini配置文件,添加BTM_DEF_LOCAL_NAME属性的定义,在这里可以定义成项目需要的默认名称,在整编系统的时候,会生成QRDExt_target.h头文件,其中有我们刚添加的BTM_DEF_LOCAL_NAME的定义。QRDExt_target.h在/target目录下。
device/qcom/common/bdroid_buildcfg.h.
添加
#include "bdroid_buildcfg.h"
#ifndef BTM_DEF_LOCAL_NAME
#define BTM_DEF_LOCAL_NAME "QCOM-BTD"
#endif
完成编译。
最后最重要的是添加bdroid_buildcfg.h的引入路径。
在device/qcom/common/common.mk
中加入 BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR += build/buildplus/target。
完成。