Я работаю над приложением Android, которое подключается к устройству Bluetooth с помощью BluetoothSocket. Однако, когда я пытаюсь подключиться, я получаю следующую ошибку:
работает, когда я пытаюсь подключиться к Bluetooth ноутбука, но сбой, когда попробуйте подключиться с другим устройством Android (Redmi A2 (Androdi OS 13)) < /p>
Attempting to connect... Attempt 3
connect() for device XX:XX:XX:XX:69:7D called by pid: 5069
read failed, socket might be closed or timeout, read ret: -1
at android.bluetooth.BluetoothSocket.readInt(BluetoothSocket.java:1079)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:588)
at com.sample.BluetoothUtil$ConnectThread.run(BluetoothUtil.kt:156)
< /code>
Текущая реализация < /p>
Вот подключение, которое я использую для установления соединения Bluetooth: < /p>
private inner class ConnectThread(val device: BluetoothDevice?) : Thread() {
private val connectionUUID = device?.getUuids()?.get(0)?.getUuid()
private var bluetoothSocket: BluetoothSocket? = null
override fun run() {
dataObjects.bluetoothAdapter?.cancelDiscovery()
bluetoothSocket = device?.createInsecureRfcommSocketToServiceRecord(connectionUUID)
bluetoothSocket?.let { socket ->
try {
val maxRetries = 3
var attemptCount = 0
while (!connectionAttempted && attemptCount < maxRetries) {
try {
Log.d("BLUETOOTH_CONNECT", "Attempting to connect... Attempt ${attemptCount + 1}")
isConnecting = true
// Wait for bonding to complete if in progress
while (device?.bondState == BluetoothDevice.BOND_BONDING) {
Thread.sleep(100)
}
socket.connect()
connectionAttempted = true
Log.d("BLUETOOTH_CONNECT", "Connection successful")
showToast("Connected to ${device?.name ?: "device"}")
return
} catch (e: IOException) {
Log.e("BLUETOOTH_CONNECT", "Connection attempt failed", e)
attemptCount++
isConnecting = false
if (attemptCount < maxRetries) {
Thread.sleep(1000)
}
}
}
if (!connectionAttempted) {
Log.e("BLUETOOTH_CONNECT", "Failed to connect after $maxRetries attempts")
showToast("Failed to connect after several attempts")
cancel()
}
} catch (e: Exception) {
Log.e("BLUETOOTH_CONNECT", "Connection error", e)
showToast("Connection error: ${e.localizedMessage}")
isConnecting = false
cancel()
}
} ?: run {
Log.e("BLUETOOTH_CONNECT", "Socket is null")
showToast("Error: Could not create Bluetooth socket")
}
}
fun cancel() {
try {
isConnecting = false
connectionAttempted = false
bluetoothSocket?.close()
} catch (e: Exception) {
Log.e("BLUETOOTH_CONNECT", "Could not close socket", e)
}
}
}
fun connectToDevice(device: BluetoothDevice?) {
var connectThread: ConnectThread? = null
connectThread?.cancel()
connectThread = ConnectThread(device)
connectThread.start()
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... her-androi
Android-реализованный код подключения Bluetooth, но не работает на другом устройстве Android ⇐ Android
Форум для тех, кто программирует под Android
1739850166
Anonymous
Я работаю над приложением Android, которое подключается к устройству Bluetooth с помощью BluetoothSocket. Однако, когда я пытаюсь подключиться, я получаю следующую ошибку:
работает, когда я пытаюсь подключиться к Bluetooth ноутбука, но сбой, когда попробуйте подключиться с другим устройством Android (Redmi A2 (Androdi OS 13)) < /p>
Attempting to connect... Attempt 3
connect() for device XX:XX:XX:XX:69:7D called by pid: 5069
read failed, socket might be closed or timeout, read ret: -1
at android.bluetooth.BluetoothSocket.readInt(BluetoothSocket.java:1079)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:588)
at com.sample.BluetoothUtil$ConnectThread.run(BluetoothUtil.kt:156)
< /code>
Текущая реализация < /p>
Вот подключение, которое я использую для установления соединения Bluetooth: < /p>
private inner class ConnectThread(val device: BluetoothDevice?) : Thread() {
private val connectionUUID = device?.getUuids()?.get(0)?.getUuid()
private var bluetoothSocket: BluetoothSocket? = null
override fun run() {
dataObjects.bluetoothAdapter?.cancelDiscovery()
bluetoothSocket = device?.createInsecureRfcommSocketToServiceRecord(connectionUUID)
bluetoothSocket?.let { socket ->
try {
val maxRetries = 3
var attemptCount = 0
while (!connectionAttempted && attemptCount < maxRetries) {
try {
Log.d("BLUETOOTH_CONNECT", "Attempting to connect... Attempt ${attemptCount + 1}")
isConnecting = true
// Wait for bonding to complete if in progress
while (device?.bondState == BluetoothDevice.BOND_BONDING) {
Thread.sleep(100)
}
socket.connect()
connectionAttempted = true
Log.d("BLUETOOTH_CONNECT", "Connection successful")
showToast("Connected to ${device?.name ?: "device"}")
return
} catch (e: IOException) {
Log.e("BLUETOOTH_CONNECT", "Connection attempt failed", e)
attemptCount++
isConnecting = false
if (attemptCount < maxRetries) {
Thread.sleep(1000)
}
}
}
if (!connectionAttempted) {
Log.e("BLUETOOTH_CONNECT", "Failed to connect after $maxRetries attempts")
showToast("Failed to connect after several attempts")
cancel()
}
} catch (e: Exception) {
Log.e("BLUETOOTH_CONNECT", "Connection error", e)
showToast("Connection error: ${e.localizedMessage}")
isConnecting = false
cancel()
}
} ?: run {
Log.e("BLUETOOTH_CONNECT", "Socket is null")
showToast("Error: Could not create Bluetooth socket")
}
}
fun cancel() {
try {
isConnecting = false
connectionAttempted = false
bluetoothSocket?.close()
} catch (e: Exception) {
Log.e("BLUETOOTH_CONNECT", "Could not close socket", e)
}
}
}
fun connectToDevice(device: BluetoothDevice?) {
var connectThread: ConnectThread? = null
connectThread?.cancel()
connectThread = ConnectThread(device)
connectThread.start()
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79447078/android-implemented-bluetooth-connection-code-but-does-not-work-on-other-androi[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия