Você está na página 1de 10

Um simples bate-papo com

Bluetooth App Inventor 2


Ambos os módulos de cliente e servidor Bluetooth são usados para criar uma sessão
de chat. Ambos os componentes estão no mesmo aplicativo. O componente do
cliente será utilizado para o dispositivo que inicia a conexão, o componente de servidor
irá ser utilizado para o dispositivo de aceitar a conexão. Os dispositivos devem ter sido
emparelhados pela primeira vez. Não há nenhuma pesquisa para clientes de chat
disponíveis. O exemplo só funciona para enviar mensagens entre 2 dispositivos.

Criação da Interface
Para criar essa interface, coloque os seguintes componentes para o Designer,
arrastando-os a partir da paleta de componentes para o Viewer e definir as
propriedades dos componentes, conforme descrito abaixo:

Paleta Objetivo do
Ação
Tipo de componente Grupo Como vai nomeá-lo Componente

Alterar propriedade Icon


para "Chat.png" a
Screen Screen1 Tela da Aplicação propriedade Title para "
Bluetooth Chat,
Função=não definida"

Organizar o
Layout de
maneira que a
esquerda seja Alterar propriedade
HorizontalArrangement Layout HorizontalArrangement1
exibida e Label Width para "Fill Parent"
lblApelido e a
direita TextBox
txtApelido

Indicar o local
User para informar o Alterar propriedade Text
Label lblApelido
Interface apelido para o para "Apelido"
chat

Caixa de texto
Alterar propriedade
para o usuário
User Width para "Fill Parent" e
TextBox txtApelido informar seu
Interface a propriedade Hint para
apelido para o
“Informe um apelido”
chat

Organizar o
Layout para
exibir
horizontalmente
os componentes
Alterar propriedade
HorizontalArrangement Layout HorizontalArrangement2 ListPicker
Width para "Fill Parent"
ltpConecta e os
Buttons
btnDesconectar,
btnLimpar,
btnSair

1
Exibir a lista de
dispositivos
Alterar propriedade
emparelhados
User Width para "Fill Parent" a
ListPicker ltpConecta para selecionar o
Interface propriedade Text para
qual deles será
“Conectar”
estabelecido a
conexão

Alterar propriedade
Efetuar a
User Width para "Fill Parent" a
Button btnDesconectar desconexão do
Interface propriedade Text para
chat
“Desconectar”

Alterar propriedade
User Limpar a área de Width para "Fill Parent" a
Button btnLimpar
Interface texto do chat propriedade Text para
“Limpar”

Efetuar a
User desconexão e Alterar propriedade Text
Button btnSair
Interface encerrar a para “Sair”
aplicação

Organizar o
Layout de
maneira que a
esquerda seja Alterar propriedade
HorizontalArrangement Layout HorizontalArrangement3
exibida e TextBox Width para "Fill Parent"
txtMensagem e a
direita Button
btnEnviar

Alterar propriedade
TextBox onde Width para "Fill Parent" a
User serão digitadas propriedade Hint para
TextBox txtMensagem
Interface as mensagens a “entre com a mensagem”
serem enviadas e a propriedade Text para
“Olá”

Efetuar o envio
das mensagens
User Alterar a propriedade Text
Button btnEnviar digitadas no
Interface para “Enviar”
TextBox
txtMensagem

Indicar o local
onde serão
User Alterar propriedade Text
Label lblHistorico exibidas as
Interface para "Histórico"
mensagens
recebidas

Alterar a propriedade
Exibir as
User Width para "Fill Parent" a
Label lblResultado mensagens
Interface propriedade Height para
recebidas
"Fill Parent"

Requisitar
conexão
BluetoothClient Connectivity BluetoothClient1
Bluetooth para o
servidor

2
Monitorar as
requisições dos
BluetoothServer Connectivity BluetoothServer1 dispositivos
Bluetooth
Clientes

Monitorar os
recebimentos de
mensagem
Clock Sensors Clock1
quando a
conexão for
estabelecida

Exibe a
mensagem “Por
favor habilite o
Bluetooth em
User
Notifier Notifier1 configurações do
Interface
dispositivo” se o
Bluetooth do
smartphone não
estiver acionado

3
Screenshots

4
5
6
Blocos do App Inventor
Inicialização
Criar uma variável chamada Servidor que deve ser inicializada com o valor
false.
O bloco when Screen1. Initialize fara a chamada da procedure inicializa.
A procedure inicializa faz a chamada do componente BluetoothServer1 para
começar a aceitar conexões, define o título da Screen1 para “Função =
indefinida” muda o valor da variável Servidor para false, desabilita o Clock1 e
chama o procedimento imprime com o parâmetro “Inicializando”
A procedure imprime irá colocar o texto atual no Label lblResultado enquanto o
texto anterior vai rolar para baixo.

Cliente: Conexão
No evento listpicker.BeforePicking do ListPicker ltpConecta serão
inicializados com os endereços MAC e os nomes dos dispositivos
emparelhados disponíveis. Depois de selecionar um endereço MAC, o módulo
de servidor irá parar de aceitar outras solicitações de conexão. No título da tela
o texto "Função = Cliente" será apresentado. O procedimento conectado
receberá (parâmetro = true) habilitará o botão Enviar, desativará o ListPicker
ltpConecta, iniciar o componente Clock1 e ativa o botão Desconectar.

7
8
Servidor: Conexão Aceita
Se o aplicativo recebe uma solicitação de conexão, ele aceita. Neste caso no
título da tela será exibido "Papel = servidor".

Clock1: Verifica se novas mensagens foram enviadas


A cada segundo será verificado, se existe algum texto recebido. Se sim, vai ser
exibido no Label resultado. Dependendo do papel servidor ou cliente, diferentes
blocos têm de ser usado.

9
Desligar
Quando parâmetro do procedimento Conectado receber false irá desativar o
botão Enviar, ativar o ListPicker ltpConecta, parar o componente Clock1 e
desativar o botão Desligar.

Outros blocos usados


O bloco Screen.ErrorOccurred pega erros e os exibe no Label lblResultado.

10