我知道这个问题已被问过1000次。但这是完全不同的。
我正在使用JSartoolkit在Chrome Android上制作AR网络应用。这很简单:
play(
))视频 pause()
)视频元素 我尝试了两种方法:
使用内置事件getMarker
:
arController.addEventListener('getMarker', function (e) {
var marker = e.data.marker.idMatrix;
if(e.data.type > -1 && marker >-1){
handleNewMarker(marker); // will do something to the video
}
});
抛出错误:Uncaught (in promise) DOMException: play() can only be initiated by a user gesture.
我理解:这是一个真实的用户操作,但该方法是一个JSartoolkit内置事件,所以我没关系它没有这个事实认识到它。
第二次尝试,使用devicemotion
:
window.addEventListener("devicemotion", function (event) {
if(marker1.visible){
videoStatus.currentVideoEl.play();
}
else {
videoStatus.currentVideoEl.pause();
}
}, true);
这一次,应该识别此事件,我们都同意这是一个用户手势。
我也尝试手动触发触摸事件(jQuery和纯JS),但在所有情况下,它都会抛出相同的错误:Uncaught (in promise) DOMException: play() can only be initiated by a user gesture.
AR检测和设备运动应被视为用户手势。但它不是,所以我的问题是:当我检测到标记时如何播放/暂停视频元素?