การควบคุมนี้สืบทอดมาจาก SurfaceView และใช้ MediaPlayer เพื่อเล่นวิดีโอ
อินเตอร์เฟซการเล่นวิดีโอขนาดเล็ก
MoviePlayerView.java
นำเข้า java.io.IOException; นำเข้า android.content.Context; นำเข้า android.media.AudioManager; นำเข้า android.media.MediaPlayer; นำเข้า android.media.MediaPlayer.OnCompletionListener; นำเข้า android.util.AttributeSet; นำเข้า android.view.SurfaceHolder ;นำเข้า android.view.SurfaceHolder.Callback;นำเข้า android.view.SurfaceView; /** * การควบคุมการเล่นวิดีโอ *@ผู้เขียน liuyinjun * @date 2015-2-8 */ คลาสสาธารณะ MoviePlayerView ขยาย SurfaceView { ส่วนตัว SurfaceHolder mSurfaceHolder; MediaPlayer ส่วนตัว mPlayer; MoviePlayerView สาธารณะ (บริบท) MoviePlayerView สาธารณะ (บริบทบริบท AttributeSet attrs) { นี่ (บริบท attrs 0) สาธารณะ MoviePlayerView (บริบทบริบท, AttributeSet attrs, int defStyle) { super (บริบท, attrs, defStyle); mSurfaceHolder = this.getHolder(); mSurfaceHolder.addCallback (mSurfaceHolderCallback); // holder เข้าร่วมอินเทอร์เฟซการโทรกลับ mSurfaceHolder.setType (SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS) ) ;// ต้องตั้งค่า setType มิฉะนั้นจะไม่มีข้อผิดพลาด } /** * เล่นวิดีโอ * เส้นทางไฟล์ @param */ การเล่นโมฆะสาธารณะ (ชื่อไฟล์สตริง, OnPlayCompletionListener สุดท้ายการเสร็จสิ้นรายการ) { mPlayer = new MediaPlayer(); AudioManager.STREAM_MUSIC); mPlayer.setDisplay (mSurfaceHolder); กำหนด SurfaceView เพื่อเล่น mPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer arg0) { stop(); if(completionListener != null) allowanceListener.onPlayCompletion(); // canvas.drawColor(Color. โปร่งใส , // PorterDuff.Mode.CLEAR); ลอง { mPlayer.setDataSource(fileName); mPlayer.prepare(); } catch (IllegalStateException e) { // TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ e.printStackTrace(); } catch (IOException e) { // TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ e .printStackTrace(); } mPlayer.start(); } หยุดโมฆะส่วนตัว () { if (mPlayer != null) { mPlayer.release(); mPlayer = null; } } /** * ปล่อยทรัพยากร*/ โมฆะสาธารณะ () { if (mPlayer != null) { mPlayer = null; } } การโทรกลับส่วนตัว mSurfaceHolderCallback = new Callback() แทนที่โมฆะสาธารณะ surfaceDestroyed (SurfaceHolder arg0) { mSurfaceHolder = null; } @แทนที่โมฆะสาธารณะ surfaceCreated (SurfaceHolder arg0) { // TODO วิธีการสร้างอัตโนมัติ stub mSurfaceHolder = arg0; } @ แทนที่โมฆะสาธารณะ surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO วิธีการสร้างอัตโนมัติ stub mSurfaceHolder = arg0; } }; /** * การโทรกลับที่ประสบความสำเร็จ *@ผู้เขียน liuyinjun * @date 2015-2-9 */ อินเทอร์เฟซสาธารณะ OnPlayCompletionListener{ โมฆะสาธารณะ onPlayCompletion();ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าทุกคนจะชอบมัน