当前位置: 首页 > 知识库问答 >
问题:

三星Galaxy标签上缺少DeviceMotionEvent和DeviceOrientationEvent

范哲
2023-03-14

以下是我的三星Galaxy标签的用户代理

Mozilla/5.0(Linux;Android 8.1.0;SM-T580 Build/M1AJQ;wv)AppleWebKit/537.36(KHTML,类似Gecko)版本/4.0 Chrome/76.0.3809.89 Safari/537.36

请注意,截至今天(2019年8月8日),这是chrome的最新版本。这里有我的Pixel 3用户代理作为参考:

Mozilla/5.0(Linux;Android9;像素3)AppleWebKit/537.36(KHTML,像壁虎)Chrome/76.0.3809.89移动Safari /537.36

两者都有相同的chrome版本。

当检查窗口时。DeviceOrientationEvent在平板电脑上我得到未定义和在像素手机上DeviceOrientationEvent(){[本机代码]}

这一事实导致我的平板电脑上的听众定向失败。

window.addEventListener('deviceorientation', (event) => {
    console.log(event);
});

如果chrome版本相同,那怎么可能呢?三星是否有“禁用机制”作为默认行为,或者可能是错误?

你有什么推测?

共有1个答案

喻珂
2023-03-14

事实上,知道为什么会发生这种情况可能很有趣。我的智能手机Galaxy S10也有同样的问题。用户代理是这样的:

用户代理:Mozilla/5.0(Linux;Android 10;SM-G973F)AppleWebKit/537.36(KHTML,比如Gecko)Chrome/80.0.3987.119 Mobile Safari/537.36

当我看到这里的浏览器兼容性表时,我不明白为什么我的手机无法触发此事件。

这里的帮助(您可能已经尝试过)是将此事件替换为orientationchange事件,该事件允许您同时关注设备的方向。

你这里有个小医生!

我为我的测试做了一个例子,我很乐意分享,给你:

<!DOCTYPE html>
<html>
<head>
    <title>Orientation - Screen Mode</title>
    <meta name="viewport" content="width=device-width, user-scalable=no">
</head>
<body>
    <span id="mode" />
    <script>
    (function() {
        var mode = document.getElementById('mode');
        function modeFrom(orientationAngle) {
            return orientationAngle !== 0? 'landscape': 'portrait';
        }
        function setInfosFrom(o, value) {
            value = 'Non compatible browser!';
            if (o !== undefined) {
                value = modeFrom(o) + " (angle " + o + "&deg;)";
            }
            mode.innerHTML = value;
        }
        function setInfos() {
            setInfosFrom(window.orientation);
        }
        setInfos();
        window.addEventListener('orientationchange', setInfos, false);
    }());
    </script>
</body>
</html>

希望对你或其他读者有所帮助!:)

祝您今天过得愉快!

 类似资料:
  • 在我的应用程序中,我将一个数据对象从一个

  • 问题内容: 最新的三星智能手机具有有趣的功能,称为 全屏 (或按市场术语 无限显示 )。在此模式下,应用程序还会覆盖主页/后退按钮所在的部分显示。通常的应用程序不会覆盖此区域,而是将其保留为黑色。但是三星的本地产品覆盖了这一领域。 问:如何达到这种效果?我的意思是应该使用哪种清单声明或编程调用(可能是三星的旧版API)? 问题答案: 要启用新的三星Galaxy S8和LG G6全屏支持,请添加到A

  • 我编写了一个从YUV_420_888到位图的转换,考虑了以下逻辑(根据我的理解): 总结一下这个方法:内核的坐标x和y与y平面(2D-分配)的非填充部分的x和y以及输出位图的x和y是一致的。然而,U平面和V平面具有不同于Y平面的结构,因为它们使用1字节来覆盖4个像素,此外,它们可能具有超过一个像素步幅,此外,它们还可能具有与Y平面不同的填充。因此,为了让内核有效地访问U和V,我将它们放入一维分配中

  • 我使用此代码获取位置: 清单中定义了访问位置和访问位置权限。 双网

  • 我错误地从Mac上删除了所有配置文件()。现在,无论我做什么,Xcode都给我这个错误: 缺少iOS分发签名标识 我该怎么解决这个?

  • 我有一个主要的问题,试图让这个星系的联系显示在ADT。 我试着安装了三星的所有驱动程序,但没有成功。 我的设备驱动程序详细信息显示我在使用2006年的Microsoft驱动程序。显然这是不对的。所以我尝试卸载,但运气不好。我还尝试更新驱动程序,并指向三星/USB驱动程序文件夹中的一个疯狂名称,但Windows认为它比我聪明,总是说“它已确定我设备的驱动程序软件是最新的”,然后将该设备列为MTP U