Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 隨手記 videoview循環播放網絡視頻 和mediaplayer+sufaceview播放網絡視頻

android 隨手記 videoview循環播放網絡視頻 和mediaplayer+sufaceview播放網絡視頻

編輯:關於Android編程

1:videoview循環播放視頻     1》xml [html]   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"       xmlns:tools="http://schemas.android.com/tools"       android:layout_width="match_parent"       android:layout_height="match_parent"       tools:context=".MainActivity" >          <VideoView           android:id="@+id/vv_player"           android:layout_width="match_parent"           android:layout_height="match_parent"           android:layout_centerInParent="true"/>      </RelativeLayout>        2》java代碼     [html]   package com.example.testhour;      import android.annotation.SuppressLint;   import android.app.Activity;   import android.graphics.Bitmap;   import android.media.MediaMetadataRetriever;   import android.media.MediaPlayer;   import android.media.MediaPlayer.OnCompletionListener;   import android.media.MediaPlayer.OnPreparedListener;   import android.net.Uri;   import android.os.Bundle;   import android.os.Handler;   import android.view.Menu;   import android.view.SurfaceView;   import android.widget.MediaController;   import android.widget.VideoView;      public class MainActivity extends Activity {          private VideoView videoview;       private MediaController mMediaController;       private String url1 = "http://g3.letv.cn/24/6/3/letv-uts/2522145-AVC-1611234-AAC-122967-2076960-463162247-274c0504575322ddd3fbc512818de8ae-1366891476558.flv";       private String url2 = "http://g3.letv.cn/27/9/3/letv-uts/2522159-AVC-1610564-AAC-123276-2196960-489820604-1b165c6eec261a12e925f48f7ca35892-1366904195636.flv";       private String url = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov";              private SurfaceView surfaceview;       @Override       protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.activity_main2);           initview();           loadView2(url);       }          private void initview() {           videoview = (VideoView) findViewById(R.id.vv_player);              //      mMediaController = new MediaController(this);   //      videoview.setMediaController(mMediaController);       }                 public void loadView2(String path) {              Uri uri = Uri.parse(path);           videoview.setVideoURI(uri);           videoview.start();              videoview.setOnPreparedListener(new OnPreparedListener() {                  @Override               public void onPrepared(MediaPlayer mp) {                      mp.start();// 播放                   mp.setLooping(true);                                   }           });              videoview.setOnCompletionListener(new OnCompletionListener() {                  @Override               public void onCompletion(MediaPlayer mp) {                   android.util.Log.i("test", "播放完畢");                   Uri uri = Uri.parse(url);                   videoview.setVideoURI(uri);                   videoview.start();// 播放                  }           });          }          @Override       public boolean onCreateOptionsMenu(Menu menu) {           // Inflate the menu; this adds items to the action bar if it is present.           getMenuInflater().inflate(R.menu.activity_main, menu);           return true;       }          private Handler mHandler = new Handler() {           @SuppressLint("NewApi")           public void handleMessage(android.os.Message msg) {                  switch (msg.what) {                  case 33:                   loadView2(url2);                   break;                  }              };       };   }     2,mediaplayer+sufaceview播放視頻    1》xml          [html]   <?xml version="1.0" encoding="utf-8"?>   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"       android:layout_width="fill_parent"       android:layout_height="fill_parent"       android:orientation="vertical" >          <SurfaceView           android:id="@+id/surfaceView"           android:layout_width="fill_parent"           android:layout_height="500px" />          <LinearLayout           android:layout_width="fill_parent"           android:layout_height="wrap_content"           android:gravity="center_horizontal"           android:orientation="horizontal" >              <ImageButton               android:id="@+id/btnplay"               android:layout_width="wrap_content"               android:layout_height="wrap_content"                             android:src="@drawable/ic_launcher" />              <ImageButton               android:id="@+id/btnpause"               android:layout_width="wrap_content"               android:layout_height="wrap_content"                />              <ImageButton               android:id="@+id/btnstop"               android:layout_width="wrap_content"               android:layout_height="wrap_content"               />       </LinearLayout>      </LinearLayout>     2:java代碼      [html]   package com.example.testhour;      /*    import android.os.Bundle;    import android.app.Activity;    import android.view.Menu;    import android.view.MenuItem;    import android.support.v4.app.NavUtils;       public class MainActivity extends Activity {       @Override    public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    }       @Override    public boolean onCreateOptionsMenu(Menu menu) {    getMenuInflater().inflate(R.menu.activity_main, menu);    return true;    }          }*/   import android.app.Activity;   import android.media.AudioManager;   import android.media.MediaPlayer;   import android.net.Uri;   import android.os.Bundle;   import android.view.SurfaceHolder;   import android.view.SurfaceHolder.Callback;   import android.view.SurfaceView;   import android.view.View;   import android.view.View.OnClickListener;   import android.widget.Button;   import android.widget.ImageButton;   import android.widget.Toast;      public class MainActivity2 extends Activity implements OnClickListener {          private ImageButton btnplay, btnstop, btnpause;       private SurfaceView surfaceView;       private MediaPlayer mediaPlayer;       private int position;       private String url = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov";          public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.activity_main2);           btnplay = (ImageButton) this.findViewById(R.id.btnplay);           btnstop = (ImageButton) this.findViewById(R.id.btnstop);           btnpause = (ImageButton) this.findViewById(R.id.btnpause);              btnstop.setOnClickListener(this);           btnplay.setOnClickListener(this);           btnpause.setOnClickListener(this);              mediaPlayer = new MediaPlayer();           surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);              // 設置SurfaceView自己不管理的緩沖區           surfaceView.getHolder()                   .setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);           surfaceView.getHolder().addCallback(new Callback() {               @Override               public void surfaceDestroyed(SurfaceHolder holder) {                  }                  @Override               public void surfaceCreated(SurfaceHolder holder) {                   if (position > 0) {                       try {                           // 開始播放                              play();                              // 並直接從指定位置開始播放                           mediaPlayer.seekTo(position);                           position = 0;                       } catch (Exception e) {                           // TODO: handle exception                       }                   }                   System.out                           .println("surface create .............xxxxxxxxxxxxxxxx");                  }                  @Override               public void surfaceChanged(SurfaceHolder holder, int format,                       int width, int height) {                  }           });       }          @Override       public void onClick(View v) {           switch (v.getId()) {           case R.id.btnplay:               play();               break;              case R.id.btnpause:               if (mediaPlayer.isPlaying()) {                   mediaPlayer.pause();               } else {                   mediaPlayer.start();               }               break;              case R.id.btnstop:               if (mediaPlayer.isPlaying()) {                   mediaPlayer.stop();               }                  break;           default:               break;           }          }          @Override       protected void onPause() {           // 先判斷是否正在播放           if (mediaPlayer.isPlaying()) {               // 如果正在播放我們就先保存這個播放位置               position = mediaPlayer.getCurrentPosition();               mediaPlayer.stop();           }           super.onPause();       }          private void play() {           try {               mediaPlayer.reset();               mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);               // 設置需要播放的視頻                          Uri uri = Uri.parse(url);               mediaPlayer.setDataSource(getApplicationContext(), uri);               // 把視頻畫面輸出到SurfaceView               mediaPlayer.setDisplay(surfaceView.getHolder());               mediaPlayer.prepare();               // 播放               mediaPlayer.start();                              Toast.makeText(this, "開始播放!", Toast.LENGTH_LONG).show();           } catch (Exception e) {               // TODO: handle exception           }       }   }       最後  因為播放是網絡視頻 千萬不要忘了添加訪問網絡權限,  <uses-permission android:name="android.permission.INTERNET" />     <uses-permission android:name="android.permission.READ_PHONE_STATE" />     <uses-permission android:name="android.permission.READ_LOGS" />     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />     <uses-permission android:name="android.permission.WRITE_SETTINGS" />     <uses-permission android:name="android.permission.WAKE_LOCK" />      
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved