如何使用 Python 訪問 Java 類

openkk 12年前發布 | 32K 次閱讀 Python Android開發 移動開發

很高興給大家介紹一個 Pyjnius 項目。這是一個可以使用在桌面或Android上,用來訪問Java類的Python庫。

  • 源代碼:github.com/kivy/pyjnius
  • 文檔:pyjnius.readthedocs.org
  • </ul>
    也有其他一些的庫,如 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()</pre>
    好了,你可以從文檔中獲取更多的例子。

    我們已經可以映射Java/Python的類型,原生數組,支持方法重載等等。我們在內部使用的是 Cython + JNI,因此消耗性能是最小的。

    同時, Python for android庫已經完成,你可以從github中獲取。

    原文

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!