Я создаю Android APP, который может соединить два устройства BT и осуществлять связь через SPP. Для создания такого приложения я следую простой логике c.
Я получил два адреса ma c устройства BT, поэтому в течение l oop я подключаю устройства BT, как показано ниже :
private void connect() {
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String[] strDevice = deviceAddress.split(",");
BluetoothDevice device = null;
String currentConnection;
String deviceName = "";
try {
disconnect();
Thread.sleep(500);
for (String item: strDevice) {
Log.d(TAG,"item is: " + item + " size is: " + strDevice.length);
currentConnection = item;
device = bluetoothAdapter.getRemoteDevice(item);
deviceName = device.getName() != null ? device.getName() : device.getAddress();
status("connecting..." + item);
connected = Connected.Pending;
socket = new SerialSocket();
service.connect(this, "Connected to " + deviceName);
socket.connect(getContext(), service, device);
Thread.sleep(500);
}
} catch (Exception e) {
onSerialConnectError(e);
}
}
Используя приведенный выше код, я могу соединить два устройства BT. Но проблема в том, что когда я закрываю активность, я отключаю их, но в то время отключается только одно устройство. Я вызываю разъединение на «OnDestroy» фрагмента:
@Override
public void onDestroy() {
if (connected != Connected.False) {
disconnect();
}
getActivity().stopService(new Intent(getActivity(), SerialService.class));
super.onDestroy();
}
void disconnect() {
listener = null; // ignore remaining data and errors
connected = false; // run loop will reset connected
if(socket != null) {
try {
socket.close();
} catch (Exception ignored) {
}
socket = null;
}
try {
context.unregisterReceiver(disconnectBroadcastReceiver);
} catch (Exception ignored) {
}
}
Мне нужна помощь, чтобы выяснить, почему при разъединении отключается только одно устройство? Нужно ли закрывать две розетки, потому что при подключении открываются две розетки для двух устройств? Если да, как я могу закрыть две розетки?
Заранее спасибо