No se puede reemplazar la función de Java en Kotlin

amitchone:

Actualmente estoy desarrollando una aplicación para Android BLE habilitados para la orientación de la API 27 usando Kotlin.

Estoy intentando anular una función dentro android.bluetooth.BluetoothGatt. Hay una serie de devoluciones de llamada disponibles para ser anulado para permitir la manipulación de ciertos eventos BLE.

Por ejemplo, puedo reemplazar onConnectionStateChange()de la siguiente forma:

private val bluetoothGattCallback = object : BluetoothGattCallback() {

    override fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) {
        /* do stuff */
    }

Esto funciona muy bien.

Mi problema radica en tratar de anular onConnectionUpdated(). Esta devolución de llamada se define de la misma manera que onConnectionStateChange()en la fuente de API BLE , así que ¿cómo es que no puedo cancelar? Esta es la forma en que estoy tratando de anularlo (todavía dentro del BluetoothGattCallback()objeto):

fun onConnectionUpdated(gatt: BluetoothGatt, interval: Int, latency: Int, timeout: Int, status: Int) {
    /* do stuff */
}

EDIT: se me olvidó mencionar que, cuando agrego la overridepalabra clave que proporciona el mensaje de error: OnConnectionUpdated overrides nothing..

Perdona mi ingenuidad, no suelen trabajar con Kotlin / Java, gracias.

leonardkraemer :

Usted no debe usar este método, es sólo para uso interno y no forma parte de la API pública. Por lo tanto, no se podrá ver a través @hide. Para obtener más información acerca de @hidey cómo acceder a ella sin ver , ¿qué significa @hide en el código fuente de Android?

Tenga en cuenta que el uso de la reflexión para acceder a ella como se describe en el enlace anterior es desalentado

El método que desea usar está en el oscuro lista gris con las siguientes restricciones :

oscuro lista gris :

  • Para aplicaciones cuyos SDK objetivo está por debajo de nivel API 28: cada uso de un oscuro
    se permite interfaz lista gris.
  • aplicaciones cuyo SDK objetivo es el nivel API 28 o superior: mismo comportamiento que la lista negra

Lista negra : restringido independientemente de SDK objetivo. La plataforma se comportará como si la interfaz está ausente. Por ejemplo, se lanzará NoSuchMethodError / NoSuchFieldException cada vez que la aplicación está tratando de usarlo, y no incluirlo cuando la aplicación quiere conocer la lista de campos / métodos de una clase particular.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=184580&siteId=1
Recomendado
Clasificación