bt 打开关闭

来源:互联网 发布:java跟javascript 编辑:程序博客网 时间:2024/05/17 02:39
 

BT Turn on Turn off

蓝牙的打开关闭由类BluetoothEnabler控制。触发点击使调用LocalBluetoothManager.setBluetoothEnabled(enable)。再调用到BluetoothAdapter的enable() 。蓝牙的打开关闭属于异步操作,操作成功后会有一个异步事件ACTION_STATE_CHANGED返回,异步事件由类BluetoothEventRedirector控制。

在收到ACTION_STATE_CHANGED次异步事件后,还需要做update本地设备profile的事情,以及读取上次关闭前搜索到的蓝牙设备。具体参考代码

涉及到的类:

LocalBluetoothManager(本机蓝牙设备管理,开启关闭,搜索等等)
BluetoothEnabler(界面的点击和状态文字的显示)
BluetoothAdapter(framework封装的类,提供本地蓝牙设备的配置,包括开启蓝牙,搜索周围蓝牙设备,设置本地蓝牙可见性)

Discoverable

蓝牙的discoverable mode由类BluetoothDiscoverableEnabler控制。触发点击使调用setEnabled(true)。再调用到BluetoothAdapter的setScanMode () 方法。具体参考代码

蓝牙模式有两种模式SCAN_MODE_CONNECTABLE_DISCOVERABLE(可连接可发现)和SCAN_MODE_CONNECTABLE(可连接但不可发现)

•涉及到的类:

LocalBluetoothManager(本机蓝牙设备管理,开启关闭,搜索等等)
 BluetoothDiscoverableEnabler (界面的点击和状态文字的显示)
BluetoothAdapter(framework封装的类,提供本地蓝牙设备的配置,包括开启蓝牙,搜索周围蓝牙设备,设置本地蓝牙可见性)

Local BT Rename

蓝牙本地名称设置由类BluetoothNamePreference控制。会调用到BluetoothAdapter的setName () 。

涉及到的类:

BluetoothNamePreference (界面的点击和状态文字的显示)
BluetoothAdapter(framework封装的类,提供本地蓝牙设备的配置,包括开启蓝牙,搜索周围蓝牙设备,设置本地蓝牙可见性)


Scan BT Device

蓝牙的搜索由类BluetoothFindNearby控制。触发点击使调用LocalBluetoothManager. startScanning(true)。

•在BluetoothSetting里触发点击,调用LocalBluetoothManager.startScanning(true)函数,通过BluetoothAdapter的startDiscovery调用到BluetoothService里的startDiscovery服务。

startDiscovery()是个异步函数,会立即返回,通过注册ACTION_DISCOVERY_STARTED、ACTION_DISCOVERY_FINISHED、ACTION_FOUND,来确定当前的状态。当收到ACTION_FOUND这个异步事件后,就可以确认搜索到的蓝牙设备的rssi, btClass, name。然后再把这些设备用CachedBluetoothDeviceManager这个类管理。
•涉及到的类:同蓝牙开启关闭涉及到的类。


Connection & Pair


在setting界面点击连接,会调到CachedBluetoothDevice(搜索到的设备)类的connect方法,在connectInt里,根据不同的profile来获得profilemanger,然后调用 profilemanger.connect()函数。此处的链接会涉及到的profile有A2DP AVRCP DUN HSP HFP 等。

同理如果配对或者解除配对,也会调到CachedBluetoothDevice类的pair()方法和unpair()。

说明: CachedBluetoothDevice 描述的搜索到的设备