BLE编程中关键步骤
Posted hellozay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BLE编程中关键步骤相关的知识,希望对你有一定的参考价值。
获取权限
<uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
获取蓝牙适配器的实例
final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter();
BLE搜索:实例化回调函数->启动/停止扫描
1、实例化回调函数
private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { runOnUiThread(new Runnable() { @Override public void run() { //得到蓝牙设备实例 } }); } };
2、启动/停止扫描
mBluetoothAdapter.startLeScan(mLeScanCallback); //开始扫描 mBluetoothAdapter.stopLeScan(mLeScanCallback); //停止扫描
BLE连接:实例化回调函数 -> 连接并绑定回调函数
1、实例化回调函数
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() { //当连接状态发生改变时会触发 @Override public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { String intentAction; if (newState == BluetoothProfile.STATE_CONNECTED) { //当蓝牙设备已经连接 ... } else if (newState == BluetoothProfile.STATE_DISCONNECTED) { //当设备无法连接 ... } } // 发现新服务时会触发 @Override public void onServicesDiscovered(BluetoothGatt gatt, int status) { if (status == BluetoothGatt.GATT_SUCCESS) { ... } else { ... } } // 读写特性 @Override public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { if (status == BluetoothGatt.GATT_SUCCESS) { ... } } ... };
2、获取蓝牙设备实例,并连接该蓝牙设备实例。
//蓝牙地址实例化一个蓝牙设备,或通过上述扫描传入一个引用。 final BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
//涉及的三个参数:一个Context对象,自动连接(boolean值,表示只要BLE设备可用是否自动连接到它),和BluetoothGattCallback调用。 private BluetoothGatt mBluetoothGatt = device.connectGatt(this, false, mGattCallback);
以上是关于BLE编程中关键步骤的主要内容,如果未能解决你的问题,请参考以下文章
如何在导航控件片段中关闭导航 DrawerLayout onBackPressed
是否有任何 C++ opencv 代码来计算每帧视频中关键特征点的速度? [关闭]
TP5报如下的错误 Indirect modification of overloaded element of thinkpaginatorCollection has no effect(代码片段