设为首页 加入收藏

TOP

Android 下的一段视屏播放的逻辑源码(一)
2014-11-23 22:06:56 来源: 作者: 【 】 浏览:37
Tags:Android 视屏 播放 逻辑 源码

DemoActivity:


public class DemoActivity extends Activity implements OnClickListener {

EditText et_path;
Button bt_start;
Button bt_pause;
Button bt_restart;
Button bt_stop;
SurfaceView sv;
SurfaceHolder holder;
MediaPlayer player;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

et_path = (EditText) this.findViewById(R.id.et_path);
bt_start = (Button) this.findViewById(R.id.bt_start);
bt_pause = (Button) this.findViewById(R.id.bt_pause);
bt_restart = (Button) this.findViewById(R.id.bt_restart);
bt_stop = (Button) this.findViewById(R.id.bt_stop);
sv = (SurfaceView) this.findViewById(R.id.sv);

bt_start.setOnClickListener(this);
bt_pause.setOnClickListener(this);
bt_restart.setOnClickListener(this);
bt_stop.setOnClickListener(this);

holder = sv.getHolder();

// 设置缓冲区的内容向holder推送的方式
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
holder.addCallback(new MyHolderCallback());

}

/**
* surface的声明周期
* @author Administrator
*
*/
private class MyHolderCallback implements SurfaceHolder.Callback{

@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub

}

@Override
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub

}

@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub

}

}

@Override
public void onClick(View v) {
String path = et_path.getText().toString().trim();

switch(v.getId()){
case R.id.bt_start:
player = new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setDisplay(holder);
if("".equals(path)){//如果输入的链接为空的话
Toast.makeText(this, "文件为空,请输入文件的链接", Toast.LENGTH_SHORT).show();
return;
}
try {
player.setDataSource(path);
player.prepare();
} catch (Exception e) {
Toast.makeText(this, "文件访问出错", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}

player.setOnCompletionListener(new OnCompletionListener(){//当媒体播放是否完成的监听器

@Override
public void onCompletion(MediaPlayer mp) {
Toast.makeText(DemoActivity.this, "播放完成", 0).show();
player.release();//播放完成的时候,要释放资源
player = null;
bt_start.setEnabled(true);
}

});

player.setOnErrorListener(new OnErrorListener(){

@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Toast.makeText(DemoActivity.this, "播放完成出现错误", 0).show();
player.release();//出现错误的时候要释放资源
player = null;
bt_start.setEnabled(true);
return false;
}

});

player.start();

bt_start.setEnabled(false);
break;
case R.id.bt_pause:
if(player != null && player.isPlaying()){//如果媒体正在播放的话
player.pause();
bt_pause.setText(">>");
return;
}

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android APP 登陆模块 下一篇Linux 程序设计学习笔记----动手..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: