Este control hereda de SurfaceView y usa MediaPlayer para reproducir videos.
Pequeña interfaz de reproducción de vídeo.
MoviePlayerView.java
importar java.io.IOException; importar android.content.Context; importar android.media.AudioManager; importar android.media.MediaPlayer; importar android.media.MediaPlayer.OnCompletionListener; importar android.util.AttributeSet; importar android.view.SurfaceHolder ;importar android.view.SurfaceHolder.Callback;importar android.view.SurfaceView; /** * Control de reproducción de vídeo *@autor liuyinjun * @fecha 2015-2-8 */public class MoviePlayerView extiende SurfaceView { private SurfaceHolder mSurfaceHolder; private MediaPlayer mPlayer; public MoviePlayerView(Context context) { this(context, null } público MoviePlayerView (contexto de contexto, atributos AttributeSet) { this (contexto, atributos, 0} público); MoviePlayerView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mSurfaceHolder = this.getHolder(); mSurfaceHolder.addCallback(mSurfaceHolderCallback); // el titular se une a la interfaz de devolución de llamada mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS) );// se debe configurar setType; de lo contrario, no habrá errores } /** * Reproducir video * @param fileName ruta del archivo */ public void play(String fileName, final OnPlayCompletionListener completeListener) { mPlayer = new MediaPlayer(); AudioManager.STREAM_MUSIC); mPlayer.setDisplay(mSurfaceHolder); Defina un SurfaceView para reproducirlo mPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer arg0) { stop(); if(completionListener != null) completeListener.onPlayCompletion(); // canvas.drawColor(Color. TRANSPARENTE, // PorterDuff.Mode.CLEAR); mPlayer.setDataSource(fileName); mPlayer.prepare(); } catch (IllegalStateException e) { // TODO Bloque de captura generado automáticamente e.printStackTrace() } catch (IOException e) { // TODO Bloque de captura generado automáticamente e; .printStackTrace(); } mPlayer.start(); } parada vacía privada() { if (mPlayer!= nulo) { mPlayer.release(); mPlayer = null; } } /** * Liberar recursos*/ public void release() { if (mPlayer!= null) { mPlayer.release(); mPlayer = null; Anular superficie vacía públicaDestroyed(SurfaceHolder arg0) { mSurfaceHolder = null } @Override public void; SurfaceCreated(SurfaceHolder arg0) { // TODO Código auxiliar de método generado automáticamente mSurfaceHolder = arg0; } @Override public void SurfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO Código auxiliar de método generado automáticamente mSurfaceHolder = arg0; } }; /** * Devolución de llamada exitosa de reproducción *@autor liuyinjun * @fecha 2015-2-9 */ public interface OnPlayCompletionListener{ public void onPlayCompletion();Lo anterior es el contenido completo de este artículo, espero que les guste a todos.