/** * Execute a new capture request within the active session */ private void TriggerImageCapture() { try { CaptureRequest.Builder captureBuilder = _cameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture); captureBuilder.AddTarget(mImageReader.Surface); captureBuilder.Set(CaptureRequest.ControlAeMode, new Integer((int)ControlAEMode.On)); Log.Debug(TAG, "Capture request created."); _captureSession.Capture(captureBuilder.Build(), new CameraCaptureCallback(this), null); } catch (CameraAccessException) { Log.Error(TAG, "Cannot trigger a capture request"); } }
private void updateFlashMode(int flashMode, CaptureRequest.Builder builder) { //switch (flashMode) //{ // case 1: // builder.Set(flashMode,FlashMode.Torch); // break; // case 0: // builder.Set(CaptureRequest.FLASH_MODE, FlashMode.Off); // break; // case 2: // default: // builder.Set(CaptureRequest.FLASH_MODE, FlashMode.Single); // break; //} }
/// <summary> /// Starts the camera previe /// </summary> public void StartPreview() { if (_cameraDevice != null && _cameraTexture.IsAvailable && _previewSize != null) { try { var texture = _cameraTexture.SurfaceTexture; // We configure the size of the default buffer to be the size of the camera preview we want texture.SetDefaultBufferSize(_previewSize.Width, _previewSize.Height); // This is the output Surface we need to start the preview Surface surface = new Surface(texture); // We set up a CaptureRequest.Builder with the output Surface _previewBuilder = _cameraDevice.CreateCaptureRequest(CameraTemplate.Preview); _previewBuilder.AddTarget(surface); // Here, we create a CameraCaptureSession for camera preview. _cameraDevice.CreateCaptureSession(new List <Surface>() { surface }, new CameraCaptureStateListener() { OnConfigureFailedAction = (CameraCaptureSession session) => { }, OnConfiguredAction = (CameraCaptureSession session) => { _previewSession = session; UpdatePreview(); } }, null); } catch (Java.Lang.Exception error) { _log.WriteLineTime(_tag + "\n" + "TakePhoto() Failed to start preview \n " + "ErrorMessage: \n" + error.Message + "\n" + "Stacktrace: \n " + error.StackTrace); } } }
public void CreateCameraPreviewSession() { try { SurfaceTexture texture = mTextureView.SurfaceTexture; if (texture == null) { throw new IllegalStateException("texture is null"); } // We configure the size of default buffer to be the size of camera preview we want. texture.SetDefaultBufferSize(mPreviewSize.Width, mPreviewSize.Height); // This is the output Surface we need to start preview. Surface surface = new Surface(texture); Activity.RunOnUiThread(new Runnable(() => { DisplayMetrics displayMetrics = new DisplayMetrics(); Activity.WindowManager.DefaultDisplay.GetMetrics(displayMetrics); int height = displayMetrics.HeightPixels; int width = displayMetrics.WidthPixels; roi.Left = 0; roi.Top = 0; roi.Right = width; roi.Bottom = height; })); ChangeScale(); ChangeRoi(); // We set up a CaptureRequest.Builder with the output Surface. mPreviewRequestBuilder = mCameraDevice.CreateCaptureRequest(CameraTemplate.Preview); mPreviewRequestBuilder.AddTarget(surface); // Here, we create a CameraCaptureSession for camera preview. List <Surface> surfaces = new List <Surface>(); surfaces.Add(surface); surfaces.Add(mImageReader.Surface); mCameraDevice.CreateCaptureSession(surfaces, new CameraCaptureSessionCallback(this), null); } catch (CameraAccessException e) { e.PrintStackTrace(); } }
//public override void OnCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) //{ // //if (_isReady) // // TakePicture(); //} private void TakePicture() { //_isReady = false; if (_stillImageListener.IsBusy) { return; } CaptureRequest.Builder captureRequest = _session.Device.CreateCaptureRequest(CameraTemplate.StillCapture); captureRequest.Set(CaptureRequest.ControlAfMode, (int)ControlAFMode.ContinuousPicture); captureRequest.Set(CaptureRequest.JpegOrientation, 90); captureRequest.AddTarget(_reader.Surface); CaptureRequest stillImageRequest = captureRequest.Build(); _session.Capture(stillImageRequest, _emptyCaptureCallback, new Handler(message => { })); }
private void CreateCaptureSession() { //SurfaceTexture texture = _textureView.SurfaceTexture; //エラーになる //バッファのサイズをプレビューサイズに設定(画面サイズ等適当な値を入れる) _surfaceTexture.SetDefaultBufferSize(_previewSize.Width, _previewSize.Height); Surface surface = new Surface(_surfaceTexture); List <Surface> list = new List <Surface>(); list.Add(surface); list.Add(_recorder.Surface); CaptureRequest.Builder captureRequest = _cameraDevice.CreateCaptureRequest(CameraTemplate.Record); captureRequest.AddTarget(surface); captureRequest.AddTarget(_recorder.Surface); _captureRequest = captureRequest.Build(); _cameraDevice.CreateCaptureSession(list, new CameraCaputureSessionCallBack(_captureRequest), null); }
private void CreateCameraPreview() { SurfaceTexture surfaceTexture = TextureView.SurfaceTexture; surfaceTexture.SetDefaultBufferSize(_imageDimension.Width, _imageDimension.Height); var surface = new Surface(surfaceTexture); CaptureRequest.Builder requestBuilder = _cameraDevice.CreateCaptureRequest(CameraTemplate.Preview); requestBuilder.AddTarget(surface); _cameraDevice.CreateCaptureSession(new[] { surface }, new CameraPreviewStateCallback(_cameraDevice, requestBuilder, _backgroundHandler), null); }
//function, this will be responsible for starting the camera stream through the TextureView public void StartPreview() { if (cameraDevice != null && _cameraTexture.IsAvailable && _previewSize != null) { try { var texture = _cameraTexture.SurfaceTexture; texture.SetDefaultBufferSize(_previewSize.Width, _previewSize.Height); Surface surface = new Surface(texture); _previewBuilder = cameraDevice.CreateCaptureRequest(CameraTemplate.Preview); _previewBuilder.AddTarget(surface); // Here, we create a CameraCaptureSession for camera preview. cameraDevice.CreateCaptureSession(new List <Surface>() { surface }, new CameraCaptureStateListener() { OnConfigureFailedAction = (CameraCaptureSession session) => { }, OnConfiguredAction = (CameraCaptureSession session) => { _previewSession = session; UpdatePreview(); } }, null); } catch (Java.Lang.Exception error) { System.Diagnostics.Debug.WriteLine($"{error.Message} {error.StackTrace}"); // _log.WriteLineTime(_tag + "\n" + // "TakePhoto() Failed to start preview \n " + // "ErrorMessage: \n" + // error.Message + "\n" + // "Stacktrace: \n " + // error.StackTrace); } } }
private void StartRecordingVideo() { try { closePreviewSession(); SetUpMediaRecorder(); SurfaceTexture texture = textureView.SurfaceTexture; //Assert.IsNotNull(texture); //texture.SetDefaultBufferSize(previewSize.Width, previewSize.Height); previewBuilder = cameraDevice.CreateCaptureRequest(CameraTemplate.Record); var surfaces = new List <Surface>(); var previewSurface = new Surface(texture); surfaces.Add(previewSurface); previewBuilder.AddTarget(previewSurface); if (flashon) { previewBuilder.Set(CaptureRequest.FlashMode, (int)FlashMode.Torch); } Rect sensor_rect = max; int left = sensor_rect.Width() / 2; int right = left; int top = sensor_rect.Height() / 2; int bottom = top; int hwidth = (int)(sensor_rect.Width() / (2.0 * zoomlev)); int hheight = (int)(sensor_rect.Height() / (2.0 * zoomlev)); left -= hwidth; right += hwidth; top -= hheight; bottom += hheight; previewBuilder.Set(CaptureRequest.ScalerCropRegion, new Rect(left, top, right, bottom)); var recorderSurface = mediaRecorder.Surface; surfaces.Add(recorderSurface); previewBuilder.AddTarget(recorderSurface); mPreviewSession = new PreviewCaptureStateCallback(this, true); cameraDevice.CreateCaptureSession(surfaces, mPreviewSession, backgroundHandler); } catch (IllegalStateException e) { e.PrintStackTrace(); } }
public void StartPreview() { if (ActiveCameraDevice == null || !textureView.IsAvailable || previewSize == null) { return; } try { SurfaceTexture texture = textureView.SurfaceTexture; texture.SetDefaultBufferSize(previewSize.Width, previewSize.Height); Surface surface = new Surface(texture); previewBuilder = ActiveCameraDevice.CreateCaptureRequest(CameraTemplate.Preview); previewBuilder.AddTarget(surface); ActiveCameraDevice.CreateCaptureSession(new List <Surface> { surface }, new CameraCaptureSessionStateCallback(this) { OnConfigureFailedAction = session => { if (Context != null) { Toast.MakeText(Context, "Failed", ToastLength.Short).Show(); } }, OnConfiguredAction = session => { ActiveCaptureSession = session; UpdatePreview(); } }, null); } catch (CameraAccessException ex) { Log.WriteLine(LogPriority.Info, "Camera2BasicFragment", ex.StackTrace); } }
private void OnPreviewSessionConfigured(CameraCaptureSession session) { captureSession = session; previewRequestBuilder = cameraDevice.CreateCaptureRequest(CameraTemplate.Preview); previewRequestBuilder.AddTarget(previewSurface); var availableAutoFocusModes = (int[])characteristics.Get(CameraCharacteristics.ControlAfAvailableModes); if (availableAutoFocusModes.Any(afMode => afMode == (int)ControlAFMode.ContinuousPicture)) { previewRequestBuilder.Set(CaptureRequest.ControlAfMode, (int)ControlAFMode.ContinuousPicture); } SetAutoFlash(previewRequestBuilder); previewRequest = previewRequestBuilder.Build(); captureSession.SetRepeatingRequest(previewRequest, cameraCaptureCallback, backgroundHandler); }
public void CreateCameraPreview() { SurfaceTexture texture = cameraPreview.SurfaceTexture; if (texture == null) { throw new CameraViewException("Failed to get the surface texture"); } var bufferSize = GetBufferSize(new Vector <int, int>((int)Element.Width, (int)Element.Height)); //texture.SetDefaultBufferSize(bufferSize.X, bufferSize.Y); Surface surface = new Surface(texture); CaptureRequestBuilder = CameraDevice.CreateCaptureRequest(CameraTemplate.Preview); CaptureRequestBuilder.AddTarget(surface); CameraDevice.CreateCaptureSession(new System.Collections.Generic.List <Surface>() { surface }, cameraCaptureSessionStateCallback, null); }
/// <summary> /// Starts the camera previe /// </summary> public void StartPreview() { if (_cameraDevice != null && _cameraTexture.IsAvailable && _previewSize != null) { try { var texture = _cameraTexture.SurfaceTexture; System.Diagnostics.Debug.Assert(texture != null); // We configure the size of the default buffer to be the size of the camera preview we want texture.SetDefaultBufferSize(_previewSize.Width, _previewSize.Height); // This is the output Surface we need to start the preview Surface surface = new Surface(texture); // We set up a CaptureRequest.Builder with the output Surface _previewBuilder = _cameraDevice.CreateCaptureRequest(CameraTemplate.Preview); _previewBuilder.AddTarget(surface); // Here, we create a CameraCaptureSession for camera preview. _cameraDevice.CreateCaptureSession(new List <Surface>() { surface }, new CameraCaptureStateListener() { OnConfigureFailedAction = (CameraCaptureSession session) => { }, OnConfiguredAction = (CameraCaptureSession session) => { _previewSession = session; UpdatePreview(); } }, null); } catch (Java.Lang.Exception error) { Log.WriteLine(LogPriority.Error, error.Source, error.Message); } } }
public void TakePhoto() { if (_context == null || CameraDevice == null) { return; } if (_captureBuilder == null) { _captureBuilder = CameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture); } _captureBuilder.AddTarget(_imageReader.Surface); _captureBuilder.Set(CaptureRequest.ControlAfMode, (int)ControlAFMode.ContinuousPicture); SetAutoFlash(_captureBuilder); var windowManager = _context.GetSystemService(Context.WindowService).JavaCast <IWindowManager>(); int rotation = (int)windowManager.DefaultDisplay.Rotation; int orientation = GetOrientation(rotation); _captureBuilder.Set(CaptureRequest.JpegOrientation, orientation); _previewSession.StopRepeating(); _previewSession.AbortCaptures(); _previewSession.Capture(_captureBuilder.Build(), new CameraCaptureStillPictureSessionCallback { OnCaptureCompletedAction = session => { UnlockFocus(); } }, null); // Play shutter sound to alert user that image was captured var am = (AudioManager)_context.GetSystemService(Context.AudioService); if (am != null && am.RingerMode == RingerMode.Normal) { var cameraSound = new MediaActionSound(); cameraSound.Load(MediaActionSoundType.ShutterClick); cameraSound.Play(MediaActionSoundType.ShutterClick); } }
//Start the camera preview public void startPreview() { if (null == camera_device || !texture_view.IsAvailable || null == preview_size) { return; } try { SurfaceTexture texture = texture_view.SurfaceTexture; //Assert.IsNotNull(texture); texture.SetDefaultBufferSize(preview_size.Width, preview_size.Height); preview_builder = camera_device.CreateCaptureRequest(CameraTemplate.Preview); Surface surface = new Surface(texture); var surfaces = new List <Surface>(); surfaces.Add(surface); preview_builder.AddTarget(surface); camera_device.CreateCaptureSession(surfaces, new PreviewCaptureStateListener(this), null); } catch (CameraAccessException e) { e.PrintStackTrace(); } }
public void StartPreview() { if (cameraDevice != null && autoFitTextureView.IsAvailable && previewSize != null) { try { var texture = autoFitTextureView.SurfaceTexture; System.Diagnostics.Debug.Assert(texture != null); texture.SetDefaultBufferSize(previewSize.Width, previewSize.Height); var surface = new Surface(texture); captureRequestBuilder = cameraDevice.CreateCaptureRequest(CameraTemplate.Preview); captureRequestBuilder.AddTarget(surface); cameraDevice.CreateCaptureSession(new List <Surface>() { surface }, new CameraCaptureStateListener() { OnConfigureFailedAction = (CameraCaptureSession session) => { }, OnConfiguredAction = (CameraCaptureSession session) => { cameraCaptureSession = session; UpdatePreview(); } }, null); } catch (Java.Lang.Exception error) { ShowToastMessage("Failed to start preview"); DebugMessage("ErrorMessage: \n" + error.Message + "\n" + "Stacktrace: \n " + error.StackTrace); } } }
// Creates a new {@link CameraCaptureSession} for camera preview. public void CreateCameraPreviewSession() { try { if (mTextureView.IsAvailable) { SurfaceTexture texture = mTextureView.SurfaceTexture; if (texture == null) { throw new IllegalStateException("texture is null"); } // We configure the size of default buffer to be the size of camera preview we want. texture.SetDefaultBufferSize(mPreviewSize.Width, mPreviewSize.Height); // This is the output Surface we need to start preview. mSurface = new Surface(texture); // We set up a CaptureRequest.Builder with the output Surface. mPreviewRequestBuilder = mCameraDevice.CreateCaptureRequest(CameraTemplate.Preview); DisableFlash(mPreviewRequestBuilder); mPreviewRequestBuilder.AddTarget(mSurface); // Here, we create a CameraCaptureSession for camera preview. List <Surface> surfaces = new List <Surface>(); surfaces.Add(mSurface); surfaces.Add(mImageReader.Surface); mCameraDevice.CreateCaptureSession(surfaces, new CameraCaptureSessionCallback(this), null); } else { //throw new IllegalStateException("texture not available"); } } catch (CameraAccessException e) { e.PrintStackTrace(); } }
// 拍照session private void captureStillPicture() { try { if (null == context || null == cameraDevice) { return; } CaptureRequest.Builder captureBuilder = cameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture); //captureBuilder.Set(CaptureRequest.ControlAfMode, // CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); captureBuilder.Set(CaptureRequest.JpegOrientation, getOrientation(orientation)); updateFlashMode(this.flashMode, captureBuilder); // CameraCaptureSession.CaptureCallback captureCallback = // new CameraCaptureSession.CaptureCallback() // { // public void onCaptureCompleted(@NonNull CameraCaptureSession session, // @NonNull CaptureRequest request, // @NonNull TotalCaptureResult result) // { // unlockFocus(); // } //}; //// 停止预览 //captureSession.stopRepeating(); //captureSession.capture(captureBuilder.build(), captureCallback, backgroundHandler); //state = STATE_PICTURE_TAKEN; } catch (CameraAccessException e) { e.PrintStackTrace(); } }
public void StartPreview() { if (CameraDevice == null || !_cameraTexture.IsAvailable || _previewSize == null) { return; } var texture = _cameraTexture.SurfaceTexture; texture.SetDefaultBufferSize(_previewSize.Width, _previewSize.Height); var surface = new Surface(texture); _previewBuilder = CameraDevice.CreateCaptureRequest(CameraTemplate.Preview); _previewBuilder.AddTarget(surface); System.Diagnostics.Debug.WriteLine("Openning camera preview : " + _previewSize.Width + "x" + _previewSize.Height); List <Surface> surfaces = new List <Surface>(); surfaces.Add(surface); surfaces.Add(_imageReader.Surface); // Here, we create a CameraCaptureSession for camera preview CameraDevice.CreateCaptureSession(surfaces, new CameraCaptureStateListener { OnConfigureFailedAction = session => { System.Diagnostics.Debug.WriteLine("Failed."); }, OnConfiguredAction = session => { _previewSession = session; UpdatePreview(); } }, _backgroundHandler); }
public void setFlash(CaptureRequest.Builder CaptureRequestBuilder) { if (mFlashSupported) { switch (mFlashMode) { case FLASH_OFF: CaptureRequestBuilder.Set(CaptureRequest.ControlAeMode, (int)ControlAEMode.On); CaptureRequestBuilder.Set(CaptureRequest.FlashMode, (int)Android.Hardware.Camera2.FlashMode.Off); break; case FLASH_ON: CaptureRequestBuilder.Set(CaptureRequest.ControlAeMode, (int)ControlAEMode.On); CaptureRequestBuilder.Set(CaptureRequest.FlashMode, (int)Android.Hardware.Camera2.FlashMode.Single); break; case FLASH_AUTO: CaptureRequestBuilder.Set(CaptureRequest.ControlAeMode, (int)ControlAEMode.OnAutoFlash); break; } } }
/// <summary> /// Start preview /// </summary> public void StartPreview() { if (mSurfaceTexture == null) { Log.Debug(TAG, "mSurfaceTexture is null!"); return; } Log.Debug(TAG, "StartPreview!"); mSurfaceTexture.SetDefaultBufferSize(mPreviewSize.Width, mPreviewSize.Height); if (mCameraDevice == null) { Log.Debug(TAG, "mCameraDevice is null!"); return; } try { mCaptureRequestBuilder = mCameraDevice.CreateCaptureRequest(CameraTemplate.Preview); List <Surface> surfaces = new List <Surface>(); if (mPreViewSurface != null) { surfaces.Add(mPreViewSurface); } if (mVgaSurface != null) { surfaces.Add(mVgaSurface); } if (mDepthSurface != null) { surfaces.Add(mDepthSurface); } CaptureSession(surfaces); } catch (CameraAccessException e) { Log.Debug(TAG, "StartPreview error"); } }
//create a repeat capture private void createCapture(List <Surface> surfaces, FlashMode flashMode, bool repeat, CaptureRequest.Builder builder) { if (mDevice == null) { return; } //Config the flash if (SupportFlash()) { builder.Set(CaptureRequest.FlashMode, (int)flashMode); } //Set the zoom builder.Set(CaptureRequest.ScalerCropRegion, getRectZoom(mCameraManager, mZoom, _id)); //Set party mode builder.Set(CaptureRequest.ControlSceneMode, (int)ControlSceneMode.Hdr); builder.Set(CaptureRequest.ControlEffectMode, (int)_selEffect); //Add the targets to the builder foreach (var surface in surfaces) { builder.AddTarget(surface); } mCaptureBuilder = builder; if (repeat) { mDevice.CreateCaptureSession(surfaces, mCaptureSessionStateCallBack, mHandler); } else { mDevice.CreateCaptureSession(surfaces, mSingleCaptureSessionStateCallBack, mHandler); } }
// Capture a still picture. This method should be called when we get a response in // {@link #mCaptureCallback} from both {@link #lockFocus()}. public void CaptureStillPicture() { try { var activity = Activity; if (null == activity || null == mCameraDevice) { return; } // This is the CaptureRequest.Builder that we use to take a picture. if (stillCaptureBuilder == null) { stillCaptureBuilder = mCameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture); } stillCaptureBuilder.AddTarget(mImageReader.Surface); // Use the same AE and AF modes as the preview. stillCaptureBuilder.Set(CaptureRequest.ControlAfMode, (int)ControlAFMode.ContinuousPicture); SetAutoFlash(stillCaptureBuilder); // Orientation //int rotation = (int)activity.WindowManager.DefaultDisplay.Rotation; int rotation = (int)SurfaceOrientation.Rotation90; stillCaptureBuilder.Set(CaptureRequest.JpegOrientation, GetOrientation(rotation)); mCaptureSession.StopRepeating(); mCaptureSession.Capture(stillCaptureBuilder.Build(), new CameraCaptureStillPictureSessionCallback(this), null); } catch (CameraAccessException e) { e.PrintStackTrace(); } }
private void TriggerImageCapture() { try { CaptureRequest.Builder captureBuilder = CameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture); captureBuilder.AddTarget(this.mImageReader.Surface); captureBuilder.Set(CaptureRequest.ControlAeMode, new Integer((int)ControlAEMode.On)); //captureBuilder.set(CaptureRequest.ControlAwbMode, CaptureRequest.CONTROL_AWB_MODE_AUTO); Log.Debug(TAG, "Capture request created."); this.CaptureSession.Capture(captureBuilder.Build(), new CameraCaptureListener() { OnCaptureCompletedAction = (CameraCaptureSession session) => { session.Close(); CaptureSession = null; Log.Debug(TAG, "CaptureSession closed"); } }, null); } catch (CameraAccessException cae) { Log.Debug(TAG, "camera capture exception"); } }
/// <summary> /// Starts preview before recording video. /// </summary> public void StartPreviewForVideo() { if (null == mCameraDevice || !mTextureView.IsAvailable || null == mPreviewSize) { return; } try { //wake up the cpu PowerManager powerManager = (PowerManager)_context.GetSystemService(Context.PowerService); wakeLock = powerManager.NewWakeLock(WakeLockFlags.Partial, "MyApp::MyWakelockTag"); wakeLock.Acquire(); SetUpMediaRecorder(); SurfaceTexture texture = mTextureView.SurfaceTexture; //Assert.IsNotNull(texture); // texture.SetDefaultBufferSize(CamcorderProfile.Get(CamcorderQuality.High., CamcorderProfile.Get(Height)); mPreviewRequestBuilder = mCameraDevice.CreateCaptureRequest(CameraTemplate.Record); var surfaces = new List <Surface>(); var previewSurface = new Surface(texture); surfaces.Add(previewSurface); mPreviewRequestBuilder.AddTarget(previewSurface); var recorderSurface = mediaRecorder.Surface; surfaces.Add(recorderSurface); mPreviewRequestBuilder.AddTarget(recorderSurface); mCameraDevice.CreateCaptureSession(surfaces, new PreviewCaptureStateCallback(this), mBackgroundHandler); } catch (CameraAccessException e) { e.PrintStackTrace(); } catch (IOException e) { e.PrintStackTrace(); } }
//Start the camera preview public void startPreview() { if (null == cameraDevice || !textureView.IsAvailable || null == previewSize) return; try { SetUpMediaRecorder(); SurfaceTexture texture = textureView.SurfaceTexture; //Assert.IsNotNull(texture); texture.SetDefaultBufferSize(previewSize.Width,previewSize.Height); previewBuilder = cameraDevice.CreateCaptureRequest(CameraTemplate.Record); var surfaces = new List<Surface>(); var previewSurface = new Surface(texture); surfaces.Add(previewSurface); previewBuilder.AddTarget(previewSurface); var recorderSurface = mediaRecorder.Surface; surfaces.Add(recorderSurface); previewBuilder.AddTarget(recorderSurface); cameraDevice.CreateCaptureSession(surfaces, new PreviewCaptureStateCallback(this),backgroundHandler); } catch(CameraAccessException e) { e.PrintStackTrace (); } catch(IOException e) { e.PrintStackTrace (); } }
/// <summary> /// Sets up capture request builder. /// </summary> private void SetUpCaptureRequestBuilder(CaptureRequest.Builder builder) { // In this sample, w just let the camera device pick the automatic settings builder.Set(CaptureRequest.ControlMode, new Java.Lang.Integer((int)ControlMode.Auto)); }
private void TakePicture() { try { Activity activity = Activity; if (activity == null || mCameraDevice == null) { return; } CameraManager manager = (CameraManager)activity.GetSystemService(Android.Content.Context.CameraService); spinner.Visibility = ViewStates.Visible; // Pick the best JPEG size that can be captures with this CameraDevice CameraCharacteristics characteristics = manager.GetCameraCharacteristics(mCameraDevice.Id); Android.Util.Size[] jpegSizes = null; if (characteristics != null) { jpegSizes = ((StreamConfigurationMap)characteristics.Get(CameraCharacteristics.ScalerStreamConfigurationMap)).GetOutputSizes((int)ImageFormatType.Jpeg); } width = 640; height = 480; int total = width * height; int targetRes = 3145728; //About 5MP int currentTargetDiff = System.Math.Abs((width * height) - targetRes);; if (jpegSizes != null && jpegSizes.Length > 0) { foreach (Android.Util.Size size in jpegSizes) { int targetDiff = System.Math.Abs((size.Width * size.Height) - targetRes); if (targetDiff < currentTargetDiff) { width = size.Width; height = size.Height; currentTargetDiff = targetDiff; } } } // We use an ImageReader to get a JPEG from CameraDevice // Here, we create a new ImageReader and prepare its Surface as an output from the camera ImageReader reader = ImageReader.NewInstance(width, height, ImageFormatType.Jpeg, 1); List <Surface> outputSurfaces = new List <Surface>(); outputSurfaces.Add(reader.Surface); //outputSurfaces.Add(new Surface(textureView.SurfaceTexture)); CaptureRequest.Builder captureBuilder = mCameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture); captureBuilder.AddTarget(reader.Surface); SetUpCaptureRequestBuilder(captureBuilder); // Orientation SurfaceOrientation rotation = activity.WindowManager.DefaultDisplay.Rotation; captureBuilder.Set(CaptureRequest.JpegOrientation, new Java.Lang.Integer(ORIENTATIONS.Get((int)rotation))); Java.IO.File file = new Java.IO.File(activity.GetExternalFilesDir(null), "pic.jpg"); // This listener is called when an image is ready in ImageReader // Right click on ImageAvailableListener in your IDE and go to its definition ImageAvailableListener readerListener = new ImageAvailableListener(this); // We create a Handler since we want to handle the resulting JPEG in a background thread HandlerThread thread = new HandlerThread("CameraPicture"); thread.Start(); Handler backgroundHandler = new Handler(thread.Looper); reader.SetOnImageAvailableListener(readerListener, backgroundHandler); //This listener is called when the capture is completed // Note that the JPEG data is not available in this listener, but in the ImageAvailableListener we created above // Right click on CameraCaptureListener in your IDE and go to its definition CameraCaptureListener captureListener = new CameraCaptureListener() { Page = this }; mCameraDevice.CreateCaptureSession(outputSurfaces, new CameraCaptureStateListener() { OnConfiguredAction = (CameraCaptureSession session) => { try { CaptureRequest capReq = captureBuilder.Build(); session.Capture(capReq, captureListener, backgroundHandler); } catch (CameraAccessException ex) { Log.WriteLine(LogPriority.Info, "Capture Session error: ", ex.ToString()); } }, OnConfigureFailedAction = (CameraCaptureSession session) => { Log.WriteLine(LogPriority.Error, "Session setup error", session.ToString()); } }, backgroundHandler); } catch (CameraAccessException ex) { Log.WriteLine(LogPriority.Info, "Taking picture error: ", ex.StackTrace); } }
private void startRecordingVideo() { if (null == Activity) return; media_recorder = new MediaRecorder (); File file = getVideoFile (Activity); try { //UI button_video.SetText (Resource.String.stop); is_recording_video = true; //Configure the MediaRecorder media_recorder.SetAudioSource (AudioSource.Mic); media_recorder.SetVideoSource (VideoSource.Surface); media_recorder.SetOutputFormat (OutputFormat.Mpeg4); media_recorder.SetOutputFile (System.IO.Path.GetFullPath (file.ToString())); media_recorder.SetVideoEncodingBitRate (10000000); media_recorder.SetVideoFrameRate (30); media_recorder.SetVideoSize (1440, 1080); media_recorder.SetVideoEncoder (VideoEncoder.H264); media_recorder.SetAudioEncoder (AudioEncoder.Aac); int rotation = (int)Activity.WindowManager.DefaultDisplay.Rotation; int orientation = ORIENTATIONS.Get (rotation); media_recorder.SetOrientationHint (orientation); media_recorder.Prepare (); Surface surface = media_recorder.Surface; //Set up CaptureRequest builder = camera_device.CreateCaptureRequest (CameraTemplate.Record); builder.AddTarget (surface); var preview_surface = new Surface (texture_view.SurfaceTexture); builder.AddTarget (preview_surface); var surface_list = new List<Surface>(); surface_list.Add(surface); surface_list.Add(preview_surface); camera_device.CreateCaptureSession(surface_list,new RecordingCaptureStateListener(this),null); } catch (IOException e) { e.PrintStackTrace (); } catch (CameraAccessException e) { e.PrintStackTrace (); } catch (IllegalStateException e) { e.PrintStackTrace (); } }
//Start the camera preview public void startPreview() { if (null == camera_device || !texture_view.IsAvailable || null == preview_size) return; try { SurfaceTexture texture = texture_view.SurfaceTexture; //Assert.IsNotNull(texture); texture.SetDefaultBufferSize(preview_size.Width,preview_size.Height); preview_builder = camera_device.CreateCaptureRequest(CameraTemplate.Preview); Surface surface = new Surface(texture); var surfaces = new List<Surface>(); surfaces.Add(surface); preview_builder.AddTarget(surface); camera_device.CreateCaptureSession(surfaces, new PreviewCaptureStateListener(this),null); } catch(CameraAccessException e) { e.PrintStackTrace (); } }
/// <summary> /// Takes the photo. /// </summary> public void TakePhoto() { if (_context != null && _cameraDevice != null) { try { Busy?.Invoke(this, true); if (_mediaSoundLoaded) { _mediaSound.Play(MediaActionSoundType.ShutterClick); } // Pick the best JPEG size that can be captures with this CameraDevice var characteristics = _manager.GetCameraCharacteristics(_cameraDevice.Id); Size[] jpegSizes = null; if (characteristics != null) { jpegSizes = ((StreamConfigurationMap)characteristics.Get(CameraCharacteristics.ScalerStreamConfigurationMap)).GetOutputSizes((int)ImageFormatType.RawSensor); } int width = 640; int height = 480; if (jpegSizes != null && jpegSizes.Length > 0) { width = jpegSizes[0].Width; height = jpegSizes[0].Height; } // We use an ImageReader to get a JPEG from CameraDevice // Here, we create a new ImageReader and prepare its Surface as an output from the camera var reader = ImageReader.NewInstance(width, height, ImageFormatType.Jpeg, 1); var outputSurfaces = new List <Surface>(2); outputSurfaces.Add(reader.Surface); outputSurfaces.Add(new Surface(_viewSurface)); CaptureRequest.Builder captureBuilder = _cameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture); captureBuilder.AddTarget(reader.Surface); captureBuilder.Set(CaptureRequest.ControlMode, new Integer((int)ControlMode.Auto)); // Orientation var windowManager = _context.GetSystemService(Context.WindowService).JavaCast <IWindowManager>(); SurfaceOrientation rotation = windowManager.DefaultDisplay.Rotation; captureBuilder.Set(CaptureRequest.JpegOrientation, new Integer(ORIENTATIONS.Get((int)rotation))); // This listener is called when an image is ready in ImageReader ImageAvailableListener readerListener = new ImageAvailableListener(); readerListener.ImageProcessingCompleted += (sender, e) => { Photo?.Invoke(this, e); }; // We create a Handler since we want to handle the resulting JPEG in a background thread HandlerThread thread = new HandlerThread("CameraPicture"); thread.Start(); Handler backgroundHandler = new Handler(thread.Looper); reader.SetOnImageAvailableListener(readerListener, backgroundHandler); var captureListener = new CameraCaptureListener(); captureListener.PhotoComplete += (sender, e) => { Busy?.Invoke(this, false); StartPreview(); }; _cameraDevice.CreateCaptureSession(outputSurfaces, new CameraCaptureStateListener() { OnConfiguredAction = (CameraCaptureSession session) => { try { _previewSession = session; session.Capture(captureBuilder.Build(), captureListener, backgroundHandler); } catch (CameraAccessException ex) { Log.WriteLine(LogPriority.Info, "Capture Session error: ", ex.ToString()); } } }, backgroundHandler); } catch (CameraAccessException error) { Log.WriteLine(LogPriority.Error, error.Source, error.Message); } catch (Java.Lang.Exception error) { Log.WriteLine(LogPriority.Error, error.Source, error.Message); } } }
private void setUpCaptureRequestBuilder(CaptureRequest.Builder builder) { builder.Set(CaptureRequest.ControlMode, new Java.Lang.Integer((int)ControlMode.Auto)); }
private void StartPreview() { if (mCameraDevice == null || !mTextureView.IsAvailable || mPreviewSize == null) { return; } try { SurfaceTexture texture = mTextureView.SurfaceTexture; System.Diagnostics.Debug.Assert( texture != null); texture.SetDefaultBufferSize(mPreviewSize.Width, mPreviewSize.Height); Surface surface = new Surface(texture); mPreviewBuilder = mCameraDevice.CreateCaptureRequest(CameraTemplate.Preview); mPreviewBuilder.AddTarget(surface); mCameraDevice.CreateCaptureSession( new List<Surface>() {surface}, new CameraCaptureStateListener() { OnConfigureFailedAction = (CameraCaptureSession session) => { Activity activity = Activity; if(activity != null) { Toast.MakeText(activity, "Failed", ToastLength.Short).Show(); } }, OnConfiguredAction = (CameraCaptureSession session) => { mPreviewSession = session; UpdatePreview (); } }, null); } catch(CameraAccessException ex) { Log.WriteLine (LogPriority.Info, "CameraFragment", ex.StackTrace); } }
/// <summary> /// Starts the camera previe /// </summary> private void StartPreview() { if (mCameraDevice == null || !mTextureView.IsAvailable || mPreviewSize == null) { return; } try { SurfaceTexture texture = mTextureView.SurfaceTexture; System.Diagnostics.Debug.Assert( texture != null ); // We configure the size of the default buffer to be the size of the camera preview we want texture.SetDefaultBufferSize(mPreviewSize.Width, mPreviewSize.Height); // This is the output Surface we need to start the preview Surface surface = new Surface(texture); // We set up a CaptureRequest.Builder with the output Surface mPreviewBuilder = mCameraDevice.CreateCaptureRequest(CameraTemplate.Preview); mPreviewBuilder.AddTarget(surface); // Here, we create a CameraCaptureSession for camera preview. mCameraDevice.CreateCaptureSession(new List<Surface>() { surface }, new CameraCaptureStateListener() { OnConfigureFailedAction = (CameraCaptureSession session) => { Activity activity = Activity; if (activity != null) { Toast.MakeText(activity, "Failed", ToastLength.Short).Show(); } }, OnConfiguredAction = (CameraCaptureSession session) => { mPreviewSession = session; UpdatePreview (); } }, null); } catch (Exception ex) { Log.WriteLine (LogPriority.Info, "Camera2BasicFragment", ex.StackTrace); } }
public CameraCaptureSessionCallbackU(CaptureRequest.Builder b) { _builder = b; }
internal void CreateCameraPreviewSession() { try { // We configure the size of default buffer to be the size of camera preview we want. _surface.SetDefaultBufferSize(_previewSize.Width, _previewSize.Height); // This is the output Surface we need to start preview. var surface = new Surface(_surface); // We set up a CaptureRequest.Builder with the output Surface. _previewRequestBuilder = CameraDevice.CreateCaptureRequest(CameraTemplate.Preview); _previewRequestBuilder.AddTarget(surface); // Here, we create a CameraCaptureSession for camera preview. CameraDevice.CreateCaptureSession(new List<Surface> { surface, _imageReader.Surface }, _captureStateCallback, null); } catch { } }