视频自动循环播放

上代码:

布局文件:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
     <SurfaceView 
        android:id="@+id/surfaceView1"
        android:layout_width="match_parent" 
        android:layout_height="match_parent"/>
     
</FrameLayout>

private View view;
	private MediaPlayer player;
	private SurfaceView surface;
	private SurfaceHolder surfaceHolder;
	private int index = 0;
	private List<String>ADList;


播放视屏:
public void playVideo(){
		try {
			//获取视频列表
			ADList=FileOperator.GetFilePath(PlatformAttribute.getFilePrefix()+ "adpackage");
		} catch (FalconmeException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		surface=(SurfaceView)view.findViewById(R.id.surfaceView1);
        surfaceHolder=surface.getHolder();  //SurfaceHolder是SurfaceView的控制接口
        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  //设置surfaceview不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前
        
        surfaceHolder.addCallback(new Callback() {		
			@Override
			public void surfaceDestroyed(SurfaceHolder holder) {
				if(player!=null&&player.isPlaying()){         //关闭释放资源
					stop();
				}
				
			}			
			@Override
			public void surfaceCreated(SurfaceHolder holder) {
				start();
			}			
			@Override
			public void surfaceChanged(SurfaceHolder holder, int format, int width,
					int height) {				
			}
		});
	}

开始:
public void start(){
		player=new MediaPlayer();
        player.setAudioStreamType(AudioManager.STREAM_MUSIC);  //加载声音
        player.setDisplay(surfaceHolder);
        //设置显示视频显示在SurfaceView上
            try {
                player.setDataSource(ADList.get(index));
                player.prepare();  //准备
                player.start();
                player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        			@Override
        			public void onCompletion(MediaPlayer arg0) {
        				// TODO Auto-generated method stub
        				try {
        					index+=1;
        					if(index==ADList.size()){
        						index=0;
        					}
        					stop();
        					start();
        				}  catch (Exception e) {
        					// TODO Auto-generated catch block
        					e.printStackTrace();
        				}
        			}
        		});
                
            } catch (Exception e) {
                e.printStackTrace();
            }
	}

停止:
public void stop(){
		player.pause();
		player.stop();
		player.release();
	    
		player = null;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值