android - 请求 MTU 在牛轧糖中不起作用

标签 android bluetooth-lowenergy mtu

我正在开发与 BLE 设备通信的应用程序。我可以轻松地在特征上写 20 个字节,但是当它超过 20 个字节时就会产生问题。我正在使用

mBluetoothGatt.requestMtu(512);

成功后写特征。

 @Override
                    public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) {
                        super.onMtuChanged(gatt, mtu, status);

                        if (status == BluetoothGatt.GATT_SUCCESS) {
                            System.out.print("Mtu Granted");
//                            this.supportedMTU = mtu;
                        }
                    }

它在棉花糖和 Lollipop 中运行良好。但它在 Nougat(Samsung galaxy s6)中不起作用。

最佳答案

我遇到了完全相同的问题,所以我将 mtu 请求放入一个循环中,它似乎在定期尝试 2 次后正常工作。

            new Thread(new Runnable() {
                @Override
                public void run() {
                    while (!mtuConfirmed) {
                        mBluetoothGatt.requestMtu(512);
                        mtuRequestCounter++;
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    Log.d(TAG, "MTU change reply received after " + mtuRequestCounter + " attempts");
                }
            }).start();

关于android - 请求 MTU 在牛轧糖中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46149114/

相关文章:

Android 自定义字体在某些手机上显示为空白

android - 如何使 Picasso 加载图像更快?

java - Unity3D如何为android插件添加权限到AndroidManifest.xml

bluetooth-lowenergy - 写入 GATT 描述符会产生写入不允许错误

iOS Bluetooth LE - 无响应写入的正确方法

python - 如何通过代码(在python中)找到网络的mtu值?

android - 更改搜索栏时不调用 onProgressChanged 方法?

bluetooth-lowenergy - (ESP-IDF) 通过 BLE 发送 .txt 文件(日志数据)? (从 ESP32 到 Android 手机的大文件)

ios - iOS中将MTU换成BTLE的方法

tcp - 64k mtu 对 lo 的优势?