Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void StartRecordingVideo() {
- Initialize();
- recordingVideo = true;
- cameraManager = (CameraManager) this.getSystemService(Context.CAMERA_SERVICE);
- try {
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
- String[] cameraIDs = cameraManager.getCameraIdList();
- //LogAllCameraInfo();
- if (cameraIDs != null)
- {
- for(int x = 0; x < cameraIDs.length; x++)
- {
- Log.d(LOG_ID, "ID: " + cameraIDs[x]);
- }
- }
- cameraManager.openCamera(deviceCameraID, cameraStateCallback, handler);
- Log.d(LOG_ID, "Successfully opened camera");
- }
- else
- {
- throw new IllegalAccessException();
- }
- }
- catch (Exception e)
- {
- recordingVideo = false;
- Log.e(LOG_ID, "Error during record video start: " + e.getMessage());
- }
- }
- private void Initialize()
- {
- videoRecordThread = new HandlerThread("video_capture");
- videoRecordThread.start();
- handler = new Handler((videoRecordThread.getLooper()));
- try
- {
- vidRecorder = new MediaRecorder();
- vidRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
- vidRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
- vidRecorder.setVideoFrameRate(30);
- vidRecorder.setCaptureRate(30);
- vidRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
- vidRecorder.setVideoEncodingBitRate(10000000);
- vidRecorder.setVideoSize(1920, 1080);
- String videoFilename = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+ File.separator + System.currentTimeMillis() + ".mp4";
- vidRecorder.setOutputFile(videoFilename);
- Log.d(LOG_ID, "Starting video: " + videoFilename);
- vidRecorder.prepare();
- }
- catch (Exception e)
- {
- Log.e(LOG_ID, "Error during Initialize: " + e.getMessage());
- }
- }
- @Override
- public void onReady(CameraCaptureSession session) {
- Log.d(LOG_ID, "onReady: ");
- super.onReady(session);
- try {
- CaptureRequest.Builder builder = deviceCamera.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
- builder.addTarget(vidRecorder.getSurface());
- CaptureRequest request = builder.build();
- session.setRepeatingRequest(request, null, handler);
- vidRecorder.start();
- } catch (CameraAccessException e) {
- Log.d(LOG_ID, "Error on Ready: " + e.getMessage());
- }
- }
- @Override
- public void onSurfacePrepared(CameraCaptureSession session, Surface surface) {
- Log.d(LOG_ID, "onSurfacePrepared: ");
- super.onSurfacePrepared(session, surface);
- }
- @Override
- public void onOpened(CameraDevice camera) {
- Log.d(LOG_ID, "onOpened: ");
- deviceCamera = camera;
- try {
- camera.createCaptureSession(Arrays.asList(vidRecorder.getSurface()), recordSessionStateCallback, handler);
- } catch (CameraAccessException e) {
- Log.d(LOG_ID, "onOpened: " + e.getMessage());
- }
- }
Add Comment
Please, Sign In to add comment