コード例 #1
0
 public bool OnSurfaceTextureDestroyed(SurfaceTexture surface)
 {
     if (camEnabled)
     {
         camera.StopPreview();
         camera.Release();
         cameraClosed = true;
     }
     return(true);
 }
コード例 #2
0
        private void SwitchCameraButton_Click(object sender, EventArgs e)
        {
            if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop)
            {
                string[] camPermissions = { Android.Manifest.Permission.Camera };

                // Make sure we can use the camera
                if ((int)Android.OS.Build.VERSION.SdkInt >= 23 && Activity.CheckSelfPermission(camPermissions[0]) != (Permission.Granted))
                {
                    Toast.MakeText(Activity, AppResources.Camera_permissionNeeded, ToastLength.Long).Show();
                    Activity.RequestPermissions(camPermissions, CamPermReqId);
                    return;
                }

                mCameraDevice.Close();

                int newCamIndex = backCam ? 1 : 0;
                backCam = !backCam;

                try
                {
                    OpenCamera(newCamIndex);
                }
                catch (System.Exception ex)
                {
                    System.Console.WriteLine(ex);
                }
            }
            else
            {
                if (cameraType == CameraFacing.Front)
                {
                    cameraType = CameraFacing.Back;

                    camera.StopPreview();
                    camera.Release();
                    camera = Android.Hardware.Camera.Open((int)cameraType);
                    camera.SetPreviewTexture(surfaceTexture);
                    PrepareAndStartCamera1();
                }
                else
                {
                    cameraType = CameraFacing.Front;

                    camera.StopPreview();
                    camera.Release();
                    camera = Android.Hardware.Camera.Open((int)cameraType);
                    camera.SetPreviewTexture(surfaceTexture);
                    PrepareAndStartCamera1();
                }
            }
        }
コード例 #3
0
 protected override void OnDestroy()
 {
     camera?.StopPreview();
     camera?.Release();
     camera = null;
     base.OnDestroy();
 }
コード例 #4
0
        public void SurfaceChanged(ISurfaceHolder holder, [GeneratedEnum] Format format, int width, int height)
        {
            if (Holder.Surface == null)
            {
                return;
            }

            try
            {
                _camera.StopPreview();
            }
            catch (Exception)
            {
                // ignore: tried to stop a non-existent preview
            }

            try
            {
                // start preview with new settings
                _camera.SetPreviewDisplay(Holder);
                _camera.StartPreview();
            }
            catch (Exception e)
            {
                Log.Debug("", "Error starting camera preview: " + e.Message);
            }
        }
コード例 #5
0
ファイル: LiveStreamActivity.cs プロジェクト: Shtml7/Shared
        public bool OnSurfaceTextureDestroyed(SurfaceTexture surface)
        {
            _camera.StopPreview();
            _camera.Release();

            return(true);
        }
コード例 #6
0
ファイル: CameraController.cs プロジェクト: oz6269/CameraTF
        public void ShutdownCamera()
        {
            if (camera == null)
            {
                return;
            }

            try
            {
                try
                {
                    camera.StopPreview();
                    camera.SetNonMarshalingPreviewCallback(null);

                    camera.SetPreviewDisplay(null);
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.ToString());
                }

                camera.Release();
                camera = null;
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine(e.ToString());
            }
        }
コード例 #7
0
 public override void OnDestroy()
 {
     _camera.StopPreview();
     _camera.Release();
     _cameraReleased = true;
     base.OnDestroy();
 }
コード例 #8
0
        public void ShutdownCamera()
        {
            if (Camera == null)
            {
                return;
            }


            try
            {
                try
                {
                    Camera.StopPreview();


                    //Camera.SetPreviewDisplay(null);
                }
                catch (Exception ex)
                {
                    //Android.Util.Log.Error(MobileBarcodeScanner.TAG, ex.ToString());
                }
                Camera.Release();
                Camera = null;
            }
            catch (Exception e)
            {
                //Android.Util.Log.Error(MobileBarcodeScanner.TAG, e.ToString());
            }
        }
