Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Android SDK
Code

Android Things: Seu Primeiro Projeto

by
Difficulty:BeginnerLength:MediumLanguages:
This post is part of a series called Android Things.
Introduction to Android Things
Android Things: Peripheral Input/Output

Portuguese (Português) translation by André Victor Ribeiro Amaral (you can also view the original English article)

Android Things, a nova plataforma do Google para criação de dispositivos conectáveis através da Internet das Coisas, é um jeito fácil de ter estar por dentro de uma das principais tecnologias do futuro. Nesse tutorial você vai aprender como configurar o Android Things. Você vai criar seu primeiro projeto e vai começar a usar o GPIO (General Purpose Input/Output) para ler o pressionamento de botões e de acender um LED.

Para conhecer mais sobre o Android Things, confira meus artigos aqui na Envato Tuts+.

Preparando a sua Placa

Antes de você poder começar a programar com o Android Things, você vai precisar configurar um placa de prototipação física para executar as operações de sistema.

Existem atualmente três opções de placas:

  • Raspberry Pi
  • Intel Edison com Arduino Breakout Board
  • NXP Pico i.MX6UL

Nesse tutorial, eu vou mostrar como configurar tudo com o Raspberry Pi, já que é o mais comum e em conta dentre as placas de prototipação suportadas. Se você está usando um ambiente diferente de desenvolvimento, você pode encontrar instruções específicas para configurar sua placa na página oficial de documentação do Android Things.

Raspberry Pi

A fim de colocar o Android Things na placa, você vai precisar de um Raspberry Pi 3 B e os seguintes itens de hardware:

  • Cabo HDMI e uma tela (como um monitor de computador)
  • Cabo ethernet conectado à internet
  • Cabo micro-USB
  • Cartão micro-SD com pelo menos 8GB de espaço, e um adaptador de cartão SD
SD card and adapter
  • Um computador que leia e escreva em um cartão SD

Uma vez que você juntou todos os componentes necessários, você precisará baixar a imagem de sistema mais recente para o Raspberry Pi do Google. Todas as imagens mais recentes podem ser encontradas na página do Android Things System Image Downloads.

Agora que você já fez o download do arquivo, você precisará descompactá-lo e recuperar o arquivo .img. Devido ao tamanho do arquivo, alguns programas podem ter problemas na hora da descompactação, como por exemplo o Archive Utility no OS X, que retornará um .cpgz ou um .zip em loop. Se isso acontecer, você pode instalar o Unarchiver para OS X ou o 7zip para Windows para extrair os arquivos corretamente.

Com o arquivo .img extraído, você precisará tranferi-lo para seu cartão SD. Esse processo pode variar de sistema para sistema. Essa seção vai mostrar o processo no OS X, apesar de todas as instruções também existirem para Linux e Windows.

Primeiramente, insira o cartão SD no seu computador. Se seu cartão SD não estiver formatado como FAT-32, você vai precisar de fazer isso agora. A seguir, você vai precisar de executar o comando diskutil list para encontrar o caminho para seu cartão SD.

Terminal output from diskutil list command

Na imagem acima, o caminho completo do cartão SD é /dev/disk3 (não confundir com o identificador da partição disk3s1). Usando o caminho, execute o comando diskutil unmountDisk para preparar o disco.

Terminal output from diskutil unmountDisk command

O passo final em preparar a imagem do Android Things para o Raspberry Pi é copiar a imagem para seu cartão SD com o comando (atualizar com o caminho correto para sua imagem): sudo dd bs=1m if=image.img of=/dev/rdisk<disk# from diskutil>

Terminal output from checking progress on Android Things image copying to sd card

É importante notar que essa operação pode levar alguns minutos. Você pode conferir o progresso atual com o comando Control-T.

Quando sua imagem terminar de ser copiada para o cartão SD, remova o cartão micro-SD do seu adaptador e o insira na parte de baixo do seu Raspberry Pi.

Raspberry Pi with inserted SD card

A seguir, conecte o seu Raspberry Pi no seu monitor via cabo HDMI, na sua rede de internet utilizando o cabo ethernet, e em uma fonte de energia (como em um computador) com o cabo micro-USB tipo B.

Raspberry Pi with minimum connections necessary to finish setup

Quando seu Raspberry Pis estiver inicializado, você deve ver a seguinte imagem no seu monitor:

Android Things display screen with IP address shown

Você vai notar o endereço de IP do seu dispositivo na parte de baixo da tela. Você vai precisar disso para conectar a sua placa Android Things com o comando adb connect <ip address>.

Nesse estágio, você já vai ser capaz de se conectar seu na sua nova placa com Android Things e carregar aplicativos nela, que é o que nós vamos discutir na próxima sessão. Se você quiser desconectar o seu Raspberry Pi da sua conexão física de rede e usar o chip de WiFi, você vai precisar executar o seguinte comando.

Isso permite que você reinicie o seu dispositivo e passe a acessá-lo através da sua rede WiFi sem a necessidade de uma conexão ethernet.

Um Primeiro Projeto Simples

Antes de você começar a escrever o seu código para o um aplicativo do Android Things, você deve ter certeza de que o hardware necessário para o seu projeto está pronto. Para o nosso projeto introdutório, nós vamos criar um simples dispositivo que permite o usuário apertar um botão, que vai acender um LED. E quando o botão for liberado, o LED vai apagar. Você vai precisar dos seguintes componentes de hardware:

  • uma placa compatível com Android Things que esteja configurar com a última versão do SO
  • um LED
  • um botão
  • um resistor de 10k ‎Ω (resistor de cores marrom, preto e laranja)
  • um resistor de 470 ‎Ω (resistor de cores amarela, roxa e marrom)
  • fios
  • placa de circuito

