示例#1
0
        //void Loading(bool mostrar)
        //{
        //    indicator.IsEnabled = mostrar;
        //    indicator.IsRunning = mostrar;
        //}

        async void btnCrearEmpresa_Clicked(object sender, EventArgs e)

        {
            var nombreEmpresa = txtNombreEmpresa.Text;
            var nombreArea    = txtArea.Text;
            var descripcion   = txtDescripcion.Text;


            if (string.IsNullOrEmpty(nombreEmpresa))
            {
                await DisplayAlert("Incorrecto", "Digite nombre de Empresa", "OK");
            }
            else if (string.IsNullOrEmpty(nombreArea))
            {
                await DisplayAlert("Incorrecto", "Digite nombre de Area", "OK");
            }
            else
            if (await ServicioFace.CrearGrupoEmpleados(nombreEmpresa, nombreArea, descripcion))
            {
                await DisplayAlert("Correcto", "Empresa creada correctamente", "OK");

                await Navigation.PushAsync(new PaginaRegistro());
            }
            else
            {
                await DisplayAlert("Error", "Error al crear empresa", "OK");
            }
        }
示例#2
0
        public async Task AnalizarImagen(IDialogContext context, LuisResult result)
        {
            var stream = await GetImageStream(Usuario.FotoURL);

            var emocion = await ServicioFace.ObtenerEmocion(stream);

            await context.PostAsync($"**{Usuario.Nombre}** tu emoción es **{emocion.Nombre}** (Score: {emocion.Score})");
        }
        async void BtnRegistrar_Clicked(object sender, EventArgs e)
        {
            if (foto1 != null && foto2 != null && foto3 != null)
            {
                bool op = false;

                try
                {
                    Loading(true);
                    var nombre   = txtNombre.Text;
                    var personID = await ServicioFace.RegistrarPersonaEnGrupo(nombre);

                    //servicio remotamente
                    await ServicioFace.RegistrarRostro(personID, foto1.GetStream());

                    await ServicioFace.RegistrarRostro(personID, foto2.GetStream());

                    await ServicioFace.RegistrarRostro(personID, foto3.GetStream());

                    var usuario = new Usuario()
                    {
                        Key           = personID.ToString(),
                        Nombre        = nombre,
                        EmocionActual = "",
                        FotoActual    = "",
                        ScoreActual   = 0
                    };

                    //alamcenamiento localmente
                    op = await new ServicioBaseDatos().RegistrarUsuario(usuario);
                }
                catch (Exception)
                {
                }
                finally
                {
                    if (op)
                    {
                        await DisplayAlert("Correcto", "Empleado registrado correctamente", "OK");

                        await Navigation.PopAsync();
                    }
                    else
                    {
                        await DisplayAlert("Error", "Error al registrar el empleado", "OK");
                    }

                    Loading(false);
                }
            }
            else
            {
                await DisplayAlert("Error", "Debes tomar 3 fotografías al empleado", "OK");
            }
        }
 async void btnEntrenar_Clicked(object sender, EventArgs e)
 {
     if (await ServicioFace.EntrenarGrupoEmpleados())
     {
         await DisplayAlert("Correcto", "Grupo entrenado exitosamente", "OK");
     }
     else
     {
         await DisplayAlert("Error", "Error al crear el grupo", "OK");
     }
 }
        async void btnLogin_Clicked(object sender, EventArgs e)
        {
            try
            {
                Loading(true);
                var foto = await ServicioImagen.TomarFoto();

                if (foto != null)
                {
                    imagen.Source = ImageSource.FromStream(foto.GetStream);

                    var faceId = await ServicioFace.DetectarRostro(foto.GetStream());

                    var personId = await ServicioFace.IdentificarEmpleado(faceId);

                    if (personId != Guid.Empty)
                    {
                        var bd      = new ServicioBaseDatos();
                        var usuario = await bd.ObtenerUsuario(personId.ToString());

                        usuario.FotoActual = foto.Path;

                        var emocion = await ServicioFace.ObtenerEmocion(foto);

                        usuario.EmocionActual = emocion.Nombre;
                        usuario.ScoreActual   = emocion.Score;
                        var update = await bd.ActualizarUsuario(usuario);

                        await DisplayAlert("Correcto", $"Bienvenido {usuario.Nombre}", "OK");

                        await Navigation.PushAsync(new PaginaBienvenido(usuario));
                    }
                    else
                    {
                        await DisplayAlert("Error", "Persona no identificada", "OK");
                    }
                }
                else
                {
                    await DisplayAlert("Error", "No se pudo tomar la fotografía.", "OK");
                }
            }
            catch (Exception ex)
            {
            }
            finally
            {
                Loading(false);
            }
        }
        async void btnAnalizar_Clicked(object sender, EventArgs e)
        {
            try
            {
                Loading(true);
                var emocion = await ServicioFace.ObtenerEmocion(foto);

                this.emocion.Foto   = emocion.Foto;
                this.emocion.Nombre = emocion.Nombre;
                this.emocion.Score  = emocion.Score;
                lblEmocion.Text     = emocion.Resultado;
            }
            catch (Exception ex)
            {
            }
            finally
            {
                Loading(false);
            }
        }
