一、工程结构&概述

整个应用包含两个按钮,一个是搜索所有蓝牙设备,另一个是连接所有蓝牙设备~

下面是整个工程的文件结构:


二、代码业务流程跟踪

2.1、两个按钮

下面讲讲该工程里的主要跳转流程及各部分功能:

ActivityMain:

onCreate函数中主要初始化两个按钮并对其绑定监听事件:


2.1.1、第一个按钮——蓝牙搜索流程

点击第一个按钮执行scanLeDevice(true)函数:

这里99行的mHandler是产生一个异步的延时SCAN_PERIOD时间然后执行run中的部分的效果~

整体意思是:若传入参数为true则启动蓝牙搜索,经过SCAN_PERIOD时间停止搜索;在搜索过程中可以调用该函数传入false来强行终止搜索。

当调用startLeScan函数后进入蓝牙搜索阶段,该阶段产生的一些蓝牙信息都会被mLeScanCallback函数监听到:

第126行把搜索到的蓝牙设备放到mLeDeviceList中~


2.1.2、第二个按钮——蓝牙连接流程

2.1.2.1、蓝牙连接流程——通过intent启动DeviceControlActivity,转到蓝牙设备控制部分

点击第二个按钮执行btn2_click()函数:

该函数把mLeDeviceList中的蓝牙信息通过intent传给DeviceControlActivity,并启动DeviceControlActivity~

在DeviceControlActivity的oncreate函数中:

第71行将ActivityMain中传来的设备信息存储到mDeviceName和mDeviceAddress数组中;

第77、78行启动一个BluetoothLeService服务,并用bindService建立一个和蓝牙服务之间的连接;

其中mServiceConnection函数类似于回调函数:监听蓝牙服务连接或断开的信息


2.1.2.2、蓝牙连接流程——在蓝牙服务回调函数的onServiceCOnnected监听中初始化蓝牙服务,并建立远程连接

在类似于回调函数的mServiceConnection中的第40行:当已经建立蓝牙服务时,首先41行获取蓝牙服务对象、接着42行对蓝牙服务初始化、最后47行调用connect函数将之前搜索到的设备地址和数量传入函数,进行蓝牙连接(连多个)

第42行初始化函数主要获得蓝牙适配器:

第47行connect函数用于连接远程设备:

第214行对每一个远程蓝牙设备连接Gatt服务,其中mGattCallback是Gatt服务的回调函数(这里多个设备共用一个!)


2.1.2.3、蓝牙连接流程——在Gatt服务的回调函数中解析蓝牙消息,并通过广播发送这些消息

在该回调函数中,对各种事件都是通过调用broadcastUpdate函数,将消息广播出去(这样在主activity中写广播监听函数即可以实现与蓝牙服务的数据沟通)

在该回调函数中重写了连接状态转变监听函数、服务搜索监听函数、读特征数据监听、特征变化监听函数。

broadcast有两种:其中一种就是简单的将action消息广播出去

另一种是包含特征信息解析的广播:

其中第123行是和传感器数据测量的UUID进行比对,解析该特征是否是有关传感器测量的。如果是,则对信息进行解读~

第137行则是对其他非传感器测量的特征进行处理

链接

ps:最初的是eclipse版本的,后来草草地做了个android studio版本,源代码用处不大,本文在于梳理流程

link:http://pan.baidu.com/s/1i4nVe3z

@beautifulzzzz 2016-02-014 continue~  
e-mail:beautifulzzzz@qq.com 



本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/5188660.html,如需转载请自行联系原作者

