private void UpdateCameraAspect() { try { Android.Hardware.Camera.Parameters camParams = camera.GetParameters(); Android.Hardware.Camera.CameraInfo info = new Android.Hardware.Camera.CameraInfo(); Android.Hardware.Camera.GetCameraInfo((int)Android.Hardware.CameraFacing.Back, info); Android.Hardware.Camera.Size size = GetOptimalPreviewSize(camParams.SupportedPreviewSizes, width, height); camParams.SetPreviewSize(size.Width, size.Height); int rotation = (info.Orientation + 360) % 360; camParams.SetRotation(rotation); if (camParams.SupportedFocusModes.Contains(Android.Hardware.Camera.Parameters.FocusModeContinuousPicture)) { camParams.FocusMode = Android.Hardware.Camera.Parameters.FocusModeContinuousPicture; } camera.SetParameters(camParams); } catch (System.Exception e) { System.Console.WriteLine(e.Message); } }
public void SurfaceChanged(ISurfaceHolder holder, [GeneratedEnum] Format format, int width, int height) { if (surfaceHolder.Surface == null) { return; } try { cameraInstance.StopPreview(); cameraInstance.SetPreviewDisplay(surfaceHolder); Android.Hardware.Camera.Parameters parameters = cameraInstance.GetParameters(); Android.Hardware.Camera.Size optimalSize = CameraHelpers.GetOptimalPreviewSize(context, cameraInstance, width, height); parameters.SetPreviewSize(optimalSize.Width, optimalSize.Height); parameters.SetPictureSize(optimalSize.Width, optimalSize.Height); parameters.FocusMode = Android.Hardware.Camera.Parameters.FocusModeContinuousPicture; cameraInstance.SetParameters(parameters); cameraInstance.SetDisplayOrientation(CameraHelpers.GetCameraOrientation(context)); cameraInstance.StartPreview(); } catch (Exception e) { Log.Debug("Camera activity", "Error starting camera preview: " + e.Message); } }
public void StartCamera(int camID, string flash, string resolution, string focuse) { StopCamera(); try { mCamera = Android.Hardware.Camera.Open(camID); } catch (Exception) { try { byte[] dataPacker = ((MainActivity)MainActivity.global_activity).MyDataPacker("CAMNOT", System. Text.Encoding.UTF8.GetBytes("vid")); MainActivity.Soketimiz.BeginSend(dataPacker, 0, dataPacker.Length, SocketFlags.None, null, null); } catch (Exception) { } return; } Android.Hardware.Camera.Parameters params_ = mCamera.GetParameters(); SetFlashModeOff(params_); if (flash == "1") { FlashParam(params_); } /// params_.SetPreviewSize(int.Parse(resolution.Split('x')[0]), int.Parse(resolution.Split('x')[1])); /// if (focuse == "1") { SetFocusModeOn(params_); } /// SetSceneModeAuto(params_); SetWhiteBalanceAuto(params_); mCamera.SetParameters(params_); try { mCamera.SetPreviewDisplay(hldr); mCamera.SetPreviewCallback(this); mCamera.StartPreview(); } catch (Exception) { try { byte[] senddata = ((MainActivity)MainActivity.global_activity).MyDataPacker("CAMNOT", Encoding.UTF8.GetBytes("Can't start camera")); MainActivity.Soketimiz.BeginSend(senddata, 0, senddata.Length, SocketFlags.None, null, null); } catch (Exception) { } StopCamera(); return; } }
private void OpenCamera() { if (CheckSelfPermission(Manifest.Permission.Camera) != Permission.Granted) { RequestCameraPermission(); return; } camera = Android.Hardware.Camera.Open(); Android.Hardware.Camera.Parameters parameters = camera.GetParameters(); parameters.PictureFormat = ImageFormatType.Jpeg; parameters.PreviewFormat = ImageFormatType.Nv21; if (parameters.SupportedFocusModes.Contains(Android.Hardware.Camera.Parameters.FocusModeContinuousVideo)) { parameters.FocusMode = Android.Hardware.Camera.Parameters.FocusModeContinuousVideo; } IList <Android.Hardware.Camera.Size> suportedPreviewSizes = parameters.SupportedPreviewSizes; int i = 0; for (i = 0; i < suportedPreviewSizes.Count; i++) { if (suportedPreviewSizes[i].Width < 1300) { break; } } parameters.SetPreviewSize(suportedPreviewSizes[i].Width, suportedPreviewSizes[i].Height); camera.SetParameters(parameters); camera.SetDisplayOrientation(90); camera.SetPreviewCallback(this); camera.SetPreviewDisplay(surface.Holder); camera.StartPreview(); //Get camera width previewWidth = parameters.PreviewSize.Width; //Get camera height previewHeight = parameters.PreviewSize.Height; //Resize SurfaceView Size float scaledHeight = previewWidth * 1.0f * surface.Width / previewHeight; float prevHeight = surface.Height; ViewGroup.LayoutParams lp = surface.LayoutParameters; lp.Width = surface.Width; lp.Height = (int)scaledHeight; surface.LayoutParameters = lp; surface.Top = (int)((prevHeight - scaledHeight) / 2); surface.DrawingCacheEnabled = true; handlerThread = new HandlerThread("background"); handlerThread.Start(); backgroundHandler = new MyHandler(handlerThread.Looper); }
private void StartCamera() { holder = view.Holder; holder.AddCallback(this); camera = Android.Hardware.Camera.Open(1); Android.Hardware.Camera.Parameters p = camera.GetParameters(); p.SetPreviewSize(320, 240); camera.SetDisplayOrientation(90); camera.SetParameters(p); camera.SetPreviewCallback(this); }
public void SwitchCamera(Android.Hardware.Camera camera) { PreviewCamera = camera; try { camera.SetPreviewDisplay(mHolder); } catch (Java.IO.IOException exception) { Log.Error(TAG, "IOException caused by setPreviewDisplay()", exception); } Android.Hardware.Camera.Parameters parameters = camera.GetParameters(); parameters.SetPreviewSize(mPreviewSize.Width, mPreviewSize.Height); Console.WriteLine("Param mPreviewSize.Width:" + mPreviewSize.Width + " mPreviewSize.height:" + mPreviewSize.Height); RequestLayout(); camera.SetParameters(parameters); }
private void opPreviewSize(int width, int height) { if (camera != null && width > 0) { try { Android.Hardware.Camera.Parameters parameters = camera.GetParameters(); Android.Hardware.Camera.Size optSize = getOptimalSize(width, height, new List <Android.Hardware.Camera.Size>(camera.GetParameters().SupportedPreviewSizes)); Log.Info("wtf", "opPreviewSize-> " + optSize.Width + " " + optSize.Height); parameters.SetPreviewSize(optSize.Width, optSize.Height); // parameters.setPreviewFpsRange(10, 15); camera.SetParameters(parameters); camera.StartPreview(); } catch (RuntimeException e) { e.PrintStackTrace(); } } }
//初始化相机 private void initCamera() { mCamera.StopPreview(); if (null != mCamera) { Android.Hardware.Camera.Parameters myParam = mCamera.GetParameters(); //设置大小和方向等参数 myParam.SetPreviewSize(1280, 720); myParam.SetPictureSize(640, 480); myParam.SetRotation(90); myParam.Set("iso", 100); myParam.Set("jpeg-quality", 100); myParam.Zoom = 14; mCamera.SetDisplayOrientation(90); mCamera.SetParameters(myParam); mCamera.StartPreview(); //mCamera.SetPreviewCallback (this); } }
public void StartCamera(int camID, string flash, string resolution, string focuse) { StopCamera(); try { mCamera = Android.Hardware.Camera.Open(camID); } catch (Exception) { try { ((MainActivity)MainActivity.global_activity).soketimizeGonder("CAMNOT", "[VERI]vid[0x09]"); } catch (Exception) { } return; } Android.Hardware.Camera.Parameters params_ = mCamera.GetParameters(); SetFlashModeOff(params_); if (flash == "1") { FlashParam(params_); } /// params_.SetPreviewSize(int.Parse(resolution.Split('x')[0]), int.Parse(resolution.Split('x')[1])); /// if (focuse == "1") { SetFocusModeOn(params_); } /// SetSceneModeAuto(params_); SetWhiteBalanceAuto(params_); mCamera.SetParameters(params_); try { mCamera.SetPreviewDisplay(hldr); mCamera.SetPreviewCallback(this); mCamera.StartPreview(); } catch (Exception) { try { ((MainActivity)MainActivity.global_activity).soketimizeGonder("CAMNOT", "[VERI]Can't start camera[0x09]"); } catch (Exception) { } StopCamera(); return; } }
public void OnSurfaceChanged(Javax.Microedition.Khronos.Opengles.IGL10 gl, int width, int height) { // Adjust the viewport based on geometry changes, // such as screen rotation GLES20.GlViewport(0, 0, width, height); float ratio = (float)width / height; // this projection matrix is applied to object coordinates // in the onDrawFrame() method Android.Opengl.Matrix.FrustumM(mProjectionMatrix, 0, -ratio, ratio, -1, 1, 3, 7); GLES20.GlViewport(0, 0, width, height); if (mCamera != null) { Android.Hardware.Camera.Parameters p = mCamera.GetParameters(); System.Collections.Generic.IList <Android.Hardware.Camera.Size> sizes = p.SupportedPreviewSizes; p.SetPreviewSize(sizes[0].Width, sizes[0].Height); mCamera.SetParameters(p); //mCamera.SetPreviewDisplay(holder); mCamera.StartPreview(); } }
public void StartCamera(int camID, string flash, string resolution) { StopCamera(); try { mCamera = Android.Hardware.Camera.Open(camID); } catch (Exception) { try { ((MainActivity)MainActivity.global_activity).soketimizeGonder("CAMNOT", "[VERI][0x09]"); } catch (Exception) { } return; } Android.Hardware.Camera.Parameters params_ = mCamera.GetParameters(); SetFlashModeOff(params_); if (flash == "1") { FlashParam(params_); } /// params_.SetPreviewSize(int.Parse(resolution.Split('x')[0]), int.Parse(resolution.Split('x')[1])); /// SetFocusModeAuto(params_); /// SetSceneModeAuto(params_); SetWhiteBalanceAuto(params_); mCamera.SetParameters(params_); try { mCamera.SetPreviewDisplay(hldr); mCamera.SetPreviewCallback(this); mCamera.StartPreview(); } catch (Exception) { Android.Widget.Toast.MakeText(MainActivity.global_activity, "START CAMERA", Android.Widget.ToastLength.Long).Show(); } }
public void StartCamera(int camID, string flash, string resolution, string focuse) { //StopCamera(); try { mCamera = Android.Hardware.Camera.Open(camID); } catch (Exception) { try { byte[] dataPacker = ForegroundService._globalService.MyDataPacker("CAMNOT", System. Text.Encoding.UTF8.GetBytes("OPENERR")); ForegroundService.Soketimiz.BeginSend(dataPacker, 0, dataPacker.Length, SocketFlags.None, null, null); } catch (Exception) { } return; } try { if (camSock != null) { try { camSock.Close(); } catch { } try { camSock.Dispose(); } catch { } } ID = MainValues.KRBN_ISMI + "_" + ForegroundService._globalService.GetIdentifier(); camSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ipadresi_dosya = Dns.GetHostAddresses(MainValues.IP)[0]; IPEndPoint endpoint_dosya = new IPEndPoint(ipadresi_dosya, MainValues.port); camSock.SendBufferSize = int.MaxValue; camSock.SendTimeout = -1; camSock.NoDelay = true; ForegroundService._globalService.SetKeepAlive(camSock, 2000, 1000); camSock.Connect(endpoint_dosya); byte[] ready = ForegroundService._globalService.MyDataPacker("MYVIDREADY", Encoding.UTF8.GetBytes("ECHO"), ID); camSock.Send(ready, 0, ready.Length, SocketFlags.None); Android.Hardware.Camera.Parameters params_ = mCamera.GetParameters(); SetFlashModeOff(params_); if (flash == "1") { FlashParam(params_); } /// params_.SetPreviewSize(int.Parse(resolution.Split('x')[0]), int.Parse(resolution.Split('x')[1])); /// if (focuse == "1") { SetFocusModeOn(params_); } /// SetSceneModeAuto(params_); SetWhiteBalanceAuto(params_); try { mCamera.SetParameters(params_); mCamera.SetPreviewDisplay(hldr); mCamera.SetPreviewCallback(this); mCamera.StartPreview(); } catch (Exception) { try { byte[] senddata = ForegroundService._globalService.MyDataPacker("CAMNOT", Encoding.UTF8.GetBytes("PREVERR")); ForegroundService.Soketimiz.BeginSend(senddata, 0, senddata.Length, SocketFlags.None, null, null); } catch (Exception) { } StopCamera(); } } catch (Exception ex) { try { byte[] senddata = ForegroundService._globalService.MyDataPacker("CAMNOT", Encoding.UTF8.GetBytes(ex.Message)); ForegroundService.Soketimiz.BeginSend(senddata, 0, senddata.Length, SocketFlags.None, null, null); } catch (Exception) { } StopCamera(); } }
public void SurfaceChanged(ISurfaceHolder holder, Android.Graphics.Format format, int w, int h) { // Now that the size is known, set up the camera parameters and begin // the preview. //Android.Hardware.Camera.Parameters parameters = PreviewCamera.GetParameters(); //parameters.SetPreviewSize(mPreviewSize.Width, mPreviewSize.Height); //RequestLayout(); //PreviewCamera.SetParameters(parameters); //PreviewCamera.StartPreview(); //if (mSupportedPreviewSizes != null) //{ // mPreviewSize = _Context.GetOptimalPreviewSize(mSupportedPreviewSizes); //} if (_camera == null) { return; } if (_Context.previewing) { //_camera.StopPreview(); //_Context.previewing = false; if (this.Resources.Configuration.Orientation != Android.Content.Res.Orientation.Landscape) { _camera.SetDisplayOrientation(90); //Android.Hardware.Camera.Size cameraSize = _camera.GetParameters().PictureSize; //int wr = relativeLayout.Width; //int hr = relativeLayout.Height; //float ratio = relativeLayout.Width * 1f / cameraSize.Height; //w = cameraSize.Width * ratio; //h = cameraSize.Height * ratio; //RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams((int)h, (int)w); //cameraSurfaceView.LayoutParameters = (lp); } else { _camera.SetDisplayOrientation(0); //Android.Hardware.Camera.Size cameraSize = camera.GetParameters().PictureSize; //float ratio = relativeLayout.Height * 1f / cameraSize.Height; //w = cameraSize.Width * ratio; //h = cameraSize.Height * ratio; //RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams((int)w, (int)h); //cameraSurfaceView.LayoutParameters = (lp); } return; } try { //float w = 0; //float h = 0; if (this.Resources.Configuration.Orientation != Android.Content.Res.Orientation.Landscape) { _camera.SetDisplayOrientation(90); //Android.Hardware.Camera.Size cameraSize = _camera.GetParameters().PictureSize; //int wr = relativeLayout.Width; //int hr = relativeLayout.Height; //float ratio = relativeLayout.Width * 1f / cameraSize.Height; //w = cameraSize.Width * ratio; //h = cameraSize.Height * ratio; //RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams((int)h, (int)w); //cameraSurfaceView.LayoutParameters = (lp); } else { _camera.SetDisplayOrientation(0); //Android.Hardware.Camera.Size cameraSize = camera.GetParameters().PictureSize; //float ratio = relativeLayout.Height * 1f / cameraSize.Height; //w = cameraSize.Width * ratio; //h = cameraSize.Height * ratio; //RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams((int)w, (int)h); //cameraSurfaceView.LayoutParameters = (lp); } //camera.SetPreviewDisplay(cameraSurfaceHolder); //camera.StartPreview(); Android.Hardware.Camera.Parameters parameters = PreviewCamera.GetParameters(); parameters.SetPreviewSize(mPreviewSize.Width, mPreviewSize.Height); Console.WriteLine("Param mPreviewSize.Width:" + mPreviewSize.Width + " mPreviewSize.height:" + mPreviewSize.Height); RequestLayout(); parameters.SetPictureSize(mPreviewSize.Width, mPreviewSize.Height); parameters.JpegQuality = (100); parameters.PictureFormat = (ImageFormat.Jpeg); PreviewCamera.SetParameters(parameters); PreviewCamera.GetParameters().FocusMode = Android.Hardware.Camera.Parameters.FocusModeAuto; if (PreviewCamera.GetParameters().IsZoomSupported) { PreviewCamera.GetParameters().Zoom = (0); } PreviewCamera.StartPreview(); _Context.previewing = true; } catch (System.Exception e) { System.Console.WriteLine("SurfaceChanged:" + e.ToString()); } }
protected override void OnStart() { try { if (Camera == null) { Camera = Hardware.Camera.Open(cameraIndex); } if (Texture == null) { Texture = new Graphics.SurfaceTexture(0); } CameraPreviewCallback callback = new CameraPreviewCallback(); callback.PreviewUpdated += Callback_PreviewUpdated; Hardware.Camera.Parameters parameter = Camera.GetParameters(); List <Hardware.Camera.Size> supportSize = parameter.SupportedPreviewSizes.OrderByDescending(x => x.Width).ToList(); foreach (Hardware.Camera.Size size in supportSize) { CvLogger.Log(this, $"Camera Support Size: W{size.Width},H{size.Height}"); if (size.Width == 960 && size.Height == 720) { parameter.SetPreviewSize(size.Width, size.Height); CvLogger.Log(this, $"SET Camera Size: W{size.Width},H{size.Height}"); } } string[] supportedFocusMode = parameter.SupportedFocusModes.ToArray(); if (supportedFocusMode.Contains(Hardware.Camera.Parameters.FocusModeContinuousVideo)) { parameter.FocusMode = Hardware.Camera.Parameters.FocusModeContinuousVideo; } else if (supportedFocusMode.Contains(Hardware.Camera.Parameters.FocusModeContinuousPicture)) { parameter.FocusMode = Hardware.Camera.Parameters.FocusModeContinuousPicture; } parameter.ColorEffect = Hardware.Camera.Parameters.EffectNone; width = parameter.PreviewSize.Width; height = parameter.PreviewSize.Height; fps = parameter.PreviewFrameRate; cameraType = parameter.PreviewFormat; CvLogger.Log(this, string.Format("Camera is creating W{0} H{1} FPS{2}", width, height, fps)); Camera.SetParameters(parameter); Camera.SetPreviewCallback(callback); Camera.SetPreviewTexture(Texture); Camera.StartPreview(); cameraOn = true; } catch (Exception ex) { CvLogger.Log(this, "Camera Init Failed.\n" + ex.ToString()); Dispose(); throw new ArgumentException("Camera Exception", ex); } }
private void configureCameraAndStartPreview(Android.Hardware.Camera camera) { // Setting camera parameters when preview is running can cause crashes on some android devices stopPreview(); // Configure camera orientation. This is needed for both correct preview orientation // and recognition orientation = getCameraOrientation(); camera.SetDisplayOrientation(orientation); // Configure camera parameters Android.Hardware.Camera.Parameters parameters = camera.GetParameters(); // Select preview size. The preferred size for Text Capture scenario is 1080x720. In some scenarios you might // consider using higher resolution (small text, complex background) or lower resolution (better performance, less noise) cameraPreviewSize = null; foreach (Android.Hardware.Camera.Size size in parameters.SupportedPreviewSizes) { if (size.Height <= 720 || size.Width <= 720) { if (cameraPreviewSize == null) { cameraPreviewSize = size; } else { int resultArea = cameraPreviewSize.Width * cameraPreviewSize.Height; int newArea = size.Width * size.Height; if (newArea > resultArea) { cameraPreviewSize = size; } } } } parameters.SetPreviewSize(cameraPreviewSize.Width, cameraPreviewSize.Height); // Zoom parameters.Zoom = cameraZoom; // Buffer format. The only currently supported format is NV21 parameters.PreviewFormat = Android.Graphics.ImageFormatType.Nv21; // Default focus mode parameters.FocusMode = Android.Hardware.Camera.Parameters.FocusModeAuto; // Done camera.SetParameters(parameters); // The camera will fill the buffers with image data and notify us through the callback. // The buffers will be sent to camera on requests from recognition service (see implementation // of ITextCaptureService.Callback.onRequestLatestFrame above) camera.SetPreviewCallbackWithBuffer(cameraPreviewCallback); // Clear the previous recognition results if any clearRecognitionResults(); // Width and height of the preview according to the current screen rotation int width = 0; int height = 0; switch (orientation) { case 0: case 180: width = cameraPreviewSize.Width; height = cameraPreviewSize.Height; break; case 90: case 270: width = cameraPreviewSize.Height; height = cameraPreviewSize.Width; break; } // Configure the view scale and area of interest (camera sees it as rotated 90 degrees, so // there's some confusion with what is width and what is height) surfaceViewWithOverlay.setScaleX(surfaceViewWithOverlay.Width, width); surfaceViewWithOverlay.setScaleY(surfaceViewWithOverlay.Height, height); // Area of interest int marginWidth = (areaOfInterestMargin_PercentOfWidth * width) / 100; int marginHeight = (areaOfInterestMargin_PercentOfHeight * height) / 100; surfaceViewWithOverlay.setAreaOfInterest( new Rect(marginWidth, marginHeight, width - marginWidth, height - marginHeight)); // Start preview camera.StartPreview(); setCameraFocusMode(Android.Hardware.Camera.Parameters.FocusModeAuto); autoFocus(finishCameraInitialisationAutoFocusCallback); inPreview = true; }