我在Play商店使用了一个名为BLE Scanner的非常方便的小程序来帮助我向我提供有关该设备及其服务和特性的更多信息.
这就是为什么我只是硬编码服务2,特征0.我只是无法弄清楚为什么在我写writeDescript后,我从来没有看到任何回来.有趣的是,我可以使用其他一些特性(一个是温度间隔),我确实收到了一个响应(虽然数据是乱码.)
另外,出于好奇,为什么这个特征有两个描述符?
此代码包含在我的MainActivity方法中.不确定这是否会有所作为.我已经看过并尝试了几种方法,但没有运气.
private final BluetoothGattCallback gattCallback = new BluetoothGattCallback(){ @OverrIDe public voID onConnectionStateChange(BluetoothGatt gatt,int status,int newState) { ... } @OverrIDe public voID onServicesdiscovered(BluetoothGatt gatt,int status) { mGatt = gatt; List<BluetoothGattService> services = mGatt.getServices(); Log.i("onServicesdiscovered",services.toString()); BluetoothGattCharacteristic characteristic = services.get(2).getcharacteristics().get(0); mGatt.setCharacteristicNotification(characteristic,true); BluetoothGattDescriptor descriptor = characteristic.getDescriptor(UUID.fromString(CLIENT_CHaraCTERISTIC_CONfig)); descriptor.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE); mGatt.writeDescriptor(descriptor); } @OverrIDe public voID onCharacteristicRead(BluetoothGatt gatt,BluetoothGattCharacteristic characteristic,int status) { ... } @OverrIDe public voID onCharacteristicChanged(BluetoothGatt gatt,BluetoothGattCharacteristic characteristic) { ... }};
更新:
我决定检查onDescriptorWrite方法并记录一些信息.
@OverrIDe public voID onDescriptorWrite(BluetoothGatt gatt,BluetoothGattDescriptor descriptor,int status) { Log.i("descriptorWRITE",Integer.toString(status)); }
有趣的是,状态返回13,即“写入 *** 作超过属性的最大长度”.
我将进一步研究这个问题.
解决方法 我在这里发现了问题.我假设温度计正在使用标准的BLE服务和特性设置.它不是.他们创造了自己的自定义特征.一旦我切换到那个特性,’改变’方法开始射击. 总结以上是内存溢出为你收集整理的Android BLE onCharacteristicRead和onCharacteristicChanged从未调用过全部内容,希望文章能够帮你解决Android BLE onCharacteristicRead和onCharacteristicChanged从未调用过所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)