Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 蓝牙gatt:onClientConnParamsChanged()_Android_Bluetooth Lowenergy - Fatal编程技术网

Android 蓝牙gatt:onClientConnParamsChanged()

Android 蓝牙gatt:onClientConnParamsChanged(),android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,我正在开发一个Android应用程序,它可以与一个可编程外围设备进行通信。我能够启用通知并从BLE外围设备接收数据。然而,几秒钟后,我在Android Studio的Android终端上收到以下消息,通知停止 我注意到Android手机仍然连接到BLE外设,状态为0,但在BLE连接间隔更改为156后,通知停止 有没有人遇到过类似的问题?我正在使用Android Studio中的BluetoothLEGatt示例 谢谢 哈尼阿比迪 D/BluetoothGatt: onClientConnPara

我正在开发一个Android应用程序,它可以与一个可编程外围设备进行通信。我能够启用通知并从BLE外围设备接收数据。然而,几秒钟后,我在Android Studio的Android终端上收到以下消息,通知停止

我注意到Android手机仍然连接到BLE外设,状态为0,但在BLE连接间隔更改为156后,通知停止

有没有人遇到过类似的问题?我正在使用Android Studio中的BluetoothLEGatt示例

谢谢 哈尼阿比迪

D/BluetoothGatt: onClientConnParamsChanged() - Device=80:EA:CA:00:A8:77 interval=156 status=0enter code here

连接参数更新与通知订阅状态无关。您是说,尽管您从外围设备发送通知,但不会调用onCharacteristicChanged吗?你应该再次检查你的代码。如果你认为你做的一切都是正确的,你应该检查android的hci snoop日志或使用BLE嗅探器来查看真正发生了什么。

连接参数更新与通知订阅状态无关。您是说,尽管您从外围设备发送通知,但不会调用onCharacteristicChanged吗?你应该再次检查你的代码。如果你认为你所做的一切都是正确的,那么你应该检查android的hci snoop日志或使用BLE嗅探器来查看真正发生的情况。

因此我也遇到了这个问题,尽管我不100%知道确切的原因,但我至少可以告诉大家我是如何“修复”这个问题和我的经验的

因此,我使用运行6.0.1的三星Galaxy Note 4和RxAndroidBle来缓解在Android上处理BLE的痛苦。我的应用程序连接到一个可编程微处理器,并立即与该微处理器进行来回数据传输。我所看到的与OP类似:通常,来回传输会在其轨道上停止,并显示以下消息:

03-15 16:06:39.989 27793-28784/application D/BluetoothGatt: onClientConnParamsChanged() - Device=00:A0:50:65:24:91 interval=6 status=0
03-15 16:06:40.289 6292-6754/? D/BtGatt.GattService: onClientConnParamsChanged() - clientIf=7 address=00:A0:50:65:24:91, interval=39status=0
03-15 16:06:40.289 27793-28561/application D/BluetoothGatt: onClientConnParamsChanged() - Device=00:A0:50:65:24:91 interval=39 status=0
03-15 16:06:54.989 6292-6754/? D/BtGatt.GattService: onClientConnParamsChanged() - clientIf=7 address=00:A0:50:65:24:91, interval=6status=0
03-15 16:06:54.989 27793-27823/application D/BluetoothGatt: onClientConnParamsChanged() - Device=00:A0:50:65:24:91 interval=6 status=0
03-15 16:06:55.259 6292-6754/? D/BtGatt.GattService: onClientConnParamsChanged() - clientIf=7 address=00:A0:50:65:24:91, interval=39status=0
03-15 16:06:55.259 27793-28784/application D/BluetoothGatt: onClientConnParamsChanged() - Device=00:A0:50:65:24:91 interval=39 status=0
在我看来,由于某种原因,电话仍然在数据传输中间协商连接间隔,因此,由于某种原因,它将完全被搞砸。 也许这就是正在发生的事情,也许不是,但我发现根本原因是,在BLE设备扫描仪完全关闭之前,我(显然)正在通过BLE与微处理器连接和接口