コード例 #9
0
        public void ShutdownCamera()
        {
            if (Camera == null)
            {
                return;
            }

            // camera release logic takes about 0.005 sec so there is no need in async releasing
            var perf = PerformanceCounter.Start();

            try
            {
                try
                {
                    Camera.SetPreviewCallback(null);
                    Camera.SetPreviewDisplay(null);
                    Camera.StopPreview();
                }
                catch (Exception ex)
                {
                    Android.Util.Log.Error(MobileBarcodeScanner.TAG, ex.ToString());
                }
                Camera.Release();
                Camera = null;
            }
            catch (Exception e)
            {
                Android.Util.Log.Error(MobileBarcodeScanner.TAG, e.ToString());
            }

            PerformanceCounter.Stop(perf, "Shutdown camera took {0}ms");
        }
コード例 #10
0
 // Stop preview if it is running
 private void stopPreview()
 {
     if (inPreview)
     {
         camera.StopPreview();
         inPreview = false;
     }
 }
コード例 #11
0
        public async Task <byte[]> TakePhoto()
        {
            camera.StopPreview();
            var ratio = ((decimal)Height) / Width;
            var image = Bitmap.CreateBitmap(liveView.Bitmap, 0, 0, liveView.Bitmap.Width, (int)(liveView.Bitmap.Width * ratio));

            byte[] imageBytes = null;
            using (var imageStream = new System.IO.MemoryStream())
            {
                await image.CompressAsync(Bitmap.CompressFormat.Jpeg, 50, imageStream);

                image.Recycle();
                imageBytes = imageStream.ToArray();
            }
            camera.StartPreview();
            return(imageBytes);
        }
コード例 #12
0
        public bool OnSurfaceTextureDestroyed(SurfaceTexture surface)
        {
            camera.StopPreview();
            camera.SetPreviewCallback(null);
            camera.Release();

            return(true);
        }
コード例 #13
0
ファイル: CameraRenderer.cs プロジェクト: meta012/MoodFull
        void TakePhotoButtonTapped(object sender, EventArgs e)
        {
            //if camera isn't started
            if (!_isCameraStarted)
            {
                return;
            }

            camera.StopPreview();

            //Gets bitmap from the textureView
            var bitmap = textureView.Bitmap;

            //Converts bitmap to byte[]
            byte[] bitmapData;
            using (var stream = new MemoryStream())
            {
                bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
                bitmapData = stream.ToArray();
            }

            //Send a message to App.axml to open next page
            MessagingCenter.Send <App, byte[]>(App.Current as App, "OpenRestaurantResultPage", bitmapData);

            camera.StartPreview();
        }
コード例 #14
0
 public void SurfaceDestroyed(ISurfaceHolder holder)
 {
     //stop the preview
     mCamera.StopPreview();
     //release the camera
     mCamera.Release();
     //unbind the camera from this object
     mCamera = null;
 }
コード例 #15
0
        public void SurfaceChanged(ISurfaceHolder holder, [GeneratedEnum] Format format, int width, int height)
        {
            if (_holder.Surface == null)
            {
                return;
            }
            try
            {
                _camera.StopPreview();
            }
            catch (Exception ex)
            {
                string message = ex.Message;
            }
            if (_previewSize != null)
            {
                try
                {
                    Android.Hardware.Camera.Parameters parameters = _camera.GetParameters();
                    parameters.SetPreviewSize(_previewSize.Width, _previewSize.Height);
                    parameters.SetPictureSize(_picSize.Width, _picSize.Height);
                    _camera.SetParameters(parameters);
                    _camera.SetPreviewDisplay(_holder);
                }
                catch (Exception ex)
                {
                    throw;
                }
            }

            Android.App.Activity activity = _context as Android.App.Activity;
            if (activity != null)
            {
                int orientation = CameraHelper.GetCameraDisplayOrientation(activity, _cameraId, displayRotation);
                _camera.SetDisplayOrientation(orientation);
            }

            try
            {
                Parameters parameters = _camera.GetParameters();

                foreach (var previewSize in  _camera.GetParameters().SupportedPreviewSizes)
                {
                    // if the size is suitable for you, use it and exit the loop.
                    parameters.SetPreviewSize(previewSize.Width, previewSize.Height);
                    break;
                }

                _camera.SetParameters(parameters);
                _camera.SetPreviewDisplay(_holder);
                _camera.StartPreview();
            }
            catch (Exception ex)
            {
                Log.Debug(Tag.ToString(), "Error starting camera preview: " + ex.Message);
            }
        }
