Android - Инициировать Bluetooth Socket - время ожидания соединения - PullRequest
0 голосов
/ 28 января 2019

Мне нужно подключиться к устройству Bluetooth, которое действует как сервер.Я знаю его UUID (по крайней мере, документация устройства содержит его).Тем не менее, я получаю исключение при попытке подключиться к нему.Часть обнаружения выполняется успешно.

Далее я привожу соответствующие части кода.

Вот открытие.После того, как я успешно нашел свое устройство, я пытаюсь подключиться к нему.

private val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter()
private val bluetoothReceiver = object : BroadcastReceiver() {
  override fun onReceive(context: Context, intent: Intent) {
    val action: String = intent.action
    when (action) {
      BluetoothDevice.ACTION_FOUND -> {
        val foundDevice: BluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)
        Log.i("NAME", foundDevice.name)
        if (foundDevice.name.startsWith("RN487")) {
          bluetoothAdapter?.cancelDiscovery()
          device = foundDevice
          val connectThread = ConnectThread(device)
          connectThread.start()
        }
      }
    }
  }
}
private lateinit var device: BluetoothDevice

Класс ConnectThread находится здесь:

private inner class ConnectThread(device: BluetoothDevice) : Thread() {

  private val mSocket: BluetoothSocket? by lazy(LazyThreadSafetyMode.NONE) {
    device.createRfcommSocketToServiceRecord(UUID)
  }

  override fun run() {
    bluetoothAdapter?.cancelDiscovery()
    mSocket?.use { socket ->
      socket.connect()
      toast("Connected!")
    }
  }

  fun cancel() {
    try {
      mSocket?.close()
    } catch (e: IOException) {
      Log.e(TAG, "Could not close the client socket", e)
    }
  }
}

UUID был задан как

private val UUID = nameUUIDFromBytes("49535343-...".toByteArray())

Спасибо за ваше время и опыт!

1 Ответ

0 голосов
/ 11 февраля 2019

Как заметил один из моих коллег с орлиными глазами, описание bluetooth начинается с "oldschool" версии на официальном сайте разработчиков Android.Позже описан bluetooth low energy , который мне нужен для моего проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...