0

それぞれが異なるサウンドファイルをロードした一連のトグルボタンをkivyで取得しました。

Windows でコードを試してみると、すべてが期待どおりに機能しますが、Android では Kivy Launcher を介して音が止まりません。

class AudioButton(ToggleButton):
    sound = ObjectProperty(None)

    def killsound(self, state, dt):
        self.sound.stop()
        if 'Click to stop' in self.text:
            self.text = self.text.strip('\nClick to stop')
            self.height = 60
        else:
            pass

    def on_press(self):
        self.bind(state=self.killsound)
        if self.state == 'normal':
            self.sound.stop()
        else:
            self.sound.play()
            self.text = self.text+'\nClick to stop'
            self.height=240

これが行うこと/行うべきことは次のとおりです。

  • AudioButton以前に指定されたサウンドファイルを使用してインスタンスを作成します (指定: size_hintfont_sizeおよびgroup(ラジオ ボタンとして機能するため)
  • on_presskillsoundボタンの状態が変化したときにコールバックを発生させます
  • ボタンがstate=='down'サウンドの場合、ボタンのテキストにキャプションが追加されます
  • ボタンがstate=='normal'現在再生中のサウンドを停止する場合、関連するボタンが押される場合、別のボタンが押される場合、コールバックがあります。

コールバック(キルサウンド):

  • 状態が変化したときに音を直接停止する
  • 以前に追加されたキャプションを削除し、ボタンのサイズを変更します

Windows では、このコードですべて正常に動作します。ただし、Androidでは、killsoundgetが呼び出されると、キャプションが削除され、ボタンのサイズが変更されますが、サウンドは停止しません-古いサウンド(停止する必要があります)はまだ再生されており、新しいサウンドが開始されるため、両方のサウンドが得られました2 つ以上の音でも同じです。

手伝って頂けますか?

4

1 に答える 1

2

これはKivy1.4.1で修正されました。ここに投稿する代わりに、メーリングリストを介して私たちに相談するか、githubの問題を報告する必要があります:)

于 2012-10-03T10:19:20.127 に答える