Exemplo n.º 1
0
        public void startPreview()
        {
            if (null == cameraDevice || !activity.textureView.IsAvailable || null == previewSize)
            {
                return;
            }

            try
            {
                SetUpRecoder();
                SurfaceTexture texture = activity.textureView.SurfaceTexture;
                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(activity, this), backgroundHandler);
            }
            catch (CameraAccessException e)
            {
                e.PrintStackTrace();
            }
            catch (Java.IO.IOException e)
            {
                e.PrintStackTrace();
            }
        }
Exemplo n.º 2
0
        // Creates a new {@link CameraCaptureSession} for camera preview.
        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);

                // We set up a CaptureRequest.Builder with the output Surface.
                mPreviewRequestBuilder = mCameraDevice.CreateCaptureRequest(CameraTemplate.Preview);
                mPreviewRequestBuilder.AddTarget(surface);
                mPreviewRequestBuilder.AddTarget(mImageReader.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();
            }
        }
Exemplo n.º 3
0
        public override void OnOpened(CameraDevice camera)
        {
            CaptureRequest.Builder builder = camera.CreateCaptureRequest(CameraTemplate.Preview);
            builder.AddTarget(_surface);
            builder.AddTarget(_reader.Surface);
            CaptureRequest captureRequest = builder.Build();

            camera.CreateCaptureSession(new List <Surface> {
                _surface, _reader.Surface
            }, new MySessionCallback(captureRequest, _cameraPreviewView, _reader), new Handler(msg => { }));
        }
        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();
            }
        }
Exemplo n.º 5
0
        //Start the camera preview
        public void startPreview()
        {
            if (null == cameraDevice || !textureView.IsAvailable || null == previewSize)
            {
                return;
            }

            try
            {
                closePreviewSession();
                SurfaceTexture texture = textureView.SurfaceTexture;
                //Assert.IsNotNull(texture);

                texture.SetDefaultBufferSize(previewSize.Width, previewSize.Height);

                previewBuilder = cameraDevice.CreateCaptureRequest(CameraTemplate.Record);
                surfaces       = new List <Surface>();
                var previewSurface = new Surface(texture);
                surfaces.Add(previewSurface);
                previewBuilder.AddTarget(previewSurface);

                if (previewBuilder != null)
                {
                    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));
                }

                previewBuilder.Set(CaptureRequest.ControlAfMode, (int)ControlAFMode.Off);
                previewBuilder.Set(CaptureRequest.ControlAfTrigger, (int)ControlAFTrigger.Cancel);

                //var recorderSurface = mediaRecorder.Surface;
                //surfaces.Add(recorderSurface);
                //previewBuilder.AddTarget(recorderSurface);
                mPreviewSession = new PreviewCaptureStateCallback(this, false);
                cameraDevice.CreateCaptureSession(surfaces, mPreviewSession, backgroundHandler);
            }
            catch (CameraAccessException e)
            {
                e.PrintStackTrace();
            }
            catch (IOException e)
            {
                e.PrintStackTrace();
            }
        }
        public void StartPreview()
        {
            if (liveTextureView.SurfaceTexture == null)
            {
                return;
            }

            var texture = liveTextureView.SurfaceTexture;

            texture.SetDefaultBufferSize(previewSize.Width, previewSize.Height);
            var surface = new Surface(texture);

            previewBuilder = CameraDevice.CreateCaptureRequest(CameraTemplate.Preview);
            previewBuilder.AddTarget(surface);

            CameraDevice.CreateCaptureSession(new List <Surface> {
                surface
            }, new CameraCaptureStateListener
            {
                OnConfigureFailedAction = (CameraCaptureSession session) =>
                {
                },
                OnConfiguredAction = (CameraCaptureSession session) =>
                {
                    previewSession = session;
                    previewBuilder.Set(CaptureRequest.ControlMode, new Java.Lang.Integer((int)ControlMode.Auto));

                    var thread = new HandlerThread("CameraPicture");
                    thread.Start();
                    var backgroundHandler = new Handler(thread.Looper);
                    previewSession.SetRepeatingRequest(previewBuilder.Build(), null, backgroundHandler);
                }
            }, null);
        }
