从rxBleDevice读取特征在Android中给出了例外,在iOS中为什么使用相同的UUID可以正常工作

问题描述 投票:0回答:1

目前,我正在使用涉及从ble设备读取数据的应用程序。我正在尝试从Andesfit温度计,Andesfit血压,Andesfit体重秤读取数据。

为此,我需要使用特征UUID进行通知。通知的东西工作正常,并且任何设备发出数据时我都可以正确接收数据。

考虑用户已经使用血压机进行测量的情况。然后他拿起设备,建立连接。我应该能够检索最后一条记录并将其显示在设备中。

为了显示最后一条记录,我需要使用UUID读取特征

在iOS中,我可以检索最后一条记录并使用相同的特征性UUID进行通知,并且可以正常工作。

 characteristic UUID is 2A1C

 peripheral.setNotifyValue(true, for: characteristic)
 peripheral.readValue(for: characteristic)

但是在Android中,如果我尝试使用用于通知的特征性UUID进行阅读,则会给我例外。

rxBleDevice.establishConnection(false, Timeout(12000, TimeUnit.MILLISECONDS))
                .flatMapSingle { rxBleConnection ->

                    rxBleConnection.readCharacteristic(UUID.fromString("00002a1c-0000-1000-8000-00805f9b34fb"))
                        .subscribe({bytes ->

                    },{t: Throwable? ->
                        var mess = t!!.localizedMessage
                        t.printStackTrace()
                    })

异常消息为

MAC地址F4:5E:AB:0D:7B:93的GATT异常,类型为BleGattOperation {description ='CHARACTERISTIC_READ'}] >>

这是我在Android中的服务发现操作

在我的服务发现中,我可以清楚地看到此特征性的UUID仅用于通知。

V/RxBle#ServiceDiscoveryOperation: Primary Service - Health Thermometer (00001809-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation: Instance ID: 51
V/RxBle#ServiceDiscoveryOperation: -> Characteristics:
V/RxBle#ServiceDiscoveryOperation:  * Temperature Measurement (00002a1c-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation:    Properties: [ INDICATE ]
V/RxBle#ServiceDiscoveryOperation:    -> Descriptors: 
V/RxBle#ServiceDiscoveryOperation:      * Client Characteristic Configuration (00002902-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation:      * Characteristic Presentation Format (00002904-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation:  * Temperature Type (00002a1d-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation:    Properties: [ READ ]
V/RxBle#ServiceDiscoveryOperation:  * Intermediate Temperature (00002a1e-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation:    Properties: [ NOTIFY ]
V/RxBle#ServiceDiscoveryOperation:    -> Descriptors: 
V/RxBle#ServiceDiscoveryOperation:      * Client Characteristic Configuration (00002902-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation:  * Measurement Interval (00002a21-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation:    Properties: [ READ WRITE INDICATE ]
V/RxBle#ServiceDiscoveryOperation:    -> Descriptors: 
V/RxBle#ServiceDiscoveryOperation:      * Client Characteristic Configuration (00002902-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation:      * Valid Range (00002906-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation: Primary Service - Battery Service (0000180f-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation: Instance ID: 65
V/RxBle#ServiceDiscoveryOperation: -> Characteristics:
V/RxBle#ServiceDiscoveryOperation:  * Battery Level (00002a19-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation:    Properties: [ READ NOTIFY ]
V/RxBle#ServiceDiscoveryOperation:    -> Descriptors: 
V/RxBle#ServiceDiscoveryOperation:      * Client Characteristic Configuration (00002902-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation:      * Report Reference (00002908-0000-1000-8000-00805f9b34fb)
V/RxBle#ServiceDiscoveryOperation: --------------- ====== Finished peripheral content ====== ---------------

当前,我正在使用一个涉及从ble设备读取数据的应用程序。我正在尝试从Andesfit温度计,Andesfit血压,Andesfit体重秤读取数据。 ...

bluetooth-lowenergy rx-android rxandroidble
1个回答
1
投票

为什么使用相同的UUID可以正常工作(在iOS和Android上不能正常工作?

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.