ami*_*one 4 java android kotlin bluetooth-lowenergy
我目前正在使用Kotlin开发针对API 27的支持BLE的Android应用.
我试图覆盖其中的一个函数android.bluetooth.BluetoothGatt.可以覆盖许多回调以启用某些BLE事件的处理.
例如,我onConnectionStateChange()以下列方式覆盖:
private val bluetoothGattCallback = object : BluetoothGattCallback() {
override fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) {
/* do stuff */
}
Run Code Online (Sandbox Code Playgroud)
这很好用.
我的问题源于试图覆盖onConnectionUpdated().此回调的定义方式onConnectionStateChange()与BLE API源中的定义相同,那么为什么我不能覆盖它呢?这就是我试图覆盖它的方式(仍在BluetoothGattCallback()对象中):
fun onConnectionUpdated(gatt: BluetoothGatt, interval: Int, latency: Int, timeout: Int, status: Int) {
/* do stuff */
}
Run Code Online (Sandbox Code Playgroud)
编辑:我忘了提到,当我添加
override关键字时,它提供了错误消息:OnConnectionUpdated overrides nothing..
原谅我的天真,我不经常与Kotlin/Java合作,谢谢.
您不应该使用此方法,它仅供内部使用而不是公共API的一部分.因此它是隐藏的@hide.有关@hide以及如何访问它的更多信息,请参阅Android源代码中的@hide是什么意思?
请注意,使用反射如上面在描述链接来访问它不鼓励
黑暗灰名单:
- 对于目标SDK低于API级别28的应用:
允许每次使用深色灰名单界面.- 目标SDK为API级别28或更高级别的应用程序:与黑名单相同的行为
黑名单:无论目标SDK如何都受限制.平台的行为就像接口不存在一样.例如,它会抛出每当应用程序试图使用它的NoSuchMethodError/NoSuchFieldException,当应用程序需要知道特定类的字段/方法列表将不包括它.
| 归档时间: |
|
| 查看次数: |
486 次 |
| 最近记录: |