Exemplo n.º 7
0
        private void StartRecord()
        {
            SetupMediaRecorder();
            Surface recordSurface = mediaRecorder.Surface;

            CaptureRequest.Builder builder = cameraDevice.CreateCaptureRequest(CameraTemplate.Record);
            builder.AddTarget(recordSurface);
            SetUpCaptureRequestBuilder(builder);
            List <Surface> surfaces = new List <Surface>();

            surfaces.Add(recordSurface);
            cameraDevice.CreateCaptureSession(surfaces, new CameraCapturerRecordStateListener()
            {
                OnConfiguredAction = (CameraCaptureSession session) =>
                {
                    try
                    {
                        session.SetRepeatingRequest(builder.Build(), null, backgroundHandler);
                    }
                    catch (CameraAccessException ex)
                    {
                        Log.WriteLine(LogPriority.Info, "Capture Session error: ", ex.ToString());
                    }
                }
            }, backgroundHandler);
            mediaRecorder.Start();
            videoButton.Text = "Stop record";
            recordingVideo   = true;
        }
        // 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 == CameraDevice)
                {
                    return;
                }

                // This is the CaptureRequest.Builder that we use to take a picture.
                //if (_stillCaptureBuilder == null)
                //{
                _stillCaptureBuilder = CameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture);
                //}

                _stillCaptureBuilder.AddTarget(_imageReader.Surface);

                // Use the same AE and AF modes as the preview.
                _stillCaptureBuilder.Set(CaptureRequest.ControlAfMode, (int)ControlAFMode.ContinuousPicture);
                SetAutoFlash(_stillCaptureBuilder);

                CaptureSession.StopRepeating();
                CaptureSession.Capture(_stillCaptureBuilder.Build(), new CameraCaptureStillPictureSessionCallback(this), null);
            }
            catch (CameraAccessException ex)
            {
#if DEBUG
                ex.PrintStackTrace();
#endif
            }
        }
Exemplo n.º 9
0
        public void CapturePreviewShot()
        {
            try
            {
                //final Activity activity = getActivity();
                if (null == mCameraDevice)
                {
                    return;
                }

                // This is the CaptureRequest.Builder that we use to take a picture.
                //final CaptureRequest.Builder captureBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
                CaptureRequest.Builder captureBuilder = mCameraDevice.CreateCaptureRequest(CameraTemplate.Preview);
                captureBuilder.AddTarget(mImageReader.Surface);

                // Use the same AE and AF modes as the preview.
                captureBuilder.Set(CaptureRequest.ControlAfMode, (int)ControlAFMode.ContinuousPicture);
                //SetAutoFlash(captureBuilder);

                // Orientation
                int rotation = (int)WindowManager.DefaultDisplay.Rotation;
                captureBuilder.Set(CaptureRequest.JpegOrientation, GetOrientation(rotation));

                mCaptureSession.StopRepeating();
                //mCaptureSession.Capture(captureBuilder.Build(), new CameraCapturePreviewSessionCallback(this), null);
                mCaptureSession.Capture(captureBuilder.Build(), new CameraCapturePreviewSessionCallback(this), mBackgroundHandler);
            }
            catch (CameraAccessException e)
            {
                e.PrintStackTrace();
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Capture a still picture. This method should be called when we get a response in
        /// CaptureCallback from both LockFocus()
        /// </summary>
        public void CaptureStillPicture()
        {
            try
            {
                var activity = Activity;
                if (null == activity || null == CameraDevice)
                {
                    return;
                }
                // This is the CaptureRequest.Builder that we use to take a picture.
                CaptureRequest.Builder captureBuilder =
                    CameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture);
                captureBuilder.AddTarget(mImageReader.Surface);

                // Use the same AE and AF modes as the preview.
                captureBuilder.Set(CaptureRequest.ControlAfMode,
                                   (int)ControlAFMode.ContinuousPicture);
                SetAutoFlash(captureBuilder);

                // Orientation
                int rotation = (int)activity.WindowManager.DefaultDisplay.Rotation;
                captureBuilder.Set(CaptureRequest.JpegOrientation, GetOrientation(rotation));

                var captureCallback = new CameraCaptureSessionCaptureCallback2(this);

                CaptureSession.StopRepeating();
                CaptureSession.Capture(captureBuilder.Build(), captureCallback, null);
            }
            catch (CameraAccessException e)
            {
                e.PrintStackTrace();
            }
        }
Exemplo n.º 11
0
        // 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);

                stillCaptureBuilder.Set(CaptureRequest.JpegOrientation, 90);//TODO

                mCaptureSession.StopRepeating();
                mCaptureSession.Capture(stillCaptureBuilder.Build(), new CaptureStillPictureSessionCallback(this), null);
            }
            catch (CameraAccessException e)
            {
                e.PrintStackTrace();
            }
        }
