歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 如何使用 Python 訪問 Java 類

如何使用 Python 訪問 Java 類

日期:2017/3/1 10:11:44   编辑:Linux編程

很高興給大家介紹一個 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翻譯

Copyright © Linux教程網 All Rights Reserved