Professional Documents
Culture Documents
La mayora de los dispositivos Android tienen Bluetooth y el framework Android ofrece APIs que sirven
para facilitar el uso del Bluetooth en sus aplicaciones. Puede utilizar esta API para intercambiar datos,
conectarse a otros dispositivos que soportan esta tecnologa, etc.
El primer paso necesario e importante en el uso de las APIs Bluetooth consiste en comprobar si el
dispositivo en cuestin efectivamente tiene Bluetooth.
BluetoothAdapter bluetoothAdapter =
BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter != null) {
Toast.makeText(this, "Este dispositivo tiene
Bluetooth", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Este dispositivo no tiene
Bluetooth", Toast.LENGTH_LONG).show();
}
<uses-permission android:name="android.permission.BLUETOOTH"/>
1. Activar el Bluetooth
El Bluetooth puede estar disponible en el dispositivo pero inactivo. Puede activarlo de dos formas:
if(!bluetoothAdapter.isEnabled()) {
startActivityForResult(new
Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE),
BLUETOOTH_ACTIVATION);
}
Lo que dar:
El usuario tendr la eleccin de activar o no el Bluetooth y el resultado de esta decisin se podr
obtener en el mtodo onActivityResult.
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == BLUETOOTH_ACTIVATION) {
if (resultCode == RESULT_OK) {
Toast.makeText(BluetoothActivity.this,
"El usuario ha activado el Bluetooth",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(BluetoothActivity.this,
"El usuario no ha activado el Bluetooth",
Toast.LENGTH_LONG).show();
}
}
}
bluetoothAdapter.enable();
Esta tcnica fuerza la activacin del Bluetooth sin solicitar la autorizacin del usuario y requiere
otrapermission (la que sirve para administrar el Bluetooth del dispositivo).
<uses-permission
android:name="android.permission.BLUETOOTH_ADMIN"/>
startActivityForResult(new
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE), BLUETOOTH_SCAN);
Lo que dar:
Puede conocer la lista de dispositivos ya asociados al dispositivo en cuestin a travs
del mtodogetBondedDevices. A continuacin, puede recorrer fcilmente la lista de dispositivos que
se han encontrado.
Set<BluetoothDevice> knownDevices =
bluetoothAdapter.getBondedDevices();
for (BluetoothDevice device: knownDevices) {
Log.v("BluetoothActivity", "dispositivo = " + device.getName());
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_DISCOVER_START)) {
//Comienzo de la bsqueda de nuevos dispositivos
} else if (intent.getAction().equals(ACTION_DISCOVER_END)) {
//Final de la bsqueda de nuevos dispositivos
}
};
};
Debe registrar los Broadcast Receivers en el mtodo onResume de su actividad. No olvide cancelar la
suscripcin en el mtodo onPause.
registerReceiver(discoverDevicesStarted, new
IntentFilter(ACTION_DISCOVER_START));
registerReceiver(discoverDevicesStarted, new
IntentFilter(ACTION_DISCOVER_END));
bluetoothAdapter.startDiscovery();
@Override
protected void onResume() {
super.onResume();
registerReceiver(discoverDevicesStarted, new
IntentFilter(ACTION_DISCOVER_START));
registerReceiver(discoverDevicesStarted, new
IntentFilter(ACTION_DISCOVER_END));
bluetoothAdapter.startDiscovery();
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(discoverDevicesStarted);
bluetoothAdapter.cancelDiscovery();
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_DISCOVER_START)) {
//Comienzo de la bsqueda de nuevos dispositivos
} else if (intent.getAction().equals(ACTION_DISCOVER_END)) {
//Final de la bsqueda de nuevos dispositivos
} else if
(BluetoothDevice.ACTION_FOUND.equals(intent.getAction())) {
if (intent != null &&
intent.hasExtra(BluetoothDevice.EXTRA_DEVICE)) {
BluetoothDevice newDevice =
intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
}
}
};
};