Antes de mais nada, para poder usar as funções de Bluetooth você deve colocar no manifesto que usará as permissões BLUETOOTH e BLUETOOTH_ADMIN:
<uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
O ponto de partida para controle do Bluetooth é obter um objeto BluetoothAdapter:
private BluetoothAdapter mBluetoothAdapter; //... mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();Se o objeto for null, o device Android não dispõe de interface Bluetooth. Nada pode ser feito neste caso, fora avisar ao usuário.
Se o objeto for null, temos uma interface Bluetooth, mas ela pode estar desligada. Neste caso, devimos pedir ao usuário para ligá-la. A forma correta de fazer é pedir ao sistema Android apresentar a solicitação e, se o usuário concordar, ligar o Bluetooth:
private static final int REQUEST_ENABLE_BT = 1; if (mBluetoothAdapter != null) { if (!mBluetoothAdapter.isEnabled()) { // Pede para ligar o Bluetooth Intent enableBtIntent = new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult (enableBtIntent, REQUEST_ENABLE_BT); return false; } }Reparar que estamos disparando uma nova Activity através de startActivityForResult.Desta forma, a nossa atividade será suspensa até que o usuário faça a opção de ligar o Bluetooth ou recusar a solicitação. Após a opção será chamado o método onActivityResult. O parâmetro requestCode conterá a identificação da Activity (REQUEST_ENABLE_BT no meu exemplo) e o parâmetro resultCode informará a opção do usuário:
public boolean onActivityResult(int requestCode, int resultCode) { if (requestCode == REQUEST_ENABLE_BT) { if (resultCode == Activity.RESULT_OK) { // Autorizado acesso ao Bluetooth } else if (resultCode == Activity.RESULT_CANCELED) { // Negado acesso ao Bluetooth } return true; } return false; }
Uma dificuldade adicional é que o usuário pode ligar ou desligar o Bluetooth quando quiser. Para termos uma aplicação mais robusta é importante estarmos atentos para estas alterações. Isto é feito registrando um Receiver para esta ação:
// registra mReceiverBT para receber avisos da mudança de estado do BT IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); registerReceiver(mReceiverBT, filter); // trata notificaçoes de mudança de estado do BT private final BroadcastReceiver mReceiverBT = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) { // estado mudou int estado = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1); if ((estado == BluetoothAdapter.STATE_ON)) { // Ligou Bluetooth } else if (estado == BluetoothAdapter.STATE_OFF) { // Desligou Bluetooth" } } } };
Somente após confirmarmos que temos uma interface Bluetooth e que ela está ligada podemos ir em frente, tipicamente procurando os dispositivos que estão no alcance - o que veremos na próxima parte.
Nenhum comentário:
Postar um comentário