Соединение двух устройств через Bluetooth друг с другом, используя другое устройство Bluetooth - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь подключить два устройства через Bluetooth через другое устройство.

На данный момент я смог подключиться к этим устройствам с помощью разъемов на третьем устройстве:

val deviceSocket = device.createInsecureRfcommSocketToServiceRecord(0000111e-0000-1000-8000-00805f9b34f) // HFP_HS_UUID
val phoneSocket = phone.createInsecureRfcommSocketToServiceRecord(0000111f-0000-1000-8000-00805f9b34fb) // HFP_AG_UUID

Теперь устройства могут обмениваться AT-командами между собой через потоки сокетов. Все команды доставлены правильно. Я могу отправить звонок с телефона на устройство или с устройства на телефон.

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

val audioManager = mContext.getSystemService(AUDIO_SERVICE) as AudioManager
audioManager.mode = AudioManager.MODE_IN_CALL // or AudioManager.MODE_IN_COMMUNICATION
audioManager.isBluetoothScoOn = true
audioManager.startBluetoothSco()

Я также попытался подключиться к сокету sco с помощью скрытого API в BluetoothDevice createScoSocket ():

val phoneSco = phone.createScoSocket()
phoneSco.connect()

и получил ошибку:

phoneSco connect error = java.io.IOException: read failed, socket might closed or timeout, read ret: -1

или выполнение застревает.

Если я сделаю это:

val deviceSco = device.createScoSocket() // 1
deviceSco.connect() // 2

Выполнение застрянет в строке 2.

Также я пробовал:

val serverSocket = bluetoothAdapter?.listenUsingScoOn()
val btSocket = serverSocket?.accept()

он также зависает при accept ()

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

Есть ли способы получить аудио с одного устройства и переслать его на другое устройство?

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