Beispiel #1
0
        public void OpenCamera(global::Android.Hardware.Camera camera)
        {
            _camera = camera;
            var cameraParams = _camera.GetParameters();

            if (Resources.Configuration.Orientation != global::Android.Content.Res.Orientation.Landscape)
            {
                cameraParams.Set("orientation", "portrait");
                _camera.SetDisplayOrientation(90);
                cameraParams.SetRotation(90);
            }
            else
            {
                cameraParams.Set("orientation", "landscape");
                _camera.SetDisplayOrientation(0);
                cameraParams.SetRotation(0);
            }

            var bestPictureSize = GetWorstPictureSize(cameraParams);

            if (bestPictureSize != default(Size))
            {
                cameraParams.SetPictureSize(bestPictureSize.Width, bestPictureSize.Height);
            }

            _camera.SetParameters(cameraParams);

            if (_shouldInitializeCamera)
            {
                _camera.SetPreviewDisplay(Holder);
                _camera.StartPreview();
                _shouldInitializeCamera = false;
            }
        }
Beispiel #2
0
        public virtual unsafe void OnPreviewFrame(byte[] p0, global::Android.Hardware.Camera p1)
        {
            if (id_onPreviewFrame_arrayBLandroid_hardware_Camera_ == IntPtr.Zero)
            {
                id_onPreviewFrame_arrayBLandroid_hardware_Camera_ = JNIEnv.GetMethodID(class_ref, "onPreviewFrame", "([BLandroid/hardware/Camera;)V");
            }
            IntPtr native_p0 = JNIEnv.NewArray(p0);

            try {
                JValue *__args = stackalloc JValue [2];
                __args [0] = new JValue(native_p0);
                __args [1] = new JValue(p1);

                if (GetType() == ThresholdType)
                {
                    JNIEnv.CallVoidMethod(Handle, id_onPreviewFrame_arrayBLandroid_hardware_Camera_, __args);
                }
                else
                {
                    JNIEnv.CallNonvirtualVoidMethod(Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "onPreviewFrame", "([BLandroid/hardware/Camera;)V"), __args);
                }
            } finally {
                if (p0 != null)
                {
                    JNIEnv.CopyArray(native_p0, p0);
                    JNIEnv.DeleteLocalRef(native_p0);
                }
            }
        }
Beispiel #3
0
        void ToggleFlashButtonTapped(object sender, EventArgs e)
        {
            flashOn = !flashOn;
            if (flashOn)
            {
                if (cameraType == CameraFacing.Back)
                {
                    toggleFlashButton.SetBackgroundResource(Resource.Drawable.FlashButton);
                    cameraType = CameraFacing.Back;

                    camera.StopPreview();
                    camera.Release();
                    camera = global::Android.Hardware.Camera.Open((int)cameraType);
                    var parameters = camera.GetParameters();
                    parameters.FlashMode = global::Android.Hardware.Camera.Parameters.FlashModeTorch;
                    camera.SetParameters(parameters);
                    camera.SetPreviewTexture(surfaceTexture);
                    PrepareAndStartCamera();
                }
            }
            else
            {
                toggleFlashButton.SetBackgroundResource(Resource.Drawable.NoFlashButton);
                camera.StopPreview();
                camera.Release();

                camera = global::Android.Hardware.Camera.Open((int)cameraType);
                var parameters = camera.GetParameters();
                parameters.FlashMode = global::Android.Hardware.Camera.Parameters.FlashModeOff;
                camera.SetParameters(parameters);
                camera.SetPreviewTexture(surfaceTexture);
                PrepareAndStartCamera();
            }
        }
