掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
很高興給大家介紹一個 Pyjnius 項目。這是一個可以使用在桌面或Android上,用來訪問Java類的Python庫。

成都創(chuàng)新互聯(lián)公司專注于乳山企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站制作。乳山網(wǎng)站建設(shè)公司,為乳山等地區(qū)提供建站服務(wù)。全流程按需定制,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
源代碼:github.com/kivy/pyjnius
文檔:pyjnius.readthedocs.org
也有其他一些的庫,如 JPype 或 Py4j ,它們在設(shè)計和可用性方面都不是很好。而使用 Jython也不為另一種選擇,因為我們想使用 python開發(fā)Android項目。
現(xiàn)在就讓我來告訴你,如何簡單的使用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 函數(shù),創(chuàng)建了一個類型代理,對應(yīng)著Java中java.util.Stack類的所有方法和字段屬性。
OK,也許你想要一個Android相關(guān)的例子,看這里:
- 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()
好了,你可以從文檔中獲取更多的例子。
我們已經(jīng)可以映射Java/Python的類型,原生數(shù)組,支持方法重載等等。我們在內(nèi)部使用的是 Cython + JNI,因此消耗性能是最小的。
同時, Python for android庫已經(jīng)完成,你可以從github中獲取。
英文原文 , OSChina.NET翻譯

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流