万物互联的物联网时代的已经来临,ble蓝牙开发在其中扮演着举重若轻的角色。最近刚好闲一点,抽时间梳理下这块的知识点。

涉及ble蓝牙通讯的客户端(开启、扫描、连接、发送和接收数据、分包解包)和服务端(初始化广播数据、开始广播、配置Services、Server回调操作)整个环节以及一些常见的问题即踩过的一些坑。

文件:url80.ctfile.com/f/25127180-741330870-02a88e?p=551685 (访问密码: 551685)


DOM(Document Object Model)文档对象模型,将文档document解析为一个由节点和对象(包含属性和方法的对象)组成的逻辑树,每个节点都是一个对象,document 对象就是整个DOM树的根节点。DOM提供的API方法用来管理这棵树,用JavaScript 等脚本语言操作文档结构、样式和内容。

5f9f1289909ffdf88033e5bd92ad7ae9_v2-30a65f5bc123bc513dc2584c5c2e517f_1440w_source=172ae18b.jpg

1.1、DOM结构-节点/元素
DOM树是由很多节点构成,分为下面几种类型,注意节点是包含文本、注释的。

节点类型 描述 示例
document文档节点 document文档本身,DOM的入口(根) document
element元素节点 所有HTML元素Element /ˈelɪmənt/ i html、body、a、p
attribute属性节点 元素的属性 id、name、href、class
文本节点 元素内的文本形成文本节点 文本字符、换行、空格
注释节点 注释
一颗完整的DOM树,除了显而易见的元素,还有注释、换行符构成的文本类节点。

The truth about elk.

  1. An elk is a smart
  2. ...and cunning animal!

image.png

当前选择元素$0:在浏览器控制台中,$0标识当前选中的元素。$0.style.background=‘red’;

节点和元素在DOM树上的不同视图(导航方式)如下图,现代JS中主要使用元素导航属性。

image.pngimage.png

✅节点-导航属性 描述 ✅元素-导航属性 描述
parentNode 父节点 parentElement 父元素,一般和parentNode一样,只有document.documentElement不同
firstChild 第一个子节点 firstElementChild 第一个子元素
lastChild 最后一个子节点 lastElementChild 最后一个子元素
childNodes 子节点集合 children 子元素集合
nextSibling 下一个兄弟节点 nextElementSibling 下一个兄弟元素( Sibling/ˈsɪblɪŋ/ 兄弟)
previousSibling 上一个兄弟节点 previousElementSibling 上一个兄弟元素(/ˈpriːviəs/以前 )
document.documentElement.parentNode; //HTMLDocument
document.documentElement.parentElement; //null
document.body.childNodes.length; //33
document.body.children.length; //16
document.body.firstElementChild;
❓元素节点:这里的导航属性都是只读的,不可用于插入、修改元素;都是实时的;集合是可迭代的,用for…of,不要用for(in)

1.2、节点Node/元素Element
节点/元素的继承层次结构如下,最基础的EventTarget又继承自Object,因此可以自由添加属性、方法。

image.png

EventTarget:—— 是一切的根(“抽象(abstract)”类),定义了基础的事件。
Node:也是一个“抽象”类,充当 DOM 节点的基础,提供了节点导航功能,如parentNode,nextSibling,childNodes 等。
Document:表示整个文档,全局变量document就是他。
CharacterData:一个文本“抽象”类,被Text(文本节点) 、Comment (注释节点)继承。(Character/ˈkærəktər/ 符号文字)
Element:是 DOM 元素的基础类,提供了元素导航功能,如nextElementSibling,children等,以及搜索方法getElementsByTagName 和 querySelector等。
HTMLElement:所有 HTML 元素的基础类,常用的如:HTMLInputElement、HTMLBodyElement、HTMLAnchorElement、HTMLDivElement、HTMLTableElement
document.body.querySelector(“div”).constructor.name; //HTMLDivElement
document.body.querySelector(“div”).toString(); //[object HTMLDivElement]