コード例 #16
0
        private void PrepareAndStartCamera()
        {
            camera.StopPreview();

            var display = WindowManager.DefaultDisplay;

            if (display.Rotation == SurfaceOrientation.Rotation0)
            {
                camera.SetDisplayOrientation(90);
            }

            if (display.Rotation == SurfaceOrientation.Rotation270)
            {
                camera.SetDisplayOrientation(180);
            }

            camera.StartPreview();
        }
コード例 #17
0
ファイル: RecordActivity.cs プロジェクト: riklugtenberg/Lippz
 public void SurfaceDestroyed(ISurfaceHolder holder)
 {
     if (_camera != null)
     {
         _camera.StopPreview();
         _camera.Release();
         _camera = null;
     }
 }
コード例 #18
0
 public void SurfaceChanged(ISurfaceHolder holder, Format format, int width, int height)
 {
     try
     {
         if (previewing)
         {
             camera.StopPreview();
             previewing = false;
         }
         if (camera != null)
         {
             camera.SetPreviewDisplay(surfaceHolder);
             camera.StartPreview();
             previewing = true;
         }
     }
     catch { }
 }
コード例 #19
0
        void SwitchCameraType()
        {
            if (Android.Hardware.Camera.NumberOfCameras != 2)
            {
                return;
            }
            camera.StopPreview();
            camera.Release();

            if (Element.CameraType == CameraType.Rear)
            {
                SetupLiveCameraStream(0);
            }
            else
            {
                SetupLiveCameraStream(1);
            }
        }
コード例 #20
0
        public void ReceiveDetections(Detections detections)
        {
            if (!Element.IsScannerActive)
            {
                return;
            }
            SparseArray qrcodes = detections.DetectedItems;

            if (qrcodes.Size() != 0)
            {
                Vibrator vibrator = (Vibrator)Context.GetSystemService(Context.VibratorService);
                vibrator.Vibrate(100);
                Element.Barcode = ((Barcode)qrcodes.ValueAt(0)).RawValue;
                cam.StopPreview();
                Element.IsScannerActive = false;
                Element.Barcode         = null;
            }
        }
コード例 #21
0
 private void StopCamera()
 {
     if (_isRunning)
     {
         _camera?.StopPreview();
         _camera?.Release();
         _camera    = null;
         _isRunning = false;
     }
 }
コード例 #22
0
        protected override void OnStop()
        {
            if (Camera != null)
            {
                Camera.StopPreview();
                Camera.SetPreviewCallback(null);
                Camera.SetPreviewTexture(null);
            }

            cameraOn = false;
        }
コード例 #23
0
        public void ShutdownCamera()
        {
            tokenSource.Cancel();

            if (camera != null)
            {
                camera.SetPreviewCallback(null);
                camera.StopPreview();
                camera.Release();
                camera = null;
            }
        }
コード例 #24
0
    public void onPause()
    {
        if (inPreview)
        {
            camera.StopPreview();
        }

        camera.Release();
        camera = null;
        inPreview = false;
        base.OnPause();
    }
コード例 #25
0
 public bool OnSurfaceTextureDestroyed(SurfaceTexture surface)
 {
     if (_camera == null)
     {
         return(true);
     }
     _orientationListener.Disable();
     _camera.CancelAutoFocus();
     _camera.StopPreview();
     _camera.Release();
     return(true);
 }
