Vibration API: кому і навіщо це потрібно?

10 лютого Консорціум Всесвітньої павутини оголосив про те, що стандарт, що описує API для керування вібрацією, отримав статус рекомендованого. Сама по собі можливість змусити браузер повибрировать пристроєм була доступна вже деякий час, але тільки зараз вона була нарешті оформлена рекомендованої специфікацією, так що прийшла пора подумати, як і де це можна використовувати на щоденній основі. Втім, вже в самому початку автори стандарту попереджають, що API розроблений спеціально для тих випадків, коли потрібна проста тактильний зворотний зв'язок, і він не призначений для використання в якості загального механізму попередження користувача. Для повідомлень рекомендується використовувати Notifications API.

Бажаючі долучитися до офіційної специфікації з усіма її нюансами можуть це зробити на сайті W3C, а тут ми лише побіжно подивимося на те, як все це можна використовувати, а також висвітлимо деякі моменти, не розкриті в документації.

Очевидно, що настільні комп'ютери, ноутбуки і навіть просто планшети пролітають, тому що не здатні вібрувати при всьому бажанні. Та й якщо б системний блок став би дзвонити і пересуватися по кімнаті як пральна машина, то користувачі, швидше за все, це не оцінили, так що навряд чи варто шкодувати про це. З огляду на існування такої фрагментації пристроїв, а також банальної неготовність ряду браузерів, має сенс почати з того, що перевірити, чи підтримується управління вібрацією, а цього якраз і немає в специфікації. Втім, все зводиться лише до перевірки наявності методу vibrate() у navigator:

if («vibrate» in navigator) {
// Вібрація
}


Безпосередньо вібрація задається шляхом передачі navigator.vibrate її тривалості в мілісекундах:

navigator.vibrate(1000);


Втім, все не настільки нудно, і є можливість передати цілий масив, значення якого будуть послідовністю з тривалостей вібраційних сигналів і пауз між ними:

navigator.vibrate([1000, 500, 1000]);


Тут парні елементи масиву визначають тривалість вібраційних сигналів, а непарні — тривалість пауз між ними (відлік елементів масиву починається з нуля, умовно вважається парним числом). Тобто вищенаведений код змусить пристрій спочатку повибрировать секунду, потім почекати півсекунди і знову повибрировать секунду. Через дві з половиною секунди все скінчиться, тобто зациклювати процес треба вручну вже засобами скрипта.

Процес вібрації не є блокуючим, тобто код продовжуватиме виконуватися поки пристрій вібрує.

Якщо потрібно припинити вібрацію, то слід передати значення 0:

navigator.vibrate(0);


Або якщо більше подобається:

navigator.vibrate([]);


Передача нульового значення скасовує всі запущені раніше вібрації.

В принципі, це все, що можна сказати про API для керування вібрацією на web-сторінках. І тепер є пропозиція провести мозковий штурм і разом подумати щодо того, для чого все це можна використовувати. Для початку є наступні ідеї:

  • Використання вібрації в web-іграх, наприклад, тремтіння пристрою в гонках або при пострілах.
  • Вібраційні оповіщення при важливому зміну на сторінці, наприклад, коли в web-чаті з'являється нове повідомлення.
  • Дублювання звукових сигналів, якщо вони присутні в інтерфейсі, наприклад, для забезпечення accessibility для користувачів з обмеженими можливостями слухового сприйняття (як фізичні порушення, так і просто вимкнений звук на пристрої).
  • Просто додавання прикольних витребеньок в інтерфейс, наприклад, вібраційні поштовхи при натисканні кнопок на сайті.
  • Дратівливі і лякаючі користувача спец. ефекти, наприклад, шалений вібрування пристрої при завантаженні сторінки, що буде викликати приблизно такий же негатив, як і несподівано включаються музика.


А тепер чесно: кого і чим зачепили потенційні можливості Vibration API?
Що ви думаєте про Vibration API?

/>
/>


<input type=«radio» id=«vv65059»
class=«radio js-field-data»
name=«variant[]»
value=«65059» />
Це абсолютно безглузда технологія.
<input type=«radio» id=«vv65061»
class=«radio js-field-data»
name=«variant[]»
value=«65061» />
Можливо це комусь і згодиться, але в тих проектах, якими я займаюся, місця цієї технології немає.
<input type=«radio» id=«vv65063»
class=«radio js-field-data»
name=«variant[]»
value=«65063» />
Мабуть, я знайду кілька вузьких застосувань цієї технології в тих проектах, якими я займаюся.
<input type=«radio» id=«vv65065»
class=«radio js-field-data»
name=«variant[]»
value=«65065» />
Мені сподобалося, тепер буду регулярно використовувати цю технологію.
<input type=«radio» id=«vv65067»
class=«radio js-field-data»
name=«variant[]»
value=«65067» />
Тим чи іншим чином я використовую Vibration API вже кілька років і все це для мене не новина.

Проголосувало 14 осіб. Утрималося 7 осіб.


Тільки зареєстровані користувачі можуть брати участь в опитуванні. Увійдіть, будь ласка.


Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.