求救!!Android mediaplay的问题
最近在做一个基本的音乐播放器,现在遇到播放时候一卡一卡的现象,是和我的UI更新有关系。
播放的代码.
public boolean play() {
if (myApp.getMusicList() != null && myApp.getMusicList().size() > 0) {
File fi = new File(myApp.getMusicList().get(myApp.getPosition()).getPath());
Uri uri = Uri.fromFile(fi);
Log.i("uri ", String.valueOf(uri));
if(mediaPlayer != null){
mediaPlayer.reset();
}
mediaPlayer = MediaPlayer.create(this, uri);
mediaPlayer.setLooping(false);
if (mediaPlayer != null && !mediaPlayer.isPlaying()) {
Log.e("service", "Play");
mediaPlayer.start();
isPlay = true;
Log.e("MeDia", String.valueOf(mediaPlayer.getDuration()));
myApp.setTotalTime(mediaPlayer.getDuration());
new Thread(myRunnable).start();//////① 开启一个新的线程去更新UI
return true;
} else {
return false;
}
}else{
return false;
}
}
Runnable myRunnable = new Runnable() {
@Override
public void run() {
int CurrentPosition = 0;// 设置默认进度条当前位置
int total = mediaPlayer.getDuration();//
while (mediaPlayer != null && CurrentPosition < total) {
try {
Thread.sleep(1000);
if (mediaPlayer != null) {
CurrentPosition = mediaPlayer.getCurrentPosition();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
Message msg = myHandler.obtainMessage();
msg.what = CurrentPosition;
myHandler.sendMessage(msg);
}
}
};
Handler myHandler = new Handler(){
public void handleMessage( Message msg){
int temp = msg.what;
PlayActivity.proBar.setProgress(temp);
PlayActivity.curTimeLbl.setText(String.valueOf(LongToMMSS.mSecFormat(temp)));
}
};