2014-03-31 118 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