이 컨트롤은 SurfaceView에서 상속되며 MediaPlayer를 사용하여 비디오를 재생합니다.
작은 비디오 재생 인터페이스
MoviePlayerView.java
import java.io.IOException;import android.content.Context;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.util.AttributeSet;import android.view.SurfaceHolder ;import android.view.SurfaceHolder.Callback;import android.view.SurfaceView; /** * 비디오 재생 제어 *@author liuyinjun * @date 2015-2-8 */public class MoviePlayerView extends SurfaceView { private SurfaceHolder mSurfaceHolder; public MoviePlayerView(Context context) { this(context, null) } public MoviePlayerView(Context context, AttributeSet attrs) { this(context, attrs, 0); MoviePlayerView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mSurfaceHolder = this.getHolder(); mSurfaceHolder.addCallback(mSurfaceHolderCallback); // 홀더가 콜백 인터페이스에 참여합니다. mSurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS ) ;// setType을 설정해야 합니다. 그렇지 않으면 오류가 발생하지 않습니다. } /** * 비디오 재생 * @param fileName 파일 경로 */ public void play(String fileName, final OnPlayCompletionListenercompleteListener) { mPlayer = new MediaPlayer(); AudioManager.STREAM_MUSIC) ; mPlayer.setDisplay(mSurfaceHolder); 재생하기 위한 SurfaceView 정의 mPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer arg0) { stop(); if(completionListener != null)completeListener.onPlayCompletion(); // canvas.drawColor(Color. TRANSPARENT , // PorterDuff.Mode.CLEAR) } }); mPlayer.setDataSource(fileName); mPlayer.prepare(); } catch (IllegalStateException e) { // TODO 자동 생성된 catch 블록 e.printStackTrace() } catch (IOException e) { // TODO 자동 생성된 catch 블록 e .printStackTrace(); } mPlayer.start(); } private void stop() { if (mPlayer != null) { mPlayer.release(); mPlayer = null; } } /** * 리소스 해제*/ public void release() { if (mPlayer != null) { mPlayer.release(); mPlayer = null } } private Callback mSurfaceHolderCallback = new Callback() { @ 공개 무효 표면 파괴(SurfaceHolder arg0) { mSurfaceHolder = null } @Override 공개 무효; SurfaceCreated(SurfaceHolder arg0) { // TODO 자동 생성된 메서드 스텁 mSurfaceHolder = arg0; } @Override public void SurfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO 자동 생성된 메서드 스텁 mSurfaceHolder = arg0; } } /** * 재생 성공 콜백 *@author liuyinjun * @date 2015-2-9 */ public 인터페이스 OnPlayCompletionListener{ public void onPlayCompletion() } }이상이 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.