Beispiel #4
0
        protected unsafe AutoFocusManager(global::Android.Hardware.Camera p0)
            : base(IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
        {
            if (Handle != IntPtr.Zero)
            {
                return;
            }

            try {
                JValue *__args = stackalloc JValue [1];
                __args [0] = new JValue(p0);
                if (GetType() != typeof(AutoFocusManager))
                {
                    SetHandle(
                        global::Android.Runtime.JNIEnv.StartCreateInstance(GetType(), "(Landroid/hardware/Camera;)V", __args),
                        JniHandleOwnership.TransferLocalRef);
                    global::Android.Runtime.JNIEnv.FinishCreateInstance(Handle, "(Landroid/hardware/Camera;)V", __args);
                    return;
                }

                if (id_ctor_Landroid_hardware_Camera_ == IntPtr.Zero)
                {
                    id_ctor_Landroid_hardware_Camera_ = JNIEnv.GetMethodID(class_ref, "<init>", "(Landroid/hardware/Camera;)V");
                }
                SetHandle(
                    global::Android.Runtime.JNIEnv.StartCreateInstance(class_ref, id_ctor_Landroid_hardware_Camera_, __args),
                    JniHandleOwnership.TransferLocalRef);
                JNIEnv.FinishCreateInstance(Handle, class_ref, id_ctor_Landroid_hardware_Camera_, __args);
            } finally {
            }
        }
Beispiel #5
0
        void SwitchCameraButtonTapped(object sender, EventArgs e)
        {
            if (isLoading)
            {
                return;
            }

            if (cameraType == CameraFacing.Front)
            {
                cameraType = CameraFacing.Back;

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

                camera.StopPreview();
                camera.Release();
                camera = global::Android.Hardware.Camera.Open((int)cameraType);
                camera.SetPreviewTexture(surfaceTexture);
                PrepareAndStartCamera();
            }
        }
Beispiel #6
0
		public void OnSurfaceTextureAvailable (SurfaceTexture surface, int width, int height)
		{
			camera = global::Android.Hardware.Camera.Open ((int) cameraType);
			textureView.LayoutParameters = new FrameLayout.LayoutParams (width, height);
			surfaceTexture = surface;

			camera.SetPreviewTexture (surface);
			PrepareAndStartCamera ();
		}
Beispiel #7
0
        public void OnSurfaceTextureAvailable(SurfaceTexture surface, int width, int height)
        {
            camera = global::Android.Hardware.Camera.Open((int)cameraType);
            textureView.LayoutParameters = new FrameLayout.LayoutParams(width, height);
            surfaceTexture = surface;

            camera.SetPreviewTexture(surface);
            PrepareAndStartCamera();
        }
Beispiel #8
0
 private void SwitchCameraButtonTapped(object sender, EventArgs e)
 {
     cameraType = cameraType == CameraFacing.Front ?
                  CameraFacing.Back : CameraFacing.Front;
     camera.StopPreview();
     camera.Release();
     camera = global::Android.Hardware.Camera.Open((int)cameraType);
     camera.SetPreviewTexture(surfaceTexture);
     PrepareAndStartCamera();
 }
Beispiel #9
0
 static void n_OnPreviewFrame_arrayBLandroid_hardware_Camera_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0, IntPtr native_p1)
 {
     global::Com.Moodstocks.Android.Camera.CameraInstance __this = global::Java.Lang.Object.GetObject <global::Com.Moodstocks.Android.Camera.CameraInstance> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     byte[] p0 = (byte[])JNIEnv.GetArray(native_p0, JniHandleOwnership.DoNotTransfer, typeof(byte));
     global::Android.Hardware.Camera p1 = global::Java.Lang.Object.GetObject <global::Android.Hardware.Camera> (native_p1, JniHandleOwnership.DoNotTransfer);
     __this.OnPreviewFrame(p0, p1);
     if (p0 != null)
     {
         JNIEnv.CopyArray(p0, native_p0);
     }
 }
        void ToggleFlashButtonTapped(object sender, EventArgs e)
        {
            flashOn = !flashOn;
            if (flashOn)
            {
                if (cameraType == CameraFacing.Back)
                {
                    toggleFlashButton.SetBackgroundResource(Resource.Drawable.FlashButton);
                    cameraType = CameraFacing.Back;

                    camera.StopPreview();
                    camera.Release();
                    camera = global::Android.Hardware.Camera.Open((int)cameraType);
                    var parameters = camera.GetParameters();
                    parameters.FlashMode = global::Android.Hardware.Camera.Parameters.FlashModeTorch;
                    camera.SetParameters(parameters);
                    camera.SetPreviewTexture(surfaceTexture);

                    PrepareAndStartCamera();
                }
            }
            else
            {
                toggleFlashButton.SetBackgroundResource(Resource.Drawable.NoFlashButton);
                camera.StopPreview();
                camera.Release();

                camera = global::Android.Hardware.Camera.Open((int)cameraType);


                var infoFocusCalibration      = global::Android.Hardware.Camera2.CameraCharacteristics.LensInfoFocusDistanceCalibration;
                var infoSupportHardLevel      = global::Android.Hardware.Camera2.CameraCharacteristics.InfoSupportedHardwareLevel;
                var infoMinimumFocus          = global::Android.Hardware.Camera2.CameraCharacteristics.LensPoseRotation;
                var infoSensorActiveArraySize = global::Android.Hardware.Camera2.CameraCharacteristics.SensorInfoActiveArraySize;

                //var paramters2 = camera2.

                var parameters = camera.GetParameters();

                parameters.FlashMode = global::Android.Hardware.Camera.Parameters.FlashModeOff;
                parameters.FocusMode = global::Android.Hardware.Camera.Parameters.FocusModeAuto;

                camera.SetParameters(parameters);
                camera.SetPreviewTexture(surfaceTexture);
                camera.SetDisplayOrientation(100);
                var max = camera.GetParameters().MaxNumFocusAreas;

                PrepareAndStartCamera();
                camera.StartFaceDetection();
            }
        }
