小的音乐播放器,为什么到结束了报异常

u010016914 2014-04-23 09:24:16
异常信息

04-23 13:17:04.766: W/dalvikvm(2271): threadid=11: thread exiting with uncaught exception (group=0x409961f8)
04-23 13:17:04.766: E/AndroidRuntime(2271): FATAL EXCEPTION: Thread-72
04-23 13:17:04.766: E/AndroidRuntime(2271): java.lang.IllegalStateException
04-23 13:17:04.766: E/AndroidRuntime(2271): at android.media.MediaPlayer.isPlaying(Native Method)
04-23 13:17:04.766: E/AndroidRuntime(2271): at com.example.audioplayer.MainActivity$1.run(MainActivity.java:53)

异常在53行,已经标出

package com.example.audioplayer;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class MainActivity extends Activity {

private ImageButton playIB;
private SeekBar playSK;
private MediaPlayer mediaPlayer;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
playIB = (ImageButton) findViewById(R.id.playIB);
playSK = (SeekBar) findViewById(R.id.playSK);
}

public void play(View v) throws Exception {
if (mediaPlayer == null) {
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource("/mnt/sdcard/a.mp3");
mediaPlayer.prepare();
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new MyCompletionListener());
handleSeek();
} else if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();

} else {
mediaPlayer.start();
}
playIB.setImageResource(mediaPlayer.isPlaying() ? android.R.drawable.ic_media_pause
: android.R.drawable.ic_media_play);

}

private void handleSeek() {
playSK.setOnSeekBarChangeListener(new MyOnSeekBarChangeListener());
playSK.setMax(mediaPlayer.getDuration());
new Thread() {
public void run() {
while (mediaPlayer != null) {
if (mediaPlayer.isPlaying() && !playSK.isPressed()) {[/color]
//这行有异常
playSK.setProgress(mediaPlayer.getCurrentPosition());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
}.start();
}

private class MyOnSeekBarChangeListener implements OnSeekBarChangeListener {

@Override
public void onProgressChanged(SeekBar seekBar, int arg1, boolean arg2) {

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mediaPlayer.seekTo(playSK.getProgress());
}

}

private class MyCompletionListener implements OnCompletionListener {

public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
playIB.setImageResource(android.R.drawable.ic_media_play);
playSK.setProgress(0);
}

}

@Override
protected void onDestroy() {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
super.onDestroy();
}

}
...全文
103 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
哎,真难 2014-04-24
  • 打赏
  • 举报
回复
你运行结束了还会继续setProgress,所以报错,,,
山雨楼 2014-04-24
  • 打赏
  • 举报
回复
public void play(View v) throws Exception 这能不能catch住别往外抛

80,360

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