Visão geral do Bluetooth
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
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.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-26 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-26 UTC."],[],[],null,["# Bluetooth overview\n\nThe Android platform includes support for the Bluetooth network stack, which\nallows a device to wirelessly exchange data with other Bluetooth devices. The\napp framework provides access to the Bluetooth functionality through Bluetooth\nAPIs. These APIs let apps connect to other Bluetooth devices, enabling\npoint-to-point and multipoint wireless features.\n\nUsing the Bluetooth APIs, an app can perform the following:\n\n- Scan for other Bluetooth devices.\n- Query the local Bluetooth adapter for paired Bluetooth devices.\n- Establish RFCOMM channels.\n- Connect to other devices through service discovery.\n- Transfer data to and from other devices.\n- Manage multiple connections.\n\nThis topic focuses on *Classic Bluetooth* . Classic Bluetooth is the right choice\nfor more battery-intensive operations, which include streaming and communicating\nbetween devices. For Bluetooth devices with low power requirements, consider\nusing [Bluetooth Low Energy](/develop/connectivity/bluetooth/ble-overview)\nconnections.\n\nThis documentation describes different Bluetooth\n[profiles](/develop/connectivity/bluetooth/profiles) and explains how to\nuse the Bluetooth APIs to accomplish the four major tasks necessary to\ncommunicate using Bluetooth:\n\n- Setting up Bluetooth.\n- Finding devices that are either paired or available in the local area.\n- Connecting devices.\n- Transferring data between devices.\n\nFor a demonstration of using the Bluetooth APIs, see the [Bluetooth Chat sample\napp](https://github.com/android/connectivity-samples/tree/master/BluetoothChat).\n\nThe basics\n----------\n\nFor Bluetooth-enabled devices to transmit data between each other, they must\nfirst form a channel of communication using a pairing process. One device, a\ndiscoverable device, makes itself available for incoming connection requests.\nAnother device finds the discoverable device using a service discovery process.\nAfter the discoverable device accepts the pairing request, the two devices\ncomplete a bonding process in which they exchange security keys. The devices\ncache these keys for later use. After the pairing and bonding processes are\ncomplete, the two devices exchange information. When the session is complete,\nthe device that initiated the pairing request releases the channel that had\nlinked it to the discoverable device. The two devices remain bonded, however, so\nthey can reconnect automatically during a future session as long as they're in\nrange of each other and neither device has removed the bond.\n\nUse of the Bluetooth APIs requires\n[declaring several permissions](/develop/connectivity/bluetooth/bt-permissions#declare)\nin your manifest file. Once your app has permission to use Bluetooth, your app\nneeds to access the\n[`BluetoothAdapter`](/reference/android/bluetooth/BluetoothAdapter) and\n[determine if Bluetooth is available on the device](/develop/connectivity/bluetooth/setup).\nIf Bluetooth is available, there are three steps to make a connection:\n\n- [Find nearby Bluetooth\n devices](/develop/connectivity/bluetooth/find-bluetooth-devices), either devices that are already paired or new ones.\n- [Connect to a Bluetooth\n device](/develop/connectivity/bluetooth/connect-bluetooth-devices).\n- [Transfer data with the connected\n device](/develop/connectivity/bluetooth/transfer-data).\n\nCertain devices use a specific [Bluetooth\nprofile](/develop/connectivity/bluetooth/profiles) that declares the data\nit provides.\n\nKey classes and interfaces\n--------------------------\n\nAll of the Bluetooth APIs are available in the\n[`android.bluetooth`](/reference/android/bluetooth/package-summary) package.\nThe following are the classes and interfaces you need in order to create\nBluetooth connections:\n\n[`BluetoothAdapter`](/reference/android/bluetooth/BluetoothAdapter)\n: Represents the local Bluetooth adapter (Bluetooth radio). The\n `BluetoothAdapter` is the entry-point for all Bluetooth interaction. Using\n this, you can discover other Bluetooth devices, query a list of bonded\n (paired) devices, instantiate a\n `BluetoothDevice` using a known MAC address, and create a\n `BluetoothServerSocket` to listen for communications from other devices.\n\n[`BluetoothDevice`](/reference/android/bluetooth/BluetoothDevice)\n: Represents a remote Bluetooth device. Use this to request a connection with a\n remote device through a `BluetoothSocket` or query information about the\n device such as its name, address, class, and bonding state.\n\n[`BluetoothSocket`](/reference/android/bluetooth/BluetoothSocket)\n: Represents the interface for a Bluetooth socket (similar to a TCP\n [`Socket`](/reference/java/net/Socket)). This is the connection point that\n allows an app to exchange data with another Bluetooth device using\n [`InputStream`](/reference/java/io/InputStream) and\n [`OutputStream`](/reference/java/io/OutputStream).\n\n[`BluetoothServerSocket`](/reference/android/bluetooth/BluetoothServerSocket)\n: Represents an open server socket that listens for incoming requests (similar\n to a TCP [`ServerSocket`](/reference/java/net/ServerSocket)). In order to\n connect two devices, one device must open a server socket with this\n class. When a remote Bluetooth device makes a connection request to this\n device, the device accepts the connection and then returns a connected\n `BluetoothSocket`.\n\n[`BluetoothClass`](/reference/android/bluetooth/BluetoothClass)\n: Describes the general characteristics and capabilities of a Bluetooth device.\n This is a read-only set of properties that defines the device's classes and\n services. Although this information provides a useful hint regarding a\n device's type, the attributes of this class don't necessarily describe all\n Bluetooth profiles and services that the device supports.\n\n[`BluetoothProfile`](/reference/android/bluetooth/BluetoothProfile)\n: An interface that represents a Bluetooth profile. A Bluetooth profile is a\n wireless interface specification for Bluetooth-based communication between\n devices. An example is the Hands-Free profile. For more discussion of\n profiles, see [Bluetooth profiles](/develop/connectivity/bluetooth/profiles).\n\n[`BluetoothHeadset`](/reference/android/bluetooth/BluetoothHeadset)\n: Provides support for Bluetooth headsets to be used with mobile phones. This\n includes both the Bluetooth Headset profile and the Hands-Free (v1.5) profile.\n\n[`BluetoothA2dp`](/reference/android/bluetooth/BluetoothA2dp)\n: Defines how high-quality audio can be streamed from one device to another over\n a Bluetooth connection using the Advanced Audio Distribution Profile (A2DP).\n\n[`BluetoothHealth`](/reference/android/bluetooth/BluetoothHealth)\n: Represents a Health Device Profile proxy that controls the Bluetooth service.\n\n[`BluetoothHealthCallback`](/reference/android/bluetooth/BluetoothHealthCallback)\n: An abstract class that you use to implement `BluetoothHealth` callbacks. You\n must extend this class and implement the callback methods to receive updates\n about changes in the app's registration state and Bluetooth channel\n state.\n\n[`BluetoothHealthAppConfiguration`](/reference/android/bluetooth/BluetoothHealthAppConfiguration)\n: Represents an app configuration that the Bluetooth Health third-party\n app registers to communicate with a remote Bluetooth health device.\n\n[`BluetoothProfile.ServiceListener`](/reference/android/bluetooth/BluetoothProfile.ServiceListener)\n: An interface that notifies `BluetoothProfile` interprocess communication (IPC)\n clients when they have been connected to or disconnected from the internal\n service that runs a particular profile."]]