中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android開發中利用VideoView實現一個多媒體視頻播放器

發布時間:2020-11-23 16:39:00 來源:億速云 閱讀:596 作者:Leah 欄目:移動開發

本篇文章給大家分享的是有關Android開發中利用VideoView實現一個多媒體視頻播放器,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

1)、SurfaceView

在布局文件中

<&#63;xml version="1.0" encoding="utf-8"&#63;>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_media_play"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 android:orientation="vertical"
 tools:context="com.zking.android_contentresolve.MediaPlayActivity">


 <SurfaceView
  android:layout_width="match_parent"
  android:layout_height="300dp"
  android:id="@+id/sv_media_surface"
  />



 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  >
  <SeekBar
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:id="@+id/seekBar"
   android:layout_weight="1" />

  <ImageButton
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src="@android:drawable/ic_media_play"
   android:onClick="isPlayOrPause"
   />
 </LinearLayout>
</LinearLayout>

在Activity里面和播放內存卡上音樂的代碼差不多,只是視頻多了個顯示內容,關鍵代碼就是這三條

//播放內存上的視頻
mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Movies/sister.mp4"));

//準備(內存卡)
mediaPlayer.prepare();

//將媒體播放器捕捉的畫面展示在SurfaceView 上
mediaPlayer.setDisplay(sv_media_surface.getHolder());

但是沒看前面博客的筒子可能會覺得看不懂,所以還是把完整的代碼粘貼出來

public class MediaPlayActivity extends AppCompatActivity {
 private SeekBar seekBar;
 private MediaPlayer mediaPlayer;
 private SurfaceView sv_media_surface;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_media_play);
  seekBar = (SeekBar) findViewById(R.id.seekBar);
  sv_media_surface = (SurfaceView) findViewById(R.id.sv_media_surface);

  seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
   @Override
   public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

   }

   @Override
   public void onStartTrackingTouch(SeekBar seekBar) {

   }

   @Override
   public void onStopTrackingTouch(SeekBar seekBar) {
    //獲取拖動結束后的位置
    int progress=seekBar.getProgress();
    //跳轉到某個位置播放
    mediaPlayer.seekTo(progress);
   }
  });
 }

 public void isPlayOrPause(View view){
  final ImageButton imageButton= (ImageButton) view;

  if(mediaPlayer==null){//代表第一次播放音樂

   //播放內存卡內的音頻
   mediaPlayer=new MediaPlayer();
   //設置類型
   mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
   //設置音源
   try {
    //播放內存上的視頻
    mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Movies/sister.mp4"));
    //準備(內存卡)
    mediaPlayer.prepare();

    //將媒體播放器捕捉的畫面展示在SurfaceView 上
    mediaPlayer.setDisplay(sv_media_surface.getHolder());

    //必須在播放前加載音頻文件(異步準備)
//    mediaPlayer.prepareAsync();

   } catch (IOException e) {
    e.printStackTrace();
   }

   mediaPlayer.start();
   //把圖標改成暫停的圖標(這里的暫停圖標就是播放時的狀態)
   imageButton.setImageResource(android.R.drawable.ic_media_pause);

   //獲取音樂的總時長
   int duration=mediaPlayer.getDuration();
   //設置進度條的最大值為音樂的總時長
   seekBar.setMax(duration);

   new MyThread();
  }else if(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{
  @Override
  public void run() {
   super.run();
   while(seekBar.getProgress()<seekBar.getMax()){
    //獲取當前音樂播放的位置
    int currentPosition=mediaPlayer.getCurrentPosition();
    //讓進度條跟著時間走
    seekBar.setProgress(currentPosition);

   }
  }
 }


}

Android開發中利用VideoView實現一個多媒體視頻播放器

2)、VideoView,如果在項目中,僅僅只是播放視頻的話,這種方式會比較簡單,但是如果是要做視頻播放器的話,還是使用第一種方法

布局文件

 <VideoView
  android:layout_width="match_parent"
  android:layout_height="300dp"
  android:id="@+id/vv_main_vedio"
  />

Activity

public class VedioActivity extends AppCompatActivity {

 private VideoView vv_main_vedio;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_vedio);
  vv_main_vedio = (VideoView) findViewById(R.id.vv_main_vedio);

  //給videoView設置播放來源
  vv_main_vedio.setVideoPath("file://mnt/sdcard/Movies/sister.mp4");

  //實例化媒體控制器
  MediaController mediaController=new MediaController(this);

  //給activity_vedio設置控制器
  vv_main_vedio.setMediaController(mediaController);

  mediaController.setMediaPlayer(vv_main_vedio);

 }
}

Android開發中利用VideoView實現一個多媒體視頻播放器

VideoView通過與MediaController類結合使用,開發者可以不用自己控制播放與暫停。

以上就是Android開發中利用VideoView實現一個多媒體視頻播放器,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东宁县| 沙洋县| 杭锦后旗| 澳门| 武穴市| 沂水县| 孝义市| 云和县| 赤城县| 广南县| 那坡县| 郎溪县| 桐乡市| 萨嘎县| 会昌县| 吉木乃县| 蒲江县| 自治县| 图木舒克市| 克东县| 施秉县| 信丰县| 固阳县| 枣阳市| 额敏县| 乌拉特中旗| 海宁市| 兴安盟| 全南县| 营口市| 交口县| 尉犁县| 子洲县| 丹巴县| 荣成市| 讷河市| 灵丘县| 友谊县| 淳安县| 岳普湖县| 孟州市|