Check the status of connected Bluetooth devices

How do I know if a Bluetooth device is all connected to my laptop or not before transferring data? I wrote a java program using the blue-cove lib to detect and transfer data through a laptop. After transferring data for the first time, how can I check if the entire device is connected to a laptop before transferring data next time?

I saw the same question. But they asked to check the status of the Bluetooth device connected to the android.

+6
source share
1 answer

You can follow the sequence of steps and create an asynchronous task to check the connection when searching and sharing files between devices.

The deviceDiscovered() and inquiryCompleted() functions are those that execute when the device is found and when the request is complete.

If the device is disconnected, you will receive a notification from the inqueryCompleted method and process it in the line:

 try { synchronized(lock){ lock.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } 

In InterruptedException you can handle the error.

 package bt; import java.io.OutputStream; import java.util.ArrayList; import javax.bluetooth.DataElement; import javax.bluetooth.DeviceClass; import javax.bluetooth.DiscoveryAgent; import javax.bluetooth.DiscoveryListener; import javax.bluetooth.LocalDevice; import javax.bluetooth.RemoteDevice; import javax.bluetooth.ServiceRecord; import javax.bluetooth.UUID; import javax.microedition.io.Connector; import javax.obex.ClientSession; import javax.obex.HeaderSet; import javax.obex.Operation; import javax.obex.ResponseCodes; import bt.BTListener.MyDeviceListenerFilter; public class MyDiscoveryListener implements DiscoveryListener{ private static Object lock=new Object(); public ArrayList<RemoteDevice> devices; public MyDiscoveryListener() { devices = new ArrayList<RemoteDevice>(); } public static void main(String[] args) { MyDiscoveryListener listener = new MyDiscoveryListener(); try{ LocalDevice localDevice = LocalDevice.getLocalDevice(); DiscoveryAgent agent = localDevice.getDiscoveryAgent(); agent.startInquiry(DiscoveryAgent.GIAC, listener); try { synchronized(lock){ lock.wait(); } } catch (InterruptedException e) { e.printStackTrace(); return; } System.out.println("Device Inquiry Completed. "); UUID[] uuidSet = new UUID[1]; uuidSet[0]=new UUID(0x1105); //OBEX Object Push service int[] attrIDs = new int[] { 0x0100 // Service name }; for (RemoteDevice device : listener.devices) { agent.searchServices( attrIDs,uuidSet,device,listener); try { synchronized(lock){ lock.wait(); } } catch (InterruptedException e) { e.printStackTrace(); return; } System.out.println("Service search finished."); } } catch (Exception e) { e.printStackTrace(); } } @Override public void deviceDiscovered(RemoteDevice btDevice, DeviceClass arg1) { String name; try { name = btDevice.getFriendlyName(false); } catch (Exception e) { name = btDevice.getBluetoothAddress(); } devices.add(btDevice); System.out.println("device found: " + name); } @Override public void inquiryCompleted(int arg0) { synchronized(lock){ lock.notify(); } } @Override public void serviceSearchCompleted(int arg0, int arg1) { synchronized (lock) { lock.notify(); } } @Override public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { for (int i = 0; i < servRecord.length; i++) { String url = servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false); if (url == null) { continue; } DataElement serviceName = servRecord[i].getAttributeValue(0x0100); if (serviceName != null) { System.out.println("service " + serviceName.getValue() + " found " + url); if(serviceName.getValue().equals("OBEX Object Push")){ sendMessageToDevice(url); } } else { System.out.println("service found " + url); } } } private static void sendMessageToDevice(String serverURL){ try{ System.out.println("Connecting to " + serverURL); ClientSession clientSession = (ClientSession) Connector.open(serverURL); HeaderSet hsConnectReply = clientSession.connect(null); if (hsConnectReply.getResponseCode() != ResponseCodes.OBEX_HTTP_OK) { System.out.println("Failed to connect"); return; } HeaderSet hsOperation = clientSession.createHeaderSet(); hsOperation.setHeader(HeaderSet.NAME, "Hello.txt"); hsOperation.setHeader(HeaderSet.TYPE, "text"); //Create PUT Operation Operation putOperation = clientSession.put(hsOperation); // Send some text to server byte data[] = "Hello World !!!".getBytes("iso-8859-1"); OutputStream os = putOperation.openOutputStream(); os.write(data); os.close(); putOperation.close(); clientSession.disconnect(null); clientSession.close(); } catch (Exception e) { e.printStackTrace(); } } } 
+3
source

All Articles