一、VideoView方法
十多年的惠農(nóng)網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營(yíng)銷網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整惠農(nóng)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“惠農(nóng)網(wǎng)站設(shè)計(jì)”,“惠農(nóng)網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
1.activity_video.xml
2.代碼
package com.example.vediotest; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.pm.ActivityInfo; import android.view.Menu; import android.view.Window; import android.view.WindowManager; import android.widget.MediaController; import android.widget.VideoView; public class VideoActivity extends Activity { private VideoView videoView; private Uri mUri; private int mPositionWhenPaused; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);// 設(shè)置成全屏模式 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);// 強(qiáng)制為橫屏 setContentView(R.layout.activity_video); String url = "http://videofile.xxxx.cn/Upload/Video/File/20140411/201404110228168972.mp4"; // String url = // "http://player.youku.com/player.php/sid/XNDYwOTEzNzQ4/v.swf"; mUri = Uri.parse(url); videoView = (VideoView) findViewById(R.id.video_videoView); MediaController mediaController = new MediaController(this); videoView.setMediaController(mediaController); // videoView.setVideoPath("/sdcard/xyx.3gp"); // videoView.setVideoURI(mUri); // videoView.requestFocus(); // videoView.start(); } public void onStart() { // Play Video videoView.setVideoURI(mUri); videoView.start(); super.onStart(); } public void onPause() { // Stop video when the activity is pause. mPositionWhenPaused = videoView.getCurrentPosition(); videoView.stopPlayback(); super.onPause(); } public void onResume() { // Resume video player if (mPositionWhenPaused >= 0) { videoView.seekTo(mPositionWhenPaused); mPositionWhenPaused = -1; } super.onResume(); } public boolean onError(MediaPlayer player, int arg1, int arg2) { return false; } public void onCompletion(MediaPlayer mp) { this.finish(); } }
二、surfaceView方法
(一)
1.activity_video_surface.xml
2.代碼
package com.example.vediotest; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.MediaPlayer.OnBufferingUpdateListener; import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnPreparedListener; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.SurfaceHolder; import android.view.SurfaceHolder.Callback; import android.view.SurfaceView; public class SurfaceVideoActivity extends Activity implements Callback, OnBufferingUpdateListener, OnCompletionListener, OnPreparedListener { private int width = 0; private int height = 0; private MediaPlayer mMediaPlayer = null; private SurfaceView mSurfaceView = null; private SurfaceHolder holder = null; private String path = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video_surface); mSurfaceView = (SurfaceView) this.findViewById(R.id.surfaceVideo_surfaceView); holder = mSurfaceView.getHolder(); holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);// 設(shè)置風(fēng)格 } public void playVedio() { try { path = android.os.Environment.getExternalStorageDirectory() + "/moto_0012.3gp"; mMediaPlayer = new MediaPlayer(); // mMediaPlayer.setDataSource(path); String url = "http://videofile.housebox.cn/Upload/Video/File/20140411/201404110228168972.mp4"; // String url = "http://player.youku.com/player.php/sid/XNDYwOTEzNzQ4/v.swf"; mMediaPlayer.setDataSource(this, Uri.parse(url)); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mMediaPlayer.setDisplay(holder); mMediaPlayer.prepare();// 準(zhǔn)備 Log.e("TAG-Duration", mMediaPlayer.getDuration() + ""); mMediaPlayer.setOnBufferingUpdateListener(this); mMediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnPreparedListener(this); } catch (Exception ex) { } } public void onBufferingUpdate(MediaPlayer mp, int percent) { // TODO Auto-generated method stub Log.i("TAG-onBufferingUpdate", percent + "|" + mMediaPlayer.getCurrentPosition()); } public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub Log.i("TAG-onCompletion", "Completion"); } public void onPrepared(MediaPlayer mp) { // TODO Auto-generated method stub width = mMediaPlayer.getVideoWidth(); height = mMediaPlayer.getVideoHeight(); if (width != 0 && height != 0) { holder.setFixedSize(width, height);// 設(shè)置視頻高寬 mMediaPlayer.start(); Log.i("TAG-Duration2", mMediaPlayer.getDuration() + ""); } } public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub playVedio(); } public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub Log.i("TAG-surfaceDestroyed", "surfaceDestroyed"); } @Override protected void onPause() { super.onPause(); if (mMediaPlayer != null) { if (mMediaPlayer.isPlaying()) { mMediaPlayer.stop(); } mMediaPlayer.reset(); mMediaPlayer.release(); mMediaPlayer = null; } } }
(二)
activity_video_surface2.xml
2.代碼
package com.example.vediotest; import java.io.IOException; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.MediaPlayer.OnBufferingUpdateListener; import android.media.MediaPlayer.OnCompletionListener; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.pm.ActivityInfo; import android.util.Log; import android.view.Menu; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.Window; public class SurfaceVideo2Activity extends Activity implements OnBufferingUpdateListener, OnCompletionListener, MediaPlayer.OnPreparedListener, SurfaceHolder.Callback { private MediaPlayer mediaPlayer; private SurfaceView surfaceView; private SurfaceHolder surfaceHolder; private int videoWidth; private int videoHeight; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_video_surface2); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);// 強(qiáng)制為橫屏 this.surfaceView = (SurfaceView) this.findViewById(R.id.surface2_surfaceView); this.surfaceHolder = this.surfaceView.getHolder(); this.surfaceHolder.addCallback(this); this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); Log.v("cat", ">>>create ok."); } private void playVideo() throws IllegalArgumentException, IllegalStateException, IOException { String url = "http://videofile.housebox.cn/Upload/Video/File/20140411/201404110228168972.mp4"; // String url = "http://player.youku.com/player.php/sid/XNDYwOTEzNzQ4/v.swf"; this.mediaPlayer = new MediaPlayer(); // this.mediaPlayer.setDataSource("/sdcard/daoxiang.3gp"); this.mediaPlayer.setDataSource(this, Uri.parse(url)); this.mediaPlayer.setDisplay(this.surfaceHolder); this.mediaPlayer.prepare(); this.mediaPlayer.setOnBufferingUpdateListener(this); this.mediaPlayer.setOnPreparedListener(this); this.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); Log.i("mplayer", ">>>play video"); } @Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { Log.i("cat", ">>>surface changed"); } @Override public void surfaceCreated(SurfaceHolder holder) { try { this.playVideo(); } catch (Exception e) { Log.i("cat", ">>>error", e); } Log.i("cat", ">>>surface created"); } @Override public void surfaceDestroyed(SurfaceHolder holder) { Log.v("mplayer", ">>>surface destroyed"); } @Override public void onCompletion(MediaPlayer arg0) { // TODO Auto-generated method stub } @Override public void onBufferingUpdate(MediaPlayer mp, int percent) { // TODO Auto-generated method stub } @Override public void onPrepared(MediaPlayer arg0) { this.videoWidth = this.mediaPlayer.getVideoWidth(); this.videoHeight = this.mediaPlayer.getVideoHeight(); if (this.videoHeight != 0 && this.videoWidth != 0) { this.surfaceHolder.setFixedSize(this.videoWidth, this.videoHeight); this.mediaPlayer.start(); } } @Override protected void onDestroy() { super.onDestroy(); if (this.mediaPlayer != null) { this.mediaPlayer.release(); this.mediaPlayer = null; } } }
參考資料:
1.http://blog.csdn.net/cynhafa/article/details/6400050
2.http://aina-hk55hk.iteye.com/blog/706060