/system/bt/include/bt_target.h

#define BTA_DM_COD {0x5A, 0x02, 0x0C}        // 手机端搜索到的蓝牙显示手机图标

#define BTA_DM_COD {0x5A, 0x04, 0x06}        // 手机端搜索到的蓝牙显示带耳麦的耳机图标

#define BTA_DM_COD {0x5A, 0x04, 0x18}        // 手机端搜索到的蓝牙显示不带耳麦的耳机图标

以下转自:https://blog.csdn.net/shichaog/article/details/53455169

蓝牙设备在扫描时会发现设备的类型,蓝牙图标有耳机,打印机,电话等等。

蓝牙协议栈里有一个叫做基带的字段。基带的分配编号指明查询访问码和设备/服务类别 (CoD) 字段。

通用及设备特定的查询访问码 (DIAC)

查询访问码 (IAC) 是寻找蓝牙设备和服务的第一个过滤层。定义多个 IAC 的主要目的是限制查看范围内的设备时响应的数量。

有限查询访问码 (LIAC) 仅用于限定的时段,在两边均已明确要进入此状态的情况下使用,通常由用户操作。有关 LIAC 使用的详细说明,请参考通用访问配置文件。

相反,允许持续扫描通用查询访问码 (GIAC) 并在查询时响应。

设备/服务类别字段

设备/服务类别 (CoD) 字段的格式可以改变。格式通过 CoD 中的“格式类型字段”指明。格式类型字段的长度为变量,以不同于“11”的两位数结束。版本字段从 CoD 的最低有效位开始,并向上延伸。

在 CoD 的“format #1”(格式类型字段 = 00)中,11 位分配为位掩码(可以设定多个位),每个位对应于一个高级别的通用服务类别。目前 定义了七种类别。主要是“公共服务”属性。其余的 11 位用于指示设备类别和其他的设备特定特性。任何保留的但未分配的位,如在主要服务类字段中,应设为 0。

主要服务类

主要和次要服务类用于定义 Bluetooth SIG 成员希望与其应用程序相关联的设备通用系列。不应仅根据主要或次要设备类的分配而作出有关任何应用的特定功能或特性的假设。

主要设备类

主要设备类段是定义蓝牙设备的最高粒度级别。设备的主要功能决定了其主要类分组。有 32 种不同的主要类。此主要类字段的分配在表中进行了定义。

次要设备类字段

“次要设备类”字段(CoD 中的位 7 至 2)应仅在主要设备类(但独立于服务类字段)环境中解释。因此随着“主要设备类字段”值的变动,位的意义也会改变。当次要设备类字段指示设备类时,则应报告主要设备类,例如也可以用作无绳手持设备的手机应在次要设备类字段中使用“Cellular”。

次要设备类字段 - 计算机主要类

次设备类字段 - 电话主要类

次要设备类字段 – LAN/网络接入点主要类

精确的负载公式未标准化。依赖每个 LAN /网络接入点实施来确定报告为利用率百分比的内部条件。对数字仅有的要求是反应方格内通信资源持续增长的利用率。建议:定位多个 LAN/网络接入点的客户应尝试连接到报告最低负载的一个接入点。

次要设备类字段 - 音频/视频主要类

次要设备类字段 - 外围设备主要类

次要设备类字段 - 成像主要类

次要设备类字段 - 可穿戴主要类

次要设备类字段 - 玩具主要类

次要设备类字段 - 健康

[cpp]  view plain copy
  1. <system/bt/stack/inlude/bt_types.h>
  2. /* Service class of the CoD */
  3. #define SERV_CLASS_NETWORKING               (1 << 1)
  4. #define SERV_CLASS_RENDERING                (1 << 2)
  5. #define SERV_CLASS_CAPTURING                (1 << 3)
  6. #define SERV_CLASS_OBJECT_TRANSFER          (1 << 4)
  7. #define SERV_CLASS_OBJECT_AUDIO             (1 << 5)
  8. #define SERV_CLASS_OBJECT_TELEPHONY         (1 << 6)
  9. #define SERV_CLASS_OBJECT_INFORMATION       (1 << 7)
  10. /* Second byte */
  11. #define SERV_CLASS_LIMITED_DISC_MODE        (0x20)

