首先在清单文件中添加权限(当然动态的权限也可以,看个人情况吧):
//读写SD卡
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//相机
<uses-permission android:name="android.permission.CAMERA" />
//录音机
<uses-permission android:name="android.permission.RECORD_AUDIO" />
XML布局中写一个surfaceview:
<SurfaceView
android:id="@+id/sur"
android:layout_width="match_parent"
android:layout_height="300dp"/>
创建mediaRecorde对象:
if (mediaRecorder==null){
mediaRecorder=new MediaRecorder();
}
重写出SurfaceHolder.Callback的三个方法:
在重写的surfaceCreated中:
//设置麦克风
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//设置摄像头
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
//设置旋转角度(感觉没啥用)
mediaRecorder.setOrientationHint(270);
//设置声道(双声道)
mediaRecorder.setAudioChannels(2);
//文件路径
File file = new File(Environment.getExternalStorageDirectory(),"a22.mp4");
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
//设置格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
//音频编码格式
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
//视频编码格式
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setPreviewDisplay(holder.getSurface());
//存储的路径
mediaRecorder.setOutputFile(file.getPath());
自己写个按钮的点击事件:
//准备
mediaRecorder.prepare();
//开始
mediaRecorder.start();
//停止
mediaRecorder.stop();