Professores brasileiros realizam chamada por reconhecimento facial

Aplicativo com inteligência artificial usado como chamada foi criado em laboratório do IFES

Reconhecimento facial em escolas

Professores do Instituto Federal do Espírito Santo (Ifes) estão usando um novo método para realizar as chamadas dos alunos. Por meio do aplicativo IAmHere, que utiliza inteligência artificial, eles realizam as chamadas em sala de aula usando reconhecimento facial. A tecnologia assegura o controle de presença com mais rigidez e reduz o tempo para verificar quais alunos assistiram à aula.

aplicativo foi desenvolvido pelo Laboratório de Extensão em Desenvolvimento de Soluções (Leds) do Ifes, Campus Serra. Ele foi pensado por professores do próprio laboratório e desenvolvido por quatro alunos do curso de graduação em Sistemas de Informação e do curso técnico em Informática. O app está em uso no instituto desde abril deste ano. 

Como funciona? 

O cadastro dos alunos pode ser feito tanto com uma foto coletiva quanto individual. Alunos e professores podem cadastrá-las no aplicativo, que requer apenas o nome e o número de matrícula do estudante. A partir das fotos que são inseridas, o sistema é treinado para reconhecer as faces dos jovens.

Durante as chamadas, os professores abrem o aplicativo e pedem para os alunos olharem para a câmera de seu celular. Ao tirar uma foto da turma, o app identifica a face dos alunos presentes e as compara com as imagens cadastradas no sistema. Após confirmar a presença, os estudantes recebem uma notificação em seus telefones que ratificam o registro do comparecimento. 

FONTE: Olhar Digital/A Gazeta

Top 10 App Android x iOS

A lista dos 10+ apps de Android e iOS possui alguns em comum mas outros bem diferentes… o que isso nos diz sobre seus usuário!?

O uso de aplicativos mobile é crescente em nosso mundo digital. A comunicação se tornou importante ao longo dos tempos e com as novas tecnologias móveis, os sistemas operacionais mobile ganharam enorme destaque. Dois deles destoam dos demais, os já consagrados: Android e iOS. O site Statista, conhecido por realizar estudos estatísticos e demonstrar resultados de maneira gráfica, apresenta um apanhado dos aplicativos mais buscados e baixados na Google Play e na App Store.

Uma coisa que chama a atenção é o fato de que em julho de 2019 houve uma queda no número de apps disponíveis tanto no Android como no iOS, com uma curva em queda desde julho de 2018. Quanto ao uso de apps, destaque para alguns aplicativos que tanto em uma como em outra plataforma aparecem, porém, quando olhamos a lista toda, percebemos enormes diferenças nas buscas dos usuários por soluções no dia a dia. Vejamos o top 10 do Android x iOS:

TOP 10 ANDROID (até julho/2019):

Destaque para WhatsApp e para serviços públicos como FGTS e CAIXA. Netflix aparece em 11º

Top 10 iOS (até julho/2019):

Nesse top 10 percebemos mais aplicativos de compra e comida. Netflix figura entre os 10.

Interfaces gráficas com Java Swing

Para criarmos uma melhor estrutura em uma aplicação com interface visual, podemos nos utilizar de 3 elementos da biblioteca Java Swing para criação de um containers. O container é o local onde podemos inserir  campos de textos, menus, botões e assim criarmos uma aplicação com elementos visuais. Esses containers podem ser dos seguintes tipos:

– JFrame: janela principal do programa.

– JDialog: janela para diálogos.

– JApplet: janela para Applets.

