视频:
SurfaceView surfaceView; //SurfaceView控件,用于显示视频画面
SurfaceHolder surfaceHolder; //SurfaceView的对象surfaceView的getHolder()方法获得SurfaceHolder的对象surfaceHolder
//我们对这个surfaceHolder对象进行设置
surfaceHolder.setFixedSize(320, 220); //显示的分辨率,不设置为视频默认
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); //设置surfaceview不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前
surfaceHolder.addCallback(new SurceCallBack()); //对surface对象的状态进行监听
//这个SurceCallBack()的形参是一个类,这个类实现了SurfaceHolder.Callback接口,即要实现它的surfaceChanged、surfaceCreated、surfaceDestroyed方法
//关于这个SurfaceView 控件的对象surfaceView设置完毕后,接下来就是设置media源了,我们先声明一个MediaPlayer 对象mediaPlayer
MediaPlayer mediaPlayer; //MediaPlayer类的对象
//下面设置流类型、加载surfaceHolder、设置播放源
File file=new File(Environment.getExternalStorageDirectory(),filename); //filename如"vedio.mp4"
//File file = new File(Environment.getExternalStorageDirectory().getCanonicalPath() + filePath); // filePath如"/vedio.mp4"
mediaPlayer.reset();//重置为初始状态
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //设置音乐流的类型
mediaPlayer.setDisplay(surfaceHolder); //设置video影片以surfaceviewholder播放
mediaPlayer.setDataSource(file.getAbsolutePath()); //设置路径
mediaPlayer.prepare(); //缓冲
mediaPlayer.start(); //播放
//MediaPlayer对象的其他方法
mediaPlayer.pause(); //暂停
mediaPlayer.stop(); //停止
mediaPlayer.release(); //释放资源
mediaPlayer..seekTo(prosition); //跳到指定位置
mediaPlayer..getCurrentPosition(); //获取播放的位置
//MediaPlayer静态方法
MediaPlayer.create(Context context, Uri uri);
音频:
音频很简单
也是用到MediaPlayer这个类实例一个对象
可以用new MediaPlayer()生成对象再setDataSource方法设置播放源
也可以直接用静态方法MediaPlayer.create(Context context, Uri uri)生成MediaPlayer对象,在形参中指明调用的Context和播放源Uri
这里的Uri可以Uri静态方法parse一个File对象的getAbsolutePath()方法素获得的路径字符串获得(或者直接parse一个代表绝对路径地址的字符串),也可以是APP下注册的资源,即R文件下注册的资源。