80,360
社区成员
发帖
与我相关
我的任务
分享
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)
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();
}
}