Beispiel #11
0
        public void OnSurfaceTextureAvailable(SurfaceTexture surface, int width, int height)
        {
            if (ActivityCompat.CheckSelfPermission(Context, Manifest.Permission.Camera) != (int)Permission.Granted)
            {
                // Camera permission has not been granted
                RequestCameraPermission();
            }
            camera = global::Android.Hardware.Camera.Open((int)cameraType);
            textureView.LayoutParameters = new FrameLayout.LayoutParams(width, height);
            surfaceTexture = surface;

            camera.SetPreviewTexture(surface);
            PrepareAndStartCamera();
        }
Beispiel #12
0
 private void ReleaseCamera()
 {
     try
     {
         _camera.StopPreview();
         _camera.Release();
         _camera.Dispose();
         _camera = null;
     }
     catch (Exception ex)
     {
         Logger.LogWarning("Failed to release camera, probably it is already released", ex);
     }
 }
Beispiel #13
0
        public async void OnSurfaceTextureAvailable(SurfaceTexture surface, int width, int height)
        {
            // exception handling for the camera permission and won't pass until granted
            try
            {
                var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Camera);

                while (status != PermissionStatus.Granted)
                {
                    if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Camera))
                    {
                        await App.Current.MainPage.DisplayAlert("Camera Permission", "Access to Camera Required", "OK");

                        while (status != PermissionStatus.Granted)
                        {
                            var results = await CrossPermissions.Current.RequestPermissionsAsync(new[] { Permission.Camera });

                            status = results[Permission.Camera];
                        }
                    }
                    else
                    {
                        var results = await CrossPermissions.Current.RequestPermissionsAsync(new[] { Permission.Camera });

                        status = results[Permission.Camera];
                    }
                }

                if (status == PermissionStatus.Granted)
                {
                    camera = global::Android.Hardware.Camera.Open((int)cameraType);
                    textureView.LayoutParameters = new FrameLayout.LayoutParams(width, height);
                    surfaceTexture = surface;
                    camera.SetPreviewTexture(surface);
                    PrepareAndStartCamera();
                }
            }
            catch (Exception)
            {
                await App.Current.MainPage.DisplayAlert("Error", "Please Restart App", "OK");

                var activity = (Activity)Forms.Context;
                activity.FinishAffinity();
            }
        }
