Ich möchte fragen, ob es möglich ist, nur Jnius aus Kivy zu importieren. Ich benutze Python für Android "Qpython" -Distribution mit Kivy darin kompiliert. Kivy haben auch Pyjnius enthalten. Jetzt versuche ich, Jnius zu verwenden, ohne eine Kivy-App aufzurufen, um Java-Module aufzurufen? Irgendeine Idee, um kivy zu nennen, schloss Module ein, ohne Kivy selbst zu importieren oder um Kivy nur im Terminal ohne Aufruf einer App oder eines Fensters zu verwenden? Oder etwas Hilfe, um Pyjnius für qpython direkt zu kompilieren? DankeImportieren Pyjnius aus Kivy
Antwort
Pyjnius ist ein separates Modul, es hängt nicht von Kivy ab. Es macht hängen davon ab, eine JNIEnv*
irgendwie zu bekommen, und Pyjnius derzeit hardcodes tun dies über eine SDL-Funktion (obwohl dies auch funktionieren kann, wenn SDL Eventloop nicht tatsächlich ausgeführt wird).
Ich bin nicht sicher, was Sie tatsächlich fragen, wie Ihre App ausgeführt werden würde (wenn es innerhalb von Qpython ist, funktioniert Pyjnius sowieso nicht?), Aber im Allgemeinen ist es einfach zu ändern, um den Zeiger zu erhalten anderer Weg (obwohl Sie C-Code benötigen, um es zu verwalten). Dies ist die Methode, die von verwendet wird, die Pyjnius anweist, eine geeignete API zu verwenden.
Das ist ein Problem von qpython. Sie können nur verwenden pyjnius, wenn Sie dies vor Ihrem Skript hinzufügen:
#qpy:kivy
Zum Beispiel:
#-*-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()
Hope this helfen Ihnen!
Wenn ich einfach versuchen: 'Import jnius' ich: ' Traceback (jüngste Aufforderung zuletzt): File "" Linie 1 in Datei „/ QPython/QPython2-Kern/build/python install/lib/python2.7/site-packages/jnius/__ init__.py ", Zeile 13, in Datei" /QPython/QPython2-core/build/python-install/lib/python2.7/site-packages/ jnius/reflect.py“, Zeile 9, in File "jnius_export_class.pxi", Zeile 44, in jnius.jnius.MetaJavaClass .__ new__ (jnius/jnius.c: 13255) Systemerror: NULL-Ergebnis ohne Fehler in PyObject_Call >>> ' –
fteinz
Ich weiß nicht, was genau falsch ist, aber vielleicht liege ich falsch Es funktioniert ohne etwas anderes zu laufen. Es funktioniert zwar ohne Kivy und SDL, aber es gibt keine große Abhängigkeit, selbst wenn qpython ein Problem hat. – inclement