2016-05-10 2 views
0

Я хочу спросить, можно ли импортировать только jnius из Киви. Я использую Python для дистрибутива «qpython» для Android с Kivy, скомпилированным в нем. В Киви также включен пийний. Теперь я пытаюсь использовать jnius без вызова приложения Kivy для вызова модулей Java? Любая идея назвать kivy включала модули без импорта Kivy самостоятельно или для использования Kivy только в терминале без вызова приложения или окна? Или какая-то помощь для компиляции pyjnius для qpython напрямую? СпасибоИмпорт pyjnius из kivy

ответ

0

Pyjnius - это отдельный модуль, который не зависит от Kivy. Это делает в зависимости от получения JNIEnv* как-то, и pyjnius в настоящее время hardcodes делает это через SDL-функцию (хотя это может работать, даже если eventloop SDL на самом деле не работает).

Я не уверен, что вы действительно спрашиваете о том, как будет работать ваше приложение (если оно находится в пределах qpython, не работает ли pyjnius?), Но в целом его легко изменить, чтобы получить указатель a по-другому (хотя для управления им необходим некоторый код С). Это метод, используемый python-for-android, который исправляет pyjnius, чтобы использовать соответствующий api.

+0

Если я просто пытаюсь: 'импорт jnius' я получаю: ' Traceback (самый последний вызов последнего): Файл "", строка 1, в Файл «/ QPython/QPython2-ядро/построить/python- install/lib/python2.7/site-packages/jnius/__ init__.py ", строка 13, в Файл" /QPython/QPython2-core/build/python-install/lib/python2.7/site-packages/ jnius/reflect.py», строка 9, в Файл "jnius_export_class.pxi", строка 44, в jnius.jnius.MetaJavaClass .__ new__ (jnius/jnius.c: 13255) SystemError: нулевой результат без ошибок в PyObject_Call >>> ' – fteinz

+0

Я не знаю, что не так, но, может быть, я ошибаюсь он работает без чего-то еще. Он отлично работает без Kivy и SDL, хотя там нет существенной зависимости, даже если у qpython есть проблемы. – inclement

0

Это проблема qpython. Вы можете использовать pyjnius только тогда, когда вы добавляете это перед вашим сценарием:

#qpy:kivy 

Например:

#-*-coding:utf8;-*- 
#qpy:2 
#qpy:kivy 

from kivy.app import App 
from kivy.uix.button import Button 

from jnius import autoclass 
MediaPlayer = autoclass('android.media.MediaPlayer') 
player=MediaPlayer() 
media="/storage/emulated/legacy/YOUR_MEDIA_FILE" 

def reset_player(): 
    if (player.isPlaying()): 
     player.stop() 
    player.reset() 

def restart_player(_): 
    reset_player() 
    try: 
     player.setDataSource(media) 
     player.prepare() 
     player.start() 
    except: 
     player.reset() 

class App(App): 
    def build(self): 
     return Button(text='Hello world!',on_release=restart_player) 

if __name__=="__main__": 
    App().run() 

Надеются, что это помогут вам!

Смежные вопросы