录像机和照相机的原理差不多,都是需要设置一系列参数具体看代码,添加权限等
简易的布局文件
android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/sv_surfaceView_video"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt_button_start"
android:text="开始"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt_button_stop"
android:text="停止"/>
简易的主要代码
public class MediaVideo extends AppCompatActivity {
private SurfaceView sv_surfaceView_video;
private Button bt_button_start;
private Button bt_button_stop;
private MediaRecorder mediaRecorder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_media_video);
sv_surfaceView_video = (SurfaceView) findViewById(R.id.sv_surfaceView_video);
bt_button_start = (Button) findViewById(R.id.bt_button_start);
bt_button_stop = (Button) findViewById(R.id.bt_button_stop);
//实例化媒体播放器
mediaRecorder = new MediaRecorder();
bt_button_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mediaRecorder.reset();
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//设置格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
//设置保存路径
mediaRecorder.setOutputFile("/mnt/sdcard/G150820_" + System.currentTimeMillis() + ".mp4");
mediaRecorder.setPreviewDisplay(sv_surfaceView_video.getHolder().getSurface());
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
});
bt_button_stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mediaRecorder != null) {
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder = null;
}
}
});
}
}
还要配置权限
<!-- 写入内存卡 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 打开相机的权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />