多媒体
音效池SoundPool###
音效池可以放多个音乐
soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
第一个参数就是指定播放多少个音乐
通过int soundID=soundPool.load(this, R.raw.nudge, 1)
加载资源
官方建议将多个要加载的音乐放入map集合中
最后调用play()播放音乐
使用VideoView播放视频###
MediaController mediaController = new MediaController(this);
//设置音量,android提供的
videoView.setMediaController(mediaController);
videoView.setVideoPath("/sdcard/areyouok.3gp");
videoView.start();
surfaceView 处理渲染比较平凡的地方,底层做了一个子线程
SurfaceHolder
surfaceView.getHolder()得到对象;
Canvas canvas = surfaceHolder.lockCanvas();
Paint paint = new Paint();
paint.setColor(Color.BLUE)
canvas.drawArc(new RectF(50, 50, 600, 600), 0, i,
true, paint);
// 通知界面更新
surfaceHolder.unlockCanvasAndPost(canvas);
要知道surfaceview什么时候完全绘制完成的,如果将方法放在Activity的Oncreate方法中,则出错,因为surfaceView要等activity加载完成才会加载,所以就会报空指针。我们可以在surfaceView.getHolder().addCallback()方法中写;
使用MedioPlayer播放视频###
MedioPlayer和SurfaceView搭配使用,MedioPlayer控制音乐的音量,SurFaceView不停的渲染
mediaPlayer.setDisplay(surfaceView.getHolder());
关键代码
注意在这里要明白MediaPlayer的生命周期,要是暂停了,就不能直接跳转到prepare()状态,所以prepare()只能执行一次
MediaRecoder录制视频
- 创建对象
new MediaRecorder()
- 设置声音来源
setAudioSource(MediaRecorder.AudioSource.MIC)
- 设置输出格式
setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)
- 设置编码格式
setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)
- 设置文件输出位置
setOutputFile(path)
- 准备录制
prepare()
- 开始录制
start()
- 停止录制
stop()和relase()释放资源
网友评论