当用户点击table view单元格连接到设备时,我最初打电话是为了停止订阅正在扫描设备的Rxandroidable observable,应结束BLE扫描,然后立即启动,显示与PSoC4通信的新活动,PSoC4随后立即连接并开始与微处理器接口:

 scanSubscription.unsubscribe();
 Intent myIntent = new Intent(MainActivity.this, ConnectedActivity.class);
 myIntent.putExtra("address", testdevice.getAddress());
 myIntent.putExtra("name", testdevice.getName());
 MainActivity.this.startActivityForResult(myIntent, CONNECTED_ACTIVITY);
然而,简单地取消扫描订阅似乎不会立即结束BLE扫描,因此我当前的策略是等待500毫秒,然后再开始与其他设备的任何通信。这显然是不理想的-理想情况下,当扫描实际上停止时,您会有一个方法回调,但我还没有想出如何做到这一点


希望这对某人有所帮助。

所以我也遇到了这个问题,虽然我不完全知道确切的原因,但我至少可以传达我是如何“修复”问题和我的经验的

因此,我使用运行6.0.1的三星Galaxy Note 4和RxAndroidBle来缓解在Android上处理BLE的痛苦。我的应用程序连接到一个可编程微处理器,并立即与该微处理器进行来回数据传输。我所看到的与OP类似:通常,来回传输会在其轨道上停止,并显示以下消息:

03-15 16:06:39.989 27793-28784/application D/BluetoothGatt: onClientConnParamsChanged() - Device=00:A0:50:65:24:91 interval=6 status=0
03-15 16:06:40.289 6292-6754/? D/BtGatt.GattService: onClientConnParamsChanged() - clientIf=7 address=00:A0:50:65:24:91, interval=39status=0
03-15 16:06:40.289 27793-28561/application D/BluetoothGatt: onClientConnParamsChanged() - Device=00:A0:50:65:24:91 interval=39 status=0
03-15 16:06:54.989 6292-6754/? D/BtGatt.GattService: onClientConnParamsChanged() - clientIf=7 address=00:A0:50:65:24:91, interval=6status=0
03-15 16:06:54.989 27793-27823/application D/BluetoothGatt: onClientConnParamsChanged() - Device=00:A0:50:65:24:91 interval=6 status=0
03-15 16:06:55.259 6292-6754/? D/BtGatt.GattService: onClientConnParamsChanged() - clientIf=7 address=00:A0:50:65:24:91, interval=39status=0
03-15 16:06:55.259 27793-28784/application D/BluetoothGatt: onClientConnParamsChanged() - Device=00:A0:50:65:24:91 interval=39 status=0
在我看来,由于某种原因,电话仍然在数据传输中间协商连接间隔,因此,由于某种原因,它将完全被搞砸。 也许这就是正在发生的事情,也许不是,但我发现根本原因是,在BLE设备扫描仪完全关闭之前,我(显然)正在通过BLE与微处理器连接和接口

当用户点击table view单元格连接到设备时,我最初打电话是为了停止订阅正在扫描设备的Rxandroidable observable,应结束BLE扫描,然后立即启动,显示与PSoC4通信的新活动,PSoC4随后立即连接并开始与微处理器接口:

 scanSubscription.unsubscribe();
 Intent myIntent = new Intent(MainActivity.this, ConnectedActivity.class);
 myIntent.putExtra("address", testdevice.getAddress());
 myIntent.putExtra("name", testdevice.getName());
 MainActivity.this.startActivityForResult(myIntent, CONNECTED_ACTIVITY);
然而,简单地取消扫描订阅似乎不会立即结束BLE扫描,因此我当前的策略是等待500毫秒,然后再开始与其他设备的任何通信。这显然是不理想的-理想情况下,当扫描实际上停止时,您会有一个方法回调,但我还没有想出如何做到这一点


希望这对某人有所帮助。

嗨,我也面临同样的问题。你解决了吗?同样的问题。如果有人解决了这个问题,请发布解决方案有人解决过这个问题吗?我一直在想方设法解决这个问题。我猜测的是,电话决定在连接/数据传输的中间协商BLE连接间隔,这将整个事情都搞糟了。我在旧Note4上运行Android 6.0.1,我非常可靠地看到了这个问题。即使试图强制进行连接间隔协商,似乎也无法消除问题。在这里可以看到相同的问题。我最初得到一个
interval=6 status=0
,然后如果我不请求高优先级,它将更新为
interval=36
,否则在连接过程中它将更新为
interval=12 status=0
。在这两种情况下,一段时间后它会再次更新回
interval