获取用户定义的震动持续时间

5
我们可以这样在支持振动的设备上触发振动:
navigator.vibrate(50);

但是该API是否支持访问用户默认设置?换句话说,是否有可能从操作系统中获取振动持续时间?因此,当用户在使用设备时通常会按下按钮时,可以获得该振动持续时间(如果有)吗?


1
听起来不太可能。每个操作系统都有自己的按键震动设置,而且也是可配置的。我觉得很难相信你能用JavaScript从操作系统中提取这个信息。 - Koby Douek
除了上面的评论之外,请注意每个移动设备也有自己的设置。 - spawnedc
我知道每个设备都有自己的配置,而且用户甚至可以更改它们的设置。这正是我提出问题的原因。 - Bram Vanroy
2个回答

2
很不幸,当前版本(W3C编辑草稿2019年6月27日)无法做到这一点。
你可以在这里阅读整个规范,它相当短小。
不幸的是,正如你所看到的,只定义了一个方法vibrate,因此这个API肯定不会让你获得用户设置的默认值。 而且,如果进一步阅读有关模式的验证和标准化部分,可以看出,你甚至不能触发用户定义长度的模式,必须明确时间间隔。
可能会有一个后期草案(或单独的“用户首选项API”)添加你需要的功能,但我个人认为这种可能性不大(因为评论中提到的原因)。

0

目前直接或间接地无法实现此功能。

根据规范

振动 API 本身不是数据源,因此在 Web 上无法产生任何可消费的数据。

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

然而,该部分还指出

已知它可以作为其他 API 的事件源。特别是,已知某些传感器(如加速度计或陀螺仪)在制造过程中存在微小缺陷。因此,它们提供了一个指纹表面,可以利用通过振动 API 生成的振动刺激来利用。

因此理论上,您可以使用加速器和/或陀螺仪并适当转换数据来获取实际持续时间。

然而,还有一个注意事项:根据WebIDLVibratePattern(定义为number | number[]必须作为参数提供。因此,您不能使用默认值调用振动

我个人怀疑这将在未来的规范版本中转换为可选参数,因为考虑到隐私问题(这非常容易被指纹识别)。

请记住,并非所有平台都支持振动,并且在调用时会返回false。拒绝操作也是完全有效的(这也将返回false)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接