安卓层的设备定义如下:

[cpp]  view plain copy
  1. <frameworks/base/core/java/android/bluetooth/BluetoothClass.java>
  2. public static class Device {
  3. private static final int BITMASK               = 0x1FFC;
  4. /**
  5. * Defines all major device class constants.
  6. * <p>See {@link BluetoothClass.Device} for minor classes.
  7. */
  8. public static class Major {
  9. private static final int BITMASK           = 0x1F00;
  10. public static final int MISC              = 0x0000;
  11. public static final int COMPUTER          = 0x0100;
  12. public static final int PHONE             = 0x0200;
  13. public static final int NETWORKING        = 0x0300;
  14. public static final int AUDIO_VIDEO       = 0x0400;
  15. public static final int PERIPHERAL        = 0x0500;
  16. public static final int IMAGING           = 0x0600;
  17. public static final int WEARABLE          = 0x0700;
  18. public static final int TOY               = 0x0800;
  19. public static final int HEALTH            = 0x0900;
  20. public static final int UNCATEGORIZED     = 0x1F00;
  21. }
  22. // Devices in the COMPUTER major class
  23. public static final int COMPUTER_UNCATEGORIZED              = 0x0100;
  24. public static final int COMPUTER_DESKTOP                    = 0x0104;
  25. public static final int COMPUTER_SERVER                     = 0x0108;
  26. public static final int COMPUTER_LAPTOP                     = 0x010C;
  27. public static final int COMPUTER_HANDHELD_PC_PDA            = 0x0110;
  28. public static final int COMPUTER_PALM_SIZE_PC_PDA           = 0x0114;
  29. public static final int COMPUTER_WEARABLE                   = 0x0118;
  30. // Devices in the PHONE major class
  31. public static final int PHONE_UNCATEGORIZED                 = 0x0200;
  32. public static final int PHONE_CELLULAR                      = 0x0204;
  33. public static final int PHONE_CORDLESS                      = 0x0208;
  34. public static final int PHONE_SMART                         = 0x020C;
  35. public static final int PHONE_MODEM_OR_GATEWAY              = 0x0210;
  36. public static final int PHONE_ISDN                          = 0x0214;
  37. // Minor classes for the AUDIO_VIDEO major class
  38. public static final int AUDIO_VIDEO_UNCATEGORIZED           = 0x0400;
  39. public static final int AUDIO_VIDEO_WEARABLE_HEADSET        = 0x0404;
  40. public static final int AUDIO_VIDEO_HANDSFREE               = 0x0408;
  41. //public static final int AUDIO_VIDEO_RESERVED              = 0x040C;
  42. public static final int AUDIO_VIDEO_MICROPHONE              = 0x0410;
  43. public static final int AUDIO_VIDEO_LOUDSPEAKER             = 0x0414;
  44. public static final int AUDIO_VIDEO_HEADPHONES              = 0x0418;
  45. public static final int AUDIO_VIDEO_PORTABLE_AUDIO          = 0x041C;
  46. public static final int AUDIO_VIDEO_CAR_AUDIO               = 0x0420;
  47. public static final int AUDIO_VIDEO_SET_TOP_BOX             = 0x0424;
  48. public static final int AUDIO_VIDEO_HIFI_AUDIO              = 0x0428;
  49. public static final int AUDIO_VIDEO_VCR                     = 0x042C;
  50. public static final int AUDIO_VIDEO_VIDEO_CAMERA            = 0x0430;
  51. public static final int AUDIO_VIDEO_CAMCORDER               = 0x0434;
  52. public static final int AUDIO_VIDEO_VIDEO_MONITOR           = 0x0438;
  53. public static final int AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER = 0x043C;
  54. public static final int AUDIO_VIDEO_VIDEO_CONFERENCING      = 0x0440;
  55. //public static final int AUDIO_VIDEO_RESERVED              = 0x0444;
  56. public static final int AUDIO_VIDEO_VIDEO_GAMING_TOY        = 0x0448;
  57. // Devices in the WEARABLE major class
  58. public static final int WEARABLE_UNCATEGORIZED              = 0x0700;
  59. public static final int WEARABLE_WRIST_WATCH                = 0x0704;
  60. public static final int WEARABLE_PAGER                      = 0x0708;
  61. public static final int WEARABLE_JACKET                     = 0x070C;
  62. public static final int WEARABLE_HELMET                     = 0x0710;
  63. public static final int WEARABLE_GLASSES                    = 0x0714;
  64. // Devices in the TOY major class
  65. public static final int TOY_UNCATEGORIZED                   = 0x0800;
  66. public static final int TOY_ROBOT                           = 0x0804;
  67. public static final int TOY_VEHICLE                         = 0x0808;
  68. public static final int TOY_DOLL_ACTION_FIGURE              = 0x080C;
  69. public static final int TOY_CONTROLLER                      = 0x0810;
  70. public static final int TOY_GAME                            = 0x0814;
  71. // Devices in the HEALTH major class
  72. public static final int HEALTH_UNCATEGORIZED                = 0x0900;
  73. public static final int HEALTH_BLOOD_PRESSURE               = 0x0904;
  74. public static final int HEALTH_THERMOMETER                  = 0x0908;
  75. public static final int HEALTH_WEIGHING                     = 0x090C;
  76. public static final int HEALTH_GLUCOSE                      = 0x0910;
  77. public static final int HEALTH_PULSE_OXIMETER               = 0x0914;
  78. public static final int HEALTH_PULSE_RATE                   = 0x0918;
  79. public static final int HEALTH_DATA_DISPLAY                 = 0x091C;
  80. // Devices in PERIPHERAL major class
  81. /**
  82. * @hide
  83. */
  84. public static final int PERIPHERAL_NON_KEYBOARD_NON_POINTING = 0x0500;
  85. /**
  86. * @hide
  87. */
  88. public static final int PERIPHERAL_KEYBOARD                  = 0x0540;
  89. /**
  90. * @hide
  91. */
  92. public static final int PERIPHERAL_POINTING                  = 0x0580;
  93. /**
  94. * @hide
  95. */
  96. public static final int PERIPHERAL_KEYBOARD_POINTING         = 0x05C0;
  97. }

