本文實(shí)例講述了Android編程實(shí)現(xiàn)播放視頻的方法。分享給大家供大家參考,具體如下:
創(chuàng)新互聯(lián)秉承實(shí)現(xiàn)全網(wǎng)價(jià)值營(yíng)銷的理念,以專業(yè)定制企業(yè)官網(wǎng),做網(wǎng)站、成都網(wǎng)站制作,微信平臺(tái)小程序開(kāi)發(fā),網(wǎng)頁(yè)設(shè)計(jì)制作,移動(dòng)網(wǎng)站建設(shè),全網(wǎng)營(yíng)銷推廣幫助傳統(tǒng)企業(yè)實(shí)現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級(jí)專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對(duì)客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長(zhǎng)。
播放視頻文件其實(shí)并不比播放音頻文件復(fù)雜,主要是使用 VideoView 類來(lái)實(shí)現(xiàn)的。這個(gè) 類將視頻的顯示和控制集于一身,使得我們僅僅借助它就可以完成一個(gè)簡(jiǎn)易的視頻播放器。 VideoView 的用法和 MediaPlayer 也比較類似,主要有以下常用方法:
方法名 | 功能描述 |
setVideoPath() | 設(shè)置要播放的視頻文件的位置。 |
start() | 開(kāi)始或繼續(xù)播放視頻。 |
pause() | 暫停播放視頻。 |
resume() | 將視頻重頭開(kāi)始播放。 |
seekTo() | 從指定的位置開(kāi)始播放視頻。 |
isPlaying() | 判斷當(dāng)前是否正在播放視頻。 |
getDuration() | 獲取載入的視頻文件的時(shí)長(zhǎng)。 |
那么我們還是通過(guò)一個(gè)實(shí)際的例子來(lái)學(xué)習(xí)一下吧,新建 PlayVideoTest 項(xiàng)目,然后修改activity_main.xml 中的代碼,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <VideoView android:id="@+id/video_view" android:layout_width="match_parent" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/play" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Play" /> <Button android:id="@+id/pause" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Pause" /> <Button android:id="@+id/replay" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Replay" /> </LinearLayout> </LinearLayout>
在這個(gè)布局文件中,首先是放置了一個(gè) VideoView,稍后的視頻就將在這里顯示。然后在 VideoView 的下面又放置了三個(gè)按鈕,分別用于控制視頻的播放、暫停和重新播放。 接下來(lái)修改 MainActivity 中的代碼,如下所示:
public class MainActivity extends Activity implements OnClickListener { private VideoView videoView; private Button play; private Button pause; private Button replay; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); play = (Button) findViewById(R.id.play); pause = (Button) findViewById(R.id.pause); replay = (Button) findViewById(R.id.replay); videoView = (VideoView) findViewById(R.id.video_view); play.setOnClickListener(this); pause.setOnClickListener(this); replay.setOnClickListener(this); initVideoPath(); } private void initVideoPath() { File file = new File(Environment.getExternalStorageDirectory(), "movie.3gp"); videoView.setVideoPath(file.getPath()); // 指定視頻文件的路徑 } @Override public void onClick(View v) { switch (v.getId()) { case R.id.play: if (!videoView.isPlaying()) { videoView.start(); // 開(kāi)始播放 } break; case R.id.pause: if (videoView.isPlaying()) { videoView.pause(); // 暫時(shí)播放 } break; case R.id.replay: if (videoView.isPlaying()) { videoView.resume(); // 重新播放 } break; } } @Override protected void onDestroy() { super.onDestroy(); if (videoView != null) { videoView.suspend(); } } }
這部分代碼相信你理解起來(lái)會(huì)很輕松,因?yàn)樗颓懊娌シ乓纛l的代碼非常類似。首先在 onCreate()
方法中仍然是去獲取一些控件的實(shí)例,然后調(diào)用了 initVideoPath()
方法來(lái)設(shè)置視頻 文件的路徑,這里我們需要事先在 SD 卡的根目錄下放置一個(gè)名為 movie.3gp 的視頻文件。 下面看一下各個(gè)按鈕的點(diǎn)擊事件中的代碼。當(dāng)點(diǎn)擊 Play 按鈕時(shí)會(huì)進(jìn)行判斷,如果當(dāng)前 并沒(méi)有正在播放音頻,則調(diào)用 start()
方法開(kāi)始播放。當(dāng)點(diǎn)擊 Pause 按鈕時(shí)會(huì)判斷,如果當(dāng)前 視頻正在播放,則調(diào)用 pause()
方法暫時(shí)播放。當(dāng)點(diǎn)擊 Replay 按鈕時(shí)會(huì)判斷,如果當(dāng)前視頻正在播放,則調(diào)用 resume()
方法重頭播放視頻。最后在 onDestroy()
方法中,我們還需要調(diào)用一下 suspend()
方法,將 VideoView 所占用的 資源釋放掉。
現(xiàn)在將程序運(yùn)行到手機(jī)上,然后點(diǎn)擊一下 Play 按鈕,就可以看到視頻已經(jīng)開(kāi)始播放了, 如下圖所示:
點(diǎn)擊 Pause 按鈕可以暫停視頻的播放,點(diǎn)擊 Replay 按鈕可以重頭播放視頻。 這樣的話,你就已經(jīng)將 VideoView 的基本用法掌握得差不多了。不過(guò),為什么它的用法
和 MediaPlayer 這么相似呢?其實(shí) VideoView 只是幫我們做了一個(gè)很好的封裝而已,它的背 后仍然是使用 MediaPlayer 來(lái)對(duì)視頻文件進(jìn)行控制的。另外需要注意,VideoView 并不是一 個(gè)萬(wàn)能的視頻播放工具類,它在視頻格式的支持以及播放效率方面都存在著較大的不足。所 以,如果想要僅僅使用 VideoView 就編寫出一個(gè)功能非常強(qiáng)大的視頻播放器是不太現(xiàn)實(shí)的。 但是如果只是用于播放一些游戲的片頭動(dòng)畫,或者某個(gè)應(yīng)用的視頻宣傳,使用 VideoView 還 是綽綽有余的。
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android開(kāi)發(fā)入門與進(jìn)階教程》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android數(shù)據(jù)庫(kù)操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
網(wǎng)站名稱:Android編程實(shí)現(xiàn)播放視頻的方法示例
鏈接分享:http://vcdvsql.cn/article16/gjsdgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、服務(wù)器托管、移動(dòng)網(wǎng)站建設(shè)、面包屑導(dǎo)航、網(wǎng)頁(yè)設(shè)計(jì)公司、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)