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()); } }
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(); Camera.SetNonMarshalingPreviewCallback(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()); } PerformanceCounter.Stop(perf, "Shutdown camera took {0}ms"); }
public void SetupCamera() { if (Camera != null) { return; } var perf = PerformanceCounter.Start(); OpenCamera(); PerformanceCounter.Stop(perf, "Setup Camera took {0}ms"); if (Camera == null) { return; } perf = PerformanceCounter.Start(); ApplyCameraSettings(); try { Camera.SetPreviewDisplay(holder); var previewParameters = Camera.GetParameters(); var previewSize = previewParameters.PreviewSize; var bitsPerPixel = ImageFormat.GetBitsPerPixel(previewParameters.PreviewFormat); var bufferSize = (previewSize.Width * previewSize.Height * bitsPerPixel) / 8; const int NUM_PREVIEW_BUFFERS = 5; for (uint i = 0; i < NUM_PREVIEW_BUFFERS; ++i) { using (var buffer = new FastJavaByteArray(bufferSize)) Camera.AddCallbackBuffer(buffer); } Camera.StartPreview(); Camera.SetNonMarshalingPreviewCallback(cameraEventListener); // Docs suggest if Auto or Macro modes, we should invoke AutoFocus at least once var currentFocusMode = Camera.GetParameters().FocusMode; if (currentFocusMode == Camera.Parameters.FocusModeAuto || currentFocusMode == Camera.Parameters.FocusModeMacro) { AutoFocus(); } } catch (Exception ex) { Android.Util.Log.Debug(MobileBarcodeScanner.TAG, ex.ToString()); return; } finally { PerformanceCounter.Stop(perf, "Setup Camera Parameters took {0}ms"); } }