Считывание уровня сигнала с Bluetooth Classic каждую секунду на Android в Котлине

#kotlin #android-bluetooth #rssi

Вопрос:

Я боролся с Bluetooth на Android в Котлине в общей сложности около двух недель. Я получил довольно много способов, но я пытаюсь сделать одну последнюю вещь. Я хотел бы читать RSSI классического устройства Bluetooth примерно каждую секунду. Я знаю, что могу получить RSSI во время открытия:

     private val bluetoothDiscoveryResult = object : BroadcastReceiver()
    {
        override fun onReceive(context: Context?, intent: Intent?)
        {
            if (intent?.action == BluetoothDevice.ACTION_FOUND)
            {
                val device: BluetoothDevice =
                    intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)!!
                val rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI, Short.MIN_VALUE)
                    .toInt()
                val name = device.name
                Log.i(
                    "Discovery",
                    "Action: ${intent?.action}  Device: ${device.name} ${device.address}"   "  "
                    "Signal Strength:$rssi)")
            }
        }
    }

    private fun beginDiscovery() {
        registerReceiver(bluetoothDiscoveryResult, IntentFilter(BluetoothDevice.ACTION_FOUND))
        bluetoothAdapter.startDiscovery()
    }
 

но это слишком медленно. Насколько мне известно, я не могу использовать BluetoothGattCallback().onReadRemoteRssi, так как это классическое устройство.

Возможно ли это вообще?