Android 13修改蓝牙默认名称

Andorid 13 原生系统,蓝牙默认名称是设备型号 PRODUCT_MODEL

修改蓝牙默认名称,

找到对应产品的 device.mk ,添加如下

复制代码
#custom bluetooth name
PRODUCT_PROPERTY_OVERRIDES += \
    bluetooth.device.default_name="Cus_bt_name"

追踪到 packages/modules/Bluetooth/system/btif/src/btif_dm.cc

复制代码
#define NUM_TIMEOUT_RETRIES 5
#ifndef PROPERTY_DEFAULT_DEVICE_NAME
#define PROPERTY_DEFAULT_DEVICE_NAME "bluetooth.device.default_name"
#endif
#ifndef PROPERTY_PRODUCT_MODEL
#define PROPERTY_PRODUCT_MODEL "ro.product.model"
#endif
#define DEFAULT_LOCAL_NAME_MAX 31
#if (DEFAULT_LOCAL_NAME_MAX > BTM_MAX_LOC_BD_NAME_LEN)
#error "default btif local name size exceeds stack supported length"
#endif

static const char* btif_get_default_local_name() {
  if (btif_default_local_name[0] == '\0') {
    int max_len = sizeof(btif_default_local_name) - 1;

    // Use the stable sysprop on Android devices, otherwise use osi_property_get
#ifdef OS_ANDROID
    std::optional<std::string> default_local_name =
        android::sysprop::BluetoothProperties::getDefaultDeviceName();//1
    if (default_local_name.has_value() && default_local_name.value() != "") {
      strncpy(btif_default_local_name, default_local_name.value().c_str(),
              max_len);
    }
#else
    char prop_name[PROPERTY_VALUE_MAX];
    osi_property_get(PROPERTY_DEFAULT_DEVICE_NAME, prop_name, "");//2
    strncpy(btif_default_local_name, prop_name, max_len);
#endif

    // If no value was placed in the btif_default_local_name then use model name
    if (btif_default_local_name[0] == '\0') {
      char prop_model[PROPERTY_VALUE_MAX];
      osi_property_get(PROPERTY_PRODUCT_MODEL, prop_model, "");//3
      strncpy(btif_default_local_name, prop_model, max_len);
    }
    btif_default_local_name[max_len] = '\0';
  }
  return btif_default_local_name;
}

从三个地方取值,

  • 注释1 :getDefaultDeviceName 找到 frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

    复制代码
      private String getDefaultDeviceName() {
          return mContext.getResources().getString(R.string.def_device_name_simple, Build.MODEL);
      }

Build.MODEL 就是 ro.product.model

  • 注释2 :读取 bluetooth.device.default_name 属性值。
  • 注释3 :读取 ro.product.model 属性值,即产品目录里的 PRODUCT_MODEL
相关推荐
普马萨特13 分钟前
如何从安卓系统中获取扫描到的 Wi‑Fi 的 MAC 地址和 RSSI?
android·macos
游戏开发爱好者842 分钟前
iPhone 网络调试的过程,请求是否发出,是否经过系统代理,app 绕过代理获取数据
android·网络·ios·小程序·uni-app·iphone·webview
_李小白1 小时前
【Android 美颜相机】第十三天:GPUImage3x3ConvolutionFilter解析
android·数码相机
游戏开发爱好者81 小时前
在 Linux 环境通过命令行上传 IPA 到 App Store,iOS自动化构建与发布
android·linux·ios·小程序·uni-app·自动化·iphone
帅次1 小时前
系统分析师-移动应用系统分析与设计
android·ios·微信小程序·小程序·android studio·webview
MengFly_2 小时前
Compose中rememberUpdatedState的作用
android·kotlin·compose
韩立学长2 小时前
【开题答辩实录分享】以《志愿者公益网站的设计与实现》为例进行选题答辩实录分享
android·java·开发语言
%xiao Q10 小时前
GESP C++五级-202406
android·开发语言·c++
二哈喇子!12 小时前
JavaWeb+Vue分离项目实现增删改查讲解
android
2501_9445215912 小时前
Flutter for OpenHarmony 微动漫App实战:推荐动漫实现
android·开发语言·前端·javascript·flutter·ecmascript