Android 安卓不会让设备发出嘟嘟声

Android 安卓不会让设备发出嘟嘟声,android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,我正在尝试实现一个应用程序,它将与设备进行通信。我有一个这样的设备,但有一些问题。使用iPhone,我用bleTools应用程序测试了该设备,该应用程序工作正常,即,我已成功读取设备的所有特征,并发送特征以使设备发出嘟嘟声。但是使用安卓(Nexus5),我只能读取设备的特性,但无法使设备发出嘟嘟声。 我的代码是: private static final UUID IMMEDIATE_ALERT_SERVICE = UUID.fromString("00001802-0000-

我正在尝试实现一个应用程序,它将与设备进行通信。我有一个这样的设备,但有一些问题。使用iPhone,我用bleTools应用程序测试了该设备,该应用程序工作正常,即,我已成功读取设备的所有特征,并发送特征以使设备发出嘟嘟声。但是使用安卓(Nexus5),我只能读取设备的特性,但无法使设备发出嘟嘟声。 我的代码是:

 private static final UUID IMMEDIATE_ALERT_SERVICE =
        UUID.fromString("00001802-0000-1000-8000-00805f9b34fb");
private static final UUID IMMEDIATE_ALERT_LEVEL =
        UUID.fromString("00002a06-0000-1000-8000-00805f9b34fb");

回调方法返回Ok:

@Override
        public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
            if (characteristic.getUuid().toString().equals(IMMEDIATE_ALERT_LEVEL.toString())) {
                //TODO: use device address to identify the device-receiver
                Message msg = new Message();
                msg.what = MSG_PARAM_WRITTEN;
                msg.obj = (status == BluetoothGatt.GATT_SUCCESS);

                mHandler.sendMessage(msg);
            }
        }
但在设备端什么也没发生

谁能解释一下我做错了什么,或者给我一些建议我该怎么做


同样,我可以读取设备特征,但不能将它们写入设备。

与iOS不同,Android有很多未经记录的蓝牙技巧。我假设您正在使用Android 4.3及更高版本中包含的标准蓝牙库。如果您使用三星或博通等其他库,结果可能会有所不同

因为我没有findeme设备,所以我无法确认任何事情。但我已经在Android上使用经典和低能蓝牙能源有一段时间了。我的建议是完成扫描、发现服务和读/写特性的整个过程

  • 惊人的
  • 仅限Cancallback连接到设备
  • onConnect discoverServices
  • OnServicesDiscovery获取所有特性
  • 检查每个特征的属性
  • 如果你能读懂,那就去读吧
  • 完成后,您可以编写特征并侦听onCharacteristicWrite事件。你可能会听到嘟嘟声。如果没有,您需要返回iOS项目,跟踪发送到findme设备和从findme设备接收到的每一位。这听起来很难,但实际上只是读取正确代理中的字节的问题。记录下来。然后返回并在Android端重新创建位序列。再次捕获与findme设备之间的所有通信量。如果你能得到匹配的位序列,你就成功了
  • 关于Android BLE,还有一件非常重要的事情需要知道。写入必须是连续的。我的意思是,如果你写一个特征,你必须等待onCharacteristic事件触发,然后才能写另一个。Android开发者网站上没有记录这一点。实现此功能的最佳方法是将LinkedList用作工作队列


    祝你好运,如果你有问题,请打电话给我。

    我也在尝试同样的事情,你从哪里得到UUID??因为当我尝试列出设备的所有服务UUID时,我没有得到您拥有的服务UUID!要缩小问题范围,请使用此应用程序-我可以在“findme”设备上使用此应用程序启动警报。
    @Override
            public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
                if (characteristic.getUuid().toString().equals(IMMEDIATE_ALERT_LEVEL.toString())) {
                    //TODO: use device address to identify the device-receiver
                    Message msg = new Message();
                    msg.what = MSG_PARAM_WRITTEN;
                    msg.obj = (status == BluetoothGatt.GATT_SUCCESS);
    
                    mHandler.sendMessage(msg);
                }
            }