我正在研究低功耗蓝牙,我已将蓝牙设备连接到我的 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/