如何在 buildozer.spec python kivy 中包含 mp3 文件

How to include mp3 file in buildozer.spec python kivy

我有代码:

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.core.audio import SoundLoader
from kivy.graphics.context_instructions import Color


class TestApp(App):
    def build(self):
        fl = FloatLayout()
        try:
            sound = SoundLoader.load('magic.mp3')
            if sound:
                print("Sound found at %s" % sound.source)
                print("Sound is %.3f seconds" % sound.length)
                fl.add_widget(Label(text=str("Sound found at %s" % sound.source), pos=(0, 0), font_size=(40)))
                sound.play()
        except Exception as error:
            fl.add_widget(Label(text=str(error), pos=(0, 0), font_size=(40)))
        return fl


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

我在这段代码中使用了 magic.mp3,我希望能够在 .apk 文件中使用它,但是没有。我想我应该在 buildozer.spec:

中添加 .mp3 个文件
# (list) Source files to include (let empty to include all the files)
source.include_exts = py,png,jpg,kv,atlas,mp3

我还补充了:

# (list) List of inclusions using pattern matching
source.include_patterns = assets/*,magic/*.mp3

但是我无法播放这个文件,并且出现错误:

'NoneType' object has no attribute 'source'

如何解决?希望大家帮帮我

这是一个迟来的答案,FWIW。我认为您的问题不是找不到您的 mp3,而是您的文件在 mp3 中。 python-for-android 中的 SDL2 库目前不支持 mp3(参见 https://github.com/kivy/kivy/issues/5412)。

您应该可以通过将 mp3 文件转换为 wav 或 ogg 来解决这个问题。