1. 程式人生 > >Android兩種播放視訊的方法(SurfaceView、MediaPlayer、SeekBar)和(VideoView、MediaController)等兩種方法。

Android兩種播放視訊的方法(SurfaceView、MediaPlayer、SeekBar)和(VideoView、MediaController)等兩種方法。


package com.example.android_playmusic;import android.media.MediaPlayer;import android.net.Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.SurfaceView;import android.view.View;import android.widget.ImageButton;import android.widget.SeekBar;import
java.io.IOException;publicclassMainActivityextends AppCompatActivity {private SeekBar seekbar; private MediaPlayer mediaPlayer; private SurfaceView sfv_movie_surface; @OverrideprotectedvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_movies); seekbar= (SeekBar) findViewById(R.id.); sfv_movie_surface = (SurfaceView) findViewById(R.id.sfv_movie_surface);
//給進度條設定滑動監聽 seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @OverridepublicvoidonProgressChanged(SeekBar seekBar, int i, boolean b) { } @OverridepublicvoidonStartTrackingTouch(SeekBar seekBar) { } @OverridepublicvoidonStopTrackingTouch(SeekBar seekBar) { int progress = seekBar.getProgress();
//在當前位置播放 mediaPlayer.seekTo(progress); } }); } publicvoidplaymusic(View view) { final ImageButton imageButton = (ImageButton) view; if (mediaPlayer == null) { //01.播放記憶體中的音訊//mediaPlayer = MediaPlayer.create(this, R.raw.f);//播放記憶體卡中檔案 mediaPlayer = new MediaPlayer(); try { mediaPlayer.setDataSource(this,Uri.parse("file://mnt/sdcard/storage/emulated/0/12.mp4"));//準備 mediaPlayer.prepare(); } catch (IOException e) { e.printStackTrace(); } //把捕捉到的畫面放到SurfaceView mediaPlayer.setDisplay(sfv_movie_surface.getHolder()); mediaPlayer.start();imageButton.setImageResource(android.R.drawable.ic_media_pause);//獲取音樂的總時長int duration = mediaPlayer.getDuration(); //將進度條設定最大值為:音樂的總時長 seekbar.setMax(duration); //啟動執行緒new MyThread().start(); } elseif (mediaPlayer.isPlaying()) { mediaPlayer.pause(); imageButton.setImageResource(android.R.drawable.ic_media_play); }else { mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); } }//啟動執行緒的一個方法 class MyThread extends Thread { @Overridepublicvoidrun() { super.run();while (seekbar.getProgress() <= seekbar.getMax()) { //獲取音樂當前播放的位置int position = mediaPlayer.getCurrentPosition(); seekbar.setProgress(position); } } }}