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).