Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / 如何使用 Python 访问 Java 类

很高兴给大家介绍一个 Pyjnius 项目。这是一个可以使用在桌面或Android上,用来访问Java类的Python库。
  • 源代码:github.com/kivy/pyjnius
  • 文档:pyjnius.readthedocs.org
也有其他一些的库,如 JPype 或 Py4j ,它们在设计和可用性方面都不是很好。而使用 Jython也不为另一种选择,因为我们想使用 python开发Android项目。

现在就让我来告诉你,如何简单的使用Pyjnius:>>> 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中获取。 英文原文 , OSChina翻译