如果需要修改设备的COD,需要在

<system/bt/include/bt_target.h>

三星和高通更改的方式是一样的。

[cpp]  view plain copy
  1. 504 /* Default class of device
  2. 505 * {SERVICE_CLASS, MAJOR_CLASS, MINOR_CLASS}
  3. 506 *
  4. 507 * SERVICE_CLASS:0x5A (Bit17 -Networking,Bit19 - Capturing,Bit20 -Object Transfer,Bit22 -Telephony)
  5. 508 * MAJOR_CLASS:0x02 - PHONE
  6. 509 * MINOR_CLASS:0x0C - SMART_PHONE
  7. 510 *
  8. 511 */
  9. 512 #ifndef BTA_DM_COD
  10. 513 #define BTA_DM_COD {0x5A, 0x40, 0x08}
  11. 514 #endif
  12. nbsp;

如将高通的手机改成蓝牙音箱之类的属性

Android设备上的蓝牙被搜索到所显示的图标相关推荐

  1. android 蓝牙链接电脑,如何使从台式电脑到Android设备的测试蓝牙连接

    我正在使用具有蓝牙适配器的Ubuntu 11.10台式电脑和使用带有蓝牙的Android 2.2的Android平板电脑. (两款设备上的蓝牙版本应为2.0或2.1版本)如何使从台式电脑到Androi ...

  2. android 摄像头参数,获取Android设备上的详细的摄像头信息

    原标题:获取Android设备上的详细的摄像头信息 如何获取Android设备上的详细的摄像头信息呢? 目前Samsung的Galaxy Tab和Nexus S均有前置摄像头,获取Android摄像头 ...

  3. android最简单存储数据结构,什么是存储要在多个Android设备上共享的同步数据的最佳数据结构?...

    我的项目是关于连接多个Android设备,并帮助他们相互沟通.我已经使用蓝牙连接了所有这些设备.一台设备用作服务器,其余用作客户端.这些设备能够发送和接收消息/事件,并在接收到消息时执行某些任务.什么 ...

  4. android设备安装kali,在Android设备上安装Kali Linux基于Android设备的Kali Linux渗透测试教程大学霸...

    在Android设备上安装Kali Linux基于Android设备的Kali Linux渗透测试教程大学霸 基于Android设备的Kali Linux渗透测试教程2 Android是一种基于Lin ...

  5. 设置android启动器,教程:在任意 Android 设备上安装 HTC 专属桌面启动器

    HTC 手机的标志性 Sense UI 几乎是伴随着 Android 系统成长起来的,BlinkFeed 作为 Sense 5 的新特性进入了人们的视野之中.经历了几代更新,BlinkFeed 受到更 ...

  6. 如何查看Android设备上的分区信息

    Android设备上,一般都会存在一块eMMC存储芯片来存放系统和用户数据,甚至部分的引导程序. 一般设备出厂时,各个厂商都会将这块存储芯片分成很多的分区,每个分区内存放不同的内容.具体分区的布局每个 ...

  7. java图像分类源码_在Android设备上使用NCNN图像分类的demo

    [实例简介] 在Android设备上使用NCNN图像分类的demo,是一个Android项目 [实例截图] [核心代码] NCNN1 └── NCNN1 ├── app │   ├── app.iml ...

  8. OpenCV在Android设备上运行深度网络

    OpenCV在Android设备上运行深度网络 在Android设备上运行深度网络 介绍 要求 创建一个空的Android Studio项目 添加OpenCV依赖项 做一个样品 在Android设备上 ...

  9. (转)在ios android设备上使用 Protobuf (使用dll方式)

    自:http://game.ceeger.com/forum/read.php?tid=13479 如果你的工程可以以.Net 2.0 subset模式运行,请看这个帖子中的方法. 地址:http:/ ...

