Pyjnius Java Реализация абстрактного класса

Я пытаюсь реализовать android.bluetooth.le.ScanCallback, который является абстрактным классом, использующим pyjnius. В тот момент, когда я создаю экземпляр приведенного ниже класса Python, возникает ошибка JVM. В сообщении об ошибке указано, что android.bluetooth.le.ScanCallback не является классом интерфейса. Я считаю, что интерфейс - это абстрактный класс. Что мне не хватает?

Класс ScanCallback (PythonJavaClass):

__javainterfaces__ = ['android / bluetooth / le / ScanCallback']

def __init __ (self, scanCallback, batchCallback = Нет, errorCallback= Нет):

    super(ScanCallback, self).__init__()
    self.batchCallbk = batchCallback
    self.scanCallbk = scanCallback
    self.errorCallbk = errorCallback
    pass
@java_method ('(L/java/utils/List<ScanResult>/)V')
def onBatchScanResults(self,results): 
    print dir(results)
@java_method ('(I)V')   
def onScanFailed(self, errorCode):
    print "failed to scan" + str(errorCode)
    raise ValueError(str(errorCode))

@java_method ('(IL/android/bluetooth/le/ScanResult)V')
def onScanResult(self, callbackType, result):
    print dir(result)

1 ответ

Я обнаружил, что с PyJNius можно реализовать только интерфейсный класс (чистый абстрактный класс), а не абстрактный класс. "android/bluetooth/le/ScanCallback" является абстрактным классом, а не интерфейсным классом, как в случае с более ранним интерфейсом bluetooth API (< 21).

Другие вопросы по тегам