Windows Mobile Bluetooth доступ в Microsoft или Widcomm Stack - PullRequest
1 голос
/ 11 мая 2011

У меня есть приложение Java, которое работает на мобильном устройстве Windows.Мне нужно иметь возможность включать и выключать Bluetooth, поэтому он выполняет некоторый нативный код для этого.Проблема в том, что я пробую его на новом устройстве (HTC HD2), а собственный код не работает.Причина этого заключается в том, что устройство HD2 использует стек Bluetooth Widcomm, тогда как другое устройство использовало стек Microsoft.

Теперь я нашел способ активации Bluetooth на устройстве HD2 с помощью Widcomm SDK.Однако этот собственный код должен быть в состоянии работать на любом устройстве, поэтому каким-то образом мне нужно иметь возможность принимать решение во время выполнения, какой код запускать, основываясь на том, какой стек Bluetooth присутствует.

Вопрос 1: как можноЯ программно определяю, какой стек присутствует?

Вопрос 2: если я включаю заголовочный файл, необходимый для стека Widcomm, и пытаюсь запустить его на устройстве, которое его не использует, код завершается ошибкой.Как я могу скомпилировать dll так, чтобы он включал этот заголовочный файл, только если существует widcomm dll?

1 Ответ

2 голосов
/ 11 мая 2011

Полагаю, вам придется делать все это динамически:

  1. Объявите прототипы для необходимых функций Widcomm в своем собственном коде.
  2. Используйте LoadLibrary для загрузкиWidcomm dll.
  3. Если вызов LoadLibrary не удался, вы знаете, что находитесь в стеке Microsoft и можете запускать стандартные функции стека Microsoft.
  4. Если LoadLibrary преуспевает в вас 'находится в стеке Widcomm и может использовать функции Widcomm.

Это может быть немного грязно в зависимости от того, сколько функций вам нужно из заголовка Widcomm, но вы не можете статически скомпилировать ссылки на них.функционирует, поскольку он попытается загрузить его, но не найдет его (возможно, именно поэтому вы видите сбой).

Действительно ужасно, что в Windows Mobile также существует сумасшествие стека Bluetooth.Мысль, которая была ограничена рабочим столом.

...