A Plataforma Android inclui suporte à pilha de rede Bluetooth, que permite que um dispositivo troque dados sem fio com outros dispositivos Bluetooth. O framework do app oferece acesso à funcionalidade Bluetooth por meio de APIs Bluetooth. Essas APIs permitem que os apps se conectem a outros dispositivos Bluetooth, ativando recursos sem fio de ponto a ponto e multiponto.
Usando as APIs Bluetooth, um aplicativo pode realizar as seguintes ações:
- Procurar outros dispositivos Bluetooth.
- Consulte o adaptador Bluetooth local para ver se há dispositivos Bluetooth pareados.
- Estabelecer canais RFCOMM.
- Conecte-se a outros dispositivos por meio da descoberta de serviços.
- Transfira dados de e para outros dispositivos.
- gerenciar várias conexões;
Este tópico se concentra no Bluetooth clássico. O Bluetooth clássico é a escolha certa para operações com maior consumo da bateria, como streaming e comunicação entre dispositivos. Para dispositivos Bluetooth com baixos requisitos de energia, considere usar conexões Bluetooth de baixa energia.
Esta documentação descreve diferentes perfis Bluetooth e explica como usar as APIs Bluetooth para realizar as quatro principais tarefas necessárias para a comunicação usando o Bluetooth:
- Configurando o Bluetooth.
- Encontrando dispositivos pareados ou disponíveis na região.
- Conectando os dispositivos.
- Transferindo dados entre dispositivos.
Para uma demonstração do uso das APIs Bluetooth, consulte o app de exemplo Bluetooth Chat (link em inglês).
Noções básicas
Para que dispositivos com Bluetooth transmitam dados entre si, primeiro eles precisam formar um canal de comunicação usando um processo de pareamento. Um dispositivo, o dispositivo detectável, fica disponível para solicitações de conexão recebidas. Outro dispositivo encontra o dispositivo detectável usando um processo de descoberta de serviço. Depois que o dispositivo detectável aceita a solicitação de pareamento, os dois dispositivos concluem um processo de vinculação, em que trocam chaves de segurança. Os dispositivos armazenam essas chaves em cache para uso posterior. Após a conclusão dos processos de pareamento e vinculação, os dois dispositivos trocam informações. Quando a sessão é concluída, o dispositivo que iniciou a solicitação de pareamento libera o canal que o vinculou ao dispositivo detectável. No entanto, os dois dispositivos permanecem vinculados. Dessa forma, eles podem se reconectar automaticamente durante uma sessão futura, desde que estejam ao alcance um do outro e nenhum dos dispositivos tenha removido o vínculo.
O uso das APIs Bluetooth requer a
declaração de várias permissões
no arquivo de manifesto. Depois que seu app tiver permissão para usar o Bluetooth, ele
precisará acessar o
BluetoothAdapter
e
determinar se o Bluetooth está disponível no dispositivo.
Se o Bluetooth estiver disponível, há três etapas para fazer uma conexão:
- Encontre dispositivos Bluetooth por perto, sejam eles pareados ou novos.
- Conectar-se a um dispositivo Bluetooth.
- Transfira dados com o dispositivo conectado.
Alguns dispositivos usam um perfil Bluetooth específico que declara os dados fornecidos.
Classes principais e interfaces
Todas as APIs Bluetooth estão disponíveis no
pacote android.bluetooth
.
Confira a seguir as classes e interfaces necessárias para criar
conexões Bluetooth:
BluetoothAdapter
- Representa o adaptador Bluetooth local (rádio Bluetooth). O
BluetoothAdapter
é o ponto de entrada para toda a interação do Bluetooth. Com isso, é possível descobrir outros dispositivos Bluetooth, consultar uma lista de dispositivos vinculados (pareados), instanciar umBluetoothDevice
usando um endereço MAC conhecido e criar umBluetoothServerSocket
para ouvir comunicações de outros dispositivos. BluetoothDevice
- Representa um dispositivo Bluetooth remoto. Use esse método para solicitar uma conexão com um
dispositivo remoto usando um
BluetoothSocket
ou consultar informações sobre o dispositivo, como nome, endereço, classe e estado de vinculação. BluetoothSocket
- Representa a interface de um soquete Bluetooth (semelhante a um TCP
Socket
). Esse é o ponto de conexão que permite que um app troque dados com outro dispositivo Bluetooth usandoInputStream
eOutputStream
. BluetoothServerSocket
- Representa um soquete de servidor aberto que detecta solicitações recebidas (semelhante
a um
ServerSocket
TCP). Para conectar dois dispositivos, um deles precisa abrir um soquete de servidor com essa classe. Quando um dispositivo remoto Bluetooth faz uma solicitação de conexão, ele aceita a conexão e retorna umBluetoothSocket
conectado. BluetoothClass
- Descreve as características e recursos gerais de um dispositivo Bluetooth. Esse é um conjunto de propriedades somente leitura que define as classes e os serviços do dispositivo. Embora essas informações forneçam uma dica útil sobre o tipo de um dispositivo, os atributos dessa classe não descrevem necessariamente todos os perfis e serviços Bluetooth com suporte do dispositivo.
BluetoothProfile
- Uma interface que representa um perfil Bluetooth. Um perfil Bluetooth é uma especificação de interface sem fio para comunicação por Bluetooth entre dispositivos. Um exemplo é o perfil Hands-Free. Para ver mais informações sobre perfis, consulte Perfis Bluetooth.
BluetoothHeadset
- Oferece suporte para fones de ouvido Bluetooth que possam ser usados com smartphones. Isso inclui o perfil Bluetooth Headset e o perfil Hands-Free (v1.5).
BluetoothA2dp
- Define como fazer streaming de áudio de alta qualidade de um dispositivo para outro por uma conexão Bluetooth usando o Perfil avançado de distribuição de áudio (A2DP, na sigla em inglês).
BluetoothHealth
- Representa um proxy do perfil do Health Device que controla o serviço do Bluetooth.
BluetoothHealthCallback
- Uma classe abstrata usada para implementar callbacks
BluetoothHealth
. É necessário estender essa classe e implementar os métodos de callback para receber atualizações sobre mudanças no estado de registro do app e no estado do canal Bluetooth. BluetoothHealthAppConfiguration
- Representa uma configuração de app que o app de saúde do Bluetooth registra para se comunicar com um dispositivo de saúde remoto do Bluetooth.
BluetoothProfile.ServiceListener
- Uma interface que notifica os clientes de comunicação entre processos (IPC)
BluetoothProfile
quando eles são conectados ou desconectados do serviço interno que executa um perfil específico.