22
BLUETHOOT ANDROID STUDIO USO DE SOCKETSPARA LA COMUNICACIÓN COMUNICACIÓN DE SOCKETS USANDO MODELO DE SERVIDOR CLIENTE SOCKETS SON INTERFACES PARA INTERCAMBIAR DATOS ENTRE DOS DISPOSITIVOS INALÁMBRICOS COMUNICACIÓN DE DATOS USA RFCOMM(RADIO FRECUENCY COMMUNICATIION) BASADO EN PROTOCOLO TCP-I

conexion y Clases Bluethoot

Embed Size (px)

DESCRIPTION

vercion 1.0 conexion bluethot

Citation preview

Bluethoot

BluethootAndroid StudioUso de socketspara la comunicacinComunicacin de sockets usando modelo de servidor clienteSockets son interfaces para intercambiar datos entre dos dispositivos inalmbricosComunicacin de datos usa Rfcomm(radio frecuency communicatiion) basado en protocolo TCP-IThe StEPS OF BLUETOOTH COMMUNICATIONPasos para la comunicacin bluetoothPrerequisitos Tener bluethoot y tener activado 1 etapa emparejar los dispositivos que losdispositivos se conozcan (interfas de usuario o un metodo) 2 etapa se establecer y usar una coneccion entre dispositivos Cada dispositivo tiene que crear un Bluetooth socketConectar los dos sockets Transmisin de datos atraves de la conexionEtapa 1 emparejar1 prender el adactador bluetooth2. dectectar la visivilida del bluetho3, escanear los dispositivos blueth4 , enva un pedido de entrlazar los dispositivos5 aceptanLink key(identificacin de dispositivo )2 etapa conectar 1servidor crear un servidor socket con un UUID2 servidor espera una solicitud de conecionCliente crea un socket de cliente para conectarse con el servidorCliente enva una solicitud de conexinServidor acepta el pedido y crea un socket para la comunicacin co ese clienteSe transmiten datos(bidireccionalmente) entre los dos sockets

Paso 1 el sevidor genera un server socket y ofrece un servicioServidos sokert tiene un ID u tiliza el cliente para conetarse los servicios en Bluethoot se son llamadas SDP sevice record(server discovery protocolo)SDP recors contiene el nombre del servicio y un UUI(universaliti unique identifi)Paso dos el cliente genera un (communication)SocketEl cliente crea cun sokect de comunication y conecta con el server sokect Metodo : conect(parameto) indentifica el soket del servidorEl servidor acepta el pedido mediante mtodo acscept()Servidor crea un sokect para la comunicacin para el cliente y el server soker danterior queda libre para mas pedidos Los dos sokets de comunicacin son conectados para transmitir datos que se escriben en el soketsPackage android.bluetoohSwictch bluetooth onEnable discoverability de device Scan for other bluetooth devises Query for paried bluetoth devices Establish RFCOMM channels to other devicesTrnsfer data to and from other devices http://developer.android.com/reference/android/bluetooth/package-summary.htmlhttp://developer.android.com/guide/topics/connectivity/bluetooth.htmlPermissions, constants,and clasesPara utilizar bluetooth necesitamos permisosandroid.permission.BLUETOOTH andlorandroid.permission.BLUETOOTH_ADMINIntents:ACTION_REQUEST_ENABLE:para prender el bluetoothACTION_REQUEST_DISCOVERABLE: para poner visible el device

ClasesBluetoothAdapter describe el dispositivoBluetoothDevice describe el adaptador del dispositivoBluethoothServersocketBluetoothSocketBluetoothadapterObtener una referencia del adaptador del del dispositivogetDefaulAdapter() (static method)Startdiscovery() buscar dispositivosGetbondieleDevices() lista de dispositivos pareadosListenUsigIngRFcommWithService record(name.uuid) crea soket de servidor

Class bluetoothdeviceCreaterfcommSocketToServiceRecord(uuuid)Crea socket del cliente