Exemplo n.º 12
0
        public void CaptureStillPicture()
        {
            try
            {
                if (Device == null)
                {
                    return;
                }
                // This is the CaptureRequest.Builder that we use to take a picture.
                if (stillCaptureBuilder == null)
                {
                    stillCaptureBuilder = Device.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
                var windowManager = Context.GetSystemService(Context.WindowService).JavaCast <IWindowManager>();
                int rotation      = (int)windowManager.DefaultDisplay.Rotation;
                stillCaptureBuilder.Set(CaptureRequest.JpegOrientation, GetOrientation(rotation));

                CaptureSession.StopRepeating();
                CaptureSession.Capture(stillCaptureBuilder.Build(), new CameraCaptureStillPictureSessionCallback(this), null);
            }
            catch (CameraAccessException e)
            {
                e.PrintStackTrace();
            }
        }
Exemplo n.º 13
0
        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);

            List <Surface> surfaces = new List <Surface>();

            surfaces.Add(surface);
            surfaces.Add(_imageReader.Surface);

            CameraDevice.CreateCaptureSession(surfaces,
                                              new CameraCaptureStateListener
            {
                OnConfigureFailedAction = session =>
                {
                },
                OnConfiguredAction = session =>
                {
                    _previewSession = session;
                    UpdatePreview();
                }
            },
                                              _backgroundHandler);
        }
Exemplo n.º 14
0
        // 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
            {
                if (null == mCameraDevice)
                {
                    return;
                }
                // This is the CaptureRequest.Builder that we use to take a picture.

                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);
                SetFlash(stillCaptureBuilder);

                // Orientation
                int rotation = (int)WindowManager.DefaultDisplay.Rotation;
                var orient   = GetOrientation(rotation);
                stillCaptureBuilder.Set(CaptureRequest.JpegOrientation, orient);

                mCaptureSession.StopRepeating();
                mCaptureSession.Capture(stillCaptureBuilder.Build(), new CameraCaptureStillPictureSessionCallback(this), null);
            }
            catch (CameraAccessException e)
            {
                e.PrintStackTrace();
            }
        }
Exemplo n.º 15
0
        public async Task <ICameraPreview> OpenWithPreviewAsync(Xamarin.Forms.Size previewRequestSize)
        {
            await OpenAsync(true);

            var stateCallback = new StateCallback();

            stateCallback.Configured      += SessionConfigured;
            stateCallback.ConfigureFailed += SessionConfigureFailed;
            var previewSurface = _cameraPreview.CreateSurface(previewRequestSize);

            _previewRequestBuilder.AddTarget(previewSurface);
            _previewRequestBuilder.Set(CaptureRequest.ControlAfMode, (int)ControlAFMode.ContinuousPicture);

            var characteristics = _manager.GetCameraCharacteristics(_cameraDevice.Id);
            var map             = (StreamConfigurationMap)characteristics.Get(CameraCharacteristics.ScalerStreamConfigurationMap);

            // ReSharper disable once CoVariantArrayConversion
            _imageSize = (Size)Collections.Max(
                Arrays.AsList(map.GetOutputSizes((int)ImageFormatType.Jpeg)),
                new CompareSizesByArea());

            _imageReader = ImageReader.NewInstance(_imageSize.Width, _imageSize.Height,
                                                   ImageFormatType.Jpeg, /* maxImages */ 2);
            _imageAvailableListener = new ImageAvailableListener();
            _imageAvailableListener.ImageAvailable += CaptureAvailable;
            _imageReader.SetOnImageAvailableListener(_imageAvailableListener, _backgroundThread.Handler);
            var surfaces = new List <Surface> {
                previewSurface, _imageReader.Surface
            };

            _cameraDevice.CreateCaptureSession(surfaces, stateCallback, null);
            return(_cameraPreview);
        }
