Oficina 3 de App Inventor

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Objetivos

Preparar as equipes para o desenvolvimento do projeto integrador. Mais especificamente, prepará-las para o uso do App Inventor com:

  • distribuição e preparação do celular
  • depuração da aplicação via WiFi
  • acesso ao GPS
  • acesso a base de dados local
  • acesso a base de dados remota
  • uso de notifiers

Distribuição e preparação do celular

  • Os chefes de cada equipe devem receber um celular com fonte e preencher um documento de compromisso de devolução do dispositivo.
  • Os chefes deverão colocar uma conta google e configurar uma rede WIFI (IFSC-ALUNOS). Os seguintes softwares deverão ser instalados:

APLICAÇÃO-EXEMPLO de uso de componentes de interesse do Projeto Integrador

Na sequência desenvolveremos uma pequena aplicação que demonstra o uso dos sensores GPS, bússola (sensor de orientação), armazenamento local de dados (tyniDB) e armazenamento remoto de dados (WebDB).

Parte 1 - Preparação dos componentes visuais

Nesta etapa colocaremos todos os componentes visuais necessários a aplicação.


AppInventor Fig1TelaGPS.png

Observe os nomes dos componentes. Para padronização usamos lb (label) e bt como iniciais de rótulos e botões. Observe também que foram usados dois organizadores tipo tabela.

AppInventor Fig2TelaGPS.png

Parte 2 - Acesso ao GPS

Vá até a pallete Sensors do projeto e arraste um LocationSensor para o Viewer. Nas propriedades do componente, mude DistanceInterval = 0; Desabilite o gps com [ ] Enable. Altere o TimeInterval = 1000 (milisegundos). Arraste também um Clock. Deixe-o TimerEnable com [ ] Enable o TimerAlwaysFire [x] Enable

Parte de acionamento manual

No código a seguir mostramos o acionamento do GPS de forma manual (ligando e desligando no botão) e sem apoio de eventos de clock. A ideia é ligar o GPS e esperar que ele gere um evento LocationChange com a posição lida. Este evento é gerado a toda modificiação de posição e no momento que o GPS tem a primeira leitura válida.

Abra o Editor de Blocos e arraste e conecte os componentes conforme mostrado na figura abaixo:

Fig1GPS.png

Fig2GPS.png


Exercício: fazer um adendo para que a aplicação mostre a latitude média a partir de 3 leituras do GPS. Faça um contador e crie uma variável para armazenar a soma acumulada das latitudes. Quando obtiver as três leituras mostre em um label.

Parte de acionamento com clock

Neste código é mostrado o uso de leituras periódicas do GPS usando como apoio o componente clock. O clock gera eventos segundo um periodo determinado. A ideia é capturar estes eventos e efetuar a leitura neste momento.

Abra o Editor de Blocos e arraste e conecte os componentes conforme mostrado na figura abaixo:

Fig3GPS.png

Parte 3 - Acesso a base de dados local

Vá até a Pallete Basic do projeto e arraste um objeto TinyDB para o Viewer.

AppInventor Design ApGPSFig4.png

Para testar se o armazenamento na base local está funcionando, siga os seguintes passos:

  1. baixe o app desenvolvido para o celular;
  2. Execute o app e armazene um ponto na base local [SALVAR].
  3. Recupere o ponto da base local [LER].
  4. Para verificar a permanência do dado após o fechamento do app, feche o app e reabra em seguida.
  5. Recupere o ponto da base local [LER].
  6. Para verificar a permanência do dado após o desligamento do dispositivo, deslige-o, religue-o, reabra em seguida o app.
  7. Recupere o ponto da base local [LER].

Parte 4 - Acesso a base de dados remota

Vá até a Pallete Other Stuff do projeto e arraste um objeto WebDB para o Viewer.

Abra o Editor de Blocos e e codifique da forma:

AppInventor Design ApGPSFig5.png

Nota os dados são armazenados no banco de dados indicado no endereço no campo ServiceURL do componente TinyWebDB. Por default o banco de dados do MIT é utilizado. Para verificar se o dado está armazenado no WebDB, copie o seu endereço http://appinvtinywebdb.appspot.com/. Uma tela com os comandos de acesso ao DB pela interface do Browser é mostrada.

TelaWebDB.png

Para testar se o dado esta armazenado, utilize o comando getvalue com a Tag utilizada no armazenamento. Por exemplo, no caso acima EQX-P1 retornará a string: ["VALUE", "EQX-P1", "\"P1LOCAL: -27,60847 , -48,6328\""].

Url do TinyWebDB

Além da base de dados padrão do MIT, você também pode usar as bases de dados disponibilizadas pelo IFSC.

Parte 5 - Sensor de Orientação (bússola)

AppInventor Design Fig1Bussola.png

Exercícios

  • Completar o bloco de instruções acima para mostrar os ângulos de Roll e Pitch
  • Implementar um adendo no bloco para que uma notificação apareça quando o azimute estiver entre 300 e 310 graus.