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