Произошла ошибка при установлении соединения Bluetooth. Откат

#android #error-handling #bluetooth

#Android #обработка ошибок #bluetooth

Вопрос:

Я получаю следующую ошибку всякий раз, когда мое устройство пытается подключиться к устройству, которое находится вне зоны действия сети или которое не может подключиться. если соединение установлено, приложение работает нормально.

Прежде всего позвольте мне сказать вам, что этот вопрос задавался много раз раньше на этом сайте. Я просматриваю все это решение, но у меня ничего из этого не работает.

Ошибка возникает при попытке подключиться в моем случае к sock.connect. вы увидите это в моем менеджере Bluetooth.

код диспетчера Bluetooth:

 public class BluetoothManager {

private static final String TAG = BluetoothManager.class.getName();

private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

public static BluetoothSocket connect(BluetoothDevice dev) throws IOException {
    BluetoothSocket sock = null;
    BluetoothSocket sockFallback = null;

    Log.d(TAG, "Starting Bluetooth connection..");
    try {
        sock = dev.createRfcommSocketToServiceRecord(MY_UUID);
        sock.connect();
    } catch (Exception e1) {
        Log.e(TAG, "There was an error while establishing Bluetooth connection. Falling back..", e1);
        Class<?> clazz = sock.getRemoteDevice().getClass();
        Class<?>[] paramTypes = new Class<?>[]{Integer.TYPE};
        try {
            Method m = clazz.getMethod("createRfcommSocket", paramTypes);
            Object[] params = new Object[]{Integer.valueOf(1)};
            sockFallback = (BluetoothSocket) m.invoke(sock.getRemoteDevice(), params);
            sockFallback.connect();
            sock = sockFallback;
        } catch (Exception e) {
            Log.e(TAG, "Couldn't fallback while establishing Bluetooth connection.");

        }
    }
    return sock;
}
}
  

Журнал:

 E/com.quad14.obdnewtry.io.BluetoothManager: There was an error while establishing Bluetooth connection. Falling back..
    java.io.IOException: read failed, socket might closed or timeout, read ret: -1
        at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:738)
        at android.bluetooth.BluetoothSocket.readInt(BluetoothSocket.java:750)
        at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:375)
        at com.quad14.obdnewtry.io.BluetoothManager.connect(BluetoothManager.java:24)
        at com.quad14.obdnewtry.io.ObdGatewayService.startObdConnection(ObdGatewayService.java:116)
        at com.quad14.obdnewtry.io.ObdGatewayService.startService(ObdGatewayService.java:89)
        at com.quad14.obdnewtry.activity.MainActivity$16.onServiceConnected(MainActivity.java:1043)
        at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1453)
        at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1481)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6126)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)