package com.example.test318;
import java.io.IOException;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.graphics.Canvas;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.View;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.Toast;
public class SView extends Activity {
/**
* @path 本地播放的绝对路径
* @player 播放器
* @surface 播放舞台
* @surfaceHolder 播放通道
* @TAG 连续播放的标记
*/
private String path = "mnt/sdcard/Friend1.mp4";
private MediaPlayer player;
private SurfaceView surface;
private SurfaceHolder surfaceHolder;
private Button play, pause, stop;
private int TAG = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
/**
* 注:标题。全屏。横竖屏均可以在布局中静态注册
*/
requestWindowFeature(Window.FEATURE_NO_TITLE);// 设置无标题
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);// 强制为横屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏
setContentView(R.layout.activity_sufaceview);
play = (Button) findViewById(R.id.btn_player);
pause = (Button) findViewById(R.id.btn_pause);
stop = (Button) findViewById(R.id.btn_stop);
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (!player.isPlaying()) {
int msec = player.getCurrentPosition();
player.seekTo(msec);
player.start();
}
}
});
pause.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (player.isPlaying()) {
player.pause();
} else {
int msec = player.getCurrentPosition();
player.seekTo(msec);
player.start();
}
}
});
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
player.pause();
player.seekTo(0);
}
});
surface = (SurfaceView) findViewById(R.id.sV);
// surface.setMinimumHeight((int)
// (getWindowManager().getDefaultDisplay().getHeight()*0.8));
/**
* surfaceHolder的设置
*/
surfaceHolder = surface.getHolder();
surfaceHolder.setFixedSize(100, 100);
surfaceHolder.setType(surfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceHolder.addCallback(new Callback() {
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
play(TAG);
player.setOnCompletionListener(new OnCompletionListener() {//setOnCompletionListener判断结束的函数
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
Toast.makeText(SView.this, "第" + TAG + "段视频结束",
Toast.LENGTH_LONG).show();
// player.seekTo(0);
TAG++;
playNext(TAG);
/*
* if(TAG>7) { player.seekTo(0); }
*/
}
});
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
if (player.isPlaying()) {
player.stop();
}
player.release();
}
});
}
public String getPath(int tag) { //路径的获得
switch (tag) {
case 1:
path = "mnt/sdcard/Friend1.mp4";
break;
case 2:
path = "mnt/sdcard/Friend2.mp4";
break;
case 3:
path = "mnt/sdcard/Friend3.mp4";
break;
case 4:
path = "mnt/sdcard/Friend4.mp4";
break;
case 5:
path = "mnt/sdcard/Friend5.mp4";
break;
case 6:
path = "mnt/sdcard/Friend6.mp4";
break;
case 7:
path = "mnt/sdcard/Friend7.mp4";
break;
default:
return null;
}
return path;
}
public void play(int tag) { //播放函数
path = getPath(tag);
player = new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setDisplay(surfaceHolder);
try {
player.setDataSource(path);
player.prepare();
player.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void playNext(int tag) { //播放下一段视频的函数
player.reset();
path = getPath(tag);
player.setDisplay(surfaceHolder);
try {
player.setDataSource(path);
player.prepare();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
surfaceHolder.setFixedSize(player.getVideoWidth(),
player.getVideoHeight());
player.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Android里面使用MediaPlayer通过SurfaceView播放视频的示例
最新推荐文章于 2024-06-24 06:02:34 发布