Android Things蓝牙项目中onCharacteristicWriteRequest的@Override标红问题求助
嘿,我来帮你搞定这个@Override标红的麻烦!这种情况通常是因为你的方法并没有真正重写父类的方法,下面是几个最可能的原因和对应的解决办法:
1. 确认你继承了正确的父类
你当前的类必须继承自 BluetoothGattServerCallback——只有这个类才包含onCharacteristicWriteRequest方法。如果你的类继承的是BluetoothGattCallback或者其他无关类,IDE就会判定这个方法不是重写,从而标红@Override。
检查你的类定义,应该是这样的:
public class CustomGattServerCallback extends BluetoothGattServerCallback { // 你的方法写在这里 }
2. 核对方法签名完全一致
父类的onCharacteristicWriteRequest方法签名必须和你写的完全匹配,包括参数的类型、顺序、数量,不能有任何差异。
你可以直接从父类中复制方法签名来避免错误:
@Override public void onCharacteristicWriteRequest(BluetoothDevice device, int requestId, BluetoothGattCharacteristic characteristic, boolean preparedWrite, boolean responseNeeded, int offset, byte[] value) { // 你的逻辑代码 super.onCharacteristicWriteRequest(device, requestId, characteristic, preparedWrite, responseNeeded, offset, value); Log.d(TAG, "onCharacteristicWriteRequest UUID: " + characteristic.getUuid().toString()); mGattServer.notifyCharacteristicChanged(mBluetoothDevice, characteristic, true); }
(顺便提一句:你代码里Log里的方法名拼写是onCharacteristicwriterequest,建议改成和方法名一致的驼峰式onCharacteristicWriteRequest,虽然不影响功能,但更规范)
3. 检查导入的类是否正确
确保你导入的蓝牙相关类都是Android框架自带的android.bluetooth包下的类,而不是第三方库的类。比如:
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattServerCallback;
如果导入了错误的类,IDE会认为参数类型不匹配,进而判定方法不是重写。
4. 验证项目的SDK版本
onCharacteristicWriteRequest方法是在API Level 18中引入的,如果你的项目minSdkVersion设置低于18,也可能导致@Override标红。检查你的build.gradle(Module级别)文件,确保:
android { defaultConfig { minSdkVersion 18 // 或者更高版本 // 其他配置 } }
按照上面的步骤逐一排查,应该就能解决@Override标红的问题啦!
内容的提问来源于stack exchange,提问作者Lennart

