[英]seekbar not updating when playing media file
我有帶播放音頻的布局的listview。在該布局中,當我單擊播放按鈕媒體文件時,我有seekbar和play / pause按鈕,但是seekbar沒有更新,我也是Runnable和handler的用戶,但它不起作用。 我在getview方法的baseadapter中這樣做。 請幫我解決這個問題
mAudioViewHolder.play.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String yofile = "file://" + filepath;
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(yofile);
} catch (IllegalArgumentException | SecurityException | IllegalStateException | IOException e) {
// TODO Auto-generated catch block
Log.e("Node", "ERRORSS Part 1 is" + e);
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mAudioViewHolder.isPlaying = false;
/**
* since audio is stop playing, remove its position value
* */
playingAudioPosition = -1;
}
});
}
try {
mediaPlayer.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("Node", "ERRORSS is Part 2 " + e);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("Node", "ERRORSS is Part 3 " + e);
} // might take long! (for buffering, etc)
mediaPlayer.start();
mAudioViewHolder.progressBar.setMax(mediaPlayer.getDuration());
Runnable mRunnable = new Runnable() {
@Override
public void run() {
if (mediaPlayer != null) {
int mCurrentPosition = mediaPlayer.getCurrentPosition() / 1000;
mAudioViewHolder.progressBar.setProgress(mCurrentPosition);
Log.d("Node", "get current position " + mCurrentPosition);
}
}
};
Log.d("Node", "StartTime Updation " + mediaPlayer.getDuration() + " " + mediaPlayer.getCurrentPosition());
mHandler.postDelayed(mRunnable, 1000);
//mAudioViewHolder.isPlaying = false;
}
當您每次要更新進度條時都需要調用可運行對象時,只需調用一次即可。
你可以這樣做
Runnable mRunnable = new Runnable() {
@Override
public void run() {
if(mediaPlayer != null){
int mCurrentPosition = mediaPlayer.getCurrentPosition() / 1000;
mAudioViewHolder.progressBar.setProgress(mCurrentPosition);
Log.d("Node", "get current position "+mCurrentPosition);
mHandler.postDelayed(this, 1000);
}
}
};
Log.d("Node", "StartTime Updation "+mediaPlayer.getDuration()+" "+mediaPlayer.getCurrentPosition());
mHandler.postDelayed(mRunnable, 1000);
停止播放時,請確保從處理程序中刪除了可運行對象。
mHandler.removeCallbacks(mRunnable);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.