Android-Ble蓝牙开发Demo示例–扫描,连接,发送和接收数据相关推荐

  1. Android BLE蓝牙开发知识总结

    Android BLE蓝牙开发知识总结 1.蓝牙介绍 1.1什么是蓝牙?    蓝牙( Bluetooth® ):是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网之间的短距离数据交换(使用2 ...

  2. Android Ble蓝牙开发总结

    Android Ble蓝牙开发总结 前言 本文总结了ble的搜索,连接,读写操作.以及在开发过程中可能遇到的坑. 首先我们需要知道,什么是ble. 蓝牙发展至今经历了8个版本的更新.1.1.1.2.2 ...

  3. Android BLE 蓝牙开发指南(三)外围设备端开发详解

    Android BLE开发指南(一)入门基础 Android BLE开发指南(二)中心设备端程序开发详解 这篇文章将会详细讲解低功耗蓝牙外围设备端程序开发的主要流程.对于Android开发者而言,或许 ...

  4. Android BLE 蓝牙开发-扫码枪集成

    一.蓝牙模式HID与BLE 当扫码枪与手机连接时,通常采用的是蓝牙HID(Human Interface Device)模式.本质上是一个把扫码枪作为一个硬件键盘,按照键盘协议把扫码后的结果逐个输入到 ...

  5. android ble 蓝牙绑定流程,android BLE蓝牙开发

    蓝牙BLE设备是目前比较热门的设备.由于BLE有低功耗等特点,被广泛应用到身边的电子产品上.如智能手表.手环.防丢器等各种产品上.最近研究一下android上的ble应用开发.跟大家分享一下相关的内容 ...

  6. Android Ble蓝牙开发

    BLE Android 应用 开发 1.权限设置 2.获取蓝牙设备管理器 3.设备搜索 3.1 停止搜索 4.设备连接 5.设备的重连 6.设备的断开与服务关闭 7.通知的注册与接收 8.数据的主动读 ...

  7. Android 低功耗蓝牙开发

    初识低功耗蓝牙 Android 4.3(API Level 18)开始引入Bluetooth Low Energy(BLE,低功耗蓝牙)的核心功能并提供了相应的 API, 应用程序通过这些 API 扫 ...

  8. Android BLE蓝牙4.0开发 实现扫描、连接、通讯、获取通知、特性等 (一、打开蓝牙 进行扫描)

    目录 首先说下蓝牙4.0 目前android蓝牙有2种: ble蓝牙开发流程: 1.首先当然是进行权限申请啦: 2.获取蓝牙适配器 BluetoothAdapter 3.打开蓝牙 4.关闭蓝牙 5.在 ...

  9. 【Android】蓝牙开发——BLE(低功耗蓝牙)(附完整Demo)

    目录 目录 前言 一.相关概念介绍 二.实战开发 三.项目演示 四.Demo案例源码地址 五.更新记录 1.2020/12/29 :修改 setupService()中错误 2.2021/05/14 ...

最新文章

  1. 程序员计算器_GitHub 日收 7000 星,Windows 计算器项目开源即爆红!
  2. 浩鲸新智能解决方案工程师面试_华为解决方案技术工程师面试?
  3. left join on多表关联_资深DBA整理MySQL基础知识三:迅速理解MySQL的关联和子查询...
  4. CentOS6.5系统重启后宕机
  5. Android 平台下Cordova 调用Activity插件开发
  6. android 启动一个应用,android 在一个应用中启动另一个应用
  7. 卸载 趋势科技防毒墙网络版
  8. 算法设计与分析知识点整理
  9. 爱奇艺推出“帧绮映画MAX”标准打造高品质视听 多款电视机型获认证
  10. flink 空闲窗口-withIdleness
  11. 聊一聊KOA的洋葱模型
  12. Win2k高级技巧 -----引用至某BLOG.保存了很久了.
  13. pr无法启动此程序因为计算机中丢失api,pr2017安装丢失的api
  14. 基于Bootstrap的网页开发
  15. 南京邮电大学计算机非全调剂,南京邮电大学2018年拟接收(非全日制)考研调剂公告...
  16. html鼠标四种,鼠标有哪些种类?四种鼠标类型的优缺点
  17. 微信支撑10亿用户背后核心技术,竟然是它...
  18. matlab求单自由度振动方程为,单自由度振动方程与Matlab/Simulink求解
  19. C++面试题(一)——基础概念篇
  20. vue3从父组件将标签属性(class、id等)传给子组件中的指定的标签

热门文章

  1. CentOS7快速搭建DNS中转服务器
  2. SSL-TLS 双向认证:SSL-TLS 工作原理
  3. Android中自动拦截电话
  4. 曙光5000a超级计算机性能,曙光5000A 超级计算机的Linpack 测试
  5. 2022年 清华大学大数据研究中心 | 招募专业实践基地合作单位
  6. 学习笔记:AC+AP配置:同一个SSID,多个AP的无缝连接漫游。
  7. PFNet:Camouflaged Object Segmentation with Distraction Mining——论文简述
  8. “揭开意识的奥秘:认知相对论”及作者李玉鑑简介 (公号发“李玉鑑AI”下载PDF资料,欢迎转发、赞赏支持科普)
  9. 我方卧底发自美团的真实Android资料
  10. NB 的开源项目遍地开花——GitHub 热点速览 Vol.41