Android播放视频

  1. package com.example.test318;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import android.app.Activity;  
  6. import android.content.pm.ActivityInfo;  
  7. import android.graphics.Canvas;  
  8. import android.media.AudioManager;  
  9. import android.media.MediaPlayer;  
  10. import android.media.MediaPlayer.OnCompletionListener;  
  11. import android.os.Bundle;  
  12. import android.view.SurfaceHolder;  
  13. import android.view.View;  
  14. import android.view.SurfaceHolder.Callback;  
  15. import android.view.SurfaceView;  
  16. import android.view.View.OnClickListener;  
  17. import android.view.Window;  
  18. import android.view.WindowManager;  
  19. import android.widget.Button;  
  20. import android.widget.Toast;  
  21.   
  22. public class SView extends Activity {  
  23.     /** 
  24.      * @path 本地播放的绝对路径 
  25.      * @player 播放器 
  26.      * @surface 播放舞台 
  27.      * @surfaceHolder 播放通道 
  28.      * @TAG 连续播放的标记 
  29.      */  
  30.     private String path = "mnt/sdcard/Friend1.mp4";  
  31.     private MediaPlayer player;  
  32.     private SurfaceView surface;  
  33.     private SurfaceHolder surfaceHolder;  
  34.     private Button play, pause, stop;  
  35.     private int TAG = 1;  
  36.   
  37.     @Override  
  38.     protected void onCreate(Bundle savedInstanceState) {  
  39.         // TODO Auto-generated method stub  
  40.         super.onCreate(savedInstanceState);  
  41.         /** 
  42.          * 注:标题。全屏。横竖屏均可以在布局中静态注册 
  43.          */  
  44.         requestWindowFeature(Window.FEATURE_NO_TITLE);// 设置无标题  
  45.         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);// 强制为横屏  
  46.         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
  47.                 WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏  
  48.         setContentView(R.layout.activity_sufaceview);  
  49.         play = (Button) findViewById(R.id.btn_player);  
  50.         pause = (Button) findViewById(R.id.btn_pause);  
  51.         stop = (Button) findViewById(R.id.btn_stop);  
  52.         play.setOnClickListener(new OnClickListener() {  
  53.   
  54.             @Override  
  55.             public void onClick(View v) {  
  56.                 // TODO Auto-generated method stub  
  57.                 if (!player.isPlaying()) {  
  58.                     int msec = player.getCurrentPosition();  
  59.                     player.seekTo(msec);  
  60.                     player.start();  
  61.                 }  
  62.             }  
  63.         });  
  64.         pause.setOnClickListener(new OnClickListener() {  
  65.   
  66.             @Override  
  67.             public void onClick(View v) {  
  68.                 // TODO Auto-generated method stub  
  69.                 if (player.isPlaying()) {  
  70.                     player.pause();  
  71.                 } else {  
  72.                     int msec = player.getCurrentPosition();  
  73.                     player.seekTo(msec);  
  74.                     player.start();  
  75.                 }  
  76.             }  
  77.         });  
  78.         stop.setOnClickListener(new OnClickListener() {  
  79.   
  80.             @Override  
  81.             public void onClick(View v) {  
  82.                 // TODO Auto-generated method stub  
  83.                 player.pause();  
  84.                 player.seekTo(0);  
  85.             }  
  86.         });  
  87.         surface = (SurfaceView) findViewById(R.id.sV);  
  88.         // surface.setMinimumHeight((int)  
  89.         // (getWindowManager().getDefaultDisplay().getHeight()*0.8));  
  90.         /** 
  91.          * surfaceHolder的设置 
  92.          */  
  93.         surfaceHolder = surface.getHolder();  
  94.         surfaceHolder.setFixedSize(100100);  
  95.         surfaceHolder.setType(surfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  
  96.         surfaceHolder.addCallback(new Callback() {  
  97.             @Override  
  98.             public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2,  
  99.                     int arg3) {  
  100.                 // TODO Auto-generated method stub  
  101.             }  
  102.   
  103.             @Override  
  104.             public void surfaceCreated(SurfaceHolder holder) {  
  105.                 // TODO Auto-generated method stub  
  106.                 play(TAG);  
  107.                 player.setOnCompletionListener(new OnCompletionListener() {//setOnCompletionListener判断结束的函数  
  108.   
  109.                     @Override  
  110.                     public void onCompletion(MediaPlayer mp) {  
  111.                         // TODO Auto-generated method stub  
  112.                         Toast.makeText(SView.this"第" + TAG + "段视频结束",  
  113.                                 Toast.LENGTH_LONG).show();  
  114.                         // player.seekTo(0);  
  115.                         TAG++;  
  116.                         playNext(TAG);  
  117.                         /* 
  118.                          * if(TAG>7) { player.seekTo(0); } 
  119.                          */  
  120.                     }  
  121.                 });  
  122.             }  
  123.   
  124.             @Override  
  125.             public void surfaceDestroyed(SurfaceHolder holder) {  
  126.                 // TODO Auto-generated method stub  
  127.                 if (player.isPlaying()) {  
  128.                     player.stop();  
  129.                 }  
  130.                 player.release();  
  131.             }  
  132.        });  
  133.     }  
  134.   
  135.     public String getPath(int tag) {    //路径的获得  
  136.         switch (tag) {  
  137.         case 1:  
  138.   
  139.             path = "mnt/sdcard/Friend1.mp4";  
  140.             break;  
  141.         case 2:  
  142.             path = "mnt/sdcard/Friend2.mp4";  
  143.             break;  
  144.         case 3:  
  145.             path = "mnt/sdcard/Friend3.mp4";  
  146.             break;  
  147.         case 4:  
  148.             path = "mnt/sdcard/Friend4.mp4";  
  149.             break;  
  150.         case 5:  
  151.             path = "mnt/sdcard/Friend5.mp4";  
  152.             break;  
  153.         case 6:  
  154.             path = "mnt/sdcard/Friend6.mp4";  
  155.             break;  
  156.         case 7:  
  157.             path = "mnt/sdcard/Friend7.mp4";  
  158.             break;  
  159.         default:  
  160.             return null;  
  161.         }  
  162.         return path;  
  163.     }  
  164.   
  165.     public void play(int tag) {     //播放函数  
  166.         path = getPath(tag);  
  167.         player = new MediaPlayer();  
  168.         player.setAudioStreamType(AudioManager.STREAM_MUSIC);  
  169.         player.setDisplay(surfaceHolder);  
  170.         try {  
  171.             player.setDataSource(path);  
  172.             player.prepare();  
  173.             player.start();  
  174.         } catch (IllegalArgumentException e) {  
  175.             // TODO Auto-generated catch block  
  176.             e.printStackTrace();  
  177.         } catch (IllegalStateException e) {  
  178.             // TODO Auto-generated catch block  
  179.             e.printStackTrace();  
  180.         } catch (IOException e) {  
  181.             // TODO Auto-generated catch block  
  182.             e.printStackTrace();  
  183.         }  
  184.     }  
  185.   
  186.     public void playNext(int tag) {    //播放下一段视频的函数  
  187.         player.reset();  
  188.         path = getPath(tag);  
  189.         player.setDisplay(surfaceHolder);  
  190.         try {  
  191.             player.setDataSource(path);  
  192.             player.prepare();  
  193.             player.setAudioStreamType(AudioManager.STREAM_MUSIC);  
  194.             surfaceHolder.setFixedSize(player.getVideoWidth(),  
  195.                     player.getVideoHeight());  
  196.             player.start();  
  197.         } catch (IllegalArgumentException e) {  
  198.             // TODO Auto-generated catch block  
  199.             e.printStackTrace();  
  200.         } catch (IllegalStateException e) {  
  201.             // TODO Auto-generated catch block  
  202.             e.printStackTrace();  
  203.         } catch (IOException e) {  
  204.             // TODO Auto-generated catch block  
  205.             e.printStackTrace();  
  206.         }  
  207.     }  
  208. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值