从Python程序中访问Java类的简单示例

作者:goldensun 时间:2022-02-19 08:53:13 


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中获取。

标签:Python
0
投稿

猜你喜欢

  • springboot使用mybatis开启事务回滚

    2022-09-10 05:15:55
  • idea打包java可执行jar包的实现步骤

    2022-07-30 02:57:48
  • Java monitor机制使用方法解析

    2023-11-09 11:25:56
  • java程序员必须要学会的linux命令总结(推荐)

    2021-12-11 00:47:47
  • 关于Springboot的日志配置

    2022-12-16 10:32:33
  • SpringCloud OpenFeign 服务调用传递 token的场景分析

    2022-12-26 22:24:07
  • java查找图中两点之间所有路径

    2022-10-04 03:08:11
  • java8使用filter()取出自己所需数据

    2023-04-07 02:30:37
  • c#文件的复制,移动,创建(实例代码)

    2023-05-29 21:49:14
  • Java基于ShardingSphere实现分库分表的实例详解

    2022-04-20 18:43:37
  • Mybatis的几种传参方式详解

    2021-12-08 15:35:53
  • JDK集合源码之解析TreeMap(一)

    2021-08-09 07:14:02
  • Spring Security OAuth2实现使用JWT的示例代码

    2022-11-02 22:46:25
  • Kotlin基础教程之面向对象

    2023-06-21 19:54:36
  • c#多线程编程基础

    2021-11-24 23:37:12
  • Flutter开发Widgets 之 PageView使用示例

    2023-06-24 13:23:34
  • java实现发送邮箱验证码

    2022-07-05 07:40:07
  • java中Integer包装类装箱的一个细节详解

    2023-09-24 18:35:32
  • 浅析Spring工厂的反射和配置文件

    2023-06-22 20:52:23
  • Eclipse下编写java程序突然不会自动生成R.java文件和包的解决办法

    2023-11-19 00:24:05
  • asp之家 软件编程 m.aspxhome.com