[Android O] 蓝牙设备默认名称获取

在Android O中,系统在设备首次开机时会首先读取BTM_DEF_LOCAL_NAME的值,若为空,则会读取property "ro.product.model"的属性值作为蓝牙设备默认名称。

bluedroid 中获取蓝牙设备默认名称代码如下:

 system/bt/btif/src/btif_dm.cc

#define PROPERTY_PRODUCT_MODEL "ro.product.model"

static char* btif_get_default_local_name() {

  if (btif_default_local_name[0] == '\0') {

    int max_len = sizeof(btif_default_local_name) - 1;

    if (BTM_DEF_LOCAL_NAME[0] != '\0') {

      strncpy(btif_default_local_name, BTM_DEF_LOCAL_NAME, max_len);

    } else {

      char prop_model[PROPERTY_VALUE_MAX];

      osi_property_get(PROPERTY_PRODUCT_MODEL, prop_model, "");

      strncpy(btif_default_local_name, prop_model, max_len);

    }

    btif_default_local_name[max_len] = '\0';

  }

  return btif_default_local_name;

}

另外:

com.android.server.BluetoothManagerService.loadStoredNameAndAddress() 读取保存的蓝牙地址和名称

com.android.server.BluetoothManagerService.storeNameAndAddress(String, String) 保存的蓝牙地址和名称

数据保存在/data/system/users/0/settings_secure.xml的"bluetooth_name”和"bluetooth_address"中。

你可能感兴趣的:([Android O] 蓝牙设备默认名称获取)