Python 访问 Java 类
16lz
2021-01-26
很高兴给大家介绍一个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 autoclassfrom 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 recordermRecorder = MediaRecorder()mRecorder.setAudioSource(AudioSource.MIC)mRecorder.setOutputFormat(OutputFormat.THREE_GPP)mRecorder.setOutputFile('/sdcard/testrecorder.3gp')mRecorder.setAudioEncoder(AudioEncoder.ARM_NB)mRecorder.prepare() # Record 5 secondsmRecorder.start()sleep(5)mRecorder.stop()mRecorder.release()
好了,你可以从文档中获取更多的例子。
我们已经可以映射Java/Python的类型,原生数组,支持方法重载等等。我们在内部使用的是 Cython + JNI ,因此消耗性能是最小的。
同时, Python for android 库已经完成,你可以从github中获取。
英文原文,OSChina.NET翻译
IT-Homer 专栏
更多相关文章
- android中的事件类型分为按键事件和屏幕触摸事件
- Phonegap Device 获取设备信息
- android获取图片大小及缩略图
- Android获取手机总内存和可用内存
- 【Android(安卓)Developers Training】 98. 获取联系人列表
- Android获取App当前页面的Activity名称
- Android中的TextView 、EditText、Activity、Intent实例小计算器
- robotium原理之获取WebElement元素
- Android手机信号提取