一、蓝牙名称获取

AdapterService.java (packages\apps\bluetooth\src\com\android\bluetooth\btservice)

    static final int BT_PROPERTY_BDNAME = 0x01;    static final int BT_PROPERTY_BDADDR = 0x02;    public void onCreate() {             getAdapterPropertyNative(AbstractionLayer.BT_PROPERTY_BDADDR);        getAdapterPropertyNative(AbstractionLayer.BT_PROPERTY_BDNAME);        int ret = sBluetoothInterface->get_adapter_property((bt_property_type_t) type);    bluetoothInterface,    get_adapter_property,     btif_get_adapter_property(type);     btif_transfer_context(execute_storage_request,                 BTIF_CORE_STORAGE_ADAPTER_READ,  (char*)&req, sizeof(btif_storage_req_t), NULL);  // call execute_storage_request            case BTIF_CORE_STORAGE_ADAPTER_READ:                btif_storage_get_adapter_property(&prop);                btif_dm_get_adapter_property(property);                case BT_PROPERTY_BDNAME:         bt_bdname_t *bd_name = (bt_bdname_t*)prop->val;         strcpy((char *)bd_name->name, btif_get_default_local_name()); // 获取名字                HAL_CBACK(bt_hal_cbacks, adapter_properties_cb, status, 1, &prop); //回到到应用层

下面我们主要看下名字获取这部分代码:
btif_dm.c (external\bluetooth\bluedroid\btif\src)

static char btif_default_local_name[DEFAULT_LOCAL_NAME_MAX+1] = {     '\0'};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];            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;}

二、蓝牙名称设置

HAL_CBACK(bt_hal_cbacks, adapter_properties_cb, status, 1, &prop); static bt_callbacks_t sBluetoothCallbacks    adapter_properties_callback,     callbackEnv->CallVoidMethod(sJniCallbacksObj,   method_adapterPropertyChangedCallback, types,                          props);     mAdapterProperties.adapterPropertyChangedCallback(types, val);     case AbstractionLayer.BT_PROPERTY_BDNAME:              mName = new String(val);              intent = new Intent(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);              intent.putExtra(BluetoothAdapter.EXTRA_LOCAL_NAME, mName);              intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);              mService.sendBroadcastAsUser(intent, UserHandle.ALL, mService.BLUETOOTH_PERM);

BluetoothSettings.java (packages\apps\settings\src\com\android\settings\bluetooth)

  private final BroadcastReceiver mReceiver = new BroadcastReceiver() {             @Override        public void onReceive(Context context, Intent intent) {                 final String action = intent.getAction();            final int state =                intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);            if (action.equals(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED)) {                     updateDeviceName(context);            }            if (state == BluetoothAdapter.STATE_ON) {                     mInitiateDiscoverable = true;            }        }        private void updateDeviceName(Context context) {                 if (mLocalAdapter.isEnabled() && mMyDevicePreference != null) {                     mMyDevicePreference.setSummary(context.getResources().getString(                            R.string.bluetooth_is_visible_message, mLocalAdapter.getName()));            }        }    };    public BluetoothSettings() {             super(DISALLOW_CONFIG_BLUETOOTH);        mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);    }    public void onResume() {             getActivity().registerReceiver(mReceiver, mIntentFilter);    }

三、蓝牙名称修改

1) 修改btif_default_local_name初始值:

static char btif_default_local_name[DEFAULT_LOCAL_NAME_MAX+1] = "";

2) 修改BTM_DEF_LOCAL_NAME的值

// Bt_target.h (external\bluetooth\bluedroid\include)#ifdef HAS_BDROID_BUILDCFG#include "bdroid_buildcfg.h"#endif#ifndef BTM_DEF_LOCAL_NAME#define BTM_DEF_LOCAL_NAME      ""#endif

在bt_target.h文件的包含了bdroid_buildcfg.h 头文件.

// android/device/generic/common/bluetooth/bdroid_buildcfg.h #ifndef _BDROID_BUILDCFG_H#define _BDROID_BUILDCFG_H#define BTM_DEF_LOCAL_NAME   "Android Bluedroid"#endif

3) 修改ro.product.model 属性值
out/target/product/s700_cb7/system/build.prop

# begin build properties# autogenerated by buildinfo.shro.build.version.sdk=22ro.build.version.codename=RELro.build.version.all_codenames=RELro.build.version.release=5.1.1ro.build.date=20190723日 星期二 00:15:32 CSTro.build.date.utc=1563812132ro.build.type=userdebugro.build.flavor=s700_cb7-userdebugro.product.model=S700ro.product.board=s700_cb7ro.board.platform=S700# ro.build.product is obsolete; use ro.product.devicero.build.product=s700_cb7# end build properties# from device/actions/s700_cb7/system.prop

查看 android/build/tools/buildinfo.sh

#!/bin/bashecho "# begin build properties"echo "# autogenerated by buildinfo.sh"echo "ro.build.id=$BUILD_ID"#echo "ro.build.display.id=$BUILD_DISPLAY_ID"echo "ro.build.version.incremental=$BUILD_NUMBER"echo "ro.build.version.sdk=$PLATFORM_SDK_VERSION"echo "ro.build.version.codename=$PLATFORM_VERSION_CODENAME"echo "ro.build.version.all_codenames=$PLATFORM_VERSION_ALL_CODENAMES"echo "ro.build.version.release=$PLATFORM_VERSION"echo "ro.build.date=`date`"echo "ro.build.date.utc=`date +%s`"echo "ro.build.type=$TARGET_BUILD_TYPE"echo "ro.build.user=$USER"echo "ro.build.host=`hostname`"echo "ro.build.tags=$BUILD_VERSION_TAGS"echo "ro.build.flavor=$TARGET_BUILD_FLAVOR"echo "ro.product.model=$PRODUCT_MODEL"#echo "ro.product.brand=$PRODUCT_BRAND"#echo "ro.product.name=$PRODUCT_NAME"#echo "ro.product.device=$TARGET_DEVICE"echo "ro.product.board=$TARGET_BOOTLOADER_BOARD_NAME"

更多相关文章

  1. Android(安卓)如何获取RadioGroup选中RadioButton的内容
  2. Android(安卓)Settings 修改默认主题为白底黑字
  3. ListView CheckBox点击事件
  4. Android(安卓)总结1
  5. EditText 总是被软键盘遮挡
  6. Android(安卓)系统级应用守护进程
  7. Android(安卓)获取ip地址
  8. Android(安卓)替换全局字体
  9. android 根据string 获取资源文件的id

随机推荐

  1. Good Site
  2. android 布局边框
  3. 升级到Android(安卓)Studio 3.0出现 aapt
  4. android 布局简括
  5. ProgressBar属性小结(转载)
  6. Android(安卓)异步加载图片
  7. android 注册、登录实现程序
  8. asdasdas
  9. android 表单布局 左右布局
  10. Android中attr自定义属性详解