0

我想问是否可以从 Kivy 只导入 jnius。我将 Python 用于 Android “qpython” 发行版,其中编译了 Kivy。Kivy 也包含 pyjnius。现在我尝试使用 jnius 而不调用 Kivy 应用程序来调用 Java 模块?任何想法调用 kivy 包含模块而不导入 Kivy 本身或仅在终端中使用 Kivy 而不调用应用程序或窗口?或者直接为qpython编译pyjnius的一些帮助?谢谢

4

2 回答 2

0

Pyjnius 是一个单独的模块,它不依赖于 Kivy。它确实取决于以JNIEnv*某种方式获得一个,并且 pyjnius 目前通过 SDL 函数进行硬编码(尽管即使 SDL 的事件循环实际上没有运行,这也可能有效)。

我不确定您实际上在询问您的应用程序将如何运行(如果它在 qpython 中,pyjnius 无论如何都不能工作吗?),但通常很容易修改它以获得不同的指针方式(尽管你需要一些 C 代码来管理它)。这是python-for-android使用的方法,它修补 pyjnius 以使用适当的 api。

于 2016-05-10T13:23:54.563 回答
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()

希望这对你有帮助!

于 2017-02-26T10:35:55.317 回答