蓝牙设置学习总结
一、蓝牙模块
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、 通讯
待补充。