首页 > 代码库 > 蓝牙设置学习总结

蓝牙设置学习总结

一、蓝牙模块

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、  通讯

待补充。

蓝牙设置学习总结