2016-10-18 19 views
0

pyjniusを使った抽象クラスであるandroid.bluetooth.le.ScanCallbackを実装しようとしています。与えられたpythonクラスをインスタンス化すると、JVMエラーが発生します。このエラーは、android.bluetooth.le.ScanCallbackがインターフェイスクラスではないことを示しています。私はインターフェイスが抽象クラスだと信じています。私は何が欠けていますか?pyjnius java抽象クラスの実装

クラスScanCallback(PythonJavaClass):

__javainterfaces__ = [ 'アンドロイド/ブルートゥース/ 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"は、以前のBluetooth API(< 21)の場合のインターフェイスクラスではない抽象クラスです。

関連する問題