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, 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;
- }
- }
- 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