Antes que seu app possa se comunicar por Bluetooth ou Bluetooth de baixa energia,
você precisa verificar se o dispositivo oferece suporte ao Bluetooth e, em caso afirmativo,
verificar se ele está ativado. Essa verificação só será necessária se o
atributo android:required
na entrada do arquivo de manifesto <uses-feature.../>
estiver
definido como false
.
Se não houver suporte para o Bluetooth, desative todos os recursos do Bluetooth. Se houver suporte para o Bluetooth, mas ele estiver desativado, você poderá solicitar que o usuário ative o Bluetooth sem sair do app.
A primeira etapa é adicionar as permissões do Bluetooth ao arquivo de manifesto para usar as APIs abaixo.
Depois que as permissões forem aplicadas, a configuração do Bluetooth vai ser feita em duas etapas
usando BluetoothAdapter
:
Acesse o
BluetoothAdapter
.O
BluetoothAdapter
é necessário para toda e qualquer atividade do Bluetooth. OBluetoothAdapter
representa o próprio adaptador Bluetooth do dispositivo (o rádio Bluetooth). Para acessar umBluetoothAdapter
, primeiro você precisa ter umContext
. Use esse contexto para acessar uma instância do serviço do sistemaBluetoothManager
. ChamarBluetoothManager#getAdapter
resultará em um objetoBluetoothAdapter
. SegetAdapter()
retornar nulo, o dispositivo não oferece suporte a Bluetooth.Por exemplo:
Kotlin
val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java) val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter() if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Java
BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Ative o Bluetooth.
Em seguida, é necessário garantir a ativação do Bluetooth. Chame
isEnabled()
para verificar se o Bluetooth está ativado. Se o método retornar "false", o Bluetooth será desativado. Para solicitar a ativação do Bluetooth, chamestartActivityForResult()
, transmitindo uma ação da intentACTION_REQUEST_ENABLE
. Essa chamada emite uma solicitação para ativar o Bluetooth pelas configurações do sistema (sem interromper o app).Por exemplo:
Kotlin
if (bluetoothAdapter?.isEnabled == false) { val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT) }
Java
if (!bluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); }
Uma caixa de diálogo será exibida solicitando a permissão do usuário para ativar o Bluetooth, conforme mostrado na Figura 1. Se o usuário conceder permissão, o sistema vai começar a ativar o Bluetooth, e o foco vai retornar ao app quando o processo for concluído (ou falhar).
Figura 1. Caixa de diálogo de ativação do Bluetooth.
A constante REQUEST_ENABLE_BT
transmitida para
startActivityForResult()
é um número inteiro definido localmente que precisa ser maior ou igual a 0. O sistema
transmite essa constante de volta para você na implementação
onActivityResult()
como o parâmetro requestCode
.
Se a ativação do Bluetooth for bem-sucedida, sua atividade vai receber o
código de resultado RESULT_OK
no
callback onActivityResult()
. Se o Bluetooth não foi ativado devido a um erro (ou
o usuário respondeu "Negar"), o código de resultado será
RESULT_CANCELED
.
Opcionalmente, o app também pode detectar a intent de transmissão
ACTION_STATE_CHANGED
, que o sistema transmite sempre que o estado do Bluetooth
muda. Essa transmissão contém os campos extras
EXTRA_STATE
e
EXTRA_PREVIOUS_STATE
,
contendo os estados novo e antigo do Bluetooth, respectivamente. Os valores possíveis para
esses campos extras são
STATE_TURNING_ON
,
STATE_ON
,
STATE_TURNING_OFF
e STATE_OFF
.
Ouvir essa transmissão pode ser útil se o app precisar detectar mudanças
feitas no estado do Bluetooth durante a execução.
Depois que o Bluetooth estiver ativado no dispositivo, você poderá usar o Bluetooth clássico e o Bluetooth de baixa energia.
Para o Bluetooth clássico, é possível encontrar dispositivos Bluetooth e conectar-se a dispositivos Bluetooth.
Para Bluetooth de baixa energia, é possível encontrar dispositivos BLE, conectar-se a um servidor GATT e transferir dados do BLE.