android 用Mediaplay如何循环播放视频
我用mediaplay可以播放视频,但是循环播放就不可以了,我用一个setOnCompletionListener来设置循环播放,可是会出错,求指导!!(代码如下)
surfaceView = (SurfaceView) findViewById(R.id.video);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
media = new MediaPlayer();
surfaceHolder.addCallback(new Callback()
{
@Override
public void surfaceDestroyed(SurfaceHolder holder)
{
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder)
{
// TODO Auto-generated method stub
media.setAudioStreamType(AudioManager.STREAM_MUSIC);
media.setDisplay(surfaceHolder);
try
{
media.setDataSource("/sdcard/video.3gp");
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
media.prepare();
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
media.start();
media.setLooping(true);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
{
// TODO Auto-generated method stub
}
});
media.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mp)
{
// 播放结束后的动作
media.reset();
try
{
media.prepare();
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
media.start();
}
});
运行后出现了以下错误
09-18 10:18:31.529: E/MediaPlayer(6855): prepareAsync called in state 16
09-18 10:18:31.539: W/System.err(6855): java.lang.IllegalStateException
09-18 10:18:31.539: W/System.err(6855): at android.media.MediaPlayer.prepare(Native Method)
09-18 10:18:31.539: W/System.err(6855): at com.wqf.cslr.Main$8.onCompletion(Main.java:230)
09-18 10:18:31.539: W/System.err(6855): at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:1556)
09-18 10:18:31.539: W/System.err(6855): at android.os.Handler.dispatchMessage(Handler.java:99)
09-18 10:18:31.539: W/System.err(6855): at android.os.Looper.loop(Looper.java:137)
09-18 10:18:31.539: W/System.err(6855): at android.app.ActivityThread.main(ActivityThread.java:4424)
09-18 10:18:31.539: W/System.err(6855): at java.lang.reflect.Method.invokeNative(Native Method)
09-18 10:18:31.539: W/System.err(6855): at java.lang.reflect.Method.invoke(Method.java:511)
09-18 10:18:31.539: W/System.err(6855): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-18 10:18:31.549: W/System.err(6855): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-18 10:18:31.549: W/System.err(6855): at dalvik.system.NativeStart.main(Native Method)