我目前正在使用 Kotlin 开发一个支持 BLE 的 Android 应用程序,目标是 API 27。我正在尝试覆盖android.bluetooth.BluetoothGatt. 有许多回调可用于覆盖以启用某些 BLE 事件的处理。例如,我通过onConnectionStateChange()以下方式覆盖:private val bluetoothGattCallback = object : BluetoothGattCallback() { override fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) { /* do stuff */ }这工作得很好。我的问题源于试图覆盖onConnectionUpdated(). 此回调的定义方式onConnectionStateChange()与BLE API 源中的定义方式相同,为什么我无法覆盖它?这就是我试图覆盖它的方式(仍在BluetoothGattCallback()对象内):fun onConnectionUpdated(gatt: BluetoothGatt, interval: Int, latency: Int, timeout: Int, status: Int) { /* do stuff */}编辑:我忘了提到,当我添加override关键字时,它提供了错误消息:OnConnectionUpdated overrides nothing.。原谅我的天真,我不经常使用 Kotlin/Java,谢谢。
1 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
您不应使用此方法,它仅供内部使用,而不是公共 API 的一部分。因此它是通过 隐藏的@hide
。有关更多信息@hide
以及如何访问它,请参阅Android 源代码中的 @hide 是什么意思?
请注意,不鼓励使用反射来访问它,如上面链接中所述
黑灰名单:
对于目标 SDK 低于 API 级别 28 的应用程序:
允许每次使用深灰名单接口。目标 SDK 为 API 级别 28 或更高级别的应用:行为与黑名单相同
blacklist : 无论目标 SDK 是什么,都受到限制。平台的行为就像没有接口一样。例如,它会在应用程序尝试使用它时抛出 NoSuchMethodError/NoSuchFieldException,并且当应用程序想要知道特定类的字段/方法列表时不会包含它。
添加回答
举报
0/150
提交
取消