Можно ли с помощью JS узнать наличие каких-либо датчиков в смартфоне или каких-то иных их отличительных особенностей?

Да, с помощью JavaScript можно узнать информацию о различных датчиках, предоставляемых устройством, на котором запущен браузер. Но стоит отметить, что доступ к особенностям устройства через веб-браузер ограничен из соображений безопасности и конфиденциальности.

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

Пример получения данных с акселерометра с помощью Web Sensors API:

if (window.DeviceMotionEvent) {
  window.addEventListener('devicemotion', function(event) {
    var acceleration = event.accelerationIncludingGravity;
    console.log('Ускорение по оси X: ' + acceleration.x);
    console.log('Ускорение по оси Y: ' + acceleration.y);
    console.log('Ускорение по оси Z: ' + acceleration.z);
  });
} else {
  console.log('Датчик акселерометра не поддерживается');
}

Кроме того, с помощью JavaScript также можно получить информацию о разрешении экрана устройства, ориентации устройства, состоянии сетевого соединения, геолокации и других характеристиках.

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

При использовании таких возможностей необходимо обеспечить безопасность пользовательских данных и использовать их в соответствии с принципами конфиденциальности.