RxAndroidBle rxBleConnection.writeCharacteristic

问题描述:

我正在运行RxAndroidBle中提供的整个示例应用程序从扫描发现服务到writeCharacteristic。我正在尝试调试流程并在CharacteristicOperationExampleActivity.java文件的onWriteClick()中放置一个断点。单击WRITE按钮不会执行任何操作。没有发现断点。RxAndroidBle rxBleConnection.writeCharacteristic

从博客RxAndroidBle

指出发现的特性是可选的写读指令。但是,这个示例应用程序的活动设置的方式,必须在显示特征操作页面之前通过发现特征。在特征页面上,我选择了读/写特征条目以进入操作页面。这不正确的方式来操作应用程序?

另外,有没有办法处理writeCharacteristic而无需发现其特点?我不想显示特性视图,用户必须选择正确的特性才能读取和写入BLE设备。

在任何情况下,示例应用程序发现我的BLE设备并连接到它,但未能写入它。有没有人有与RxAndroidBle的经验,请帮助。

该示例中似乎存在一个错误 - 我无法使其正常工作(尽管连接按钮被禁用) - 需要查看它。 对于速战速决,你可以用替换onConnectToggleClick()方法:

@OnClick(R.id.connect) 
public void onConnectToggleClick() { 

    if (isConnected()) { 
     triggerDisconnect(); 
    } else { 
     connectionObservable 
       .observeOn(AndroidSchedulers.mainThread()) 
       .doOnSubscribe(() -> connectButton.setText("Connecting")) 
       .subscribe(
         rxBleConnection -> { 
          Log.d(getClass().getSimpleName(), "Hey, connection has been established!"); 
          updateUI(); 
         }, 
         this::onConnectionFailure 
       ); 
    } 
} 

示例应用程序并不意味着与任何特定BLE装置运行,从而表明可能BluetoothCharacteristic的IT需要执行一个未知设备一个明确的发现将它们呈现给用户。当使用带有已知设备的库时,您可以安全地使用UUID s的BluetoothCharacteristic s,但不执行发现(它将在任一方式下完成,但不需要明确调用)。

+0

好的,那有效。我没有意识到在示例应用程序的操作页面中有一次,我需要点击CONNECT按钮才能写入BLE设备。这种连接级别是什么?我最初认为,一旦设备被发现并与rxBleConnection对象连接,我们就可以开始阅读/写入设备。 –

+0

当然你是对的,但在示例应用程序中,每个活动都在自己处理连接。如果活动暂停,则连接关闭。 –

+0

另外,如何通过自动执行连接而无需使用操作页面中的连接按钮执行此额外步骤来简化此代码? –