我想问一下是否可以从Kivy只导入jnius。我使用Python for Android“qpython”发行版,并在其中编译了Kivy。 Kivy还包括pyjnius。 现在我尝试使用jnius而不调用Kivy应用程序来调用Java模块?任何想要调用kivy的想法包括没有导入Kivy本身的模块或只在终端中使用Kivy而不调用App或Window?或者有些帮助直接为qpython编译pyjnius?感谢
答案 0 :(得分:0)
Pyjnius是一个单独的模块,它不依赖于Kivy。 依赖于以某种方式获取JNIEnv*
,并且pyjnius当前通过SDL函数执行硬编码(尽管即使SDL的eventloop实际上没有运行,这也可能有效)。
我不确定你实际上在询问你的应用程序是如何运行的(如果它在qpython中,不管pyjnius不工作吗?),但一般来说很容易修改它以使指针变得不同方式(虽然你需要一些C代码来管理它)。这是python-for-android使用的方法,它修补pyjnius以使用适当的api。
答案 1 :(得分:0)
这是qpython的问题。只有在脚本前添加pyjnius时才能使用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()
希望这对你有帮助!