【问题标题】:Can audio be triggered to play during phone lock电话锁定期间可以触发音频播放吗
【发布时间】:2016-08-02 08:49:45
【问题描述】:

我正在制作一个网络聊天应用程序,现在我需要在新消息到达时播放通知声音。

首先我使用howler.js 来播放声音。在 howler 中,我们可以开始播放声音,然后如果我们锁定屏幕或更改浏览器选项卡焦点,它会继续播放。 但是如果标签页打开并且手机屏幕被锁定,它不会开始播放声音,如果用户在另一个标签页上打开另一个标签页上的应用程序,它也不会播放。

所以基本上我的问题是,是否可以在屏幕锁定时开始播放声音,或者当用户在另一个选项卡上时开始播放声音?

app.js

var notify_sound = new Howl({
    src: ['./assets/sounds/notify2.mp3'],
    volume: 1.0
});
.
.
.
.
.
.
.
.
if(type == "user"){
        if(userAddress == remoteAddress) {
            typing.html('').fadeOut('fast');
            messages.append('<li class="self"><p class="message">'+ obj.message + '</p><p class="time">' + time +'</p></li><p class="username_self">' + userAddress + '</p>');
        }
        else {
            typing.html('').fadeOut('fast');
            messages.append('<li class="other"><p class="message">'+ obj.message + '</p><p class="time">' + time +'</p></li><p class="username_other">' + userAddress + '</p>');

            notify_sound.play();
        }
    }

【问题讨论】:

    标签: javascript html notifications howler.js


    【解决方案1】:

    HTML5 音频和移动设备并不能真正相处。 Howler.js(如果您使用的是 2.0)通过将事件处理程序附加到将触发播放的第一个触摸事件来使用一种解决方法来让音频完全“自动播放”。如果视图未激活,则不会有触摸事件(甚至是模拟事件)来触发播放。

    来自文档:

    移动播放

    默认情况下,iOS、Android 等设备上的音频会被锁定,直到发出声音 在用户交互中播放,然后正常播放其余部分 页面会话(Apple 文档)。的默认行为 howler.js 是尝试通过播放来静默解锁音频播放 第一个 touchend 事件的空缓冲区。这种行为可以 通过调用禁用:

    Howler.mobileAutoEnable = false;

    如果没有最初的互动,你就无能为力了。

    【讨论】:

    • 所以最终确定在屏幕锁定期间不会播放声音。?
    • 您可以通过不断播放的精灵来破解它。不过我还没有测试过这种方法。
    • 但是如果客户端连接速度很慢,连续播放会占用客户端资源。
    • 播放时与连接没有太大关系。我建议就像半秒钟的循环静音 mp3,只是为了保持声音活跃。或者,您可以使用基于用户代理的通知 API 进行调查,该 API 将播放系统声音。我不知道你是否可以自定义声音。请注意,这种方法需要用户授予的权限。
    • 您能否举例说明您所说的自定义声音?许可不是问题。
    猜你喜欢
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多