Visão geral do Bluetooth

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:

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 um BluetoothDevice usando um endereço MAC conhecido e criar um BluetoothServerSocket 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 usando InputStream e OutputStream.
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 um BluetoothSocket 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.