Javascript 手机锁定期间是否可以触发音频播放
我正在制作一个网络聊天应用程序,现在我需要在新消息到达时播放通知声音 首先,我用它来播放声音。在howler中,我们可以开始播放声音,然后如果我们锁定屏幕或更改浏览器选项卡焦点,它将继续播放但是如果标签打开且手机屏幕被锁定,它不会开始播放声音,如果用户在另一个标签上且应用程序在另一个标签上打开,它也不会播放声音 所以基本上我的问题是,是否可以在屏幕锁定时开始播放声音,或者在用户处于另一个选项卡时开始播放声音? app.jsJavascript 手机锁定期间是否可以触发音频播放,javascript,html,notifications,howler.js,Javascript,Html,Notifications,Howler.js,我正在制作一个网络聊天应用程序,现在我需要在新消息到达时播放通知声音 首先,我用它来播放声音。在howler中,我们可以开始播放声音,然后如果我们锁定屏幕或更改浏览器选项卡焦点,它将继续播放但是如果标签打开且手机屏幕被锁定,它不会开始播放声音,如果用户在另一个标签上且应用程序在另一个标签上打开,它也不会播放声音 所以基本上我的问题是,是否可以在屏幕锁定时开始播放声音,或者在用户处于另一个选项卡时开始播放声音? app.js var notify_sound = new Howl({ sr
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();
}
}
var notify_sound=新嚎叫({
src:['./assets/sounds/notify2.mp3'],
卷数:1.0
});
.
.
.
.
.
.
.
.
如果(类型=“用户”){
if(userAddress==远程地址){
键入.html(“”).fadeOut('fast');
messages.append(““+time+”
“+userAddress+”
);
}
否则{
键入.html(“”).fadeOut('fast');
messages.append(““+time+”
“+userAddress+”
);
通知声音。播放();
}
}
HTML5音频和手机的关系并不太融洽。Howler.js(如果您使用的是2.0)通过将事件处理程序附加到触发播放的第一次触摸事件,使用一种变通方法将音频“自动播放”。如果视图未处于活动状态,则不会有触发播放的触摸事件(即使是模拟事件)
从文档中:
移动播放
默认情况下,iOS、Android等设备上的音频将被锁定,直到发出声音
在用户交互中播放,然后正常播放其余部分
页面会话的一部分(苹果文档)。的默认行为
howler.js试图通过播放来无声解锁音频播放
第一个touchend事件上的空缓冲区。这种行为可以是
通过呼叫禁用:
Howler.mobileAutoEnable=false代码>
如果没有初始交互,你就无能为力。HTML5音频和移动设备不能真正相处。Howler.js(如果您使用的是2.0)通过将事件处理程序附加到触发播放的第一次触摸事件,使用一种变通方法将音频“自动播放”。如果视图未处于活动状态,则不会有触发播放的触摸事件(即使是模拟事件)
从文档中:
移动播放
默认情况下,iOS、Android等设备上的音频将被锁定,直到发出声音
在用户交互中播放,然后正常播放其余部分
页面会话的一部分(苹果文档)。的默认行为
howler.js试图通过播放来无声解锁音频播放
第一个touchend事件上的空缓冲区。这种行为可以是
通过呼叫禁用:
Howler.mobileAutoEnable=false代码>
如果没有初始交互,您就无能为力。因此最终可以确定,在屏幕锁定期间不会播放声音。您可能可以通过连续播放的精灵来绕过它。虽然我还没有测试过这种方法。但是如果客户端的连接速度很慢,连续播放会占用客户端的资源。播放时与连接没有多大关系。我的建议就像半秒钟的循环无声mp3,只是为了让声音保持活跃。或者,您可以研究使用基于用户代理的通知API来播放系统声音。我不知道你是否可以定制声音。请注意,这种方法需要用户授予的权限。您能举一个关于定制声音的例子吗?许可不是问题。所以最终可以确定的是,在屏幕锁定期间不会播放声音。你可以用一个连续播放的精灵来破解它。虽然我还没有测试过这种方法。但是如果客户端的连接速度很慢,连续播放会占用客户端的资源。播放时与连接没有多大关系。我的建议就像半秒钟的循环无声mp3,只是为了让声音保持活跃。或者,您可以研究使用基于用户代理的通知API来播放系统声音。我不知道你是否可以定制声音。请注意,这种方法需要用户授予的权限。您能举一个关于定制声音的例子吗?许可不是问题。