获得用户定义的振动持续时间

时间:2018-03-07 08:40:47

标签: javascript navigator vibration

我们可以在支持的设备上触发振动,如下所示:

navigator.vibrate(50);

但API是否支持对用户默认值的任何访问?换句话说,是否可以从OS获得振动持续时间(可爱的押韵)?因此,当用户在使用设备时通常按下按钮时,获得振动持续时间(如果有的话)?

2 个答案:

答案 0 :(得分:2)

不幸的是,不,至少不是在当前状态下(W3C编辑的草案2019年6月27日)

您可以阅读整个规范here;很短。

很遗憾,您看到仅定义了一个方法vibrate,因此该API当然不会让您获得用户设置的默认值

并进一步阅读有关模式的validate and normalize部分,看来您甚至不能 trigger 用户定义长度的模式,您必须明确说明您的时间安排。

以后的草案(或单独的“用户首选项API”)可能会添加您需要的功能,但我个人对此表示怀疑(由于评论中提到的原因)。

答案 1 :(得分:0)

目前无法直接或间接实现。

the specification

  

Vibration API本身并不是数据源,因此不会产生任何可能在Web上使用的数据。

因此,无法直接通过振动API获取数据

但是,该部分还指出

  

[I] t可以用作其他API的事件源。特别地,已知诸如加速度计或陀螺仪之类的某些传感器在其制造期间易于出现微小的缺陷。因此,它们提供了指纹表面,可以利用通过振动API产生的振动刺激来利用指纹表面。

所以从理论上讲,是的,您可以通过使用加速器和/或陀螺仪并适当地转换数据来获取实际持续时间。

但是,还有一个警告:对于每个the WebIDL,必须提供一个VibratePattern(定义为number | number[])作为参数。因此,您无法使用默认值调用振动

我个人出于隐私考虑(在很大程度上允许指纹识别)在将来的规范版本中将其转换为可选参数。

但是请记住,并非所有平台甚至都支持振动,并且在调用时将返回false。拒绝采取行动(也将返回false)也很有效