示例#7
0
        private async Task SolicitarImagen(IDialogContext context, IAwaitable <IEnumerable <Attachment> > result)
        {
            var imagen = await result;

            if (imagen.Count() > 0)
            {
                alumno.FotoURL = imagen.First().ContentUrl;
                await context.PostAsync($"Imagen recibida.");

                var stream = await GetImageStream(alumno.FotoURL);

                var emocion = await ServicioFace.ObtenerEmocion(stream);

                await context.PostAsync($"**{alumno.Nombre}** tu emoción es **{emocion.Nombre}** (Score: {emocion.Score})");
            }
            else
            {
                await context.PostAsync("Error. Fotografía no detectada");
            }
        }
示例#8
0
        async void Camera.IPictureCallback.OnPictureTaken(byte[] data, Android.Hardware.Camera camera)
        {
            File pictureFile = getOutputMediaFile();

            if (pictureFile == null)
            {
                return;
            }

            try
            {
                FileOutputStream fos = new FileOutputStream(pictureFile);
                fos.Write(data);
                fos.Close();

                ExifInterface ei          = new ExifInterface(pictureFile.AbsolutePath);
                var           orientation = (Android.Media.Orientation)ei.GetAttributeInt(ExifInterface.TagOrientation, (int)Android.Media.Orientation.Undefined);

                Android.Graphics.Bitmap rotatedBitmap = null;
                Android.Graphics.Bitmap bitmap        = LoadFromFile(pictureFile.AbsolutePath);

                switch (orientation)
                {
                case Android.Media.Orientation.Rotate90:
                    rotatedBitmap = rotateImage(bitmap, 0);
                    break;

                case Android.Media.Orientation.Rotate180:
                    rotatedBitmap = rotateImage(bitmap, 90);
                    break;

                case Android.Media.Orientation.Rotate270:
                    rotatedBitmap = rotateImage(bitmap, 180);
                    break;

                case Android.Media.Orientation.Normal:
                default:
                    rotatedBitmap = rotateImage(bitmap, 270);
                    break;
                }

                var data2             = bitmaptoByte(rotatedBitmap);
                FileOutputStream fos2 = new FileOutputStream(pictureFile);
                fos2.Write(data2);
                fos2.Close();

                var rostro = await ServicioFace.DetectarRostro(data2);

                var descripcion = await ServicioVision.DescribirImagen(data2);

                if (rostro != null)
                {
                    RunOnUiThread(async() =>
                    {
                        var frente                 = ImageAnalyzer.AnalizarPostura(rostro);
                        TextView txtFrente         = FindViewById <TextView>(Resource.Id.txtFrente);
                        TextView txtAnalisisFrente = FindViewById <TextView>(Resource.Id.txtAnalisisFrente);
                        txtFrente.Text             = frente.ToString("N2");
                        if (frente > Constantes.LookingAwayAngleThreshold)
                        {
                            txtFrente.SetTextColor(Android.Graphics.Color.Red);
                            txtAnalisisFrente.SetTextColor(Android.Graphics.Color.Red);
                            txtAnalisisFrente.Text = "No estás mirando al frente";

                            await PlayAlarm();
                        }
                        else
                        {
                            txtFrente.SetTextColor(Android.Graphics.Color.Green);
                            txtAnalisisFrente.SetTextColor(Android.Graphics.Color.Green);
                            txtAnalisisFrente.Text = "OK";
                        }

                        var boca                 = ImageAnalyzer.AnalizarBoca(rostro);
                        TextView txtBoca         = FindViewById <TextView>(Resource.Id.txtBoca);
                        TextView txtAnalisisBoca = FindViewById <TextView>(Resource.Id.txtAnalisisBoca);
                        txtBoca.Text             = boca.ToString("N2");

                        if (boca > Constantes.YawningApertureThreshold)
                        {
                            txtBoca.SetTextColor(Android.Graphics.Color.Red);
                            txtAnalisisBoca.SetTextColor(Android.Graphics.Color.Red);
                            txtAnalisisBoca.Text = "Posiblemente está bostezando";

                            await PlayAlarm();
                        }
                        else
                        {
                            txtBoca.SetTextColor(Android.Graphics.Color.Green);
                            txtAnalisisBoca.SetTextColor(Android.Graphics.Color.Green);
                            txtAnalisisBoca.Text = "OK";
                        }

                        var ojos                 = ImageAnalyzer.AnalizarOjos(rostro);
                        TextView txtOjos         = FindViewById <TextView>(Resource.Id.txtOjos);
                        TextView txtAnalisisOjos = FindViewById <TextView>(Resource.Id.txtAnalisisOjos);
                        txtOjos.Text             = ojos.ToString("N2");

                        if (ojos < Constantes.SleepingApertureThreshold)
                        {
                            txtOjos.SetTextColor(Android.Graphics.Color.Red);
                            txtAnalisisOjos.SetTextColor(Android.Graphics.Color.Red);
                            txtAnalisisOjos.Text = "¡Está dormido!";

                            await PlayAlarm();
                        }
                        else
                        {
                            txtOjos.SetTextColor(Android.Graphics.Color.Green);
                            txtAnalisisOjos.SetTextColor(Android.Graphics.Color.Green);
                            txtAnalisisOjos.Text = "OK";
                        }

                        if (descripcion.Description.Captions.Length > 0)
                        {
                            var distraccion             = descripcion.Description.Captions[0].Text;
                            TextView txtCelular         = FindViewById <TextView>(Resource.Id.txtCelular);
                            TextView txtAnalisisCelular = FindViewById <TextView>(Resource.Id.txtAnalisisCelular);

                            if (distraccion.Contains("phone"))
                            {
                                txtCelular.Text = "SI";
                                txtCelular.SetTextColor(Android.Graphics.Color.Red);
                                txtAnalisisCelular.SetTextColor(Android.Graphics.Color.Red);
                                txtAnalisisCelular.Text = "¡Está usando el teléfono móvil!";
                            }
                            else
                            {
                                txtCelular.Text = "NO";
                                txtCelular.SetTextColor(Android.Graphics.Color.Green);
                                txtAnalisisCelular.SetTextColor(Android.Graphics.Color.Green);
                                txtAnalisisCelular.Text = "OK";
                            }
                        }
                    });
                }
            }
            catch (FileNotFoundException e)
            {
            }
            catch (IOException e)
            {
            }
            finally
            {
                isAnalyzing = false;
            }
        }
