Если во время теста сканирования поблизости нет ни одного устройства BLE, то тест «истекает» и результаты не дают окончательных результатов - вы точно не знаете, что стек Bluetooth находится в хорошем состоянии. Строка отладки является показателем этого факта.

я есть несколько вопросов по использованию Bluetooth Medic, основанных на следующих наблюдениях.

Поскольку Bluetooth останавливается на одном из моих устройств, я посмотрел на BluetoothMedic, чтобы узнать, может ли он помочь. Я посмотрел на сообщения отладки и исходный код. Я получаю несколько разные результаты в зависимости от того, использую ли я enablePeriodicTests () или запускаю по отдельности runScanTest () и runTransmitterTest ().

С помощью enablePeriodicTests () BluetoothTestJob.onStartJob () запускает сканирование и тестирование передатчика каждые 15 минут, по-видимому, в порядке. Если мой маяк передает, я получаю «Проверка сканирования прошла успешно», затем «Проверка сканирования завершена» из теста проверки, и если нет, я получаю «Тайм-аут проверки сканирования», а затем «Проверка сканирования завершена». После этого запускается тест передатчика, и я получаю «Тест передатчика завершен успешно», а затем «тест передатчика завершен» во всех случаях.

Однако я получаю другое поведение, когда добавляю кнопки, которые выполняют вызовы runScanTest () и runTransmitterTest (). В обоих случаях код входит в цикл while (), ожидая ненулевой результат теста, и время ожидания истекает через 5 с. Поскольку результаты теста являются нулевыми, вызовы затем возвращают истину (для теста сканирования) и ложь (для теста передатчика).

В случае проверки сканирования, обратный вызов onScanResult () никогда не вызывается, если мой маяк не передает, но если маяк передает, он вызывается 10-20 раз (я вижу много сообщений «Проверка теста прошла успешно»), но только ПОСЛЕ runScanTest () возвращает.

В случае проверки передатчика обратный вызов onStartSuccess () запускается один раз, и я вижу сообщение «Проверка передатчика выполнена успешно», но только ПОСЛЕ возврата runTransmitterTest ().

Поведение одинаково для двух устройств (Android 7 и 8).

Было бы хорошо иметь дополнительную документацию об этих тестах и ​​о том, как их использовать.

Во-первых, что делают эти тесты и какие ошибки они могут найти?

Во-вторых - как их использовать? Похоже, что runScanTest () и runTransmitterTest () нельзя вызвать просто - им нужны свои собственные потоки или что-то?

Наконец, безопасны ли они для использования во время действия кода измерения и контроля или они мешают?

Ответы на вопрос(1)

Ваш ответ на вопрос