[安卓] 19、一个蓝牙4.0安卓DEMO相关推荐

  1. android5.0模拟器pc版,逍遥安卓独家发布支持5.0安卓系统电脑模拟器

    原标题:逍遥安卓独家发布支持5.0安卓系统电脑模拟器 逍遥安卓是目前国内极少数全自研的安卓模拟器,自2015年6月发布后便深受用户追捧,速度快.省资源.无限开.响应快及高性能已经成为逍遥安卓在安卓模拟 ...

  2. Android 蓝牙4.0(BLE)Demo

    给大家分享一下蓝牙4.0的Demo,本篇介绍基本使用 最终效果 如何获取UUID 使用 Android 蓝牙4.0(BLE) Demo下载 最终效果 如何获取UUID 去手机华为应用市场下载一个叫蓝牙 ...

  3. 蓝牙4.0温度计android设计,蓝牙体温计方案,听说体温计还能被记录?

    蓝牙体温计是一款能记录体温并上传到APP上面的测量体温仪器.它的功能与其他普通的蓝牙体温计差别不大,只是在基础上添加了蓝牙功能. 蓝牙体温计的PCBA方案设计测试精度在0.1°C ,更精确地测量人体温 ...

  4. iOS开发之蓝牙4.0开发使用

    转载自https://www.jianshu.com/p/f0e4b0e98336 2015年的时候自己写过一个蓝牙4.0项目,当忘了写博客,最近看到这篇博客写的挺详细,所以转载一下 一: 介绍 蓝牙 ...

  5. android 连接蓝牙电子秤_电子秤蓝牙双模通讯Android低功耗蓝牙(蓝牙4.0)BLE开发(上)...

    电子秤蓝牙双模通讯Android低功耗蓝牙(蓝牙4.0)BLE开发(上) 前段时间,公司项目用到了手机APP和蓝牙设备的通讯开发,这里也正好对低功耗蓝牙(蓝牙4.0及以后标准)的开发,做一个总结. 蓝 ...

  6. Android 蓝牙手柄 延迟,安卓免设置,0.15s低延迟,飞智银狐蓝牙耳机体验

    原标题:安卓免设置,0.15s低延迟,飞智银狐蓝牙耳机体验 提起蓝牙耳机,很多手游玩家都会嗤之以鼻,究其原因,耳机延迟是造成负面感受最多的槽点.延迟既声画不同步,问题与蓝牙音频编码在音频打包压缩过程中 ...

  7. 基于intel芯片的安卓蓝牙4.0 BLE通信总结

    基于intel芯片的安卓蓝牙4.0 BLE通信问题总结 使用设备: 台电 x98 air 3G 系统:安卓4.4.4 系统搭建: 1.安装ADT驱动,可以搜索intel_mobile_usb_driv ...

  8. 安卓蓝牙4.0通信之Socket图片传输

    安卓蓝牙4.0Socket通信传输图片 开发环境介绍: 开发工具:AndroidStudio 3.1.2 测试机:华为荣耀八青春版 安卓8.0(7.0) 红米note1S(4.4) SDK版本:28 ...

  9. android 蓝牙连接rtk,你们要的RTK干货教程来了,最新工程之星5.0安卓手簿连接千寻cors账号的方法...

    原标题:你们要的RTK干货教程来了,最新工程之星5.0安卓手簿连接千寻cors账号的方法 今天cors账号网给大家带来的是,我们测绘技术工程师人员总结了RTK在连接千寻cors账号的情况下固定解的快速 ...

最新文章

  1. 给Oracle表空间Tablespace扩展库文件
  2. js DOM——JS学习笔记2015-7-2(第73天)
  3. 优化matlab作业,现代设计优化算法MATLAB实现
  4. python怎么转到下一行_请教:怎样用python读取文件之后,处理在下一行、空行、和*星星?...
  5. window7 64位下Android studio 安装genymotion模拟器
  6. Scipy 基础 —— 稀疏矩阵
  7. 数据结构上机实践第九周项目1 - 二叉树算法库
  8. AI YOLO目标检测算法
  9. Django 学习第九天——请求与响应
  10. Atitit 知识图谱 RDF、RDFS和OWL数据模型 目录 1. 知识图谱 1 2. 二、知识图谱的前世今生 2 2.1. 五六十年代所提出的一种知识表示形式——语义网络(Semantic N
  11. 2014最新苹果开发者账号注册流程图解分享
  12. 神经网络学习小记录53——TF2搭建孪生神经网络(Siamese network)比较图片相似性
  13. 通过 DataEase 获取 API 数据完成项目周报分享
  14. 浏览器主页被360篡改怎么办?
  15. 支持电力国网I1协议的4G低功耗摄像头解决方案
  16. 贝塞尔曲线最小二乘法拟合(随意切向/切向方向统一)------路适用于绝大多数的最小二乘法拟合
  17. 系列之 H5+js 游戏 遍历象棋(待更新)
  18. AutoCAD基本操作
  19. Matplotlib--palette调色板
  20. 一个电子邮件规则-拥有一个单独的收件箱和一个收件箱CC,以减轻电子邮件压力。 保证。

热门文章

  1. 云监控 Ganglia 安装步骤 (含python module)
  2. java offsetdatetime_Java OffsetDateTime withHour()用法及代码示例
  3. python下载文件保存_从URL下载文件并将其保存在Python文件夹中
  4. 重复数据_MongoDB 自动过滤重复数据
  5. linux shell sql赋值,Linux下shell执行SQL
  6. d3js绘制y坐标轴_【ggplot2】 设置坐标轴
  7. im4java 文档_im4java学习---阅读documentation文档
  8. 彼聆智能语音机器人_电销行业的人工智能:智能语音电话机器人
  9. 2021年中国电商SaaS行业研究报告
  10. 2021年中国银发经济洞察报告