示例#9
0
        private async void ButtonAnalizar_Clicked(object sender, EventArgs e)
        {
            var mensaje = await ServicioFace.AnalizarFoto(foto);

            await DisplayAlert("Analisis", mensaje, "OK");
        }
示例#10
0
        async void btnAnalizar_Clicked(object sender, EventArgs e)
        {
            if (foto != null)
            {
                try
                {
                    Loading(true);

                    // Fase 1 - Face
                    var rostro = await ServicioFace.DetectarRostro(foto);

                    var frente = ImageAnalyzer.AnalizarPostura(rostro);
                    txtFrente.Text = frente.ToString("N2");

                    if (frente > Constantes.LookingAwayAngleThreshold)
                    {
                        txtFrente.TextColor         = Color.Red;
                        txtAnalisisFrente.TextColor = Color.Red;
                        txtAnalisisFrente.Text      = "Mire al frente se va a matar";
                    }
                    else
                    {
                        txtFrente.TextColor         = Color.Green;
                        txtAnalisisFrente.TextColor = Color.Green;
                        txtAnalisisFrente.Text      = "OK";
                    }

                    // Fase 2 - Vision
                    var descripcion = await ServicioVision.DescribirImagen(foto);

                    var analisis = await ServicioVision.AnalizarImagen(foto);

                    if (descripcion.Description.Captions.Length > 0)
                    {
                        var distraccion = descripcion.Description.Captions[0].Text;
                        if (distraccion.Contains("phone"))
                        {
                            txtCelular.Text              = "SI";
                            txtCelular.TextColor         = Color.Red;
                            txtAnalisisCelular.TextColor = Color.Red;
                            txtAnalisisCelular.Text      = "¡El celular al bolante MATAAAAAAAAAAA......!";
                        }
                        else
                        {
                            txtCelular.Text              = "NO";
                            txtCelular.TextColor         = Color.Green;
                            txtAnalisisCelular.TextColor = Color.Green;
                            txtAnalisisCelular.Text      = "OK";
                        }
                    }
                }
                catch (Exception ex)
                {
                    await DisplayAlert("Error", "Excepción: " + ex.Message, "OK");
                }
                finally
                {
                    Loading(false);
                }
            }
            else
            {
                await DisplayAlert("Error", "Debes tomar la fotografía", "OK");
            }
        }
        async void btnAnalizar_Clicked(object sender, EventArgs e)
        {
            if (foto != null)
            {
                try
                {
                    Loading(true);

                    // Fase 1 - Face
                    var rostro = await ServicioFace.DetectarRostro(foto);

                    var frente = ImageAnalyzer.AnalizarPostura(rostro);
                    txtFrente.Text = frente.ToString("N2");

                    if (frente > Constantes.LookingAwayAngleThreshold)
                    {
                        txtFrente.TextColor         = Color.Red;
                        txtAnalisisFrente.TextColor = Color.Red;
                        txtAnalisisFrente.Text      = "No estás mirando al frente";
                    }
                    else
                    {
                        txtFrente.TextColor         = Color.Green;
                        txtAnalisisFrente.TextColor = Color.Green;
                        txtAnalisisFrente.Text      = "OK";
                    }

                    var boca = ImageAnalyzer.AnalizarBoca(rostro);
                    txtBoca.Text = boca.ToString("N2");

                    if (boca > Constantes.YawningApertureThreshold)
                    {
                        txtBoca.TextColor         = Color.Red;
                        txtAnalisisBoca.TextColor = Color.Red;
                        txtAnalisisBoca.Text      = "Posiblemente está bostezando";
                    }
                    else
                    {
                        txtBoca.TextColor         = Color.Green;
                        txtAnalisisBoca.TextColor = Color.Green;
                        txtAnalisisBoca.Text      = "OK";
                    }

                    var ojos = ImageAnalyzer.AnalizarOjos(rostro);
                    txtOjos.Text = ojos.ToString("N2");

                    if (ojos < Constantes.SleepingApertureThreshold)
                    {
                        txtOjos.TextColor         = Color.Red;
                        txtAnalisisOjos.TextColor = Color.Red;
                        txtAnalisisOjos.Text      = "¡Está dormido!";
                    }
                    else
                    {
                        txtOjos.TextColor         = Color.Green;
                        txtAnalisisOjos.TextColor = Color.Green;
                        txtAnalisisOjos.Text      = "OK";
                    }

                    // Fase 2 - Vision
                    var descripcion = await ServicioVision.DescribirImagen(foto);

                    var analisis = await ServicioVision.AnalizarImagen(foto);

                    if (descripcion.Description.Captions.Length > 0)
                    {
                        var distraccion = descripcion.Description.Captions[0].Text;
                        if (distraccion.Contains("phone"))
                        {
                            txtCelular.Text              = "SI";
                            txtCelular.TextColor         = Color.Red;
                            txtAnalisisCelular.TextColor = Color.Red;
                            txtAnalisisCelular.Text      = "¡Está usando el teléfono móvil!";
                        }
                        else
                        {
                            txtCelular.Text              = "NO";
                            txtCelular.TextColor         = Color.Green;
                            txtAnalisisCelular.TextColor = Color.Green;
                            txtAnalisisCelular.Text      = "OK";
                        }
                    }
                }
                catch (Exception ex)
                {
                    await DisplayAlert("Error", "Excepción: " + ex.Message, "OK");
                }
                finally
                {
                    Loading(false);
                }
            }
            else
            {
                await DisplayAlert("Error", "Debes tomar la fotografía", "OK");
            }
        }
