Android 14 服务发现问题

问题描述 投票:0回答:1

我有一个 .jar 库,正在另一个项目中使用。

Android 13 和 Android 14 之间的某些变化导致了此问题。

在我的库中,我扫描并连接到 BLE 设备。

在从 Android 操作系统回调库期间,我有以下代码:

    @Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {

        androidBluetoothLog("onConnectionStateChange");

        String deviceAddress = gatt.getDevice().getAddress();

        if (newState == BluetoothProfile.STATE_CONNECTED) {

            removeConnectingDevice(deviceAddress, false);

            // start discovering services
            gatt.discoverServices();

        } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {

            removeConnectingDevice(deviceAddress, false);

            gatt.close();
        }
    }

如您所见,我调用了 gatt.discoverServices();这应该枚举服务和特征,然后调用 onServicesDiscovered 回调。

我的 onServicesDiscovered 看起来像这样:

    @Override
    // New services discovered
    public void onServicesDiscovered(BluetoothGatt gatt, int status) {

        if (status == BluetoothGatt.GATT_SUCCESS) {

            androidBluetoothLog("Services Discovered");

            List<BluetoothGattService> services = gatt.getServices();
            if (services != null) {
                androidBluetoothLog("Service Count: " + services.size());

                String deviceAddress = gatt.getDevice().getAddress();
                for (BluetoothGattService service : services) {

                    List<BluetoothGattCharacteristic> characteristics = service.getCharacteristics();
                    for (BluetoothGattCharacteristic characteristic : characteristics) {
                        androidBluetoothLog("Characteristic found");
                    }
                }
            }
        } else {

            androidBluetoothLog("Error~Service Discovery " + status);
        }
    }

在 Android 13 上运行时,一切正常。服务计数 > 0,我可以枚举所有服务和特征。

当我在 Android 14 上运行完全相同的代码时,服务计数始终为 0。

我尝试过使用睡眠在这里或那里添加延迟,但似乎没有任何效果。

Android 13 和 Android 14 之间的哪些变化可能导致此问题?

android flutter bluetooth bluetooth-gatt android-14
1个回答
0
投票

我在flutter应用程序中遇到了同样的问题iOS工作正常,在android 14中设备已连接但未发现服务我尝试了不同的方法,例如延迟,增加MTU 517等..但没有任何工作最终解决方案是在设备连接后手动创建债券。它有效!!

我正在使用 flutter_blue_plus v1.32.11

await device.createBond();
© www.soinside.com 2019 - 2024. All rights reserved.