android 下的一段视屏播放的逻辑

android 下的一段视屏播放的逻辑只是Activity的一部分逻辑源码

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;

}

if(player != null && ">>".equals(bt_pause.getText())){

player.start();

bt_pause.setText("||");

return;

}

break;

case R.id.bt_restart:

if(player != null && player.isPlaying()){//媒体正在播放的话

player.seekTo(0);

}else{

Toast.makeText(DemoActivity.this,"需要重新博凡", Toast.LENGTH_SHORT).show();

}

break;

case R.id.bt_stop:

if(player != null && player.isPlaying()){//媒体正在播放的话

player.stop();//如果是停止播放一段媒体的话,肯定是要先停止,然后再释放资源

player.release();

player = null;

bt_start.setEnabled(true);//设置开始按钮为可点击

} else{

player.release();

player = null;

bt_start.setEnabled(true);//设置开始按钮为可点击

bt_start.setClickable(true);

}

break;

}

}

}

android 下的一段视屏播放的逻辑

时间: 2024-11-05 12:06:12

android 下的一段视屏播放的逻辑的相关文章

Android中使用SurfaceView+MediaPlayer+自定义的MediaController实现自定义的视屏播放器

效果图如下: (PS本来是要给大家穿gif动态图的,无奈太大了,没法上传) 功能实现:暂停,播放,快进,快退,全屏,退出全屏,等基本功能 实现的思路: 在主布局中放置一个SurfaceView,在SurfaceView中放置一个MediaPlayer ,在其下方自定义一个MediaController,不过也不能称之为MediaController,使用的是PupupWindow来实现的,在PupupWindow布局中放置几个textView,Button,最重要的使我们的SeekBar控件,创

h5-自定义视屏播放器

1.html代码 1 <h3 class="playerTitle">视屏播放器</h3> 2 <div class="player"> 3 <video src="../mp4/chrome.mp4"></video> 4 <div class="controls"> 5 <!--比如这里的开始和暂停图标就是font-awesome.css文件中的

Android之针对WebView的全屏播放

转载请标明转载处:http://bbs.csdn.net/topics/390839259 本人刚学android,菜鸟一个,第一次写帖子,最近因为项目要用webview加载html5的视频,开始不能全屏播,做了很久才做出来!那按我的理解说下怎么实现全屏吧.首先写布局文件activity_main.xml: XML/HTML code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <LinearLayout

第八章 多媒体音视屏播放

<!-- 读取外部储存(sdcard)权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> ===============================音频的播放====================================== MediaPlayer类:可以处理音频,和视频. MediaPlayer mp = new MediaPlayer

优酷,迅雷视屏播放接口

优酷:优酷的视频播放器接口连接为:http://open.youku.com/tools/ 里面已经有教详细的说明了.在这里也做一些说明吧:导入js文件: 1 <script type="text/javascript" src="http://player.youku.com/jsapi"> 调用: 1 <script type="text/javascript"> 2 player = new YKU.Player('

视屏播放

-(void)playMovie:(NSString *)fileName{ //视频文件路径 NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"mp4"]; //视频URL NSURL *url = [NSURL fileURLWithPath:path]; //视频播放对象 MPMoviePlayerController *movie = [[MPMoviePlayerControll

Android下免Root权限截屏

/** * 返回的 bitmap就是屏幕的内容 */ private static Bitmap takeScreenShot(Activity activity) { View view = activity.getWindow().getDecorView(); // Enables or disables the drawing cache view.setDrawingCacheEnabled(true); // will draw the view in a bitmap view.b

实验6 在应用程序中播放音频和视屏

实验报告 课程名称 基于Android平台移动互联网开发 实验日期 4.15 实验项目名称 在应用程序中播放音频和视屏 实验地点 S3010 实验类型 □验证型    √设计型    □综合型 学  时 1学时 一.实验目的及要求(本实验所涉及并要求掌握的知识点) 实现在应用程序中处理音频和视频 实现播放音频,音频播放控制 实现播放视屏,视屏播放控制 使用service服务播放项目原文件的音乐 二.实验环境(本实验所使用的硬件设备和相关软件) (1)PC机 (2)操作系统:Windows XP

使用videoview连续自动播放网络视屏

需求:网络请求接口,实现自动依次播放视频 1:xml布局文件 <VideoView android:id="@+id/video" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" /> 2.MainActivity页面,开启线程请求视屏接口 线程请求接口