java - onServicesDiscovered 给出 'Method does not override method from its super class' 错误

标签 java android bluetooth-lowenergy

enter image description here我正在研究低功耗蓝牙,我已将蓝牙设备连接到我的 Android,但是当我尝试发现其服务并通过覆盖它来实现 onServicesDiscovered 时。它给我语法错误,方法不会覆盖其父类(super class)中的方法。我在谷歌和堆栈上搜索它但找不到任何合适的解决方案。请帮助我。 期待中感谢。 这是我的代码和错误的屏幕截图。

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

    List<BluetoothGattService> services = gatt.getServices();
    Log.i("onServicesDiscovered", services.toString());
    gatt.readCharacteristic(services.get(1).getCharacteristics().get
            (0));
}

最佳答案

I have written this method in my class and here is the class header. public class A1 extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemClickListener

这是错误的。 onServicesDiscovered() 是抽象 BluetoothGattCallback 的方法类(class)。因此,您的 @Override 告诉编译器此方法会覆盖父级的方法,但您没有扩展 BluetoothGattCallback 所以这会引发错误。

您是蹩脚教程的最大受害者,其中作者不关心隔离元素,即让 Activity 实现所有接口(interface)和监听器,而不是将它们分开。作为解决方案,您必须重新编写代码并扩展 BluetoothGattCallback 或放弃不良做法并分离回调,即通过创建内部类:

class MyCallback extends BluetoothGattCallback {
   // your code here
}

然后使用MyCallback实例。

关于java - onServicesDiscovered 给出 'Method does not override method from its super class' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43524634/

相关文章:

java - Spring 无状态 Rest Web 服务

java - 如何从静态方法调用非静态方法?

android - 获取已连接的蓝牙 LE 设备列表

python - 检测蓝牙 Remote 上的按钮(HID over GATT)

java - 向流中添加两个 Java 8 流或一个额外元素

java - 从 Nexus 部署 Artifact 的正确方法

JAVA API 未返回任何结果。在服务器上运行的 SQL 查询确实

android - Firebase Android ServerValue.Timestamp 映射到 Long

android - 如何在画廊的 ImageView 中以 fragment 形式显示图像?

java - 蓝牙服务Jni : An exception was thrown by callback 'btgattc_notify_cb'