Uma vez que você tem seus componentes, você pode começar a ligar coisas nele. Eu incluí dois diagramas para seu primeiro projeto: um diagrama de fiação para o Intel Edison com Arduino breakout board, e outro para o Raspberry Pi.

Wiring diagram for project using Intel Edison with Arduino breakout board
Wiring diagram for Raspberry Pi

Depois de conectar os componentes e fios à sua place, é hora de escrever seu primeiro aplicativo.

Instalação do App

Android Things requer projetos construídos com um mínimo de SDK 24. Você pode começar esse tutorial criando o seu projeto com esse mínimo requerido e uma Activity vazia.

Quando sua base de projeto estiver criada, abra o arquivo do módulo do seu aplicativo build.gradle. Abaixo do nó de dependecies, inclua a biblioteca do Android Things. No momento em que esse texto foi escrito, a biblioteca ainda está no modo de desenvolvedor.

A seguir, abra o seu arquivo AndroidManifest.xml. Você vai precisar de declarar que seu aplicativo usa a biblioteca Android Things; para fazer isso adicione a seguinte linha dentro do seu nó de application.

A última coisa a se fazer no seu arquivo "manifest" é adicionar um intent-filter no seu nó de MainActivity que permite que seu dispositivo saiba que ele deveria executar esta Activity na inicialização. Por o Android Things gerar aplicativos na inicialização, você geralmente vai querer um aplicativo instalado no dispositivo por vez.

Uma vez que você finalizou com o "manifest", você pode abrir o MainActivity.java, já que este é o lugar onde a lógica do núcleo para o seu primeiro projeto do Android Things vai acontecer. O objeto que irá instanciar suas conexões de entrada e saída é chamado de PeripheralManagerService, então vamos começar o referenciando em onCreate().

Agora que você tem seu PeripheralManagerService, vamos fazer uma coisa a mais antes de mergulhar na escrita do nosso código de controle. No passo anterior, você conectou todos os seus componentes de hardware em pinos específicos. A fim de controlar esse periféricos que você anexou a esses pinos, você vai precisar saber o nome de cada pino da sua placa. Você pode imprimir uma lista de cada componente utilizando o PeripheralManagerService:

A linha acima vai imprimir o seguinte no seu Raspberry Pi:

No diagrama de fios do Raspberry Pi apresentados anteriormente neste tópico, você conectou o botão no BCM21 e o LED no BCM6. No diagrama de fios do Intel Edison com Arduino breakout board, você conectou o botão no IO12 e o LED no IO13. Vamos salvar esses valores como itens de uma String no topo da nossa Activity. Neste exemple vou usar os valores do Raspberry Pi, apesar de você poder usar qualquer nome que seja apropriado com a sua placa e configuração de fios.

Nos próximos tópicos, nós vamos usar essa informação para comunicar com ambos os componentes.

Saída do LED

Componentes básicos, como um LED, pode ser acessado utilizando o objeto Gpio. No topo da sua Activity, crie um objeto Gpio. Isso vai ser usado como referência para nossa conexão com o LED no nosso aplicativo.

Uma vez que você referenciou o objeto, você vai precisar inicializá-lo em onCreate(). Você pode fazer isso chamando o openGpio com o nome do pino do seu objeto PeripheralManagerService. Você também vai precisar declarar o estado de inicialização do componente, que nesse caso é DIRECTION_OUT_INITIALLY_LOW (essencialmente "off"). Você vai precisar envelopar as chamadas de I/O em um bloco try/catch no caso de um IOException ocorrer.

Agora que você criou a nossa referência para o LED, você vai precisar ser capaz de mudar o estado do LED (ligado e desligado). Você pode usar o método setValue(boolean) no Gpio para mudar o estado dos componentes.

Finalmente, quando sua Activity é destruída, você vai precisar fechar todas as conexões e anular suas referências de hardware com onDestroy().

E isso é tudo que há para escrever para um componente básico. Embora o aplicativo possa controlar um LED, não há nenhuma lógica a fim de alterar o estado do LED. Na próxima etapa, vamos ler o pressionamento do botão para ativar ou desativar este componente.

Lendo a entrada do Botão

Como os botões são componentes bastante simples, o Google lançou um conjunto de bibliotecas que torna fácil usar botões e vários outros componentes. Para esta seção, você usará o driver de botão para conectar-se ao botão e ler seu estado, mas primeiro você precisa importar o driver de botão no arquivo build.gradle.

A seguir, declare um objeto ButtonInputDriver como um variável para sua classe MainActivity.

Você pode inicializar esse objeto e registrá-lo dentro do bloco try usado no onCreate() para o seu LED.

Uma vez que o ButtonInputDriver é criado, ele enviará um evento de pressionamento do botão para os métodos onKeyDown() e onKeyUp() com a código chave que você especificou, o que pode ser substituído na sua Activity para mudar o estado do seu LED.

Finalmente, você precisará cancelar o registro e anular seu ButtonInputDriver em onDestroy(), assim como fez com o seu LED.

Conclusão

Nesse tutorial, você aprendeu como preparar um Raspberry Pi com Android Things, configurando um circuito simples que consistiu de um botão e um LED, e a escrever um aplicativo Android que controla o LED baseado no pressionamento do botão utilizando a biblioteca apropriada.

Nesse ponto, você deve ser capaz de usar outras bibliotecas e criar o seus próprios circuitos. No próximo tutorial dessa série, nós vamos olhar os vários periféricos de entrada e saída disponíveis no Android Things, e então nós vamos criar nosso próprio componente.

Enquanto isso, confira alguns dos nossos outros cursos e tutoriais sobre desenvolvimento Android!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.