Android多媒体---SurfaceView(播放视频)+Mediaplayer(音频)

来源:互联网 发布:mac版本炒股软件 编辑:程序博客网 时间:2024/05/16 07:25

前几天做了一个基于Mediaplayer的音频播放app过程还没整理好就没上传,这两天抽空整理下上传。
这一篇是Mediaplayer和Surfaceview的简单配合使用,Mediaplayer只能播放音频没有提供图像输出界面,需要用到Surfaceview显示Mediaplayer播放的图像输出,这个组件自带一个线程,需要Read权限。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>

步骤:
1)创建Mediaplayer对象并加载指定视频文件。
2)布局文件中定义Surfaceview或者在程序中创建,并为SurfaceHolder添加CallBack监听(以后再讲)
3)调用Mediaplayer的对象的setDisplay(SurfaceHolder sh)将锁播放的视频图像输出到指定的surfaceView组件
4)调用Mediaplayer的start()/stop()、pause()控制播放
Surfaceview布局:

<SurfaceViewandroid:id="@+id/surfaceview"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/>

在按钮操作中调用如下代码,实现音频视频同步播放

mBtn_start.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (player==null){//防止太多对象吃内存player=new MediaPlayer();        }player.reset();try {player.setDataSource(Environment.getExternalStorageDirectory()+"/123.mp4");player.setAudioStreamType(AudioManager.STREAM_MUSIC);//播放类型(外放还是听筒)player.setDisplay(surfaceView.getHolder());//设置视频播播放位置player.prepare();player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {                    mp.start();                }            });        } catch (IOException e) {            e.printStackTrace();        }    }});
0 0
原创粉丝点击