Какой выбрать язык, который может прослушивать входные сигналы от источника звука Bluetooth?

#windows #events #bluetooth #keyevent

#Windows #Мероприятия #bluetooth #keyevent

Вопрос:

У меня в машине есть планшет с Windows. Он подключен к автомобилю через Bluetooth, поэтому я могу пропускать треки, изменять громкость, воспроизведение / паузу и так далее с помощью моего рулевого колеса. Я хочу запустить событие в зависимости от того, какая кнопка была нажата.

До сих пор я пытался перехватывать входные данные и нажатия клавиш по всему миру с помощью:

  • NodeJS (с использованием библиотеки под названием iohook)
    • Прослушивает нажатия клавиш в системе, поэтому я всегда могу прослушивать нажатия клавиш (в основном кейлоггер)
    • Отлично работает, если я нажимаю play / pause на клавиатуре
    • Не работает, если я нажимаю воспроизведение / паузу по Bluetooth с помощью динамика или рулевого колеса моего автомобиля
  • .NET Windows Forms
    • «Keylogger» отлично работает, но та же проблема с NodeJS: он не прослушивает «нажатия клавиш» с устройства Bluetooth

Мне все равно, какой язык я должен использовать. Я знаю, что это возможно, потому что, если на моем компьютере с Windows запущен Spotify и я нажимаю play / pause на динамике или на рулевом колесе моего автомобиля, Spotify приостанавливается. Итак, что-то определенно прослушивает входные данные, но я не понял, что.

Одна очень важная вещь: он должен прослушивать события Bluetooth глобально. Я не хочу, чтобы приложение было сфокусировано.

Какой язык я могу использовать, который может прослушивать эти события? Существуют ли фреймворки или библиотеки, которые уже могут это легко сделать?

Комментарии:

1. Существуют некоторые проблемы с аудиопрофилями Bluetooth на платформах Windows. Даже Win 10 поддерживает HFP, AVRCP и A2DP, простого способа получить к ним доступ нет. Однако устройство AVRCP отображается в системе как скрытое устройство. Таким образом, вы можете работать с ним, как с любым другим устройством HID. Для такой низкоуровневой задачи вам нужен любой «низкоуровневый» язык. Я лично предпочитаю Delphi (даже в соплях doe есть все, что мне нужно). C тоже хорош, но немного сложен. Я уверен, что в c # также достаточно функциональности для HID. Вероятно, что-то существует для node.js.

2. Я забыл сказать, что все, что я написал выше, верно для драйверов Microsoft Bluetooth, работающих в Windows 10 (возможно, также и в Win 8, но не уверен, что там доступны все функции). Если ваш планшет использует другие драйверы Bluetooth, то есть другие решения.

3. @MikePetrichenko Спасибо за ответ. Я использую планшет Surface Go, так что он практически в наличии. Итак, мне пришлось бы исследовать, как взаимодействует Bluetooth HID, и посмотреть, смогу ли я перехватывать / анализировать данные, отправленные на / из подключенного по Bluetooth динамика / автомобиля?

4. Динамик намного проще кнопок. При подключении к вашему автомобилю (я имею в виду подключенный планшет) в системе появилось новое аудиоустройство. Вы можете использовать любой мультимедийный API для доступа к нему и управления аудиоданными. Кнопки немного сложны. К сожалению, я не могу найти никакой информации о отображении AVRCP HID, поэтому вам придется изучить его заново.

5. @MikePetrichenko Понял, все в порядке. Разве автомобиль не такой же, как обычный динамик Bluetooth? Динамик Bluetooth (выберите любой динамик) может иметь функцию воспроизведения / паузы, пропуска дорожки, предыдущей дорожки, регулировки громкости и так далее. Разве это не соответствует соотношению 1: 1 для автомобиля? Я предполагаю, что когда я нажимаю play / pause на дисплее или рулевом колесе моего автомобиля, он отправляет тот же сигнал / команду Bluetooth на подключенное устройство.