多媒体续

多媒体

音效池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()释放资源

你可能感兴趣的:(多媒体续)