コード例 #26
0
 public void TakePhoto2()
 {
     while (takePictures)
     {
         (Element as StocktakingCamera).Countme();
         camera.StopPreview();
         var    ratio      = ((decimal)Height) / Width;
         var    image      = Bitmap.CreateBitmap(liveView.Bitmap, 0, 0, liveView.Bitmap.Width, (int)(liveView.Bitmap.Width * ratio));
         byte[] imageBytes = null;
         using (var imageStream = new System.IO.MemoryStream())
         {
             image.CompressAsync(Bitmap.CompressFormat.Jpeg, 50, imageStream);
             image.Recycle();
             imageBytes = imageStream.ToArray();
         }
         camera.StartPreview();
         (Element as StocktakingCamera).SetPhotoResult(imageBytes, liveView.Bitmap.Width, liveView.Bitmap.Height);
         Task.Delay(TimeSpan.FromSeconds(2));
         //return imageBytes;
     }
 }
コード例 #27
0
        public void SwitchCamera(object sender, EventArgs e)
        {
            if (_camera != null)
            {
                _camera.StopPreview();
                _camera.Release();
                _camera = null;
            }

            var cameraToSwitch = _cameraId == 0 ? 1 : 0;

            EnableCamera(cameraToSwitch);
        }
コード例 #28
0
 private void releaseCameraAndPreview()
 {
     if (mCamera != null)
     {
         mCamera.StopPreview();
         mCamera.Release();
         mCamera = null;
     }
     if (mPreview != null)
     {
         mPreview.DestroyDrawingCache();
         mPreview.mCamera = null;
     }
 }
コード例 #29
0
        public async Task <byte[]> TakePhoto()
        {
            camera.StopPreview();
            var ratio = ((decimal)Height) / Width;
            var image = Bitmap.CreateBitmap(liveView.Bitmap, 0, 0, liveView.Bitmap.Width, (int)(liveView.Bitmap.Width * ratio));

            byte[] imageBytes = null;
            using (var imageStream = new System.IO.MemoryStream())
            {
                await image.CompressAsync(Bitmap.CompressFormat.Jpeg, 100, imageStream);

                image.Recycle();
                imageBytes = imageStream.ToArray();
            }
            Parameters parameters = camera.GetParameters();

            parameters.FocusMode = Parameters.FocusModeContinuousPicture;
            parameters.FlashMode = Parameters.FlashModeAuto;
            //parameters.ColorEffect = Parameters.EffectMono;
            camera.SetParameters(parameters);
            camera.StartPreview();
            return(imageBytes);
        }
コード例 #30
0
        public void SwitchCamera(object sender, EventArgs e)
        {
            _revertButton.Enabled = false;

            if (_camera != null)
            {
                _camera.StopPreview();
                _camera.Release();
                _camera = null;
            }

            var cameraToSwitch = _cameraId == 0 ? 1 : 0;

            EnableCamera(cameraToSwitch);

            _revertButton.Enabled = true;
        }
コード例 #31
0
		public void OnPreviewFrame (byte[] data, Camera camera)
		{
			var parameters = camera.GetParameters ();
			var size = parameters.PreviewSize;

			var barcode = new Image (size.Width, size.Height, "Y800");
			barcode.SetData (data);

			var result = scanner.ScanImage (barcode);

			if (result == 0)
				return;
			

			camera.SetPreviewCallback (null);
			camera.StopPreview ();

			var scannerResult = GetScannerResult ();

			ScanComplete?.Invoke (this, new ScanCompleteEventArgs (scannerResult));
		}
コード例 #32
0
ファイル: Viewfinder.cs プロジェクト: BenGladman/Camdro
        private void StopPreview(Camera camera)
        {
            if (camera == null) { return; }

            _previewStarted = false;

            try { camera.StopPreview(); }
            catch (Exception)
            {
                // ignore: tried to stop a non-existent preview
            }
        }