Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android高級_視頻播放控件,android播放控件

Android高級_視頻播放控件,android播放控件

編輯:關於android開發

Android高級_視頻播放控件,android播放控件


一、Android系統自帶VideoView控件

       1. 創建步驟:

              (1)自帶視頻文件放入res/raw文件夾下;

              (2)聲明初始化VideoView控件;

              (3)創建視頻文件Uri路徑,Uri調用parse(),傳入(”android.resource://”+getPackageName()+”/”+R.raw.video)當前字符串獲取資源路徑;

              (4)為視頻控件設置播放路徑,VideoView對象調用setVideoURI(),傳入Uri對象;

              (5)開始播放,VideoView對象調用start();

       2. 重寫控件onMeasure(),設置VideoView的自定義寬高;MeasureSpec對象調用getSize()傳入widthMeasureSpec常量和heighMeasureSpec常量獲得屏幕寬度和高度,之後調用setMeasuredDimension(),傳入寬度和高度設置控件的寬度和高度;

       3. VideoView控制方法:

              start():從當前位置啟動視頻;

              pause():暫停視頻;

              isPlay():判斷當前視頻是否在播放;

              getDuration():獲得當前播放視頻的總時長(單位:毫秒);

              getCurrentPosition():獲得當前視頻播放時長(單位:毫秒);

       4. VideoView監聽事件:

              setOnPreparedListener():視頻准備監聽,傳入實現MediaPlayer.OnPreparedListener接口的對象,重寫onPrepared(),視頻准備播放之後調用此方法;

              setOnCompletionListener():視頻播放完成監聽,傳入實現MediaPlayer.OnCompletionListener接口的對象,重寫onCompleted(),在視頻播放完成之後調用此方法;

              setOnErrorListener():視頻播放錯誤監聽,傳入實現MediaPlayer.OnErrorListener接口的對象,重寫onError(),在視頻播放出錯時調用此方法;

              setOnTouchListener():觸摸監聽事件,傳入實現View.OnTouchListener接口的對象,重寫onTouch(),觸摸控件之後調用此方法;

                     注意:該方法之後如果返回false,則event.getAction()只能監聽到MotionEvent.ACTION_DOWN,無法監聽到MotionEvent.ACTION_UP事件;而只有返回true,可以將觸摸事件向下分發,才能監聽MotionEvent.ACTION_UP事件;

       5. VideoView與Seekbar結合的視頻播放控件效果:

              (1)初始化Seekbar和VideoView控件;

              (2)使用本地路徑創建Uri對象,Uri類調用靜態方法parse(),傳入資源路徑字符串常量,視頻保存路徑為res/raw文件夾下,則字符串常量值為:"android.resource://"+getPackageName()+"/" + R.raw.video_test;

              (3)關聯VideoView的Uri路徑,VideoView對象調用setVideoURI(),傳入Uri對象;

              (4)啟動VideoView播放視頻,VideoView調用start();

              (5)為控制布局中的播放暫停按鈕設置點擊監聽事件,傳入實現onClickListener接口的對象,重寫onClick(),在此方法內判斷VideoView控件的視頻是否播放,調用isPlaying(),如果正在播放,VideoView調用pause()暫停;否則VideoView調用start()開啟,之後獲取視頻當前播放進度和總時長,放入Handler對象的消息隊列中延時1000ms發送;

              (6)為VideoView控件設值視頻播放監聽事件,調用setOnPreparedListener(),在重寫的onPrepared()中獲取當前播放進度和總時長,放入消息隊列延遲1000ms發送;

              (7)為Seekbar控件進度條設值拉動監聽事件,調用setOnSeekBarChangeListener(),傳入實現SeekBar.OnSeekBarChangeListener()接口的對象,重寫onProgressChanged(),在該方法內判斷fromUser為true時為VideoView設置進度,調用seekTo()傳入用戶拖動進度;之後先清空消息,再重新發送總時長和播放進度消息;

              (8)為VideoView控件設置觸摸事件監聽,調用setOnTouchListener(),傳入實現OnTouchListener接口的對象,重寫onTouch(),在該方法內如果是按下事件,顯示底部導航,同時3000ms後發送消息通知,隱藏底部導航;

              (9)在消息處理事件中,先判斷消息類型,如果是控制進度條的消息,重新設置進度條,之後再次發送VideoView的當前播放時間和總時長;如果是隱藏控制欄的消息類型,則控制欄調用setVisibility(),傳入View.GONE;

 

二、Android系統底層SurfaceView控件

       1. SurfaceView與MediaPlayer結合使用,代替VideoView的原因:VideoView中自帶MediaPlayer,在ListView中的Item中多次使用之後會使系統內存過大;

       2. 使用步驟:

              (1)布局文件中創建SurfaceView控件,在Activity中聲明並初始化該控件;

              (2)聲明並實例化MediaPlayer對象;

              (3)獲取SurfaceHolder對象,用於改變SurfaceView的像素點,SurfaceView對象調用getHolder();

              (4)SurfaceHolder對象調用addCallback(),傳入實現SurfaceHolder.Callback接口的對象,重寫三個方法:

                     方法1:surfaceCreate():當SurfaceView創建時調用此方法,在此方法內開啟視頻播放;

                     方法2:surfaceChanged():SurfaceView在像素點發生改變時調用此方法;

                     方法3:surfaceDestroy():SurfaceView在銷毀之後調用此方法;

              (5)開啟視頻播放步驟:

                     (5-1)在視頻播放前重置MediaPlayer,MediaPlayer對象調用reset();

                     (5-2)獲取視頻地址,創建Uri對象,Uri類調用靜態方法parse(),傳入資源路徑,如“”android:resource://”+getPackageName()+”/”+R.raw.test”;

                     (5-3)改視頻播放器設置SurfaceHolder,MediaPlayer對象調用setDisplay(),傳入SurfaceHolder對象;

                     (5-4)關聯視頻播放地址,MediaPlayer對象調用setDataSource()傳入上下文對象和Uri對象;

                     (5-5)開啟異步准備視頻,MediaPlayer對象調用prepareAsync()即可;

              (6)為MediaPlayer設置准備完成監聽事件,MediaPlayer對象調用setOnPreparedListener(),傳入實現MediaPlayer.OnPreparedListener接口的對象,重寫onPrepared(),在該方法內傳入的形參MediaPlayer對象調用start();

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved