QC平台蓝牙名称默认都是QCOM-BTD,各家ODM需要定制设备名称。
1.总makefile添加宏
build/make/core/Makefile
PRODUCT_NAME="$(TARGET_PRODUCT)" \
+ BLUETOOTH_NAME="$(BLUETOOTH_NAME)" \
PRODUCT_BRAND="$(PRODUCT_BRAND)" \
...
2.添加属性
build/make/tools/buildinfo.sh
echo "# autogenerated by buildinfo.sh"
echo "ro.build.id=$BUILD_ID"
+if [ -n "$BLUETOOTH_NAME" ] ; then
+ echo "ro.bluetooth.name=$BLUETOOTH_NAME"
+else
+ echo "ro.bluetooth.name=$PRODUCT_MODEL"
+fi
echo "ro.build.display.id=$BUILD_DISPLAY_ID"
echo "ro.build.version.incremental=$BUILD_NUMBER"
3.对应的项目makefile添加值
device/qcom/msm8953_64/msm8953_64.mk
PRODUCT_MODEL := msm8953 for arm64
+BLUETOOTH_NAME := C7000
PRODUCT_BOOT_JARS += tcmiface
4.实现部分
system/bt/btif/src/btif_dm.cc
Index: system/bt/btif/src/btif_dm.cc
===================================================================
--- system/bt/btif/src/btif_dm.cc (版本 251)
+++ system/bt/btif/src/btif_dm.cc (工作副本)
@@ -107,6 +107,11 @@
#define ENCRYPTED_BREDR 2
#define ENCRYPTED_LE 4
+#define USE_PROPERTY_BLUETOOTH_NAME
+#define PROPERTY_BLUETOOTH_NAME "ro.bluetooth.name"
+
typedef struct {
bt_bond_state_t state;
RawAddress static_bdaddr;
@@ -3183,6 +3188,12 @@
static char* btif_get_default_local_name() {
if (btif_default_local_name[0] == '\0') {
int max_len = sizeof(btif_default_local_name) - 1;
+#ifdef USE_PROPERTY_BLUETOOTH_NAME
+ char prop_name[PROPERTY_VALUE_MAX];
+ osi_property_get(PROPERTY_BLUETOOTH_NAME, prop_name, "");
+ strncpy(btif_default_local_name, prop_name, max_len);
+#else
if (BTM_DEF_LOCAL_NAME[0] != '\0') {
strncpy(btif_default_local_name, BTM_DEF_LOCAL_NAME, max_len);
} else {
@@ -3190,6 +3201,8 @@
osi_property_get(PROPERTY_PRODUCT_MODEL, prop_model, "");
strncpy(btif_default_local_name, prop_model, max_len);
}
+#endif
btif_default_local_name[max_len] = '\0';
}
return btif_default_local_name;
注意,这里有个坑,由于我们使用的是高通平台,所以修改的文件目录在:
./vendor/qcom/opensource/commonsys/system/bt/btif/src/btif_dm.cc
编译libbluetooth_qti或者libbluetooth_qti_32