2014-03-31 119 views
0

我正在构建一个应用程序,其中有一部分人们可以保存某些录音并按照自己的意愿倾听它们(这不是所有的应用程序的使用,而是为了简化事情,现在就是这样)。Android - 音频播放时更改播放按钮的文本

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

下面是相关的代码片段从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
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); 
+0

请解释最后一部分,关于实现要调用的回调方法当支付停止... – DanielY

+0

没关系,最终与媒体播放器做到了,谢谢 – DanielY