Python 访问 Java 类

很高兴给大家介绍一个 Pyjnius 项目。这是一个可以使用在桌面或Android上,用来访问Java类的Python库。 


也有其他一些的库,如  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翻译

 

 

IT-Homer 专栏

转载于:https://my.oschina.net/sunboy2050/blog/74581

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值