Class BLuetoothServersockets(representa el soket del serviddoe)Accept() close() la comunicationClass Bluetooth Socket(representa los sokets de comunicacion)Connect() conectarse al soket del servidor/close() Getimputstream(),getoutputStream() //intercambio de datos

Pasos on the server sideImport android.bluetoothStep1:obtenemos el adaptador bluetoothBluetoothAdapter btAdapter;// declaracione variablebtAdapter=BluetoothAdapter.getDefaultAdapter();//obtenemos referencia del adaptador del dispositivoIf(btadapter == null)//si no hay bluetoothError: Device does no support Bluetooth

Step2=revisamos que el el adaptador este activadoIf(!btAdapter.isEnabled()))Message: please enable Bt and try againAlternative Enable bluetooth with an intentStep3: Crear el server socketString servicename=BluetoothService_1;UUID uuid=UUID.fromString(12345678-4321-1444-ADDA-987456321741);BluetoothServerSocket servSocket;ServSocket=btAdapter,listenDeingRFcommWithServiceRecord(ServiceName,uuid)//crear sockert del servidor de radio frecuencia que es identificado por un sever record y si llegansolucitudes de un cliente, el cual va enviar una referenciade a un nuevo server soket.

Formato del UUIDXxxxxxxx-xxxx-Yxxx-Zxxx-xxxxxxxxxxxxY=4Significa que ha sido generado por el programadorZ= numero entre 8 y FPara la generacin de uuid existeUUID.randomUUID()Revisar clases en oracelStep 5:el servidor espera un pedido de un cliente ,acepta eso y el crea un socket de comunicacionBluetoothSocket commSocket;Commsocket= servSocket.accept(); // espera la solicitud de conexin del clienteservSocket.close();

Pasos on the Client sideImport android.bluetooth.*;Step 1: obtenemos el adaptador bluethotBluethoothadapter btAdapter;btAdapter=BluetooAdapter.getDefaultAdapter();If(btAdapter==null)Error:divice does not support BluetoothStep 2:revisa si el adaptador bluetooth esta activadoIf(!btAdapter.isEnabled())Message:please enable bt and try againAlternative:Enable bluetootwith an intentStep 3: determine el dispositivo al que se va ha conectar bluetoothDevice partnerDivice = null;Obtiene una lista del los dispositivos emparejados(conocidos)Set bondedDevs= btAdapter.getBondedDevices();//lista de los dispositivosIf(bondedDevs.size()==0)Error: no paired bluetooth devicesNota:Se deben emparejar los dispositivos antes de optener direcciones

Se puede buscar el dispositivo con el nombreBuscar el dispositivo con el nombre: devnameFor(Iterator it=bondedDevs.iterator();it.hasnext();) {bluetoothDevice btd=it.next();If(btd.getName().equals(devname)){partnerDevice=btd;Break;}If(parnerDevice =null )Error: no bluetooth device of this name

Step 4: conectar con el dispositivo enparejadoUse the uuid definido por el sevidorEl cliente debe tener el mismo uuid que el servidorUUID uuid = UUID.fromString(12345678-4321-411-ADDA-345127542950)BluetoothSoket commSoket;commSocket = partnerdevice.createRFcommSocketToServiceRecord(uuid);commSocket.connect() // enva pedido par conectarse con el servidorComunicacin cliente servidorStep1 crea fuljo para intercambiar datosinputStream inStream;outputStream outStream;InStream= new DataInputStream(commSocket.get InputStream());outStream= new DataOutputStream(commSocket.getOutputStrem());Step 2= enviar y recibir datosByte [] data=..outStream.write(data);

Byte[] buffer=new byte[];Int noReceived = inStream.read(buffer);Step 3: cerrar el socket de comunicacincommSocket.close();

consideracionesImportant:some operations are blokingAccept(),connerct(),read();write()Estas deberan estar separadas en diferentes no en el hilo de la interfas ( main)Ver hilos y sus correlaciones