环境光事件和 JavaScript 检测

我认为 我们正在开发的所有 WebAPI 中最有趣的事情之一,就是通过 JavaScript 直接与硬件交互,而且,作为其扩展,还可以与我们周围的环境交互。引入 环境光事件

环境光 API 的理念是能够检测设备周围的光线水平——尤其是在阳光明媚的户外与昏暗的客厅之间存在巨大差异——并根据光线水平调整用户体验。

一个用例可能是更改页面的 CSS 文件/值,在低光照条件下提供更好的阅读体验,减少背景的强烈白色,然后在明亮的环境光下使用更多/更好的对比度。另一个用例可能是根据可用光线播放特定的音乐。

访问设备光线

使用环境光非常简单。您需要做的是为 devicelight 事件添加一个监听器,然后读取亮度值。

它以勒克斯为单位返回。勒克斯值介于低值和高值之间,但一个很好的参考点是,昏暗的值低于 30 勒克斯,而非常明亮的值则在 10,000 勒克斯以上。

window.addEventListener("devicelight", function (event) {
    // Read out the lux value
    var lux = event.value;
    console.log(lux);

});

Web 浏览器支持

环境光事件目前在 Android 上的 Firefox 中受支持,这意味着手机和平板电脑都支持,并且在 Firefox OS 中也受支持。在 Android 设备上(我测试过的那些),传感器正好位于面向用户的摄像头旁边。

它也是 W3C 工作草案,遵循其他类似事件的类型,例如 devicemotion,因此我们希望很快能看到更多此类事件的实现!

演示

Dmitry Dragilev 和 Tim Wright 最近写了一篇关于 环境光 API 的博文,并提供了这段不错的演示视频。

您也可以直接访问 演示示例,如果您在低光照条件下进行测试,您将听到一点音乐。请记住在受支持的设备/Web 浏览器上进行尝试。

关于 Robert Nyman [荣誉编辑]

Mozilla Hacks 的技术布道师和编辑。发表有关 HTML5、JavaScript 和开放网络的演讲和博文。Robert 是 HTML5 和开放网络的坚定支持者,自 1999 年以来一直从事 Web 前端开发工作——在瑞典和纽约市。他还定期在 http://robertnyman.com 上发表博文,并且喜欢旅行和结识新朋友。

更多 Robert Nyman [荣誉编辑] 的文章…


13 条评论

  1. Alex

    哈哈。视频中 API 的示例非常酷!干得好

    2013 年 4 月 8 日 上午 07:51

    1. Robert Nyman [编辑]

      谢谢,很高兴你喜欢它!

      2013 年 4 月 8 日 上午 10:25

  2. maxw3st

    感谢您的帖子。一个小小的拼写错误。在代码注释中“//Red out the lux value”。我想你可能想写“read”。它是否足够精确以用于设置相机的曝光/光圈?

    2013 年 4 月 8 日 上午 10:19

    1. Robert Nyman [编辑]

      哈!谢谢,那是一个有趣的缺失字母。:-)
      我不确定是否可以根据它设置曝光等,以及它的精确程度(因为它也取决于设备)。请尝试一下——我很乐意听取您的想法!

      2013 年 4 月 8 日 上午 10:24

  3. boblemarin

    如果能够直接从 CSS 中使用此功能,在媒体查询中使用,那就太好了。在阳光直射下自动显示网站的高对比度版本。

    2013 年 4 月 8 日 上午 10:24

    1. Robert Nyman [编辑]

      是的,这是一个有趣的用例!

      2013 年 4 月 8 日 上午 10:37

      1. Carlos Martins

        在人们在阅读时进出室内的情况下,它需要是动态的。;)

        2013 年 4 月 8 日 上午 11:49

  4. thinsoldier

    在我的 Nexus 上有效。但是为什么歌曲没有在桌面 Aurora 或 Nightly 上播放?

    2013 年 4 月 8 日 上午 10:36

    1. Robert Nyman [编辑]

      正如文章中提到的,因为它仅在 Android 上的 Firefox 和 Firefox OS 中受支持。

      2013 年 4 月 8 日 上午 10:39

  5. Paul Lynch

    这是一个有趣的想法,但是大多数屏幕不都已经有亮度控制了吗?为什么您希望用户查看的每个网站都实现该功能?

    2013 年 4 月 8 日 下午 13:14

    1. Robert Nyman [编辑]

      但这不仅仅是亮度问题。如果您想根据环境以任何方式调整视觉呈现、声音、视频等,您现在就可以做到。

      2013 年 4 月 8 日 下午 23:54

  6. Landpaddle

    理想情况下,集成此功能的产品应该有一个将其*关闭*的选项。

    或者至少有两个滑块来调整最小和最大亮度。非常感谢,我更愿意对我的电子产品做什么保留一定程度的手动控制! :)

    否则,非常酷。您可能会认为在户外条件下亮度会增加,因为眩光会导致屏幕难以阅读,而昏暗的房间往往会使明亮的显示器令人眼痛。时间会证明结果如何。

    2013 年 4 月 9 日 上午 03:09

    1. Robert Nyman [编辑]

      您无法使用此 API 更改亮度。只需知道当前条件有多亮即可。

      2013 年 4 月 9 日 上午 06:52

本文的评论已关闭。