1. 程式人生 > 實用技巧 >Android學習筆記使用VideoView播放視訊

Android學習筆記使用VideoView播放視訊

Android中常用的視訊格式

  • MP4:解析度高、大小適中。
  • 3GP:體積小、移動性強。

使用步驟

程式碼實現

MyVideoView.java

package com.lzp.videoview;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.VideoView;

public class MyVideoView extends VideoView {
    public MyVideoView(Context context) {
        super(context);
    }

    public MyVideoView(Context context, AttributeSet attrs){
        super(context,attrs);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {//為了讓視訊全屏顯示所有要重寫該方法
        int width = getDefaultSize(0, widthMeasureSpec);
        int height = getDefaultSize(0, heightMeasureSpec);
        setMeasuredDimension(width, height);
    }
}

MainActivity.java

package com.lzp.videoview;

import androidx.appcompat.app.AppCompatActivity;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.WindowManager;
import android.widget.Toast;
import android.widget.VideoView;

import java.io.File;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        MyVideoView videoView = findViewById(R.id.video);//獲取VideoView元件
        /****載入要播放的視訊****/
        File file = new File(Environment.getExternalStorageDirectory()
                +"/80stest.mp4");//獲取檔案物件
        if(file.exists()){
            videoView.setVideoPath(file.getAbsolutePath());
            //指定要播放的視訊
        }else{
            Toast.makeText(MainActivity.this,
                    "沒有該視訊資源",Toast.LENGTH_SHORT).show();
        }
        /***控制視訊的播放****/
        android.widget.MediaController mc = new android.
                widget.MediaController
                (MainActivity.this);//建立MediaController
        videoView.setMediaController(mc);
        //讓VideoView和MediaController關聯
        videoView.requestFocus();//讓VideoView獲得焦點
        videoView.start();//開始播放視訊
        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                Toast.makeText(MainActivity.this,"視訊播放完畢",Toast.LENGTH_SHORT).show();
            }
        });
    }
}

效果:

專案地址:
https://gitee.com/peterLiz/android_learning.git

技術支援請加QQ:599490685