Exemplo n.º 16
0
        private void CaptureStillPicture()
        {
            try
            {
                // This is the CaptureRequest.Builder that we use to take a picture.
                if (_stillCaptureBuilder == null)
                {
                    _stillCaptureBuilder = _cameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture);
                }

                _stillCaptureBuilder.AddTarget(_imageReader.Surface);

                // Use the same AE and AF modes as the preview.
                _stillCaptureBuilder.Set(CaptureRequest.ControlAfMode, (int)ControlAFMode.ContinuousPicture);
                Utils.SetAutoFlash(_stillCaptureBuilder, _manager, _cameraId);

                var rotation = Utils.CalculateRotation();
                _stillCaptureBuilder.Set(CaptureRequest.JpegOrientation, Utils.GetOrientation(rotation));

                _captureSession.StopRepeating();

                var stillCaptureListener = new CameraCaptureListener();
                stillCaptureListener.CaptureResultAvailable += StillCaptureHandler;
                _captureSession.Capture(_stillCaptureBuilder.Build(),
                                        stillCaptureListener, null);
            }
            catch (CameraAccessException e)
            {
                Debug.WriteLine(e);
                throw;
            }
        }
Exemplo n.º 17
0
        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);

            _previewSession.StopRepeating();
            _previewSession.Capture(_captureBuilder.Build(),
                                    new CameraCaptureStillPictureSessionCallback
            {
                OnCaptureCompletedAction = session =>
                {
                    UnlockFocus();
                }
            }, null);
        }
        public void TakePhoto()
        {
            var characteristics = cameraManager.GetCameraCharacteristics(CameraDevice.Id);
            var jpegSizes       = ((StreamConfigurationMap)characteristics.Get(CameraCharacteristics.ScalerStreamConfigurationMap)).GetOutputSizes((int)ImageFormatType.Jpeg);
            var width           = jpegSizes[0].Width;
            var height          = jpegSizes[0].Height;

            var reader         = ImageReader.NewInstance(width, height, ImageFormatType.Jpeg, 1);
            var outputSurfaces = new List <Surface> {
                reader.Surface
            };

            CaptureRequest.Builder captureBuilder = CameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture);
            captureBuilder.AddTarget(reader.Surface);
            captureBuilder.Set(CaptureRequest.ControlMode, (int)ControlMode.Auto);

            // Orientation
            var windowManager           = Context.GetSystemService(Context.WindowService).JavaCast <IWindowManager>();
            SurfaceOrientation rotation = windowManager.DefaultDisplay.Rotation;

            captureBuilder.Set(CaptureRequest.JpegOrientation, orientation);

            var readerListener = new ImageAvailableListener();

            readerListener.Photo += (sender, e) =>
            {
                (Element as Controls.CameraPage).SetPhotoResult(e, width, height);
            };

            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) =>
            {
                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);
        }
        /** Creates a new {@link CameraCaptureSession} for camera preview. */
        private void createCameraPreviewSession()
        {
            try
            {
                SurfaceTexture texture = textureView.SurfaceTexture;
                //  assert texture != null;

                // We configure the size of default buffer to be the size of camera preview we want.
                texture.SetDefaultBufferSize(previewSize.Width, previewSize.Height);

                // This is the output Surface we need to start preview.
                Surface surface = new Surface(texture);

                // We set up a CaptureRequest.Builder with the output Surface.
                previewRequestBuilder = cameraDevice.CreateCaptureRequest(CameraTemplate.Preview);
                previewRequestBuilder.AddTarget(surface);
                StateCallback call = new StateCallback();

                call.OnConfiguredHandler += (sender, e) =>
                {
                    if (null == cameraDevice)
                    {
                        return;
                    }

                    // When the session is ready, we start displaying the preview.
                    captureSession = e;// cameraCaptureSession;
                    try
                    {
                        // Auto focus should be continuous for camera preview.
                        previewRequestBuilder.Set(
                            CaptureRequest.ControlAeMode,
                            (int)ControlAFMode.ContinuousPicture);

                        // ly, we start displaying the camera preview.
                        previewRequest = previewRequestBuilder.Build();
                        CaptureCallback captureCallback = new CaptureCallback();

                        captureSession.SetRepeatingRequest(previewRequest, captureCallback, backgroundHandler);
                    }
                    catch (CameraAccessException ex)
                    {
                        Log.Error(TAG, "Failed to set up config to capture Camera", e);
                    }
                };


                // Here, we create a CameraCaptureSession for camera preview.
                cameraDevice.CreateCaptureSession(new System.Collections.Generic.List <Surface>()
                {
                    surface
                }, call, null);
            }
            catch (CameraAccessException e)
            {
                Log.Error(TAG, "Failed to preview Camera", e);
            }
        }
        public override void OnOpened(CameraDevice camera)
        {
            System.Diagnostics.Debug.WriteLine("Camera ouverte");

            _builder = camera.CreateCaptureRequest(CameraTemplate.Preview);
            _builder.AddTarget(_sv);
            _ccssc = new CameraCaptureSessionCallbackU(_builder);
            camera.CreateCaptureSession(ls, _ccssc, new Handler());
        }
