用于testing的设备:Nexus 4,Android 4.3 连接工作正常,但我的callback的onCharacteristicChanged方法永远不会被调用。 不过,我正在注册的onServicesDiscovered内使用onServicesDiscovered setCharacteristicNotification(char, true) onServicesDiscovered ,该函数甚至返回true。 设备日志(当通知应该出现/通过蓝牙设备发送时,实际上根本没有消息): 07-28 18:15:06.936 16777-16809/de.ffuf.leica.sketch D/BluetoothGatt: setCharacteristicNotification() – uuid: 3ab10101-f831-4395-b29d-570977d5bf94 enable: true 07-28 18:15:06.936 4372-7645/com.android.bluetooth D/BtGatt.GattService: registerForNotification() – address=C9:79:25:34:19:6C enable: true 07-28 18:15:06.936 4372-7645/com.android.bluetooth D/BtGatt.btif: btif_gattc_reg_for_notification 07-28 18:15:06.946 4372-7645/com.android.bluetooth D/BtGatt.btif: btgattc_handle_event: Event 1018 07-28 18:15:06.946 4372-7645/com.android.bluetooth D/BtGatt.GattService: onRegisterForNotifications() – address=null, status=0, registered=1, charUuid=3ab10101-f831-4395-b29d-570977d5bf94 07-28 18:15:06.946 4372-7645/com.android.bluetooth D/BtGatt.btif: […]
我目前正在开发一个应用程序,将使用蓝牙低功耗(Nexus 4testing)。 在开始使用Android 4.3中的官方BLE API后,我注意到在我第一次连接设备后,我很less能够成功连接到该设备或任何其他设备。 按照这里的指导,我可以成功地连接到设备,扫描服务和特性,并且读/写/接收通知没有任何问题。 但是,在断开和重新连接之后,我经常无法扫描服务/特性或者无法完成读/写。 我无法在日志中find任何内容来指出发生这种情况的原因。 一旦发生这种情况,我必须卸载应用程序,禁用蓝牙,并重新启动手机,才能重新开始工作。 每当一个设备断开连接时,我确保在BluetoothGatt对象上调用close()并将其设置为null。 任何见解? 编辑: 日志转储:对于这些日志,我植根了我的手机,并在/etc/bluetooth/bt_stack.conf中增加了相关项目的跟踪级别 成功连接 – 重新启动手机并安装应用程序后首次尝试。 我能够连接,发现所有的服务/特性,以及读/写。 尝试失败1 – 这是从上面的成功连接断开后的下一次尝试。 看来我能够发现特征,但第一次尝试读取返回一个空值,然后很快就断开连接。 尝试失败2 – 一个例子,我甚至无法发现服务/特性。 编辑2: 我尝试连接的设备基于TI的CC2541芯片。 我获得了TI SensorTag (也是基于CC2541),并发现TI昨天为SensorTag发布了一款Android应用 。 但是,这个应用程序也有同样的问题。 我在另外两台Nexus 4上testing了这个结果:第一次或第二次连接SensorTag成功,但是(根据日志)之后没有发现服务,造成各种崩溃。 我开始怀疑这个芯片是否有问题?
目前我正在尝试处理一个奇怪的exception,当我的Nexus 7(2012),与Android 4.3(构buildJWR66Y,我猜是第二个4.3更新)打开一个BluetoothSocket。 我见过一些相关的post(例如https://stackoverflow.com/questions/13648373/bluetoothsocket-connect-throwing-exception-read-failed ),但似乎没有提供解决此问题的方法。 此外,正如在这些线程中所build议的,重新配对没有帮助,并且不断尝试连接(通过一个愚蠢的循环)也没有效果。 我正在处理一个embedded式设备(一个noname OBD-II汽车适配器,类似于http://images04.olx.com/ui/15/53/76/1316534072_254254776_2-OBD-II-BLUTOOTH-ADAPTERSCLEAR-CHECK-ENGINE- LIGHTS-WITH-YOUR-PHONE-Oceanside.jpg )。 我的Android 2.3.7手机没有任何连接问题,同事(Android 4.1.2)的Xperia也可以。 Android的另一个谷歌Nexus(我不知道是“一个”还是“S”,但不是“4”)也失败了。 这是连接build立的片段。 它在自己的线程中运行,在服务中创build。 private class ConnectThread extends Thread { private static final UUID EMBEDDED_BOARD_SPP = UUID .fromString("00001101-0000-1000-8000-00805F9B34FB"); private BluetoothAdapter adapter; private boolean secure; private BluetoothDevice device; private List<UUID> uuidCandidates; private int candidate; protected boolean started; public ConnectThread(BluetoothDevice device, boolean secure) { logger.info("initiliasing […]