很高兴给大家介绍一个 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.NET翻译
Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有 蜀ICP备19037934号