2016-10-18 3 views
0

pyjnius를 사용하는 추상 클래스 인 android.bluetooth.le.ScanCallback을 구현하려고합니다. 아래의 주어진 python 클래스를 인스턴스화하는 순간에는 JVM 오류가 있습니다. 이 오류는 android.bluetooth.le.ScanCallback이 인터페이스 클래스가 아니라고 설명합니다. 나는 인터페이스가 추상 클래스라고 생각한다. 내가 뭘 놓치고 있니?pyjnius java 추상 클래스 구현

클래스 ScanCallback (PythonJavaClass)

__javainterfaces__ = '로이드/블루투스/제작/ScanCallback']

DEF __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 (< 21)의 경우와 같은 인터페이스 클래스가 아닌 추상 클래스입니다.