1. 程式人生 > >安卓中使用VideoView來播放視訊

安卓中使用VideoView來播放視訊

今天寫了一個關於視訊播放的小程式,使用的是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(); // 開始播放

	}
通過以上程式碼就可以實現一個簡單的視訊播放功能,但是功能較簡單。