Beispiel #14
0
        public async void OnPictureTaken(byte[] data, global::Android.Hardware.Camera camera)
        {
            if (data == null)
            {
                _safeToTakePicture = true;
                return;
            }

            var bitmap = BitmapFactory.DecodeByteArray(data, 0, data.Length);
            var ms     = await bitmap.CompressAsync(50);

            var resized = BitmapFactory.DecodeByteArray(ms.ToArray(), 0, ms.ToArray().Length);

            resized = resized.Rotate(ms);

            _tcs.SetResult((await resized.CompressAsync(50)).ToArray());
            _safeToTakePicture = true;
        }
        private async void TakePhotoButtonTapped(object sender, EventArgs e)
        {
            //camera.StopPreview ();
            //DialogService.ShowLoading ("Capturing Every Pixel");

            //var image = textureView.Bitmap;
            //using (var imageStream = new MemoryStream ()) {
            //	await image.CompressAsync (Bitmap.CompressFormat.Jpeg, 50, imageStream);
            //	image.Recycle ();
            //	imageBytes = imageStream.ToArray ();
            //}

            //var navigationPage = new NavigationPage (new DrawMomentPage (imageBytes)) {
            //	BarBackgroundColor = Colors.NavigationBarColor,
            //	BarTextColor = Colors.NavigationBarTextColor
            //};

            //DialogService.HideLoading ();
            //camera.StartPreview ();
            //await App.Current.MainPage.Navigation.PushModalAsync (navigationPage, false);

            //var video = FindViewById<VideoView>(Resource.Id.SampleVideoView);

            vv.StopPlayback();
            string path = global::Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/test.mp4";

            camera = global::Android.Hardware.Camera.Open();
            camera.SetDisplayOrientation(90);
            recorder = new MediaRecorder();
            camera.Unlock();
            recorder.SetCamera(camera);
            recorder.SetVideoSource(VideoSource.Camera);
            recorder.SetAudioSource(AudioSource.Mic);
            recorder.SetOutputFormat(OutputFormat.Default);
            recorder.SetVideoEncoder(VideoEncoder.Default);
            recorder.SetAudioEncoder(AudioEncoder.Default);
            recorder.SetOutputFile(path);
            recorder.SetPreviewDisplay(vv.Holder.Surface);
            recorder.Prepare();
            recorder.Start();
        }
Beispiel #16
0
        private void OpenCamera()
        {
            if (_cameraSurface == null)
            {
                _cameraSurface = new CameraSurface(this);
                _cameraFrameLayout.AddView(_cameraSurface);
            }

            if (_camera == null)
            {
                // Camera2 API has more capabilities but is more complex to use and not needed for current requirements of Umbella modules
#pragma warning disable 0618
                _camera = global::Android.Hardware.Camera.Open();
                _cameraSurface.OpenCamera(_camera);
            }
            else
            {
                _camera.StartPreview();
            }

            _ = StartSendingPhotoAsync();
        }
Beispiel #17
0
        public virtual unsafe void OnAutoFocus(bool p0, global::Android.Hardware.Camera p1)
        {
            if (id_onAutoFocus_ZLandroid_hardware_Camera_ == IntPtr.Zero)
            {
                id_onAutoFocus_ZLandroid_hardware_Camera_ = JNIEnv.GetMethodID(class_ref, "onAutoFocus", "(ZLandroid/hardware/Camera;)V");
            }
            try {
                JValue *__args = stackalloc JValue [2];
                __args [0] = new JValue(p0);
                __args [1] = new JValue(p1);

                if (GetType() == ThresholdType)
                {
                    JNIEnv.CallVoidMethod(Handle, id_onAutoFocus_ZLandroid_hardware_Camera_, __args);
                }
                else
                {
                    JNIEnv.CallNonvirtualVoidMethod(Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "onAutoFocus", "(ZLandroid/hardware/Camera;)V"), __args);
                }
            } finally {
            }
        }
Beispiel #18
0
 static void n_OnAutoFocus_ZLandroid_hardware_Camera_(IntPtr jnienv, IntPtr native__this, bool p0, IntPtr native_p1)
 {
     global::Com.Moodstocks.Android.Camera.AutoFocusManager __this = global::Java.Lang.Object.GetObject <global::Com.Moodstocks.Android.Camera.AutoFocusManager> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Android.Hardware.Camera p1 = global::Java.Lang.Object.GetObject <global::Android.Hardware.Camera> (native_p1, JniHandleOwnership.DoNotTransfer);
     __this.OnAutoFocus(p0, p1);
 }
