很高兴给大家介绍一个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 专栏

更多相关文章

  1. android中的事件类型分为按键事件和屏幕触摸事件
  2. Phonegap Device 获取设备信息
  3. android获取图片大小及缩略图
  4. Android获取手机总内存和可用内存
  5. 【Android(安卓)Developers Training】 98. 获取联系人列表
  6. Android获取App当前页面的Activity名称
  7. Android中的TextView 、EditText、Activity、Intent实例小计算器
  8. robotium原理之获取WebElement元素
  9. Android手机信号提取

随机推荐

  1. Android 初步学习BroadCast与Service实现
  2. Android 通过intent 传递对象
  3. android 贪吃蛇源码分析
  4. Android Studio 3.3.2运行OSChina4.1.7
  5. android - build.gradle
  6. android读取日志demo
  7. android webview 软键盘覆盖输入框的解决
  8. Android设备信息管理工具类
  9. android 如何接收和发送intent
  10. Android Bitmap精确缩放到指定大小