Android低功耗蓝牙通讯(1)

本文详细介绍了使用Android进行蓝牙设备扫描、连接、服务发现、特征获取以及数据传输的过程,包括回调函数、连接状态管理、通知机制和开发中遇到的问题,对Android蓝牙应用开发提供了实用指导。
摘要由CSDN通过智能技术生成

step2、扫描的回调

//蓝牙扫描回调接口

private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback(){

@Override

public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {

if (device.getName() == null) {

return;

}

Log.e(“—>搜索到的蓝牙名字:”, device.getName());

//可以将扫描的设备弄成列表,点击设备连接,也可以根据每个设备不同标识,自动连接。

}

};

3、连接蓝牙

step1、获取设备的mac地址,然后连接。

//获取所需地址

String mDeviceAddress = device.getAddress();

BluetoothGatt mBluetoothGatt = device.connectGatt(context, false, mGattCallback);

step2、onConnectionStateChange()被调用

  • 连接状态改变时,mGattCallback中onConnectionStateChange()方法会被调用,当连接成功时,需要调用 mBluetoothGatt.discoverServices();去获取服务。

step3、onServicesDiscovered()被调用

  • 调用mBluetoothGatt.discoverServices();方法后,onServicesDiscovered()这个方法会被调用,说明发现当前设备了。然后我们就可以在里面去获取BluetoothGattService和BluetoothGattCharacteristic。

  • 下面就是mGattCallback回调方法。

// BLE回调操作

private BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {

@Override

public void onConnectionStateChange(BluetoothGatt gatt, int status,int newState){

super.onConnectionStateChange(gatt, status, newState);

if (newState == BluetoothProfile.STATE_CONNECTED) {

// 连接成功

mBluetoothGatt.discoverServices();

} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {

// 连接断开

Log.d(“TAG”,“onConnectionStateChange fail–>” + status);

}

}

@Override

public void onServicesDiscovered(BluetoothGatt gatt, int status) {

super.onServicesDiscovered(gatt, status);

if (status == BluetoothGatt.GATT_SUCCESS) {

//发现设备,遍历服务,初始化特征

initBLE(gatt);

} else {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值