我使用下面的代码播放录制的音频文件,它工作正常。我有一个显示比赛进程的搜索栏。我有两个静态文本称为开始和结束。我需要在开始文本中显示播放的持续时间(00.00到最大持续时间),并将时间从最大持续时间递减到00.00。我需要显示进展时间,剩余时间...任何建议..显示播放时间,播放剩余时间
private void playAudio() {
// TODO Auto-generated method stub
start.setVisibility(View.VISIBLE);
end.setVisibility(View.VISIBLE);
Context context = getApplicationContext();
CharSequence text1 = "Your audio will play";
int duration = Toast.LENGTH_SHORT;
Toast toast1 = Toast.makeText(context, text1, duration);
toast1.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast1.show();
String newFolderName = "/ComAudioRecorder";
String extstoredir = Environment.getExternalStorageDirectory()
.toString();
String filename = "/combinedrecaudio.wav";
String path1 = extstoredir + newFolderName + filename;
Log.d("path1", path1);
/*
* String path=path2; Log.d("path",path);
*/
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(path1);
mPlayer.prepare();
mPlayer.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mSeekBar.setMax(mPlayer.getDuration());
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (mPlayer != null
&& mPlayer.getCurrentPosition() < mPlayer.getDuration()) {
Log.d("Indide Run Method",Integer.toString(mPlayer.getCurrentPosition()));
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mSeekBar.setProgress(mPlayer.getCurrentPosition());
start.setText(Long.toString(startTime));
//end.setText(Double.toString());
}
}
}).start();
pos=mPlayer.getCurrentPosition();
mSeekBar.setProgress(mPlayer.getCurrentPosition());
// mPlay.setVisibility(View.INVISIBLE);
pauseRecord.setVisibility(View.INVISIBLE);
resumeRec.setVisibility(View.VISIBLE);
/*start.setText(Double.toString(starttext));
starttext=starttext+00.01;*/
// start.setText((int) (mPlayer.getCurrentPosition()/100000.0));
// end.setText(currentTime);
// start.setText();
// mDelete.setVisibility(View.INVISIBLE);
}
我用这显示错误公共无效的run(){\t \t \t \t 而UI(MPLAYER!= NULL \t && mPlayer.getCurrentPosition()< mPlayer.getDuration()){Log.d(“Indide Run Method”,Integer.toString(mPlayer.getCurrentPosition())); \t \t \t \t \t尝试{ \t \t \t \t \t \t的Thread.sleep(100); \t \t \t \t \t}赶上(InterruptedException的发送){ \t \t \t \t \t \t // TODO自动生成的catch程序块 \t \t \t \t \t \t e.printStackTrace(); \t \t \t \t \t} \t \t \t \t \t mSeekBar.setProgress(mPlayer.getCurrentPosition()); \t \t \t \t \t start.setText((mPlayer.getCurrentPosition()/ mPlayer.getDuration())* 100); \t \t \t \t \t \t \t end.setText(mPlayer.getDuration() - mPlayer。getCurrentPosition()); 。 \t \t \t \t \t} \t \t \t \t \t} \t \t})开始(); – Manikandan 2011-06-01 13:17:50
我应该在哪里放置这些线程或线程外..你可以请更新与我的代码相关的答案。 – Manikandan 2011-06-01 17:43:44
谢谢,它的工作原理。但是,当搜索栏移动时,开始文本不会更新。仅显示0。在播放结束时,文本始终变为100,即使播放时间更长。 – Manikandan 2011-06-02 09:59:43