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

首頁(yè) > 系統(tǒng) > Android > 正文

Android編程實(shí)現(xiàn)播放視頻的方法示例

2019-12-12 02:21:27
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Android編程實(shí)現(xiàn)播放視頻的方法。分享給大家供大家參考,具體如下:

播放視頻文件其實(shí)并不比播放音頻文件復(fù)雜,主要是使用 VideoView 類(lèi)來(lái)實(shí)現(xiàn)的。這個(gè) 類(lèi)將視頻的顯示和控制集于一身,使得我們僅僅借助它就可以完成一個(gè)簡(jiǎn)易的視頻播放器。 VideoView 的用法和 MediaPlayer 也比較類(lèi)似,主要有以下常用方法:

方法名

功能描述

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;@Overrideprotected 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()); // 指定視頻文件的路徑}@Overridepublic 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;}}@Overrideprotected void onDestroy() {super.onDestroy();if (videoView != null) {videoView.suspend();}}}

這部分代碼相信你理解起來(lái)會(huì)很輕松,因?yàn)樗颓懊娌シ乓纛l的代碼非常類(lèi)似。首先在 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)能的視頻播放工具類(lèi),它在視頻格式的支持以及播放效率方面都存在著較大的不足。所 以,如果想要僅僅使用 VideoView 就編寫(xiě)出一個(gè)功能非常強(qiáng)大的視頻播放器是不太現(xiàn)實(shí)的。 但是如果只是用于播放一些游戲的片頭動(dòng)畫(huà),或者某個(gè)應(yīng)用的視頻宣傳,使用 VideoView 還 是綽綽有余的。

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android數(shù)據(jù)庫(kù)操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 徐水县| 永春县| 望谟县| 邳州市| 水富县| 南部县| 宜宾县| 邯郸市| 武威市| 墨江| 东莞市| 运城市| 龙门县| 石柱| 新巴尔虎左旗| 顺义区| 太湖县| 桓台县| 临桂县| 乐业县| 广丰县| 威海市| 乌拉特后旗| 平邑县| 宝应县| 五台县| 红原县| 张家港市| 日喀则市| 榆林市| 安塞县| 邳州市| 民权县| 高雄市| 郓城县| 大田县| 保德县| 深水埗区| 老河口市| 自贡市| 怀宁县|