我正在开发与 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/