蓝牙设置学习总结

一、蓝牙模块

1、  蓝牙事件管理BluetoothEventManager

首先这里注册一个事件接收广播mContext.registerReceiver(mBroadcastReceiver, mAdapterIntentFilter);,用于接收底层驱动发来的广播。然后根据不同的action分发给不同的handler处理。这里的handler都需要通过addHandler函数保存到mHandlerMap中。然后在Handler中调用回调BluetoothCallback(接口),来交给ui上层处理。当然这里继承了BluetoothCallback接口的回调都是事先注册了的registerCallback。在设置中是DeviceListPreferenceFragment注册了。

2、 蓝牙UI显示BluetoothSettings

这里包含了蓝牙开关(mBluetoothEnabler中处理),搜索按钮以及蓝牙列表。主要负责更新UI,监听用户操作(搜索、开关蓝牙、选中一个蓝牙)。

3、  蓝牙设备管理

A、 CachedBluetoothDeviceManager负责管理蓝牙的缓存(已配对的设备和搜索到的设备)主要都保存在List<CachedBluetoothDevice> mCachedDevices中

B、 DeviceListPreferenceFragment负责管理蓝牙的显示设备

WeakHashMap<CachedBluetoothDevice, BluetoothDevicePreference> mDevicePreferenceMap这里保存显示的设备和实际缓存的设备的对应值。

4、  蓝牙接口适配

LocalBluetoothAdapter为本地的蓝牙接口适配器,为应用提供接口,同时调用BluetoothAdapter的接口,起到应用和底层的适配作用。

5、  蓝牙配置协议管理

LocalBluetoothProfileManager

二、蓝牙流程

1、开启关闭

1) 开启过程

A、首先在BluetoothEnabler中监听到用户操作,调用一系列接口到BluetoothAdapter的enable()来打开蓝牙,然后BluetoothEventManager通过回调让DeviceListPreferenceFragment更新ui;

B、BluetoothEventManager收到广播蓝牙打开,通过回调让DeviceListPreferenceFragment更新ui。

2)关闭过程

关闭过程和打开过程类似。

2、配对与取消配对

1)配对过程

A、在用户选择配对后调用BluetoothDevice的createBond来通知底层配对;

B、收到广播后更新ui;

C、配对后进行连接(连接过程忽略)。

2)取消配对过程

与配对过程类似

3、连接与取消连接

1)       连接过程

2)       取消连接过程

和连接过程类似,略。

4、扫描

A、通过调用BluetoothAdapter的startDiscovery()方法告诉底层开始搜索;

B、底层发广播通知应用找到设备或者扫描状态变化,从而更新ui。

6、  通讯

待补充。

时间: 2024-07-31 18:58:41

蓝牙设置学习总结的相关文章

Edison 蓝牙模块 学习笔记

Edison 蓝牙模块 学习笔记 固定链接:https://www.zybuluo.com/SiberiaBear/note/212527 本笔记基于Intel Edison Bluetooth Guide官方手册完成,如有错误敬请指出. 由于个人能力有限,到最后几节内容一直拖着没有翻译,以后会补上,自己也是边学习边翻译的,还请见谅. Edison 蓝牙模块 学习笔记 基本介绍 Linux集成蓝牙 1 The bluetoothd daemon 2 Configuration 3 Applica

Android蓝牙完全学习手册

1.前言 市面上关于Android的技术书籍很多,几乎每本书也都会涉及到蓝牙开发,但均是上层应用级别的,而且篇幅也普遍短小.对于手机行业的开发者,要进行蓝牙模块的维护,就必须从Android系统底层,至少框架层开始,了解蓝牙的结构和代码实现原理.这方面的文档.网上的各个论坛的相关资料却少之又少.分析原因,大概因为虽然蓝牙协议是完整的,但是并没有具体的实现.蓝牙芯片公司只负责提供最底层的API,与上层的适配和其他元件的兼容,需要各个厂家自己去实现,因此并未出现适用非常广泛的标准API供各个领域的公

蓝牙API学习第二发_____Bluetooth介绍

