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 SurfaceCreated(ISurfaceHolder holder) { // TODO Auto-generated method stub try { camera = Android.Hardware.Camera.Open(); Android.Hardware.Camera.Parameters param = camera.GetParameters(); // Check what resolutions are supported by your camera IList <Android.Hardware.Camera.Size> sizes = param.SupportedPictureSizes; // setting small image size in order to avoid OOM error Android.Hardware.Camera.Size cameraSize = null; foreach (Android.Hardware.Camera.Size size in sizes) { //set whatever size you need //if(size.height<500) { cameraSize = size; break; //} } if (cameraSize != null) { param.SetPictureSize(cameraSize.Width, cameraSize.Height); camera.SetParameters(param); float ratio = relativeLayout.Height * 1f / cameraSize.Height; float w = cameraSize.Width * ratio; float h = cameraSize.Height * ratio; RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams((int)w, (int)h); cameraSurfaceView.LayoutParameters = (lp); } } catch (RuntimeException e) { Toast.MakeText( ApplicationContext, "Device camera is not working properly, please try after sometime.", ToastLength.Long).Show(); } }
//初始化相机 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); } }
protected override async void OnCreate(Bundle bundle) { try { base.OnCreate(bundle); //Логин и пароль от ФТП client.Credentials = new NetworkCredential("u163406", "JzjTZ3OPl0Ob"); Xamarin.Essentials.Platform.Init(this, bundle); SetContentView(Resource.Layout.activity_main); //Record - кнопка, остальные 2 - превью камер (по 1пикселю размером) var record = FindViewById <Button>(Resource.Id.Record); var video = FindViewById <VideoView>(Resource.Id.SampleVideoView); var frontvideo = FindViewById <VideoView>(Resource.Id.SampleVideoViewFront); //Ненужный блок, показывает уведомление если нету фронтальной камеры if (Camera.NumberOfCameras < 2) { Toast.MakeText(this, "Front camera missing", ToastLength.Long).Show(); return; } //Задаём на переменную Camera фронталку (0 - задняя, 1 - фронт (наверно)) var camera = Camera.Open(1); //Не уверен что параметры работают в принципе, но решил их оставить Android.Hardware.Camera.Parameters parameters = camera.GetParameters(); parameters.SetPictureSize(1920, 1080); camera.SetParameters(parameters); camera.SetDisplayOrientation(90); var rearcamera = Camera.Open(0); Android.Hardware.Camera.Parameters rearparameters = rearcamera.GetParameters(); rearparameters.SetPictureSize(1920, 1080); rearcamera.SetParameters(rearparameters); rearcamera.SetDisplayOrientation(90); //Первый обработчик, отвечает за заднюю камеру record.Click += async delegate { i = 1; while (i == 1) { try { rearcamera.Unlock(); recorder = new MediaRecorder(); recorder.SetCamera(rearcamera); recorder.SetVideoSource(VideoSource.Camera); recorder.SetAudioSource(AudioSource.Mic); recorder.SetOutputFormat(OutputFormat.Default); recorder.SetVideoEncoder(VideoEncoder.Default); recorder.SetAudioEncoder(AudioEncoder.Default); //Битрейт и разрешение. recorder.SetVideoEncodingBitRate(12000); recorder.SetVideoSize(1920, 1080); //Адрес локального сохранения файла recorder.SetOutputFile(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/test" + a + ".mp4"); recorder.SetPreviewDisplay(video.Holder.Surface); recorder.Prepare(); recorder.Start(); await Task.Delay(5000); a++; recorder.Stop(); recorder.Reset(); } catch (Exception ex) { } } }; //Обработчик кнопки, отвечающий за фронтальную камеру. record.Click += async delegate { await sendfile(); }; record.Click += async delegate { b = 1; while (b == 1) { try { camera.Unlock(); frontrecorder = new MediaRecorder(); frontrecorder.SetCamera(camera); frontrecorder.SetVideoSource(VideoSource.Camera); frontrecorder.SetOutputFormat(OutputFormat.Default); frontrecorder.SetVideoEncoder(VideoEncoder.Default); //Битрейт и разрешение. frontrecorder.SetVideoEncodingBitRate(6000); frontrecorder.SetVideoSize(1280, 720); //Адрес локального сохранения файла frontrecorder.SetOutputFile(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/fronttest" + c + ".mp4"); frontrecorder.SetPreviewDisplay(frontvideo.Holder.Surface); frontrecorder.Prepare(); frontrecorder.Start(); await Task.Delay(5000); c++; frontrecorder.Stop(); frontrecorder.Reset(); } catch (Exception ex) { } } }; } catch (System.Exception ex) { } }
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()); } }