Exemplo n.º 21
0
        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);
        }
Exemplo n.º 22
0
        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();
            }
        }
Exemplo n.º 23
0
 /// <summary>
 /// Stops the live preview, and requests a still capture from the camera session.
 /// When the still capture is handled, the live preview is started again.
 /// </summary>
 public void CaptureImage()
 {
     if (CancellationToken.IsCancellationRequested)
     {
         return;
     }
     CaptureRequest.Builder builder = Camera.CreateCaptureRequest(CameraTemplate.StillCapture);
     builder.AddTarget(Reader.Surface);
     Session.Capture(builder.Build(), CaptureListener, null);
 }
Exemplo n.º 24
0
#pragma warning restore CS0618 // Type or member is obsolete
        #endregion

        public void StartPreview()
        {
            if (mCameraDevice == null || !textureView.IsAvailable || mPreviewSize == null)
            {
                return;
            }
            try
            {
                SurfaceTexture texture = textureView.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
                previewSurface = new Surface(texture);

                // We set up a CaptureRequest.Builder with the output Surface
                mPreviewBuilder = mCameraDevice.CreateCaptureRequest(CameraTemplate.Preview);
                mPreviewBuilder.AddTarget(previewSurface);

                // Here, we create a CameraCaptureSession for camera preview.
                mCameraDevice.CreateCaptureSession(new List <Surface>()
                {
                    previewSurface
                },
                                                   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);

                takePhotoButton.Enabled = true;
            }
            catch (CameraAccessException ex)
            {
                Log.WriteLine(LogPriority.Info, "Camera2BasicFragment", ex.StackTrace);
            }
        }
Exemplo n.º 25
0
        // Creates a new {@link CameraCaptureSession} for camera preview.
        public void CreateCameraPreviewSession(bool builderexists = false)
        {
            try
            {
                var 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.
                var surface = new Surface(texture);

                // We set up a CaptureRequest.Builder with the output Surface.
                if (!builderexists)
                {
                    mPreviewRequestBuilder = mCameraDevice.CreateCaptureRequest(CameraTemplate.Preview);
                }

                //mPreviewRequestBuilder.Set(CaptureRequest.ControlAeTargetFpsRange, new Android.Util.Range(30, 120));

                mPreviewRequestBuilder.Set(CaptureRequest.ControlAeMode, (int)ControlAEMode.On);
                mPreviewRequestBuilder.Set(CaptureRequest.ControlAwbMode, (int)ControlAwbMode.Auto);
                mPreviewRequestBuilder.Set(CaptureRequest.ControlAePrecaptureTrigger, (int)ControlAEPrecaptureTrigger.Start);
                mPreviewRequestBuilder.Set(CaptureRequest.LensOpticalStabilizationMode, (int)LensOpticalStabilizationMode.On);
                mPreviewRequestBuilder.Set(CaptureRequest.EdgeMode, (int)EdgeMode.Fast);
                mPreviewRequestBuilder.Set(CaptureRequest.ShadingMode, (int)ShadingMode.HighQuality);
                mPreviewRequestBuilder.Set(CaptureRequest.TonemapMode, (int)TonemapMode.HighQuality);

                mPreviewRequestBuilder.AddTarget(surface);


                // Here, we create a CameraCaptureSession for camera preview.
                var surfaces = new List <Surface>();
                surfaces.Add(surface);
                surfaces.Add(mImageReader.Surface);

                mCameraCaptureSessionCallback = new CameraCaptureSessionCallback(this);

                mCameraDevice.CreateCaptureSession(surfaces, mCameraCaptureSessionCallback, null);
            }
            catch (CameraAccessException e)
            {
                Crashes.TrackError(e);
                e.PrintStackTrace();
            }
        }