英文原地址为: http://www.androidcommunitydocs.com/guide/topics/connectivity/bluetooth.html 安卓平台包含了对蓝牙协议栈的支持,这允许一个设备与另一个设备进行无线的数据交换.应用程序框架层(Android系统架构四层之一,由上到下分别为应用程序层.应用程序框架层.系统运行库层.Linux内核层)支持通过蓝牙API来使用蓝牙的功能.这些API实现点对和和多点式的无线功能,允许设备无线连接到其他的设备. 使用蓝牙API,应用

Ti CC2540蓝牙模块学习笔记整理

接触CC2540几天,终于有了初步的理解,现将笔记整理如下,只是皮毛,如有错误,还请指正,还有好多没闹明白的地方,以后应该还会继续向里面更新~ 一.整体 1.TI的蓝牙平台支持2种协议栈/应用配置:单一设备配置.网络处理器配置 2.协议栈最顶层2个通用profile: GAP 通用访问配置文件层 Generic Access Profile GATT 通用属性配置文件层 Generic Attribute Profile 3. GAP:处理设备的接入方式及接入过程:①设备发现 ②链路建立 ③链路

CC2540蓝牙模块学习(1)

本篇随笔摘自于:http://www.cnblogs.com/yygsj/p/5135150.html#undefined 一.整体 1.TI的蓝牙平台支持2种协议栈/应用配置:单一设备配置.网络处理器配置 2.协议栈最顶层2个通用profile: GAP 通用访问配置文件层 Generic Access Profile GATT 通用属性配置文件层 Generic Attribute Profile 3. GAP:处理设备的接入方式及接入过程:①设备发现 ②链路建立 ③链路终止 ④启动安全功能

Win10系统如何利用蓝牙设置动态锁?

很多小伙伴都会有这样的经历,出门之后没走多远,却已然忘记是否锁门,有强迫症的人就会重新返回查看,以确保门是否反锁. 我们在使用电脑时也是这样,遇到事情要临时离开,却忘记是否锁屏,再返回来就耽误时间了.好在Win10系统为我们解决了这个后顾之忧,我们可以通过Win10系统的动态锁屏功能来实现.Win10动态锁屏功能有什么用平常我们锁屏是通过"WIN+L"的快捷键实现的,或者通过更改电源的设置,让其在一定时间后锁屏,而动态锁屏是通过检测蓝牙是否连接来判断的,可以相对智能的判断周围是否有人,

【DAY3】shell编程以及linux的其他设置学习笔记

shell编程 ------------------ -lt //less than < -gt //greater than > = //相当 -eq //equals = $# //提取参数个数 $1 //第一个参数 $n //提取第n个参数 $0 //提取命令 $? //存放的上次执行命令的结果,0表示成功,非0失败. [email protected] //输出所有参数 -e //exists 判断文件(夹)是否存在 -d //判断是否是目录 help if //查看if帮助信息 he

secureCRT简单设置(学习笔记二)

菜鸟记录. 一.更改终端类型 选项-全局选项-默认会话-编辑默认设置-终端-仿真-右侧选择类型,下方设置缓冲区大小 二.设置字体和外观 上方窗口外观-右侧设置-字体设置字体类型大小,下面光标可以设置光标类型,颜色 三.日志文件设置 选择日志-根据下方的提示设置日志名称,也可以使用默认-下设置为:会话名称+年+月+日.log 四.上传下载设置 选择X/Y/Zmodem 安装上传下载软件 不提示直接安装yum install lrzsz -y 上传用rz 会弹出选择文件窗口会上传到登录过程中的当前目

UINavigationController的创建和相关设置---学习笔记四

导航控制器 一.设置字体大小,背景等. 二.自定义返回按钮. 三.设置手势. 一.导航中也有个appearance属性,通过它可以设置所有导航的颜色. 二.自定义返回按钮. 1.首先需要知道的是,要把一个控制器加到导航上,导航做的操作是首先push到这个控制器上. 2.设置返回按钮的思路:创建按钮->调整按钮内容的边距->设置导航Item的左Item上->导航的子控制器的个数必须大于等于1 三.设置手势. 1.首先设置导航手势的代理. 2.然后再调用手势代理的方法,且必须大于1时才能使用