這篇文章將為大家詳細(xì)講解有關(guān)Android如何實(shí)現(xiàn)播放視頻,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)安順免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
一、通過intent的方式,調(diào)用系統(tǒng)自帶的播放器
Uri uri = Uri.parse("/storage/emulated/0/DCIM/Camera/20170521_200117.mp4"); //調(diào)用系統(tǒng)自帶的播放器 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(uri, "/storage/emulated/0/DCIM/Camera/20170521_200117.mp4"); startActivity(intent);
二、使用VideoView
布局文件
Activity
public class VideoPlayByVVActivity extends AppCompatActivity { private VideoView mVideoView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // requestWindowFeature(Window.FEATURE_NO_TITLE); //去掉 title // setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); //設(shè)置全屏 // getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); //設(shè)置屏幕常亮 setContentView(R.layout.activity_video_play_by_vv); mVideoView = (VideoView) findViewById(R.id.video_view); init(); } private void init() { String path = "/storage/emulated/0/DCIM/Camera/20170521_200117.mp4"; Uri uri = Uri.parse(path); mVideoView.setVideoPath(path); mVideoView.start(); mVideoView.requestFocus(); } }
三、MediaPlayer + SurfaceView
Activity
public class VideoPlayBySurActivity extends AppCompatActivity implements View.OnClickListener { private SurfaceView mSurfaceView; private MediaPlayer mMediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video_play_by_sur); mSurfaceView = (SurfaceView) findViewById(R.id.surface_view); findViewById(R.id.stop).setOnClickListener(this); findViewById(R.id.pasue).setOnClickListener(this); findViewById(R.id.play).setOnClickListener(this); init(); } private void init() { mMediaPlayer = new MediaPlayer(); mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { play(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { } }); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.stop: stop(); break; case R.id.play: if(!mMediaPlayer.isPlaying()){ play(); } break; case R.id.pasue: pasue(); break; } } public void stop(){ if(mMediaPlayer.isPlaying()){ mMediaPlayer.stop(); } } public void pasue(){ if(mMediaPlayer.isPlaying()){ mMediaPlayer.pause(); }else{ mMediaPlayer.start(); } } public void play(){ String path = "/storage/emulated/0/DCIM/Camera/20170521_200117.mp4"; try { mMediaPlayer.reset(); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //設(shè)置需要播放的視頻 mMediaPlayer.setDataSource(this, Uri.parse(path)); //把視頻畫面輸出到SurfaceView mMediaPlayer.setDisplay(mSurfaceView.getHolder()); mMediaPlayer.prepare(); mMediaPlayer.start(); } catch (IOException e) { e.printStackTrace(); } } }
四、 MediaPlayer + TextureView
Activity
public class VideoPlayByTextrueViewActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener, MediaPlayer.OnInfoListener, MediaPlayer.OnBufferingUpdateListener { private TextureView mTextureView; private ImageView mImageVideo; private Surface mSurface; private MediaPlayer mMediaPlayer; private static String path = "/storage/emulated/0/DCIM/Camera/20170521_200117.mp4"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video_play_by_textrue_view); mTextureView = (TextureView) findViewById(R.id.texture_view); mImageVideo = (ImageView) findViewById(R.id.video_image); init(); } private void init() { mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() { @Override public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) { mSurface = new Surface(surfaceTexture); Log.e("tag", "---- onSurfaceTextureAvailable"); play(); } @Override public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { Log.e("tag", "---- onSurfaceTextureSizeChanged"); } @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { mTextureView=null; mSurface=null; mMediaPlayer.stop(); mMediaPlayer.release(); return false; } @Override public void onSurfaceTextureUpdated(SurfaceTexture surface) { } }); } public void play(){ mMediaPlayer = new MediaPlayer(); try { mMediaPlayer.setDataSource(getApplicationContext(), Uri.parse(path)); mMediaPlayer.setSurface(mSurface); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setOnInfoListener(this); mMediaPlayer.setOnBufferingUpdateListener(this); mMediaPlayer.prepareAsync(); } catch (IOException e) { e.printStackTrace(); } } @Override public void onPrepared(MediaPlayer mp) { mImageVideo.setVisibility(View.GONE); mMediaPlayer.start(); } @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { return false; } @Override public void onBufferingUpdate(MediaPlayer mp, int percent) { } }
關(guān)于“Android如何實(shí)現(xiàn)播放視頻”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。