Documente Academic
Documente Profesional
Documente Cultură
Conectividad Bluetooth
Bluetooth es una tecnologa standard abierta, global wireless para intercambio de datos sobre distancias cortas entre aparatos fijos y mviles, creado areas de redes personales (PANs), con altos niveles de seguridad.
4 tareas principales para comunicarse usando Bluetooths La configuracin de Bluetooth Encontrar aparatos que estn o bien ya apareados o que se encuentre dentro del area local Conectar aparatos Transferir datos entre aparatos
EL marco de aplicaciones de Android provee acceso a la funcionalidad Bluetooth a travs de la Android Bluetooth API
Permisos Bluetooth
BLUETOOTH: Necesario para realizar cualquier comunicacin BT (pedir o aceptar conexiones, enviar datos) BLUETOOTH_ADMIN: Necesario para descubrimiento de equipos o configurar BT Para aplicaciones que necesiten descubrir y conectar equipos BT
Se declaran en el Manifiesto
<manifest ... > <uses-permission android:name="android.permission.BLUETOOTH" /> ... </manifest>
3) Descubrimiento de equipos Bsqueda en el area local de equipos que tengan BT habilitado Se usa el BluetoothAdapter Una vez descubierto se intercambian el nombre, tipo, y la direccin MAC nica Se elige si comunicarse o no Una vez comunicado por primera vez se hace una peticion de vinculacin. Una vez vinculados las conexiones siguientes se hacen sin necesidad de descubrimiento.
3) Descubrimiento de equipos Luego comienza el descubrimiento de servicios llamando al mtodo startDiscovery() La aplicacin debe registrar un BroadcastReceiver para el intent ACTION_FOUND
// Crear un BroadcastReceiver para ACTION_FOUND private final BroadcastReceiver mReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); // cuando se encuentra un aparato if (BluetoothDevice.ACTION_FOUND.equals(action)) { // obtiene el objeto BluetoothDevice desde el intent BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); // Agrega el nombre y direccin a un array adapter para mostrarlos en una ListView mArrayAdapter.add(device.getName() + "\n" + device.getAddress()); } } }; // Registra el BroadcastReceiver IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); registerReceiver(mReceiver, filter);
3) Descubrimiento de equipos Si se quiere hacer visible el dispositivo propio a otros equipos hay que llamar a startActivity con el intent ACTION_REQUEST_DISCOVERABLE
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); startActivity(discoverableIntent);
Servidor:
Desarrollo de Aplicaciones Android UCLM 2012/13
a) Crea unBluetoothServerSocket llamando al listenUsingRFcommWithServiceRecord(String,UUID) b)Comienza a escuchar llamando al mtodo accept() Es bloqueante, hasta una excepcin o hasta que el aparato remoto mande un pedido de conexin con la UUID correspondiente. En este caso el metodo accept() devuelve BluetoothSocket c) Si no se aceptan mas conexiones invocar al mtodo close()
Cliente
Desarrollo de Aplicaciones Android UCLM 2012/13
a) Crea unBluetoothSocket llamando al createRFcommWithServiceRecord(UUID) b)Inicia la conexin llamando al mtodo connect() Connect chequea el UUID, si coincide con el del serversocket y el remoto acepta la comunicacin, comparten entonces el canal Rfcomm. Es bloqueante, se realiza con un thread separado del thread principal.
5) Gestionando la conexin Una vez conectados comienza el envo de datos 1) Se hace usando las clases InputStream y OutputStream que manejan la transmisin a travs del Socket. Para obtener y enviar datos se invocan a los mtodos getInputStream() Y getOutputStream. 2) Se leeen y se escriben datos en los streams usando read(byte[]) y write(byte[]) respectivamente
EJEMPLO
Permisos declarados en el Manifiesto Dos actividades declaradas en el Manifiesto: DeviceListActivity (Abre cuadro de dilogo) BluetoothChat (Inicia la aplicacin)
Desarrollo de Aplicaciones Android UCLM 2012/13
EJEMPLO
Tres archivos .java (dos actividades y una clase) BluetoothChat.java: Archivo principal, despliega el chat DeviceListActivity.java: Actividad que aparece como un dilogo. Muestra una lista de los aparatos vinculados y los descubiertos BluetoothChatService.java: Clase que configura y gestiona las comunicaciones con otros equipos. Tres threads: Uno que escucha, otro para conectar, Otro para enviar datos