2
我錄製了音頻,並通過mediaplayer播放。錄音,播放工作正常。我在播放錄製的聲音時使用了一個搜索欄。我使用了以下編碼來播放存儲在SD卡中的內容。它工作正常.. mFileName是SD卡中的音頻文件。 搜索欄在播放時不移動。任何建議...Seekbar遊戲時不移動
private void startPlaying()
{
MediaPlayer mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(mFileName);
mPlayer.prepare();
mPlayer.start();
mSeekBar.setMax(mPlayer.getDuration());
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
}
而且我用
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
if(fromUser){
mPlayer.seekTo(progress);
mSeekBar.setProgress(progress);
}
}
});
Thread currentThread = new Thread((Runnable) this);
currentThread.start();
public void run() {
// TODO Auto-generated method stub
try {
while(mPlayer != null){
int currentPosition = mPlayer.getCurrentPosition();
Message msg = new Message();
msg.what = currentPosition;
threadHandler.sendMessage(msg);
}
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private Handler threadHandler = new Handler(){
public void handleMessage(Message msg){
mSeekBar.setProgress(msg.what);
}
};
進度條只移動在用戶移動。它不會自動移動。
。但它不起作用。查看獲取編輯的代碼。 – Manikandan 2011-05-09 14:12:51
你的'run()'方法沒有像樣本那樣實現。 'Thread.sleep'應該在while循環中,而不是在它之後。嘗試讓鏈接的示例先正確工作,然後開始按照您想要的方向修改示例代碼。 – MusiGenesis 2011-05-09 14:21:42