2016-10-18 3 views
0

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

класс ScanCallback (PythonJavaClass):

__javainterfaces__ = [ 'Android/Bluetooth/LE/ScanCallback']

Защиту __init __ (я, 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) 

ответ

0

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