最新文章

  1. 学习javascript 的一点感想
  2. 迎接 2019:软件开发新趋势预测
  3. 以太坊智能合约安全入门了解一下(上)
  4. 可观测告警运维系统调研——SLS告警与多款方案对比
  5. Activity和Service交互
  6. 最长回文子串--动态规划
  7. 30个Python极简代码
  8. mysql isamchk_mysqlcheck与myisamchk的区别
  9. 如何管理软件资产及如何管理软件许可资产?
  10. WinKawaks详尽使用说明
  11. 大数据从入门到实战 --HDFS系统初体验
  12. Adobe Photoshop CC 2018之ps磁性套索工具抠图(☆)
  13. 09-01 面向对象编程
  14. Sci-Hub创始人收到苹果的通知:2年前就把她的账户数据给了FBI
  15. dubbo的简单搭建
  16. 英语学习笔记(一)语法
  17. Stimulsoft Dashboards.WEB 23.1.8 完美Patch
  18. 2. SQL语句学习
  19. HashSet子类依靠()方法区分重复元素
  20. 极限运算中的一个经典例题

热门文章

  1. echart通过ajax获取数据
  2. pycharm如何更改python项目环境_如何用Pycharm打开已有项目配置python环境
  3. Keystone Fernet tokens
  4. C++数据结构之堆栈
  5. ajax datatype 文件,关于ajaxFileUpload中dataType的有关问题
  6. 图结构算法学习(一)——有向图
  7. ws1 kdevelop 报libQt5Core.so.5 找不到
  8. IC笔试:海思提前批数字芯片笔试
  9. Amazing,音标居然这么好学
  10. 更改win7防火墙设置,让局域网中可以访问IIS