Estoy desarrollando un programa en el que, desde un teléfono Android, tengo que conectarme como cliente a un sensor médico Bluetooth. Estoy usando la API oficial de Bluetooth y no hay problema durante la conexión (perfil SPP), pero cuando termino el socket, el sensor todavía está conectado a mi teléfono (aunque tengo cerrada la conexión).Desconectar un conector bluetooth en Android
¿Hay alguna forma de realizar una desconexión de Bluetooth? Creo que hay una intención llamada ACTION_ACL_CONNECTED, que hace eso. ¿Alguien puede explicarme cómo usar esto?
Gracias de antemano.
EDITADO: Aquí está el código, si alguien necesita información adicional, es un sensor médico Nonin 4100.
Set<BluetoothDevice> pairedDevices = Activa.myBluetoothAdapter.getBondedDevices();
// If there are paired devices
if (pairedDevices.size() > 0) {
// Loop through paired devices
for (BluetoothDevice device : pairedDevices) {
// Add the name and address to an array adapter to show in a ListView
String name = device.getName();
if (name.contains("Nonin")) {
try {
found = true;
// socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
// handler.sendEmptyMessage(5);
// Activa.myBluetoothAdapter.cancelDiscovery();
// socket.connect();
BluetoothDevice hxm = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(device.getAddress());
Method m;
try {
m = hxm.getClass().getMethod("createRfcommSocket", new Class[]{int.class});
socket = (BluetoothSocket)m.invoke(hxm, Integer.valueOf(1));
handler.sendEmptyMessage(5);
socket.connect();
} catch (Exception e) {
handler.sendEmptyMessage(7);
e.printStackTrace();
break;
}
handler.sendEmptyMessage(6);
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
byte[] retrieve = { 0x44, 0x31};
out.write(retrieve);
byte [] ack = new byte [1];
in.read(ack);
if (ack[0] == 0x15) {
cancelMeasurement();
return;
}
byte [] data = new byte [3];
long timeStart = System.currentTimeMillis();
this.timePassed = System.currentTimeMillis() - timeStart;
while ((this.timePassed < (this.time))&&(this.finished)) {
try {
in.read(data);
processData(data);
Thread.sleep(1000);
this.timePassed = System.currentTimeMillis() - timeStart;
} catch (Exception e) {
e.printStackTrace();
}
}
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Hola, En primer lugar, thansk por su respuesta, pero no me resuelve el problema. Estaba haciendo algo similar (es decir, primero cerrando las transmisiones y luego el socket) y desconecto la conexión del lado de Android, pero el sensor médico que estaba usando no se anuncia de la desconexión y continúa conectado, entonces puedo volveré a conectarlo a menos que lo reinicie. – user365610
Por favor, publique su código. En este punto, solo estamos adivinando. He visto el problema que estás informando, pero puede haber muchas causas, así que antes de perder más de mi tiempo adivinando, publica tu código. –
He editado la publicación original con el código. He reemplazado la parte de cerrar las transmisiones y el socket con la que me pasaste, pero sigue siendo igual. Gracias por adelantado. – user365610