No primeiro exemplo, veremos como criar uma janela com a classe JFrame, utilizando um layout do tipo FlowLayout e inserindo botões na mesma. Para isso, crie uma classe chamada Botao e digite o código a seguir, lembrando que deverão estar dentro do método Main:

  JFrame frame = new JFrame("Bem-vindo");
  // Definindo margem superior, esquerda, largura e altura e altura respectivamente
  frame.setBounds(200, 100, 300, 300);
  frame.setVisible(true);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  // Criando um layout do tipo FlowLayout
  FlowLayout layout = new FlowLayout();

  Container caixa = frame.getContentPane();
  caixa.setLayout(layout);

  for (int i = 1; i <= 10; i++) {
      caixa.add(new JButton("Botão " + i));
  }

O resultado deverá ser algo semelhante a esta imagem:

No próximo exemplo, vamos criar um container do tipo JFrame, escolhendo um layout do tipo GridLayout. Nele, vamos inserir 3 botões e 1 campo de texto, dividindo a janela em grade, no formato 2 x 2 (duas linhas e duas colunas). Para isso, crie uma outra classe chamada Grade, com o método Main e o seguinte código:

JFrame frame = new JFrame();
frame.setVisible(true);
frame.setBounds(200, 100, 200, 300);

JPanel c = new JPanel();

c.setLayout(new GridLayout(2, 2));
c.add(new Button("um"));
c.add(new TextField(5));
c.add(new Button("dois"));
c.add(new Button("três"));

frame.setContentPane(c);

Retornando valores

Para termos uma aplicação que retorne valores de um formulário por ex., e que esses valores possam ser salvos em um arquivo .txt ou até mesmo enviado para o banco de dados, podemos criar botões e incluir ações a ele. Neste exemplo, criaremos uma classe chamada Arquivo, onde criaremos um arquivo salvaremos os valores de um formulário neste arquivo criado.

public class Arquivo {
	Arquivo() {
	}

	public void escreve(String texto) throws IOException {
        // Criando o arquivo.txt
		File file1 = new File("arquivo.txt");
		FileWriter writer = new FileWriter(file1);
		PrintWriter arquivo = new PrintWriter(new FileWriter("arquivo.txt"));
		arquivo.println(texto);
		arquivo.close();
	}
}

Agora, criaremos a classe Formulario, que conterá os campos a serem salvos no arquivo e as ações do botão cadastrar.

public class Formulario{
	public Formulario() {
		initComponents();
	}

	private void initComponents() {
		JFrame frame = new JFrame("Envio de dados.");
		JPanel panel = new JPanel();
		JScrollPane jScrollPane1 = new JScrollPane();
		JTextArea jTextArea1 = new JTextArea(5, 10);
		JTextField jText1 = new JTextField(10);
		JButton jButton1 = new JButton("Cadastrar");
		JLabel jLabel1 = new JLabel("Nome: ");
		JLabel jLabel2 = new JLabel("Comentário: ");

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		frame.pack();

		panel.add(jLabel1);
		panel.add(jText1);
		panel.add(jLabel2);
		panel.add(jTextArea1);
		panel.add(jButton1);

		frame.setContentPane(panel);
		frame.pack();
               // Criando a ação do botão Cadastrar
		jButton1.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent evt) {
				try {
					jButton1ActionPerformed(evt);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
               // Inserindo os dados digitados no arquivo criado pela classe Arquivo
			private void jButton1ActionPerformed(ActionEvent evt) throws IOException {
				Arquivo arquivo1 = new Arquivo();
				String texto = jTextArea1.getText() + ", " + jText1.getText();
				arquivo1.escreve(texto);

			}
		});

	}
       // Dentro do método Main será criada uma instancia de Formulario para ser executada
	public static void main(String args[]) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				new Formulario();
			}
		});
	}

}

Compile a classe Formulário e veja o resultado. Ao clicar no botão cadastrar, deverá ser criado um arquivo chamado arquivo.txt em seu projeto. Abra este arquivo e veja se os dados foram salvos com sucesso.

Complementando o exemplo, podemos criar uma janela do tipo JDialog para dar uma mensagem de dados cadastrados com sucesso.

Em um próximo tutorial mostrarei como fazê-lo. Até mais.