Beispiel #19
0
        private async void TakePhotoButtonTapped(object sender, EventArgs e)
        {
            var current = CrossConnectivity.Current.IsConnected;

            // check the internet connection to use the ResDiary API
            if (!current)
            {
                await App.Current.MainPage.DisplayAlert("Connection Error", "Please connect to the internet", "OK");
            }
            else
            {
                try
                {
                    var parameters = camera.GetParameters();
                    parameters.FlashMode = global::Android.Hardware.Camera.Parameters.FlashModeOff;
                    camera.SetParameters(parameters);
                    camera.StopPreview();
                    DialogService.ShowLoading("Scanning Logo");

                    // crop the image into the sqaure in order to make the prediction more accuracy
                    var image = CropImage(textureView.Bitmap);
                    using (var imageStream = new MemoryStream())
                    {
                        await image.CompressAsync(Bitmap.CompressFormat.Jpeg, 50, imageStream);

                        image.Recycle();
                        imageBytes = imageStream.ToArray();
                    }

                    // send the image to CustomVision in form of bytes
                    var results = await CustomVisionService.PredictImageContentsAsync(imageBytes);

                    String resultInString = results.ToString();

                    if (resultInString.Length > 0)
                    {
                        // if the logo appeared more than 1 result than use the Geolocation
                        if (Geolocation.HasMoreOptions(resultInString))
                        {
                            DialogService.ShowLoading("More Restaurants Available");
                            resultInString = await Geolocation.GetCloserOptionAsync(resultInString);
                        }
                        var navigationPage = new NavigationPage(new RestaurantPage(resultInString));

                        DialogService.HideLoading();
                        camera.StartPreview();
                        await App.Current.MainPage.Navigation.PushModalAsync(navigationPage, true);
                    }
                    else
                    {
                        DialogService.HideLoading();
                        camera.StartPreview();

                        await App.Current.MainPage.DisplayAlert("Restaurant Not Found", "Please re-scan the Logo", "OK");
                    }
                }
                catch (Exception)
                {
                    camera.StopPreview();
                    camera.Release();
                    camera = global::Android.Hardware.Camera.Open((int)cameraType);
                    camera.SetPreviewTexture(surfaceTexture);

                    PrepareAndStartCamera();
                }
            }
        }
Beispiel #20
0
		private void ToggleFlashButtonTapped(object sender, EventArgs e)
		{
			_flashOn = !_flashOn;
			if (_flashOn)
			{
				if (cameraType == CameraFacing.Back)
				{
					toggleFlashButton.SetBackgroundResource(Resource.Drawable.FlashButton);
					cameraType = CameraFacing.Back;

					camera.StopPreview();
					camera.Release();
					camera = global::Android.Hardware.Camera.Open((int)cameraType);
					var parameters = camera.GetParameters();
					parameters.FlashMode = global::Android.Hardware.Camera.Parameters.FlashModeTorch;
					camera.SetParameters(parameters);
					camera.SetPreviewTexture(surfaceTexture);
					PrepareAndStartCamera();
				}
			}
			else
			{
				toggleFlashButton.SetBackgroundResource(Resource.Drawable.NoFlashButton);
				camera.StopPreview();
				camera.Release();

				camera = global::Android.Hardware.Camera.Open((int)cameraType);
				var parameters = camera.GetParameters();
				parameters.FlashMode = global::Android.Hardware.Camera.Parameters.FlashModeOff;
				camera.SetParameters(parameters);
				camera.SetPreviewTexture(surfaceTexture);
				PrepareAndStartCamera();
			}
		}
Beispiel #21
0
		private void SwitchCameraButtonTapped(object sender, EventArgs e)
		{
			if (cameraType == CameraFacing.Front)
			{
				cameraType = CameraFacing.Back;

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

				camera.StopPreview();
				camera.Release();
				camera = global::Android.Hardware.Camera.Open((int)cameraType);
				camera.SetPreviewTexture(surfaceTexture);
				PrepareAndStartCamera();
			}
		}