private void OpenCamera(CameraSelection cameraSelection) { CloseCamera(); int cameraCount = 0; _cameraInfo = new Camera.CameraInfo(); cameraCount = Camera.NumberOfCameras; for (int camIdx = 0; camIdx < cameraCount; camIdx++) { Camera.GetCameraInfo(camIdx, _cameraInfo); if (_cameraInfo.Facing == cameraSelection.ToCameraFacing()) { try { _camera = Camera.Open(camIdx); //var size = new Camera.Size(_camera, 300, 300); _cameraHardwareRotation = _cameraInfo.Orientation; _selectedCamera = cameraSelection; _isCameraStarted = true; } catch (Exception e) { CloseCamera(); Log.Error("CustomCameraView OpenCamera", e.Message); } } } }
public CameraInfo(CameraManager cameraManager, IWindowManager windowManager) { _cameraManager = cameraManager; _windowManager = windowManager; _info = new Camera.CameraInfo(); _fromFacingToID = DictionaryCameraFacing(); }
/// <summary> /// Opens the camera. /// </summary> internal void OpenCamera() { // get number of cameras int cameraCount = Camera.NumberOfCameras; // determines whether camera is found bool isCameraFound = false; Camera.CameraInfo camInfo = new Camera.CameraInfo(); // for each camera for (int i = 0; i < cameraCount; i++) { // get camera information Camera.GetCameraInfo(i, camInfo); // if camera is back camera if (camInfo.Facing == CameraFacing.Back) { // open camera _camera = Camera.Open(i); // indicate that camera is found isCameraFound = true; break; } } // if camera is not found if (!isCameraFound) { // open the first camera _camera = Camera.Open(0); } }
public void SurfaceCreated(ISurfaceHolder holder) { Camera.SetPreviewDisplay(holder); Camera.CameraInfo camInfo = new Camera.CameraInfo(); Camera.GetCameraInfo(0, camInfo); var rotation = _Context.WindowManager.DefaultDisplay.Rotation; int degrees = 0; switch (rotation) { case SurfaceOrientation.Rotation0: degrees = 0; break; case SurfaceOrientation.Rotation90: degrees = 90; break; case SurfaceOrientation.Rotation180: degrees = 180; break; case SurfaceOrientation.Rotation270: degrees = 270; break; } RotataDegrees = (camInfo.Orientation - degrees + 360) % 360; Camera.SetDisplayOrientation(RotataDegrees); Camera.StartPreview(); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Hide the window title and go fullscreen. RequestWindowFeature(WindowFeatures.NoTitle); Window.AddFlags(WindowManagerFlags.Fullscreen); // Create our Preview view and set it as the content of our activity. mPreview = new Preview(this); SetContentView(mPreview); // Find the total number of cameras available numberOfCameras = Camera.NumberOfCameras; // Find the ID of the default camera Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); for (int i = 0; i < numberOfCameras; i++) { Camera.GetCameraInfo(i, cameraInfo); if (cameraInfo.Facing == CameraFacing.Back) { defaultCameraId = i; } } }
public static int GetCameraOrientation(Context context) { Camera.CameraInfo info = new Camera.CameraInfo(); //0 - camera facing back Camera.GetCameraInfo(0, info); IWindowManager wm = context.GetSystemService(Context.WindowService).JavaCast <IWindowManager>(); Display display = wm.DefaultDisplay; var rotation = display.Rotation; int degrees = 0; switch (rotation) { case SurfaceOrientation.Rotation0: degrees = 0; break; case SurfaceOrientation.Rotation90: degrees = 90; break; case SurfaceOrientation.Rotation180: degrees = 180; break; case SurfaceOrientation.Rotation270: degrees = 270; break; } return((info.Orientation - degrees + 360) % 360); }
public static Camera GetCameraInstance() { Camera camera = null; int numCams = Camera.NumberOfCameras; if (numCams > 0) { Camera.CameraInfo info = new Camera.CameraInfo(); try { for (int i = 0; i < numCams; i++) { Camera.GetCameraInfo(i, info); if (info.Facing == Camera.CameraInfo.CameraFacingBack) { camera = Camera.Open(i); camera.SetDisplayOrientation(90); // also set the camera's output orientation Camera.Parameters param = camera.GetParameters(); param.SetRotation(90); camera.SetParameters(param); break; } } } catch (RuntimeException ex) { ex.PrintStackTrace(); } } return(camera); }
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Open an instance of the first camera and retrieve its info. camera = GetCameraInstance(CAMERA_ID); Camera.CameraInfo cameraInfo = null; if (camera != null) { // Get camera info only if the camera is available cameraInfo = new Camera.CameraInfo(); Camera.GetCameraInfo(CAMERA_ID, cameraInfo); } if (camera == null || cameraInfo == null) { Toast.MakeText(Activity, "Camera is not available.", ToastLength.Short).Show(); return(inflater.Inflate(Resource.Layout.fragment_camera_unavailable, null)); } View root = inflater.Inflate(Resource.Layout.fragment_camera, null); // Get the rotation of the screen to adjust the preview image accordingly. SurfaceOrientation displayRotation = Activity.WindowManager.DefaultDisplay.Rotation; // Create the Preview view and set it as the content of this Activity. cameraPreview = new CameraPreview(Activity, camera, cameraInfo, displayRotation); var preview = root.FindViewById <FrameLayout> (Resource.Id.camera_preview); preview.AddView(cameraPreview); return(root); }
public void SurfaceCreated(ISurfaceHolder holder) { try { //Try to open front camera if exist... Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); int cameraId = 0; int camerasCount = Camera.NumberOfCameras; for (int camIndex = 0; camIndex < camerasCount; camIndex++) { Camera.GetCameraInfo(camIndex, cameraInfo); if (cameraInfo.Facing == CameraFacing.Front) { cameraId = camIndex; break; } } mCamera = Camera.Open(cameraId); mCamera.SetPreviewDisplay(holder); } catch (Exception exception) { Console.WriteLine("TrackingFlow === Surface Created Exception === " + exception.Message); if (mCamera == null) { return; } mCamera.Release(); mCamera = null; } }
public CameraPreview(Context context, Camera camera, Camera.CameraInfo cameraInfo, SurfaceOrientation displayOrientation) : base(context) { this.mCamera = camera; this.mSurfaceHolder = this.Holder; this.mSurfaceHolder.AddCallback(this); this.mSurfaceHolder.SetType(SurfaceType.PushBuffers); }
public override Dialog OnCreateDialog(Bundle savedInstanceState) { if (Listener == null) { Dismiss(); return(null); } int numberOfCameras = Camera.NumberOfCameras; string[] cameraNames = new string[numberOfCameras]; int checkedIndex = 0; for (int i = 0; i < numberOfCameras; i++) { Camera.CameraInfo info = new Camera.CameraInfo(); Camera.GetCameraInfo(i, info); if (info.Facing == Camera.CameraInfo.CameraFacingFront) { cameraNames[i] = "Front Facing"; } else if (info.Facing == Camera.CameraInfo.CameraFacingBack) { cameraNames[i] = "Rear Facing"; } else { cameraNames[i] = "Camera ID: " + i; } if (i == CameraId) { checkedIndex = i; } } AlertDialog.Builder builder = new AlertDialog.Builder(Activity); // Set the dialog title builder.SetTitle(Resource.String.select_camera) // Specify the list array, the items to be selected by default (null for none), // and the listener through which to receive callbacks when items are selected .SetSingleChoiceItems(cameraNames, checkedIndex, (sender, args) => { CameraId = (int)args.Which; }) // Set the action buttons .SetPositiveButton(Android.Resource.String.Ok, (sender, args) => { if (Listener != null) { Listener.OnCameraSelected(CameraId); } }) .SetNegativeButton(Android.Resource.String.Cancel, (sender, args) => { }); return(builder.Create()); }
public static int GetCameraRotation() { int numCameras = Camera.NumberOfCameras; var cameraInfo = new Camera.CameraInfo(); for (int i = numCameras - 1; i >= 0; i--) { Camera.GetCameraInfo(i, cameraInfo); if (cameraInfo.Facing == CameraFacing.Front) { break; } } return(cameraInfo.Orientation); }
public static bool HasFrontCamera() { int numCameras = Camera.NumberOfCameras; var cameraInfo = new Camera.CameraInfo(); for (int i = 0; i < numCameras; i++) { Camera.GetCameraInfo(i, cameraInfo); if (cameraInfo.Facing == CameraFacing.Front) { return(true); } } return(false); }
private static Camera getDefaultCamera(int position) { // Find the total number of cameras available int mNumberOfCameras = Camera.NumberOfCameras; // Find the ID of the back-facing ("default") camera Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); for (int i = 0; i < mNumberOfCameras; i++) { Camera.GetCameraInfo(i, cameraInfo); if (((int)cameraInfo.Facing) == position) { return(Camera.Open(i)); } } return(null); }
public static Tuple <int, Camera> GetFrontFacingCameraWithId() { Tuple <int, Camera> cameraKeyValue = null; //if (_cameraKeyValue != null) // return _cameraKeyValue; var numberOfCameras = Camera.NumberOfCameras; var cameraInfo = new Camera.CameraInfo(); for (int i = 0; i < numberOfCameras; ++i) { Camera.GetCameraInfo(i, cameraInfo); if (cameraInfo.Facing == CameraFacing.Front) { cameraKeyValue = new Tuple <int, Camera>(i, Camera.Open(i)); break; } } return(cameraKeyValue); }
public Camera getCameraInstance() { Camera c = null; try { c = Camera.Open((int)Android.Hardware.CameraFacing.Back); if (c != null) { //toLargestSquare(c); toLargestImage(c); Camera.CameraInfo info = new Camera.CameraInfo(); Camera.GetCameraInfo(0, info); System.Diagnostics.Debug.WriteLine("DHB:CameraServices_Droid:getCameraInstance info.Orientation:" + info.Orientation); degreesToRotateCameraToNatural = info.Orientation; } } catch (Exception e) { } return(c); }
public CameraPreview(Context context, Camera camera, Camera.CameraInfo cameraInfo, SurfaceOrientation displayOrientation) : base(context) { // Do not initialize if no camera has been set if (camera == null || cameraInfo == null) { return; } this.camera = camera; this.cameraInfo = cameraInfo; this.displayOrientation = displayOrientation; // Install a SurfaceHolder.Callback so we get notified when the // underlying surface is created and destroyed. holder = Holder; holder.AddCallback(this); }
public static int GetCameraDisplayOrientation(int cameraID) { //return 270; var info = new Camera.CameraInfo(); Camera.GetCameraInfo(cameraID, info); var rotation = ((Activity)Forms.Context).WindowManager.DefaultDisplay.Rotation; int degrees = 0; switch (rotation) { case SurfaceOrientation.Rotation0: degrees = 0; break; case SurfaceOrientation.Rotation90: degrees = 90; break; case SurfaceOrientation.Rotation180: degrees = 180; break; case SurfaceOrientation.Rotation270: degrees = 270; break; } int result; if (info.Facing == CameraFacing.Front) { result = (info.Orientation + degrees) % 360; result = (360 - result) % 360; // compensate the mirror } else { // back-facing result = (info.Orientation - degrees + 360) % 360; } return(result); }
/* * Switching between cameras if there are multiple cameras on the device. */ public virtual void swapCamera(int index) { bool wasStarted = this.isCaptureStarted; if (mCamera != null) { stopCapture(); mCamera.release(); mCamera = null; } this.mCameraIndex = index; this.mCamera = Camera.open(index); this.mCurrentDeviceInfo = new Camera.CameraInfo(); Camera.getCameraInfo(index, mCurrentDeviceInfo); if (wasStarted) { startCapture(); } }
private bool CreateCamera(int cameraIndex) { #if !DEBUG try #endif { StopCamera(); _camera = Camera.Open(cameraIndex); _camera.SetPreviewDisplay(_surfaceHolder); if (OnCameraCreated != null) { if (_cameraInfo == null) { _cameraInfo = new Android.Hardware.Camera.CameraInfo(); } Camera.GetCameraInfo(cameraIndex, _cameraInfo); OnCameraCreated(this, new CameraInfoEventArgs(_camera, _cameraInfo)); } } #if !DEBUG catch (Exception excpt) { _camera.Release(); _camera = null; while (excpt.InnerException != null) { excpt = excpt.InnerException; } Report.Error(Context.PackageName, String.Format("Unable to create camera: {0}", excpt.Message)); return(false); // TODO: add more exception handling logic here } #endif return(true); }
/** * Calculate the correct orientation for a {@link Camera} preview that is displayed on screen. * * Implementation is based on the sample code provided in * {@link Camera#setDisplayOrientation(int)}. */ public static int CalculatePreviewOrientation(Camera.CameraInfo info, SurfaceOrientation rotation) { int degrees = 0; switch (rotation) { case SurfaceOrientation.Rotation0: degrees = 0; break; case SurfaceOrientation.Rotation90: degrees = 90; break; case SurfaceOrientation.Rotation180: degrees = 180; break; case SurfaceOrientation.Rotation270: degrees = 270; break; } int result; if (info.Facing == CameraFacing.Front) { result = (info.Orientation + degrees) % 360; result = (360 - result) % 360; // compensate the mirror } else // back-facing { result = (info.Orientation - degrees + 360) % 360; } return(result); }
public override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Create a RelativeLayout container that will hold a SurfaceView, // and set it as the content of our activity. mPreview = new Preview(this.Activity); // Find the total number of cameras available mNumberOfCameras = Camera.NumberOfCameras; // Find the ID of the default camera Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); for (int i = 0; i < mNumberOfCameras; i++) { Camera.GetCameraInfo(i, cameraInfo); if (cameraInfo.Facing == Camera.CameraInfo.CameraFacingBack) { mDefaultCameraId = i; } } SetHasOptionsMenu(mNumberOfCameras > 1); }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.CameraSurface); FindInstance(); gthrow.Visibility = ViewStates.Invisible; gedit.Visibility = ViewStates.Invisible; gedit.Enabled = false; pic_taken = 0; ///############################# switch cam_function to be implemented from this prototype gswitch_cam.Click += delegate { if (gNr_of_cam == 1) ///am doar o camera { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.SetMessage("Alert") .SetNeutralButton("Close", (Android.Content.IDialogInterfaceOnClickListener)null); AlertDialog alert = builder.Create(); alert.Show(); } else { if (gCam != null) { gCam.StopPreview(); gprew_cam.PrewCam = null; gCam.Release(); gCam = null; } gCam = Camera.Open((gcur_cam + 1) % gNr_of_cam); gcur_cam = (gcur_cam + 1) % gNr_of_cam; gprew_cam.Switch_cam(gCam); gparam = gCam.GetParameters(); gCam.SetParameters(gparam); gCam.StartPreview(); //rezolv treaba cu butoanele de jos gthrow.Visibility = ViewStates.Gone; } };/// ################### end switch cam ///##take pic function in main gtake_pic.Click += delegate { img_container = new the_image(); create_folder(); gCam.TakePicture(null, null, this); //rezolv treaba cu butoanele gthrow.Visibility = ViewStates.Visible; gthrow.Enabled = true; gtake_pic.Visibility = ViewStates.Invisible; gtake_pic.Enabled = false; gedit.SetWidth(gtake_pic.Width); gedit.Visibility = ViewStates.Visible; gedit.Enabled = true; gswitch_cam.Visibility = ViewStates.Invisible; gswitch_cam.Enabled = false; pic_taken = 1; //Intent intent = new Intent(this, typeof(PhotoView)); //intent.PutExtra("img_pack", JsonConvert.SerializeObject(img_container.bitma_pic)); //StartActivity(intent); //Finish(); }; ///## end here //if throw button is pressed delete picture delete_pic_if_needed(); //if Edit button is pressed edit_pic(); gNr_of_cam = Camera.NumberOfCameras; ///daca nr de cam =1 atunci va fi nevoie sa dam disable la butonu de switch cam, care trebe si ala facut CameraInfo cam_info = new Camera.CameraInfo(); for (int i = 0; i < gNr_of_cam; i++) { Camera.GetCameraInfo(i, cam_info); if (cam_info.Facing == CameraFacing.Front) { gDef_front_cam = i; } } gCam = Camera.Open(gDef_front_cam); //if(gCam == null) //{ // gtake_pic.Text = "NULL"; //} // am verificat daca am camera, sigur am gcur_cam = gDef_front_cam; gparam = gCam.GetParameters(); if (gparam.FocusMode.Contains(Camera.Parameters.FocusModeAuto)) { gparam.FocusMode = Camera.Parameters.FocusModeAuto; } gCam.SetParameters(gparam); gprew_cam = new Preview(this, gsurf_view); gCam.StartPreview(); }
protected override void OnLayout(bool changed, int left, int top, int right, int bottom) { if (!changed) { return; } int width = right - left; int height = bottom - top; int previewWidth = width; int previewHeight = height; int degrees = 0; if (mPreviewSize != null) { Display display = mContext.GetSystemService(Context.WindowService).JavaCast <IWindowManager>().DefaultDisplay; switch (display.Rotation) { case SurfaceOrientation.Rotation0: previewWidth = mPreviewSize.Height; previewHeight = mPreviewSize.Width; mCamera.SetDisplayOrientation(90); degrees = 0; break; case SurfaceOrientation.Rotation90: previewWidth = mPreviewSize.Width; previewHeight = mPreviewSize.Height; degrees = 90; break; case SurfaceOrientation.Rotation180: previewWidth = mPreviewSize.Height; previewHeight = mPreviewSize.Width; degrees = 180; break; case SurfaceOrientation.Rotation270: previewWidth = mPreviewSize.Width; previewHeight = mPreviewSize.Height; mCamera.SetDisplayOrientation(180); degrees = 270; break; } } int scaledChildHeight = previewHeight * width / previewWidth; //adjust to make explicitally 16:9 //height = (int)(width * (1080f / 1920)); //Console.WriteLine("Scaled to " + width + " : " + scaledChildHeight); mCameraView.Layout(0, (height - scaledChildHeight) / 2, width, scaledChildHeight + ((height - scaledChildHeight) / 2)); Camera.CameraInfo info = new Camera.CameraInfo(); Camera.GetCameraInfo(0, info); int rotate = (info.Orientation - degrees + 360) % 360; Camera.Parameters camParams = mCamera.GetParameters(); camParams.SetRotation(rotate); mCamera.SetParameters(camParams); }
public override void init() { mCamera = Camera.open(mCameraIndex); mCurrentDeviceInfo = new Camera.CameraInfo(); Camera.getCameraInfo(mCameraIndex, mCurrentDeviceInfo); }
public CameraInfo(CameraManager cameraManager) { _cameraManager = cameraManager; _info = new Camera.CameraInfo(); }
public CameraInfoEventArgs(Camera camera, Camera.CameraInfo cameraInfo) { _camera = camera; _cameraInfo = cameraInfo; }