Android - 在播放音频时更改播放按钮的文本

时间:2014-03-31 13:29:07

标签: android audio android-fragments ringtone

我正在构建一个应用程序,其中有一部分人们可以保存某些录音并按照他的意愿收听它们(这不是应用程序的全部用途,但为了简化事情,现在就是这样)。

当用户从列表中选择一个音频时,他会看到一个带有“播放”按钮的视图。 我希望在播放音频时此按钮的文本将更改为“正在播放...”,并在完成后将其更改回“播放”。

以下是RecordViewFragment的相关代码段:

ringtone = RingtoneManager.getRingtone(getActivity(), Uri.parse(audioLinkPath));

audioButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
            ringtone.play();
            while (ringtone.isPlaying()) {
             audioButton.setText("Playing...");
            }
            audioButton.setText(R.string.item_play);
    }
});

现实中发生的是播放声音,但文字永远不会改变(或变化非常快)。 我认为那是因为play()方法是异步方法。还有什么可以做的?

提前致谢

1 个答案:

答案 0 :(得分:1)

while (ringtone.isPlaying()) {
    audioButton.setText("Playing...");
}

你所做的只是在while循环中四处转转。

删除此代码......

while (ringtone.isPlaying()) {
    audioButton.setText("Playing...");
}
audioButton.setText(R.string.item_play);

...只需将以下内容放入onClick(...)方法......

即可
ringtone.play();
audioButton.setText("Playing...");

然后实现一个回调方法,在播放停止时调用,并使用它来调用...

audioButton.setText(R.string.item_play);