我是靠谱客的博主 老迟到方盒,最近开发中收集的这篇文章主要介绍android ble 上位机,BLE的Android上位机开发(下),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原标题:BLE的Android上位机开发(下)

ELLO! 大家好!马上就更新下篇了呢~哈哈!(上篇的地址:BLE的Android上位机开发(上))废话不多说了,先上主角吧!代码如下!

[Java] 纯文本查看复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

private void setBleServiceListener() {

//Ble服务发现回调

mBleService.setOnServicesDiscoveredListener( new BleService.OnServicesDiscoveredListener() {

@Override

public void onServicesDiscovered(BluetoothGatt gatt, int status) {

if (status == BluetoothGatt.GATT_SUCCESS) {

List gattServiceList = gatt.getServices();

}

}

});

//Ble扫描回调

mBleService.setOnLeScanListener( new BleService.OnLeScanListener() {

@Override

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

//每当扫描到一个Ble设备时就会返回,(扫描结果重复的库中已处理)

Log.w( "-" , "->>扫描到设备:" +device.getName()+ ">>" +device.getAddress()+ ">>" +rssi);

}

});

//Ble连接回调

mBleService.setOnConnectListener( new BleService.OnConnectionStateChangeListener() {

@Override

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

//

}

});

//Ble数据回调

mBleService.setOnDataAvailableListener( new BleService.OnDataAvailableListener() {

@Override

public void onCharacteristicChanged(BluetoothGatt _gatt, final BluetoothGattCharacteristic characteristic) {

//处理通知返回的数据

});

}

为了便于理解,这几个我分开解释一下吧:

1、mBleService.setOnLeScanListener

这个的作用是,每当Android扫描到一个新的BLE设备,便会触发这个listener。扫描结果重复的库中已处理,这一部分是Blelib里面已经处理好了的,很方便的!

可以通过device.getName()来显示设备名。这个跟gatt_db.h里面CHARACTERISTIC(char_device_name的字段值是一样的哦~

连接这个设备,使用函数:mBleService.connect(device.getAddress());就好了!

2、mBleService.setOnConnectListener

这个回调函数在connect操作之后才会被调用,这里的参数newState,主要有几种类型(灰常重要):

STATE_CONNECTED 设备已经连接

STATE_CONNECTING 设备正在连接到android

STATE_DISCONNECTED 设备已经断开连接

STATE_DISCONNECTING 设备正在断开连接

这个newState的判断还是很准确的,已经测试过了,就是反应时间不是很快。。我把41Z复位之后,这个大约需要四五秒的样子才能反应过来。。 不过可以借助这个作断线重连,很不错!

3、mBleService.setOnServicesDiscoveredListener

在设备STATE_CONNECTED 之后,就可以触发ServicesDiscoveredListener了。BLE设备的所有可见services都在gattServiceList 里面,可以通过 service.getUuid()取出每个service的uuid

每个service里面的characteristic可以用service.getCharacteristics();取出,这样就能为每个characteristic执行read write notify操作了。如果我们在41Z里面设置了SendNotification,比如41Z默认的电量,那么当android接收到这个Notification时,就会触发下面要说到的。

4、mBleService.setOnDataAvailableListener

这里重写了onCharacteristicChanged函数,当Notification到达时,就会进入这个onCharacteristicChanged函数。函数里characteristic参数即是对应由哪个characteristic发来的通知,读取这个值的操作是characteristic.getIntValue

最后,附一张手机APP的截图吧~大家不要笑话我哈~~

a8071efebdc728151ed02df5d93a3375.png

helloeeworld为好友,发送职业或EEWORLD论坛账号+感兴趣的方向,经审核通过即会被拉入我们在不用领域建立的微信交流群。返回搜狐,查看更多

责任编辑:

最后

以上就是老迟到方盒为你收集整理的android ble 上位机,BLE的Android上位机开发(下)的全部内容,希望文章能够帮你解决android ble 上位机,BLE的Android上位机开发(下)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部