最近在做一个基本的音乐播放器,现在遇到播放时候一卡一卡的现象,是和我的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)));
}
};没有①处的代码播放流畅,添加①处后,播放就会一卡一卡的。求教各位大神该如何解决。Android
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)));
}
};没有①处的代码播放流畅,添加①处后,播放就会一卡一卡的。求教各位大神该如何解决。Android
解决方案 »
- 关于Android系统音效关闭的问题
- 本人新手,有个关于安卓启动虚拟机的问题。想请大虾们
- ViewFlipper一切换图片,其他view调用的layout方法就失效
- 当手机处于待机状态下(屏幕没光+已锁屏),比如长按菜单键或返回键,怎么打开一个应用程序
- 类似于新浪微博的回复提醒功能
- 请问如何设置TableRow中的View的宽度和高度?
- 更换布局问题(android)
- 寻Android平台下能编辑OFFICE办公软件
- 解决Android平板电脑上开发应用程序不能全屏显示的问题
- ksoap2不能处理搜狗等一些输入法的自带表情吗? xml序列化特殊字符出错
- 100分求:通过webview的本地html5播放mp3问题。
- 应用在屏幕锁屏后再无响应
seekbar监听设置有误,修改即可。if(fromUser)