我希望读取存储在设备中的特征值,修改该值,然后将其写入设备.由于某种原因,writeCharacteristic()返回true,但内部设备值不会更改,onCharacteristicWrite()也不会被调用.实际上,出于某种原因,只有在我尝试编写某些内容时才调用它,然后在关闭或重新打开应用程序后不久调用它 - 并且不会更改设备值.我一直在调查这几天,这让我发疯.值得注意的是,手动和通过通知读取特征都可以正常工作.
为什么writeCharacteristic()没有通过,为什么onCharacteristicWrite()在这么奇怪的时间被召唤?
我不确定问题源于何处.它可能是一些愚蠢和简单的东西,如writeCharacteristic()错误地调用(我的实现是基于" 使用BLE Android 4.3如何编写特征? "的问题).请求是否可能被忽略,因为onCharacteristicRead()某种程度上未完成?
我相信这些链接似乎对指出问题最有帮助,但我自己无法从中提取任何内容:
作为我的代码的演练,会触发一个onItemClick()事件,启动序列.
int flag = 1;
((MainActivity)getActivity()).BtService.readFlag(flag);
Run Code Online (Sandbox Code Playgroud)
它调用一个函数(在a中Service),它验证蓝牙连接并读取特征.
public boolean readFlag(int flag){
/*... removed code here verifies that the Bluetooth Gatt is available,
that the Service exists...*/
BluetoothGattCharacteristic characteristic = Service.getCharacteristic(SEND_FLAGS_CHAR);
if (characteristic == null) {
Log.e(TAG, "char not found!");
return false;
}
try {
// Store …Run Code Online (Sandbox Code Playgroud) 我正在创建一个通过Bluetooth Low Energy与设备进行通信的应用程序,主要是让手机显示来自设备的数据.我需要实现功能,如果将设备和手机移动到范围内,它们将自动识别为一对,并且无需用户交互即可连接.我一直在寻找Bonding来实现这一目标.
我正在尝试使用当前连接的设备,并在用户单击时创建与它的绑定ListItem.我调用BluetoothDevice.createBond()了对连接BluetoothDevice变量的引用.Android Developer 网站说for BluetoothDevice.createBond(),如果出现错误,将返回false,并且我应该注册ACTION_BOND_STATE_CHANGED以在Bonding开始和完成时被通知.
我有一些问题createBond(),这是我的问题所在:
createBond()返回false,表明它无法开始绑定.这有什么可能的原因?(我的手机运行的是Android 4.4.2,API19,这createBond()是介绍的地方 - 所以不是这样.)createBond()某种原因无效(例如,我必须createBond()在API19中引入应用程序API API),有哪些替代方案?例子非常有帮助.查找有关与BLE绑定的信息令人沮丧.自学这个东西很困难,特别是没有教程.最重要的是,有些人说这是不可能的,因为当其他人说它肯定是可能的时候是"Just Works".BLE对我来说仍然是一个混乱的大云,所以现在,一些清晰度createBond()将非常感激.