Exemplo n.º 26
0
 private CaptureRequest CreateCaptureRequest()
 {
     try
     {
         CaptureRequest.Builder builder = _cameraDevice.CreateCaptureRequest(CameraTemplate.Preview);
         builder.AddTarget(_surface);
         return(builder.Build());
     }
     catch (CameraAccessException e)
     {
         Log.Error(_tag, e.Message);
         return(null);
     }
 }
Exemplo n.º 27
0
 private CaptureRequest CreateCaptureRequest()
 {
     try
     {
         CaptureRequest.Builder builder = mCameraDevice.CreateCaptureRequest(CameraTemplate.Preview);
         builder.AddTarget(mYuvImageReader.Get().Surface);
         return(builder.Build());
     }
     catch (CameraAccessException e)
     {
         Log.Error(TAG, e.Message);
         return(null);
     }
 }
        void OnOpened(object sender, CameraDeviceEventArgs e)
        {
            cameraOpenCloseLock.Release();
            cameraDevice = e.Camera;

            try
            {
                //SurfaceTexture texture = mTextureView.SurfaceTexture;
                //SurfaceTexture texture = new 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);
                //texture.SetDefaultBufferSize(previewSize.Width, previewSize.Height);
                //texture.FrameAvailable += (sender2, e2) =>
                //{
                //  e2.SurfaceTexture.
                //};

                ////// This is the output Surface we need to start preview.
                //Surface surface = new Surface(texture);

                // We set up a CaptureRequest.Builder with the output Surface.
                previewRequestBuilder = cameraDevice.CreateCaptureRequest(CameraTemplate.Preview);
                previewRequestBuilder.AddTarget(imageReader.Surface);
                //

                // Here, we create a CameraCaptureSession for camera preview.
                var surfaces = new List <Surface>();
                surfaces.Add(imageReader.Surface);

                if (captureSessionListener != null)
                {
                    captureSessionListener.Configured      -= OnConfigured;
                    captureSessionListener.ConfigureFailed -= OnConfigureFailed;
                }
                captureSessionListener                  = new CameraCaptureSessionCallbackListener(cameraDevice);
                captureSessionListener.Configured      += OnConfigured;
                captureSessionListener.ConfigureFailed += OnConfigureFailed;
                cameraDevice.CreateCaptureSession(surfaces, captureSessionListener, null);
            }
            catch (CameraAccessException ex)
            {
                ex.PrintStackTrace();
            }
        }
Exemplo n.º 29
0
        /// <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();
            }
        }
Exemplo n.º 30
0
            public void createpreview()
            {
                //Toast.MakeText(Application.Context, "Iam there", ToastLength.Long).Show();
                SurfaceTexture texture = tview.SurfaceTexture;

                texture.SetDefaultBufferSize(imagedimension.Width, imagedimension.Height);
                Surface surface = new Surface(texture);

                Builder = cameradevice.CreateCaptureRequest(CameraTemplate.Preview);
                Builder.AddTarget(surface);
                outputs.Add(surface);
                cameradevice.CreateCaptureSession(outputs, capturecallback, null);

                //throw new NotImplementedException();
            }
		//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 ();
			}
		}
Exemplo n.º 32
0
        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);
            }
        }
		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>
		/// 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);
			}
		}
Exemplo n.º 36
0
        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 { }
        }