Я использую Android API 27 и Kotlin и хочу переопределить обратный вызов BLE, который скрыт через @hide
.Этот вопрос вытекает из моего предыдущего вопроса .Рассматриваемый обратный вызов onConnectionUpdated
и определен в BluetoothGatt.java .Функция обратного вызова также определена в BluetoothGattCallback.java , поэтому я даже не уверен, какую версию мне нужно переопределить.
Я понимаю, что мне нужно использовать отражение для доступа к скрытым функциям-членам класса, но я не могу понять, как на самом деле получить доступ к функции и переопределить ее.
Вот что я пытаюсь, но безрезультатно:
val kclass = Class.forName("android.bluetooth.BluetoothGatt")
val kmethod = kclass.getMethod("onConnectionUpdated")
override fun kmethod(gatt: BluetoothGatt, interval: Int, latency: Int, timeout: Int, status: Int) {
/* do stuff */
}
Ошибка в этом случае: kmethod overrides nothing
.
Я понимаю, что могу также использовать библиотеку отражений Котлина, но опять же, я не уверен, как это сделать.
Спасибо.