SocketServerBluetooth принимает 2+ устройства одновременно - PullRequest
0 голосов
/ 08 февраля 2019

Мой сценарий следующий: Android действует как главный Bluetooth, и у меня есть 2+ устройства shimmer2r в качестве подчиненного режима, отправляющих мне данные, например данные акселерометра.

У меня есть Android в режиме, в котором мое устройство Android прослушивает RFCOMM через BluetoothAdapter, который открывает BluetoothSocketServer, а мой разъем Bluetooth для каждого подчиненного устройства открывает разные BluetoothSocket.Но я хотел бы знать, если я поставлю таким образом, мое устройство Android будет работать как обычный сервер, как в TCP, т.е. мой подчиненный должен подключиться к моему серверу Bluetooth или с моего сервера Bluetooth должен начать связь с каждым ведомым устройством.Таким образом, у меня есть два открытых метода в моем классе BluetoothServer: запуск и остановка, и у меня есть два закрытых метода для подключения и подключения, аналогичных ChatBluetooth.

class BluetoothServer private constructor() {
  /** Log tag, apps may override it.  */
  private var TAG = "BluetoothServer"
  private val NAME: String = "BLUETOOTH_SERVER"
  private val MY_UUID: UUID = UUID.fromString("a86de605-7069-41dc-96a3-83e9dabec5b3")
  private val mAdapter: BluetoothAdapter
  // Variables to check out the states of the conections
  private var currentState: Int = 0
  // Threads
  private var mAcceptThread: AcceptThread? = null
  private var mConnectThread: ConnectThread? = null
  private var mStreamThread: StreamThread? = null
  // Constants that indicate the current connection state
  private val STATE_NONE = 0       // we're doing nothing
  private val STATE_LISTEN = 1     // now listening for incoming connections
  private val STATE_CONNECTING = 2 // now initiating an outgoing connection
  private val STATE_CONNECTED = 3 // now connected to a remote device
//List of clients
  var clientList: ArrayList<BluetoothDevice>
     get() {
         return this.clientList
    }

init {
    mAdapter = BluetoothAdapter.getDefaultAdapter();
    clientList = ArrayList()
    currentState = STATE_NONE
}


private object GetInstance {
    val INSTANCE = BluetoothServer()
}

companion object {
    val instance: BluetoothServer by lazy { GetInstance.INSTANCE }
}

Мой Android-приложение прослушивает, но я создал приложение Pythonв режиме клиента и с этого клиента я не смог добраться до моего сервера srv bluetooth.Так что я понятия не имею, что не так.

...