Oficina 3 de App Inventor
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:
- http://appinventor.mit.edu/download/MITAICompanion.apk (não tem na PLAY STORE do ANDROID para esta versão do celular)
- bar code scanner do PLAY STORE
- GPS status
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.
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.
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:
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:
Parte 3 - Acesso a base de dados local
Vá até a Pallete Basic do projeto e arraste um objeto TinyDB para o Viewer.
Para testar se o armazenamento na base local está funcionando, siga os seguintes passos:
- baixe o app desenvolvido para o celular;
- Execute o app e armazene um ponto na base local [SALVAR].
- Recupere o ponto da base local [LER].
- Para verificar a permanência do dado após o fechamento do app, feche o app e reabra em seguida.
- Recupere o ponto da base local [LER].
- Para verificar a permanência do dado após o desligamento do dispositivo, deslige-o, religue-o, reabra em seguida o app.
- 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:
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.
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)
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.