从python程序中访问java类的简单示例

from jnius import autoclass
>>> stack = autoclass(‘java.util.stack’)
>>> stack = stack()
>>> stack.push(‘hello’)
>>> stack.push(‘world’)
>>> stack.pop()
‘world’
>>> stack.pop()
‘hello’

上面的代码中,我们使用 autoclass 函数,创建了一个类型代理,对应着java中java.util.stack类的所有方法和字段属性。

ok,也许你想要一个android相关的例子,看这里:

from jnius import autoclass
from time import sleep
mediarecorder = autoclass(‘android.media.mediarecorder’)
audiosource = autoclass(‘android.media.mediarecorder$audiosource’)
outputformat = autoclass(‘android.media.mediarecorder$outputformat’)
audioencoder = autoclass(‘android.media.mediarecorder$audioencoder’)
# record the microphone with a 3gp recorder
mrecorder = mediarecorder()
mrecorder.setaudiosource(audiosource.mic)
mrecorder.setoutputformat(outputformat.three_gpp)
mrecorder.setoutputfile(‘/sdcard/testrecorder.3gp’)
mrecorder.setaudioencoder(audioencoder.arm_nb)
mrecorder.prepare()
# record 5 seconds
mrecorder.start()
sleep(5)
mrecorder.stop()
mrecorder.release()

好了,你可以从文档中获取更多的例子。

我们已经可以映射java/python的类型,原生数组,支持方法重载等等。我们在内部使用的是 cython + jni,因此消耗性能是最小的。

同时, python for android库已经完成,你可以从github中获取。

Posted in 未分类

发表评论