public void stopRecording() throws IOException { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { throw new UnsupportedOperationException("Video recording supported only on API Level 11+"); } MediaRecorder tempRecorder = recorder; recorder = null; tempRecorder.stop(); tempRecorder.release(); camera.reconnect(); startPreview(); }
private void setCameraDisplayOrientation() { CameraInfo info = new CameraInfo(); int rotation = getActivity().getWindowManager().getDefaultDisplay().getRotation(); int degrees = 0; DisplayMetrics dm = new DisplayMetrics(); Camera.getCameraInfo(cameraId, info); getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); switch (rotation) { case Surface.ROTATION_0: degrees = 0; break; case Surface.ROTATION_90: degrees = 90; break; case Surface.ROTATION_180: degrees = 180; break; case Surface.ROTATION_270: degrees = 270; break; } if (info.facing == CameraInfo.CAMERA_FACING_FRONT) { displayOrientation = (info.orientation + degrees) % 360; displayOrientation = (360 - displayOrientation) % 360; } else { displayOrientation = (info.orientation - degrees + 360) % 360; } boolean wasInPreview = inPreview; if (inPreview) { stopPreview(); } camera.setDisplayOrientation(displayOrientation); if (wasInPreview) { startPreview(); } }
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public void initPreview(int w, int h, boolean firstRun) { if (camera != null) { Camera.Parameters parameters = camera.getParameters(); parameters.setPreviewSize(previewSize.width, previewSize.height); // Since we are doing stills only! /* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { parameters.setRecordingHint(getHost().getRecordingHint() != CameraHost.RecordingHint.STILL_ONLY); } */ requestLayout(); camera.setParameters(getHost().adjustPreviewParameters(parameters)); startPreview(); } }
public void restartPreview() { if (!inPreview) { startPreview(); } }