如何在 Android 上启用/禁用蓝牙硬件初始化日志记录?

Posted

技术标签:

【中文标题】如何在 Android 上启用/禁用蓝牙硬件初始化日志记录?【英文标题】:How to enable / disable Bluetooth hardware initialization logging on Android? 【发布时间】:2021-06-15 20:21:29 【问题描述】:

简短的问题是:有没有办法在 android 上启用/禁用蓝牙硬件初始化记录?如果有,怎么做?

我有 两个 “Samsung Galaxy Tab A 10.5” 设备和一个我目前正在开发的 BLE 应用程序。该应用程序在一台设备上完美运行。然而,第二个设备确实 扫描时找不到任何蓝牙设备。

这个问题是大约一个月前发现的。那些日子里,快速浏览一下 logcat 就会发现很多与HIDL 相关的错误消息。现在,几周后,HIDL 消息不再出现在 logcat 中。但是,扫描仍然不起作用。 奇怪的是,logcat 中甚至没有一条与蓝牙相关的消息,这使得调试这个问题有点困难。

编辑: 启用 HCI 监听日志只会显示一条错误消息:

*** command 'lshal debug -E android.hardware.bluetooth@1.0::IBluetoothHci/default' failed: exit code 128

很明显,其中一块平板电脑已损坏。有趣的是为什么HIDL 错误消息突然停止显示,以及如何恢复它们?

实际的问题是蓝牙,虽然初始化完成没有错误,但无法正常工作。问题是,应用如何检测到它并警告用户?

我想过通过阅读日志来检测蓝牙故障:如果扫描蓝牙设备没有产生任何结果,并且如果记录了一些 HIDL 错误消息,那么应该警告用户设备有问题运行应用程序。 现在HIDL 错误消息消失了,需要一种不同的方法。您知道如何检测蓝牙是否正常工作吗?

【问题讨论】:

【参考方案1】:

您可以在开发者选项中启用蓝牙 HCI snoop log:

设备设置 -> 开发者选项 -> 启用蓝牙 HCI 监听日志。

Detailed instruction - 如何启用 HCI 日志。

【讨论】:

非常感谢您的快速回复!不幸的是,创建 HCI 日志失败。我已经用其他信息更新了问题。

以上是关于如何在 Android 上启用/禁用蓝牙硬件初始化日志记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在 Android 中禁用 GSM 连接

未启用 AVD 硬件按钮

如何在 Android 中启用/禁用日志级别?

我可以在使用 java 的移动设备上启用蓝牙吗?

如何在不使用本机代码的情况下要求用户在 NativeScript 上启用蓝牙

如何启用和禁用解析推送通知 Android