From aa1979745f4190f46077800437d3564ed681fdba Mon Sep 17 00:00:00 2001 From: Shinichi Watanabe Date: Wed, 27 May 2026 11:55:10 +0900 Subject: [PATCH] Fix the issue-1894: https://github.com/smartdevicelink/sdl_java_suite/issues/1894: This fix the BluetoothSocket read change introduced in API37. --- .../transport/MultiplexBluetoothTransport.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java index 2eea57b984..dd918c28c5 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java @@ -777,6 +777,14 @@ public void run() { while (true) { try { bytesRead = mmInStream.read(buffer); + // API-37 changes the read value to -1 when connection is dropped. + // See https://developer.android.com/about/versions/17/behavior-changes-17#bluetooth-rfcomm-socket-change for details. + // We need to handle this case to break the loop. + if (bytesRead == -1) { + DebugTool.logInfo(TAG, "bytesRead returns -1...dealing with connection lost"); + connectionLost(); + break; + } // Log.i(getClass().getName(), "Received " + bytesRead + " bytes from Bluetooth"); for (int i = 0; i < bytesRead; i++) { input = buffer[i];