安卓中使用VideoView來播放視訊
阿新 • • 發佈:2019-01-31
今天寫了一個關於視訊播放的小程式,使用的是VideoView這個API,該API內容簡單,易於程式碼的書寫。
我用了兩種不同路徑下的方式來播放一段視訊。
(1) 該視訊檔案位於raw目錄下,通過setVideoURI()方法來設定路徑,通過給VideoView設定setMediaController()方法來讓 VideoView 和 MediaController 建立關聯,通過start()方法開始播放視訊。
resume()和seekTo(0)這兩種方法可以設定視訊的重新播放,setOnCompletionListener這個監聽器用來處理視訊播放完成以後的邏輯,比如隱藏視訊,setVisibility(View.INVISIBLE)這個方法可以控制視訊的顯示和隱藏
(2)當視訊路徑位於sd卡下時,通過setVideoPath()方法來設定視訊路徑,其它方法與第一種情況類似
通過以上程式碼就可以實現一個簡單的視訊播放功能,但是功能較簡單。public class MainActivity extends Activity { private VideoView videoView; private MediaController mediaController; private Button button2, button3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); videoView = (VideoView) findViewById(R.id.videoView); mediaController = new MediaController(this); button2 = (Button) findViewById(R.id.button2); button3 = (Button) findViewById(R.id.button3); /** * 方式一 載入raw目錄下的視訊檔案 */ Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.pm); videoView.setVideoURI(uri); videoView.setMediaController(mediaController); // 讓 videoView 和 // mediaController 建立關聯 mediaController.setMediaPlayer(videoView); // 讓 mediaController 和 // videoView 建立關聯 videoView.requestFocus(); // 獲取焦點 videoView.start(); // 開始播放 button3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { videoView.setVisibility(View.VISIBLE); if (videoView.isPlaying()) { // 視訊正在播放 videoView.resume(); // 讓視訊重新播放的第1種方法 // videoView.seekTo(0); // 讓視訊重新播放的第2種方法 } else { // 視訊沒有開始播放 videoView.start(); } Toast.makeText(MainActivity.this, "開始播放按鈕被點選了", Toast.LENGTH_SHORT).show(); } }); // 該方法用來處理視訊播放完成以後的邏輯,比如隱藏視訊 videoView.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { videoView.setVisibility(View.INVISIBLE); // 讓視訊隱藏 } }); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { videoView.setVisibility(View.VISIBLE); videoView.start(); } }); /** * 方式二 載入sd卡下的視訊檔案 ( 不要忘記加上sd卡讀取的許可權 ) */ File video = new File("/mnt/sdcard/pm.mp4"); //得到視訊的路徑 videoView.setVideoPath(video.getAbsolutePath()); //設定視訊(絕對)路徑 videoView.setMediaController(mediaController); // 讓 videoView 和 mediaController 建立關聯 mediaController.setMediaPlayer(videoView); // 讓mediaController 和 videoView 建立關聯 videoView.requestFocus(); // 獲取焦點 videoView.start(); // 開始播放 }