原生设置中关于蓝牙设置相关的类
BluetoothSettings.java
该类是蓝牙配置和连接管理界面,就是咱们常见的蓝牙界面。它管理着蓝牙界面的加载,蓝牙搜索,蓝牙连接,蓝牙重命名等管理功能。(顺便借用一下大牛做的图片:https://www.cnblogs.com/dixonyy/p/4246057.html)
BluetoothEnable.java
该类是蓝牙辅助类,用来管理蓝牙的开和关以及蓝牙状态的标题显示。如打开或关闭蓝牙的switchbar的状态和文本显示。
DeviceListPreferenceFragment.java
该类是BluetoothSettings类的父类,是一个抽象类,该类包含了用于保存蓝牙设备的链表以及蓝牙。还包含蓝牙设备的一些回调方法。例如,蓝牙设备的删除、扫描状态的改变、蓝牙状态的改变等回调方法的实现。(回调接口所在的类:BluetoothCallback.java)
final WeakHashMap<CachedBluetoothDevice, BluetoothDevicePreference> mDevicePreferenceMap =
new WeakHashMap<CachedBluetoothDevice, BluetoothDevicePreference>();
该变量保存的是用于显示的蓝牙设备集合,可以删除或添加相应的蓝牙设备。
CachedBluetoothDevice.java
缓存蓝牙设备,该类代表了一个远程设备,它包含了蓝牙设备的一些属性(例如蓝牙地址,名字,信号强度等)。该类还可以进行蓝牙设备的连接、配对、断开连接等功能。
BluetoothDevice.java
该类也代表了一个远程设备,但是与上面不同的是就相当与你买了一个水杯,水杯就是BluetothDevice,用包装盒包裹起来的就是CachedBluetoothDevice。
BluetoothDevicePreference.java
该类是在设置界面显示蓝牙设备的偏好类型。点击界面上的配对、连接、断开就是在这操作的。
BluetoothAdapter.java
蓝牙适配器,是蓝牙的总中枢,是蓝牙的起点。要想使用蓝牙必须要开启或关闭,它就是蓝牙的总开关。该类让你执行基本的蓝牙任务,例如:初始化发现设别,查询绑定/配对的设备,使用蓝牙MAC地址实例化一个BLuetoothDevice,创建一个BLuetoothServerSocket来监听来自其它蓝牙设备的请求连接,开始扫描蓝牙低功耗设备等等。
蓝牙事件管理BluetoothEventManager.java
首先这里注册一个事件接收广播mContext.registerReceiver(mBroadcastReceiver, mAdapterIntentFilter);,用于接收底层驱动发来的广播。然后根据不同的action分发给不同的handler处理。这里的handler都需要通过addHandler函数保存到mHandlerMap中。然后在Handler中调用回调BluetoothCallback(接口),来交给ui上层处理。当然这里继承了BluetoothCallback接口的回调都是事先注册了的registerCallback。在设置中是DeviceListPreferenceFragment注册了。
LocalBluetoothAdapter.java
蓝牙接口适配为本地的蓝牙接口适配器,为应用提供接口,同时调用BluetoothAdapter的接口,起到应用和底层的适配作用。
CachedBluetoothDeviceManager.java
该类负责管理蓝牙的缓存(已配对的设备和搜索到的设备)主要都保存在List mCachedDevices中
LocalBluetoothProfileManager.java
该类提供访问有效的蓝牙协议对象LocalBluetoothProfile
LocalBluetoothManager.java
frameworks/base/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothManager.java
该类提供get接口供其他类使用,来获取蓝牙相关的LocalBluetoothProfileManager、BluetoothEventManager、CachedBluetoothDeviceManager、LocalBluetoothAdapter、BluetoothDiscoverableEnabler对象。可以理解为一个封装类。