package
com.example.administrator.videotest;
import
android.content.Context;
import
android.content.pm.ActivityInfo;
import
android.hardware.Camera;
import
android.media.MediaRecorder;
import
android.os.Environment;
import
android.support.v7.app.AppCompatActivity;
import
android.os.Bundle;
import
android.view.SurfaceHolder;
import
android.widget.VideoView;
import
java.io.File;
import
java.io.IOException;
public
class
MainActivity
extends
AppCompatActivity
implements
SurfaceHolder.Callback {
static
Context ctx;
String Path = Environment.getExternalStorageDirectory() +
"/txtbox/cameratest.mp4"
;
private
MediaRecorder mRecoder =
null
;
private
VideoView mVideoView =
null
;
private
Camera mCamera;
private
static
final
int
RECORD_TIME =
10000
;
@Override
public
void
surfaceCreated(SurfaceHolder holder) {
try
{
mCamera = Camera.open();
mCamera.setDisplayOrientation(
90
);
mCamera.setPreviewDisplay(holder);
}
catch
(IOException e) {
e.printStackTrace();
}
}
@Override
public
void
surfaceChanged(SurfaceHolder holder,
int
format,
int
width,
int
height) {
if
(mCamera !=
null
) {
mCamera.startPreview();
}
}
@Override
public
void
surfaceDestroyed(SurfaceHolder holder) {
if
(mCamera !=
null
) {
mCamera.stopPreview();
mCamera =
null
;
}
}
private
void
beginRecording(SurfaceHolder holder) {
if
(mRecoder !=
null
) {
mRecoder.stop();
mRecoder.release();
mRecoder =
null
;
}
File videofile =
new
File(Path);
if
(videofile.exists()) {
videofile.delete();
}
if
(mCamera !=
null
) {
mCamera.stopPreview();
mCamera.release();
mCamera =
null
;
}
try
{
mRecoder =
new
MediaRecorder();
mRecoder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mRecoder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecoder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecoder.setVideoFrameRate(
25
);
mRecoder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mRecoder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecoder.setMaxDuration(RECORD_TIME);
mRecoder.setPreviewDisplay(holder.getSurface());
mRecoder.setOutputFile(Path);
mRecoder.prepare();
mRecoder.start();
}
catch
(IOException e) {
e.printStackTrace();
}
}
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
mVideoView = (VideoView) findViewById(R.id.videoView);
final
SurfaceHolder mHolder = mVideoView.getHolder();
mHolder.addCallback(
this
);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
beginRecording(mVideoView.getHolder());
}
}