示例#12
0
        async void btnRegistrar_Clicked(object sender, EventArgs e)
        {
            //await ServicioFace.CrearGrupoEmpleados();

            if (foto1 != null && foto2 != null && foto3 != null)
            {
                bool op = false;

                try
                {
                    Loading(true);
                    var nombre    = txtNombre.Text;
                    var direccion = txtDireccion.Text;
                    var telefono  = txtTelefono.Text;
                    var cedula    = txtCedula.Text;
                    var personID  = await ServicioFace.RegistrarPersonaEnGrupo(nombre);

                    await ServicioFace.RegistrarRostro(personID, foto1.GetStream());

                    await ServicioFace.RegistrarRostro(personID, foto2.GetStream());

                    await ServicioFace.RegistrarRostro(personID, foto3.GetStream());

                    var usuario = new Usuario()
                    {
                        Key           = personID.ToString(),
                        Nombre        = nombre,
                        EmocionActual = "",
                        FotoActual    = "",
                        ScoreActual   = 0,
                        Cedula        = cedula,
                        Direccion     = direccion,
                        Telefono      = telefono
                    };

                    op = await new ServicioBaseDatos().RegistrarUsuario(usuario);
                }
                catch (Exception ex)
                {
                }
                finally
                {
                    if (op)
                    {
                        await DisplayAlert("Correcto", "usuario registrado correctamente", "OK");

                        await Navigation.PushAsync(new PaginaLogin());
                    }
                    else
                    {
                        await DisplayAlert("Error", "Error al registrar el usuario", "OK");
                    }

                    Loading(false);
                }
            }
            else
            {
                await DisplayAlert("Error", "Debes tomar 3 fotografías al usuario para poder registrarlo", "OK");
            }
        }