国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android多媒體之VideoView視頻播放器

2019-12-12 03:44:41
字體:
來源:轉載
供稿:網友

本文實例為大家分享了視頻播放器的兩種方式,供大家參考,具體內容如下

1)、SurfaceView
在布局文件中

<?xml version="1.0" encoding="utf-8"?><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);   }  } }}

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); }}

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 木兰县| 古田县| 大姚县| 禄劝| 精河县| 永安市| 开封县| 荔波县| 金寨县| 宜宾市| 格尔木市| 建瓯市| 常德市| 甘肃省| 定边县| 边坝县| 双牌县| 梅河口市| 阜平县| 蒲城县| 文登市| 高雄县| 周口市| 秀山| 新民市| 西峡县| 贵定县| 凤山县| 吉木乃县| 高碑店市| 苗栗县| 安达市| 七台河市| 微博| 陈巴尔虎旗| 新郑市| 乌拉特中旗| 清河县| 招远市| 册亨县| 庆阳市|