本篇文章給大家分享的是有關(guān)Android開發(fā)中利用VideoView實(shí)現(xiàn)一個(gè)多媒體視頻播放器,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、武勝網(wǎng)絡(luò)推廣、小程序設(shè)計(jì)、武勝網(wǎng)絡(luò)營(yíng)銷、武勝企業(yè)策劃、武勝品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供武勝建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:jinyejixie.com
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里面和播放內(nèi)存卡上音樂的代碼差不多,只是視頻多了個(gè)顯示內(nèi)容,關(guān)鍵代碼就是這三條
//播放內(nèi)存上的視頻 mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Movies/sister.mp4")); //準(zhǔn)備(內(nèi)存卡) mediaPlayer.prepare(); //將媒體播放器捕捉的畫面展示在SurfaceView 上 mediaPlayer.setDisplay(sv_media_surface.getHolder());
但是沒看前面博客的筒子可能會(huì)覺得看不懂,所以還是把完整的代碼粘貼出來
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) { //獲取拖動(dòng)結(jié)束后的位置 int progress=seekBar.getProgress(); //跳轉(zhuǎn)到某個(gè)位置播放 mediaPlayer.seekTo(progress); } }); } public void isPlayOrPause(View view){ final ImageButton imageButton= (ImageButton) view; if(mediaPlayer==null){//代表第一次播放音樂 //播放內(nèi)存卡內(nèi)的音頻 mediaPlayer=new MediaPlayer(); //設(shè)置類型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //設(shè)置音源 try { //播放內(nèi)存上的視頻 mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Movies/sister.mp4")); //準(zhǔn)備(內(nèi)存卡) mediaPlayer.prepare(); //將媒體播放器捕捉的畫面展示在SurfaceView 上 mediaPlayer.setDisplay(sv_media_surface.getHolder()); //必須在播放前加載音頻文件(異步準(zhǔn)備) // mediaPlayer.prepareAsync(); } catch (IOException e) { e.printStackTrace(); } mediaPlayer.start(); //把圖標(biāo)改成暫停的圖標(biāo)(這里的暫停圖標(biāo)就是播放時(shí)的狀態(tài)) imageButton.setImageResource(android.R.drawable.ic_media_pause); //獲取音樂的總時(shí)長(zhǎng) int duration=mediaPlayer.getDuration(); //設(shè)置進(jìn)度條的最大值為音樂的總時(shí)長(zhǎng) seekBar.setMax(duration); new MyThread(); }else if(mediaPlayer.isPlaying()){//正在播放音樂 mediaPlayer.pause(); //把圖標(biāo)改成播放的圖標(biāo)(暫停狀態(tài)) 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()){ //獲取當(dāng)前音樂播放的位置 int currentPosition=mediaPlayer.getCurrentPosition(); //讓進(jìn)度條跟著時(shí)間走 seekBar.setProgress(currentPosition); } } } }
2)、VideoView,如果在項(xiàng)目中,僅僅只是播放視頻的話,這種方式會(huì)比較簡(jiǎn)單,但是如果是要做視頻播放器的話,還是使用第一種方法
布局文件
<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設(shè)置播放來源 vv_main_vedio.setVideoPath("file://mnt/sdcard/Movies/sister.mp4"); //實(shí)例化媒體控制器 MediaController mediaController=new MediaController(this); //給activity_vedio設(shè)置控制器 vv_main_vedio.setMediaController(mediaController); mediaController.setMediaPlayer(vv_main_vedio); } }
VideoView通過與MediaController類結(jié)合使用,開發(fā)者可以不用自己控制播放與暫停。
以上就是Android開發(fā)中利用VideoView實(shí)現(xiàn)一個(gè)多媒體視頻播放器,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁名稱:Android開發(fā)中利用VideoView實(shí)現(xiàn)一個(gè)多媒體視頻播放器
本文鏈接:http://jinyejixie.com/article10/jojjgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、網(wǎng)站營(yíng)銷、動(dòng)態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作、網(wǎng)站改版、ChatGPT
聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)