Python_如何使用Python訪問Java類(1)

來源:互聯網
上載者:User

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

AD:

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

原始碼:github.com/kivy/pyjnius

文檔:pyjnius.readthedocs.org

也有其他一些的庫,如
JPype 或
Py4j ,它們在設計和可用性方面都不是很好。而使用
Jython也不為另一種選擇,因為我們想使用
python開發Android項目。

現在就讓我來告訴你,如何簡單的使用Pyjnius:

 
  1. >>> from jnius import autoclass  
  2. >>> Stack = autoclass('java.util.Stack')  
  3. >>> stack = Stack()  
  4. >>> stack.push('hello')  
  5. >>> stack.push('world')  
  6. >>> stack.pop()  
  7. 'world' 
  8. >>> stack.pop()  
  9. 'hello' 

上面的代碼中,我們使用
autoclass 函數,建立了一個類型代理,對應著Java中java.util.Stack類的所有方法和欄位屬性。

OK,也許你想要一個Android相關的例子,看這裡:

 
  1. from jnius import autoclass  
  2. from time import sleep  
  3.    
  4. MediaRecorder = autoclass('android.media.MediaRecorder')  
  5. AudioSource = autoclass('android.media.MediaRecorder$AudioSource')  
  6. OutputFormat = autoclass('android.media.MediaRecorder$OutputFormat')  
  7. AudioEncoder = autoclass('android.media.MediaRecorder$AudioEncoder')  
  8.    
  9. # Record the Microphone with a 3GP recorder  
  10. mRecorder = MediaRecorder()  
  11. mRecorder.setAudioSource(AudioSource.MIC)  
  12. mRecorder.setOutputFormat(OutputFormat.THREE_GPP)  
  13. mRecorder.setOutputFile('/sdcard/testrecorder.3gp')  
  14. mRecorder.setAudioEncoder(AudioEncoder.ARM_NB)  
  15. mRecorder.prepare()  
  16.    
  17. # Record 5 seconds  
  18. mRecorder.start()  
  19. sleep(5)  
  20. mRecorder.stop()  
  21. mRecorder.release() 

好了,你可以從文檔中擷取更多的例子。

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

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

英文原文 ,
OSChina.NET翻譯

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.