Чтобы добавить дополнительный уровень контроля, я использую хранилище HTML5, чтобы определить, использует ли оно мобильное хранилище или настольное хранилище. Если браузер не поддерживает хранилище, у меня есть массив имен мобильных браузеров, и я сравниваю пользовательский агент с браузерами в массиве.
Это довольно просто. Вот функция:
// Used to detect whether the users browser is an mobile browser
function isMobile() {
///<summary>Detecting whether the browser is a mobile browser or desktop browser</summary>
///<returns>A boolean value indicating whether the browser is a mobile browser or not</returns>
if (sessionStorage.desktop) // desktop storage
return false;
else if (localStorage.mobile) // mobile storage
return true;
// alternative
mobile = ['iphone','ipad','android','blackberry','nokia','opera mini','windows mobile','windows phone','iemobile','tablet','mobi'];
var ua=navigator.userAgent.toLowerCase();
for (var i in mobile) if (ua.indexOf(mobile[i]) > -1) return true;
// nothing found.. assume desktop
return false;
}
Этот пример java обнаружит все видимые устройства и работает как с библиотеками BlueCove, так и с Avetana ( http://www.avetana-gmbh.de/avetana-gmbh/produkte /jsr82.eng.xml ):
Bluecove, как правило, является лучшей поддерживаемой библиотекой, однако вы обнаружите, что различные базовые встроенные стеки bluetooth в Windows сильно различаются по качеству. Собственный стек Windows лишь незначительно поддерживается API-интерфейсами Java. BlueSoleil немного лучше, и Widcomm, как правило, предпочтительнее.
Однако ни BlueSoleil, ни Widcomm не являются бесплатными, если они не поставляются с вашим адаптером, хотя Widcomm можно взломать для работы с неофициально поддерживаемыми адаптерами. Большим ограничением является то, что Bluecove не поддерживает Widcomm на 64-битной Windows.
Лично я закончил тем, что просто использовал Linux для разработки Bluetooth, поскольку все это там просто работает. :) Аветану вообще не пробовала.
Хорошо, извините за раздражение. Я нашел ответ, и это BlueCove. После установки дополнительных библиотек теперь он отлично работает на Linux Mint 7. Даже не указанный в списке совместимости Samsung D600 обнаружился на отлично. Выход тестовой программы:
run:
BlueCove version 2.1.0 on bluez
Address: 0006C990021D
Name: hostname-0
Starting device inquiry...
Device discovered: 0015B95BEA0F
INQUIRY_COMPLETED
Device Inquiry Completed.
Bluetooth Devices:
1. 0015B95BEA0F (zl0-b0tan)
BlueCove stack shutdown completed
BUILD SUCCESSFUL (total time: 13 seconds)