我正在构建一个应用程序,其中有一部分人们可以保存某些录音并按照他的意愿收听它们(这不是应用程序的全部用途,但为了简化事情,现在就是这样)。
当用户从列表中选择一个音频时,他会看到一个带有“播放”按钮的视图。 我希望在播放音频时此按钮的文本将更改为“正在播放...”,并在完成后将其更改回“播放”。
以下是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()方法是异步方法。还有什么可以做的?
提前致谢
答案 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);