Вопрос:
Существует известный способ включения HCI Bluetooth snoop-журнала из интерфейса опций разработчика.
Есть ли способ достичь этого программно?
Лучший ответ:Содержание
- 1. Использование bt_stack.conf (требуется root)
- 2. Использование скрытого Android API
- 3. Использование SL4A
1. Использование bt_stack.conf (требуется root)
- Найдите файл bt_stack.conf (иногда это в /etc/bluetooth/, иногда в /data/misc/bluetooth)
- Измените файл bt_stack.conf (установите BtSnoopLogOutput=true)
- Отключить и включить Bluetooth – это приведет к регистрации HCI snoop
- Когда вы решите, что этого достаточно, отредактируйте файл еще раз, установив BtSnoopLogOutput=false и сбросьте Bluetooth – это остановит ведение журнала отслеживания HCI
2. Использование скрытого Android API
Обратите внимание: этот подход потребует, чтобы ваше приложение имело разрешение BLUETOOTH_ADMIN.
Если это нормально, вы можете использовать тот же код, который использует приложение системных настроек Android.
private void writeBtHciSnoopLogOptions() { BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); adapter.configHciSnoopLog(true); }
configHciSnoopLog является частью скрытого API класса BluetoothAdapter, поэтому убедитесь, что вы знаете, как его включить:
- Использование скрытого API Android
- Андроида-скрытая-api-библиотека
3. Использование SL4A
SL4A приносит языки программирования на Android, позволяя вам редактировать и выполнять скрипты и интерактивные интерпретаторы непосредственно на устройстве Android. Эти скрипты имеют доступ ко многим API-интерфейсам, доступным для полноценных приложений для Android, но с очень упрощенным интерфейсом, который упрощает выполнение.
Если ваш образ Android создан с поддержкой SL4A, вы можете использовать следующий метод BluetoothFacade:
@Rpc(description = «Enable or disable the Bluetooth HCI snoop log») public boolean bluetoothConfigHciSnoopLog( @RpcParameter(name = «value», description = «enable or disable log») Boolean value ) { return mBluetoothAdapter.configHciSnoopLog(value); }
Обратите внимание, что ссылка API на Github устарел, но вы можете увидеть последние в официальном AOSP репо (Commonsrccomgooglecodeandroid_scriptingfacadebluetooth)
Сценарий Python, который позволяет вести журналы отслеживания HCI, будет выглядеть так:
from android import Android droid = Android() droid.bluetoothConfigHciSnoopLog(True)
Когда вы /sdcard/btsnoop_hci.log, вы можете найти журнал HCI Snoop в /sdcard/btsnoop_hci.log